gitlab.com/CoiaPrant/sqlite3@v1.19.1/internal/testfixture/testfixture_linux_ppc64le.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_ppc64le.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_ARCH_PPC                            = 1
   563  	X_ARCH_PPC64                          = 1
   564  	X_ARCH_PPCGR                          = 1
   565  	X_ARCH_PPCSQ                          = 1
   566  	X_ARCH_PWR4                           = 1
   567  	X_ARCH_PWR5                           = 1
   568  	X_ARCH_PWR5X                          = 1
   569  	X_ARCH_PWR6                           = 1
   570  	X_ARCH_PWR7                           = 1
   571  	X_ARCH_PWR8                           = 1
   572  	X_ASSERT_H                            = 1
   573  	X_ATFILE_SOURCE                       = 1
   574  	X_BITS_STDIO_LIM_H                    = 1
   575  	X_BITS_TIME64_H                       = 1
   576  	X_BITS_TYPESIZES_H                    = 1
   577  	X_BITS_TYPES_H                        = 1
   578  	X_BITS_TYPES_LOCALE_T_H               = 1
   579  	X_BITS_TYPES___LOCALE_T_H             = 1
   580  	X_BSD_SIZE_T_                         = 0
   581  	X_BSD_SIZE_T_DEFINED_                 = 0
   582  	X_CALL_ELF                            = 2
   583  	X_CALL_LINUX                          = 1
   584  	X_DEFAULT_SOURCE                      = 1
   585  	X_FEATURES_H                          = 1
   586  	X_FILE_OFFSET_BITS                    = 64
   587  	X_FTS5_H                              = 0
   588  	X_GCC_SIZE_T                          = 0
   589  	X_HAVE_SQLITE_CONFIG_H                = 1
   590  	X_IOFBF                               = 0
   591  	X_IOLBF                               = 1
   592  	X_IONBF                               = 2
   593  	X_IO_EOF_SEEN                         = 0x0010
   594  	X_IO_ERR_SEEN                         = 0x0020
   595  	X_IO_USER_LOCK                        = 0x8000
   596  	X_LITTLE_ENDIAN                       = 1
   597  	X_LP64                                = 1
   598  	X_POSIX_C_SOURCE                      = 200809
   599  	X_POSIX_SOURCE                        = 1
   600  	X_SIZET_                              = 0
   601  	X_SIZE_T                              = 0
   602  	X_SIZE_T_                             = 0
   603  	X_SIZE_T_DECLARED                     = 0
   604  	X_SIZE_T_DEFINED                      = 0
   605  	X_SIZE_T_DEFINED_                     = 0
   606  	X_SQLITE3RTREE_H_                     = 0
   607  	X_STDARG_H                            = 0
   608  	X_STDC_PREDEF_H                       = 1
   609  	X_STDIO_H                             = 1
   610  	X_STRINGS_H                           = 1
   611  	X_STRING_H                            = 1
   612  	X_SYS_CDEFS_H                         = 1
   613  	X_SYS_SIZE_T_H                        = 0
   614  	X_T_SIZE                              = 0
   615  	X_T_SIZE_                             = 0
   616  	X_VA_LIST                             = 0
   617  	X_VA_LIST_                            = 0
   618  	X_VA_LIST_DEFINED                     = 0
   619  	X_VA_LIST_T_H                         = 0
   620  	Linux                                 = 1
   621  	Unix                                  = 1
   622  	CRTIMPORT                             = 0
   623  	DLLIMPORT                             = 0
   624  	INLINE                                = 0
   625  	MP_DIGIT_DECLARED                     = 0
   626  	MP_INT_DECLARED                       = 0
   627  	NUM_STATIC_TOKENS                     = 20
   628  	SQLITE_TCLAPI                         = 0
   629  	TCL_ALLOW_INLINE_COMPILATION          = 0x20000
   630  	TCL_ALL_EVENTS                        = -3
   631  	TCL_ALPHA_RELEASE                     = 0
   632  	TCL_APPEND_VALUE                      = 4
   633  	TCL_ARGV_CONSTANT                     = 15
   634  	TCL_ARGV_END                          = 23
   635  	TCL_ARGV_FLOAT                        = 19
   636  	TCL_ARGV_FUNC                         = 20
   637  	TCL_ARGV_GENFUNC                      = 21
   638  	TCL_ARGV_HELP                         = 22
   639  	TCL_ARGV_INT                          = 16
   640  	TCL_ARGV_REST                         = 18
   641  	TCL_ARGV_STRING                       = 17
   642  	TCL_BETA_RELEASE                      = 1
   643  	TCL_BREAK                             = 3
   644  	TCL_CANCEL_UNWIND                     = 0x100000
   645  	TCL_CHANNEL_THREAD_INSERT             = 0
   646  	TCL_CHANNEL_THREAD_REMOVE             = 1
   647  	TCL_CLOSE_READ                        = 2
   648  	TCL_CLOSE_WRITE                       = 4
   649  	TCL_CONTINUE                          = 4
   650  	TCL_CONVERT_MULTIBYTE                 = -1
   651  	TCL_CONVERT_NOSPACE                   = -4
   652  	TCL_CONVERT_SYNTAX                    = -2
   653  	TCL_CONVERT_UNKNOWN                   = -3
   654  	TCL_CREATE_HARD_LINK                  = 0x02
   655  	TCL_CREATE_SYMBOLIC_LINK              = 0x01
   656  	TCL_CUSTOM_PTR_KEYS                   = -1
   657  	TCL_CUSTOM_TYPE_KEYS                  = -2
   658  	TCL_DONT_QUOTE_HASH                   = 8
   659  	TCL_DONT_USE_BRACES                   = 1
   660  	TCL_DONT_WAIT                         = 2
   661  	TCL_DOUBLE_SPACE                      = 27
   662  	TCL_DSTRING_STATIC_SIZE               = 200
   663  	TCL_ENCODING_CHAR_LIMIT               = 0x10
   664  	TCL_ENCODING_END                      = 0x02
   665  	TCL_ENCODING_NO_TERMINATE             = 0x08
   666  	TCL_ENCODING_START                    = 0x01
   667  	TCL_ENCODING_STOPONERROR              = 0x04
   668  	TCL_ENFORCE_MODE                      = 16
   669  	TCL_ENSEMBLE_PREFIX                   = 0x02
   670  	TCL_ERROR                             = 1
   671  	TCL_EVAL_DIRECT                       = 0x040000
   672  	TCL_EVAL_GLOBAL                       = 0x020000
   673  	TCL_EVAL_INVOKE                       = 0x080000
   674  	TCL_EVAL_NOERR                        = 0x200000
   675  	TCL_EXACT                             = 1
   676  	TCL_EXCEPTION                         = 8
   677  	TCL_FILE_EVENTS                       = 8
   678  	TCL_FINAL_RELEASE                     = 2
   679  	TCL_GLOBAL_ONLY                       = 1
   680  	TCL_GLOB_PERM_HIDDEN                  = 2
   681  	TCL_GLOB_PERM_R                       = 4
   682  	TCL_GLOB_PERM_RONLY                   = 1
   683  	TCL_GLOB_PERM_W                       = 8
   684  	TCL_GLOB_PERM_X                       = 16
   685  	TCL_GLOB_TYPE_BLOCK                   = 1
   686  	TCL_GLOB_TYPE_CHAR                    = 2
   687  	TCL_GLOB_TYPE_DIR                     = 4
   688  	TCL_GLOB_TYPE_FILE                    = 16
   689  	TCL_GLOB_TYPE_LINK                    = 32
   690  	TCL_GLOB_TYPE_MOUNT                   = 128
   691  	TCL_GLOB_TYPE_PIPE                    = 8
   692  	TCL_GLOB_TYPE_SOCK                    = 64
   693  	TCL_HASH_KEY_RANDOMIZE_HASH           = 0x1
   694  	TCL_HASH_KEY_STORE_HASH               = 1
   695  	TCL_HASH_KEY_SYSTEM_HASH              = 0x2
   696  	TCL_HASH_KEY_TYPE_VERSION             = 1
   697  	TCL_IDLE_EVENTS                       = 32
   698  	TCL_INTEGER_SPACE                     = 24
   699  	TCL_INTERP_DESTROYED                  = 0x100
   700  	TCL_LEAVE_ERR_MSG                     = 0x200
   701  	TCL_LIMIT_COMMANDS                    = 0x01
   702  	TCL_LIMIT_TIME                        = 0x02
   703  	TCL_LINK_BOOLEAN                      = 3
   704  	TCL_LINK_CHAR                         = 6
   705  	TCL_LINK_DOUBLE                       = 2
   706  	TCL_LINK_FLOAT                        = 13
   707  	TCL_LINK_INT                          = 1
   708  	TCL_LINK_LONG                         = 11
   709  	TCL_LINK_READ_ONLY                    = 0x80
   710  	TCL_LINK_SHORT                        = 8
   711  	TCL_LINK_STRING                       = 4
   712  	TCL_LINK_UCHAR                        = 7
   713  	TCL_LINK_UINT                         = 10
   714  	TCL_LINK_ULONG                        = 12
   715  	TCL_LINK_USHORT                       = 9
   716  	TCL_LINK_WIDE_INT                     = 5
   717  	TCL_LINK_WIDE_UINT                    = 14
   718  	TCL_LIST_ELEMENT                      = 8
   719  	TCL_LL_MODIFIER                       = "ll"
   720  	TCL_LOAD_GLOBAL                       = 1
   721  	TCL_LOAD_LAZY                         = 2
   722  	TCL_MAJOR_VERSION                     = 8
   723  	TCL_MATCH_NOCASE                      = 1
   724  	TCL_MAX_PREC                          = 17
   725  	TCL_MINOR_VERSION                     = 6
   726  	TCL_MODE_BLOCKING                     = 0
   727  	TCL_MODE_NONBLOCKING                  = 1
   728  	TCL_NAMESPACE_ONLY                    = 2
   729  	TCL_NORETURN1                         = 0
   730  	TCL_NO_EVAL                           = 0x010000
   731  	TCL_OK                                = 0
   732  	TCL_ONE_WORD_KEYS                     = 1
   733  	TCL_PARSE_BAD_NUMBER                  = 9
   734  	TCL_PARSE_BRACE_EXTRA                 = 2
   735  	TCL_PARSE_MISSING_BRACE               = 3
   736  	TCL_PARSE_MISSING_BRACKET             = 4
   737  	TCL_PARSE_MISSING_PAREN               = 5
   738  	TCL_PARSE_MISSING_QUOTE               = 6
   739  	TCL_PARSE_MISSING_VAR_BRACE           = 7
   740  	TCL_PARSE_PART1                       = 0x400
   741  	TCL_PARSE_QUOTE_EXTRA                 = 1
   742  	TCL_PARSE_SUCCESS                     = 0
   743  	TCL_PARSE_SYNTAX                      = 8
   744  	TCL_PATCH_LEVEL                       = "8.6.11"
   745  	TCL_READABLE                          = 2
   746  	TCL_REG_ADVANCED                      = 000003
   747  	TCL_REG_ADVF                          = 000002
   748  	TCL_REG_BASIC                         = 000000
   749  	TCL_REG_CANMATCH                      = 001000
   750  	TCL_REG_EXPANDED                      = 000040
   751  	TCL_REG_EXTENDED                      = 000001
   752  	TCL_REG_NEWLINE                       = 000300
   753  	TCL_REG_NLANCH                        = 000200
   754  	TCL_REG_NLSTOP                        = 000100
   755  	TCL_REG_NOCASE                        = 000010
   756  	TCL_REG_NOSUB                         = 000020
   757  	TCL_REG_NOTBOL                        = 0001
   758  	TCL_REG_NOTEOL                        = 0002
   759  	TCL_REG_QUOTE                         = 000004
   760  	TCL_RELEASE_LEVEL                     = 2
   761  	TCL_RELEASE_SERIAL                    = 11
   762  	TCL_RESULT_SIZE                       = 200
   763  	TCL_RETURN                            = 2
   764  	TCL_SERVICE_ALL                       = 1
   765  	TCL_SERVICE_NONE                      = 0
   766  	TCL_SMALL_HASH_TABLE                  = 4
   767  	TCL_STDERR                            = 8
   768  	TCL_STDIN                             = 2
   769  	TCL_STDOUT                            = 4
   770  	TCL_STORAGE_CLASS                     = 0
   771  	TCL_STRING_KEYS                       = 0
   772  	TCL_SUBST_ALL                         = 007
   773  	TCL_SUBST_BACKSLASHES                 = 004
   774  	TCL_SUBST_COMMANDS                    = 001
   775  	TCL_SUBST_VARIABLES                   = 002
   776  	TCL_THREAD_CREATE_RETURN              = 0
   777  	TCL_THREAD_JOINABLE                   = 1
   778  	TCL_THREAD_NOFLAGS                    = 0
   779  	TCL_THREAD_STACK_DEFAULT              = 0
   780  	TCL_TIMER_EVENTS                      = 16
   781  	TCL_TOKEN_BS                          = 8
   782  	TCL_TOKEN_COMMAND                     = 16
   783  	TCL_TOKEN_EXPAND_WORD                 = 256
   784  	TCL_TOKEN_OPERATOR                    = 128
   785  	TCL_TOKEN_SIMPLE_WORD                 = 2
   786  	TCL_TOKEN_SUB_EXPR                    = 64
   787  	TCL_TOKEN_TEXT                        = 4
   788  	TCL_TOKEN_VARIABLE                    = 32
   789  	TCL_TOKEN_WORD                        = 1
   790  	TCL_TRACE_ARRAY                       = 0x800
   791  	TCL_TRACE_DELETE                      = 0x4000
   792  	TCL_TRACE_DESTROYED                   = 0x80
   793  	TCL_TRACE_OLD_STYLE                   = 0x1000
   794  	TCL_TRACE_READS                       = 0x10
   795  	TCL_TRACE_RENAME                      = 0x2000
   796  	TCL_TRACE_RESULT_DYNAMIC              = 0x8000
   797  	TCL_TRACE_RESULT_OBJECT               = 0x10000
   798  	TCL_TRACE_UNSETS                      = 0x40
   799  	TCL_TRACE_WRITES                      = 0x20
   800  	TCL_UNLOAD_DETACH_FROM_INTERPRETER    = 1
   801  	TCL_UNLOAD_DETACH_FROM_PROCESS        = 2
   802  	TCL_UTF_MAX                           = 3
   803  	TCL_VERSION                           = "8.6"
   804  	TCL_WINDOW_EVENTS                     = 4
   805  	TCL_WRITABLE                          = 4
   806  	TCL_ZLIB_COMPRESS_BEST                = 9
   807  	TCL_ZLIB_COMPRESS_DEFAULT             = -1
   808  	TCL_ZLIB_COMPRESS_FAST                = 1
   809  	TCL_ZLIB_COMPRESS_NONE                = 0
   810  	TCL_ZLIB_FINALIZE                     = 4
   811  	TCL_ZLIB_FLUSH                        = 2
   812  	TCL_ZLIB_FORMAT_AUTO                  = 8
   813  	TCL_ZLIB_FORMAT_GZIP                  = 4
   814  	TCL_ZLIB_FORMAT_RAW                   = 1
   815  	TCL_ZLIB_FORMAT_ZLIB                  = 2
   816  	TCL_ZLIB_FULLFLUSH                    = 3
   817  	TCL_ZLIB_NO_FLUSH                     = 0
   818  	TCL_ZLIB_STREAM_DEFLATE               = 16
   819  	TCL_ZLIB_STREAM_INFLATE               = 32
   820  	X_CLIENTDATA                          = 0
   821  	X_TCL                                 = 0
   822  	X_TCLDECLS                            = 0
   823  	X_TCLPLATDECLS                        = 0
   824  	X_FTSINT_H                            = 0
   825  	FTS3_TOK_SCHEMA                       = "CREATE TABLE x(input HIDDEN, token, start, end, position)"
   826  	APND_MARK_FOS_SZ                      = 8
   827  	APND_MARK_PREFIX                      = "Start-Of-SQLite3-"
   828  	APND_MARK_PREFIX_SZ                   = 17
   829  	APND_MARK_SIZE                        = 25
   830  	APND_MAX_SIZE                         = 1073741824
   831  	APND_ROUNDUP                          = 4096
   832  	SQLITE3EXT_H                          = 0
   833  	SQLITE_EXTENSION_INIT1                = 0
   834  	SQLITE_EXTENSION_INIT3                = 0
   835  	AMATCH_COL_COMMAND                    = 3
   836  	AMATCH_COL_DISTANCE                   = 1
   837  	AMATCH_COL_LANGUAGE                   = 2
   838  	AMATCH_COL_NWORD                      = 4
   839  	AMATCH_COL_WORD                       = 0
   840  	AMATCH_MX_COST                        = 1000
   841  	AMATCH_MX_LANGID                      = 2147483647
   842  	AMATCH_MX_LENGTH                      = 50
   843  	BIG_ENDIAN                            = 4321
   844  	BYTE_ORDER                            = 1234
   845  	EXIT_FAILURE                          = 1
   846  	EXIT_SUCCESS                          = 0
   847  	FD_SETSIZE                            = 1024
   848  	LITTLE_ENDIAN                         = 1234
   849  	PDP_ENDIAN                            = 3412
   850  	RAND_MAX                              = 2147483647
   851  	WCONTINUED                            = 8
   852  	WEXITED                               = 4
   853  	WNOHANG                               = 1
   854  	WNOWAIT                               = 0x01000000
   855  	WSTOPPED                              = 2
   856  	WUNTRACED                             = 2
   857  	X_ALLOCA_H                            = 1
   858  	X_BITS_BYTESWAP_H                     = 1
   859  	X_BITS_ENDIANNESS_H                   = 1
   860  	X_BITS_ENDIAN_H                       = 1
   861  	X_BITS_FLOATN_COMMON_H                = 0
   862  	X_BITS_FLOATN_H                       = 0
   863  	X_BITS_PTHREADTYPES_ARCH_H            = 1
   864  	X_BITS_PTHREADTYPES_COMMON_H          = 1
   865  	X_BITS_STDINT_INTN_H                  = 1
   866  	X_BITS_UINTN_IDENTITY_H               = 1
   867  	X_CTYPE_H                             = 1
   868  	X_ENDIAN_H                            = 1
   869  	X_GCC_WCHAR_T                         = 0
   870  	X_RWLOCK_INTERNAL_H                   = 0
   871  	X_STDLIB_H                            = 1
   872  	X_STRUCT_TIMESPEC                     = 1
   873  	X_SYS_SELECT_H                        = 1
   874  	X_SYS_TYPES_H                         = 1
   875  	X_THREAD_MUTEX_INTERNAL_H             = 1
   876  	X_THREAD_SHARED_TYPES_H               = 1
   877  	X_T_WCHAR                             = 0
   878  	X_T_WCHAR_                            = 0
   879  	X_WCHAR_T                             = 0
   880  	X_WCHAR_T_                            = 0
   881  	X_WCHAR_T_DECLARED                    = 0
   882  	X_WCHAR_T_DEFINED                     = 0
   883  	X_WCHAR_T_DEFINED_                    = 0
   884  	X_WCHAR_T_H                           = 0
   885  	CARRAY_COLUMN_COUNT                   = 2
   886  	CARRAY_COLUMN_CTYPE                   = 3
   887  	CARRAY_COLUMN_POINTER                 = 1
   888  	CARRAY_COLUMN_VALUE                   = 0
   889  	CARRAY_DOUBLE                         = 2
   890  	CARRAY_INT32                          = 0
   891  	CARRAY_INT64                          = 1
   892  	CARRAY_TEXT                           = 3
   893  	CLOSURE_COL_DEPTH                     = 1
   894  	CLOSURE_COL_ID                        = 0
   895  	CLOSURE_COL_IDCOLUMN                  = 4
   896  	CLOSURE_COL_PARENTCOLUMN              = 5
   897  	CLOSURE_COL_ROOT                      = 2
   898  	CLOSURE_COL_TABLENAME                 = 3
   899  	CSVTEST_FIDX                          = 0x0001
   900  	CSV_INBUFSZ                           = 1024
   901  	CSV_MXERR                             = 200
   902  	EXPLN_COLUMN_ADDR                     = 0
   903  	EXPLN_COLUMN_COMMENT                  = 7
   904  	EXPLN_COLUMN_OPCODE                   = 1
   905  	EXPLN_COLUMN_P1                       = 2
   906  	EXPLN_COLUMN_P2                       = 3
   907  	EXPLN_COLUMN_P3                       = 4
   908  	EXPLN_COLUMN_P4                       = 5
   909  	EXPLN_COLUMN_P5                       = 6
   910  	EXPLN_COLUMN_SQL                      = 8
   911  	ACCESSPERMS                           = 511
   912  	AIO_PRIO_DELTA_MAX                    = 20
   913  	ALLPERMS                              = 4095
   914  	AT_EACCESS                            = 0x200
   915  	AT_FDCWD                              = -100
   916  	AT_REMOVEDIR                          = 0x200
   917  	AT_SYMLINK_FOLLOW                     = 0x400
   918  	AT_SYMLINK_NOFOLLOW                   = 0x100
   919  	CLOCK_BOOTTIME                        = 7
   920  	CLOCK_BOOTTIME_ALARM                  = 9
   921  	CLOCK_MONOTONIC                       = 1
   922  	CLOCK_MONOTONIC_COARSE                = 6
   923  	CLOCK_MONOTONIC_RAW                   = 4
   924  	CLOCK_PROCESS_CPUTIME_ID              = 2
   925  	CLOCK_REALTIME                        = 0
   926  	CLOCK_REALTIME_ALARM                  = 8
   927  	CLOCK_REALTIME_COARSE                 = 5
   928  	CLOCK_TAI                             = 11
   929  	CLOCK_THREAD_CPUTIME_ID               = 3
   930  	DEFFILEMODE                           = 438
   931  	DELAYTIMER_MAX                        = 2147483647
   932  	E2BIG                                 = 7
   933  	EACCES                                = 13
   934  	EADDRINUSE                            = 98
   935  	EADDRNOTAVAIL                         = 99
   936  	EADV                                  = 68
   937  	EAFNOSUPPORT                          = 97
   938  	EAGAIN                                = 11
   939  	EALREADY                              = 114
   940  	EBADE                                 = 52
   941  	EBADF                                 = 9
   942  	EBADFD                                = 77
   943  	EBADMSG                               = 74
   944  	EBADR                                 = 53
   945  	EBADRQC                               = 56
   946  	EBADSLT                               = 57
   947  	EBFONT                                = 59
   948  	EBUSY                                 = 16
   949  	ECANCELED                             = 125
   950  	ECHILD                                = 10
   951  	ECHRNG                                = 44
   952  	ECOMM                                 = 70
   953  	ECONNABORTED                          = 103
   954  	ECONNREFUSED                          = 111
   955  	ECONNRESET                            = 104
   956  	EDEADLK                               = 35
   957  	EDEADLOCK                             = 58
   958  	EDESTADDRREQ                          = 89
   959  	EDOM                                  = 33
   960  	EDOTDOT                               = 73
   961  	EDQUOT                                = 122
   962  	EEXIST                                = 17
   963  	EFAULT                                = 14
   964  	EFBIG                                 = 27
   965  	EHOSTDOWN                             = 112
   966  	EHOSTUNREACH                          = 113
   967  	EHWPOISON                             = 133
   968  	EIDRM                                 = 43
   969  	EILSEQ                                = 84
   970  	EINPROGRESS                           = 115
   971  	EINTR                                 = 4
   972  	EINVAL                                = 22
   973  	EIO                                   = 5
   974  	EISCONN                               = 106
   975  	EISDIR                                = 21
   976  	EISNAM                                = 120
   977  	EKEYEXPIRED                           = 127
   978  	EKEYREJECTED                          = 129
   979  	EKEYREVOKED                           = 128
   980  	EL2HLT                                = 51
   981  	EL2NSYNC                              = 45
   982  	EL3HLT                                = 46
   983  	EL3RST                                = 47
   984  	ELIBACC                               = 79
   985  	ELIBBAD                               = 80
   986  	ELIBEXEC                              = 83
   987  	ELIBMAX                               = 82
   988  	ELIBSCN                               = 81
   989  	ELNRNG                                = 48
   990  	ELOOP                                 = 40
   991  	EMEDIUMTYPE                           = 124
   992  	EMFILE                                = 24
   993  	EMLINK                                = 31
   994  	EMSGSIZE                              = 90
   995  	EMULTIHOP                             = 72
   996  	ENAMETOOLONG                          = 36
   997  	ENAVAIL                               = 119
   998  	ENETDOWN                              = 100
   999  	ENETRESET                             = 102
  1000  	ENETUNREACH                           = 101
  1001  	ENFILE                                = 23
  1002  	ENOANO                                = 55
  1003  	ENOBUFS                               = 105
  1004  	ENOCSI                                = 50
  1005  	ENODATA                               = 61
  1006  	ENODEV                                = 19
  1007  	ENOENT                                = 2
  1008  	ENOEXEC                               = 8
  1009  	ENOKEY                                = 126
  1010  	ENOLCK                                = 37
  1011  	ENOLINK                               = 67
  1012  	ENOMEDIUM                             = 123
  1013  	ENOMEM                                = 12
  1014  	ENOMSG                                = 42
  1015  	ENONET                                = 64
  1016  	ENOPKG                                = 65
  1017  	ENOPROTOOPT                           = 92
  1018  	ENOSPC                                = 28
  1019  	ENOSR                                 = 63
  1020  	ENOSTR                                = 60
  1021  	ENOSYS                                = 38
  1022  	ENOTBLK                               = 15
  1023  	ENOTCONN                              = 107
  1024  	ENOTDIR                               = 20
  1025  	ENOTEMPTY                             = 39
  1026  	ENOTNAM                               = 118
  1027  	ENOTRECOVERABLE                       = 131
  1028  	ENOTSOCK                              = 88
  1029  	ENOTSUP                               = 95
  1030  	ENOTTY                                = 25
  1031  	ENOTUNIQ                              = 76
  1032  	ENXIO                                 = 6
  1033  	EOPNOTSUPP                            = 95
  1034  	EOVERFLOW                             = 75
  1035  	EOWNERDEAD                            = 130
  1036  	EPERM                                 = 1
  1037  	EPFNOSUPPORT                          = 96
  1038  	EPIPE                                 = 32
  1039  	EPROTO                                = 71
  1040  	EPROTONOSUPPORT                       = 93
  1041  	EPROTOTYPE                            = 91
  1042  	ERANGE                                = 34
  1043  	EREMCHG                               = 78
  1044  	EREMOTE                               = 66
  1045  	EREMOTEIO                             = 121
  1046  	ERESTART                              = 85
  1047  	ERFKILL                               = 132
  1048  	EROFS                                 = 30
  1049  	ESHUTDOWN                             = 108
  1050  	ESOCKTNOSUPPORT                       = 94
  1051  	ESPIPE                                = 29
  1052  	ESRCH                                 = 3
  1053  	ESRMNT                                = 69
  1054  	ESTALE                                = 116
  1055  	ESTRPIPE                              = 86
  1056  	ETIME                                 = 62
  1057  	ETIMEDOUT                             = 110
  1058  	ETOOMANYREFS                          = 109
  1059  	ETXTBSY                               = 26
  1060  	EUCLEAN                               = 117
  1061  	EUNATCH                               = 49
  1062  	EUSERS                                = 87
  1063  	EWOULDBLOCK                           = 11
  1064  	EXDEV                                 = 18
  1065  	EXFULL                                = 54
  1066  	FAPPEND                               = 1024
  1067  	FASYNC                                = 8192
  1068  	FD_CLOEXEC                            = 1
  1069  	FFSYNC                                = 1052672
  1070  	FNDELAY                               = 2048
  1071  	FNONBLOCK                             = 2048
  1072  	FSDIR_COLUMN_DATA                     = 3
  1073  	FSDIR_COLUMN_DIR                      = 5
  1074  	FSDIR_COLUMN_MODE                     = 1
  1075  	FSDIR_COLUMN_MTIME                    = 2
  1076  	FSDIR_COLUMN_NAME                     = 0
  1077  	FSDIR_COLUMN_PATH                     = 4
  1078  	FSDIR_SCHEMA                          = "(name,mode,mtime,data,path HIDDEN,dir HIDDEN)"
  1079  	F_DUPFD                               = 0
  1080  	F_DUPFD_CLOEXEC                       = 1030
  1081  	F_EXLCK                               = 4
  1082  	F_GETFD                               = 1
  1083  	F_GETFL                               = 3
  1084  	F_GETLK                               = 12
  1085  	F_GETLK64                             = 12
  1086  	F_GETOWN                              = 9
  1087  	F_LOCK                                = 1
  1088  	F_OK                                  = 0
  1089  	F_RDLCK                               = 0
  1090  	F_SETFD                               = 2
  1091  	F_SETFL                               = 4
  1092  	F_SETLK                               = 13
  1093  	F_SETLK64                             = 13
  1094  	F_SETLKW                              = 14
  1095  	F_SETLKW64                            = 14
  1096  	F_SETOWN                              = 8
  1097  	F_SHLCK                               = 8
  1098  	F_TEST                                = 3
  1099  	F_TLOCK                               = 2
  1100  	F_ULOCK                               = 0
  1101  	F_UNLCK                               = 2
  1102  	F_WRLCK                               = 1
  1103  	HOST_NAME_MAX                         = 64
  1104  	LOCK_EX                               = 2
  1105  	LOCK_NB                               = 4
  1106  	LOCK_SH                               = 1
  1107  	LOCK_UN                               = 8
  1108  	LOGIN_NAME_MAX                        = 256
  1109  	L_INCR                                = 1
  1110  	L_SET                                 = 0
  1111  	L_XTND                                = 2
  1112  	MAXNAMLEN                             = 255
  1113  	MAX_CANON                             = 255
  1114  	MAX_INPUT                             = 255
  1115  	MQ_PRIO_MAX                           = 32768
  1116  	NAME_MAX                              = 255
  1117  	NGROUPS_MAX                           = 65536
  1118  	O_ACCMODE                             = 0003
  1119  	O_APPEND                              = 02000
  1120  	O_ASYNC                               = 020000
  1121  	O_CLOEXEC                             = 524288
  1122  	O_CREAT                               = 0100
  1123  	O_DIRECTORY                           = 16384
  1124  	O_DSYNC                               = 4096
  1125  	O_EXCL                                = 0200
  1126  	O_FSYNC                               = 1052672
  1127  	O_NDELAY                              = 2048
  1128  	O_NOCTTY                              = 0400
  1129  	O_NOFOLLOW                            = 32768
  1130  	O_NONBLOCK                            = 04000
  1131  	O_RDONLY                              = 00
  1132  	O_RDWR                                = 02
  1133  	O_RSYNC                               = 1052672
  1134  	O_SYNC                                = 04010000
  1135  	O_TRUNC                               = 01000
  1136  	O_WRONLY                              = 01
  1137  	PATH_MAX                              = 4096
  1138  	PIPE_BUF                              = 4096
  1139  	POSIX_FADV_DONTNEED                   = 4
  1140  	POSIX_FADV_NOREUSE                    = 5
  1141  	POSIX_FADV_NORMAL                     = 0
  1142  	POSIX_FADV_RANDOM                     = 1
  1143  	POSIX_FADV_SEQUENTIAL                 = 2
  1144  	POSIX_FADV_WILLNEED                   = 3
  1145  	PTHREAD_DESTRUCTOR_ITERATIONS         = 4
  1146  	PTHREAD_KEYS_MAX                      = 1024
  1147  	PTHREAD_STACK_MIN                     = 131072
  1148  	RTSIG_MAX                             = 32
  1149  	R_OK                                  = 4
  1150  	SEM_VALUE_MAX                         = 2147483647
  1151  	STDERR_FILENO                         = 2
  1152  	STDIN_FILENO                          = 0
  1153  	STDOUT_FILENO                         = 1
  1154  	S_BLKSIZE                             = 512
  1155  	S_IEXEC                               = 64
  1156  	S_IFBLK                               = 24576
  1157  	S_IFCHR                               = 8192
  1158  	S_IFDIR                               = 16384
  1159  	S_IFIFO                               = 4096
  1160  	S_IFLNK                               = 40960
  1161  	S_IFMT                                = 61440
  1162  	S_IFREG                               = 32768
  1163  	S_IFSOCK                              = 49152
  1164  	S_IREAD                               = 256
  1165  	S_IRGRP                               = 32
  1166  	S_IROTH                               = 4
  1167  	S_IRUSR                               = 256
  1168  	S_IRWXG                               = 56
  1169  	S_IRWXO                               = 7
  1170  	S_IRWXU                               = 448
  1171  	S_ISGID                               = 1024
  1172  	S_ISUID                               = 2048
  1173  	S_ISVTX                               = 512
  1174  	S_IWGRP                               = 16
  1175  	S_IWOTH                               = 2
  1176  	S_IWRITE                              = 128
  1177  	S_IWUSR                               = 128
  1178  	S_IXGRP                               = 8
  1179  	S_IXOTH                               = 1
  1180  	S_IXUSR                               = 64
  1181  	TIMER_ABSTIME                         = 1
  1182  	TIME_UTC                              = 1
  1183  	TTY_NAME_MAX                          = 32
  1184  	UTIME_NOW                             = 1073741823
  1185  	UTIME_OMIT                            = 1073741822
  1186  	W_OK                                  = 2
  1187  	XATTR_LIST_MAX                        = 65536
  1188  	XATTR_NAME_MAX                        = 255
  1189  	XATTR_SIZE_MAX                        = 65536
  1190  	X_OK                                  = 1
  1191  	X_ASM_GENERIC_ERRNO_BASE_H            = 0
  1192  	X_ASM_GENERIC_ERRNO_H                 = 0
  1193  	X_ASM_POWERPC_ERRNO_H                 = 0
  1194  	X_BITS_ERRNO_H                        = 1
  1195  	X_BITS_POSIX1_LIM_H                   = 1
  1196  	X_BITS_POSIX_OPT_H                    = 1
  1197  	X_BITS_STAT_H                         = 1
  1198  	X_BITS_TIME_H                         = 1
  1199  	X_DIRENT_H                            = 1
  1200  	X_DIRENT_HAVE_D_OFF                   = 0
  1201  	X_DIRENT_HAVE_D_RECLEN                = 0
  1202  	X_DIRENT_HAVE_D_TYPE                  = 0
  1203  	X_DIRENT_MATCHES_DIRENT64             = 1
  1204  	X_ERRNO_H                             = 1
  1205  	X_FCNTL_H                             = 1
  1206  	X_GETOPT_CORE_H                       = 1
  1207  	X_GETOPT_POSIX_H                      = 1
  1208  	X_LFS64_ASYNCHRONOUS_IO               = 1
  1209  	X_LFS64_LARGEFILE                     = 1
  1210  	X_LFS64_STDIO                         = 1
  1211  	X_LFS_ASYNCHRONOUS_IO                 = 1
  1212  	X_LFS_LARGEFILE                       = 1
  1213  	X_LINUX_LIMITS_H                      = 0
  1214  	X_MKNOD_VER                           = 1
  1215  	X_MKNOD_VER_LINUX                     = 1
  1216  	X_MKNOD_VER_SVR4                      = 2
  1217  	X_POSIX2_CHAR_TERM                    = 200809
  1218  	X_POSIX2_C_BIND                       = 200809
  1219  	X_POSIX2_C_DEV                        = 200809
  1220  	X_POSIX2_C_VERSION                    = 200809
  1221  	X_POSIX2_LOCALEDEF                    = 200809
  1222  	X_POSIX2_SW_DEV                       = 200809
  1223  	X_POSIX2_VERSION                      = 200809
  1224  	X_POSIX_ADVISORY_INFO                 = 200809
  1225  	X_POSIX_AIO_LISTIO_MAX                = 2
  1226  	X_POSIX_AIO_MAX                       = 1
  1227  	X_POSIX_ARG_MAX                       = 4096
  1228  	X_POSIX_ASYNCHRONOUS_IO               = 200809
  1229  	X_POSIX_ASYNC_IO                      = 1
  1230  	X_POSIX_BARRIERS                      = 200809
  1231  	X_POSIX_CHILD_MAX                     = 25
  1232  	X_POSIX_CHOWN_RESTRICTED              = 0
  1233  	X_POSIX_CLOCKRES_MIN                  = 20000000
  1234  	X_POSIX_CLOCK_SELECTION               = 200809
  1235  	X_POSIX_CPUTIME                       = 0
  1236  	X_POSIX_DELAYTIMER_MAX                = 32
  1237  	X_POSIX_FSYNC                         = 200809
  1238  	X_POSIX_HOST_NAME_MAX                 = 255
  1239  	X_POSIX_IPV6                          = 200809
  1240  	X_POSIX_JOB_CONTROL                   = 1
  1241  	X_POSIX_LINK_MAX                      = 8
  1242  	X_POSIX_LOGIN_NAME_MAX                = 9
  1243  	X_POSIX_MAPPED_FILES                  = 200809
  1244  	X_POSIX_MAX_CANON                     = 255
  1245  	X_POSIX_MAX_INPUT                     = 255
  1246  	X_POSIX_MEMLOCK                       = 200809
  1247  	X_POSIX_MEMLOCK_RANGE                 = 200809
  1248  	X_POSIX_MEMORY_PROTECTION             = 200809
  1249  	X_POSIX_MESSAGE_PASSING               = 200809
  1250  	X_POSIX_MONOTONIC_CLOCK               = 0
  1251  	X_POSIX_MQ_OPEN_MAX                   = 8
  1252  	X_POSIX_MQ_PRIO_MAX                   = 32
  1253  	X_POSIX_NAME_MAX                      = 14
  1254  	X_POSIX_NGROUPS_MAX                   = 8
  1255  	X_POSIX_NO_TRUNC                      = 1
  1256  	X_POSIX_OPEN_MAX                      = 20
  1257  	X_POSIX_PATH_MAX                      = 256
  1258  	X_POSIX_PIPE_BUF                      = 512
  1259  	X_POSIX_PRIORITIZED_IO                = 200809
  1260  	X_POSIX_PRIORITY_SCHEDULING           = 200809
  1261  	X_POSIX_RAW_SOCKETS                   = 200809
  1262  	X_POSIX_READER_WRITER_LOCKS           = 200809
  1263  	X_POSIX_REALTIME_SIGNALS              = 200809
  1264  	X_POSIX_REENTRANT_FUNCTIONS           = 1
  1265  	X_POSIX_REGEXP                        = 1
  1266  	X_POSIX_RE_DUP_MAX                    = 255
  1267  	X_POSIX_RTSIG_MAX                     = 8
  1268  	X_POSIX_SAVED_IDS                     = 1
  1269  	X_POSIX_SEMAPHORES                    = 200809
  1270  	X_POSIX_SEM_NSEMS_MAX                 = 256
  1271  	X_POSIX_SEM_VALUE_MAX                 = 32767
  1272  	X_POSIX_SHARED_MEMORY_OBJECTS         = 200809
  1273  	X_POSIX_SHELL                         = 1
  1274  	X_POSIX_SIGQUEUE_MAX                  = 32
  1275  	X_POSIX_SPAWN                         = 200809
  1276  	X_POSIX_SPIN_LOCKS                    = 200809
  1277  	X_POSIX_SPORADIC_SERVER               = -1
  1278  	X_POSIX_SSIZE_MAX                     = 32767
  1279  	X_POSIX_STREAM_MAX                    = 8
  1280  	X_POSIX_SYMLINK_MAX                   = 255
  1281  	X_POSIX_SYMLOOP_MAX                   = 8
  1282  	X_POSIX_SYNCHRONIZED_IO               = 200809
  1283  	X_POSIX_THREADS                       = 200809
  1284  	X_POSIX_THREAD_ATTR_STACKADDR         = 200809
  1285  	X_POSIX_THREAD_ATTR_STACKSIZE         = 200809
  1286  	X_POSIX_THREAD_CPUTIME                = 0
  1287  	X_POSIX_THREAD_DESTRUCTOR_ITERATIONS  = 4
  1288  	X_POSIX_THREAD_KEYS_MAX               = 128
  1289  	X_POSIX_THREAD_PRIORITY_SCHEDULING    = 200809
  1290  	X_POSIX_THREAD_PRIO_INHERIT           = 200809
  1291  	X_POSIX_THREAD_PRIO_PROTECT           = 200809
  1292  	X_POSIX_THREAD_PROCESS_SHARED         = 200809
  1293  	X_POSIX_THREAD_ROBUST_PRIO_INHERIT    = 200809
  1294  	X_POSIX_THREAD_ROBUST_PRIO_PROTECT    = -1
  1295  	X_POSIX_THREAD_SAFE_FUNCTIONS         = 200809
  1296  	X_POSIX_THREAD_SPORADIC_SERVER        = -1
  1297  	X_POSIX_THREAD_THREADS_MAX            = 64
  1298  	X_POSIX_TIMEOUTS                      = 200809
  1299  	X_POSIX_TIMERS                        = 200809
  1300  	X_POSIX_TIMER_MAX                     = 32
  1301  	X_POSIX_TRACE                         = -1
  1302  	X_POSIX_TRACE_EVENT_FILTER            = -1
  1303  	X_POSIX_TRACE_INHERIT                 = -1
  1304  	X_POSIX_TRACE_LOG                     = -1
  1305  	X_POSIX_TTY_NAME_MAX                  = 9
  1306  	X_POSIX_TYPED_MEMORY_OBJECTS          = -1
  1307  	X_POSIX_TZNAME_MAX                    = 6
  1308  	X_POSIX_V6_LP64_OFF64                 = 1
  1309  	X_POSIX_V6_LPBIG_OFFBIG               = -1
  1310  	X_POSIX_V7_LP64_OFF64                 = 1
  1311  	X_POSIX_V7_LPBIG_OFFBIG               = -1
  1312  	X_POSIX_VDISABLE                      = 0
  1313  	X_POSIX_VERSION                       = 200809
  1314  	X_STATBUF_ST_BLKSIZE                  = 0
  1315  	X_STATBUF_ST_NSEC                     = 0
  1316  	X_STATBUF_ST_RDEV                     = 0
  1317  	X_STAT_VER                            = 1
  1318  	X_STAT_VER_KERNEL                     = 1
  1319  	X_STAT_VER_LINUX                      = 3
  1320  	X_STAT_VER_LINUX_OLD                  = 1
  1321  	X_STAT_VER_SVR4                       = 2
  1322  	X_SYS_STAT_H                          = 1
  1323  	X_SYS_TIME_H                          = 1
  1324  	X_TIME_H                              = 1
  1325  	X_UNISTD_H                            = 1
  1326  	X_UTIME_H                             = 1
  1327  	X_XBS5_LP64_OFF64                     = 1
  1328  	X_XBS5_LPBIG_OFFBIG                   = -1
  1329  	X_XOPEN_ENH_I18N                      = 1
  1330  	X_XOPEN_LEGACY                        = 1
  1331  	X_XOPEN_REALTIME                      = 1
  1332  	X_XOPEN_REALTIME_THREADS              = 1
  1333  	X_XOPEN_SHM                           = 1
  1334  	X_XOPEN_UNIX                          = 1
  1335  	X_XOPEN_VERSION                       = 700
  1336  	X_XOPEN_XCU_VERSION                   = 4
  1337  	X_XOPEN_XPG2                          = 1
  1338  	X_XOPEN_XPG3                          = 1
  1339  	X_XOPEN_XPG4                          = 1
  1340  	FUZZER_HASH                           = 4001
  1341  	FUZZER_MX_COST                        = 1000
  1342  	FUZZER_MX_LENGTH                      = 50
  1343  	FUZZER_MX_OUTPUT_LENGTH               = 100
  1344  	FUZZER_MX_RULEID                      = 2147483647
  1345  	FUZZER_NQUEUE                         = 20
  1346  	CC_AND                                = 24
  1347  	CC_BANG                               = 15
  1348  	CC_COMMA                              = 23
  1349  	CC_DIGIT                              = 3
  1350  	CC_DOLLAR                             = 4
  1351  	CC_DOT                                = 26
  1352  	CC_EQ                                 = 14
  1353  	CC_GT                                 = 13
  1354  	CC_ID                                 = 2
  1355  	CC_ILLEGAL                            = 27
  1356  	CC_KYWD                               = 1
  1357  	CC_LP                                 = 17
  1358  	CC_LT                                 = 12
  1359  	CC_MINUS                              = 11
  1360  	CC_PERCENT                            = 22
  1361  	CC_PIPE                               = 10
  1362  	CC_PLUS                               = 20
  1363  	CC_QUOTE                              = 8
  1364  	CC_QUOTE2                             = 9
  1365  	CC_RP                                 = 18
  1366  	CC_SEMI                               = 19
  1367  	CC_SLASH                              = 16
  1368  	CC_SPACE                              = 7
  1369  	CC_STAR                               = 21
  1370  	CC_TILDA                              = 25
  1371  	CC_VARALPHA                           = 5
  1372  	CC_VARNUM                             = 6
  1373  	CC_X                                  = 0
  1374  	TK_BITAND                             = 3
  1375  	TK_BITNOT                             = 3
  1376  	TK_BITOR                              = 3
  1377  	TK_BLOB                               = 2
  1378  	TK_COMMA                              = 3
  1379  	TK_CONCAT                             = 3
  1380  	TK_DOT                                = 3
  1381  	TK_EQ                                 = 3
  1382  	TK_ERROR                              = 4
  1383  	TK_FLOAT                              = 2
  1384  	TK_GE                                 = 3
  1385  	TK_GT                                 = 3
  1386  	TK_ID                                 = 1
  1387  	TK_ILLEGAL                            = 4
  1388  	TK_INTEGER                            = 2
  1389  	TK_LE                                 = 3
  1390  	TK_LITERAL                            = 2
  1391  	TK_LP                                 = 3
  1392  	TK_LSHIFT                             = 3
  1393  	TK_LT                                 = 3
  1394  	TK_MINUS                              = 3
  1395  	TK_NAME                               = 1
  1396  	TK_NE                                 = 3
  1397  	TK_PLUS                               = 3
  1398  	TK_PUNCT                              = 3
  1399  	TK_REM                                = 3
  1400  	TK_RP                                 = 3
  1401  	TK_RSHIFT                             = 3
  1402  	TK_SEMI                               = 3
  1403  	TK_SLASH                              = 3
  1404  	TK_SPACE                              = 0
  1405  	TK_STAR                               = 3
  1406  	TK_STRING                             = 2
  1407  	TK_VARIABLE                           = 2
  1408  	Deliberate_fall_through               = 0
  1409  	QPVTAB_A                              = 6
  1410  	QPVTAB_B                              = 7
  1411  	QPVTAB_C                              = 8
  1412  	QPVTAB_CN                             = 2
  1413  	QPVTAB_D                              = 9
  1414  	QPVTAB_E                              = 10
  1415  	QPVTAB_FLAGS                          = 11
  1416  	QPVTAB_IX                             = 1
  1417  	QPVTAB_NONE                           = 12
  1418  	QPVTAB_OP                             = 3
  1419  	QPVTAB_RHS                            = 5
  1420  	QPVTAB_UX                             = 4
  1421  	QPVTAB_VN                             = 0
  1422  	RE_EOF                                = 0
  1423  	RE_OP_ACCEPT                          = 6
  1424  	RE_OP_ANY                             = 2
  1425  	RE_OP_ANYSTAR                         = 3
  1426  	RE_OP_BOUNDARY                        = 17
  1427  	RE_OP_CC_EXC                          = 8
  1428  	RE_OP_CC_INC                          = 7
  1429  	RE_OP_CC_RANGE                        = 10
  1430  	RE_OP_CC_VALUE                        = 9
  1431  	RE_OP_DIGIT                           = 13
  1432  	RE_OP_FORK                            = 4
  1433  	RE_OP_GOTO                            = 5
  1434  	RE_OP_MATCH                           = 1
  1435  	RE_OP_NOTDIGIT                        = 14
  1436  	RE_OP_NOTSPACE                        = 16
  1437  	RE_OP_NOTWORD                         = 12
  1438  	RE_OP_SPACE                           = 15
  1439  	RE_OP_WORD                            = 11
  1440  	SERIES_COLUMN_START                   = 1
  1441  	SERIES_COLUMN_STEP                    = 3
  1442  	SERIES_COLUMN_STOP                    = 2
  1443  	SERIES_COLUMN_VALUE                   = 0
  1444  	CCLASS_B                              = 2
  1445  	CCLASS_C                              = 3
  1446  	CCLASS_D                              = 4
  1447  	CCLASS_DIGIT                          = 10
  1448  	CCLASS_H                              = 5
  1449  	CCLASS_L                              = 6
  1450  	CCLASS_M                              = 8
  1451  	CCLASS_OTHER                          = 12
  1452  	CCLASS_R                              = 7
  1453  	CCLASS_SILENT                         = 0
  1454  	CCLASS_SPACE                          = 11
  1455  	CCLASS_VOWEL                          = 1
  1456  	CCLASS_Y                              = 9
  1457  	FINAL_INS_COST_DIV                    = 4
  1458  	SCRIPT_ARABIC                         = 0x0010
  1459  	SCRIPT_CYRILLIC                       = 0x0002
  1460  	SCRIPT_GREEK                          = 0x0004
  1461  	SCRIPT_HEBREW                         = 0x0008
  1462  	SCRIPT_LATIN                          = 0x0001
  1463  	SPELLFIX_COL_COMMAND                  = 11
  1464  	SPELLFIX_COL_DISTANCE                 = 2
  1465  	SPELLFIX_COL_LANGID                   = 3
  1466  	SPELLFIX_COL_MATCHLEN                 = 5
  1467  	SPELLFIX_COL_PHONEHASH                = 6
  1468  	SPELLFIX_COL_RANK                     = 1
  1469  	SPELLFIX_COL_SCOPE                    = 8
  1470  	SPELLFIX_COL_SCORE                    = 4
  1471  	SPELLFIX_COL_SOUNDSLIKE               = 10
  1472  	SPELLFIX_COL_SRCHCNT                  = 9
  1473  	SPELLFIX_COL_TOP                      = 7
  1474  	SPELLFIX_COL_WORD                     = 0
  1475  	SPELLFIX_IDXNUM_DIST                  = 48
  1476  	SPELLFIX_IDXNUM_DISTLE                = 0x20
  1477  	SPELLFIX_IDXNUM_DISTLT                = 0x10
  1478  	SPELLFIX_IDXNUM_LANGID                = 0x02
  1479  	SPELLFIX_IDXNUM_MATCH                 = 0x01
  1480  	SPELLFIX_IDXNUM_ROWID                 = 0x40
  1481  	SPELLFIX_IDXNUM_SCOPE                 = 0x08
  1482  	SPELLFIX_IDXNUM_TOP                   = 0x04
  1483  	SPELLFIX_MX_HASH                      = 32
  1484  	SPELLFIX_MX_RUN                       = 1
  1485  	SQLITE_SPELLFIX_STACKALLOC_SZ         = 1024
  1486  	SWARMVTAB_MAX_OPEN                    = 9
  1487  	SQLITE_RBU_STATE_CHECKPOINT           = 3
  1488  	SQLITE_RBU_STATE_DONE                 = 4
  1489  	SQLITE_RBU_STATE_ERROR                = 5
  1490  	SQLITE_RBU_STATE_MOVE                 = 2
  1491  	SQLITE_RBU_STATE_OAL                  = 1
  1492  	X_SQLITE3RBU_H                        = 0
  1493  	BTREE_APPEND                          = 0x08
  1494  	BTREE_APPLICATION_ID                  = 8
  1495  	BTREE_AUTOVACUUM_FULL                 = 1
  1496  	BTREE_AUTOVACUUM_INCR                 = 2
  1497  	BTREE_AUTOVACUUM_NONE                 = 0
  1498  	BTREE_AUXDELETE                       = 0x04
  1499  	BTREE_BLOBKEY                         = 2
  1500  	BTREE_BULKLOAD                        = 0x00000001
  1501  	BTREE_DATA_VERSION                    = 15
  1502  	BTREE_DEFAULT_CACHE_SIZE              = 3
  1503  	BTREE_FILE_FORMAT                     = 2
  1504  	BTREE_FORDELETE                       = 0x00000008
  1505  	BTREE_FREE_PAGE_COUNT                 = 0
  1506  	BTREE_HINT_RANGE                      = 0
  1507  	BTREE_INCR_VACUUM                     = 7
  1508  	BTREE_INTKEY                          = 1
  1509  	BTREE_LARGEST_ROOT_PAGE               = 4
  1510  	BTREE_MEMORY                          = 2
  1511  	BTREE_OMIT_JOURNAL                    = 1
  1512  	BTREE_PREFORMAT                       = 0x80
  1513  	BTREE_SAVEPOSITION                    = 0x02
  1514  	BTREE_SCHEMA_VERSION                  = 1
  1515  	BTREE_SEEK_EQ                         = 0x00000002
  1516  	BTREE_SINGLE                          = 4
  1517  	BTREE_TEXT_ENCODING                   = 5
  1518  	BTREE_UNORDERED                       = 8
  1519  	BTREE_USER_VERSION                    = 6
  1520  	BTREE_WRCSR                           = 0x00000004
  1521  	COLFLAG_BUSY                          = 0x0100
  1522  	COLFLAG_GENERATED                     = 0x0060
  1523  	COLFLAG_HASCOLL                       = 0x0200
  1524  	COLFLAG_HASTYPE                       = 0x0004
  1525  	COLFLAG_HIDDEN                        = 0x0002
  1526  	COLFLAG_NOEXPAND                      = 0x0400
  1527  	COLFLAG_NOINSERT                      = 0x0062
  1528  	COLFLAG_NOTAVAIL                      = 0x0080
  1529  	COLFLAG_PRIMKEY                       = 0x0001
  1530  	COLFLAG_SORTERREF                     = 0x0010
  1531  	COLFLAG_STORED                        = 0x0040
  1532  	COLFLAG_UNIQUE                        = 0x0008
  1533  	COLFLAG_VIRTUAL                       = 0x0020
  1534  	COLNAME_COLUMN                        = 4
  1535  	COLNAME_DATABASE                      = 2
  1536  	COLNAME_DECLTYPE                      = 1
  1537  	COLNAME_N                             = 5
  1538  	COLNAME_NAME                          = 0
  1539  	COLNAME_TABLE                         = 3
  1540  	COLTYPE_ANY                           = 1
  1541  	COLTYPE_BLOB                          = 2
  1542  	COLTYPE_CUSTOM                        = 0
  1543  	COLTYPE_INT                           = 3
  1544  	COLTYPE_INTEGER                       = 4
  1545  	COLTYPE_REAL                          = 5
  1546  	COLTYPE_TEXT                          = 6
  1547  	DBFLAG_EncodingFixed                  = 0x0040
  1548  	DBFLAG_InternalFunc                   = 0x0020
  1549  	DBFLAG_PreferBuiltin                  = 0x0002
  1550  	DBFLAG_SchemaChange                   = 0x0001
  1551  	DBFLAG_SchemaKnownOk                  = 0x0010
  1552  	DBFLAG_Vacuum                         = 0x0004
  1553  	DBFLAG_VacuumInto                     = 0x0008
  1554  	DB_ResetWanted                        = 0x0008
  1555  	DB_SchemaLoaded                       = 0x0001
  1556  	DB_UnresetViews                       = 0x0002
  1557  	ENAME_NAME                            = 0
  1558  	ENAME_SPAN                            = 1
  1559  	ENAME_TAB                             = 2
  1560  	EP_Agg                                = 0x000010
  1561  	EP_CanBeNull                          = 0x200000
  1562  	EP_Collate                            = 0x000200
  1563  	EP_Commuted                           = 0x000400
  1564  	EP_ConstFunc                          = 0x100000
  1565  	EP_DblQuoted                          = 0x000080
  1566  	EP_Distinct                           = 0x000004
  1567  	EP_FixedCol                           = 0x000020
  1568  	EP_FromDDL                            = 0x40000000
  1569  	EP_HasFunc                            = 0x000008
  1570  	EP_IfNullRow                          = 0x040000
  1571  	EP_Immutable                          = 0x02
  1572  	EP_InfixFunc                          = 0x000100
  1573  	EP_InnerON                            = 0x000002
  1574  	EP_IntValue                           = 0x000800
  1575  	EP_IsFalse                            = 0x20000000
  1576  	EP_IsTrue                             = 0x10000000
  1577  	EP_Leaf                               = 0x800000
  1578  	EP_MemToken                           = 0x020000
  1579  	EP_NoReduce                           = 0x01
  1580  	EP_OuterON                            = 0x000001
  1581  	EP_Propagate                          = 4194824
  1582  	EP_Quoted                             = 0x4000000
  1583  	EP_Reduced                            = 0x004000
  1584  	EP_Skip                               = 0x002000
  1585  	EP_Static                             = 0x8000000
  1586  	EP_Subquery                           = 0x400000
  1587  	EP_Subrtn                             = 0x2000000
  1588  	EP_TokenOnly                          = 0x010000
  1589  	EP_Unlikely                           = 0x080000
  1590  	EP_VarSelect                          = 0x000040
  1591  	EP_Win                                = 0x008000
  1592  	EP_WinFunc                            = 0x1000000
  1593  	EP_xIsSelect                          = 0x001000
  1594  	EU4_EXPR                              = 2
  1595  	EU4_IDX                               = 1
  1596  	EU4_NONE                              = 0
  1597  	EXCLUSIVE_LOCK                        = 4
  1598  	EXPRDUP_REDUCE                        = 0x0001
  1599  	GCC_VERSION                           = 10002001
  1600  	HAVE_DLFCN_H                          = 1
  1601  	HAVE_FCHOWN                           = 1
  1602  	HAVE_FDATASYNC                        = 1
  1603  	HAVE_GMTIME_R                         = 1
  1604  	HAVE_INT16_T                          = 1
  1605  	HAVE_INT32_T                          = 1
  1606  	HAVE_INT64_T                          = 1
  1607  	HAVE_INT8_T                           = 1
  1608  	HAVE_INTPTR_T                         = 1
  1609  	HAVE_INTTYPES_H                       = 1
  1610  	HAVE_ISNAN                            = 1
  1611  	HAVE_LOCALTIME_R                      = 1
  1612  	HAVE_LSTAT                            = 1
  1613  	HAVE_MALLOC_H                         = 1
  1614  	HAVE_MALLOC_USABLE_SIZE               = 1
  1615  	HAVE_MEMORY_H                         = 1
  1616  	HAVE_PREAD                            = 1
  1617  	HAVE_PREAD64                          = 1
  1618  	HAVE_PWRITE                           = 1
  1619  	HAVE_PWRITE64                         = 1
  1620  	HAVE_READLINK                         = 1
  1621  	HAVE_STDINT_H                         = 1
  1622  	HAVE_STDLIB_H                         = 1
  1623  	HAVE_STRCHRNUL                        = 1
  1624  	HAVE_STRINGS_H                        = 1
  1625  	HAVE_STRING_H                         = 1
  1626  	HAVE_SYS_STAT_H                       = 1
  1627  	HAVE_SYS_TYPES_H                      = 1
  1628  	HAVE_UINT16_T                         = 1
  1629  	HAVE_UINT32_T                         = 1
  1630  	HAVE_UINT64_T                         = 1
  1631  	HAVE_UINT8_T                          = 1
  1632  	HAVE_UINTPTR_T                        = 1
  1633  	HAVE_UNISTD_H                         = 1
  1634  	HAVE_UTIME                            = 1
  1635  	INITFLAG_AlterAdd                     = 0x0003
  1636  	INITFLAG_AlterDrop                    = 0x0002
  1637  	INITFLAG_AlterMask                    = 0x0003
  1638  	INITFLAG_AlterRename                  = 0x0001
  1639  	INLINEFUNC_affinity                   = 4
  1640  	INLINEFUNC_coalesce                   = 0
  1641  	INLINEFUNC_expr_compare               = 3
  1642  	INLINEFUNC_expr_implies_expr          = 2
  1643  	INLINEFUNC_iif                        = 5
  1644  	INLINEFUNC_implies_nonnull_row        = 1
  1645  	INLINEFUNC_sqlite_offset              = 6
  1646  	INLINEFUNC_unlikely                   = 99
  1647  	INT16_MAX                             = 32767
  1648  	INT16_MIN                             = -32768
  1649  	INT32_MAX                             = 2147483647
  1650  	INT32_MIN                             = -2147483648
  1651  	INT64_MAX                             = 9223372036854775807
  1652  	INT64_MIN                             = -9223372036854775808
  1653  	INT8_MAX                              = 127
  1654  	INT8_MIN                              = -128
  1655  	INTMAX_MAX                            = 9223372036854775807
  1656  	INTMAX_MIN                            = -9223372036854775808
  1657  	INTPTR_MAX                            = 9223372036854775807
  1658  	INTPTR_MIN                            = -9223372036854775808
  1659  	INT_FAST16_MAX                        = 9223372036854775807
  1660  	INT_FAST16_MIN                        = -9223372036854775808
  1661  	INT_FAST32_MAX                        = 9223372036854775807
  1662  	INT_FAST32_MIN                        = -9223372036854775808
  1663  	INT_FAST64_MAX                        = 9223372036854775807
  1664  	INT_FAST64_MIN                        = -9223372036854775808
  1665  	INT_FAST8_MAX                         = 127
  1666  	INT_FAST8_MIN                         = -128
  1667  	INT_LEAST16_MAX                       = 32767
  1668  	INT_LEAST16_MIN                       = -32768
  1669  	INT_LEAST32_MAX                       = 2147483647
  1670  	INT_LEAST32_MIN                       = -2147483648
  1671  	INT_LEAST64_MAX                       = 9223372036854775807
  1672  	INT_LEAST64_MIN                       = -9223372036854775808
  1673  	INT_LEAST8_MAX                        = 127
  1674  	INT_LEAST8_MIN                        = -128
  1675  	IN_INDEX_EPH                          = 2
  1676  	IN_INDEX_INDEX_ASC                    = 3
  1677  	IN_INDEX_INDEX_DESC                   = 4
  1678  	IN_INDEX_LOOP                         = 0x0004
  1679  	IN_INDEX_MEMBERSHIP                   = 0x0002
  1680  	IN_INDEX_NOOP                         = 5
  1681  	IN_INDEX_NOOP_OK                      = 0x0001
  1682  	IN_INDEX_ROWID                        = 1
  1683  	JT_CROSS                              = 0x02
  1684  	JT_ERROR                              = 0x80
  1685  	JT_INNER                              = 0x01
  1686  	JT_LEFT                               = 0x08
  1687  	JT_LTORJ                              = 0x40
  1688  	JT_NATURAL                            = 0x04
  1689  	JT_OUTER                              = 0x20
  1690  	JT_RIGHT                              = 0x10
  1691  	KEYINFO_ORDER_BIGNULL                 = 0x02
  1692  	KEYINFO_ORDER_DESC                    = 0x01
  1693  	LEGACY_SCHEMA_TABLE                   = "sqlite_master"
  1694  	LEGACY_TEMP_SCHEMA_TABLE              = "sqlite_temp_master"
  1695  	LOCATE_NOERR                          = 0x02
  1696  	LOCATE_VIEW                           = 0x01
  1697  	LOOKASIDE_SMALL                       = 128
  1698  	LT_OBJDIR                             = ".libs/"
  1699  	M10d_Any                              = 1
  1700  	M10d_No                               = 2
  1701  	M10d_Yes                              = 0
  1702  	MEMTYPE_HEAP                          = 0x01
  1703  	MEMTYPE_LOOKASIDE                     = 0x02
  1704  	MEMTYPE_PCACHE                        = 0x04
  1705  	MSVC_VERSION                          = 0
  1706  	NC_AllowAgg                           = 0x000001
  1707  	NC_AllowWin                           = 0x004000
  1708  	NC_Complex                            = 0x002000
  1709  	NC_FromDDL                            = 0x040000
  1710  	NC_GenCol                             = 0x000008
  1711  	NC_HasAgg                             = 0x000010
  1712  	NC_HasWin                             = 0x008000
  1713  	NC_IdxExpr                            = 0x000020
  1714  	NC_InAggFunc                          = 0x020000
  1715  	NC_IsCheck                            = 0x000004
  1716  	NC_IsDDL                              = 0x010000
  1717  	NC_MinMaxAgg                          = 0x001000
  1718  	NC_NoSelect                           = 0x080000
  1719  	NC_OrderAgg                           = 0x8000000
  1720  	NC_PartIdx                            = 0x000002
  1721  	NC_SelfRef                            = 0x00002e
  1722  	NC_UAggInfo                           = 0x000100
  1723  	NC_UBaseReg                           = 0x000400
  1724  	NC_UEList                             = 0x000080
  1725  	NC_UUpsert                            = 0x000200
  1726  	NC_VarSelect                          = 0x000040
  1727  	NO_LOCK                               = 0
  1728  	OE_Abort                              = 2
  1729  	OE_Cascade                            = 10
  1730  	OE_Default                            = 11
  1731  	OE_Fail                               = 3
  1732  	OE_Ignore                             = 4
  1733  	OE_None                               = 0
  1734  	OE_Replace                            = 5
  1735  	OE_Restrict                           = 7
  1736  	OE_Rollback                           = 1
  1737  	OE_SetDflt                            = 9
  1738  	OE_SetNull                            = 8
  1739  	OE_Update                             = 6
  1740  	OMIT_TEMPDB                           = 0
  1741  	ONEPASS_MULTI                         = 2
  1742  	ONEPASS_OFF                           = 0
  1743  	ONEPASS_SINGLE                        = 1
  1744  	OPFLAG_APPEND                         = 0x08
  1745  	OPFLAG_AUXDELETE                      = 0x04
  1746  	OPFLAG_BULKCSR                        = 0x01
  1747  	OPFLAG_EPHEM                          = 0x01
  1748  	OPFLAG_FORDELETE                      = 0x08
  1749  	OPFLAG_ISNOOP                         = 0x40
  1750  	OPFLAG_ISUPDATE                       = 0x04
  1751  	OPFLAG_LASTROWID                      = 0x20
  1752  	OPFLAG_LENGTHARG                      = 0x40
  1753  	OPFLAG_NCHANGE                        = 0x01
  1754  	OPFLAG_NOCHNG                         = 0x01
  1755  	OPFLAG_NOCHNG_MAGIC                   = 0x6d
  1756  	OPFLAG_P2ISREG                        = 0x10
  1757  	OPFLAG_PERMUTE                        = 0x01
  1758  	OPFLAG_PREFORMAT                      = 0x80
  1759  	OPFLAG_SAVEPOSITION                   = 0x02
  1760  	OPFLAG_SEEKEQ                         = 0x02
  1761  	OPFLAG_TYPEOFARG                      = 0x80
  1762  	OPFLAG_USESEEKRESULT                  = 0x10
  1763  	OPFLG_IN1                             = 0x02
  1764  	OPFLG_IN2                             = 0x04
  1765  	OPFLG_IN3                             = 0x08
  1766  	OPFLG_JUMP                            = 0x01
  1767  	OPFLG_OUT2                            = 0x10
  1768  	OPFLG_OUT3                            = 0x20
  1769  	OP_Abortable                          = 186
  1770  	OP_Add                                = 106
  1771  	OP_AddImm                             = 86
  1772  	OP_Affinity                           = 96
  1773  	OP_AggFinal                           = 165
  1774  	OP_AggInverse                         = 161
  1775  	OP_AggStep                            = 162
  1776  	OP_AggStep1                           = 163
  1777  	OP_AggValue                           = 164
  1778  	OP_And                                = 44
  1779  	OP_AutoCommit                         = 1
  1780  	OP_BeginSubrtn                        = 74
  1781  	OP_BitAnd                             = 102
  1782  	OP_BitNot                             = 114
  1783  	OP_BitOr                              = 103
  1784  	OP_Blob                               = 77
  1785  	OP_Cast                               = 88
  1786  	OP_Checkpoint                         = 3
  1787  	OP_Clear                              = 145
  1788  	OP_Close                              = 122
  1789  	OP_ClrSubtype                         = 179
  1790  	OP_CollSeq                            = 85
  1791  	OP_Column                             = 94
  1792  	OP_ColumnsUsed                        = 123
  1793  	OP_Compare                            = 90
  1794  	OP_Concat                             = 111
  1795  	OP_Copy                               = 80
  1796  	OP_Count                              = 98
  1797  	OP_CreateBtree                        = 147
  1798  	OP_CursorHint                         = 182
  1799  	OP_CursorLock                         = 167
  1800  	OP_CursorUnlock                       = 168
  1801  	OP_DecrJumpZero                       = 60
  1802  	OP_DeferredSeek                       = 141
  1803  	OP_Delete                             = 130
  1804  	OP_Destroy                            = 144
  1805  	OP_Divide                             = 109
  1806  	OP_DropIndex                          = 152
  1807  	OP_DropTable                          = 151
  1808  	OP_DropTrigger                        = 154
  1809  	OP_ElseEq                             = 58
  1810  	OP_EndCoroutine                       = 68
  1811  	OP_Eq                                 = 53
  1812  	OP_Expire                             = 166
  1813  	OP_Explain                            = 185
  1814  	OP_Filter                             = 63
  1815  	OP_FilterAdd                          = 180
  1816  	OP_FinishSeek                         = 143
  1817  	OP_FkCheck                            = 83
  1818  	OP_FkCounter                          = 158
  1819  	OP_FkIfZero                           = 48
  1820  	OP_Found                              = 28
  1821  	OP_Function                           = 66
  1822  	OP_Ge                                 = 57
  1823  	OP_Gosub                              = 9
  1824  	OP_Goto                               = 8
  1825  	OP_Gt                                 = 54
  1826  	OP_Halt                               = 70
  1827  	OP_HaltIfNull                         = 69
  1828  	OP_IdxDelete                          = 140
  1829  	OP_IdxGE                              = 42
  1830  	OP_IdxGT                              = 40
  1831  	OP_IdxInsert                          = 138
  1832  	OP_IdxLE                              = 39
  1833  	OP_IdxLT                              = 41
  1834  	OP_IdxRowid                           = 142
  1835  	OP_If                                 = 15
  1836  	OP_IfNoHope                           = 25
  1837  	OP_IfNot                              = 16
  1838  	OP_IfNotOpen                          = 24
  1839  	OP_IfNotZero                          = 59
  1840  	OP_IfNullRow                          = 18
  1841  	OP_IfPos                              = 49
  1842  	OP_IfSmaller                          = 32
  1843  	OP_IncrVacuum                         = 61
  1844  	OP_Init                               = 64
  1845  	OP_InitCoroutine                      = 10
  1846  	OP_Insert                             = 128
  1847  	OP_Int64                              = 72
  1848  	OP_IntCopy                            = 82
  1849  	OP_Integer                            = 71
  1850  	OP_IntegrityCk                        = 155
  1851  	OP_IsNull                             = 50
  1852  	OP_IsNullOrType                       = 17
  1853  	OP_IsTrue                             = 91
  1854  	OP_JournalMode                        = 4
  1855  	OP_Jump                               = 13
  1856  	OP_Last                               = 31
  1857  	OP_Le                                 = 55
  1858  	OP_LoadAnalysis                       = 150
  1859  	OP_Lt                                 = 56
  1860  	OP_MakeRecord                         = 97
  1861  	OP_MaxPgcnt                           = 178
  1862  	OP_MemMax                             = 159
  1863  	OP_Move                               = 79
  1864  	OP_Multiply                           = 108
  1865  	OP_MustBeInt                          = 12
  1866  	OP_Ne                                 = 52
  1867  	OP_NewRowid                           = 127
  1868  	OP_Next                               = 38
  1869  	OP_NoConflict                         = 26
  1870  	OP_Noop                               = 184
  1871  	OP_Not                                = 19
  1872  	OP_NotExists                          = 30
  1873  	OP_NotFound                           = 27
  1874  	OP_NotNull                            = 51
  1875  	OP_Null                               = 75
  1876  	OP_NullRow                            = 136
  1877  	OP_Offset                             = 93
  1878  	OP_OffsetLimit                        = 160
  1879  	OP_Once                               = 14
  1880  	OP_OpenAutoindex                      = 116
  1881  	OP_OpenDup                            = 115
  1882  	OP_OpenEphemeral                      = 118
  1883  	OP_OpenPseudo                         = 121
  1884  	OP_OpenRead                           = 112
  1885  	OP_OpenWrite                          = 113
  1886  	OP_Or                                 = 43
  1887  	OP_Pagecount                          = 177
  1888  	OP_Param                              = 157
  1889  	OP_ParseSchema                        = 149
  1890  	OP_Permutation                        = 89
  1891  	OP_Prev                               = 37
  1892  	OP_Program                            = 47
  1893  	OP_PureFunc                           = 65
  1894  	OP_ReadCookie                         = 99
  1895  	OP_Real                               = 153
  1896  	OP_RealAffinity                       = 87
  1897  	OP_ReleaseReg                         = 183
  1898  	OP_Remainder                          = 110
  1899  	OP_ReopenIdx                          = 101
  1900  	OP_ResetCount                         = 131
  1901  	OP_ResetSorter                        = 146
  1902  	OP_ResultRow                          = 84
  1903  	OP_Return                             = 67
  1904  	OP_Rewind                             = 35
  1905  	OP_RowCell                            = 129
  1906  	OP_RowData                            = 134
  1907  	OP_RowSetAdd                          = 156
  1908  	OP_RowSetRead                         = 45
  1909  	OP_RowSetTest                         = 46
  1910  	OP_Rowid                              = 135
  1911  	OP_SCopy                              = 81
  1912  	OP_Savepoint                          = 0
  1913  	OP_SeekEnd                            = 137
  1914  	OP_SeekGE                             = 22
  1915  	OP_SeekGT                             = 23
  1916  	OP_SeekHit                            = 125
  1917  	OP_SeekLE                             = 21
  1918  	OP_SeekLT                             = 20
  1919  	OP_SeekRowid                          = 29
  1920  	OP_SeekScan                           = 124
  1921  	OP_Sequence                           = 126
  1922  	OP_SequenceTest                       = 120
  1923  	OP_SetCookie                          = 100
  1924  	OP_ShiftLeft                          = 104
  1925  	OP_ShiftRight                         = 105
  1926  	OP_SoftNull                           = 76
  1927  	OP_Sort                               = 34
  1928  	OP_SorterCompare                      = 132
  1929  	OP_SorterData                         = 133
  1930  	OP_SorterInsert                       = 139
  1931  	OP_SorterNext                         = 36
  1932  	OP_SorterOpen                         = 119
  1933  	OP_SorterSort                         = 33
  1934  	OP_SqlExec                            = 148
  1935  	OP_String                             = 73
  1936  	OP_String8                            = 117
  1937  	OP_Subtract                           = 107
  1938  	OP_TableLock                          = 169
  1939  	OP_Trace                              = 181
  1940  	OP_Transaction                        = 2
  1941  	OP_TypeCheck                          = 95
  1942  	OP_VBegin                             = 170
  1943  	OP_VColumn                            = 175
  1944  	OP_VCreate                            = 171
  1945  	OP_VDestroy                           = 172
  1946  	OP_VFilter                            = 6
  1947  	OP_VInitIn                            = 174
  1948  	OP_VNext                              = 62
  1949  	OP_VOpen                              = 173
  1950  	OP_VRename                            = 176
  1951  	OP_VUpdate                            = 7
  1952  	OP_Vacuum                             = 5
  1953  	OP_Variable                           = 78
  1954  	OP_Yield                              = 11
  1955  	OP_ZeroOrNull                         = 92
  1956  	OS_VXWORKS                            = 0
  1957  	P4_COLLSEQ                            = -2
  1958  	P4_DYNAMIC                            = -6
  1959  	P4_EXPR                               = -9
  1960  	P4_FREE_IF_LE                         = -6
  1961  	P4_FUNCCTX                            = -15
  1962  	P4_FUNCDEF                            = -7
  1963  	P4_INT32                              = -3
  1964  	P4_INT64                              = -13
  1965  	P4_INTARRAY                           = -14
  1966  	P4_KEYINFO                            = -8
  1967  	P4_MEM                                = -10
  1968  	P4_NOTUSED                            = 0
  1969  	P4_REAL                               = -12
  1970  	P4_STATIC                             = -1
  1971  	P4_SUBPROGRAM                         = -4
  1972  	P4_TABLE                              = -5
  1973  	P4_TRANSIENT                          = 0
  1974  	P4_VTAB                               = -11
  1975  	P5_ConstraintCheck                    = 3
  1976  	P5_ConstraintFK                       = 4
  1977  	P5_ConstraintNotNull                  = 1
  1978  	P5_ConstraintUnique                   = 2
  1979  	PACKAGE_BUGREPORT                     = ""
  1980  	PACKAGE_NAME                          = "sqlite"
  1981  	PACKAGE_STRING                        = "sqlite 3.39.3"
  1982  	PACKAGE_TARNAME                       = "sqlite"
  1983  	PACKAGE_VERSION                       = "3.39.3"
  1984  	PAGER_CACHESPILL                      = 0x20
  1985  	PAGER_CKPT_FULLFSYNC                  = 0x10
  1986  	PAGER_FLAGS_MASK                      = 0x38
  1987  	PAGER_FULLFSYNC                       = 0x08
  1988  	PAGER_GET_NOCONTENT                   = 0x01
  1989  	PAGER_GET_READONLY                    = 0x02
  1990  	PAGER_JOURNALMODE_DELETE              = 0
  1991  	PAGER_JOURNALMODE_MEMORY              = 4
  1992  	PAGER_JOURNALMODE_OFF                 = 2
  1993  	PAGER_JOURNALMODE_PERSIST             = 1
  1994  	PAGER_JOURNALMODE_QUERY               = -1
  1995  	PAGER_JOURNALMODE_TRUNCATE            = 3
  1996  	PAGER_JOURNALMODE_WAL                 = 5
  1997  	PAGER_LOCKINGMODE_EXCLUSIVE           = 1
  1998  	PAGER_LOCKINGMODE_NORMAL              = 0
  1999  	PAGER_LOCKINGMODE_QUERY               = -1
  2000  	PAGER_MEMORY                          = 0x0002
  2001  	PAGER_OMIT_JOURNAL                    = 0x0001
  2002  	PAGER_SYNCHRONOUS_EXTRA               = 0x04
  2003  	PAGER_SYNCHRONOUS_FULL                = 0x03
  2004  	PAGER_SYNCHRONOUS_MASK                = 0x07
  2005  	PAGER_SYNCHRONOUS_NORMAL              = 0x02
  2006  	PAGER_SYNCHRONOUS_OFF                 = 0x01
  2007  	PARSE_MODE_DECLARE_VTAB               = 1
  2008  	PARSE_MODE_NORMAL                     = 0
  2009  	PARSE_MODE_RENAME                     = 2
  2010  	PARSE_MODE_UNMAP                      = 3
  2011  	PENDING_LOCK                          = 3
  2012  	PGHDR_CLEAN                           = 0x001
  2013  	PGHDR_DIRTY                           = 0x002
  2014  	PGHDR_DONT_WRITE                      = 0x010
  2015  	PGHDR_MMAP                            = 0x020
  2016  	PGHDR_NEED_SYNC                       = 0x008
  2017  	PGHDR_WAL_APPEND                      = 0x040
  2018  	PGHDR_WRITEABLE                       = 0x004
  2019  	PREFERRED_SCHEMA_TABLE                = "sqlite_schema"
  2020  	PREFERRED_TEMP_SCHEMA_TABLE           = "sqlite_temp_schema"
  2021  	PRIX16                                = "X"
  2022  	PRIX32                                = "X"
  2023  	PRIX8                                 = "X"
  2024  	PRIXFAST8                             = "X"
  2025  	PRIXLEAST16                           = "X"
  2026  	PRIXLEAST32                           = "X"
  2027  	PRIXLEAST8                            = "X"
  2028  	PRId16                                = "d"
  2029  	PRId32                                = "d"
  2030  	PRId8                                 = "d"
  2031  	PRIdFAST8                             = "d"
  2032  	PRIdLEAST16                           = "d"
  2033  	PRIdLEAST32                           = "d"
  2034  	PRIdLEAST8                            = "d"
  2035  	PRIi16                                = "i"
  2036  	PRIi32                                = "i"
  2037  	PRIi8                                 = "i"
  2038  	PRIiFAST8                             = "i"
  2039  	PRIiLEAST16                           = "i"
  2040  	PRIiLEAST32                           = "i"
  2041  	PRIiLEAST8                            = "i"
  2042  	PRIo16                                = "o"
  2043  	PRIo32                                = "o"
  2044  	PRIo8                                 = "o"
  2045  	PRIoFAST8                             = "o"
  2046  	PRIoLEAST16                           = "o"
  2047  	PRIoLEAST32                           = "o"
  2048  	PRIoLEAST8                            = "o"
  2049  	PRIu16                                = "u"
  2050  	PRIu32                                = "u"
  2051  	PRIu8                                 = "u"
  2052  	PRIuFAST8                             = "u"
  2053  	PRIuLEAST16                           = "u"
  2054  	PRIuLEAST32                           = "u"
  2055  	PRIuLEAST8                            = "u"
  2056  	PRIx16                                = "x"
  2057  	PRIx32                                = "x"
  2058  	PRIx8                                 = "x"
  2059  	PRIxFAST8                             = "x"
  2060  	PRIxLEAST16                           = "x"
  2061  	PRIxLEAST32                           = "x"
  2062  	PRIxLEAST8                            = "x"
  2063  	PTRDIFF_MAX                           = 9223372036854775807
  2064  	PTRDIFF_MIN                           = -9223372036854775808
  2065  	RESERVED_LOCK                         = 2
  2066  	SAVEPOINT_BEGIN                       = 0
  2067  	SAVEPOINT_RELEASE                     = 1
  2068  	SAVEPOINT_ROLLBACK                    = 2
  2069  	SCHEMA_ROOT                           = 1
  2070  	SCNd16                                = "hd"
  2071  	SCNd32                                = "d"
  2072  	SCNd8                                 = "hhd"
  2073  	SCNdFAST8                             = "hhd"
  2074  	SCNdLEAST16                           = "hd"
  2075  	SCNdLEAST32                           = "d"
  2076  	SCNdLEAST8                            = "hhd"
  2077  	SCNi16                                = "hi"
  2078  	SCNi32                                = "i"
  2079  	SCNi8                                 = "hhi"
  2080  	SCNiFAST8                             = "hhi"
  2081  	SCNiLEAST16                           = "hi"
  2082  	SCNiLEAST32                           = "i"
  2083  	SCNiLEAST8                            = "hhi"
  2084  	SCNo16                                = "ho"
  2085  	SCNo32                                = "o"
  2086  	SCNo8                                 = "hho"
  2087  	SCNoFAST8                             = "hho"
  2088  	SCNoLEAST16                           = "ho"
  2089  	SCNoLEAST32                           = "o"
  2090  	SCNoLEAST8                            = "hho"
  2091  	SCNu16                                = "hu"
  2092  	SCNu32                                = "u"
  2093  	SCNu8                                 = "hhu"
  2094  	SCNuFAST8                             = "hhu"
  2095  	SCNuLEAST16                           = "hu"
  2096  	SCNuLEAST32                           = "u"
  2097  	SCNuLEAST8                            = "hhu"
  2098  	SCNx16                                = "hx"
  2099  	SCNx32                                = "x"
  2100  	SCNx8                                 = "hhx"
  2101  	SCNxFAST8                             = "hhx"
  2102  	SCNxLEAST16                           = "hx"
  2103  	SCNxLEAST32                           = "x"
  2104  	SCNxLEAST8                            = "hhx"
  2105  	SF_Aggregate                          = 0x0000008
  2106  	SF_All                                = 0x0000002
  2107  	SF_ComplexResult                      = 0x0040000
  2108  	SF_Compound                           = 0x0000100
  2109  	SF_Converted                          = 0x0010000
  2110  	SF_CopyCte                            = 0x4000000
  2111  	SF_Distinct                           = 0x0000001
  2112  	SF_Expanded                           = 0x0000040
  2113  	SF_FixedLimit                         = 0x0004000
  2114  	SF_HasAgg                             = 0x0000010
  2115  	SF_HasTypeInfo                        = 0x0000080
  2116  	SF_IncludeHidden                      = 0x0020000
  2117  	SF_MaybeConvert                       = 0x0008000
  2118  	SF_MinMaxAgg                          = 0x0001000
  2119  	SF_MultiPart                          = 0x2000000
  2120  	SF_MultiValue                         = 0x0000400
  2121  	SF_NestedFrom                         = 0x0000800
  2122  	SF_NoopOrderBy                        = 0x0400000
  2123  	SF_OrderByReqd                        = 0x8000000
  2124  	SF_PushDown                           = 0x1000000
  2125  	SF_Recursive                          = 0x0002000
  2126  	SF_Resolved                           = 0x0000004
  2127  	SF_UFSrcCheck                         = 0x0800000
  2128  	SF_UsesEphemeral                      = 0x0000020
  2129  	SF_Values                             = 0x0000200
  2130  	SF_View                               = 0x0200000
  2131  	SF_WhereBegin                         = 0x0080000
  2132  	SF_WinRewrite                         = 0x0100000
  2133  	SHARED_LOCK                           = 1
  2134  	SHARED_SIZE                           = 510
  2135  	SIG_ATOMIC_MAX                        = 2147483647
  2136  	SIG_ATOMIC_MIN                        = -2147483648
  2137  	SIZE_MAX                              = 18446744073709551615
  2138  	SQLITECONFIG_H                        = 1
  2139  	SQLITEINT_H                           = 0
  2140  	SQLITE_AFF_BLOB                       = 0x41
  2141  	SQLITE_AFF_INTEGER                    = 0x44
  2142  	SQLITE_AFF_MASK                       = 0x47
  2143  	SQLITE_AFF_NONE                       = 0x40
  2144  	SQLITE_AFF_NUMERIC                    = 0x43
  2145  	SQLITE_AFF_REAL                       = 0x45
  2146  	SQLITE_AFF_TEXT                       = 0x42
  2147  	SQLITE_ASCII                          = 1
  2148  	SQLITE_ATOMIC_INTRINSICS              = 1
  2149  	SQLITE_AllOpts                        = 0xffffffff
  2150  	SQLITE_AutoIndex                      = 0x00008000
  2151  	SQLITE_BTREE_H                        = 0
  2152  	SQLITE_BYTEORDER                      = 0
  2153  	SQLITE_BalancedMerge                  = 0x00200000
  2154  	SQLITE_BloomFilter                    = 0x00080000
  2155  	SQLITE_BloomPulldown                  = 0x00100000
  2156  	SQLITE_CacheSpill                     = 0x00000020
  2157  	SQLITE_CellSizeCk                     = 0x00200000
  2158  	SQLITE_CkptFullFSync                  = 0x00000010
  2159  	SQLITE_CountOfView                    = 0x00000200
  2160  	SQLITE_CoverIdxScan                   = 0x00000020
  2161  	SQLITE_CursorHints                    = 0x00000400
  2162  	SQLITE_DEFAULT_AUTOVACUUM             = 0
  2163  	SQLITE_DEFAULT_CACHE_SIZE             = -2000
  2164  	SQLITE_DEFAULT_FILE_FORMAT            = 4
  2165  	SQLITE_DEFAULT_JOURNAL_SIZE_LIMIT     = -1
  2166  	SQLITE_DEFAULT_MMAP_SIZE              = 0
  2167  	SQLITE_DEFAULT_PCACHE_INITSZ          = 20
  2168  	SQLITE_DEFAULT_RECURSIVE_TRIGGERS     = 0
  2169  	SQLITE_DEFAULT_SECTOR_SIZE            = 4096
  2170  	SQLITE_DEFAULT_SORTERREF_SIZE         = 0x7fffffff
  2171  	SQLITE_DEFAULT_SYNCHRONOUS            = 2
  2172  	SQLITE_DEFAULT_WAL_AUTOCHECKPOINT     = 1000
  2173  	SQLITE_DEFAULT_WAL_SYNCHRONOUS        = 2
  2174  	SQLITE_DEFAULT_WORKER_THREADS         = 0
  2175  	SQLITE_Defensive                      = 0x10000000
  2176  	SQLITE_DeferFKs                       = 0x00080000
  2177  	SQLITE_DistinctOpt                    = 0x00000010
  2178  	SQLITE_DqsDDL                         = 0x20000000
  2179  	SQLITE_DqsDML                         = 0x40000000
  2180  	SQLITE_ECEL_DUP                       = 0x01
  2181  	SQLITE_ECEL_FACTOR                    = 0x02
  2182  	SQLITE_ECEL_OMITREF                   = 0x08
  2183  	SQLITE_ECEL_REF                       = 0x04
  2184  	SQLITE_EnableQPSG                     = 0x00800000
  2185  	SQLITE_EnableTrigger                  = 0x00040000
  2186  	SQLITE_EnableView                     = 0x80000000
  2187  	SQLITE_FAULTINJECTOR_COUNT            = 1
  2188  	SQLITE_FAULTINJECTOR_MALLOC           = 0
  2189  	SQLITE_FCNTL_DB_UNCHANGED             = 0xca093fa0
  2190  	SQLITE_FUNC_ANYORDER                  = 0x08000000
  2191  	SQLITE_FUNC_BUILTIN                   = 0x00800000
  2192  	SQLITE_FUNC_CASE                      = 0x0008
  2193  	SQLITE_FUNC_CONSTANT                  = 0x0800
  2194  	SQLITE_FUNC_COUNT                     = 0x0100
  2195  	SQLITE_FUNC_DIRECT                    = 0x00080000
  2196  	SQLITE_FUNC_ENCMASK                   = 0x0003
  2197  	SQLITE_FUNC_EPHEM                     = 0x0010
  2198  	SQLITE_FUNC_HASH_SZ                   = 23
  2199  	SQLITE_FUNC_INLINE                    = 0x00400000
  2200  	SQLITE_FUNC_INTERNAL                  = 0x00040000
  2201  	SQLITE_FUNC_LENGTH                    = 0x0040
  2202  	SQLITE_FUNC_LIKE                      = 0x0004
  2203  	SQLITE_FUNC_MINMAX                    = 0x1000
  2204  	SQLITE_FUNC_NEEDCOLL                  = 0x0020
  2205  	SQLITE_FUNC_SLOCHNG                   = 0x2000
  2206  	SQLITE_FUNC_SUBTYPE                   = 0x00100000
  2207  	SQLITE_FUNC_TEST                      = 0x4000
  2208  	SQLITE_FUNC_TYPEOF                    = 0x0080
  2209  	SQLITE_FUNC_UNLIKELY                  = 0x0400
  2210  	SQLITE_FUNC_UNSAFE                    = 0x00200000
  2211  	SQLITE_FUNC_WINDOW                    = 0x00010000
  2212  	SQLITE_FactorOutConst                 = 0x00000008
  2213  	SQLITE_FlttnUnionAll                  = 0x00800000
  2214  	SQLITE_ForeignKeys                    = 0x00004000
  2215  	SQLITE_Fts3Tokenizer                  = 0x00400000
  2216  	SQLITE_FullColNames                   = 0x00000004
  2217  	SQLITE_FullFSync                      = 0x00000008
  2218  	SQLITE_GroupByOrder                   = 0x00000004
  2219  	SQLITE_HASH_H                         = 0
  2220  	SQLITE_HAVE_C99_MATH_FUNCS            = 1
  2221  	SQLITE_HAVE_OS_TRACE                  = 0
  2222  	SQLITE_IDXTYPE_APPDEF                 = 0
  2223  	SQLITE_IDXTYPE_IPK                    = 3
  2224  	SQLITE_IDXTYPE_PRIMARYKEY             = 2
  2225  	SQLITE_IDXTYPE_UNIQUE                 = 1
  2226  	SQLITE_IOERR_NOMEM_BKPT               = 3082
  2227  	SQLITE_IgnoreChecks                   = 0x00000200
  2228  	SQLITE_JUMPIFNULL                     = 0x10
  2229  	SQLITE_LegacyAlter                    = 0x04000000
  2230  	SQLITE_LegacyFileFmt                  = 0x00000002
  2231  	SQLITE_LoadExtFunc                    = 0x00020000
  2232  	SQLITE_LoadExtension                  = 0x00010000
  2233  	SQLITE_MALLOC_SOFT_LIMIT              = 1024
  2234  	SQLITE_MAX_ATTACHED                   = 10
  2235  	SQLITE_MAX_COLUMN                     = 2000
  2236  	SQLITE_MAX_COMPOUND_SELECT            = 500
  2237  	SQLITE_MAX_DB                         = 12
  2238  	SQLITE_MAX_DEFAULT_PAGE_SIZE          = 8192
  2239  	SQLITE_MAX_EXPR_DEPTH                 = 1000
  2240  	SQLITE_MAX_FILE_FORMAT                = 4
  2241  	SQLITE_MAX_FUNCTION_ARG               = 127
  2242  	SQLITE_MAX_LENGTH                     = 1000000000
  2243  	SQLITE_MAX_LIKE_PATTERN_LENGTH        = 50000
  2244  	SQLITE_MAX_MMAP_SIZE                  = 0x7fff0000
  2245  	SQLITE_MAX_PAGE_COUNT                 = 1073741823
  2246  	SQLITE_MAX_PAGE_SIZE                  = 65536
  2247  	SQLITE_MAX_PATHLEN                    = 4096
  2248  	SQLITE_MAX_SQL_LENGTH                 = 1000000000
  2249  	SQLITE_MAX_SYMLINK                    = 200
  2250  	SQLITE_MAX_TRIGGER_DEPTH              = 1000
  2251  	SQLITE_MAX_VARIABLE_NUMBER            = 32766
  2252  	SQLITE_MAX_VDBE_OP                    = 250000000
  2253  	SQLITE_MAX_WORKER_THREADS             = 8
  2254  	SQLITE_MSVC_H                         = 0
  2255  	SQLITE_MUTEX_STATIC_TEMPDIR           = 11
  2256  	SQLITE_MX_JUMP_OPCODE                 = 64
  2257  	SQLITE_MinMaxOpt                      = 0x00010000
  2258  	SQLITE_NEED_ERR_NAME                  = 0
  2259  	SQLITE_NOMEM_BKPT                     = 7
  2260  	SQLITE_NOTNULL                        = 0x90
  2261  	SQLITE_NTUNE                          = 6
  2262  	SQLITE_NULLEQ                         = 0x80
  2263  	SQLITE_N_BTREE_META                   = 16
  2264  	SQLITE_N_LIMIT                        = 12
  2265  	SQLITE_N_STDTYPE                      = 6
  2266  	SQLITE_NoCkptOnClose                  = 0x00000800
  2267  	SQLITE_NoSchemaError                  = 0x08000000
  2268  	SQLITE_NullCallback                   = 0x00000100
  2269  	SQLITE_OS_OTHER                       = 0
  2270  	SQLITE_OS_SETUP_H                     = 0
  2271  	SQLITE_OS_UNIX                        = 1
  2272  	SQLITE_OS_WIN                         = 0
  2273  	SQLITE_OmitNoopJoin                   = 0x00000100
  2274  	SQLITE_OmitOrderBy                    = 0x00040000
  2275  	SQLITE_OrderByIdxJoin                 = 0x00000040
  2276  	SQLITE_PAGER_H                        = 0
  2277  	SQLITE_POWERSAFE_OVERWRITE            = 1
  2278  	SQLITE_PREPARE_MASK                   = 0x0f
  2279  	SQLITE_PREPARE_SAVESQL                = 0x80
  2280  	SQLITE_PRINTF_INTERNAL                = 0x01
  2281  	SQLITE_PRINTF_MALLOCED                = 0x04
  2282  	SQLITE_PRINTF_SQLFUNC                 = 0x02
  2283  	SQLITE_PTRSIZE                        = 8
  2284  	SQLITE_PropagateConst                 = 0x00008000
  2285  	SQLITE_PushDown                       = 0x00001000
  2286  	SQLITE_QueryFlattener                 = 0x00000001
  2287  	SQLITE_QueryOnly                      = 0x00100000
  2288  	SQLITE_ReadUncommit                   = 0x00000400
  2289  	SQLITE_RecTriggers                    = 0x00002000
  2290  	SQLITE_ReleaseReg                     = 0x00400000
  2291  	SQLITE_ResetDatabase                  = 0x02000000
  2292  	SQLITE_ReverseOrder                   = 0x00001000
  2293  	SQLITE_SO_ASC                         = 0
  2294  	SQLITE_SO_DESC                        = 1
  2295  	SQLITE_SO_UNDEFINED                   = -1
  2296  	SQLITE_STATE_BUSY                     = 0x6d
  2297  	SQLITE_STATE_CLOSED                   = 0xce
  2298  	SQLITE_STATE_ERROR                    = 0xd5
  2299  	SQLITE_STATE_OPEN                     = 0x76
  2300  	SQLITE_STATE_SICK                     = 0xba
  2301  	SQLITE_STATE_ZOMBIE                   = 0xa7
  2302  	SQLITE_SYSTEM_MALLOC                  = 1
  2303  	SQLITE_SeekScan                       = 0x00020000
  2304  	SQLITE_ShortColNames                  = 0x00000040
  2305  	SQLITE_SimplifyJoin                   = 0x00002000
  2306  	SQLITE_SkipScan                       = 0x00004000
  2307  	SQLITE_Stat4                          = 0x00000800
  2308  	SQLITE_TEMP_FILE_PREFIX               = "etilqs_"
  2309  	SQLITE_TOKEN_KEYWORD                  = 0x2
  2310  	SQLITE_TOKEN_QUOTED                   = 0x1
  2311  	SQLITE_TRACE_LEGACY                   = 0x40
  2312  	SQLITE_TRACE_NONLEGACY_MASK           = 0x0f
  2313  	SQLITE_TRACE_XPROFILE                 = 0x80
  2314  	SQLITE_Transitive                     = 0x00000080
  2315  	SQLITE_TriggerEQP                     = 0x01000000
  2316  	SQLITE_TrustedSchema                  = 0x00000080
  2317  	SQLITE_VDBE_H                         = 0
  2318  	SQLITE_VTABRISK_High                  = 2
  2319  	SQLITE_VTABRISK_Low                   = 0
  2320  	SQLITE_VTABRISK_Normal                = 1
  2321  	SQLITE_WSD                            = 0
  2322  	SQLITE_WindowFunc                     = 0x00000002
  2323  	SQLITE_WriteSchema                    = 0x00000001
  2324  	SRT_Coroutine                         = 13
  2325  	SRT_Discard                           = 4
  2326  	SRT_DistFifo                          = 5
  2327  	SRT_DistQueue                         = 6
  2328  	SRT_EphemTab                          = 12
  2329  	SRT_Except                            = 2
  2330  	SRT_Exists                            = 3
  2331  	SRT_Fifo                              = 8
  2332  	SRT_Mem                               = 10
  2333  	SRT_Output                            = 9
  2334  	SRT_Queue                             = 7
  2335  	SRT_Set                               = 11
  2336  	SRT_Table                             = 14
  2337  	SRT_Union                             = 1
  2338  	SRT_Upfrom                            = 15
  2339  	STDC_HEADERS                          = 1
  2340  	TABTYP_NORM                           = 0
  2341  	TABTYP_VIEW                           = 2
  2342  	TABTYP_VTAB                           = 1
  2343  	TF_Autoincrement                      = 0x00000008
  2344  	TF_Ephemeral                          = 0x00004000
  2345  	TF_Eponymous                          = 0x00008000
  2346  	TF_HasGenerated                       = 0x00000060
  2347  	TF_HasHidden                          = 0x00000002
  2348  	TF_HasNotNull                         = 0x00000800
  2349  	TF_HasPrimaryKey                      = 0x00000004
  2350  	TF_HasStat1                           = 0x00000010
  2351  	TF_HasStat4                           = 0x00002000
  2352  	TF_HasStored                          = 0x00000040
  2353  	TF_HasVirtual                         = 0x00000020
  2354  	TF_NoVisibleRowid                     = 0x00000200
  2355  	TF_OOOHidden                          = 0x00000400
  2356  	TF_Readonly                           = 0x00000001
  2357  	TF_Shadow                             = 0x00001000
  2358  	TF_StatsUsed                          = 0x00000100
  2359  	TF_Strict                             = 0x00010000
  2360  	TF_WithoutRowid                       = 0x00000080
  2361  	TK_ABORT                              = 27
  2362  	TK_ACTION                             = 28
  2363  	TK_ADD                                = 163
  2364  	TK_AFTER                              = 29
  2365  	TK_AGG_COLUMN                         = 169
  2366  	TK_AGG_FUNCTION                       = 168
  2367  	TK_ALL                                = 135
  2368  	TK_ALTER                              = 162
  2369  	TK_ALWAYS                             = 96
  2370  	TK_ANALYZE                            = 30
  2371  	TK_AND                                = 44
  2372  	TK_ANY                                = 101
  2373  	TK_AS                                 = 24
  2374  	TK_ASC                                = 31
  2375  	TK_ASTERISK                           = 180
  2376  	TK_ATTACH                             = 32
  2377  	TK_AUTOINCR                           = 126
  2378  	TK_BEFORE                             = 33
  2379  	TK_BEGIN                              = 5
  2380  	TK_BETWEEN                            = 48
  2381  	TK_BY                                 = 34
  2382  	TK_CASCADE                            = 35
  2383  	TK_CASE                               = 157
  2384  	TK_CAST                               = 36
  2385  	TK_CHECK                              = 124
  2386  	TK_COLLATE                            = 113
  2387  	TK_COLUMN                             = 167
  2388  	TK_COLUMNKW                           = 60
  2389  	TK_COMMIT                             = 10
  2390  	TK_CONFLICT                           = 37
  2391  	TK_CONSTRAINT                         = 119
  2392  	TK_CREATE                             = 17
  2393  	TK_CTIME_KW                           = 100
  2394  	TK_CURRENT                            = 85
  2395  	TK_DATABASE                           = 38
  2396  	TK_DEFAULT                            = 120
  2397  	TK_DEFERRABLE                         = 131
  2398  	TK_DEFERRED                           = 7
  2399  	TK_DELETE                             = 128
  2400  	TK_DESC                               = 39
  2401  	TK_DETACH                             = 40
  2402  	TK_DISTINCT                           = 140
  2403  	TK_DO                                 = 61
  2404  	TK_DROP                               = 133
  2405  	TK_EACH                               = 41
  2406  	TK_ELSE                               = 160
  2407  	TK_END                                = 11
  2408  	TK_ESCAPE                             = 58
  2409  	TK_EXCEPT                             = 136
  2410  	TK_EXCLUDE                            = 91
  2411  	TK_EXCLUSIVE                          = 9
  2412  	TK_EXISTS                             = 20
  2413  	TK_EXPLAIN                            = 2
  2414  	TK_FAIL                               = 42
  2415  	TK_FILTER                             = 166
  2416  	TK_FIRST                              = 83
  2417  	TK_FOLLOWING                          = 86
  2418  	TK_FOR                                = 62
  2419  	TK_FOREIGN                            = 132
  2420  	TK_FROM                               = 142
  2421  	TK_FUNCTION                           = 172
  2422  	TK_GENERATED                          = 95
  2423  	TK_GROUP                              = 146
  2424  	TK_GROUPS                             = 92
  2425  	TK_HAVING                             = 147
  2426  	TK_IF                                 = 18
  2427  	TK_IF_NULL_ROW                        = 179
  2428  	TK_IGNORE                             = 63
  2429  	TK_IMMEDIATE                          = 8
  2430  	TK_IN                                 = 49
  2431  	TK_INDEX                              = 161
  2432  	TK_INDEXED                            = 116
  2433  	TK_INITIALLY                          = 64
  2434  	TK_INSERT                             = 127
  2435  	TK_INSTEAD                            = 65
  2436  	TK_INTERSECT                          = 137
  2437  	TK_INTO                               = 151
  2438  	TK_IS                                 = 45
  2439  	TK_ISNOT                              = 171
  2440  	TK_ISNULL                             = 50
  2441  	TK_JOIN                               = 143
  2442  	TK_JOIN_KW                            = 118
  2443  	TK_KEY                                = 67
  2444  	TK_LAST                               = 84
  2445  	TK_LIKE_KW                            = 47
  2446  	TK_LIMIT                              = 148
  2447  	TK_MATCH                              = 46
  2448  	TK_MATERIALIZED                       = 97
  2449  	TK_NO                                 = 66
  2450  	TK_NOT                                = 19
  2451  	TK_NOTHING                            = 152
  2452  	TK_NOTNULL                            = 51
  2453  	TK_NULL                               = 121
  2454  	TK_NULLS                              = 82
  2455  	TK_OF                                 = 68
  2456  	TK_OFFSET                             = 69
  2457  	TK_ON                                 = 115
  2458  	TK_OR                                 = 43
  2459  	TK_ORDER                              = 145
  2460  	TK_OTHERS                             = 93
  2461  	TK_OVER                               = 165
  2462  	TK_PARTITION                          = 87
  2463  	TK_PLAN                               = 4
  2464  	TK_PRAGMA                             = 70
  2465  	TK_PRECEDING                          = 88
  2466  	TK_PRIMARY                            = 122
  2467  	TK_PTR                                = 112
  2468  	TK_QUERY                              = 3
  2469  	TK_RAISE                              = 71
  2470  	TK_RANGE                              = 89
  2471  	TK_RECURSIVE                          = 72
  2472  	TK_REFERENCES                         = 125
  2473  	TK_REGISTER                           = 176
  2474  	TK_REINDEX                            = 98
  2475  	TK_RELEASE                            = 14
  2476  	TK_RENAME                             = 99
  2477  	TK_REPLACE                            = 73
  2478  	TK_RESTRICT                           = 74
  2479  	TK_RETURNING                          = 150
  2480  	TK_ROLLBACK                           = 12
  2481  	TK_ROW                                = 75
  2482  	TK_ROWS                               = 76
  2483  	TK_SAVEPOINT                          = 13
  2484  	TK_SELECT                             = 138
  2485  	TK_SELECT_COLUMN                      = 178
  2486  	TK_SET                                = 130
  2487  	TK_SPAN                               = 181
  2488  	TK_TABLE                              = 16
  2489  	TK_TEMP                               = 21
  2490  	TK_THEN                               = 159
  2491  	TK_TIES                               = 94
  2492  	TK_TO                                 = 15
  2493  	TK_TRANSACTION                        = 6
  2494  	TK_TRIGGER                            = 77
  2495  	TK_TRUEFALSE                          = 170
  2496  	TK_TRUTH                              = 175
  2497  	TK_UMINUS                             = 173
  2498  	TK_UNBOUNDED                          = 90
  2499  	TK_UNION                              = 134
  2500  	TK_UNIQUE                             = 123
  2501  	TK_UPDATE                             = 129
  2502  	TK_UPLUS                              = 174
  2503  	TK_USING                              = 144
  2504  	TK_VACUUM                             = 78
  2505  	TK_VALUES                             = 139
  2506  	TK_VECTOR                             = 177
  2507  	TK_VIEW                               = 79
  2508  	TK_VIRTUAL                            = 80
  2509  	TK_WHEN                               = 158
  2510  	TK_WHERE                              = 149
  2511  	TK_WINDOW                             = 164
  2512  	TK_WITH                               = 81
  2513  	TK_WITHOUT                            = 26
  2514  	TREETRACE_ENABLED                     = 0
  2515  	TRIGGER_AFTER                         = 2
  2516  	TRIGGER_BEFORE                        = 1
  2517  	UINT16_MAX                            = 65535
  2518  	UINT32_MAX                            = 4294967295
  2519  	UINT64_MAX                            = 18446744073709551615
  2520  	UINT8_MAX                             = 255
  2521  	UINTMAX_MAX                           = 18446744073709551615
  2522  	UINTPTR_MAX                           = 18446744073709551615
  2523  	UINT_FAST16_MAX                       = 18446744073709551615
  2524  	UINT_FAST32_MAX                       = 18446744073709551615
  2525  	UINT_FAST64_MAX                       = 18446744073709551615
  2526  	UINT_FAST8_MAX                        = 255
  2527  	UINT_LEAST16_MAX                      = 65535
  2528  	UINT_LEAST32_MAX                      = 4294967295
  2529  	UINT_LEAST64_MAX                      = 18446744073709551615
  2530  	UINT_LEAST8_MAX                       = 255
  2531  	WCHAR_MAX                             = 2147483647
  2532  	WCHAR_MIN                             = -2147483648
  2533  	WHERE_AGG_DISTINCT                    = 0x0400
  2534  	WHERE_DISTINCTBY                      = 0x0080
  2535  	WHERE_DISTINCT_NOOP                   = 0
  2536  	WHERE_DISTINCT_ORDERED                = 2
  2537  	WHERE_DISTINCT_UNIQUE                 = 1
  2538  	WHERE_DISTINCT_UNORDERED              = 3
  2539  	WHERE_DUPLICATES_OK                   = 0x0010
  2540  	WHERE_GROUPBY                         = 0x0040
  2541  	WHERE_ONEPASS_DESIRED                 = 0x0004
  2542  	WHERE_ONEPASS_MULTIROW                = 0x0008
  2543  	WHERE_ORDERBY_LIMIT                   = 0x0800
  2544  	WHERE_ORDERBY_MAX                     = 0x0002
  2545  	WHERE_ORDERBY_MIN                     = 0x0001
  2546  	WHERE_ORDERBY_NORMAL                  = 0x0000
  2547  	WHERE_OR_SUBCLAUSE                    = 0x0020
  2548  	WHERE_RIGHT_JOIN                      = 0x1000
  2549  	WHERE_SORTBYGROUP                     = 0x0200
  2550  	WHERE_USE_LIMIT                       = 0x4000
  2551  	WHERE_WANT_DISTINCT                   = 0x0100
  2552  	WINT_MAX                              = 4294967295
  2553  	WINT_MIN                              = 0
  2554  	WRC_Abort                             = 2
  2555  	WRC_Continue                          = 0
  2556  	WRC_Prune                             = 1
  2557  	XN_EXPR                               = -2
  2558  	XN_ROWID                              = -1
  2559  	X_ANSI_STDDEF_H                       = 0
  2560  	X_BITS_STDINT_UINTN_H                 = 1
  2561  	X_BITS_WCHAR_H                        = 1
  2562  	X_BSD_PTRDIFF_T_                      = 0
  2563  	X_GCC_MAX_ALIGN_T                     = 0
  2564  	X_GCC_PTRDIFF_T                       = 0
  2565  	X_GCC_WRAP_STDINT_H                   = 0
  2566  	X_GNU_SOURCE                          = 0
  2567  	X_INTTYPES_H                          = 1
  2568  	X_LARGEFILE_SOURCE                    = 1
  2569  	X_LARGE_FILE                          = 1
  2570  	X_PTRDIFF_T                           = 0
  2571  	X_PTRDIFF_T_                          = 0
  2572  	X_PTRDIFF_T_DECLARED                  = 0
  2573  	X_SQLITE_OS_H_                        = 0
  2574  	X_STDDEF_H                            = 0
  2575  	X_STDDEF_H_                           = 0
  2576  	X_STDINT_H                            = 1
  2577  	X_T_PTRDIFF                           = 0
  2578  	X_T_PTRDIFF_                          = 0
  2579  	X_XOPEN_SOURCE                        = 600
  2580  	SESSION_STREAM_TCL_VAR                = "sqlite3session_streams"
  2581  	AT_DCACHEBSIZE                        = 19
  2582  	AT_ICACHEBSIZE                        = 20
  2583  	AT_IGNOREPPC                          = 22
  2584  	AT_L1D_CACHEGEOMETRY                  = 43
  2585  	AT_L1D_CACHESIZE                      = 42
  2586  	AT_L1I_CACHEGEOMETRY                  = 41
  2587  	AT_L1I_CACHESIZE                      = 40
  2588  	AT_L2_CACHEGEOMETRY                   = 45
  2589  	AT_L2_CACHESIZE                       = 44
  2590  	AT_L3_CACHEGEOMETRY                   = 47
  2591  	AT_L3_CACHESIZE                       = 46
  2592  	AT_SYSINFO_EHDR                       = 33
  2593  	AT_UCACHEBSIZE                        = 21
  2594  	AT_VECTOR_SIZE_ARCH                   = 14
  2595  	ELF_NEBB                              = 3
  2596  	ELF_NFPREG                            = 33
  2597  	ELF_NGREG                             = 48
  2598  	ELF_NPKEY                             = 3
  2599  	ELF_NPMU                              = 5
  2600  	ELF_NTMSPRREG                         = 3
  2601  	ELF_NVMX                              = 34
  2602  	ELF_NVRREG                            = 34
  2603  	ELF_NVRREG32                          = 33
  2604  	ELF_NVSRHALFREG                       = 32
  2605  	ELF_NVSX                              = 32
  2606  	MAX_PREPARED_STMTS                    = 100
  2607  	MINSIGSTKSZ                           = 4096
  2608  	NFPREG                                = 33
  2609  	NGREG                                 = 48
  2610  	NSIG                                  = 65
  2611  	NUM_PREPARED_STMTS                    = 10
  2612  	NVRREG                                = 34
  2613  	PPC_BREAKPOINT_CONDITION_AND          = 0x00000001
  2614  	PPC_BREAKPOINT_CONDITION_AND_OR       = 0x00000003
  2615  	PPC_BREAKPOINT_CONDITION_BE_ALL       = 0x00ff0000
  2616  	PPC_BREAKPOINT_CONDITION_BE_SHIFT     = 16
  2617  	PPC_BREAKPOINT_CONDITION_EXACT        = 1
  2618  	PPC_BREAKPOINT_CONDITION_MODE         = 0x00000003
  2619  	PPC_BREAKPOINT_CONDITION_NONE         = 0x00000000
  2620  	PPC_BREAKPOINT_CONDITION_OR           = 0x00000002
  2621  	PPC_BREAKPOINT_MODE_EXACT             = 0x00000000
  2622  	PPC_BREAKPOINT_MODE_MASK              = 0x00000003
  2623  	PPC_BREAKPOINT_MODE_RANGE_EXCLUSIVE   = 0x00000002
  2624  	PPC_BREAKPOINT_MODE_RANGE_INCLUSIVE   = 0x00000001
  2625  	PPC_BREAKPOINT_TRIGGER_EXECUTE        = 0x00000001
  2626  	PPC_BREAKPOINT_TRIGGER_READ           = 0x00000002
  2627  	PPC_BREAKPOINT_TRIGGER_RW             = 6
  2628  	PPC_BREAKPOINT_TRIGGER_WRITE          = 0x00000004
  2629  	PPC_DEBUG_FEATURE_DATA_BP_ARCH_31     = 0x0000000000000020
  2630  	PPC_DEBUG_FEATURE_DATA_BP_DAWR        = 0x0000000000000010
  2631  	PPC_DEBUG_FEATURE_DATA_BP_MASK        = 0x0000000000000008
  2632  	PPC_DEBUG_FEATURE_DATA_BP_RANGE       = 0x0000000000000004
  2633  	PPC_DEBUG_FEATURE_INSN_BP_MASK        = 0x0000000000000002
  2634  	PPC_DEBUG_FEATURE_INSN_BP_RANGE       = 0x0000000000000001
  2635  	PPC_FEATURE2_ARCH_2_07                = 0x80000000
  2636  	PPC_FEATURE2_ARCH_3_00                = 0x00800000
  2637  	PPC_FEATURE2_ARCH_3_1                 = 0x00040000
  2638  	PPC_FEATURE2_DARN                     = 0x00200000
  2639  	PPC_FEATURE2_DSCR                     = 0x20000000
  2640  	PPC_FEATURE2_EBB                      = 0x10000000
  2641  	PPC_FEATURE2_HAS_IEEE128              = 0x00400000
  2642  	PPC_FEATURE2_HTM                      = 0x40000000
  2643  	PPC_FEATURE2_HTM_NOSC                 = 0x01000000
  2644  	PPC_FEATURE2_HTM_NO_SUSPEND           = 0x00080000
  2645  	PPC_FEATURE2_ISEL                     = 0x08000000
  2646  	PPC_FEATURE2_MMA                      = 0x00020000
  2647  	PPC_FEATURE2_SCV                      = 0x00100000
  2648  	PPC_FEATURE2_TAR                      = 0x04000000
  2649  	PPC_FEATURE2_VEC_CRYPTO               = 0x02000000
  2650  	PPC_FEATURE_32                        = 0x80000000
  2651  	PPC_FEATURE_601_INSTR                 = 0x20000000
  2652  	PPC_FEATURE_64                        = 0x40000000
  2653  	PPC_FEATURE_ARCH_2_05                 = 0x00001000
  2654  	PPC_FEATURE_ARCH_2_06                 = 0x00000100
  2655  	PPC_FEATURE_BOOKE                     = 0x00008000
  2656  	PPC_FEATURE_CELL                      = 0x00010000
  2657  	PPC_FEATURE_HAS_4xxMAC                = 0x02000000
  2658  	PPC_FEATURE_HAS_ALTIVEC               = 0x10000000
  2659  	PPC_FEATURE_HAS_DFP                   = 0x00000400
  2660  	PPC_FEATURE_HAS_EFP_DOUBLE            = 0x00200000
  2661  	PPC_FEATURE_HAS_EFP_SINGLE            = 0x00400000
  2662  	PPC_FEATURE_HAS_FPU                   = 0x08000000
  2663  	PPC_FEATURE_HAS_MMU                   = 0x04000000
  2664  	PPC_FEATURE_HAS_SPE                   = 0x00800000
  2665  	PPC_FEATURE_HAS_VSX                   = 0x00000080
  2666  	PPC_FEATURE_ICACHE_SNOOP              = 0x00002000
  2667  	PPC_FEATURE_NO_TB                     = 0x00100000
  2668  	PPC_FEATURE_PA6T                      = 0x00000800
  2669  	PPC_FEATURE_POWER4                    = 0x00080000
  2670  	PPC_FEATURE_POWER5                    = 0x00040000
  2671  	PPC_FEATURE_POWER5_PLUS               = 0x00020000
  2672  	PPC_FEATURE_POWER6_EXT                = 0x00000200
  2673  	PPC_FEATURE_PPC_LE                    = 0x00000001
  2674  	PPC_FEATURE_PSERIES_PERFMON_COMPAT    = 0x00000040
  2675  	PPC_FEATURE_SMT                       = 0x00004000
  2676  	PPC_FEATURE_TRUE_LE                   = 0x00000002
  2677  	PPC_FEATURE_UNIFIED_CACHE             = 0x01000000
  2678  	PPC_PTRACE_DELHWDEBUG                 = 0x87
  2679  	PPC_PTRACE_GETHWDBGINFO               = 0x89
  2680  	PPC_PTRACE_PEEKDATA_3264              = 0x94
  2681  	PPC_PTRACE_PEEKTEXT_3264              = 0x95
  2682  	PPC_PTRACE_PEEKUSR_3264               = 0x91
  2683  	PPC_PTRACE_POKEDATA_3264              = 0x92
  2684  	PPC_PTRACE_POKETEXT_3264              = 0x93
  2685  	PPC_PTRACE_POKEUSR_3264               = 0x90
  2686  	PPC_PTRACE_SETHWDEBUG                 = 0x88
  2687  	PTRACE_GETEVRREGS                     = 0x14
  2688  	PTRACE_GETFPREGS                      = 0xe
  2689  	PTRACE_GETREGS                        = 0xc
  2690  	PTRACE_GETREGS64                      = 0x16
  2691  	PTRACE_GETVRREGS                      = 0x12
  2692  	PTRACE_GETVSRREGS                     = 0x1b
  2693  	PTRACE_GET_DEBUGREG                   = 0x19
  2694  	PTRACE_SETEVRREGS                     = 0x15
  2695  	PTRACE_SETFPREGS                      = 0xf
  2696  	PTRACE_SETREGS                        = 0xd
  2697  	PTRACE_SETREGS64                      = 0x17
  2698  	PTRACE_SETVRREGS                      = 0x13
  2699  	PTRACE_SETVSRREGS                     = 0x1c
  2700  	PTRACE_SET_DEBUGREG                   = 0x1a
  2701  	PTRACE_SINGLEBLOCK                    = 0x100
  2702  	PTRACE_SYSEMU                         = 0x1d
  2703  	PTRACE_SYSEMU_SINGLESTEP              = 0x1e
  2704  	PT_CCR                                = 38
  2705  	PT_CTR                                = 35
  2706  	PT_DAR                                = 41
  2707  	PT_DSCR                               = 44
  2708  	PT_DSISR                              = 42
  2709  	PT_FPR0                               = 48
  2710  	PT_FPSCR                              = 80
  2711  	PT_LNK                                = 36
  2712  	PT_MSR                                = 33
  2713  	PT_NIP                                = 32
  2714  	PT_ORIG_R3                            = 34
  2715  	PT_R0                                 = 0
  2716  	PT_R1                                 = 1
  2717  	PT_R10                                = 10
  2718  	PT_R11                                = 11
  2719  	PT_R12                                = 12
  2720  	PT_R13                                = 13
  2721  	PT_R14                                = 14
  2722  	PT_R15                                = 15
  2723  	PT_R16                                = 16
  2724  	PT_R17                                = 17
  2725  	PT_R18                                = 18
  2726  	PT_R19                                = 19
  2727  	PT_R2                                 = 2
  2728  	PT_R20                                = 20
  2729  	PT_R21                                = 21
  2730  	PT_R22                                = 22
  2731  	PT_R23                                = 23
  2732  	PT_R24                                = 24
  2733  	PT_R25                                = 25
  2734  	PT_R26                                = 26
  2735  	PT_R27                                = 27
  2736  	PT_R28                                = 28
  2737  	PT_R29                                = 29
  2738  	PT_R3                                 = 3
  2739  	PT_R30                                = 30
  2740  	PT_R31                                = 31
  2741  	PT_R4                                 = 4
  2742  	PT_R5                                 = 5
  2743  	PT_R6                                 = 6
  2744  	PT_R7                                 = 7
  2745  	PT_R8                                 = 8
  2746  	PT_R9                                 = 9
  2747  	PT_REGS_COUNT                         = 44
  2748  	PT_RESULT                             = 43
  2749  	PT_SOFTE                              = 39
  2750  	PT_TRAP                               = 40
  2751  	PT_VR0                                = 82
  2752  	PT_VRSAVE                             = 148
  2753  	PT_VSCR                               = 147
  2754  	PT_VSR0                               = 150
  2755  	PT_VSR31                              = 212
  2756  	PT_XER                                = 37
  2757  	R_PPC64_ADDR14                        = 7
  2758  	R_PPC64_ADDR14_BRNTAKEN               = 9
  2759  	R_PPC64_ADDR14_BRTAKEN                = 8
  2760  	R_PPC64_ADDR16                        = 3
  2761  	R_PPC64_ADDR16_DS                     = 56
  2762  	R_PPC64_ADDR16_HA                     = 6
  2763  	R_PPC64_ADDR16_HI                     = 5
  2764  	R_PPC64_ADDR16_HIGHER                 = 39
  2765  	R_PPC64_ADDR16_HIGHERA                = 40
  2766  	R_PPC64_ADDR16_HIGHEST                = 41
  2767  	R_PPC64_ADDR16_HIGHESTA               = 42
  2768  	R_PPC64_ADDR16_LO                     = 4
  2769  	R_PPC64_ADDR16_LO_DS                  = 57
  2770  	R_PPC64_ADDR24                        = 2
  2771  	R_PPC64_ADDR30                        = 37
  2772  	R_PPC64_ADDR32                        = 1
  2773  	R_PPC64_ADDR64                        = 38
  2774  	R_PPC64_COPY                          = 19
  2775  	R_PPC64_DTPMOD64                      = 68
  2776  	R_PPC64_DTPREL16                      = 74
  2777  	R_PPC64_DTPREL16_DS                   = 101
  2778  	R_PPC64_DTPREL16_HA                   = 77
  2779  	R_PPC64_DTPREL16_HI                   = 76
  2780  	R_PPC64_DTPREL16_HIGHER               = 103
  2781  	R_PPC64_DTPREL16_HIGHERA              = 104
  2782  	R_PPC64_DTPREL16_HIGHEST              = 105
  2783  	R_PPC64_DTPREL16_HIGHESTA             = 106
  2784  	R_PPC64_DTPREL16_LO                   = 75
  2785  	R_PPC64_DTPREL16_LO_DS                = 102
  2786  	R_PPC64_DTPREL64                      = 78
  2787  	R_PPC64_ENTRY                         = 118
  2788  	R_PPC64_GLOB_DAT                      = 20
  2789  	R_PPC64_GOT16                         = 14
  2790  	R_PPC64_GOT16_DS                      = 58
  2791  	R_PPC64_GOT16_HA                      = 17
  2792  	R_PPC64_GOT16_HI                      = 16
  2793  	R_PPC64_GOT16_LO                      = 15
  2794  	R_PPC64_GOT16_LO_DS                   = 59
  2795  	R_PPC64_GOT_DTPREL16_DS               = 91
  2796  	R_PPC64_GOT_DTPREL16_HA               = 94
  2797  	R_PPC64_GOT_DTPREL16_HI               = 93
  2798  	R_PPC64_GOT_DTPREL16_LO_DS            = 92
  2799  	R_PPC64_GOT_TLSGD16                   = 79
  2800  	R_PPC64_GOT_TLSGD16_HA                = 82
  2801  	R_PPC64_GOT_TLSGD16_HI                = 81
  2802  	R_PPC64_GOT_TLSGD16_LO                = 80
  2803  	R_PPC64_GOT_TLSLD16                   = 83
  2804  	R_PPC64_GOT_TLSLD16_HA                = 86
  2805  	R_PPC64_GOT_TLSLD16_HI                = 85
  2806  	R_PPC64_GOT_TLSLD16_LO                = 84
  2807  	R_PPC64_GOT_TPREL16_DS                = 87
  2808  	R_PPC64_GOT_TPREL16_HA                = 90
  2809  	R_PPC64_GOT_TPREL16_HI                = 89
  2810  	R_PPC64_GOT_TPREL16_LO_DS             = 88
  2811  	R_PPC64_JMP_SLOT                      = 21
  2812  	R_PPC64_NONE                          = 0
  2813  	R_PPC64_NUM                           = 253
  2814  	R_PPC64_PLT16_HA                      = 31
  2815  	R_PPC64_PLT16_HI                      = 30
  2816  	R_PPC64_PLT16_LO                      = 29
  2817  	R_PPC64_PLT16_LO_DS                   = 60
  2818  	R_PPC64_PLT32                         = 27
  2819  	R_PPC64_PLT64                         = 45
  2820  	R_PPC64_PLTGOT16                      = 52
  2821  	R_PPC64_PLTGOT16_DS                   = 65
  2822  	R_PPC64_PLTGOT16_HA                   = 55
  2823  	R_PPC64_PLTGOT16_HI                   = 54
  2824  	R_PPC64_PLTGOT16_LO                   = 53
  2825  	R_PPC64_PLTGOT16_LO_DS                = 66
  2826  	R_PPC64_PLTREL32                      = 28
  2827  	R_PPC64_PLTREL64                      = 46
  2828  	R_PPC64_REL14                         = 11
  2829  	R_PPC64_REL14_BRNTAKEN                = 13
  2830  	R_PPC64_REL14_BRTAKEN                 = 12
  2831  	R_PPC64_REL16                         = 249
  2832  	R_PPC64_REL16_HA                      = 252
  2833  	R_PPC64_REL16_HI                      = 251
  2834  	R_PPC64_REL16_LO                      = 250
  2835  	R_PPC64_REL24                         = 10
  2836  	R_PPC64_REL32                         = 26
  2837  	R_PPC64_REL64                         = 44
  2838  	R_PPC64_RELATIVE                      = 22
  2839  	R_PPC64_SECTOFF                       = 33
  2840  	R_PPC64_SECTOFF_DS                    = 61
  2841  	R_PPC64_SECTOFF_HA                    = 36
  2842  	R_PPC64_SECTOFF_HI                    = 35
  2843  	R_PPC64_SECTOFF_LO                    = 34
  2844  	R_PPC64_SECTOFF_LO_DS                 = 62
  2845  	R_PPC64_TLS                           = 67
  2846  	R_PPC64_TLSGD                         = 107
  2847  	R_PPC64_TLSLD                         = 108
  2848  	R_PPC64_TOC                           = 51
  2849  	R_PPC64_TOC16                         = 47
  2850  	R_PPC64_TOC16_DS                      = 63
  2851  	R_PPC64_TOC16_HA                      = 50
  2852  	R_PPC64_TOC16_HI                      = 49
  2853  	R_PPC64_TOC16_LO                      = 48
  2854  	R_PPC64_TOC16_LO_DS                   = 64
  2855  	R_PPC64_TOCSAVE                       = 109
  2856  	R_PPC64_TPREL16                       = 69
  2857  	R_PPC64_TPREL16_DS                    = 95
  2858  	R_PPC64_TPREL16_HA                    = 72
  2859  	R_PPC64_TPREL16_HI                    = 71
  2860  	R_PPC64_TPREL16_HIGHER                = 97
  2861  	R_PPC64_TPREL16_HIGHERA               = 98
  2862  	R_PPC64_TPREL16_HIGHEST               = 99
  2863  	R_PPC64_TPREL16_HIGHESTA              = 100
  2864  	R_PPC64_TPREL16_LO                    = 70
  2865  	R_PPC64_TPREL16_LO_DS                 = 96
  2866  	R_PPC64_TPREL64                       = 73
  2867  	R_PPC64_UADDR16                       = 25
  2868  	R_PPC64_UADDR32                       = 24
  2869  	R_PPC64_UADDR64                       = 43
  2870  	R_PPC_ADDR14                          = 7
  2871  	R_PPC_ADDR14_BRNTAKEN                 = 9
  2872  	R_PPC_ADDR14_BRTAKEN                  = 8
  2873  	R_PPC_ADDR16                          = 3
  2874  	R_PPC_ADDR16_HA                       = 6
  2875  	R_PPC_ADDR16_HI                       = 5
  2876  	R_PPC_ADDR16_LO                       = 4
  2877  	R_PPC_ADDR24                          = 2
  2878  	R_PPC_ADDR32                          = 1
  2879  	R_PPC_COPY                            = 19
  2880  	R_PPC_DTPMOD32                        = 68
  2881  	R_PPC_DTPREL16                        = 74
  2882  	R_PPC_DTPREL16_HA                     = 77
  2883  	R_PPC_DTPREL16_HI                     = 76
  2884  	R_PPC_DTPREL16_LO                     = 75
  2885  	R_PPC_DTPREL32                        = 78
  2886  	R_PPC_GLOB_DAT                        = 20
  2887  	R_PPC_GOT16                           = 14
  2888  	R_PPC_GOT16_HA                        = 17
  2889  	R_PPC_GOT16_HI                        = 16
  2890  	R_PPC_GOT16_LO                        = 15
  2891  	R_PPC_GOT_DTPREL16                    = 91
  2892  	R_PPC_GOT_DTPREL16_HA                 = 94
  2893  	R_PPC_GOT_DTPREL16_HI                 = 93
  2894  	R_PPC_GOT_DTPREL16_LO                 = 92
  2895  	R_PPC_GOT_TLSGD16                     = 79
  2896  	R_PPC_GOT_TLSGD16_HA                  = 82
  2897  	R_PPC_GOT_TLSGD16_HI                  = 81
  2898  	R_PPC_GOT_TLSGD16_LO                  = 80
  2899  	R_PPC_GOT_TLSLD16                     = 83
  2900  	R_PPC_GOT_TLSLD16_HA                  = 86
  2901  	R_PPC_GOT_TLSLD16_HI                  = 85
  2902  	R_PPC_GOT_TLSLD16_LO                  = 84
  2903  	R_PPC_GOT_TPREL16                     = 87
  2904  	R_PPC_GOT_TPREL16_HA                  = 90
  2905  	R_PPC_GOT_TPREL16_HI                  = 89
  2906  	R_PPC_GOT_TPREL16_LO                  = 88
  2907  	R_PPC_JMP_SLOT                        = 21
  2908  	R_PPC_LOCAL24PC                       = 23
  2909  	R_PPC_NONE                            = 0
  2910  	R_PPC_NUM                             = 95
  2911  	R_PPC_PLT16_HA                        = 31
  2912  	R_PPC_PLT16_HI                        = 30
  2913  	R_PPC_PLT16_LO                        = 29
  2914  	R_PPC_PLT32                           = 27
  2915  	R_PPC_PLTREL24                        = 18
  2916  	R_PPC_PLTREL32                        = 28
  2917  	R_PPC_REL14                           = 11
  2918  	R_PPC_REL14_BRNTAKEN                  = 13
  2919  	R_PPC_REL14_BRTAKEN                   = 12
  2920  	R_PPC_REL24                           = 10
  2921  	R_PPC_REL32                           = 26
  2922  	R_PPC_RELATIVE                        = 22
  2923  	R_PPC_SDAREL16                        = 32
  2924  	R_PPC_SECTOFF                         = 33
  2925  	R_PPC_SECTOFF_HA                      = 36
  2926  	R_PPC_SECTOFF_HI                      = 35
  2927  	R_PPC_SECTOFF_LO                      = 34
  2928  	R_PPC_TLS                             = 67
  2929  	R_PPC_TPREL16                         = 69
  2930  	R_PPC_TPREL16_HA                      = 72
  2931  	R_PPC_TPREL16_HI                      = 71
  2932  	R_PPC_TPREL16_LO                      = 70
  2933  	R_PPC_TPREL32                         = 73
  2934  	R_PPC_UADDR16                         = 25
  2935  	R_PPC_UADDR32                         = 24
  2936  	SA_INTERRUPT                          = 0x20000000
  2937  	SA_NOCLDSTOP                          = 1
  2938  	SA_NOCLDWAIT                          = 2
  2939  	SA_NODEFER                            = 0x40000000
  2940  	SA_NOMASK                             = 1073741824
  2941  	SA_ONESHOT                            = 2147483648
  2942  	SA_ONSTACK                            = 0x08000000
  2943  	SA_RESETHAND                          = 0x80000000
  2944  	SA_RESTART                            = 0x10000000
  2945  	SA_SIGINFO                            = 4
  2946  	SA_STACK                              = 134217728
  2947  	SIGABRT                               = 6
  2948  	SIGALRM                               = 14
  2949  	SIGBUS                                = 7
  2950  	SIGCHLD                               = 17
  2951  	SIGCLD                                = 17
  2952  	SIGCONT                               = 18
  2953  	SIGFPE                                = 8
  2954  	SIGHUP                                = 1
  2955  	SIGILL                                = 4
  2956  	SIGINT                                = 2
  2957  	SIGIO                                 = 29
  2958  	SIGIOT                                = 6
  2959  	SIGKILL                               = 9
  2960  	SIGPIPE                               = 13
  2961  	SIGPOLL                               = 29
  2962  	SIGPROF                               = 27
  2963  	SIGPWR                                = 30
  2964  	SIGQUIT                               = 3
  2965  	SIGSEGV                               = 11
  2966  	SIGSTKFLT                             = 16
  2967  	SIGSTKSZ                              = 16384
  2968  	SIGSTOP                               = 19
  2969  	SIGSYS                                = 31
  2970  	SIGTERM                               = 15
  2971  	SIGTRAP                               = 5
  2972  	SIGTSTP                               = 20
  2973  	SIGTTIN                               = 21
  2974  	SIGTTOU                               = 22
  2975  	SIGURG                                = 23
  2976  	SIGUSR1                               = 10
  2977  	SIGUSR2                               = 12
  2978  	SIGVTALRM                             = 26
  2979  	SIGWINCH                              = 28
  2980  	SIGXCPU                               = 24
  2981  	SIGXFSZ                               = 25
  2982  	SIG_BLOCK                             = 0
  2983  	SIG_SETMASK                           = 2
  2984  	SIG_UNBLOCK                           = 1
  2985  	SQLITE_EVAL_WITHOUTNULLS              = 0x00001
  2986  	SQLITE_TCL_NRE                        = 1
  2987  	TCLSH                                 = 1
  2988  	X_ASM_GENERIC_INT_L64_H               = 0
  2989  	X_ASM_POWERPC_AUXVEC_H                = 0
  2990  	X_ASM_POWERPC_ELF_H                   = 0
  2991  	X_ASM_POWERPC_POSIX_TYPES_H           = 0
  2992  	X_ASM_POWERPC_PTRACE_H                = 0
  2993  	X_ASM_POWERPC_SIGCONTEXT_H            = 0
  2994  	X_ASM_POWERPC_TYPES_H                 = 0
  2995  	X_BITS_SIGACTION_H                    = 1
  2996  	X_BITS_SIGCONTEXT_H                   = 1
  2997  	X_BITS_SIGEVENT_CONSTS_H              = 1
  2998  	X_BITS_SIGINFO_ARCH_H                 = 1
  2999  	X_BITS_SIGINFO_CONSTS_H               = 1
  3000  	X_BITS_SIGNUM_GENERIC_H               = 1
  3001  	X_BITS_SIGNUM_H                       = 1
  3002  	X_BITS_SIGSTACK_H                     = 1
  3003  	X_BITS_SIGTHREAD_H                    = 1
  3004  	X_BITS_SS_FLAGS_H                     = 1
  3005  	X_LINUX_POSIX_TYPES_H                 = 0
  3006  	X_LINUX_TYPES_H                       = 0
  3007  	X_NSIG                                = 65
  3008  	X_SIGNAL_H                            = 0
  3009  	X_SYS_UCONTEXT_H                      = 1
  3010  	ADJ_ESTERROR                          = 0x0008
  3011  	ADJ_FREQUENCY                         = 0x0002
  3012  	ADJ_MAXERROR                          = 0x0004
  3013  	ADJ_MICRO                             = 0x1000
  3014  	ADJ_NANO                              = 0x2000
  3015  	ADJ_OFFSET                            = 0x0001
  3016  	ADJ_OFFSET_SINGLESHOT                 = 0x8001
  3017  	ADJ_OFFSET_SS_READ                    = 0xa001
  3018  	ADJ_SETOFFSET                         = 0x0100
  3019  	ADJ_STATUS                            = 0x0010
  3020  	ADJ_TAI                               = 0x0080
  3021  	ADJ_TICK                              = 0x4000
  3022  	ADJ_TIMECONST                         = 0x0020
  3023  	CACHE_STALE                           = 0
  3024  	CURTYPE_BTREE                         = 0
  3025  	CURTYPE_PSEUDO                        = 3
  3026  	CURTYPE_SORTER                        = 1
  3027  	CURTYPE_VTAB                          = 2
  3028  	INT16_WIDTH                           = 16
  3029  	INT32_WIDTH                           = 32
  3030  	INT64_WIDTH                           = 64
  3031  	INT8_WIDTH                            = 8
  3032  	INTMAX_WIDTH                          = 64
  3033  	INTPTR_WIDTH                          = 64
  3034  	INT_FAST16_WIDTH                      = 64
  3035  	INT_FAST32_WIDTH                      = 64
  3036  	INT_FAST64_WIDTH                      = 64
  3037  	INT_FAST8_WIDTH                       = 8
  3038  	INT_LEAST16_WIDTH                     = 16
  3039  	INT_LEAST32_WIDTH                     = 32
  3040  	INT_LEAST64_WIDTH                     = 64
  3041  	INT_LEAST8_WIDTH                      = 8
  3042  	L_cuserid                             = 9
  3043  	MEM_AffMask                           = 0x003f
  3044  	MEM_Agg                               = 0x8000
  3045  	MEM_Blob                              = 0x0010
  3046  	MEM_Cleared                           = 0x0100
  3047  	MEM_Dyn                               = 0x1000
  3048  	MEM_Ephem                             = 0x4000
  3049  	MEM_FromBind                          = 0x0040
  3050  	MEM_Int                               = 0x0004
  3051  	MEM_IntReal                           = 0x0020
  3052  	MEM_Null                              = 0x0001
  3053  	MEM_Real                              = 0x0008
  3054  	MEM_Static                            = 0x2000
  3055  	MEM_Str                               = 0x0002
  3056  	MEM_Subtype                           = 0x0800
  3057  	MEM_Term                              = 0x0200
  3058  	MEM_TypeMask                          = 0x0dbf
  3059  	MEM_Undefined                         = 0x0000
  3060  	MEM_Zero                              = 0x0400
  3061  	MOD_CLKA                              = 32769
  3062  	MOD_CLKB                              = 16384
  3063  	MOD_ESTERROR                          = 8
  3064  	MOD_FREQUENCY                         = 2
  3065  	MOD_MAXERROR                          = 4
  3066  	MOD_MICRO                             = 4096
  3067  	MOD_NANO                              = 8192
  3068  	MOD_OFFSET                            = 1
  3069  	MOD_STATUS                            = 16
  3070  	MOD_TAI                               = 128
  3071  	MOD_TIMECONST                         = 32
  3072  	PRIO_MAX                              = 20
  3073  	PRIO_MIN                              = -20
  3074  	PTRDIFF_WIDTH                         = 64
  3075  	RENAME_EXCHANGE                       = 2
  3076  	RENAME_NOREPLACE                      = 1
  3077  	RENAME_WHITEOUT                       = 4
  3078  	RLIM64_INFINITY                       = 0xffffffffffffffff
  3079  	RLIM_INFINITY                         = 0xffffffffffffffff
  3080  	RLIM_SAVED_CUR                        = 18446744073709551615
  3081  	RLIM_SAVED_MAX                        = 18446744073709551615
  3082  	SEEK_DATA                             = 3
  3083  	SEEK_HOLE                             = 4
  3084  	SIG_ATOMIC_WIDTH                      = 32
  3085  	SIZE_WIDTH                            = 64
  3086  	SQLITE_ENABLE_LOCKING_STYLE           = 0
  3087  	SQLITE_FRAME_MAGIC                    = 0x879fb71e
  3088  	SQLITE_MAX_SCHEMA_RETRY               = 50
  3089  	SQLITE_VDBEINT_H                      = 0
  3090  	STA_CLK                               = 0x8000
  3091  	STA_CLOCKERR                          = 0x1000
  3092  	STA_DEL                               = 0x0020
  3093  	STA_FLL                               = 0x0008
  3094  	STA_FREQHOLD                          = 0x0080
  3095  	STA_INS                               = 0x0010
  3096  	STA_MODE                              = 0x4000
  3097  	STA_NANO                              = 0x2000
  3098  	STA_PLL                               = 0x0001
  3099  	STA_PPSERROR                          = 0x0800
  3100  	STA_PPSFREQ                           = 0x0002
  3101  	STA_PPSJITTER                         = 0x0200
  3102  	STA_PPSSIGNAL                         = 0x0100
  3103  	STA_PPSTIME                           = 0x0004
  3104  	STA_PPSWANDER                         = 0x0400
  3105  	STA_RONLY                             = 65280
  3106  	STA_UNSYNC                            = 0x0040
  3107  	UINT16_WIDTH                          = 16
  3108  	UINT32_WIDTH                          = 32
  3109  	UINT64_WIDTH                          = 64
  3110  	UINT8_WIDTH                           = 8
  3111  	UINTMAX_WIDTH                         = 64
  3112  	UINTPTR_WIDTH                         = 64
  3113  	UINT_FAST16_WIDTH                     = 64
  3114  	UINT_FAST32_WIDTH                     = 64
  3115  	UINT_FAST64_WIDTH                     = 64
  3116  	UINT_FAST8_WIDTH                      = 8
  3117  	UINT_LEAST16_WIDTH                    = 16
  3118  	UINT_LEAST32_WIDTH                    = 32
  3119  	UINT_LEAST64_WIDTH                    = 64
  3120  	UINT_LEAST8_WIDTH                     = 8
  3121  	VDBE_DISPLAY_P4                       = 1
  3122  	VDBE_HALT_STATE                       = 3
  3123  	VDBE_INIT_STATE                       = 0
  3124  	VDBE_READY_STATE                      = 1
  3125  	VDBE_RUN_STATE                        = 2
  3126  	WCHAR_WIDTH                           = 32
  3127  	WINT_WIDTH                            = 32
  3128  	X_BITS_TIMEX_H                        = 1
  3129  	X_ISOC11_SOURCE                       = 1
  3130  	X_ISOC2X_SOURCE                       = 1
  3131  	X_ISOC95_SOURCE                       = 1
  3132  	X_ISOC99_SOURCE                       = 1
  3133  	X_LARGEFILE64_SOURCE                  = 1
  3134  	X_SYS_RESOURCE_H                      = 1
  3135  	X_XOPEN_SOURCE_EXTENDED               = 1
  3136  	BTCF_AtLast                           = 0x08
  3137  	BTCF_Incrblob                         = 0x10
  3138  	BTCF_Multiple                         = 0x20
  3139  	BTCF_Pinned                           = 0x40
  3140  	BTCF_ValidNKey                        = 0x02
  3141  	BTCF_ValidOvfl                        = 0x04
  3142  	BTCF_WriteFlag                        = 0x01
  3143  	BTCURSOR_MAX_DEPTH                    = 20
  3144  	BTS_EXCLUSIVE                         = 0x0040
  3145  	BTS_FAST_SECURE                       = 0x000c
  3146  	BTS_INITIALLY_EMPTY                   = 0x0010
  3147  	BTS_NO_WAL                            = 0x0020
  3148  	BTS_OVERWRITE                         = 0x0008
  3149  	BTS_PAGESIZE_FIXED                    = 0x0002
  3150  	BTS_PENDING                           = 0x0080
  3151  	BTS_READ_ONLY                         = 0x0001
  3152  	BTS_SECURE_DELETE                     = 0x0004
  3153  	CURSOR_FAULT                          = 4
  3154  	CURSOR_INVALID                        = 1
  3155  	CURSOR_REQUIRESEEK                    = 3
  3156  	CURSOR_SKIPNEXT                       = 2
  3157  	CURSOR_VALID                          = 0
  3158  	PTF_INTKEY                            = 0x01
  3159  	PTF_LEAF                              = 0x08
  3160  	PTF_LEAFDATA                          = 0x04
  3161  	PTF_ZERODATA                          = 0x02
  3162  	PTRMAP_BTREE                          = 5
  3163  	PTRMAP_FREEPAGE                       = 2
  3164  	PTRMAP_OVERFLOW1                      = 3
  3165  	PTRMAP_OVERFLOW2                      = 4
  3166  	PTRMAP_ROOTPAGE                       = 1
  3167  	READ_LOCK                             = 1
  3168  	SQLITE_FILE_HEADER                    = "SQLite format 3"
  3169  	TRANS_NONE                            = 0
  3170  	TRANS_READ                            = 1
  3171  	TRANS_WRITE                           = 2
  3172  	WRITE_LOCK                            = 2
  3173  	CLONE_CHILD_CLEARTID                  = 0x00200000
  3174  	CLONE_CHILD_SETTID                    = 0x01000000
  3175  	CLONE_DETACHED                        = 0x00400000
  3176  	CLONE_FILES                           = 0x00000400
  3177  	CLONE_FS                              = 0x00000200
  3178  	CLONE_IO                              = 0x80000000
  3179  	CLONE_NEWCGROUP                       = 0x02000000
  3180  	CLONE_NEWIPC                          = 0x08000000
  3181  	CLONE_NEWNET                          = 0x40000000
  3182  	CLONE_NEWNS                           = 0x00020000
  3183  	CLONE_NEWPID                          = 0x20000000
  3184  	CLONE_NEWUSER                         = 0x10000000
  3185  	CLONE_NEWUTS                          = 0x04000000
  3186  	CLONE_PARENT                          = 0x00008000
  3187  	CLONE_PARENT_SETTID                   = 0x00100000
  3188  	CLONE_PIDFD                           = 0x00001000
  3189  	CLONE_PTRACE                          = 0x00002000
  3190  	CLONE_SETTLS                          = 0x00080000
  3191  	CLONE_SIGHAND                         = 0x00000800
  3192  	CLONE_SYSVSEM                         = 0x00040000
  3193  	CLONE_THREAD                          = 0x00010000
  3194  	CLONE_UNTRACED                        = 0x00800000
  3195  	CLONE_VFORK                           = 0x00004000
  3196  	CLONE_VM                              = 0x00000100
  3197  	CPU_SETSIZE                           = 1024
  3198  	CSIGNAL                               = 0x000000ff
  3199  	N_THREAD                              = 26
  3200  	PTHREAD_BARRIER_SERIAL_THREAD         = -1
  3201  	PTHREAD_ONCE_INIT                     = 0
  3202  	SCHED_BATCH                           = 3
  3203  	SCHED_DEADLINE                        = 6
  3204  	SCHED_FIFO                            = 1
  3205  	SCHED_IDLE                            = 5
  3206  	SCHED_ISO                             = 4
  3207  	SCHED_OTHER                           = 0
  3208  	SCHED_RESET_ON_FORK                   = 0x40000000
  3209  	SCHED_RR                              = 2
  3210  	X_BITS_CPU_SET_H                      = 1
  3211  	X_BITS_SCHED_H                        = 1
  3212  	X_BITS_SETJMP_H                       = 1
  3213  	X_BITS_TYPES_STRUCT_SCHED_PARAM       = 1
  3214  	X_PTHREAD_H                           = 1
  3215  	X_SCHED_H                             = 1
  3216  	TCL_THREADS                           = 0
  3217  	MX_CHUNK_NUMBER                       = 299
  3218  	SQLITE_MULTIPLEX_JOURNAL_8_3_OFFSET   = 400
  3219  	SQLITE_MULTIPLEX_WAL_8_3_OFFSET       = 700
  3220  	DEVSYM_MAX_PATHNAME                   = 512
  3221  	DEVSYM_VFS_NAME                       = "devsym"
  3222  	WRITECRASH_NAME                       = "writecrash"
  3223  	AT_EMPTY_PATH                         = 0x1000
  3224  	AT_NO_AUTOMOUNT                       = 0x800
  3225  	AT_RECURSIVE                          = 0x8000
  3226  	AT_STATX_DONT_SYNC                    = 0x4000
  3227  	AT_STATX_FORCE_SYNC                   = 0x2000
  3228  	AT_STATX_SYNC_AS_STAT                 = 0x0000
  3229  	AT_STATX_SYNC_TYPE                    = 0x6000
  3230  	DN_ACCESS                             = 0x00000001
  3231  	DN_ATTRIB                             = 0x00000020
  3232  	DN_CREATE                             = 0x00000004
  3233  	DN_DELETE                             = 0x00000008
  3234  	DN_MODIFY                             = 0x00000002
  3235  	DN_MULTISHOT                          = 0x80000000
  3236  	DN_RENAME                             = 0x00000010
  3237  	FALLOC_FL_COLLAPSE_RANGE              = 0x08
  3238  	FALLOC_FL_INSERT_RANGE                = 0x20
  3239  	FALLOC_FL_KEEP_SIZE                   = 0x01
  3240  	FALLOC_FL_NO_HIDE_STALE               = 0x04
  3241  	FALLOC_FL_PUNCH_HOLE                  = 0x02
  3242  	FALLOC_FL_UNSHARE_RANGE               = 0x40
  3243  	FALLOC_FL_ZERO_RANGE                  = 0x10
  3244  	F_ADD_SEALS                           = 1033
  3245  	F_GETLEASE                            = 1025
  3246  	F_GETOWN_EX                           = 16
  3247  	F_GETPIPE_SZ                          = 1032
  3248  	F_GETSIG                              = 11
  3249  	F_GET_FILE_RW_HINT                    = 1037
  3250  	F_GET_RW_HINT                         = 1035
  3251  	F_GET_SEALS                           = 1034
  3252  	F_NOTIFY                              = 1026
  3253  	F_OFD_GETLK                           = 36
  3254  	F_OFD_SETLK                           = 37
  3255  	F_OFD_SETLKW                          = 38
  3256  	F_SEAL_FUTURE_WRITE                   = 0x0010
  3257  	F_SEAL_GROW                           = 0x0004
  3258  	F_SEAL_SEAL                           = 0x0001
  3259  	F_SEAL_SHRINK                         = 0x0002
  3260  	F_SEAL_WRITE                          = 0x0008
  3261  	F_SETLEASE                            = 1024
  3262  	F_SETOWN_EX                           = 15
  3263  	F_SETPIPE_SZ                          = 1031
  3264  	F_SETSIG                              = 10
  3265  	F_SET_FILE_RW_HINT                    = 1038
  3266  	F_SET_RW_HINT                         = 1036
  3267  	LOCK_MAND                             = 32
  3268  	LOCK_READ                             = 64
  3269  	LOCK_RW                               = 192
  3270  	LOCK_WRITE                            = 128
  3271  	MAX_HANDLE_SZ                         = 128
  3272  	O_DIRECT                              = 131072
  3273  	O_LARGEFILE                           = 0
  3274  	O_NOATIME                             = 262144
  3275  	O_PATH                                = 2097152
  3276  	O_TMPFILE                             = 4210688
  3277  	RWF_WRITE_LIFE_NOT_SET                = 0
  3278  	RWH_WRITE_LIFE_EXTREME                = 5
  3279  	RWH_WRITE_LIFE_LONG                   = 4
  3280  	RWH_WRITE_LIFE_MEDIUM                 = 3
  3281  	RWH_WRITE_LIFE_NONE                   = 1
  3282  	RWH_WRITE_LIFE_SHORT                  = 2
  3283  	SPLICE_F_GIFT                         = 8
  3284  	SPLICE_F_MORE                         = 4
  3285  	SPLICE_F_MOVE                         = 1
  3286  	SPLICE_F_NONBLOCK                     = 2
  3287  	STATX_ALL                             = 0x00000fff
  3288  	STATX_ATIME                           = 0x00000020
  3289  	STATX_ATTR_APPEND                     = 0x00000020
  3290  	STATX_ATTR_AUTOMOUNT                  = 0x00001000
  3291  	STATX_ATTR_COMPRESSED                 = 0x00000004
  3292  	STATX_ATTR_DAX                        = 0x00200000
  3293  	STATX_ATTR_ENCRYPTED                  = 0x00000800
  3294  	STATX_ATTR_IMMUTABLE                  = 0x00000010
  3295  	STATX_ATTR_MOUNT_ROOT                 = 0x00002000
  3296  	STATX_ATTR_NODUMP                     = 0x00000040
  3297  	STATX_ATTR_VERITY                     = 0x00100000
  3298  	STATX_BASIC_STATS                     = 0x000007ff
  3299  	STATX_BLOCKS                          = 0x00000400
  3300  	STATX_BTIME                           = 0x00000800
  3301  	STATX_CTIME                           = 0x00000080
  3302  	STATX_GID                             = 0x00000010
  3303  	STATX_INO                             = 0x00000100
  3304  	STATX_MNT_ID                          = 0x00001000
  3305  	STATX_MODE                            = 0x00000002
  3306  	STATX_MTIME                           = 0x00000040
  3307  	STATX_NLINK                           = 0x00000004
  3308  	STATX_SIZE                            = 0x00000200
  3309  	STATX_TYPE                            = 0x00000001
  3310  	STATX_UID                             = 0x00000008
  3311  	STATX__RESERVED                       = 0x80000000
  3312  	SYNC_FILE_RANGE_WAIT_AFTER            = 4
  3313  	SYNC_FILE_RANGE_WAIT_BEFORE           = 1
  3314  	SYNC_FILE_RANGE_WRITE                 = 2
  3315  	SYNC_FILE_RANGE_WRITE_AND_WAIT        = 7
  3316  	X_FALLOC_H_                           = 0
  3317  	X_LINUX_STAT_H                        = 0
  3318  	X_POSIX_FD_SETSIZE                    = 20
  3319  	X_POSIX_HIWAT                         = 512
  3320  	X_POSIX_QLIMIT                        = 1
  3321  	X_POSIX_UIO_MAXIOV                    = 16
  3322  	SQLITE_INTARRAY_H                     = 0
  3323  	JT_MAX_PATHNAME                       = 512
  3324  	JT_VFS_NAME                           = "jt"
  3325  	MALLOC_LOG_FRAMES                     = 10
  3326  	DEFAULT_SECTOR_SIZE                   = 0x1000
  3327  	MAX_PAGE_SIZE                         = 0x10000
  3328  	MULTIPLEX_CTRL_ENABLE                 = 214014
  3329  	MULTIPLEX_CTRL_SET_CHUNK_SIZE         = 214015
  3330  	MULTIPLEX_CTRL_SET_MAX_CHUNKS         = 214016
  3331  	SQLITE_MULTIPLEX_CHUNK_SIZE           = 2147418112
  3332  	SQLITE_MULTIPLEX_MAX_CHUNKS           = 12
  3333  	SQLITE_MULTIPLEX_VFS_NAME             = "multiplex"
  3334  	SQLITE_TEST_MULTIPLEX_H               = 0
  3335  	MAX_MUTEXES                           = 14
  3336  	STATIC_MUTEXES                        = 12
  3337  	BLOBSIZE                              = 10485760
  3338  	BLOCKSIZE                             = 512
  3339  	DATABASE_FILE                         = 1
  3340  	FS_VFS_NAME                           = "fs"
  3341  	JOURNAL_FILE                          = 2
  3342  	INST_MAX_PATHNAME                     = 512
  3343  	OS_ACCESS                             = 1
  3344  	OS_ANNOTATE                           = 28
  3345  	OS_CHECKRESERVEDLOCK                  = 2
  3346  	OS_CLOSE                              = 3
  3347  	OS_CURRENTTIME                        = 4
  3348  	OS_DELETE                             = 5
  3349  	OS_DEVCHAR                            = 6
  3350  	OS_FILECONTROL                        = 7
  3351  	OS_FILESIZE                           = 8
  3352  	OS_FULLPATHNAME                       = 9
  3353  	OS_LOCK                               = 11
  3354  	OS_NUMEVENTS                          = 29
  3355  	OS_OPEN                               = 12
  3356  	OS_RANDOMNESS                         = 13
  3357  	OS_READ                               = 14
  3358  	OS_SECTORSIZE                         = 15
  3359  	OS_SHMBARRIER                         = 26
  3360  	OS_SHMLOCK                            = 25
  3361  	OS_SHMMAP                             = 23
  3362  	OS_SHMUNMAP                           = 22
  3363  	OS_SLEEP                              = 16
  3364  	OS_SYNC                               = 17
  3365  	OS_TRUNCATE                           = 18
  3366  	OS_UNLOCK                             = 19
  3367  	OS_WRITE                              = 20
  3368  	VFSLOG_BUFFERSIZE                     = 8192
  3369  	TESTPCACHE_CLEAR                      = 0xd42670d4
  3370  	TESTPCACHE_NPAGE                      = 217
  3371  	TESTPCACHE_RESERVE                    = 17
  3372  	TESTPCACHE_VALID                      = 0x364585fd
  3373  	MSG_Close                             = 6
  3374  	MSG_Done                              = 7
  3375  	MSG_Finalize                          = 5
  3376  	MSG_Open                              = 1
  3377  	MSG_Prepare                           = 2
  3378  	MSG_Reset                             = 4
  3379  	MSG_Step                              = 3
  3380  	MADV_COLD                             = 20
  3381  	MADV_DODUMP                           = 17
  3382  	MADV_DOFORK                           = 11
  3383  	MADV_DONTDUMP                         = 16
  3384  	MADV_DONTFORK                         = 10
  3385  	MADV_DONTNEED                         = 4
  3386  	MADV_FREE                             = 8
  3387  	MADV_HUGEPAGE                         = 14
  3388  	MADV_HWPOISON                         = 100
  3389  	MADV_KEEPONFORK                       = 19
  3390  	MADV_MERGEABLE                        = 12
  3391  	MADV_NOHUGEPAGE                       = 15
  3392  	MADV_NORMAL                           = 0
  3393  	MADV_PAGEOUT                          = 21
  3394  	MADV_RANDOM                           = 1
  3395  	MADV_REMOVE                           = 9
  3396  	MADV_SEQUENTIAL                       = 2
  3397  	MADV_UNMERGEABLE                      = 13
  3398  	MADV_WILLNEED                         = 3
  3399  	MADV_WIPEONFORK                       = 18
  3400  	MAP_ANON                              = 32
  3401  	MAP_ANONYMOUS                         = 0x20
  3402  	MAP_DENYWRITE                         = 0x00800
  3403  	MAP_EXECUTABLE                        = 0x01000
  3404  	MAP_FILE                              = 0
  3405  	MAP_FIXED                             = 0x10
  3406  	MAP_FIXED_NOREPLACE                   = 0x100000
  3407  	MAP_GROWSDOWN                         = 0x00100
  3408  	MAP_HUGETLB                           = 0x40000
  3409  	MAP_HUGE_MASK                         = 0x3f
  3410  	MAP_HUGE_SHIFT                        = 26
  3411  	MAP_LOCKED                            = 0x00080
  3412  	MAP_NONBLOCK                          = 0x10000
  3413  	MAP_NORESERVE                         = 0x00040
  3414  	MAP_POPULATE                          = 0x08000
  3415  	MAP_PRIVATE                           = 0x02
  3416  	MAP_SHARED                            = 0x01
  3417  	MAP_SHARED_VALIDATE                   = 0x03
  3418  	MAP_STACK                             = 0x20000
  3419  	MAP_SYNC                              = 0x80000
  3420  	MAP_TYPE                              = 0x0f
  3421  	MCL_CURRENT                           = 0x2000
  3422  	MCL_FUTURE                            = 0x4000
  3423  	MCL_ONFAULT                           = 0x8000
  3424  	MFD_ALLOW_SEALING                     = 2
  3425  	MFD_CLOEXEC                           = 1
  3426  	MFD_HUGETLB                           = 4
  3427  	MLOCK_ONFAULT                         = 1
  3428  	MREMAP_FIXED                          = 2
  3429  	MREMAP_MAYMOVE                        = 1
  3430  	MS_ASYNC                              = 1
  3431  	MS_INVALIDATE                         = 2
  3432  	MS_SYNC                               = 4
  3433  	PKEY_DISABLE_ACCESS                   = 0x1
  3434  	PKEY_DISABLE_WRITE                    = 0x2
  3435  	POSIX_MADV_DONTNEED                   = 4
  3436  	POSIX_MADV_NORMAL                     = 0
  3437  	POSIX_MADV_RANDOM                     = 1
  3438  	POSIX_MADV_SEQUENTIAL                 = 2
  3439  	POSIX_MADV_WILLNEED                   = 3
  3440  	PROT_EXEC                             = 0x4
  3441  	PROT_GROWSDOWN                        = 0x01000000
  3442  	PROT_GROWSUP                          = 0x02000000
  3443  	PROT_NONE                             = 0x0
  3444  	PROT_READ                             = 0x1
  3445  	PROT_SAO                              = 0x10
  3446  	PROT_WRITE                            = 0x2
  3447  	X_SYS_MMAN_H                          = 1
  3448  	TCLVAR_NAME_EQ                        = 101
  3449  	TCLVAR_NAME_MATCH                     = 109
  3450  	TCLVAR_VALUE_GLOB                     = 103
  3451  	TCLVAR_VALUE_LIKE                     = 108
  3452  	TCLVAR_VALUE_REGEXP                   = 114
  3453  	FAULT_INJECT_NONE                     = 0
  3454  	FAULT_INJECT_PERSISTENT               = 2
  3455  	FAULT_INJECT_TRANSIENT                = 1
  3456  	TESTVFS_ACCESS_MASK                   = 0x00004000
  3457  	TESTVFS_ALL_MASK                      = 0x001FFFFF
  3458  	TESTVFS_CKLOCK_MASK                   = 0x00080000
  3459  	TESTVFS_CLOSE_MASK                    = 0x00000800
  3460  	TESTVFS_DELETE_MASK                   = 0x00000400
  3461  	TESTVFS_FCNTL_MASK                    = 0x00100000
  3462  	TESTVFS_FULLPATHNAME_MASK             = 0x00008000
  3463  	TESTVFS_LOCK_MASK                     = 0x00040000
  3464  	TESTVFS_MAX_ARGS                      = 12
  3465  	TESTVFS_MAX_PAGES                     = 1024
  3466  	TESTVFS_OPEN_MASK                     = 0x00000100
  3467  	TESTVFS_READ_MASK                     = 0x00010000
  3468  	TESTVFS_SHMBARRIER_MASK               = 0x00000040
  3469  	TESTVFS_SHMCLOSE_MASK                 = 0x00000080
  3470  	TESTVFS_SHMLOCK_MASK                  = 0x00000010
  3471  	TESTVFS_SHMMAP_MASK                   = 0x00000020
  3472  	TESTVFS_SHMOPEN_MASK                  = 0x00000001
  3473  	TESTVFS_SYNC_MASK                     = 0x00000200
  3474  	TESTVFS_TRUNCATE_MASK                 = 0x00002000
  3475  	TESTVFS_UNLOCK_MASK                   = 0x00020000
  3476  	TESTVFS_WRITE_MASK                    = 0x00001000
  3477  )
  3478  
  3479  const (
  3480  	TCL_QUEUE_TAIL = 0
  3481  	TCL_QUEUE_HEAD = 1
  3482  	TCL_QUEUE_MARK = 2
  3483  )
  3484  
  3485  const (
  3486  	TCL_PATH_ABSOLUTE        = 0
  3487  	TCL_PATH_RELATIVE        = 1
  3488  	TCL_PATH_VOLUME_RELATIVE = 2
  3489  )
  3490  
  3491  const (
  3492  	TCL_INT      = 0
  3493  	TCL_DOUBLE   = 1
  3494  	TCL_EITHER   = 2
  3495  	TCL_WIDE_INT = 3
  3496  )
  3497  
  3498  const (
  3499  	_PC_LINK_MAX           = 0
  3500  	_PC_MAX_CANON          = 1
  3501  	_PC_MAX_INPUT          = 2
  3502  	_PC_NAME_MAX           = 3
  3503  	_PC_PATH_MAX           = 4
  3504  	_PC_PIPE_BUF           = 5
  3505  	_PC_CHOWN_RESTRICTED   = 6
  3506  	_PC_NO_TRUNC           = 7
  3507  	_PC_VDISABLE           = 8
  3508  	_PC_SYNC_IO            = 9
  3509  	_PC_ASYNC_IO           = 10
  3510  	_PC_PRIO_IO            = 11
  3511  	_PC_SOCK_MAXBUF        = 12
  3512  	_PC_FILESIZEBITS       = 13
  3513  	_PC_REC_INCR_XFER_SIZE = 14
  3514  	_PC_REC_MAX_XFER_SIZE  = 15
  3515  	_PC_REC_MIN_XFER_SIZE  = 16
  3516  	_PC_REC_XFER_ALIGN     = 17
  3517  	_PC_ALLOC_SIZE_MIN     = 18
  3518  	_PC_SYMLINK_MAX        = 19
  3519  	_PC_2_SYMLINKS         = 20
  3520  )
  3521  
  3522  const (
  3523  	_CS_PATH = 0
  3524  
  3525  	_CS_V6_WIDTH_RESTRICTED_ENVS = 1
  3526  
  3527  	_CS_GNU_LIBC_VERSION       = 2
  3528  	_CS_GNU_LIBPTHREAD_VERSION = 3
  3529  
  3530  	_CS_V5_WIDTH_RESTRICTED_ENVS = 4
  3531  
  3532  	_CS_V7_WIDTH_RESTRICTED_ENVS = 5
  3533  
  3534  	_CS_LFS_CFLAGS      = 1000
  3535  	_CS_LFS_LDFLAGS     = 1001
  3536  	_CS_LFS_LIBS        = 1002
  3537  	_CS_LFS_LINTFLAGS   = 1003
  3538  	_CS_LFS64_CFLAGS    = 1004
  3539  	_CS_LFS64_LDFLAGS   = 1005
  3540  	_CS_LFS64_LIBS      = 1006
  3541  	_CS_LFS64_LINTFLAGS = 1007
  3542  
  3543  	_CS_XBS5_ILP32_OFF32_CFLAGS     = 1100
  3544  	_CS_XBS5_ILP32_OFF32_LDFLAGS    = 1101
  3545  	_CS_XBS5_ILP32_OFF32_LIBS       = 1102
  3546  	_CS_XBS5_ILP32_OFF32_LINTFLAGS  = 1103
  3547  	_CS_XBS5_ILP32_OFFBIG_CFLAGS    = 1104
  3548  	_CS_XBS5_ILP32_OFFBIG_LDFLAGS   = 1105
  3549  	_CS_XBS5_ILP32_OFFBIG_LIBS      = 1106
  3550  	_CS_XBS5_ILP32_OFFBIG_LINTFLAGS = 1107
  3551  	_CS_XBS5_LP64_OFF64_CFLAGS      = 1108
  3552  	_CS_XBS5_LP64_OFF64_LDFLAGS     = 1109
  3553  	_CS_XBS5_LP64_OFF64_LIBS        = 1110
  3554  	_CS_XBS5_LP64_OFF64_LINTFLAGS   = 1111
  3555  	_CS_XBS5_LPBIG_OFFBIG_CFLAGS    = 1112
  3556  	_CS_XBS5_LPBIG_OFFBIG_LDFLAGS   = 1113
  3557  	_CS_XBS5_LPBIG_OFFBIG_LIBS      = 1114
  3558  	_CS_XBS5_LPBIG_OFFBIG_LINTFLAGS = 1115
  3559  
  3560  	_CS_POSIX_V6_ILP32_OFF32_CFLAGS     = 1116
  3561  	_CS_POSIX_V6_ILP32_OFF32_LDFLAGS    = 1117
  3562  	_CS_POSIX_V6_ILP32_OFF32_LIBS       = 1118
  3563  	_CS_POSIX_V6_ILP32_OFF32_LINTFLAGS  = 1119
  3564  	_CS_POSIX_V6_ILP32_OFFBIG_CFLAGS    = 1120
  3565  	_CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS   = 1121
  3566  	_CS_POSIX_V6_ILP32_OFFBIG_LIBS      = 1122
  3567  	_CS_POSIX_V6_ILP32_OFFBIG_LINTFLAGS = 1123
  3568  	_CS_POSIX_V6_LP64_OFF64_CFLAGS      = 1124
  3569  	_CS_POSIX_V6_LP64_OFF64_LDFLAGS     = 1125
  3570  	_CS_POSIX_V6_LP64_OFF64_LIBS        = 1126
  3571  	_CS_POSIX_V6_LP64_OFF64_LINTFLAGS   = 1127
  3572  	_CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS    = 1128
  3573  	_CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS   = 1129
  3574  	_CS_POSIX_V6_LPBIG_OFFBIG_LIBS      = 1130
  3575  	_CS_POSIX_V6_LPBIG_OFFBIG_LINTFLAGS = 1131
  3576  
  3577  	_CS_POSIX_V7_ILP32_OFF32_CFLAGS     = 1132
  3578  	_CS_POSIX_V7_ILP32_OFF32_LDFLAGS    = 1133
  3579  	_CS_POSIX_V7_ILP32_OFF32_LIBS       = 1134
  3580  	_CS_POSIX_V7_ILP32_OFF32_LINTFLAGS  = 1135
  3581  	_CS_POSIX_V7_ILP32_OFFBIG_CFLAGS    = 1136
  3582  	_CS_POSIX_V7_ILP32_OFFBIG_LDFLAGS   = 1137
  3583  	_CS_POSIX_V7_ILP32_OFFBIG_LIBS      = 1138
  3584  	_CS_POSIX_V7_ILP32_OFFBIG_LINTFLAGS = 1139
  3585  	_CS_POSIX_V7_LP64_OFF64_CFLAGS      = 1140
  3586  	_CS_POSIX_V7_LP64_OFF64_LDFLAGS     = 1141
  3587  	_CS_POSIX_V7_LP64_OFF64_LIBS        = 1142
  3588  	_CS_POSIX_V7_LP64_OFF64_LINTFLAGS   = 1143
  3589  	_CS_POSIX_V7_LPBIG_OFFBIG_CFLAGS    = 1144
  3590  	_CS_POSIX_V7_LPBIG_OFFBIG_LDFLAGS   = 1145
  3591  	_CS_POSIX_V7_LPBIG_OFFBIG_LIBS      = 1146
  3592  	_CS_POSIX_V7_LPBIG_OFFBIG_LINTFLAGS = 1147
  3593  
  3594  	_CS_V6_ENV = 1148
  3595  	_CS_V7_ENV = 1149
  3596  )
  3597  
  3598  const (
  3599  	_SC_ARG_MAX               = 0
  3600  	_SC_CHILD_MAX             = 1
  3601  	_SC_CLK_TCK               = 2
  3602  	_SC_NGROUPS_MAX           = 3
  3603  	_SC_OPEN_MAX              = 4
  3604  	_SC_STREAM_MAX            = 5
  3605  	_SC_TZNAME_MAX            = 6
  3606  	_SC_JOB_CONTROL           = 7
  3607  	_SC_SAVED_IDS             = 8
  3608  	_SC_REALTIME_SIGNALS      = 9
  3609  	_SC_PRIORITY_SCHEDULING   = 10
  3610  	_SC_TIMERS                = 11
  3611  	_SC_ASYNCHRONOUS_IO       = 12
  3612  	_SC_PRIORITIZED_IO        = 13
  3613  	_SC_SYNCHRONIZED_IO       = 14
  3614  	_SC_FSYNC                 = 15
  3615  	_SC_MAPPED_FILES          = 16
  3616  	_SC_MEMLOCK               = 17
  3617  	_SC_MEMLOCK_RANGE         = 18
  3618  	_SC_MEMORY_PROTECTION     = 19
  3619  	_SC_MESSAGE_PASSING       = 20
  3620  	_SC_SEMAPHORES            = 21
  3621  	_SC_SHARED_MEMORY_OBJECTS = 22
  3622  	_SC_AIO_LISTIO_MAX        = 23
  3623  	_SC_AIO_MAX               = 24
  3624  	_SC_AIO_PRIO_DELTA_MAX    = 25
  3625  	_SC_DELAYTIMER_MAX        = 26
  3626  	_SC_MQ_OPEN_MAX           = 27
  3627  	_SC_MQ_PRIO_MAX           = 28
  3628  	_SC_VERSION               = 29
  3629  	_SC_PAGESIZE              = 30
  3630  	_SC_RTSIG_MAX             = 31
  3631  	_SC_SEM_NSEMS_MAX         = 32
  3632  	_SC_SEM_VALUE_MAX         = 33
  3633  	_SC_SIGQUEUE_MAX          = 34
  3634  	_SC_TIMER_MAX             = 35
  3635  
  3636  	_SC_BC_BASE_MAX        = 36
  3637  	_SC_BC_DIM_MAX         = 37
  3638  	_SC_BC_SCALE_MAX       = 38
  3639  	_SC_BC_STRING_MAX      = 39
  3640  	_SC_COLL_WEIGHTS_MAX   = 40
  3641  	_SC_EQUIV_CLASS_MAX    = 41
  3642  	_SC_EXPR_NEST_MAX      = 42
  3643  	_SC_LINE_MAX           = 43
  3644  	_SC_RE_DUP_MAX         = 44
  3645  	_SC_CHARCLASS_NAME_MAX = 45
  3646  
  3647  	_SC_2_VERSION   = 46
  3648  	_SC_2_C_BIND    = 47
  3649  	_SC_2_C_DEV     = 48
  3650  	_SC_2_FORT_DEV  = 49
  3651  	_SC_2_FORT_RUN  = 50
  3652  	_SC_2_SW_DEV    = 51
  3653  	_SC_2_LOCALEDEF = 52
  3654  
  3655  	_SC_PII                 = 53
  3656  	_SC_PII_XTI             = 54
  3657  	_SC_PII_SOCKET          = 55
  3658  	_SC_PII_INTERNET        = 56
  3659  	_SC_PII_OSI             = 57
  3660  	_SC_POLL                = 58
  3661  	_SC_SELECT              = 59
  3662  	_SC_UIO_MAXIOV          = 60
  3663  	_SC_IOV_MAX             = 60
  3664  	_SC_PII_INTERNET_STREAM = 61
  3665  	_SC_PII_INTERNET_DGRAM  = 62
  3666  	_SC_PII_OSI_COTS        = 63
  3667  	_SC_PII_OSI_CLTS        = 64
  3668  	_SC_PII_OSI_M           = 65
  3669  	_SC_T_IOV_MAX           = 66
  3670  
  3671  	_SC_THREADS                      = 67
  3672  	_SC_THREAD_SAFE_FUNCTIONS        = 68
  3673  	_SC_GETGR_R_SIZE_MAX             = 69
  3674  	_SC_GETPW_R_SIZE_MAX             = 70
  3675  	_SC_LOGIN_NAME_MAX               = 71
  3676  	_SC_TTY_NAME_MAX                 = 72
  3677  	_SC_THREAD_DESTRUCTOR_ITERATIONS = 73
  3678  	_SC_THREAD_KEYS_MAX              = 74
  3679  	_SC_THREAD_STACK_MIN             = 75
  3680  	_SC_THREAD_THREADS_MAX           = 76
  3681  	_SC_THREAD_ATTR_STACKADDR        = 77
  3682  	_SC_THREAD_ATTR_STACKSIZE        = 78
  3683  	_SC_THREAD_PRIORITY_SCHEDULING   = 79
  3684  	_SC_THREAD_PRIO_INHERIT          = 80
  3685  	_SC_THREAD_PRIO_PROTECT          = 81
  3686  	_SC_THREAD_PROCESS_SHARED        = 82
  3687  
  3688  	_SC_NPROCESSORS_CONF = 83
  3689  	_SC_NPROCESSORS_ONLN = 84
  3690  	_SC_PHYS_PAGES       = 85
  3691  	_SC_AVPHYS_PAGES     = 86
  3692  	_SC_ATEXIT_MAX       = 87
  3693  	_SC_PASS_MAX         = 88
  3694  
  3695  	_SC_XOPEN_VERSION     = 89
  3696  	_SC_XOPEN_XCU_VERSION = 90
  3697  	_SC_XOPEN_UNIX        = 91
  3698  	_SC_XOPEN_CRYPT       = 92
  3699  	_SC_XOPEN_ENH_I18N    = 93
  3700  	_SC_XOPEN_SHM         = 94
  3701  
  3702  	_SC_2_CHAR_TERM = 95
  3703  	_SC_2_C_VERSION = 96
  3704  	_SC_2_UPE       = 97
  3705  
  3706  	_SC_XOPEN_XPG2 = 98
  3707  	_SC_XOPEN_XPG3 = 99
  3708  	_SC_XOPEN_XPG4 = 100
  3709  
  3710  	_SC_CHAR_BIT   = 101
  3711  	_SC_CHAR_MAX   = 102
  3712  	_SC_CHAR_MIN   = 103
  3713  	_SC_INT_MAX    = 104
  3714  	_SC_INT_MIN    = 105
  3715  	_SC_LONG_BIT   = 106
  3716  	_SC_WORD_BIT   = 107
  3717  	_SC_MB_LEN_MAX = 108
  3718  	_SC_NZERO      = 109
  3719  	_SC_SSIZE_MAX  = 110
  3720  	_SC_SCHAR_MAX  = 111
  3721  	_SC_SCHAR_MIN  = 112
  3722  	_SC_SHRT_MAX   = 113
  3723  	_SC_SHRT_MIN   = 114
  3724  	_SC_UCHAR_MAX  = 115
  3725  	_SC_UINT_MAX   = 116
  3726  	_SC_ULONG_MAX  = 117
  3727  	_SC_USHRT_MAX  = 118
  3728  
  3729  	_SC_NL_ARGMAX  = 119
  3730  	_SC_NL_LANGMAX = 120
  3731  	_SC_NL_MSGMAX  = 121
  3732  	_SC_NL_NMAX    = 122
  3733  	_SC_NL_SETMAX  = 123
  3734  	_SC_NL_TEXTMAX = 124
  3735  
  3736  	_SC_XBS5_ILP32_OFF32  = 125
  3737  	_SC_XBS5_ILP32_OFFBIG = 126
  3738  	_SC_XBS5_LP64_OFF64   = 127
  3739  	_SC_XBS5_LPBIG_OFFBIG = 128
  3740  
  3741  	_SC_XOPEN_LEGACY           = 129
  3742  	_SC_XOPEN_REALTIME         = 130
  3743  	_SC_XOPEN_REALTIME_THREADS = 131
  3744  
  3745  	_SC_ADVISORY_INFO          = 132
  3746  	_SC_BARRIERS               = 133
  3747  	_SC_BASE                   = 134
  3748  	_SC_C_LANG_SUPPORT         = 135
  3749  	_SC_C_LANG_SUPPORT_R       = 136
  3750  	_SC_CLOCK_SELECTION        = 137
  3751  	_SC_CPUTIME                = 138
  3752  	_SC_THREAD_CPUTIME         = 139
  3753  	_SC_DEVICE_IO              = 140
  3754  	_SC_DEVICE_SPECIFIC        = 141
  3755  	_SC_DEVICE_SPECIFIC_R      = 142
  3756  	_SC_FD_MGMT                = 143
  3757  	_SC_FIFO                   = 144
  3758  	_SC_PIPE                   = 145
  3759  	_SC_FILE_ATTRIBUTES        = 146
  3760  	_SC_FILE_LOCKING           = 147
  3761  	_SC_FILE_SYSTEM            = 148
  3762  	_SC_MONOTONIC_CLOCK        = 149
  3763  	_SC_MULTI_PROCESS          = 150
  3764  	_SC_SINGLE_PROCESS         = 151
  3765  	_SC_NETWORKING             = 152
  3766  	_SC_READER_WRITER_LOCKS    = 153
  3767  	_SC_SPIN_LOCKS             = 154
  3768  	_SC_REGEXP                 = 155
  3769  	_SC_REGEX_VERSION          = 156
  3770  	_SC_SHELL                  = 157
  3771  	_SC_SIGNALS                = 158
  3772  	_SC_SPAWN                  = 159
  3773  	_SC_SPORADIC_SERVER        = 160
  3774  	_SC_THREAD_SPORADIC_SERVER = 161
  3775  	_SC_SYSTEM_DATABASE        = 162
  3776  	_SC_SYSTEM_DATABASE_R      = 163
  3777  	_SC_TIMEOUTS               = 164
  3778  	_SC_TYPED_MEMORY_OBJECTS   = 165
  3779  	_SC_USER_GROUPS            = 166
  3780  	_SC_USER_GROUPS_R          = 167
  3781  	_SC_2_PBS                  = 168
  3782  	_SC_2_PBS_ACCOUNTING       = 169
  3783  	_SC_2_PBS_LOCATE           = 170
  3784  	_SC_2_PBS_MESSAGE          = 171
  3785  	_SC_2_PBS_TRACK            = 172
  3786  	_SC_SYMLOOP_MAX            = 173
  3787  	_SC_STREAMS                = 174
  3788  	_SC_2_PBS_CHECKPOINT       = 175
  3789  
  3790  	_SC_V6_ILP32_OFF32  = 176
  3791  	_SC_V6_ILP32_OFFBIG = 177
  3792  	_SC_V6_LP64_OFF64   = 178
  3793  	_SC_V6_LPBIG_OFFBIG = 179
  3794  
  3795  	_SC_HOST_NAME_MAX      = 180
  3796  	_SC_TRACE              = 181
  3797  	_SC_TRACE_EVENT_FILTER = 182
  3798  	_SC_TRACE_INHERIT      = 183
  3799  	_SC_TRACE_LOG          = 184
  3800  
  3801  	_SC_LEVEL1_ICACHE_SIZE     = 185
  3802  	_SC_LEVEL1_ICACHE_ASSOC    = 186
  3803  	_SC_LEVEL1_ICACHE_LINESIZE = 187
  3804  	_SC_LEVEL1_DCACHE_SIZE     = 188
  3805  	_SC_LEVEL1_DCACHE_ASSOC    = 189
  3806  	_SC_LEVEL1_DCACHE_LINESIZE = 190
  3807  	_SC_LEVEL2_CACHE_SIZE      = 191
  3808  	_SC_LEVEL2_CACHE_ASSOC     = 192
  3809  	_SC_LEVEL2_CACHE_LINESIZE  = 193
  3810  	_SC_LEVEL3_CACHE_SIZE      = 194
  3811  	_SC_LEVEL3_CACHE_ASSOC     = 195
  3812  	_SC_LEVEL3_CACHE_LINESIZE  = 196
  3813  	_SC_LEVEL4_CACHE_SIZE      = 197
  3814  	_SC_LEVEL4_CACHE_ASSOC     = 198
  3815  	_SC_LEVEL4_CACHE_LINESIZE  = 199
  3816  
  3817  	_SC_IPV6        = 235
  3818  	_SC_RAW_SOCKETS = 236
  3819  
  3820  	_SC_V7_ILP32_OFF32  = 237
  3821  	_SC_V7_ILP32_OFFBIG = 238
  3822  	_SC_V7_LP64_OFF64   = 239
  3823  	_SC_V7_LPBIG_OFFBIG = 240
  3824  
  3825  	_SC_SS_REPL_MAX = 241
  3826  
  3827  	_SC_TRACE_EVENT_NAME_MAX = 242
  3828  	_SC_TRACE_NAME_MAX       = 243
  3829  	_SC_TRACE_SYS_MAX        = 244
  3830  	_SC_TRACE_USER_EVENT_MAX = 245
  3831  
  3832  	_SC_XOPEN_STREAMS = 246
  3833  
  3834  	_SC_THREAD_ROBUST_PRIO_INHERIT = 247
  3835  	_SC_THREAD_ROBUST_PRIO_PROTECT = 248
  3836  )
  3837  
  3838  const (
  3839  	F_OWNER_TID  = 0
  3840  	F_OWNER_PID  = 1
  3841  	F_OWNER_PGRP = 2
  3842  	F_OWNER_GID  = 2
  3843  )
  3844  
  3845  const (
  3846  	RUSAGE_SELF = 0
  3847  
  3848  	RUSAGE_CHILDREN = -1
  3849  
  3850  	RUSAGE_THREAD = 1
  3851  )
  3852  
  3853  const (
  3854  	PRIO_PROCESS = 0
  3855  	PRIO_PGRP    = 1
  3856  	PRIO_USER    = 2
  3857  )
  3858  
  3859  const (
  3860  	RLIMIT_CPU = 0
  3861  
  3862  	RLIMIT_FSIZE = 1
  3863  
  3864  	RLIMIT_DATA = 2
  3865  
  3866  	RLIMIT_STACK = 3
  3867  
  3868  	RLIMIT_CORE = 4
  3869  
  3870  	__RLIMIT_RSS = 5
  3871  
  3872  	RLIMIT_NOFILE  = 7
  3873  	__RLIMIT_OFILE = 7
  3874  
  3875  	RLIMIT_AS = 9
  3876  
  3877  	__RLIMIT_NPROC = 6
  3878  
  3879  	__RLIMIT_MEMLOCK = 8
  3880  
  3881  	__RLIMIT_LOCKS = 10
  3882  
  3883  	__RLIMIT_SIGPENDING = 11
  3884  
  3885  	__RLIMIT_MSGQUEUE = 12
  3886  
  3887  	__RLIMIT_NICE = 13
  3888  
  3889  	__RLIMIT_RTPRIO = 14
  3890  
  3891  	__RLIMIT_RTTIME = 15
  3892  
  3893  	__RLIMIT_NLIMITS = 16
  3894  	__RLIM_NLIMITS   = 16
  3895  )
  3896  
  3897  const (
  3898  	SIGEV_SIGNAL = 0
  3899  	SIGEV_NONE   = 1
  3900  	SIGEV_THREAD = 2
  3901  
  3902  	SIGEV_THREAD_ID = 4
  3903  )
  3904  
  3905  const (
  3906  	SEGV_MAPERR  = 1
  3907  	SEGV_ACCERR  = 2
  3908  	SEGV_BNDERR  = 3
  3909  	SEGV_PKUERR  = 4
  3910  	SEGV_ACCADI  = 5
  3911  	SEGV_ADIDERR = 6
  3912  	SEGV_ADIPERR = 7
  3913  )
  3914  
  3915  const (
  3916  	BUS_ADRALN    = 1
  3917  	BUS_ADRERR    = 2
  3918  	BUS_OBJERR    = 3
  3919  	BUS_MCEERR_AR = 4
  3920  	BUS_MCEERR_AO = 5
  3921  )
  3922  
  3923  const (
  3924  	CLD_EXITED    = 1
  3925  	CLD_KILLED    = 2
  3926  	CLD_DUMPED    = 3
  3927  	CLD_TRAPPED   = 4
  3928  	CLD_STOPPED   = 5
  3929  	CLD_CONTINUED = 6
  3930  )
  3931  
  3932  const (
  3933  	POLL_IN  = 1
  3934  	POLL_OUT = 2
  3935  	POLL_MSG = 3
  3936  	POLL_ERR = 4
  3937  	POLL_PRI = 5
  3938  	POLL_HUP = 6
  3939  )
  3940  
  3941  const (
  3942  	SI_ASYNCNL  = -60
  3943  	SI_DETHREAD = -7
  3944  
  3945  	SI_TKILL   = -6
  3946  	SI_SIGIO   = -5
  3947  	SI_ASYNCIO = -4
  3948  	SI_MESGQ   = -3
  3949  	SI_TIMER   = -2
  3950  	SI_QUEUE   = -1
  3951  	SI_USER    = 0
  3952  	SI_KERNEL  = 128
  3953  )
  3954  
  3955  const (
  3956  	ILL_ILLOPC   = 1
  3957  	ILL_ILLOPN   = 2
  3958  	ILL_ILLADR   = 3
  3959  	ILL_ILLTRP   = 4
  3960  	ILL_PRVOPC   = 5
  3961  	ILL_PRVREG   = 6
  3962  	ILL_COPROC   = 7
  3963  	ILL_BADSTK   = 8
  3964  	ILL_BADIADDR = 9
  3965  )
  3966  
  3967  const (
  3968  	FPE_INTDIV   = 1
  3969  	FPE_INTOVF   = 2
  3970  	FPE_FLTDIV   = 3
  3971  	FPE_FLTOVF   = 4
  3972  	FPE_FLTUND   = 5
  3973  	FPE_FLTRES   = 6
  3974  	FPE_FLTINV   = 7
  3975  	FPE_FLTSUB   = 8
  3976  	FPE_FLTUNK   = 14
  3977  	FPE_CONDTRAP = 15
  3978  )
  3979  
  3980  const (
  3981  	SS_ONSTACK = 1
  3982  	SS_DISABLE = 2
  3983  )
  3984  
  3985  const (
  3986  	P_ALL  = 0
  3987  	P_PID  = 1
  3988  	P_PGID = 2
  3989  )
  3990  
  3991  const (
  3992  	_ISupper  = 256
  3993  	_ISlower  = 512
  3994  	_ISalpha  = 1024
  3995  	_ISdigit  = 2048
  3996  	_ISxdigit = 4096
  3997  	_ISspace  = 8192
  3998  	_ISprint  = 16384
  3999  	_ISgraph  = 32768
  4000  	_ISblank  = 1
  4001  	_IScntrl  = 2
  4002  	_ISpunct  = 4
  4003  	_ISalnum  = 8
  4004  )
  4005  
  4006  const (
  4007  	DT_UNKNOWN = 0
  4008  	DT_FIFO    = 1
  4009  	DT_CHR     = 2
  4010  	DT_DIR     = 4
  4011  	DT_BLK     = 6
  4012  	DT_REG     = 8
  4013  	DT_LNK     = 10
  4014  	DT_SOCK    = 12
  4015  	DT_WHT     = 14
  4016  )
  4017  
  4018  const (
  4019  	PTHREAD_RWLOCK_PREFER_READER_NP              = 0
  4020  	PTHREAD_RWLOCK_PREFER_WRITER_NP              = 1
  4021  	PTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP = 2
  4022  	PTHREAD_RWLOCK_DEFAULT_NP                    = 0
  4023  )
  4024  
  4025  const (
  4026  	PTHREAD_INHERIT_SCHED  = 0
  4027  	PTHREAD_EXPLICIT_SCHED = 1
  4028  )
  4029  
  4030  const (
  4031  	PTHREAD_SCOPE_SYSTEM  = 0
  4032  	PTHREAD_SCOPE_PROCESS = 1
  4033  )
  4034  
  4035  const (
  4036  	PTHREAD_PROCESS_PRIVATE = 0
  4037  	PTHREAD_PROCESS_SHARED  = 1
  4038  )
  4039  
  4040  const (
  4041  	PTHREAD_CANCEL_ENABLE  = 0
  4042  	PTHREAD_CANCEL_DISABLE = 1
  4043  )
  4044  const (
  4045  	PTHREAD_CANCEL_DEFERRED     = 0
  4046  	PTHREAD_CANCEL_ASYNCHRONOUS = 1
  4047  )
  4048  
  4049  const (
  4050  	PTHREAD_CREATE_JOINABLE = 0
  4051  	PTHREAD_CREATE_DETACHED = 1
  4052  )
  4053  
  4054  const (
  4055  	PTHREAD_MUTEX_TIMED_NP      = 0
  4056  	PTHREAD_MUTEX_RECURSIVE_NP  = 1
  4057  	PTHREAD_MUTEX_ERRORCHECK_NP = 2
  4058  	PTHREAD_MUTEX_ADAPTIVE_NP   = 3
  4059  	PTHREAD_MUTEX_NORMAL        = 0
  4060  	PTHREAD_MUTEX_RECURSIVE     = 1
  4061  	PTHREAD_MUTEX_ERRORCHECK    = 2
  4062  	PTHREAD_MUTEX_DEFAULT       = 0
  4063  	PTHREAD_MUTEX_FAST_NP       = 0
  4064  )
  4065  
  4066  const (
  4067  	PTHREAD_MUTEX_STALLED    = 0
  4068  	PTHREAD_MUTEX_STALLED_NP = 0
  4069  	PTHREAD_MUTEX_ROBUST     = 1
  4070  	PTHREAD_MUTEX_ROBUST_NP  = 1
  4071  )
  4072  
  4073  const (
  4074  	PTHREAD_PRIO_NONE    = 0
  4075  	PTHREAD_PRIO_INHERIT = 1
  4076  	PTHREAD_PRIO_PROTECT = 2
  4077  )
  4078  
  4079  const (
  4080  	ITIMER_REAL = 0
  4081  
  4082  	ITIMER_VIRTUAL = 1
  4083  
  4084  	ITIMER_PROF = 2
  4085  )
  4086  
  4087  type ptrdiff_t = int64
  4088  
  4089  type size_t = uint64
  4090  
  4091  type wchar_t = int32
  4092  
  4093  type va_list = uintptr
  4094  
  4095  type sqlite32 = struct {
  4096  	FpVfs                   uintptr
  4097  	FpVdbe                  uintptr
  4098  	FpDfltColl              uintptr
  4099  	Fmutex                  uintptr
  4100  	FaDb                    uintptr
  4101  	FnDb                    int32
  4102  	FmDbFlags               u32
  4103  	Fflags                  u64
  4104  	FlastRowid              i64
  4105  	FszMmap                 i64
  4106  	FnSchemaLock            u32
  4107  	FopenFlags              uint32
  4108  	FerrCode                int32
  4109  	FerrByteOffset          int32
  4110  	FerrMask                int32
  4111  	FiSysErrno              int32
  4112  	FdbOptFlags             u32
  4113  	Fenc                    u8
  4114  	FautoCommit             u8
  4115  	Ftemp_store             u8
  4116  	FmallocFailed           u8
  4117  	FbBenignMalloc          u8
  4118  	FdfltLockMode           u8
  4119  	FnextAutovac            int8
  4120  	FsuppressErr            u8
  4121  	FvtabOnConflict         u8
  4122  	FisTransactionSavepoint u8
  4123  	FmTrace                 u8
  4124  	FnoSharedCache          u8
  4125  	FnSqlExec               u8
  4126  	FeOpenState             u8
  4127  	F__ccgo_pad1            [2]byte
  4128  	FnextPagesize           int32
  4129  	FnChange                i64
  4130  	FnTotalChange           i64
  4131  	FaLimit                 [12]int32
  4132  	FnMaxSorterMmap         int32
  4133  	F__ccgo_pad2            [4]byte
  4134  	Finit                   struct {
  4135  		FnewTnum       Pgno
  4136  		FiDb           u8
  4137  		Fbusy          u8
  4138  		F__ccgo_pad1   [2]byte
  4139  		ForphanTrigger uint8
  4140  		F__ccgo_pad2   [7]byte
  4141  		FazInit        uintptr
  4142  	}
  4143  	FnVdbeActive        int32
  4144  	FnVdbeRead          int32
  4145  	FnVdbeWrite         int32
  4146  	FnVdbeExec          int32
  4147  	FnVDestroy          int32
  4148  	FnExtension         int32
  4149  	FaExtension         uintptr
  4150  	Ftrace              struct{ FxLegacy uintptr }
  4151  	FpTraceArg          uintptr
  4152  	FxProfile           uintptr
  4153  	FpProfileArg        uintptr
  4154  	FpCommitArg         uintptr
  4155  	FxCommitCallback    uintptr
  4156  	FpRollbackArg       uintptr
  4157  	FxRollbackCallback  uintptr
  4158  	FpUpdateArg         uintptr
  4159  	FxUpdateCallback    uintptr
  4160  	FpAutovacPagesArg   uintptr
  4161  	FxAutovacDestr      uintptr
  4162  	FxAutovacPages      uintptr
  4163  	FpParse             uintptr
  4164  	FpPreUpdateArg      uintptr
  4165  	FxPreUpdateCallback uintptr
  4166  	FpPreUpdate         uintptr
  4167  	FxWalCallback       uintptr
  4168  	FpWalArg            uintptr
  4169  	FxCollNeeded        uintptr
  4170  	FxCollNeeded16      uintptr
  4171  	FpCollNeededArg     uintptr
  4172  	FpErr               uintptr
  4173  	Fu1                 struct {
  4174  		F__ccgo_pad1   [0]uint64
  4175  		FisInterrupted int32
  4176  		F__ccgo_pad2   [4]byte
  4177  	}
  4178  	Flookaside           Lookaside
  4179  	FxAuth               sqlite3_xauth
  4180  	FpAuthArg            uintptr
  4181  	FxProgress           uintptr
  4182  	FpProgressArg        uintptr
  4183  	FnProgressOps        uint32
  4184  	FnVTrans             int32
  4185  	FaModule             Hash
  4186  	FpVtabCtx            uintptr
  4187  	FaVTrans             uintptr
  4188  	FpDisconnect         uintptr
  4189  	FaFunc               Hash
  4190  	FaCollSeq            Hash
  4191  	FbusyHandler         BusyHandler
  4192  	FaDbStatic           [2]Db
  4193  	FpSavepoint          uintptr
  4194  	FnAnalysisLimit      int32
  4195  	FbusyTimeout         int32
  4196  	FnSavepoint          int32
  4197  	FnStatement          int32
  4198  	FnDeferredCons       i64
  4199  	FnDeferredImmCons    i64
  4200  	FpnBytesFreed        uintptr
  4201  	FpBlockingConnection uintptr
  4202  	FpUnlockConnection   uintptr
  4203  	FpUnlockArg          uintptr
  4204  	FxUnlockNotify       uintptr
  4205  	FpNextBlocked        uintptr
  4206  }
  4207  
  4208  type sqlite_int64 = int64
  4209  type sqlite_uint64 = uint64
  4210  type sqlite3_int64 = sqlite_int64
  4211  type sqlite3_uint64 = sqlite_uint64
  4212  
  4213  type sqlite3_callback = uintptr
  4214  
  4215  type sqlite3_file1 = struct{ FpMethods uintptr }
  4216  
  4217  type sqlite3_file = sqlite3_file1
  4218  type sqlite3_io_methods1 = struct {
  4219  	FiVersion               int32
  4220  	F__ccgo_pad1            [4]byte
  4221  	FxClose                 uintptr
  4222  	FxRead                  uintptr
  4223  	FxWrite                 uintptr
  4224  	FxTruncate              uintptr
  4225  	FxSync                  uintptr
  4226  	FxFileSize              uintptr
  4227  	FxLock                  uintptr
  4228  	FxUnlock                uintptr
  4229  	FxCheckReservedLock     uintptr
  4230  	FxFileControl           uintptr
  4231  	FxSectorSize            uintptr
  4232  	FxDeviceCharacteristics uintptr
  4233  	FxShmMap                uintptr
  4234  	FxShmLock               uintptr
  4235  	FxShmBarrier            uintptr
  4236  	FxShmUnmap              uintptr
  4237  	FxFetch                 uintptr
  4238  	FxUnfetch               uintptr
  4239  }
  4240  
  4241  type sqlite3_io_methods = sqlite3_io_methods1
  4242  
  4243  type sqlite3_mutex1 = struct {
  4244  	FpReal       uintptr
  4245  	FeType       int32
  4246  	F__ccgo_pad1 [4]byte
  4247  }
  4248  
  4249  type sqlite3_api_routines1 = struct {
  4250  	Faggregate_context      uintptr
  4251  	Faggregate_count        uintptr
  4252  	Fbind_blob              uintptr
  4253  	Fbind_double            uintptr
  4254  	Fbind_int               uintptr
  4255  	Fbind_int64             uintptr
  4256  	Fbind_null              uintptr
  4257  	Fbind_parameter_count   uintptr
  4258  	Fbind_parameter_index   uintptr
  4259  	Fbind_parameter_name    uintptr
  4260  	Fbind_text              uintptr
  4261  	Fbind_text16            uintptr
  4262  	Fbind_value             uintptr
  4263  	Fbusy_handler           uintptr
  4264  	Fbusy_timeout           uintptr
  4265  	Fchanges                uintptr
  4266  	Fclose                  uintptr
  4267  	Fcollation_needed       uintptr
  4268  	Fcollation_needed16     uintptr
  4269  	Fcolumn_blob            uintptr
  4270  	Fcolumn_bytes           uintptr
  4271  	Fcolumn_bytes16         uintptr
  4272  	Fcolumn_count           uintptr
  4273  	Fcolumn_database_name   uintptr
  4274  	Fcolumn_database_name16 uintptr
  4275  	Fcolumn_decltype        uintptr
  4276  	Fcolumn_decltype16      uintptr
  4277  	Fcolumn_double          uintptr
  4278  	Fcolumn_int             uintptr
  4279  	Fcolumn_int64           uintptr
  4280  	Fcolumn_name            uintptr
  4281  	Fcolumn_name16          uintptr
  4282  	Fcolumn_origin_name     uintptr
  4283  	Fcolumn_origin_name16   uintptr
  4284  	Fcolumn_table_name      uintptr
  4285  	Fcolumn_table_name16    uintptr
  4286  	Fcolumn_text            uintptr
  4287  	Fcolumn_text16          uintptr
  4288  	Fcolumn_type            uintptr
  4289  	Fcolumn_value           uintptr
  4290  	Fcommit_hook            uintptr
  4291  	Fcomplete               uintptr
  4292  	Fcomplete16             uintptr
  4293  	Fcreate_collation       uintptr
  4294  	Fcreate_collation16     uintptr
  4295  	Fcreate_function        uintptr
  4296  	Fcreate_function16      uintptr
  4297  	Fcreate_module          uintptr
  4298  	Fdata_count             uintptr
  4299  	Fdb_handle              uintptr
  4300  	Fdeclare_vtab           uintptr
  4301  	Fenable_shared_cache    uintptr
  4302  	Ferrcode                uintptr
  4303  	Ferrmsg                 uintptr
  4304  	Ferrmsg16               uintptr
  4305  	Fexec                   uintptr
  4306  	Fexpired                uintptr
  4307  	Ffinalize               uintptr
  4308  	Ffree                   uintptr
  4309  	Ffree_table             uintptr
  4310  	Fget_autocommit         uintptr
  4311  	Fget_auxdata            uintptr
  4312  	Fget_table              uintptr
  4313  	Fglobal_recover         uintptr
  4314  	Finterruptx             uintptr
  4315  	Flast_insert_rowid      uintptr
  4316  	Flibversion             uintptr
  4317  	Flibversion_number      uintptr
  4318  	Fmalloc                 uintptr
  4319  	Fmprintf                uintptr
  4320  	Fopen                   uintptr
  4321  	Fopen16                 uintptr
  4322  	Fprepare                uintptr
  4323  	Fprepare16              uintptr
  4324  	Fprofile                uintptr
  4325  	Fprogress_handler       uintptr
  4326  	Frealloc                uintptr
  4327  	Freset                  uintptr
  4328  	Fresult_blob            uintptr
  4329  	Fresult_double          uintptr
  4330  	Fresult_error           uintptr
  4331  	Fresult_error16         uintptr
  4332  	Fresult_int             uintptr
  4333  	Fresult_int64           uintptr
  4334  	Fresult_null            uintptr
  4335  	Fresult_text            uintptr
  4336  	Fresult_text16          uintptr
  4337  	Fresult_text16be        uintptr
  4338  	Fresult_text16le        uintptr
  4339  	Fresult_value           uintptr
  4340  	Frollback_hook          uintptr
  4341  	Fset_authorizer         uintptr
  4342  	Fset_auxdata            uintptr
  4343  	Fxsnprintf              uintptr
  4344  	Fstep                   uintptr
  4345  	Ftable_column_metadata  uintptr
  4346  	Fthread_cleanup         uintptr
  4347  	Ftotal_changes          uintptr
  4348  	Ftrace                  uintptr
  4349  	Ftransfer_bindings      uintptr
  4350  	Fupdate_hook            uintptr
  4351  	Fuser_data              uintptr
  4352  	Fvalue_blob             uintptr
  4353  	Fvalue_bytes            uintptr
  4354  	Fvalue_bytes16          uintptr
  4355  	Fvalue_double           uintptr
  4356  	Fvalue_int              uintptr
  4357  	Fvalue_int64            uintptr
  4358  	Fvalue_numeric_type     uintptr
  4359  	Fvalue_text             uintptr
  4360  	Fvalue_text16           uintptr
  4361  	Fvalue_text16be         uintptr
  4362  	Fvalue_text16le         uintptr
  4363  	Fvalue_type             uintptr
  4364  	Fvmprintf               uintptr
  4365  	Foverload_function      uintptr
  4366  	Fprepare_v2             uintptr
  4367  	Fprepare16_v2           uintptr
  4368  	Fclear_bindings         uintptr
  4369  	Fcreate_module_v2       uintptr
  4370  	Fbind_zeroblob          uintptr
  4371  	Fblob_bytes             uintptr
  4372  	Fblob_close             uintptr
  4373  	Fblob_open              uintptr
  4374  	Fblob_read              uintptr
  4375  	Fblob_write             uintptr
  4376  	Fcreate_collation_v2    uintptr
  4377  	Ffile_control           uintptr
  4378  	Fmemory_highwater       uintptr
  4379  	Fmemory_used            uintptr
  4380  	Fmutex_alloc            uintptr
  4381  	Fmutex_enter            uintptr
  4382  	Fmutex_free             uintptr
  4383  	Fmutex_leave            uintptr
  4384  	Fmutex_try              uintptr
  4385  	Fopen_v2                uintptr
  4386  	Frelease_memory         uintptr
  4387  	Fresult_error_nomem     uintptr
  4388  	Fresult_error_toobig    uintptr
  4389  	Fsleep                  uintptr
  4390  	Fsoft_heap_limit        uintptr
  4391  	Fvfs_find               uintptr
  4392  	Fvfs_register           uintptr
  4393  	Fvfs_unregister         uintptr
  4394  	Fxthreadsafe            uintptr
  4395  	Fresult_zeroblob        uintptr
  4396  	Fresult_error_code      uintptr
  4397  	Ftest_control           uintptr
  4398  	Frandomness             uintptr
  4399  	Fcontext_db_handle      uintptr
  4400  	Fextended_result_codes  uintptr
  4401  	Flimit                  uintptr
  4402  	Fnext_stmt              uintptr
  4403  	Fsql                    uintptr
  4404  	Fstatus                 uintptr
  4405  	Fbackup_finish          uintptr
  4406  	Fbackup_init            uintptr
  4407  	Fbackup_pagecount       uintptr
  4408  	Fbackup_remaining       uintptr
  4409  	Fbackup_step            uintptr
  4410  	Fcompileoption_get      uintptr
  4411  	Fcompileoption_used     uintptr
  4412  	Fcreate_function_v2     uintptr
  4413  	Fdb_config              uintptr
  4414  	Fdb_mutex               uintptr
  4415  	Fdb_status              uintptr
  4416  	Fextended_errcode       uintptr
  4417  	Flog                    uintptr
  4418  	Fsoft_heap_limit64      uintptr
  4419  	Fsourceid               uintptr
  4420  	Fstmt_status            uintptr
  4421  	Fstrnicmp               uintptr
  4422  	Funlock_notify          uintptr
  4423  	Fwal_autocheckpoint     uintptr
  4424  	Fwal_checkpoint         uintptr
  4425  	Fwal_hook               uintptr
  4426  	Fblob_reopen            uintptr
  4427  	Fvtab_config            uintptr
  4428  	Fvtab_on_conflict       uintptr
  4429  	Fclose_v2               uintptr
  4430  	Fdb_filename            uintptr
  4431  	Fdb_readonly            uintptr
  4432  	Fdb_release_memory      uintptr
  4433  	Ferrstr                 uintptr
  4434  	Fstmt_busy              uintptr
  4435  	Fstmt_readonly          uintptr
  4436  	Fstricmp                uintptr
  4437  	Furi_boolean            uintptr
  4438  	Furi_int64              uintptr
  4439  	Furi_parameter          uintptr
  4440  	Fxvsnprintf             uintptr
  4441  	Fwal_checkpoint_v2      uintptr
  4442  	Fauto_extension         uintptr
  4443  	Fbind_blob64            uintptr
  4444  	Fbind_text64            uintptr
  4445  	Fcancel_auto_extension  uintptr
  4446  	Fload_extension         uintptr
  4447  	Fmalloc64               uintptr
  4448  	Fmsize                  uintptr
  4449  	Frealloc64              uintptr
  4450  	Freset_auto_extension   uintptr
  4451  	Fresult_blob64          uintptr
  4452  	Fresult_text64          uintptr
  4453  	Fstrglob                uintptr
  4454  	Fvalue_dup              uintptr
  4455  	Fvalue_free             uintptr
  4456  	Fresult_zeroblob64      uintptr
  4457  	Fbind_zeroblob64        uintptr
  4458  	Fvalue_subtype          uintptr
  4459  	Fresult_subtype         uintptr
  4460  	Fstatus64               uintptr
  4461  	Fstrlike                uintptr
  4462  	Fdb_cacheflush          uintptr
  4463  	Fsystem_errno           uintptr
  4464  	Ftrace_v2               uintptr
  4465  	Fexpanded_sql           uintptr
  4466  	Fset_last_insert_rowid  uintptr
  4467  	Fprepare_v3             uintptr
  4468  	Fprepare16_v3           uintptr
  4469  	Fbind_pointer           uintptr
  4470  	Fresult_pointer         uintptr
  4471  	Fvalue_pointer          uintptr
  4472  	Fvtab_nochange          uintptr
  4473  	Fvalue_nochange         uintptr
  4474  	Fvtab_collation         uintptr
  4475  	Fkeyword_count          uintptr
  4476  	Fkeyword_name           uintptr
  4477  	Fkeyword_check          uintptr
  4478  	Fstr_new                uintptr
  4479  	Fstr_finish             uintptr
  4480  	Fstr_appendf            uintptr
  4481  	Fstr_vappendf           uintptr
  4482  	Fstr_append             uintptr
  4483  	Fstr_appendall          uintptr
  4484  	Fstr_appendchar         uintptr
  4485  	Fstr_reset              uintptr
  4486  	Fstr_errcode            uintptr
  4487  	Fstr_length             uintptr
  4488  	Fstr_value              uintptr
  4489  	Fcreate_window_function uintptr
  4490  	Fnormalized_sql         uintptr
  4491  	Fstmt_isexplain         uintptr
  4492  	Fvalue_frombind         uintptr
  4493  	Fdrop_modules           uintptr
  4494  	Fhard_heap_limit64      uintptr
  4495  	Furi_key                uintptr
  4496  	Ffilename_database      uintptr
  4497  	Ffilename_journal       uintptr
  4498  	Ffilename_wal           uintptr
  4499  	Fcreate_filename        uintptr
  4500  	Ffree_filename          uintptr
  4501  	Fdatabase_file_object   uintptr
  4502  	Ftxn_state              uintptr
  4503  	Fchanges64              uintptr
  4504  	Ftotal_changes64        uintptr
  4505  	Fautovacuum_pages       uintptr
  4506  	Ferror_offset           uintptr
  4507  	Fvtab_rhs_value         uintptr
  4508  	Fvtab_distinct          uintptr
  4509  	Fvtab_in                uintptr
  4510  	Fvtab_in_first          uintptr
  4511  	Fvtab_in_next           uintptr
  4512  	Fdeserialize            uintptr
  4513  	Fserialize              uintptr
  4514  	Fdb_name                uintptr
  4515  }
  4516  
  4517  type sqlite3_vfs1 = struct {
  4518  	FiVersion          int32
  4519  	FszOsFile          int32
  4520  	FmxPathname        int32
  4521  	F__ccgo_pad1       [4]byte
  4522  	FpNext             uintptr
  4523  	FzName             uintptr
  4524  	FpAppData          uintptr
  4525  	FxOpen             uintptr
  4526  	FxDelete           uintptr
  4527  	FxAccess           uintptr
  4528  	FxFullPathname     uintptr
  4529  	FxDlOpen           uintptr
  4530  	FxDlError          uintptr
  4531  	FxDlSym            uintptr
  4532  	FxDlClose          uintptr
  4533  	FxRandomness       uintptr
  4534  	FxSleep            uintptr
  4535  	FxCurrentTime      uintptr
  4536  	FxGetLastError     uintptr
  4537  	FxCurrentTimeInt64 uintptr
  4538  	FxSetSystemCall    uintptr
  4539  	FxGetSystemCall    uintptr
  4540  	FxNextSystemCall   uintptr
  4541  }
  4542  
  4543  type sqlite3_vfs = sqlite3_vfs1
  4544  type sqlite3_syscall_ptr = uintptr
  4545  
  4546  type sqlite3_mem_methods1 = struct {
  4547  	FxMalloc   uintptr
  4548  	FxFree     uintptr
  4549  	FxRealloc  uintptr
  4550  	FxSize     uintptr
  4551  	FxRoundup  uintptr
  4552  	FxInit     uintptr
  4553  	FxShutdown uintptr
  4554  	FpAppData  uintptr
  4555  }
  4556  
  4557  type sqlite3_mem_methods = sqlite3_mem_methods1
  4558  
  4559  type sqlite3_value1 = struct {
  4560  	Fu        struct{ Fr float64 }
  4561  	Fz        uintptr
  4562  	Fn        int32
  4563  	Fflags    u16
  4564  	Fenc      u8
  4565  	FeSubtype u8
  4566  	Fdb       uintptr
  4567  	FszMalloc int32
  4568  	FuTemp    u32
  4569  	FzMalloc  uintptr
  4570  	FxDel     uintptr
  4571  }
  4572  
  4573  type sqlite3_context1 = struct {
  4574  	FpOut        uintptr
  4575  	FpFunc       uintptr
  4576  	FpMem        uintptr
  4577  	FpVdbe       uintptr
  4578  	FiOp         int32
  4579  	FisError     int32
  4580  	Fenc         u8
  4581  	FskipFlag    u8
  4582  	Fargc        u8
  4583  	F__ccgo_pad1 [5]byte
  4584  	Fargv        [1]uintptr
  4585  }
  4586  
  4587  type sqlite3_destructor_type = uintptr
  4588  
  4589  type sqlite3_vtab1 = struct {
  4590  	FpModule     uintptr
  4591  	FnRef        int32
  4592  	F__ccgo_pad1 [4]byte
  4593  	FzErrMsg     uintptr
  4594  }
  4595  
  4596  type sqlite3_vtab = sqlite3_vtab1
  4597  type sqlite3_index_info1 = struct {
  4598  	FnConstraint      int32
  4599  	F__ccgo_pad1      [4]byte
  4600  	FaConstraint      uintptr
  4601  	FnOrderBy         int32
  4602  	F__ccgo_pad2      [4]byte
  4603  	FaOrderBy         uintptr
  4604  	FaConstraintUsage uintptr
  4605  	FidxNum           int32
  4606  	F__ccgo_pad3      [4]byte
  4607  	FidxStr           uintptr
  4608  	FneedToFreeIdxStr int32
  4609  	ForderByConsumed  int32
  4610  	FestimatedCost    float64
  4611  	FestimatedRows    sqlite3_int64
  4612  	FidxFlags         int32
  4613  	F__ccgo_pad4      [4]byte
  4614  	FcolUsed          sqlite3_uint64
  4615  }
  4616  
  4617  type sqlite3_index_info = sqlite3_index_info1
  4618  type sqlite3_vtab_cursor1 = struct{ FpVtab uintptr }
  4619  
  4620  type sqlite3_vtab_cursor = sqlite3_vtab_cursor1
  4621  type sqlite3_module1 = struct {
  4622  	FiVersion      int32
  4623  	F__ccgo_pad1   [4]byte
  4624  	FxCreate       uintptr
  4625  	FxConnect      uintptr
  4626  	FxBestIndex    uintptr
  4627  	FxDisconnect   uintptr
  4628  	FxDestroy      uintptr
  4629  	FxOpen         uintptr
  4630  	FxClose        uintptr
  4631  	FxFilter       uintptr
  4632  	FxNext         uintptr
  4633  	FxEof          uintptr
  4634  	FxColumn       uintptr
  4635  	FxRowid        uintptr
  4636  	FxUpdate       uintptr
  4637  	FxBegin        uintptr
  4638  	FxSync         uintptr
  4639  	FxCommit       uintptr
  4640  	FxRollback     uintptr
  4641  	FxFindFunction uintptr
  4642  	FxRename       uintptr
  4643  	FxSavepoint    uintptr
  4644  	FxRelease      uintptr
  4645  	FxRollbackTo   uintptr
  4646  	FxShadowName   uintptr
  4647  }
  4648  
  4649  type sqlite3_module = sqlite3_module1
  4650  
  4651  type sqlite3_index_constraint = struct {
  4652  	FiColumn     int32
  4653  	Fop          uint8
  4654  	Fusable      uint8
  4655  	F__ccgo_pad1 [2]byte
  4656  	FiTermOffset int32
  4657  }
  4658  
  4659  type sqlite3_index_orderby = struct {
  4660  	FiColumn     int32
  4661  	Fdesc        uint8
  4662  	F__ccgo_pad1 [3]byte
  4663  }
  4664  
  4665  type sqlite3_index_constraint_usage = struct {
  4666  	FargvIndex   int32
  4667  	Fomit        uint8
  4668  	F__ccgo_pad1 [3]byte
  4669  }
  4670  
  4671  type sqlite3_mutex_methods1 = struct {
  4672  	FxMutexInit    uintptr
  4673  	FxMutexEnd     uintptr
  4674  	FxMutexAlloc   uintptr
  4675  	FxMutexFree    uintptr
  4676  	FxMutexEnter   uintptr
  4677  	FxMutexTry     uintptr
  4678  	FxMutexLeave   uintptr
  4679  	FxMutexHeld    uintptr
  4680  	FxMutexNotheld uintptr
  4681  }
  4682  
  4683  type sqlite3_mutex_methods = sqlite3_mutex_methods1
  4684  
  4685  type sqlite3_str1 = struct {
  4686  	Fdb          uintptr
  4687  	FzText       uintptr
  4688  	FnAlloc      u32
  4689  	FmxAlloc     u32
  4690  	FnChar       u32
  4691  	FaccError    u8
  4692  	FprintfFlags u8
  4693  	F__ccgo_pad1 [2]byte
  4694  }
  4695  
  4696  type sqlite3_pcache_page1 = struct {
  4697  	FpBuf   uintptr
  4698  	FpExtra uintptr
  4699  }
  4700  
  4701  type sqlite3_pcache_page = sqlite3_pcache_page1
  4702  
  4703  type sqlite3_pcache_methods21 = struct {
  4704  	FiVersion    int32
  4705  	F__ccgo_pad1 [4]byte
  4706  	FpArg        uintptr
  4707  	FxInit       uintptr
  4708  	FxShutdown   uintptr
  4709  	FxCreate     uintptr
  4710  	FxCachesize  uintptr
  4711  	FxPagecount  uintptr
  4712  	FxFetch      uintptr
  4713  	FxUnpin      uintptr
  4714  	FxRekey      uintptr
  4715  	FxTruncate   uintptr
  4716  	FxDestroy    uintptr
  4717  	FxShrink     uintptr
  4718  }
  4719  
  4720  type sqlite3_pcache_methods2 = sqlite3_pcache_methods21
  4721  
  4722  type sqlite3_pcache_methods1 = struct {
  4723  	FpArg       uintptr
  4724  	FxInit      uintptr
  4725  	FxShutdown  uintptr
  4726  	FxCreate    uintptr
  4727  	FxCachesize uintptr
  4728  	FxPagecount uintptr
  4729  	FxFetch     uintptr
  4730  	FxUnpin     uintptr
  4731  	FxRekey     uintptr
  4732  	FxTruncate  uintptr
  4733  	FxDestroy   uintptr
  4734  }
  4735  
  4736  type sqlite3_pcache_methods = sqlite3_pcache_methods1
  4737  
  4738  type sqlite3_snapshot1 = struct{ Fhidden [48]uint8 }
  4739  
  4740  type sqlite3_snapshot = sqlite3_snapshot1
  4741  
  4742  type sqlite3_rtree_geometry1 = struct {
  4743  	FpContext    uintptr
  4744  	FnParam      int32
  4745  	F__ccgo_pad1 [4]byte
  4746  	FaParam      uintptr
  4747  	FpUser       uintptr
  4748  	FxDelUser    uintptr
  4749  }
  4750  
  4751  type sqlite3_rtree_geometry = sqlite3_rtree_geometry1
  4752  type sqlite3_rtree_query_info1 = struct {
  4753  	FpContext      uintptr
  4754  	FnParam        int32
  4755  	F__ccgo_pad1   [4]byte
  4756  	FaParam        uintptr
  4757  	FpUser         uintptr
  4758  	FxDelUser      uintptr
  4759  	FaCoord        uintptr
  4760  	FanQueue       uintptr
  4761  	FnCoord        int32
  4762  	FiLevel        int32
  4763  	FmxLevel       int32
  4764  	F__ccgo_pad2   [4]byte
  4765  	FiRowid        sqlite3_int64
  4766  	FrParentScore  sqlite3_rtree_dbl
  4767  	FeParentWithin int32
  4768  	FeWithin       int32
  4769  	FrScore        sqlite3_rtree_dbl
  4770  	FapSqlParam    uintptr
  4771  }
  4772  
  4773  type sqlite3_rtree_query_info = sqlite3_rtree_query_info1
  4774  
  4775  type sqlite3_rtree_dbl = float64
  4776  
  4777  type Fts5ExtensionApi1 = struct {
  4778  	FiVersion           int32
  4779  	F__ccgo_pad1        [4]byte
  4780  	FxUserData          uintptr
  4781  	FxColumnCount       uintptr
  4782  	FxRowCount          uintptr
  4783  	FxColumnTotalSize   uintptr
  4784  	FxTokenize          uintptr
  4785  	FxPhraseCount       uintptr
  4786  	FxPhraseSize        uintptr
  4787  	FxInstCount         uintptr
  4788  	FxInst              uintptr
  4789  	FxRowid             uintptr
  4790  	FxColumnText        uintptr
  4791  	FxColumnSize        uintptr
  4792  	FxQueryPhrase       uintptr
  4793  	FxSetAuxdata        uintptr
  4794  	FxGetAuxdata        uintptr
  4795  	FxPhraseFirst       uintptr
  4796  	FxPhraseNext        uintptr
  4797  	FxPhraseFirstColumn uintptr
  4798  	FxPhraseNextColumn  uintptr
  4799  }
  4800  
  4801  type Fts5ExtensionApi = Fts5ExtensionApi1
  4802  type Fts5PhraseIter1 = struct {
  4803  	Fa uintptr
  4804  	Fb uintptr
  4805  }
  4806  
  4807  type Fts5PhraseIter = Fts5PhraseIter1
  4808  
  4809  type fts5_extension_function = uintptr
  4810  type fts5_tokenizer1 = struct {
  4811  	FxCreate   uintptr
  4812  	FxDelete   uintptr
  4813  	FxTokenize uintptr
  4814  }
  4815  
  4816  type fts5_tokenizer = fts5_tokenizer1
  4817  
  4818  type fts5_api1 = struct {
  4819  	FiVersion         int32
  4820  	F__ccgo_pad1      [4]byte
  4821  	FxCreateTokenizer uintptr
  4822  	FxFindTokenizer   uintptr
  4823  	FxCreateFunction  uintptr
  4824  }
  4825  
  4826  type fts5_api = fts5_api1
  4827  
  4828  type sqlite3expert1 = struct {
  4829  	FiSample     int32
  4830  	F__ccgo_pad1 [4]byte
  4831  	Fdb          uintptr
  4832  	Fdbm         uintptr
  4833  	Fdbv         uintptr
  4834  	FpTable      uintptr
  4835  	FpScan       uintptr
  4836  	FpWrite      uintptr
  4837  	FpStatement  uintptr
  4838  	FbRun        int32
  4839  	F__ccgo_pad2 [4]byte
  4840  	FpzErrmsg    uintptr
  4841  	Frc          int32
  4842  	F__ccgo_pad3 [4]byte
  4843  	FhIdx        IdxHash
  4844  	FzCandidates uintptr
  4845  }
  4846  
  4847  type sqlite3expert = sqlite3expert1
  4848  
  4849  type __locale_struct = struct {
  4850  	F__locales       [13]uintptr
  4851  	F__ctype_b       uintptr
  4852  	F__ctype_tolower uintptr
  4853  	F__ctype_toupper uintptr
  4854  	F__names         [13]uintptr
  4855  }
  4856  
  4857  type locale_t = uintptr
  4858  
  4859  type _G_fpos_t = struct {
  4860  	F__pos   int64
  4861  	F__state struct {
  4862  		F__count int32
  4863  		F__value struct{ F__wch uint32 }
  4864  	}
  4865  }
  4866  
  4867  type _G_fpos64_t = struct {
  4868  	F__pos   int64
  4869  	F__state struct {
  4870  		F__count int32
  4871  		F__value struct{ F__wch uint32 }
  4872  	}
  4873  }
  4874  
  4875  type _IO_FILE = struct {
  4876  	F_flags          int32
  4877  	F__ccgo_pad1     [4]byte
  4878  	F_IO_read_ptr    uintptr
  4879  	F_IO_read_end    uintptr
  4880  	F_IO_read_base   uintptr
  4881  	F_IO_write_base  uintptr
  4882  	F_IO_write_ptr   uintptr
  4883  	F_IO_write_end   uintptr
  4884  	F_IO_buf_base    uintptr
  4885  	F_IO_buf_end     uintptr
  4886  	F_IO_save_base   uintptr
  4887  	F_IO_backup_base uintptr
  4888  	F_IO_save_end    uintptr
  4889  	F_markers        uintptr
  4890  	F_chain          uintptr
  4891  	F_fileno         int32
  4892  	F_flags2         int32
  4893  	F_old_offset     int64
  4894  	F_cur_column     uint16
  4895  	F_vtable_offset  int8
  4896  	F_shortbuf       [1]uint8
  4897  	F__ccgo_pad2     [4]byte
  4898  	F_lock           uintptr
  4899  	F_offset         int64
  4900  	F_codecvt        uintptr
  4901  	F_wide_data      uintptr
  4902  	F_freeres_list   uintptr
  4903  	F_freeres_buf    uintptr
  4904  	F__pad5          size_t
  4905  	F_mode           int32
  4906  	F_unused2        [20]uint8
  4907  }
  4908  
  4909  type FILE = _IO_FILE
  4910  
  4911  type off_t = int64
  4912  
  4913  type ssize_t = int64
  4914  
  4915  type fpos_t = _G_fpos64_t
  4916  
  4917  type i64 = sqlite3_int64
  4918  type u64 = sqlite3_uint64
  4919  
  4920  type IdxColumn1 = struct {
  4921  	FzName       uintptr
  4922  	FzColl       uintptr
  4923  	FiPk         int32
  4924  	F__ccgo_pad1 [4]byte
  4925  }
  4926  
  4927  type IdxColumn = IdxColumn1
  4928  type IdxConstraint1 = struct {
  4929  	FzColl  uintptr
  4930  	FbRange int32
  4931  	FiCol   int32
  4932  	FbFlag  int32
  4933  	FbDesc  int32
  4934  	FpNext  uintptr
  4935  	FpLink  uintptr
  4936  }
  4937  
  4938  type IdxConstraint = IdxConstraint1
  4939  type IdxScan1 = struct {
  4940  	FpTab        uintptr
  4941  	FiDb         int32
  4942  	F__ccgo_pad1 [4]byte
  4943  	Fcovering    i64
  4944  	FpOrder      uintptr
  4945  	FpEq         uintptr
  4946  	FpRange      uintptr
  4947  	FpNextScan   uintptr
  4948  }
  4949  
  4950  type IdxScan = IdxScan1
  4951  type IdxStatement1 = struct {
  4952  	FiId         int32
  4953  	F__ccgo_pad1 [4]byte
  4954  	FzSql        uintptr
  4955  	FzIdx        uintptr
  4956  	FzEQP        uintptr
  4957  	FpNext       uintptr
  4958  }
  4959  
  4960  type IdxStatement = IdxStatement1
  4961  type IdxTable1 = struct {
  4962  	FnCol        int32
  4963  	F__ccgo_pad1 [4]byte
  4964  	FzName       uintptr
  4965  	FaCol        uintptr
  4966  	FpNext       uintptr
  4967  }
  4968  
  4969  type IdxTable = IdxTable1
  4970  type IdxWrite1 = struct {
  4971  	FpTab        uintptr
  4972  	FeOp         int32
  4973  	F__ccgo_pad1 [4]byte
  4974  	FpNext       uintptr
  4975  }
  4976  
  4977  type IdxWrite = IdxWrite1
  4978  
  4979  type IdxHashEntry1 = struct {
  4980  	FzKey      uintptr
  4981  	FzVal      uintptr
  4982  	FzVal2     uintptr
  4983  	FpHashNext uintptr
  4984  	FpNext     uintptr
  4985  }
  4986  
  4987  type IdxHashEntry = IdxHashEntry1
  4988  type IdxHash1 = struct {
  4989  	FpFirst uintptr
  4990  	FaHash  [1023]uintptr
  4991  }
  4992  
  4993  type IdxHash = IdxHash1
  4994  
  4995  func idxMalloc(tls *libc.TLS, pRc uintptr, nByte int32) uintptr {
  4996  	var pRet uintptr
  4997  
  4998  	pRet = sqlite3.Xsqlite3_malloc(tls, nByte)
  4999  	if pRet != 0 {
  5000  		libc.Xmemset(tls, pRet, 0, uint64(nByte))
  5001  	} else {
  5002  		*(*int32)(unsafe.Pointer(pRc)) = SQLITE_NOMEM
  5003  	}
  5004  	return pRet
  5005  }
  5006  
  5007  func idxHashInit(tls *libc.TLS, pHash uintptr) {
  5008  	libc.Xmemset(tls, pHash, 0, uint64(unsafe.Sizeof(IdxHash{})))
  5009  }
  5010  
  5011  func idxHashClear(tls *libc.TLS, pHash uintptr) {
  5012  	var i int32
  5013  	for i = 0; i < IDX_HASH_SIZE; i++ {
  5014  		var pEntry uintptr
  5015  		var pNext uintptr
  5016  		for pEntry = *(*uintptr)(unsafe.Pointer(pHash + 8 + uintptr(i)*8)); pEntry != 0; pEntry = pNext {
  5017  			pNext = (*IdxHashEntry)(unsafe.Pointer(pEntry)).FpHashNext
  5018  			sqlite3.Xsqlite3_free(tls, (*IdxHashEntry)(unsafe.Pointer(pEntry)).FzVal2)
  5019  			sqlite3.Xsqlite3_free(tls, pEntry)
  5020  		}
  5021  	}
  5022  	libc.Xmemset(tls, pHash, 0, uint64(unsafe.Sizeof(IdxHash{})))
  5023  }
  5024  
  5025  func idxHashString(tls *libc.TLS, z uintptr, n int32) int32 {
  5026  	var ret uint32 = uint32(0)
  5027  	var i int32
  5028  	for i = 0; i < n; i++ {
  5029  		ret = ret + (ret<<3 + uint32(*(*uint8)(unsafe.Pointer(z + uintptr(i)))))
  5030  	}
  5031  	return int32(ret % uint32(IDX_HASH_SIZE))
  5032  }
  5033  
  5034  func idxHashAdd(tls *libc.TLS, pRc uintptr, pHash uintptr, zKey uintptr, zVal uintptr) int32 {
  5035  	var nKey int32 = int32(libc.Xstrlen(tls, zKey))
  5036  	var iHash int32 = idxHashString(tls, zKey, nKey)
  5037  	var nVal int32 = func() int32 {
  5038  		if zVal != 0 {
  5039  			return int32(libc.Xstrlen(tls, zVal))
  5040  		}
  5041  		return 0
  5042  	}()
  5043  	var pEntry uintptr
  5044  
  5045  	for pEntry = *(*uintptr)(unsafe.Pointer(pHash + 8 + uintptr(iHash)*8)); pEntry != 0; pEntry = (*IdxHashEntry)(unsafe.Pointer(pEntry)).FpHashNext {
  5046  		if int32(libc.Xstrlen(tls, (*IdxHashEntry)(unsafe.Pointer(pEntry)).FzKey)) == nKey && 0 == libc.Xmemcmp(tls, (*IdxHashEntry)(unsafe.Pointer(pEntry)).FzKey, zKey, uint64(nKey)) {
  5047  			return 1
  5048  		}
  5049  	}
  5050  	pEntry = idxMalloc(tls, pRc, int32(uint64(unsafe.Sizeof(IdxHashEntry{}))+uint64(nKey)+uint64(1)+uint64(nVal)+uint64(1)))
  5051  	if pEntry != 0 {
  5052  		(*IdxHashEntry)(unsafe.Pointer(pEntry)).FzKey = pEntry + 1*40
  5053  		libc.Xmemcpy(tls, (*IdxHashEntry)(unsafe.Pointer(pEntry)).FzKey, zKey, uint64(nKey))
  5054  		if zVal != 0 {
  5055  			(*IdxHashEntry)(unsafe.Pointer(pEntry)).FzVal = (*IdxHashEntry)(unsafe.Pointer(pEntry)).FzKey + uintptr(nKey+1)
  5056  			libc.Xmemcpy(tls, (*IdxHashEntry)(unsafe.Pointer(pEntry)).FzVal, zVal, uint64(nVal))
  5057  		}
  5058  		(*IdxHashEntry)(unsafe.Pointer(pEntry)).FpHashNext = *(*uintptr)(unsafe.Pointer(pHash + 8 + uintptr(iHash)*8))
  5059  		*(*uintptr)(unsafe.Pointer(pHash + 8 + uintptr(iHash)*8)) = pEntry
  5060  
  5061  		(*IdxHashEntry)(unsafe.Pointer(pEntry)).FpNext = (*IdxHash)(unsafe.Pointer(pHash)).FpFirst
  5062  		(*IdxHash)(unsafe.Pointer(pHash)).FpFirst = pEntry
  5063  	}
  5064  	return 0
  5065  }
  5066  
  5067  func idxHashFind(tls *libc.TLS, pHash uintptr, zKey uintptr, nKey int32) uintptr {
  5068  	var iHash int32
  5069  	var pEntry uintptr
  5070  	if nKey < 0 {
  5071  		nKey = int32(libc.Xstrlen(tls, zKey))
  5072  	}
  5073  	iHash = idxHashString(tls, zKey, nKey)
  5074  
  5075  	for pEntry = *(*uintptr)(unsafe.Pointer(pHash + 8 + uintptr(iHash)*8)); pEntry != 0; pEntry = (*IdxHashEntry)(unsafe.Pointer(pEntry)).FpHashNext {
  5076  		if int32(libc.Xstrlen(tls, (*IdxHashEntry)(unsafe.Pointer(pEntry)).FzKey)) == nKey && 0 == libc.Xmemcmp(tls, (*IdxHashEntry)(unsafe.Pointer(pEntry)).FzKey, zKey, uint64(nKey)) {
  5077  			return pEntry
  5078  		}
  5079  	}
  5080  	return uintptr(0)
  5081  }
  5082  
  5083  func idxHashSearch(tls *libc.TLS, pHash uintptr, zKey uintptr, nKey int32) uintptr {
  5084  	var pEntry uintptr = idxHashFind(tls, pHash, zKey, nKey)
  5085  	if pEntry != 0 {
  5086  		return (*IdxHashEntry)(unsafe.Pointer(pEntry)).FzVal
  5087  	}
  5088  	return uintptr(0)
  5089  }
  5090  
  5091  func idxNewConstraint(tls *libc.TLS, pRc uintptr, zColl uintptr) uintptr {
  5092  	var pNew uintptr
  5093  	var nColl int32 = int32(libc.Xstrlen(tls, zColl))
  5094  
  5095  	pNew = idxMalloc(tls, pRc, int32(uint64(unsafe.Sizeof(IdxConstraint{}))*uint64(nColl)+uint64(1)))
  5096  	if pNew != 0 {
  5097  		(*IdxConstraint)(unsafe.Pointer(pNew)).FzColl = pNew + 1*40
  5098  		libc.Xmemcpy(tls, (*IdxConstraint)(unsafe.Pointer(pNew)).FzColl, zColl, uint64(nColl+1))
  5099  	}
  5100  	return pNew
  5101  }
  5102  
  5103  func idxDatabaseError(tls *libc.TLS, db uintptr, pzErrmsg uintptr) {
  5104  	bp := tls.Alloc(8)
  5105  	defer tls.Free(8)
  5106  
  5107  	*(*uintptr)(unsafe.Pointer(pzErrmsg)) = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp, sqlite3.Xsqlite3_errmsg(tls, db)))
  5108  }
  5109  
  5110  func idxPrepareStmt(tls *libc.TLS, db uintptr, ppStmt uintptr, pzErrmsg uintptr, zSql uintptr) int32 {
  5111  	var rc int32 = sqlite3.Xsqlite3_prepare_v2(tls, db, zSql, -1, ppStmt, uintptr(0))
  5112  	if rc != SQLITE_OK {
  5113  		*(*uintptr)(unsafe.Pointer(ppStmt)) = uintptr(0)
  5114  		idxDatabaseError(tls, db, pzErrmsg)
  5115  	}
  5116  	return rc
  5117  }
  5118  
  5119  func idxPrintfPrepareStmt(tls *libc.TLS, db uintptr, ppStmt uintptr, pzErrmsg uintptr, zFmt uintptr, va uintptr) int32 {
  5120  	var ap va_list
  5121  	_ = ap
  5122  	var rc int32
  5123  	var zSql uintptr
  5124  	ap = va
  5125  	zSql = sqlite3.Xsqlite3_vmprintf(tls, zFmt, ap)
  5126  	if zSql == uintptr(0) {
  5127  		rc = SQLITE_NOMEM
  5128  	} else {
  5129  		rc = idxPrepareStmt(tls, db, ppStmt, pzErrmsg, zSql)
  5130  		sqlite3.Xsqlite3_free(tls, zSql)
  5131  	}
  5132  	_ = ap
  5133  	return rc
  5134  }
  5135  
  5136  type ExpertVtab1 = struct {
  5137  	Fbase    sqlite3_vtab
  5138  	FpTab    uintptr
  5139  	FpExpert uintptr
  5140  }
  5141  
  5142  type ExpertVtab = ExpertVtab1
  5143  
  5144  type ExpertCsr1 = struct {
  5145  	Fbase  sqlite3_vtab_cursor
  5146  	FpData uintptr
  5147  }
  5148  
  5149  type ExpertCsr = ExpertCsr1
  5150  
  5151  func expertDequote(tls *libc.TLS, zIn uintptr) uintptr {
  5152  	var n int32 = int32(libc.Xstrlen(tls, zIn))
  5153  	var zRet uintptr = sqlite3.Xsqlite3_malloc(tls, n)
  5154  
  5155  	if zRet != 0 {
  5156  		var iOut int32 = 0
  5157  		var iIn int32 = 0
  5158  		for iIn = 1; iIn < n-1; iIn++ {
  5159  			if int32(*(*uint8)(unsafe.Pointer(zIn + uintptr(iIn)))) == '\'' {
  5160  				iIn++
  5161  			}
  5162  			*(*uint8)(unsafe.Pointer(zRet + uintptr(libc.PostIncInt32(&iOut, 1)))) = *(*uint8)(unsafe.Pointer(zIn + uintptr(iIn)))
  5163  		}
  5164  		*(*uint8)(unsafe.Pointer(zRet + uintptr(iOut))) = uint8(0)
  5165  	}
  5166  
  5167  	return zRet
  5168  }
  5169  
  5170  func expertConnect(tls *libc.TLS, db uintptr, pAux uintptr, argc int32, argv uintptr, ppVtab uintptr, pzErr uintptr) int32 {
  5171  	bp := tls.Alloc(4)
  5172  	defer tls.Free(4)
  5173  
  5174  	var pExpert uintptr = pAux
  5175  	var p uintptr = uintptr(0)
  5176  
  5177  	if argc != 4 {
  5178  		*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+3, 0)
  5179  		*(*int32)(unsafe.Pointer(bp)) = SQLITE_ERROR
  5180  	} else {
  5181  		var zCreateTable uintptr = expertDequote(tls, *(*uintptr)(unsafe.Pointer(argv + 3*8)))
  5182  		if zCreateTable != 0 {
  5183  			*(*int32)(unsafe.Pointer(bp)) = sqlite3.Xsqlite3_declare_vtab(tls, db, zCreateTable)
  5184  			if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK {
  5185  				p = idxMalloc(tls, bp, int32(unsafe.Sizeof(ExpertVtab{})))
  5186  			}
  5187  			if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK {
  5188  				(*ExpertVtab)(unsafe.Pointer(p)).FpExpert = pExpert
  5189  				(*ExpertVtab)(unsafe.Pointer(p)).FpTab = (*sqlite3expert)(unsafe.Pointer(pExpert)).FpTable
  5190  
  5191  			}
  5192  			sqlite3.Xsqlite3_free(tls, zCreateTable)
  5193  		} else {
  5194  			*(*int32)(unsafe.Pointer(bp)) = SQLITE_NOMEM
  5195  		}
  5196  	}
  5197  
  5198  	*(*uintptr)(unsafe.Pointer(ppVtab)) = p
  5199  	return *(*int32)(unsafe.Pointer(bp))
  5200  }
  5201  
  5202  func expertDisconnect(tls *libc.TLS, pVtab uintptr) int32 {
  5203  	var p uintptr = pVtab
  5204  	sqlite3.Xsqlite3_free(tls, p)
  5205  	return SQLITE_OK
  5206  }
  5207  
  5208  func expertBestIndex(tls *libc.TLS, pVtab uintptr, pIdxInfo uintptr) int32 {
  5209  	bp := tls.Alloc(4)
  5210  	defer tls.Free(4)
  5211  
  5212  	var p uintptr = pVtab
  5213  	*(*int32)(unsafe.Pointer(bp)) = SQLITE_OK
  5214  	var n int32 = 0
  5215  	var pScan uintptr
  5216  	var opmask int32 = SQLITE_INDEX_CONSTRAINT_EQ | SQLITE_INDEX_CONSTRAINT_GT | SQLITE_INDEX_CONSTRAINT_LT | SQLITE_INDEX_CONSTRAINT_GE | SQLITE_INDEX_CONSTRAINT_LE
  5217  
  5218  	pScan = idxMalloc(tls, bp, int32(unsafe.Sizeof(IdxScan{})))
  5219  	if pScan != 0 {
  5220  		var i int32
  5221  
  5222  		(*IdxScan)(unsafe.Pointer(pScan)).FpTab = (*ExpertVtab)(unsafe.Pointer(p)).FpTab
  5223  		(*IdxScan)(unsafe.Pointer(pScan)).FpNextScan = (*sqlite3expert)(unsafe.Pointer((*ExpertVtab)(unsafe.Pointer(p)).FpExpert)).FpScan
  5224  		(*sqlite3expert)(unsafe.Pointer((*ExpertVtab)(unsafe.Pointer(p)).FpExpert)).FpScan = pScan
  5225  
  5226  		for i = 0; i < (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnConstraint; i++ {
  5227  			var pCons uintptr = (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint + uintptr(i)*12
  5228  			if (*sqlite3_index_constraint)(unsafe.Pointer(pCons)).Fusable != 0 &&
  5229  				(*sqlite3_index_constraint)(unsafe.Pointer(pCons)).FiColumn >= 0 &&
  5230  				(*IdxColumn)(unsafe.Pointer((*IdxTable)(unsafe.Pointer((*ExpertVtab)(unsafe.Pointer(p)).FpTab)).FaCol+uintptr((*sqlite3_index_constraint)(unsafe.Pointer(pCons)).FiColumn)*24)).FiPk == 0 &&
  5231  				int32((*sqlite3_index_constraint)(unsafe.Pointer(pCons)).Fop)&opmask != 0 {
  5232  				var pNew uintptr
  5233  				var zColl uintptr = sqlite3.Xsqlite3_vtab_collation(tls, pIdxInfo, i)
  5234  				pNew = idxNewConstraint(tls, bp, zColl)
  5235  				if pNew != 0 {
  5236  					(*IdxConstraint)(unsafe.Pointer(pNew)).FiCol = (*sqlite3_index_constraint)(unsafe.Pointer(pCons)).FiColumn
  5237  					if int32((*sqlite3_index_constraint)(unsafe.Pointer(pCons)).Fop) == SQLITE_INDEX_CONSTRAINT_EQ {
  5238  						(*IdxConstraint)(unsafe.Pointer(pNew)).FpNext = (*IdxScan)(unsafe.Pointer(pScan)).FpEq
  5239  						(*IdxScan)(unsafe.Pointer(pScan)).FpEq = pNew
  5240  					} else {
  5241  						(*IdxConstraint)(unsafe.Pointer(pNew)).FbRange = 1
  5242  						(*IdxConstraint)(unsafe.Pointer(pNew)).FpNext = (*IdxScan)(unsafe.Pointer(pScan)).FpRange
  5243  						(*IdxScan)(unsafe.Pointer(pScan)).FpRange = pNew
  5244  					}
  5245  				}
  5246  				n++
  5247  				(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(i)*8)).FargvIndex = n
  5248  			}
  5249  		}
  5250  
  5251  		for i = (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnOrderBy - 1; i >= 0; i-- {
  5252  			var iCol int32 = (*sqlite3_index_orderby)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaOrderBy + uintptr(i)*8)).FiColumn
  5253  			if iCol >= 0 {
  5254  				var pNew uintptr = idxNewConstraint(tls, bp, (*IdxColumn)(unsafe.Pointer((*IdxTable)(unsafe.Pointer((*ExpertVtab)(unsafe.Pointer(p)).FpTab)).FaCol+uintptr(iCol)*24)).FzColl)
  5255  				if pNew != 0 {
  5256  					(*IdxConstraint)(unsafe.Pointer(pNew)).FiCol = iCol
  5257  					(*IdxConstraint)(unsafe.Pointer(pNew)).FbDesc = int32((*sqlite3_index_orderby)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaOrderBy + uintptr(i)*8)).Fdesc)
  5258  					(*IdxConstraint)(unsafe.Pointer(pNew)).FpNext = (*IdxScan)(unsafe.Pointer(pScan)).FpOrder
  5259  					(*IdxConstraint)(unsafe.Pointer(pNew)).FpLink = (*IdxScan)(unsafe.Pointer(pScan)).FpOrder
  5260  					(*IdxScan)(unsafe.Pointer(pScan)).FpOrder = pNew
  5261  					n++
  5262  				}
  5263  			}
  5264  		}
  5265  	}
  5266  
  5267  	(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = 1000000.0 / float64(n+1)
  5268  	return *(*int32)(unsafe.Pointer(bp))
  5269  }
  5270  
  5271  func expertUpdate(tls *libc.TLS, pVtab uintptr, nData int32, azData uintptr, pRowid uintptr) int32 {
  5272  	_ = pVtab
  5273  	_ = nData
  5274  	_ = azData
  5275  	_ = pRowid
  5276  	return SQLITE_OK
  5277  }
  5278  
  5279  func expertOpen(tls *libc.TLS, pVTab uintptr, ppCursor uintptr) int32 {
  5280  	bp := tls.Alloc(4)
  5281  	defer tls.Free(4)
  5282  
  5283  	*(*int32)(unsafe.Pointer(bp)) = SQLITE_OK
  5284  	var pCsr uintptr
  5285  	_ = pVTab
  5286  	pCsr = idxMalloc(tls, bp, int32(unsafe.Sizeof(ExpertCsr{})))
  5287  	*(*uintptr)(unsafe.Pointer(ppCursor)) = pCsr
  5288  	return *(*int32)(unsafe.Pointer(bp))
  5289  }
  5290  
  5291  func expertClose(tls *libc.TLS, cur uintptr) int32 {
  5292  	var pCsr uintptr = cur
  5293  	sqlite3.Xsqlite3_finalize(tls, (*ExpertCsr)(unsafe.Pointer(pCsr)).FpData)
  5294  	sqlite3.Xsqlite3_free(tls, pCsr)
  5295  	return SQLITE_OK
  5296  }
  5297  
  5298  func expertEof(tls *libc.TLS, cur uintptr) int32 {
  5299  	var pCsr uintptr = cur
  5300  	return libc.Bool32((*ExpertCsr)(unsafe.Pointer(pCsr)).FpData == uintptr(0))
  5301  }
  5302  
  5303  func expertNext(tls *libc.TLS, cur uintptr) int32 {
  5304  	var pCsr uintptr = cur
  5305  	var rc int32 = SQLITE_OK
  5306  
  5307  	rc = sqlite3.Xsqlite3_step(tls, (*ExpertCsr)(unsafe.Pointer(pCsr)).FpData)
  5308  	if rc != SQLITE_ROW {
  5309  		rc = sqlite3.Xsqlite3_finalize(tls, (*ExpertCsr)(unsafe.Pointer(pCsr)).FpData)
  5310  		(*ExpertCsr)(unsafe.Pointer(pCsr)).FpData = uintptr(0)
  5311  	} else {
  5312  		rc = SQLITE_OK
  5313  	}
  5314  
  5315  	return rc
  5316  }
  5317  
  5318  func expertRowid(tls *libc.TLS, cur uintptr, pRowid uintptr) int32 {
  5319  	_ = cur
  5320  	*(*sqlite_int64)(unsafe.Pointer(pRowid)) = int64(0)
  5321  	return SQLITE_OK
  5322  }
  5323  
  5324  func expertColumn(tls *libc.TLS, cur uintptr, ctx uintptr, i int32) int32 {
  5325  	var pCsr uintptr = cur
  5326  	var pVal uintptr
  5327  	pVal = sqlite3.Xsqlite3_column_value(tls, (*ExpertCsr)(unsafe.Pointer(pCsr)).FpData, i)
  5328  	if pVal != 0 {
  5329  		sqlite3.Xsqlite3_result_value(tls, ctx, pVal)
  5330  	}
  5331  	return SQLITE_OK
  5332  }
  5333  
  5334  func expertFilter(tls *libc.TLS, cur uintptr, idxNum int32, idxStr uintptr, argc int32, argv uintptr) int32 {
  5335  	bp := tls.Alloc(8)
  5336  	defer tls.Free(8)
  5337  
  5338  	var pCsr uintptr = cur
  5339  	var pVtab uintptr = (*sqlite3_vtab_cursor)(unsafe.Pointer(cur)).FpVtab
  5340  	var pExpert uintptr = (*ExpertVtab)(unsafe.Pointer(pVtab)).FpExpert
  5341  	var rc int32
  5342  
  5343  	_ = idxNum
  5344  	_ = idxStr
  5345  	_ = argc
  5346  	_ = argv
  5347  	rc = sqlite3.Xsqlite3_finalize(tls, (*ExpertCsr)(unsafe.Pointer(pCsr)).FpData)
  5348  	(*ExpertCsr)(unsafe.Pointer(pCsr)).FpData = uintptr(0)
  5349  	if rc == SQLITE_OK {
  5350  		rc = idxPrintfPrepareStmt(tls, (*sqlite3expert)(unsafe.Pointer(pExpert)).Fdb, pCsr+8, pVtab+16,
  5351  			ts+19, libc.VaList(bp, (*IdxTable)(unsafe.Pointer((*ExpertVtab)(unsafe.Pointer(pVtab)).FpTab)).FzName))
  5352  	}
  5353  
  5354  	if rc == SQLITE_OK {
  5355  		rc = expertNext(tls, cur)
  5356  	}
  5357  	return rc
  5358  }
  5359  
  5360  func idxRegisterVtab(tls *libc.TLS, p uintptr) int32 {
  5361  	return sqlite3.Xsqlite3_create_module(tls, (*sqlite3expert)(unsafe.Pointer(p)).Fdbv, ts+56, uintptr(unsafe.Pointer(&expertModule)), p)
  5362  }
  5363  
  5364  var expertModule = sqlite3_module{
  5365  	FiVersion:    2,
  5366  	FxCreate:     0,
  5367  	FxConnect:    0,
  5368  	FxBestIndex:  0,
  5369  	FxDisconnect: 0,
  5370  	FxDestroy:    0,
  5371  	FxOpen:       0,
  5372  	FxClose:      0,
  5373  	FxFilter:     0,
  5374  	FxNext:       0,
  5375  	FxEof:        0,
  5376  	FxColumn:     0,
  5377  	FxRowid:      0,
  5378  	FxUpdate:     0,
  5379  }
  5380  
  5381  func idxFinalize(tls *libc.TLS, pRc uintptr, pStmt uintptr) {
  5382  	var rc int32 = sqlite3.Xsqlite3_finalize(tls, pStmt)
  5383  	if *(*int32)(unsafe.Pointer(pRc)) == SQLITE_OK {
  5384  		*(*int32)(unsafe.Pointer(pRc)) = rc
  5385  	}
  5386  }
  5387  
  5388  func idxGetTableInfo(tls *libc.TLS, db uintptr, zTab uintptr, ppOut uintptr, pzErrmsg uintptr) int32 {
  5389  	bp := tls.Alloc(40)
  5390  	defer tls.Free(40)
  5391  
  5392  	*(*uintptr)(unsafe.Pointer(bp + 8)) = uintptr(0)
  5393  	var nCol int32 = 0
  5394  	var nTab int32
  5395  	var nByte int32
  5396  	var pNew uintptr = uintptr(0)
  5397  
  5398  	var rc2 int32
  5399  	var pCsr uintptr = uintptr(0)
  5400  	var nPk int32 = 0
  5401  
  5402  	*(*uintptr)(unsafe.Pointer(ppOut)) = uintptr(0)
  5403  	if zTab == uintptr(0) {
  5404  		return SQLITE_ERROR
  5405  	}
  5406  	nTab = int32(libc.Xstrlen(tls, zTab))
  5407  	nByte = int32(uint64(unsafe.Sizeof(IdxTable{})) + uint64(nTab) + uint64(1))
  5408  	*(*int32)(unsafe.Pointer(bp + 24)) = idxPrintfPrepareStmt(tls, db, bp+8, pzErrmsg, ts+63, libc.VaList(bp, zTab))
  5409  	for *(*int32)(unsafe.Pointer(bp + 24)) == SQLITE_OK && SQLITE_ROW == sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp + 8))) {
  5410  		var zCol uintptr = sqlite3.Xsqlite3_column_text(tls, *(*uintptr)(unsafe.Pointer(bp + 8)), 1)
  5411  		*(*uintptr)(unsafe.Pointer(bp + 16)) = uintptr(0)
  5412  		if zCol == uintptr(0) {
  5413  			*(*int32)(unsafe.Pointer(bp + 24)) = SQLITE_ERROR
  5414  			break
  5415  		}
  5416  		nByte = nByte + (1 + int32(libc.Xstrlen(tls, zCol)))
  5417  		*(*int32)(unsafe.Pointer(bp + 24)) = sqlite3.Xsqlite3_table_column_metadata(tls,
  5418  			db, ts+85, zTab, zCol, uintptr(0), bp+16, uintptr(0), uintptr(0), uintptr(0))
  5419  		if *(*uintptr)(unsafe.Pointer(bp + 16)) == uintptr(0) {
  5420  			*(*uintptr)(unsafe.Pointer(bp + 16)) = ts + 90
  5421  		}
  5422  		nByte = nByte + (1 + int32(libc.Xstrlen(tls, *(*uintptr)(unsafe.Pointer(bp + 16)))))
  5423  		nCol++
  5424  		nPk = nPk + libc.Bool32(sqlite3.Xsqlite3_column_int(tls, *(*uintptr)(unsafe.Pointer(bp + 8)), 5) > 0)
  5425  	}
  5426  	rc2 = sqlite3.Xsqlite3_reset(tls, *(*uintptr)(unsafe.Pointer(bp + 8)))
  5427  	if *(*int32)(unsafe.Pointer(bp + 24)) == SQLITE_OK {
  5428  		*(*int32)(unsafe.Pointer(bp + 24)) = rc2
  5429  	}
  5430  
  5431  	nByte = int32(uint64(nByte) + uint64(unsafe.Sizeof(IdxColumn{}))*uint64(nCol))
  5432  	if *(*int32)(unsafe.Pointer(bp + 24)) == SQLITE_OK {
  5433  		pNew = idxMalloc(tls, bp+24, nByte)
  5434  	}
  5435  	if *(*int32)(unsafe.Pointer(bp + 24)) == SQLITE_OK {
  5436  		(*IdxTable)(unsafe.Pointer(pNew)).FaCol = pNew + 1*32
  5437  		(*IdxTable)(unsafe.Pointer(pNew)).FnCol = nCol
  5438  		pCsr = (*IdxTable)(unsafe.Pointer(pNew)).FaCol + uintptr(nCol)*24
  5439  	}
  5440  
  5441  	nCol = 0
  5442  	for *(*int32)(unsafe.Pointer(bp + 24)) == SQLITE_OK && SQLITE_ROW == sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp + 8))) {
  5443  		var zCol uintptr = sqlite3.Xsqlite3_column_text(tls, *(*uintptr)(unsafe.Pointer(bp + 8)), 1)
  5444  		*(*uintptr)(unsafe.Pointer(bp + 32)) = uintptr(0)
  5445  		var nCopy int32
  5446  		if zCol == uintptr(0) {
  5447  			continue
  5448  		}
  5449  		nCopy = int32(libc.Xstrlen(tls, zCol)) + 1
  5450  		(*IdxColumn)(unsafe.Pointer((*IdxTable)(unsafe.Pointer(pNew)).FaCol + uintptr(nCol)*24)).FzName = pCsr
  5451  		(*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)
  5452  		libc.Xmemcpy(tls, pCsr, zCol, uint64(nCopy))
  5453  		pCsr += uintptr(nCopy)
  5454  
  5455  		*(*int32)(unsafe.Pointer(bp + 24)) = sqlite3.Xsqlite3_table_column_metadata(tls,
  5456  			db, ts+85, zTab, zCol, uintptr(0), bp+32, uintptr(0), uintptr(0), uintptr(0))
  5457  		if *(*int32)(unsafe.Pointer(bp + 24)) == SQLITE_OK {
  5458  			if *(*uintptr)(unsafe.Pointer(bp + 32)) == uintptr(0) {
  5459  				*(*uintptr)(unsafe.Pointer(bp + 32)) = ts + 90
  5460  			}
  5461  			nCopy = int32(libc.Xstrlen(tls, *(*uintptr)(unsafe.Pointer(bp + 32)))) + 1
  5462  			(*IdxColumn)(unsafe.Pointer((*IdxTable)(unsafe.Pointer(pNew)).FaCol + uintptr(nCol)*24)).FzColl = pCsr
  5463  			libc.Xmemcpy(tls, pCsr, *(*uintptr)(unsafe.Pointer(bp + 32)), uint64(nCopy))
  5464  			pCsr += uintptr(nCopy)
  5465  		}
  5466  
  5467  		nCol++
  5468  	}
  5469  	idxFinalize(tls, bp+24, *(*uintptr)(unsafe.Pointer(bp + 8)))
  5470  
  5471  	if *(*int32)(unsafe.Pointer(bp + 24)) != SQLITE_OK {
  5472  		sqlite3.Xsqlite3_free(tls, pNew)
  5473  		pNew = uintptr(0)
  5474  	} else if pNew != uintptr(0) {
  5475  		(*IdxTable)(unsafe.Pointer(pNew)).FzName = pCsr
  5476  		if (*IdxTable)(unsafe.Pointer(pNew)).FzName != uintptr(0) {
  5477  			libc.Xmemcpy(tls, (*IdxTable)(unsafe.Pointer(pNew)).FzName, zTab, uint64(nTab+1))
  5478  		}
  5479  	}
  5480  
  5481  	*(*uintptr)(unsafe.Pointer(ppOut)) = pNew
  5482  	return *(*int32)(unsafe.Pointer(bp + 24))
  5483  }
  5484  
  5485  func idxAppendText(tls *libc.TLS, pRc uintptr, zIn uintptr, zFmt uintptr, va uintptr) uintptr {
  5486  	var ap va_list
  5487  	_ = ap
  5488  	var zAppend uintptr = uintptr(0)
  5489  	var zRet uintptr = uintptr(0)
  5490  	var nIn int32
  5491  	if zIn != 0 {
  5492  		nIn = int32(libc.Xstrlen(tls, zIn))
  5493  	} else {
  5494  		nIn = 0
  5495  	}
  5496  	var nAppend int32 = 0
  5497  	ap = va
  5498  	if *(*int32)(unsafe.Pointer(pRc)) == SQLITE_OK {
  5499  		zAppend = sqlite3.Xsqlite3_vmprintf(tls, zFmt, ap)
  5500  		if zAppend != 0 {
  5501  			nAppend = int32(libc.Xstrlen(tls, zAppend))
  5502  			zRet = sqlite3.Xsqlite3_malloc(tls, nIn+nAppend+1)
  5503  		}
  5504  		if zAppend != 0 && zRet != 0 {
  5505  			if nIn != 0 {
  5506  				libc.Xmemcpy(tls, zRet, zIn, uint64(nIn))
  5507  			}
  5508  			libc.Xmemcpy(tls, zRet+uintptr(nIn), zAppend, uint64(nAppend+1))
  5509  		} else {
  5510  			sqlite3.Xsqlite3_free(tls, zRet)
  5511  			zRet = uintptr(0)
  5512  			*(*int32)(unsafe.Pointer(pRc)) = SQLITE_NOMEM
  5513  		}
  5514  		sqlite3.Xsqlite3_free(tls, zAppend)
  5515  		sqlite3.Xsqlite3_free(tls, zIn)
  5516  	}
  5517  	_ = ap
  5518  	return zRet
  5519  }
  5520  
  5521  func idxIdentifierRequiresQuotes(tls *libc.TLS, zId uintptr) int32 {
  5522  	var i int32
  5523  	for i = 0; *(*uint8)(unsafe.Pointer(zId + uintptr(i))) != 0; i++ {
  5524  		if !(int32(*(*uint8)(unsafe.Pointer(zId + uintptr(i)))) == '_') &&
  5525  			!(int32(*(*uint8)(unsafe.Pointer(zId + uintptr(i)))) >= '0' && int32(*(*uint8)(unsafe.Pointer(zId + uintptr(i)))) <= '9') &&
  5526  			!(int32(*(*uint8)(unsafe.Pointer(zId + uintptr(i)))) >= 'a' && int32(*(*uint8)(unsafe.Pointer(zId + uintptr(i)))) <= 'z') &&
  5527  			!(int32(*(*uint8)(unsafe.Pointer(zId + uintptr(i)))) >= 'A' && int32(*(*uint8)(unsafe.Pointer(zId + uintptr(i)))) <= 'Z') {
  5528  			return 1
  5529  		}
  5530  	}
  5531  	return 0
  5532  }
  5533  
  5534  func idxAppendColDefn(tls *libc.TLS, pRc uintptr, zIn uintptr, pTab uintptr, pCons uintptr) uintptr {
  5535  	bp := tls.Alloc(32)
  5536  	defer tls.Free(32)
  5537  
  5538  	var zRet uintptr = zIn
  5539  	var p uintptr = (*IdxTable)(unsafe.Pointer(pTab)).FaCol + uintptr((*IdxConstraint)(unsafe.Pointer(pCons)).FiCol)*24
  5540  	if zRet != 0 {
  5541  		zRet = idxAppendText(tls, pRc, zRet, ts+97, 0)
  5542  	}
  5543  
  5544  	if idxIdentifierRequiresQuotes(tls, (*IdxColumn)(unsafe.Pointer(p)).FzName) != 0 {
  5545  		zRet = idxAppendText(tls, pRc, zRet, ts+100, libc.VaList(bp, (*IdxColumn)(unsafe.Pointer(p)).FzName))
  5546  	} else {
  5547  		zRet = idxAppendText(tls, pRc, zRet, ts, libc.VaList(bp+8, (*IdxColumn)(unsafe.Pointer(p)).FzName))
  5548  	}
  5549  
  5550  	if sqlite3.Xsqlite3_stricmp(tls, (*IdxColumn)(unsafe.Pointer(p)).FzColl, (*IdxConstraint)(unsafe.Pointer(pCons)).FzColl) != 0 {
  5551  		if idxIdentifierRequiresQuotes(tls, (*IdxConstraint)(unsafe.Pointer(pCons)).FzColl) != 0 {
  5552  			zRet = idxAppendText(tls, pRc, zRet, ts+103, libc.VaList(bp+16, (*IdxConstraint)(unsafe.Pointer(pCons)).FzColl))
  5553  		} else {
  5554  			zRet = idxAppendText(tls, pRc, zRet, ts+115, libc.VaList(bp+24, (*IdxConstraint)(unsafe.Pointer(pCons)).FzColl))
  5555  		}
  5556  	}
  5557  
  5558  	if (*IdxConstraint)(unsafe.Pointer(pCons)).FbDesc != 0 {
  5559  		zRet = idxAppendText(tls, pRc, zRet, ts+127, 0)
  5560  	}
  5561  	return zRet
  5562  }
  5563  
  5564  func idxFindCompatible(tls *libc.TLS, pRc uintptr, dbm uintptr, pScan uintptr, pEq uintptr, pTail uintptr) int32 {
  5565  	bp := tls.Alloc(36)
  5566  	defer tls.Free(36)
  5567  
  5568  	var zTbl uintptr = (*IdxTable)(unsafe.Pointer((*IdxScan)(unsafe.Pointer(pScan)).FpTab)).FzName
  5569  	*(*uintptr)(unsafe.Pointer(bp + 16)) = uintptr(0)
  5570  	var pIter uintptr
  5571  	var nEq int32 = 0
  5572  
  5573  	for pIter = pEq; pIter != 0; pIter = (*IdxConstraint)(unsafe.Pointer(pIter)).FpLink {
  5574  		nEq++
  5575  	}
  5576  
  5577  	*(*int32)(unsafe.Pointer(bp + 32)) = idxPrintfPrepareStmt(tls, dbm, bp+16, uintptr(0), ts+133, libc.VaList(bp, zTbl))
  5578  	for *(*int32)(unsafe.Pointer(bp + 32)) == SQLITE_OK && sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp + 16))) == SQLITE_ROW {
  5579  		var bMatch int32 = 1
  5580  		var pT uintptr = pTail
  5581  		*(*uintptr)(unsafe.Pointer(bp + 24)) = uintptr(0)
  5582  		var zIdx uintptr = sqlite3.Xsqlite3_column_text(tls, *(*uintptr)(unsafe.Pointer(bp + 16)), 1)
  5583  		if zIdx == uintptr(0) {
  5584  			continue
  5585  		}
  5586  
  5587  		for pIter = pEq; pIter != 0; pIter = (*IdxConstraint)(unsafe.Pointer(pIter)).FpLink {
  5588  			(*IdxConstraint)(unsafe.Pointer(pIter)).FbFlag = 0
  5589  		}
  5590  
  5591  		*(*int32)(unsafe.Pointer(bp + 32)) = idxPrintfPrepareStmt(tls, dbm, bp+24, uintptr(0), ts+154, libc.VaList(bp+8, zIdx))
  5592  		for *(*int32)(unsafe.Pointer(bp + 32)) == SQLITE_OK && sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp + 24))) == SQLITE_ROW {
  5593  			var iIdx int32 = sqlite3.Xsqlite3_column_int(tls, *(*uintptr)(unsafe.Pointer(bp + 24)), 0)
  5594  			var iCol int32 = sqlite3.Xsqlite3_column_int(tls, *(*uintptr)(unsafe.Pointer(bp + 24)), 1)
  5595  			var zColl uintptr = sqlite3.Xsqlite3_column_text(tls, *(*uintptr)(unsafe.Pointer(bp + 24)), 4)
  5596  
  5597  			if iIdx < nEq {
  5598  				for pIter = pEq; pIter != 0; pIter = (*IdxConstraint)(unsafe.Pointer(pIter)).FpLink {
  5599  					if (*IdxConstraint)(unsafe.Pointer(pIter)).FbFlag != 0 {
  5600  						continue
  5601  					}
  5602  					if (*IdxConstraint)(unsafe.Pointer(pIter)).FiCol != iCol {
  5603  						continue
  5604  					}
  5605  					if sqlite3.Xsqlite3_stricmp(tls, (*IdxConstraint)(unsafe.Pointer(pIter)).FzColl, zColl) != 0 {
  5606  						continue
  5607  					}
  5608  					(*IdxConstraint)(unsafe.Pointer(pIter)).FbFlag = 1
  5609  					break
  5610  				}
  5611  				if pIter == uintptr(0) {
  5612  					bMatch = 0
  5613  					break
  5614  				}
  5615  			} else {
  5616  				if pT != 0 {
  5617  					if (*IdxConstraint)(unsafe.Pointer(pT)).FiCol != iCol || sqlite3.Xsqlite3_stricmp(tls, (*IdxConstraint)(unsafe.Pointer(pT)).FzColl, zColl) != 0 {
  5618  						bMatch = 0
  5619  						break
  5620  					}
  5621  					pT = (*IdxConstraint)(unsafe.Pointer(pT)).FpLink
  5622  				}
  5623  			}
  5624  		}
  5625  		idxFinalize(tls, bp+32, *(*uintptr)(unsafe.Pointer(bp + 24)))
  5626  
  5627  		if *(*int32)(unsafe.Pointer(bp + 32)) == SQLITE_OK && bMatch != 0 {
  5628  			sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 16)))
  5629  			return 1
  5630  		}
  5631  	}
  5632  	idxFinalize(tls, bp+32, *(*uintptr)(unsafe.Pointer(bp + 16)))
  5633  
  5634  	*(*int32)(unsafe.Pointer(pRc)) = *(*int32)(unsafe.Pointer(bp + 32))
  5635  	return 0
  5636  }
  5637  
  5638  func countNonzeros(tls *libc.TLS, pCount uintptr, nc int32, azResults uintptr, azColumns uintptr) int32 {
  5639  	_ = azColumns
  5640  	if nc > 0 && (int32(*(*uint8)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(azResults))))) != '0' || int32(*(*uint8)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(azResults)) + 1))) != 0) {
  5641  		*(*int32)(unsafe.Pointer(pCount)) += 1
  5642  	}
  5643  	return 0
  5644  }
  5645  
  5646  func idxCreateFromCons(tls *libc.TLS, p uintptr, pScan uintptr, pEq uintptr, pTail uintptr) int32 {
  5647  	bp := tls.Alloc(56)
  5648  	defer tls.Free(56)
  5649  
  5650  	var dbm uintptr = (*sqlite3expert)(unsafe.Pointer(p)).Fdbm
  5651  	*(*int32)(unsafe.Pointer(bp + 48)) = SQLITE_OK
  5652  	if (pEq != 0 || pTail != 0) && 0 == idxFindCompatible(tls, bp+48, dbm, pScan, pEq, pTail) {
  5653  		var pTab uintptr = (*IdxScan)(unsafe.Pointer(pScan)).FpTab
  5654  		var zCols uintptr = uintptr(0)
  5655  		var zIdx uintptr = uintptr(0)
  5656  		var pCons uintptr
  5657  		var h uint32 = uint32(0)
  5658  		var zFmt uintptr
  5659  
  5660  		for pCons = pEq; pCons != 0; pCons = (*IdxConstraint)(unsafe.Pointer(pCons)).FpLink {
  5661  			zCols = idxAppendColDefn(tls, bp+48, zCols, pTab, pCons)
  5662  		}
  5663  		for pCons = pTail; pCons != 0; pCons = (*IdxConstraint)(unsafe.Pointer(pCons)).FpLink {
  5664  			zCols = idxAppendColDefn(tls, bp+48, zCols, pTab, pCons)
  5665  		}
  5666  
  5667  		if *(*int32)(unsafe.Pointer(bp + 48)) == SQLITE_OK {
  5668  			var zTable uintptr = (*IdxTable)(unsafe.Pointer((*IdxScan)(unsafe.Pointer(pScan)).FpTab)).FzName
  5669  			var quoteTable int32 = idxIdentifierRequiresQuotes(tls, zTable)
  5670  			var zName uintptr = uintptr(0)
  5671  			var collisions int32 = 0
  5672  			for __ccgo := true; __ccgo; __ccgo = collisions < 50 && zName != uintptr(0) {
  5673  				var zFind uintptr
  5674  				for *(*int32)(unsafe.Pointer(bp + 52)) = 0; *(*uint8)(unsafe.Pointer(zCols + uintptr(*(*int32)(unsafe.Pointer(bp + 52))))) != 0; *(*int32)(unsafe.Pointer(bp + 52))++ {
  5675  					h = h + (h<<3 + uint32(*(*uint8)(unsafe.Pointer(zCols + uintptr(*(*int32)(unsafe.Pointer(bp + 52)))))))
  5676  				}
  5677  				sqlite3.Xsqlite3_free(tls, zName)
  5678  				zName = sqlite3.Xsqlite3_mprintf(tls, ts+176, libc.VaList(bp, zTable, h))
  5679  				if zName == uintptr(0) {
  5680  					break
  5681  				}
  5682  
  5683  				zFmt = ts + 188
  5684  				zFind = sqlite3.Xsqlite3_mprintf(tls, zFmt, libc.VaList(bp+16, zName))
  5685  				*(*int32)(unsafe.Pointer(bp + 52)) = 0
  5686  				*(*int32)(unsafe.Pointer(bp + 48)) = sqlite3.Xsqlite3_exec(tls, dbm, zFind, *(*uintptr)(unsafe.Pointer(&struct {
  5687  					f func(*libc.TLS, uintptr, int32, uintptr, uintptr) int32
  5688  				}{countNonzeros})), bp+52, uintptr(0))
  5689  
  5690  				sqlite3.Xsqlite3_free(tls, zFind)
  5691  				if *(*int32)(unsafe.Pointer(bp + 52)) == 0 {
  5692  					collisions = 0
  5693  					break
  5694  				}
  5695  				collisions++
  5696  			}
  5697  			if collisions != 0 {
  5698  				*(*int32)(unsafe.Pointer(bp + 48)) = SQLITE_BUSY | int32(3)<<8
  5699  			} else if zName == uintptr(0) {
  5700  				*(*int32)(unsafe.Pointer(bp + 48)) = SQLITE_NOMEM
  5701  			} else {
  5702  				if quoteTable != 0 {
  5703  					zFmt = ts + 274
  5704  				} else {
  5705  					zFmt = ts + 304
  5706  				}
  5707  				zIdx = sqlite3.Xsqlite3_mprintf(tls, zFmt, libc.VaList(bp+24, zName, zTable, zCols))
  5708  				if !(zIdx != 0) {
  5709  					*(*int32)(unsafe.Pointer(bp + 48)) = SQLITE_NOMEM
  5710  				} else {
  5711  					*(*int32)(unsafe.Pointer(bp + 48)) = sqlite3.Xsqlite3_exec(tls, dbm, zIdx, uintptr(0), uintptr(0), (*sqlite3expert)(unsafe.Pointer(p)).FpzErrmsg)
  5712  					if *(*int32)(unsafe.Pointer(bp + 48)) != SQLITE_OK {
  5713  						*(*int32)(unsafe.Pointer(bp + 48)) = SQLITE_BUSY | int32(3)<<8
  5714  					} else {
  5715  						idxHashAdd(tls, bp+48, p+88, zName, zIdx)
  5716  					}
  5717  				}
  5718  				sqlite3.Xsqlite3_free(tls, zName)
  5719  				sqlite3.Xsqlite3_free(tls, zIdx)
  5720  			}
  5721  		}
  5722  
  5723  		sqlite3.Xsqlite3_free(tls, zCols)
  5724  	}
  5725  	return *(*int32)(unsafe.Pointer(bp + 48))
  5726  }
  5727  
  5728  func idxFindConstraint(tls *libc.TLS, pList uintptr, p uintptr) int32 {
  5729  	var pCmp uintptr
  5730  	for pCmp = pList; pCmp != 0; pCmp = (*IdxConstraint)(unsafe.Pointer(pCmp)).FpLink {
  5731  		if (*IdxConstraint)(unsafe.Pointer(p)).FiCol == (*IdxConstraint)(unsafe.Pointer(pCmp)).FiCol {
  5732  			return 1
  5733  		}
  5734  	}
  5735  	return 0
  5736  }
  5737  
  5738  func idxCreateFromWhere(tls *libc.TLS, p uintptr, pScan uintptr, pTail uintptr) int32 {
  5739  	var p1 uintptr = uintptr(0)
  5740  	var pCon uintptr
  5741  	var rc int32
  5742  
  5743  	for pCon = (*IdxScan)(unsafe.Pointer(pScan)).FpEq; pCon != 0; pCon = (*IdxConstraint)(unsafe.Pointer(pCon)).FpNext {
  5744  		if !(idxFindConstraint(tls, p1, pCon) != 0) && !(idxFindConstraint(tls, pTail, pCon) != 0) {
  5745  			(*IdxConstraint)(unsafe.Pointer(pCon)).FpLink = p1
  5746  			p1 = pCon
  5747  		}
  5748  	}
  5749  
  5750  	rc = idxCreateFromCons(tls, p, pScan, p1, pTail)
  5751  
  5752  	if pTail == uintptr(0) {
  5753  		for pCon = (*IdxScan)(unsafe.Pointer(pScan)).FpRange; rc == SQLITE_OK && pCon != 0; pCon = (*IdxConstraint)(unsafe.Pointer(pCon)).FpNext {
  5754  			if !(idxFindConstraint(tls, p1, pCon) != 0) && !(idxFindConstraint(tls, pTail, pCon) != 0) {
  5755  				rc = idxCreateFromCons(tls, p, pScan, p1, pCon)
  5756  			}
  5757  		}
  5758  	}
  5759  
  5760  	return rc
  5761  }
  5762  
  5763  func idxCreateCandidates(tls *libc.TLS, p uintptr) int32 {
  5764  	var rc int32 = SQLITE_OK
  5765  	var pIter uintptr
  5766  
  5767  	for pIter = (*sqlite3expert)(unsafe.Pointer(p)).FpScan; pIter != 0 && rc == SQLITE_OK; pIter = (*IdxScan)(unsafe.Pointer(pIter)).FpNextScan {
  5768  		rc = idxCreateFromWhere(tls, p, pIter, uintptr(0))
  5769  		if rc == SQLITE_OK && (*IdxScan)(unsafe.Pointer(pIter)).FpOrder != 0 {
  5770  			rc = idxCreateFromWhere(tls, p, pIter, (*IdxScan)(unsafe.Pointer(pIter)).FpOrder)
  5771  		}
  5772  	}
  5773  
  5774  	return rc
  5775  }
  5776  
  5777  func idxConstraintFree(tls *libc.TLS, pConstraint uintptr) {
  5778  	var pNext uintptr
  5779  	var p uintptr
  5780  
  5781  	for p = pConstraint; p != 0; p = pNext {
  5782  		pNext = (*IdxConstraint)(unsafe.Pointer(p)).FpNext
  5783  		sqlite3.Xsqlite3_free(tls, p)
  5784  	}
  5785  }
  5786  
  5787  func idxScanFree(tls *libc.TLS, pScan uintptr, pLast uintptr) {
  5788  	var p uintptr
  5789  	var pNext uintptr
  5790  	for p = pScan; p != pLast; p = pNext {
  5791  		pNext = (*IdxScan)(unsafe.Pointer(p)).FpNextScan
  5792  		idxConstraintFree(tls, (*IdxScan)(unsafe.Pointer(p)).FpOrder)
  5793  		idxConstraintFree(tls, (*IdxScan)(unsafe.Pointer(p)).FpEq)
  5794  		idxConstraintFree(tls, (*IdxScan)(unsafe.Pointer(p)).FpRange)
  5795  		sqlite3.Xsqlite3_free(tls, p)
  5796  	}
  5797  }
  5798  
  5799  func idxStatementFree(tls *libc.TLS, pStatement uintptr, pLast uintptr) {
  5800  	var p uintptr
  5801  	var pNext uintptr
  5802  	for p = pStatement; p != pLast; p = pNext {
  5803  		pNext = (*IdxStatement)(unsafe.Pointer(p)).FpNext
  5804  		sqlite3.Xsqlite3_free(tls, (*IdxStatement)(unsafe.Pointer(p)).FzEQP)
  5805  		sqlite3.Xsqlite3_free(tls, (*IdxStatement)(unsafe.Pointer(p)).FzIdx)
  5806  		sqlite3.Xsqlite3_free(tls, p)
  5807  	}
  5808  }
  5809  
  5810  func idxTableFree(tls *libc.TLS, pTab uintptr) {
  5811  	var pIter uintptr
  5812  	var pNext uintptr
  5813  	for pIter = pTab; pIter != 0; pIter = pNext {
  5814  		pNext = (*IdxTable)(unsafe.Pointer(pIter)).FpNext
  5815  		sqlite3.Xsqlite3_free(tls, pIter)
  5816  	}
  5817  }
  5818  
  5819  func idxWriteFree(tls *libc.TLS, pTab uintptr) {
  5820  	var pIter uintptr
  5821  	var pNext uintptr
  5822  	for pIter = pTab; pIter != 0; pIter = pNext {
  5823  		pNext = (*IdxWrite)(unsafe.Pointer(pIter)).FpNext
  5824  		sqlite3.Xsqlite3_free(tls, pIter)
  5825  	}
  5826  }
  5827  
  5828  func idxFindIndexes(tls *libc.TLS, p uintptr, pzErr uintptr) int32 {
  5829  	bp := tls.Alloc(8228)
  5830  	defer tls.Free(8228)
  5831  
  5832  	var pStmt uintptr
  5833  	var dbm uintptr
  5834  
  5835  	var zSql uintptr
  5836  	var nIdx int32
  5837  	var zIdx uintptr
  5838  
  5839  	var zDetail uintptr
  5840  	var nDetail int32
  5841  	var i int32
  5842  	var pEntry uintptr
  5843  
  5844  	dbm = (*sqlite3expert)(unsafe.Pointer(p)).Fdbm
  5845  	*(*int32)(unsafe.Pointer(bp + 8224)) = SQLITE_OK
  5846  	idxHashInit(tls, bp+24)
  5847  
  5848  	pStmt = (*sqlite3expert)(unsafe.Pointer(p)).FpStatement
  5849  __1:
  5850  	if !(*(*int32)(unsafe.Pointer(bp + 8224)) == SQLITE_OK && pStmt != 0) {
  5851  		goto __3
  5852  	}
  5853  	*(*uintptr)(unsafe.Pointer(bp + 8216)) = uintptr(0)
  5854  	idxHashClear(tls, bp+24)
  5855  	*(*int32)(unsafe.Pointer(bp + 8224)) = idxPrintfPrepareStmt(tls, dbm, bp+8216, pzErr,
  5856  		ts+330, libc.VaList(bp, (*IdxStatement)(unsafe.Pointer(pStmt)).FzSql))
  5857  __4:
  5858  	if !(*(*int32)(unsafe.Pointer(bp + 8224)) == SQLITE_OK && sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp + 8216))) == SQLITE_ROW) {
  5859  		goto __5
  5860  	}
  5861  
  5862  	zDetail = sqlite3.Xsqlite3_column_text(tls, *(*uintptr)(unsafe.Pointer(bp + 8216)), 3)
  5863  
  5864  	if !!(zDetail != 0) {
  5865  		goto __6
  5866  	}
  5867  	goto __4
  5868  __6:
  5869  	;
  5870  	nDetail = int32(libc.Xstrlen(tls, zDetail))
  5871  
  5872  	i = 0
  5873  __7:
  5874  	if !(i < nDetail) {
  5875  		goto __9
  5876  	}
  5877  	zIdx = uintptr(0)
  5878  	if !(i+13 < nDetail && libc.Xmemcmp(tls, zDetail+uintptr(i), ts+352, uint64(13)) == 0) {
  5879  		goto __10
  5880  	}
  5881  	zIdx = zDetail + uintptr(i+13)
  5882  	goto __11
  5883  __10:
  5884  	if !(i+22 < nDetail &&
  5885  		libc.Xmemcmp(tls, zDetail+uintptr(i), ts+366, uint64(22)) == 0) {
  5886  		goto __12
  5887  	}
  5888  	zIdx = zDetail + uintptr(i+22)
  5889  __12:
  5890  	;
  5891  __11:
  5892  	;
  5893  	if !(zIdx != 0) {
  5894  		goto __13
  5895  	}
  5896  	nIdx = 0
  5897  __14:
  5898  	if !(int32(*(*uint8)(unsafe.Pointer(zIdx + uintptr(nIdx)))) != 0 && (int32(*(*uint8)(unsafe.Pointer(zIdx + uintptr(nIdx)))) != ' ' || int32(*(*uint8)(unsafe.Pointer(zIdx + uintptr(nIdx+1)))) != '(')) {
  5899  		goto __15
  5900  	}
  5901  	nIdx++
  5902  	goto __14
  5903  __15:
  5904  	;
  5905  	zSql = idxHashSearch(tls, p+88, zIdx, nIdx)
  5906  	if !(zSql != 0) {
  5907  		goto __16
  5908  	}
  5909  	idxHashAdd(tls, bp+8224, bp+24, zSql, uintptr(0))
  5910  	if !(*(*int32)(unsafe.Pointer(bp + 8224)) != 0) {
  5911  		goto __17
  5912  	}
  5913  	goto find_indexes_out
  5914  __17:
  5915  	;
  5916  __16:
  5917  	;
  5918  	goto __9
  5919  __13:
  5920  	;
  5921  	goto __8
  5922  __8:
  5923  	i++
  5924  	goto __7
  5925  	goto __9
  5926  __9:
  5927  	;
  5928  	if !(int32(*(*uint8)(unsafe.Pointer(zDetail))) != '-') {
  5929  		goto __18
  5930  	}
  5931  	(*IdxStatement)(unsafe.Pointer(pStmt)).FzEQP = idxAppendText(tls, bp+8224, (*IdxStatement)(unsafe.Pointer(pStmt)).FzEQP, ts+389, libc.VaList(bp+8, zDetail))
  5932  __18:
  5933  	;
  5934  	goto __4
  5935  __5:
  5936  	;
  5937  	pEntry = (*IdxHash)(unsafe.Pointer(bp + 24)).FpFirst
  5938  __19:
  5939  	if !(pEntry != 0) {
  5940  		goto __21
  5941  	}
  5942  	(*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))
  5943  	goto __20
  5944  __20:
  5945  	pEntry = (*IdxHashEntry)(unsafe.Pointer(pEntry)).FpNext
  5946  	goto __19
  5947  	goto __21
  5948  __21:
  5949  	;
  5950  	idxFinalize(tls, bp+8224, *(*uintptr)(unsafe.Pointer(bp + 8216)))
  5951  	goto __2
  5952  __2:
  5953  	pStmt = (*IdxStatement)(unsafe.Pointer(pStmt)).FpNext
  5954  	goto __1
  5955  	goto __3
  5956  __3:
  5957  	;
  5958  find_indexes_out:
  5959  	idxHashClear(tls, bp+24)
  5960  	return *(*int32)(unsafe.Pointer(bp + 8224))
  5961  }
  5962  
  5963  func idxAuthCallback(tls *libc.TLS, pCtx uintptr, eOp int32, z3 uintptr, z4 uintptr, zDb uintptr, zTrigger uintptr) int32 {
  5964  	bp := tls.Alloc(4)
  5965  	defer tls.Free(4)
  5966  
  5967  	*(*int32)(unsafe.Pointer(bp)) = SQLITE_OK
  5968  	_ = z4
  5969  	_ = zTrigger
  5970  	if eOp == SQLITE_INSERT || eOp == SQLITE_UPDATE || eOp == SQLITE_DELETE {
  5971  		if sqlite3.Xsqlite3_stricmp(tls, zDb, ts+85) == 0 {
  5972  			var p uintptr = pCtx
  5973  			var pTab uintptr
  5974  			for pTab = (*sqlite3expert)(unsafe.Pointer(p)).FpTable; pTab != 0; pTab = (*IdxTable)(unsafe.Pointer(pTab)).FpNext {
  5975  				if 0 == sqlite3.Xsqlite3_stricmp(tls, z3, (*IdxTable)(unsafe.Pointer(pTab)).FzName) {
  5976  					break
  5977  				}
  5978  			}
  5979  			if pTab != 0 {
  5980  				var pWrite uintptr
  5981  				for pWrite = (*sqlite3expert)(unsafe.Pointer(p)).FpWrite; pWrite != 0; pWrite = (*IdxWrite)(unsafe.Pointer(pWrite)).FpNext {
  5982  					if (*IdxWrite)(unsafe.Pointer(pWrite)).FpTab == pTab && (*IdxWrite)(unsafe.Pointer(pWrite)).FeOp == eOp {
  5983  						break
  5984  					}
  5985  				}
  5986  				if pWrite == uintptr(0) {
  5987  					pWrite = idxMalloc(tls, bp, int32(unsafe.Sizeof(IdxWrite{})))
  5988  					if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK {
  5989  						(*IdxWrite)(unsafe.Pointer(pWrite)).FpTab = pTab
  5990  						(*IdxWrite)(unsafe.Pointer(pWrite)).FeOp = eOp
  5991  						(*IdxWrite)(unsafe.Pointer(pWrite)).FpNext = (*sqlite3expert)(unsafe.Pointer(p)).FpWrite
  5992  						(*sqlite3expert)(unsafe.Pointer(p)).FpWrite = pWrite
  5993  					}
  5994  				}
  5995  			}
  5996  		}
  5997  	}
  5998  	return *(*int32)(unsafe.Pointer(bp))
  5999  }
  6000  
  6001  func idxProcessOneTrigger(tls *libc.TLS, p uintptr, pWrite uintptr, pzErr uintptr) int32 {
  6002  	bp := tls.Alloc(104)
  6003  	defer tls.Free(104)
  6004  
  6005  	var pTab uintptr = (*IdxWrite)(unsafe.Pointer(pWrite)).FpTab
  6006  	var zTab uintptr = (*IdxTable)(unsafe.Pointer(pTab)).FzName
  6007  	var zSql uintptr = ts + 398
  6008  	*(*uintptr)(unsafe.Pointer(bp + 80)) = uintptr(0)
  6009  	*(*int32)(unsafe.Pointer(bp + 88)) = SQLITE_OK
  6010  	var zWrite uintptr = uintptr(0)
  6011  
  6012  	*(*int32)(unsafe.Pointer(bp + 88)) = idxPrintfPrepareStmt(tls, (*sqlite3expert)(unsafe.Pointer(p)).Fdb, bp+80, pzErr, zSql, libc.VaList(bp, zTab, zTab))
  6013  	for *(*int32)(unsafe.Pointer(bp + 88)) == SQLITE_OK && SQLITE_ROW == sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp + 80))) {
  6014  		var zCreate uintptr = sqlite3.Xsqlite3_column_text(tls, *(*uintptr)(unsafe.Pointer(bp + 80)), 0)
  6015  		if zCreate == uintptr(0) {
  6016  			continue
  6017  		}
  6018  		*(*int32)(unsafe.Pointer(bp + 88)) = sqlite3.Xsqlite3_exec(tls, (*sqlite3expert)(unsafe.Pointer(p)).Fdbv, zCreate, uintptr(0), uintptr(0), pzErr)
  6019  	}
  6020  	idxFinalize(tls, bp+88, *(*uintptr)(unsafe.Pointer(bp + 80)))
  6021  
  6022  	if *(*int32)(unsafe.Pointer(bp + 88)) == SQLITE_OK {
  6023  		var z uintptr = sqlite3.Xsqlite3_mprintf(tls, ts+524, libc.VaList(bp+16, zTab, zInt))
  6024  		if z == uintptr(0) {
  6025  			*(*int32)(unsafe.Pointer(bp + 88)) = SQLITE_NOMEM
  6026  		} else {
  6027  			*(*int32)(unsafe.Pointer(bp + 88)) = sqlite3.Xsqlite3_exec(tls, (*sqlite3expert)(unsafe.Pointer(p)).Fdbv, z, uintptr(0), uintptr(0), pzErr)
  6028  			sqlite3.Xsqlite3_free(tls, z)
  6029  		}
  6030  	}
  6031  
  6032  	switch (*IdxWrite)(unsafe.Pointer(pWrite)).FeOp {
  6033  	case SQLITE_INSERT:
  6034  		{
  6035  			var i int32
  6036  			zWrite = idxAppendText(tls, bp+88, zWrite, ts+557, libc.VaList(bp+32, zInt))
  6037  			for i = 0; i < (*IdxTable)(unsafe.Pointer(pTab)).FnCol; i++ {
  6038  				zWrite = idxAppendText(tls, bp+88, zWrite, ts+580, libc.VaList(bp+40, func() uintptr {
  6039  					if i == 0 {
  6040  						return ts + 584
  6041  					}
  6042  					return ts + 97
  6043  				}()))
  6044  			}
  6045  			zWrite = idxAppendText(tls, bp+88, zWrite, ts+585, 0)
  6046  			break
  6047  
  6048  		}
  6049  	case SQLITE_UPDATE:
  6050  		{
  6051  			var i int32
  6052  			zWrite = idxAppendText(tls, bp+88, zWrite, ts+587, libc.VaList(bp+48, zInt))
  6053  			for i = 0; i < (*IdxTable)(unsafe.Pointer(pTab)).FnCol; i++ {
  6054  				zWrite = idxAppendText(tls, bp+88, zWrite, ts+602, libc.VaList(bp+56, func() uintptr {
  6055  					if i == 0 {
  6056  						return ts + 584
  6057  					}
  6058  					return ts + 97
  6059  				}(),
  6060  					(*IdxColumn)(unsafe.Pointer((*IdxTable)(unsafe.Pointer(pTab)).FaCol+uintptr(i)*24)).FzName))
  6061  			}
  6062  			break
  6063  
  6064  		}
  6065  	default:
  6066  		{
  6067  			if *(*int32)(unsafe.Pointer(bp + 88)) == SQLITE_OK {
  6068  				zWrite = sqlite3.Xsqlite3_mprintf(tls, ts+609, libc.VaList(bp+72, zInt))
  6069  				if zWrite == uintptr(0) {
  6070  					*(*int32)(unsafe.Pointer(bp + 88)) = SQLITE_NOMEM
  6071  				}
  6072  			}
  6073  
  6074  		}
  6075  	}
  6076  
  6077  	if *(*int32)(unsafe.Pointer(bp + 88)) == SQLITE_OK {
  6078  		*(*uintptr)(unsafe.Pointer(bp + 96)) = uintptr(0)
  6079  		*(*int32)(unsafe.Pointer(bp + 88)) = sqlite3.Xsqlite3_prepare_v2(tls, (*sqlite3expert)(unsafe.Pointer(p)).Fdbv, zWrite, -1, bp+96, uintptr(0))
  6080  		idxFinalize(tls, bp+88, *(*uintptr)(unsafe.Pointer(bp + 96)))
  6081  		if *(*int32)(unsafe.Pointer(bp + 88)) != SQLITE_OK {
  6082  			idxDatabaseError(tls, (*sqlite3expert)(unsafe.Pointer(p)).Fdbv, pzErr)
  6083  		}
  6084  	}
  6085  	sqlite3.Xsqlite3_free(tls, zWrite)
  6086  
  6087  	if *(*int32)(unsafe.Pointer(bp + 88)) == SQLITE_OK {
  6088  		*(*int32)(unsafe.Pointer(bp + 88)) = sqlite3.Xsqlite3_exec(tls, (*sqlite3expert)(unsafe.Pointer(p)).Fdbv, zDrop, uintptr(0), uintptr(0), pzErr)
  6089  	}
  6090  
  6091  	return *(*int32)(unsafe.Pointer(bp + 88))
  6092  }
  6093  
  6094  var zInt uintptr = ts + 624
  6095  var zDrop uintptr = ts + 662
  6096  
  6097  func idxProcessTriggers(tls *libc.TLS, p uintptr, pzErr uintptr) int32 {
  6098  	var rc int32 = SQLITE_OK
  6099  	var pEnd uintptr = uintptr(0)
  6100  	var pFirst uintptr = (*sqlite3expert)(unsafe.Pointer(p)).FpWrite
  6101  
  6102  	for rc == SQLITE_OK && pFirst != pEnd {
  6103  		var pIter uintptr
  6104  		for pIter = pFirst; rc == SQLITE_OK && pIter != pEnd; pIter = (*IdxWrite)(unsafe.Pointer(pIter)).FpNext {
  6105  			rc = idxProcessOneTrigger(tls, p, pIter, pzErr)
  6106  		}
  6107  		pEnd = pFirst
  6108  		pFirst = (*sqlite3expert)(unsafe.Pointer(p)).FpWrite
  6109  	}
  6110  
  6111  	return rc
  6112  }
  6113  
  6114  func idxCreateVtabSchema(tls *libc.TLS, p uintptr, pzErrmsg uintptr) int32 {
  6115  	bp := tls.Alloc(60)
  6116  	defer tls.Free(60)
  6117  
  6118  	*(*int32)(unsafe.Pointer(bp + 56)) = idxRegisterVtab(tls, p)
  6119  	*(*uintptr)(unsafe.Pointer(bp + 40)) = uintptr(0)
  6120  
  6121  	*(*int32)(unsafe.Pointer(bp + 56)) = idxPrepareStmt(tls, (*sqlite3expert)(unsafe.Pointer(p)).Fdb, bp+40, pzErrmsg,
  6122  		ts+711)
  6123  	for *(*int32)(unsafe.Pointer(bp + 56)) == SQLITE_OK && SQLITE_ROW == sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp + 40))) {
  6124  		var zType uintptr = sqlite3.Xsqlite3_column_text(tls, *(*uintptr)(unsafe.Pointer(bp + 40)), 0)
  6125  		var zName uintptr = sqlite3.Xsqlite3_column_text(tls, *(*uintptr)(unsafe.Pointer(bp + 40)), 1)
  6126  		var zSql uintptr = sqlite3.Xsqlite3_column_text(tls, *(*uintptr)(unsafe.Pointer(bp + 40)), 2)
  6127  
  6128  		if zType == uintptr(0) || zName == uintptr(0) {
  6129  			continue
  6130  		}
  6131  		if int32(*(*uint8)(unsafe.Pointer(zType))) == 'v' || int32(*(*uint8)(unsafe.Pointer(zType + 1))) == 'r' {
  6132  			if zSql != 0 {
  6133  				*(*int32)(unsafe.Pointer(bp + 56)) = sqlite3.Xsqlite3_exec(tls, (*sqlite3expert)(unsafe.Pointer(p)).Fdbv, zSql, uintptr(0), uintptr(0), pzErrmsg)
  6134  			}
  6135  		} else {
  6136  			*(*int32)(unsafe.Pointer(bp + 56)) = idxGetTableInfo(tls, (*sqlite3expert)(unsafe.Pointer(p)).Fdb, zName, bp+48, pzErrmsg)
  6137  			if *(*int32)(unsafe.Pointer(bp + 56)) == SQLITE_OK {
  6138  				var i int32
  6139  				var zInner uintptr = uintptr(0)
  6140  				var zOuter uintptr = uintptr(0)
  6141  				(*IdxTable)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 48)))).FpNext = (*sqlite3expert)(unsafe.Pointer(p)).FpTable
  6142  				(*sqlite3expert)(unsafe.Pointer(p)).FpTable = *(*uintptr)(unsafe.Pointer(bp + 48))
  6143  
  6144  				zInner = idxAppendText(tls, bp+56, uintptr(0), ts+979, 0)
  6145  				for i = 0; i < (*IdxTable)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 48)))).FnCol; i++ {
  6146  					zInner = idxAppendText(tls, bp+56, zInner, ts+995,
  6147  						libc.VaList(bp, func() uintptr {
  6148  							if i == 0 {
  6149  								return ts + 584
  6150  							}
  6151  							return ts + 97
  6152  						}(), (*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))
  6153  				}
  6154  				zInner = idxAppendText(tls, bp+56, zInner, ts+585, 0)
  6155  
  6156  				zOuter = idxAppendText(tls, bp+56, uintptr(0),
  6157  					ts+1011, libc.VaList(bp+24, zName, zInner))
  6158  				if *(*int32)(unsafe.Pointer(bp + 56)) == SQLITE_OK {
  6159  					*(*int32)(unsafe.Pointer(bp + 56)) = sqlite3.Xsqlite3_exec(tls, (*sqlite3expert)(unsafe.Pointer(p)).Fdbv, zOuter, uintptr(0), uintptr(0), pzErrmsg)
  6160  				}
  6161  				sqlite3.Xsqlite3_free(tls, zInner)
  6162  				sqlite3.Xsqlite3_free(tls, zOuter)
  6163  			}
  6164  		}
  6165  	}
  6166  	idxFinalize(tls, bp+56, *(*uintptr)(unsafe.Pointer(bp + 40)))
  6167  	return *(*int32)(unsafe.Pointer(bp + 56))
  6168  }
  6169  
  6170  type IdxSampleCtx = struct {
  6171  	FiTarget     int32
  6172  	F__ccgo_pad1 [4]byte
  6173  	Ftarget      float64
  6174  	FnRow        float64
  6175  	FnRet        float64
  6176  }
  6177  
  6178  func idxSampleFunc(tls *libc.TLS, pCtx uintptr, argc int32, argv uintptr) {
  6179  	bp := tls.Alloc(2)
  6180  	defer tls.Free(2)
  6181  
  6182  	var p uintptr = sqlite3.Xsqlite3_user_data(tls, pCtx)
  6183  	var bRet int32
  6184  
  6185  	_ = argv
  6186  
  6187  	if (*IdxSampleCtx)(unsafe.Pointer(p)).FnRow == 0.0 {
  6188  		bRet = 1
  6189  	} else {
  6190  		bRet = libc.Bool32((*IdxSampleCtx)(unsafe.Pointer(p)).FnRet/(*IdxSampleCtx)(unsafe.Pointer(p)).FnRow <= (*IdxSampleCtx)(unsafe.Pointer(p)).Ftarget)
  6191  		if bRet == 0 {
  6192  			sqlite3.Xsqlite3_randomness(tls, 2, bp)
  6193  			bRet = libc.Bool32(int32(*(*uint16)(unsafe.Pointer(bp)))%100 <= (*IdxSampleCtx)(unsafe.Pointer(p)).FiTarget)
  6194  		}
  6195  	}
  6196  
  6197  	sqlite3.Xsqlite3_result_int(tls, pCtx, bRet)
  6198  	*(*float64)(unsafe.Pointer(p + 16)) += 1.0
  6199  	*(*float64)(unsafe.Pointer(p + 24)) += float64(bRet)
  6200  }
  6201  
  6202  type IdxRemCtx = struct {
  6203  	FnSlot       int32
  6204  	F__ccgo_pad1 [4]byte
  6205  	FaSlot       [1]struct {
  6206  		FeType       int32
  6207  		F__ccgo_pad1 [4]byte
  6208  		FiVal        i64
  6209  		FrVal        float64
  6210  		FnByte       int32
  6211  		Fn           int32
  6212  		Fz           uintptr
  6213  	}
  6214  }
  6215  
  6216  type IdxRemSlot = struct {
  6217  	FeType       int32
  6218  	F__ccgo_pad1 [4]byte
  6219  	FiVal        i64
  6220  	FrVal        float64
  6221  	FnByte       int32
  6222  	Fn           int32
  6223  	Fz           uintptr
  6224  }
  6225  
  6226  func idxRemFunc(tls *libc.TLS, pCtx uintptr, argc int32, argv uintptr) {
  6227  	var p uintptr = sqlite3.Xsqlite3_user_data(tls, pCtx)
  6228  	var pSlot uintptr
  6229  	var iSlot int32
  6230  
  6231  	iSlot = sqlite3.Xsqlite3_value_int(tls, *(*uintptr)(unsafe.Pointer(argv)))
  6232  
  6233  	pSlot = p + 8 + uintptr(iSlot)*40
  6234  
  6235  	switch (*IdxRemSlot)(unsafe.Pointer(pSlot)).FeType {
  6236  	case SQLITE_NULL:
  6237  		break
  6238  
  6239  	case SQLITE_INTEGER:
  6240  		sqlite3.Xsqlite3_result_int64(tls, pCtx, (*IdxRemSlot)(unsafe.Pointer(pSlot)).FiVal)
  6241  		break
  6242  
  6243  	case SQLITE_FLOAT:
  6244  		sqlite3.Xsqlite3_result_double(tls, pCtx, (*IdxRemSlot)(unsafe.Pointer(pSlot)).FrVal)
  6245  		break
  6246  
  6247  	case SQLITE_BLOB:
  6248  		sqlite3.Xsqlite3_result_blob(tls, pCtx, (*IdxRemSlot)(unsafe.Pointer(pSlot)).Fz, (*IdxRemSlot)(unsafe.Pointer(pSlot)).Fn, libc.UintptrFromInt32(-1))
  6249  		break
  6250  
  6251  	case SQLITE_TEXT:
  6252  		sqlite3.Xsqlite3_result_text(tls, pCtx, (*IdxRemSlot)(unsafe.Pointer(pSlot)).Fz, (*IdxRemSlot)(unsafe.Pointer(pSlot)).Fn, libc.UintptrFromInt32(-1))
  6253  		break
  6254  	}
  6255  
  6256  	(*IdxRemSlot)(unsafe.Pointer(pSlot)).FeType = sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
  6257  	switch (*IdxRemSlot)(unsafe.Pointer(pSlot)).FeType {
  6258  	case SQLITE_NULL:
  6259  		break
  6260  
  6261  	case SQLITE_INTEGER:
  6262  		(*IdxRemSlot)(unsafe.Pointer(pSlot)).FiVal = sqlite3.Xsqlite3_value_int64(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
  6263  		break
  6264  
  6265  	case SQLITE_FLOAT:
  6266  		(*IdxRemSlot)(unsafe.Pointer(pSlot)).FrVal = sqlite3.Xsqlite3_value_double(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
  6267  		break
  6268  
  6269  	case SQLITE_BLOB:
  6270  		fallthrough
  6271  	case SQLITE_TEXT:
  6272  		{
  6273  			var nByte int32 = sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
  6274  			var pData uintptr = uintptr(0)
  6275  			if nByte > (*IdxRemSlot)(unsafe.Pointer(pSlot)).FnByte {
  6276  				var zNew uintptr = sqlite3.Xsqlite3_realloc(tls, (*IdxRemSlot)(unsafe.Pointer(pSlot)).Fz, nByte*2)
  6277  				if zNew == uintptr(0) {
  6278  					sqlite3.Xsqlite3_result_error_nomem(tls, pCtx)
  6279  					return
  6280  				}
  6281  				(*IdxRemSlot)(unsafe.Pointer(pSlot)).FnByte = nByte * 2
  6282  				(*IdxRemSlot)(unsafe.Pointer(pSlot)).Fz = zNew
  6283  			}
  6284  			(*IdxRemSlot)(unsafe.Pointer(pSlot)).Fn = nByte
  6285  			if (*IdxRemSlot)(unsafe.Pointer(pSlot)).FeType == SQLITE_BLOB {
  6286  				pData = sqlite3.Xsqlite3_value_blob(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
  6287  				if pData != 0 {
  6288  					libc.Xmemcpy(tls, (*IdxRemSlot)(unsafe.Pointer(pSlot)).Fz, pData, uint64(nByte))
  6289  				}
  6290  			} else {
  6291  				pData = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
  6292  				libc.Xmemcpy(tls, (*IdxRemSlot)(unsafe.Pointer(pSlot)).Fz, pData, uint64(nByte))
  6293  			}
  6294  			break
  6295  
  6296  		}
  6297  	}
  6298  }
  6299  
  6300  func idxLargestIndex(tls *libc.TLS, db uintptr, pnMax uintptr, pzErr uintptr) int32 {
  6301  	bp := tls.Alloc(12)
  6302  	defer tls.Free(12)
  6303  
  6304  	*(*int32)(unsafe.Pointer(bp + 8)) = SQLITE_OK
  6305  	var zMax uintptr = ts + 1052
  6306  	*(*uintptr)(unsafe.Pointer(bp)) = uintptr(0)
  6307  
  6308  	*(*int32)(unsafe.Pointer(pnMax)) = 0
  6309  	*(*int32)(unsafe.Pointer(bp + 8)) = idxPrepareStmt(tls, db, bp, pzErr, zMax)
  6310  	if *(*int32)(unsafe.Pointer(bp + 8)) == SQLITE_OK && SQLITE_ROW == sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp))) {
  6311  		*(*int32)(unsafe.Pointer(pnMax)) = sqlite3.Xsqlite3_column_int(tls, *(*uintptr)(unsafe.Pointer(bp)), 0) + 1
  6312  	}
  6313  	idxFinalize(tls, bp+8, *(*uintptr)(unsafe.Pointer(bp)))
  6314  
  6315  	return *(*int32)(unsafe.Pointer(bp + 8))
  6316  }
  6317  
  6318  func idxPopulateOneStat1(tls *libc.TLS, p uintptr, pIndexXInfo uintptr, pWriteStat uintptr, zTab uintptr, zIdx uintptr, pzErr uintptr) int32 {
  6319  	bp := tls.Alloc(128)
  6320  	defer tls.Free(128)
  6321  
  6322  	var zCols uintptr = uintptr(0)
  6323  	var zOrder uintptr = uintptr(0)
  6324  	var zQuery uintptr = uintptr(0)
  6325  	var nCol int32 = 0
  6326  	var i int32
  6327  	*(*uintptr)(unsafe.Pointer(bp + 120)) = uintptr(0)
  6328  	var aStat uintptr = uintptr(0)
  6329  	*(*int32)(unsafe.Pointer(bp + 112)) = SQLITE_OK
  6330  
  6331  	sqlite3.Xsqlite3_bind_text(tls, pIndexXInfo, 1, zIdx, -1, uintptr(0))
  6332  	for SQLITE_OK == *(*int32)(unsafe.Pointer(bp + 112)) && SQLITE_ROW == sqlite3.Xsqlite3_step(tls, pIndexXInfo) {
  6333  		var zComma uintptr
  6334  		if zCols == uintptr(0) {
  6335  			zComma = ts + 584
  6336  		} else {
  6337  			zComma = ts + 97
  6338  		}
  6339  		var zName uintptr = sqlite3.Xsqlite3_column_text(tls, pIndexXInfo, 0)
  6340  		var zColl uintptr = sqlite3.Xsqlite3_column_text(tls, pIndexXInfo, 1)
  6341  		zCols = idxAppendText(tls, bp+112, zCols,
  6342  			ts+1189, libc.VaList(bp, zComma, zName, nCol, zName, zColl))
  6343  		zOrder = idxAppendText(tls, bp+112, zOrder, ts+1224, libc.VaList(bp+40, zComma, libc.PreIncInt32(&nCol, 1)))
  6344  	}
  6345  	sqlite3.Xsqlite3_reset(tls, pIndexXInfo)
  6346  	if *(*int32)(unsafe.Pointer(bp + 112)) == SQLITE_OK {
  6347  		if (*sqlite3expert)(unsafe.Pointer(p)).FiSample == 100 {
  6348  			zQuery = sqlite3.Xsqlite3_mprintf(tls,
  6349  				ts+1229, libc.VaList(bp+56, zCols, zTab, zOrder))
  6350  		} else {
  6351  			zQuery = sqlite3.Xsqlite3_mprintf(tls,
  6352  				ts+1261, libc.VaList(bp+80, zCols, zOrder))
  6353  		}
  6354  	}
  6355  	sqlite3.Xsqlite3_free(tls, zCols)
  6356  	sqlite3.Xsqlite3_free(tls, zOrder)
  6357  
  6358  	if *(*int32)(unsafe.Pointer(bp + 112)) == SQLITE_OK {
  6359  		var dbrem uintptr = func() uintptr {
  6360  			if (*sqlite3expert)(unsafe.Pointer(p)).FiSample == 100 {
  6361  				return (*sqlite3expert)(unsafe.Pointer(p)).Fdb
  6362  			}
  6363  			return (*sqlite3expert)(unsafe.Pointer(p)).Fdbv
  6364  		}()
  6365  		*(*int32)(unsafe.Pointer(bp + 112)) = idxPrepareStmt(tls, dbrem, bp+120, pzErr, zQuery)
  6366  	}
  6367  	sqlite3.Xsqlite3_free(tls, zQuery)
  6368  
  6369  	if *(*int32)(unsafe.Pointer(bp + 112)) == SQLITE_OK {
  6370  		aStat = idxMalloc(tls, bp+112, int32(uint64(unsafe.Sizeof(int32(0)))*uint64(nCol+1)))
  6371  	}
  6372  	if *(*int32)(unsafe.Pointer(bp + 112)) == SQLITE_OK && SQLITE_ROW == sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp + 120))) {
  6373  		var pEntry uintptr
  6374  		var zStat uintptr = uintptr(0)
  6375  		for i = 0; i <= nCol; i++ {
  6376  			*(*int32)(unsafe.Pointer(aStat + uintptr(i)*4)) = 1
  6377  		}
  6378  		for *(*int32)(unsafe.Pointer(bp + 112)) == SQLITE_OK && SQLITE_ROW == sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp + 120))) {
  6379  			*(*int32)(unsafe.Pointer(aStat))++
  6380  			for i = 0; i < nCol; i++ {
  6381  				if sqlite3.Xsqlite3_column_int(tls, *(*uintptr)(unsafe.Pointer(bp + 120)), i) == 0 {
  6382  					break
  6383  				}
  6384  			}
  6385  			for ; i < nCol; i++ {
  6386  				*(*int32)(unsafe.Pointer(aStat + uintptr(i+1)*4))++
  6387  			}
  6388  		}
  6389  
  6390  		if *(*int32)(unsafe.Pointer(bp + 112)) == SQLITE_OK {
  6391  			var s0 int32 = *(*int32)(unsafe.Pointer(aStat))
  6392  			zStat = sqlite3.Xsqlite3_mprintf(tls, ts+1333, libc.VaList(bp+96, s0))
  6393  			if zStat == uintptr(0) {
  6394  				*(*int32)(unsafe.Pointer(bp + 112)) = SQLITE_NOMEM
  6395  			}
  6396  			for i = 1; *(*int32)(unsafe.Pointer(bp + 112)) == SQLITE_OK && i <= nCol; i++ {
  6397  				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))))
  6398  			}
  6399  		}
  6400  
  6401  		if *(*int32)(unsafe.Pointer(bp + 112)) == SQLITE_OK {
  6402  			sqlite3.Xsqlite3_bind_text(tls, pWriteStat, 1, zTab, -1, uintptr(0))
  6403  			sqlite3.Xsqlite3_bind_text(tls, pWriteStat, 2, zIdx, -1, uintptr(0))
  6404  			sqlite3.Xsqlite3_bind_text(tls, pWriteStat, 3, zStat, -1, uintptr(0))
  6405  			sqlite3.Xsqlite3_step(tls, pWriteStat)
  6406  			*(*int32)(unsafe.Pointer(bp + 112)) = sqlite3.Xsqlite3_reset(tls, pWriteStat)
  6407  		}
  6408  
  6409  		pEntry = idxHashFind(tls, p+88, zIdx, int32(libc.Xstrlen(tls, zIdx)))
  6410  		if pEntry != 0 {
  6411  			(*IdxHashEntry)(unsafe.Pointer(pEntry)).FzVal2 = zStat
  6412  		} else {
  6413  			sqlite3.Xsqlite3_free(tls, zStat)
  6414  		}
  6415  	}
  6416  	sqlite3.Xsqlite3_free(tls, aStat)
  6417  	idxFinalize(tls, bp+112, *(*uintptr)(unsafe.Pointer(bp + 120)))
  6418  
  6419  	return *(*int32)(unsafe.Pointer(bp + 112))
  6420  }
  6421  
  6422  func idxBuildSampleTable(tls *libc.TLS, p uintptr, zTab uintptr) int32 {
  6423  	bp := tls.Alloc(8)
  6424  	defer tls.Free(8)
  6425  
  6426  	var rc int32
  6427  	var zSql uintptr
  6428  
  6429  	rc = sqlite3.Xsqlite3_exec(tls, (*sqlite3expert)(unsafe.Pointer(p)).Fdbv, ts+1340, uintptr(0), uintptr(0), uintptr(0))
  6430  	if rc != SQLITE_OK {
  6431  		return rc
  6432  	}
  6433  
  6434  	zSql = sqlite3.Xsqlite3_mprintf(tls,
  6435  		ts+1404, libc.VaList(bp, zTab))
  6436  	if zSql == uintptr(0) {
  6437  		return SQLITE_NOMEM
  6438  	}
  6439  	rc = sqlite3.Xsqlite3_exec(tls, (*sqlite3expert)(unsafe.Pointer(p)).Fdbv, zSql, uintptr(0), uintptr(0), uintptr(0))
  6440  	sqlite3.Xsqlite3_free(tls, zSql)
  6441  
  6442  	return rc
  6443  }
  6444  
  6445  func idxPopulateStat1(tls *libc.TLS, p uintptr, pzErr uintptr) int32 {
  6446  	bp := tls.Alloc(64)
  6447  	defer tls.Free(64)
  6448  
  6449  	*(*int32)(unsafe.Pointer(bp + 4)) = SQLITE_OK
  6450  	*(*int32)(unsafe.Pointer(bp)) = 0
  6451  	var pCtx uintptr = uintptr(0)
  6452  
  6453  	var i int32
  6454  	var iPrev i64 = int64(-100000)
  6455  	*(*uintptr)(unsafe.Pointer(bp + 40)) = uintptr(0)
  6456  	*(*uintptr)(unsafe.Pointer(bp + 48)) = uintptr(0)
  6457  	*(*uintptr)(unsafe.Pointer(bp + 56)) = uintptr(0)
  6458  
  6459  	var zAllIndex uintptr = ts + 1480
  6460  	var zIndexXInfo uintptr = ts + 1594
  6461  	var zWrite uintptr = ts + 1649
  6462  
  6463  	if (*sqlite3expert)(unsafe.Pointer(p)).FiSample == 0 {
  6464  		return SQLITE_OK
  6465  	}
  6466  
  6467  	*(*int32)(unsafe.Pointer(bp + 4)) = idxLargestIndex(tls, (*sqlite3expert)(unsafe.Pointer(p)).Fdbm, bp, pzErr)
  6468  	if *(*int32)(unsafe.Pointer(bp)) <= 0 || *(*int32)(unsafe.Pointer(bp + 4)) != SQLITE_OK {
  6469  		return *(*int32)(unsafe.Pointer(bp + 4))
  6470  	}
  6471  
  6472  	*(*int32)(unsafe.Pointer(bp + 4)) = sqlite3.Xsqlite3_exec(tls, (*sqlite3expert)(unsafe.Pointer(p)).Fdbm, ts+1690, uintptr(0), uintptr(0), uintptr(0))
  6473  
  6474  	if *(*int32)(unsafe.Pointer(bp + 4)) == SQLITE_OK {
  6475  		var nByte int32 = int32(uint64(unsafe.Sizeof(IdxRemCtx{})) + uint64(unsafe.Sizeof(IdxRemSlot{}))*uint64(*(*int32)(unsafe.Pointer(bp))))
  6476  		pCtx = idxMalloc(tls, bp+4, nByte)
  6477  	}
  6478  
  6479  	if *(*int32)(unsafe.Pointer(bp + 4)) == SQLITE_OK {
  6480  		var dbrem uintptr = func() uintptr {
  6481  			if (*sqlite3expert)(unsafe.Pointer(p)).FiSample == 100 {
  6482  				return (*sqlite3expert)(unsafe.Pointer(p)).Fdb
  6483  			}
  6484  			return (*sqlite3expert)(unsafe.Pointer(p)).Fdbv
  6485  		}()
  6486  		*(*int32)(unsafe.Pointer(bp + 4)) = sqlite3.Xsqlite3_create_function(tls,
  6487  			dbrem, ts+1724, 2, SQLITE_UTF8, pCtx, *(*uintptr)(unsafe.Pointer(&struct {
  6488  				f func(*libc.TLS, uintptr, int32, uintptr)
  6489  			}{idxRemFunc})), uintptr(0), uintptr(0))
  6490  	}
  6491  	if *(*int32)(unsafe.Pointer(bp + 4)) == SQLITE_OK {
  6492  		*(*int32)(unsafe.Pointer(bp + 4)) = sqlite3.Xsqlite3_create_function(tls,
  6493  			(*sqlite3expert)(unsafe.Pointer(p)).Fdb, ts+1728, 0, SQLITE_UTF8, bp+8, *(*uintptr)(unsafe.Pointer(&struct {
  6494  				f func(*libc.TLS, uintptr, int32, uintptr)
  6495  			}{idxSampleFunc})), uintptr(0), uintptr(0))
  6496  	}
  6497  
  6498  	if *(*int32)(unsafe.Pointer(bp + 4)) == SQLITE_OK {
  6499  		(*IdxRemCtx)(unsafe.Pointer(pCtx)).FnSlot = *(*int32)(unsafe.Pointer(bp)) + 1
  6500  		*(*int32)(unsafe.Pointer(bp + 4)) = idxPrepareStmt(tls, (*sqlite3expert)(unsafe.Pointer(p)).Fdbm, bp+40, pzErr, zAllIndex)
  6501  	}
  6502  	if *(*int32)(unsafe.Pointer(bp + 4)) == SQLITE_OK {
  6503  		*(*int32)(unsafe.Pointer(bp + 4)) = idxPrepareStmt(tls, (*sqlite3expert)(unsafe.Pointer(p)).Fdbm, bp+48, pzErr, zIndexXInfo)
  6504  	}
  6505  	if *(*int32)(unsafe.Pointer(bp + 4)) == SQLITE_OK {
  6506  		*(*int32)(unsafe.Pointer(bp + 4)) = idxPrepareStmt(tls, (*sqlite3expert)(unsafe.Pointer(p)).Fdbm, bp+56, pzErr, zWrite)
  6507  	}
  6508  
  6509  	for *(*int32)(unsafe.Pointer(bp + 4)) == SQLITE_OK && SQLITE_ROW == sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp + 40))) {
  6510  		var iRowid i64 = sqlite3.Xsqlite3_column_int64(tls, *(*uintptr)(unsafe.Pointer(bp + 40)), 0)
  6511  		var zTab uintptr = sqlite3.Xsqlite3_column_text(tls, *(*uintptr)(unsafe.Pointer(bp + 40)), 1)
  6512  		var zIdx uintptr = sqlite3.Xsqlite3_column_text(tls, *(*uintptr)(unsafe.Pointer(bp + 40)), 2)
  6513  		if zTab == uintptr(0) || zIdx == uintptr(0) {
  6514  			continue
  6515  		}
  6516  		if (*sqlite3expert)(unsafe.Pointer(p)).FiSample < 100 && iPrev != iRowid {
  6517  			(*IdxSampleCtx)(unsafe.Pointer(bp + 8)).Ftarget = float64((*sqlite3expert)(unsafe.Pointer(p)).FiSample) / 100.0
  6518  			(*IdxSampleCtx)(unsafe.Pointer(bp + 8)).FiTarget = (*sqlite3expert)(unsafe.Pointer(p)).FiSample
  6519  			(*IdxSampleCtx)(unsafe.Pointer(bp + 8)).FnRow = 0.0
  6520  			(*IdxSampleCtx)(unsafe.Pointer(bp + 8)).FnRet = 0.0
  6521  			*(*int32)(unsafe.Pointer(bp + 4)) = idxBuildSampleTable(tls, p, zTab)
  6522  			if *(*int32)(unsafe.Pointer(bp + 4)) != SQLITE_OK {
  6523  				break
  6524  			}
  6525  		}
  6526  		*(*int32)(unsafe.Pointer(bp + 4)) = idxPopulateOneStat1(tls, p, *(*uintptr)(unsafe.Pointer(bp + 48)), *(*uintptr)(unsafe.Pointer(bp + 56)), zTab, zIdx, pzErr)
  6527  		iPrev = iRowid
  6528  	}
  6529  	if *(*int32)(unsafe.Pointer(bp + 4)) == SQLITE_OK && (*sqlite3expert)(unsafe.Pointer(p)).FiSample < 100 {
  6530  		*(*int32)(unsafe.Pointer(bp + 4)) = sqlite3.Xsqlite3_exec(tls, (*sqlite3expert)(unsafe.Pointer(p)).Fdbv,
  6531  			ts+1340, uintptr(0), uintptr(0), uintptr(0))
  6532  	}
  6533  
  6534  	idxFinalize(tls, bp+4, *(*uintptr)(unsafe.Pointer(bp + 40)))
  6535  	idxFinalize(tls, bp+4, *(*uintptr)(unsafe.Pointer(bp + 48)))
  6536  	idxFinalize(tls, bp+4, *(*uintptr)(unsafe.Pointer(bp + 56)))
  6537  
  6538  	if pCtx != 0 {
  6539  		for i = 0; i < (*IdxRemCtx)(unsafe.Pointer(pCtx)).FnSlot; i++ {
  6540  			sqlite3.Xsqlite3_free(tls, (*IdxRemSlot)(unsafe.Pointer(pCtx+8+uintptr(i)*40)).Fz)
  6541  		}
  6542  		sqlite3.Xsqlite3_free(tls, pCtx)
  6543  	}
  6544  
  6545  	if *(*int32)(unsafe.Pointer(bp + 4)) == SQLITE_OK {
  6546  		*(*int32)(unsafe.Pointer(bp + 4)) = sqlite3.Xsqlite3_exec(tls, (*sqlite3expert)(unsafe.Pointer(p)).Fdbm, ts+1735, uintptr(0), uintptr(0), uintptr(0))
  6547  	}
  6548  
  6549  	sqlite3.Xsqlite3_exec(tls, (*sqlite3expert)(unsafe.Pointer(p)).Fdb, ts+1340, uintptr(0), uintptr(0), uintptr(0))
  6550  	return *(*int32)(unsafe.Pointer(bp + 4))
  6551  }
  6552  
  6553  func sqlite3_expert_new(tls *libc.TLS, db uintptr, pzErrmsg uintptr) uintptr {
  6554  	bp := tls.Alloc(32)
  6555  	defer tls.Free(32)
  6556  
  6557  	*(*int32)(unsafe.Pointer(bp + 16)) = SQLITE_OK
  6558  	var pNew uintptr
  6559  
  6560  	pNew = idxMalloc(tls, bp+16, int32(unsafe.Sizeof(sqlite3expert{})))
  6561  
  6562  	if *(*int32)(unsafe.Pointer(bp + 16)) == SQLITE_OK {
  6563  		(*sqlite3expert)(unsafe.Pointer(pNew)).Fdb = db
  6564  		(*sqlite3expert)(unsafe.Pointer(pNew)).FiSample = 100
  6565  		*(*int32)(unsafe.Pointer(bp + 16)) = sqlite3.Xsqlite3_open(tls, ts+1757, pNew+24)
  6566  	}
  6567  	if *(*int32)(unsafe.Pointer(bp + 16)) == SQLITE_OK {
  6568  		*(*int32)(unsafe.Pointer(bp + 16)) = sqlite3.Xsqlite3_open(tls, ts+1757, pNew+16)
  6569  		if *(*int32)(unsafe.Pointer(bp + 16)) == SQLITE_OK {
  6570  			sqlite3.Xsqlite3_db_config(tls, (*sqlite3expert)(unsafe.Pointer(pNew)).Fdbm, SQLITE_DBCONFIG_TRIGGER_EQP, libc.VaList(bp, 1, uintptr(0)))
  6571  		}
  6572  	}
  6573  
  6574  	if *(*int32)(unsafe.Pointer(bp + 16)) == SQLITE_OK {
  6575  		*(*uintptr)(unsafe.Pointer(bp + 24)) = uintptr(0)
  6576  		*(*int32)(unsafe.Pointer(bp + 16)) = idxPrintfPrepareStmt(tls, (*sqlite3expert)(unsafe.Pointer(pNew)).Fdb, bp+24, pzErrmsg,
  6577  			ts+1766, 0)
  6578  		for *(*int32)(unsafe.Pointer(bp + 16)) == SQLITE_OK && SQLITE_ROW == sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp + 24))) {
  6579  			var zSql uintptr = sqlite3.Xsqlite3_column_text(tls, *(*uintptr)(unsafe.Pointer(bp + 24)), 0)
  6580  			if zSql != 0 {
  6581  				*(*int32)(unsafe.Pointer(bp + 16)) = sqlite3.Xsqlite3_exec(tls, (*sqlite3expert)(unsafe.Pointer(pNew)).Fdbm, zSql, uintptr(0), uintptr(0), pzErrmsg)
  6582  			}
  6583  		}
  6584  		idxFinalize(tls, bp+16, *(*uintptr)(unsafe.Pointer(bp + 24)))
  6585  	}
  6586  
  6587  	if *(*int32)(unsafe.Pointer(bp + 16)) == SQLITE_OK {
  6588  		*(*int32)(unsafe.Pointer(bp + 16)) = idxCreateVtabSchema(tls, pNew, pzErrmsg)
  6589  	}
  6590  
  6591  	if *(*int32)(unsafe.Pointer(bp + 16)) == SQLITE_OK {
  6592  		sqlite3.Xsqlite3_set_authorizer(tls, (*sqlite3expert)(unsafe.Pointer(pNew)).Fdbv, *(*uintptr)(unsafe.Pointer(&struct {
  6593  			f func(*libc.TLS, uintptr, int32, uintptr, uintptr, uintptr, uintptr) int32
  6594  		}{idxAuthCallback})), pNew)
  6595  	}
  6596  
  6597  	if *(*int32)(unsafe.Pointer(bp + 16)) != SQLITE_OK {
  6598  		sqlite3_expert_destroy(tls, pNew)
  6599  		pNew = uintptr(0)
  6600  	}
  6601  	return pNew
  6602  }
  6603  
  6604  func sqlite3_expert_config(tls *libc.TLS, p uintptr, op int32, va uintptr) int32 {
  6605  	var rc int32 = SQLITE_OK
  6606  	var ap va_list
  6607  	_ = ap
  6608  	ap = va
  6609  	switch op {
  6610  	case EXPERT_CONFIG_SAMPLE:
  6611  		{
  6612  			var iVal int32 = libc.VaInt32(&ap)
  6613  			if iVal < 0 {
  6614  				iVal = 0
  6615  			}
  6616  			if iVal > 100 {
  6617  				iVal = 100
  6618  			}
  6619  			(*sqlite3expert)(unsafe.Pointer(p)).FiSample = iVal
  6620  			break
  6621  
  6622  		}
  6623  	default:
  6624  		rc = SQLITE_NOTFOUND
  6625  		break
  6626  	}
  6627  
  6628  	_ = ap
  6629  	return rc
  6630  }
  6631  
  6632  func sqlite3_expert_sql(tls *libc.TLS, p uintptr, zSql uintptr, pzErr uintptr) int32 {
  6633  	bp := tls.Alloc(20)
  6634  	defer tls.Free(20)
  6635  
  6636  	var pScanOrig uintptr = (*sqlite3expert)(unsafe.Pointer(p)).FpScan
  6637  	var pStmtOrig uintptr = (*sqlite3expert)(unsafe.Pointer(p)).FpStatement
  6638  	*(*int32)(unsafe.Pointer(bp + 16)) = SQLITE_OK
  6639  	*(*uintptr)(unsafe.Pointer(bp + 8)) = zSql
  6640  
  6641  	if (*sqlite3expert)(unsafe.Pointer(p)).FbRun != 0 {
  6642  		return SQLITE_MISUSE
  6643  	}
  6644  
  6645  	for *(*int32)(unsafe.Pointer(bp + 16)) == SQLITE_OK && *(*uintptr)(unsafe.Pointer(bp + 8)) != 0 && *(*uint8)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 8)))) != 0 {
  6646  		*(*uintptr)(unsafe.Pointer(bp)) = uintptr(0)
  6647  		*(*int32)(unsafe.Pointer(bp + 16)) = sqlite3.Xsqlite3_prepare_v2(tls, (*sqlite3expert)(unsafe.Pointer(p)).Fdbv, *(*uintptr)(unsafe.Pointer(bp + 8)), -1, bp, bp+8)
  6648  		if *(*int32)(unsafe.Pointer(bp + 16)) == SQLITE_OK {
  6649  			if *(*uintptr)(unsafe.Pointer(bp)) != 0 {
  6650  				var pNew uintptr
  6651  				var z uintptr = sqlite3.Xsqlite3_sql(tls, *(*uintptr)(unsafe.Pointer(bp)))
  6652  				var n int32 = int32(libc.Xstrlen(tls, z))
  6653  				pNew = idxMalloc(tls, bp+16, int32(uint64(unsafe.Sizeof(IdxStatement{}))+uint64(n)+uint64(1)))
  6654  				if *(*int32)(unsafe.Pointer(bp + 16)) == SQLITE_OK {
  6655  					(*IdxStatement)(unsafe.Pointer(pNew)).FzSql = pNew + 1*40
  6656  					libc.Xmemcpy(tls, (*IdxStatement)(unsafe.Pointer(pNew)).FzSql, z, uint64(n+1))
  6657  					(*IdxStatement)(unsafe.Pointer(pNew)).FpNext = (*sqlite3expert)(unsafe.Pointer(p)).FpStatement
  6658  					if (*sqlite3expert)(unsafe.Pointer(p)).FpStatement != 0 {
  6659  						(*IdxStatement)(unsafe.Pointer(pNew)).FiId = (*IdxStatement)(unsafe.Pointer((*sqlite3expert)(unsafe.Pointer(p)).FpStatement)).FiId + 1
  6660  					}
  6661  					(*sqlite3expert)(unsafe.Pointer(p)).FpStatement = pNew
  6662  				}
  6663  				sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp)))
  6664  			}
  6665  		} else {
  6666  			idxDatabaseError(tls, (*sqlite3expert)(unsafe.Pointer(p)).Fdbv, pzErr)
  6667  		}
  6668  	}
  6669  
  6670  	if *(*int32)(unsafe.Pointer(bp + 16)) != SQLITE_OK {
  6671  		idxScanFree(tls, (*sqlite3expert)(unsafe.Pointer(p)).FpScan, pScanOrig)
  6672  		idxStatementFree(tls, (*sqlite3expert)(unsafe.Pointer(p)).FpStatement, pStmtOrig)
  6673  		(*sqlite3expert)(unsafe.Pointer(p)).FpScan = pScanOrig
  6674  		(*sqlite3expert)(unsafe.Pointer(p)).FpStatement = pStmtOrig
  6675  	}
  6676  
  6677  	return *(*int32)(unsafe.Pointer(bp + 16))
  6678  }
  6679  
  6680  func sqlite3_expert_analyze(tls *libc.TLS, p uintptr, pzErr uintptr) int32 {
  6681  	bp := tls.Alloc(28)
  6682  	defer tls.Free(28)
  6683  
  6684  	var pEntry uintptr
  6685  
  6686  	*(*int32)(unsafe.Pointer(bp + 24)) = idxProcessTriggers(tls, p, pzErr)
  6687  
  6688  	if *(*int32)(unsafe.Pointer(bp + 24)) == SQLITE_OK {
  6689  		*(*int32)(unsafe.Pointer(bp + 24)) = idxCreateCandidates(tls, p)
  6690  	} else if *(*int32)(unsafe.Pointer(bp + 24)) == SQLITE_BUSY|int32(3)<<8 {
  6691  		if pzErr != 0 {
  6692  			*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+1865, 0)
  6693  		}
  6694  		return *(*int32)(unsafe.Pointer(bp + 24))
  6695  	}
  6696  
  6697  	if *(*int32)(unsafe.Pointer(bp + 24)) == SQLITE_OK {
  6698  		*(*int32)(unsafe.Pointer(bp + 24)) = idxPopulateStat1(tls, p, pzErr)
  6699  	}
  6700  
  6701  	for pEntry = (*sqlite3expert)(unsafe.Pointer(p)).FhIdx.FpFirst; pEntry != 0; pEntry = (*IdxHashEntry)(unsafe.Pointer(pEntry)).FpNext {
  6702  		(*sqlite3expert)(unsafe.Pointer(p)).FzCandidates = idxAppendText(tls, bp+24, (*sqlite3expert)(unsafe.Pointer(p)).FzCandidates,
  6703  			ts+1909, libc.VaList(bp, (*IdxHashEntry)(unsafe.Pointer(pEntry)).FzVal,
  6704  				func() uintptr {
  6705  					if (*IdxHashEntry)(unsafe.Pointer(pEntry)).FzVal2 != 0 {
  6706  						return ts + 1918
  6707  					}
  6708  					return ts + 584
  6709  				}(), (*IdxHashEntry)(unsafe.Pointer(pEntry)).FzVal2))
  6710  	}
  6711  
  6712  	if *(*int32)(unsafe.Pointer(bp + 24)) == SQLITE_OK {
  6713  		*(*int32)(unsafe.Pointer(bp + 24)) = idxFindIndexes(tls, p, pzErr)
  6714  	}
  6715  
  6716  	if *(*int32)(unsafe.Pointer(bp + 24)) == SQLITE_OK {
  6717  		(*sqlite3expert)(unsafe.Pointer(p)).FbRun = 1
  6718  	}
  6719  	return *(*int32)(unsafe.Pointer(bp + 24))
  6720  }
  6721  
  6722  func sqlite3_expert_count(tls *libc.TLS, p uintptr) int32 {
  6723  	var nRet int32 = 0
  6724  	if (*sqlite3expert)(unsafe.Pointer(p)).FpStatement != 0 {
  6725  		nRet = (*IdxStatement)(unsafe.Pointer((*sqlite3expert)(unsafe.Pointer(p)).FpStatement)).FiId + 1
  6726  	}
  6727  	return nRet
  6728  }
  6729  
  6730  func sqlite3_expert_report(tls *libc.TLS, p uintptr, iStmt int32, eReport int32) uintptr {
  6731  	var zRet uintptr = uintptr(0)
  6732  	var pStmt uintptr
  6733  
  6734  	if (*sqlite3expert)(unsafe.Pointer(p)).FbRun == 0 {
  6735  		return uintptr(0)
  6736  	}
  6737  	for pStmt = (*sqlite3expert)(unsafe.Pointer(p)).FpStatement; pStmt != 0 && (*IdxStatement)(unsafe.Pointer(pStmt)).FiId != iStmt; pStmt = (*IdxStatement)(unsafe.Pointer(pStmt)).FpNext {
  6738  	}
  6739  	switch eReport {
  6740  	case EXPERT_REPORT_SQL:
  6741  		if pStmt != 0 {
  6742  			zRet = (*IdxStatement)(unsafe.Pointer(pStmt)).FzSql
  6743  		}
  6744  		break
  6745  	case EXPERT_REPORT_INDEXES:
  6746  		if pStmt != 0 {
  6747  			zRet = (*IdxStatement)(unsafe.Pointer(pStmt)).FzIdx
  6748  		}
  6749  		break
  6750  	case EXPERT_REPORT_PLAN:
  6751  		if pStmt != 0 {
  6752  			zRet = (*IdxStatement)(unsafe.Pointer(pStmt)).FzEQP
  6753  		}
  6754  		break
  6755  	case EXPERT_REPORT_CANDIDATES:
  6756  		zRet = (*sqlite3expert)(unsafe.Pointer(p)).FzCandidates
  6757  		break
  6758  	}
  6759  	return zRet
  6760  }
  6761  
  6762  func sqlite3_expert_destroy(tls *libc.TLS, p uintptr) {
  6763  	if p != 0 {
  6764  		sqlite3.Xsqlite3_close(tls, (*sqlite3expert)(unsafe.Pointer(p)).Fdbm)
  6765  		sqlite3.Xsqlite3_close(tls, (*sqlite3expert)(unsafe.Pointer(p)).Fdbv)
  6766  		idxScanFree(tls, (*sqlite3expert)(unsafe.Pointer(p)).FpScan, uintptr(0))
  6767  		idxStatementFree(tls, (*sqlite3expert)(unsafe.Pointer(p)).FpStatement, uintptr(0))
  6768  		idxTableFree(tls, (*sqlite3expert)(unsafe.Pointer(p)).FpTable)
  6769  		idxWriteFree(tls, (*sqlite3expert)(unsafe.Pointer(p)).FpWrite)
  6770  		idxHashClear(tls, p+88)
  6771  		sqlite3.Xsqlite3_free(tls, (*sqlite3expert)(unsafe.Pointer(p)).FzCandidates)
  6772  		sqlite3.Xsqlite3_free(tls, p)
  6773  	}
  6774  }
  6775  
  6776  type ClientData = uintptr
  6777  
  6778  type Tcl_WideInt = int64
  6779  type Tcl_WideUInt = uint64
  6780  
  6781  type stat = struct {
  6782  	Fst_dev     uint64
  6783  	Fst_ino     uint64
  6784  	Fst_nlink   uint64
  6785  	Fst_mode    uint32
  6786  	Fst_uid     uint32
  6787  	Fst_gid     uint32
  6788  	F__pad2     int32
  6789  	Fst_rdev    uint64
  6790  	Fst_size    int64
  6791  	Fst_blksize int64
  6792  	Fst_blocks  int64
  6793  	Fst_atim    struct {
  6794  		Ftv_sec  int64
  6795  		Ftv_nsec int64
  6796  	}
  6797  	Fst_mtim struct {
  6798  		Ftv_sec  int64
  6799  		Ftv_nsec int64
  6800  	}
  6801  	Fst_ctim struct {
  6802  		Ftv_sec  int64
  6803  		Ftv_nsec int64
  6804  	}
  6805  	F__glibc_reserved4 uint64
  6806  	F__glibc_reserved5 uint64
  6807  	F__glibc_reserved6 uint64
  6808  }
  6809  
  6810  type Tcl_Interp1 = struct {
  6811  	FresultDontUse    uintptr
  6812  	FfreeProcDontUse  uintptr
  6813  	FerrorLineDontUse int32
  6814  	F__ccgo_pad1      [4]byte
  6815  }
  6816  
  6817  type Tcl_Interp = Tcl_Interp1
  6818  
  6819  type Tcl_AsyncHandler = uintptr
  6820  type Tcl_Channel = uintptr
  6821  type Tcl_ChannelTypeVersion = uintptr
  6822  type Tcl_Command = uintptr
  6823  type Tcl_Condition = uintptr
  6824  type Tcl_Dict = uintptr
  6825  type Tcl_EncodingState = uintptr
  6826  type Tcl_Encoding = uintptr
  6827  type Tcl_Event1 = struct {
  6828  	Fproc    uintptr
  6829  	FnextPtr uintptr
  6830  }
  6831  
  6832  type Tcl_Event = Tcl_Event1
  6833  type Tcl_InterpState = uintptr
  6834  type Tcl_LoadHandle = uintptr
  6835  type Tcl_Mutex = uintptr
  6836  type Tcl_Pid = uintptr
  6837  type Tcl_RegExp = uintptr
  6838  type Tcl_ThreadDataKey = uintptr
  6839  type Tcl_ThreadId = uintptr
  6840  type Tcl_TimerToken = uintptr
  6841  type Tcl_Trace = uintptr
  6842  type Tcl_Var = uintptr
  6843  type Tcl_ZlibStream = uintptr
  6844  
  6845  type Tcl_RegExpIndices1 = struct {
  6846  	Fstart int64
  6847  	Fend   int64
  6848  }
  6849  
  6850  type Tcl_RegExpIndices = Tcl_RegExpIndices1
  6851  
  6852  type Tcl_RegExpInfo1 = struct {
  6853  	Fnsubs       int32
  6854  	F__ccgo_pad1 [4]byte
  6855  	Fmatches     uintptr
  6856  	FextendStart int64
  6857  	Freserved    int64
  6858  }
  6859  
  6860  type Tcl_RegExpInfo = Tcl_RegExpInfo1
  6861  
  6862  type Tcl_Stat_ = uintptr
  6863  type Tcl_OldStat_ = uintptr
  6864  
  6865  type Tcl_ValueType = uint32
  6866  
  6867  type Tcl_Value1 = struct {
  6868  	Ftype        Tcl_ValueType
  6869  	F__ccgo_pad1 [4]byte
  6870  	FintValue    int64
  6871  	FdoubleValue float64
  6872  	FwideValue   Tcl_WideInt
  6873  }
  6874  
  6875  type Tcl_Value = Tcl_Value1
  6876  
  6877  type Tcl_Obj1 = struct {
  6878  	FrefCount    int32
  6879  	F__ccgo_pad1 [4]byte
  6880  	Fbytes       uintptr
  6881  	Flength      int32
  6882  	F__ccgo_pad2 [4]byte
  6883  	FtypePtr     uintptr
  6884  	FinternalRep struct {
  6885  		FlongValue   int64
  6886  		F__ccgo_pad1 [8]byte
  6887  	}
  6888  }
  6889  
  6890  type Tcl_ObjType1 = struct {
  6891  	Fname             uintptr
  6892  	FfreeIntRepProc   uintptr
  6893  	FdupIntRepProc    uintptr
  6894  	FupdateStringProc uintptr
  6895  	FsetFromAnyProc   uintptr
  6896  }
  6897  
  6898  type Tcl_ObjType = Tcl_ObjType1
  6899  
  6900  type Tcl_Obj = Tcl_Obj1
  6901  
  6902  type Tcl_SavedResult1 = struct {
  6903  	Fresult       uintptr
  6904  	FfreeProc     uintptr
  6905  	FobjResultPtr uintptr
  6906  	FappendResult uintptr
  6907  	FappendAvl    int32
  6908  	FappendUsed   int32
  6909  	FresultSpace  [201]uint8
  6910  	F__ccgo_pad1  [7]byte
  6911  }
  6912  
  6913  type Tcl_SavedResult = Tcl_SavedResult1
  6914  
  6915  type Tcl_Namespace1 = struct {
  6916  	Fname       uintptr
  6917  	FfullName   uintptr
  6918  	FclientData ClientData
  6919  	FdeleteProc uintptr
  6920  	FparentPtr  uintptr
  6921  }
  6922  
  6923  type Tcl_Namespace = Tcl_Namespace1
  6924  
  6925  type Tcl_CallFrame1 = struct {
  6926  	FnsPtr       uintptr
  6927  	Fdummy1      int32
  6928  	Fdummy2      int32
  6929  	Fdummy3      uintptr
  6930  	Fdummy4      uintptr
  6931  	Fdummy5      uintptr
  6932  	Fdummy6      int32
  6933  	F__ccgo_pad1 [4]byte
  6934  	Fdummy7      uintptr
  6935  	Fdummy8      uintptr
  6936  	Fdummy9      int32
  6937  	F__ccgo_pad2 [4]byte
  6938  	Fdummy10     uintptr
  6939  	Fdummy11     uintptr
  6940  	Fdummy12     uintptr
  6941  	Fdummy13     uintptr
  6942  }
  6943  
  6944  type Tcl_CallFrame = Tcl_CallFrame1
  6945  
  6946  type Tcl_CmdInfo1 = struct {
  6947  	FisNativeObjectProc int32
  6948  	F__ccgo_pad1        [4]byte
  6949  	FobjProc            uintptr
  6950  	FobjClientData      ClientData
  6951  	Fproc               uintptr
  6952  	FclientData         ClientData
  6953  	FdeleteProc         uintptr
  6954  	FdeleteData         ClientData
  6955  	FnamespacePtr       uintptr
  6956  }
  6957  
  6958  type Tcl_CmdInfo = Tcl_CmdInfo1
  6959  
  6960  type Tcl_DString1 = struct {
  6961  	Fstring      uintptr
  6962  	Flength      int32
  6963  	FspaceAvl    int32
  6964  	FstaticSpace [200]uint8
  6965  }
  6966  
  6967  type Tcl_DString = Tcl_DString1
  6968  
  6969  type Tcl_HashKeyType1 = struct {
  6970  	Fversion         int32
  6971  	Fflags           int32
  6972  	FhashKeyProc     uintptr
  6973  	FcompareKeysProc uintptr
  6974  	FallocEntryProc  uintptr
  6975  	FfreeEntryProc   uintptr
  6976  }
  6977  
  6978  type Tcl_HashKeyType = Tcl_HashKeyType1
  6979  type Tcl_HashTable1 = struct {
  6980  	Fbuckets       uintptr
  6981  	FstaticBuckets [4]uintptr
  6982  	FnumBuckets    int32
  6983  	FnumEntries    int32
  6984  	FrebuildSize   int32
  6985  	FdownShift     int32
  6986  	Fmask          int32
  6987  	FkeyType       int32
  6988  	FfindProc      uintptr
  6989  	FcreateProc    uintptr
  6990  	FtypePtr       uintptr
  6991  }
  6992  
  6993  type Tcl_HashTable = Tcl_HashTable1
  6994  type Tcl_HashEntry1 = struct {
  6995  	FnextPtr    uintptr
  6996  	FtablePtr   uintptr
  6997  	Fhash       uintptr
  6998  	FclientData ClientData
  6999  	Fkey        struct{ FoneWordValue uintptr }
  7000  }
  7001  
  7002  type Tcl_HashEntry = Tcl_HashEntry1
  7003  
  7004  type Tcl_HashSearch1 = struct {
  7005  	FtablePtr     uintptr
  7006  	FnextIndex    int32
  7007  	F__ccgo_pad1  [4]byte
  7008  	FnextEntryPtr uintptr
  7009  }
  7010  
  7011  type Tcl_HashSearch = Tcl_HashSearch1
  7012  
  7013  type Tcl_DictSearch = struct {
  7014  	Fnext          uintptr
  7015  	Fepoch         int32
  7016  	F__ccgo_pad1   [4]byte
  7017  	FdictionaryPtr Tcl_Dict
  7018  }
  7019  
  7020  type Tcl_QueuePosition = uint32
  7021  
  7022  type Tcl_Time1 = struct {
  7023  	Fsec  int64
  7024  	Fusec int64
  7025  }
  7026  
  7027  type Tcl_Time = Tcl_Time1
  7028  
  7029  type Tcl_ChannelType1 = struct {
  7030  	FtypeName         uintptr
  7031  	Fversion          Tcl_ChannelTypeVersion
  7032  	FcloseProc        uintptr
  7033  	FinputProc        uintptr
  7034  	FoutputProc       uintptr
  7035  	FseekProc         uintptr
  7036  	FsetOptionProc    uintptr
  7037  	FgetOptionProc    uintptr
  7038  	FwatchProc        uintptr
  7039  	FgetHandleProc    uintptr
  7040  	Fclose2Proc       uintptr
  7041  	FblockModeProc    uintptr
  7042  	FflushProc        uintptr
  7043  	FhandlerProc      uintptr
  7044  	FwideSeekProc     uintptr
  7045  	FthreadActionProc uintptr
  7046  	FtruncateProc     uintptr
  7047  }
  7048  
  7049  type Tcl_ChannelType = Tcl_ChannelType1
  7050  
  7051  type Tcl_PathType = uint32
  7052  
  7053  type Tcl_GlobTypeData1 = struct {
  7054  	Ftype       int32
  7055  	Fperm       int32
  7056  	FmacType    uintptr
  7057  	FmacCreator uintptr
  7058  }
  7059  
  7060  type Tcl_GlobTypeData = Tcl_GlobTypeData1
  7061  
  7062  type utimbuf = struct {
  7063  	Factime  int64
  7064  	Fmodtime int64
  7065  }
  7066  
  7067  type Tcl_FSVersion = uintptr
  7068  
  7069  type Tcl_Filesystem1 = struct {
  7070  	FtypeName                 uintptr
  7071  	FstructureLength          int32
  7072  	F__ccgo_pad1              [4]byte
  7073  	Fversion                  Tcl_FSVersion
  7074  	FpathInFilesystemProc     uintptr
  7075  	FdupInternalRepProc       uintptr
  7076  	FfreeInternalRepProc      uintptr
  7077  	FinternalToNormalizedProc uintptr
  7078  	FcreateInternalRepProc    uintptr
  7079  	FnormalizePathProc        uintptr
  7080  	FfilesystemPathTypeProc   uintptr
  7081  	FfilesystemSeparatorProc  uintptr
  7082  	FstatProc                 uintptr
  7083  	FaccessProc               uintptr
  7084  	FopenFileChannelProc      uintptr
  7085  	FmatchInDirectoryProc     uintptr
  7086  	FutimeProc                uintptr
  7087  	FlinkProc                 uintptr
  7088  	FlistVolumesProc          uintptr
  7089  	FfileAttrStringsProc      uintptr
  7090  	FfileAttrsGetProc         uintptr
  7091  	FfileAttrsSetProc         uintptr
  7092  	FcreateDirectoryProc      uintptr
  7093  	FremoveDirectoryProc      uintptr
  7094  	FdeleteFileProc           uintptr
  7095  	FcopyFileProc             uintptr
  7096  	FrenameFileProc           uintptr
  7097  	FcopyDirectoryProc        uintptr
  7098  	FlstatProc                uintptr
  7099  	FloadFileProc             uintptr
  7100  	FgetCwdProc               uintptr
  7101  	FchdirProc                uintptr
  7102  }
  7103  
  7104  type Tcl_Filesystem = Tcl_Filesystem1
  7105  
  7106  type Tcl_NotifierProcs1 = struct {
  7107  	FsetTimerProc          uintptr
  7108  	FwaitForEventProc      uintptr
  7109  	FcreateFileHandlerProc uintptr
  7110  	FdeleteFileHandlerProc uintptr
  7111  	FinitNotifierProc      uintptr
  7112  	FfinalizeNotifierProc  uintptr
  7113  	FalertNotifierProc     uintptr
  7114  	FserviceModeHookProc   uintptr
  7115  }
  7116  
  7117  type Tcl_NotifierProcs = Tcl_NotifierProcs1
  7118  
  7119  type Tcl_Token1 = struct {
  7120  	Ftype          int32
  7121  	F__ccgo_pad1   [4]byte
  7122  	Fstart         uintptr
  7123  	Fsize          int32
  7124  	FnumComponents int32
  7125  }
  7126  
  7127  type Tcl_Token = Tcl_Token1
  7128  
  7129  type Tcl_Parse1 = struct {
  7130  	FcommentStart    uintptr
  7131  	FcommentSize     int32
  7132  	F__ccgo_pad1     [4]byte
  7133  	FcommandStart    uintptr
  7134  	FcommandSize     int32
  7135  	FnumWords        int32
  7136  	FtokenPtr        uintptr
  7137  	FnumTokens       int32
  7138  	FtokensAvailable int32
  7139  	FerrorType       int32
  7140  	F__ccgo_pad2     [4]byte
  7141  	Fstring          uintptr
  7142  	Fend             uintptr
  7143  	Finterp          uintptr
  7144  	Fterm            uintptr
  7145  	Fincomplete      int32
  7146  	F__ccgo_pad3     [4]byte
  7147  	FstaticTokens    [20]Tcl_Token
  7148  }
  7149  
  7150  type Tcl_Parse = Tcl_Parse1
  7151  
  7152  type Tcl_EncodingType1 = struct {
  7153  	FencodingName uintptr
  7154  	FtoUtfProc    uintptr
  7155  	FfromUtfProc  uintptr
  7156  	FfreeProc     uintptr
  7157  	FclientData   ClientData
  7158  	FnullSize     int32
  7159  	F__ccgo_pad1  [4]byte
  7160  }
  7161  
  7162  type Tcl_EncodingType = Tcl_EncodingType1
  7163  
  7164  type Tcl_UniChar = uint16
  7165  
  7166  type Tcl_Config1 = struct {
  7167  	Fkey   uintptr
  7168  	Fvalue uintptr
  7169  }
  7170  
  7171  type Tcl_Config = Tcl_Config1
  7172  type mp_digit = uint32
  7173  
  7174  type Tcl_ArgvInfo = struct {
  7175  	Ftype        int32
  7176  	F__ccgo_pad1 [4]byte
  7177  	FkeyStr      uintptr
  7178  	FsrcPtr      uintptr
  7179  	FdstPtr      uintptr
  7180  	FhelpStr     uintptr
  7181  	FclientData  ClientData
  7182  }
  7183  
  7184  type TclPlatStubs1 = struct {
  7185  	Fmagic       int32
  7186  	F__ccgo_pad1 [4]byte
  7187  	Fhooks       uintptr
  7188  }
  7189  
  7190  type TclStubHooks = struct {
  7191  	FtclPlatStubs    uintptr
  7192  	FtclIntStubs     uintptr
  7193  	FtclIntPlatStubs uintptr
  7194  }
  7195  
  7196  type TclStubs1 = struct {
  7197  	Fmagic                                  int32
  7198  	F__ccgo_pad1                            [4]byte
  7199  	Fhooks                                  uintptr
  7200  	Ftcl_PkgProvideEx                       uintptr
  7201  	Ftcl_PkgRequireEx                       uintptr
  7202  	Ftcl_Panic                              uintptr
  7203  	Ftcl_Alloc                              uintptr
  7204  	Ftcl_Free                               uintptr
  7205  	Ftcl_Realloc                            uintptr
  7206  	Ftcl_DbCkalloc                          uintptr
  7207  	Ftcl_DbCkfree                           uintptr
  7208  	Ftcl_DbCkrealloc                        uintptr
  7209  	Ftcl_CreateFileHandler                  uintptr
  7210  	Ftcl_DeleteFileHandler                  uintptr
  7211  	Ftcl_SetTimer                           uintptr
  7212  	Ftcl_Sleep                              uintptr
  7213  	Ftcl_WaitForEvent                       uintptr
  7214  	Ftcl_AppendAllObjTypes                  uintptr
  7215  	Ftcl_AppendStringsToObj                 uintptr
  7216  	Ftcl_AppendToObj                        uintptr
  7217  	Ftcl_ConcatObj                          uintptr
  7218  	Ftcl_ConvertToType                      uintptr
  7219  	Ftcl_DbDecrRefCount                     uintptr
  7220  	Ftcl_DbIncrRefCount                     uintptr
  7221  	Ftcl_DbIsShared                         uintptr
  7222  	Ftcl_DbNewBooleanObj                    uintptr
  7223  	Ftcl_DbNewByteArrayObj                  uintptr
  7224  	Ftcl_DbNewDoubleObj                     uintptr
  7225  	Ftcl_DbNewListObj                       uintptr
  7226  	Ftcl_DbNewLongObj                       uintptr
  7227  	Ftcl_DbNewObj                           uintptr
  7228  	Ftcl_DbNewStringObj                     uintptr
  7229  	Ftcl_DuplicateObj                       uintptr
  7230  	FtclFreeObj                             uintptr
  7231  	Ftcl_GetBoolean                         uintptr
  7232  	Ftcl_GetBooleanFromObj                  uintptr
  7233  	Ftcl_GetByteArrayFromObj                uintptr
  7234  	Ftcl_GetDouble                          uintptr
  7235  	Ftcl_GetDoubleFromObj                   uintptr
  7236  	Ftcl_GetIndexFromObj                    uintptr
  7237  	Ftcl_GetInt                             uintptr
  7238  	Ftcl_GetIntFromObj                      uintptr
  7239  	Ftcl_GetLongFromObj                     uintptr
  7240  	Ftcl_GetObjType                         uintptr
  7241  	Ftcl_GetStringFromObj                   uintptr
  7242  	Ftcl_InvalidateStringRep                uintptr
  7243  	Ftcl_ListObjAppendList                  uintptr
  7244  	Ftcl_ListObjAppendElement               uintptr
  7245  	Ftcl_ListObjGetElements                 uintptr
  7246  	Ftcl_ListObjIndex                       uintptr
  7247  	Ftcl_ListObjLength                      uintptr
  7248  	Ftcl_ListObjReplace                     uintptr
  7249  	Ftcl_NewBooleanObj                      uintptr
  7250  	Ftcl_NewByteArrayObj                    uintptr
  7251  	Ftcl_NewDoubleObj                       uintptr
  7252  	Ftcl_NewIntObj                          uintptr
  7253  	Ftcl_NewListObj                         uintptr
  7254  	Ftcl_NewLongObj                         uintptr
  7255  	Ftcl_NewObj                             uintptr
  7256  	Ftcl_NewStringObj                       uintptr
  7257  	Ftcl_SetBooleanObj                      uintptr
  7258  	Ftcl_SetByteArrayLength                 uintptr
  7259  	Ftcl_SetByteArrayObj                    uintptr
  7260  	Ftcl_SetDoubleObj                       uintptr
  7261  	Ftcl_SetIntObj                          uintptr
  7262  	Ftcl_SetListObj                         uintptr
  7263  	Ftcl_SetLongObj                         uintptr
  7264  	Ftcl_SetObjLength                       uintptr
  7265  	Ftcl_SetStringObj                       uintptr
  7266  	Ftcl_AddErrorInfo                       uintptr
  7267  	Ftcl_AddObjErrorInfo                    uintptr
  7268  	Ftcl_AllowExceptions                    uintptr
  7269  	Ftcl_AppendElement                      uintptr
  7270  	Ftcl_AppendResult                       uintptr
  7271  	Ftcl_AsyncCreate                        uintptr
  7272  	Ftcl_AsyncDelete                        uintptr
  7273  	Ftcl_AsyncInvoke                        uintptr
  7274  	Ftcl_AsyncMark                          uintptr
  7275  	Ftcl_AsyncReady                         uintptr
  7276  	Ftcl_BackgroundError                    uintptr
  7277  	Ftcl_Backslash                          uintptr
  7278  	Ftcl_BadChannelOption                   uintptr
  7279  	Ftcl_CallWhenDeleted                    uintptr
  7280  	Ftcl_CancelIdleCall                     uintptr
  7281  	Ftcl_Close                              uintptr
  7282  	Ftcl_CommandComplete                    uintptr
  7283  	Ftcl_Concat                             uintptr
  7284  	Ftcl_ConvertElement                     uintptr
  7285  	Ftcl_ConvertCountedElement              uintptr
  7286  	Ftcl_CreateAlias                        uintptr
  7287  	Ftcl_CreateAliasObj                     uintptr
  7288  	Ftcl_CreateChannel                      uintptr
  7289  	Ftcl_CreateChannelHandler               uintptr
  7290  	Ftcl_CreateCloseHandler                 uintptr
  7291  	Ftcl_CreateCommand                      uintptr
  7292  	Ftcl_CreateEventSource                  uintptr
  7293  	Ftcl_CreateExitHandler                  uintptr
  7294  	Ftcl_CreateInterp                       uintptr
  7295  	Ftcl_CreateMathFunc                     uintptr
  7296  	Ftcl_CreateObjCommand                   uintptr
  7297  	Ftcl_CreateSlave                        uintptr
  7298  	Ftcl_CreateTimerHandler                 uintptr
  7299  	Ftcl_CreateTrace                        uintptr
  7300  	Ftcl_DeleteAssocData                    uintptr
  7301  	Ftcl_DeleteChannelHandler               uintptr
  7302  	Ftcl_DeleteCloseHandler                 uintptr
  7303  	Ftcl_DeleteCommand                      uintptr
  7304  	Ftcl_DeleteCommandFromToken             uintptr
  7305  	Ftcl_DeleteEvents                       uintptr
  7306  	Ftcl_DeleteEventSource                  uintptr
  7307  	Ftcl_DeleteExitHandler                  uintptr
  7308  	Ftcl_DeleteHashEntry                    uintptr
  7309  	Ftcl_DeleteHashTable                    uintptr
  7310  	Ftcl_DeleteInterp                       uintptr
  7311  	Ftcl_DetachPids                         uintptr
  7312  	Ftcl_DeleteTimerHandler                 uintptr
  7313  	Ftcl_DeleteTrace                        uintptr
  7314  	Ftcl_DontCallWhenDeleted                uintptr
  7315  	Ftcl_DoOneEvent                         uintptr
  7316  	Ftcl_DoWhenIdle                         uintptr
  7317  	Ftcl_DStringAppend                      uintptr
  7318  	Ftcl_DStringAppendElement               uintptr
  7319  	Ftcl_DStringEndSublist                  uintptr
  7320  	Ftcl_DStringFree                        uintptr
  7321  	Ftcl_DStringGetResult                   uintptr
  7322  	Ftcl_DStringInit                        uintptr
  7323  	Ftcl_DStringResult                      uintptr
  7324  	Ftcl_DStringSetLength                   uintptr
  7325  	Ftcl_DStringStartSublist                uintptr
  7326  	Ftcl_Eof                                uintptr
  7327  	Ftcl_ErrnoId                            uintptr
  7328  	Ftcl_ErrnoMsg                           uintptr
  7329  	Ftcl_Eval                               uintptr
  7330  	Ftcl_EvalFile                           uintptr
  7331  	Ftcl_EvalObj                            uintptr
  7332  	Ftcl_EventuallyFree                     uintptr
  7333  	Ftcl_Exit                               uintptr
  7334  	Ftcl_ExposeCommand                      uintptr
  7335  	Ftcl_ExprBoolean                        uintptr
  7336  	Ftcl_ExprBooleanObj                     uintptr
  7337  	Ftcl_ExprDouble                         uintptr
  7338  	Ftcl_ExprDoubleObj                      uintptr
  7339  	Ftcl_ExprLong                           uintptr
  7340  	Ftcl_ExprLongObj                        uintptr
  7341  	Ftcl_ExprObj                            uintptr
  7342  	Ftcl_ExprString                         uintptr
  7343  	Ftcl_Finalize                           uintptr
  7344  	Ftcl_FindExecutable                     uintptr
  7345  	Ftcl_FirstHashEntry                     uintptr
  7346  	Ftcl_Flush                              uintptr
  7347  	Ftcl_FreeResult                         uintptr
  7348  	Ftcl_GetAlias                           uintptr
  7349  	Ftcl_GetAliasObj                        uintptr
  7350  	Ftcl_GetAssocData                       uintptr
  7351  	Ftcl_GetChannel                         uintptr
  7352  	Ftcl_GetChannelBufferSize               uintptr
  7353  	Ftcl_GetChannelHandle                   uintptr
  7354  	Ftcl_GetChannelInstanceData             uintptr
  7355  	Ftcl_GetChannelMode                     uintptr
  7356  	Ftcl_GetChannelName                     uintptr
  7357  	Ftcl_GetChannelOption                   uintptr
  7358  	Ftcl_GetChannelType                     uintptr
  7359  	Ftcl_GetCommandInfo                     uintptr
  7360  	Ftcl_GetCommandName                     uintptr
  7361  	Ftcl_GetErrno                           uintptr
  7362  	Ftcl_GetHostName                        uintptr
  7363  	Ftcl_GetInterpPath                      uintptr
  7364  	Ftcl_GetMaster                          uintptr
  7365  	Ftcl_GetNameOfExecutable                uintptr
  7366  	Ftcl_GetObjResult                       uintptr
  7367  	Ftcl_GetOpenFile                        uintptr
  7368  	Ftcl_GetPathType                        uintptr
  7369  	Ftcl_Gets                               uintptr
  7370  	Ftcl_GetsObj                            uintptr
  7371  	Ftcl_GetServiceMode                     uintptr
  7372  	Ftcl_GetSlave                           uintptr
  7373  	Ftcl_GetStdChannel                      uintptr
  7374  	Ftcl_GetStringResult                    uintptr
  7375  	Ftcl_GetVar                             uintptr
  7376  	Ftcl_GetVar2                            uintptr
  7377  	Ftcl_GlobalEval                         uintptr
  7378  	Ftcl_GlobalEvalObj                      uintptr
  7379  	Ftcl_HideCommand                        uintptr
  7380  	Ftcl_Init                               uintptr
  7381  	Ftcl_InitHashTable                      uintptr
  7382  	Ftcl_InputBlocked                       uintptr
  7383  	Ftcl_InputBuffered                      uintptr
  7384  	Ftcl_InterpDeleted                      uintptr
  7385  	Ftcl_IsSafe                             uintptr
  7386  	Ftcl_JoinPath                           uintptr
  7387  	Ftcl_LinkVar                            uintptr
  7388  	Freserved188                            uintptr
  7389  	Ftcl_MakeFileChannel                    uintptr
  7390  	Ftcl_MakeSafe                           uintptr
  7391  	Ftcl_MakeTcpClientChannel               uintptr
  7392  	Ftcl_Merge                              uintptr
  7393  	Ftcl_NextHashEntry                      uintptr
  7394  	Ftcl_NotifyChannel                      uintptr
  7395  	Ftcl_ObjGetVar2                         uintptr
  7396  	Ftcl_ObjSetVar2                         uintptr
  7397  	Ftcl_OpenCommandChannel                 uintptr
  7398  	Ftcl_OpenFileChannel                    uintptr
  7399  	Ftcl_OpenTcpClient                      uintptr
  7400  	Ftcl_OpenTcpServer                      uintptr
  7401  	Ftcl_Preserve                           uintptr
  7402  	Ftcl_PrintDouble                        uintptr
  7403  	Ftcl_PutEnv                             uintptr
  7404  	Ftcl_PosixError                         uintptr
  7405  	Ftcl_QueueEvent                         uintptr
  7406  	Ftcl_Read                               uintptr
  7407  	Ftcl_ReapDetachedProcs                  uintptr
  7408  	Ftcl_RecordAndEval                      uintptr
  7409  	Ftcl_RecordAndEvalObj                   uintptr
  7410  	Ftcl_RegisterChannel                    uintptr
  7411  	Ftcl_RegisterObjType                    uintptr
  7412  	Ftcl_RegExpCompile                      uintptr
  7413  	Ftcl_RegExpExec                         uintptr
  7414  	Ftcl_RegExpMatch                        uintptr
  7415  	Ftcl_RegExpRange                        uintptr
  7416  	Ftcl_Release                            uintptr
  7417  	Ftcl_ResetResult                        uintptr
  7418  	Ftcl_ScanElement                        uintptr
  7419  	Ftcl_ScanCountedElement                 uintptr
  7420  	Ftcl_SeekOld                            uintptr
  7421  	Ftcl_ServiceAll                         uintptr
  7422  	Ftcl_ServiceEvent                       uintptr
  7423  	Ftcl_SetAssocData                       uintptr
  7424  	Ftcl_SetChannelBufferSize               uintptr
  7425  	Ftcl_SetChannelOption                   uintptr
  7426  	Ftcl_SetCommandInfo                     uintptr
  7427  	Ftcl_SetErrno                           uintptr
  7428  	Ftcl_SetErrorCode                       uintptr
  7429  	Ftcl_SetMaxBlockTime                    uintptr
  7430  	Ftcl_SetPanicProc                       uintptr
  7431  	Ftcl_SetRecursionLimit                  uintptr
  7432  	Ftcl_SetResult                          uintptr
  7433  	Ftcl_SetServiceMode                     uintptr
  7434  	Ftcl_SetObjErrorCode                    uintptr
  7435  	Ftcl_SetObjResult                       uintptr
  7436  	Ftcl_SetStdChannel                      uintptr
  7437  	Ftcl_SetVar                             uintptr
  7438  	Ftcl_SetVar2                            uintptr
  7439  	Ftcl_SignalId                           uintptr
  7440  	Ftcl_SignalMsg                          uintptr
  7441  	Ftcl_SourceRCFile                       uintptr
  7442  	Ftcl_SplitList                          uintptr
  7443  	Ftcl_SplitPath                          uintptr
  7444  	Ftcl_StaticPackage                      uintptr
  7445  	Ftcl_StringMatch                        uintptr
  7446  	Ftcl_TellOld                            uintptr
  7447  	Ftcl_TraceVar                           uintptr
  7448  	Ftcl_TraceVar2                          uintptr
  7449  	Ftcl_TranslateFileName                  uintptr
  7450  	Ftcl_Ungets                             uintptr
  7451  	Ftcl_UnlinkVar                          uintptr
  7452  	Ftcl_UnregisterChannel                  uintptr
  7453  	Ftcl_UnsetVar                           uintptr
  7454  	Ftcl_UnsetVar2                          uintptr
  7455  	Ftcl_UntraceVar                         uintptr
  7456  	Ftcl_UntraceVar2                        uintptr
  7457  	Ftcl_UpdateLinkedVar                    uintptr
  7458  	Ftcl_UpVar                              uintptr
  7459  	Ftcl_UpVar2                             uintptr
  7460  	Ftcl_VarEval                            uintptr
  7461  	Ftcl_VarTraceInfo                       uintptr
  7462  	Ftcl_VarTraceInfo2                      uintptr
  7463  	Ftcl_Write                              uintptr
  7464  	Ftcl_WrongNumArgs                       uintptr
  7465  	Ftcl_DumpActiveMemory                   uintptr
  7466  	Ftcl_ValidateAllMemory                  uintptr
  7467  	Ftcl_AppendResultVA                     uintptr
  7468  	Ftcl_AppendStringsToObjVA               uintptr
  7469  	Ftcl_HashStats                          uintptr
  7470  	Ftcl_ParseVar                           uintptr
  7471  	Ftcl_PkgPresent                         uintptr
  7472  	Ftcl_PkgPresentEx                       uintptr
  7473  	Ftcl_PkgProvide                         uintptr
  7474  	Ftcl_PkgRequire                         uintptr
  7475  	Ftcl_SetErrorCodeVA                     uintptr
  7476  	Ftcl_VarEvalVA                          uintptr
  7477  	Ftcl_WaitPid                            uintptr
  7478  	Ftcl_PanicVA                            uintptr
  7479  	Ftcl_GetVersion                         uintptr
  7480  	Ftcl_InitMemory                         uintptr
  7481  	Ftcl_StackChannel                       uintptr
  7482  	Ftcl_UnstackChannel                     uintptr
  7483  	Ftcl_GetStackedChannel                  uintptr
  7484  	Ftcl_SetMainLoop                        uintptr
  7485  	Freserved285                            uintptr
  7486  	Ftcl_AppendObjToObj                     uintptr
  7487  	Ftcl_CreateEncoding                     uintptr
  7488  	Ftcl_CreateThreadExitHandler            uintptr
  7489  	Ftcl_DeleteThreadExitHandler            uintptr
  7490  	Ftcl_DiscardResult                      uintptr
  7491  	Ftcl_EvalEx                             uintptr
  7492  	Ftcl_EvalObjv                           uintptr
  7493  	Ftcl_EvalObjEx                          uintptr
  7494  	Ftcl_ExitThread                         uintptr
  7495  	Ftcl_ExternalToUtf                      uintptr
  7496  	Ftcl_ExternalToUtfDString               uintptr
  7497  	Ftcl_FinalizeThread                     uintptr
  7498  	Ftcl_FinalizeNotifier                   uintptr
  7499  	Ftcl_FreeEncoding                       uintptr
  7500  	Ftcl_GetCurrentThread                   uintptr
  7501  	Ftcl_GetEncoding                        uintptr
  7502  	Ftcl_GetEncodingName                    uintptr
  7503  	Ftcl_GetEncodingNames                   uintptr
  7504  	Ftcl_GetIndexFromObjStruct              uintptr
  7505  	Ftcl_GetThreadData                      uintptr
  7506  	Ftcl_GetVar2Ex                          uintptr
  7507  	Ftcl_InitNotifier                       uintptr
  7508  	Ftcl_MutexLock                          uintptr
  7509  	Ftcl_MutexUnlock                        uintptr
  7510  	Ftcl_ConditionNotify                    uintptr
  7511  	Ftcl_ConditionWait                      uintptr
  7512  	Ftcl_NumUtfChars                        uintptr
  7513  	Ftcl_ReadChars                          uintptr
  7514  	Ftcl_RestoreResult                      uintptr
  7515  	Ftcl_SaveResult                         uintptr
  7516  	Ftcl_SetSystemEncoding                  uintptr
  7517  	Ftcl_SetVar2Ex                          uintptr
  7518  	Ftcl_ThreadAlert                        uintptr
  7519  	Ftcl_ThreadQueueEvent                   uintptr
  7520  	Ftcl_UniCharAtIndex                     uintptr
  7521  	Ftcl_UniCharToLower                     uintptr
  7522  	Ftcl_UniCharToTitle                     uintptr
  7523  	Ftcl_UniCharToUpper                     uintptr
  7524  	Ftcl_UniCharToUtf                       uintptr
  7525  	Ftcl_UtfAtIndex                         uintptr
  7526  	Ftcl_UtfCharComplete                    uintptr
  7527  	Ftcl_UtfBackslash                       uintptr
  7528  	Ftcl_UtfFindFirst                       uintptr
  7529  	Ftcl_UtfFindLast                        uintptr
  7530  	Ftcl_UtfNext                            uintptr
  7531  	Ftcl_UtfPrev                            uintptr
  7532  	Ftcl_UtfToExternal                      uintptr
  7533  	Ftcl_UtfToExternalDString               uintptr
  7534  	Ftcl_UtfToLower                         uintptr
  7535  	Ftcl_UtfToTitle                         uintptr
  7536  	Ftcl_UtfToUniChar                       uintptr
  7537  	Ftcl_UtfToUpper                         uintptr
  7538  	Ftcl_WriteChars                         uintptr
  7539  	Ftcl_WriteObj                           uintptr
  7540  	Ftcl_GetString                          uintptr
  7541  	Ftcl_GetDefaultEncodingDir              uintptr
  7542  	Ftcl_SetDefaultEncodingDir              uintptr
  7543  	Ftcl_AlertNotifier                      uintptr
  7544  	Ftcl_ServiceModeHook                    uintptr
  7545  	Ftcl_UniCharIsAlnum                     uintptr
  7546  	Ftcl_UniCharIsAlpha                     uintptr
  7547  	Ftcl_UniCharIsDigit                     uintptr
  7548  	Ftcl_UniCharIsLower                     uintptr
  7549  	Ftcl_UniCharIsSpace                     uintptr
  7550  	Ftcl_UniCharIsUpper                     uintptr
  7551  	Ftcl_UniCharIsWordChar                  uintptr
  7552  	Ftcl_UniCharLen                         uintptr
  7553  	Ftcl_UniCharNcmp                        uintptr
  7554  	Ftcl_UniCharToUtfDString                uintptr
  7555  	Ftcl_UtfToUniCharDString                uintptr
  7556  	Ftcl_GetRegExpFromObj                   uintptr
  7557  	Ftcl_EvalTokens                         uintptr
  7558  	Ftcl_FreeParse                          uintptr
  7559  	Ftcl_LogCommandInfo                     uintptr
  7560  	Ftcl_ParseBraces                        uintptr
  7561  	Ftcl_ParseCommand                       uintptr
  7562  	Ftcl_ParseExpr                          uintptr
  7563  	Ftcl_ParseQuotedString                  uintptr
  7564  	Ftcl_ParseVarName                       uintptr
  7565  	Ftcl_GetCwd                             uintptr
  7566  	Ftcl_Chdir                              uintptr
  7567  	Ftcl_Access                             uintptr
  7568  	Ftcl_Stat                               uintptr
  7569  	Ftcl_UtfNcmp                            uintptr
  7570  	Ftcl_UtfNcasecmp                        uintptr
  7571  	Ftcl_StringCaseMatch                    uintptr
  7572  	Ftcl_UniCharIsControl                   uintptr
  7573  	Ftcl_UniCharIsGraph                     uintptr
  7574  	Ftcl_UniCharIsPrint                     uintptr
  7575  	Ftcl_UniCharIsPunct                     uintptr
  7576  	Ftcl_RegExpExecObj                      uintptr
  7577  	Ftcl_RegExpGetInfo                      uintptr
  7578  	Ftcl_NewUnicodeObj                      uintptr
  7579  	Ftcl_SetUnicodeObj                      uintptr
  7580  	Ftcl_GetCharLength                      uintptr
  7581  	Ftcl_GetUniChar                         uintptr
  7582  	Ftcl_GetUnicode                         uintptr
  7583  	Ftcl_GetRange                           uintptr
  7584  	Ftcl_AppendUnicodeToObj                 uintptr
  7585  	Ftcl_RegExpMatchObj                     uintptr
  7586  	Ftcl_SetNotifier                        uintptr
  7587  	Ftcl_GetAllocMutex                      uintptr
  7588  	Ftcl_GetChannelNames                    uintptr
  7589  	Ftcl_GetChannelNamesEx                  uintptr
  7590  	Ftcl_ProcObjCmd                         uintptr
  7591  	Ftcl_ConditionFinalize                  uintptr
  7592  	Ftcl_MutexFinalize                      uintptr
  7593  	Ftcl_CreateThread                       uintptr
  7594  	Ftcl_ReadRaw                            uintptr
  7595  	Ftcl_WriteRaw                           uintptr
  7596  	Ftcl_GetTopChannel                      uintptr
  7597  	Ftcl_ChannelBuffered                    uintptr
  7598  	Ftcl_ChannelName                        uintptr
  7599  	Ftcl_ChannelVersion                     uintptr
  7600  	Ftcl_ChannelBlockModeProc               uintptr
  7601  	Ftcl_ChannelCloseProc                   uintptr
  7602  	Ftcl_ChannelClose2Proc                  uintptr
  7603  	Ftcl_ChannelInputProc                   uintptr
  7604  	Ftcl_ChannelOutputProc                  uintptr
  7605  	Ftcl_ChannelSeekProc                    uintptr
  7606  	Ftcl_ChannelSetOptionProc               uintptr
  7607  	Ftcl_ChannelGetOptionProc               uintptr
  7608  	Ftcl_ChannelWatchProc                   uintptr
  7609  	Ftcl_ChannelGetHandleProc               uintptr
  7610  	Ftcl_ChannelFlushProc                   uintptr
  7611  	Ftcl_ChannelHandlerProc                 uintptr
  7612  	Ftcl_JoinThread                         uintptr
  7613  	Ftcl_IsChannelShared                    uintptr
  7614  	Ftcl_IsChannelRegistered                uintptr
  7615  	Ftcl_CutChannel                         uintptr
  7616  	Ftcl_SpliceChannel                      uintptr
  7617  	Ftcl_ClearChannelHandlers               uintptr
  7618  	Ftcl_IsChannelExisting                  uintptr
  7619  	Ftcl_UniCharNcasecmp                    uintptr
  7620  	Ftcl_UniCharCaseMatch                   uintptr
  7621  	Ftcl_FindHashEntry                      uintptr
  7622  	Ftcl_CreateHashEntry                    uintptr
  7623  	Ftcl_InitCustomHashTable                uintptr
  7624  	Ftcl_InitObjHashTable                   uintptr
  7625  	Ftcl_CommandTraceInfo                   uintptr
  7626  	Ftcl_TraceCommand                       uintptr
  7627  	Ftcl_UntraceCommand                     uintptr
  7628  	Ftcl_AttemptAlloc                       uintptr
  7629  	Ftcl_AttemptDbCkalloc                   uintptr
  7630  	Ftcl_AttemptRealloc                     uintptr
  7631  	Ftcl_AttemptDbCkrealloc                 uintptr
  7632  	Ftcl_AttemptSetObjLength                uintptr
  7633  	Ftcl_GetChannelThread                   uintptr
  7634  	Ftcl_GetUnicodeFromObj                  uintptr
  7635  	Ftcl_GetMathFuncInfo                    uintptr
  7636  	Ftcl_ListMathFuncs                      uintptr
  7637  	Ftcl_SubstObj                           uintptr
  7638  	Ftcl_DetachChannel                      uintptr
  7639  	Ftcl_IsStandardChannel                  uintptr
  7640  	Ftcl_FSCopyFile                         uintptr
  7641  	Ftcl_FSCopyDirectory                    uintptr
  7642  	Ftcl_FSCreateDirectory                  uintptr
  7643  	Ftcl_FSDeleteFile                       uintptr
  7644  	Ftcl_FSLoadFile                         uintptr
  7645  	Ftcl_FSMatchInDirectory                 uintptr
  7646  	Ftcl_FSLink                             uintptr
  7647  	Ftcl_FSRemoveDirectory                  uintptr
  7648  	Ftcl_FSRenameFile                       uintptr
  7649  	Ftcl_FSLstat                            uintptr
  7650  	Ftcl_FSUtime                            uintptr
  7651  	Ftcl_FSFileAttrsGet                     uintptr
  7652  	Ftcl_FSFileAttrsSet                     uintptr
  7653  	Ftcl_FSFileAttrStrings                  uintptr
  7654  	Ftcl_FSStat                             uintptr
  7655  	Ftcl_FSAccess                           uintptr
  7656  	Ftcl_FSOpenFileChannel                  uintptr
  7657  	Ftcl_FSGetCwd                           uintptr
  7658  	Ftcl_FSChdir                            uintptr
  7659  	Ftcl_FSConvertToPathType                uintptr
  7660  	Ftcl_FSJoinPath                         uintptr
  7661  	Ftcl_FSSplitPath                        uintptr
  7662  	Ftcl_FSEqualPaths                       uintptr
  7663  	Ftcl_FSGetNormalizedPath                uintptr
  7664  	Ftcl_FSJoinToPath                       uintptr
  7665  	Ftcl_FSGetInternalRep                   uintptr
  7666  	Ftcl_FSGetTranslatedPath                uintptr
  7667  	Ftcl_FSEvalFile                         uintptr
  7668  	Ftcl_FSNewNativePath                    uintptr
  7669  	Ftcl_FSGetNativePath                    uintptr
  7670  	Ftcl_FSFileSystemInfo                   uintptr
  7671  	Ftcl_FSPathSeparator                    uintptr
  7672  	Ftcl_FSListVolumes                      uintptr
  7673  	Ftcl_FSRegister                         uintptr
  7674  	Ftcl_FSUnregister                       uintptr
  7675  	Ftcl_FSData                             uintptr
  7676  	Ftcl_FSGetTranslatedStringPath          uintptr
  7677  	Ftcl_FSGetFileSystemForPath             uintptr
  7678  	Ftcl_FSGetPathType                      uintptr
  7679  	Ftcl_OutputBuffered                     uintptr
  7680  	Ftcl_FSMountsChanged                    uintptr
  7681  	Ftcl_EvalTokensStandard                 uintptr
  7682  	Ftcl_GetTime                            uintptr
  7683  	Ftcl_CreateObjTrace                     uintptr
  7684  	Ftcl_GetCommandInfoFromToken            uintptr
  7685  	Ftcl_SetCommandInfoFromToken            uintptr
  7686  	Ftcl_DbNewWideIntObj                    uintptr
  7687  	Ftcl_GetWideIntFromObj                  uintptr
  7688  	Ftcl_NewWideIntObj                      uintptr
  7689  	Ftcl_SetWideIntObj                      uintptr
  7690  	Ftcl_AllocStatBuf                       uintptr
  7691  	Ftcl_Seek                               uintptr
  7692  	Ftcl_Tell                               uintptr
  7693  	Ftcl_ChannelWideSeekProc                uintptr
  7694  	Ftcl_DictObjPut                         uintptr
  7695  	Ftcl_DictObjGet                         uintptr
  7696  	Ftcl_DictObjRemove                      uintptr
  7697  	Ftcl_DictObjSize                        uintptr
  7698  	Ftcl_DictObjFirst                       uintptr
  7699  	Ftcl_DictObjNext                        uintptr
  7700  	Ftcl_DictObjDone                        uintptr
  7701  	Ftcl_DictObjPutKeyList                  uintptr
  7702  	Ftcl_DictObjRemoveKeyList               uintptr
  7703  	Ftcl_NewDictObj                         uintptr
  7704  	Ftcl_DbNewDictObj                       uintptr
  7705  	Ftcl_RegisterConfig                     uintptr
  7706  	Ftcl_CreateNamespace                    uintptr
  7707  	Ftcl_DeleteNamespace                    uintptr
  7708  	Ftcl_AppendExportList                   uintptr
  7709  	Ftcl_Export                             uintptr
  7710  	Ftcl_Import                             uintptr
  7711  	Ftcl_ForgetImport                       uintptr
  7712  	Ftcl_GetCurrentNamespace                uintptr
  7713  	Ftcl_GetGlobalNamespace                 uintptr
  7714  	Ftcl_FindNamespace                      uintptr
  7715  	Ftcl_FindCommand                        uintptr
  7716  	Ftcl_GetCommandFromObj                  uintptr
  7717  	Ftcl_GetCommandFullName                 uintptr
  7718  	Ftcl_FSEvalFileEx                       uintptr
  7719  	Ftcl_SetExitProc                        uintptr
  7720  	Ftcl_LimitAddHandler                    uintptr
  7721  	Ftcl_LimitRemoveHandler                 uintptr
  7722  	Ftcl_LimitReady                         uintptr
  7723  	Ftcl_LimitCheck                         uintptr
  7724  	Ftcl_LimitExceeded                      uintptr
  7725  	Ftcl_LimitSetCommands                   uintptr
  7726  	Ftcl_LimitSetTime                       uintptr
  7727  	Ftcl_LimitSetGranularity                uintptr
  7728  	Ftcl_LimitTypeEnabled                   uintptr
  7729  	Ftcl_LimitTypeExceeded                  uintptr
  7730  	Ftcl_LimitTypeSet                       uintptr
  7731  	Ftcl_LimitTypeReset                     uintptr
  7732  	Ftcl_LimitGetCommands                   uintptr
  7733  	Ftcl_LimitGetTime                       uintptr
  7734  	Ftcl_LimitGetGranularity                uintptr
  7735  	Ftcl_SaveInterpState                    uintptr
  7736  	Ftcl_RestoreInterpState                 uintptr
  7737  	Ftcl_DiscardInterpState                 uintptr
  7738  	Ftcl_SetReturnOptions                   uintptr
  7739  	Ftcl_GetReturnOptions                   uintptr
  7740  	Ftcl_IsEnsemble                         uintptr
  7741  	Ftcl_CreateEnsemble                     uintptr
  7742  	Ftcl_FindEnsemble                       uintptr
  7743  	Ftcl_SetEnsembleSubcommandList          uintptr
  7744  	Ftcl_SetEnsembleMappingDict             uintptr
  7745  	Ftcl_SetEnsembleUnknownHandler          uintptr
  7746  	Ftcl_SetEnsembleFlags                   uintptr
  7747  	Ftcl_GetEnsembleSubcommandList          uintptr
  7748  	Ftcl_GetEnsembleMappingDict             uintptr
  7749  	Ftcl_GetEnsembleUnknownHandler          uintptr
  7750  	Ftcl_GetEnsembleFlags                   uintptr
  7751  	Ftcl_GetEnsembleNamespace               uintptr
  7752  	Ftcl_SetTimeProc                        uintptr
  7753  	Ftcl_QueryTimeProc                      uintptr
  7754  	Ftcl_ChannelThreadActionProc            uintptr
  7755  	Ftcl_NewBignumObj                       uintptr
  7756  	Ftcl_DbNewBignumObj                     uintptr
  7757  	Ftcl_SetBignumObj                       uintptr
  7758  	Ftcl_GetBignumFromObj                   uintptr
  7759  	Ftcl_TakeBignumFromObj                  uintptr
  7760  	Ftcl_TruncateChannel                    uintptr
  7761  	Ftcl_ChannelTruncateProc                uintptr
  7762  	Ftcl_SetChannelErrorInterp              uintptr
  7763  	Ftcl_GetChannelErrorInterp              uintptr
  7764  	Ftcl_SetChannelError                    uintptr
  7765  	Ftcl_GetChannelError                    uintptr
  7766  	Ftcl_InitBignumFromDouble               uintptr
  7767  	Ftcl_GetNamespaceUnknownHandler         uintptr
  7768  	Ftcl_SetNamespaceUnknownHandler         uintptr
  7769  	Ftcl_GetEncodingFromObj                 uintptr
  7770  	Ftcl_GetEncodingSearchPath              uintptr
  7771  	Ftcl_SetEncodingSearchPath              uintptr
  7772  	Ftcl_GetEncodingNameFromEnvironment     uintptr
  7773  	Ftcl_PkgRequireProc                     uintptr
  7774  	Ftcl_AppendObjToErrorInfo               uintptr
  7775  	Ftcl_AppendLimitedToObj                 uintptr
  7776  	Ftcl_Format                             uintptr
  7777  	Ftcl_AppendFormatToObj                  uintptr
  7778  	Ftcl_ObjPrintf                          uintptr
  7779  	Ftcl_AppendPrintfToObj                  uintptr
  7780  	Ftcl_CancelEval                         uintptr
  7781  	Ftcl_Canceled                           uintptr
  7782  	Ftcl_CreatePipe                         uintptr
  7783  	Ftcl_NRCreateCommand                    uintptr
  7784  	Ftcl_NREvalObj                          uintptr
  7785  	Ftcl_NREvalObjv                         uintptr
  7786  	Ftcl_NRCmdSwap                          uintptr
  7787  	Ftcl_NRAddCallback                      uintptr
  7788  	Ftcl_NRCallObjProc                      uintptr
  7789  	Ftcl_GetFSDeviceFromStat                uintptr
  7790  	Ftcl_GetFSInodeFromStat                 uintptr
  7791  	Ftcl_GetModeFromStat                    uintptr
  7792  	Ftcl_GetLinkCountFromStat               uintptr
  7793  	Ftcl_GetUserIdFromStat                  uintptr
  7794  	Ftcl_GetGroupIdFromStat                 uintptr
  7795  	Ftcl_GetDeviceTypeFromStat              uintptr
  7796  	Ftcl_GetAccessTimeFromStat              uintptr
  7797  	Ftcl_GetModificationTimeFromStat        uintptr
  7798  	Ftcl_GetChangeTimeFromStat              uintptr
  7799  	Ftcl_GetSizeFromStat                    uintptr
  7800  	Ftcl_GetBlocksFromStat                  uintptr
  7801  	Ftcl_GetBlockSizeFromStat               uintptr
  7802  	Ftcl_SetEnsembleParameterList           uintptr
  7803  	Ftcl_GetEnsembleParameterList           uintptr
  7804  	Ftcl_ParseArgsObjv                      uintptr
  7805  	Ftcl_GetErrorLine                       uintptr
  7806  	Ftcl_SetErrorLine                       uintptr
  7807  	Ftcl_TransferResult                     uintptr
  7808  	Ftcl_InterpActive                       uintptr
  7809  	Ftcl_BackgroundException                uintptr
  7810  	Ftcl_ZlibDeflate                        uintptr
  7811  	Ftcl_ZlibInflate                        uintptr
  7812  	Ftcl_ZlibCRC32                          uintptr
  7813  	Ftcl_ZlibAdler32                        uintptr
  7814  	Ftcl_ZlibStreamInit                     uintptr
  7815  	Ftcl_ZlibStreamGetCommandName           uintptr
  7816  	Ftcl_ZlibStreamEof                      uintptr
  7817  	Ftcl_ZlibStreamChecksum                 uintptr
  7818  	Ftcl_ZlibStreamPut                      uintptr
  7819  	Ftcl_ZlibStreamGet                      uintptr
  7820  	Ftcl_ZlibStreamClose                    uintptr
  7821  	Ftcl_ZlibStreamReset                    uintptr
  7822  	Ftcl_SetStartupScript                   uintptr
  7823  	Ftcl_GetStartupScript                   uintptr
  7824  	Ftcl_CloseEx                            uintptr
  7825  	Ftcl_NRExprObj                          uintptr
  7826  	Ftcl_NRSubstObj                         uintptr
  7827  	Ftcl_LoadFile                           uintptr
  7828  	Ftcl_FindSymbol                         uintptr
  7829  	Ftcl_FSUnloadFile                       uintptr
  7830  	Ftcl_ZlibStreamSetCompressionDictionary uintptr
  7831  	Freserved631                            uintptr
  7832  	Freserved632                            uintptr
  7833  	Freserved633                            uintptr
  7834  	Freserved634                            uintptr
  7835  	Freserved635                            uintptr
  7836  	Freserved636                            uintptr
  7837  	Freserved637                            uintptr
  7838  	Freserved638                            uintptr
  7839  	Freserved639                            uintptr
  7840  	Freserved640                            uintptr
  7841  	Freserved641                            uintptr
  7842  	Freserved642                            uintptr
  7843  	Freserved643                            uintptr
  7844  	Freserved644                            uintptr
  7845  	Freserved645                            uintptr
  7846  	Freserved646                            uintptr
  7847  	Freserved647                            uintptr
  7848  	Freserved648                            uintptr
  7849  	FtclUnusedStubEntry                     uintptr
  7850  }
  7851  
  7852  type TclStubs = TclStubs1
  7853  
  7854  type TclPlatStubs = TclPlatStubs1
  7855  
  7856  func dbHandleFromObj(tls *libc.TLS, interp uintptr, pObj uintptr, pDb uintptr) int32 {
  7857  	bp := tls.Alloc(88)
  7858  	defer tls.Free(88)
  7859  
  7860  	if 0 == tcl.XTcl_GetCommandInfo(tls, interp, tcl.XTcl_GetString(tls, pObj), bp+24) {
  7861  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+1930, tcl.XTcl_GetString(tls, pObj), 0))
  7862  		return TCL_ERROR
  7863  	}
  7864  
  7865  	*(*uintptr)(unsafe.Pointer(pDb)) = *(*uintptr)(unsafe.Pointer((*Tcl_CmdInfo)(unsafe.Pointer(bp + 24)).FobjClientData))
  7866  	return TCL_OK
  7867  }
  7868  
  7869  func testExpertCmd(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
  7870  	bp := tls.Alloc(212)
  7871  	defer tls.Free(212)
  7872  
  7873  	var pExpert uintptr = clientData
  7874  	*(*[6]Subcmd)(unsafe.Pointer(bp)) = [6]Subcmd{
  7875  		{FzSub: ts + 1947, FnArg: 1, FzMsg: ts + 1951},
  7876  		{FzSub: ts + 1957, FzMsg: ts + 584},
  7877  		{FzSub: ts + 1965, FzMsg: ts + 584},
  7878  		{FzSub: ts + 1971, FnArg: 2, FzMsg: ts + 1978},
  7879  		{FzSub: ts + 1991, FzMsg: ts + 584},
  7880  		{},
  7881  	}
  7882  
  7883  	var rc int32 = TCL_OK
  7884  	*(*uintptr)(unsafe.Pointer(bp + 152)) = uintptr(0)
  7885  
  7886  	if objc < 2 {
  7887  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+1999)
  7888  		return TCL_ERROR
  7889  	}
  7890  	rc = tcl.XTcl_GetIndexFromObjStruct(tls, interp,
  7891  		*(*uintptr)(unsafe.Pointer(objv + 1*8)), bp, int32(unsafe.Sizeof(Subcmd{})), ts+2014, 0, bp+144)
  7892  	if rc != TCL_OK {
  7893  		return rc
  7894  	}
  7895  	if objc != 2+(*Subcmd)(unsafe.Pointer(bp+uintptr(*(*int32)(unsafe.Pointer(bp + 144)))*24)).FnArg {
  7896  		tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, (*Subcmd)(unsafe.Pointer(bp+uintptr(*(*int32)(unsafe.Pointer(bp + 144)))*24)).FzMsg)
  7897  		return TCL_ERROR
  7898  	}
  7899  
  7900  	switch *(*int32)(unsafe.Pointer(bp + 144)) {
  7901  	case 0:
  7902  		{
  7903  			var zArg uintptr = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
  7904  			rc = sqlite3_expert_sql(tls, pExpert, zArg, bp+152)
  7905  			break
  7906  
  7907  		}
  7908  
  7909  	case 1:
  7910  		{
  7911  			rc = sqlite3_expert_analyze(tls, pExpert, bp+152)
  7912  			break
  7913  
  7914  		}
  7915  
  7916  	case 2:
  7917  		{
  7918  			var n int32 = sqlite3_expert_count(tls, pExpert)
  7919  			tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, n))
  7920  			break
  7921  
  7922  		}
  7923  
  7924  	case 3:
  7925  		{
  7926  			*(*[5]uintptr)(unsafe.Pointer(bp + 168)) = [5]uintptr{
  7927  				ts + 1947, ts + 2026, ts + 2034, ts + 2039, uintptr(0),
  7928  			}
  7929  
  7930  			var zReport uintptr
  7931  
  7932  			if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+160) != 0 ||
  7933  				tcl.XTcl_GetIndexFromObjStruct(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+168, int32(unsafe.Sizeof(uintptr(0))), ts+1971, 0, bp+208) != 0 {
  7934  				return TCL_ERROR
  7935  			}
  7936  
  7937  			zReport = sqlite3_expert_report(tls, pExpert, *(*int32)(unsafe.Pointer(bp + 160)), 1+*(*int32)(unsafe.Pointer(bp + 208)))
  7938  			tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, zReport, -1))
  7939  			break
  7940  
  7941  		}
  7942  
  7943  	default:
  7944  		tcl.XTcl_DeleteCommand(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))))
  7945  		break
  7946  	}
  7947  
  7948  	if rc != TCL_OK {
  7949  		if *(*uintptr)(unsafe.Pointer(bp + 152)) != 0 {
  7950  			tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, *(*uintptr)(unsafe.Pointer(bp + 152)), -1))
  7951  		} else {
  7952  			tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3ErrName(tls, rc), -1))
  7953  		}
  7954  	}
  7955  	sqlite3.Xsqlite3_free(tls, *(*uintptr)(unsafe.Pointer(bp + 152)))
  7956  	return rc
  7957  }
  7958  
  7959  type Subcmd = struct {
  7960  	FzSub        uintptr
  7961  	FnArg        int32
  7962  	F__ccgo_pad1 [4]byte
  7963  	FzMsg        uintptr
  7964  }
  7965  
  7966  func testExpertDel(tls *libc.TLS, clientData uintptr) {
  7967  	var pExpert uintptr = clientData
  7968  	sqlite3_expert_destroy(tls, pExpert)
  7969  }
  7970  
  7971  func test_sqlite3_expert_new(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
  7972  	bp := tls.Alloc(56)
  7973  	defer tls.Free(56)
  7974  
  7975  	var zCmd uintptr = uintptr(0)
  7976  	*(*uintptr)(unsafe.Pointer(bp + 48)) = uintptr(0)
  7977  	var pExpert uintptr
  7978  	var rc int32 = TCL_OK
  7979  
  7980  	if objc != 2 {
  7981  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2050)
  7982  		return TCL_ERROR
  7983  	}
  7984  	if dbHandleFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp+40) != 0 {
  7985  		return TCL_ERROR
  7986  	}
  7987  
  7988  	zCmd = sqlite3.Xsqlite3_mprintf(tls, ts+2053, libc.VaList(bp, libc.PreIncInt32(&iCmd, 1)))
  7989  	if zCmd == uintptr(0) {
  7990  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+8, ts+2069, uintptr(0)))
  7991  		return TCL_ERROR
  7992  	}
  7993  
  7994  	pExpert = sqlite3_expert_new(tls, *(*uintptr)(unsafe.Pointer(bp + 40)), bp+48)
  7995  	if pExpert == uintptr(0) {
  7996  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+24, *(*uintptr)(unsafe.Pointer(bp + 48)), uintptr(0)))
  7997  		rc = TCL_ERROR
  7998  	} else {
  7999  		var p uintptr = pExpert
  8000  		tcl.XTcl_CreateObjCommand(tls, interp, zCmd, *(*uintptr)(unsafe.Pointer(&struct {
  8001  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
  8002  		}{testExpertCmd})), p, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{testExpertDel})))
  8003  		tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, zCmd, -1))
  8004  	}
  8005  
  8006  	sqlite3.Xsqlite3_free(tls, zCmd)
  8007  	sqlite3.Xsqlite3_free(tls, *(*uintptr)(unsafe.Pointer(bp + 48)))
  8008  	return rc
  8009  }
  8010  
  8011  var iCmd int32 = 0
  8012  
  8013  func TestExpert_Init(tls *libc.TLS, interp uintptr) int32 {
  8014  	bp := tls.Alloc(16)
  8015  	defer tls.Free(16)
  8016  
  8017  	*(*[1]struct {
  8018  		FzCmd  uintptr
  8019  		FxProc uintptr
  8020  	})(unsafe.Pointer(bp)) = [1]struct {
  8021  		FzCmd  uintptr
  8022  		FxProc uintptr
  8023  	}{
  8024  		{FzCmd: ts + 2083, FxProc: *(*uintptr)(unsafe.Pointer(&struct {
  8025  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
  8026  		}{test_sqlite3_expert_new}))},
  8027  	}
  8028  	var i int32
  8029  
  8030  	for i = 0; uint64(i) < uint64(unsafe.Sizeof([1]struct {
  8031  		FzCmd  uintptr
  8032  		FxProc uintptr
  8033  	}{}))/uint64(unsafe.Sizeof(struct {
  8034  		FzCmd  uintptr
  8035  		FxProc uintptr
  8036  	}{})); i++ {
  8037  		var p uintptr = bp + uintptr(i)*16
  8038  		tcl.XTcl_CreateObjCommand(tls, interp, (*struct {
  8039  			FzCmd  uintptr
  8040  			FxProc uintptr
  8041  		})(unsafe.Pointer(p)).FzCmd, (*struct {
  8042  			FzCmd  uintptr
  8043  			FxProc uintptr
  8044  		})(unsafe.Pointer(p)).FxProc, uintptr(0), uintptr(0))
  8045  	}
  8046  	return TCL_OK
  8047  }
  8048  
  8049  func f5tDbPointer(tls *libc.TLS, interp uintptr, pObj uintptr, ppDb uintptr) int32 {
  8050  	bp := tls.Alloc(64)
  8051  	defer tls.Free(64)
  8052  
  8053  	var p uintptr
  8054  
  8055  	var z uintptr = tcl.XTcl_GetString(tls, pObj)
  8056  	if tcl.XTcl_GetCommandInfo(tls, interp, z, bp) != 0 {
  8057  		p = (*Tcl_CmdInfo)(unsafe.Pointer(bp)).FobjClientData
  8058  		*(*uintptr)(unsafe.Pointer(ppDb)) = (*struct{ Fdb uintptr })(unsafe.Pointer(p)).Fdb
  8059  		return TCL_OK
  8060  	}
  8061  	return TCL_ERROR
  8062  }
  8063  
  8064  func f5tResultToErrorCode(tls *libc.TLS, zRes uintptr) int32 {
  8065  	bp := tls.Alloc(64)
  8066  	defer tls.Free(64)
  8067  
  8068  	*(*[4]ErrorCode)(unsafe.Pointer(bp)) = [4]ErrorCode{
  8069  		{Frc: SQLITE_DONE, FzError: ts + 2102},
  8070  		{Frc: SQLITE_ERROR, FzError: ts + 2114},
  8071  		{FzError: ts + 2127},
  8072  		{FzError: ts + 584},
  8073  	}
  8074  	var i int32
  8075  
  8076  	for i = 0; uint64(i) < uint64(unsafe.Sizeof([4]ErrorCode{}))/uint64(unsafe.Sizeof(ErrorCode{})); i++ {
  8077  		if 0 == sqlite3.Xsqlite3_stricmp(tls, zRes, (*ErrorCode)(unsafe.Pointer(bp+uintptr(i)*16)).FzError) {
  8078  			return (*ErrorCode)(unsafe.Pointer(bp + uintptr(i)*16)).Frc
  8079  		}
  8080  	}
  8081  
  8082  	return SQLITE_ERROR
  8083  }
  8084  
  8085  type ErrorCode = struct {
  8086  	Frc          int32
  8087  	F__ccgo_pad1 [4]byte
  8088  	FzError      uintptr
  8089  }
  8090  
  8091  func f5tDbAndApi(tls *libc.TLS, interp uintptr, pObj uintptr, ppDb uintptr, ppApi uintptr) int32 {
  8092  	bp := tls.Alloc(72)
  8093  	defer tls.Free(72)
  8094  
  8095  	*(*uintptr)(unsafe.Pointer(bp + 48)) = uintptr(0)
  8096  	var rc int32 = f5tDbPointer(tls, interp, pObj, bp+48)
  8097  	if rc != TCL_OK {
  8098  		return TCL_ERROR
  8099  	} else {
  8100  		*(*uintptr)(unsafe.Pointer(bp + 56)) = uintptr(0)
  8101  		*(*uintptr)(unsafe.Pointer(bp + 64)) = uintptr(0)
  8102  
  8103  		rc = sqlite3.Xsqlite3_prepare_v2(tls, *(*uintptr)(unsafe.Pointer(bp + 48)), ts+2137, -1, bp+56, uintptr(0))
  8104  		if rc != SQLITE_OK {
  8105  			tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+2153, sqlite3.Xsqlite3_errmsg(tls, *(*uintptr)(unsafe.Pointer(bp + 48))), 0))
  8106  			return TCL_ERROR
  8107  		}
  8108  		sqlite3.Xsqlite3_bind_pointer(tls, *(*uintptr)(unsafe.Pointer(bp + 56)), 1, bp+64, ts+2161, uintptr(0))
  8109  		sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp + 56)))
  8110  
  8111  		if sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 56))) != SQLITE_OK {
  8112  			tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+24, ts+2153, sqlite3.Xsqlite3_errmsg(tls, *(*uintptr)(unsafe.Pointer(bp + 48))), 0))
  8113  			return TCL_ERROR
  8114  		}
  8115  
  8116  		*(*uintptr)(unsafe.Pointer(ppDb)) = *(*uintptr)(unsafe.Pointer(bp + 48))
  8117  		*(*uintptr)(unsafe.Pointer(ppApi)) = *(*uintptr)(unsafe.Pointer(bp + 64))
  8118  	}
  8119  
  8120  	return TCL_OK
  8121  }
  8122  
  8123  type F5tFunction1 = struct {
  8124  	Finterp  uintptr
  8125  	FpScript uintptr
  8126  }
  8127  
  8128  type F5tFunction = F5tFunction1
  8129  
  8130  type F5tApi1 = struct {
  8131  	FpApi uintptr
  8132  	FpFts uintptr
  8133  }
  8134  
  8135  type F5tApi = F5tApi1
  8136  
  8137  type F5tAuxData1 = struct{ FpObj uintptr }
  8138  
  8139  type F5tAuxData = F5tAuxData1
  8140  
  8141  func xTokenizeCb(tls *libc.TLS, pCtx uintptr, tflags int32, zToken uintptr, nToken int32, iStart int32, iEnd int32) int32 {
  8142  	var p uintptr = pCtx
  8143  	var pEval uintptr = tcl.XTcl_DuplicateObj(tls, (*F5tFunction)(unsafe.Pointer(p)).FpScript)
  8144  	var rc int32
  8145  
  8146  	(*Tcl_Obj)(unsafe.Pointer(pEval)).FrefCount++
  8147  	tcl.XTcl_ListObjAppendElement(tls, (*F5tFunction)(unsafe.Pointer(p)).Finterp, pEval, tcl.XTcl_NewStringObj(tls, zToken, nToken))
  8148  	tcl.XTcl_ListObjAppendElement(tls, (*F5tFunction)(unsafe.Pointer(p)).Finterp, pEval, tcl.XTcl_NewIntObj(tls, iStart))
  8149  	tcl.XTcl_ListObjAppendElement(tls, (*F5tFunction)(unsafe.Pointer(p)).Finterp, pEval, tcl.XTcl_NewIntObj(tls, iEnd))
  8150  
  8151  	rc = tcl.XTcl_EvalObjEx(tls, (*F5tFunction)(unsafe.Pointer(p)).Finterp, pEval, 0)
  8152  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
  8153  		var _objPtr uintptr = pEval
  8154  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
  8155  			tcl.XTclFreeObj(tls, _objPtr)
  8156  		}
  8157  	}
  8158  	if rc == TCL_OK {
  8159  		rc = f5tResultToErrorCode(tls, tcl.XTcl_GetStringResult(tls, (*F5tFunction)(unsafe.Pointer(p)).Finterp))
  8160  	}
  8161  
  8162  	return rc
  8163  }
  8164  
  8165  func xQueryPhraseCb(tls *libc.TLS, pApi uintptr, pFts uintptr, pCtx uintptr) int32 {
  8166  	bp := tls.Alloc(88)
  8167  	defer tls.Free(88)
  8168  
  8169  	var p uintptr = pCtx
  8170  	var pEval uintptr
  8171  	var rc int32
  8172  
  8173  	(*F5tApi)(unsafe.Pointer(bp + 72)).FpApi = pApi
  8174  	(*F5tApi)(unsafe.Pointer(bp + 72)).FpFts = pFts
  8175  	libc.Xsprintf(tls, bp+8, ts+2174, libc.VaList(bp, libc.PostIncInt64(&iCmd1, 1)))
  8176  	tcl.XTcl_CreateObjCommand(tls, (*F5tFunction)(unsafe.Pointer(p)).Finterp, bp+8, *(*uintptr)(unsafe.Pointer(&struct {
  8177  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
  8178  	}{xF5tApi})), bp+72, uintptr(0))
  8179  
  8180  	pEval = tcl.XTcl_DuplicateObj(tls, (*F5tFunction)(unsafe.Pointer(p)).FpScript)
  8181  	(*Tcl_Obj)(unsafe.Pointer(pEval)).FrefCount++
  8182  	tcl.XTcl_ListObjAppendElement(tls, (*F5tFunction)(unsafe.Pointer(p)).Finterp, pEval, tcl.XTcl_NewStringObj(tls, bp+8, -1))
  8183  	rc = tcl.XTcl_EvalObjEx(tls, (*F5tFunction)(unsafe.Pointer(p)).Finterp, pEval, 0)
  8184  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
  8185  		var _objPtr uintptr = pEval
  8186  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
  8187  			tcl.XTclFreeObj(tls, _objPtr)
  8188  		}
  8189  	}
  8190  	tcl.XTcl_DeleteCommand(tls, (*F5tFunction)(unsafe.Pointer(p)).Finterp, bp+8)
  8191  
  8192  	if rc == TCL_OK {
  8193  		rc = f5tResultToErrorCode(tls, tcl.XTcl_GetStringResult(tls, (*F5tFunction)(unsafe.Pointer(p)).Finterp))
  8194  	}
  8195  
  8196  	return rc
  8197  }
  8198  
  8199  var iCmd1 sqlite3_int64 = int64(0)
  8200  
  8201  func xSetAuxdataDestructor(tls *libc.TLS, p uintptr) {
  8202  	var pData uintptr = p
  8203  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
  8204  		var _objPtr uintptr = (*F5tAuxData)(unsafe.Pointer(pData)).FpObj
  8205  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
  8206  			tcl.XTclFreeObj(tls, _objPtr)
  8207  		}
  8208  	}
  8209  	sqlite3.Xsqlite3_free(tls, pData)
  8210  }
  8211  
  8212  func xF5tApi(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
  8213  	bp := tls.Alloc(684)
  8214  	defer tls.Free(684)
  8215  
  8216  	*(*[19]Sub)(unsafe.Pointer(bp + 32)) = [19]Sub{
  8217  		{FzName: ts + 2185, FzMsg: ts + 584},
  8218  		{FzName: ts + 2198, FzMsg: ts + 584},
  8219  		{FzName: ts + 2208, FnArg: 1, FzMsg: ts + 2225},
  8220  		{FzName: ts + 2229, FnArg: 2, FzMsg: ts + 2239},
  8221  		{FzName: ts + 2251, FzMsg: ts + 584},
  8222  		{FzName: ts + 2264, FnArg: 1, FzMsg: ts + 2276},
  8223  		{FzName: ts + 2283, FzMsg: ts + 584},
  8224  		{FzName: ts + 2294, FnArg: 1, FzMsg: ts + 2300},
  8225  		{FzName: ts + 2304, FzMsg: ts + 584},
  8226  		{FzName: ts + 2311, FnArg: 1, FzMsg: ts + 2225},
  8227  		{FzName: ts + 2323, FnArg: 1, FzMsg: ts + 2225},
  8228  		{FzName: ts + 2335, FnArg: 2, FzMsg: ts + 2348},
  8229  		{FzName: ts + 2362, FnArg: 1, FzMsg: ts + 2374},
  8230  		{FzName: ts + 2380, FnArg: 1, FzMsg: ts + 2392},
  8231  		{FzName: ts + 2398, FnArg: 1, FzMsg: ts + 2413},
  8232  		{FzName: ts + 2421, FnArg: 1, FzMsg: ts + 2392},
  8233  		{FzName: ts + 2436, FnArg: 4, FzMsg: ts + 2451},
  8234  		{FzName: ts + 2480, FnArg: 3, FzMsg: ts + 2501},
  8235  		{},
  8236  	}
  8237  	var rc int32
  8238  	*(*int32)(unsafe.Pointer(bp + 488)) = 0
  8239  	var p uintptr = clientData
  8240  
  8241  	if objc < 2 {
  8242  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2523)
  8243  		return TCL_ERROR
  8244  	}
  8245  
  8246  	rc = tcl.XTcl_GetIndexFromObjStruct(tls,
  8247  		interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp+32, int32(unsafe.Sizeof(Sub{})), ts+2523, 0, bp+488)
  8248  	if rc != TCL_OK {
  8249  		return rc
  8250  	}
  8251  	if (*Sub)(unsafe.Pointer(bp+32+uintptr(*(*int32)(unsafe.Pointer(bp + 488)))*24)).FnArg != objc-2 {
  8252  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, (*Sub)(unsafe.Pointer(bp+32+uintptr(*(*int32)(unsafe.Pointer(bp + 488)))*24)).FzMsg)
  8253  		return TCL_ERROR
  8254  	}
  8255  
  8256  	switch *(*int32)(unsafe.Pointer(bp + 488)) {
  8257  	case 0:
  8258  		{
  8259  			var nCol int32
  8260  			nCol = (*struct {
  8261  				f func(*libc.TLS, uintptr) int32
  8262  			})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer((*F5tApi)(unsafe.Pointer(p)).FpApi)).FxColumnCount})).f(tls, (*F5tApi)(unsafe.Pointer(p)).FpFts)
  8263  			if rc == SQLITE_OK {
  8264  				tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, nCol))
  8265  			}
  8266  			break
  8267  
  8268  		}
  8269  	case 1:
  8270  		{
  8271  			rc = (*struct {
  8272  				f func(*libc.TLS, uintptr, uintptr) int32
  8273  			})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer((*F5tApi)(unsafe.Pointer(p)).FpApi)).FxRowCount})).f(tls, (*F5tApi)(unsafe.Pointer(p)).FpFts, bp+496)
  8274  			if rc == SQLITE_OK {
  8275  				tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewWideIntObj(tls, *(*sqlite3_int64)(unsafe.Pointer(bp + 496))))
  8276  			}
  8277  			break
  8278  
  8279  		}
  8280  	case 2:
  8281  		{
  8282  			if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+504) != 0 {
  8283  				return TCL_ERROR
  8284  			}
  8285  			rc = (*struct {
  8286  				f func(*libc.TLS, uintptr, int32, uintptr) int32
  8287  			})(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)
  8288  			if rc == SQLITE_OK {
  8289  				tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewWideIntObj(tls, *(*sqlite3_int64)(unsafe.Pointer(bp + 512))))
  8290  			}
  8291  			break
  8292  
  8293  		}
  8294  	case 3:
  8295  		{
  8296  			var zText uintptr = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+520)
  8297  
  8298  			(*F5tFunction)(unsafe.Pointer(bp + 528)).Finterp = interp
  8299  			(*F5tFunction)(unsafe.Pointer(bp + 528)).FpScript = *(*uintptr)(unsafe.Pointer(objv + 3*8))
  8300  			rc = (*struct {
  8301  				f func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr) int32
  8302  			})(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 {
  8303  				f func(*libc.TLS, uintptr, int32, uintptr, int32, int32, int32) int32
  8304  			}{xTokenizeCb})))
  8305  			if rc == SQLITE_OK {
  8306  				tcl.XTcl_ResetResult(tls, interp)
  8307  			}
  8308  			return rc
  8309  
  8310  		}
  8311  	case 4:
  8312  		{
  8313  			var nPhrase int32
  8314  			nPhrase = (*struct {
  8315  				f func(*libc.TLS, uintptr) int32
  8316  			})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer((*F5tApi)(unsafe.Pointer(p)).FpApi)).FxPhraseCount})).f(tls, (*F5tApi)(unsafe.Pointer(p)).FpFts)
  8317  			if rc == SQLITE_OK {
  8318  				tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, nPhrase))
  8319  			}
  8320  			break
  8321  
  8322  		}
  8323  	case 5:
  8324  		{
  8325  			var sz int32
  8326  			if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+544) != 0 {
  8327  				return TCL_ERROR
  8328  			}
  8329  			sz = (*struct {
  8330  				f func(*libc.TLS, uintptr, int32) int32
  8331  			})(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)))
  8332  			if rc == SQLITE_OK {
  8333  				tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, sz))
  8334  			}
  8335  			break
  8336  
  8337  		}
  8338  	case 6:
  8339  		{
  8340  			rc = (*struct {
  8341  				f func(*libc.TLS, uintptr, uintptr) int32
  8342  			})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer((*F5tApi)(unsafe.Pointer(p)).FpApi)).FxInstCount})).f(tls, (*F5tApi)(unsafe.Pointer(p)).FpFts, bp+548)
  8343  			if rc == SQLITE_OK {
  8344  				tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 548))))
  8345  			}
  8346  			break
  8347  
  8348  		}
  8349  	case 7:
  8350  		{
  8351  			if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+552) != 0 {
  8352  				return TCL_ERROR
  8353  			}
  8354  			rc = (*struct {
  8355  				f func(*libc.TLS, uintptr, int32, uintptr, uintptr, uintptr) int32
  8356  			})(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)
  8357  			if rc == SQLITE_OK {
  8358  				var pList uintptr = tcl.XTcl_NewObj(tls)
  8359  				tcl.XTcl_ListObjAppendElement(tls, interp, pList, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 556))))
  8360  				tcl.XTcl_ListObjAppendElement(tls, interp, pList, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 560))))
  8361  				tcl.XTcl_ListObjAppendElement(tls, interp, pList, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 564))))
  8362  				tcl.XTcl_SetObjResult(tls, interp, pList)
  8363  			}
  8364  			break
  8365  
  8366  		}
  8367  	case 8:
  8368  		{
  8369  			var iRowid sqlite3_int64 = (*struct {
  8370  				f func(*libc.TLS, uintptr) sqlite3_int64
  8371  			})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer((*F5tApi)(unsafe.Pointer(p)).FpApi)).FxRowid})).f(tls, (*F5tApi)(unsafe.Pointer(p)).FpFts)
  8372  			tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewWideIntObj(tls, iRowid))
  8373  			break
  8374  
  8375  		}
  8376  	case 9:
  8377  		{
  8378  			*(*uintptr)(unsafe.Pointer(bp + 576)) = uintptr(0)
  8379  			*(*int32)(unsafe.Pointer(bp + 584)) = 0
  8380  
  8381  			if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+568) != 0 {
  8382  				return TCL_ERROR
  8383  			}
  8384  			rc = (*struct {
  8385  				f func(*libc.TLS, uintptr, int32, uintptr, uintptr) int32
  8386  			})(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)
  8387  			if rc == SQLITE_OK {
  8388  				tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, *(*uintptr)(unsafe.Pointer(bp + 576)), *(*int32)(unsafe.Pointer(bp + 584))))
  8389  			}
  8390  			break
  8391  
  8392  		}
  8393  	case 10:
  8394  		{
  8395  			*(*int32)(unsafe.Pointer(bp + 592)) = 0
  8396  
  8397  			if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+588) != 0 {
  8398  				return TCL_ERROR
  8399  			}
  8400  			rc = (*struct {
  8401  				f func(*libc.TLS, uintptr, int32, uintptr) int32
  8402  			})(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)
  8403  			if rc == SQLITE_OK {
  8404  				tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 592))))
  8405  			}
  8406  			break
  8407  
  8408  		}
  8409  	case 11:
  8410  		{
  8411  			if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+596) != 0 {
  8412  				return TCL_ERROR
  8413  			}
  8414  			(*F5tFunction)(unsafe.Pointer(bp + 600)).Finterp = interp
  8415  			(*F5tFunction)(unsafe.Pointer(bp + 600)).FpScript = *(*uintptr)(unsafe.Pointer(objv + 3*8))
  8416  			rc = (*struct {
  8417  				f func(*libc.TLS, uintptr, int32, uintptr, uintptr) int32
  8418  			})(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 {
  8419  				f func(*libc.TLS, uintptr, uintptr, uintptr) int32
  8420  			}{xQueryPhraseCb})))
  8421  			if rc == SQLITE_OK {
  8422  				tcl.XTcl_ResetResult(tls, interp)
  8423  			}
  8424  			break
  8425  
  8426  		}
  8427  	case 12:
  8428  		{
  8429  			var pData uintptr = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(F5tAuxData{})))
  8430  			if pData == uintptr(0) {
  8431  				tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+2069, 0))
  8432  				return TCL_ERROR
  8433  			}
  8434  			(*F5tAuxData)(unsafe.Pointer(pData)).FpObj = *(*uintptr)(unsafe.Pointer(objv + 2*8))
  8435  			(*Tcl_Obj)(unsafe.Pointer((*F5tAuxData)(unsafe.Pointer(pData)).FpObj)).FrefCount++
  8436  			rc = (*struct {
  8437  				f func(*libc.TLS, uintptr, uintptr, uintptr) int32
  8438  			})(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})))
  8439  			break
  8440  
  8441  		}
  8442  	case 13:
  8443  		{
  8444  			var pData uintptr
  8445  
  8446  			if tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+616) != 0 {
  8447  				return TCL_ERROR
  8448  			}
  8449  			pData = (*struct {
  8450  				f func(*libc.TLS, uintptr, int32) uintptr
  8451  			})(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)))
  8452  			if pData == uintptr(0) {
  8453  				tcl.XTcl_ResetResult(tls, interp)
  8454  			} else {
  8455  				tcl.XTcl_SetObjResult(tls, interp, (*F5tAuxData)(unsafe.Pointer(pData)).FpObj)
  8456  				if *(*int32)(unsafe.Pointer(bp + 616)) != 0 {
  8457  					xSetAuxdataDestructor(tls, pData)
  8458  				}
  8459  			}
  8460  			break
  8461  
  8462  		}
  8463  
  8464  	case 14:
  8465  		{
  8466  			if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+620) != 0 {
  8467  				return TCL_ERROR
  8468  			}
  8469  			rc = (*struct {
  8470  				f func(*libc.TLS, uintptr, uintptr, uintptr) int32
  8471  			})(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))
  8472  			break
  8473  
  8474  		}
  8475  	case 15:
  8476  		{
  8477  			var iVal int32
  8478  
  8479  			if tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+624) != 0 {
  8480  				return TCL_ERROR
  8481  			}
  8482  			iVal = int32((int64((*struct {
  8483  				f func(*libc.TLS, uintptr, int32) uintptr
  8484  			})(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)
  8485  			tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, iVal))
  8486  			break
  8487  
  8488  		}
  8489  
  8490  	case 16:
  8491  		{
  8492  			var zColvar uintptr
  8493  			var zOffvar uintptr
  8494  			var pScript uintptr = *(*uintptr)(unsafe.Pointer(objv + 5*8))
  8495  
  8496  			if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+628) != 0 {
  8497  				return TCL_ERROR
  8498  			}
  8499  			zColvar = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)))
  8500  			zOffvar = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 4*8)))
  8501  
  8502  			rc = (*struct {
  8503  				f func(*libc.TLS, uintptr, int32, uintptr, uintptr, uintptr) int32
  8504  			})(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)
  8505  			if rc != SQLITE_OK {
  8506  				tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+16, sqlite3.Xsqlite3ErrName(tls, rc), 0))
  8507  				return TCL_ERROR
  8508  			}
  8509  			for ; *(*int32)(unsafe.Pointer(bp + 648)) >= 0; (*struct {
  8510  				f func(*libc.TLS, uintptr, uintptr, uintptr, uintptr)
  8511  			})(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) {
  8512  				tcl.XTcl_SetVar2Ex(tls, interp, zColvar, uintptr(0), tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 648))), 0)
  8513  				tcl.XTcl_SetVar2Ex(tls, interp, zOffvar, uintptr(0), tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 652))), 0)
  8514  				rc = tcl.XTcl_EvalObjEx(tls, interp, pScript, 0)
  8515  				if rc == TCL_CONTINUE {
  8516  					rc = TCL_OK
  8517  				}
  8518  				if rc != TCL_OK {
  8519  					if rc == TCL_BREAK {
  8520  						rc = TCL_OK
  8521  					}
  8522  					break
  8523  				}
  8524  			}
  8525  
  8526  			break
  8527  
  8528  		}
  8529  
  8530  	case 17:
  8531  		{
  8532  			var zColvar uintptr
  8533  			var pScript uintptr = *(*uintptr)(unsafe.Pointer(objv + 4*8))
  8534  
  8535  			if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+656) != 0 {
  8536  				return TCL_ERROR
  8537  			}
  8538  			zColvar = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)))
  8539  
  8540  			rc = (*struct {
  8541  				f func(*libc.TLS, uintptr, int32, uintptr, uintptr) int32
  8542  			})(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)
  8543  			if rc != SQLITE_OK {
  8544  				tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(1))
  8545  				return TCL_ERROR
  8546  			}
  8547  			for ; *(*int32)(unsafe.Pointer(bp + 680)) >= 0; (*struct {
  8548  				f func(*libc.TLS, uintptr, uintptr, uintptr)
  8549  			})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer((*F5tApi)(unsafe.Pointer(p)).FpApi)).FxPhraseNextColumn})).f(tls, (*F5tApi)(unsafe.Pointer(p)).FpFts, bp+664, bp+680) {
  8550  				tcl.XTcl_SetVar2Ex(tls, interp, zColvar, uintptr(0), tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 680))), 0)
  8551  				rc = tcl.XTcl_EvalObjEx(tls, interp, pScript, 0)
  8552  				if rc == TCL_CONTINUE {
  8553  					rc = TCL_OK
  8554  				}
  8555  				if rc != TCL_OK {
  8556  					if rc == TCL_BREAK {
  8557  						rc = TCL_OK
  8558  					}
  8559  					break
  8560  				}
  8561  			}
  8562  
  8563  			break
  8564  
  8565  		}
  8566  
  8567  	default:
  8568  		break
  8569  	}
  8570  
  8571  	if rc != SQLITE_OK {
  8572  		tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(1))
  8573  		return TCL_ERROR
  8574  	}
  8575  
  8576  	return TCL_OK
  8577  }
  8578  
  8579  type Sub = struct {
  8580  	FzName       uintptr
  8581  	FnArg        int32
  8582  	F__ccgo_pad1 [4]byte
  8583  	FzMsg        uintptr
  8584  }
  8585  
  8586  func xF5tFunction(tls *libc.TLS, pApi uintptr, pFts uintptr, pCtx uintptr, nVal int32, apVal uintptr) {
  8587  	bp := tls.Alloc(112)
  8588  	defer tls.Free(112)
  8589  
  8590  	var p uintptr = (*struct {
  8591  		f func(*libc.TLS, uintptr) uintptr
  8592  	})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer(pApi)).FxUserData})).f(tls, pFts)
  8593  	var pEval uintptr
  8594  	var i int32
  8595  	var rc int32
  8596  
  8597  	(*F5tApi)(unsafe.Pointer(bp + 72)).FpApi = pApi
  8598  	(*F5tApi)(unsafe.Pointer(bp + 72)).FpFts = pFts
  8599  
  8600  	libc.Xsprintf(tls, bp+8, ts+2535, libc.VaList(bp, libc.PostIncInt64(&iCmd2, 1)))
  8601  	tcl.XTcl_CreateObjCommand(tls, (*F5tFunction)(unsafe.Pointer(p)).Finterp, bp+8, *(*uintptr)(unsafe.Pointer(&struct {
  8602  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
  8603  	}{xF5tApi})), bp+72, uintptr(0))
  8604  	pEval = tcl.XTcl_DuplicateObj(tls, (*F5tFunction)(unsafe.Pointer(p)).FpScript)
  8605  	(*Tcl_Obj)(unsafe.Pointer(pEval)).FrefCount++
  8606  	tcl.XTcl_ListObjAppendElement(tls, (*F5tFunction)(unsafe.Pointer(p)).Finterp, pEval, tcl.XTcl_NewStringObj(tls, bp+8, -1))
  8607  
  8608  	for i = 0; i < nVal; i++ {
  8609  		var pObj uintptr = uintptr(0)
  8610  		switch sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(apVal + uintptr(i)*8))) {
  8611  		case SQLITE_TEXT:
  8612  			pObj = tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(apVal + uintptr(i)*8))), -1)
  8613  			break
  8614  		case SQLITE_BLOB:
  8615  			pObj = tcl.XTcl_NewByteArrayObj(tls,
  8616  				sqlite3.Xsqlite3_value_blob(tls, *(*uintptr)(unsafe.Pointer(apVal + uintptr(i)*8))), sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(apVal + uintptr(i)*8))))
  8617  			break
  8618  		case SQLITE_INTEGER:
  8619  			pObj = tcl.XTcl_NewWideIntObj(tls, sqlite3.Xsqlite3_value_int64(tls, *(*uintptr)(unsafe.Pointer(apVal + uintptr(i)*8))))
  8620  			break
  8621  		case SQLITE_FLOAT:
  8622  			pObj = tcl.XTcl_NewDoubleObj(tls, sqlite3.Xsqlite3_value_double(tls, *(*uintptr)(unsafe.Pointer(apVal + uintptr(i)*8))))
  8623  			break
  8624  		default:
  8625  			pObj = tcl.XTcl_NewObj(tls)
  8626  			break
  8627  		}
  8628  		tcl.XTcl_ListObjAppendElement(tls, (*F5tFunction)(unsafe.Pointer(p)).Finterp, pEval, pObj)
  8629  	}
  8630  
  8631  	rc = tcl.XTcl_EvalObjEx(tls, (*F5tFunction)(unsafe.Pointer(p)).Finterp, pEval, TCL_GLOBAL_ONLY)
  8632  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
  8633  		var _objPtr uintptr = pEval
  8634  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
  8635  			tcl.XTclFreeObj(tls, _objPtr)
  8636  		}
  8637  	}
  8638  	tcl.XTcl_DeleteCommand(tls, (*F5tFunction)(unsafe.Pointer(p)).Finterp, bp+8)
  8639  
  8640  	if rc != TCL_OK {
  8641  		sqlite3.Xsqlite3_result_error(tls, pCtx, tcl.XTcl_GetStringResult(tls, (*F5tFunction)(unsafe.Pointer(p)).Finterp), -1)
  8642  	} else {
  8643  		var pVar uintptr = tcl.XTcl_GetObjResult(tls, (*F5tFunction)(unsafe.Pointer(p)).Finterp)
  8644  
  8645  		var zType uintptr = func() uintptr {
  8646  			if (*Tcl_Obj)(unsafe.Pointer(pVar)).FtypePtr != 0 {
  8647  				return (*Tcl_ObjType)(unsafe.Pointer((*Tcl_Obj)(unsafe.Pointer(pVar)).FtypePtr)).Fname
  8648  			}
  8649  			return ts + 584
  8650  		}()
  8651  		var c uint8 = *(*uint8)(unsafe.Pointer(zType))
  8652  		if int32(c) == 'b' && libc.Xstrcmp(tls, zType, ts+2544) == 0 && (*Tcl_Obj)(unsafe.Pointer(pVar)).Fbytes == uintptr(0) {
  8653  			var data uintptr = tcl.XTcl_GetByteArrayFromObj(tls, pVar, bp+88)
  8654  			sqlite3.Xsqlite3_result_blob(tls, pCtx, data, *(*int32)(unsafe.Pointer(bp + 88)), libc.UintptrFromInt32(-1))
  8655  		} else if int32(c) == 'b' && libc.Xstrcmp(tls, zType, ts+2554) == 0 {
  8656  			tcl.XTcl_GetIntFromObj(tls, uintptr(0), pVar, bp+88)
  8657  			sqlite3.Xsqlite3_result_int(tls, pCtx, *(*int32)(unsafe.Pointer(bp + 88)))
  8658  		} else if int32(c) == 'd' && libc.Xstrcmp(tls, zType, ts+2562) == 0 {
  8659  			tcl.XTcl_GetDoubleFromObj(tls, uintptr(0), pVar, bp+96)
  8660  			sqlite3.Xsqlite3_result_double(tls, pCtx, *(*float64)(unsafe.Pointer(bp + 96)))
  8661  		} else if int32(c) == 'w' && libc.Xstrcmp(tls, zType, ts+2569) == 0 || int32(c) == 'i' && libc.Xstrcmp(tls, zType, ts+2577) == 0 {
  8662  			tcl.XTcl_GetWideIntFromObj(tls, uintptr(0), pVar, bp+104)
  8663  			sqlite3.Xsqlite3_result_int64(tls, pCtx, *(*Tcl_WideInt)(unsafe.Pointer(bp + 104)))
  8664  		} else {
  8665  			var data uintptr = tcl.XTcl_GetStringFromObj(tls, pVar, bp+88)
  8666  			sqlite3.Xsqlite3_result_text(tls, pCtx, data, *(*int32)(unsafe.Pointer(bp + 88)), libc.UintptrFromInt32(-1))
  8667  		}
  8668  	}
  8669  }
  8670  
  8671  var iCmd2 sqlite3_int64 = int64(0)
  8672  
  8673  func xF5tDestroy(tls *libc.TLS, pCtx uintptr) {
  8674  	var p uintptr = pCtx
  8675  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
  8676  		var _objPtr uintptr = (*F5tFunction)(unsafe.Pointer(p)).FpScript
  8677  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
  8678  			tcl.XTclFreeObj(tls, _objPtr)
  8679  		}
  8680  	}
  8681  	tcl.XTcl_Free(tls, p)
  8682  }
  8683  
  8684  func f5tCreateFunction(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
  8685  	bp := tls.Alloc(40)
  8686  	defer tls.Free(40)
  8687  
  8688  	var zName uintptr
  8689  	var pScript uintptr
  8690  	*(*uintptr)(unsafe.Pointer(bp + 24)) = uintptr(0)
  8691  	*(*uintptr)(unsafe.Pointer(bp + 32)) = uintptr(0)
  8692  	var pCtx uintptr = uintptr(0)
  8693  	var rc int32
  8694  
  8695  	if objc != 4 {
  8696  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2581)
  8697  		return TCL_ERROR
  8698  	}
  8699  	if f5tDbAndApi(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp+24, bp+32) != 0 {
  8700  		return TCL_ERROR
  8701  	}
  8702  
  8703  	zName = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
  8704  	pScript = *(*uintptr)(unsafe.Pointer(objv + 3*8))
  8705  	pCtx = tcl.XTcl_Alloc(tls, uint32(unsafe.Sizeof(F5tFunction{})))
  8706  	(*F5tFunction)(unsafe.Pointer(pCtx)).Finterp = interp
  8707  	(*F5tFunction)(unsafe.Pointer(pCtx)).FpScript = pScript
  8708  	(*Tcl_Obj)(unsafe.Pointer(pScript)).FrefCount++
  8709  
  8710  	rc = (*struct {
  8711  		f func(*libc.TLS, uintptr, uintptr, uintptr, fts5_extension_function, uintptr) int32
  8712  	})(unsafe.Pointer(&struct{ uintptr }{(*fts5_api)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 32)))).FxCreateFunction})).f(tls,
  8713  		*(*uintptr)(unsafe.Pointer(bp + 32)), zName, pCtx, *(*uintptr)(unsafe.Pointer(&struct {
  8714  			f func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr)
  8715  		}{xF5tFunction})), *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{xF5tDestroy})))
  8716  	if rc != SQLITE_OK {
  8717  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+2153, sqlite3.Xsqlite3_errmsg(tls, *(*uintptr)(unsafe.Pointer(bp + 24))), 0))
  8718  		return TCL_ERROR
  8719  	}
  8720  
  8721  	return TCL_OK
  8722  }
  8723  
  8724  type F5tTokenizeCtx1 = struct {
  8725  	FpRet        uintptr
  8726  	FbSubst      int32
  8727  	F__ccgo_pad1 [4]byte
  8728  	FzInput      uintptr
  8729  }
  8730  
  8731  type F5tTokenizeCtx = F5tTokenizeCtx1
  8732  
  8733  func xTokenizeCb2(tls *libc.TLS, pCtx uintptr, tflags int32, zToken uintptr, nToken int32, iStart int32, iEnd int32) int32 {
  8734  	var p uintptr = pCtx
  8735  	if (*F5tTokenizeCtx)(unsafe.Pointer(p)).FbSubst != 0 {
  8736  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), (*F5tTokenizeCtx)(unsafe.Pointer(p)).FpRet, tcl.XTcl_NewStringObj(tls, zToken, nToken))
  8737  		tcl.XTcl_ListObjAppendElement(tls,
  8738  			uintptr(0), (*F5tTokenizeCtx)(unsafe.Pointer(p)).FpRet, tcl.XTcl_NewStringObj(tls, (*F5tTokenizeCtx)(unsafe.Pointer(p)).FzInput+uintptr(iStart), iEnd-iStart))
  8739  	} else {
  8740  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), (*F5tTokenizeCtx)(unsafe.Pointer(p)).FpRet, tcl.XTcl_NewStringObj(tls, zToken, nToken))
  8741  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), (*F5tTokenizeCtx)(unsafe.Pointer(p)).FpRet, tcl.XTcl_NewIntObj(tls, iStart))
  8742  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), (*F5tTokenizeCtx)(unsafe.Pointer(p)).FpRet, tcl.XTcl_NewIntObj(tls, iEnd))
  8743  	}
  8744  	return SQLITE_OK
  8745  }
  8746  
  8747  func f5tTokenize(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
  8748  	bp := tls.Alloc(200)
  8749  	defer tls.Free(200)
  8750  
  8751  	var zText uintptr
  8752  
  8753  	*(*uintptr)(unsafe.Pointer(bp + 96)) = uintptr(0)
  8754  	*(*uintptr)(unsafe.Pointer(bp + 104)) = uintptr(0)
  8755  	*(*uintptr)(unsafe.Pointer(bp + 168)) = uintptr(0)
  8756  
  8757  	var pRet uintptr = uintptr(0)
  8758  
  8759  	var rc int32
  8760  
  8761  	if objc != 4 && objc != 5 {
  8762  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2596)
  8763  		return TCL_ERROR
  8764  	}
  8765  	if objc == 5 {
  8766  		var zOpt uintptr = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
  8767  		if libc.Xstrcmp(tls, ts+2618, zOpt) != 0 {
  8768  			tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+2625, zOpt, 0))
  8769  			return TCL_ERROR
  8770  		}
  8771  	}
  8772  	if f5tDbAndApi(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(objc-3)*8)), bp+96, bp+104) != 0 {
  8773  		return TCL_ERROR
  8774  	}
  8775  	if tcl.XTcl_SplitList(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(objc-2)*8))), bp+112, bp+120) != 0 {
  8776  		return TCL_ERROR
  8777  	}
  8778  	if *(*int32)(unsafe.Pointer(bp + 112)) == 0 {
  8779  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+24, ts+2647, 0))
  8780  		tcl.XTcl_Free(tls, *(*uintptr)(unsafe.Pointer(bp + 120)))
  8781  		return TCL_ERROR
  8782  	}
  8783  	zText = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(objc-1)*8)), bp+128)
  8784  
  8785  	rc = (*struct {
  8786  		f func(*libc.TLS, uintptr, uintptr, uintptr, uintptr) int32
  8787  	})(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)
  8788  	if rc != SQLITE_OK {
  8789  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+40, ts+2647, *(*uintptr)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 120)))), 0))
  8790  		return TCL_ERROR
  8791  	}
  8792  
  8793  	rc = (*struct {
  8794  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
  8795  	})(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)
  8796  	if rc != SQLITE_OK {
  8797  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+64, ts+2667, 0))
  8798  		return TCL_ERROR
  8799  	}
  8800  
  8801  	pRet = tcl.XTcl_NewObj(tls)
  8802  	(*Tcl_Obj)(unsafe.Pointer(pRet)).FrefCount++
  8803  	(*F5tTokenizeCtx)(unsafe.Pointer(bp + 176)).FbSubst = libc.Bool32(objc == 5)
  8804  	(*F5tTokenizeCtx)(unsafe.Pointer(bp + 176)).FpRet = pRet
  8805  	(*F5tTokenizeCtx)(unsafe.Pointer(bp + 176)).FzInput = zText
  8806  	rc = (*struct {
  8807  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr, int32, uintptr) int32
  8808  	})(unsafe.Pointer(&struct{ uintptr }{(*fts5_tokenizer)(unsafe.Pointer(bp + 144)).FxTokenize})).f(tls,
  8809  		*(*uintptr)(unsafe.Pointer(bp + 168)), bp+176, FTS5_TOKENIZE_DOCUMENT, zText, *(*int32)(unsafe.Pointer(bp + 128)), *(*uintptr)(unsafe.Pointer(&struct {
  8810  			f func(*libc.TLS, uintptr, int32, uintptr, int32, int32, int32) int32
  8811  		}{xTokenizeCb2})))
  8812  	(*struct{ f func(*libc.TLS, uintptr) })(unsafe.Pointer(&struct{ uintptr }{(*fts5_tokenizer)(unsafe.Pointer(bp + 144)).FxDelete})).f(tls, *(*uintptr)(unsafe.Pointer(bp + 168)))
  8813  	if rc != SQLITE_OK {
  8814  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+80, ts+2696, 0))
  8815  		for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
  8816  			var _objPtr uintptr = pRet
  8817  			if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
  8818  				tcl.XTclFreeObj(tls, _objPtr)
  8819  			}
  8820  		}
  8821  		return TCL_ERROR
  8822  	}
  8823  
  8824  	tcl.XTcl_Free(tls, *(*uintptr)(unsafe.Pointer(bp + 120)))
  8825  	tcl.XTcl_SetObjResult(tls, interp, pRet)
  8826  	for __ccgo1 := true; __ccgo1; __ccgo1 = 0 != 0 {
  8827  		var _objPtr uintptr = pRet
  8828  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
  8829  			tcl.XTclFreeObj(tls, _objPtr)
  8830  		}
  8831  	}
  8832  	return TCL_OK
  8833  }
  8834  
  8835  type F5tTokenizerContext1 = struct {
  8836  	FpCtx   uintptr
  8837  	FxToken uintptr
  8838  }
  8839  
  8840  type F5tTokenizerContext = F5tTokenizerContext1
  8841  type F5tTokenizerModule1 = struct {
  8842  	Finterp   uintptr
  8843  	FpScript  uintptr
  8844  	FpContext uintptr
  8845  }
  8846  
  8847  type F5tTokenizerModule = F5tTokenizerModule1
  8848  type F5tTokenizerInstance1 = struct {
  8849  	Finterp   uintptr
  8850  	FpScript  uintptr
  8851  	FpContext uintptr
  8852  }
  8853  
  8854  type F5tTokenizerInstance = F5tTokenizerInstance1
  8855  
  8856  func f5tTokenizerCreate(tls *libc.TLS, pCtx uintptr, azArg uintptr, nArg int32, ppOut uintptr) int32 {
  8857  	var pMod uintptr = pCtx
  8858  	var pEval uintptr
  8859  	var rc int32 = TCL_OK
  8860  	var i int32
  8861  
  8862  	pEval = tcl.XTcl_DuplicateObj(tls, (*F5tTokenizerModule)(unsafe.Pointer(pMod)).FpScript)
  8863  	(*Tcl_Obj)(unsafe.Pointer(pEval)).FrefCount++
  8864  	for i = 0; rc == TCL_OK && i < nArg; i++ {
  8865  		var pObj uintptr = tcl.XTcl_NewStringObj(tls, *(*uintptr)(unsafe.Pointer(azArg + uintptr(i)*8)), -1)
  8866  		rc = tcl.XTcl_ListObjAppendElement(tls, (*F5tTokenizerModule)(unsafe.Pointer(pMod)).Finterp, pEval, pObj)
  8867  	}
  8868  
  8869  	if rc == TCL_OK {
  8870  		rc = tcl.XTcl_EvalObjEx(tls, (*F5tTokenizerModule)(unsafe.Pointer(pMod)).Finterp, pEval, TCL_GLOBAL_ONLY)
  8871  	}
  8872  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
  8873  		var _objPtr uintptr = pEval
  8874  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
  8875  			tcl.XTclFreeObj(tls, _objPtr)
  8876  		}
  8877  	}
  8878  
  8879  	if rc == TCL_OK {
  8880  		var pInst uintptr
  8881  		pInst = tcl.XTcl_Alloc(tls, uint32(unsafe.Sizeof(F5tTokenizerInstance{})))
  8882  		libc.Xmemset(tls, pInst, 0, uint64(unsafe.Sizeof(F5tTokenizerInstance{})))
  8883  		(*F5tTokenizerInstance)(unsafe.Pointer(pInst)).Finterp = (*F5tTokenizerModule)(unsafe.Pointer(pMod)).Finterp
  8884  		(*F5tTokenizerInstance)(unsafe.Pointer(pInst)).FpScript = tcl.XTcl_GetObjResult(tls, (*F5tTokenizerModule)(unsafe.Pointer(pMod)).Finterp)
  8885  		(*F5tTokenizerInstance)(unsafe.Pointer(pInst)).FpContext = (*F5tTokenizerModule)(unsafe.Pointer(pMod)).FpContext
  8886  		(*Tcl_Obj)(unsafe.Pointer((*F5tTokenizerInstance)(unsafe.Pointer(pInst)).FpScript)).FrefCount++
  8887  		*(*uintptr)(unsafe.Pointer(ppOut)) = pInst
  8888  	}
  8889  
  8890  	return rc
  8891  }
  8892  
  8893  func f5tTokenizerDelete(tls *libc.TLS, p uintptr) {
  8894  	var pInst uintptr = p
  8895  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
  8896  		var _objPtr uintptr = (*F5tTokenizerInstance)(unsafe.Pointer(pInst)).FpScript
  8897  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
  8898  			tcl.XTclFreeObj(tls, _objPtr)
  8899  		}
  8900  	}
  8901  	tcl.XTcl_Free(tls, pInst)
  8902  }
  8903  
  8904  func f5tTokenizerTokenize(tls *libc.TLS, p uintptr, pCtx uintptr, flags int32, pText uintptr, nText int32, xToken uintptr) int32 {
  8905  	var pInst uintptr = p
  8906  	var pOldCtx uintptr
  8907  	var xOldToken uintptr
  8908  	var pEval uintptr
  8909  	var rc int32
  8910  	var zFlags uintptr
  8911  
  8912  	pOldCtx = (*F5tTokenizerContext)(unsafe.Pointer((*F5tTokenizerInstance)(unsafe.Pointer(pInst)).FpContext)).FpCtx
  8913  	xOldToken = (*F5tTokenizerContext)(unsafe.Pointer((*F5tTokenizerInstance)(unsafe.Pointer(pInst)).FpContext)).FxToken
  8914  
  8915  	(*F5tTokenizerContext)(unsafe.Pointer((*F5tTokenizerInstance)(unsafe.Pointer(pInst)).FpContext)).FpCtx = pCtx
  8916  	(*F5tTokenizerContext)(unsafe.Pointer((*F5tTokenizerInstance)(unsafe.Pointer(pInst)).FpContext)).FxToken = xToken
  8917  
  8918  	pEval = tcl.XTcl_DuplicateObj(tls, (*F5tTokenizerInstance)(unsafe.Pointer(pInst)).FpScript)
  8919  	(*Tcl_Obj)(unsafe.Pointer(pEval)).FrefCount++
  8920  	switch flags {
  8921  	case FTS5_TOKENIZE_DOCUMENT:
  8922  		zFlags = ts + 2727
  8923  		break
  8924  	case FTS5_TOKENIZE_AUX:
  8925  		zFlags = ts + 2736
  8926  		break
  8927  	case FTS5_TOKENIZE_QUERY:
  8928  		zFlags = ts + 2740
  8929  		break
  8930  	case FTS5_TOKENIZE_PREFIX | FTS5_TOKENIZE_QUERY:
  8931  		zFlags = ts + 2746
  8932  		break
  8933  	default:
  8934  		zFlags = ts + 2758
  8935  		break
  8936  	}
  8937  
  8938  	tcl.XTcl_ListObjAppendElement(tls, (*F5tTokenizerInstance)(unsafe.Pointer(pInst)).Finterp, pEval, tcl.XTcl_NewStringObj(tls, zFlags, -1))
  8939  	tcl.XTcl_ListObjAppendElement(tls, (*F5tTokenizerInstance)(unsafe.Pointer(pInst)).Finterp, pEval, tcl.XTcl_NewStringObj(tls, pText, nText))
  8940  	rc = tcl.XTcl_EvalObjEx(tls, (*F5tTokenizerInstance)(unsafe.Pointer(pInst)).Finterp, pEval, TCL_GLOBAL_ONLY)
  8941  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
  8942  		var _objPtr uintptr = pEval
  8943  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
  8944  			tcl.XTclFreeObj(tls, _objPtr)
  8945  		}
  8946  	}
  8947  
  8948  	(*F5tTokenizerContext)(unsafe.Pointer((*F5tTokenizerInstance)(unsafe.Pointer(pInst)).FpContext)).FpCtx = pOldCtx
  8949  	(*F5tTokenizerContext)(unsafe.Pointer((*F5tTokenizerInstance)(unsafe.Pointer(pInst)).FpContext)).FxToken = xOldToken
  8950  	return rc
  8951  }
  8952  
  8953  func f5tTokenizerReturn(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
  8954  	bp := tls.Alloc(32)
  8955  	defer tls.Free(32)
  8956  
  8957  	var p uintptr
  8958  
  8959  	var tflags int32
  8960  	var zToken uintptr
  8961  	var rc int32
  8962  
  8963  	var zArg uintptr
  8964  	p = clientData
  8965  	tflags = 0
  8966  
  8967  	if !(objc == 5) {
  8968  		goto __1
  8969  	}
  8970  	zArg = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp+16)
  8971  	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) {
  8972  		goto __3
  8973  	}
  8974  	tflags = tflags | FTS5_TOKEN_COLOCATED
  8975  	goto __4
  8976  __3:
  8977  	goto usage
  8978  __4:
  8979  	;
  8980  	goto __2
  8981  __1:
  8982  	if !(objc != 4) {
  8983  		goto __5
  8984  	}
  8985  	goto usage
  8986  __5:
  8987  	;
  8988  __2:
  8989  	;
  8990  	zToken = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(objc-3)*8)), bp+20)
  8991  	if !(tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(objc-2)*8)), bp+24) != 0 ||
  8992  		tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(objc-1)*8)), bp+28) != 0) {
  8993  		goto __6
  8994  	}
  8995  	return TCL_ERROR
  8996  __6:
  8997  	;
  8998  	if !((*F5tTokenizerContext)(unsafe.Pointer(p)).FxToken == uintptr(0)) {
  8999  		goto __7
  9000  	}
  9001  	tcl.XTcl_AppendResult(tls, interp,
  9002  		libc.VaList(bp, ts+2777, 0))
  9003  	return TCL_ERROR
  9004  __7:
  9005  	;
  9006  	rc = (*struct {
  9007  		f func(*libc.TLS, uintptr, int32, uintptr, int32, int32, int32) int32
  9008  	})(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)))
  9009  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(1))
  9010  	if rc == SQLITE_OK {
  9011  		return TCL_OK
  9012  	}
  9013  	return TCL_ERROR
  9014  
  9015  usage:
  9016  	tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2835)
  9017  	return TCL_ERROR
  9018  }
  9019  
  9020  func f5tDelTokenizer(tls *libc.TLS, pCtx uintptr) {
  9021  	var pMod uintptr = pCtx
  9022  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
  9023  		var _objPtr uintptr = (*F5tTokenizerModule)(unsafe.Pointer(pMod)).FpScript
  9024  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
  9025  			tcl.XTclFreeObj(tls, _objPtr)
  9026  		}
  9027  	}
  9028  	tcl.XTcl_Free(tls, pMod)
  9029  }
  9030  
  9031  func f5tCreateTokenizer(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
  9032  	bp := tls.Alloc(56)
  9033  	defer tls.Free(56)
  9034  
  9035  	var pContext uintptr = clientData
  9036  
  9037  	var zName uintptr
  9038  	var pScript uintptr
  9039  
  9040  	var pMod uintptr
  9041  	var rc int32
  9042  
  9043  	if objc != 4 {
  9044  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2581)
  9045  		return TCL_ERROR
  9046  	}
  9047  	if f5tDbAndApi(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp+16, bp+24) != 0 {
  9048  		return TCL_ERROR
  9049  	}
  9050  	zName = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
  9051  	pScript = *(*uintptr)(unsafe.Pointer(objv + 3*8))
  9052  
  9053  	(*fts5_tokenizer)(unsafe.Pointer(bp + 32)).FxCreate = *(*uintptr)(unsafe.Pointer(&struct {
  9054  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
  9055  	}{f5tTokenizerCreate}))
  9056  	(*fts5_tokenizer)(unsafe.Pointer(bp + 32)).FxTokenize = *(*uintptr)(unsafe.Pointer(&struct {
  9057  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr, int32, uintptr) int32
  9058  	}{f5tTokenizerTokenize}))
  9059  	(*fts5_tokenizer)(unsafe.Pointer(bp + 32)).FxDelete = *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{f5tTokenizerDelete}))
  9060  
  9061  	pMod = tcl.XTcl_Alloc(tls, uint32(unsafe.Sizeof(F5tTokenizerModule{})))
  9062  	(*F5tTokenizerModule)(unsafe.Pointer(pMod)).Finterp = interp
  9063  	(*F5tTokenizerModule)(unsafe.Pointer(pMod)).FpScript = pScript
  9064  	(*F5tTokenizerModule)(unsafe.Pointer(pMod)).FpContext = pContext
  9065  	(*Tcl_Obj)(unsafe.Pointer(pScript)).FrefCount++
  9066  	rc = (*struct {
  9067  		f func(*libc.TLS, uintptr, uintptr, uintptr, uintptr, uintptr) int32
  9068  	})(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})))
  9069  	if rc != SQLITE_OK {
  9070  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+2863, 0))
  9071  		return TCL_ERROR
  9072  	}
  9073  
  9074  	return TCL_OK
  9075  }
  9076  
  9077  func xF5tFree(tls *libc.TLS, clientData ClientData) {
  9078  	tcl.XTcl_Free(tls, clientData)
  9079  }
  9080  
  9081  func f5tMayBeCorrupt(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
  9082  	return TCL_OK
  9083  }
  9084  
  9085  func f5t_fts5HashKey(tls *libc.TLS, nSlot int32, p uintptr, n int32) uint32 {
  9086  	var i int32
  9087  	var h uint32 = uint32(13)
  9088  	for i = n - 1; i >= 0; i-- {
  9089  		h = h<<3 ^ h ^ uint32(*(*uint8)(unsafe.Pointer(p + uintptr(i))))
  9090  	}
  9091  	return h % uint32(nSlot)
  9092  }
  9093  
  9094  func f5tTokenHash(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
  9095  	bp := tls.Alloc(8)
  9096  	defer tls.Free(8)
  9097  
  9098  	var z uintptr
  9099  
  9100  	var iVal uint32
  9101  
  9102  	if objc != 3 {
  9103  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2900)
  9104  		return TCL_ERROR
  9105  	}
  9106  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp) != 0 {
  9107  		return TCL_ERROR
  9108  	}
  9109  	z = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+4)
  9110  
  9111  	iVal = f5t_fts5HashKey(tls, *(*int32)(unsafe.Pointer(bp)), z, *(*int32)(unsafe.Pointer(bp + 4)))
  9112  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, int32(iVal)))
  9113  	return TCL_OK
  9114  }
  9115  
  9116  func f5tRegisterMatchinfo(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
  9117  	bp := tls.Alloc(8)
  9118  	defer tls.Free(8)
  9119  
  9120  	var rc int32
  9121  	*(*uintptr)(unsafe.Pointer(bp)) = uintptr(0)
  9122  
  9123  	if objc != 2 {
  9124  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2050)
  9125  		return TCL_ERROR
  9126  	}
  9127  	if f5tDbPointer(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp) != 0 {
  9128  		return TCL_ERROR
  9129  	}
  9130  
  9131  	rc = sqlite3Fts5TestRegisterMatchinfo(tls, *(*uintptr)(unsafe.Pointer(bp)))
  9132  	if rc != SQLITE_OK {
  9133  		tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(1))
  9134  		return TCL_ERROR
  9135  	}
  9136  	return TCL_OK
  9137  }
  9138  
  9139  func f5tRegisterTok(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
  9140  	bp := tls.Alloc(16)
  9141  	defer tls.Free(16)
  9142  
  9143  	var rc int32
  9144  	*(*uintptr)(unsafe.Pointer(bp)) = uintptr(0)
  9145  	*(*uintptr)(unsafe.Pointer(bp + 8)) = uintptr(0)
  9146  
  9147  	if objc != 2 {
  9148  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2050)
  9149  		return TCL_ERROR
  9150  	}
  9151  	if f5tDbAndApi(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp, bp+8) != 0 {
  9152  		return TCL_ERROR
  9153  	}
  9154  
  9155  	rc = sqlite3Fts5TestRegisterTok(tls, *(*uintptr)(unsafe.Pointer(bp)), *(*uintptr)(unsafe.Pointer(bp + 8)))
  9156  	if rc != SQLITE_OK {
  9157  		tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(1))
  9158  		return TCL_ERROR
  9159  	}
  9160  	return TCL_OK
  9161  }
  9162  
  9163  func Fts5tcl_Init(tls *libc.TLS, interp uintptr) int32 {
  9164  	var i int32
  9165  	var pContext uintptr
  9166  
  9167  	pContext = tcl.XTcl_Alloc(tls, uint32(unsafe.Sizeof(F5tTokenizerContext{})))
  9168  	libc.Xmemset(tls, pContext, 0, uint64(unsafe.Sizeof(F5tTokenizerContext{})))
  9169  
  9170  	for i = 0; uint64(i) < uint64(unsafe.Sizeof(aCmd))/uint64(unsafe.Sizeof(struct {
  9171  		FzName        uintptr
  9172  		FxProc        uintptr
  9173  		FbTokenizeCtx int32
  9174  		F__ccgo_pad1  [4]byte
  9175  	}{})); i++ {
  9176  		var p uintptr = uintptr(unsafe.Pointer(&aCmd)) + uintptr(i)*24
  9177  		var pCtx uintptr = uintptr(0)
  9178  		if (*struct {
  9179  			FzName        uintptr
  9180  			FxProc        uintptr
  9181  			FbTokenizeCtx int32
  9182  			F__ccgo_pad1  [4]byte
  9183  		})(unsafe.Pointer(p)).FbTokenizeCtx != 0 {
  9184  			pCtx = pContext
  9185  		}
  9186  		tcl.XTcl_CreateObjCommand(tls, interp, (*struct {
  9187  			FzName        uintptr
  9188  			FxProc        uintptr
  9189  			FbTokenizeCtx int32
  9190  			F__ccgo_pad1  [4]byte
  9191  		})(unsafe.Pointer(p)).FzName, (*struct {
  9192  			FzName        uintptr
  9193  			FxProc        uintptr
  9194  			FbTokenizeCtx int32
  9195  			F__ccgo_pad1  [4]byte
  9196  		})(unsafe.Pointer(p)).FxProc, pCtx, func() uintptr {
  9197  			if i != 0 {
  9198  				return uintptr(0)
  9199  			}
  9200  			return *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, ClientData) }{xF5tFree}))
  9201  		}())
  9202  	}
  9203  
  9204  	return TCL_OK
  9205  }
  9206  
  9207  var aCmd = [8]struct {
  9208  	FzName        uintptr
  9209  	FxProc        uintptr
  9210  	FbTokenizeCtx int32
  9211  	F__ccgo_pad1  [4]byte
  9212  }{
  9213  	{FzName: ts + 2912, FxProc: 0, FbTokenizeCtx: 1},
  9214  	{FzName: ts + 2942, FxProc: 0, FbTokenizeCtx: 1},
  9215  	{FzName: ts + 2961, FxProc: 0},
  9216  	{FzName: ts + 2983, FxProc: 0},
  9217  	{FzName: ts + 3012, FxProc: 0},
  9218  	{FzName: ts + 3040, FxProc: 0},
  9219  	{FzName: ts + 3064, FxProc: 0},
  9220  	{FzName: ts + 3096, FxProc: 0},
  9221  }
  9222  
  9223  type Fts5MatchinfoCtx1 = struct {
  9224  	FnCol        int32
  9225  	FnPhrase     int32
  9226  	FzArg        uintptr
  9227  	FnRet        int32
  9228  	F__ccgo_pad1 [4]byte
  9229  	FaRet        uintptr
  9230  }
  9231  
  9232  type Fts5MatchinfoCtx = Fts5MatchinfoCtx1
  9233  
  9234  type u32 = uint32
  9235  
  9236  func fts5_api_from_db(tls *libc.TLS, db uintptr, ppApi uintptr) int32 {
  9237  	bp := tls.Alloc(8)
  9238  	defer tls.Free(8)
  9239  
  9240  	*(*uintptr)(unsafe.Pointer(bp)) = uintptr(0)
  9241  	var rc int32
  9242  
  9243  	*(*uintptr)(unsafe.Pointer(ppApi)) = uintptr(0)
  9244  	rc = sqlite3.Xsqlite3_prepare(tls, db, ts+2137, -1, bp, uintptr(0))
  9245  	if rc == SQLITE_OK {
  9246  		sqlite3.Xsqlite3_bind_pointer(tls, *(*uintptr)(unsafe.Pointer(bp)), 1, ppApi, ts+2161, uintptr(0))
  9247  		sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp)))
  9248  		rc = sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp)))
  9249  	}
  9250  
  9251  	return rc
  9252  }
  9253  
  9254  func fts5MatchinfoFlagsize(tls *libc.TLS, nCol int32, nPhrase int32, f uint8) int32 {
  9255  	var ret int32 = -1
  9256  	switch int32(f) {
  9257  	case 'p':
  9258  		ret = 1
  9259  		break
  9260  	case 'c':
  9261  		ret = 1
  9262  		break
  9263  	case 'x':
  9264  		ret = 3 * nCol * nPhrase
  9265  		break
  9266  	case 'y':
  9267  		ret = nCol * nPhrase
  9268  		break
  9269  	case 'b':
  9270  		ret = (nCol + 31) / 32 * nPhrase
  9271  		break
  9272  	case 'n':
  9273  		ret = 1
  9274  		break
  9275  	case 'a':
  9276  		ret = nCol
  9277  		break
  9278  	case 'l':
  9279  		ret = nCol
  9280  		break
  9281  	case 's':
  9282  		ret = nCol
  9283  		break
  9284  	}
  9285  	return ret
  9286  }
  9287  
  9288  func fts5MatchinfoIter(tls *libc.TLS, pApi uintptr, pFts uintptr, p uintptr, x uintptr) int32 {
  9289  	var i int32
  9290  	var n int32 = 0
  9291  	var rc int32 = SQLITE_OK
  9292  	var f uint8
  9293  	for i = 0; libc.AssignUint8(&f, *(*uint8)(unsafe.Pointer((*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FzArg + uintptr(i)))) != 0; i++ {
  9294  		rc = (*struct {
  9295  			f func(*libc.TLS, uintptr, uintptr, uintptr, uint8, uintptr) int32
  9296  		})(unsafe.Pointer(&struct{ uintptr }{x})).f(tls, pApi, pFts, p, f, (*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FaRet+uintptr(n)*4)
  9297  		if rc != SQLITE_OK {
  9298  			break
  9299  		}
  9300  		n = n + fts5MatchinfoFlagsize(tls, (*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FnCol, (*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FnPhrase, f)
  9301  	}
  9302  	return rc
  9303  }
  9304  
  9305  func fts5MatchinfoXCb(tls *libc.TLS, pApi uintptr, pFts uintptr, pUserData uintptr) int32 {
  9306  	bp := tls.Alloc(24)
  9307  	defer tls.Free(24)
  9308  
  9309  	var aOut uintptr = pUserData
  9310  	var iPrev int32 = -1
  9311  
  9312  	for (*struct {
  9313  		f func(*libc.TLS, uintptr, int32, uintptr, uintptr, uintptr) int32
  9314  	})(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 {
  9315  		f func(*libc.TLS, uintptr, uintptr, uintptr, uintptr)
  9316  	})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer(pApi)).FxPhraseNext})).f(tls, pFts, bp, bp+16, bp+20) {
  9317  		*(*u32)(unsafe.Pointer(aOut + uintptr(*(*int32)(unsafe.Pointer(bp + 16))*3+1)*4))++
  9318  		if *(*int32)(unsafe.Pointer(bp + 16)) != iPrev {
  9319  			*(*u32)(unsafe.Pointer(aOut + uintptr(*(*int32)(unsafe.Pointer(bp + 16))*3+2)*4))++
  9320  		}
  9321  		iPrev = *(*int32)(unsafe.Pointer(bp + 16))
  9322  	}
  9323  
  9324  	return SQLITE_OK
  9325  }
  9326  
  9327  func fts5MatchinfoGlobalCb(tls *libc.TLS, pApi uintptr, pFts uintptr, p uintptr, f uint8, aOut uintptr) int32 {
  9328  	bp := tls.Alloc(24)
  9329  	defer tls.Free(24)
  9330  
  9331  	var rc int32 = SQLITE_OK
  9332  	switch int32(f) {
  9333  	case 'p':
  9334  		*(*u32)(unsafe.Pointer(aOut)) = u32((*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FnPhrase)
  9335  		break
  9336  
  9337  	case 'c':
  9338  		*(*u32)(unsafe.Pointer(aOut)) = u32((*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FnCol)
  9339  		break
  9340  
  9341  	case 'x':
  9342  		{
  9343  			var i int32
  9344  			for i = 0; i < (*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FnPhrase && rc == SQLITE_OK; i++ {
  9345  				var pPtr uintptr = aOut + uintptr(i*(*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FnCol*3)*4
  9346  				rc = (*struct {
  9347  					f func(*libc.TLS, uintptr, int32, uintptr, uintptr) int32
  9348  				})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer(pApi)).FxQueryPhrase})).f(tls, pFts, i, pPtr, *(*uintptr)(unsafe.Pointer(&struct {
  9349  					f func(*libc.TLS, uintptr, uintptr, uintptr) int32
  9350  				}{fts5MatchinfoXCb})))
  9351  			}
  9352  			break
  9353  
  9354  		}
  9355  
  9356  	case 'n':
  9357  		{
  9358  			rc = (*struct {
  9359  				f func(*libc.TLS, uintptr, uintptr) int32
  9360  			})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer(pApi)).FxRowCount})).f(tls, pFts, bp)
  9361  			*(*u32)(unsafe.Pointer(aOut)) = u32(*(*sqlite3_int64)(unsafe.Pointer(bp)))
  9362  			break
  9363  
  9364  		}
  9365  
  9366  	case 'a':
  9367  		{
  9368  			*(*sqlite3_int64)(unsafe.Pointer(bp + 8)) = int64(0)
  9369  			rc = (*struct {
  9370  				f func(*libc.TLS, uintptr, uintptr) int32
  9371  			})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer(pApi)).FxRowCount})).f(tls, pFts, bp+8)
  9372  			if *(*sqlite3_int64)(unsafe.Pointer(bp + 8)) == int64(0) {
  9373  				libc.Xmemset(tls, aOut, 0, uint64(unsafe.Sizeof(u32(0)))*uint64((*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FnCol))
  9374  			} else {
  9375  				var i int32
  9376  				for i = 0; rc == SQLITE_OK && i < (*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FnCol; i++ {
  9377  					rc = (*struct {
  9378  						f func(*libc.TLS, uintptr, int32, uintptr) int32
  9379  					})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer(pApi)).FxColumnTotalSize})).f(tls, pFts, i, bp+16)
  9380  					if rc == SQLITE_OK {
  9381  						*(*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))))
  9382  					}
  9383  				}
  9384  			}
  9385  			break
  9386  
  9387  		}
  9388  
  9389  	}
  9390  	return rc
  9391  }
  9392  
  9393  func fts5MatchinfoLocalCb(tls *libc.TLS, pApi uintptr, pFts uintptr, p uintptr, f uint8, aOut uintptr) int32 {
  9394  	bp := tls.Alloc(80)
  9395  	defer tls.Free(80)
  9396  
  9397  	var i int32
  9398  	var rc int32 = SQLITE_OK
  9399  
  9400  	switch int32(f) {
  9401  	case 'b':
  9402  		{
  9403  			var iPhrase int32
  9404  			var nInt int32 = ((*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FnCol + 31) / 32 * (*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FnPhrase
  9405  			for i = 0; i < nInt; i++ {
  9406  				*(*u32)(unsafe.Pointer(aOut + uintptr(i)*4)) = u32(0)
  9407  			}
  9408  
  9409  			for iPhrase = 0; iPhrase < (*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FnPhrase; iPhrase++ {
  9410  				for (*struct {
  9411  					f func(*libc.TLS, uintptr, int32, uintptr, uintptr) int32
  9412  				})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer(pApi)).FxPhraseFirstColumn})).f(tls, pFts, iPhrase, bp, bp+16); *(*int32)(unsafe.Pointer(bp + 16)) >= 0; (*struct {
  9413  					f func(*libc.TLS, uintptr, uintptr, uintptr)
  9414  				})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer(pApi)).FxPhraseNextColumn})).f(tls, pFts, bp, bp+16) {
  9415  					*(*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)
  9416  				}
  9417  			}
  9418  
  9419  			break
  9420  
  9421  		}
  9422  
  9423  	case 'x':
  9424  		fallthrough
  9425  	case 'y':
  9426  		{
  9427  			var nMul int32 = func() int32 {
  9428  				if int32(f) == 'x' {
  9429  					return 3
  9430  				}
  9431  				return 1
  9432  			}()
  9433  			var iPhrase int32
  9434  
  9435  			for i = 0; i < (*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FnCol*(*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FnPhrase; i++ {
  9436  				*(*u32)(unsafe.Pointer(aOut + uintptr(i*nMul)*4)) = u32(0)
  9437  			}
  9438  
  9439  			for iPhrase = 0; iPhrase < (*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FnPhrase; iPhrase++ {
  9440  				for (*struct {
  9441  					f func(*libc.TLS, uintptr, int32, uintptr, uintptr, uintptr) int32
  9442  				})(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 {
  9443  					f func(*libc.TLS, uintptr, uintptr, uintptr, uintptr)
  9444  				})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer(pApi)).FxPhraseNext})).f(tls, pFts, bp+24, bp+40, bp+44) {
  9445  					*(*u32)(unsafe.Pointer(aOut + uintptr(nMul*(*(*int32)(unsafe.Pointer(bp + 40))+iPhrase*(*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FnCol))*4))++
  9446  				}
  9447  			}
  9448  
  9449  			break
  9450  
  9451  		}
  9452  
  9453  	case 'l':
  9454  		{
  9455  			for i = 0; rc == SQLITE_OK && i < (*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FnCol; i++ {
  9456  				rc = (*struct {
  9457  					f func(*libc.TLS, uintptr, int32, uintptr) int32
  9458  				})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer(pApi)).FxColumnSize})).f(tls, pFts, i, bp+48)
  9459  				*(*u32)(unsafe.Pointer(aOut + uintptr(i)*4)) = u32(*(*int32)(unsafe.Pointer(bp + 48)))
  9460  			}
  9461  			break
  9462  
  9463  		}
  9464  
  9465  	case 's':
  9466  		{
  9467  			libc.Xmemset(tls, aOut, 0, uint64(unsafe.Sizeof(u32(0)))*uint64((*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FnCol))
  9468  
  9469  			rc = (*struct {
  9470  				f func(*libc.TLS, uintptr, uintptr) int32
  9471  			})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer(pApi)).FxInstCount})).f(tls, pFts, bp+52)
  9472  			for i = 0; rc == SQLITE_OK && i < *(*int32)(unsafe.Pointer(bp + 52)); i++ {
  9473  				*(*int32)(unsafe.Pointer(bp + 60)) = 0
  9474  				var iNextPhrase int32
  9475  				var iNextOff int32
  9476  				var nSeq u32 = u32(1)
  9477  				var j int32
  9478  
  9479  				rc = (*struct {
  9480  					f func(*libc.TLS, uintptr, int32, uintptr, uintptr, uintptr) int32
  9481  				})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer(pApi)).FxInst})).f(tls, pFts, i, bp+56, bp+60, bp+64)
  9482  				iNextPhrase = *(*int32)(unsafe.Pointer(bp + 56)) + 1
  9483  				iNextOff = *(*int32)(unsafe.Pointer(bp + 64)) + (*struct {
  9484  					f func(*libc.TLS, uintptr, int32) int32
  9485  				})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer(pApi)).FxPhraseSize})).f(tls, pFts, 0)
  9486  				for j = i + 1; rc == SQLITE_OK && j < *(*int32)(unsafe.Pointer(bp + 52)); j++ {
  9487  					rc = (*struct {
  9488  						f func(*libc.TLS, uintptr, int32, uintptr, uintptr, uintptr) int32
  9489  					})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer(pApi)).FxInst})).f(tls, pFts, j, bp+68, bp+72, bp+76)
  9490  					if *(*int32)(unsafe.Pointer(bp + 72)) != *(*int32)(unsafe.Pointer(bp + 60)) || *(*int32)(unsafe.Pointer(bp + 76)) > iNextOff {
  9491  						break
  9492  					}
  9493  					if *(*int32)(unsafe.Pointer(bp + 68)) == iNextPhrase && *(*int32)(unsafe.Pointer(bp + 76)) == iNextOff {
  9494  						nSeq++
  9495  						iNextPhrase = *(*int32)(unsafe.Pointer(bp + 68)) + 1
  9496  						iNextOff = *(*int32)(unsafe.Pointer(bp + 76)) + (*struct {
  9497  							f func(*libc.TLS, uintptr, int32) int32
  9498  						})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer(pApi)).FxPhraseSize})).f(tls, pFts, *(*int32)(unsafe.Pointer(bp + 68)))
  9499  					}
  9500  				}
  9501  
  9502  				if nSeq > *(*u32)(unsafe.Pointer(aOut + uintptr(*(*int32)(unsafe.Pointer(bp + 60)))*4)) {
  9503  					*(*u32)(unsafe.Pointer(aOut + uintptr(*(*int32)(unsafe.Pointer(bp + 60)))*4)) = nSeq
  9504  				}
  9505  			}
  9506  
  9507  			break
  9508  
  9509  		}
  9510  	}
  9511  	return rc
  9512  }
  9513  
  9514  func fts5MatchinfoNew(tls *libc.TLS, pApi uintptr, pFts uintptr, pCtx uintptr, zArg uintptr) uintptr {
  9515  	bp := tls.Alloc(8)
  9516  	defer tls.Free(8)
  9517  
  9518  	var p uintptr
  9519  	var nCol int32
  9520  	var nPhrase int32
  9521  	var i int32
  9522  	var nInt int32
  9523  	var nByte sqlite3_int64
  9524  	var rc int32
  9525  
  9526  	nCol = (*struct {
  9527  		f func(*libc.TLS, uintptr) int32
  9528  	})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer(pApi)).FxColumnCount})).f(tls, pFts)
  9529  	nPhrase = (*struct {
  9530  		f func(*libc.TLS, uintptr) int32
  9531  	})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer(pApi)).FxPhraseCount})).f(tls, pFts)
  9532  
  9533  	nInt = 0
  9534  	for i = 0; *(*uint8)(unsafe.Pointer(zArg + uintptr(i))) != 0; i++ {
  9535  		var n int32 = fts5MatchinfoFlagsize(tls, nCol, nPhrase, *(*uint8)(unsafe.Pointer(zArg + uintptr(i))))
  9536  		if n < 0 {
  9537  			var zErr uintptr = sqlite3.Xsqlite3_mprintf(tls, ts+3131, libc.VaList(bp, int32(*(*uint8)(unsafe.Pointer(zArg + uintptr(i))))))
  9538  			sqlite3.Xsqlite3_result_error(tls, pCtx, zErr, -1)
  9539  			sqlite3.Xsqlite3_free(tls, zErr)
  9540  			return uintptr(0)
  9541  		}
  9542  		nInt = nInt + n
  9543  	}
  9544  
  9545  	nByte = sqlite3_int64(uint64(unsafe.Sizeof(Fts5MatchinfoCtx{})) +
  9546  		uint64(unsafe.Sizeof(u32(0)))*uint64(nInt) +
  9547  		uint64(i+1))
  9548  	p = sqlite3.Xsqlite3_malloc64(tls, uint64(nByte))
  9549  	if p == uintptr(0) {
  9550  		sqlite3.Xsqlite3_result_error_nomem(tls, pCtx)
  9551  		return uintptr(0)
  9552  	}
  9553  	libc.Xmemset(tls, p, 0, uint64(nByte))
  9554  
  9555  	(*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FnCol = nCol
  9556  	(*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FnPhrase = nPhrase
  9557  	(*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FaRet = p + 1*32
  9558  	(*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FnRet = nInt
  9559  	(*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FzArg = (*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FaRet + uintptr(nInt)*4
  9560  	libc.Xmemcpy(tls, (*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FzArg, zArg, uint64(i))
  9561  
  9562  	rc = fts5MatchinfoIter(tls, pApi, pFts, p, *(*uintptr)(unsafe.Pointer(&struct {
  9563  		f func(*libc.TLS, uintptr, uintptr, uintptr, uint8, uintptr) int32
  9564  	}{fts5MatchinfoGlobalCb})))
  9565  	if rc != SQLITE_OK {
  9566  		sqlite3.Xsqlite3_result_error_code(tls, pCtx, rc)
  9567  		sqlite3.Xsqlite3_free(tls, p)
  9568  		p = uintptr(0)
  9569  	}
  9570  
  9571  	return p
  9572  }
  9573  
  9574  func fts5MatchinfoFunc(tls *libc.TLS, pApi uintptr, pFts uintptr, pCtx uintptr, nVal int32, apVal uintptr) {
  9575  	var zArg uintptr
  9576  	var p uintptr
  9577  	var rc int32 = SQLITE_OK
  9578  
  9579  	if nVal > 0 {
  9580  		zArg = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(apVal)))
  9581  	} else {
  9582  		zArg = ts + 3163
  9583  	}
  9584  
  9585  	p = (*struct {
  9586  		f func(*libc.TLS, uintptr, int32) uintptr
  9587  	})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer(pApi)).FxGetAuxdata})).f(tls, pFts, 0)
  9588  	if p == uintptr(0) || sqlite3.Xsqlite3_stricmp(tls, zArg, (*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FzArg) != 0 {
  9589  		p = fts5MatchinfoNew(tls, pApi, pFts, pCtx, zArg)
  9590  		if p == uintptr(0) {
  9591  			rc = SQLITE_NOMEM
  9592  		} else {
  9593  			rc = (*struct {
  9594  				f func(*libc.TLS, uintptr, uintptr, uintptr) int32
  9595  			})(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})))
  9596  		}
  9597  	}
  9598  
  9599  	if rc == SQLITE_OK {
  9600  		rc = fts5MatchinfoIter(tls, pApi, pFts, p, *(*uintptr)(unsafe.Pointer(&struct {
  9601  			f func(*libc.TLS, uintptr, uintptr, uintptr, uint8, uintptr) int32
  9602  		}{fts5MatchinfoLocalCb})))
  9603  	}
  9604  	if rc != SQLITE_OK {
  9605  		sqlite3.Xsqlite3_result_error_code(tls, pCtx, rc)
  9606  	} else {
  9607  		var nByte int32 = int32(uint64((*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FnRet) * uint64(unsafe.Sizeof(u32(0))))
  9608  		sqlite3.Xsqlite3_result_blob(tls, pCtx, (*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FaRet, nByte, libc.UintptrFromInt32(-1))
  9609  	}
  9610  }
  9611  
  9612  func sqlite3Fts5TestRegisterMatchinfo(tls *libc.TLS, db uintptr) int32 {
  9613  	bp := tls.Alloc(8)
  9614  	defer tls.Free(8)
  9615  
  9616  	var rc int32
  9617  
  9618  	rc = fts5_api_from_db(tls, db, bp)
  9619  	if rc != SQLITE_OK {
  9620  		return rc
  9621  	}
  9622  
  9623  	if *(*uintptr)(unsafe.Pointer(bp)) == uintptr(0) || (*fts5_api)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp)))).FiVersion < 2 {
  9624  		return SQLITE_ERROR
  9625  	}
  9626  
  9627  	rc = (*struct {
  9628  		f func(*libc.TLS, uintptr, uintptr, uintptr, fts5_extension_function, uintptr) int32
  9629  	})(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 {
  9630  		f func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr)
  9631  	}{fts5MatchinfoFunc})), uintptr(0))
  9632  
  9633  	return rc
  9634  }
  9635  
  9636  type Fts5tokTable1 = struct {
  9637  	Fbase sqlite3_vtab
  9638  	Ftok  fts5_tokenizer
  9639  	FpTok uintptr
  9640  }
  9641  
  9642  type Fts5tokTable = Fts5tokTable1
  9643  type Fts5tokCursor1 = struct {
  9644  	Fbase        sqlite3_vtab_cursor
  9645  	FiRowid      int32
  9646  	F__ccgo_pad1 [4]byte
  9647  	FzInput      uintptr
  9648  	FnRow        int32
  9649  	F__ccgo_pad2 [4]byte
  9650  	FaRow        uintptr
  9651  }
  9652  
  9653  type Fts5tokCursor = Fts5tokCursor1
  9654  type Fts5tokRow1 = struct {
  9655  	FzToken      uintptr
  9656  	FiStart      int32
  9657  	FiEnd        int32
  9658  	FiPos        int32
  9659  	F__ccgo_pad1 [4]byte
  9660  }
  9661  
  9662  type Fts5tokRow = Fts5tokRow1
  9663  
  9664  func fts5tokDequote(tls *libc.TLS, z uintptr) {
  9665  	var q uint8 = *(*uint8)(unsafe.Pointer(z))
  9666  
  9667  	if int32(q) == '[' || int32(q) == '\'' || int32(q) == '"' || int32(q) == '`' {
  9668  		var iIn int32 = 1
  9669  		var iOut int32 = 0
  9670  		if int32(q) == '[' {
  9671  			q = uint8(']')
  9672  		}
  9673  
  9674  		for *(*uint8)(unsafe.Pointer(z + uintptr(iIn))) != 0 {
  9675  			if int32(*(*uint8)(unsafe.Pointer(z + uintptr(iIn)))) == int32(q) {
  9676  				if int32(*(*uint8)(unsafe.Pointer(z + uintptr(iIn+1)))) != int32(q) {
  9677  					iIn++
  9678  					break
  9679  				} else {
  9680  					iIn = iIn + 2
  9681  					*(*uint8)(unsafe.Pointer(z + uintptr(libc.PostIncInt32(&iOut, 1)))) = q
  9682  				}
  9683  			} else {
  9684  				*(*uint8)(unsafe.Pointer(z + uintptr(libc.PostIncInt32(&iOut, 1)))) = *(*uint8)(unsafe.Pointer(z + uintptr(libc.PostIncInt32(&iIn, 1))))
  9685  			}
  9686  		}
  9687  
  9688  		*(*uint8)(unsafe.Pointer(z + uintptr(iOut))) = uint8(0)
  9689  	}
  9690  }
  9691  
  9692  func fts5tokDequoteArray(tls *libc.TLS, argc int32, argv uintptr, pazDequote uintptr) int32 {
  9693  	var rc int32 = SQLITE_OK
  9694  	if argc == 0 {
  9695  		*(*uintptr)(unsafe.Pointer(pazDequote)) = uintptr(0)
  9696  	} else {
  9697  		var i int32
  9698  		var nByte int32 = 0
  9699  		var azDequote uintptr
  9700  
  9701  		for i = 0; i < argc; i++ {
  9702  			nByte = nByte + int32(libc.Xstrlen(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8)))+uint64(1))
  9703  		}
  9704  
  9705  		*(*uintptr)(unsafe.Pointer(pazDequote)) = libc.AssignUintptr(&azDequote, sqlite3.Xsqlite3_malloc64(tls, uint64(unsafe.Sizeof(uintptr(0)))*uint64(argc)+uint64(nByte)))
  9706  		if azDequote == uintptr(0) {
  9707  			rc = SQLITE_NOMEM
  9708  		} else {
  9709  			var pSpace uintptr = azDequote + uintptr(argc)*8
  9710  			for i = 0; i < argc; i++ {
  9711  				var n int32 = int32(libc.Xstrlen(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8))))
  9712  				*(*uintptr)(unsafe.Pointer(azDequote + uintptr(i)*8)) = pSpace
  9713  				libc.Xmemcpy(tls, pSpace, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8)), uint64(n+1))
  9714  				fts5tokDequote(tls, pSpace)
  9715  				pSpace += uintptr(n + 1)
  9716  			}
  9717  		}
  9718  	}
  9719  
  9720  	return rc
  9721  }
  9722  
  9723  func fts5tokConnectMethod(tls *libc.TLS, db uintptr, pCtx uintptr, argc int32, argv uintptr, ppVtab uintptr, pzErr uintptr) int32 {
  9724  	bp := tls.Alloc(16)
  9725  	defer tls.Free(16)
  9726  
  9727  	var pApi uintptr = pCtx
  9728  	var pTab uintptr = uintptr(0)
  9729  	var rc int32
  9730  	*(*uintptr)(unsafe.Pointer(bp)) = uintptr(0)
  9731  	var nDequote int32 = 0
  9732  
  9733  	rc = sqlite3.Xsqlite3_declare_vtab(tls, db,
  9734  		ts+3177)
  9735  
  9736  	if rc == SQLITE_OK {
  9737  		nDequote = argc - 3
  9738  		rc = fts5tokDequoteArray(tls, nDequote, argv+3*8, bp)
  9739  	}
  9740  
  9741  	if rc == SQLITE_OK {
  9742  		pTab = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(Fts5tokTable{})))
  9743  		if pTab == uintptr(0) {
  9744  			rc = SQLITE_NOMEM
  9745  		} else {
  9746  			libc.Xmemset(tls, pTab, 0, uint64(unsafe.Sizeof(Fts5tokTable{})))
  9747  		}
  9748  	}
  9749  
  9750  	if rc == SQLITE_OK {
  9751  		*(*uintptr)(unsafe.Pointer(bp + 8)) = uintptr(0)
  9752  		var zModule uintptr = uintptr(0)
  9753  		if nDequote > 0 {
  9754  			zModule = *(*uintptr)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp))))
  9755  		}
  9756  
  9757  		rc = (*struct {
  9758  			f func(*libc.TLS, uintptr, uintptr, uintptr, uintptr) int32
  9759  		})(unsafe.Pointer(&struct{ uintptr }{(*fts5_api)(unsafe.Pointer(pApi)).FxFindTokenizer})).f(tls, pApi, zModule, bp+8, pTab+24)
  9760  		if rc == SQLITE_OK {
  9761  			var azArg uintptr = func() uintptr {
  9762  				if nDequote > 1 {
  9763  					return *(*uintptr)(unsafe.Pointer(bp)) + 1*8
  9764  				}
  9765  				return uintptr(0)
  9766  			}()
  9767  			var nArg int32
  9768  			if nDequote > 0 {
  9769  				nArg = nDequote - 1
  9770  			} else {
  9771  				nArg = 0
  9772  			}
  9773  			rc = (*struct {
  9774  				f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
  9775  			})(unsafe.Pointer(&struct{ uintptr }{(*Fts5tokTable)(unsafe.Pointer(pTab)).Ftok.FxCreate})).f(tls, *(*uintptr)(unsafe.Pointer(bp + 8)), azArg, nArg, pTab+48)
  9776  		}
  9777  	}
  9778  
  9779  	if rc != SQLITE_OK {
  9780  		sqlite3.Xsqlite3_free(tls, pTab)
  9781  		pTab = uintptr(0)
  9782  	}
  9783  
  9784  	*(*uintptr)(unsafe.Pointer(ppVtab)) = pTab
  9785  	sqlite3.Xsqlite3_free(tls, *(*uintptr)(unsafe.Pointer(bp)))
  9786  	return rc
  9787  }
  9788  
  9789  func fts5tokDisconnectMethod(tls *libc.TLS, pVtab uintptr) int32 {
  9790  	var pTab uintptr = pVtab
  9791  	if (*Fts5tokTable)(unsafe.Pointer(pTab)).FpTok != 0 {
  9792  		(*struct{ f func(*libc.TLS, uintptr) })(unsafe.Pointer(&struct{ uintptr }{(*Fts5tokTable)(unsafe.Pointer(pTab)).Ftok.FxDelete})).f(tls, (*Fts5tokTable)(unsafe.Pointer(pTab)).FpTok)
  9793  	}
  9794  	sqlite3.Xsqlite3_free(tls, pTab)
  9795  	return SQLITE_OK
  9796  }
  9797  
  9798  func fts5tokBestIndexMethod(tls *libc.TLS, pVTab uintptr, pInfo uintptr) int32 {
  9799  	var i int32
  9800  
  9801  	for i = 0; i < (*sqlite3_index_info)(unsafe.Pointer(pInfo)).FnConstraint; i++ {
  9802  		if (*sqlite3_index_constraint)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pInfo)).FaConstraint+uintptr(i)*12)).Fusable != 0 &&
  9803  			(*sqlite3_index_constraint)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pInfo)).FaConstraint+uintptr(i)*12)).FiColumn == 0 &&
  9804  			int32((*sqlite3_index_constraint)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pInfo)).FaConstraint+uintptr(i)*12)).Fop) == SQLITE_INDEX_CONSTRAINT_EQ {
  9805  			(*sqlite3_index_info)(unsafe.Pointer(pInfo)).FidxNum = 1
  9806  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pInfo)).FaConstraintUsage + uintptr(i)*8)).FargvIndex = 1
  9807  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pInfo)).FaConstraintUsage + uintptr(i)*8)).Fomit = uint8(1)
  9808  			(*sqlite3_index_info)(unsafe.Pointer(pInfo)).FestimatedCost = float64(1)
  9809  			return SQLITE_OK
  9810  		}
  9811  	}
  9812  
  9813  	(*sqlite3_index_info)(unsafe.Pointer(pInfo)).FidxNum = 0
  9814  
  9815  	return SQLITE_OK
  9816  }
  9817  
  9818  func fts5tokOpenMethod(tls *libc.TLS, pVTab uintptr, ppCsr uintptr) int32 {
  9819  	var pCsr uintptr
  9820  
  9821  	pCsr = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(Fts5tokCursor{})))
  9822  	if pCsr == uintptr(0) {
  9823  		return SQLITE_NOMEM
  9824  	}
  9825  	libc.Xmemset(tls, pCsr, 0, uint64(unsafe.Sizeof(Fts5tokCursor{})))
  9826  
  9827  	*(*uintptr)(unsafe.Pointer(ppCsr)) = pCsr
  9828  	return SQLITE_OK
  9829  }
  9830  
  9831  func fts5tokResetCursor(tls *libc.TLS, pCsr uintptr) {
  9832  	var i int32
  9833  	for i = 0; i < (*Fts5tokCursor)(unsafe.Pointer(pCsr)).FnRow; i++ {
  9834  		sqlite3.Xsqlite3_free(tls, (*Fts5tokRow)(unsafe.Pointer((*Fts5tokCursor)(unsafe.Pointer(pCsr)).FaRow+uintptr(i)*24)).FzToken)
  9835  	}
  9836  	sqlite3.Xsqlite3_free(tls, (*Fts5tokCursor)(unsafe.Pointer(pCsr)).FzInput)
  9837  	sqlite3.Xsqlite3_free(tls, (*Fts5tokCursor)(unsafe.Pointer(pCsr)).FaRow)
  9838  	(*Fts5tokCursor)(unsafe.Pointer(pCsr)).FzInput = uintptr(0)
  9839  	(*Fts5tokCursor)(unsafe.Pointer(pCsr)).FaRow = uintptr(0)
  9840  	(*Fts5tokCursor)(unsafe.Pointer(pCsr)).FnRow = 0
  9841  	(*Fts5tokCursor)(unsafe.Pointer(pCsr)).FiRowid = 0
  9842  }
  9843  
  9844  func fts5tokCloseMethod(tls *libc.TLS, pCursor uintptr) int32 {
  9845  	var pCsr uintptr = pCursor
  9846  	fts5tokResetCursor(tls, pCsr)
  9847  	sqlite3.Xsqlite3_free(tls, pCsr)
  9848  	return SQLITE_OK
  9849  }
  9850  
  9851  func fts5tokNextMethod(tls *libc.TLS, pCursor uintptr) int32 {
  9852  	var pCsr uintptr = pCursor
  9853  	(*Fts5tokCursor)(unsafe.Pointer(pCsr)).FiRowid++
  9854  	return SQLITE_OK
  9855  }
  9856  
  9857  func fts5tokCb(tls *libc.TLS, pCtx uintptr, tflags int32, pToken uintptr, nToken int32, iStart int32, iEnd int32) int32 {
  9858  	var pCsr uintptr = pCtx
  9859  	var pRow uintptr
  9860  
  9861  	if (*Fts5tokCursor)(unsafe.Pointer(pCsr)).FnRow&((*Fts5tokCursor)(unsafe.Pointer(pCsr)).FnRow-1) == 0 {
  9862  		var nNew int32
  9863  		if (*Fts5tokCursor)(unsafe.Pointer(pCsr)).FnRow != 0 {
  9864  			nNew = (*Fts5tokCursor)(unsafe.Pointer(pCsr)).FnRow * 2
  9865  		} else {
  9866  			nNew = 32
  9867  		}
  9868  		var aNew uintptr
  9869  		aNew = sqlite3.Xsqlite3_realloc64(tls, (*Fts5tokCursor)(unsafe.Pointer(pCsr)).FaRow, uint64(nNew)*uint64(unsafe.Sizeof(Fts5tokRow{})))
  9870  		if aNew == uintptr(0) {
  9871  			return SQLITE_NOMEM
  9872  		}
  9873  		libc.Xmemset(tls, aNew+uintptr((*Fts5tokCursor)(unsafe.Pointer(pCsr)).FnRow)*24, 0, uint64(unsafe.Sizeof(Fts5tokRow{}))*uint64(nNew-(*Fts5tokCursor)(unsafe.Pointer(pCsr)).FnRow))
  9874  		(*Fts5tokCursor)(unsafe.Pointer(pCsr)).FaRow = aNew
  9875  	}
  9876  
  9877  	pRow = (*Fts5tokCursor)(unsafe.Pointer(pCsr)).FaRow + uintptr((*Fts5tokCursor)(unsafe.Pointer(pCsr)).FnRow)*24
  9878  	(*Fts5tokRow)(unsafe.Pointer(pRow)).FiStart = iStart
  9879  	(*Fts5tokRow)(unsafe.Pointer(pRow)).FiEnd = iEnd
  9880  	if (*Fts5tokCursor)(unsafe.Pointer(pCsr)).FnRow != 0 {
  9881  		(*Fts5tokRow)(unsafe.Pointer(pRow)).FiPos = (*Fts5tokRow)(unsafe.Pointer(pRow+libc.UintptrFromInt32(-1)*24)).FiPos + func() int32 {
  9882  			if tflags&FTS5_TOKEN_COLOCATED != 0 {
  9883  				return 0
  9884  			}
  9885  			return 1
  9886  		}()
  9887  	}
  9888  	(*Fts5tokRow)(unsafe.Pointer(pRow)).FzToken = sqlite3.Xsqlite3_malloc(tls, nToken+1)
  9889  	if (*Fts5tokRow)(unsafe.Pointer(pRow)).FzToken == uintptr(0) {
  9890  		return SQLITE_NOMEM
  9891  	}
  9892  	libc.Xmemcpy(tls, (*Fts5tokRow)(unsafe.Pointer(pRow)).FzToken, pToken, uint64(nToken))
  9893  	*(*uint8)(unsafe.Pointer((*Fts5tokRow)(unsafe.Pointer(pRow)).FzToken + uintptr(nToken))) = uint8(0)
  9894  	(*Fts5tokCursor)(unsafe.Pointer(pCsr)).FnRow++
  9895  
  9896  	return SQLITE_OK
  9897  }
  9898  
  9899  func fts5tokFilterMethod(tls *libc.TLS, pCursor uintptr, idxNum int32, idxStr uintptr, nVal int32, apVal uintptr) int32 {
  9900  	var rc int32 = SQLITE_ERROR
  9901  	var pCsr uintptr = pCursor
  9902  	var pTab uintptr = (*sqlite3_vtab_cursor)(unsafe.Pointer(pCursor)).FpVtab
  9903  
  9904  	fts5tokResetCursor(tls, pCsr)
  9905  	if idxNum == 1 {
  9906  		var zByte uintptr = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(apVal)))
  9907  		var nByte int32 = sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(apVal)))
  9908  		(*Fts5tokCursor)(unsafe.Pointer(pCsr)).FzInput = sqlite3.Xsqlite3_malloc(tls, nByte+1)
  9909  		if (*Fts5tokCursor)(unsafe.Pointer(pCsr)).FzInput == uintptr(0) {
  9910  			rc = SQLITE_NOMEM
  9911  		} else {
  9912  			if nByte > 0 {
  9913  				libc.Xmemcpy(tls, (*Fts5tokCursor)(unsafe.Pointer(pCsr)).FzInput, zByte, uint64(nByte))
  9914  			}
  9915  			*(*uint8)(unsafe.Pointer((*Fts5tokCursor)(unsafe.Pointer(pCsr)).FzInput + uintptr(nByte))) = uint8(0)
  9916  			rc = (*struct {
  9917  				f func(*libc.TLS, uintptr, uintptr, int32, uintptr, int32, uintptr) int32
  9918  			})(unsafe.Pointer(&struct{ uintptr }{(*Fts5tokTable)(unsafe.Pointer(pTab)).Ftok.FxTokenize})).f(tls,
  9919  				(*Fts5tokTable)(unsafe.Pointer(pTab)).FpTok, pCsr, 0, zByte, nByte, *(*uintptr)(unsafe.Pointer(&struct {
  9920  					f func(*libc.TLS, uintptr, int32, uintptr, int32, int32, int32) int32
  9921  				}{fts5tokCb})))
  9922  		}
  9923  	}
  9924  
  9925  	if rc != SQLITE_OK {
  9926  		return rc
  9927  	}
  9928  	return fts5tokNextMethod(tls, pCursor)
  9929  }
  9930  
  9931  func fts5tokEofMethod(tls *libc.TLS, pCursor uintptr) int32 {
  9932  	var pCsr uintptr = pCursor
  9933  	return libc.Bool32((*Fts5tokCursor)(unsafe.Pointer(pCsr)).FiRowid > (*Fts5tokCursor)(unsafe.Pointer(pCsr)).FnRow)
  9934  }
  9935  
  9936  func fts5tokColumnMethod(tls *libc.TLS, pCursor uintptr, pCtx uintptr, iCol int32) int32 {
  9937  	var pCsr uintptr = pCursor
  9938  	var pRow uintptr = (*Fts5tokCursor)(unsafe.Pointer(pCsr)).FaRow + uintptr((*Fts5tokCursor)(unsafe.Pointer(pCsr)).FiRowid-1)*24
  9939  
  9940  	switch iCol {
  9941  	case 0:
  9942  		sqlite3.Xsqlite3_result_text(tls, pCtx, (*Fts5tokCursor)(unsafe.Pointer(pCsr)).FzInput, -1, libc.UintptrFromInt32(-1))
  9943  		break
  9944  	case 1:
  9945  		sqlite3.Xsqlite3_result_text(tls, pCtx, (*Fts5tokRow)(unsafe.Pointer(pRow)).FzToken, -1, libc.UintptrFromInt32(-1))
  9946  		break
  9947  	case 2:
  9948  		sqlite3.Xsqlite3_result_int(tls, pCtx, (*Fts5tokRow)(unsafe.Pointer(pRow)).FiStart)
  9949  		break
  9950  	case 3:
  9951  		sqlite3.Xsqlite3_result_int(tls, pCtx, (*Fts5tokRow)(unsafe.Pointer(pRow)).FiEnd)
  9952  		break
  9953  	default:
  9954  		sqlite3.Xsqlite3_result_int(tls, pCtx, (*Fts5tokRow)(unsafe.Pointer(pRow)).FiPos)
  9955  		break
  9956  	}
  9957  	return SQLITE_OK
  9958  }
  9959  
  9960  func fts5tokRowidMethod(tls *libc.TLS, pCursor uintptr, pRowid uintptr) int32 {
  9961  	var pCsr uintptr = pCursor
  9962  	*(*sqlite_int64)(unsafe.Pointer(pRowid)) = sqlite3_int64((*Fts5tokCursor)(unsafe.Pointer(pCsr)).FiRowid)
  9963  	return SQLITE_OK
  9964  }
  9965  
  9966  func sqlite3Fts5TestRegisterTok(tls *libc.TLS, db uintptr, pApi uintptr) int32 {
  9967  	var rc int32
  9968  
  9969  	rc = sqlite3.Xsqlite3_create_module(tls, db, ts+3235, uintptr(unsafe.Pointer(&fts5tok_module)), pApi)
  9970  	return rc
  9971  }
  9972  
  9973  var fts5tok_module = sqlite3_module{
  9974  	FxCreate:     0,
  9975  	FxConnect:    0,
  9976  	FxBestIndex:  0,
  9977  	FxDisconnect: 0,
  9978  	FxDestroy:    0,
  9979  	FxOpen:       0,
  9980  	FxClose:      0,
  9981  	FxFilter:     0,
  9982  	FxNext:       0,
  9983  	FxEof:        0,
  9984  	FxColumn:     0,
  9985  	FxRowid:      0,
  9986  }
  9987  
  9988  type sqlite3_api_routines = sqlite3_api_routines1
  9989  
  9990  type sqlite3_loadext_entry = uintptr
  9991  
  9992  type ApndVfs = sqlite3_vfs1
  9993  type ApndFile1 = struct {
  9994  	Fbase   sqlite3_file
  9995  	FiPgOne sqlite3_int64
  9996  	FiMark  sqlite3_int64
  9997  }
  9998  
  9999  type ApndFile = ApndFile1
 10000  
 10001  var apnd_vfs = sqlite3_vfs{
 10002  	FiVersion:          3,
 10003  	FmxPathname:        1024,
 10004  	FzName:             ts + 3248,
 10005  	FxOpen:             0,
 10006  	FxDelete:           0,
 10007  	FxAccess:           0,
 10008  	FxFullPathname:     0,
 10009  	FxDlOpen:           0,
 10010  	FxDlError:          0,
 10011  	FxDlSym:            0,
 10012  	FxDlClose:          0,
 10013  	FxRandomness:       0,
 10014  	FxSleep:            0,
 10015  	FxCurrentTime:      0,
 10016  	FxGetLastError:     0,
 10017  	FxCurrentTimeInt64: 0,
 10018  	FxSetSystemCall:    0,
 10019  	FxGetSystemCall:    0,
 10020  	FxNextSystemCall:   0,
 10021  }
 10022  
 10023  var apnd_io_methods = sqlite3_io_methods{
 10024  	FiVersion:               3,
 10025  	FxClose:                 0,
 10026  	FxRead:                  0,
 10027  	FxWrite:                 0,
 10028  	FxTruncate:              0,
 10029  	FxSync:                  0,
 10030  	FxFileSize:              0,
 10031  	FxLock:                  0,
 10032  	FxUnlock:                0,
 10033  	FxCheckReservedLock:     0,
 10034  	FxFileControl:           0,
 10035  	FxSectorSize:            0,
 10036  	FxDeviceCharacteristics: 0,
 10037  	FxShmMap:                0,
 10038  	FxShmLock:               0,
 10039  	FxShmBarrier:            0,
 10040  	FxShmUnmap:              0,
 10041  	FxFetch:                 0,
 10042  	FxUnfetch:               0,
 10043  }
 10044  
 10045  func apndClose(tls *libc.TLS, pFile uintptr) int32 {
 10046  	pFile = pFile + uintptr(1)*24
 10047  	return (*struct {
 10048  		f func(*libc.TLS, uintptr) int32
 10049  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxClose})).f(tls, pFile)
 10050  }
 10051  
 10052  func apndRead(tls *libc.TLS, pFile uintptr, zBuf uintptr, iAmt int32, iOfst sqlite_int64) int32 {
 10053  	var paf uintptr = pFile
 10054  	pFile = pFile + uintptr(1)*24
 10055  	return (*struct {
 10056  		f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 10057  	})(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)
 10058  }
 10059  
 10060  func apndWriteMark(tls *libc.TLS, paf uintptr, pFile uintptr, iWriteEnd sqlite_int64) int32 {
 10061  	bp := tls.Alloc(25)
 10062  	defer tls.Free(25)
 10063  
 10064  	var iPgOne sqlite_int64 = (*ApndFile)(unsafe.Pointer(paf)).FiPgOne
 10065  
 10066  	var i int32 = APND_MARK_FOS_SZ
 10067  	var rc int32
 10068  
 10069  	libc.Xmemcpy(tls, bp, ts+3256, uint64(APND_MARK_PREFIX_SZ))
 10070  	for libc.PreDecInt32(&i, 1) >= 0 {
 10071  		*(*uint8)(unsafe.Pointer(bp + uintptr(APND_MARK_PREFIX_SZ+i))) = uint8(iPgOne & int64(0xff))
 10072  		iPgOne >>= 8
 10073  	}
 10074  	iWriteEnd = iWriteEnd + (*ApndFile)(unsafe.Pointer(paf)).FiPgOne
 10075  	if SQLITE_OK == libc.AssignInt32(&rc, (*struct {
 10076  		f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 10077  	})(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)) {
 10078  		(*ApndFile)(unsafe.Pointer(paf)).FiMark = iWriteEnd
 10079  	}
 10080  	return rc
 10081  }
 10082  
 10083  func apndWrite(tls *libc.TLS, pFile uintptr, zBuf uintptr, iAmt int32, iOfst sqlite_int64) int32 {
 10084  	var paf uintptr = pFile
 10085  	var iWriteEnd sqlite_int64 = iOfst + sqlite_int64(iAmt)
 10086  	if iWriteEnd >= int64(0x40000000) {
 10087  		return SQLITE_FULL
 10088  	}
 10089  	pFile = pFile + uintptr(1)*24
 10090  
 10091  	if (*ApndFile)(unsafe.Pointer(paf)).FiMark < int64(0) || (*ApndFile)(unsafe.Pointer(paf)).FiPgOne+iWriteEnd > (*ApndFile)(unsafe.Pointer(paf)).FiMark {
 10092  		var rc int32 = apndWriteMark(tls, paf, pFile, iWriteEnd)
 10093  		if SQLITE_OK != rc {
 10094  			return rc
 10095  		}
 10096  	}
 10097  	return (*struct {
 10098  		f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 10099  	})(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)
 10100  }
 10101  
 10102  func apndTruncate(tls *libc.TLS, pFile uintptr, size sqlite_int64) int32 {
 10103  	var paf uintptr = pFile
 10104  	pFile = pFile + uintptr(1)*24
 10105  
 10106  	if SQLITE_OK != apndWriteMark(tls, paf, pFile, size) {
 10107  		return SQLITE_IOERR
 10108  	}
 10109  
 10110  	return (*struct {
 10111  		f func(*libc.TLS, uintptr, sqlite3_int64) int32
 10112  	})(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))
 10113  }
 10114  
 10115  func apndSync(tls *libc.TLS, pFile uintptr, flags int32) int32 {
 10116  	pFile = pFile + uintptr(1)*24
 10117  	return (*struct {
 10118  		f func(*libc.TLS, uintptr, int32) int32
 10119  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxSync})).f(tls, pFile, flags)
 10120  }
 10121  
 10122  func apndFileSize(tls *libc.TLS, pFile uintptr, pSize uintptr) int32 {
 10123  	var paf uintptr = pFile
 10124  	*(*sqlite_int64)(unsafe.Pointer(pSize)) = func() int64 {
 10125  		if (*ApndFile)(unsafe.Pointer(paf)).FiMark >= int64(0) {
 10126  			return (*ApndFile)(unsafe.Pointer(paf)).FiMark - (*ApndFile)(unsafe.Pointer(paf)).FiPgOne
 10127  		}
 10128  		return int64(0)
 10129  	}()
 10130  	return SQLITE_OK
 10131  }
 10132  
 10133  func apndLock(tls *libc.TLS, pFile uintptr, eLock int32) int32 {
 10134  	pFile = pFile + uintptr(1)*24
 10135  	return (*struct {
 10136  		f func(*libc.TLS, uintptr, int32) int32
 10137  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxLock})).f(tls, pFile, eLock)
 10138  }
 10139  
 10140  func apndUnlock(tls *libc.TLS, pFile uintptr, eLock int32) int32 {
 10141  	pFile = pFile + uintptr(1)*24
 10142  	return (*struct {
 10143  		f func(*libc.TLS, uintptr, int32) int32
 10144  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxUnlock})).f(tls, pFile, eLock)
 10145  }
 10146  
 10147  func apndCheckReservedLock(tls *libc.TLS, pFile uintptr, pResOut uintptr) int32 {
 10148  	pFile = pFile + uintptr(1)*24
 10149  	return (*struct {
 10150  		f func(*libc.TLS, uintptr, uintptr) int32
 10151  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxCheckReservedLock})).f(tls, pFile, pResOut)
 10152  }
 10153  
 10154  func apndFileControl(tls *libc.TLS, pFile uintptr, op int32, pArg uintptr) int32 {
 10155  	bp := tls.Alloc(16)
 10156  	defer tls.Free(16)
 10157  
 10158  	var paf uintptr = pFile
 10159  	var rc int32
 10160  	pFile = pFile + uintptr(1)*24
 10161  	if op == SQLITE_FCNTL_SIZE_HINT {
 10162  		*(*sqlite3_int64)(unsafe.Pointer(pArg)) += (*ApndFile)(unsafe.Pointer(paf)).FiPgOne
 10163  	}
 10164  	rc = (*struct {
 10165  		f func(*libc.TLS, uintptr, int32, uintptr) int32
 10166  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxFileControl})).f(tls, pFile, op, pArg)
 10167  	if rc == SQLITE_OK && op == SQLITE_FCNTL_VFSNAME {
 10168  		*(*uintptr)(unsafe.Pointer(pArg)) = sqlite3.Xsqlite3_mprintf(tls, ts+3274, libc.VaList(bp, (*ApndFile)(unsafe.Pointer(paf)).FiPgOne, *(*uintptr)(unsafe.Pointer(pArg))))
 10169  	}
 10170  	return rc
 10171  }
 10172  
 10173  func apndSectorSize(tls *libc.TLS, pFile uintptr) int32 {
 10174  	pFile = pFile + uintptr(1)*24
 10175  	return (*struct {
 10176  		f func(*libc.TLS, uintptr) int32
 10177  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxSectorSize})).f(tls, pFile)
 10178  }
 10179  
 10180  func apndDeviceCharacteristics(tls *libc.TLS, pFile uintptr) int32 {
 10181  	pFile = pFile + uintptr(1)*24
 10182  	return (*struct {
 10183  		f func(*libc.TLS, uintptr) int32
 10184  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxDeviceCharacteristics})).f(tls, pFile)
 10185  }
 10186  
 10187  func apndShmMap(tls *libc.TLS, pFile uintptr, iPg int32, pgsz int32, bExtend int32, pp uintptr) int32 {
 10188  	pFile = pFile + uintptr(1)*24
 10189  	return (*struct {
 10190  		f func(*libc.TLS, uintptr, int32, int32, int32, uintptr) int32
 10191  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxShmMap})).f(tls, pFile, iPg, pgsz, bExtend, pp)
 10192  }
 10193  
 10194  func apndShmLock(tls *libc.TLS, pFile uintptr, offset int32, n int32, flags int32) int32 {
 10195  	pFile = pFile + uintptr(1)*24
 10196  	return (*struct {
 10197  		f func(*libc.TLS, uintptr, int32, int32, int32) int32
 10198  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxShmLock})).f(tls, pFile, offset, n, flags)
 10199  }
 10200  
 10201  func apndShmBarrier(tls *libc.TLS, pFile uintptr) {
 10202  	pFile = pFile + uintptr(1)*24
 10203  	(*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)
 10204  }
 10205  
 10206  func apndShmUnmap(tls *libc.TLS, pFile uintptr, deleteFlag int32) int32 {
 10207  	pFile = pFile + uintptr(1)*24
 10208  	return (*struct {
 10209  		f func(*libc.TLS, uintptr, int32) int32
 10210  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxShmUnmap})).f(tls, pFile, deleteFlag)
 10211  }
 10212  
 10213  func apndFetch(tls *libc.TLS, pFile uintptr, iOfst sqlite3_int64, iAmt int32, pp uintptr) int32 {
 10214  	var p uintptr = pFile
 10215  	if (*ApndFile)(unsafe.Pointer(p)).FiMark < int64(0) || iOfst+sqlite3_int64(iAmt) > (*ApndFile)(unsafe.Pointer(p)).FiMark {
 10216  		return SQLITE_IOERR
 10217  	}
 10218  	pFile = pFile + uintptr(1)*24
 10219  	return (*struct {
 10220  		f func(*libc.TLS, uintptr, sqlite3_int64, int32, uintptr) int32
 10221  	})(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)
 10222  }
 10223  
 10224  func apndUnfetch(tls *libc.TLS, pFile uintptr, iOfst sqlite3_int64, pPage uintptr) int32 {
 10225  	var p uintptr = pFile
 10226  	pFile = pFile + uintptr(1)*24
 10227  	return (*struct {
 10228  		f func(*libc.TLS, uintptr, sqlite3_int64, uintptr) int32
 10229  	})(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)
 10230  }
 10231  
 10232  func apndReadMark(tls *libc.TLS, sz sqlite3_int64, pFile uintptr) sqlite3_int64 {
 10233  	bp := tls.Alloc(25)
 10234  	defer tls.Free(25)
 10235  
 10236  	var rc int32
 10237  	var i int32
 10238  	var iMark sqlite3_int64
 10239  	var msbs int32 = 8 * (APND_MARK_FOS_SZ - 1)
 10240  
 10241  	if int64(APND_MARK_PREFIX_SZ+APND_MARK_FOS_SZ) != sz&int64(0x1ff) {
 10242  		return int64(-1)
 10243  	}
 10244  	rc = (*struct {
 10245  		f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 10246  	})(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))
 10247  	if rc != 0 {
 10248  		return int64(-1)
 10249  	}
 10250  	if libc.Xmemcmp(tls, bp, ts+3256, uint64(APND_MARK_PREFIX_SZ)) != 0 {
 10251  		return int64(-1)
 10252  	}
 10253  	iMark = sqlite3_int64(int32(*(*uint8)(unsafe.Pointer(bp + 17)))&0x7f) << msbs
 10254  	for i = 1; i < 8; i++ {
 10255  		msbs = msbs - 8
 10256  		iMark = iMark | sqlite3_int64(*(*uint8)(unsafe.Pointer(bp + uintptr(APND_MARK_PREFIX_SZ+i))))<<msbs
 10257  	}
 10258  	if iMark > sz-int64(APND_MARK_PREFIX_SZ+APND_MARK_FOS_SZ)-int64(512) {
 10259  		return int64(-1)
 10260  	}
 10261  	if iMark&int64(0x1ff) != 0 {
 10262  		return int64(-1)
 10263  	}
 10264  	return iMark
 10265  }
 10266  
 10267  var apvfsSqliteHdr = *(*[16]uint8)(unsafe.Pointer(ts + 3288))
 10268  
 10269  func apndIsAppendvfsDatabase(tls *libc.TLS, sz sqlite3_int64, pFile uintptr) int32 {
 10270  	bp := tls.Alloc(16)
 10271  	defer tls.Free(16)
 10272  
 10273  	var rc int32
 10274  
 10275  	var iMark sqlite3_int64 = apndReadMark(tls, sz, pFile)
 10276  	if iMark >= int64(0) {
 10277  		rc = (*struct {
 10278  			f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 10279  		})(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)
 10280  		if SQLITE_OK == rc &&
 10281  			libc.Xmemcmp(tls, bp, uintptr(unsafe.Pointer(&apvfsSqliteHdr)), uint64(unsafe.Sizeof([16]uint8{}))) == 0 &&
 10282  			sz&int64(0x1ff) == int64(APND_MARK_PREFIX_SZ+APND_MARK_FOS_SZ) &&
 10283  			sz >= int64(512+(APND_MARK_PREFIX_SZ+APND_MARK_FOS_SZ)) {
 10284  			return 1
 10285  		}
 10286  	}
 10287  	return 0
 10288  }
 10289  
 10290  func apndIsOrdinaryDatabaseFile(tls *libc.TLS, sz sqlite3_int64, pFile uintptr) int32 {
 10291  	bp := tls.Alloc(16)
 10292  	defer tls.Free(16)
 10293  
 10294  	if apndIsAppendvfsDatabase(tls, sz, pFile) != 0 ||
 10295  		sz&int64(0x1ff) != int64(0) ||
 10296  		SQLITE_OK != (*struct {
 10297  			f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 10298  		})(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)) ||
 10299  		libc.Xmemcmp(tls, bp, uintptr(unsafe.Pointer(&apvfsSqliteHdr)), uint64(unsafe.Sizeof([16]uint8{}))) != 0 {
 10300  		return 0
 10301  	} else {
 10302  		return 1
 10303  	}
 10304  	return int32(0)
 10305  }
 10306  
 10307  func apndOpen(tls *libc.TLS, pApndVfs uintptr, zName uintptr, pFile uintptr, flags int32, pOutFlags uintptr) int32 {
 10308  	bp := tls.Alloc(8)
 10309  	defer tls.Free(8)
 10310  
 10311  	var pApndFile uintptr = pFile
 10312  	var pBaseFile uintptr = pFile + uintptr(1)*24
 10313  	var pBaseVfs uintptr = (*sqlite3_vfs)(unsafe.Pointer(pApndVfs)).FpAppData
 10314  	var rc int32
 10315  	*(*sqlite3_int64)(unsafe.Pointer(bp)) = int64(0)
 10316  	if flags&SQLITE_OPEN_MAIN_DB == 0 {
 10317  		return (*struct {
 10318  			f func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr) int32
 10319  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pBaseVfs)).FxOpen})).f(tls, pBaseVfs, zName, pFile, flags, pOutFlags)
 10320  	}
 10321  	libc.Xmemset(tls, pApndFile, 0, uint64(unsafe.Sizeof(ApndFile{})))
 10322  	(*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods = uintptr(unsafe.Pointer(&apnd_io_methods))
 10323  	(*ApndFile)(unsafe.Pointer(pApndFile)).FiMark = int64(-1)
 10324  
 10325  	rc = (*struct {
 10326  		f func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr) int32
 10327  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pBaseVfs)).FxOpen})).f(tls, pBaseVfs, zName, pBaseFile, flags, pOutFlags)
 10328  	if rc == SQLITE_OK {
 10329  		rc = (*struct {
 10330  			f func(*libc.TLS, uintptr, uintptr) int32
 10331  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pBaseFile)).FpMethods)).FxFileSize})).f(tls, pBaseFile, bp)
 10332  		if rc != 0 {
 10333  			(*struct {
 10334  				f func(*libc.TLS, uintptr) int32
 10335  			})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pBaseFile)).FpMethods)).FxClose})).f(tls, pBaseFile)
 10336  		}
 10337  	}
 10338  	if rc != 0 {
 10339  		(*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods = uintptr(0)
 10340  		return rc
 10341  	}
 10342  	if apndIsOrdinaryDatabaseFile(tls, *(*sqlite3_int64)(unsafe.Pointer(bp)), pBaseFile) != 0 {
 10343  		libc.Xmemmove(tls, pApndFile, pBaseFile, uint64((*sqlite3_vfs)(unsafe.Pointer(pBaseVfs)).FszOsFile))
 10344  		return SQLITE_OK
 10345  	}
 10346  	(*ApndFile)(unsafe.Pointer(pApndFile)).FiPgOne = apndReadMark(tls, *(*sqlite3_int64)(unsafe.Pointer(bp)), pFile)
 10347  	if (*ApndFile)(unsafe.Pointer(pApndFile)).FiPgOne >= int64(0) {
 10348  		(*ApndFile)(unsafe.Pointer(pApndFile)).FiMark = *(*sqlite3_int64)(unsafe.Pointer(bp)) - int64(APND_MARK_PREFIX_SZ+APND_MARK_FOS_SZ)
 10349  		return SQLITE_OK
 10350  	}
 10351  	if flags&SQLITE_OPEN_CREATE == 0 {
 10352  		(*struct {
 10353  			f func(*libc.TLS, uintptr) int32
 10354  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pBaseFile)).FpMethods)).FxClose})).f(tls, pBaseFile)
 10355  		rc = SQLITE_CANTOPEN
 10356  		(*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods = uintptr(0)
 10357  	} else {
 10358  		(*ApndFile)(unsafe.Pointer(pApndFile)).FiPgOne = (*(*sqlite3_int64)(unsafe.Pointer(bp)) + int64(APND_ROUNDUP-1)) & libc.CplInt64(int64(APND_ROUNDUP-1))
 10359  	}
 10360  	return rc
 10361  }
 10362  
 10363  func apndDelete(tls *libc.TLS, pVfs uintptr, zPath uintptr, dirSync int32) int32 {
 10364  	return (*struct {
 10365  		f func(*libc.TLS, uintptr, uintptr, int32) int32
 10366  	})(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)
 10367  }
 10368  
 10369  func apndAccess(tls *libc.TLS, pVfs uintptr, zPath uintptr, flags int32, pResOut uintptr) int32 {
 10370  	return (*struct {
 10371  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 10372  	})(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)
 10373  }
 10374  
 10375  func apndFullPathname(tls *libc.TLS, pVfs uintptr, zPath uintptr, nOut int32, zOut uintptr) int32 {
 10376  	return (*struct {
 10377  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 10378  	})(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)
 10379  }
 10380  
 10381  func apndDlOpen(tls *libc.TLS, pVfs uintptr, zPath uintptr) uintptr {
 10382  	return (*struct {
 10383  		f func(*libc.TLS, uintptr, uintptr) uintptr
 10384  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData)).FxDlOpen})).f(tls, (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData, zPath)
 10385  }
 10386  
 10387  func apndDlError(tls *libc.TLS, pVfs uintptr, nByte int32, zErrMsg uintptr) {
 10388  	(*struct {
 10389  		f func(*libc.TLS, uintptr, int32, uintptr)
 10390  	})(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)
 10391  }
 10392  
 10393  func apndDlSym(tls *libc.TLS, pVfs uintptr, p uintptr, zSym uintptr) uintptr {
 10394  	return (*struct {
 10395  		f func(*libc.TLS, uintptr, uintptr, uintptr) uintptr
 10396  	})(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)
 10397  }
 10398  
 10399  func apndDlClose(tls *libc.TLS, pVfs uintptr, pHandle uintptr) {
 10400  	(*struct {
 10401  		f func(*libc.TLS, uintptr, uintptr)
 10402  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData)).FxDlClose})).f(tls, (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData, pHandle)
 10403  }
 10404  
 10405  func apndRandomness(tls *libc.TLS, pVfs uintptr, nByte int32, zBufOut uintptr) int32 {
 10406  	return (*struct {
 10407  		f func(*libc.TLS, uintptr, int32, uintptr) int32
 10408  	})(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)
 10409  }
 10410  
 10411  func apndSleep(tls *libc.TLS, pVfs uintptr, nMicro int32) int32 {
 10412  	return (*struct {
 10413  		f func(*libc.TLS, uintptr, int32) int32
 10414  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData)).FxSleep})).f(tls, (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData, nMicro)
 10415  }
 10416  
 10417  func apndCurrentTime(tls *libc.TLS, pVfs uintptr, pTimeOut uintptr) int32 {
 10418  	return (*struct {
 10419  		f func(*libc.TLS, uintptr, uintptr) int32
 10420  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData)).FxCurrentTime})).f(tls, (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData, pTimeOut)
 10421  }
 10422  
 10423  func apndGetLastError(tls *libc.TLS, pVfs uintptr, a int32, b uintptr) int32 {
 10424  	return (*struct {
 10425  		f func(*libc.TLS, uintptr, int32, uintptr) int32
 10426  	})(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)
 10427  }
 10428  
 10429  func apndCurrentTimeInt64(tls *libc.TLS, pVfs uintptr, p uintptr) int32 {
 10430  	return (*struct {
 10431  		f func(*libc.TLS, uintptr, uintptr) int32
 10432  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData)).FxCurrentTimeInt64})).f(tls, (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData, p)
 10433  }
 10434  
 10435  func apndSetSystemCall(tls *libc.TLS, pVfs uintptr, zName uintptr, pCall sqlite3_syscall_ptr) int32 {
 10436  	return (*struct {
 10437  		f func(*libc.TLS, uintptr, uintptr, sqlite3_syscall_ptr) int32
 10438  	})(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)
 10439  }
 10440  
 10441  func apndGetSystemCall(tls *libc.TLS, pVfs uintptr, zName uintptr) sqlite3_syscall_ptr {
 10442  	return (*struct {
 10443  		f func(*libc.TLS, uintptr, uintptr) sqlite3_syscall_ptr
 10444  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData)).FxGetSystemCall})).f(tls, (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData, zName)
 10445  }
 10446  
 10447  func apndNextSystemCall(tls *libc.TLS, pVfs uintptr, zName uintptr) uintptr {
 10448  	return (*struct {
 10449  		f func(*libc.TLS, uintptr, uintptr) uintptr
 10450  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData)).FxNextSystemCall})).f(tls, (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData, zName)
 10451  }
 10452  
 10453  func sqlite3_appendvfs_init(tls *libc.TLS, db uintptr, pzErrMsg uintptr, pApi uintptr) int32 {
 10454  	var rc int32 = SQLITE_OK
 10455  	var pOrig uintptr
 10456  	_ = pApi
 10457  
 10458  	_ = pzErrMsg
 10459  	_ = db
 10460  	pOrig = sqlite3.Xsqlite3_vfs_find(tls, uintptr(0))
 10461  	if pOrig == uintptr(0) {
 10462  		return SQLITE_ERROR
 10463  	}
 10464  	apnd_vfs.FiVersion = (*sqlite3_vfs)(unsafe.Pointer(pOrig)).FiVersion
 10465  	apnd_vfs.FpAppData = pOrig
 10466  	apnd_vfs.FszOsFile = int32(uint64((*sqlite3_vfs)(unsafe.Pointer(pOrig)).FszOsFile) + uint64(unsafe.Sizeof(ApndFile{})))
 10467  	rc = sqlite3.Xsqlite3_vfs_register(tls, uintptr(unsafe.Pointer(&apnd_vfs)), 0)
 10468  	if rc == SQLITE_OK {
 10469  		rc = SQLITE_OK | int32(1)<<8
 10470  	}
 10471  	return rc
 10472  }
 10473  
 10474  type idtype_t = uint32
 10475  
 10476  type div_t = struct {
 10477  	Fquot int32
 10478  	Frem  int32
 10479  }
 10480  
 10481  type ldiv_t = struct {
 10482  	Fquot int64
 10483  	Frem  int64
 10484  }
 10485  
 10486  type lldiv_t = struct {
 10487  	Fquot int64
 10488  	Frem  int64
 10489  }
 10490  
 10491  type u_char = uint8
 10492  type u_short = uint16
 10493  type u_int = uint32
 10494  type u_long = uint64
 10495  type quad_t = int64
 10496  type u_quad_t = uint64
 10497  type fsid_t = struct{ F__val [2]int32 }
 10498  type loff_t = int64
 10499  
 10500  type ino_t = uint64
 10501  
 10502  type dev_t = uint64
 10503  
 10504  type gid_t = uint32
 10505  
 10506  type mode_t = uint32
 10507  
 10508  type nlink_t = uint64
 10509  
 10510  type uid_t = uint32
 10511  
 10512  type pid_t = int32
 10513  
 10514  type id_t = uint32
 10515  
 10516  type daddr_t = int32
 10517  type caddr_t = uintptr
 10518  
 10519  type key_t = int32
 10520  
 10521  type clock_t = int64
 10522  
 10523  type clockid_t = int32
 10524  
 10525  type time_t = int64
 10526  
 10527  type timer_t = uintptr
 10528  
 10529  type ulong = uint64
 10530  type ushort = uint16
 10531  type uint = uint32
 10532  
 10533  type int8_t = int8
 10534  type int16_t = int16
 10535  type int32_t = int32
 10536  type int64_t = int64
 10537  
 10538  type u_int8_t = uint8
 10539  type u_int16_t = uint16
 10540  type u_int32_t = uint32
 10541  type u_int64_t = uint64
 10542  
 10543  type register_t = int32
 10544  
 10545  type sigset_t = struct{ F__val [16]uint64 }
 10546  
 10547  type timeval = struct {
 10548  	Ftv_sec  int64
 10549  	Ftv_usec int64
 10550  }
 10551  
 10552  type timespec = struct {
 10553  	Ftv_sec  int64
 10554  	Ftv_nsec int64
 10555  }
 10556  
 10557  type suseconds_t = int64
 10558  
 10559  type fd_set = struct{ F__fds_bits [16]int64 }
 10560  
 10561  type fd_mask = int64
 10562  
 10563  type blksize_t = int64
 10564  
 10565  type blkcnt_t = int64
 10566  type fsblkcnt_t = uint64
 10567  type fsfilcnt_t = uint64
 10568  
 10569  type __pthread_internal_list = struct {
 10570  	F__prev uintptr
 10571  	F__next uintptr
 10572  }
 10573  
 10574  type __pthread_internal_slist = struct{ F__next uintptr }
 10575  
 10576  type __pthread_mutex_s = struct {
 10577  	F__lock    int32
 10578  	F__count   uint32
 10579  	F__owner   int32
 10580  	F__nusers  uint32
 10581  	F__kind    int32
 10582  	F__spins   int16
 10583  	F__elision int16
 10584  	F__list    struct {
 10585  		F__prev uintptr
 10586  		F__next uintptr
 10587  	}
 10588  }
 10589  
 10590  type __pthread_rwlock_arch_t = struct {
 10591  	F__readers       uint32
 10592  	F__writers       uint32
 10593  	F__wrphase_futex uint32
 10594  	F__writers_futex uint32
 10595  	F__pad3          uint32
 10596  	F__pad4          uint32
 10597  	F__cur_writer    int32
 10598  	F__shared        int32
 10599  	F__rwelision     uint8
 10600  	F__pad1          [7]uint8
 10601  	F__pad2          uint64
 10602  	F__flags         uint32
 10603  	F__ccgo_pad1     [4]byte
 10604  }
 10605  
 10606  type __pthread_cond_s = struct {
 10607  	F__0            struct{ F__wseq uint64 }
 10608  	F__8            struct{ F__g1_start uint64 }
 10609  	F__g_refs       [2]uint32
 10610  	F__g_size       [2]uint32
 10611  	F__g1_orig_size uint32
 10612  	F__wrefs        uint32
 10613  	F__g_signals    [2]uint32
 10614  }
 10615  
 10616  type pthread_t = uint64
 10617  
 10618  type pthread_mutexattr_t = struct {
 10619  	F__ccgo_pad1 [0]uint32
 10620  	F__size      [4]uint8
 10621  }
 10622  
 10623  type pthread_condattr_t = struct {
 10624  	F__ccgo_pad1 [0]uint32
 10625  	F__size      [4]uint8
 10626  }
 10627  
 10628  type pthread_key_t = uint32
 10629  
 10630  type pthread_once_t = int32
 10631  
 10632  type pthread_attr_t1 = struct {
 10633  	F__ccgo_pad1 [0]uint64
 10634  	F__size      [56]uint8
 10635  }
 10636  
 10637  type pthread_attr_t = pthread_attr_t1
 10638  
 10639  type pthread_mutex_t = struct{ F__data __pthread_mutex_s }
 10640  
 10641  type pthread_cond_t = struct{ F__data __pthread_cond_s }
 10642  
 10643  type pthread_rwlock_t = struct{ F__data __pthread_rwlock_arch_t }
 10644  
 10645  type pthread_rwlockattr_t = struct {
 10646  	F__ccgo_pad1 [0]uint64
 10647  	F__size      [8]uint8
 10648  }
 10649  
 10650  type pthread_spinlock_t = int32
 10651  
 10652  type pthread_barrier_t = struct {
 10653  	F__ccgo_pad1 [0]uint64
 10654  	F__size      [32]uint8
 10655  }
 10656  
 10657  type pthread_barrierattr_t = struct {
 10658  	F__ccgo_pad1 [0]uint32
 10659  	F__size      [4]uint8
 10660  }
 10661  
 10662  type random_data = struct {
 10663  	Ffptr        uintptr
 10664  	Frptr        uintptr
 10665  	Fstate       uintptr
 10666  	Frand_type   int32
 10667  	Frand_deg    int32
 10668  	Frand_sep    int32
 10669  	F__ccgo_pad1 [4]byte
 10670  	Fend_ptr     uintptr
 10671  }
 10672  
 10673  type drand48_data = struct {
 10674  	F__x     [3]uint16
 10675  	F__old_x [3]uint16
 10676  	F__c     uint16
 10677  	F__init  uint16
 10678  	F__a     uint64
 10679  }
 10680  
 10681  type amatch_vtab1 = struct {
 10682  	Fbase        sqlite3_vtab
 10683  	FzClassName  uintptr
 10684  	FzDb         uintptr
 10685  	FzSelf       uintptr
 10686  	FzCostTab    uintptr
 10687  	FzVocabTab   uintptr
 10688  	FzVocabWord  uintptr
 10689  	FzVocabLang  uintptr
 10690  	FpRule       uintptr
 10691  	FrIns        amatch_cost
 10692  	FrDel        amatch_cost
 10693  	FrSub        amatch_cost
 10694  	F__ccgo_pad1 [4]byte
 10695  	Fdb          uintptr
 10696  	FpVCheck     uintptr
 10697  	FnCursor     int32
 10698  	F__ccgo_pad2 [4]byte
 10699  }
 10700  
 10701  type amatch_vtab = amatch_vtab1
 10702  type amatch_cursor1 = struct {
 10703  	Fbase        sqlite3_vtab_cursor
 10704  	FiRowid      sqlite3_int64
 10705  	FiLang       amatch_langid
 10706  	FrLimit      amatch_cost
 10707  	FnBuf        int32
 10708  	FoomErr      int32
 10709  	FnWord       int32
 10710  	F__ccgo_pad1 [4]byte
 10711  	FzBuf        uintptr
 10712  	FzInput      uintptr
 10713  	FpVtab       uintptr
 10714  	FpAllWords   uintptr
 10715  	FpCurrent    uintptr
 10716  	FpCost       uintptr
 10717  	FpWord       uintptr
 10718  }
 10719  
 10720  type amatch_cursor = amatch_cursor1
 10721  type amatch_rule1 = struct {
 10722  	FpNext       uintptr
 10723  	FzFrom       uintptr
 10724  	FrCost       amatch_cost
 10725  	FiLang       amatch_langid
 10726  	FnFrom       amatch_len
 10727  	FnTo         amatch_len
 10728  	FzTo         [4]uint8
 10729  	F__ccgo_pad1 [2]byte
 10730  }
 10731  
 10732  type amatch_rule = amatch_rule1
 10733  type amatch_word1 = struct {
 10734  	FpNext  uintptr
 10735  	FsCost  amatch_avl
 10736  	FsWord  amatch_avl
 10737  	FrCost  amatch_cost
 10738  	FiSeq   int32
 10739  	FzCost  [10]uint8
 10740  	FnMatch int16
 10741  	FzWord  [4]uint8
 10742  }
 10743  
 10744  type amatch_word = amatch_word1
 10745  type amatch_avl1 = struct {
 10746  	FpWord       uintptr
 10747  	FzKey        uintptr
 10748  	FpBefore     uintptr
 10749  	FpAfter      uintptr
 10750  	FpUp         uintptr
 10751  	Fheight      int16
 10752  	Fimbalance   int16
 10753  	F__ccgo_pad1 [4]byte
 10754  }
 10755  
 10756  type amatch_avl = amatch_avl1
 10757  
 10758  func amatchAvlRecomputeHeight(tls *libc.TLS, p uintptr) {
 10759  	var hBefore int16
 10760  	if (*amatch_avl)(unsafe.Pointer(p)).FpBefore != 0 {
 10761  		hBefore = (*amatch_avl)(unsafe.Pointer((*amatch_avl)(unsafe.Pointer(p)).FpBefore)).Fheight
 10762  	} else {
 10763  		hBefore = int16(0)
 10764  	}
 10765  	var hAfter int16
 10766  	if (*amatch_avl)(unsafe.Pointer(p)).FpAfter != 0 {
 10767  		hAfter = (*amatch_avl)(unsafe.Pointer((*amatch_avl)(unsafe.Pointer(p)).FpAfter)).Fheight
 10768  	} else {
 10769  		hAfter = int16(0)
 10770  	}
 10771  	(*amatch_avl)(unsafe.Pointer(p)).Fimbalance = int16(int32(hBefore) - int32(hAfter))
 10772  	(*amatch_avl)(unsafe.Pointer(p)).Fheight = int16(func() int32 {
 10773  		if int32(hBefore) > int32(hAfter) {
 10774  			return int32(hBefore)
 10775  		}
 10776  		return int32(hAfter)
 10777  	}() + 1)
 10778  }
 10779  
 10780  func amatchAvlRotateBefore(tls *libc.TLS, pP uintptr) uintptr {
 10781  	var pB uintptr = (*amatch_avl)(unsafe.Pointer(pP)).FpBefore
 10782  	var pY uintptr = (*amatch_avl)(unsafe.Pointer(pB)).FpAfter
 10783  	(*amatch_avl)(unsafe.Pointer(pB)).FpUp = (*amatch_avl)(unsafe.Pointer(pP)).FpUp
 10784  	(*amatch_avl)(unsafe.Pointer(pB)).FpAfter = pP
 10785  	(*amatch_avl)(unsafe.Pointer(pP)).FpUp = pB
 10786  	(*amatch_avl)(unsafe.Pointer(pP)).FpBefore = pY
 10787  	if pY != 0 {
 10788  		(*amatch_avl)(unsafe.Pointer(pY)).FpUp = pP
 10789  	}
 10790  	amatchAvlRecomputeHeight(tls, pP)
 10791  	amatchAvlRecomputeHeight(tls, pB)
 10792  	return pB
 10793  }
 10794  
 10795  func amatchAvlRotateAfter(tls *libc.TLS, pP uintptr) uintptr {
 10796  	var pA uintptr = (*amatch_avl)(unsafe.Pointer(pP)).FpAfter
 10797  	var pY uintptr = (*amatch_avl)(unsafe.Pointer(pA)).FpBefore
 10798  	(*amatch_avl)(unsafe.Pointer(pA)).FpUp = (*amatch_avl)(unsafe.Pointer(pP)).FpUp
 10799  	(*amatch_avl)(unsafe.Pointer(pA)).FpBefore = pP
 10800  	(*amatch_avl)(unsafe.Pointer(pP)).FpUp = pA
 10801  	(*amatch_avl)(unsafe.Pointer(pP)).FpAfter = pY
 10802  	if pY != 0 {
 10803  		(*amatch_avl)(unsafe.Pointer(pY)).FpUp = pP
 10804  	}
 10805  	amatchAvlRecomputeHeight(tls, pP)
 10806  	amatchAvlRecomputeHeight(tls, pA)
 10807  	return pA
 10808  }
 10809  
 10810  func amatchAvlFromPtr(tls *libc.TLS, p uintptr, pp uintptr) uintptr {
 10811  	var pUp uintptr = (*amatch_avl)(unsafe.Pointer(p)).FpUp
 10812  	if pUp == uintptr(0) {
 10813  		return pp
 10814  	}
 10815  	if (*amatch_avl)(unsafe.Pointer(pUp)).FpAfter == p {
 10816  		return pUp + 24
 10817  	}
 10818  	return pUp + 16
 10819  }
 10820  
 10821  func amatchAvlBalance(tls *libc.TLS, p uintptr) uintptr {
 10822  	bp := tls.Alloc(8)
 10823  	defer tls.Free(8)
 10824  	*(*uintptr)(unsafe.Pointer(bp)) = p
 10825  
 10826  	var pTop uintptr = *(*uintptr)(unsafe.Pointer(bp))
 10827  	var pp uintptr
 10828  	for *(*uintptr)(unsafe.Pointer(bp)) != 0 {
 10829  		amatchAvlRecomputeHeight(tls, *(*uintptr)(unsafe.Pointer(bp)))
 10830  		if int32((*amatch_avl)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp)))).Fimbalance) >= 2 {
 10831  			var pB uintptr = (*amatch_avl)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp)))).FpBefore
 10832  			if int32((*amatch_avl)(unsafe.Pointer(pB)).Fimbalance) < 0 {
 10833  				(*amatch_avl)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp)))).FpBefore = amatchAvlRotateAfter(tls, pB)
 10834  			}
 10835  			pp = amatchAvlFromPtr(tls, *(*uintptr)(unsafe.Pointer(bp)), bp)
 10836  			*(*uintptr)(unsafe.Pointer(bp)) = libc.AssignPtrUintptr(pp, amatchAvlRotateBefore(tls, *(*uintptr)(unsafe.Pointer(bp))))
 10837  		} else if int32((*amatch_avl)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp)))).Fimbalance) <= -2 {
 10838  			var pA uintptr = (*amatch_avl)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp)))).FpAfter
 10839  			if int32((*amatch_avl)(unsafe.Pointer(pA)).Fimbalance) > 0 {
 10840  				(*amatch_avl)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp)))).FpAfter = amatchAvlRotateBefore(tls, pA)
 10841  			}
 10842  			pp = amatchAvlFromPtr(tls, *(*uintptr)(unsafe.Pointer(bp)), bp)
 10843  			*(*uintptr)(unsafe.Pointer(bp)) = libc.AssignPtrUintptr(pp, amatchAvlRotateAfter(tls, *(*uintptr)(unsafe.Pointer(bp))))
 10844  		}
 10845  		pTop = *(*uintptr)(unsafe.Pointer(bp))
 10846  		*(*uintptr)(unsafe.Pointer(bp)) = (*amatch_avl)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp)))).FpUp
 10847  	}
 10848  	return pTop
 10849  }
 10850  
 10851  func amatchAvlSearch(tls *libc.TLS, p uintptr, zKey uintptr) uintptr {
 10852  	var c int32
 10853  	for p != 0 && libc.AssignInt32(&c, libc.Xstrcmp(tls, zKey, (*amatch_avl)(unsafe.Pointer(p)).FzKey)) != 0 {
 10854  		if c < 0 {
 10855  			p = (*amatch_avl)(unsafe.Pointer(p)).FpBefore
 10856  		} else {
 10857  			p = (*amatch_avl)(unsafe.Pointer(p)).FpAfter
 10858  		}
 10859  	}
 10860  	return p
 10861  }
 10862  
 10863  func amatchAvlFirst(tls *libc.TLS, p uintptr) uintptr {
 10864  	if p != 0 {
 10865  		for (*amatch_avl)(unsafe.Pointer(p)).FpBefore != 0 {
 10866  			p = (*amatch_avl)(unsafe.Pointer(p)).FpBefore
 10867  		}
 10868  	}
 10869  	return p
 10870  }
 10871  
 10872  func amatchAvlInsert(tls *libc.TLS, ppHead uintptr, pNew uintptr) uintptr {
 10873  	var c int32
 10874  	var p uintptr = *(*uintptr)(unsafe.Pointer(ppHead))
 10875  	if p == uintptr(0) {
 10876  		p = pNew
 10877  		(*amatch_avl)(unsafe.Pointer(pNew)).FpUp = uintptr(0)
 10878  	} else {
 10879  		for p != 0 {
 10880  			c = libc.Xstrcmp(tls, (*amatch_avl)(unsafe.Pointer(pNew)).FzKey, (*amatch_avl)(unsafe.Pointer(p)).FzKey)
 10881  			if c < 0 {
 10882  				if (*amatch_avl)(unsafe.Pointer(p)).FpBefore != 0 {
 10883  					p = (*amatch_avl)(unsafe.Pointer(p)).FpBefore
 10884  				} else {
 10885  					(*amatch_avl)(unsafe.Pointer(p)).FpBefore = pNew
 10886  					(*amatch_avl)(unsafe.Pointer(pNew)).FpUp = p
 10887  					break
 10888  				}
 10889  			} else if c > 0 {
 10890  				if (*amatch_avl)(unsafe.Pointer(p)).FpAfter != 0 {
 10891  					p = (*amatch_avl)(unsafe.Pointer(p)).FpAfter
 10892  				} else {
 10893  					(*amatch_avl)(unsafe.Pointer(p)).FpAfter = pNew
 10894  					(*amatch_avl)(unsafe.Pointer(pNew)).FpUp = p
 10895  					break
 10896  				}
 10897  			} else {
 10898  				return p
 10899  			}
 10900  		}
 10901  	}
 10902  	(*amatch_avl)(unsafe.Pointer(pNew)).FpBefore = uintptr(0)
 10903  	(*amatch_avl)(unsafe.Pointer(pNew)).FpAfter = uintptr(0)
 10904  	(*amatch_avl)(unsafe.Pointer(pNew)).Fheight = int16(1)
 10905  	(*amatch_avl)(unsafe.Pointer(pNew)).Fimbalance = int16(0)
 10906  	*(*uintptr)(unsafe.Pointer(ppHead)) = amatchAvlBalance(tls, p)
 10907  
 10908  	return uintptr(0)
 10909  }
 10910  
 10911  func amatchAvlRemove(tls *libc.TLS, ppHead uintptr, pOld uintptr) {
 10912  	var ppParent uintptr
 10913  	var pBalance uintptr = uintptr(0)
 10914  
 10915  	ppParent = amatchAvlFromPtr(tls, pOld, ppHead)
 10916  	if (*amatch_avl)(unsafe.Pointer(pOld)).FpBefore == uintptr(0) && (*amatch_avl)(unsafe.Pointer(pOld)).FpAfter == uintptr(0) {
 10917  		*(*uintptr)(unsafe.Pointer(ppParent)) = uintptr(0)
 10918  		pBalance = (*amatch_avl)(unsafe.Pointer(pOld)).FpUp
 10919  	} else if (*amatch_avl)(unsafe.Pointer(pOld)).FpBefore != 0 && (*amatch_avl)(unsafe.Pointer(pOld)).FpAfter != 0 {
 10920  		var pX uintptr
 10921  		var pY uintptr
 10922  		pX = amatchAvlFirst(tls, (*amatch_avl)(unsafe.Pointer(pOld)).FpAfter)
 10923  		*(*uintptr)(unsafe.Pointer(amatchAvlFromPtr(tls, pX, uintptr(0)))) = (*amatch_avl)(unsafe.Pointer(pX)).FpAfter
 10924  		if (*amatch_avl)(unsafe.Pointer(pX)).FpAfter != 0 {
 10925  			(*amatch_avl)(unsafe.Pointer((*amatch_avl)(unsafe.Pointer(pX)).FpAfter)).FpUp = (*amatch_avl)(unsafe.Pointer(pX)).FpUp
 10926  		}
 10927  		pBalance = (*amatch_avl)(unsafe.Pointer(pX)).FpUp
 10928  		(*amatch_avl)(unsafe.Pointer(pX)).FpAfter = (*amatch_avl)(unsafe.Pointer(pOld)).FpAfter
 10929  		if (*amatch_avl)(unsafe.Pointer(pX)).FpAfter != 0 {
 10930  			(*amatch_avl)(unsafe.Pointer((*amatch_avl)(unsafe.Pointer(pX)).FpAfter)).FpUp = pX
 10931  		} else {
 10932  			pBalance = pX
 10933  		}
 10934  		(*amatch_avl)(unsafe.Pointer(pX)).FpBefore = libc.AssignUintptr(&pY, (*amatch_avl)(unsafe.Pointer(pOld)).FpBefore)
 10935  		if pY != 0 {
 10936  			(*amatch_avl)(unsafe.Pointer(pY)).FpUp = pX
 10937  		}
 10938  		(*amatch_avl)(unsafe.Pointer(pX)).FpUp = (*amatch_avl)(unsafe.Pointer(pOld)).FpUp
 10939  		*(*uintptr)(unsafe.Pointer(ppParent)) = pX
 10940  	} else if (*amatch_avl)(unsafe.Pointer(pOld)).FpBefore == uintptr(0) {
 10941  		*(*uintptr)(unsafe.Pointer(ppParent)) = libc.AssignUintptr(&pBalance, (*amatch_avl)(unsafe.Pointer(pOld)).FpAfter)
 10942  		(*amatch_avl)(unsafe.Pointer(pBalance)).FpUp = (*amatch_avl)(unsafe.Pointer(pOld)).FpUp
 10943  	} else if (*amatch_avl)(unsafe.Pointer(pOld)).FpAfter == uintptr(0) {
 10944  		*(*uintptr)(unsafe.Pointer(ppParent)) = libc.AssignUintptr(&pBalance, (*amatch_avl)(unsafe.Pointer(pOld)).FpBefore)
 10945  		(*amatch_avl)(unsafe.Pointer(pBalance)).FpUp = (*amatch_avl)(unsafe.Pointer(pOld)).FpUp
 10946  	}
 10947  	*(*uintptr)(unsafe.Pointer(ppHead)) = amatchAvlBalance(tls, pBalance)
 10948  	(*amatch_avl)(unsafe.Pointer(pOld)).FpUp = uintptr(0)
 10949  	(*amatch_avl)(unsafe.Pointer(pOld)).FpBefore = uintptr(0)
 10950  	(*amatch_avl)(unsafe.Pointer(pOld)).FpAfter = uintptr(0)
 10951  
 10952  }
 10953  
 10954  type amatch_cost = int32
 10955  type amatch_len = int8
 10956  type amatch_langid = int32
 10957  
 10958  func amatchMergeRules(tls *libc.TLS, pA uintptr, pB uintptr) uintptr {
 10959  	bp := tls.Alloc(32)
 10960  	defer tls.Free(32)
 10961  
 10962  	var pTail uintptr
 10963  
 10964  	pTail = bp
 10965  	for pA != 0 && pB != 0 {
 10966  		if (*amatch_rule)(unsafe.Pointer(pA)).FrCost <= (*amatch_rule)(unsafe.Pointer(pB)).FrCost {
 10967  			(*amatch_rule)(unsafe.Pointer(pTail)).FpNext = pA
 10968  			pTail = pA
 10969  			pA = (*amatch_rule)(unsafe.Pointer(pA)).FpNext
 10970  		} else {
 10971  			(*amatch_rule)(unsafe.Pointer(pTail)).FpNext = pB
 10972  			pTail = pB
 10973  			pB = (*amatch_rule)(unsafe.Pointer(pB)).FpNext
 10974  		}
 10975  	}
 10976  	if pA == uintptr(0) {
 10977  		(*amatch_rule)(unsafe.Pointer(pTail)).FpNext = pB
 10978  	} else {
 10979  		(*amatch_rule)(unsafe.Pointer(pTail)).FpNext = pA
 10980  	}
 10981  	return (*amatch_rule)(unsafe.Pointer(bp)).FpNext
 10982  }
 10983  
 10984  func amatchLoadOneRule(tls *libc.TLS, p uintptr, pStmt uintptr, ppRule uintptr, pzErr uintptr) int32 {
 10985  	bp := tls.Alloc(48)
 10986  	defer tls.Free(48)
 10987  
 10988  	var iLang sqlite3_int64 = sqlite3.Xsqlite3_column_int64(tls, pStmt, 0)
 10989  	var zFrom uintptr = sqlite3.Xsqlite3_column_text(tls, pStmt, 1)
 10990  	var zTo uintptr = sqlite3.Xsqlite3_column_text(tls, pStmt, 2)
 10991  	var rCost amatch_cost = sqlite3.Xsqlite3_column_int(tls, pStmt, 3)
 10992  
 10993  	var rc int32 = SQLITE_OK
 10994  	var nFrom int32
 10995  	var nTo int32
 10996  	var pRule uintptr = uintptr(0)
 10997  
 10998  	if zFrom == uintptr(0) {
 10999  		zFrom = ts + 584
 11000  	}
 11001  	if zTo == uintptr(0) {
 11002  		zTo = ts + 584
 11003  	}
 11004  	nFrom = int32(libc.Xstrlen(tls, zFrom))
 11005  	nTo = int32(libc.Xstrlen(tls, zTo))
 11006  
 11007  	if libc.Xstrcmp(tls, zFrom, zTo) == 0 {
 11008  		if int32(*(*uint8)(unsafe.Pointer(zFrom))) == '?' && int32(*(*uint8)(unsafe.Pointer(zFrom + 1))) == 0 {
 11009  			if (*amatch_vtab)(unsafe.Pointer(p)).FrSub == 0 || (*amatch_vtab)(unsafe.Pointer(p)).FrSub > rCost {
 11010  				(*amatch_vtab)(unsafe.Pointer(p)).FrSub = rCost
 11011  			}
 11012  		}
 11013  		*(*uintptr)(unsafe.Pointer(ppRule)) = uintptr(0)
 11014  		return SQLITE_OK
 11015  	}
 11016  
 11017  	if rCost <= 0 || rCost > AMATCH_MX_COST {
 11018  		*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+3304,
 11019  			libc.VaList(bp, (*amatch_vtab)(unsafe.Pointer(p)).FzClassName, AMATCH_MX_COST))
 11020  		rc = SQLITE_ERROR
 11021  	} else if nFrom > AMATCH_MX_LENGTH || nTo > AMATCH_MX_LENGTH {
 11022  		*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+3338,
 11023  			libc.VaList(bp+16, (*amatch_vtab)(unsafe.Pointer(p)).FzClassName, AMATCH_MX_LENGTH))
 11024  		rc = SQLITE_ERROR
 11025  	} else if iLang < int64(0) || iLang > int64(AMATCH_MX_LANGID) {
 11026  		*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+3370,
 11027  			libc.VaList(bp+32, (*amatch_vtab)(unsafe.Pointer(p)).FzClassName, AMATCH_MX_LANGID))
 11028  		rc = SQLITE_ERROR
 11029  	} else if libc.Xstrcmp(tls, zFrom, ts+584) == 0 && libc.Xstrcmp(tls, zTo, ts+3405) == 0 {
 11030  		if (*amatch_vtab)(unsafe.Pointer(p)).FrIns == 0 || (*amatch_vtab)(unsafe.Pointer(p)).FrIns > rCost {
 11031  			(*amatch_vtab)(unsafe.Pointer(p)).FrIns = rCost
 11032  		}
 11033  	} else if libc.Xstrcmp(tls, zFrom, ts+3405) == 0 && libc.Xstrcmp(tls, zTo, ts+584) == 0 {
 11034  		if (*amatch_vtab)(unsafe.Pointer(p)).FrDel == 0 || (*amatch_vtab)(unsafe.Pointer(p)).FrDel > rCost {
 11035  			(*amatch_vtab)(unsafe.Pointer(p)).FrDel = rCost
 11036  		}
 11037  	} else {
 11038  		pRule = sqlite3.Xsqlite3_malloc64(tls, uint64(unsafe.Sizeof(amatch_rule{}))+uint64(nFrom)+uint64(nTo))
 11039  		if pRule == uintptr(0) {
 11040  			rc = SQLITE_NOMEM
 11041  		} else {
 11042  			libc.Xmemset(tls, pRule, 0, uint64(unsafe.Sizeof(amatch_rule{})))
 11043  			(*amatch_rule)(unsafe.Pointer(pRule)).FzFrom = pRule + 26 + uintptr(nTo+1)
 11044  			(*amatch_rule)(unsafe.Pointer(pRule)).FnFrom = amatch_len(nFrom)
 11045  			libc.Xmemcpy(tls, (*amatch_rule)(unsafe.Pointer(pRule)).FzFrom, zFrom, uint64(nFrom+1))
 11046  			libc.Xmemcpy(tls, pRule+26, zTo, uint64(nTo+1))
 11047  			(*amatch_rule)(unsafe.Pointer(pRule)).FnTo = amatch_len(nTo)
 11048  			(*amatch_rule)(unsafe.Pointer(pRule)).FrCost = rCost
 11049  			(*amatch_rule)(unsafe.Pointer(pRule)).FiLang = int32(iLang)
 11050  		}
 11051  	}
 11052  
 11053  	*(*uintptr)(unsafe.Pointer(ppRule)) = pRule
 11054  	return rc
 11055  }
 11056  
 11057  func amatchFreeRules(tls *libc.TLS, p uintptr) {
 11058  	for (*amatch_vtab)(unsafe.Pointer(p)).FpRule != 0 {
 11059  		var pRule uintptr = (*amatch_vtab)(unsafe.Pointer(p)).FpRule
 11060  		(*amatch_vtab)(unsafe.Pointer(p)).FpRule = (*amatch_rule)(unsafe.Pointer(pRule)).FpNext
 11061  		sqlite3.Xsqlite3_free(tls, pRule)
 11062  	}
 11063  	(*amatch_vtab)(unsafe.Pointer(p)).FpRule = uintptr(0)
 11064  }
 11065  
 11066  func amatchLoadRules(tls *libc.TLS, db uintptr, p uintptr, pzErr uintptr) int32 {
 11067  	bp := tls.Alloc(192)
 11068  	defer tls.Free(192)
 11069  
 11070  	var rc int32 = SQLITE_OK
 11071  	var zSql uintptr
 11072  	var pHead uintptr = uintptr(0)
 11073  
 11074  	zSql = sqlite3.Xsqlite3_mprintf(tls, ts+3407, libc.VaList(bp, (*amatch_vtab)(unsafe.Pointer(p)).FzDb, (*amatch_vtab)(unsafe.Pointer(p)).FzCostTab))
 11075  	if zSql == uintptr(0) {
 11076  		rc = SQLITE_NOMEM
 11077  	} else {
 11078  		var rc2 int32
 11079  		*(*uintptr)(unsafe.Pointer(bp + 56)) = uintptr(0)
 11080  		rc = sqlite3.Xsqlite3_prepare_v2(tls, db, zSql, -1, bp+56, uintptr(0))
 11081  		if rc != SQLITE_OK {
 11082  			*(*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)))
 11083  		} else if sqlite3.Xsqlite3_column_count(tls, *(*uintptr)(unsafe.Pointer(bp + 56))) != 4 {
 11084  			*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+3434,
 11085  				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)))))
 11086  			rc = SQLITE_ERROR
 11087  		} else {
 11088  			for rc == SQLITE_OK && SQLITE_ROW == sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp + 56))) {
 11089  				*(*uintptr)(unsafe.Pointer(bp + 64)) = uintptr(0)
 11090  				rc = amatchLoadOneRule(tls, p, *(*uintptr)(unsafe.Pointer(bp + 56)), bp+64, pzErr)
 11091  				if *(*uintptr)(unsafe.Pointer(bp + 64)) != 0 {
 11092  					(*amatch_rule)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 64)))).FpNext = pHead
 11093  					pHead = *(*uintptr)(unsafe.Pointer(bp + 64))
 11094  				}
 11095  			}
 11096  		}
 11097  		rc2 = sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 56)))
 11098  		if rc == SQLITE_OK {
 11099  			rc = rc2
 11100  		}
 11101  	}
 11102  	sqlite3.Xsqlite3_free(tls, zSql)
 11103  
 11104  	if rc == SQLITE_OK {
 11105  		var i uint32
 11106  		var pX uintptr
 11107  
 11108  		for i = uint32(0); uint64(i) < uint64(unsafe.Sizeof([15]uintptr{}))/uint64(unsafe.Sizeof(uintptr(0))); i++ {
 11109  			*(*uintptr)(unsafe.Pointer(bp + 72 + uintptr(i)*8)) = uintptr(0)
 11110  		}
 11111  		for libc.AssignUintptr(&pX, pHead) != uintptr(0) {
 11112  			pHead = (*amatch_rule)(unsafe.Pointer(pX)).FpNext
 11113  			(*amatch_rule)(unsafe.Pointer(pX)).FpNext = uintptr(0)
 11114  			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++ {
 11115  				pX = amatchMergeRules(tls, *(*uintptr)(unsafe.Pointer(bp + 72 + uintptr(i)*8)), pX)
 11116  				*(*uintptr)(unsafe.Pointer(bp + 72 + uintptr(i)*8)) = uintptr(0)
 11117  			}
 11118  			*(*uintptr)(unsafe.Pointer(bp + 72 + uintptr(i)*8)) = amatchMergeRules(tls, *(*uintptr)(unsafe.Pointer(bp + 72 + uintptr(i)*8)), pX)
 11119  		}
 11120  		pX = *(*uintptr)(unsafe.Pointer(bp + 72))
 11121  		i = uint32(1)
 11122  		for ; uint64(i) < uint64(unsafe.Sizeof([15]uintptr{}))/uint64(unsafe.Sizeof(uintptr(0))); i++ {
 11123  			pX = amatchMergeRules(tls, *(*uintptr)(unsafe.Pointer(bp + 72 + uintptr(i)*8)), pX)
 11124  		}
 11125  		(*amatch_vtab)(unsafe.Pointer(p)).FpRule = amatchMergeRules(tls, (*amatch_vtab)(unsafe.Pointer(p)).FpRule, pX)
 11126  	} else {
 11127  		(*amatch_vtab)(unsafe.Pointer(p)).FpRule = pHead
 11128  	}
 11129  
 11130  	return rc
 11131  }
 11132  
 11133  func amatchDequote(tls *libc.TLS, zIn uintptr) uintptr {
 11134  	var nIn sqlite3_int64
 11135  	var zOut uintptr
 11136  
 11137  	nIn = sqlite3_int64(libc.Xstrlen(tls, zIn))
 11138  	zOut = sqlite3.Xsqlite3_malloc64(tls, uint64(nIn+int64(1)))
 11139  	if zOut != 0 {
 11140  		var q uint8 = *(*uint8)(unsafe.Pointer(zIn))
 11141  
 11142  		if int32(q) != '[' && int32(q) != '\'' && int32(q) != '"' && int32(q) != '`' {
 11143  			libc.Xmemcpy(tls, zOut, zIn, size_t(nIn+int64(1)))
 11144  		} else {
 11145  			var iOut int32 = 0
 11146  			var iIn int32
 11147  
 11148  			if int32(q) == '[' {
 11149  				q = uint8(']')
 11150  			}
 11151  			for iIn = 1; sqlite3_int64(iIn) < nIn; iIn++ {
 11152  				if int32(*(*uint8)(unsafe.Pointer(zIn + uintptr(iIn)))) == int32(q) {
 11153  					iIn++
 11154  				}
 11155  				*(*uint8)(unsafe.Pointer(zOut + uintptr(libc.PostIncInt32(&iOut, 1)))) = *(*uint8)(unsafe.Pointer(zIn + uintptr(iIn)))
 11156  			}
 11157  		}
 11158  
 11159  	}
 11160  	return zOut
 11161  }
 11162  
 11163  func amatchVCheckClear(tls *libc.TLS, p uintptr) {
 11164  	if (*amatch_vtab)(unsafe.Pointer(p)).FpVCheck != 0 {
 11165  		sqlite3.Xsqlite3_finalize(tls, (*amatch_vtab)(unsafe.Pointer(p)).FpVCheck)
 11166  		(*amatch_vtab)(unsafe.Pointer(p)).FpVCheck = uintptr(0)
 11167  	}
 11168  }
 11169  
 11170  func amatchFree(tls *libc.TLS, p uintptr) {
 11171  	if p != 0 {
 11172  		amatchFreeRules(tls, p)
 11173  		amatchVCheckClear(tls, p)
 11174  		sqlite3.Xsqlite3_free(tls, (*amatch_vtab)(unsafe.Pointer(p)).FzClassName)
 11175  		sqlite3.Xsqlite3_free(tls, (*amatch_vtab)(unsafe.Pointer(p)).FzDb)
 11176  		sqlite3.Xsqlite3_free(tls, (*amatch_vtab)(unsafe.Pointer(p)).FzCostTab)
 11177  		sqlite3.Xsqlite3_free(tls, (*amatch_vtab)(unsafe.Pointer(p)).FzVocabTab)
 11178  		sqlite3.Xsqlite3_free(tls, (*amatch_vtab)(unsafe.Pointer(p)).FzVocabWord)
 11179  		sqlite3.Xsqlite3_free(tls, (*amatch_vtab)(unsafe.Pointer(p)).FzVocabLang)
 11180  		sqlite3.Xsqlite3_free(tls, (*amatch_vtab)(unsafe.Pointer(p)).FzSelf)
 11181  		libc.Xmemset(tls, p, 0, uint64(unsafe.Sizeof(amatch_vtab{})))
 11182  		sqlite3.Xsqlite3_free(tls, p)
 11183  	}
 11184  }
 11185  
 11186  func amatchDisconnect(tls *libc.TLS, pVtab uintptr) int32 {
 11187  	var p uintptr = pVtab
 11188  
 11189  	amatchFree(tls, p)
 11190  	return SQLITE_OK
 11191  }
 11192  
 11193  func amatchValueOfKey(tls *libc.TLS, zKey uintptr, zStr uintptr) uintptr {
 11194  	var nKey int32 = int32(libc.Xstrlen(tls, zKey))
 11195  	var nStr int32 = int32(libc.Xstrlen(tls, zStr))
 11196  	var i int32
 11197  	if nStr < nKey+1 {
 11198  		return uintptr(0)
 11199  	}
 11200  	if libc.Xmemcmp(tls, zStr, zKey, uint64(nKey)) != 0 {
 11201  		return uintptr(0)
 11202  	}
 11203  	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++ {
 11204  	}
 11205  	if int32(*(*uint8)(unsafe.Pointer(zStr + uintptr(i)))) != '=' {
 11206  		return uintptr(0)
 11207  	}
 11208  	i++
 11209  	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 {
 11210  		i++
 11211  	}
 11212  	return zStr + uintptr(i)
 11213  }
 11214  
 11215  func amatchConnect(tls *libc.TLS, db uintptr, pAux uintptr, argc int32, argv uintptr, ppVtab uintptr, pzErr uintptr) int32 {
 11216  	bp := tls.Alloc(32)
 11217  	defer tls.Free(32)
 11218  
 11219  	var rc int32
 11220  	var pNew uintptr
 11221  	var zModule uintptr
 11222  	var zDb uintptr
 11223  	var zVal uintptr
 11224  	var i int32
 11225  	rc = SQLITE_OK
 11226  	pNew = uintptr(0)
 11227  	zModule = *(*uintptr)(unsafe.Pointer(argv))
 11228  	zDb = *(*uintptr)(unsafe.Pointer(argv + 1*8))
 11229  
 11230  	_ = pAux
 11231  	*(*uintptr)(unsafe.Pointer(ppVtab)) = uintptr(0)
 11232  	pNew = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(amatch_vtab{})))
 11233  	if !(pNew == uintptr(0)) {
 11234  		goto __1
 11235  	}
 11236  	return SQLITE_NOMEM
 11237  __1:
 11238  	;
 11239  	rc = SQLITE_NOMEM
 11240  	libc.Xmemset(tls, pNew, 0, uint64(unsafe.Sizeof(amatch_vtab{})))
 11241  	(*amatch_vtab)(unsafe.Pointer(pNew)).Fdb = db
 11242  	(*amatch_vtab)(unsafe.Pointer(pNew)).FzClassName = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp, zModule))
 11243  	if !((*amatch_vtab)(unsafe.Pointer(pNew)).FzClassName == uintptr(0)) {
 11244  		goto __2
 11245  	}
 11246  	goto amatchConnectError
 11247  __2:
 11248  	;
 11249  	(*amatch_vtab)(unsafe.Pointer(pNew)).FzDb = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp+8, zDb))
 11250  	if !((*amatch_vtab)(unsafe.Pointer(pNew)).FzDb == uintptr(0)) {
 11251  		goto __3
 11252  	}
 11253  	goto amatchConnectError
 11254  __3:
 11255  	;
 11256  	(*amatch_vtab)(unsafe.Pointer(pNew)).FzSelf = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp+16, *(*uintptr)(unsafe.Pointer(argv + 2*8))))
 11257  	if !((*amatch_vtab)(unsafe.Pointer(pNew)).FzSelf == uintptr(0)) {
 11258  		goto __4
 11259  	}
 11260  	goto amatchConnectError
 11261  __4:
 11262  	;
 11263  	i = 3
 11264  __5:
 11265  	if !(i < argc) {
 11266  		goto __7
 11267  	}
 11268  	zVal = amatchValueOfKey(tls, ts+3468, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8)))
 11269  	if !(zVal != 0) {
 11270  		goto __8
 11271  	}
 11272  	sqlite3.Xsqlite3_free(tls, (*amatch_vtab)(unsafe.Pointer(pNew)).FzVocabTab)
 11273  	(*amatch_vtab)(unsafe.Pointer(pNew)).FzVocabTab = amatchDequote(tls, zVal)
 11274  	if !((*amatch_vtab)(unsafe.Pointer(pNew)).FzVocabTab == uintptr(0)) {
 11275  		goto __9
 11276  	}
 11277  	goto amatchConnectError
 11278  __9:
 11279  	;
 11280  	goto __6
 11281  __8:
 11282  	;
 11283  	zVal = amatchValueOfKey(tls, ts+3485, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8)))
 11284  	if !(zVal != 0) {
 11285  		goto __10
 11286  	}
 11287  	sqlite3.Xsqlite3_free(tls, (*amatch_vtab)(unsafe.Pointer(pNew)).FzVocabWord)
 11288  	(*amatch_vtab)(unsafe.Pointer(pNew)).FzVocabWord = amatchDequote(tls, zVal)
 11289  	if !((*amatch_vtab)(unsafe.Pointer(pNew)).FzVocabWord == uintptr(0)) {
 11290  		goto __11
 11291  	}
 11292  	goto amatchConnectError
 11293  __11:
 11294  	;
 11295  	goto __6
 11296  __10:
 11297  	;
 11298  	zVal = amatchValueOfKey(tls, ts+3501, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8)))
 11299  	if !(zVal != 0) {
 11300  		goto __12
 11301  	}
 11302  	sqlite3.Xsqlite3_free(tls, (*amatch_vtab)(unsafe.Pointer(pNew)).FzVocabLang)
 11303  	(*amatch_vtab)(unsafe.Pointer(pNew)).FzVocabLang = amatchDequote(tls, zVal)
 11304  	if !((*amatch_vtab)(unsafe.Pointer(pNew)).FzVocabLang == uintptr(0)) {
 11305  		goto __13
 11306  	}
 11307  	goto amatchConnectError
 11308  __13:
 11309  	;
 11310  	goto __6
 11311  __12:
 11312  	;
 11313  	zVal = amatchValueOfKey(tls, ts+3521, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8)))
 11314  	if !(zVal != 0) {
 11315  		goto __14
 11316  	}
 11317  	sqlite3.Xsqlite3_free(tls, (*amatch_vtab)(unsafe.Pointer(pNew)).FzCostTab)
 11318  	(*amatch_vtab)(unsafe.Pointer(pNew)).FzCostTab = amatchDequote(tls, zVal)
 11319  	if !((*amatch_vtab)(unsafe.Pointer(pNew)).FzCostTab == uintptr(0)) {
 11320  		goto __15
 11321  	}
 11322  	goto amatchConnectError
 11323  __15:
 11324  	;
 11325  	goto __6
 11326  __14:
 11327  	;
 11328  	*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+3536, libc.VaList(bp+24, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8))))
 11329  	amatchFree(tls, pNew)
 11330  	*(*uintptr)(unsafe.Pointer(ppVtab)) = uintptr(0)
 11331  	return SQLITE_ERROR
 11332  	goto __6
 11333  __6:
 11334  	i++
 11335  	goto __5
 11336  	goto __7
 11337  __7:
 11338  	;
 11339  	rc = SQLITE_OK
 11340  	if !((*amatch_vtab)(unsafe.Pointer(pNew)).FzCostTab == uintptr(0)) {
 11341  		goto __16
 11342  	}
 11343  	*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+3565, 0)
 11344  	rc = SQLITE_ERROR
 11345  	goto __17
 11346  __16:
 11347  	rc = amatchLoadRules(tls, db, pNew, pzErr)
 11348  __17:
 11349  	;
 11350  	if !(rc == SQLITE_OK) {
 11351  		goto __18
 11352  	}
 11353  	sqlite3.Xsqlite3_vtab_config(tls, db, SQLITE_VTAB_INNOCUOUS, 0)
 11354  	rc = sqlite3.Xsqlite3_declare_vtab(tls, db,
 11355  		ts+3599)
 11356  __18:
 11357  	;
 11358  	if !(rc != SQLITE_OK) {
 11359  		goto __19
 11360  	}
 11361  	amatchFree(tls, pNew)
 11362  __19:
 11363  	;
 11364  	*(*uintptr)(unsafe.Pointer(ppVtab)) = pNew
 11365  	return rc
 11366  
 11367  amatchConnectError:
 11368  	amatchFree(tls, pNew)
 11369  	return rc
 11370  }
 11371  
 11372  func amatchOpen(tls *libc.TLS, pVTab uintptr, ppCursor uintptr) int32 {
 11373  	var p uintptr = pVTab
 11374  	var pCur uintptr
 11375  	pCur = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(amatch_cursor{})))
 11376  	if pCur == uintptr(0) {
 11377  		return SQLITE_NOMEM
 11378  	}
 11379  	libc.Xmemset(tls, pCur, 0, uint64(unsafe.Sizeof(amatch_cursor{})))
 11380  	(*amatch_cursor)(unsafe.Pointer(pCur)).FpVtab = p
 11381  	*(*uintptr)(unsafe.Pointer(ppCursor)) = pCur
 11382  	(*amatch_vtab)(unsafe.Pointer(p)).FnCursor++
 11383  	return SQLITE_OK
 11384  }
 11385  
 11386  func amatchClearCursor(tls *libc.TLS, pCur uintptr) {
 11387  	var pWord uintptr
 11388  	var pNextWord uintptr
 11389  	for pWord = (*amatch_cursor)(unsafe.Pointer(pCur)).FpAllWords; pWord != 0; pWord = pNextWord {
 11390  		pNextWord = (*amatch_word)(unsafe.Pointer(pWord)).FpNext
 11391  		sqlite3.Xsqlite3_free(tls, pWord)
 11392  	}
 11393  	(*amatch_cursor)(unsafe.Pointer(pCur)).FpAllWords = uintptr(0)
 11394  	sqlite3.Xsqlite3_free(tls, (*amatch_cursor)(unsafe.Pointer(pCur)).FzInput)
 11395  	(*amatch_cursor)(unsafe.Pointer(pCur)).FzInput = uintptr(0)
 11396  	sqlite3.Xsqlite3_free(tls, (*amatch_cursor)(unsafe.Pointer(pCur)).FzBuf)
 11397  	(*amatch_cursor)(unsafe.Pointer(pCur)).FzBuf = uintptr(0)
 11398  	(*amatch_cursor)(unsafe.Pointer(pCur)).FnBuf = 0
 11399  	(*amatch_cursor)(unsafe.Pointer(pCur)).FpCost = uintptr(0)
 11400  	(*amatch_cursor)(unsafe.Pointer(pCur)).FpWord = uintptr(0)
 11401  	(*amatch_cursor)(unsafe.Pointer(pCur)).FpCurrent = uintptr(0)
 11402  	(*amatch_cursor)(unsafe.Pointer(pCur)).FrLimit = 1000000
 11403  	(*amatch_cursor)(unsafe.Pointer(pCur)).FiLang = 0
 11404  	(*amatch_cursor)(unsafe.Pointer(pCur)).FnWord = 0
 11405  }
 11406  
 11407  func amatchClose(tls *libc.TLS, cur uintptr) int32 {
 11408  	var pCur uintptr = cur
 11409  	amatchClearCursor(tls, pCur)
 11410  	(*amatch_vtab)(unsafe.Pointer((*amatch_cursor)(unsafe.Pointer(pCur)).FpVtab)).FnCursor--
 11411  	sqlite3.Xsqlite3_free(tls, pCur)
 11412  	return SQLITE_OK
 11413  }
 11414  
 11415  func amatchEncodeInt(tls *libc.TLS, x int32, z uintptr) {
 11416  	*(*uint8)(unsafe.Pointer(z)) = a[x>>18&0x3f]
 11417  	*(*uint8)(unsafe.Pointer(z + 1)) = a[x>>12&0x3f]
 11418  	*(*uint8)(unsafe.Pointer(z + 2)) = a[x>>6&0x3f]
 11419  	*(*uint8)(unsafe.Pointer(z + 3)) = a[x&0x3f]
 11420  }
 11421  
 11422  var a = *(*[65]uint8)(unsafe.Pointer(ts + 3666))
 11423  
 11424  func amatchWriteCost(tls *libc.TLS, pWord uintptr) {
 11425  	amatchEncodeInt(tls, (*amatch_word)(unsafe.Pointer(pWord)).FrCost, pWord+112)
 11426  	amatchEncodeInt(tls, (*amatch_word)(unsafe.Pointer(pWord)).FiSeq, pWord+112+uintptr(4))
 11427  	*(*uint8)(unsafe.Pointer(pWord + 112 + 8)) = uint8(0)
 11428  }
 11429  
 11430  func amatchStrcpy(tls *libc.TLS, dest uintptr, src uintptr) {
 11431  	for int32(libc.AssignPtrUint8(libc.PostIncUintptr(&dest, 1), *(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&src, 1))))) != 0 {
 11432  	}
 11433  }
 11434  
 11435  func amatchStrcat(tls *libc.TLS, dest uintptr, src uintptr) {
 11436  	for *(*uint8)(unsafe.Pointer(dest)) != 0 {
 11437  		dest++
 11438  	}
 11439  	amatchStrcpy(tls, dest, src)
 11440  }
 11441  
 11442  func amatchAddWord(tls *libc.TLS, pCur uintptr, rCost amatch_cost, nMatch int32, zWordBase uintptr, zWordTail uintptr) {
 11443  	bp := tls.Alloc(4)
 11444  	defer tls.Free(4)
 11445  
 11446  	var pWord uintptr
 11447  	var pNode uintptr
 11448  	var pOther uintptr
 11449  	_ = pOther
 11450  	var nBase int32
 11451  	var nTail int32
 11452  
 11453  	if rCost > (*amatch_cursor)(unsafe.Pointer(pCur)).FrLimit {
 11454  		return
 11455  	}
 11456  	nBase = int32(libc.Xstrlen(tls, zWordBase))
 11457  	nTail = int32(libc.Xstrlen(tls, zWordTail))
 11458  	if nBase+nTail+3 > (*amatch_cursor)(unsafe.Pointer(pCur)).FnBuf {
 11459  		(*amatch_cursor)(unsafe.Pointer(pCur)).FnBuf = nBase + nTail + 100
 11460  		(*amatch_cursor)(unsafe.Pointer(pCur)).FzBuf = sqlite3.Xsqlite3_realloc(tls, (*amatch_cursor)(unsafe.Pointer(pCur)).FzBuf, (*amatch_cursor)(unsafe.Pointer(pCur)).FnBuf)
 11461  		if (*amatch_cursor)(unsafe.Pointer(pCur)).FzBuf == uintptr(0) {
 11462  			(*amatch_cursor)(unsafe.Pointer(pCur)).FnBuf = 0
 11463  			return
 11464  		}
 11465  	}
 11466  	amatchEncodeInt(tls, nMatch, bp)
 11467  	libc.Xmemcpy(tls, (*amatch_cursor)(unsafe.Pointer(pCur)).FzBuf, bp+uintptr(2), uint64(2))
 11468  	libc.Xmemcpy(tls, (*amatch_cursor)(unsafe.Pointer(pCur)).FzBuf+uintptr(2), zWordBase, uint64(nBase))
 11469  	libc.Xmemcpy(tls, (*amatch_cursor)(unsafe.Pointer(pCur)).FzBuf+uintptr(2)+uintptr(nBase), zWordTail, uint64(nTail+1))
 11470  	pNode = amatchAvlSearch(tls, (*amatch_cursor)(unsafe.Pointer(pCur)).FpWord, (*amatch_cursor)(unsafe.Pointer(pCur)).FzBuf)
 11471  	if pNode != 0 {
 11472  		pWord = (*amatch_avl)(unsafe.Pointer(pNode)).FpWord
 11473  		if (*amatch_word)(unsafe.Pointer(pWord)).FrCost > rCost {
 11474  			amatchAvlRemove(tls, pCur+80, pWord+8)
 11475  			(*amatch_word)(unsafe.Pointer(pWord)).FrCost = rCost
 11476  			amatchWriteCost(tls, pWord)
 11477  			pOther = amatchAvlInsert(tls, pCur+80, pWord+8)
 11478  			_ = pOther
 11479  		}
 11480  		return
 11481  	}
 11482  	pWord = sqlite3.Xsqlite3_malloc64(tls, uint64(unsafe.Sizeof(amatch_word{}))+uint64(nBase)+uint64(nTail)-uint64(1))
 11483  	if pWord == uintptr(0) {
 11484  		return
 11485  	}
 11486  	libc.Xmemset(tls, pWord, 0, uint64(unsafe.Sizeof(amatch_word{})))
 11487  	(*amatch_word)(unsafe.Pointer(pWord)).FrCost = rCost
 11488  	(*amatch_word)(unsafe.Pointer(pWord)).FiSeq = libc.PostIncInt32(&(*amatch_cursor)(unsafe.Pointer(pCur)).FnWord, 1)
 11489  	amatchWriteCost(tls, pWord)
 11490  	(*amatch_word)(unsafe.Pointer(pWord)).FnMatch = int16(nMatch)
 11491  	(*amatch_word)(unsafe.Pointer(pWord)).FpNext = (*amatch_cursor)(unsafe.Pointer(pCur)).FpAllWords
 11492  	(*amatch_cursor)(unsafe.Pointer(pCur)).FpAllWords = pWord
 11493  	(*amatch_word)(unsafe.Pointer(pWord)).FsCost.FzKey = pWord + 112
 11494  	(*amatch_word)(unsafe.Pointer(pWord)).FsCost.FpWord = pWord
 11495  	pOther = amatchAvlInsert(tls, pCur+80, pWord+8)
 11496  	_ = pOther
 11497  	(*amatch_word)(unsafe.Pointer(pWord)).FsWord.FzKey = pWord + 124
 11498  	(*amatch_word)(unsafe.Pointer(pWord)).FsWord.FpWord = pWord
 11499  	amatchStrcpy(tls, pWord+124, (*amatch_cursor)(unsafe.Pointer(pCur)).FzBuf)
 11500  	pOther = amatchAvlInsert(tls, pCur+88, pWord+56)
 11501  	_ = pOther
 11502  }
 11503  
 11504  func amatchNext(tls *libc.TLS, cur uintptr) int32 {
 11505  	bp := tls.Alloc(80)
 11506  	defer tls.Free(80)
 11507  
 11508  	var pCur uintptr = cur
 11509  	var pWord uintptr = uintptr(0)
 11510  	var pNode uintptr
 11511  	var isMatch int32 = 0
 11512  	var p uintptr = (*amatch_cursor)(unsafe.Pointer(pCur)).FpVtab
 11513  	var nWord int32
 11514  	var rc int32
 11515  	var i int32
 11516  	var zW uintptr
 11517  	var pRule uintptr
 11518  	var zBuf uintptr = uintptr(0)
 11519  	var nBuf uint8 = uint8(0)
 11520  
 11521  	var nNextIn int32
 11522  
 11523  	if (*amatch_vtab)(unsafe.Pointer(p)).FpVCheck == uintptr(0) {
 11524  		var zSql uintptr
 11525  		if (*amatch_vtab)(unsafe.Pointer(p)).FzVocabLang != 0 && *(*uint8)(unsafe.Pointer((*amatch_vtab)(unsafe.Pointer(p)).FzVocabLang)) != 0 {
 11526  			zSql = sqlite3.Xsqlite3_mprintf(tls,
 11527  				ts+3731,
 11528  				libc.VaList(bp, ts+3753,
 11529  					(*amatch_vtab)(unsafe.Pointer(p)).FzVocabWord, (*amatch_vtab)(unsafe.Pointer(p)).FzVocabTab,
 11530  					(*amatch_vtab)(unsafe.Pointer(p)).FzVocabWord, (*amatch_vtab)(unsafe.Pointer(p)).FzVocabLang))
 11531  		} else {
 11532  			zSql = sqlite3.Xsqlite3_mprintf(tls,
 11533  				ts+3792,
 11534  				libc.VaList(bp+40, (*amatch_vtab)(unsafe.Pointer(p)).FzVocabWord, (*amatch_vtab)(unsafe.Pointer(p)).FzVocabTab,
 11535  					(*amatch_vtab)(unsafe.Pointer(p)).FzVocabWord))
 11536  		}
 11537  		rc = sqlite3.Xsqlite3_prepare_v2(tls, (*amatch_vtab)(unsafe.Pointer(p)).Fdb, zSql, -1, p+112, uintptr(0))
 11538  		sqlite3.Xsqlite3_free(tls, zSql)
 11539  		if rc != 0 {
 11540  			return rc
 11541  		}
 11542  	}
 11543  	sqlite3.Xsqlite3_bind_int(tls, (*amatch_vtab)(unsafe.Pointer(p)).FpVCheck, 2, (*amatch_cursor)(unsafe.Pointer(pCur)).FiLang)
 11544  
 11545  	for __ccgo := true; __ccgo; __ccgo = !(isMatch != 0) {
 11546  		pNode = amatchAvlFirst(tls, (*amatch_cursor)(unsafe.Pointer(pCur)).FpCost)
 11547  		if pNode == uintptr(0) {
 11548  			pWord = uintptr(0)
 11549  			break
 11550  		}
 11551  		pWord = (*amatch_avl)(unsafe.Pointer(pNode)).FpWord
 11552  		amatchAvlRemove(tls, pCur+80, pWord+8)
 11553  
 11554  		nWord = int32(libc.Xstrlen(tls, pWord+124+uintptr(2)))
 11555  		if nWord+20 > int32(nBuf) {
 11556  			nBuf = uint8(nWord + 100)
 11557  			zBuf = sqlite3.Xsqlite3_realloc(tls, zBuf, int32(nBuf))
 11558  			if zBuf == uintptr(0) {
 11559  				return SQLITE_NOMEM
 11560  			}
 11561  		}
 11562  		amatchStrcpy(tls, zBuf, pWord+124+uintptr(2))
 11563  		*(*uint8)(unsafe.Pointer(bp + 64)) = uint8(0)
 11564  		*(*uint8)(unsafe.Pointer(bp + 72)) = *(*uint8)(unsafe.Pointer((*amatch_cursor)(unsafe.Pointer(pCur)).FzInput + uintptr((*amatch_word)(unsafe.Pointer(pWord)).FnMatch)))
 11565  		if *(*uint8)(unsafe.Pointer(bp + 72)) != 0 {
 11566  			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++ {
 11567  				*(*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)))
 11568  			}
 11569  			*(*uint8)(unsafe.Pointer(bp + 72 + uintptr(i))) = uint8(0)
 11570  			nNextIn = i
 11571  		} else {
 11572  			nNextIn = 0
 11573  		}
 11574  
 11575  		if *(*uint8)(unsafe.Pointer(bp + 72)) != 0 && int32(*(*uint8)(unsafe.Pointer(bp + 72))) != '*' {
 11576  			sqlite3.Xsqlite3_reset(tls, (*amatch_vtab)(unsafe.Pointer(p)).FpVCheck)
 11577  			amatchStrcat(tls, zBuf, bp+72)
 11578  			sqlite3.Xsqlite3_bind_text(tls, (*amatch_vtab)(unsafe.Pointer(p)).FpVCheck, 1, zBuf, nWord+nNextIn, uintptr(0))
 11579  			rc = sqlite3.Xsqlite3_step(tls, (*amatch_vtab)(unsafe.Pointer(p)).FpVCheck)
 11580  			if rc == SQLITE_ROW {
 11581  				zW = sqlite3.Xsqlite3_column_text(tls, (*amatch_vtab)(unsafe.Pointer(p)).FpVCheck, 0)
 11582  				if libc.Xstrncmp(tls, zBuf, zW, uint64(nWord+nNextIn)) == 0 {
 11583  					amatchAddWord(tls, pCur, (*amatch_word)(unsafe.Pointer(pWord)).FrCost, int32((*amatch_word)(unsafe.Pointer(pWord)).FnMatch)+nNextIn, zBuf, ts+584)
 11584  				}
 11585  			}
 11586  			*(*uint8)(unsafe.Pointer(zBuf + uintptr(nWord))) = uint8(0)
 11587  		}
 11588  
 11589  		for 1 != 0 {
 11590  			amatchStrcpy(tls, zBuf+uintptr(nWord), bp+64)
 11591  			sqlite3.Xsqlite3_reset(tls, (*amatch_vtab)(unsafe.Pointer(p)).FpVCheck)
 11592  			sqlite3.Xsqlite3_bind_text(tls, (*amatch_vtab)(unsafe.Pointer(p)).FpVCheck, 1, zBuf, -1, libc.UintptrFromInt32(-1))
 11593  			rc = sqlite3.Xsqlite3_step(tls, (*amatch_vtab)(unsafe.Pointer(p)).FpVCheck)
 11594  			if rc != SQLITE_ROW {
 11595  				break
 11596  			}
 11597  			zW = sqlite3.Xsqlite3_column_text(tls, (*amatch_vtab)(unsafe.Pointer(p)).FpVCheck, 0)
 11598  			amatchStrcpy(tls, zBuf+uintptr(nWord), bp+64)
 11599  			if libc.Xstrncmp(tls, zW, zBuf, uint64(nWord)) != 0 {
 11600  				break
 11601  			}
 11602  			if int32(*(*uint8)(unsafe.Pointer(bp + 72))) == '*' && int32(*(*uint8)(unsafe.Pointer(bp + 72 + 1))) == 0 ||
 11603  				int32(*(*uint8)(unsafe.Pointer(bp + 72))) == 0 && int32(*(*uint8)(unsafe.Pointer(zW + uintptr(nWord)))) == 0 {
 11604  				isMatch = 1
 11605  				*(*uint8)(unsafe.Pointer(bp + 72)) = uint8(0)
 11606  				nNextIn = 0
 11607  				break
 11608  			}
 11609  			*(*uint8)(unsafe.Pointer(bp + 64)) = *(*uint8)(unsafe.Pointer(zW + uintptr(nWord)))
 11610  			for i = 1; i <= 4 && int32(*(*uint8)(unsafe.Pointer(zW + uintptr(nWord+i))))&0xc0 == 0x80; i++ {
 11611  				*(*uint8)(unsafe.Pointer(bp + 64 + uintptr(i))) = *(*uint8)(unsafe.Pointer(zW + uintptr(nWord+i)))
 11612  			}
 11613  			*(*uint8)(unsafe.Pointer(bp + 64 + uintptr(i))) = uint8(0)
 11614  			*(*uint8)(unsafe.Pointer(zBuf + uintptr(nWord))) = uint8(0)
 11615  			if (*amatch_vtab)(unsafe.Pointer(p)).FrIns > 0 {
 11616  				amatchAddWord(tls, pCur, (*amatch_word)(unsafe.Pointer(pWord)).FrCost+(*amatch_vtab)(unsafe.Pointer(p)).FrIns, int32((*amatch_word)(unsafe.Pointer(pWord)).FnMatch),
 11617  					zBuf, bp+64)
 11618  			}
 11619  			if (*amatch_vtab)(unsafe.Pointer(p)).FrSub > 0 {
 11620  				amatchAddWord(tls, pCur, (*amatch_word)(unsafe.Pointer(pWord)).FrCost+(*amatch_vtab)(unsafe.Pointer(p)).FrSub, int32((*amatch_word)(unsafe.Pointer(pWord)).FnMatch)+nNextIn,
 11621  					zBuf, bp+64)
 11622  			}
 11623  			if (*amatch_vtab)(unsafe.Pointer(p)).FrIns < 0 && (*amatch_vtab)(unsafe.Pointer(p)).FrSub < 0 {
 11624  				break
 11625  			}
 11626  			*(*uint8)(unsafe.Pointer(bp + 64 + uintptr(i-1)))++
 11627  		}
 11628  		sqlite3.Xsqlite3_reset(tls, (*amatch_vtab)(unsafe.Pointer(p)).FpVCheck)
 11629  
 11630  		if (*amatch_vtab)(unsafe.Pointer(p)).FrDel > 0 {
 11631  			*(*uint8)(unsafe.Pointer(zBuf + uintptr(nWord))) = uint8(0)
 11632  			amatchAddWord(tls, pCur, (*amatch_word)(unsafe.Pointer(pWord)).FrCost+(*amatch_vtab)(unsafe.Pointer(p)).FrDel, int32((*amatch_word)(unsafe.Pointer(pWord)).FnMatch)+nNextIn,
 11633  				zBuf, ts+584)
 11634  		}
 11635  
 11636  		for pRule = (*amatch_vtab)(unsafe.Pointer(p)).FpRule; pRule != 0; pRule = (*amatch_rule)(unsafe.Pointer(pRule)).FpNext {
 11637  			if (*amatch_rule)(unsafe.Pointer(pRule)).FiLang != (*amatch_cursor)(unsafe.Pointer(pCur)).FiLang {
 11638  				continue
 11639  			}
 11640  			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 {
 11641  				amatchAddWord(tls, pCur, (*amatch_word)(unsafe.Pointer(pWord)).FrCost+(*amatch_rule)(unsafe.Pointer(pRule)).FrCost,
 11642  					int32((*amatch_word)(unsafe.Pointer(pWord)).FnMatch)+int32((*amatch_rule)(unsafe.Pointer(pRule)).FnFrom), pWord+124+uintptr(2), pRule+26)
 11643  			}
 11644  		}
 11645  	}
 11646  	(*amatch_cursor)(unsafe.Pointer(pCur)).FpCurrent = pWord
 11647  	sqlite3.Xsqlite3_free(tls, zBuf)
 11648  	return SQLITE_OK
 11649  }
 11650  
 11651  func amatchFilter(tls *libc.TLS, pVtabCursor uintptr, idxNum int32, idxStr uintptr, argc int32, argv uintptr) int32 {
 11652  	bp := tls.Alloc(8)
 11653  	defer tls.Free(8)
 11654  
 11655  	var pCur uintptr = pVtabCursor
 11656  	var zWord uintptr = ts + 3840
 11657  	var idx int32
 11658  
 11659  	amatchClearCursor(tls, pCur)
 11660  	idx = 0
 11661  	if idxNum&1 != 0 {
 11662  		zWord = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 11663  		idx++
 11664  	}
 11665  	if idxNum&2 != 0 {
 11666  		(*amatch_cursor)(unsafe.Pointer(pCur)).FrLimit = sqlite3.Xsqlite3_value_int(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(idx)*8)))
 11667  		idx++
 11668  	}
 11669  	if idxNum&4 != 0 {
 11670  		(*amatch_cursor)(unsafe.Pointer(pCur)).FiLang = sqlite3.Xsqlite3_value_int(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(idx)*8)))
 11671  		idx++
 11672  	}
 11673  	(*amatch_cursor)(unsafe.Pointer(pCur)).FzInput = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp, zWord))
 11674  	if (*amatch_cursor)(unsafe.Pointer(pCur)).FzInput == uintptr(0) {
 11675  		return SQLITE_NOMEM
 11676  	}
 11677  	amatchAddWord(tls, pCur, 0, 0, ts+584, ts+584)
 11678  	amatchNext(tls, pVtabCursor)
 11679  
 11680  	return SQLITE_OK
 11681  }
 11682  
 11683  func amatchColumn(tls *libc.TLS, cur uintptr, ctx uintptr, i int32) int32 {
 11684  	var pCur uintptr = cur
 11685  	switch i {
 11686  	case AMATCH_COL_WORD:
 11687  		{
 11688  			sqlite3.Xsqlite3_result_text(tls, ctx, (*amatch_cursor)(unsafe.Pointer(pCur)).FpCurrent+124+uintptr(2), -1, uintptr(0))
 11689  			break
 11690  
 11691  		}
 11692  	case AMATCH_COL_DISTANCE:
 11693  		{
 11694  			sqlite3.Xsqlite3_result_int(tls, ctx, (*amatch_word)(unsafe.Pointer((*amatch_cursor)(unsafe.Pointer(pCur)).FpCurrent)).FrCost)
 11695  			break
 11696  
 11697  		}
 11698  	case AMATCH_COL_LANGUAGE:
 11699  		{
 11700  			sqlite3.Xsqlite3_result_int(tls, ctx, (*amatch_cursor)(unsafe.Pointer(pCur)).FiLang)
 11701  			break
 11702  
 11703  		}
 11704  	case AMATCH_COL_NWORD:
 11705  		{
 11706  			sqlite3.Xsqlite3_result_int(tls, ctx, (*amatch_cursor)(unsafe.Pointer(pCur)).FnWord)
 11707  			break
 11708  
 11709  		}
 11710  	default:
 11711  		{
 11712  			sqlite3.Xsqlite3_result_null(tls, ctx)
 11713  			break
 11714  
 11715  		}
 11716  	}
 11717  	return SQLITE_OK
 11718  }
 11719  
 11720  func amatchRowid(tls *libc.TLS, cur uintptr, pRowid uintptr) int32 {
 11721  	var pCur uintptr = cur
 11722  	*(*sqlite_int64)(unsafe.Pointer(pRowid)) = (*amatch_cursor)(unsafe.Pointer(pCur)).FiRowid
 11723  	return SQLITE_OK
 11724  }
 11725  
 11726  func amatchEof(tls *libc.TLS, cur uintptr) int32 {
 11727  	var pCur uintptr = cur
 11728  	return libc.Bool32((*amatch_cursor)(unsafe.Pointer(pCur)).FpCurrent == uintptr(0))
 11729  }
 11730  
 11731  func amatchBestIndex(tls *libc.TLS, tab uintptr, pIdxInfo uintptr) int32 {
 11732  	var iPlan int32 = 0
 11733  	var iDistTerm int32 = -1
 11734  	var iLangTerm int32 = -1
 11735  	var i int32
 11736  	var pConstraint uintptr
 11737  
 11738  	_ = tab
 11739  	pConstraint = (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint
 11740  	i = 0
 11741  __1:
 11742  	if !(i < (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnConstraint) {
 11743  		goto __3
 11744  	}
 11745  	{
 11746  		if int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fusable) == 0 {
 11747  			goto __2
 11748  		}
 11749  		if iPlan&1 == 0 &&
 11750  			(*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).FiColumn == 0 &&
 11751  			int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_MATCH {
 11752  			iPlan = iPlan | 1
 11753  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(i)*8)).FargvIndex = 1
 11754  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(i)*8)).Fomit = uint8(1)
 11755  		}
 11756  		if iPlan&2 == 0 &&
 11757  			(*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).FiColumn == 1 &&
 11758  			(int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_LT ||
 11759  				int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_LE) {
 11760  			iPlan = iPlan | 2
 11761  			iDistTerm = i
 11762  		}
 11763  		if iPlan&4 == 0 &&
 11764  			(*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).FiColumn == 2 &&
 11765  			int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_EQ {
 11766  			iPlan = iPlan | 4
 11767  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(i)*8)).Fomit = uint8(1)
 11768  			iLangTerm = i
 11769  		}
 11770  
 11771  	}
 11772  	goto __2
 11773  __2:
 11774  	i++
 11775  	pConstraint += 12
 11776  	goto __1
 11777  	goto __3
 11778  __3:
 11779  	;
 11780  	if iPlan&2 != 0 {
 11781  		(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(iDistTerm)*8)).FargvIndex = 1 + libc.Bool32(iPlan&1 != 0)
 11782  	}
 11783  	if iPlan&4 != 0 {
 11784  		var idx int32 = 1
 11785  		if iPlan&1 != 0 {
 11786  			idx++
 11787  		}
 11788  		if iPlan&2 != 0 {
 11789  			idx++
 11790  		}
 11791  		(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(iLangTerm)*8)).FargvIndex = idx
 11792  	}
 11793  	(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxNum = iPlan
 11794  	if (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnOrderBy == 1 &&
 11795  		(*sqlite3_index_orderby)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaOrderBy)).FiColumn == 1 &&
 11796  		int32((*sqlite3_index_orderby)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaOrderBy)).Fdesc) == 0 {
 11797  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).ForderByConsumed = 1
 11798  	}
 11799  	(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = float64(10000)
 11800  
 11801  	return SQLITE_OK
 11802  }
 11803  
 11804  func amatchUpdate(tls *libc.TLS, pVTab uintptr, argc int32, argv uintptr, pRowid uintptr) int32 {
 11805  	bp := tls.Alloc(24)
 11806  	defer tls.Free(24)
 11807  
 11808  	var p uintptr = pVTab
 11809  	var zCmd uintptr
 11810  	_ = pRowid
 11811  	if argc == 1 {
 11812  		(*sqlite3_vtab)(unsafe.Pointer(pVTab)).FzErrMsg = sqlite3.Xsqlite3_mprintf(tls, ts+3842,
 11813  			libc.VaList(bp, (*amatch_vtab)(unsafe.Pointer(p)).FzSelf))
 11814  		return SQLITE_ERROR
 11815  	}
 11816  	if sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(argv))) != SQLITE_NULL {
 11817  		(*sqlite3_vtab)(unsafe.Pointer(pVTab)).FzErrMsg = sqlite3.Xsqlite3_mprintf(tls, ts+3872,
 11818  			libc.VaList(bp+8, (*amatch_vtab)(unsafe.Pointer(p)).FzSelf))
 11819  		return SQLITE_ERROR
 11820  	}
 11821  	if sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(argv + 2*8))) != SQLITE_NULL ||
 11822  		sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(argv + 3*8))) != SQLITE_NULL ||
 11823  		sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(argv + 4*8))) != SQLITE_NULL {
 11824  		(*sqlite3_vtab)(unsafe.Pointer(pVTab)).FzErrMsg = sqlite3.Xsqlite3_mprintf(tls,
 11825  			ts+3900, libc.VaList(bp+16, (*amatch_vtab)(unsafe.Pointer(p)).FzSelf))
 11826  		return SQLITE_ERROR
 11827  	}
 11828  	zCmd = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + 5*8)))
 11829  	if zCmd == uintptr(0) {
 11830  		return SQLITE_OK
 11831  	}
 11832  
 11833  	return SQLITE_OK
 11834  }
 11835  
 11836  var amatchModule = sqlite3_module{
 11837  	FxCreate:     0,
 11838  	FxConnect:    0,
 11839  	FxBestIndex:  0,
 11840  	FxDisconnect: 0,
 11841  	FxDestroy:    0,
 11842  	FxOpen:       0,
 11843  	FxClose:      0,
 11844  	FxFilter:     0,
 11845  	FxNext:       0,
 11846  	FxEof:        0,
 11847  	FxColumn:     0,
 11848  	FxRowid:      0,
 11849  	FxUpdate:     0,
 11850  }
 11851  
 11852  func sqlite3_amatch_init(tls *libc.TLS, db uintptr, pzErrMsg uintptr, pApi uintptr) int32 {
 11853  	var rc int32 = SQLITE_OK
 11854  	_ = pApi
 11855  
 11856  	_ = pzErrMsg
 11857  	rc = sqlite3.Xsqlite3_create_module(tls, db, ts+3949, uintptr(unsafe.Pointer(&amatchModule)), uintptr(0))
 11858  	return rc
 11859  }
 11860  
 11861  var azType = [4]uintptr{ts + 3967, ts + 3973, ts + 2562, ts + 3979}
 11862  
 11863  type carray_bind1 = struct {
 11864  	FaData  uintptr
 11865  	FnData  int32
 11866  	FmFlags int32
 11867  	FxDel   uintptr
 11868  }
 11869  
 11870  type carray_bind = carray_bind1
 11871  
 11872  type carray_cursor1 = struct {
 11873  	Fbase        sqlite3_vtab_cursor
 11874  	FiRowid      sqlite3_int64
 11875  	FpPtr        uintptr
 11876  	FiCnt        sqlite3_int64
 11877  	FeType       uint8
 11878  	F__ccgo_pad1 [7]byte
 11879  }
 11880  
 11881  type carray_cursor = carray_cursor1
 11882  
 11883  func carrayConnect(tls *libc.TLS, db uintptr, pAux uintptr, argc int32, argv uintptr, ppVtab uintptr, pzErr uintptr) int32 {
 11884  	var pNew uintptr
 11885  	var rc int32
 11886  
 11887  	rc = sqlite3.Xsqlite3_declare_vtab(tls, db,
 11888  		ts+3985)
 11889  	if rc == SQLITE_OK {
 11890  		pNew = libc.AssignPtrUintptr(ppVtab, sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(sqlite3_vtab{}))))
 11891  		if pNew == uintptr(0) {
 11892  			return SQLITE_NOMEM
 11893  		}
 11894  		libc.Xmemset(tls, pNew, 0, uint64(unsafe.Sizeof(sqlite3_vtab{})))
 11895  	}
 11896  	return rc
 11897  }
 11898  
 11899  func carrayDisconnect(tls *libc.TLS, pVtab uintptr) int32 {
 11900  	sqlite3.Xsqlite3_free(tls, pVtab)
 11901  	return SQLITE_OK
 11902  }
 11903  
 11904  func carrayOpen(tls *libc.TLS, p uintptr, ppCursor uintptr) int32 {
 11905  	var pCur uintptr
 11906  	pCur = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(carray_cursor{})))
 11907  	if pCur == uintptr(0) {
 11908  		return SQLITE_NOMEM
 11909  	}
 11910  	libc.Xmemset(tls, pCur, 0, uint64(unsafe.Sizeof(carray_cursor{})))
 11911  	*(*uintptr)(unsafe.Pointer(ppCursor)) = pCur
 11912  	return SQLITE_OK
 11913  }
 11914  
 11915  func carrayClose(tls *libc.TLS, cur uintptr) int32 {
 11916  	sqlite3.Xsqlite3_free(tls, cur)
 11917  	return SQLITE_OK
 11918  }
 11919  
 11920  func carrayNext(tls *libc.TLS, cur uintptr) int32 {
 11921  	var pCur uintptr = cur
 11922  	(*carray_cursor)(unsafe.Pointer(pCur)).FiRowid++
 11923  	return SQLITE_OK
 11924  }
 11925  
 11926  func carrayColumn(tls *libc.TLS, cur uintptr, ctx uintptr, i int32) int32 {
 11927  	var pCur uintptr = cur
 11928  	var x sqlite3_int64 = int64(0)
 11929  	switch i {
 11930  	case CARRAY_COLUMN_POINTER:
 11931  		return SQLITE_OK
 11932  	case CARRAY_COLUMN_COUNT:
 11933  		x = (*carray_cursor)(unsafe.Pointer(pCur)).FiCnt
 11934  		break
 11935  	case CARRAY_COLUMN_CTYPE:
 11936  		{
 11937  			sqlite3.Xsqlite3_result_text(tls, ctx, azType[(*carray_cursor)(unsafe.Pointer(pCur)).FeType], -1, uintptr(0))
 11938  			return SQLITE_OK
 11939  
 11940  		}
 11941  	default:
 11942  		{
 11943  			switch int32((*carray_cursor)(unsafe.Pointer(pCur)).FeType) {
 11944  			case CARRAY_INT32:
 11945  				{
 11946  					var p uintptr = (*carray_cursor)(unsafe.Pointer(pCur)).FpPtr
 11947  					sqlite3.Xsqlite3_result_int(tls, ctx, *(*int32)(unsafe.Pointer(p + uintptr((*carray_cursor)(unsafe.Pointer(pCur)).FiRowid-int64(1))*4)))
 11948  					return SQLITE_OK
 11949  
 11950  				}
 11951  			case CARRAY_INT64:
 11952  				{
 11953  					var p uintptr = (*carray_cursor)(unsafe.Pointer(pCur)).FpPtr
 11954  					sqlite3.Xsqlite3_result_int64(tls, ctx, *(*sqlite3_int64)(unsafe.Pointer(p + uintptr((*carray_cursor)(unsafe.Pointer(pCur)).FiRowid-int64(1))*8)))
 11955  					return SQLITE_OK
 11956  
 11957  				}
 11958  			case CARRAY_DOUBLE:
 11959  				{
 11960  					var p uintptr = (*carray_cursor)(unsafe.Pointer(pCur)).FpPtr
 11961  					sqlite3.Xsqlite3_result_double(tls, ctx, *(*float64)(unsafe.Pointer(p + uintptr((*carray_cursor)(unsafe.Pointer(pCur)).FiRowid-int64(1))*8)))
 11962  					return SQLITE_OK
 11963  
 11964  				}
 11965  			case CARRAY_TEXT:
 11966  				{
 11967  					var p uintptr = (*carray_cursor)(unsafe.Pointer(pCur)).FpPtr
 11968  					sqlite3.Xsqlite3_result_text(tls, ctx, *(*uintptr)(unsafe.Pointer(p + uintptr((*carray_cursor)(unsafe.Pointer(pCur)).FiRowid-int64(1))*8)), -1, libc.UintptrFromInt32(-1))
 11969  					return SQLITE_OK
 11970  
 11971  				}
 11972  			}
 11973  
 11974  		}
 11975  	}
 11976  	sqlite3.Xsqlite3_result_int64(tls, ctx, x)
 11977  	return SQLITE_OK
 11978  }
 11979  
 11980  func carrayRowid(tls *libc.TLS, cur uintptr, pRowid uintptr) int32 {
 11981  	var pCur uintptr = cur
 11982  	*(*sqlite_int64)(unsafe.Pointer(pRowid)) = (*carray_cursor)(unsafe.Pointer(pCur)).FiRowid
 11983  	return SQLITE_OK
 11984  }
 11985  
 11986  func carrayEof(tls *libc.TLS, cur uintptr) int32 {
 11987  	var pCur uintptr = cur
 11988  	return libc.Bool32((*carray_cursor)(unsafe.Pointer(pCur)).FiRowid > (*carray_cursor)(unsafe.Pointer(pCur)).FiCnt)
 11989  }
 11990  
 11991  func carrayFilter(tls *libc.TLS, pVtabCursor uintptr, idxNum int32, idxStr uintptr, argc int32, argv uintptr) int32 {
 11992  	bp := tls.Alloc(8)
 11993  	defer tls.Free(8)
 11994  
 11995  	var pCur uintptr = pVtabCursor
 11996  	(*carray_cursor)(unsafe.Pointer(pCur)).FpPtr = uintptr(0)
 11997  	(*carray_cursor)(unsafe.Pointer(pCur)).FiCnt = int64(0)
 11998  	switch idxNum {
 11999  	case 1:
 12000  		{
 12001  			var pBind uintptr = sqlite3.Xsqlite3_value_pointer(tls, *(*uintptr)(unsafe.Pointer(argv)), ts+4048)
 12002  			if pBind == uintptr(0) {
 12003  				break
 12004  			}
 12005  			(*carray_cursor)(unsafe.Pointer(pCur)).FpPtr = (*carray_bind)(unsafe.Pointer(pBind)).FaData
 12006  			(*carray_cursor)(unsafe.Pointer(pCur)).FiCnt = sqlite3_int64((*carray_bind)(unsafe.Pointer(pBind)).FnData)
 12007  			(*carray_cursor)(unsafe.Pointer(pCur)).FeType = uint8((*carray_bind)(unsafe.Pointer(pBind)).FmFlags & 0x03)
 12008  			break
 12009  
 12010  		}
 12011  	case 2:
 12012  		fallthrough
 12013  	case 3:
 12014  		{
 12015  			(*carray_cursor)(unsafe.Pointer(pCur)).FpPtr = sqlite3.Xsqlite3_value_pointer(tls, *(*uintptr)(unsafe.Pointer(argv)), ts+4060)
 12016  			(*carray_cursor)(unsafe.Pointer(pCur)).FiCnt = func() int64 {
 12017  				if (*carray_cursor)(unsafe.Pointer(pCur)).FpPtr != 0 {
 12018  					return sqlite3.Xsqlite3_value_int64(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 12019  				}
 12020  				return int64(0)
 12021  			}()
 12022  			if idxNum < 3 {
 12023  				(*carray_cursor)(unsafe.Pointer(pCur)).FeType = uint8(CARRAY_INT32)
 12024  			} else {
 12025  				var i uint8
 12026  				var zType uintptr = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + 2*8)))
 12027  				for i = uint8(0); uint64(i) < uint64(unsafe.Sizeof(azType))/uint64(unsafe.Sizeof(uintptr(0))); i++ {
 12028  					if sqlite3.Xsqlite3_stricmp(tls, zType, azType[i]) == 0 {
 12029  						break
 12030  					}
 12031  				}
 12032  				if uint64(i) >= uint64(unsafe.Sizeof(azType))/uint64(unsafe.Sizeof(uintptr(0))) {
 12033  					(*sqlite3_vtab)(unsafe.Pointer((*sqlite3_vtab_cursor)(unsafe.Pointer(pVtabCursor)).FpVtab)).FzErrMsg = sqlite3.Xsqlite3_mprintf(tls,
 12034  						ts+4067, libc.VaList(bp, zType))
 12035  					return SQLITE_ERROR
 12036  				} else {
 12037  					(*carray_cursor)(unsafe.Pointer(pCur)).FeType = i
 12038  				}
 12039  			}
 12040  			break
 12041  
 12042  		}
 12043  	}
 12044  	(*carray_cursor)(unsafe.Pointer(pCur)).FiRowid = int64(1)
 12045  	return SQLITE_OK
 12046  }
 12047  
 12048  func carrayBestIndex(tls *libc.TLS, tab uintptr, pIdxInfo uintptr) int32 {
 12049  	var i int32
 12050  	var ptrIdx int32 = -1
 12051  	var cntIdx int32 = -1
 12052  	var ctypeIdx int32 = -1
 12053  
 12054  	var pConstraint uintptr
 12055  	pConstraint = (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint
 12056  	i = 0
 12057  __1:
 12058  	if !(i < (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnConstraint) {
 12059  		goto __3
 12060  	}
 12061  	{
 12062  		if int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fusable) == 0 {
 12063  			goto __2
 12064  		}
 12065  		if int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) != SQLITE_INDEX_CONSTRAINT_EQ {
 12066  			goto __2
 12067  		}
 12068  		switch (*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).FiColumn {
 12069  		case CARRAY_COLUMN_POINTER:
 12070  			ptrIdx = i
 12071  			break
 12072  		case CARRAY_COLUMN_COUNT:
 12073  			cntIdx = i
 12074  			break
 12075  		case CARRAY_COLUMN_CTYPE:
 12076  			ctypeIdx = i
 12077  			break
 12078  		}
 12079  
 12080  	}
 12081  	goto __2
 12082  __2:
 12083  	i++
 12084  	pConstraint += 12
 12085  	goto __1
 12086  	goto __3
 12087  __3:
 12088  	;
 12089  	if ptrIdx >= 0 {
 12090  		(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(ptrIdx)*8)).FargvIndex = 1
 12091  		(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(ptrIdx)*8)).Fomit = uint8(1)
 12092  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = float64(1)
 12093  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedRows = int64(100)
 12094  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxNum = 1
 12095  		if cntIdx >= 0 {
 12096  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(cntIdx)*8)).FargvIndex = 2
 12097  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(cntIdx)*8)).Fomit = uint8(1)
 12098  			(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxNum = 2
 12099  			if ctypeIdx >= 0 {
 12100  				(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(ctypeIdx)*8)).FargvIndex = 3
 12101  				(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(ctypeIdx)*8)).Fomit = uint8(1)
 12102  				(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxNum = 3
 12103  			}
 12104  		}
 12105  	} else {
 12106  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = float64(2147483647)
 12107  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedRows = int64(2147483647)
 12108  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxNum = 0
 12109  	}
 12110  	return SQLITE_OK
 12111  }
 12112  
 12113  var carrayModule = sqlite3_module{
 12114  	FxConnect:    0,
 12115  	FxBestIndex:  0,
 12116  	FxDisconnect: 0,
 12117  	FxOpen:       0,
 12118  	FxClose:      0,
 12119  	FxFilter:     0,
 12120  	FxNext:       0,
 12121  	FxEof:        0,
 12122  	FxColumn:     0,
 12123  	FxRowid:      0,
 12124  }
 12125  
 12126  func carrayBindDel(tls *libc.TLS, pPtr uintptr) {
 12127  	var p uintptr = pPtr
 12128  	if (*carray_bind)(unsafe.Pointer(p)).FxDel != uintptr(0) {
 12129  		(*struct{ f func(*libc.TLS, uintptr) })(unsafe.Pointer(&struct{ uintptr }{(*carray_bind)(unsafe.Pointer(p)).FxDel})).f(tls, (*carray_bind)(unsafe.Pointer(p)).FaData)
 12130  	}
 12131  	sqlite3.Xsqlite3_free(tls, p)
 12132  }
 12133  
 12134  func sqlite3_carray_bind(tls *libc.TLS, pStmt uintptr, idx int32, aData uintptr, nData int32, mFlags int32, xDestroy uintptr) int32 {
 12135  	var pNew uintptr
 12136  	var i int32
 12137  	pNew = sqlite3.Xsqlite3_malloc64(tls, uint64(unsafe.Sizeof(carray_bind{})))
 12138  	if pNew == uintptr(0) {
 12139  		if xDestroy != uintptr(0) && xDestroy != libc.UintptrFromInt32(-1) {
 12140  			(*struct{ f func(*libc.TLS, uintptr) })(unsafe.Pointer(&struct{ uintptr }{xDestroy})).f(tls, aData)
 12141  		}
 12142  		return SQLITE_NOMEM
 12143  	}
 12144  	(*carray_bind)(unsafe.Pointer(pNew)).FnData = nData
 12145  	(*carray_bind)(unsafe.Pointer(pNew)).FmFlags = mFlags
 12146  	if xDestroy == libc.UintptrFromInt32(-1) {
 12147  		var sz sqlite3_int64 = sqlite3_int64(nData)
 12148  		switch mFlags & 0x03 {
 12149  		case CARRAY_INT32:
 12150  			sz = sz * int64(4)
 12151  			break
 12152  			fallthrough
 12153  		case CARRAY_INT64:
 12154  			sz = sz * int64(8)
 12155  			break
 12156  			fallthrough
 12157  		case CARRAY_DOUBLE:
 12158  			sz = sz * int64(8)
 12159  			break
 12160  			fallthrough
 12161  		case CARRAY_TEXT:
 12162  			sz = int64(uint64(sz) * uint64(unsafe.Sizeof(uintptr(0))))
 12163  			break
 12164  		}
 12165  		if mFlags&0x03 == CARRAY_TEXT {
 12166  			for i = 0; i < nData; i++ {
 12167  				var z uintptr = *(*uintptr)(unsafe.Pointer(aData + uintptr(i)*8))
 12168  				if z != 0 {
 12169  					sz = sqlite3_int64(uint64(sz) + (libc.Xstrlen(tls, z) + uint64(1)))
 12170  				}
 12171  			}
 12172  		}
 12173  		(*carray_bind)(unsafe.Pointer(pNew)).FaData = sqlite3.Xsqlite3_malloc64(tls, uint64(sz))
 12174  		if (*carray_bind)(unsafe.Pointer(pNew)).FaData == uintptr(0) {
 12175  			sqlite3.Xsqlite3_free(tls, pNew)
 12176  			return SQLITE_NOMEM
 12177  		}
 12178  		if mFlags&0x03 == CARRAY_TEXT {
 12179  			var az uintptr = (*carray_bind)(unsafe.Pointer(pNew)).FaData
 12180  			var z uintptr = az + uintptr(nData)*8
 12181  			for i = 0; i < nData; i++ {
 12182  				var zData uintptr = *(*uintptr)(unsafe.Pointer(aData + uintptr(i)*8))
 12183  				var n sqlite3_int64
 12184  				if zData == uintptr(0) {
 12185  					*(*uintptr)(unsafe.Pointer(az + uintptr(i)*8)) = uintptr(0)
 12186  					continue
 12187  				}
 12188  				*(*uintptr)(unsafe.Pointer(az + uintptr(i)*8)) = z
 12189  				n = sqlite3_int64(libc.Xstrlen(tls, zData))
 12190  				libc.Xmemcpy(tls, z, zData, uint64(n+int64(1)))
 12191  				z += uintptr(n + int64(1))
 12192  			}
 12193  		} else {
 12194  			libc.Xmemcpy(tls, (*carray_bind)(unsafe.Pointer(pNew)).FaData, aData, uint64(sz))
 12195  		}
 12196  		(*carray_bind)(unsafe.Pointer(pNew)).FxDel = *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{sqlite3.Xsqlite3_free}))
 12197  	} else {
 12198  		(*carray_bind)(unsafe.Pointer(pNew)).FaData = aData
 12199  		(*carray_bind)(unsafe.Pointer(pNew)).FxDel = xDestroy
 12200  	}
 12201  	return sqlite3.Xsqlite3_bind_pointer(tls, pStmt, idx, pNew, ts+4048, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{carrayBindDel})))
 12202  }
 12203  
 12204  func inttoptrFunc(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 12205  	bp := tls.Alloc(20)
 12206  	defer tls.Free(20)
 12207  
 12208  	*(*sqlite3_int64)(unsafe.Pointer(bp + 8)) = sqlite3.Xsqlite3_value_int64(tls, *(*uintptr)(unsafe.Pointer(argv)))
 12209  	if uint64(unsafe.Sizeof(sqlite3_int64(0))) == uint64(unsafe.Sizeof(uintptr(0))) {
 12210  		libc.Xmemcpy(tls, bp, bp+8, uint64(unsafe.Sizeof(uintptr(0))))
 12211  	} else {
 12212  		*(*int32)(unsafe.Pointer(bp + 16)) = int32(*(*sqlite3_int64)(unsafe.Pointer(bp + 8)) & int64(0xffffffff))
 12213  		libc.Xmemcpy(tls, bp, bp+16, uint64(unsafe.Sizeof(uintptr(0))))
 12214  	}
 12215  	sqlite3.Xsqlite3_result_pointer(tls, context, *(*uintptr)(unsafe.Pointer(bp)), ts+4060, uintptr(0))
 12216  }
 12217  
 12218  func sqlite3_carray_init(tls *libc.TLS, db uintptr, pzErrMsg uintptr, pApi uintptr) int32 {
 12219  	var rc int32 = SQLITE_OK
 12220  	_ = pApi
 12221  
 12222  	rc = sqlite3.Xsqlite3_create_module(tls, db, ts+4060, uintptr(unsafe.Pointer(&carrayModule)), uintptr(0))
 12223  	if rc == SQLITE_OK {
 12224  		rc = sqlite3.Xsqlite3_create_function(tls, db, ts+4088, 1, SQLITE_UTF8, uintptr(0),
 12225  			*(*uintptr)(unsafe.Pointer(&struct {
 12226  				f func(*libc.TLS, uintptr, int32, uintptr)
 12227  			}{inttoptrFunc})), uintptr(0), uintptr(0))
 12228  	}
 12229  	return rc
 12230  }
 12231  
 12232  type CksmVfs = sqlite3_vfs1
 12233  type CksmFile1 = struct {
 12234  	Fbase        sqlite3_file
 12235  	FzFName      uintptr
 12236  	FcomputeCksm uint8
 12237  	FverifyCksm  uint8
 12238  	FisWal       uint8
 12239  	FinCkpt      uint8
 12240  	F__ccgo_pad1 [4]byte
 12241  	FpPartner    uintptr
 12242  }
 12243  
 12244  type CksmFile = CksmFile1
 12245  
 12246  type u8 = uint8
 12247  
 12248  var cksm_vfs = sqlite3_vfs{
 12249  	FiVersion:          3,
 12250  	FmxPathname:        1024,
 12251  	FzName:             ts + 4097,
 12252  	FxOpen:             0,
 12253  	FxDelete:           0,
 12254  	FxAccess:           0,
 12255  	FxFullPathname:     0,
 12256  	FxDlOpen:           0,
 12257  	FxDlError:          0,
 12258  	FxDlSym:            0,
 12259  	FxDlClose:          0,
 12260  	FxRandomness:       0,
 12261  	FxSleep:            0,
 12262  	FxCurrentTime:      0,
 12263  	FxGetLastError:     0,
 12264  	FxCurrentTimeInt64: 0,
 12265  	FxSetSystemCall:    0,
 12266  	FxGetSystemCall:    0,
 12267  	FxNextSystemCall:   0,
 12268  }
 12269  
 12270  var cksm_io_methods = sqlite3_io_methods{
 12271  	FiVersion:               3,
 12272  	FxClose:                 0,
 12273  	FxRead:                  0,
 12274  	FxWrite:                 0,
 12275  	FxTruncate:              0,
 12276  	FxSync:                  0,
 12277  	FxFileSize:              0,
 12278  	FxLock:                  0,
 12279  	FxUnlock:                0,
 12280  	FxCheckReservedLock:     0,
 12281  	FxFileControl:           0,
 12282  	FxSectorSize:            0,
 12283  	FxDeviceCharacteristics: 0,
 12284  	FxShmMap:                0,
 12285  	FxShmLock:               0,
 12286  	FxShmBarrier:            0,
 12287  	FxShmUnmap:              0,
 12288  	FxFetch:                 0,
 12289  	FxUnfetch:               0,
 12290  }
 12291  
 12292  func cksmCompute(tls *libc.TLS, a uintptr, nByte int32, aOut uintptr) {
 12293  	bp := tls.Alloc(12)
 12294  	defer tls.Free(12)
 12295  
 12296  	*(*u32)(unsafe.Pointer(bp + 4)) = u32(0)
 12297  	*(*u32)(unsafe.Pointer(bp + 8)) = u32(0)
 12298  	var aData uintptr = a
 12299  	var aEnd uintptr = a + uintptr(nByte)
 12300  	*(*u32)(unsafe.Pointer(bp)) = u32(1)
 12301  
 12302  	if 1 == int32(*(*u8)(unsafe.Pointer(bp))) {
 12303  		for __ccgo := true; __ccgo; __ccgo = aData < aEnd {
 12304  			*(*u32)(unsafe.Pointer(bp + 4)) += *(*u32)(unsafe.Pointer(libc.PostIncUintptr(&aData, 4))) + *(*u32)(unsafe.Pointer(bp + 8))
 12305  			*(*u32)(unsafe.Pointer(bp + 8)) += *(*u32)(unsafe.Pointer(libc.PostIncUintptr(&aData, 4))) + *(*u32)(unsafe.Pointer(bp + 4))
 12306  		}
 12307  	} else {
 12308  		for __ccgo1 := true; __ccgo1; __ccgo1 = aData < aEnd {
 12309  			*(*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))
 12310  			*(*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))
 12311  			aData += 4 * uintptr(2)
 12312  		}
 12313  		*(*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
 12314  		*(*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
 12315  	}
 12316  	libc.Xmemcpy(tls, aOut, bp+4, uint64(4))
 12317  	libc.Xmemcpy(tls, aOut+uintptr(4), bp+8, uint64(4))
 12318  }
 12319  
 12320  func cksmVerifyFunc(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 12321  	bp := tls.Alloc(8)
 12322  	defer tls.Free(8)
 12323  
 12324  	var nByte int32
 12325  	var data uintptr
 12326  
 12327  	data = sqlite3.Xsqlite3_value_blob(tls, *(*uintptr)(unsafe.Pointer(argv)))
 12328  	if data == uintptr(0) {
 12329  		return
 12330  	}
 12331  	if sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(argv))) != SQLITE_BLOB {
 12332  		return
 12333  	}
 12334  	nByte = sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(argv)))
 12335  	if nByte < 512 || nByte > 65536 || nByte&(nByte-1) != 0 {
 12336  		return
 12337  	}
 12338  	cksmCompute(tls, data, nByte-8, bp)
 12339  	sqlite3.Xsqlite3_result_int(tls, context, libc.Bool32(libc.Xmemcmp(tls, data+uintptr(nByte)-uintptr(8), bp, uint64(8)) == 0))
 12340  }
 12341  
 12342  func cksmClose(tls *libc.TLS, pFile uintptr) int32 {
 12343  	var p uintptr = pFile
 12344  	if (*CksmFile)(unsafe.Pointer(p)).FpPartner != 0 {
 12345  		(*CksmFile)(unsafe.Pointer((*CksmFile)(unsafe.Pointer(p)).FpPartner)).FpPartner = uintptr(0)
 12346  		(*CksmFile)(unsafe.Pointer(p)).FpPartner = uintptr(0)
 12347  	}
 12348  	pFile = pFile + uintptr(1)*32
 12349  	return (*struct {
 12350  		f func(*libc.TLS, uintptr) int32
 12351  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxClose})).f(tls, pFile)
 12352  }
 12353  
 12354  func cksmSetFlags(tls *libc.TLS, p uintptr, hasCorrectReserveSize int32) {
 12355  	if hasCorrectReserveSize != int32((*CksmFile)(unsafe.Pointer(p)).FcomputeCksm) {
 12356  		(*CksmFile)(unsafe.Pointer(p)).FcomputeCksm = libc.AssignPtrUint8(p+17, uint8(hasCorrectReserveSize))
 12357  		if (*CksmFile)(unsafe.Pointer(p)).FpPartner != 0 {
 12358  			(*CksmFile)(unsafe.Pointer((*CksmFile)(unsafe.Pointer(p)).FpPartner)).FverifyCksm = uint8(hasCorrectReserveSize)
 12359  			(*CksmFile)(unsafe.Pointer((*CksmFile)(unsafe.Pointer(p)).FpPartner)).FcomputeCksm = uint8(hasCorrectReserveSize)
 12360  		}
 12361  	}
 12362  }
 12363  
 12364  func cksmRead(tls *libc.TLS, pFile uintptr, zBuf uintptr, iAmt int32, iOfst sqlite_int64) int32 {
 12365  	bp := tls.Alloc(24)
 12366  	defer tls.Free(24)
 12367  
 12368  	var rc int32
 12369  	var p uintptr = pFile
 12370  	pFile = pFile + uintptr(1)*32
 12371  	rc = (*struct {
 12372  		f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 12373  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxRead})).f(tls, pFile, zBuf, iAmt, iOfst)
 12374  	if rc == SQLITE_OK {
 12375  		if iOfst == int64(0) && iAmt >= 100 && (libc.Xmemcmp(tls, zBuf, ts+3288, uint64(16)) == 0 || libc.Xmemcmp(tls, zBuf, ts+4105, uint64(3)) == 0) {
 12376  			var d uintptr = zBuf
 12377  			var hasCorrectReserveSize uint8 = uint8(libc.Bool32(int32(*(*u8)(unsafe.Pointer(d + 20))) == 8))
 12378  			cksmSetFlags(tls, p, int32(hasCorrectReserveSize))
 12379  		}
 12380  
 12381  		if iAmt >= 512 &&
 12382  			(*CksmFile)(unsafe.Pointer(p)).FverifyCksm != 0 &&
 12383  			!(int32((*CksmFile)(unsafe.Pointer(p)).FinCkpt) != 0) {
 12384  			cksmCompute(tls, zBuf, iAmt-8, bp+16)
 12385  			if libc.Xmemcmp(tls, zBuf+uintptr(iAmt)-uintptr(8), bp+16, uint64(8)) != 0 {
 12386  				sqlite3.Xsqlite3_log(tls, SQLITE_IOERR|int32(32)<<8,
 12387  					ts+4109,
 12388  					libc.VaList(bp, iOfst, (*CksmFile)(unsafe.Pointer(p)).FzFName))
 12389  				rc = SQLITE_IOERR | int32(32)<<8
 12390  			}
 12391  		}
 12392  	}
 12393  	return rc
 12394  }
 12395  
 12396  func cksmWrite(tls *libc.TLS, pFile uintptr, zBuf uintptr, iAmt int32, iOfst sqlite_int64) int32 {
 12397  	var p uintptr = pFile
 12398  	pFile = pFile + uintptr(1)*32
 12399  	if iOfst == int64(0) && iAmt >= 100 && (libc.Xmemcmp(tls, zBuf, ts+3288, uint64(16)) == 0 || libc.Xmemcmp(tls, zBuf, ts+4105, uint64(3)) == 0) {
 12400  		var d uintptr = zBuf
 12401  		var hasCorrectReserveSize uint8 = uint8(libc.Bool32(int32(*(*u8)(unsafe.Pointer(d + 20))) == 8))
 12402  		cksmSetFlags(tls, p, int32(hasCorrectReserveSize))
 12403  	}
 12404  
 12405  	if iAmt >= 512 &&
 12406  		(*CksmFile)(unsafe.Pointer(p)).FcomputeCksm != 0 &&
 12407  		!(int32((*CksmFile)(unsafe.Pointer(p)).FinCkpt) != 0) {
 12408  		cksmCompute(tls, zBuf, iAmt-8, zBuf+uintptr(iAmt)-uintptr(8))
 12409  	}
 12410  	return (*struct {
 12411  		f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 12412  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxWrite})).f(tls, pFile, zBuf, iAmt, iOfst)
 12413  }
 12414  
 12415  func cksmTruncate(tls *libc.TLS, pFile uintptr, size sqlite_int64) int32 {
 12416  	pFile = pFile + uintptr(1)*32
 12417  	return (*struct {
 12418  		f func(*libc.TLS, uintptr, sqlite3_int64) int32
 12419  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxTruncate})).f(tls, pFile, size)
 12420  }
 12421  
 12422  func cksmSync(tls *libc.TLS, pFile uintptr, flags int32) int32 {
 12423  	pFile = pFile + uintptr(1)*32
 12424  	return (*struct {
 12425  		f func(*libc.TLS, uintptr, int32) int32
 12426  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxSync})).f(tls, pFile, flags)
 12427  }
 12428  
 12429  func cksmFileSize(tls *libc.TLS, pFile uintptr, pSize uintptr) int32 {
 12430  	var p uintptr = pFile
 12431  	pFile = p + uintptr(1)*32
 12432  	return (*struct {
 12433  		f func(*libc.TLS, uintptr, uintptr) int32
 12434  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxFileSize})).f(tls, pFile, pSize)
 12435  }
 12436  
 12437  func cksmLock(tls *libc.TLS, pFile uintptr, eLock int32) int32 {
 12438  	pFile = pFile + uintptr(1)*32
 12439  	return (*struct {
 12440  		f func(*libc.TLS, uintptr, int32) int32
 12441  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxLock})).f(tls, pFile, eLock)
 12442  }
 12443  
 12444  func cksmUnlock(tls *libc.TLS, pFile uintptr, eLock int32) int32 {
 12445  	pFile = pFile + uintptr(1)*32
 12446  	return (*struct {
 12447  		f func(*libc.TLS, uintptr, int32) int32
 12448  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxUnlock})).f(tls, pFile, eLock)
 12449  }
 12450  
 12451  func cksmCheckReservedLock(tls *libc.TLS, pFile uintptr, pResOut uintptr) int32 {
 12452  	pFile = pFile + uintptr(1)*32
 12453  	return (*struct {
 12454  		f func(*libc.TLS, uintptr, uintptr) int32
 12455  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxCheckReservedLock})).f(tls, pFile, pResOut)
 12456  }
 12457  
 12458  func cksmFileControl(tls *libc.TLS, pFile uintptr, op int32, pArg uintptr) int32 {
 12459  	bp := tls.Alloc(16)
 12460  	defer tls.Free(16)
 12461  
 12462  	var rc int32
 12463  	var p uintptr = pFile
 12464  	pFile = pFile + uintptr(1)*32
 12465  	if op == SQLITE_FCNTL_PRAGMA {
 12466  		var azArg uintptr = pArg
 12467  
 12468  		if sqlite3.Xsqlite3_stricmp(tls, *(*uintptr)(unsafe.Pointer(azArg + 1*8)), ts+4144) == 0 {
 12469  			var zArg uintptr = *(*uintptr)(unsafe.Pointer(azArg + 2*8))
 12470  			if zArg != uintptr(0) {
 12471  				if int32(*(*uint8)(unsafe.Pointer(zArg))) >= '1' && int32(*(*uint8)(unsafe.Pointer(zArg))) <= '9' ||
 12472  					sqlite3.Xsqlite3_strlike(tls, ts+4166, zArg, uint32(0)) == 0 ||
 12473  					sqlite3.Xsqlite3_stricmp(tls, ts+4174, zArg) == 0 ||
 12474  					sqlite3.Xsqlite3_stricmp(tls, ts+4178, zArg) == 0 {
 12475  					(*CksmFile)(unsafe.Pointer(p)).FverifyCksm = (*CksmFile)(unsafe.Pointer(p)).FcomputeCksm
 12476  				} else {
 12477  					(*CksmFile)(unsafe.Pointer(p)).FverifyCksm = uint8(0)
 12478  				}
 12479  				if (*CksmFile)(unsafe.Pointer(p)).FpPartner != 0 {
 12480  					(*CksmFile)(unsafe.Pointer((*CksmFile)(unsafe.Pointer(p)).FpPartner)).FverifyCksm = (*CksmFile)(unsafe.Pointer(p)).FverifyCksm
 12481  				}
 12482  			}
 12483  			*(*uintptr)(unsafe.Pointer(azArg)) = sqlite3.Xsqlite3_mprintf(tls, ts+1333, libc.VaList(bp, int32((*CksmFile)(unsafe.Pointer(p)).FverifyCksm)))
 12484  			return SQLITE_OK
 12485  		} else if (*CksmFile)(unsafe.Pointer(p)).FcomputeCksm != 0 && *(*uintptr)(unsafe.Pointer(azArg + 2*8)) != uintptr(0) &&
 12486  			sqlite3.Xsqlite3_stricmp(tls, *(*uintptr)(unsafe.Pointer(azArg + 1*8)), ts+4181) == 0 {
 12487  			return SQLITE_OK
 12488  		}
 12489  	} else if op == SQLITE_FCNTL_CKPT_START || op == SQLITE_FCNTL_CKPT_DONE {
 12490  		(*CksmFile)(unsafe.Pointer(p)).FinCkpt = uint8(libc.Bool32(op == SQLITE_FCNTL_CKPT_START))
 12491  		if (*CksmFile)(unsafe.Pointer(p)).FpPartner != 0 {
 12492  			(*CksmFile)(unsafe.Pointer((*CksmFile)(unsafe.Pointer(p)).FpPartner)).FinCkpt = (*CksmFile)(unsafe.Pointer(p)).FinCkpt
 12493  		}
 12494  	} else if op == SQLITE_FCNTL_CKSM_FILE {
 12495  		var ppFile uintptr = pArg
 12496  		*(*uintptr)(unsafe.Pointer(ppFile)) = p
 12497  		return SQLITE_OK
 12498  	}
 12499  	rc = (*struct {
 12500  		f func(*libc.TLS, uintptr, int32, uintptr) int32
 12501  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxFileControl})).f(tls, pFile, op, pArg)
 12502  	if rc == SQLITE_OK && op == SQLITE_FCNTL_VFSNAME {
 12503  		*(*uintptr)(unsafe.Pointer(pArg)) = sqlite3.Xsqlite3_mprintf(tls, ts+4191, libc.VaList(bp+8, *(*uintptr)(unsafe.Pointer(pArg))))
 12504  	}
 12505  	return rc
 12506  }
 12507  
 12508  func cksmSectorSize(tls *libc.TLS, pFile uintptr) int32 {
 12509  	pFile = pFile + uintptr(1)*32
 12510  	return (*struct {
 12511  		f func(*libc.TLS, uintptr) int32
 12512  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxSectorSize})).f(tls, pFile)
 12513  }
 12514  
 12515  func cksmDeviceCharacteristics(tls *libc.TLS, pFile uintptr) int32 {
 12516  	pFile = pFile + uintptr(1)*32
 12517  	return (*struct {
 12518  		f func(*libc.TLS, uintptr) int32
 12519  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxDeviceCharacteristics})).f(tls, pFile)
 12520  }
 12521  
 12522  func cksmShmMap(tls *libc.TLS, pFile uintptr, iPg int32, pgsz int32, bExtend int32, pp uintptr) int32 {
 12523  	pFile = pFile + uintptr(1)*32
 12524  	return (*struct {
 12525  		f func(*libc.TLS, uintptr, int32, int32, int32, uintptr) int32
 12526  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxShmMap})).f(tls, pFile, iPg, pgsz, bExtend, pp)
 12527  }
 12528  
 12529  func cksmShmLock(tls *libc.TLS, pFile uintptr, offset int32, n int32, flags int32) int32 {
 12530  	pFile = pFile + uintptr(1)*32
 12531  	return (*struct {
 12532  		f func(*libc.TLS, uintptr, int32, int32, int32) int32
 12533  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxShmLock})).f(tls, pFile, offset, n, flags)
 12534  }
 12535  
 12536  func cksmShmBarrier(tls *libc.TLS, pFile uintptr) {
 12537  	pFile = pFile + uintptr(1)*32
 12538  	(*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)
 12539  }
 12540  
 12541  func cksmShmUnmap(tls *libc.TLS, pFile uintptr, deleteFlag int32) int32 {
 12542  	pFile = pFile + uintptr(1)*32
 12543  	return (*struct {
 12544  		f func(*libc.TLS, uintptr, int32) int32
 12545  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxShmUnmap})).f(tls, pFile, deleteFlag)
 12546  }
 12547  
 12548  func cksmFetch(tls *libc.TLS, pFile uintptr, iOfst sqlite3_int64, iAmt int32, pp uintptr) int32 {
 12549  	var p uintptr = pFile
 12550  	if (*CksmFile)(unsafe.Pointer(p)).FcomputeCksm != 0 {
 12551  		*(*uintptr)(unsafe.Pointer(pp)) = uintptr(0)
 12552  		return SQLITE_OK
 12553  	}
 12554  	pFile = pFile + uintptr(1)*32
 12555  	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 {
 12556  		return (*struct {
 12557  			f func(*libc.TLS, uintptr, sqlite3_int64, int32, uintptr) int32
 12558  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxFetch})).f(tls, pFile, iOfst, iAmt, pp)
 12559  	}
 12560  	*(*uintptr)(unsafe.Pointer(pp)) = uintptr(0)
 12561  	return SQLITE_OK
 12562  }
 12563  
 12564  func cksmUnfetch(tls *libc.TLS, pFile uintptr, iOfst sqlite3_int64, pPage uintptr) int32 {
 12565  	pFile = pFile + uintptr(1)*32
 12566  	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 {
 12567  		return (*struct {
 12568  			f func(*libc.TLS, uintptr, sqlite3_int64, uintptr) int32
 12569  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxUnfetch})).f(tls, pFile, iOfst, pPage)
 12570  	}
 12571  	return SQLITE_OK
 12572  }
 12573  
 12574  func cksmOpen(tls *libc.TLS, pVfs uintptr, zName uintptr, pFile uintptr, flags int32, pOutFlags uintptr) int32 {
 12575  	bp := tls.Alloc(8)
 12576  	defer tls.Free(8)
 12577  
 12578  	var p uintptr
 12579  	var pSubFile uintptr
 12580  	var pSubVfs uintptr
 12581  	var rc int32
 12582  
 12583  	pSubVfs = (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData
 12584  	if !(flags&(SQLITE_OPEN_MAIN_DB|SQLITE_OPEN_WAL) == 0) {
 12585  		goto __1
 12586  	}
 12587  	return (*struct {
 12588  		f func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr) int32
 12589  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pSubVfs)).FxOpen})).f(tls, pSubVfs, zName, pFile, flags, pOutFlags)
 12590  __1:
 12591  	;
 12592  	p = pFile
 12593  	libc.Xmemset(tls, p, 0, uint64(unsafe.Sizeof(CksmFile{})))
 12594  	pSubFile = pFile + uintptr(1)*32
 12595  	(*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods = uintptr(unsafe.Pointer(&cksm_io_methods))
 12596  	rc = (*struct {
 12597  		f func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr) int32
 12598  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pSubVfs)).FxOpen})).f(tls, pSubVfs, zName, pSubFile, flags, pOutFlags)
 12599  	if !(rc != 0) {
 12600  		goto __2
 12601  	}
 12602  	goto cksm_open_done
 12603  __2:
 12604  	;
 12605  	if !(flags&SQLITE_OPEN_WAL != 0) {
 12606  		goto __3
 12607  	}
 12608  	*(*uintptr)(unsafe.Pointer(bp)) = sqlite3.Xsqlite3_database_file_object(tls, zName)
 12609  	rc = (*struct {
 12610  		f func(*libc.TLS, uintptr, int32, uintptr) int32
 12611  	})(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)
 12612  
 12613  	(*CksmFile)(unsafe.Pointer(p)).FpPartner = *(*uintptr)(unsafe.Pointer(bp))
 12614  
 12615  	(*CksmFile)(unsafe.Pointer((*CksmFile)(unsafe.Pointer(p)).FpPartner)).FpPartner = p
 12616  	(*CksmFile)(unsafe.Pointer(p)).FisWal = uint8(1)
 12617  	(*CksmFile)(unsafe.Pointer(p)).FcomputeCksm = (*CksmFile)(unsafe.Pointer((*CksmFile)(unsafe.Pointer(p)).FpPartner)).FcomputeCksm
 12618  	goto __4
 12619  __3:
 12620  	(*CksmFile)(unsafe.Pointer(p)).FisWal = uint8(0)
 12621  	(*CksmFile)(unsafe.Pointer(p)).FcomputeCksm = uint8(0)
 12622  __4:
 12623  	;
 12624  	(*CksmFile)(unsafe.Pointer(p)).FzFName = zName
 12625  cksm_open_done:
 12626  	if !(rc != 0) {
 12627  		goto __5
 12628  	}
 12629  	(*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods = uintptr(0)
 12630  __5:
 12631  	;
 12632  	return rc
 12633  }
 12634  
 12635  func cksmDelete(tls *libc.TLS, pVfs uintptr, zPath uintptr, dirSync int32) int32 {
 12636  	return (*struct {
 12637  		f func(*libc.TLS, uintptr, uintptr, int32) int32
 12638  	})(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)
 12639  }
 12640  
 12641  func cksmAccess(tls *libc.TLS, pVfs uintptr, zPath uintptr, flags int32, pResOut uintptr) int32 {
 12642  	return (*struct {
 12643  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 12644  	})(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)
 12645  }
 12646  
 12647  func cksmFullPathname(tls *libc.TLS, pVfs uintptr, zPath uintptr, nOut int32, zOut uintptr) int32 {
 12648  	return (*struct {
 12649  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 12650  	})(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)
 12651  }
 12652  
 12653  func cksmDlOpen(tls *libc.TLS, pVfs uintptr, zPath uintptr) uintptr {
 12654  	return (*struct {
 12655  		f func(*libc.TLS, uintptr, uintptr) uintptr
 12656  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData)).FxDlOpen})).f(tls, (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData, zPath)
 12657  }
 12658  
 12659  func cksmDlError(tls *libc.TLS, pVfs uintptr, nByte int32, zErrMsg uintptr) {
 12660  	(*struct {
 12661  		f func(*libc.TLS, uintptr, int32, uintptr)
 12662  	})(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)
 12663  }
 12664  
 12665  func cksmDlSym(tls *libc.TLS, pVfs uintptr, p uintptr, zSym uintptr) uintptr {
 12666  	return (*struct {
 12667  		f func(*libc.TLS, uintptr, uintptr, uintptr) uintptr
 12668  	})(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)
 12669  }
 12670  
 12671  func cksmDlClose(tls *libc.TLS, pVfs uintptr, pHandle uintptr) {
 12672  	(*struct {
 12673  		f func(*libc.TLS, uintptr, uintptr)
 12674  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData)).FxDlClose})).f(tls, (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData, pHandle)
 12675  }
 12676  
 12677  func cksmRandomness(tls *libc.TLS, pVfs uintptr, nByte int32, zBufOut uintptr) int32 {
 12678  	return (*struct {
 12679  		f func(*libc.TLS, uintptr, int32, uintptr) int32
 12680  	})(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)
 12681  }
 12682  
 12683  func cksmSleep(tls *libc.TLS, pVfs uintptr, nMicro int32) int32 {
 12684  	return (*struct {
 12685  		f func(*libc.TLS, uintptr, int32) int32
 12686  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData)).FxSleep})).f(tls, (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData, nMicro)
 12687  }
 12688  
 12689  func cksmCurrentTime(tls *libc.TLS, pVfs uintptr, pTimeOut uintptr) int32 {
 12690  	return (*struct {
 12691  		f func(*libc.TLS, uintptr, uintptr) int32
 12692  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData)).FxCurrentTime})).f(tls, (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData, pTimeOut)
 12693  }
 12694  
 12695  func cksmGetLastError(tls *libc.TLS, pVfs uintptr, a int32, b uintptr) int32 {
 12696  	return (*struct {
 12697  		f func(*libc.TLS, uintptr, int32, uintptr) int32
 12698  	})(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)
 12699  }
 12700  
 12701  func cksmCurrentTimeInt64(tls *libc.TLS, pVfs uintptr, p uintptr) int32 {
 12702  	bp := tls.Alloc(8)
 12703  	defer tls.Free(8)
 12704  
 12705  	var pOrig uintptr = (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData
 12706  	var rc int32
 12707  
 12708  	if (*sqlite3_vfs)(unsafe.Pointer(pOrig)).FxCurrentTimeInt64 != 0 {
 12709  		rc = (*struct {
 12710  			f func(*libc.TLS, uintptr, uintptr) int32
 12711  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pOrig)).FxCurrentTimeInt64})).f(tls, pOrig, p)
 12712  	} else {
 12713  		rc = (*struct {
 12714  			f func(*libc.TLS, uintptr, uintptr) int32
 12715  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pOrig)).FxCurrentTime})).f(tls, pOrig, bp)
 12716  		*(*sqlite3_int64)(unsafe.Pointer(p)) = libc.Int64FromFloat64(*(*float64)(unsafe.Pointer(bp)) * 86400000.0)
 12717  	}
 12718  	return rc
 12719  }
 12720  
 12721  func cksmSetSystemCall(tls *libc.TLS, pVfs uintptr, zName uintptr, pCall sqlite3_syscall_ptr) int32 {
 12722  	return (*struct {
 12723  		f func(*libc.TLS, uintptr, uintptr, sqlite3_syscall_ptr) int32
 12724  	})(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)
 12725  }
 12726  
 12727  func cksmGetSystemCall(tls *libc.TLS, pVfs uintptr, zName uintptr) sqlite3_syscall_ptr {
 12728  	return (*struct {
 12729  		f func(*libc.TLS, uintptr, uintptr) sqlite3_syscall_ptr
 12730  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData)).FxGetSystemCall})).f(tls, (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData, zName)
 12731  }
 12732  
 12733  func cksmNextSystemCall(tls *libc.TLS, pVfs uintptr, zName uintptr) uintptr {
 12734  	return (*struct {
 12735  		f func(*libc.TLS, uintptr, uintptr) uintptr
 12736  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData)).FxNextSystemCall})).f(tls, (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData, zName)
 12737  }
 12738  
 12739  func cksmRegisterFunc(tls *libc.TLS, db uintptr, pzErrMsg uintptr, pApi uintptr) int32 {
 12740  	var rc int32
 12741  	if db == uintptr(0) {
 12742  		return SQLITE_OK
 12743  	}
 12744  	rc = sqlite3.Xsqlite3_create_function(tls, db, ts+4199, 1,
 12745  		SQLITE_UTF8|SQLITE_INNOCUOUS|SQLITE_DETERMINISTIC,
 12746  		uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 12747  			f func(*libc.TLS, uintptr, int32, uintptr)
 12748  		}{cksmVerifyFunc})), uintptr(0), uintptr(0))
 12749  	return rc
 12750  }
 12751  
 12752  func cksmRegisterVfs(tls *libc.TLS) int32 {
 12753  	var rc int32 = SQLITE_OK
 12754  	var pOrig uintptr
 12755  	if sqlite3.Xsqlite3_vfs_find(tls, ts+4097) != uintptr(0) {
 12756  		return SQLITE_OK
 12757  	}
 12758  	pOrig = sqlite3.Xsqlite3_vfs_find(tls, uintptr(0))
 12759  	if pOrig == uintptr(0) {
 12760  		return SQLITE_ERROR
 12761  	}
 12762  	cksm_vfs.FiVersion = (*sqlite3_vfs)(unsafe.Pointer(pOrig)).FiVersion
 12763  	cksm_vfs.FpAppData = pOrig
 12764  	cksm_vfs.FszOsFile = int32(uint64((*sqlite3_vfs)(unsafe.Pointer(pOrig)).FszOsFile) + uint64(unsafe.Sizeof(CksmFile{})))
 12765  	rc = sqlite3.Xsqlite3_vfs_register(tls, uintptr(unsafe.Pointer(&cksm_vfs)), 1)
 12766  	if rc == SQLITE_OK {
 12767  		rc = sqlite3.Xsqlite3_auto_extension(tls, *(*uintptr)(unsafe.Pointer(&struct {
 12768  			f func(*libc.TLS, uintptr, uintptr, uintptr) int32
 12769  		}{cksmRegisterFunc})))
 12770  	}
 12771  	return rc
 12772  }
 12773  
 12774  func sqlite3_register_cksumvfs(tls *libc.TLS, NotUsed uintptr) int32 {
 12775  	_ = NotUsed
 12776  	return cksmRegisterVfs(tls)
 12777  }
 12778  
 12779  func sqlite3_unregister_cksumvfs(tls *libc.TLS) int32 {
 12780  	if sqlite3.Xsqlite3_vfs_find(tls, ts+4097) != 0 {
 12781  		sqlite3.Xsqlite3_vfs_unregister(tls, uintptr(unsafe.Pointer(&cksm_vfs)))
 12782  		sqlite3.Xsqlite3_cancel_auto_extension(tls, *(*uintptr)(unsafe.Pointer(&struct {
 12783  			f func(*libc.TLS, uintptr, uintptr, uintptr) int32
 12784  		}{cksmRegisterFunc})))
 12785  	}
 12786  	return SQLITE_OK
 12787  }
 12788  
 12789  type closure_vtab1 = struct {
 12790  	Fbase          sqlite3_vtab
 12791  	FzDb           uintptr
 12792  	FzSelf         uintptr
 12793  	FzTableName    uintptr
 12794  	FzIdColumn     uintptr
 12795  	FzParentColumn uintptr
 12796  	Fdb            uintptr
 12797  	FnCursor       int32
 12798  	F__ccgo_pad1   [4]byte
 12799  }
 12800  
 12801  type closure_vtab = closure_vtab1
 12802  type closure_cursor1 = struct {
 12803  	Fbase          sqlite3_vtab_cursor
 12804  	FpVtab         uintptr
 12805  	FzTableName    uintptr
 12806  	FzIdColumn     uintptr
 12807  	FzParentColumn uintptr
 12808  	FpCurrent      uintptr
 12809  	FpClosure      uintptr
 12810  }
 12811  
 12812  type closure_cursor = closure_cursor1
 12813  type closure_queue1 = struct {
 12814  	FpFirst uintptr
 12815  	FpLast  uintptr
 12816  }
 12817  
 12818  type closure_queue = closure_queue1
 12819  type closure_avl1 = struct {
 12820  	Fid          sqlite3_int64
 12821  	FiGeneration int32
 12822  	F__ccgo_pad1 [4]byte
 12823  	FpList       uintptr
 12824  	FpBefore     uintptr
 12825  	FpAfter      uintptr
 12826  	FpUp         uintptr
 12827  	Fheight      int16
 12828  	Fimbalance   int16
 12829  	F__ccgo_pad2 [4]byte
 12830  }
 12831  
 12832  type closure_avl = closure_avl1
 12833  
 12834  func closureAvlRecomputeHeight(tls *libc.TLS, p uintptr) {
 12835  	var hBefore int16
 12836  	if (*closure_avl)(unsafe.Pointer(p)).FpBefore != 0 {
 12837  		hBefore = (*closure_avl)(unsafe.Pointer((*closure_avl)(unsafe.Pointer(p)).FpBefore)).Fheight
 12838  	} else {
 12839  		hBefore = int16(0)
 12840  	}
 12841  	var hAfter int16
 12842  	if (*closure_avl)(unsafe.Pointer(p)).FpAfter != 0 {
 12843  		hAfter = (*closure_avl)(unsafe.Pointer((*closure_avl)(unsafe.Pointer(p)).FpAfter)).Fheight
 12844  	} else {
 12845  		hAfter = int16(0)
 12846  	}
 12847  	(*closure_avl)(unsafe.Pointer(p)).Fimbalance = int16(int32(hBefore) - int32(hAfter))
 12848  	(*closure_avl)(unsafe.Pointer(p)).Fheight = int16(func() int32 {
 12849  		if int32(hBefore) > int32(hAfter) {
 12850  			return int32(hBefore)
 12851  		}
 12852  		return int32(hAfter)
 12853  	}() + 1)
 12854  }
 12855  
 12856  func closureAvlRotateBefore(tls *libc.TLS, pP uintptr) uintptr {
 12857  	var pB uintptr = (*closure_avl)(unsafe.Pointer(pP)).FpBefore
 12858  	var pY uintptr = (*closure_avl)(unsafe.Pointer(pB)).FpAfter
 12859  	(*closure_avl)(unsafe.Pointer(pB)).FpUp = (*closure_avl)(unsafe.Pointer(pP)).FpUp
 12860  	(*closure_avl)(unsafe.Pointer(pB)).FpAfter = pP
 12861  	(*closure_avl)(unsafe.Pointer(pP)).FpUp = pB
 12862  	(*closure_avl)(unsafe.Pointer(pP)).FpBefore = pY
 12863  	if pY != 0 {
 12864  		(*closure_avl)(unsafe.Pointer(pY)).FpUp = pP
 12865  	}
 12866  	closureAvlRecomputeHeight(tls, pP)
 12867  	closureAvlRecomputeHeight(tls, pB)
 12868  	return pB
 12869  }
 12870  
 12871  func closureAvlRotateAfter(tls *libc.TLS, pP uintptr) uintptr {
 12872  	var pA uintptr = (*closure_avl)(unsafe.Pointer(pP)).FpAfter
 12873  	var pY uintptr = (*closure_avl)(unsafe.Pointer(pA)).FpBefore
 12874  	(*closure_avl)(unsafe.Pointer(pA)).FpUp = (*closure_avl)(unsafe.Pointer(pP)).FpUp
 12875  	(*closure_avl)(unsafe.Pointer(pA)).FpBefore = pP
 12876  	(*closure_avl)(unsafe.Pointer(pP)).FpUp = pA
 12877  	(*closure_avl)(unsafe.Pointer(pP)).FpAfter = pY
 12878  	if pY != 0 {
 12879  		(*closure_avl)(unsafe.Pointer(pY)).FpUp = pP
 12880  	}
 12881  	closureAvlRecomputeHeight(tls, pP)
 12882  	closureAvlRecomputeHeight(tls, pA)
 12883  	return pA
 12884  }
 12885  
 12886  func closureAvlFromPtr(tls *libc.TLS, p uintptr, pp uintptr) uintptr {
 12887  	var pUp uintptr = (*closure_avl)(unsafe.Pointer(p)).FpUp
 12888  	if pUp == uintptr(0) {
 12889  		return pp
 12890  	}
 12891  	if (*closure_avl)(unsafe.Pointer(pUp)).FpAfter == p {
 12892  		return pUp + 32
 12893  	}
 12894  	return pUp + 24
 12895  }
 12896  
 12897  func closureAvlBalance(tls *libc.TLS, p uintptr) uintptr {
 12898  	bp := tls.Alloc(8)
 12899  	defer tls.Free(8)
 12900  	*(*uintptr)(unsafe.Pointer(bp)) = p
 12901  
 12902  	var pTop uintptr = *(*uintptr)(unsafe.Pointer(bp))
 12903  	var pp uintptr
 12904  	for *(*uintptr)(unsafe.Pointer(bp)) != 0 {
 12905  		closureAvlRecomputeHeight(tls, *(*uintptr)(unsafe.Pointer(bp)))
 12906  		if int32((*closure_avl)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp)))).Fimbalance) >= 2 {
 12907  			var pB uintptr = (*closure_avl)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp)))).FpBefore
 12908  			if int32((*closure_avl)(unsafe.Pointer(pB)).Fimbalance) < 0 {
 12909  				(*closure_avl)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp)))).FpBefore = closureAvlRotateAfter(tls, pB)
 12910  			}
 12911  			pp = closureAvlFromPtr(tls, *(*uintptr)(unsafe.Pointer(bp)), bp)
 12912  			*(*uintptr)(unsafe.Pointer(bp)) = libc.AssignPtrUintptr(pp, closureAvlRotateBefore(tls, *(*uintptr)(unsafe.Pointer(bp))))
 12913  		} else if int32((*closure_avl)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp)))).Fimbalance) <= -2 {
 12914  			var pA uintptr = (*closure_avl)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp)))).FpAfter
 12915  			if int32((*closure_avl)(unsafe.Pointer(pA)).Fimbalance) > 0 {
 12916  				(*closure_avl)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp)))).FpAfter = closureAvlRotateBefore(tls, pA)
 12917  			}
 12918  			pp = closureAvlFromPtr(tls, *(*uintptr)(unsafe.Pointer(bp)), bp)
 12919  			*(*uintptr)(unsafe.Pointer(bp)) = libc.AssignPtrUintptr(pp, closureAvlRotateAfter(tls, *(*uintptr)(unsafe.Pointer(bp))))
 12920  		}
 12921  		pTop = *(*uintptr)(unsafe.Pointer(bp))
 12922  		*(*uintptr)(unsafe.Pointer(bp)) = (*closure_avl)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp)))).FpUp
 12923  	}
 12924  	return pTop
 12925  }
 12926  
 12927  func closureAvlSearch(tls *libc.TLS, p uintptr, id sqlite3_int64) uintptr {
 12928  	for p != 0 && id != (*closure_avl)(unsafe.Pointer(p)).Fid {
 12929  		if id < (*closure_avl)(unsafe.Pointer(p)).Fid {
 12930  			p = (*closure_avl)(unsafe.Pointer(p)).FpBefore
 12931  		} else {
 12932  			p = (*closure_avl)(unsafe.Pointer(p)).FpAfter
 12933  		}
 12934  	}
 12935  	return p
 12936  }
 12937  
 12938  func closureAvlFirst(tls *libc.TLS, p uintptr) uintptr {
 12939  	if p != 0 {
 12940  		for (*closure_avl)(unsafe.Pointer(p)).FpBefore != 0 {
 12941  			p = (*closure_avl)(unsafe.Pointer(p)).FpBefore
 12942  		}
 12943  	}
 12944  	return p
 12945  }
 12946  
 12947  func closureAvlNext(tls *libc.TLS, p uintptr) uintptr {
 12948  	var pPrev uintptr = uintptr(0)
 12949  	for p != 0 && (*closure_avl)(unsafe.Pointer(p)).FpAfter == pPrev {
 12950  		pPrev = p
 12951  		p = (*closure_avl)(unsafe.Pointer(p)).FpUp
 12952  	}
 12953  	if p != 0 && pPrev == uintptr(0) {
 12954  		p = closureAvlFirst(tls, (*closure_avl)(unsafe.Pointer(p)).FpAfter)
 12955  	}
 12956  	return p
 12957  }
 12958  
 12959  func closureAvlInsert(tls *libc.TLS, ppHead uintptr, pNew uintptr) uintptr {
 12960  	var p uintptr = *(*uintptr)(unsafe.Pointer(ppHead))
 12961  	if p == uintptr(0) {
 12962  		p = pNew
 12963  		(*closure_avl)(unsafe.Pointer(pNew)).FpUp = uintptr(0)
 12964  	} else {
 12965  		for p != 0 {
 12966  			if (*closure_avl)(unsafe.Pointer(pNew)).Fid < (*closure_avl)(unsafe.Pointer(p)).Fid {
 12967  				if (*closure_avl)(unsafe.Pointer(p)).FpBefore != 0 {
 12968  					p = (*closure_avl)(unsafe.Pointer(p)).FpBefore
 12969  				} else {
 12970  					(*closure_avl)(unsafe.Pointer(p)).FpBefore = pNew
 12971  					(*closure_avl)(unsafe.Pointer(pNew)).FpUp = p
 12972  					break
 12973  				}
 12974  			} else if (*closure_avl)(unsafe.Pointer(pNew)).Fid > (*closure_avl)(unsafe.Pointer(p)).Fid {
 12975  				if (*closure_avl)(unsafe.Pointer(p)).FpAfter != 0 {
 12976  					p = (*closure_avl)(unsafe.Pointer(p)).FpAfter
 12977  				} else {
 12978  					(*closure_avl)(unsafe.Pointer(p)).FpAfter = pNew
 12979  					(*closure_avl)(unsafe.Pointer(pNew)).FpUp = p
 12980  					break
 12981  				}
 12982  			} else {
 12983  				return p
 12984  			}
 12985  		}
 12986  	}
 12987  	(*closure_avl)(unsafe.Pointer(pNew)).FpBefore = uintptr(0)
 12988  	(*closure_avl)(unsafe.Pointer(pNew)).FpAfter = uintptr(0)
 12989  	(*closure_avl)(unsafe.Pointer(pNew)).Fheight = int16(1)
 12990  	(*closure_avl)(unsafe.Pointer(pNew)).Fimbalance = int16(0)
 12991  	*(*uintptr)(unsafe.Pointer(ppHead)) = closureAvlBalance(tls, p)
 12992  	return uintptr(0)
 12993  }
 12994  
 12995  func closureAvlDestroy(tls *libc.TLS, p uintptr, xDestroy uintptr) {
 12996  	if p != 0 {
 12997  		closureAvlDestroy(tls, (*closure_avl)(unsafe.Pointer(p)).FpBefore, xDestroy)
 12998  		closureAvlDestroy(tls, (*closure_avl)(unsafe.Pointer(p)).FpAfter, xDestroy)
 12999  		(*struct{ f func(*libc.TLS, uintptr) })(unsafe.Pointer(&struct{ uintptr }{xDestroy})).f(tls, p)
 13000  	}
 13001  }
 13002  
 13003  func queuePush(tls *libc.TLS, pQueue uintptr, pNode uintptr) {
 13004  	(*closure_avl)(unsafe.Pointer(pNode)).FpList = uintptr(0)
 13005  	if (*closure_queue)(unsafe.Pointer(pQueue)).FpLast != 0 {
 13006  		(*closure_avl)(unsafe.Pointer((*closure_queue)(unsafe.Pointer(pQueue)).FpLast)).FpList = pNode
 13007  	} else {
 13008  		(*closure_queue)(unsafe.Pointer(pQueue)).FpFirst = pNode
 13009  	}
 13010  	(*closure_queue)(unsafe.Pointer(pQueue)).FpLast = pNode
 13011  }
 13012  
 13013  func queuePull(tls *libc.TLS, pQueue uintptr) uintptr {
 13014  	var p uintptr = (*closure_queue)(unsafe.Pointer(pQueue)).FpFirst
 13015  	if p != 0 {
 13016  		(*closure_queue)(unsafe.Pointer(pQueue)).FpFirst = (*closure_avl)(unsafe.Pointer(p)).FpList
 13017  		if (*closure_queue)(unsafe.Pointer(pQueue)).FpFirst == uintptr(0) {
 13018  			(*closure_queue)(unsafe.Pointer(pQueue)).FpLast = uintptr(0)
 13019  		}
 13020  	}
 13021  	return p
 13022  }
 13023  
 13024  func closureDequote(tls *libc.TLS, zIn uintptr) uintptr {
 13025  	var nIn sqlite3_int64
 13026  	var zOut uintptr
 13027  
 13028  	nIn = sqlite3_int64(libc.Xstrlen(tls, zIn))
 13029  	zOut = sqlite3.Xsqlite3_malloc64(tls, uint64(nIn+int64(1)))
 13030  	if zOut != 0 {
 13031  		var q uint8 = *(*uint8)(unsafe.Pointer(zIn))
 13032  
 13033  		if int32(q) != '[' && int32(q) != '\'' && int32(q) != '"' && int32(q) != '`' {
 13034  			libc.Xmemcpy(tls, zOut, zIn, size_t(nIn+int64(1)))
 13035  		} else {
 13036  			var iOut int32 = 0
 13037  			var iIn int32
 13038  
 13039  			if int32(q) == '[' {
 13040  				q = uint8(']')
 13041  			}
 13042  			for iIn = 1; sqlite3_int64(iIn) < nIn; iIn++ {
 13043  				if int32(*(*uint8)(unsafe.Pointer(zIn + uintptr(iIn)))) == int32(q) {
 13044  					iIn++
 13045  				}
 13046  				*(*uint8)(unsafe.Pointer(zOut + uintptr(libc.PostIncInt32(&iOut, 1)))) = *(*uint8)(unsafe.Pointer(zIn + uintptr(iIn)))
 13047  			}
 13048  		}
 13049  
 13050  	}
 13051  	return zOut
 13052  }
 13053  
 13054  func closureFree(tls *libc.TLS, p uintptr) {
 13055  	if p != 0 {
 13056  		sqlite3.Xsqlite3_free(tls, (*closure_vtab)(unsafe.Pointer(p)).FzDb)
 13057  		sqlite3.Xsqlite3_free(tls, (*closure_vtab)(unsafe.Pointer(p)).FzSelf)
 13058  		sqlite3.Xsqlite3_free(tls, (*closure_vtab)(unsafe.Pointer(p)).FzTableName)
 13059  		sqlite3.Xsqlite3_free(tls, (*closure_vtab)(unsafe.Pointer(p)).FzIdColumn)
 13060  		sqlite3.Xsqlite3_free(tls, (*closure_vtab)(unsafe.Pointer(p)).FzParentColumn)
 13061  		libc.Xmemset(tls, p, 0, uint64(unsafe.Sizeof(closure_vtab{})))
 13062  		sqlite3.Xsqlite3_free(tls, p)
 13063  	}
 13064  }
 13065  
 13066  func closureDisconnect(tls *libc.TLS, pVtab uintptr) int32 {
 13067  	var p uintptr = pVtab
 13068  
 13069  	closureFree(tls, p)
 13070  	return SQLITE_OK
 13071  }
 13072  
 13073  func closureValueOfKey(tls *libc.TLS, zKey uintptr, zStr uintptr) uintptr {
 13074  	var nKey int32 = int32(libc.Xstrlen(tls, zKey))
 13075  	var nStr int32 = int32(libc.Xstrlen(tls, zStr))
 13076  	var i int32
 13077  	if nStr < nKey+1 {
 13078  		return uintptr(0)
 13079  	}
 13080  	if libc.Xmemcmp(tls, zStr, zKey, uint64(nKey)) != 0 {
 13081  		return uintptr(0)
 13082  	}
 13083  	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++ {
 13084  	}
 13085  	if int32(*(*uint8)(unsafe.Pointer(zStr + uintptr(i)))) != '=' {
 13086  		return uintptr(0)
 13087  	}
 13088  	i++
 13089  	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 {
 13090  		i++
 13091  	}
 13092  	return zStr + uintptr(i)
 13093  }
 13094  
 13095  func closureConnect(tls *libc.TLS, db uintptr, pAux uintptr, argc int32, argv uintptr, ppVtab uintptr, pzErr uintptr) int32 {
 13096  	bp := tls.Alloc(24)
 13097  	defer tls.Free(24)
 13098  
 13099  	var rc int32
 13100  	var pNew uintptr
 13101  	var zDb uintptr
 13102  	var zVal uintptr
 13103  	var i int32
 13104  	rc = SQLITE_OK
 13105  	pNew = uintptr(0)
 13106  	zDb = *(*uintptr)(unsafe.Pointer(argv + 1*8))
 13107  
 13108  	_ = pAux
 13109  	*(*uintptr)(unsafe.Pointer(ppVtab)) = uintptr(0)
 13110  	pNew = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(closure_vtab{})))
 13111  	if !(pNew == uintptr(0)) {
 13112  		goto __1
 13113  	}
 13114  	return SQLITE_NOMEM
 13115  __1:
 13116  	;
 13117  	rc = SQLITE_NOMEM
 13118  	libc.Xmemset(tls, pNew, 0, uint64(unsafe.Sizeof(closure_vtab{})))
 13119  	(*closure_vtab)(unsafe.Pointer(pNew)).Fdb = db
 13120  	(*closure_vtab)(unsafe.Pointer(pNew)).FzDb = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp, zDb))
 13121  	if !((*closure_vtab)(unsafe.Pointer(pNew)).FzDb == uintptr(0)) {
 13122  		goto __2
 13123  	}
 13124  	goto closureConnectError
 13125  __2:
 13126  	;
 13127  	(*closure_vtab)(unsafe.Pointer(pNew)).FzSelf = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp+8, *(*uintptr)(unsafe.Pointer(argv + 2*8))))
 13128  	if !((*closure_vtab)(unsafe.Pointer(pNew)).FzSelf == uintptr(0)) {
 13129  		goto __3
 13130  	}
 13131  	goto closureConnectError
 13132  __3:
 13133  	;
 13134  	i = 3
 13135  __4:
 13136  	if !(i < argc) {
 13137  		goto __6
 13138  	}
 13139  	zVal = closureValueOfKey(tls, ts+4215, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8)))
 13140  	if !(zVal != 0) {
 13141  		goto __7
 13142  	}
 13143  	sqlite3.Xsqlite3_free(tls, (*closure_vtab)(unsafe.Pointer(pNew)).FzTableName)
 13144  	(*closure_vtab)(unsafe.Pointer(pNew)).FzTableName = closureDequote(tls, zVal)
 13145  	if !((*closure_vtab)(unsafe.Pointer(pNew)).FzTableName == uintptr(0)) {
 13146  		goto __8
 13147  	}
 13148  	goto closureConnectError
 13149  __8:
 13150  	;
 13151  	goto __5
 13152  __7:
 13153  	;
 13154  	zVal = closureValueOfKey(tls, ts+4225, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8)))
 13155  	if !(zVal != 0) {
 13156  		goto __9
 13157  	}
 13158  	sqlite3.Xsqlite3_free(tls, (*closure_vtab)(unsafe.Pointer(pNew)).FzIdColumn)
 13159  	(*closure_vtab)(unsafe.Pointer(pNew)).FzIdColumn = closureDequote(tls, zVal)
 13160  	if !((*closure_vtab)(unsafe.Pointer(pNew)).FzIdColumn == uintptr(0)) {
 13161  		goto __10
 13162  	}
 13163  	goto closureConnectError
 13164  __10:
 13165  	;
 13166  	goto __5
 13167  __9:
 13168  	;
 13169  	zVal = closureValueOfKey(tls, ts+4234, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8)))
 13170  	if !(zVal != 0) {
 13171  		goto __11
 13172  	}
 13173  	sqlite3.Xsqlite3_free(tls, (*closure_vtab)(unsafe.Pointer(pNew)).FzParentColumn)
 13174  	(*closure_vtab)(unsafe.Pointer(pNew)).FzParentColumn = closureDequote(tls, zVal)
 13175  	if !((*closure_vtab)(unsafe.Pointer(pNew)).FzParentColumn == uintptr(0)) {
 13176  		goto __12
 13177  	}
 13178  	goto closureConnectError
 13179  __12:
 13180  	;
 13181  	goto __5
 13182  __11:
 13183  	;
 13184  	*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+3536, libc.VaList(bp+16, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8))))
 13185  	closureFree(tls, pNew)
 13186  	*(*uintptr)(unsafe.Pointer(ppVtab)) = uintptr(0)
 13187  	return SQLITE_ERROR
 13188  	goto __5
 13189  __5:
 13190  	i++
 13191  	goto __4
 13192  	goto __6
 13193  __6:
 13194  	;
 13195  	rc = sqlite3.Xsqlite3_declare_vtab(tls, db,
 13196  		ts+4247)
 13197  	if !(rc != SQLITE_OK) {
 13198  		goto __13
 13199  	}
 13200  	closureFree(tls, pNew)
 13201  __13:
 13202  	;
 13203  	*(*uintptr)(unsafe.Pointer(ppVtab)) = pNew
 13204  	return rc
 13205  
 13206  closureConnectError:
 13207  	closureFree(tls, pNew)
 13208  	return rc
 13209  }
 13210  
 13211  func closureOpen(tls *libc.TLS, pVTab uintptr, ppCursor uintptr) int32 {
 13212  	var p uintptr = pVTab
 13213  	var pCur uintptr
 13214  	pCur = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(closure_cursor{})))
 13215  	if pCur == uintptr(0) {
 13216  		return SQLITE_NOMEM
 13217  	}
 13218  	libc.Xmemset(tls, pCur, 0, uint64(unsafe.Sizeof(closure_cursor{})))
 13219  	(*closure_cursor)(unsafe.Pointer(pCur)).FpVtab = p
 13220  	*(*uintptr)(unsafe.Pointer(ppCursor)) = pCur
 13221  	(*closure_vtab)(unsafe.Pointer(p)).FnCursor++
 13222  	return SQLITE_OK
 13223  }
 13224  
 13225  func closureClearCursor(tls *libc.TLS, pCur uintptr) {
 13226  	closureAvlDestroy(tls, (*closure_cursor)(unsafe.Pointer(pCur)).FpClosure, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{sqlite3.Xsqlite3_free})))
 13227  	sqlite3.Xsqlite3_free(tls, (*closure_cursor)(unsafe.Pointer(pCur)).FzTableName)
 13228  	sqlite3.Xsqlite3_free(tls, (*closure_cursor)(unsafe.Pointer(pCur)).FzIdColumn)
 13229  	sqlite3.Xsqlite3_free(tls, (*closure_cursor)(unsafe.Pointer(pCur)).FzParentColumn)
 13230  	(*closure_cursor)(unsafe.Pointer(pCur)).FzTableName = uintptr(0)
 13231  	(*closure_cursor)(unsafe.Pointer(pCur)).FzIdColumn = uintptr(0)
 13232  	(*closure_cursor)(unsafe.Pointer(pCur)).FzParentColumn = uintptr(0)
 13233  	(*closure_cursor)(unsafe.Pointer(pCur)).FpCurrent = uintptr(0)
 13234  	(*closure_cursor)(unsafe.Pointer(pCur)).FpClosure = uintptr(0)
 13235  }
 13236  
 13237  func closureClose(tls *libc.TLS, cur uintptr) int32 {
 13238  	var pCur uintptr = cur
 13239  	closureClearCursor(tls, pCur)
 13240  	(*closure_vtab)(unsafe.Pointer((*closure_cursor)(unsafe.Pointer(pCur)).FpVtab)).FnCursor--
 13241  	sqlite3.Xsqlite3_free(tls, pCur)
 13242  	return SQLITE_OK
 13243  }
 13244  
 13245  func closureNext(tls *libc.TLS, cur uintptr) int32 {
 13246  	var pCur uintptr = cur
 13247  	(*closure_cursor)(unsafe.Pointer(pCur)).FpCurrent = closureAvlNext(tls, (*closure_cursor)(unsafe.Pointer(pCur)).FpCurrent)
 13248  	return SQLITE_OK
 13249  }
 13250  
 13251  func closureInsertNode(tls *libc.TLS, pQueue uintptr, pCur uintptr, id sqlite3_int64, iGeneration int32) int32 {
 13252  	var pNew uintptr = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(closure_avl{})))
 13253  	if pNew == uintptr(0) {
 13254  		return SQLITE_NOMEM
 13255  	}
 13256  	libc.Xmemset(tls, pNew, 0, uint64(unsafe.Sizeof(closure_avl{})))
 13257  	(*closure_avl)(unsafe.Pointer(pNew)).Fid = id
 13258  	(*closure_avl)(unsafe.Pointer(pNew)).FiGeneration = iGeneration
 13259  	closureAvlInsert(tls, pCur+48, pNew)
 13260  	queuePush(tls, pQueue, pNew)
 13261  	return SQLITE_OK
 13262  }
 13263  
 13264  func closureFilter(tls *libc.TLS, pVtabCursor uintptr, idxNum int32, idxStr uintptr, argc int32, argv uintptr) int32 {
 13265  	bp := tls.Alloc(96)
 13266  	defer tls.Free(96)
 13267  
 13268  	var pCur uintptr = pVtabCursor
 13269  	var pVtab uintptr = (*closure_cursor)(unsafe.Pointer(pCur)).FpVtab
 13270  	var iRoot sqlite3_int64
 13271  	var mxGen int32 = 999999999
 13272  	var zSql uintptr
 13273  
 13274  	var pAvl uintptr
 13275  	var rc int32 = SQLITE_OK
 13276  	var zTableName uintptr = (*closure_vtab)(unsafe.Pointer(pVtab)).FzTableName
 13277  	var zIdColumn uintptr = (*closure_vtab)(unsafe.Pointer(pVtab)).FzIdColumn
 13278  	var zParentColumn uintptr = (*closure_vtab)(unsafe.Pointer(pVtab)).FzParentColumn
 13279  
 13280  	_ = idxStr
 13281  	_ = argc
 13282  	closureClearCursor(tls, pCur)
 13283  	libc.Xmemset(tls, bp+72, 0, uint64(unsafe.Sizeof(closure_queue{})))
 13284  	if idxNum&1 == 0 {
 13285  		return SQLITE_OK
 13286  	}
 13287  	iRoot = sqlite3.Xsqlite3_value_int64(tls, *(*uintptr)(unsafe.Pointer(argv)))
 13288  	if idxNum&0x000f0 != 0 {
 13289  		mxGen = sqlite3.Xsqlite3_value_int(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(idxNum>>4&0x0f)*8)))
 13290  		if idxNum&0x00002 != 0 {
 13291  			mxGen--
 13292  		}
 13293  	}
 13294  	if idxNum&0x00f00 != 0 {
 13295  		zTableName = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(idxNum>>8&0x0f)*8)))
 13296  		(*closure_cursor)(unsafe.Pointer(pCur)).FzTableName = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp, zTableName))
 13297  	}
 13298  	if idxNum&0x0f000 != 0 {
 13299  		zIdColumn = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(idxNum>>12&0x0f)*8)))
 13300  		(*closure_cursor)(unsafe.Pointer(pCur)).FzIdColumn = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp+8, zIdColumn))
 13301  	}
 13302  	if idxNum&0x0f0000 != 0 {
 13303  		zParentColumn = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(idxNum>>16&0x0f)*8)))
 13304  		(*closure_cursor)(unsafe.Pointer(pCur)).FzParentColumn = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp+16, zParentColumn))
 13305  	}
 13306  
 13307  	zSql = sqlite3.Xsqlite3_mprintf(tls,
 13308  		ts+4337,
 13309  		libc.VaList(bp+24, zTableName, zIdColumn, zTableName, zTableName, zParentColumn))
 13310  	if zSql == uintptr(0) {
 13311  		return SQLITE_NOMEM
 13312  	} else {
 13313  		rc = sqlite3.Xsqlite3_prepare_v2(tls, (*closure_vtab)(unsafe.Pointer(pVtab)).Fdb, zSql, -1, bp+88, uintptr(0))
 13314  		sqlite3.Xsqlite3_free(tls, zSql)
 13315  		if rc != 0 {
 13316  			sqlite3.Xsqlite3_free(tls, (*closure_vtab)(unsafe.Pointer(pVtab)).Fbase.FzErrMsg)
 13317  			(*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)))
 13318  			return rc
 13319  		}
 13320  	}
 13321  	if rc == SQLITE_OK {
 13322  		rc = closureInsertNode(tls, bp+72, pCur, iRoot, 0)
 13323  	}
 13324  	for libc.AssignUintptr(&pAvl, queuePull(tls, bp+72)) != uintptr(0) {
 13325  		if (*closure_avl)(unsafe.Pointer(pAvl)).FiGeneration >= mxGen {
 13326  			continue
 13327  		}
 13328  		sqlite3.Xsqlite3_bind_int64(tls, *(*uintptr)(unsafe.Pointer(bp + 88)), 1, (*closure_avl)(unsafe.Pointer(pAvl)).Fid)
 13329  		for rc == SQLITE_OK && sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp + 88))) == SQLITE_ROW {
 13330  			if sqlite3.Xsqlite3_column_type(tls, *(*uintptr)(unsafe.Pointer(bp + 88)), 0) == SQLITE_INTEGER {
 13331  				var iNew sqlite3_int64 = sqlite3.Xsqlite3_column_int64(tls, *(*uintptr)(unsafe.Pointer(bp + 88)), 0)
 13332  				if closureAvlSearch(tls, (*closure_cursor)(unsafe.Pointer(pCur)).FpClosure, iNew) == uintptr(0) {
 13333  					rc = closureInsertNode(tls, bp+72, pCur, iNew, (*closure_avl)(unsafe.Pointer(pAvl)).FiGeneration+1)
 13334  				}
 13335  			}
 13336  		}
 13337  		sqlite3.Xsqlite3_reset(tls, *(*uintptr)(unsafe.Pointer(bp + 88)))
 13338  	}
 13339  	sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 88)))
 13340  	if rc == SQLITE_OK {
 13341  		(*closure_cursor)(unsafe.Pointer(pCur)).FpCurrent = closureAvlFirst(tls, (*closure_cursor)(unsafe.Pointer(pCur)).FpClosure)
 13342  	}
 13343  
 13344  	return rc
 13345  }
 13346  
 13347  func closureColumn(tls *libc.TLS, cur uintptr, ctx uintptr, i int32) int32 {
 13348  	var pCur uintptr = cur
 13349  	switch i {
 13350  	case CLOSURE_COL_ID:
 13351  		{
 13352  			sqlite3.Xsqlite3_result_int64(tls, ctx, (*closure_avl)(unsafe.Pointer((*closure_cursor)(unsafe.Pointer(pCur)).FpCurrent)).Fid)
 13353  			break
 13354  
 13355  		}
 13356  	case CLOSURE_COL_DEPTH:
 13357  		{
 13358  			sqlite3.Xsqlite3_result_int(tls, ctx, (*closure_avl)(unsafe.Pointer((*closure_cursor)(unsafe.Pointer(pCur)).FpCurrent)).FiGeneration)
 13359  			break
 13360  
 13361  		}
 13362  	case CLOSURE_COL_ROOT:
 13363  		{
 13364  			sqlite3.Xsqlite3_result_null(tls, ctx)
 13365  			break
 13366  
 13367  		}
 13368  	case CLOSURE_COL_TABLENAME:
 13369  		{
 13370  			sqlite3.Xsqlite3_result_text(tls, ctx,
 13371  				func() uintptr {
 13372  					if (*closure_cursor)(unsafe.Pointer(pCur)).FzTableName != 0 {
 13373  						return (*closure_cursor)(unsafe.Pointer(pCur)).FzTableName
 13374  					}
 13375  					return (*closure_vtab)(unsafe.Pointer((*closure_cursor)(unsafe.Pointer(pCur)).FpVtab)).FzTableName
 13376  				}(),
 13377  				-1, libc.UintptrFromInt32(-1))
 13378  			break
 13379  
 13380  		}
 13381  	case CLOSURE_COL_IDCOLUMN:
 13382  		{
 13383  			sqlite3.Xsqlite3_result_text(tls, ctx,
 13384  				func() uintptr {
 13385  					if (*closure_cursor)(unsafe.Pointer(pCur)).FzIdColumn != 0 {
 13386  						return (*closure_cursor)(unsafe.Pointer(pCur)).FzIdColumn
 13387  					}
 13388  					return (*closure_vtab)(unsafe.Pointer((*closure_cursor)(unsafe.Pointer(pCur)).FpVtab)).FzIdColumn
 13389  				}(),
 13390  				-1, libc.UintptrFromInt32(-1))
 13391  			break
 13392  
 13393  		}
 13394  	case CLOSURE_COL_PARENTCOLUMN:
 13395  		{
 13396  			sqlite3.Xsqlite3_result_text(tls, ctx,
 13397  				func() uintptr {
 13398  					if (*closure_cursor)(unsafe.Pointer(pCur)).FzParentColumn != 0 {
 13399  						return (*closure_cursor)(unsafe.Pointer(pCur)).FzParentColumn
 13400  					}
 13401  					return (*closure_vtab)(unsafe.Pointer((*closure_cursor)(unsafe.Pointer(pCur)).FpVtab)).FzParentColumn
 13402  				}(),
 13403  				-1, libc.UintptrFromInt32(-1))
 13404  			break
 13405  
 13406  		}
 13407  	}
 13408  	return SQLITE_OK
 13409  }
 13410  
 13411  func closureRowid(tls *libc.TLS, cur uintptr, pRowid uintptr) int32 {
 13412  	var pCur uintptr = cur
 13413  	*(*sqlite_int64)(unsafe.Pointer(pRowid)) = (*closure_avl)(unsafe.Pointer((*closure_cursor)(unsafe.Pointer(pCur)).FpCurrent)).Fid
 13414  	return SQLITE_OK
 13415  }
 13416  
 13417  func closureEof(tls *libc.TLS, cur uintptr) int32 {
 13418  	var pCur uintptr = cur
 13419  	return libc.Bool32((*closure_cursor)(unsafe.Pointer(pCur)).FpCurrent == uintptr(0))
 13420  }
 13421  
 13422  func closureBestIndex(tls *libc.TLS, pTab uintptr, pIdxInfo uintptr) int32 {
 13423  	var iPlan int32 = 0
 13424  	var i int32
 13425  	var idx int32 = 1
 13426  	var pConstraint uintptr
 13427  	var pVtab uintptr = pTab
 13428  	var rCost float64 = 10000000.0
 13429  
 13430  	pConstraint = (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint
 13431  	i = 0
 13432  __1:
 13433  	if !(i < (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnConstraint) {
 13434  		goto __3
 13435  	}
 13436  	{
 13437  		if int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fusable) == 0 {
 13438  			goto __2
 13439  		}
 13440  		if iPlan&1 == 0 &&
 13441  			(*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).FiColumn == CLOSURE_COL_ROOT &&
 13442  			int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_EQ {
 13443  			iPlan = iPlan | 1
 13444  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(i)*8)).FargvIndex = 1
 13445  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(i)*8)).Fomit = uint8(1)
 13446  			rCost = rCost / 100.0
 13447  		}
 13448  		if iPlan&0x0000f0 == 0 &&
 13449  			(*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).FiColumn == CLOSURE_COL_DEPTH &&
 13450  			(int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_LT ||
 13451  				int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_LE ||
 13452  				int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_EQ) {
 13453  			iPlan = iPlan | idx<<4
 13454  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(i)*8)).FargvIndex = libc.PreIncInt32(&idx, 1)
 13455  			if int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_LT {
 13456  				iPlan = iPlan | 0x000002
 13457  			}
 13458  			rCost = rCost / 5.0
 13459  		}
 13460  		if iPlan&0x000f00 == 0 &&
 13461  			(*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).FiColumn == CLOSURE_COL_TABLENAME &&
 13462  			int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_EQ {
 13463  			iPlan = iPlan | idx<<8
 13464  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(i)*8)).FargvIndex = libc.PreIncInt32(&idx, 1)
 13465  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(i)*8)).Fomit = uint8(1)
 13466  			rCost = rCost / 5.0
 13467  		}
 13468  		if iPlan&0x00f000 == 0 &&
 13469  			(*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).FiColumn == CLOSURE_COL_IDCOLUMN &&
 13470  			int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_EQ {
 13471  			iPlan = iPlan | idx<<12
 13472  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(i)*8)).FargvIndex = libc.PreIncInt32(&idx, 1)
 13473  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(i)*8)).Fomit = uint8(1)
 13474  		}
 13475  		if iPlan&0x0f0000 == 0 &&
 13476  			(*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).FiColumn == CLOSURE_COL_PARENTCOLUMN &&
 13477  			int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_EQ {
 13478  			iPlan = iPlan | idx<<16
 13479  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(i)*8)).FargvIndex = libc.PreIncInt32(&idx, 1)
 13480  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(i)*8)).Fomit = uint8(1)
 13481  		}
 13482  
 13483  	}
 13484  	goto __2
 13485  __2:
 13486  	i++
 13487  	pConstraint += 12
 13488  	goto __1
 13489  	goto __3
 13490  __3:
 13491  	;
 13492  	if (*closure_vtab)(unsafe.Pointer(pVtab)).FzTableName == uintptr(0) && iPlan&0x000f00 == 0 ||
 13493  		(*closure_vtab)(unsafe.Pointer(pVtab)).FzIdColumn == uintptr(0) && iPlan&0x00f000 == 0 ||
 13494  		(*closure_vtab)(unsafe.Pointer(pVtab)).FzParentColumn == uintptr(0) && iPlan&0x0f0000 == 0 {
 13495  		iPlan = 0
 13496  	}
 13497  	if iPlan&1 == 0 {
 13498  		rCost = rCost * 1e30
 13499  		i = 0
 13500  	__4:
 13501  		if !(i < (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnConstraint) {
 13502  			goto __6
 13503  		}
 13504  		{
 13505  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(i)*8)).FargvIndex = 0
 13506  
 13507  		}
 13508  		goto __5
 13509  	__5:
 13510  		i++
 13511  		pConstraint += 12
 13512  		goto __4
 13513  		goto __6
 13514  	__6:
 13515  		;
 13516  		iPlan = 0
 13517  	}
 13518  	(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxNum = iPlan
 13519  	if (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnOrderBy == 1 &&
 13520  		(*sqlite3_index_orderby)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaOrderBy)).FiColumn == CLOSURE_COL_ID &&
 13521  		int32((*sqlite3_index_orderby)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaOrderBy)).Fdesc) == 0 {
 13522  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).ForderByConsumed = 1
 13523  	}
 13524  	(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = rCost
 13525  
 13526  	return SQLITE_OK
 13527  }
 13528  
 13529  var closureModule = sqlite3_module{
 13530  	FxCreate:     0,
 13531  	FxConnect:    0,
 13532  	FxBestIndex:  0,
 13533  	FxDisconnect: 0,
 13534  	FxDestroy:    0,
 13535  	FxOpen:       0,
 13536  	FxClose:      0,
 13537  	FxFilter:     0,
 13538  	FxNext:       0,
 13539  	FxEof:        0,
 13540  	FxColumn:     0,
 13541  	FxRowid:      0,
 13542  }
 13543  
 13544  func sqlite3_closure_init(tls *libc.TLS, db uintptr, pzErrMsg uintptr, pApi uintptr) int32 {
 13545  	var rc int32 = SQLITE_OK
 13546  	_ = pApi
 13547  
 13548  	_ = pzErrMsg
 13549  	rc = sqlite3.Xsqlite3_create_module(tls, db, ts+4383, uintptr(unsafe.Pointer(&closureModule)), uintptr(0))
 13550  	return rc
 13551  }
 13552  
 13553  type CsvReader1 = struct {
 13554  	Fin          uintptr
 13555  	Fz           uintptr
 13556  	Fn           int32
 13557  	FnAlloc      int32
 13558  	FnLine       int32
 13559  	FbNotFirst   int32
 13560  	FcTerm       int32
 13561  	F__ccgo_pad1 [4]byte
 13562  	FiIn         size_t
 13563  	FnIn         size_t
 13564  	FzIn         uintptr
 13565  	FzErr        [200]uint8
 13566  }
 13567  
 13568  type CsvReader = CsvReader1
 13569  
 13570  func csv_reader_init(tls *libc.TLS, p uintptr) {
 13571  	(*CsvReader)(unsafe.Pointer(p)).Fin = uintptr(0)
 13572  	(*CsvReader)(unsafe.Pointer(p)).Fz = uintptr(0)
 13573  	(*CsvReader)(unsafe.Pointer(p)).Fn = 0
 13574  	(*CsvReader)(unsafe.Pointer(p)).FnAlloc = 0
 13575  	(*CsvReader)(unsafe.Pointer(p)).FnLine = 0
 13576  	(*CsvReader)(unsafe.Pointer(p)).FbNotFirst = 0
 13577  	(*CsvReader)(unsafe.Pointer(p)).FnIn = uint64(0)
 13578  	(*CsvReader)(unsafe.Pointer(p)).FzIn = uintptr(0)
 13579  	*(*uint8)(unsafe.Pointer(p + 64)) = uint8(0)
 13580  }
 13581  
 13582  func csv_reader_reset(tls *libc.TLS, p uintptr) {
 13583  	if (*CsvReader)(unsafe.Pointer(p)).Fin != 0 {
 13584  		libc.Xfclose(tls, (*CsvReader)(unsafe.Pointer(p)).Fin)
 13585  		sqlite3.Xsqlite3_free(tls, (*CsvReader)(unsafe.Pointer(p)).FzIn)
 13586  	}
 13587  	sqlite3.Xsqlite3_free(tls, (*CsvReader)(unsafe.Pointer(p)).Fz)
 13588  	csv_reader_init(tls, p)
 13589  }
 13590  
 13591  func csv_errmsg(tls *libc.TLS, p uintptr, zFormat uintptr, va uintptr) {
 13592  	var ap va_list
 13593  	_ = ap
 13594  	ap = va
 13595  	sqlite3.Xsqlite3_vsnprintf(tls, CSV_MXERR, p+64, zFormat, ap)
 13596  	_ = ap
 13597  }
 13598  
 13599  func csv_reader_open(tls *libc.TLS, p uintptr, zFilename uintptr, zData uintptr) int32 {
 13600  	bp := tls.Alloc(8)
 13601  	defer tls.Free(8)
 13602  
 13603  	if zFilename != 0 {
 13604  		(*CsvReader)(unsafe.Pointer(p)).FzIn = sqlite3.Xsqlite3_malloc(tls, CSV_INBUFSZ)
 13605  		if (*CsvReader)(unsafe.Pointer(p)).FzIn == uintptr(0) {
 13606  			csv_errmsg(tls, p, ts+2069, 0)
 13607  			return 1
 13608  		}
 13609  		(*CsvReader)(unsafe.Pointer(p)).Fin = libc.Xfopen(tls, zFilename, ts+4402)
 13610  		if (*CsvReader)(unsafe.Pointer(p)).Fin == uintptr(0) {
 13611  			sqlite3.Xsqlite3_free(tls, (*CsvReader)(unsafe.Pointer(p)).FzIn)
 13612  			csv_reader_reset(tls, p)
 13613  			csv_errmsg(tls, p, ts+4405, libc.VaList(bp, zFilename))
 13614  			return 1
 13615  		}
 13616  	} else {
 13617  		(*CsvReader)(unsafe.Pointer(p)).FzIn = zData
 13618  		(*CsvReader)(unsafe.Pointer(p)).FnIn = libc.Xstrlen(tls, zData)
 13619  	}
 13620  	return 0
 13621  }
 13622  
 13623  func csv_getc_refill(tls *libc.TLS, p uintptr) int32 {
 13624  	var got size_t
 13625  
 13626  	got = libc.Xfread(tls, (*CsvReader)(unsafe.Pointer(p)).FzIn, uint64(1), uint64(CSV_INBUFSZ), (*CsvReader)(unsafe.Pointer(p)).Fin)
 13627  	if got == uint64(0) {
 13628  		return -1
 13629  	}
 13630  	(*CsvReader)(unsafe.Pointer(p)).FnIn = got
 13631  	(*CsvReader)(unsafe.Pointer(p)).FiIn = uint64(1)
 13632  	return int32(*(*uint8)(unsafe.Pointer((*CsvReader)(unsafe.Pointer(p)).FzIn)))
 13633  }
 13634  
 13635  func csv_getc(tls *libc.TLS, p uintptr) int32 {
 13636  	if (*CsvReader)(unsafe.Pointer(p)).FiIn >= (*CsvReader)(unsafe.Pointer(p)).FnIn {
 13637  		if (*CsvReader)(unsafe.Pointer(p)).Fin != uintptr(0) {
 13638  			return csv_getc_refill(tls, p)
 13639  		}
 13640  		return -1
 13641  	}
 13642  	return int32(*(*uint8)(unsafe.Pointer((*CsvReader)(unsafe.Pointer(p)).FzIn + uintptr(libc.PostIncUint64(&(*CsvReader)(unsafe.Pointer(p)).FiIn, 1)))))
 13643  }
 13644  
 13645  func csv_resize_and_append(tls *libc.TLS, p uintptr, c uint8) int32 {
 13646  	var zNew uintptr
 13647  	var nNew int32 = (*CsvReader)(unsafe.Pointer(p)).FnAlloc*2 + 100
 13648  	zNew = sqlite3.Xsqlite3_realloc64(tls, (*CsvReader)(unsafe.Pointer(p)).Fz, uint64(nNew))
 13649  	if zNew != 0 {
 13650  		(*CsvReader)(unsafe.Pointer(p)).Fz = zNew
 13651  		(*CsvReader)(unsafe.Pointer(p)).FnAlloc = nNew
 13652  		*(*uint8)(unsafe.Pointer((*CsvReader)(unsafe.Pointer(p)).Fz + uintptr(libc.PostIncInt32(&(*CsvReader)(unsafe.Pointer(p)).Fn, 1)))) = c
 13653  		return 0
 13654  	} else {
 13655  		csv_errmsg(tls, p, ts+2069, 0)
 13656  		return 1
 13657  	}
 13658  	return int32(0)
 13659  }
 13660  
 13661  func csv_append(tls *libc.TLS, p uintptr, c uint8) int32 {
 13662  	if (*CsvReader)(unsafe.Pointer(p)).Fn >= (*CsvReader)(unsafe.Pointer(p)).FnAlloc-1 {
 13663  		return csv_resize_and_append(tls, p, c)
 13664  	}
 13665  	*(*uint8)(unsafe.Pointer((*CsvReader)(unsafe.Pointer(p)).Fz + uintptr(libc.PostIncInt32(&(*CsvReader)(unsafe.Pointer(p)).Fn, 1)))) = c
 13666  	return 0
 13667  }
 13668  
 13669  func csv_read_one_field(tls *libc.TLS, p uintptr) uintptr {
 13670  	bp := tls.Alloc(32)
 13671  	defer tls.Free(32)
 13672  
 13673  	var c int32
 13674  	(*CsvReader)(unsafe.Pointer(p)).Fn = 0
 13675  	c = csv_getc(tls, p)
 13676  	if c == -1 {
 13677  		(*CsvReader)(unsafe.Pointer(p)).FcTerm = -1
 13678  		return uintptr(0)
 13679  	}
 13680  	if c == '"' {
 13681  		var pc int32
 13682  		var ppc int32
 13683  		var startLine int32 = (*CsvReader)(unsafe.Pointer(p)).FnLine
 13684  		pc = libc.AssignInt32(&ppc, 0)
 13685  		for 1 != 0 {
 13686  			c = csv_getc(tls, p)
 13687  			if c <= '"' || pc == '"' {
 13688  				if c == '\n' {
 13689  					(*CsvReader)(unsafe.Pointer(p)).FnLine++
 13690  				}
 13691  				if c == '"' {
 13692  					if pc == '"' {
 13693  						pc = 0
 13694  						continue
 13695  					}
 13696  				}
 13697  				if c == ',' && pc == '"' ||
 13698  					c == '\n' && pc == '"' ||
 13699  					c == '\n' && pc == '\r' && ppc == '"' ||
 13700  					c == -1 && pc == '"' {
 13701  					for __ccgo := true; __ccgo; __ccgo = int32(*(*uint8)(unsafe.Pointer((*CsvReader)(unsafe.Pointer(p)).Fz + uintptr((*CsvReader)(unsafe.Pointer(p)).Fn)))) != '"' {
 13702  						(*CsvReader)(unsafe.Pointer(p)).Fn--
 13703  					}
 13704  					(*CsvReader)(unsafe.Pointer(p)).FcTerm = int32(uint8(c))
 13705  					break
 13706  				}
 13707  				if pc == '"' && c != '\r' {
 13708  					csv_errmsg(tls, p, ts+4434, libc.VaList(bp, (*CsvReader)(unsafe.Pointer(p)).FnLine, '"'))
 13709  					break
 13710  				}
 13711  				if c == -1 {
 13712  					csv_errmsg(tls, p, ts+4466,
 13713  						libc.VaList(bp+16, startLine, '"'))
 13714  					(*CsvReader)(unsafe.Pointer(p)).FcTerm = int32(uint8(c))
 13715  					break
 13716  				}
 13717  			}
 13718  			if csv_append(tls, p, uint8(c)) != 0 {
 13719  				return uintptr(0)
 13720  			}
 13721  			ppc = pc
 13722  			pc = c
 13723  		}
 13724  	} else {
 13725  		if c&0xff == 0xef && (*CsvReader)(unsafe.Pointer(p)).FbNotFirst == 0 {
 13726  			csv_append(tls, p, uint8(c))
 13727  			c = csv_getc(tls, p)
 13728  			if c&0xff == 0xbb {
 13729  				csv_append(tls, p, uint8(c))
 13730  				c = csv_getc(tls, p)
 13731  				if c&0xff == 0xbf {
 13732  					(*CsvReader)(unsafe.Pointer(p)).FbNotFirst = 1
 13733  					(*CsvReader)(unsafe.Pointer(p)).Fn = 0
 13734  					return csv_read_one_field(tls, p)
 13735  				}
 13736  			}
 13737  		}
 13738  		for c > ',' || c != -1 && c != ',' && c != '\n' {
 13739  			if csv_append(tls, p, uint8(c)) != 0 {
 13740  				return uintptr(0)
 13741  			}
 13742  			c = csv_getc(tls, p)
 13743  		}
 13744  		if c == '\n' {
 13745  			(*CsvReader)(unsafe.Pointer(p)).FnLine++
 13746  			if (*CsvReader)(unsafe.Pointer(p)).Fn > 0 && int32(*(*uint8)(unsafe.Pointer((*CsvReader)(unsafe.Pointer(p)).Fz + uintptr((*CsvReader)(unsafe.Pointer(p)).Fn-1)))) == '\r' {
 13747  				(*CsvReader)(unsafe.Pointer(p)).Fn--
 13748  			}
 13749  		}
 13750  		(*CsvReader)(unsafe.Pointer(p)).FcTerm = int32(uint8(c))
 13751  	}
 13752  	if (*CsvReader)(unsafe.Pointer(p)).Fz != 0 {
 13753  		*(*uint8)(unsafe.Pointer((*CsvReader)(unsafe.Pointer(p)).Fz + uintptr((*CsvReader)(unsafe.Pointer(p)).Fn))) = uint8(0)
 13754  	}
 13755  	(*CsvReader)(unsafe.Pointer(p)).FbNotFirst = 1
 13756  	return (*CsvReader)(unsafe.Pointer(p)).Fz
 13757  }
 13758  
 13759  type CsvTable1 = struct {
 13760  	Fbase      sqlite3_vtab
 13761  	FzFilename uintptr
 13762  	FzData     uintptr
 13763  	FiStart    int64
 13764  	FnCol      int32
 13765  	FtstFlags  uint32
 13766  }
 13767  
 13768  type CsvTable = CsvTable1
 13769  
 13770  type CsvCursor1 = struct {
 13771  	Fbase   sqlite3_vtab_cursor
 13772  	Frdr    CsvReader
 13773  	FazVal  uintptr
 13774  	FaLen   uintptr
 13775  	FiRowid sqlite3_int64
 13776  }
 13777  
 13778  type CsvCursor = CsvCursor1
 13779  
 13780  func csv_xfer_error(tls *libc.TLS, pTab uintptr, pRdr uintptr) {
 13781  	bp := tls.Alloc(8)
 13782  	defer tls.Free(8)
 13783  
 13784  	sqlite3.Xsqlite3_free(tls, (*CsvTable)(unsafe.Pointer(pTab)).Fbase.FzErrMsg)
 13785  	(*CsvTable)(unsafe.Pointer(pTab)).Fbase.FzErrMsg = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp, pRdr+64))
 13786  }
 13787  
 13788  func csvtabDisconnect(tls *libc.TLS, pVtab uintptr) int32 {
 13789  	var p uintptr = pVtab
 13790  	sqlite3.Xsqlite3_free(tls, (*CsvTable)(unsafe.Pointer(p)).FzFilename)
 13791  	sqlite3.Xsqlite3_free(tls, (*CsvTable)(unsafe.Pointer(p)).FzData)
 13792  	sqlite3.Xsqlite3_free(tls, p)
 13793  	return SQLITE_OK
 13794  }
 13795  
 13796  func csv_skip_whitespace(tls *libc.TLS, z uintptr) uintptr {
 13797  	for int32(*(*uint16)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(libc.X__ctype_b_loc(tls))) + uintptr(int32(*(*uint8)(unsafe.Pointer(z))))*2)))&int32(_ISspace) != 0 {
 13798  		z++
 13799  	}
 13800  	return z
 13801  }
 13802  
 13803  func csv_trim_whitespace(tls *libc.TLS, z uintptr) {
 13804  	var n size_t = libc.Xstrlen(tls, z)
 13805  	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 {
 13806  		n--
 13807  	}
 13808  	*(*uint8)(unsafe.Pointer(z + uintptr(n))) = uint8(0)
 13809  }
 13810  
 13811  func csv_dequote(tls *libc.TLS, z uintptr) {
 13812  	var j int32
 13813  	var cQuote uint8 = *(*uint8)(unsafe.Pointer(z))
 13814  	var i size_t
 13815  	var n size_t
 13816  
 13817  	if int32(cQuote) != '\'' && int32(cQuote) != '"' {
 13818  		return
 13819  	}
 13820  	n = libc.Xstrlen(tls, z)
 13821  	if n < uint64(2) || int32(*(*uint8)(unsafe.Pointer(z + uintptr(n-uint64(1))))) != int32(*(*uint8)(unsafe.Pointer(z))) {
 13822  		return
 13823  	}
 13824  	i = uint64(1)
 13825  	j = 0
 13826  	for ; i < n-uint64(1); i++ {
 13827  		if int32(*(*uint8)(unsafe.Pointer(z + uintptr(i)))) == int32(cQuote) && int32(*(*uint8)(unsafe.Pointer(z + uintptr(i+uint64(1))))) == int32(cQuote) {
 13828  			i++
 13829  		}
 13830  		*(*uint8)(unsafe.Pointer(z + uintptr(libc.PostIncInt32(&j, 1)))) = *(*uint8)(unsafe.Pointer(z + uintptr(i)))
 13831  	}
 13832  	*(*uint8)(unsafe.Pointer(z + uintptr(j))) = uint8(0)
 13833  }
 13834  
 13835  func csv_parameter(tls *libc.TLS, zTag uintptr, nTag int32, z uintptr) uintptr {
 13836  	z = csv_skip_whitespace(tls, z)
 13837  	if libc.Xstrncmp(tls, zTag, z, uint64(nTag)) != 0 {
 13838  		return uintptr(0)
 13839  	}
 13840  	z = csv_skip_whitespace(tls, z+uintptr(nTag))
 13841  	if int32(*(*uint8)(unsafe.Pointer(z))) != '=' {
 13842  		return uintptr(0)
 13843  	}
 13844  	return csv_skip_whitespace(tls, z+uintptr(1))
 13845  }
 13846  
 13847  func csv_string_parameter(tls *libc.TLS, p uintptr, zParam uintptr, zArg uintptr, pzVal uintptr) int32 {
 13848  	bp := tls.Alloc(16)
 13849  	defer tls.Free(16)
 13850  
 13851  	var zValue uintptr
 13852  	zValue = csv_parameter(tls, zParam, int32(libc.Xstrlen(tls, zParam)), zArg)
 13853  	if zValue == uintptr(0) {
 13854  		return 0
 13855  	}
 13856  	*(*uint8)(unsafe.Pointer(p + 64)) = uint8(0)
 13857  	if *(*uintptr)(unsafe.Pointer(pzVal)) != 0 {
 13858  		csv_errmsg(tls, p, ts+4505, libc.VaList(bp, zParam))
 13859  		return 1
 13860  	}
 13861  	*(*uintptr)(unsafe.Pointer(pzVal)) = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp+8, zValue))
 13862  	if *(*uintptr)(unsafe.Pointer(pzVal)) == uintptr(0) {
 13863  		csv_errmsg(tls, p, ts+2069, 0)
 13864  		return 1
 13865  	}
 13866  	csv_trim_whitespace(tls, *(*uintptr)(unsafe.Pointer(pzVal)))
 13867  	csv_dequote(tls, *(*uintptr)(unsafe.Pointer(pzVal)))
 13868  	return 1
 13869  }
 13870  
 13871  func csv_boolean(tls *libc.TLS, z uintptr) int32 {
 13872  	if sqlite3.Xsqlite3_stricmp(tls, ts+4174, z) == 0 ||
 13873  		sqlite3.Xsqlite3_stricmp(tls, ts+4178, z) == 0 ||
 13874  		sqlite3.Xsqlite3_stricmp(tls, ts+4534, z) == 0 ||
 13875  		int32(*(*uint8)(unsafe.Pointer(z))) == '1' && int32(*(*uint8)(unsafe.Pointer(z + 1))) == 0 {
 13876  		return 1
 13877  	}
 13878  	if sqlite3.Xsqlite3_stricmp(tls, ts+4539, z) == 0 ||
 13879  		sqlite3.Xsqlite3_stricmp(tls, ts+4542, z) == 0 ||
 13880  		sqlite3.Xsqlite3_stricmp(tls, ts+4546, z) == 0 ||
 13881  		int32(*(*uint8)(unsafe.Pointer(z))) == '0' && int32(*(*uint8)(unsafe.Pointer(z + 1))) == 0 {
 13882  		return 0
 13883  	}
 13884  	return -1
 13885  }
 13886  
 13887  func csv_boolean_parameter(tls *libc.TLS, zTag uintptr, nTag int32, z uintptr, pValue uintptr) int32 {
 13888  	var b int32
 13889  	z = csv_skip_whitespace(tls, z)
 13890  	if libc.Xstrncmp(tls, zTag, z, uint64(nTag)) != 0 {
 13891  		return 0
 13892  	}
 13893  	z = csv_skip_whitespace(tls, z+uintptr(nTag))
 13894  	if int32(*(*uint8)(unsafe.Pointer(z))) == 0 {
 13895  		*(*int32)(unsafe.Pointer(pValue)) = 1
 13896  		return 1
 13897  	}
 13898  	if int32(*(*uint8)(unsafe.Pointer(z))) != '=' {
 13899  		return 0
 13900  	}
 13901  	z = csv_skip_whitespace(tls, z+uintptr(1))
 13902  	b = csv_boolean(tls, z)
 13903  	if b >= 0 {
 13904  		*(*int32)(unsafe.Pointer(pValue)) = b
 13905  		return 1
 13906  	}
 13907  	return 0
 13908  }
 13909  
 13910  func csvtabConnect(tls *libc.TLS, db uintptr, pAux uintptr, argc int32, argv uintptr, ppVtab uintptr, pzErr uintptr) int32 {
 13911  	bp := tls.Alloc(372)
 13912  	defer tls.Free(372)
 13913  
 13914  	var pNew uintptr
 13915  	var bHeader int32
 13916  	var rc int32
 13917  	var i int32
 13918  	var j int32
 13919  	var tstFlags int32
 13920  
 13921  	var nCol int32
 13922  
 13923  	var z uintptr
 13924  	var zValue uintptr
 13925  	var z1 uintptr
 13926  	var pStr uintptr
 13927  	var zSep uintptr
 13928  	var iCol int32
 13929  	pNew = uintptr(0)
 13930  	bHeader = -1
 13931  	rc = SQLITE_OK
 13932  	tstFlags = 0
 13933  	nCol = -99
 13934  
 13935  	libc.Xmemset(tls, bp+80, 0, uint64(unsafe.Sizeof(CsvReader{})))
 13936  	libc.Xmemset(tls, bp+344, 0, uint64(unsafe.Sizeof([3]uintptr{})))
 13937  	i = 3
 13938  __1:
 13939  	if !(i < argc) {
 13940  		goto __3
 13941  	}
 13942  	z = *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8))
 13943  	j = 0
 13944  __4:
 13945  	if !(uint64(j) < uint64(unsafe.Sizeof(azParam))/uint64(unsafe.Sizeof(uintptr(0)))) {
 13946  		goto __6
 13947  	}
 13948  	if !(csv_string_parameter(tls, bp+80, azParam[j], z, bp+344+uintptr(j)*8) != 0) {
 13949  		goto __7
 13950  	}
 13951  	goto __6
 13952  __7:
 13953  	;
 13954  	goto __5
 13955  __5:
 13956  	j++
 13957  	goto __4
 13958  	goto __6
 13959  __6:
 13960  	;
 13961  	if !(uint64(j) < uint64(unsafe.Sizeof(azParam))/uint64(unsafe.Sizeof(uintptr(0)))) {
 13962  		goto __8
 13963  	}
 13964  	if !(*(*uint8)(unsafe.Pointer(bp + 80 + 64)) != 0) {
 13965  		goto __10
 13966  	}
 13967  	goto csvtab_connect_error
 13968  __10:
 13969  	;
 13970  	goto __9
 13971  __8:
 13972  	if !(csv_boolean_parameter(tls, ts+4552, 6, z, bp+368) != 0) {
 13973  		goto __11
 13974  	}
 13975  	if !(bHeader >= 0) {
 13976  		goto __13
 13977  	}
 13978  	csv_errmsg(tls, bp+80, ts+4559, 0)
 13979  	goto csvtab_connect_error
 13980  __13:
 13981  	;
 13982  	bHeader = *(*int32)(unsafe.Pointer(bp + 368))
 13983  	goto __12
 13984  __11:
 13985  	if !(libc.AssignUintptr(&zValue, csv_parameter(tls, ts+4592, 9, z)) != uintptr(0)) {
 13986  		goto __14
 13987  	}
 13988  	tstFlags = int32(uint32(libc.Xatoi(tls, zValue)))
 13989  	goto __15
 13990  __14:
 13991  	if !(libc.AssignUintptr(&zValue, csv_parameter(tls, ts+4602, 7, z)) != uintptr(0)) {
 13992  		goto __16
 13993  	}
 13994  	if !(nCol > 0) {
 13995  		goto __18
 13996  	}
 13997  	csv_errmsg(tls, bp+80, ts+4610, 0)
 13998  	goto csvtab_connect_error
 13999  __18:
 14000  	;
 14001  	nCol = libc.Xatoi(tls, zValue)
 14002  	if !(nCol <= 0) {
 14003  		goto __19
 14004  	}
 14005  	csv_errmsg(tls, bp+80, ts+4644, 0)
 14006  	goto csvtab_connect_error
 14007  __19:
 14008  	;
 14009  	goto __17
 14010  __16:
 14011  	csv_errmsg(tls, bp+80, ts+4675, libc.VaList(bp, z))
 14012  	goto csvtab_connect_error
 14013  __17:
 14014  	;
 14015  __15:
 14016  	;
 14017  __12:
 14018  	;
 14019  __9:
 14020  	;
 14021  	goto __2
 14022  __2:
 14023  	i++
 14024  	goto __1
 14025  	goto __3
 14026  __3:
 14027  	;
 14028  	if !(libc.Bool32(*(*uintptr)(unsafe.Pointer(bp + 344)) == uintptr(0)) == libc.Bool32(*(*uintptr)(unsafe.Pointer(bp + 344 + 1*8)) == uintptr(0))) {
 14029  		goto __20
 14030  	}
 14031  	csv_errmsg(tls, bp+80, ts+4695, 0)
 14032  	goto csvtab_connect_error
 14033  __20:
 14034  	;
 14035  	if !((nCol <= 0 || bHeader == 1) &&
 14036  		csv_reader_open(tls, bp+80, *(*uintptr)(unsafe.Pointer(bp + 344)), *(*uintptr)(unsafe.Pointer(bp + 344 + 1*8))) != 0) {
 14037  		goto __21
 14038  	}
 14039  	goto csvtab_connect_error
 14040  __21:
 14041  	;
 14042  	pNew = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(CsvTable{})))
 14043  	*(*uintptr)(unsafe.Pointer(ppVtab)) = pNew
 14044  	if !(pNew == uintptr(0)) {
 14045  		goto __22
 14046  	}
 14047  	goto csvtab_connect_oom
 14048  __22:
 14049  	;
 14050  	libc.Xmemset(tls, pNew, 0, uint64(unsafe.Sizeof(CsvTable{})))
 14051  	if !(*(*uintptr)(unsafe.Pointer(bp + 344 + 2*8)) == uintptr(0)) {
 14052  		goto __23
 14053  	}
 14054  	pStr = sqlite3.Xsqlite3_str_new(tls, uintptr(0))
 14055  	zSep = ts + 584
 14056  	iCol = 0
 14057  	sqlite3.Xsqlite3_str_appendf(tls, pStr, ts+979, 0)
 14058  	if !(nCol < 0 && bHeader < 1) {
 14059  		goto __25
 14060  	}
 14061  	nCol = 0
 14062  __26:
 14063  	csv_read_one_field(tls, bp+80)
 14064  	nCol++
 14065  	goto __27
 14066  __27:
 14067  	if (*CsvReader)(unsafe.Pointer(bp+80)).FcTerm == ',' {
 14068  		goto __26
 14069  	}
 14070  	goto __28
 14071  __28:
 14072  	;
 14073  __25:
 14074  	;
 14075  	if !(nCol > 0 && bHeader < 1) {
 14076  		goto __29
 14077  	}
 14078  	iCol = 0
 14079  __31:
 14080  	if !(iCol < nCol) {
 14081  		goto __33
 14082  	}
 14083  	sqlite3.Xsqlite3_str_appendf(tls, pStr, ts+4747, libc.VaList(bp+8, zSep, iCol))
 14084  	zSep = ts + 4758
 14085  	goto __32
 14086  __32:
 14087  	iCol++
 14088  	goto __31
 14089  	goto __33
 14090  __33:
 14091  	;
 14092  	goto __30
 14093  __29:
 14094  __34:
 14095  	z1 = csv_read_one_field(tls, bp+80)
 14096  	if !(nCol > 0 && iCol < nCol || nCol < 0 && bHeader != 0) {
 14097  		goto __37
 14098  	}
 14099  	sqlite3.Xsqlite3_str_appendf(tls, pStr, ts+4760, libc.VaList(bp+24, zSep, z1))
 14100  	zSep = ts + 4758
 14101  	iCol++
 14102  __37:
 14103  	;
 14104  	goto __35
 14105  __35:
 14106  	if (*CsvReader)(unsafe.Pointer(bp+80)).FcTerm == ',' {
 14107  		goto __34
 14108  	}
 14109  	goto __36
 14110  __36:
 14111  	;
 14112  	if !(nCol < 0) {
 14113  		goto __38
 14114  	}
 14115  	nCol = iCol
 14116  	goto __39
 14117  __38:
 14118  __40:
 14119  	if !(iCol < nCol) {
 14120  		goto __41
 14121  	}
 14122  	sqlite3.Xsqlite3_str_appendf(tls, pStr, ts+4747, libc.VaList(bp+40, zSep, libc.PreIncInt32(&iCol, 1)))
 14123  	zSep = ts + 4758
 14124  	goto __40
 14125  __41:
 14126  	;
 14127  __39:
 14128  	;
 14129  __30:
 14130  	;
 14131  	(*CsvTable)(unsafe.Pointer(pNew)).FnCol = nCol
 14132  	sqlite3.Xsqlite3_str_appendf(tls, pStr, ts+585, 0)
 14133  	*(*uintptr)(unsafe.Pointer(bp + 344 + 2*8)) = sqlite3.Xsqlite3_str_finish(tls, pStr)
 14134  	if !(*(*uintptr)(unsafe.Pointer(bp + 344 + 2*8)) == uintptr(0)) {
 14135  		goto __42
 14136  	}
 14137  	goto csvtab_connect_oom
 14138  __42:
 14139  	;
 14140  	goto __24
 14141  __23:
 14142  	if !(nCol < 0) {
 14143  		goto __43
 14144  	}
 14145  __45:
 14146  	csv_read_one_field(tls, bp+80)
 14147  	(*CsvTable)(unsafe.Pointer(pNew)).FnCol++
 14148  	goto __46
 14149  __46:
 14150  	if (*CsvReader)(unsafe.Pointer(bp+80)).FcTerm == ',' {
 14151  		goto __45
 14152  	}
 14153  	goto __47
 14154  __47:
 14155  	;
 14156  	goto __44
 14157  __43:
 14158  	(*CsvTable)(unsafe.Pointer(pNew)).FnCol = nCol
 14159  __44:
 14160  	;
 14161  __24:
 14162  	;
 14163  	(*CsvTable)(unsafe.Pointer(pNew)).FzFilename = *(*uintptr)(unsafe.Pointer(bp + 344))
 14164  	*(*uintptr)(unsafe.Pointer(bp + 344)) = uintptr(0)
 14165  	(*CsvTable)(unsafe.Pointer(pNew)).FzData = *(*uintptr)(unsafe.Pointer(bp + 344 + 1*8))
 14166  	*(*uintptr)(unsafe.Pointer(bp + 344 + 1*8)) = uintptr(0)
 14167  	(*CsvTable)(unsafe.Pointer(pNew)).FtstFlags = uint32(tstFlags)
 14168  	if !(bHeader != 1) {
 14169  		goto __48
 14170  	}
 14171  	(*CsvTable)(unsafe.Pointer(pNew)).FiStart = int64(0)
 14172  	goto __49
 14173  __48:
 14174  	if !((*CsvTable)(unsafe.Pointer(pNew)).FzData != 0) {
 14175  		goto __50
 14176  	}
 14177  	(*CsvTable)(unsafe.Pointer(pNew)).FiStart = int64(int32((*CsvReader)(unsafe.Pointer(bp + 80)).FiIn))
 14178  	goto __51
 14179  __50:
 14180  	(*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))
 14181  __51:
 14182  	;
 14183  __49:
 14184  	;
 14185  	csv_reader_reset(tls, bp+80)
 14186  	rc = sqlite3.Xsqlite3_declare_vtab(tls, db, *(*uintptr)(unsafe.Pointer(bp + 344 + 2*8)))
 14187  	if !(rc != 0) {
 14188  		goto __52
 14189  	}
 14190  	csv_errmsg(tls, bp+80, ts+4772, libc.VaList(bp+56, *(*uintptr)(unsafe.Pointer(bp + 344 + 2*8)), sqlite3.Xsqlite3_errmsg(tls, db)))
 14191  	goto csvtab_connect_error
 14192  __52:
 14193  	;
 14194  	i = 0
 14195  __53:
 14196  	if !(uint64(i) < uint64(unsafe.Sizeof([3]uintptr{}))/uint64(unsafe.Sizeof(uintptr(0)))) {
 14197  		goto __55
 14198  	}
 14199  	sqlite3.Xsqlite3_free(tls, *(*uintptr)(unsafe.Pointer(bp + 344 + uintptr(i)*8)))
 14200  	goto __54
 14201  __54:
 14202  	i++
 14203  	goto __53
 14204  	goto __55
 14205  __55:
 14206  	;
 14207  	sqlite3.Xsqlite3_vtab_config(tls, db, SQLITE_VTAB_DIRECTONLY, 0)
 14208  	return SQLITE_OK
 14209  
 14210  csvtab_connect_oom:
 14211  	rc = SQLITE_NOMEM
 14212  	csv_errmsg(tls, bp+80, ts+2069, 0)
 14213  
 14214  csvtab_connect_error:
 14215  	if !(pNew != 0) {
 14216  		goto __56
 14217  	}
 14218  	csvtabDisconnect(tls, pNew)
 14219  __56:
 14220  	;
 14221  	i = 0
 14222  __57:
 14223  	if !(uint64(i) < uint64(unsafe.Sizeof([3]uintptr{}))/uint64(unsafe.Sizeof(uintptr(0)))) {
 14224  		goto __59
 14225  	}
 14226  	sqlite3.Xsqlite3_free(tls, *(*uintptr)(unsafe.Pointer(bp + 344 + uintptr(i)*8)))
 14227  	goto __58
 14228  __58:
 14229  	i++
 14230  	goto __57
 14231  	goto __59
 14232  __59:
 14233  	;
 14234  	if !(*(*uint8)(unsafe.Pointer(bp + 80 + 64)) != 0) {
 14235  		goto __60
 14236  	}
 14237  	sqlite3.Xsqlite3_free(tls, *(*uintptr)(unsafe.Pointer(pzErr)))
 14238  	*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp+72, bp+80+64))
 14239  __60:
 14240  	;
 14241  	csv_reader_reset(tls, bp+80)
 14242  	if !(rc == SQLITE_OK) {
 14243  		goto __61
 14244  	}
 14245  	rc = SQLITE_ERROR
 14246  __61:
 14247  	;
 14248  	return rc
 14249  }
 14250  
 14251  var azParam = [3]uintptr{
 14252  	ts + 4794, ts + 4803, ts + 4808,
 14253  }
 14254  
 14255  func csvtabCursorRowReset(tls *libc.TLS, pCur uintptr) {
 14256  	var pTab uintptr = (*CsvCursor)(unsafe.Pointer(pCur)).Fbase.FpVtab
 14257  	var i int32
 14258  	for i = 0; i < (*CsvTable)(unsafe.Pointer(pTab)).FnCol; i++ {
 14259  		sqlite3.Xsqlite3_free(tls, *(*uintptr)(unsafe.Pointer((*CsvCursor)(unsafe.Pointer(pCur)).FazVal + uintptr(i)*8)))
 14260  		*(*uintptr)(unsafe.Pointer((*CsvCursor)(unsafe.Pointer(pCur)).FazVal + uintptr(i)*8)) = uintptr(0)
 14261  		*(*int32)(unsafe.Pointer((*CsvCursor)(unsafe.Pointer(pCur)).FaLen + uintptr(i)*4)) = 0
 14262  	}
 14263  }
 14264  
 14265  func csvtabCreate(tls *libc.TLS, db uintptr, pAux uintptr, argc int32, argv uintptr, ppVtab uintptr, pzErr uintptr) int32 {
 14266  	return csvtabConnect(tls, db, pAux, argc, argv, ppVtab, pzErr)
 14267  }
 14268  
 14269  func csvtabClose(tls *libc.TLS, cur uintptr) int32 {
 14270  	var pCur uintptr = cur
 14271  	csvtabCursorRowReset(tls, pCur)
 14272  	csv_reader_reset(tls, pCur+8)
 14273  	sqlite3.Xsqlite3_free(tls, cur)
 14274  	return SQLITE_OK
 14275  }
 14276  
 14277  func csvtabOpen(tls *libc.TLS, p uintptr, ppCursor uintptr) int32 {
 14278  	var pTab uintptr = p
 14279  	var pCur uintptr
 14280  	var nByte size_t
 14281  	nByte = uint64(unsafe.Sizeof(CsvCursor{})) + (uint64(unsafe.Sizeof(uintptr(0)))+uint64(unsafe.Sizeof(int32(0))))*uint64((*CsvTable)(unsafe.Pointer(pTab)).FnCol)
 14282  	pCur = sqlite3.Xsqlite3_malloc64(tls, nByte)
 14283  	if pCur == uintptr(0) {
 14284  		return SQLITE_NOMEM
 14285  	}
 14286  	libc.Xmemset(tls, pCur, 0, nByte)
 14287  	(*CsvCursor)(unsafe.Pointer(pCur)).FazVal = pCur + 1*296
 14288  	(*CsvCursor)(unsafe.Pointer(pCur)).FaLen = (*CsvCursor)(unsafe.Pointer(pCur)).FazVal + uintptr((*CsvTable)(unsafe.Pointer(pTab)).FnCol)*8
 14289  	*(*uintptr)(unsafe.Pointer(ppCursor)) = pCur
 14290  	if csv_reader_open(tls, pCur+8, (*CsvTable)(unsafe.Pointer(pTab)).FzFilename, (*CsvTable)(unsafe.Pointer(pTab)).FzData) != 0 {
 14291  		csv_xfer_error(tls, pTab, pCur+8)
 14292  		return SQLITE_ERROR
 14293  	}
 14294  	return SQLITE_OK
 14295  }
 14296  
 14297  func csvtabNext(tls *libc.TLS, cur uintptr) int32 {
 14298  	var pCur uintptr = cur
 14299  	var pTab uintptr = (*sqlite3_vtab_cursor)(unsafe.Pointer(cur)).FpVtab
 14300  	var i int32 = 0
 14301  	var z uintptr
 14302  	for __ccgo := true; __ccgo; __ccgo = (*CsvCursor)(unsafe.Pointer(pCur)).Frdr.FcTerm == ',' {
 14303  		z = csv_read_one_field(tls, pCur+8)
 14304  		if z == uintptr(0) {
 14305  			break
 14306  		}
 14307  		if i < (*CsvTable)(unsafe.Pointer(pTab)).FnCol {
 14308  			if *(*int32)(unsafe.Pointer((*CsvCursor)(unsafe.Pointer(pCur)).FaLen + uintptr(i)*4)) < (*CsvCursor)(unsafe.Pointer(pCur)).Frdr.Fn+1 {
 14309  				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))
 14310  				if zNew == uintptr(0) {
 14311  					csv_errmsg(tls, pCur+8, ts+2069, 0)
 14312  					csv_xfer_error(tls, pTab, pCur+8)
 14313  					break
 14314  				}
 14315  				*(*uintptr)(unsafe.Pointer((*CsvCursor)(unsafe.Pointer(pCur)).FazVal + uintptr(i)*8)) = zNew
 14316  				*(*int32)(unsafe.Pointer((*CsvCursor)(unsafe.Pointer(pCur)).FaLen + uintptr(i)*4)) = (*CsvCursor)(unsafe.Pointer(pCur)).Frdr.Fn + 1
 14317  			}
 14318  			libc.Xmemcpy(tls, *(*uintptr)(unsafe.Pointer((*CsvCursor)(unsafe.Pointer(pCur)).FazVal + uintptr(i)*8)), z, uint64((*CsvCursor)(unsafe.Pointer(pCur)).Frdr.Fn+1))
 14319  			i++
 14320  		}
 14321  	}
 14322  	if z == uintptr(0) || (*CsvCursor)(unsafe.Pointer(pCur)).Frdr.FcTerm == -1 && i < (*CsvTable)(unsafe.Pointer(pTab)).FnCol {
 14323  		(*CsvCursor)(unsafe.Pointer(pCur)).FiRowid = int64(-1)
 14324  	} else {
 14325  		(*CsvCursor)(unsafe.Pointer(pCur)).FiRowid++
 14326  		for i < (*CsvTable)(unsafe.Pointer(pTab)).FnCol {
 14327  			sqlite3.Xsqlite3_free(tls, *(*uintptr)(unsafe.Pointer((*CsvCursor)(unsafe.Pointer(pCur)).FazVal + uintptr(i)*8)))
 14328  			*(*uintptr)(unsafe.Pointer((*CsvCursor)(unsafe.Pointer(pCur)).FazVal + uintptr(i)*8)) = uintptr(0)
 14329  			*(*int32)(unsafe.Pointer((*CsvCursor)(unsafe.Pointer(pCur)).FaLen + uintptr(i)*4)) = 0
 14330  			i++
 14331  		}
 14332  	}
 14333  	return SQLITE_OK
 14334  }
 14335  
 14336  func csvtabColumn(tls *libc.TLS, cur uintptr, ctx uintptr, i int32) int32 {
 14337  	var pCur uintptr = cur
 14338  	var pTab uintptr = (*sqlite3_vtab_cursor)(unsafe.Pointer(cur)).FpVtab
 14339  	if i >= 0 && i < (*CsvTable)(unsafe.Pointer(pTab)).FnCol && *(*uintptr)(unsafe.Pointer((*CsvCursor)(unsafe.Pointer(pCur)).FazVal + uintptr(i)*8)) != uintptr(0) {
 14340  		sqlite3.Xsqlite3_result_text(tls, ctx, *(*uintptr)(unsafe.Pointer((*CsvCursor)(unsafe.Pointer(pCur)).FazVal + uintptr(i)*8)), -1, libc.UintptrFromInt32(-1))
 14341  	}
 14342  	return SQLITE_OK
 14343  }
 14344  
 14345  func csvtabRowid(tls *libc.TLS, cur uintptr, pRowid uintptr) int32 {
 14346  	var pCur uintptr = cur
 14347  	*(*sqlite_int64)(unsafe.Pointer(pRowid)) = (*CsvCursor)(unsafe.Pointer(pCur)).FiRowid
 14348  	return SQLITE_OK
 14349  }
 14350  
 14351  func csvtabEof(tls *libc.TLS, cur uintptr) int32 {
 14352  	var pCur uintptr = cur
 14353  	return libc.Bool32((*CsvCursor)(unsafe.Pointer(pCur)).FiRowid < int64(0))
 14354  }
 14355  
 14356  func csvtabFilter(tls *libc.TLS, pVtabCursor uintptr, idxNum int32, idxStr uintptr, argc int32, argv uintptr) int32 {
 14357  	var pCur uintptr = pVtabCursor
 14358  	var pTab uintptr = (*sqlite3_vtab_cursor)(unsafe.Pointer(pVtabCursor)).FpVtab
 14359  	(*CsvCursor)(unsafe.Pointer(pCur)).FiRowid = int64(0)
 14360  	if (*CsvCursor)(unsafe.Pointer(pCur)).Frdr.Fin == uintptr(0) {
 14361  		(*CsvCursor)(unsafe.Pointer(pCur)).Frdr.FiIn = size_t((*CsvTable)(unsafe.Pointer(pTab)).FiStart)
 14362  	} else {
 14363  		libc.Xfseek(tls, (*CsvCursor)(unsafe.Pointer(pCur)).Frdr.Fin, (*CsvTable)(unsafe.Pointer(pTab)).FiStart, SEEK_SET)
 14364  		(*CsvCursor)(unsafe.Pointer(pCur)).Frdr.FiIn = uint64(0)
 14365  		(*CsvCursor)(unsafe.Pointer(pCur)).Frdr.FnIn = uint64(0)
 14366  	}
 14367  	return csvtabNext(tls, pVtabCursor)
 14368  }
 14369  
 14370  func csvtabBestIndex(tls *libc.TLS, tab uintptr, pIdxInfo uintptr) int32 {
 14371  	(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = float64(1000000)
 14372  	if (*CsvTable)(unsafe.Pointer(tab)).FtstFlags&uint32(CSVTEST_FIDX) != uint32(0) {
 14373  		var i int32
 14374  		var nConst int32 = 0
 14375  		for i = 0; i < (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnConstraint; i++ {
 14376  			var op uint8
 14377  			if int32((*sqlite3_index_constraint)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint+uintptr(i)*12)).Fusable) == 0 {
 14378  				continue
 14379  			}
 14380  			op = (*sqlite3_index_constraint)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint + uintptr(i)*12)).Fop
 14381  			if int32(op) == SQLITE_INDEX_CONSTRAINT_EQ ||
 14382  				int32(op) == SQLITE_INDEX_CONSTRAINT_LIKE ||
 14383  				int32(op) == SQLITE_INDEX_CONSTRAINT_GLOB {
 14384  				(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = float64(10)
 14385  				(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(nConst)*8)).FargvIndex = nConst + 1
 14386  				nConst++
 14387  			}
 14388  		}
 14389  	}
 14390  	return SQLITE_OK
 14391  }
 14392  
 14393  var CsvModule = sqlite3_module{
 14394  	FxCreate:     0,
 14395  	FxConnect:    0,
 14396  	FxBestIndex:  0,
 14397  	FxDisconnect: 0,
 14398  	FxDestroy:    0,
 14399  	FxOpen:       0,
 14400  	FxClose:      0,
 14401  	FxFilter:     0,
 14402  	FxNext:       0,
 14403  	FxEof:        0,
 14404  	FxColumn:     0,
 14405  	FxRowid:      0,
 14406  }
 14407  
 14408  func csvtabUpdate(tls *libc.TLS, p uintptr, n int32, v uintptr, x uintptr) int32 {
 14409  	return SQLITE_READONLY
 14410  }
 14411  
 14412  var CsvModuleFauxWrite = sqlite3_module{
 14413  	FxCreate:     0,
 14414  	FxConnect:    0,
 14415  	FxBestIndex:  0,
 14416  	FxDisconnect: 0,
 14417  	FxDestroy:    0,
 14418  	FxOpen:       0,
 14419  	FxClose:      0,
 14420  	FxFilter:     0,
 14421  	FxNext:       0,
 14422  	FxEof:        0,
 14423  	FxColumn:     0,
 14424  	FxRowid:      0,
 14425  	FxUpdate:     0,
 14426  }
 14427  
 14428  func sqlite3_csv_init(tls *libc.TLS, db uintptr, pzErrMsg uintptr, pApi uintptr) int32 {
 14429  	var rc int32
 14430  	_ = pApi
 14431  
 14432  	rc = sqlite3.Xsqlite3_create_module(tls, db, ts+4815, uintptr(unsafe.Pointer(&CsvModule)), uintptr(0))
 14433  	if rc == SQLITE_OK {
 14434  		rc = sqlite3.Xsqlite3_create_module(tls, db, ts+4819, uintptr(unsafe.Pointer(&CsvModuleFauxWrite)), uintptr(0))
 14435  	}
 14436  	return rc
 14437  }
 14438  
 14439  type Decimal1 = struct {
 14440  	Fsign        uint8
 14441  	Foom         uint8
 14442  	FisNull      uint8
 14443  	FisInit      uint8
 14444  	FnDigit      int32
 14445  	FnFrac       int32
 14446  	F__ccgo_pad1 [4]byte
 14447  	Fa           uintptr
 14448  }
 14449  
 14450  type Decimal = Decimal1
 14451  
 14452  func decimal_clear(tls *libc.TLS, p uintptr) {
 14453  	sqlite3.Xsqlite3_free(tls, (*Decimal)(unsafe.Pointer(p)).Fa)
 14454  }
 14455  
 14456  func decimal_free(tls *libc.TLS, p uintptr) {
 14457  	if p != 0 {
 14458  		decimal_clear(tls, p)
 14459  		sqlite3.Xsqlite3_free(tls, p)
 14460  	}
 14461  }
 14462  
 14463  func decimal_new(tls *libc.TLS, pCtx uintptr, pIn uintptr, nAlt int32, zAlt uintptr) uintptr {
 14464  	var p uintptr
 14465  	var n int32
 14466  	var i int32
 14467  	var zIn uintptr
 14468  	var iExp int32
 14469  	var j int32
 14470  	var neg int32
 14471  	var c uint8
 14472  	var nExtra int32
 14473  	iExp = 0
 14474  	p = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(Decimal{})))
 14475  	if !(p == uintptr(0)) {
 14476  		goto __1
 14477  	}
 14478  	goto new_no_mem
 14479  __1:
 14480  	;
 14481  	(*Decimal)(unsafe.Pointer(p)).Fsign = uint8(0)
 14482  	(*Decimal)(unsafe.Pointer(p)).Foom = uint8(0)
 14483  	(*Decimal)(unsafe.Pointer(p)).FisInit = uint8(1)
 14484  	(*Decimal)(unsafe.Pointer(p)).FisNull = uint8(0)
 14485  	(*Decimal)(unsafe.Pointer(p)).FnDigit = 0
 14486  	(*Decimal)(unsafe.Pointer(p)).FnFrac = 0
 14487  	if !(zAlt != 0) {
 14488  		goto __2
 14489  	}
 14490  	n = nAlt
 14491  	zIn = zAlt
 14492  	goto __3
 14493  __2:
 14494  	if !(sqlite3.Xsqlite3_value_type(tls, pIn) == SQLITE_NULL) {
 14495  		goto __4
 14496  	}
 14497  	(*Decimal)(unsafe.Pointer(p)).Fa = uintptr(0)
 14498  	(*Decimal)(unsafe.Pointer(p)).FisNull = uint8(1)
 14499  	return p
 14500  __4:
 14501  	;
 14502  	n = sqlite3.Xsqlite3_value_bytes(tls, pIn)
 14503  	zIn = sqlite3.Xsqlite3_value_text(tls, pIn)
 14504  __3:
 14505  	;
 14506  	(*Decimal)(unsafe.Pointer(p)).Fa = sqlite3.Xsqlite3_malloc64(tls, uint64(n+1))
 14507  	if !((*Decimal)(unsafe.Pointer(p)).Fa == uintptr(0)) {
 14508  		goto __5
 14509  	}
 14510  	goto new_no_mem
 14511  __5:
 14512  	;
 14513  	i = 0
 14514  __6:
 14515  	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) {
 14516  		goto __8
 14517  	}
 14518  	goto __7
 14519  __7:
 14520  	i++
 14521  	goto __6
 14522  	goto __8
 14523  __8:
 14524  	;
 14525  	if !(int32(*(*uint8)(unsafe.Pointer(zIn + uintptr(i)))) == '-') {
 14526  		goto __9
 14527  	}
 14528  	(*Decimal)(unsafe.Pointer(p)).Fsign = uint8(1)
 14529  	i++
 14530  	goto __10
 14531  __9:
 14532  	if !(int32(*(*uint8)(unsafe.Pointer(zIn + uintptr(i)))) == '+') {
 14533  		goto __11
 14534  	}
 14535  	i++
 14536  __11:
 14537  	;
 14538  __10:
 14539  	;
 14540  __12:
 14541  	if !(i < n && int32(*(*uint8)(unsafe.Pointer(zIn + uintptr(i)))) == '0') {
 14542  		goto __13
 14543  	}
 14544  	i++
 14545  	goto __12
 14546  __13:
 14547  	;
 14548  __14:
 14549  	if !(i < n) {
 14550  		goto __15
 14551  	}
 14552  	c = *(*uint8)(unsafe.Pointer(zIn + uintptr(i)))
 14553  	if !(int32(c) >= '0' && int32(c) <= '9') {
 14554  		goto __16
 14555  	}
 14556  	*(*int8)(unsafe.Pointer((*Decimal)(unsafe.Pointer(p)).Fa + uintptr(libc.PostIncInt32(&(*Decimal)(unsafe.Pointer(p)).FnDigit, 1)))) = int8(int32(c) - '0')
 14557  	goto __17
 14558  __16:
 14559  	if !(int32(c) == '.') {
 14560  		goto __18
 14561  	}
 14562  	(*Decimal)(unsafe.Pointer(p)).FnFrac = (*Decimal)(unsafe.Pointer(p)).FnDigit + 1
 14563  	goto __19
 14564  __18:
 14565  	if !(int32(c) == 'e' || int32(c) == 'E') {
 14566  		goto __20
 14567  	}
 14568  	j = i + 1
 14569  	neg = 0
 14570  	if !(j >= n) {
 14571  		goto __21
 14572  	}
 14573  	goto __15
 14574  __21:
 14575  	;
 14576  	if !(int32(*(*uint8)(unsafe.Pointer(zIn + uintptr(j)))) == '-') {
 14577  		goto __22
 14578  	}
 14579  	neg = 1
 14580  	j++
 14581  	goto __23
 14582  __22:
 14583  	if !(int32(*(*uint8)(unsafe.Pointer(zIn + uintptr(j)))) == '+') {
 14584  		goto __24
 14585  	}
 14586  	j++
 14587  __24:
 14588  	;
 14589  __23:
 14590  	;
 14591  __25:
 14592  	if !(j < n && iExp < 1000000) {
 14593  		goto __26
 14594  	}
 14595  	if !(int32(*(*uint8)(unsafe.Pointer(zIn + uintptr(j)))) >= '0' && int32(*(*uint8)(unsafe.Pointer(zIn + uintptr(j)))) <= '9') {
 14596  		goto __27
 14597  	}
 14598  	iExp = iExp*10 + int32(*(*uint8)(unsafe.Pointer(zIn + uintptr(j)))) - '0'
 14599  __27:
 14600  	;
 14601  	j++
 14602  	goto __25
 14603  __26:
 14604  	;
 14605  	if !(neg != 0) {
 14606  		goto __28
 14607  	}
 14608  	iExp = -iExp
 14609  __28:
 14610  	;
 14611  	goto __15
 14612  __20:
 14613  	;
 14614  __19:
 14615  	;
 14616  __17:
 14617  	;
 14618  	i++
 14619  	goto __14
 14620  __15:
 14621  	;
 14622  	if !((*Decimal)(unsafe.Pointer(p)).FnFrac != 0) {
 14623  		goto __29
 14624  	}
 14625  	(*Decimal)(unsafe.Pointer(p)).FnFrac = (*Decimal)(unsafe.Pointer(p)).FnDigit - ((*Decimal)(unsafe.Pointer(p)).FnFrac - 1)
 14626  __29:
 14627  	;
 14628  	if !(iExp > 0) {
 14629  		goto __30
 14630  	}
 14631  	if !((*Decimal)(unsafe.Pointer(p)).FnFrac > 0) {
 14632  		goto __32
 14633  	}
 14634  	if !(iExp <= (*Decimal)(unsafe.Pointer(p)).FnFrac) {
 14635  		goto __33
 14636  	}
 14637  	*(*int32)(unsafe.Pointer(p + 8)) -= iExp
 14638  	iExp = 0
 14639  	goto __34
 14640  __33:
 14641  	iExp = iExp - (*Decimal)(unsafe.Pointer(p)).FnFrac
 14642  	(*Decimal)(unsafe.Pointer(p)).FnFrac = 0
 14643  __34:
 14644  	;
 14645  __32:
 14646  	;
 14647  	if !(iExp > 0) {
 14648  		goto __35
 14649  	}
 14650  	(*Decimal)(unsafe.Pointer(p)).Fa = sqlite3.Xsqlite3_realloc64(tls, (*Decimal)(unsafe.Pointer(p)).Fa, uint64((*Decimal)(unsafe.Pointer(p)).FnDigit+iExp+1))
 14651  	if !((*Decimal)(unsafe.Pointer(p)).Fa == uintptr(0)) {
 14652  		goto __36
 14653  	}
 14654  	goto new_no_mem
 14655  __36:
 14656  	;
 14657  	libc.Xmemset(tls, (*Decimal)(unsafe.Pointer(p)).Fa+uintptr((*Decimal)(unsafe.Pointer(p)).FnDigit), 0, uint64(iExp))
 14658  	*(*int32)(unsafe.Pointer(p + 4)) += iExp
 14659  __35:
 14660  	;
 14661  	goto __31
 14662  __30:
 14663  	if !(iExp < 0) {
 14664  		goto __37
 14665  	}
 14666  	iExp = -iExp
 14667  	nExtra = (*Decimal)(unsafe.Pointer(p)).FnDigit - (*Decimal)(unsafe.Pointer(p)).FnFrac - 1
 14668  	if !(nExtra != 0) {
 14669  		goto __38
 14670  	}
 14671  	if !(nExtra >= iExp) {
 14672  		goto __39
 14673  	}
 14674  	*(*int32)(unsafe.Pointer(p + 8)) += iExp
 14675  	iExp = 0
 14676  	goto __40
 14677  __39:
 14678  	iExp = iExp - nExtra
 14679  	(*Decimal)(unsafe.Pointer(p)).FnFrac = (*Decimal)(unsafe.Pointer(p)).FnDigit - 1
 14680  __40:
 14681  	;
 14682  __38:
 14683  	;
 14684  	if !(iExp > 0) {
 14685  		goto __41
 14686  	}
 14687  	(*Decimal)(unsafe.Pointer(p)).Fa = sqlite3.Xsqlite3_realloc64(tls, (*Decimal)(unsafe.Pointer(p)).Fa, uint64((*Decimal)(unsafe.Pointer(p)).FnDigit+iExp+1))
 14688  	if !((*Decimal)(unsafe.Pointer(p)).Fa == uintptr(0)) {
 14689  		goto __42
 14690  	}
 14691  	goto new_no_mem
 14692  __42:
 14693  	;
 14694  	libc.Xmemmove(tls, (*Decimal)(unsafe.Pointer(p)).Fa+uintptr(iExp), (*Decimal)(unsafe.Pointer(p)).Fa, uint64((*Decimal)(unsafe.Pointer(p)).FnDigit))
 14695  	libc.Xmemset(tls, (*Decimal)(unsafe.Pointer(p)).Fa, 0, uint64(iExp))
 14696  	*(*int32)(unsafe.Pointer(p + 4)) += iExp
 14697  	*(*int32)(unsafe.Pointer(p + 8)) += iExp
 14698  __41:
 14699  	;
 14700  __37:
 14701  	;
 14702  __31:
 14703  	;
 14704  	return p
 14705  
 14706  new_no_mem:
 14707  	if !(pCtx != 0) {
 14708  		goto __43
 14709  	}
 14710  	sqlite3.Xsqlite3_result_error_nomem(tls, pCtx)
 14711  __43:
 14712  	;
 14713  	sqlite3.Xsqlite3_free(tls, p)
 14714  	return uintptr(0)
 14715  }
 14716  
 14717  func decimal_result(tls *libc.TLS, pCtx uintptr, p uintptr) {
 14718  	var z uintptr
 14719  	var i int32
 14720  	var j int32
 14721  	var n int32
 14722  	if p == uintptr(0) || (*Decimal)(unsafe.Pointer(p)).Foom != 0 {
 14723  		sqlite3.Xsqlite3_result_error_nomem(tls, pCtx)
 14724  		return
 14725  	}
 14726  	if (*Decimal)(unsafe.Pointer(p)).FisNull != 0 {
 14727  		sqlite3.Xsqlite3_result_null(tls, pCtx)
 14728  		return
 14729  	}
 14730  	z = sqlite3.Xsqlite3_malloc(tls, (*Decimal)(unsafe.Pointer(p)).FnDigit+4)
 14731  	if z == uintptr(0) {
 14732  		sqlite3.Xsqlite3_result_error_nomem(tls, pCtx)
 14733  		return
 14734  	}
 14735  	i = 0
 14736  	if (*Decimal)(unsafe.Pointer(p)).FnDigit == 0 || (*Decimal)(unsafe.Pointer(p)).FnDigit == 1 && int32(*(*int8)(unsafe.Pointer((*Decimal)(unsafe.Pointer(p)).Fa))) == 0 {
 14737  		(*Decimal)(unsafe.Pointer(p)).Fsign = uint8(0)
 14738  	}
 14739  	if (*Decimal)(unsafe.Pointer(p)).Fsign != 0 {
 14740  		*(*uint8)(unsafe.Pointer(z)) = uint8('-')
 14741  		i = 1
 14742  	}
 14743  	n = (*Decimal)(unsafe.Pointer(p)).FnDigit - (*Decimal)(unsafe.Pointer(p)).FnFrac
 14744  	if n <= 0 {
 14745  		*(*uint8)(unsafe.Pointer(z + uintptr(libc.PostIncInt32(&i, 1)))) = uint8('0')
 14746  	}
 14747  	j = 0
 14748  	for n > 1 && int32(*(*int8)(unsafe.Pointer((*Decimal)(unsafe.Pointer(p)).Fa + uintptr(j)))) == 0 {
 14749  		j++
 14750  		n--
 14751  	}
 14752  	for n > 0 {
 14753  		*(*uint8)(unsafe.Pointer(z + uintptr(libc.PostIncInt32(&i, 1)))) = uint8(int32(*(*int8)(unsafe.Pointer((*Decimal)(unsafe.Pointer(p)).Fa + uintptr(j)))) + '0')
 14754  		j++
 14755  		n--
 14756  	}
 14757  	if (*Decimal)(unsafe.Pointer(p)).FnFrac != 0 {
 14758  		*(*uint8)(unsafe.Pointer(z + uintptr(libc.PostIncInt32(&i, 1)))) = uint8('.')
 14759  		for __ccgo := true; __ccgo; __ccgo = j < (*Decimal)(unsafe.Pointer(p)).FnDigit {
 14760  			*(*uint8)(unsafe.Pointer(z + uintptr(libc.PostIncInt32(&i, 1)))) = uint8(int32(*(*int8)(unsafe.Pointer((*Decimal)(unsafe.Pointer(p)).Fa + uintptr(j)))) + '0')
 14761  			j++
 14762  		}
 14763  	}
 14764  	*(*uint8)(unsafe.Pointer(z + uintptr(i))) = uint8(0)
 14765  	sqlite3.Xsqlite3_result_text(tls, pCtx, z, i, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{sqlite3.Xsqlite3_free})))
 14766  }
 14767  
 14768  func decimalFunc(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 14769  	var p uintptr = decimal_new(tls, context, *(*uintptr)(unsafe.Pointer(argv)), 0, uintptr(0))
 14770  	_ = argc
 14771  	decimal_result(tls, context, p)
 14772  	decimal_free(tls, p)
 14773  }
 14774  
 14775  func decimal_cmp(tls *libc.TLS, pA uintptr, pB uintptr) int32 {
 14776  	var nASig int32
 14777  	var nBSig int32
 14778  	var rc int32
 14779  	var n int32
 14780  	if int32((*Decimal)(unsafe.Pointer(pA)).Fsign) != int32((*Decimal)(unsafe.Pointer(pB)).Fsign) {
 14781  		if (*Decimal)(unsafe.Pointer(pA)).Fsign != 0 {
 14782  			return -1
 14783  		}
 14784  		return +1
 14785  	}
 14786  	if (*Decimal)(unsafe.Pointer(pA)).Fsign != 0 {
 14787  		var pTemp uintptr = pA
 14788  		pA = pB
 14789  		pB = pTemp
 14790  	}
 14791  	nASig = (*Decimal)(unsafe.Pointer(pA)).FnDigit - (*Decimal)(unsafe.Pointer(pA)).FnFrac
 14792  	nBSig = (*Decimal)(unsafe.Pointer(pB)).FnDigit - (*Decimal)(unsafe.Pointer(pB)).FnFrac
 14793  	if nASig != nBSig {
 14794  		return nASig - nBSig
 14795  	}
 14796  	n = (*Decimal)(unsafe.Pointer(pA)).FnDigit
 14797  	if n > (*Decimal)(unsafe.Pointer(pB)).FnDigit {
 14798  		n = (*Decimal)(unsafe.Pointer(pB)).FnDigit
 14799  	}
 14800  	rc = libc.Xmemcmp(tls, (*Decimal)(unsafe.Pointer(pA)).Fa, (*Decimal)(unsafe.Pointer(pB)).Fa, uint64(n))
 14801  	if rc == 0 {
 14802  		rc = (*Decimal)(unsafe.Pointer(pA)).FnDigit - (*Decimal)(unsafe.Pointer(pB)).FnDigit
 14803  	}
 14804  	return rc
 14805  }
 14806  
 14807  func decimalCmpFunc(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 14808  	var pA uintptr
 14809  	var pB uintptr
 14810  	var rc int32
 14811  	pA = uintptr(0)
 14812  	pB = uintptr(0)
 14813  
 14814  	_ = argc
 14815  	pA = decimal_new(tls, context, *(*uintptr)(unsafe.Pointer(argv)), 0, uintptr(0))
 14816  	if !(pA == uintptr(0) || (*Decimal)(unsafe.Pointer(pA)).FisNull != 0) {
 14817  		goto __1
 14818  	}
 14819  	goto cmp_done
 14820  __1:
 14821  	;
 14822  	pB = decimal_new(tls, context, *(*uintptr)(unsafe.Pointer(argv + 1*8)), 0, uintptr(0))
 14823  	if !(pB == uintptr(0) || (*Decimal)(unsafe.Pointer(pB)).FisNull != 0) {
 14824  		goto __2
 14825  	}
 14826  	goto cmp_done
 14827  __2:
 14828  	;
 14829  	rc = decimal_cmp(tls, pA, pB)
 14830  	if !(rc < 0) {
 14831  		goto __3
 14832  	}
 14833  	rc = -1
 14834  	goto __4
 14835  __3:
 14836  	if !(rc > 0) {
 14837  		goto __5
 14838  	}
 14839  	rc = +1
 14840  __5:
 14841  	;
 14842  __4:
 14843  	;
 14844  	sqlite3.Xsqlite3_result_int(tls, context, rc)
 14845  cmp_done:
 14846  	decimal_free(tls, pA)
 14847  	decimal_free(tls, pB)
 14848  }
 14849  
 14850  func decimal_expand(tls *libc.TLS, p uintptr, nDigit int32, nFrac int32) {
 14851  	var nAddSig int32
 14852  	var nAddFrac int32
 14853  	if p == uintptr(0) {
 14854  		return
 14855  	}
 14856  	nAddFrac = nFrac - (*Decimal)(unsafe.Pointer(p)).FnFrac
 14857  	nAddSig = nDigit - (*Decimal)(unsafe.Pointer(p)).FnDigit - nAddFrac
 14858  	if nAddFrac == 0 && nAddSig == 0 {
 14859  		return
 14860  	}
 14861  	(*Decimal)(unsafe.Pointer(p)).Fa = sqlite3.Xsqlite3_realloc64(tls, (*Decimal)(unsafe.Pointer(p)).Fa, uint64(nDigit+1))
 14862  	if (*Decimal)(unsafe.Pointer(p)).Fa == uintptr(0) {
 14863  		(*Decimal)(unsafe.Pointer(p)).Foom = uint8(1)
 14864  		return
 14865  	}
 14866  	if nAddSig != 0 {
 14867  		libc.Xmemmove(tls, (*Decimal)(unsafe.Pointer(p)).Fa+uintptr(nAddSig), (*Decimal)(unsafe.Pointer(p)).Fa, uint64((*Decimal)(unsafe.Pointer(p)).FnDigit))
 14868  		libc.Xmemset(tls, (*Decimal)(unsafe.Pointer(p)).Fa, 0, uint64(nAddSig))
 14869  		*(*int32)(unsafe.Pointer(p + 4)) += nAddSig
 14870  	}
 14871  	if nAddFrac != 0 {
 14872  		libc.Xmemset(tls, (*Decimal)(unsafe.Pointer(p)).Fa+uintptr((*Decimal)(unsafe.Pointer(p)).FnDigit), 0, uint64(nAddFrac))
 14873  		*(*int32)(unsafe.Pointer(p + 4)) += nAddFrac
 14874  		*(*int32)(unsafe.Pointer(p + 8)) += nAddFrac
 14875  	}
 14876  }
 14877  
 14878  func decimal_add(tls *libc.TLS, pA uintptr, pB uintptr) {
 14879  	var nSig int32
 14880  	var nFrac int32
 14881  	var nDigit int32
 14882  	var i int32
 14883  	var rc int32
 14884  	if pA == uintptr(0) {
 14885  		return
 14886  	}
 14887  	if (*Decimal)(unsafe.Pointer(pA)).Foom != 0 || pB == uintptr(0) || (*Decimal)(unsafe.Pointer(pB)).Foom != 0 {
 14888  		(*Decimal)(unsafe.Pointer(pA)).Foom = uint8(1)
 14889  		return
 14890  	}
 14891  	if (*Decimal)(unsafe.Pointer(pA)).FisNull != 0 || (*Decimal)(unsafe.Pointer(pB)).FisNull != 0 {
 14892  		(*Decimal)(unsafe.Pointer(pA)).FisNull = uint8(1)
 14893  		return
 14894  	}
 14895  	nSig = (*Decimal)(unsafe.Pointer(pA)).FnDigit - (*Decimal)(unsafe.Pointer(pA)).FnFrac
 14896  	if nSig != 0 && int32(*(*int8)(unsafe.Pointer((*Decimal)(unsafe.Pointer(pA)).Fa))) == 0 {
 14897  		nSig--
 14898  	}
 14899  	if nSig < (*Decimal)(unsafe.Pointer(pB)).FnDigit-(*Decimal)(unsafe.Pointer(pB)).FnFrac {
 14900  		nSig = (*Decimal)(unsafe.Pointer(pB)).FnDigit - (*Decimal)(unsafe.Pointer(pB)).FnFrac
 14901  	}
 14902  	nFrac = (*Decimal)(unsafe.Pointer(pA)).FnFrac
 14903  	if nFrac < (*Decimal)(unsafe.Pointer(pB)).FnFrac {
 14904  		nFrac = (*Decimal)(unsafe.Pointer(pB)).FnFrac
 14905  	}
 14906  	nDigit = nSig + nFrac + 1
 14907  	decimal_expand(tls, pA, nDigit, nFrac)
 14908  	decimal_expand(tls, pB, nDigit, nFrac)
 14909  	if (*Decimal)(unsafe.Pointer(pA)).Foom != 0 || (*Decimal)(unsafe.Pointer(pB)).Foom != 0 {
 14910  		(*Decimal)(unsafe.Pointer(pA)).Foom = uint8(1)
 14911  	} else {
 14912  		if int32((*Decimal)(unsafe.Pointer(pA)).Fsign) == int32((*Decimal)(unsafe.Pointer(pB)).Fsign) {
 14913  			var carry int32 = 0
 14914  			for i = nDigit - 1; i >= 0; i-- {
 14915  				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
 14916  				if x >= 10 {
 14917  					carry = 1
 14918  					*(*int8)(unsafe.Pointer((*Decimal)(unsafe.Pointer(pA)).Fa + uintptr(i))) = int8(x - 10)
 14919  				} else {
 14920  					carry = 0
 14921  					*(*int8)(unsafe.Pointer((*Decimal)(unsafe.Pointer(pA)).Fa + uintptr(i))) = int8(x)
 14922  				}
 14923  			}
 14924  		} else {
 14925  			var aA uintptr
 14926  			var aB uintptr
 14927  			var borrow int32 = 0
 14928  			rc = libc.Xmemcmp(tls, (*Decimal)(unsafe.Pointer(pA)).Fa, (*Decimal)(unsafe.Pointer(pB)).Fa, uint64(nDigit))
 14929  			if rc < 0 {
 14930  				aA = (*Decimal)(unsafe.Pointer(pB)).Fa
 14931  				aB = (*Decimal)(unsafe.Pointer(pA)).Fa
 14932  				(*Decimal)(unsafe.Pointer(pA)).Fsign = libc.BoolUint8(!((*Decimal)(unsafe.Pointer(pA)).Fsign != 0))
 14933  			} else {
 14934  				aA = (*Decimal)(unsafe.Pointer(pA)).Fa
 14935  				aB = (*Decimal)(unsafe.Pointer(pB)).Fa
 14936  			}
 14937  			for i = nDigit - 1; i >= 0; i-- {
 14938  				var x int32 = int32(*(*int8)(unsafe.Pointer(aA + uintptr(i)))) - int32(*(*int8)(unsafe.Pointer(aB + uintptr(i)))) - borrow
 14939  				if x < 0 {
 14940  					*(*int8)(unsafe.Pointer((*Decimal)(unsafe.Pointer(pA)).Fa + uintptr(i))) = int8(x + 10)
 14941  					borrow = 1
 14942  				} else {
 14943  					*(*int8)(unsafe.Pointer((*Decimal)(unsafe.Pointer(pA)).Fa + uintptr(i))) = int8(x)
 14944  					borrow = 0
 14945  				}
 14946  			}
 14947  		}
 14948  	}
 14949  }
 14950  
 14951  func decimalCollFunc(tls *libc.TLS, notUsed uintptr, nKey1 int32, pKey1 uintptr, nKey2 int32, pKey2 uintptr) int32 {
 14952  	var zA uintptr = pKey1
 14953  	var zB uintptr = pKey2
 14954  	var pA uintptr = decimal_new(tls, uintptr(0), uintptr(0), nKey1, zA)
 14955  	var pB uintptr = decimal_new(tls, uintptr(0), uintptr(0), nKey2, zB)
 14956  	var rc int32
 14957  	_ = notUsed
 14958  	if pA == uintptr(0) || pB == uintptr(0) {
 14959  		rc = 0
 14960  	} else {
 14961  		rc = decimal_cmp(tls, pA, pB)
 14962  	}
 14963  	decimal_free(tls, pA)
 14964  	decimal_free(tls, pB)
 14965  	return rc
 14966  }
 14967  
 14968  func decimalAddFunc(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 14969  	var pA uintptr = decimal_new(tls, context, *(*uintptr)(unsafe.Pointer(argv)), 0, uintptr(0))
 14970  	var pB uintptr = decimal_new(tls, context, *(*uintptr)(unsafe.Pointer(argv + 1*8)), 0, uintptr(0))
 14971  	_ = argc
 14972  	decimal_add(tls, pA, pB)
 14973  	decimal_result(tls, context, pA)
 14974  	decimal_free(tls, pA)
 14975  	decimal_free(tls, pB)
 14976  }
 14977  
 14978  func decimalSubFunc(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 14979  	var pA uintptr = decimal_new(tls, context, *(*uintptr)(unsafe.Pointer(argv)), 0, uintptr(0))
 14980  	var pB uintptr = decimal_new(tls, context, *(*uintptr)(unsafe.Pointer(argv + 1*8)), 0, uintptr(0))
 14981  	_ = argc
 14982  	if pB != 0 {
 14983  		(*Decimal)(unsafe.Pointer(pB)).Fsign = libc.BoolUint8(!((*Decimal)(unsafe.Pointer(pB)).Fsign != 0))
 14984  		decimal_add(tls, pA, pB)
 14985  		decimal_result(tls, context, pA)
 14986  	}
 14987  	decimal_free(tls, pA)
 14988  	decimal_free(tls, pB)
 14989  }
 14990  
 14991  func decimalSumStep(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 14992  	var p uintptr
 14993  	var pArg uintptr
 14994  	_ = argc
 14995  	p = sqlite3.Xsqlite3_aggregate_context(tls, context, int32(unsafe.Sizeof(Decimal{})))
 14996  	if p == uintptr(0) {
 14997  		return
 14998  	}
 14999  	if !(int32((*Decimal)(unsafe.Pointer(p)).FisInit) != 0) {
 15000  		(*Decimal)(unsafe.Pointer(p)).FisInit = uint8(1)
 15001  		(*Decimal)(unsafe.Pointer(p)).Fa = sqlite3.Xsqlite3_malloc(tls, 2)
 15002  		if (*Decimal)(unsafe.Pointer(p)).Fa == uintptr(0) {
 15003  			(*Decimal)(unsafe.Pointer(p)).Foom = uint8(1)
 15004  		} else {
 15005  			*(*int8)(unsafe.Pointer((*Decimal)(unsafe.Pointer(p)).Fa)) = int8(0)
 15006  		}
 15007  		(*Decimal)(unsafe.Pointer(p)).FnDigit = 1
 15008  		(*Decimal)(unsafe.Pointer(p)).FnFrac = 0
 15009  	}
 15010  	if sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(argv))) == SQLITE_NULL {
 15011  		return
 15012  	}
 15013  	pArg = decimal_new(tls, context, *(*uintptr)(unsafe.Pointer(argv)), 0, uintptr(0))
 15014  	decimal_add(tls, p, pArg)
 15015  	decimal_free(tls, pArg)
 15016  }
 15017  
 15018  func decimalSumInverse(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 15019  	var p uintptr
 15020  	var pArg uintptr
 15021  	_ = argc
 15022  	p = sqlite3.Xsqlite3_aggregate_context(tls, context, int32(unsafe.Sizeof(Decimal{})))
 15023  	if p == uintptr(0) {
 15024  		return
 15025  	}
 15026  	if sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(argv))) == SQLITE_NULL {
 15027  		return
 15028  	}
 15029  	pArg = decimal_new(tls, context, *(*uintptr)(unsafe.Pointer(argv)), 0, uintptr(0))
 15030  	if pArg != 0 {
 15031  		(*Decimal)(unsafe.Pointer(pArg)).Fsign = libc.BoolUint8(!((*Decimal)(unsafe.Pointer(pArg)).Fsign != 0))
 15032  	}
 15033  	decimal_add(tls, p, pArg)
 15034  	decimal_free(tls, pArg)
 15035  }
 15036  
 15037  func decimalSumValue(tls *libc.TLS, context uintptr) {
 15038  	var p uintptr = sqlite3.Xsqlite3_aggregate_context(tls, context, 0)
 15039  	if p == uintptr(0) {
 15040  		return
 15041  	}
 15042  	decimal_result(tls, context, p)
 15043  }
 15044  
 15045  func decimalSumFinalize(tls *libc.TLS, context uintptr) {
 15046  	var p uintptr = sqlite3.Xsqlite3_aggregate_context(tls, context, 0)
 15047  	if p == uintptr(0) {
 15048  		return
 15049  	}
 15050  	decimal_result(tls, context, p)
 15051  	decimal_clear(tls, p)
 15052  }
 15053  
 15054  func decimalMulFunc(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 15055  	var pA uintptr
 15056  	var pB uintptr
 15057  	var acc uintptr
 15058  	var i int32
 15059  	var j int32
 15060  	var k int32
 15061  	var minFrac int32
 15062  	var f int8
 15063  	var carry int32
 15064  	var x int32
 15065  	pA = decimal_new(tls, context, *(*uintptr)(unsafe.Pointer(argv)), 0, uintptr(0))
 15066  	pB = decimal_new(tls, context, *(*uintptr)(unsafe.Pointer(argv + 1*8)), 0, uintptr(0))
 15067  	acc = uintptr(0)
 15068  	_ = argc
 15069  	if !(pA == uintptr(0) || (*Decimal)(unsafe.Pointer(pA)).Foom != 0 || (*Decimal)(unsafe.Pointer(pA)).FisNull != 0 ||
 15070  		pB == uintptr(0) || (*Decimal)(unsafe.Pointer(pB)).Foom != 0 || (*Decimal)(unsafe.Pointer(pB)).FisNull != 0) {
 15071  		goto __1
 15072  	}
 15073  	goto mul_end
 15074  __1:
 15075  	;
 15076  	acc = sqlite3.Xsqlite3_malloc64(tls, uint64((*Decimal)(unsafe.Pointer(pA)).FnDigit+(*Decimal)(unsafe.Pointer(pB)).FnDigit+2))
 15077  	if !(acc == uintptr(0)) {
 15078  		goto __2
 15079  	}
 15080  	sqlite3.Xsqlite3_result_error_nomem(tls, context)
 15081  	goto mul_end
 15082  __2:
 15083  	;
 15084  	libc.Xmemset(tls, acc, 0, uint64((*Decimal)(unsafe.Pointer(pA)).FnDigit+(*Decimal)(unsafe.Pointer(pB)).FnDigit+2))
 15085  	minFrac = (*Decimal)(unsafe.Pointer(pA)).FnFrac
 15086  	if !((*Decimal)(unsafe.Pointer(pB)).FnFrac < minFrac) {
 15087  		goto __3
 15088  	}
 15089  	minFrac = (*Decimal)(unsafe.Pointer(pB)).FnFrac
 15090  __3:
 15091  	;
 15092  	i = (*Decimal)(unsafe.Pointer(pA)).FnDigit - 1
 15093  __4:
 15094  	if !(i >= 0) {
 15095  		goto __6
 15096  	}
 15097  	f = *(*int8)(unsafe.Pointer((*Decimal)(unsafe.Pointer(pA)).Fa + uintptr(i)))
 15098  	carry = 0
 15099  	j = (*Decimal)(unsafe.Pointer(pB)).FnDigit - 1
 15100  	k = i + j + 3
 15101  __7:
 15102  	if !(j >= 0) {
 15103  		goto __9
 15104  	}
 15105  	x = int32(*(*int8)(unsafe.Pointer(acc + uintptr(k)))) + int32(f)*int32(*(*int8)(unsafe.Pointer((*Decimal)(unsafe.Pointer(pB)).Fa + uintptr(j)))) + carry
 15106  	*(*int8)(unsafe.Pointer(acc + uintptr(k))) = int8(x % 10)
 15107  	carry = x / 10
 15108  	goto __8
 15109  __8:
 15110  	j--
 15111  	k--
 15112  	goto __7
 15113  	goto __9
 15114  __9:
 15115  	;
 15116  	x = int32(*(*int8)(unsafe.Pointer(acc + uintptr(k)))) + carry
 15117  	*(*int8)(unsafe.Pointer(acc + uintptr(k))) = int8(x % 10)
 15118  	*(*int8)(unsafe.Pointer(acc + uintptr(k-1))) += int8(x / 10)
 15119  	goto __5
 15120  __5:
 15121  	i--
 15122  	goto __4
 15123  	goto __6
 15124  __6:
 15125  	;
 15126  	sqlite3.Xsqlite3_free(tls, (*Decimal)(unsafe.Pointer(pA)).Fa)
 15127  	(*Decimal)(unsafe.Pointer(pA)).Fa = acc
 15128  	acc = uintptr(0)
 15129  	*(*int32)(unsafe.Pointer(pA + 4)) += (*Decimal)(unsafe.Pointer(pB)).FnDigit + 2
 15130  	*(*int32)(unsafe.Pointer(pA + 8)) += (*Decimal)(unsafe.Pointer(pB)).FnFrac
 15131  	*(*uint8)(unsafe.Pointer(pA)) ^= uint8(int32((*Decimal)(unsafe.Pointer(pB)).Fsign))
 15132  __10:
 15133  	if !((*Decimal)(unsafe.Pointer(pA)).FnFrac > minFrac && int32(*(*int8)(unsafe.Pointer((*Decimal)(unsafe.Pointer(pA)).Fa + uintptr((*Decimal)(unsafe.Pointer(pA)).FnDigit-1)))) == 0) {
 15134  		goto __11
 15135  	}
 15136  	(*Decimal)(unsafe.Pointer(pA)).FnFrac--
 15137  	(*Decimal)(unsafe.Pointer(pA)).FnDigit--
 15138  	goto __10
 15139  __11:
 15140  	;
 15141  	decimal_result(tls, context, pA)
 15142  
 15143  mul_end:
 15144  	sqlite3.Xsqlite3_free(tls, acc)
 15145  	decimal_free(tls, pA)
 15146  	decimal_free(tls, pB)
 15147  }
 15148  
 15149  func sqlite3_decimal_init(tls *libc.TLS, db uintptr, pzErrMsg uintptr, pApi uintptr) int32 {
 15150  	var rc int32 = SQLITE_OK
 15151  	var i uint32
 15152  	_ = pzErrMsg
 15153  
 15154  	_ = pApi
 15155  
 15156  	for i = uint32(0); uint64(i) < uint64(unsafe.Sizeof(aFunc))/uint64(unsafe.Sizeof(struct {
 15157  		FzFuncName   uintptr
 15158  		FnArg        int32
 15159  		F__ccgo_pad1 [4]byte
 15160  		FxFunc       uintptr
 15161  	}{})) && rc == SQLITE_OK; i++ {
 15162  		rc = sqlite3.Xsqlite3_create_function(tls, db, aFunc[i].FzFuncName, aFunc[i].FnArg,
 15163  			SQLITE_UTF8|SQLITE_INNOCUOUS|SQLITE_DETERMINISTIC,
 15164  			uintptr(0), aFunc[i].FxFunc, uintptr(0), uintptr(0))
 15165  	}
 15166  	if rc == SQLITE_OK {
 15167  		rc = sqlite3.Xsqlite3_create_window_function(tls, db, ts+4826, 1,
 15168  			SQLITE_UTF8|SQLITE_INNOCUOUS|SQLITE_DETERMINISTIC, uintptr(0),
 15169  			*(*uintptr)(unsafe.Pointer(&struct {
 15170  				f func(*libc.TLS, uintptr, int32, uintptr)
 15171  			}{decimalSumStep})), *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{decimalSumFinalize})),
 15172  			*(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{decimalSumValue})), *(*uintptr)(unsafe.Pointer(&struct {
 15173  				f func(*libc.TLS, uintptr, int32, uintptr)
 15174  			}{decimalSumInverse})), uintptr(0))
 15175  	}
 15176  	if rc == SQLITE_OK {
 15177  		rc = sqlite3.Xsqlite3_create_collation(tls, db, ts+4838, SQLITE_UTF8,
 15178  			uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 15179  				f func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32
 15180  			}{decimalCollFunc})))
 15181  	}
 15182  	return rc
 15183  }
 15184  
 15185  var aFunc = [5]struct {
 15186  	FzFuncName   uintptr
 15187  	FnArg        int32
 15188  	F__ccgo_pad1 [4]byte
 15189  	FxFunc       uintptr
 15190  }{
 15191  	{FzFuncName: ts + 4838, FnArg: 1, FxFunc: 0},
 15192  	{FzFuncName: ts + 4846, FnArg: 2, FxFunc: 0},
 15193  	{FzFuncName: ts + 4858, FnArg: 2, FxFunc: 0},
 15194  	{FzFuncName: ts + 4870, FnArg: 2, FxFunc: 0},
 15195  	{FzFuncName: ts + 4882, FnArg: 2, FxFunc: 0},
 15196  }
 15197  
 15198  type EvalResult = struct {
 15199  	Fz           uintptr
 15200  	FzSep        uintptr
 15201  	FszSep       int32
 15202  	F__ccgo_pad1 [4]byte
 15203  	FnAlloc      sqlite3_int64
 15204  	FnUsed       sqlite3_int64
 15205  }
 15206  
 15207  func callback(tls *libc.TLS, pCtx uintptr, argc int32, argv uintptr, colnames uintptr) int32 {
 15208  	var p uintptr = pCtx
 15209  	var i int32
 15210  	if argv == uintptr(0) {
 15211  		return 0
 15212  	}
 15213  	for i = 0; i < argc; i++ {
 15214  		var z uintptr
 15215  		if *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8)) != 0 {
 15216  			z = *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8))
 15217  		} else {
 15218  			z = ts + 584
 15219  		}
 15220  		var sz size_t = libc.Xstrlen(tls, z)
 15221  		if sqlite3_int64(sz)+(*EvalResult)(unsafe.Pointer(p)).FnUsed+sqlite3_int64((*EvalResult)(unsafe.Pointer(p)).FszSep)+int64(1) > (*EvalResult)(unsafe.Pointer(p)).FnAlloc {
 15222  			var zNew uintptr
 15223  			(*EvalResult)(unsafe.Pointer(p)).FnAlloc = sqlite3_int64(uint64((*EvalResult)(unsafe.Pointer(p)).FnAlloc*int64(2)) + sz + uint64((*EvalResult)(unsafe.Pointer(p)).FszSep) + uint64(1))
 15224  
 15225  			if (*EvalResult)(unsafe.Pointer(p)).FnAlloc <= int64(0x7fffffff) {
 15226  				zNew = sqlite3.Xsqlite3_realloc64(tls, (*EvalResult)(unsafe.Pointer(p)).Fz, uint64((*EvalResult)(unsafe.Pointer(p)).FnAlloc))
 15227  			} else {
 15228  				zNew = uintptr(0)
 15229  			}
 15230  			if zNew == uintptr(0) {
 15231  				sqlite3.Xsqlite3_free(tls, (*EvalResult)(unsafe.Pointer(p)).Fz)
 15232  				libc.Xmemset(tls, p, 0, uint64(unsafe.Sizeof(EvalResult{})))
 15233  				return 1
 15234  			}
 15235  			(*EvalResult)(unsafe.Pointer(p)).Fz = zNew
 15236  		}
 15237  		if (*EvalResult)(unsafe.Pointer(p)).FnUsed > int64(0) {
 15238  			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))
 15239  			*(*sqlite3_int64)(unsafe.Pointer(p + 32)) += sqlite3_int64((*EvalResult)(unsafe.Pointer(p)).FszSep)
 15240  		}
 15241  		libc.Xmemcpy(tls, (*EvalResult)(unsafe.Pointer(p)).Fz+uintptr((*EvalResult)(unsafe.Pointer(p)).FnUsed), z, sz)
 15242  		*(*sqlite3_int64)(unsafe.Pointer(p + 32)) += sqlite3_int64(sz)
 15243  	}
 15244  	return 0
 15245  }
 15246  
 15247  func sqlEvalFunc(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 15248  	bp := tls.Alloc(48)
 15249  	defer tls.Free(48)
 15250  
 15251  	var zSql uintptr
 15252  	var db uintptr
 15253  	*(*uintptr)(unsafe.Pointer(bp + 40)) = uintptr(0)
 15254  	var rc int32
 15255  
 15256  	libc.Xmemset(tls, bp, 0, uint64(unsafe.Sizeof(EvalResult{})))
 15257  	(*EvalResult)(unsafe.Pointer(bp)).FzSep = ts + 4894
 15258  	zSql = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 15259  	if zSql == uintptr(0) {
 15260  		return
 15261  	}
 15262  	if argc > 1 {
 15263  		(*EvalResult)(unsafe.Pointer(bp)).FzSep = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 15264  		if (*EvalResult)(unsafe.Pointer(bp)).FzSep == uintptr(0) {
 15265  			return
 15266  		}
 15267  	}
 15268  	(*EvalResult)(unsafe.Pointer(bp)).FszSep = int32(libc.Xstrlen(tls, (*EvalResult)(unsafe.Pointer(bp)).FzSep))
 15269  	db = sqlite3.Xsqlite3_context_db_handle(tls, context)
 15270  	rc = sqlite3.Xsqlite3_exec(tls, db, zSql, *(*uintptr)(unsafe.Pointer(&struct {
 15271  		f func(*libc.TLS, uintptr, int32, uintptr, uintptr) int32
 15272  	}{callback})), bp, bp+40)
 15273  	if rc != SQLITE_OK {
 15274  		sqlite3.Xsqlite3_result_error(tls, context, *(*uintptr)(unsafe.Pointer(bp + 40)), -1)
 15275  		sqlite3.Xsqlite3_free(tls, *(*uintptr)(unsafe.Pointer(bp + 40)))
 15276  	} else if (*EvalResult)(unsafe.Pointer(bp)).FzSep == uintptr(0) {
 15277  		sqlite3.Xsqlite3_result_error_nomem(tls, context)
 15278  		sqlite3.Xsqlite3_free(tls, (*EvalResult)(unsafe.Pointer(bp)).Fz)
 15279  	} else {
 15280  		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})))
 15281  	}
 15282  }
 15283  
 15284  func sqlite3_eval_init(tls *libc.TLS, db uintptr, pzErrMsg uintptr, pApi uintptr) int32 {
 15285  	var rc int32 = SQLITE_OK
 15286  	_ = pApi
 15287  
 15288  	_ = pzErrMsg
 15289  	rc = sqlite3.Xsqlite3_create_function(tls, db, ts+4896, 1,
 15290  		SQLITE_UTF8|SQLITE_DIRECTONLY, uintptr(0),
 15291  		*(*uintptr)(unsafe.Pointer(&struct {
 15292  			f func(*libc.TLS, uintptr, int32, uintptr)
 15293  		}{sqlEvalFunc})), uintptr(0), uintptr(0))
 15294  	if rc == SQLITE_OK {
 15295  		rc = sqlite3.Xsqlite3_create_function(tls, db, ts+4896, 2,
 15296  			SQLITE_UTF8|SQLITE_DIRECTONLY, uintptr(0),
 15297  			*(*uintptr)(unsafe.Pointer(&struct {
 15298  				f func(*libc.TLS, uintptr, int32, uintptr)
 15299  			}{sqlEvalFunc})), uintptr(0), uintptr(0))
 15300  	}
 15301  	return rc
 15302  }
 15303  
 15304  type explain_vtab1 = struct {
 15305  	Fbase sqlite3_vtab
 15306  	Fdb   uintptr
 15307  }
 15308  
 15309  type explain_vtab = explain_vtab1
 15310  
 15311  type explain_cursor1 = struct {
 15312  	Fbase        sqlite3_vtab_cursor
 15313  	Fdb          uintptr
 15314  	FzSql        uintptr
 15315  	FpExplain    uintptr
 15316  	Frc          int32
 15317  	F__ccgo_pad1 [4]byte
 15318  }
 15319  
 15320  type explain_cursor = explain_cursor1
 15321  
 15322  func explainConnect(tls *libc.TLS, db uintptr, pAux uintptr, argc int32, argv uintptr, ppVtab uintptr, pzErr uintptr) int32 {
 15323  	var pNew uintptr
 15324  	var rc int32
 15325  
 15326  	rc = sqlite3.Xsqlite3_declare_vtab(tls, db,
 15327  		ts+4901)
 15328  	if rc == SQLITE_OK {
 15329  		pNew = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(explain_vtab{})))
 15330  		*(*uintptr)(unsafe.Pointer(ppVtab)) = pNew
 15331  		if pNew == uintptr(0) {
 15332  			return SQLITE_NOMEM
 15333  		}
 15334  		libc.Xmemset(tls, pNew, 0, uint64(unsafe.Sizeof(explain_vtab{})))
 15335  		(*explain_vtab)(unsafe.Pointer(pNew)).Fdb = db
 15336  	}
 15337  	return rc
 15338  }
 15339  
 15340  func explainDisconnect(tls *libc.TLS, pVtab uintptr) int32 {
 15341  	sqlite3.Xsqlite3_free(tls, pVtab)
 15342  	return SQLITE_OK
 15343  }
 15344  
 15345  func explainOpen(tls *libc.TLS, p uintptr, ppCursor uintptr) int32 {
 15346  	var pCur uintptr
 15347  	pCur = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(explain_cursor{})))
 15348  	if pCur == uintptr(0) {
 15349  		return SQLITE_NOMEM
 15350  	}
 15351  	libc.Xmemset(tls, pCur, 0, uint64(unsafe.Sizeof(explain_cursor{})))
 15352  	(*explain_cursor)(unsafe.Pointer(pCur)).Fdb = (*explain_vtab)(unsafe.Pointer(p)).Fdb
 15353  	*(*uintptr)(unsafe.Pointer(ppCursor)) = pCur
 15354  	return SQLITE_OK
 15355  }
 15356  
 15357  func explainClose(tls *libc.TLS, cur uintptr) int32 {
 15358  	var pCur uintptr = cur
 15359  	sqlite3.Xsqlite3_finalize(tls, (*explain_cursor)(unsafe.Pointer(pCur)).FpExplain)
 15360  	sqlite3.Xsqlite3_free(tls, (*explain_cursor)(unsafe.Pointer(pCur)).FzSql)
 15361  	sqlite3.Xsqlite3_free(tls, pCur)
 15362  	return SQLITE_OK
 15363  }
 15364  
 15365  func explainNext(tls *libc.TLS, cur uintptr) int32 {
 15366  	var pCur uintptr = cur
 15367  	(*explain_cursor)(unsafe.Pointer(pCur)).Frc = sqlite3.Xsqlite3_step(tls, (*explain_cursor)(unsafe.Pointer(pCur)).FpExplain)
 15368  	if (*explain_cursor)(unsafe.Pointer(pCur)).Frc != SQLITE_DONE && (*explain_cursor)(unsafe.Pointer(pCur)).Frc != SQLITE_ROW {
 15369  		return (*explain_cursor)(unsafe.Pointer(pCur)).Frc
 15370  	}
 15371  	return SQLITE_OK
 15372  }
 15373  
 15374  func explainColumn(tls *libc.TLS, cur uintptr, ctx uintptr, i int32) int32 {
 15375  	var pCur uintptr = cur
 15376  	if i == EXPLN_COLUMN_SQL {
 15377  		sqlite3.Xsqlite3_result_text(tls, ctx, (*explain_cursor)(unsafe.Pointer(pCur)).FzSql, -1, libc.UintptrFromInt32(-1))
 15378  	} else {
 15379  		sqlite3.Xsqlite3_result_value(tls, ctx, sqlite3.Xsqlite3_column_value(tls, (*explain_cursor)(unsafe.Pointer(pCur)).FpExplain, i))
 15380  	}
 15381  	return SQLITE_OK
 15382  }
 15383  
 15384  func explainRowid(tls *libc.TLS, cur uintptr, pRowid uintptr) int32 {
 15385  	var pCur uintptr = cur
 15386  	*(*sqlite_int64)(unsafe.Pointer(pRowid)) = sqlite3.Xsqlite3_column_int64(tls, (*explain_cursor)(unsafe.Pointer(pCur)).FpExplain, 0)
 15387  	return SQLITE_OK
 15388  }
 15389  
 15390  func explainEof(tls *libc.TLS, cur uintptr) int32 {
 15391  	var pCur uintptr = cur
 15392  	return libc.Bool32((*explain_cursor)(unsafe.Pointer(pCur)).Frc != SQLITE_ROW)
 15393  }
 15394  
 15395  func explainFilter(tls *libc.TLS, pVtabCursor uintptr, idxNum int32, idxStr uintptr, argc int32, argv uintptr) int32 {
 15396  	bp := tls.Alloc(16)
 15397  	defer tls.Free(16)
 15398  
 15399  	var pCur uintptr = pVtabCursor
 15400  	var zSql uintptr = uintptr(0)
 15401  	var rc int32
 15402  	sqlite3.Xsqlite3_finalize(tls, (*explain_cursor)(unsafe.Pointer(pCur)).FpExplain)
 15403  	(*explain_cursor)(unsafe.Pointer(pCur)).FpExplain = uintptr(0)
 15404  	if sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(argv))) != SQLITE_TEXT {
 15405  		(*explain_cursor)(unsafe.Pointer(pCur)).Frc = SQLITE_DONE
 15406  		return SQLITE_OK
 15407  	}
 15408  	sqlite3.Xsqlite3_free(tls, (*explain_cursor)(unsafe.Pointer(pCur)).FzSql)
 15409  	(*explain_cursor)(unsafe.Pointer(pCur)).FzSql = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp, sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))))
 15410  	if (*explain_cursor)(unsafe.Pointer(pCur)).FzSql != 0 {
 15411  		zSql = sqlite3.Xsqlite3_mprintf(tls, ts+4963, libc.VaList(bp+8, (*explain_cursor)(unsafe.Pointer(pCur)).FzSql))
 15412  	}
 15413  	if zSql == uintptr(0) {
 15414  		rc = SQLITE_NOMEM
 15415  	} else {
 15416  		rc = sqlite3.Xsqlite3_prepare_v2(tls, (*explain_cursor)(unsafe.Pointer(pCur)).Fdb, zSql, -1, pCur+24, uintptr(0))
 15417  		sqlite3.Xsqlite3_free(tls, zSql)
 15418  	}
 15419  	if rc != 0 {
 15420  		sqlite3.Xsqlite3_finalize(tls, (*explain_cursor)(unsafe.Pointer(pCur)).FpExplain)
 15421  		(*explain_cursor)(unsafe.Pointer(pCur)).FpExplain = uintptr(0)
 15422  		sqlite3.Xsqlite3_free(tls, (*explain_cursor)(unsafe.Pointer(pCur)).FzSql)
 15423  		(*explain_cursor)(unsafe.Pointer(pCur)).FzSql = uintptr(0)
 15424  	} else {
 15425  		(*explain_cursor)(unsafe.Pointer(pCur)).Frc = sqlite3.Xsqlite3_step(tls, (*explain_cursor)(unsafe.Pointer(pCur)).FpExplain)
 15426  		if (*explain_cursor)(unsafe.Pointer(pCur)).Frc == SQLITE_DONE || (*explain_cursor)(unsafe.Pointer(pCur)).Frc == SQLITE_ROW {
 15427  			rc = SQLITE_OK
 15428  		} else {
 15429  			rc = (*explain_cursor)(unsafe.Pointer(pCur)).Frc
 15430  		}
 15431  	}
 15432  	return rc
 15433  }
 15434  
 15435  func explainBestIndex(tls *libc.TLS, tab uintptr, pIdxInfo uintptr) int32 {
 15436  	var i int32
 15437  	var idx int32 = -1
 15438  	var unusable int32 = 0
 15439  
 15440  	(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedRows = int64(500)
 15441  	for i = 0; i < (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnConstraint; i++ {
 15442  		var p uintptr = (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint + uintptr(i)*12
 15443  		if (*sqlite3_index_constraint)(unsafe.Pointer(p)).FiColumn != EXPLN_COLUMN_SQL {
 15444  			continue
 15445  		}
 15446  		if !(int32((*sqlite3_index_constraint)(unsafe.Pointer(p)).Fusable) != 0) {
 15447  			unusable = 1
 15448  		} else if int32((*sqlite3_index_constraint)(unsafe.Pointer(p)).Fop) == SQLITE_INDEX_CONSTRAINT_EQ {
 15449  			idx = i
 15450  		}
 15451  	}
 15452  	if idx >= 0 {
 15453  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = 10.0
 15454  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxNum = 1
 15455  		(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(idx)*8)).FargvIndex = 1
 15456  		(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(idx)*8)).Fomit = uint8(1)
 15457  	} else if unusable != 0 {
 15458  		return SQLITE_CONSTRAINT
 15459  	}
 15460  	return SQLITE_OK
 15461  }
 15462  
 15463  var explainModule = sqlite3_module{
 15464  	FxConnect:    0,
 15465  	FxBestIndex:  0,
 15466  	FxDisconnect: 0,
 15467  	FxOpen:       0,
 15468  	FxClose:      0,
 15469  	FxFilter:     0,
 15470  	FxNext:       0,
 15471  	FxEof:        0,
 15472  	FxColumn:     0,
 15473  	FxRowid:      0,
 15474  }
 15475  
 15476  func sqlite3ExplainVtabInit(tls *libc.TLS, db uintptr) int32 {
 15477  	var rc int32 = SQLITE_OK
 15478  	rc = sqlite3.Xsqlite3_create_module(tls, db, ts+4974, uintptr(unsafe.Pointer(&explainModule)), uintptr(0))
 15479  	return rc
 15480  }
 15481  
 15482  func sqlite3_explain_init(tls *libc.TLS, db uintptr, pzErrMsg uintptr, pApi uintptr) int32 {
 15483  	var rc int32 = SQLITE_OK
 15484  	_ = pApi
 15485  
 15486  	rc = sqlite3ExplainVtabInit(tls, db)
 15487  	return rc
 15488  }
 15489  
 15490  type flock = struct {
 15491  	Fl_type      int16
 15492  	Fl_whence    int16
 15493  	F__ccgo_pad1 [4]byte
 15494  	Fl_start     int64
 15495  	Fl_len       int64
 15496  	Fl_pid       int32
 15497  	F__ccgo_pad2 [4]byte
 15498  }
 15499  
 15500  type useconds_t = uint32
 15501  
 15502  type intptr_t = int64
 15503  
 15504  type socklen_t = uint32
 15505  
 15506  type dirent = struct {
 15507  	Fd_ino       uint64
 15508  	Fd_off       int64
 15509  	Fd_reclen    uint16
 15510  	Fd_type      uint8
 15511  	Fd_name      [256]uint8
 15512  	F__ccgo_pad1 [5]byte
 15513  }
 15514  
 15515  type timezone = struct {
 15516  	Ftz_minuteswest int32
 15517  	Ftz_dsttime     int32
 15518  }
 15519  
 15520  type itimerval = struct {
 15521  	Fit_interval struct {
 15522  		Ftv_sec  int64
 15523  		Ftv_usec int64
 15524  	}
 15525  	Fit_value struct {
 15526  		Ftv_sec  int64
 15527  		Ftv_usec int64
 15528  	}
 15529  }
 15530  
 15531  type tm = struct {
 15532  	Ftm_sec      int32
 15533  	Ftm_min      int32
 15534  	Ftm_hour     int32
 15535  	Ftm_mday     int32
 15536  	Ftm_mon      int32
 15537  	Ftm_year     int32
 15538  	Ftm_wday     int32
 15539  	Ftm_yday     int32
 15540  	Ftm_isdst    int32
 15541  	F__ccgo_pad1 [4]byte
 15542  	Ftm_gmtoff   int64
 15543  	Ftm_zone     uintptr
 15544  }
 15545  
 15546  type itimerspec = struct {
 15547  	Fit_interval struct {
 15548  		Ftv_sec  int64
 15549  		Ftv_nsec int64
 15550  	}
 15551  	Fit_value struct {
 15552  		Ftv_sec  int64
 15553  		Ftv_nsec int64
 15554  	}
 15555  }
 15556  
 15557  type sigevent = struct {
 15558  	Fsigev_value struct {
 15559  		F__ccgo_pad1 [0]uint64
 15560  		Fsival_int   int32
 15561  		F__ccgo_pad2 [4]byte
 15562  	}
 15563  	Fsigev_signo  int32
 15564  	Fsigev_notify int32
 15565  	F_sigev_un    struct {
 15566  		F__ccgo_pad1 [0]uint64
 15567  		F_pad        [12]int32
 15568  	}
 15569  }
 15570  
 15571  func readFileContents(tls *libc.TLS, ctx uintptr, zName uintptr) {
 15572  	var in uintptr
 15573  	var nIn sqlite3_int64
 15574  	var pBuf uintptr
 15575  	var db uintptr
 15576  	var mxBlob int32
 15577  
 15578  	in = libc.Xfopen(tls, zName, ts+4402)
 15579  	if in == uintptr(0) {
 15580  		return
 15581  	}
 15582  	libc.Xfseek(tls, in, int64(0), SEEK_END)
 15583  	nIn = libc.Xftell(tls, in)
 15584  	libc.Xrewind(tls, in)
 15585  	db = sqlite3.Xsqlite3_context_db_handle(tls, ctx)
 15586  	mxBlob = sqlite3.Xsqlite3_limit(tls, db, SQLITE_LIMIT_LENGTH, -1)
 15587  	if nIn > sqlite3_int64(mxBlob) {
 15588  		sqlite3.Xsqlite3_result_error_code(tls, ctx, SQLITE_TOOBIG)
 15589  		libc.Xfclose(tls, in)
 15590  		return
 15591  	}
 15592  	pBuf = sqlite3.Xsqlite3_malloc64(tls, func() uint64 {
 15593  		if nIn != 0 {
 15594  			return uint64(nIn)
 15595  		}
 15596  		return uint64(1)
 15597  	}())
 15598  	if pBuf == uintptr(0) {
 15599  		sqlite3.Xsqlite3_result_error_nomem(tls, ctx)
 15600  		libc.Xfclose(tls, in)
 15601  		return
 15602  	}
 15603  	if nIn == sqlite3_int64(libc.Xfread(tls, pBuf, uint64(1), size_t(nIn), in)) {
 15604  		sqlite3.Xsqlite3_result_blob64(tls, ctx, pBuf, uint64(nIn), *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{sqlite3.Xsqlite3_free})))
 15605  	} else {
 15606  		sqlite3.Xsqlite3_result_error_code(tls, ctx, SQLITE_IOERR)
 15607  		sqlite3.Xsqlite3_free(tls, pBuf)
 15608  	}
 15609  	libc.Xfclose(tls, in)
 15610  }
 15611  
 15612  func readfileFunc(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 15613  	var zName uintptr
 15614  	_ = argc
 15615  	zName = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 15616  	if zName == uintptr(0) {
 15617  		return
 15618  	}
 15619  	readFileContents(tls, context, zName)
 15620  }
 15621  
 15622  func ctxErrorMsg(tls *libc.TLS, ctx uintptr, zFmt uintptr, va uintptr) {
 15623  	var zMsg uintptr = uintptr(0)
 15624  	var ap va_list
 15625  	_ = ap
 15626  	ap = va
 15627  	zMsg = sqlite3.Xsqlite3_vmprintf(tls, zFmt, ap)
 15628  	sqlite3.Xsqlite3_result_error(tls, ctx, zMsg, -1)
 15629  	sqlite3.Xsqlite3_free(tls, zMsg)
 15630  	_ = ap
 15631  }
 15632  
 15633  func fileStat(tls *libc.TLS, zPath uintptr, pStatBuf uintptr) int32 {
 15634  	return libc.Xstat(tls, zPath, pStatBuf)
 15635  }
 15636  
 15637  func fileLinkStat(tls *libc.TLS, zPath uintptr, pStatBuf uintptr) int32 {
 15638  	return libc.Xlstat(tls, zPath, pStatBuf)
 15639  }
 15640  
 15641  func makeDirectory(tls *libc.TLS, zFile uintptr) int32 {
 15642  	bp := tls.Alloc(152)
 15643  	defer tls.Free(152)
 15644  
 15645  	var zCopy uintptr = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp, zFile))
 15646  	var rc int32 = SQLITE_OK
 15647  
 15648  	if zCopy == uintptr(0) {
 15649  		rc = SQLITE_NOMEM
 15650  	} else {
 15651  		var nCopy int32 = int32(libc.Xstrlen(tls, zCopy))
 15652  		var i int32 = 1
 15653  
 15654  		for rc == SQLITE_OK {
 15655  			var rc2 int32
 15656  
 15657  			for ; int32(*(*uint8)(unsafe.Pointer(zCopy + uintptr(i)))) != '/' && i < nCopy; i++ {
 15658  			}
 15659  			if i == nCopy {
 15660  				break
 15661  			}
 15662  			*(*uint8)(unsafe.Pointer(zCopy + uintptr(i))) = uint8(0)
 15663  
 15664  			rc2 = fileStat(tls, zCopy, bp+8)
 15665  			if rc2 != 0 {
 15666  				if libc.Xmkdir(tls, zCopy, uint32(0777)) != 0 {
 15667  					rc = SQLITE_ERROR
 15668  				}
 15669  			} else {
 15670  				if !((*stat)(unsafe.Pointer(bp+8)).Fst_mode&uint32(0170000) == uint32(0040000)) {
 15671  					rc = SQLITE_ERROR
 15672  				}
 15673  			}
 15674  			*(*uint8)(unsafe.Pointer(zCopy + uintptr(i))) = uint8('/')
 15675  			i++
 15676  		}
 15677  
 15678  		sqlite3.Xsqlite3_free(tls, zCopy)
 15679  	}
 15680  
 15681  	return rc
 15682  }
 15683  
 15684  func writeFile(tls *libc.TLS, pCtx uintptr, zFile uintptr, pData uintptr, mode mode_t, mtime sqlite3_int64) int32 {
 15685  	bp := tls.Alloc(176)
 15686  	defer tls.Free(176)
 15687  
 15688  	if zFile == uintptr(0) {
 15689  		return 1
 15690  	}
 15691  	if mode&mode_t(0170000) == mode_t(0120000) {
 15692  		var zTo uintptr = sqlite3.Xsqlite3_value_text(tls, pData)
 15693  		if zTo == uintptr(0) || libc.Xsymlink(tls, zTo, zFile) < 0 {
 15694  			return 1
 15695  		}
 15696  	} else {
 15697  		if mode&mode_t(0170000) == mode_t(0040000) {
 15698  			if libc.Xmkdir(tls, zFile, mode) != 0 {
 15699  				if *(*int32)(unsafe.Pointer(libc.X__errno_location(tls))) != EEXIST ||
 15700  					0 != fileStat(tls, zFile, bp) ||
 15701  					!((*stat)(unsafe.Pointer(bp)).Fst_mode&uint32(0170000) == uint32(0040000)) ||
 15702  					(*stat)(unsafe.Pointer(bp)).Fst_mode&uint32(0777) != mode&mode_t(0777) && 0 != libc.Xchmod(tls, zFile, mode&mode_t(0777)) {
 15703  					return 1
 15704  				}
 15705  			}
 15706  		} else {
 15707  			var nWrite sqlite3_int64 = int64(0)
 15708  			var z uintptr
 15709  			var rc int32 = 0
 15710  			var out uintptr = libc.Xfopen(tls, zFile, ts+4982)
 15711  			if out == uintptr(0) {
 15712  				return 1
 15713  			}
 15714  			z = sqlite3.Xsqlite3_value_blob(tls, pData)
 15715  			if z != 0 {
 15716  				var n sqlite3_int64 = sqlite3_int64(libc.Xfwrite(tls, z, uint64(1), uint64(sqlite3.Xsqlite3_value_bytes(tls, pData)), out))
 15717  				nWrite = sqlite3_int64(sqlite3.Xsqlite3_value_bytes(tls, pData))
 15718  				if nWrite != n {
 15719  					rc = 1
 15720  				}
 15721  			}
 15722  			libc.Xfclose(tls, out)
 15723  			if rc == 0 && mode != 0 && libc.Xchmod(tls, zFile, mode&mode_t(0777)) != 0 {
 15724  				rc = 1
 15725  			}
 15726  			if rc != 0 {
 15727  				return 2
 15728  			}
 15729  			sqlite3.Xsqlite3_result_int64(tls, pCtx, nWrite)
 15730  		}
 15731  	}
 15732  
 15733  	if mtime >= int64(0) {
 15734  		(*timeval)(unsafe.Pointer(bp + 144)).Ftv_usec = libc.AssignPtrInt64(bp+144+1*16+8, int64(0))
 15735  		(*timeval)(unsafe.Pointer(bp + 144)).Ftv_sec = libc.Xtime(tls, uintptr(0))
 15736  		(*timeval)(unsafe.Pointer(bp + 144 + 1*16)).Ftv_sec = mtime
 15737  		if libc.Xutimes(tls, zFile, bp+144) != 0 {
 15738  			return 1
 15739  		}
 15740  	}
 15741  
 15742  	return 0
 15743  }
 15744  
 15745  func writefileFunc(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 15746  	bp := tls.Alloc(24)
 15747  	defer tls.Free(24)
 15748  
 15749  	var zFile uintptr
 15750  	var mode mode_t = mode_t(0)
 15751  	var res int32
 15752  	var mtime sqlite3_int64 = int64(-1)
 15753  
 15754  	if argc < 2 || argc > 4 {
 15755  		sqlite3.Xsqlite3_result_error(tls, context,
 15756  			ts+4985, -1)
 15757  		return
 15758  	}
 15759  
 15760  	zFile = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 15761  	if zFile == uintptr(0) {
 15762  		return
 15763  	}
 15764  	if argc >= 3 {
 15765  		mode = mode_t(sqlite3.Xsqlite3_value_int(tls, *(*uintptr)(unsafe.Pointer(argv + 2*8))))
 15766  	}
 15767  	if argc == 4 {
 15768  		mtime = sqlite3.Xsqlite3_value_int64(tls, *(*uintptr)(unsafe.Pointer(argv + 3*8)))
 15769  	}
 15770  
 15771  	res = writeFile(tls, context, zFile, *(*uintptr)(unsafe.Pointer(argv + 1*8)), mode, mtime)
 15772  	if res == 1 && *(*int32)(unsafe.Pointer(libc.X__errno_location(tls))) == ENOENT {
 15773  		if makeDirectory(tls, zFile) == SQLITE_OK {
 15774  			res = writeFile(tls, context, zFile, *(*uintptr)(unsafe.Pointer(argv + 1*8)), mode, mtime)
 15775  		}
 15776  	}
 15777  
 15778  	if argc > 2 && res != 0 {
 15779  		if mode&mode_t(0170000) == mode_t(0120000) {
 15780  			ctxErrorMsg(tls, context, ts+5035, libc.VaList(bp, zFile))
 15781  		} else if mode&mode_t(0170000) == mode_t(0040000) {
 15782  			ctxErrorMsg(tls, context, ts+5064, libc.VaList(bp+8, zFile))
 15783  		} else {
 15784  			ctxErrorMsg(tls, context, ts+5095, libc.VaList(bp+16, zFile))
 15785  		}
 15786  	}
 15787  }
 15788  
 15789  func lsModeFunc(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 15790  	bp := tls.Alloc(16)
 15791  	defer tls.Free(16)
 15792  
 15793  	var i int32
 15794  	var iMode int32 = sqlite3.Xsqlite3_value_int(tls, *(*uintptr)(unsafe.Pointer(argv)))
 15795  
 15796  	_ = argc
 15797  	if iMode&0170000 == 0120000 {
 15798  		*(*uint8)(unsafe.Pointer(bp)) = uint8('l')
 15799  	} else if iMode&0170000 == 0100000 {
 15800  		*(*uint8)(unsafe.Pointer(bp)) = uint8('-')
 15801  	} else if iMode&0170000 == 0040000 {
 15802  		*(*uint8)(unsafe.Pointer(bp)) = uint8('d')
 15803  	} else {
 15804  		*(*uint8)(unsafe.Pointer(bp)) = uint8('?')
 15805  	}
 15806  	for i = 0; i < 3; i++ {
 15807  		var m int32 = iMode >> ((2 - i) * 3)
 15808  		var a uintptr = bp + uintptr(1+i*3)
 15809  		*(*uint8)(unsafe.Pointer(a)) = func() uint8 {
 15810  			if m&0x4 != 0 {
 15811  				return uint8('r')
 15812  			}
 15813  			return uint8('-')
 15814  		}()
 15815  		*(*uint8)(unsafe.Pointer(a + 1)) = func() uint8 {
 15816  			if m&0x2 != 0 {
 15817  				return uint8('w')
 15818  			}
 15819  			return uint8('-')
 15820  		}()
 15821  		*(*uint8)(unsafe.Pointer(a + 2)) = func() uint8 {
 15822  			if m&0x1 != 0 {
 15823  				return uint8('x')
 15824  			}
 15825  			return uint8('-')
 15826  		}()
 15827  	}
 15828  	*(*uint8)(unsafe.Pointer(bp + 10)) = uint8(0)
 15829  	sqlite3.Xsqlite3_result_text(tls, context, bp, -1, libc.UintptrFromInt32(-1))
 15830  }
 15831  
 15832  type fsdir_cursor1 = struct {
 15833  	Fbase        sqlite3_vtab_cursor
 15834  	FnLvl        int32
 15835  	FiLvl        int32
 15836  	FaLvl        uintptr
 15837  	FzBase       uintptr
 15838  	FnBase       int32
 15839  	F__ccgo_pad1 [4]byte
 15840  	FsStat       struct {
 15841  		Fst_dev     uint64
 15842  		Fst_ino     uint64
 15843  		Fst_nlink   uint64
 15844  		Fst_mode    uint32
 15845  		Fst_uid     uint32
 15846  		Fst_gid     uint32
 15847  		F__pad2     int32
 15848  		Fst_rdev    uint64
 15849  		Fst_size    int64
 15850  		Fst_blksize int64
 15851  		Fst_blocks  int64
 15852  		Fst_atim    struct {
 15853  			Ftv_sec  int64
 15854  			Ftv_nsec int64
 15855  		}
 15856  		Fst_mtim struct {
 15857  			Ftv_sec  int64
 15858  			Ftv_nsec int64
 15859  		}
 15860  		Fst_ctim struct {
 15861  			Ftv_sec  int64
 15862  			Ftv_nsec int64
 15863  		}
 15864  		F__glibc_reserved4 uint64
 15865  		F__glibc_reserved5 uint64
 15866  		F__glibc_reserved6 uint64
 15867  	}
 15868  	FzPath  uintptr
 15869  	FiRowid sqlite3_int64
 15870  }
 15871  
 15872  type fsdir_cursor = fsdir_cursor1
 15873  type FsdirLevel1 = struct {
 15874  	FpDir uintptr
 15875  	FzDir uintptr
 15876  }
 15877  
 15878  type FsdirLevel = FsdirLevel1
 15879  
 15880  type fsdir_tab1 = struct{ Fbase sqlite3_vtab }
 15881  
 15882  type fsdir_tab = fsdir_tab1
 15883  
 15884  func fsdirConnect(tls *libc.TLS, db uintptr, pAux uintptr, argc int32, argv uintptr, ppVtab uintptr, pzErr uintptr) int32 {
 15885  	var pNew uintptr = uintptr(0)
 15886  	var rc int32
 15887  	_ = pAux
 15888  	_ = argc
 15889  	_ = argv
 15890  	_ = pzErr
 15891  	rc = sqlite3.Xsqlite3_declare_vtab(tls, db, ts+5120)
 15892  	if rc == SQLITE_OK {
 15893  		pNew = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(fsdir_tab{})))
 15894  		if pNew == uintptr(0) {
 15895  			return SQLITE_NOMEM
 15896  		}
 15897  		libc.Xmemset(tls, pNew, 0, uint64(unsafe.Sizeof(fsdir_tab{})))
 15898  		sqlite3.Xsqlite3_vtab_config(tls, db, SQLITE_VTAB_DIRECTONLY, 0)
 15899  	}
 15900  	*(*uintptr)(unsafe.Pointer(ppVtab)) = pNew
 15901  	return rc
 15902  }
 15903  
 15904  func fsdirDisconnect(tls *libc.TLS, pVtab uintptr) int32 {
 15905  	sqlite3.Xsqlite3_free(tls, pVtab)
 15906  	return SQLITE_OK
 15907  }
 15908  
 15909  func fsdirOpen(tls *libc.TLS, p uintptr, ppCursor uintptr) int32 {
 15910  	var pCur uintptr
 15911  	_ = p
 15912  	pCur = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(fsdir_cursor{})))
 15913  	if pCur == uintptr(0) {
 15914  		return SQLITE_NOMEM
 15915  	}
 15916  	libc.Xmemset(tls, pCur, 0, uint64(unsafe.Sizeof(fsdir_cursor{})))
 15917  	(*fsdir_cursor)(unsafe.Pointer(pCur)).FiLvl = -1
 15918  	*(*uintptr)(unsafe.Pointer(ppCursor)) = pCur
 15919  	return SQLITE_OK
 15920  }
 15921  
 15922  func fsdirResetCursor(tls *libc.TLS, pCur uintptr) {
 15923  	var i int32
 15924  	for i = 0; i <= (*fsdir_cursor)(unsafe.Pointer(pCur)).FiLvl; i++ {
 15925  		var pLvl uintptr = (*fsdir_cursor)(unsafe.Pointer(pCur)).FaLvl + uintptr(i)*16
 15926  		if (*FsdirLevel)(unsafe.Pointer(pLvl)).FpDir != 0 {
 15927  			libc.Xclosedir(tls, (*FsdirLevel)(unsafe.Pointer(pLvl)).FpDir)
 15928  		}
 15929  		sqlite3.Xsqlite3_free(tls, (*FsdirLevel)(unsafe.Pointer(pLvl)).FzDir)
 15930  	}
 15931  	sqlite3.Xsqlite3_free(tls, (*fsdir_cursor)(unsafe.Pointer(pCur)).FzPath)
 15932  	sqlite3.Xsqlite3_free(tls, (*fsdir_cursor)(unsafe.Pointer(pCur)).FaLvl)
 15933  	(*fsdir_cursor)(unsafe.Pointer(pCur)).FaLvl = uintptr(0)
 15934  	(*fsdir_cursor)(unsafe.Pointer(pCur)).FzPath = uintptr(0)
 15935  	(*fsdir_cursor)(unsafe.Pointer(pCur)).FzBase = uintptr(0)
 15936  	(*fsdir_cursor)(unsafe.Pointer(pCur)).FnBase = 0
 15937  	(*fsdir_cursor)(unsafe.Pointer(pCur)).FnLvl = 0
 15938  	(*fsdir_cursor)(unsafe.Pointer(pCur)).FiLvl = -1
 15939  	(*fsdir_cursor)(unsafe.Pointer(pCur)).FiRowid = int64(1)
 15940  }
 15941  
 15942  func fsdirClose(tls *libc.TLS, cur uintptr) int32 {
 15943  	var pCur uintptr = cur
 15944  
 15945  	fsdirResetCursor(tls, pCur)
 15946  	sqlite3.Xsqlite3_free(tls, pCur)
 15947  	return SQLITE_OK
 15948  }
 15949  
 15950  func fsdirSetErrmsg(tls *libc.TLS, pCur uintptr, zFmt uintptr, va uintptr) {
 15951  	var ap va_list
 15952  	_ = ap
 15953  	ap = va
 15954  	(*sqlite3_vtab)(unsafe.Pointer((*fsdir_cursor)(unsafe.Pointer(pCur)).Fbase.FpVtab)).FzErrMsg = sqlite3.Xsqlite3_vmprintf(tls, zFmt, ap)
 15955  	_ = ap
 15956  }
 15957  
 15958  func fsdirNext(tls *libc.TLS, cur uintptr) int32 {
 15959  	bp := tls.Alloc(32)
 15960  	defer tls.Free(32)
 15961  
 15962  	var pCur uintptr = cur
 15963  	var m mode_t = (*fsdir_cursor)(unsafe.Pointer(pCur)).FsStat.Fst_mode
 15964  
 15965  	(*fsdir_cursor)(unsafe.Pointer(pCur)).FiRowid++
 15966  	if m&mode_t(0170000) == mode_t(0040000) {
 15967  		var iNew int32 = (*fsdir_cursor)(unsafe.Pointer(pCur)).FiLvl + 1
 15968  		var pLvl uintptr
 15969  		if iNew >= (*fsdir_cursor)(unsafe.Pointer(pCur)).FnLvl {
 15970  			var nNew int32 = iNew + 1
 15971  			var nByte sqlite3_int64 = sqlite3_int64(uint64(nNew) * uint64(unsafe.Sizeof(FsdirLevel{})))
 15972  			var aNew uintptr = sqlite3.Xsqlite3_realloc64(tls, (*fsdir_cursor)(unsafe.Pointer(pCur)).FaLvl, uint64(nByte))
 15973  			if aNew == uintptr(0) {
 15974  				return SQLITE_NOMEM
 15975  			}
 15976  			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))
 15977  			(*fsdir_cursor)(unsafe.Pointer(pCur)).FaLvl = aNew
 15978  			(*fsdir_cursor)(unsafe.Pointer(pCur)).FnLvl = nNew
 15979  		}
 15980  		(*fsdir_cursor)(unsafe.Pointer(pCur)).FiLvl = iNew
 15981  		pLvl = (*fsdir_cursor)(unsafe.Pointer(pCur)).FaLvl + uintptr(iNew)*16
 15982  
 15983  		(*FsdirLevel)(unsafe.Pointer(pLvl)).FzDir = (*fsdir_cursor)(unsafe.Pointer(pCur)).FzPath
 15984  		(*fsdir_cursor)(unsafe.Pointer(pCur)).FzPath = uintptr(0)
 15985  		(*FsdirLevel)(unsafe.Pointer(pLvl)).FpDir = libc.Xopendir(tls, (*FsdirLevel)(unsafe.Pointer(pLvl)).FzDir)
 15986  		if (*FsdirLevel)(unsafe.Pointer(pLvl)).FpDir == uintptr(0) {
 15987  			fsdirSetErrmsg(tls, pCur, ts+5180, libc.VaList(bp, (*fsdir_cursor)(unsafe.Pointer(pCur)).FzPath))
 15988  			return SQLITE_ERROR
 15989  		}
 15990  	}
 15991  
 15992  	for (*fsdir_cursor)(unsafe.Pointer(pCur)).FiLvl >= 0 {
 15993  		var pLvl uintptr = (*fsdir_cursor)(unsafe.Pointer(pCur)).FaLvl + uintptr((*fsdir_cursor)(unsafe.Pointer(pCur)).FiLvl)*16
 15994  		var pEntry uintptr = libc.Xreaddir(tls, (*FsdirLevel)(unsafe.Pointer(pLvl)).FpDir)
 15995  		if pEntry != 0 {
 15996  			if int32(*(*uint8)(unsafe.Pointer(pEntry + 19))) == '.' {
 15997  				if int32(*(*uint8)(unsafe.Pointer(pEntry + 19 + 1))) == '.' && int32(*(*uint8)(unsafe.Pointer(pEntry + 19 + 2))) == 0 {
 15998  					continue
 15999  				}
 16000  				if int32(*(*uint8)(unsafe.Pointer(pEntry + 19 + 1))) == 0 {
 16001  					continue
 16002  				}
 16003  			}
 16004  			sqlite3.Xsqlite3_free(tls, (*fsdir_cursor)(unsafe.Pointer(pCur)).FzPath)
 16005  			(*fsdir_cursor)(unsafe.Pointer(pCur)).FzPath = sqlite3.Xsqlite3_mprintf(tls, ts+5206, libc.VaList(bp+8, (*FsdirLevel)(unsafe.Pointer(pLvl)).FzDir, pEntry+19))
 16006  			if (*fsdir_cursor)(unsafe.Pointer(pCur)).FzPath == uintptr(0) {
 16007  				return SQLITE_NOMEM
 16008  			}
 16009  			if fileLinkStat(tls, (*fsdir_cursor)(unsafe.Pointer(pCur)).FzPath, pCur+40) != 0 {
 16010  				fsdirSetErrmsg(tls, pCur, ts+5212, libc.VaList(bp+24, (*fsdir_cursor)(unsafe.Pointer(pCur)).FzPath))
 16011  				return SQLITE_ERROR
 16012  			}
 16013  			return SQLITE_OK
 16014  		}
 16015  		libc.Xclosedir(tls, (*FsdirLevel)(unsafe.Pointer(pLvl)).FpDir)
 16016  		sqlite3.Xsqlite3_free(tls, (*FsdirLevel)(unsafe.Pointer(pLvl)).FzDir)
 16017  		(*FsdirLevel)(unsafe.Pointer(pLvl)).FpDir = uintptr(0)
 16018  		(*FsdirLevel)(unsafe.Pointer(pLvl)).FzDir = uintptr(0)
 16019  		(*fsdir_cursor)(unsafe.Pointer(pCur)).FiLvl--
 16020  	}
 16021  
 16022  	sqlite3.Xsqlite3_free(tls, (*fsdir_cursor)(unsafe.Pointer(pCur)).FzPath)
 16023  	(*fsdir_cursor)(unsafe.Pointer(pCur)).FzPath = uintptr(0)
 16024  	return SQLITE_OK
 16025  }
 16026  
 16027  func fsdirColumn(tls *libc.TLS, cur uintptr, ctx uintptr, i int32) int32 {
 16028  	bp := tls.Alloc(64)
 16029  	defer tls.Free(64)
 16030  
 16031  	var pCur uintptr = cur
 16032  	switch i {
 16033  	case FSDIR_COLUMN_NAME:
 16034  		{
 16035  			sqlite3.Xsqlite3_result_text(tls, ctx, (*fsdir_cursor)(unsafe.Pointer(pCur)).FzPath+uintptr((*fsdir_cursor)(unsafe.Pointer(pCur)).FnBase), -1, libc.UintptrFromInt32(-1))
 16036  			break
 16037  
 16038  		}
 16039  
 16040  	case FSDIR_COLUMN_MODE:
 16041  		sqlite3.Xsqlite3_result_int64(tls, ctx, int64((*fsdir_cursor)(unsafe.Pointer(pCur)).FsStat.Fst_mode))
 16042  		break
 16043  
 16044  	case FSDIR_COLUMN_MTIME:
 16045  		sqlite3.Xsqlite3_result_int64(tls, ctx, (*fsdir_cursor)(unsafe.Pointer(pCur)).FsStat.Fst_mtim.Ftv_sec)
 16046  		break
 16047  
 16048  	case FSDIR_COLUMN_DATA:
 16049  		{
 16050  			var m mode_t = (*fsdir_cursor)(unsafe.Pointer(pCur)).FsStat.Fst_mode
 16051  			if m&mode_t(0170000) == mode_t(0040000) {
 16052  				sqlite3.Xsqlite3_result_null(tls, ctx)
 16053  			} else if m&mode_t(0170000) == mode_t(0120000) {
 16054  				var aBuf uintptr = bp
 16055  				var nBuf sqlite3_int64 = int64(64)
 16056  				var n int32
 16057  
 16058  				for 1 != 0 {
 16059  					n = int32(libc.Xreadlink(tls, (*fsdir_cursor)(unsafe.Pointer(pCur)).FzPath, aBuf, uint64(nBuf)))
 16060  					if sqlite3_int64(n) < nBuf {
 16061  						break
 16062  					}
 16063  					if aBuf != bp {
 16064  						sqlite3.Xsqlite3_free(tls, aBuf)
 16065  					}
 16066  					nBuf = nBuf * int64(2)
 16067  					aBuf = sqlite3.Xsqlite3_malloc64(tls, uint64(nBuf))
 16068  					if aBuf == uintptr(0) {
 16069  						sqlite3.Xsqlite3_result_error_nomem(tls, ctx)
 16070  						return SQLITE_NOMEM
 16071  					}
 16072  				}
 16073  
 16074  				sqlite3.Xsqlite3_result_text(tls, ctx, aBuf, n, libc.UintptrFromInt32(-1))
 16075  				if aBuf != bp {
 16076  					sqlite3.Xsqlite3_free(tls, aBuf)
 16077  				}
 16078  			} else {
 16079  				readFileContents(tls, ctx, (*fsdir_cursor)(unsafe.Pointer(pCur)).FzPath)
 16080  			}
 16081  
 16082  		}
 16083  		fallthrough
 16084  	case FSDIR_COLUMN_PATH:
 16085  		fallthrough
 16086  	default:
 16087  		{
 16088  			break
 16089  
 16090  		}
 16091  	}
 16092  	return SQLITE_OK
 16093  }
 16094  
 16095  func fsdirRowid(tls *libc.TLS, cur uintptr, pRowid uintptr) int32 {
 16096  	var pCur uintptr = cur
 16097  	*(*sqlite_int64)(unsafe.Pointer(pRowid)) = (*fsdir_cursor)(unsafe.Pointer(pCur)).FiRowid
 16098  	return SQLITE_OK
 16099  }
 16100  
 16101  func fsdirEof(tls *libc.TLS, cur uintptr) int32 {
 16102  	var pCur uintptr = cur
 16103  	return libc.Bool32((*fsdir_cursor)(unsafe.Pointer(pCur)).FzPath == uintptr(0))
 16104  }
 16105  
 16106  func fsdirFilter(tls *libc.TLS, cur uintptr, idxNum int32, idxStr uintptr, argc int32, argv uintptr) int32 {
 16107  	bp := tls.Alloc(32)
 16108  	defer tls.Free(32)
 16109  
 16110  	var zDir uintptr = uintptr(0)
 16111  	var pCur uintptr = cur
 16112  	_ = idxStr
 16113  	fsdirResetCursor(tls, pCur)
 16114  
 16115  	if idxNum == 0 {
 16116  		fsdirSetErrmsg(tls, pCur, ts+5233, 0)
 16117  		return SQLITE_ERROR
 16118  	}
 16119  
 16120  	zDir = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 16121  	if zDir == uintptr(0) {
 16122  		fsdirSetErrmsg(tls, pCur, ts+5275, 0)
 16123  		return SQLITE_ERROR
 16124  	}
 16125  	if argc == 2 {
 16126  		(*fsdir_cursor)(unsafe.Pointer(pCur)).FzBase = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 16127  	}
 16128  	if (*fsdir_cursor)(unsafe.Pointer(pCur)).FzBase != 0 {
 16129  		(*fsdir_cursor)(unsafe.Pointer(pCur)).FnBase = int32(libc.Xstrlen(tls, (*fsdir_cursor)(unsafe.Pointer(pCur)).FzBase)) + 1
 16130  		(*fsdir_cursor)(unsafe.Pointer(pCur)).FzPath = sqlite3.Xsqlite3_mprintf(tls, ts+5206, libc.VaList(bp, (*fsdir_cursor)(unsafe.Pointer(pCur)).FzBase, zDir))
 16131  	} else {
 16132  		(*fsdir_cursor)(unsafe.Pointer(pCur)).FzPath = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp+16, zDir))
 16133  	}
 16134  
 16135  	if (*fsdir_cursor)(unsafe.Pointer(pCur)).FzPath == uintptr(0) {
 16136  		return SQLITE_NOMEM
 16137  	}
 16138  	if fileLinkStat(tls, (*fsdir_cursor)(unsafe.Pointer(pCur)).FzPath, pCur+40) != 0 {
 16139  		fsdirSetErrmsg(tls, pCur, ts+5212, libc.VaList(bp+24, (*fsdir_cursor)(unsafe.Pointer(pCur)).FzPath))
 16140  		return SQLITE_ERROR
 16141  	}
 16142  
 16143  	return SQLITE_OK
 16144  }
 16145  
 16146  func fsdirBestIndex(tls *libc.TLS, tab uintptr, pIdxInfo uintptr) int32 {
 16147  	var i int32
 16148  	var idxPath int32 = -1
 16149  	var idxDir int32 = -1
 16150  	var seenPath int32 = 0
 16151  	var seenDir int32 = 0
 16152  	var pConstraint uintptr
 16153  
 16154  	_ = tab
 16155  	pConstraint = (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint
 16156  	i = 0
 16157  __1:
 16158  	if !(i < (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnConstraint) {
 16159  		goto __3
 16160  	}
 16161  	{
 16162  		if int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) != SQLITE_INDEX_CONSTRAINT_EQ {
 16163  			goto __2
 16164  		}
 16165  		switch (*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).FiColumn {
 16166  		case FSDIR_COLUMN_PATH:
 16167  			{
 16168  				if (*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fusable != 0 {
 16169  					idxPath = i
 16170  					seenPath = 0
 16171  				} else if idxPath < 0 {
 16172  					seenPath = 1
 16173  				}
 16174  				break
 16175  
 16176  			}
 16177  		case FSDIR_COLUMN_DIR:
 16178  			{
 16179  				if (*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fusable != 0 {
 16180  					idxDir = i
 16181  					seenDir = 0
 16182  				} else if idxDir < 0 {
 16183  					seenDir = 1
 16184  				}
 16185  				break
 16186  
 16187  			}
 16188  		}
 16189  
 16190  	}
 16191  	goto __2
 16192  __2:
 16193  	i++
 16194  	pConstraint += 12
 16195  	goto __1
 16196  	goto __3
 16197  __3:
 16198  	;
 16199  	if seenPath != 0 || seenDir != 0 {
 16200  		return SQLITE_CONSTRAINT
 16201  	}
 16202  
 16203  	if idxPath < 0 {
 16204  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxNum = 0
 16205  
 16206  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedRows = int64(0x7fffffff)
 16207  	} else {
 16208  		(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(idxPath)*8)).Fomit = uint8(1)
 16209  		(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(idxPath)*8)).FargvIndex = 1
 16210  		if idxDir >= 0 {
 16211  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(idxDir)*8)).Fomit = uint8(1)
 16212  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(idxDir)*8)).FargvIndex = 2
 16213  			(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxNum = 2
 16214  			(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = 10.0
 16215  		} else {
 16216  			(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxNum = 1
 16217  			(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = 100.0
 16218  		}
 16219  	}
 16220  
 16221  	return SQLITE_OK
 16222  }
 16223  
 16224  func fsdirRegister(tls *libc.TLS, db uintptr) int32 {
 16225  	var rc int32 = sqlite3.Xsqlite3_create_module(tls, db, ts+5325, uintptr(unsafe.Pointer(&fsdirModule1)), uintptr(0))
 16226  	return rc
 16227  }
 16228  
 16229  var fsdirModule1 = sqlite3_module{
 16230  	FxConnect:    0,
 16231  	FxBestIndex:  0,
 16232  	FxDisconnect: 0,
 16233  	FxOpen:       0,
 16234  	FxClose:      0,
 16235  	FxFilter:     0,
 16236  	FxNext:       0,
 16237  	FxEof:        0,
 16238  	FxColumn:     0,
 16239  	FxRowid:      0,
 16240  }
 16241  
 16242  func sqlite3_fileio_init(tls *libc.TLS, db uintptr, pzErrMsg uintptr, pApi uintptr) int32 {
 16243  	var rc int32 = SQLITE_OK
 16244  	_ = pApi
 16245  
 16246  	_ = pzErrMsg
 16247  	rc = sqlite3.Xsqlite3_create_function(tls, db, ts+5331, 1,
 16248  		SQLITE_UTF8|SQLITE_DIRECTONLY, uintptr(0),
 16249  		*(*uintptr)(unsafe.Pointer(&struct {
 16250  			f func(*libc.TLS, uintptr, int32, uintptr)
 16251  		}{readfileFunc})), uintptr(0), uintptr(0))
 16252  	if rc == SQLITE_OK {
 16253  		rc = sqlite3.Xsqlite3_create_function(tls, db, ts+5340, -1,
 16254  			SQLITE_UTF8|SQLITE_DIRECTONLY, uintptr(0),
 16255  			*(*uintptr)(unsafe.Pointer(&struct {
 16256  				f func(*libc.TLS, uintptr, int32, uintptr)
 16257  			}{writefileFunc})), uintptr(0), uintptr(0))
 16258  	}
 16259  	if rc == SQLITE_OK {
 16260  		rc = sqlite3.Xsqlite3_create_function(tls, db, ts+5350, 1, SQLITE_UTF8, uintptr(0),
 16261  			*(*uintptr)(unsafe.Pointer(&struct {
 16262  				f func(*libc.TLS, uintptr, int32, uintptr)
 16263  			}{lsModeFunc})), uintptr(0), uintptr(0))
 16264  	}
 16265  	if rc == SQLITE_OK {
 16266  		rc = fsdirRegister(tls, db)
 16267  	}
 16268  	return rc
 16269  }
 16270  
 16271  type fuzzer_vtab1 = struct {
 16272  	Fbase        sqlite3_vtab
 16273  	FzClassName  uintptr
 16274  	FpRule       uintptr
 16275  	FnCursor     int32
 16276  	F__ccgo_pad1 [4]byte
 16277  }
 16278  
 16279  type fuzzer_vtab = fuzzer_vtab1
 16280  type fuzzer_cursor1 = struct {
 16281  	Fbase        sqlite3_vtab_cursor
 16282  	FiRowid      sqlite3_int64
 16283  	FpVtab       uintptr
 16284  	FrLimit      fuzzer_cost
 16285  	F__ccgo_pad1 [4]byte
 16286  	FpStem       uintptr
 16287  	FpDone       uintptr
 16288  	FaQueue      [20]uintptr
 16289  	FmxQueue     int32
 16290  	F__ccgo_pad2 [4]byte
 16291  	FzBuf        uintptr
 16292  	FnBuf        int32
 16293  	FnStem       int32
 16294  	FiRuleset    int32
 16295  	F__ccgo_pad3 [4]byte
 16296  	FnullRule    fuzzer_rule
 16297  	FapHash      [4001]uintptr
 16298  }
 16299  
 16300  type fuzzer_cursor = fuzzer_cursor1
 16301  type fuzzer_rule1 = struct {
 16302  	FpNext       uintptr
 16303  	FzFrom       uintptr
 16304  	FrCost       fuzzer_cost
 16305  	FnFrom       fuzzer_len
 16306  	FnTo         fuzzer_len
 16307  	F__ccgo_pad1 [2]byte
 16308  	FiRuleset    fuzzer_ruleid
 16309  	FzTo         [4]uint8
 16310  }
 16311  
 16312  type fuzzer_rule = fuzzer_rule1
 16313  type fuzzer_stem1 = struct {
 16314  	FzBasis      uintptr
 16315  	FpRule       uintptr
 16316  	FpNext       uintptr
 16317  	FpHash       uintptr
 16318  	FrBaseCost   fuzzer_cost
 16319  	FrCostX      fuzzer_cost
 16320  	FnBasis      fuzzer_len
 16321  	Fn           fuzzer_len
 16322  	F__ccgo_pad1 [6]byte
 16323  }
 16324  
 16325  type fuzzer_stem = fuzzer_stem1
 16326  
 16327  type fuzzer_cost = int32
 16328  type fuzzer_len = int8
 16329  type fuzzer_ruleid = int32
 16330  
 16331  func fuzzerMergeRules(tls *libc.TLS, pA uintptr, pB uintptr) uintptr {
 16332  	bp := tls.Alloc(32)
 16333  	defer tls.Free(32)
 16334  
 16335  	var pTail uintptr
 16336  
 16337  	pTail = bp
 16338  	for pA != 0 && pB != 0 {
 16339  		if (*fuzzer_rule)(unsafe.Pointer(pA)).FrCost <= (*fuzzer_rule)(unsafe.Pointer(pB)).FrCost {
 16340  			(*fuzzer_rule)(unsafe.Pointer(pTail)).FpNext = pA
 16341  			pTail = pA
 16342  			pA = (*fuzzer_rule)(unsafe.Pointer(pA)).FpNext
 16343  		} else {
 16344  			(*fuzzer_rule)(unsafe.Pointer(pTail)).FpNext = pB
 16345  			pTail = pB
 16346  			pB = (*fuzzer_rule)(unsafe.Pointer(pB)).FpNext
 16347  		}
 16348  	}
 16349  	if pA == uintptr(0) {
 16350  		(*fuzzer_rule)(unsafe.Pointer(pTail)).FpNext = pB
 16351  	} else {
 16352  		(*fuzzer_rule)(unsafe.Pointer(pTail)).FpNext = pA
 16353  	}
 16354  	return (*fuzzer_rule)(unsafe.Pointer(bp)).FpNext
 16355  }
 16356  
 16357  func fuzzerLoadOneRule(tls *libc.TLS, p uintptr, pStmt uintptr, ppRule uintptr, pzErr uintptr) int32 {
 16358  	bp := tls.Alloc(48)
 16359  	defer tls.Free(48)
 16360  
 16361  	var iRuleset sqlite3_int64 = sqlite3.Xsqlite3_column_int64(tls, pStmt, 0)
 16362  	var zFrom uintptr = sqlite3.Xsqlite3_column_text(tls, pStmt, 1)
 16363  	var zTo uintptr = sqlite3.Xsqlite3_column_text(tls, pStmt, 2)
 16364  	var nCost int32 = sqlite3.Xsqlite3_column_int(tls, pStmt, 3)
 16365  
 16366  	var rc int32 = SQLITE_OK
 16367  	var nFrom int32
 16368  	var nTo int32
 16369  	var pRule uintptr = uintptr(0)
 16370  
 16371  	if zFrom == uintptr(0) {
 16372  		zFrom = ts + 584
 16373  	}
 16374  	if zTo == uintptr(0) {
 16375  		zTo = ts + 584
 16376  	}
 16377  	nFrom = int32(libc.Xstrlen(tls, zFrom))
 16378  	nTo = int32(libc.Xstrlen(tls, zTo))
 16379  
 16380  	if libc.Xstrcmp(tls, zFrom, zTo) == 0 {
 16381  		*(*uintptr)(unsafe.Pointer(ppRule)) = uintptr(0)
 16382  		return SQLITE_OK
 16383  	}
 16384  
 16385  	if nCost <= 0 || nCost > FUZZER_MX_COST {
 16386  		*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+3304,
 16387  			libc.VaList(bp, (*fuzzer_vtab)(unsafe.Pointer(p)).FzClassName, FUZZER_MX_COST))
 16388  		rc = SQLITE_ERROR
 16389  	} else if nFrom > FUZZER_MX_LENGTH || nTo > FUZZER_MX_LENGTH {
 16390  		*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+3338,
 16391  			libc.VaList(bp+16, (*fuzzer_vtab)(unsafe.Pointer(p)).FzClassName, FUZZER_MX_LENGTH))
 16392  		rc = SQLITE_ERROR
 16393  	} else if iRuleset < int64(0) || iRuleset > int64(FUZZER_MX_RULEID) {
 16394  		*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+5357,
 16395  			libc.VaList(bp+32, (*fuzzer_vtab)(unsafe.Pointer(p)).FzClassName, FUZZER_MX_RULEID))
 16396  		rc = SQLITE_ERROR
 16397  	} else {
 16398  		pRule = sqlite3.Xsqlite3_malloc64(tls, uint64(unsafe.Sizeof(fuzzer_rule{}))+uint64(nFrom)+uint64(nTo))
 16399  		if pRule == uintptr(0) {
 16400  			rc = SQLITE_NOMEM
 16401  		} else {
 16402  			libc.Xmemset(tls, pRule, 0, uint64(unsafe.Sizeof(fuzzer_rule{})))
 16403  			(*fuzzer_rule)(unsafe.Pointer(pRule)).FzFrom = pRule + 28
 16404  			*(*uintptr)(unsafe.Pointer(pRule + 8)) += uintptr(nTo + 1)
 16405  			(*fuzzer_rule)(unsafe.Pointer(pRule)).FnFrom = fuzzer_len(nFrom)
 16406  			libc.Xmemcpy(tls, (*fuzzer_rule)(unsafe.Pointer(pRule)).FzFrom, zFrom, uint64(nFrom+1))
 16407  			libc.Xmemcpy(tls, pRule+28, zTo, uint64(nTo+1))
 16408  			(*fuzzer_rule)(unsafe.Pointer(pRule)).FnTo = fuzzer_len(nTo)
 16409  			(*fuzzer_rule)(unsafe.Pointer(pRule)).FrCost = nCost
 16410  			(*fuzzer_rule)(unsafe.Pointer(pRule)).FiRuleset = int32(iRuleset)
 16411  		}
 16412  	}
 16413  
 16414  	*(*uintptr)(unsafe.Pointer(ppRule)) = pRule
 16415  	return rc
 16416  }
 16417  
 16418  func fuzzerLoadRules(tls *libc.TLS, db uintptr, p uintptr, zDb uintptr, zData uintptr, pzErr uintptr) int32 {
 16419  	bp := tls.Alloc(192)
 16420  	defer tls.Free(192)
 16421  
 16422  	var rc int32 = SQLITE_OK
 16423  	var zSql uintptr
 16424  	var pHead uintptr = uintptr(0)
 16425  
 16426  	zSql = sqlite3.Xsqlite3_mprintf(tls, ts+3407, libc.VaList(bp, zDb, zData))
 16427  	if zSql == uintptr(0) {
 16428  		rc = SQLITE_NOMEM
 16429  	} else {
 16430  		var rc2 int32
 16431  		*(*uintptr)(unsafe.Pointer(bp + 56)) = uintptr(0)
 16432  		rc = sqlite3.Xsqlite3_prepare_v2(tls, db, zSql, -1, bp+56, uintptr(0))
 16433  		if rc != SQLITE_OK {
 16434  			*(*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)))
 16435  		} else if sqlite3.Xsqlite3_column_count(tls, *(*uintptr)(unsafe.Pointer(bp + 56))) != 4 {
 16436  			*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+3434,
 16437  				libc.VaList(bp+32, (*fuzzer_vtab)(unsafe.Pointer(p)).FzClassName, zData, sqlite3.Xsqlite3_column_count(tls, *(*uintptr)(unsafe.Pointer(bp + 56)))))
 16438  			rc = SQLITE_ERROR
 16439  		} else {
 16440  			for rc == SQLITE_OK && SQLITE_ROW == sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp + 56))) {
 16441  				*(*uintptr)(unsafe.Pointer(bp + 64)) = uintptr(0)
 16442  				rc = fuzzerLoadOneRule(tls, p, *(*uintptr)(unsafe.Pointer(bp + 56)), bp+64, pzErr)
 16443  				if *(*uintptr)(unsafe.Pointer(bp + 64)) != 0 {
 16444  					(*fuzzer_rule)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 64)))).FpNext = pHead
 16445  					pHead = *(*uintptr)(unsafe.Pointer(bp + 64))
 16446  				}
 16447  			}
 16448  		}
 16449  		rc2 = sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 56)))
 16450  		if rc == SQLITE_OK {
 16451  			rc = rc2
 16452  		}
 16453  	}
 16454  	sqlite3.Xsqlite3_free(tls, zSql)
 16455  
 16456  	if rc == SQLITE_OK {
 16457  		var i uint32
 16458  		var pX uintptr
 16459  
 16460  		for i = uint32(0); uint64(i) < uint64(unsafe.Sizeof([15]uintptr{}))/uint64(unsafe.Sizeof(uintptr(0))); i++ {
 16461  			*(*uintptr)(unsafe.Pointer(bp + 72 + uintptr(i)*8)) = uintptr(0)
 16462  		}
 16463  		for libc.AssignUintptr(&pX, pHead) != uintptr(0) {
 16464  			pHead = (*fuzzer_rule)(unsafe.Pointer(pX)).FpNext
 16465  			(*fuzzer_rule)(unsafe.Pointer(pX)).FpNext = uintptr(0)
 16466  			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++ {
 16467  				pX = fuzzerMergeRules(tls, *(*uintptr)(unsafe.Pointer(bp + 72 + uintptr(i)*8)), pX)
 16468  				*(*uintptr)(unsafe.Pointer(bp + 72 + uintptr(i)*8)) = uintptr(0)
 16469  			}
 16470  			*(*uintptr)(unsafe.Pointer(bp + 72 + uintptr(i)*8)) = fuzzerMergeRules(tls, *(*uintptr)(unsafe.Pointer(bp + 72 + uintptr(i)*8)), pX)
 16471  		}
 16472  		pX = *(*uintptr)(unsafe.Pointer(bp + 72))
 16473  		i = uint32(1)
 16474  		for ; uint64(i) < uint64(unsafe.Sizeof([15]uintptr{}))/uint64(unsafe.Sizeof(uintptr(0))); i++ {
 16475  			pX = fuzzerMergeRules(tls, *(*uintptr)(unsafe.Pointer(bp + 72 + uintptr(i)*8)), pX)
 16476  		}
 16477  		(*fuzzer_vtab)(unsafe.Pointer(p)).FpRule = fuzzerMergeRules(tls, (*fuzzer_vtab)(unsafe.Pointer(p)).FpRule, pX)
 16478  	} else {
 16479  		(*fuzzer_vtab)(unsafe.Pointer(p)).FpRule = pHead
 16480  	}
 16481  
 16482  	return rc
 16483  }
 16484  
 16485  func fuzzerDequote(tls *libc.TLS, zIn uintptr) uintptr {
 16486  	var nIn sqlite3_int64
 16487  	var zOut uintptr
 16488  
 16489  	nIn = sqlite3_int64(libc.Xstrlen(tls, zIn))
 16490  	zOut = sqlite3.Xsqlite3_malloc64(tls, uint64(nIn+int64(1)))
 16491  	if zOut != 0 {
 16492  		var q uint8 = *(*uint8)(unsafe.Pointer(zIn))
 16493  
 16494  		if int32(q) != '[' && int32(q) != '\'' && int32(q) != '"' && int32(q) != '`' {
 16495  			libc.Xmemcpy(tls, zOut, zIn, size_t(nIn+int64(1)))
 16496  		} else {
 16497  			var iOut int32 = 0
 16498  			var iIn int32
 16499  
 16500  			if int32(q) == '[' {
 16501  				q = uint8(']')
 16502  			}
 16503  			for iIn = 1; sqlite3_int64(iIn) < nIn; iIn++ {
 16504  				if int32(*(*uint8)(unsafe.Pointer(zIn + uintptr(iIn)))) == int32(q) {
 16505  					iIn++
 16506  				}
 16507  				*(*uint8)(unsafe.Pointer(zOut + uintptr(libc.PostIncInt32(&iOut, 1)))) = *(*uint8)(unsafe.Pointer(zIn + uintptr(iIn)))
 16508  			}
 16509  		}
 16510  
 16511  	}
 16512  	return zOut
 16513  }
 16514  
 16515  func fuzzerDisconnect(tls *libc.TLS, pVtab uintptr) int32 {
 16516  	var p uintptr = pVtab
 16517  
 16518  	for (*fuzzer_vtab)(unsafe.Pointer(p)).FpRule != 0 {
 16519  		var pRule uintptr = (*fuzzer_vtab)(unsafe.Pointer(p)).FpRule
 16520  		(*fuzzer_vtab)(unsafe.Pointer(p)).FpRule = (*fuzzer_rule)(unsafe.Pointer(pRule)).FpNext
 16521  		sqlite3.Xsqlite3_free(tls, pRule)
 16522  	}
 16523  	sqlite3.Xsqlite3_free(tls, p)
 16524  	return SQLITE_OK
 16525  }
 16526  
 16527  func fuzzerConnect(tls *libc.TLS, db uintptr, pAux uintptr, argc int32, argv uintptr, ppVtab uintptr, pzErr uintptr) int32 {
 16528  	bp := tls.Alloc(8)
 16529  	defer tls.Free(8)
 16530  
 16531  	var rc int32 = SQLITE_OK
 16532  	var pNew uintptr = uintptr(0)
 16533  	var zModule uintptr = *(*uintptr)(unsafe.Pointer(argv))
 16534  	var zDb uintptr = *(*uintptr)(unsafe.Pointer(argv + 1*8))
 16535  
 16536  	if argc != 4 {
 16537  		*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls,
 16538  			ts+5394, libc.VaList(bp, zModule))
 16539  		rc = SQLITE_ERROR
 16540  	} else {
 16541  		var nModule sqlite3_int64
 16542  
 16543  		nModule = sqlite3_int64(libc.Xstrlen(tls, zModule))
 16544  		pNew = sqlite3.Xsqlite3_malloc64(tls, uint64(unsafe.Sizeof(fuzzer_vtab{}))+uint64(nModule)+uint64(1))
 16545  		if pNew == uintptr(0) {
 16546  			rc = SQLITE_NOMEM
 16547  		} else {
 16548  			var zTab uintptr
 16549  
 16550  			libc.Xmemset(tls, pNew, 0, uint64(unsafe.Sizeof(fuzzer_vtab{})))
 16551  			(*fuzzer_vtab)(unsafe.Pointer(pNew)).FzClassName = pNew + 1*48
 16552  			libc.Xmemcpy(tls, (*fuzzer_vtab)(unsafe.Pointer(pNew)).FzClassName, zModule, size_t(nModule+int64(1)))
 16553  
 16554  			zTab = fuzzerDequote(tls, *(*uintptr)(unsafe.Pointer(argv + 3*8)))
 16555  			if zTab == uintptr(0) {
 16556  				rc = SQLITE_NOMEM
 16557  			} else {
 16558  				rc = fuzzerLoadRules(tls, db, pNew, zDb, zTab, pzErr)
 16559  				sqlite3.Xsqlite3_free(tls, zTab)
 16560  			}
 16561  
 16562  			if rc == SQLITE_OK {
 16563  				rc = sqlite3.Xsqlite3_declare_vtab(tls, db, ts+5445)
 16564  			}
 16565  			if rc != SQLITE_OK {
 16566  				fuzzerDisconnect(tls, pNew)
 16567  				pNew = uintptr(0)
 16568  			} else {
 16569  				sqlite3.Xsqlite3_vtab_config(tls, db, SQLITE_VTAB_INNOCUOUS, 0)
 16570  			}
 16571  		}
 16572  	}
 16573  
 16574  	*(*uintptr)(unsafe.Pointer(ppVtab)) = pNew
 16575  	return rc
 16576  }
 16577  
 16578  func fuzzerOpen(tls *libc.TLS, pVTab uintptr, ppCursor uintptr) int32 {
 16579  	var p uintptr = pVTab
 16580  	var pCur uintptr
 16581  	pCur = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(fuzzer_cursor{})))
 16582  	if pCur == uintptr(0) {
 16583  		return SQLITE_NOMEM
 16584  	}
 16585  	libc.Xmemset(tls, pCur, 0, uint64(unsafe.Sizeof(fuzzer_cursor{})))
 16586  	(*fuzzer_cursor)(unsafe.Pointer(pCur)).FpVtab = p
 16587  	*(*uintptr)(unsafe.Pointer(ppCursor)) = pCur
 16588  	(*fuzzer_vtab)(unsafe.Pointer(p)).FnCursor++
 16589  	return SQLITE_OK
 16590  }
 16591  
 16592  func fuzzerClearStemList(tls *libc.TLS, pStem uintptr) {
 16593  	for pStem != 0 {
 16594  		var pNext uintptr = (*fuzzer_stem)(unsafe.Pointer(pStem)).FpNext
 16595  		sqlite3.Xsqlite3_free(tls, pStem)
 16596  		pStem = pNext
 16597  	}
 16598  }
 16599  
 16600  func fuzzerClearCursor(tls *libc.TLS, pCur uintptr, clearHash int32) {
 16601  	var i int32
 16602  	fuzzerClearStemList(tls, (*fuzzer_cursor)(unsafe.Pointer(pCur)).FpStem)
 16603  	fuzzerClearStemList(tls, (*fuzzer_cursor)(unsafe.Pointer(pCur)).FpDone)
 16604  	for i = 0; i < FUZZER_NQUEUE; i++ {
 16605  		fuzzerClearStemList(tls, *(*uintptr)(unsafe.Pointer(pCur + 48 + uintptr(i)*8)))
 16606  	}
 16607  	(*fuzzer_cursor)(unsafe.Pointer(pCur)).FrLimit = 0
 16608  	if clearHash != 0 && (*fuzzer_cursor)(unsafe.Pointer(pCur)).FnStem != 0 {
 16609  		(*fuzzer_cursor)(unsafe.Pointer(pCur)).FmxQueue = 0
 16610  		(*fuzzer_cursor)(unsafe.Pointer(pCur)).FpStem = uintptr(0)
 16611  		(*fuzzer_cursor)(unsafe.Pointer(pCur)).FpDone = uintptr(0)
 16612  		libc.Xmemset(tls, pCur+48, 0, uint64(unsafe.Sizeof([20]uintptr{})))
 16613  		libc.Xmemset(tls, pCur+272, 0, uint64(unsafe.Sizeof([4001]uintptr{})))
 16614  	}
 16615  	(*fuzzer_cursor)(unsafe.Pointer(pCur)).FnStem = 0
 16616  }
 16617  
 16618  func fuzzerClose(tls *libc.TLS, cur uintptr) int32 {
 16619  	var pCur uintptr = cur
 16620  	fuzzerClearCursor(tls, pCur, 0)
 16621  	sqlite3.Xsqlite3_free(tls, (*fuzzer_cursor)(unsafe.Pointer(pCur)).FzBuf)
 16622  	(*fuzzer_vtab)(unsafe.Pointer((*fuzzer_cursor)(unsafe.Pointer(pCur)).FpVtab)).FnCursor--
 16623  	sqlite3.Xsqlite3_free(tls, pCur)
 16624  	return SQLITE_OK
 16625  }
 16626  
 16627  func fuzzerRender(tls *libc.TLS, pStem uintptr, pzBuf uintptr, pnBuf uintptr) int32 {
 16628  	var pRule uintptr = (*fuzzer_stem)(unsafe.Pointer(pStem)).FpRule
 16629  	var n int32
 16630  	var z uintptr
 16631  
 16632  	n = int32((*fuzzer_stem)(unsafe.Pointer(pStem)).FnBasis) + int32((*fuzzer_rule)(unsafe.Pointer(pRule)).FnTo) - int32((*fuzzer_rule)(unsafe.Pointer(pRule)).FnFrom)
 16633  	if *(*int32)(unsafe.Pointer(pnBuf)) < n+1 {
 16634  		*(*uintptr)(unsafe.Pointer(pzBuf)) = sqlite3.Xsqlite3_realloc(tls, *(*uintptr)(unsafe.Pointer(pzBuf)), n+100)
 16635  		if *(*uintptr)(unsafe.Pointer(pzBuf)) == uintptr(0) {
 16636  			return SQLITE_NOMEM
 16637  		}
 16638  		*(*int32)(unsafe.Pointer(pnBuf)) = n + 100
 16639  	}
 16640  	n = int32((*fuzzer_stem)(unsafe.Pointer(pStem)).Fn)
 16641  	z = *(*uintptr)(unsafe.Pointer(pzBuf))
 16642  	if n < 0 {
 16643  		libc.Xmemcpy(tls, z, (*fuzzer_stem)(unsafe.Pointer(pStem)).FzBasis, uint64(int32((*fuzzer_stem)(unsafe.Pointer(pStem)).FnBasis)+1))
 16644  	} else {
 16645  		libc.Xmemcpy(tls, z, (*fuzzer_stem)(unsafe.Pointer(pStem)).FzBasis, uint64(n))
 16646  		libc.Xmemcpy(tls, z+uintptr(n), pRule+28, uint64((*fuzzer_rule)(unsafe.Pointer(pRule)).FnTo))
 16647  		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)),
 16648  			uint64(int32((*fuzzer_stem)(unsafe.Pointer(pStem)).FnBasis)-n-int32((*fuzzer_rule)(unsafe.Pointer(pRule)).FnFrom)+1))
 16649  	}
 16650  
 16651  	return SQLITE_OK
 16652  }
 16653  
 16654  func fuzzerHash(tls *libc.TLS, z uintptr) uint32 {
 16655  	var h uint32 = uint32(0)
 16656  	for *(*uint8)(unsafe.Pointer(z)) != 0 {
 16657  		h = h<<3 ^ h>>29 ^ uint32(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&z, 1))))
 16658  	}
 16659  	return h % uint32(FUZZER_HASH)
 16660  }
 16661  
 16662  func fuzzerCost(tls *libc.TLS, pStem uintptr) fuzzer_cost {
 16663  	return libc.AssignPtrInt32(pStem+36, (*fuzzer_stem)(unsafe.Pointer(pStem)).FrBaseCost+(*fuzzer_rule)(unsafe.Pointer((*fuzzer_stem)(unsafe.Pointer(pStem)).FpRule)).FrCost)
 16664  }
 16665  
 16666  func fuzzerSeen(tls *libc.TLS, pCur uintptr, pStem uintptr) int32 {
 16667  	var h uint32
 16668  	var pLookup uintptr
 16669  
 16670  	if fuzzerRender(tls, pStem, pCur+216, pCur+224) == SQLITE_NOMEM {
 16671  		return -1
 16672  	}
 16673  	h = fuzzerHash(tls, (*fuzzer_cursor)(unsafe.Pointer(pCur)).FzBuf)
 16674  	pLookup = *(*uintptr)(unsafe.Pointer(pCur + 272 + uintptr(h)*8))
 16675  	for pLookup != 0 && libc.Xstrcmp(tls, (*fuzzer_stem)(unsafe.Pointer(pLookup)).FzBasis, (*fuzzer_cursor)(unsafe.Pointer(pCur)).FzBuf) != 0 {
 16676  		pLookup = (*fuzzer_stem)(unsafe.Pointer(pLookup)).FpHash
 16677  	}
 16678  	return libc.Bool32(pLookup != uintptr(0))
 16679  }
 16680  
 16681  func fuzzerSkipRule(tls *libc.TLS, pRule uintptr, pStem uintptr, iRuleset int32) int32 {
 16682  	return libc.Bool32(pRule != 0 && ((*fuzzer_rule)(unsafe.Pointer(pRule)).FiRuleset != iRuleset ||
 16683  		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))
 16684  }
 16685  
 16686  func fuzzerAdvance(tls *libc.TLS, pCur uintptr, pStem uintptr) int32 {
 16687  	var pRule uintptr
 16688  	for libc.AssignUintptr(&pRule, (*fuzzer_stem)(unsafe.Pointer(pStem)).FpRule) != uintptr(0) {
 16689  		for int32((*fuzzer_stem)(unsafe.Pointer(pStem)).Fn) < int32((*fuzzer_stem)(unsafe.Pointer(pStem)).FnBasis)-int32((*fuzzer_rule)(unsafe.Pointer(pRule)).FnFrom) {
 16690  			(*fuzzer_stem)(unsafe.Pointer(pStem)).Fn++
 16691  			if int32((*fuzzer_rule)(unsafe.Pointer(pRule)).FnFrom) == 0 ||
 16692  				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 {
 16693  				var rc int32 = fuzzerSeen(tls, pCur, pStem)
 16694  				if rc < 0 {
 16695  					return -1
 16696  				}
 16697  				if rc == 0 {
 16698  					fuzzerCost(tls, pStem)
 16699  					return 1
 16700  				}
 16701  			}
 16702  		}
 16703  		(*fuzzer_stem)(unsafe.Pointer(pStem)).Fn = int8(-1)
 16704  		for __ccgo := true; __ccgo; __ccgo = fuzzerSkipRule(tls, pRule, pStem, (*fuzzer_cursor)(unsafe.Pointer(pCur)).FiRuleset) != 0 {
 16705  			pRule = (*fuzzer_rule)(unsafe.Pointer(pRule)).FpNext
 16706  		}
 16707  		(*fuzzer_stem)(unsafe.Pointer(pStem)).FpRule = pRule
 16708  		if pRule != 0 && fuzzerCost(tls, pStem) > (*fuzzer_cursor)(unsafe.Pointer(pCur)).FrLimit {
 16709  			(*fuzzer_stem)(unsafe.Pointer(pStem)).FpRule = uintptr(0)
 16710  		}
 16711  	}
 16712  	return 0
 16713  }
 16714  
 16715  func fuzzerMergeStems(tls *libc.TLS, pA uintptr, pB uintptr) uintptr {
 16716  	bp := tls.Alloc(48)
 16717  	defer tls.Free(48)
 16718  
 16719  	var pTail uintptr
 16720  
 16721  	pTail = bp
 16722  	for pA != 0 && pB != 0 {
 16723  		if (*fuzzer_stem)(unsafe.Pointer(pA)).FrCostX <= (*fuzzer_stem)(unsafe.Pointer(pB)).FrCostX {
 16724  			(*fuzzer_stem)(unsafe.Pointer(pTail)).FpNext = pA
 16725  			pTail = pA
 16726  			pA = (*fuzzer_stem)(unsafe.Pointer(pA)).FpNext
 16727  		} else {
 16728  			(*fuzzer_stem)(unsafe.Pointer(pTail)).FpNext = pB
 16729  			pTail = pB
 16730  			pB = (*fuzzer_stem)(unsafe.Pointer(pB)).FpNext
 16731  		}
 16732  	}
 16733  	if pA == uintptr(0) {
 16734  		(*fuzzer_stem)(unsafe.Pointer(pTail)).FpNext = pB
 16735  	} else {
 16736  		(*fuzzer_stem)(unsafe.Pointer(pTail)).FpNext = pA
 16737  	}
 16738  	return (*fuzzer_stem)(unsafe.Pointer(bp)).FpNext
 16739  }
 16740  
 16741  func fuzzerLowestCostStem(tls *libc.TLS, pCur uintptr) uintptr {
 16742  	var pBest uintptr
 16743  	var pX uintptr
 16744  	var iBest int32
 16745  	var i int32
 16746  
 16747  	if (*fuzzer_cursor)(unsafe.Pointer(pCur)).FpStem == uintptr(0) {
 16748  		iBest = -1
 16749  		pBest = uintptr(0)
 16750  		for i = 0; i <= (*fuzzer_cursor)(unsafe.Pointer(pCur)).FmxQueue; i++ {
 16751  			pX = *(*uintptr)(unsafe.Pointer(pCur + 48 + uintptr(i)*8))
 16752  			if pX == uintptr(0) {
 16753  				continue
 16754  			}
 16755  			if pBest == uintptr(0) || (*fuzzer_stem)(unsafe.Pointer(pBest)).FrCostX > (*fuzzer_stem)(unsafe.Pointer(pX)).FrCostX {
 16756  				pBest = pX
 16757  				iBest = i
 16758  			}
 16759  		}
 16760  		if pBest != 0 {
 16761  			*(*uintptr)(unsafe.Pointer(pCur + 48 + uintptr(iBest)*8)) = (*fuzzer_stem)(unsafe.Pointer(pBest)).FpNext
 16762  			(*fuzzer_stem)(unsafe.Pointer(pBest)).FpNext = uintptr(0)
 16763  			(*fuzzer_cursor)(unsafe.Pointer(pCur)).FpStem = pBest
 16764  		}
 16765  	}
 16766  	return (*fuzzer_cursor)(unsafe.Pointer(pCur)).FpStem
 16767  }
 16768  
 16769  func fuzzerInsert(tls *libc.TLS, pCur uintptr, pNew uintptr) uintptr {
 16770  	var pX uintptr
 16771  	var i int32
 16772  
 16773  	if libc.AssignUintptr(&pX, (*fuzzer_cursor)(unsafe.Pointer(pCur)).FpStem) != uintptr(0) && (*fuzzer_stem)(unsafe.Pointer(pX)).FrCostX > (*fuzzer_stem)(unsafe.Pointer(pNew)).FrCostX {
 16774  		(*fuzzer_stem)(unsafe.Pointer(pNew)).FpNext = uintptr(0)
 16775  		(*fuzzer_cursor)(unsafe.Pointer(pCur)).FpStem = pNew
 16776  		pNew = pX
 16777  	}
 16778  
 16779  	(*fuzzer_stem)(unsafe.Pointer(pNew)).FpNext = uintptr(0)
 16780  	pX = pNew
 16781  	for i = 0; i <= (*fuzzer_cursor)(unsafe.Pointer(pCur)).FmxQueue; i++ {
 16782  		if *(*uintptr)(unsafe.Pointer(pCur + 48 + uintptr(i)*8)) != 0 {
 16783  			pX = fuzzerMergeStems(tls, pX, *(*uintptr)(unsafe.Pointer(pCur + 48 + uintptr(i)*8)))
 16784  			*(*uintptr)(unsafe.Pointer(pCur + 48 + uintptr(i)*8)) = uintptr(0)
 16785  		} else {
 16786  			*(*uintptr)(unsafe.Pointer(pCur + 48 + uintptr(i)*8)) = pX
 16787  			break
 16788  		}
 16789  	}
 16790  	if i > (*fuzzer_cursor)(unsafe.Pointer(pCur)).FmxQueue {
 16791  		if i < FUZZER_NQUEUE {
 16792  			(*fuzzer_cursor)(unsafe.Pointer(pCur)).FmxQueue = i
 16793  			*(*uintptr)(unsafe.Pointer(pCur + 48 + uintptr(i)*8)) = pX
 16794  		} else {
 16795  			pX = fuzzerMergeStems(tls, pX, *(*uintptr)(unsafe.Pointer(pCur + 48 + 19*8)))
 16796  			*(*uintptr)(unsafe.Pointer(pCur + 48 + 19*8)) = pX
 16797  		}
 16798  	}
 16799  
 16800  	return fuzzerLowestCostStem(tls, pCur)
 16801  }
 16802  
 16803  func fuzzerNewStem(tls *libc.TLS, pCur uintptr, zWord uintptr, rBaseCost fuzzer_cost) uintptr {
 16804  	var pNew uintptr
 16805  	var pRule uintptr
 16806  	var h uint32
 16807  
 16808  	pNew = sqlite3.Xsqlite3_malloc64(tls, uint64(unsafe.Sizeof(fuzzer_stem{}))+libc.Xstrlen(tls, zWord)+uint64(1))
 16809  	if pNew == uintptr(0) {
 16810  		return uintptr(0)
 16811  	}
 16812  	libc.Xmemset(tls, pNew, 0, uint64(unsafe.Sizeof(fuzzer_stem{})))
 16813  	(*fuzzer_stem)(unsafe.Pointer(pNew)).FzBasis = pNew + 1*48
 16814  	(*fuzzer_stem)(unsafe.Pointer(pNew)).FnBasis = fuzzer_len(libc.Xstrlen(tls, zWord))
 16815  	libc.Xmemcpy(tls, (*fuzzer_stem)(unsafe.Pointer(pNew)).FzBasis, zWord, uint64(int32((*fuzzer_stem)(unsafe.Pointer(pNew)).FnBasis)+1))
 16816  	pRule = (*fuzzer_vtab)(unsafe.Pointer((*fuzzer_cursor)(unsafe.Pointer(pCur)).FpVtab)).FpRule
 16817  	for fuzzerSkipRule(tls, pRule, pNew, (*fuzzer_cursor)(unsafe.Pointer(pCur)).FiRuleset) != 0 {
 16818  		pRule = (*fuzzer_rule)(unsafe.Pointer(pRule)).FpNext
 16819  	}
 16820  	(*fuzzer_stem)(unsafe.Pointer(pNew)).FpRule = pRule
 16821  	(*fuzzer_stem)(unsafe.Pointer(pNew)).Fn = int8(-1)
 16822  	(*fuzzer_stem)(unsafe.Pointer(pNew)).FrBaseCost = libc.AssignPtrInt32(pNew+36, rBaseCost)
 16823  	h = fuzzerHash(tls, (*fuzzer_stem)(unsafe.Pointer(pNew)).FzBasis)
 16824  	(*fuzzer_stem)(unsafe.Pointer(pNew)).FpHash = *(*uintptr)(unsafe.Pointer(pCur + 272 + uintptr(h)*8))
 16825  	*(*uintptr)(unsafe.Pointer(pCur + 272 + uintptr(h)*8)) = pNew
 16826  	(*fuzzer_cursor)(unsafe.Pointer(pCur)).FnStem++
 16827  	return pNew
 16828  }
 16829  
 16830  func fuzzerNext(tls *libc.TLS, cur uintptr) int32 {
 16831  	var pCur uintptr = cur
 16832  	var rc int32
 16833  	var pStem uintptr
 16834  	var pNew uintptr
 16835  
 16836  	(*fuzzer_cursor)(unsafe.Pointer(pCur)).FiRowid++
 16837  
 16838  	pStem = (*fuzzer_cursor)(unsafe.Pointer(pCur)).FpStem
 16839  	if (*fuzzer_stem)(unsafe.Pointer(pStem)).FrCostX > 0 {
 16840  		rc = fuzzerRender(tls, pStem, pCur+216, pCur+224)
 16841  		if rc == SQLITE_NOMEM {
 16842  			return SQLITE_NOMEM
 16843  		}
 16844  		pNew = fuzzerNewStem(tls, pCur, (*fuzzer_cursor)(unsafe.Pointer(pCur)).FzBuf, (*fuzzer_stem)(unsafe.Pointer(pStem)).FrCostX)
 16845  		if pNew != 0 {
 16846  			if fuzzerAdvance(tls, pCur, pNew) == 0 {
 16847  				(*fuzzer_stem)(unsafe.Pointer(pNew)).FpNext = (*fuzzer_cursor)(unsafe.Pointer(pCur)).FpDone
 16848  				(*fuzzer_cursor)(unsafe.Pointer(pCur)).FpDone = pNew
 16849  			} else {
 16850  				if fuzzerInsert(tls, pCur, pNew) == pNew {
 16851  					return SQLITE_OK
 16852  				}
 16853  			}
 16854  		} else {
 16855  			return SQLITE_NOMEM
 16856  		}
 16857  	}
 16858  
 16859  	for libc.AssignUintptr(&pStem, (*fuzzer_cursor)(unsafe.Pointer(pCur)).FpStem) != uintptr(0) {
 16860  		var res int32 = fuzzerAdvance(tls, pCur, pStem)
 16861  		if res < 0 {
 16862  			return SQLITE_NOMEM
 16863  		} else if res > 0 {
 16864  			(*fuzzer_cursor)(unsafe.Pointer(pCur)).FpStem = uintptr(0)
 16865  			pStem = fuzzerInsert(tls, pCur, pStem)
 16866  			if libc.AssignInt32(&rc, fuzzerSeen(tls, pCur, pStem)) != 0 {
 16867  				if rc < 0 {
 16868  					return SQLITE_NOMEM
 16869  				}
 16870  				continue
 16871  			}
 16872  			return SQLITE_OK
 16873  		}
 16874  		(*fuzzer_cursor)(unsafe.Pointer(pCur)).FpStem = uintptr(0)
 16875  		(*fuzzer_stem)(unsafe.Pointer(pStem)).FpNext = (*fuzzer_cursor)(unsafe.Pointer(pCur)).FpDone
 16876  		(*fuzzer_cursor)(unsafe.Pointer(pCur)).FpDone = pStem
 16877  		if fuzzerLowestCostStem(tls, pCur) != 0 {
 16878  			rc = fuzzerSeen(tls, pCur, (*fuzzer_cursor)(unsafe.Pointer(pCur)).FpStem)
 16879  			if rc < 0 {
 16880  				return SQLITE_NOMEM
 16881  			}
 16882  			if rc == 0 {
 16883  				return SQLITE_OK
 16884  			}
 16885  		}
 16886  	}
 16887  
 16888  	(*fuzzer_cursor)(unsafe.Pointer(pCur)).FrLimit = 0
 16889  	return SQLITE_OK
 16890  }
 16891  
 16892  func fuzzerFilter(tls *libc.TLS, pVtabCursor uintptr, idxNum int32, idxStr uintptr, argc int32, argv uintptr) int32 {
 16893  	var pCur uintptr = pVtabCursor
 16894  	var zWord uintptr = ts + 584
 16895  	var pStem uintptr
 16896  	var idx int32
 16897  
 16898  	fuzzerClearCursor(tls, pCur, 1)
 16899  	(*fuzzer_cursor)(unsafe.Pointer(pCur)).FrLimit = 2147483647
 16900  	idx = 0
 16901  	if idxNum&1 != 0 {
 16902  		zWord = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 16903  		idx++
 16904  	}
 16905  	if idxNum&2 != 0 {
 16906  		(*fuzzer_cursor)(unsafe.Pointer(pCur)).FrLimit = sqlite3.Xsqlite3_value_int(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(idx)*8)))
 16907  		idx++
 16908  	}
 16909  	if idxNum&4 != 0 {
 16910  		(*fuzzer_cursor)(unsafe.Pointer(pCur)).FiRuleset = sqlite3.Xsqlite3_value_int(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(idx)*8)))
 16911  		idx++
 16912  	}
 16913  	(*fuzzer_cursor)(unsafe.Pointer(pCur)).FnullRule.FpNext = (*fuzzer_vtab)(unsafe.Pointer((*fuzzer_cursor)(unsafe.Pointer(pCur)).FpVtab)).FpRule
 16914  	(*fuzzer_cursor)(unsafe.Pointer(pCur)).FnullRule.FrCost = 0
 16915  	(*fuzzer_cursor)(unsafe.Pointer(pCur)).FnullRule.FnFrom = int8(0)
 16916  	(*fuzzer_cursor)(unsafe.Pointer(pCur)).FnullRule.FnTo = int8(0)
 16917  	(*fuzzer_cursor)(unsafe.Pointer(pCur)).FnullRule.FzFrom = ts + 584
 16918  	(*fuzzer_cursor)(unsafe.Pointer(pCur)).FiRowid = int64(1)
 16919  
 16920  	if int32(libc.Xstrlen(tls, zWord)) < FUZZER_MX_OUTPUT_LENGTH {
 16921  		(*fuzzer_cursor)(unsafe.Pointer(pCur)).FpStem = libc.AssignUintptr(&pStem, fuzzerNewStem(tls, pCur, zWord, 0))
 16922  		if pStem == uintptr(0) {
 16923  			return SQLITE_NOMEM
 16924  		}
 16925  		(*fuzzer_stem)(unsafe.Pointer(pStem)).FpRule = pCur + 240
 16926  		(*fuzzer_stem)(unsafe.Pointer(pStem)).Fn = (*fuzzer_stem)(unsafe.Pointer(pStem)).FnBasis
 16927  	} else {
 16928  		(*fuzzer_cursor)(unsafe.Pointer(pCur)).FrLimit = 0
 16929  	}
 16930  
 16931  	return SQLITE_OK
 16932  }
 16933  
 16934  func fuzzerColumn(tls *libc.TLS, cur uintptr, ctx uintptr, i int32) int32 {
 16935  	var pCur uintptr = cur
 16936  	if i == 0 {
 16937  		if fuzzerRender(tls, (*fuzzer_cursor)(unsafe.Pointer(pCur)).FpStem, pCur+216, pCur+224) == SQLITE_NOMEM {
 16938  			return SQLITE_NOMEM
 16939  		}
 16940  		sqlite3.Xsqlite3_result_text(tls, ctx, (*fuzzer_cursor)(unsafe.Pointer(pCur)).FzBuf, -1, libc.UintptrFromInt32(-1))
 16941  	} else if i == 1 {
 16942  		sqlite3.Xsqlite3_result_int(tls, ctx, (*fuzzer_stem)(unsafe.Pointer((*fuzzer_cursor)(unsafe.Pointer(pCur)).FpStem)).FrCostX)
 16943  	} else {
 16944  		sqlite3.Xsqlite3_result_null(tls, ctx)
 16945  	}
 16946  	return SQLITE_OK
 16947  }
 16948  
 16949  func fuzzerRowid(tls *libc.TLS, cur uintptr, pRowid uintptr) int32 {
 16950  	var pCur uintptr = cur
 16951  	*(*sqlite_int64)(unsafe.Pointer(pRowid)) = (*fuzzer_cursor)(unsafe.Pointer(pCur)).FiRowid
 16952  	return SQLITE_OK
 16953  }
 16954  
 16955  func fuzzerEof(tls *libc.TLS, cur uintptr) int32 {
 16956  	var pCur uintptr = cur
 16957  	return libc.Bool32((*fuzzer_cursor)(unsafe.Pointer(pCur)).FrLimit <= 0)
 16958  }
 16959  
 16960  func fuzzerBestIndex(tls *libc.TLS, tab uintptr, pIdxInfo uintptr) int32 {
 16961  	var iPlan int32 = 0
 16962  	var iDistTerm int32 = -1
 16963  	var iRulesetTerm int32 = -1
 16964  	var i int32
 16965  	var seenMatch int32 = 0
 16966  	var pConstraint uintptr
 16967  	var rCost float64 = 1e12
 16968  
 16969  	pConstraint = (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint
 16970  	i = 0
 16971  __1:
 16972  	if !(i < (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnConstraint) {
 16973  		goto __3
 16974  	}
 16975  	{
 16976  		if (*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).FiColumn == 0 &&
 16977  			int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_MATCH {
 16978  			seenMatch = 1
 16979  		}
 16980  		if int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fusable) == 0 {
 16981  			goto __2
 16982  		}
 16983  		if iPlan&1 == 0 &&
 16984  			(*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).FiColumn == 0 &&
 16985  			int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_MATCH {
 16986  			iPlan = iPlan | 1
 16987  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(i)*8)).FargvIndex = 1
 16988  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(i)*8)).Fomit = uint8(1)
 16989  			rCost = rCost / 1e6
 16990  		}
 16991  		if iPlan&2 == 0 &&
 16992  			(*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).FiColumn == 1 &&
 16993  			(int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_LT ||
 16994  				int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_LE) {
 16995  			iPlan = iPlan | 2
 16996  			iDistTerm = i
 16997  			rCost = rCost / 10.0
 16998  		}
 16999  		if iPlan&4 == 0 &&
 17000  			(*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).FiColumn == 2 &&
 17001  			int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_EQ {
 17002  			iPlan = iPlan | 4
 17003  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(i)*8)).Fomit = uint8(1)
 17004  			iRulesetTerm = i
 17005  			rCost = rCost / 10.0
 17006  		}
 17007  
 17008  	}
 17009  	goto __2
 17010  __2:
 17011  	i++
 17012  	pConstraint += 12
 17013  	goto __1
 17014  	goto __3
 17015  __3:
 17016  	;
 17017  	if iPlan&2 != 0 {
 17018  		(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(iDistTerm)*8)).FargvIndex = 1 + libc.Bool32(iPlan&1 != 0)
 17019  	}
 17020  	if iPlan&4 != 0 {
 17021  		var idx int32 = 1
 17022  		if iPlan&1 != 0 {
 17023  			idx++
 17024  		}
 17025  		if iPlan&2 != 0 {
 17026  			idx++
 17027  		}
 17028  		(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(iRulesetTerm)*8)).FargvIndex = idx
 17029  	}
 17030  	(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxNum = iPlan
 17031  	if (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnOrderBy == 1 &&
 17032  		(*sqlite3_index_orderby)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaOrderBy)).FiColumn == 1 &&
 17033  		int32((*sqlite3_index_orderby)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaOrderBy)).Fdesc) == 0 {
 17034  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).ForderByConsumed = 1
 17035  	}
 17036  	if seenMatch != 0 && iPlan&1 == 0 {
 17037  		rCost = 1e99
 17038  	}
 17039  	(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = rCost
 17040  
 17041  	return SQLITE_OK
 17042  }
 17043  
 17044  var fuzzerModule = sqlite3_module{
 17045  	FxCreate:     0,
 17046  	FxConnect:    0,
 17047  	FxBestIndex:  0,
 17048  	FxDisconnect: 0,
 17049  	FxDestroy:    0,
 17050  	FxOpen:       0,
 17051  	FxClose:      0,
 17052  	FxFilter:     0,
 17053  	FxNext:       0,
 17054  	FxEof:        0,
 17055  	FxColumn:     0,
 17056  	FxRowid:      0,
 17057  }
 17058  
 17059  func sqlite3_fuzzer_init(tls *libc.TLS, db uintptr, pzErrMsg uintptr, pApi uintptr) int32 {
 17060  	var rc int32 = SQLITE_OK
 17061  	_ = pApi
 17062  
 17063  	rc = sqlite3.Xsqlite3_create_module(tls, db, ts+5483, uintptr(unsafe.Pointer(&fuzzerModule)), uintptr(0))
 17064  	return rc
 17065  }
 17066  
 17067  func ieee754func(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 17068  	bp := tls.Alloc(160)
 17069  	defer tls.Free(160)
 17070  
 17071  	if argc == 1 {
 17072  		var m sqlite3_int64
 17073  
 17074  		var e int32
 17075  		var isNeg int32
 17076  
 17077  		if sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(argv))) == SQLITE_BLOB &&
 17078  			uint64(sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(argv)))) == uint64(unsafe.Sizeof(float64(0))) {
 17079  			var x uintptr = sqlite3.Xsqlite3_value_blob(tls, *(*uintptr)(unsafe.Pointer(argv)))
 17080  			var i uint32
 17081  			*(*sqlite3_uint64)(unsafe.Pointer(bp + 24)) = uint64(0)
 17082  			for i = uint32(0); uint64(i) < uint64(unsafe.Sizeof(float64(0))); i++ {
 17083  				*(*sqlite3_uint64)(unsafe.Pointer(bp + 24)) = *(*sqlite3_uint64)(unsafe.Pointer(bp + 24))<<8 | sqlite3_uint64(*(*uint8)(unsafe.Pointer(x + uintptr(i))))
 17084  			}
 17085  			libc.Xmemcpy(tls, bp+16, bp+24, uint64(unsafe.Sizeof(float64(0))))
 17086  		} else {
 17087  			*(*float64)(unsafe.Pointer(bp + 16)) = sqlite3.Xsqlite3_value_double(tls, *(*uintptr)(unsafe.Pointer(argv)))
 17088  		}
 17089  		if *(*float64)(unsafe.Pointer(bp + 16)) < 0.0 {
 17090  			isNeg = 1
 17091  			*(*float64)(unsafe.Pointer(bp + 16)) = -*(*float64)(unsafe.Pointer(bp + 16))
 17092  		} else {
 17093  			isNeg = 0
 17094  		}
 17095  		libc.Xmemcpy(tls, bp+32, bp+16, uint64(unsafe.Sizeof(sqlite3_int64(0))))
 17096  		if *(*sqlite3_int64)(unsafe.Pointer(bp + 32)) == int64(0) {
 17097  			e = 0
 17098  			m = int64(0)
 17099  		} else {
 17100  			e = int32(*(*sqlite3_int64)(unsafe.Pointer(bp + 32)) >> 52)
 17101  			m = *(*sqlite3_int64)(unsafe.Pointer(bp + 32)) & (int64(1)<<52 - int64(1))
 17102  			if e == 0 {
 17103  				m <<= 1
 17104  			} else {
 17105  				m = m | int64(1)<<52
 17106  			}
 17107  			for e < 1075 && m > int64(0) && m&int64(1) == int64(0) {
 17108  				m >>= 1
 17109  				e++
 17110  			}
 17111  			if isNeg != 0 {
 17112  				m = -m
 17113  			}
 17114  		}
 17115  		switch *(*int32)(unsafe.Pointer(sqlite3.Xsqlite3_user_data(tls, context))) {
 17116  		case 0:
 17117  			sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([100]uint8{})), bp+40, ts+5490,
 17118  				libc.VaList(bp, m, e-1075))
 17119  			sqlite3.Xsqlite3_result_text(tls, context, bp+40, -1, libc.UintptrFromInt32(-1))
 17120  			break
 17121  			fallthrough
 17122  		case 1:
 17123  			sqlite3.Xsqlite3_result_int64(tls, context, m)
 17124  			break
 17125  			fallthrough
 17126  		case 2:
 17127  			sqlite3.Xsqlite3_result_int(tls, context, e-1075)
 17128  			break
 17129  		}
 17130  	} else {
 17131  		var m sqlite3_int64
 17132  		var e sqlite3_int64
 17133  
 17134  		var isNeg int32 = 0
 17135  		m = sqlite3.Xsqlite3_value_int64(tls, *(*uintptr)(unsafe.Pointer(argv)))
 17136  		e = sqlite3.Xsqlite3_value_int64(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 17137  
 17138  		if e > int64(10000) {
 17139  			e = int64(10000)
 17140  		} else if e < int64(-10000) {
 17141  			e = int64(-10000)
 17142  		}
 17143  
 17144  		if m < int64(0) {
 17145  			isNeg = 1
 17146  			m = -m
 17147  			if m < int64(0) {
 17148  				return
 17149  			}
 17150  		} else if m == int64(0) && e > int64(-1000) && e < int64(1000) {
 17151  			sqlite3.Xsqlite3_result_double(tls, context, 0.0)
 17152  			return
 17153  		}
 17154  		for m>>32&int64(0xffe00000) != 0 {
 17155  			m >>= 1
 17156  			e++
 17157  		}
 17158  		for m != int64(0) && m>>32&int64(0xfff00000) == int64(0) {
 17159  			m <<= 1
 17160  			e--
 17161  		}
 17162  		e = e + int64(1075)
 17163  		if e <= int64(0) {
 17164  			if int64(1)-e >= int64(64) {
 17165  				m = int64(0)
 17166  			} else {
 17167  				m >>= int64(1) - e
 17168  			}
 17169  			e = int64(0)
 17170  		} else if e > int64(0x7ff) {
 17171  			e = int64(0x7ff)
 17172  		}
 17173  		*(*sqlite3_int64)(unsafe.Pointer(bp + 152)) = m & (int64(1)<<52 - int64(1))
 17174  		*(*sqlite3_int64)(unsafe.Pointer(bp + 152)) |= e << 52
 17175  		if isNeg != 0 {
 17176  			*(*sqlite3_int64)(unsafe.Pointer(bp + 152)) |= libc.Int64FromUint64(uint64(1) << 63)
 17177  		}
 17178  		libc.Xmemcpy(tls, bp+144, bp+152, uint64(unsafe.Sizeof(float64(0))))
 17179  		sqlite3.Xsqlite3_result_double(tls, context, *(*float64)(unsafe.Pointer(bp + 144)))
 17180  	}
 17181  }
 17182  
 17183  func ieee754func_from_blob(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 17184  	bp := tls.Alloc(16)
 17185  	defer tls.Free(16)
 17186  
 17187  	_ = argc
 17188  	if sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(argv))) == SQLITE_BLOB &&
 17189  		uint64(sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(argv)))) == uint64(unsafe.Sizeof(float64(0))) {
 17190  		var x uintptr = sqlite3.Xsqlite3_value_blob(tls, *(*uintptr)(unsafe.Pointer(argv)))
 17191  		var i uint32
 17192  		*(*sqlite3_uint64)(unsafe.Pointer(bp + 8)) = uint64(0)
 17193  		for i = uint32(0); uint64(i) < uint64(unsafe.Sizeof(float64(0))); i++ {
 17194  			*(*sqlite3_uint64)(unsafe.Pointer(bp + 8)) = *(*sqlite3_uint64)(unsafe.Pointer(bp + 8))<<8 | sqlite3_uint64(*(*uint8)(unsafe.Pointer(x + uintptr(i))))
 17195  		}
 17196  		libc.Xmemcpy(tls, bp, bp+8, uint64(unsafe.Sizeof(float64(0))))
 17197  		sqlite3.Xsqlite3_result_double(tls, context, *(*float64)(unsafe.Pointer(bp)))
 17198  	}
 17199  }
 17200  
 17201  func ieee754func_to_blob(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 17202  	bp := tls.Alloc(24)
 17203  	defer tls.Free(24)
 17204  
 17205  	_ = argc
 17206  	if sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(argv))) == SQLITE_FLOAT ||
 17207  		sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(argv))) == SQLITE_INTEGER {
 17208  		*(*float64)(unsafe.Pointer(bp + 8)) = sqlite3.Xsqlite3_value_double(tls, *(*uintptr)(unsafe.Pointer(argv)))
 17209  
 17210  		var i uint32
 17211  		libc.Xmemcpy(tls, bp, bp+8, uint64(unsafe.Sizeof(float64(0))))
 17212  		for i = uint32(1); uint64(i) <= uint64(unsafe.Sizeof(float64(0))); i++ {
 17213  			*(*uint8)(unsafe.Pointer(bp + 16 + uintptr(uint64(unsafe.Sizeof(float64(0)))-uint64(i)))) = uint8(*(*sqlite3_uint64)(unsafe.Pointer(bp)) & uint64(0xff))
 17214  			*(*sqlite3_uint64)(unsafe.Pointer(bp)) >>= 8
 17215  		}
 17216  		sqlite3.Xsqlite3_result_blob(tls, context, bp+16, int32(unsafe.Sizeof(float64(0))), libc.UintptrFromInt32(-1))
 17217  	}
 17218  }
 17219  
 17220  func sqlite3_ieee_init(tls *libc.TLS, db uintptr, pzErrMsg uintptr, pApi uintptr) int32 {
 17221  	var i uint32
 17222  	var rc int32 = SQLITE_OK
 17223  	_ = pApi
 17224  
 17225  	_ = pzErrMsg
 17226  	for i = uint32(0); uint64(i) < uint64(unsafe.Sizeof(aFunc1))/uint64(unsafe.Sizeof(struct {
 17227  		FzFName uintptr
 17228  		FnArg   int32
 17229  		FiAux   int32
 17230  		FxFunc  uintptr
 17231  	}{})) && rc == SQLITE_OK; i++ {
 17232  		rc = sqlite3.Xsqlite3_create_function(tls, db, aFunc1[i].FzFName, aFunc1[i].FnArg,
 17233  			SQLITE_UTF8|SQLITE_INNOCUOUS,
 17234  			uintptr(unsafe.Pointer(&aFunc1))+uintptr(i)*24+12,
 17235  			aFunc1[i].FxFunc, uintptr(0), uintptr(0))
 17236  	}
 17237  	return rc
 17238  }
 17239  
 17240  var aFunc1 = [6]struct {
 17241  	FzFName uintptr
 17242  	FnArg   int32
 17243  	FiAux   int32
 17244  	FxFunc  uintptr
 17245  }{
 17246  	{FzFName: ts + 5507, FnArg: 1, FxFunc: 0},
 17247  	{FzFName: ts + 5507, FnArg: 2, FxFunc: 0},
 17248  	{FzFName: ts + 5515, FnArg: 1, FiAux: 1, FxFunc: 0},
 17249  	{FzFName: ts + 5532, FnArg: 1, FiAux: 2, FxFunc: 0},
 17250  	{FzFName: ts + 5549, FnArg: 1, FxFunc: 0},
 17251  	{FzFName: ts + 5565, FnArg: 1, FxFunc: 0},
 17252  }
 17253  
 17254  func sqlite3_mmap_warm(tls *libc.TLS, db uintptr, zDb uintptr) int32 {
 17255  	bp := tls.Alloc(88)
 17256  	defer tls.Free(88)
 17257  
 17258  	var rc int32 = SQLITE_OK
 17259  	var zSql uintptr = uintptr(0)
 17260  	var pgsz int32 = 0
 17261  	var nTotal int32 = 0
 17262  
 17263  	if 0 == sqlite3.Xsqlite3_get_autocommit(tls, db) {
 17264  		return SQLITE_MISUSE
 17265  	}
 17266  
 17267  	zSql = sqlite3.Xsqlite3_mprintf(tls, ts+5583,
 17268  		libc.VaList(bp, func() uintptr {
 17269  			if zDb != 0 {
 17270  				return ts + 5624
 17271  			}
 17272  			return ts + 584
 17273  		}(), func() uintptr {
 17274  			if zDb != 0 {
 17275  				return zDb
 17276  			}
 17277  			return ts + 584
 17278  		}(), func() uintptr {
 17279  			if zDb != 0 {
 17280  				return ts + 5626
 17281  			}
 17282  			return ts + 584
 17283  		}()))
 17284  	if zSql == uintptr(0) {
 17285  		return SQLITE_NOMEM
 17286  	}
 17287  	rc = sqlite3.Xsqlite3_exec(tls, db, zSql, uintptr(0), uintptr(0), uintptr(0))
 17288  	sqlite3.Xsqlite3_free(tls, zSql)
 17289  
 17290  	if rc == SQLITE_OK {
 17291  		zSql = sqlite3.Xsqlite3_mprintf(tls, ts+5629,
 17292  			libc.VaList(bp+24, func() uintptr {
 17293  				if zDb != 0 {
 17294  					return ts + 5624
 17295  				}
 17296  				return ts + 584
 17297  			}(), func() uintptr {
 17298  				if zDb != 0 {
 17299  					return zDb
 17300  				}
 17301  				return ts + 584
 17302  			}(), func() uintptr {
 17303  				if zDb != 0 {
 17304  					return ts + 5626
 17305  				}
 17306  				return ts + 584
 17307  			}()))
 17308  		if zSql == uintptr(0) {
 17309  			rc = SQLITE_NOMEM
 17310  		} else {
 17311  			*(*uintptr)(unsafe.Pointer(bp + 64)) = uintptr(0)
 17312  			rc = sqlite3.Xsqlite3_prepare_v2(tls, db, zSql, -1, bp+64, uintptr(0))
 17313  			sqlite3.Xsqlite3_free(tls, zSql)
 17314  			if rc == SQLITE_OK {
 17315  				if sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp + 64))) == SQLITE_ROW {
 17316  					pgsz = sqlite3.Xsqlite3_column_int(tls, *(*uintptr)(unsafe.Pointer(bp + 64)), 0)
 17317  				}
 17318  				rc = sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 64)))
 17319  			}
 17320  			if rc == SQLITE_OK && pgsz == 0 {
 17321  				rc = SQLITE_ERROR
 17322  			}
 17323  		}
 17324  	}
 17325  
 17326  	if rc == SQLITE_OK {
 17327  		var rc2 int32
 17328  		*(*uintptr)(unsafe.Pointer(bp + 72)) = uintptr(0)
 17329  		rc = sqlite3.Xsqlite3_file_control(tls, db, zDb, SQLITE_FCNTL_FILE_POINTER, bp+72)
 17330  		if rc == SQLITE_OK && (*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 72)))).FpMethods)).FiVersion >= 3 {
 17331  			var iPg sqlite3_int64 = int64(1)
 17332  			var p uintptr = (*sqlite3_file)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 72)))).FpMethods
 17333  			for 1 != 0 {
 17334  				rc = (*struct {
 17335  					f func(*libc.TLS, uintptr, sqlite3_int64, int32, uintptr) int32
 17336  				})(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)
 17337  				if rc != SQLITE_OK || *(*uintptr)(unsafe.Pointer(bp + 80)) == uintptr(0) {
 17338  					break
 17339  				}
 17340  
 17341  				nTotal = nTotal + int32(*(*uint8)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 80)))))
 17342  				nTotal = nTotal + int32(*(*uint8)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 80)) + uintptr(pgsz-1))))
 17343  
 17344  				rc = (*struct {
 17345  					f func(*libc.TLS, uintptr, sqlite3_int64, uintptr) int32
 17346  				})(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)))
 17347  				if rc != SQLITE_OK {
 17348  					break
 17349  				}
 17350  				iPg++
 17351  			}
 17352  			sqlite3.Xsqlite3_log(tls, SQLITE_OK,
 17353  				ts+5652, libc.VaList(bp+48, func() int64 {
 17354  					if iPg == int64(1) {
 17355  						return int64(0)
 17356  					}
 17357  					return iPg
 17358  				}(),
 17359  					sqlite3.Xsqlite3_db_filename(tls, db, zDb)))
 17360  		}
 17361  
 17362  		rc2 = sqlite3.Xsqlite3_exec(tls, db, ts+5702, uintptr(0), uintptr(0), uintptr(0))
 17363  		if rc == SQLITE_OK {
 17364  			rc = rc2
 17365  		}
 17366  	}
 17367  
 17368  	return rc
 17369  }
 17370  
 17371  type nextCharContext1 = struct {
 17372  	Fdb           uintptr
 17373  	FpStmt        uintptr
 17374  	FzPrefix      uintptr
 17375  	FnPrefix      int32
 17376  	FnAlloc       int32
 17377  	FnUsed        int32
 17378  	F__ccgo_pad1  [4]byte
 17379  	FaResult      uintptr
 17380  	FmallocFailed int32
 17381  	FotherError   int32
 17382  }
 17383  
 17384  type nextCharContext = nextCharContext1
 17385  
 17386  func nextCharAppend(tls *libc.TLS, p uintptr, c uint32) {
 17387  	var i int32
 17388  	for i = 0; i < (*nextCharContext)(unsafe.Pointer(p)).FnUsed; i++ {
 17389  		if *(*uint32)(unsafe.Pointer((*nextCharContext)(unsafe.Pointer(p)).FaResult + uintptr(i)*4)) == c {
 17390  			return
 17391  		}
 17392  	}
 17393  	if (*nextCharContext)(unsafe.Pointer(p)).FnUsed+1 > (*nextCharContext)(unsafe.Pointer(p)).FnAlloc {
 17394  		var aNew uintptr
 17395  		var n int32 = (*nextCharContext)(unsafe.Pointer(p)).FnAlloc*2 + 30
 17396  		aNew = sqlite3.Xsqlite3_realloc64(tls, (*nextCharContext)(unsafe.Pointer(p)).FaResult, uint64(n)*uint64(unsafe.Sizeof(uint32(0))))
 17397  		if aNew == uintptr(0) {
 17398  			(*nextCharContext)(unsafe.Pointer(p)).FmallocFailed = 1
 17399  			return
 17400  		} else {
 17401  			(*nextCharContext)(unsafe.Pointer(p)).FaResult = aNew
 17402  			(*nextCharContext)(unsafe.Pointer(p)).FnAlloc = n
 17403  		}
 17404  	}
 17405  	*(*uint32)(unsafe.Pointer((*nextCharContext)(unsafe.Pointer(p)).FaResult + uintptr(libc.PostIncInt32(&(*nextCharContext)(unsafe.Pointer(p)).FnUsed, 1))*4)) = c
 17406  }
 17407  
 17408  func writeUtf8(tls *libc.TLS, z uintptr, c uint32) int32 {
 17409  	if c < uint32(0x00080) {
 17410  		*(*uint8)(unsafe.Pointer(z)) = uint8(c & uint32(0xff))
 17411  		return 1
 17412  	}
 17413  	if c < uint32(0x00800) {
 17414  		*(*uint8)(unsafe.Pointer(z)) = uint8(0xC0 + int32(uint8(c>>6&uint32(0x1F))))
 17415  		*(*uint8)(unsafe.Pointer(z + 1)) = uint8(0x80 + int32(uint8(c&uint32(0x3F))))
 17416  		return 2
 17417  	}
 17418  	if c < uint32(0x10000) {
 17419  		*(*uint8)(unsafe.Pointer(z)) = uint8(0xE0 + int32(uint8(c>>12&uint32(0x0F))))
 17420  		*(*uint8)(unsafe.Pointer(z + 1)) = uint8(0x80 + int32(uint8(c>>6&uint32(0x3F))))
 17421  		*(*uint8)(unsafe.Pointer(z + 2)) = uint8(0x80 + int32(uint8(c&uint32(0x3F))))
 17422  		return 3
 17423  	}
 17424  	*(*uint8)(unsafe.Pointer(z)) = uint8(0xF0 + int32(uint8(c>>18&uint32(0x07))))
 17425  	*(*uint8)(unsafe.Pointer(z + 1)) = uint8(0x80 + int32(uint8(c>>12&uint32(0x3F))))
 17426  	*(*uint8)(unsafe.Pointer(z + 2)) = uint8(0x80 + int32(uint8(c>>6&uint32(0x3F))))
 17427  	*(*uint8)(unsafe.Pointer(z + 3)) = uint8(0x80 + int32(uint8(c&uint32(0x3F))))
 17428  	return 4
 17429  }
 17430  
 17431  func readUtf8(tls *libc.TLS, z uintptr, pOut uintptr) int32 {
 17432  	var c uint32 = uint32(*(*uint8)(unsafe.Pointer(z)))
 17433  	if c < uint32(0xc0) {
 17434  		*(*uint32)(unsafe.Pointer(pOut)) = c
 17435  		return 1
 17436  	} else {
 17437  		var n int32 = 1
 17438  		c = uint32(validBits[c-uint32(0xc0)])
 17439  		for int32(*(*uint8)(unsafe.Pointer(z + uintptr(n))))&0xc0 == 0x80 {
 17440  			c = c<<6 + uint32(0x3f&int32(*(*uint8)(unsafe.Pointer(z + uintptr(libc.PostIncInt32(&n, 1))))))
 17441  		}
 17442  		if c < uint32(0x80) || c&0xFFFFF800 == uint32(0xD800) || c&0xFFFFFFFE == uint32(0xFFFE) {
 17443  			c = uint32(0xFFFD)
 17444  		}
 17445  		*(*uint32)(unsafe.Pointer(pOut)) = c
 17446  		return n
 17447  	}
 17448  	return int32(0)
 17449  }
 17450  
 17451  var validBits = [64]uint8{
 17452  	uint8(0x00), uint8(0x01), uint8(0x02), uint8(0x03), uint8(0x04), uint8(0x05), uint8(0x06), uint8(0x07),
 17453  	uint8(0x08), uint8(0x09), uint8(0x0a), uint8(0x0b), uint8(0x0c), uint8(0x0d), uint8(0x0e), uint8(0x0f),
 17454  	uint8(0x10), uint8(0x11), uint8(0x12), uint8(0x13), uint8(0x14), uint8(0x15), uint8(0x16), uint8(0x17),
 17455  	uint8(0x18), uint8(0x19), uint8(0x1a), uint8(0x1b), uint8(0x1c), uint8(0x1d), uint8(0x1e), uint8(0x1f),
 17456  	uint8(0x00), uint8(0x01), uint8(0x02), uint8(0x03), uint8(0x04), uint8(0x05), uint8(0x06), uint8(0x07),
 17457  	uint8(0x08), uint8(0x09), uint8(0x0a), uint8(0x0b), uint8(0x0c), uint8(0x0d), uint8(0x0e), uint8(0x0f),
 17458  	uint8(0x00), uint8(0x01), uint8(0x02), uint8(0x03), uint8(0x04), uint8(0x05), uint8(0x06), uint8(0x07),
 17459  	uint8(0x00), uint8(0x01), uint8(0x02), uint8(0x03), uint8(0x00), uint8(0x01), uint8(0x00), uint8(0x00),
 17460  }
 17461  
 17462  func findNextChars(tls *libc.TLS, p uintptr) {
 17463  	bp := tls.Alloc(12)
 17464  	defer tls.Free(12)
 17465  
 17466  	var cPrev uint32 = uint32(0)
 17467  
 17468  	var n int32
 17469  	var rc int32
 17470  
 17471  	for {
 17472  		sqlite3.Xsqlite3_bind_text(tls, (*nextCharContext)(unsafe.Pointer(p)).FpStmt, 1, (*nextCharContext)(unsafe.Pointer(p)).FzPrefix, (*nextCharContext)(unsafe.Pointer(p)).FnPrefix,
 17473  			uintptr(0))
 17474  		n = writeUtf8(tls, bp, cPrev+uint32(1))
 17475  		sqlite3.Xsqlite3_bind_text(tls, (*nextCharContext)(unsafe.Pointer(p)).FpStmt, 2, bp, n, uintptr(0))
 17476  		rc = sqlite3.Xsqlite3_step(tls, (*nextCharContext)(unsafe.Pointer(p)).FpStmt)
 17477  		if rc == SQLITE_DONE {
 17478  			sqlite3.Xsqlite3_reset(tls, (*nextCharContext)(unsafe.Pointer(p)).FpStmt)
 17479  			return
 17480  		} else if rc != SQLITE_ROW {
 17481  			(*nextCharContext)(unsafe.Pointer(p)).FotherError = rc
 17482  			return
 17483  		} else {
 17484  			var zOut uintptr = sqlite3.Xsqlite3_column_text(tls, (*nextCharContext)(unsafe.Pointer(p)).FpStmt, 0)
 17485  
 17486  			n = readUtf8(tls, zOut+uintptr((*nextCharContext)(unsafe.Pointer(p)).FnPrefix), bp+8)
 17487  			sqlite3.Xsqlite3_reset(tls, (*nextCharContext)(unsafe.Pointer(p)).FpStmt)
 17488  			nextCharAppend(tls, p, *(*uint32)(unsafe.Pointer(bp + 8)))
 17489  			cPrev = *(*uint32)(unsafe.Pointer(bp + 8))
 17490  			if (*nextCharContext)(unsafe.Pointer(p)).FmallocFailed != 0 {
 17491  				return
 17492  			}
 17493  		}
 17494  	}
 17495  }
 17496  
 17497  func nextCharFunc(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 17498  	bp := tls.Alloc(136)
 17499  	defer tls.Free(136)
 17500  
 17501  	var zTable uintptr = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 17502  	var zField uintptr = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + 2*8)))
 17503  	var zWhere uintptr
 17504  	var zCollName uintptr
 17505  	var zWhereClause uintptr = uintptr(0)
 17506  	var zColl uintptr = uintptr(0)
 17507  	var zSql uintptr
 17508  	var rc int32
 17509  
 17510  	libc.Xmemset(tls, bp+80, 0, uint64(unsafe.Sizeof(nextCharContext{})))
 17511  	(*nextCharContext)(unsafe.Pointer(bp + 80)).Fdb = sqlite3.Xsqlite3_context_db_handle(tls, context)
 17512  	(*nextCharContext)(unsafe.Pointer(bp + 80)).FzPrefix = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 17513  	(*nextCharContext)(unsafe.Pointer(bp + 80)).FnPrefix = sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(argv)))
 17514  	if zTable == uintptr(0) || zField == uintptr(0) || (*nextCharContext)(unsafe.Pointer(bp+80)).FzPrefix == uintptr(0) {
 17515  		return
 17516  	}
 17517  	if argc >= 4 &&
 17518  		libc.AssignUintptr(&zWhere, sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + 3*8)))) != uintptr(0) &&
 17519  		int32(*(*uint8)(unsafe.Pointer(zWhere))) != 0 {
 17520  		zWhereClause = sqlite3.Xsqlite3_mprintf(tls, ts+5706, libc.VaList(bp, zWhere))
 17521  		if zWhereClause == uintptr(0) {
 17522  			sqlite3.Xsqlite3_result_error_nomem(tls, context)
 17523  			return
 17524  		}
 17525  	} else {
 17526  		zWhereClause = ts + 584
 17527  	}
 17528  	if argc >= 5 &&
 17529  		libc.AssignUintptr(&zCollName, sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + 4*8)))) != uintptr(0) &&
 17530  		int32(*(*uint8)(unsafe.Pointer(zCollName))) != 0 {
 17531  		zColl = sqlite3.Xsqlite3_mprintf(tls, ts+5715, libc.VaList(bp+8, zCollName))
 17532  		if zColl == uintptr(0) {
 17533  			sqlite3.Xsqlite3_result_error_nomem(tls, context)
 17534  			if *(*uint8)(unsafe.Pointer(zWhereClause)) != 0 {
 17535  				sqlite3.Xsqlite3_free(tls, zWhereClause)
 17536  			}
 17537  			return
 17538  		}
 17539  	} else {
 17540  		zColl = ts + 584
 17541  	}
 17542  	zSql = sqlite3.Xsqlite3_mprintf(tls,
 17543  		ts+5728,
 17544  		libc.VaList(bp+16, zField, zTable, zField, zColl, zField, zColl, zWhereClause, zColl))
 17545  	if *(*uint8)(unsafe.Pointer(zWhereClause)) != 0 {
 17546  		sqlite3.Xsqlite3_free(tls, zWhereClause)
 17547  	}
 17548  	if *(*uint8)(unsafe.Pointer(zColl)) != 0 {
 17549  		sqlite3.Xsqlite3_free(tls, zColl)
 17550  	}
 17551  	if zSql == uintptr(0) {
 17552  		sqlite3.Xsqlite3_result_error_nomem(tls, context)
 17553  		return
 17554  	}
 17555  
 17556  	rc = sqlite3.Xsqlite3_prepare_v2(tls, (*nextCharContext)(unsafe.Pointer(bp+80)).Fdb, zSql, -1, bp+80+8, uintptr(0))
 17557  	sqlite3.Xsqlite3_free(tls, zSql)
 17558  	if rc != 0 {
 17559  		sqlite3.Xsqlite3_result_error(tls, context, sqlite3.Xsqlite3_errmsg(tls, (*nextCharContext)(unsafe.Pointer(bp+80)).Fdb), -1)
 17560  		return
 17561  	}
 17562  	findNextChars(tls, bp+80)
 17563  	if (*nextCharContext)(unsafe.Pointer(bp+80)).FmallocFailed != 0 {
 17564  		sqlite3.Xsqlite3_result_error_nomem(tls, context)
 17565  	} else {
 17566  		var pRes uintptr
 17567  		pRes = sqlite3.Xsqlite3_malloc64(tls, uint64((*nextCharContext)(unsafe.Pointer(bp+80)).FnUsed*4+1))
 17568  		if pRes == uintptr(0) {
 17569  			sqlite3.Xsqlite3_result_error_nomem(tls, context)
 17570  		} else {
 17571  			var i int32
 17572  			var n int32 = 0
 17573  			for i = 0; i < (*nextCharContext)(unsafe.Pointer(bp+80)).FnUsed; i++ {
 17574  				n = n + writeUtf8(tls, pRes+uintptr(n), *(*uint32)(unsafe.Pointer((*nextCharContext)(unsafe.Pointer(bp+80)).FaResult + uintptr(i)*4)))
 17575  			}
 17576  			*(*uint8)(unsafe.Pointer(pRes + uintptr(n))) = uint8(0)
 17577  			sqlite3.Xsqlite3_result_text(tls, context, pRes, n, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{sqlite3.Xsqlite3_free})))
 17578  		}
 17579  	}
 17580  	sqlite3.Xsqlite3_finalize(tls, (*nextCharContext)(unsafe.Pointer(bp+80)).FpStmt)
 17581  	sqlite3.Xsqlite3_free(tls, (*nextCharContext)(unsafe.Pointer(bp+80)).FaResult)
 17582  }
 17583  
 17584  func sqlite3_nextchar_init(tls *libc.TLS, db uintptr, pzErrMsg uintptr, pApi uintptr) int32 {
 17585  	var rc int32 = SQLITE_OK
 17586  	_ = pApi
 17587  
 17588  	_ = pzErrMsg
 17589  	rc = sqlite3.Xsqlite3_create_function(tls, db, ts+5836, 3,
 17590  		SQLITE_UTF8|SQLITE_INNOCUOUS, uintptr(0),
 17591  		*(*uintptr)(unsafe.Pointer(&struct {
 17592  			f func(*libc.TLS, uintptr, int32, uintptr)
 17593  		}{nextCharFunc})), uintptr(0), uintptr(0))
 17594  	if rc == SQLITE_OK {
 17595  		rc = sqlite3.Xsqlite3_create_function(tls, db, ts+5836, 4,
 17596  			SQLITE_UTF8|SQLITE_INNOCUOUS, uintptr(0),
 17597  			*(*uintptr)(unsafe.Pointer(&struct {
 17598  				f func(*libc.TLS, uintptr, int32, uintptr)
 17599  			}{nextCharFunc})), uintptr(0), uintptr(0))
 17600  	}
 17601  	if rc == SQLITE_OK {
 17602  		rc = sqlite3.Xsqlite3_create_function(tls, db, ts+5836, 5,
 17603  			SQLITE_UTF8|SQLITE_INNOCUOUS, uintptr(0),
 17604  			*(*uintptr)(unsafe.Pointer(&struct {
 17605  				f func(*libc.TLS, uintptr, int32, uintptr)
 17606  			}{nextCharFunc})), uintptr(0), uintptr(0))
 17607  	}
 17608  	return rc
 17609  }
 17610  
 17611  var aiClass = [256]uint8{
 17612  	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),
 17613  	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),
 17614  	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),
 17615  	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),
 17616  	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),
 17617  	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),
 17618  	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),
 17619  	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),
 17620  	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),
 17621  	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),
 17622  	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),
 17623  	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),
 17624  	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),
 17625  	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),
 17626  	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),
 17627  	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),
 17628  }
 17629  
 17630  var sqlite3UpperToLower = [256]uint8{
 17631  	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),
 17632  	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),
 17633  	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),
 17634  	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),
 17635  	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),
 17636  	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),
 17637  	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),
 17638  	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),
 17639  	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),
 17640  	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),
 17641  	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),
 17642  	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),
 17643  	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),
 17644  	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),
 17645  	uint8(252), uint8(253), uint8(254), uint8(255),
 17646  }
 17647  
 17648  var sqlite3CtypeMap = [256]uint8{
 17649  	uint8(0x00), uint8(0x00), uint8(0x00), uint8(0x00), uint8(0x00), uint8(0x00), uint8(0x00), uint8(0x00),
 17650  	uint8(0x00), uint8(0x01), uint8(0x01), uint8(0x01), uint8(0x01), uint8(0x01), uint8(0x00), uint8(0x00),
 17651  	uint8(0x00), uint8(0x00), uint8(0x00), uint8(0x00), uint8(0x00), uint8(0x00), uint8(0x00), uint8(0x00),
 17652  	uint8(0x00), uint8(0x00), uint8(0x00), uint8(0x00), uint8(0x00), uint8(0x00), uint8(0x00), uint8(0x00),
 17653  	uint8(0x01), uint8(0x00), uint8(0x80), uint8(0x00), uint8(0x40), uint8(0x00), uint8(0x00), uint8(0x80),
 17654  	uint8(0x00), uint8(0x00), uint8(0x00), uint8(0x00), uint8(0x00), uint8(0x00), uint8(0x00), uint8(0x00),
 17655  	uint8(0x0c), uint8(0x0c), uint8(0x0c), uint8(0x0c), uint8(0x0c), uint8(0x0c), uint8(0x0c), uint8(0x0c),
 17656  	uint8(0x0c), uint8(0x0c), uint8(0x00), uint8(0x00), uint8(0x00), uint8(0x00), uint8(0x00), uint8(0x00),
 17657  	uint8(0x00), uint8(0x0a), uint8(0x0a), uint8(0x0a), uint8(0x0a), uint8(0x0a), uint8(0x0a), uint8(0x02),
 17658  	uint8(0x02), uint8(0x02), uint8(0x02), uint8(0x02), uint8(0x02), uint8(0x02), uint8(0x02), uint8(0x02),
 17659  	uint8(0x02), uint8(0x02), uint8(0x02), uint8(0x02), uint8(0x02), uint8(0x02), uint8(0x02), uint8(0x02),
 17660  	uint8(0x02), uint8(0x02), uint8(0x02), uint8(0x80), uint8(0x00), uint8(0x00), uint8(0x00), uint8(0x40),
 17661  	uint8(0x80), uint8(0x2a), uint8(0x2a), uint8(0x2a), uint8(0x2a), uint8(0x2a), uint8(0x2a), uint8(0x22),
 17662  	uint8(0x22), uint8(0x22), uint8(0x22), uint8(0x22), uint8(0x22), uint8(0x22), uint8(0x22), uint8(0x22),
 17663  	uint8(0x22), uint8(0x22), uint8(0x22), uint8(0x22), uint8(0x22), uint8(0x22), uint8(0x22), uint8(0x22),
 17664  	uint8(0x22), uint8(0x22), uint8(0x22), uint8(0x00), uint8(0x00), uint8(0x00), uint8(0x00), uint8(0x00),
 17665  	uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40),
 17666  	uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40),
 17667  	uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40),
 17668  	uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40),
 17669  	uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40),
 17670  	uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40),
 17671  	uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40),
 17672  	uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40),
 17673  	uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40),
 17674  	uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40),
 17675  	uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40),
 17676  	uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40),
 17677  	uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40),
 17678  	uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40),
 17679  	uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40),
 17680  	uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40),
 17681  }
 17682  
 17683  func sqlite3GetToken(tls *libc.TLS, z uintptr, tokenType uintptr) int32 {
 17684  	var i int32
 17685  	var c int32
 17686  	switch int32(aiClass[*(*uint8)(unsafe.Pointer(z))]) {
 17687  	case CC_SPACE:
 17688  		{
 17689  			for i = 1; int32(sqlite3CtypeMap[*(*uint8)(unsafe.Pointer(z + uintptr(i)))])&0x01 != 0; i++ {
 17690  			}
 17691  			*(*int32)(unsafe.Pointer(tokenType)) = TK_SPACE
 17692  			return i
 17693  
 17694  		}
 17695  	case CC_MINUS:
 17696  		{
 17697  			if int32(*(*uint8)(unsafe.Pointer(z + 1))) == '-' {
 17698  				for i = 2; libc.AssignInt32(&c, int32(*(*uint8)(unsafe.Pointer(z + uintptr(i))))) != 0 && c != '\n'; i++ {
 17699  				}
 17700  				*(*int32)(unsafe.Pointer(tokenType)) = TK_SPACE
 17701  				return i
 17702  			}
 17703  			*(*int32)(unsafe.Pointer(tokenType)) = TK_PUNCT
 17704  			return 1
 17705  
 17706  		}
 17707  	case CC_LP:
 17708  		{
 17709  			*(*int32)(unsafe.Pointer(tokenType)) = TK_PUNCT
 17710  			return 1
 17711  
 17712  		}
 17713  	case CC_RP:
 17714  		{
 17715  			*(*int32)(unsafe.Pointer(tokenType)) = TK_PUNCT
 17716  			return 1
 17717  
 17718  		}
 17719  	case CC_SEMI:
 17720  		{
 17721  			*(*int32)(unsafe.Pointer(tokenType)) = TK_PUNCT
 17722  			return 1
 17723  
 17724  		}
 17725  	case CC_PLUS:
 17726  		{
 17727  			*(*int32)(unsafe.Pointer(tokenType)) = TK_PUNCT
 17728  			return 1
 17729  
 17730  		}
 17731  	case CC_STAR:
 17732  		{
 17733  			*(*int32)(unsafe.Pointer(tokenType)) = TK_PUNCT
 17734  			return 1
 17735  
 17736  		}
 17737  	case CC_SLASH:
 17738  		{
 17739  			if int32(*(*uint8)(unsafe.Pointer(z + 1))) != '*' || int32(*(*uint8)(unsafe.Pointer(z + 2))) == 0 {
 17740  				*(*int32)(unsafe.Pointer(tokenType)) = TK_PUNCT
 17741  				return 1
 17742  			}
 17743  			i = 3
 17744  			c = int32(*(*uint8)(unsafe.Pointer(z + 2)))
 17745  			for ; (c != '*' || int32(*(*uint8)(unsafe.Pointer(z + uintptr(i)))) != '/') && libc.AssignInt32(&c, int32(*(*uint8)(unsafe.Pointer(z + uintptr(i))))) != 0; i++ {
 17746  			}
 17747  			if c != 0 {
 17748  				i++
 17749  			}
 17750  			*(*int32)(unsafe.Pointer(tokenType)) = TK_SPACE
 17751  			return i
 17752  
 17753  		}
 17754  	case CC_PERCENT:
 17755  		{
 17756  			*(*int32)(unsafe.Pointer(tokenType)) = TK_PUNCT
 17757  			return 1
 17758  
 17759  		}
 17760  	case CC_EQ:
 17761  		{
 17762  			*(*int32)(unsafe.Pointer(tokenType)) = TK_PUNCT
 17763  			return 1 + libc.Bool32(int32(*(*uint8)(unsafe.Pointer(z + 1))) == '=')
 17764  
 17765  		}
 17766  	case CC_LT:
 17767  		{
 17768  			if libc.AssignInt32(&c, int32(*(*uint8)(unsafe.Pointer(z + 1)))) == '=' {
 17769  				*(*int32)(unsafe.Pointer(tokenType)) = TK_PUNCT
 17770  				return 2
 17771  			} else if c == '>' {
 17772  				*(*int32)(unsafe.Pointer(tokenType)) = TK_PUNCT
 17773  				return 2
 17774  			} else if c == '<' {
 17775  				*(*int32)(unsafe.Pointer(tokenType)) = TK_PUNCT
 17776  				return 2
 17777  			} else {
 17778  				*(*int32)(unsafe.Pointer(tokenType)) = TK_PUNCT
 17779  				return 1
 17780  			}
 17781  
 17782  		}
 17783  		fallthrough
 17784  	case CC_GT:
 17785  		{
 17786  			if libc.AssignInt32(&c, int32(*(*uint8)(unsafe.Pointer(z + 1)))) == '=' {
 17787  				*(*int32)(unsafe.Pointer(tokenType)) = TK_PUNCT
 17788  				return 2
 17789  			} else if c == '>' {
 17790  				*(*int32)(unsafe.Pointer(tokenType)) = TK_PUNCT
 17791  				return 2
 17792  			} else {
 17793  				*(*int32)(unsafe.Pointer(tokenType)) = TK_PUNCT
 17794  				return 1
 17795  			}
 17796  
 17797  		}
 17798  		fallthrough
 17799  	case CC_BANG:
 17800  		{
 17801  			if int32(*(*uint8)(unsafe.Pointer(z + 1))) != '=' {
 17802  				*(*int32)(unsafe.Pointer(tokenType)) = TK_ERROR
 17803  				return 1
 17804  			} else {
 17805  				*(*int32)(unsafe.Pointer(tokenType)) = TK_PUNCT
 17806  				return 2
 17807  			}
 17808  
 17809  		}
 17810  		fallthrough
 17811  	case CC_PIPE:
 17812  		{
 17813  			if int32(*(*uint8)(unsafe.Pointer(z + 1))) != '|' {
 17814  				*(*int32)(unsafe.Pointer(tokenType)) = TK_PUNCT
 17815  				return 1
 17816  			} else {
 17817  				*(*int32)(unsafe.Pointer(tokenType)) = TK_PUNCT
 17818  				return 2
 17819  			}
 17820  
 17821  		}
 17822  		fallthrough
 17823  	case CC_COMMA:
 17824  		{
 17825  			*(*int32)(unsafe.Pointer(tokenType)) = TK_PUNCT
 17826  			return 1
 17827  
 17828  		}
 17829  	case CC_AND:
 17830  		{
 17831  			*(*int32)(unsafe.Pointer(tokenType)) = TK_PUNCT
 17832  			return 1
 17833  
 17834  		}
 17835  	case CC_TILDA:
 17836  		{
 17837  			*(*int32)(unsafe.Pointer(tokenType)) = TK_PUNCT
 17838  			return 1
 17839  
 17840  		}
 17841  	case CC_QUOTE:
 17842  		{
 17843  			var delim int32 = int32(*(*uint8)(unsafe.Pointer(z)))
 17844  
 17845  			for i = 1; libc.AssignInt32(&c, int32(*(*uint8)(unsafe.Pointer(z + uintptr(i))))) != 0; i++ {
 17846  				if c == delim {
 17847  					if int32(*(*uint8)(unsafe.Pointer(z + uintptr(i+1)))) == delim {
 17848  						i++
 17849  					} else {
 17850  						break
 17851  					}
 17852  				}
 17853  			}
 17854  			if c == '\'' {
 17855  				*(*int32)(unsafe.Pointer(tokenType)) = TK_LITERAL
 17856  				return i + 1
 17857  			} else if c != 0 {
 17858  				*(*int32)(unsafe.Pointer(tokenType)) = TK_NAME
 17859  				return i + 1
 17860  			} else {
 17861  				*(*int32)(unsafe.Pointer(tokenType)) = TK_ERROR
 17862  				return i
 17863  			}
 17864  
 17865  		}
 17866  		fallthrough
 17867  	case CC_DOT:
 17868  		{
 17869  			if !(int32(sqlite3CtypeMap[*(*uint8)(unsafe.Pointer(z + 1))])&0x04 != 0) {
 17870  				*(*int32)(unsafe.Pointer(tokenType)) = TK_PUNCT
 17871  				return 1
 17872  			}
 17873  
 17874  		}
 17875  		fallthrough
 17876  	case CC_DIGIT:
 17877  		{
 17878  			*(*int32)(unsafe.Pointer(tokenType)) = TK_LITERAL
 17879  			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 {
 17880  				for i = 3; int32(sqlite3CtypeMap[*(*uint8)(unsafe.Pointer(z + uintptr(i)))])&0x08 != 0; i++ {
 17881  				}
 17882  				return i
 17883  			}
 17884  			for i = 0; int32(sqlite3CtypeMap[*(*uint8)(unsafe.Pointer(z + uintptr(i)))])&0x04 != 0; i++ {
 17885  			}
 17886  			if int32(*(*uint8)(unsafe.Pointer(z + uintptr(i)))) == '.' {
 17887  				i++
 17888  				for int32(sqlite3CtypeMap[*(*uint8)(unsafe.Pointer(z + uintptr(i)))])&0x04 != 0 {
 17889  					i++
 17890  				}
 17891  				*(*int32)(unsafe.Pointer(tokenType)) = TK_LITERAL
 17892  			}
 17893  			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 ||
 17894  				(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) {
 17895  				i = i + 2
 17896  				for int32(sqlite3CtypeMap[*(*uint8)(unsafe.Pointer(z + uintptr(i)))])&0x04 != 0 {
 17897  					i++
 17898  				}
 17899  				*(*int32)(unsafe.Pointer(tokenType)) = TK_LITERAL
 17900  			}
 17901  			for int32(sqlite3CtypeMap[*(*uint8)(unsafe.Pointer(z + uintptr(i)))])&0x46 != 0 {
 17902  				*(*int32)(unsafe.Pointer(tokenType)) = TK_ERROR
 17903  				i++
 17904  			}
 17905  			return i
 17906  
 17907  		}
 17908  	case CC_QUOTE2:
 17909  		{
 17910  			i = 1
 17911  			c = int32(*(*uint8)(unsafe.Pointer(z)))
 17912  			for ; c != ']' && libc.AssignInt32(&c, int32(*(*uint8)(unsafe.Pointer(z + uintptr(i))))) != 0; i++ {
 17913  			}
 17914  			*(*int32)(unsafe.Pointer(tokenType)) = func() int32 {
 17915  				if c == ']' {
 17916  					return TK_NAME
 17917  				}
 17918  				return TK_ERROR
 17919  			}()
 17920  			return i
 17921  
 17922  		}
 17923  	case CC_VARNUM:
 17924  		{
 17925  			*(*int32)(unsafe.Pointer(tokenType)) = TK_LITERAL
 17926  			for i = 1; int32(sqlite3CtypeMap[*(*uint8)(unsafe.Pointer(z + uintptr(i)))])&0x04 != 0; i++ {
 17927  			}
 17928  			return i
 17929  
 17930  		}
 17931  	case CC_DOLLAR:
 17932  		fallthrough
 17933  	case CC_VARALPHA:
 17934  		{
 17935  			var n int32 = 0
 17936  
 17937  			*(*int32)(unsafe.Pointer(tokenType)) = TK_LITERAL
 17938  			for i = 1; libc.AssignInt32(&c, int32(*(*uint8)(unsafe.Pointer(z + uintptr(i))))) != 0; i++ {
 17939  				if int32(sqlite3CtypeMap[uint8(c)])&0x46 != 0 {
 17940  					n++
 17941  				} else if c == '(' && n > 0 {
 17942  					for __ccgo := true; __ccgo; __ccgo = libc.AssignInt32(&c, int32(*(*uint8)(unsafe.Pointer(z + uintptr(i))))) != 0 && !(int32(sqlite3CtypeMap[uint8(c)])&0x01 != 0) && c != ')' {
 17943  						i++
 17944  					}
 17945  					if c == ')' {
 17946  						i++
 17947  					} else {
 17948  						*(*int32)(unsafe.Pointer(tokenType)) = TK_ERROR
 17949  					}
 17950  					break
 17951  				} else if c == ':' && int32(*(*uint8)(unsafe.Pointer(z + uintptr(i+1)))) == ':' {
 17952  					i++
 17953  				} else {
 17954  					break
 17955  				}
 17956  			}
 17957  			if n == 0 {
 17958  				*(*int32)(unsafe.Pointer(tokenType)) = TK_ERROR
 17959  			}
 17960  			return i
 17961  
 17962  		}
 17963  	case CC_KYWD:
 17964  		{
 17965  			for i = 1; int32(aiClass[*(*uint8)(unsafe.Pointer(z + uintptr(i)))]) <= CC_KYWD; i++ {
 17966  			}
 17967  			if int32(sqlite3CtypeMap[*(*uint8)(unsafe.Pointer(z + uintptr(i)))])&0x46 != 0 {
 17968  				i++
 17969  				break
 17970  			}
 17971  			*(*int32)(unsafe.Pointer(tokenType)) = TK_NAME
 17972  			return i
 17973  
 17974  		}
 17975  	case CC_X:
 17976  		{
 17977  			if int32(*(*uint8)(unsafe.Pointer(z + 1))) == '\'' {
 17978  				*(*int32)(unsafe.Pointer(tokenType)) = TK_LITERAL
 17979  				for i = 2; int32(sqlite3CtypeMap[*(*uint8)(unsafe.Pointer(z + uintptr(i)))])&0x08 != 0; i++ {
 17980  				}
 17981  				if int32(*(*uint8)(unsafe.Pointer(z + uintptr(i)))) != '\'' || i%2 != 0 {
 17982  					*(*int32)(unsafe.Pointer(tokenType)) = TK_ERROR
 17983  					for *(*uint8)(unsafe.Pointer(z + uintptr(i))) != 0 && int32(*(*uint8)(unsafe.Pointer(z + uintptr(i)))) != '\'' {
 17984  						i++
 17985  					}
 17986  				}
 17987  				if *(*uint8)(unsafe.Pointer(z + uintptr(i))) != 0 {
 17988  					i++
 17989  				}
 17990  				return i
 17991  			}
 17992  
 17993  		}
 17994  		fallthrough
 17995  	case CC_ID:
 17996  		{
 17997  			i = 1
 17998  			break
 17999  
 18000  		}
 18001  	default:
 18002  		{
 18003  			*(*int32)(unsafe.Pointer(tokenType)) = TK_ERROR
 18004  			return 1
 18005  
 18006  		}
 18007  	}
 18008  	for int32(sqlite3CtypeMap[*(*uint8)(unsafe.Pointer(z + uintptr(i)))])&0x46 != 0 {
 18009  		i++
 18010  	}
 18011  	*(*int32)(unsafe.Pointer(tokenType)) = TK_NAME
 18012  	return i
 18013  }
 18014  
 18015  func sqlite3_normalize(tls *libc.TLS, zSql uintptr) uintptr {
 18016  	bp := tls.Alloc(4)
 18017  	defer tls.Free(4)
 18018  
 18019  	var z uintptr
 18020  	var nZ sqlite3_int64
 18021  	var nSql sqlite3_int64
 18022  	var i int32
 18023  	var j int32
 18024  
 18025  	var n int32
 18026  	var k int32
 18027  
 18028  	nSql = sqlite3_int64(libc.Xstrlen(tls, zSql))
 18029  	nZ = nSql
 18030  	z = sqlite3.Xsqlite3_malloc64(tls, uint64(nZ+int64(2)))
 18031  	if z == uintptr(0) {
 18032  		return uintptr(0)
 18033  	}
 18034  	for i = libc.AssignInt32(&j, 0); *(*uint8)(unsafe.Pointer(zSql + uintptr(i))) != 0; i = i + n {
 18035  		n = sqlite3GetToken(tls, zSql+uintptr(i), bp)
 18036  		switch *(*int32)(unsafe.Pointer(bp)) {
 18037  		case TK_SPACE:
 18038  			{
 18039  				break
 18040  
 18041  			}
 18042  		case TK_ERROR:
 18043  			{
 18044  				sqlite3.Xsqlite3_free(tls, z)
 18045  				return uintptr(0)
 18046  
 18047  			}
 18048  		case TK_LITERAL:
 18049  			{
 18050  				*(*uint8)(unsafe.Pointer(z + uintptr(libc.PostIncInt32(&j, 1)))) = uint8('?')
 18051  				break
 18052  
 18053  			}
 18054  		case TK_PUNCT:
 18055  			fallthrough
 18056  		case TK_NAME:
 18057  			{
 18058  				if n == 4 && sqlite3.Xsqlite3_strnicmp(tls, zSql+uintptr(i), ts+5846, 4) == 0 {
 18059  					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) ||
 18060  						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) {
 18061  					} else {
 18062  						*(*uint8)(unsafe.Pointer(z + uintptr(libc.PostIncInt32(&j, 1)))) = uint8('?')
 18063  						break
 18064  					}
 18065  				}
 18066  				if j > 0 && int32(sqlite3CtypeMap[*(*uint8)(unsafe.Pointer(z + uintptr(j-1)))])&0x46 != 0 && int32(sqlite3CtypeMap[*(*uint8)(unsafe.Pointer(zSql + uintptr(i)))])&0x46 != 0 {
 18067  					*(*uint8)(unsafe.Pointer(z + uintptr(libc.PostIncInt32(&j, 1)))) = uint8(' ')
 18068  				}
 18069  				for k = 0; k < n; k++ {
 18070  					*(*uint8)(unsafe.Pointer(z + uintptr(libc.PostIncInt32(&j, 1)))) = sqlite3UpperToLower[*(*uint8)(unsafe.Pointer(zSql + uintptr(i+k)))]
 18071  				}
 18072  				break
 18073  
 18074  			}
 18075  		}
 18076  	}
 18077  	for j > 0 && int32(*(*uint8)(unsafe.Pointer(z + uintptr(j-1)))) == ' ' {
 18078  		j--
 18079  	}
 18080  	if j > 0 && int32(*(*uint8)(unsafe.Pointer(z + uintptr(j-1)))) != ';' {
 18081  		*(*uint8)(unsafe.Pointer(z + uintptr(libc.PostIncInt32(&j, 1)))) = uint8(';')
 18082  	}
 18083  	*(*uint8)(unsafe.Pointer(z + uintptr(j))) = uint8(0)
 18084  
 18085  	for i = 0; i < j; i = n {
 18086  		var zIn uintptr = libc.Xstrstr(tls, z+uintptr(i), ts+5858)
 18087  		var nParen int32
 18088  		if zIn == uintptr(0) {
 18089  			break
 18090  		}
 18091  		n = int32((int64(zIn)-int64(z))/1) + 3
 18092  		if n != 0 && int32(sqlite3CtypeMap[*(*uint8)(unsafe.Pointer(zIn + libc.UintptrFromInt32(-1)))])&0x46 != 0 {
 18093  			continue
 18094  		}
 18095  		if libc.Xstrncmp(tls, zIn, ts+5862, uint64(9)) == 0 && !(int32(sqlite3CtypeMap[*(*uint8)(unsafe.Pointer(zIn + 9))])&0x46 != 0) {
 18096  			continue
 18097  		}
 18098  		if libc.Xstrncmp(tls, zIn, ts+5872, uint64(7)) == 0 && !(int32(sqlite3CtypeMap[*(*uint8)(unsafe.Pointer(zIn + 7))])&0x46 != 0) {
 18099  			continue
 18100  		}
 18101  		nParen = 1
 18102  		k = 0
 18103  		for ; *(*uint8)(unsafe.Pointer(z + uintptr(n+k))) != 0; k++ {
 18104  			if int32(*(*uint8)(unsafe.Pointer(z + uintptr(n+k)))) == '(' {
 18105  				nParen++
 18106  			}
 18107  			if int32(*(*uint8)(unsafe.Pointer(z + uintptr(n+k)))) == ')' {
 18108  				nParen--
 18109  				if nParen == 0 {
 18110  					break
 18111  				}
 18112  			}
 18113  		}
 18114  
 18115  		if k < 5 {
 18116  			z = sqlite3.Xsqlite3_realloc64(tls, z, uint64(j+(5-k)+1))
 18117  			if z == uintptr(0) {
 18118  				return uintptr(0)
 18119  			}
 18120  			libc.Xmemmove(tls, z+uintptr(n)+uintptr(5), z+uintptr(n)+uintptr(k), uint64(j-(n+k)))
 18121  		} else if k > 5 {
 18122  			libc.Xmemmove(tls, z+uintptr(n)+uintptr(5), z+uintptr(n)+uintptr(k), uint64(j-(n+k)))
 18123  		}
 18124  		j = j - k + 5
 18125  		*(*uint8)(unsafe.Pointer(z + uintptr(j))) = uint8(0)
 18126  		libc.Xmemcpy(tls, z+uintptr(n), ts+5880, uint64(5))
 18127  	}
 18128  	return z
 18129  }
 18130  
 18131  type Percentile1 = struct {
 18132  	FnAlloc uint32
 18133  	FnUsed  uint32
 18134  	FrPct   float64
 18135  	Fa      uintptr
 18136  }
 18137  
 18138  type Percentile = Percentile1
 18139  
 18140  func isInfinity(tls *libc.TLS, r float64) int32 {
 18141  	bp := tls.Alloc(16)
 18142  	defer tls.Free(16)
 18143  	*(*float64)(unsafe.Pointer(bp + 8)) = r
 18144  
 18145  	libc.Xmemcpy(tls, bp, bp+8, uint64(unsafe.Sizeof(sqlite3_uint64(0))))
 18146  	return libc.Bool32(*(*sqlite3_uint64)(unsafe.Pointer(bp))>>52&uint64(0x7ff) == uint64(0x7ff))
 18147  }
 18148  
 18149  func sameValue(tls *libc.TLS, a float64, b float64) int32 {
 18150  	a = a - b
 18151  	return libc.Bool32(a >= -0.001 && a <= 0.001)
 18152  }
 18153  
 18154  func percentStep(tls *libc.TLS, pCtx uintptr, argc int32, argv uintptr) {
 18155  	var p uintptr
 18156  	var rPct float64
 18157  	var eType int32
 18158  	var y float64
 18159  
 18160  	eType = sqlite3.Xsqlite3_value_numeric_type(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 18161  	rPct = sqlite3.Xsqlite3_value_double(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 18162  	if eType != SQLITE_INTEGER && eType != SQLITE_FLOAT ||
 18163  		rPct < 0.0 || rPct > 100.0 {
 18164  		sqlite3.Xsqlite3_result_error(tls, pCtx,
 18165  			ts+5886, -1)
 18166  		return
 18167  	}
 18168  
 18169  	p = sqlite3.Xsqlite3_aggregate_context(tls, pCtx, int32(unsafe.Sizeof(Percentile{})))
 18170  	if p == uintptr(0) {
 18171  		return
 18172  	}
 18173  
 18174  	if (*Percentile)(unsafe.Pointer(p)).FrPct == 0.0 {
 18175  		(*Percentile)(unsafe.Pointer(p)).FrPct = rPct + 1.0
 18176  	} else if !(sameValue(tls, (*Percentile)(unsafe.Pointer(p)).FrPct, rPct+1.0) != 0) {
 18177  		sqlite3.Xsqlite3_result_error(tls, pCtx,
 18178  			ts+5953, -1)
 18179  		return
 18180  	}
 18181  
 18182  	eType = sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(argv)))
 18183  	if eType == SQLITE_NULL {
 18184  		return
 18185  	}
 18186  
 18187  	if eType != SQLITE_INTEGER && eType != SQLITE_FLOAT {
 18188  		sqlite3.Xsqlite3_result_error(tls, pCtx,
 18189  			ts+6017, -1)
 18190  		return
 18191  	}
 18192  
 18193  	y = sqlite3.Xsqlite3_value_double(tls, *(*uintptr)(unsafe.Pointer(argv)))
 18194  	if isInfinity(tls, y) != 0 {
 18195  		sqlite3.Xsqlite3_result_error(tls, pCtx, ts+6061, -1)
 18196  		return
 18197  	}
 18198  
 18199  	if (*Percentile)(unsafe.Pointer(p)).FnUsed >= (*Percentile)(unsafe.Pointer(p)).FnAlloc {
 18200  		var n uint32 = (*Percentile)(unsafe.Pointer(p)).FnAlloc*uint32(2) + uint32(250)
 18201  		var a uintptr = sqlite3.Xsqlite3_realloc64(tls, (*Percentile)(unsafe.Pointer(p)).Fa, uint64(unsafe.Sizeof(float64(0)))*uint64(n))
 18202  		if a == uintptr(0) {
 18203  			sqlite3.Xsqlite3_free(tls, (*Percentile)(unsafe.Pointer(p)).Fa)
 18204  			libc.Xmemset(tls, p, 0, uint64(unsafe.Sizeof(Percentile{})))
 18205  			sqlite3.Xsqlite3_result_error_nomem(tls, pCtx)
 18206  			return
 18207  		}
 18208  		(*Percentile)(unsafe.Pointer(p)).FnAlloc = n
 18209  		(*Percentile)(unsafe.Pointer(p)).Fa = a
 18210  	}
 18211  	*(*float64)(unsafe.Pointer((*Percentile)(unsafe.Pointer(p)).Fa + uintptr(libc.PostIncUint32(&(*Percentile)(unsafe.Pointer(p)).FnUsed, 1))*8)) = y
 18212  }
 18213  
 18214  func doubleCmp(tls *libc.TLS, pA uintptr, pB uintptr) int32 {
 18215  	var a float64 = *(*float64)(unsafe.Pointer(pA))
 18216  	var b float64 = *(*float64)(unsafe.Pointer(pB))
 18217  	if a == b {
 18218  		return 0
 18219  	}
 18220  	if a < b {
 18221  		return -1
 18222  	}
 18223  	return +1
 18224  }
 18225  
 18226  func percentFinal(tls *libc.TLS, pCtx uintptr) {
 18227  	var p uintptr
 18228  	var i1 uint32
 18229  	var i2 uint32
 18230  	var v1 float64
 18231  	var v2 float64
 18232  	var ix float64
 18233  	var vx float64
 18234  	p = sqlite3.Xsqlite3_aggregate_context(tls, pCtx, 0)
 18235  	if p == uintptr(0) {
 18236  		return
 18237  	}
 18238  	if (*Percentile)(unsafe.Pointer(p)).Fa == uintptr(0) {
 18239  		return
 18240  	}
 18241  	if (*Percentile)(unsafe.Pointer(p)).FnUsed != 0 {
 18242  		libc.Xqsort(tls, (*Percentile)(unsafe.Pointer(p)).Fa, uint64((*Percentile)(unsafe.Pointer(p)).FnUsed), uint64(unsafe.Sizeof(float64(0))), *(*uintptr)(unsafe.Pointer(&struct {
 18243  			f func(*libc.TLS, uintptr, uintptr) int32
 18244  		}{doubleCmp})))
 18245  		ix = ((*Percentile)(unsafe.Pointer(p)).FrPct - 1.0) * float64((*Percentile)(unsafe.Pointer(p)).FnUsed-uint32(1)) * 0.01
 18246  		i1 = uint32(ix)
 18247  		if ix == float64(i1) || i1 == (*Percentile)(unsafe.Pointer(p)).FnUsed-uint32(1) {
 18248  			i2 = i1
 18249  		} else {
 18250  			i2 = i1 + uint32(1)
 18251  		}
 18252  		v1 = *(*float64)(unsafe.Pointer((*Percentile)(unsafe.Pointer(p)).Fa + uintptr(i1)*8))
 18253  		v2 = *(*float64)(unsafe.Pointer((*Percentile)(unsafe.Pointer(p)).Fa + uintptr(i2)*8))
 18254  		vx = v1 + (v2-v1)*(ix-float64(i1))
 18255  		sqlite3.Xsqlite3_result_double(tls, pCtx, vx)
 18256  	}
 18257  	sqlite3.Xsqlite3_free(tls, (*Percentile)(unsafe.Pointer(p)).Fa)
 18258  	libc.Xmemset(tls, p, 0, uint64(unsafe.Sizeof(Percentile{})))
 18259  }
 18260  
 18261  func sqlite3_percentile_init(tls *libc.TLS, db uintptr, pzErrMsg uintptr, pApi uintptr) int32 {
 18262  	var rc int32 = SQLITE_OK
 18263  	_ = pApi
 18264  
 18265  	_ = pzErrMsg
 18266  	rc = sqlite3.Xsqlite3_create_function(tls, db, ts+6087, 2,
 18267  		SQLITE_UTF8|SQLITE_INNOCUOUS, uintptr(0),
 18268  		uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 18269  			f func(*libc.TLS, uintptr, int32, uintptr)
 18270  		}{percentStep})), *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{percentFinal})))
 18271  	return rc
 18272  }
 18273  
 18274  type prefixes_vtab1 = struct{ Fbase sqlite3_vtab }
 18275  
 18276  type prefixes_vtab = prefixes_vtab1
 18277  
 18278  type prefixes_cursor1 = struct {
 18279  	Fbase        sqlite3_vtab_cursor
 18280  	FiRowid      sqlite3_int64
 18281  	FzStr        uintptr
 18282  	FnStr        int32
 18283  	F__ccgo_pad1 [4]byte
 18284  }
 18285  
 18286  type prefixes_cursor = prefixes_cursor1
 18287  
 18288  func prefixesConnect(tls *libc.TLS, db uintptr, pAux uintptr, argc int32, argv uintptr, ppVtab uintptr, pzErr uintptr) int32 {
 18289  	var pNew uintptr
 18290  	var rc int32
 18291  
 18292  	rc = sqlite3.Xsqlite3_declare_vtab(tls, db,
 18293  		ts+6098)
 18294  	if rc == SQLITE_OK {
 18295  		pNew = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(prefixes_vtab{})))
 18296  		*(*uintptr)(unsafe.Pointer(ppVtab)) = pNew
 18297  		if pNew == uintptr(0) {
 18298  			return SQLITE_NOMEM
 18299  		}
 18300  		libc.Xmemset(tls, pNew, 0, uint64(unsafe.Sizeof(prefixes_vtab{})))
 18301  		sqlite3.Xsqlite3_vtab_config(tls, db, SQLITE_VTAB_INNOCUOUS, 0)
 18302  	}
 18303  	return rc
 18304  }
 18305  
 18306  func prefixesDisconnect(tls *libc.TLS, pVtab uintptr) int32 {
 18307  	var p uintptr = pVtab
 18308  	sqlite3.Xsqlite3_free(tls, p)
 18309  	return SQLITE_OK
 18310  }
 18311  
 18312  func prefixesOpen(tls *libc.TLS, p uintptr, ppCursor uintptr) int32 {
 18313  	var pCur uintptr
 18314  	pCur = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(prefixes_cursor{})))
 18315  	if pCur == uintptr(0) {
 18316  		return SQLITE_NOMEM
 18317  	}
 18318  	libc.Xmemset(tls, pCur, 0, uint64(unsafe.Sizeof(prefixes_cursor{})))
 18319  	*(*uintptr)(unsafe.Pointer(ppCursor)) = pCur
 18320  	return SQLITE_OK
 18321  }
 18322  
 18323  func prefixesClose(tls *libc.TLS, cur uintptr) int32 {
 18324  	var pCur uintptr = cur
 18325  	sqlite3.Xsqlite3_free(tls, (*prefixes_cursor)(unsafe.Pointer(pCur)).FzStr)
 18326  	sqlite3.Xsqlite3_free(tls, pCur)
 18327  	return SQLITE_OK
 18328  }
 18329  
 18330  func prefixesNext(tls *libc.TLS, cur uintptr) int32 {
 18331  	var pCur uintptr = cur
 18332  	(*prefixes_cursor)(unsafe.Pointer(pCur)).FiRowid++
 18333  	return SQLITE_OK
 18334  }
 18335  
 18336  func prefixesColumn(tls *libc.TLS, cur uintptr, ctx uintptr, i int32) int32 {
 18337  	var pCur uintptr = cur
 18338  	switch i {
 18339  	case 0:
 18340  		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),
 18341  			uintptr(0))
 18342  		break
 18343  	default:
 18344  		sqlite3.Xsqlite3_result_text(tls, ctx, (*prefixes_cursor)(unsafe.Pointer(pCur)).FzStr, (*prefixes_cursor)(unsafe.Pointer(pCur)).FnStr, uintptr(0))
 18345  		break
 18346  	}
 18347  	return SQLITE_OK
 18348  }
 18349  
 18350  func prefixesRowid(tls *libc.TLS, cur uintptr, pRowid uintptr) int32 {
 18351  	var pCur uintptr = cur
 18352  	*(*sqlite_int64)(unsafe.Pointer(pRowid)) = (*prefixes_cursor)(unsafe.Pointer(pCur)).FiRowid
 18353  	return SQLITE_OK
 18354  }
 18355  
 18356  func prefixesEof(tls *libc.TLS, cur uintptr) int32 {
 18357  	var pCur uintptr = cur
 18358  	return libc.Bool32((*prefixes_cursor)(unsafe.Pointer(pCur)).FiRowid > sqlite3_int64((*prefixes_cursor)(unsafe.Pointer(pCur)).FnStr))
 18359  }
 18360  
 18361  func prefixesFilter(tls *libc.TLS, pVtabCursor uintptr, idxNum int32, idxStr uintptr, argc int32, argv uintptr) int32 {
 18362  	bp := tls.Alloc(8)
 18363  	defer tls.Free(8)
 18364  
 18365  	var pCur uintptr = pVtabCursor
 18366  	sqlite3.Xsqlite3_free(tls, (*prefixes_cursor)(unsafe.Pointer(pCur)).FzStr)
 18367  	if argc > 0 {
 18368  		(*prefixes_cursor)(unsafe.Pointer(pCur)).FzStr = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp, sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))))
 18369  		(*prefixes_cursor)(unsafe.Pointer(pCur)).FnStr = func() int32 {
 18370  			if (*prefixes_cursor)(unsafe.Pointer(pCur)).FzStr != 0 {
 18371  				return int32(libc.Xstrlen(tls, (*prefixes_cursor)(unsafe.Pointer(pCur)).FzStr))
 18372  			}
 18373  			return 0
 18374  		}()
 18375  	} else {
 18376  		(*prefixes_cursor)(unsafe.Pointer(pCur)).FzStr = uintptr(0)
 18377  		(*prefixes_cursor)(unsafe.Pointer(pCur)).FnStr = 0
 18378  	}
 18379  	(*prefixes_cursor)(unsafe.Pointer(pCur)).FiRowid = int64(0)
 18380  	return SQLITE_OK
 18381  }
 18382  
 18383  func prefixesBestIndex(tls *libc.TLS, tab uintptr, pIdxInfo uintptr) int32 {
 18384  	var i int32
 18385  	var p uintptr
 18386  
 18387  	i = 0
 18388  	p = (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint
 18389  __1:
 18390  	if !(i < (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnConstraint) {
 18391  		goto __3
 18392  	}
 18393  	{
 18394  		if (*sqlite3_index_constraint)(unsafe.Pointer(p)).FiColumn != 1 {
 18395  			goto __2
 18396  		}
 18397  		if int32((*sqlite3_index_constraint)(unsafe.Pointer(p)).Fop) != SQLITE_INDEX_CONSTRAINT_EQ {
 18398  			goto __2
 18399  		}
 18400  		if !(int32((*sqlite3_index_constraint)(unsafe.Pointer(p)).Fusable) != 0) {
 18401  			goto __2
 18402  		}
 18403  		(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(i)*8)).FargvIndex = 1
 18404  		(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(i)*8)).Fomit = uint8(1)
 18405  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = float64(10)
 18406  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedRows = int64(10)
 18407  		return SQLITE_OK
 18408  
 18409  	}
 18410  	goto __2
 18411  __2:
 18412  	i++
 18413  	p += 12
 18414  	goto __1
 18415  	goto __3
 18416  __3:
 18417  	;
 18418  	(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = float64(1000000000)
 18419  	(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedRows = int64(1000000000)
 18420  	return SQLITE_OK
 18421  }
 18422  
 18423  var prefixesModule = sqlite3_module{
 18424  	FxConnect:    0,
 18425  	FxBestIndex:  0,
 18426  	FxDisconnect: 0,
 18427  	FxOpen:       0,
 18428  	FxClose:      0,
 18429  	FxFilter:     0,
 18430  	FxNext:       0,
 18431  	FxEof:        0,
 18432  	FxColumn:     0,
 18433  	FxRowid:      0,
 18434  }
 18435  
 18436  func prefixLengthFunc(tls *libc.TLS, ctx uintptr, nVal int32, apVal uintptr) {
 18437  	var nByte int32
 18438  	var nRet int32 = 0
 18439  	var zL uintptr = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(apVal)))
 18440  	var zR uintptr = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(apVal + 1*8)))
 18441  	var nL int32 = sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(apVal)))
 18442  	var nR int32 = sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(apVal + 1*8)))
 18443  	var i int32
 18444  
 18445  	nByte = func() int32 {
 18446  		if nL > nR {
 18447  			return nL
 18448  		}
 18449  		return nR
 18450  	}()
 18451  	for i = 0; i < nByte; i++ {
 18452  		if int32(*(*uint8)(unsafe.Pointer(zL + uintptr(i)))) != int32(*(*uint8)(unsafe.Pointer(zR + uintptr(i)))) {
 18453  			break
 18454  		}
 18455  		if int32(*(*uint8)(unsafe.Pointer(zL + uintptr(i))))&0xC0 != 0x80 {
 18456  			nRet++
 18457  		}
 18458  	}
 18459  
 18460  	if int32(*(*uint8)(unsafe.Pointer(zL + uintptr(i))))&0xC0 == 0x80 {
 18461  		nRet--
 18462  	}
 18463  	sqlite3.Xsqlite3_result_int(tls, ctx, nRet)
 18464  }
 18465  
 18466  func sqlite3_prefixes_init(tls *libc.TLS, db uintptr, pzErrMsg uintptr, pApi uintptr) int32 {
 18467  	var rc int32 = SQLITE_OK
 18468  	_ = pApi
 18469  
 18470  	rc = sqlite3.Xsqlite3_create_module(tls, db, ts+6162, uintptr(unsafe.Pointer(&prefixesModule)), uintptr(0))
 18471  	if rc == SQLITE_OK {
 18472  		rc = sqlite3.Xsqlite3_create_function(tls,
 18473  			db, ts+6171, 2, SQLITE_UTF8, uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 18474  				f func(*libc.TLS, uintptr, int32, uintptr)
 18475  			}{prefixLengthFunc})), uintptr(0), uintptr(0))
 18476  	}
 18477  	return rc
 18478  }
 18479  
 18480  type qpvtab_vtab1 = struct{ Fbase sqlite3_vtab }
 18481  
 18482  type qpvtab_vtab = qpvtab_vtab1
 18483  
 18484  type qpvtab_cursor1 = struct {
 18485  	Fbase   sqlite3_vtab_cursor
 18486  	FiRowid sqlite3_int64
 18487  	FzData  uintptr
 18488  	FnData  int32
 18489  	Fflags  int32
 18490  }
 18491  
 18492  type qpvtab_cursor = qpvtab_cursor1
 18493  
 18494  var azColname = [13]uintptr{
 18495  	ts + 6185,
 18496  	ts + 6188,
 18497  	ts + 6191,
 18498  	ts + 6194,
 18499  	ts + 6197,
 18500  	ts + 6200,
 18501  	ts + 6204, ts + 6206, ts + 6208, ts + 6210, ts + 6212,
 18502  	ts + 6214,
 18503  	ts + 584,
 18504  }
 18505  
 18506  func qpvtabConnect(tls *libc.TLS, db uintptr, pAux uintptr, argc int32, argv uintptr, ppVtab uintptr, pzErr uintptr) int32 {
 18507  	var pNew uintptr
 18508  	var rc int32
 18509  
 18510  	rc = sqlite3.Xsqlite3_declare_vtab(tls, db,
 18511  		ts+6220)
 18512  	if rc == SQLITE_OK {
 18513  		pNew = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(qpvtab_vtab{})))
 18514  		*(*uintptr)(unsafe.Pointer(ppVtab)) = pNew
 18515  		if pNew == uintptr(0) {
 18516  			return SQLITE_NOMEM
 18517  		}
 18518  		libc.Xmemset(tls, pNew, 0, uint64(unsafe.Sizeof(qpvtab_vtab{})))
 18519  	}
 18520  	return rc
 18521  }
 18522  
 18523  func qpvtabDisconnect(tls *libc.TLS, pVtab uintptr) int32 {
 18524  	var p uintptr = pVtab
 18525  	sqlite3.Xsqlite3_free(tls, p)
 18526  	return SQLITE_OK
 18527  }
 18528  
 18529  func qpvtabOpen(tls *libc.TLS, p uintptr, ppCursor uintptr) int32 {
 18530  	var pCur uintptr
 18531  	pCur = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(qpvtab_cursor{})))
 18532  	if pCur == uintptr(0) {
 18533  		return SQLITE_NOMEM
 18534  	}
 18535  	libc.Xmemset(tls, pCur, 0, uint64(unsafe.Sizeof(qpvtab_cursor{})))
 18536  	*(*uintptr)(unsafe.Pointer(ppCursor)) = pCur
 18537  	return SQLITE_OK
 18538  }
 18539  
 18540  func qpvtabClose(tls *libc.TLS, cur uintptr) int32 {
 18541  	var pCur uintptr = cur
 18542  	sqlite3.Xsqlite3_free(tls, pCur)
 18543  	return SQLITE_OK
 18544  }
 18545  
 18546  func qpvtabNext(tls *libc.TLS, cur uintptr) int32 {
 18547  	var pCur uintptr = cur
 18548  	if (*qpvtab_cursor)(unsafe.Pointer(pCur)).FiRowid < sqlite3_int64((*qpvtab_cursor)(unsafe.Pointer(pCur)).FnData) {
 18549  		var z uintptr = (*qpvtab_cursor)(unsafe.Pointer(pCur)).FzData + uintptr((*qpvtab_cursor)(unsafe.Pointer(pCur)).FiRowid)
 18550  		var zEnd uintptr = libc.Xstrchr(tls, z, '\n')
 18551  		if zEnd != 0 {
 18552  			zEnd++
 18553  		}
 18554  		(*qpvtab_cursor)(unsafe.Pointer(pCur)).FiRowid = sqlite3_int64(int32((int64(zEnd) - int64((*qpvtab_cursor)(unsafe.Pointer(pCur)).FzData)) / 1))
 18555  	}
 18556  	return SQLITE_OK
 18557  }
 18558  
 18559  func qpvtabColumn(tls *libc.TLS, cur uintptr, ctx uintptr, i int32) int32 {
 18560  	bp := tls.Alloc(1)
 18561  	defer tls.Free(1)
 18562  
 18563  	var pCur uintptr = cur
 18564  	if i >= QPVTAB_VN && i <= QPVTAB_RHS && (*qpvtab_cursor)(unsafe.Pointer(pCur)).FiRowid < sqlite3_int64((*qpvtab_cursor)(unsafe.Pointer(pCur)).FnData) {
 18565  		var z uintptr = (*qpvtab_cursor)(unsafe.Pointer(pCur)).FzData + uintptr((*qpvtab_cursor)(unsafe.Pointer(pCur)).FiRowid)
 18566  		var zEnd uintptr
 18567  		var j int32
 18568  		j = QPVTAB_VN
 18569  		for 1 != 0 {
 18570  			zEnd = libc.Xstrchr(tls, z, func() int32 {
 18571  				if j == QPVTAB_RHS {
 18572  					return '\n'
 18573  				}
 18574  				return ','
 18575  			}())
 18576  			if j == i || zEnd == uintptr(0) {
 18577  				break
 18578  			}
 18579  			z = zEnd + uintptr(1)
 18580  			j++
 18581  		}
 18582  		if zEnd == z {
 18583  			sqlite3.Xsqlite3_result_null(tls, ctx)
 18584  		} else if i == QPVTAB_IX || i == QPVTAB_OP || i == QPVTAB_UX {
 18585  			sqlite3.Xsqlite3_result_int(tls, ctx, libc.Xatoi(tls, z))
 18586  		} else {
 18587  			sqlite3.Xsqlite3_result_text64(tls, ctx, z, uint64((int64(zEnd)-int64(z))/1), libc.UintptrFromInt32(-1), uint8(SQLITE_UTF8))
 18588  		}
 18589  	} else if i >= QPVTAB_A && i <= QPVTAB_E {
 18590  		if (*qpvtab_cursor)(unsafe.Pointer(pCur)).Fflags&0x001 != 0 {
 18591  			sqlite3.Xsqlite3_result_int(tls, ctx, i-QPVTAB_A+1)
 18592  		} else {
 18593  			*(*uint8)(unsafe.Pointer(bp)) = uint8('a' + i - QPVTAB_A)
 18594  			sqlite3.Xsqlite3_result_text64(tls, ctx, bp, uint64(1), libc.UintptrFromInt32(-1), uint8(SQLITE_UTF8))
 18595  		}
 18596  	} else if i == QPVTAB_FLAGS {
 18597  		sqlite3.Xsqlite3_result_int(tls, ctx, (*qpvtab_cursor)(unsafe.Pointer(pCur)).Fflags)
 18598  	}
 18599  	return SQLITE_OK
 18600  }
 18601  
 18602  func qpvtabRowid(tls *libc.TLS, cur uintptr, pRowid uintptr) int32 {
 18603  	var pCur uintptr = cur
 18604  	*(*sqlite_int64)(unsafe.Pointer(pRowid)) = (*qpvtab_cursor)(unsafe.Pointer(pCur)).FiRowid
 18605  	return SQLITE_OK
 18606  }
 18607  
 18608  func qpvtabEof(tls *libc.TLS, cur uintptr) int32 {
 18609  	var pCur uintptr = cur
 18610  	return libc.Bool32((*qpvtab_cursor)(unsafe.Pointer(pCur)).FiRowid >= sqlite3_int64((*qpvtab_cursor)(unsafe.Pointer(pCur)).FnData))
 18611  }
 18612  
 18613  func qpvtabFilter(tls *libc.TLS, pVtabCursor uintptr, idxNum int32, idxStr uintptr, argc int32, argv uintptr) int32 {
 18614  	var pCur uintptr = pVtabCursor
 18615  	(*qpvtab_cursor)(unsafe.Pointer(pCur)).FiRowid = int64(0)
 18616  	(*qpvtab_cursor)(unsafe.Pointer(pCur)).FzData = idxStr
 18617  	(*qpvtab_cursor)(unsafe.Pointer(pCur)).FnData = int32(libc.Xstrlen(tls, idxStr))
 18618  	(*qpvtab_cursor)(unsafe.Pointer(pCur)).Fflags = idxNum
 18619  	return SQLITE_OK
 18620  }
 18621  
 18622  func qpvtabStrAppendValue(tls *libc.TLS, pStr uintptr, pVal uintptr) {
 18623  	bp := tls.Alloc(25)
 18624  	defer tls.Free(25)
 18625  
 18626  	switch sqlite3.Xsqlite3_value_type(tls, pVal) {
 18627  	case SQLITE_NULL:
 18628  		sqlite3.Xsqlite3_str_appendf(tls, pStr, ts+5846, 0)
 18629  		break
 18630  	case SQLITE_INTEGER:
 18631  		sqlite3.Xsqlite3_str_appendf(tls, pStr, ts+6325, libc.VaList(bp, sqlite3.Xsqlite3_value_int64(tls, pVal)))
 18632  		break
 18633  	case SQLITE_FLOAT:
 18634  		sqlite3.Xsqlite3_str_appendf(tls, pStr, ts+6330, libc.VaList(bp+8, sqlite3.Xsqlite3_value_double(tls, pVal)))
 18635  		break
 18636  	case SQLITE_TEXT:
 18637  		{
 18638  			var i int32
 18639  			var a uintptr = sqlite3.Xsqlite3_value_text(tls, pVal)
 18640  			var n int32 = sqlite3.Xsqlite3_value_bytes(tls, pVal)
 18641  			sqlite3.Xsqlite3_str_append(tls, pStr, ts+5624, 1)
 18642  			for i = 0; i < n; i++ {
 18643  				*(*uint8)(unsafe.Pointer(bp + 24)) = *(*uint8)(unsafe.Pointer(a + uintptr(i)))
 18644  				if int32(*(*uint8)(unsafe.Pointer(bp + 24))) == '\n' {
 18645  					*(*uint8)(unsafe.Pointer(bp + 24)) = uint8(' ')
 18646  				}
 18647  				sqlite3.Xsqlite3_str_append(tls, pStr, bp+24, 1)
 18648  				if int32(*(*uint8)(unsafe.Pointer(bp + 24))) == '\'' {
 18649  					sqlite3.Xsqlite3_str_append(tls, pStr, bp+24, 1)
 18650  				}
 18651  			}
 18652  			sqlite3.Xsqlite3_str_append(tls, pStr, ts+5624, 1)
 18653  			break
 18654  
 18655  		}
 18656  	case SQLITE_BLOB:
 18657  		{
 18658  			var i int32
 18659  			var a uintptr = sqlite3.Xsqlite3_value_blob(tls, pVal)
 18660  			var n int32 = sqlite3.Xsqlite3_value_bytes(tls, pVal)
 18661  			sqlite3.Xsqlite3_str_append(tls, pStr, ts+6334, 2)
 18662  			for i = 0; i < n; i++ {
 18663  				sqlite3.Xsqlite3_str_appendf(tls, pStr, ts+6337, libc.VaList(bp+16, int32(*(*uint8)(unsafe.Pointer(a + uintptr(i))))))
 18664  			}
 18665  			sqlite3.Xsqlite3_str_append(tls, pStr, ts+5624, 1)
 18666  			break
 18667  
 18668  		}
 18669  	}
 18670  }
 18671  
 18672  func qpvtabBestIndex(tls *libc.TLS, tab uintptr, pIdxInfo uintptr) int32 {
 18673  	bp := tls.Alloc(120)
 18674  	defer tls.Free(120)
 18675  
 18676  	var pStr uintptr = sqlite3.Xsqlite3_str_new(tls, uintptr(0))
 18677  	var i int32
 18678  	var k int32 = 0
 18679  	var rc int32
 18680  	_ = rc
 18681  	sqlite3.Xsqlite3_str_appendf(tls, pStr, ts+6342, libc.VaList(bp, (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnConstraint))
 18682  	for i = 0; i < (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnConstraint; i++ {
 18683  		var iCol int32 = (*sqlite3_index_constraint)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint + uintptr(i)*12)).FiColumn
 18684  		var op int32 = int32((*sqlite3_index_constraint)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint + uintptr(i)*12)).Fop)
 18685  		if iCol == QPVTAB_FLAGS && (*sqlite3_index_constraint)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint+uintptr(i)*12)).Fusable != 0 {
 18686  			*(*uintptr)(unsafe.Pointer(bp + 112)) = uintptr(0)
 18687  			rc = sqlite3.Xsqlite3_vtab_rhs_value(tls, pIdxInfo, i, bp+112)
 18688  
 18689  			if *(*uintptr)(unsafe.Pointer(bp + 112)) != 0 {
 18690  				(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxNum = sqlite3.Xsqlite3_value_int(tls, *(*uintptr)(unsafe.Pointer(bp + 112)))
 18691  				if (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxNum&0x002 != 0 {
 18692  					(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).ForderByConsumed = 1
 18693  				}
 18694  			}
 18695  		}
 18696  		if op == SQLITE_INDEX_CONSTRAINT_LIMIT ||
 18697  			op == SQLITE_INDEX_CONSTRAINT_OFFSET {
 18698  			iCol = QPVTAB_NONE
 18699  		}
 18700  		sqlite3.Xsqlite3_str_appendf(tls, pStr, ts+6362,
 18701  			libc.VaList(bp+8, i,
 18702  				azColname[iCol],
 18703  				op,
 18704  				int32((*sqlite3_index_constraint)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint+uintptr(i)*12)).Fusable)))
 18705  		*(*uintptr)(unsafe.Pointer(bp + 112)) = uintptr(0)
 18706  		rc = sqlite3.Xsqlite3_vtab_rhs_value(tls, pIdxInfo, i, bp+112)
 18707  
 18708  		if *(*uintptr)(unsafe.Pointer(bp + 112)) != 0 {
 18709  			qpvtabStrAppendValue(tls, pStr, *(*uintptr)(unsafe.Pointer(bp + 112)))
 18710  		}
 18711  		sqlite3.Xsqlite3_str_append(tls, pStr, ts+6387, 1)
 18712  	}
 18713  	for i = 0; i < (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnConstraint; i++ {
 18714  		var iCol int32 = (*sqlite3_index_constraint)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint + uintptr(i)*12)).FiColumn
 18715  		var op int32 = int32((*sqlite3_index_constraint)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint + uintptr(i)*12)).Fop)
 18716  		if op == SQLITE_INDEX_CONSTRAINT_LIMIT ||
 18717  			op == SQLITE_INDEX_CONSTRAINT_OFFSET {
 18718  			iCol = QPVTAB_NONE
 18719  		}
 18720  		if iCol >= QPVTAB_A && (*sqlite3_index_constraint)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint+uintptr(i)*12)).Fusable != 0 {
 18721  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(i)*8)).FargvIndex = libc.PreIncInt32(&k, 1)
 18722  			if iCol <= QPVTAB_FLAGS || (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxNum&0x004 != 0 {
 18723  				(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(i)*8)).Fomit = uint8(1)
 18724  			}
 18725  		}
 18726  	}
 18727  	sqlite3.Xsqlite3_str_appendf(tls, pStr, ts+6389, libc.VaList(bp+40, (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnOrderBy))
 18728  	for i = 0; i < (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnOrderBy; i++ {
 18729  		var iCol int32 = (*sqlite3_index_orderby)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaOrderBy + uintptr(i)*8)).FiColumn
 18730  		sqlite3.Xsqlite3_str_appendf(tls, pStr, ts+6406, libc.VaList(bp+48, i,
 18731  			func() uintptr {
 18732  				if iCol >= 0 {
 18733  					return azColname[iCol]
 18734  				}
 18735  				return ts + 6427
 18736  			}(),
 18737  			int32((*sqlite3_index_orderby)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaOrderBy+uintptr(i)*8)).Fdesc)))
 18738  	}
 18739  	sqlite3.Xsqlite3_str_appendf(tls, pStr, ts+6433,
 18740  		libc.VaList(bp+72, sqlite3.Xsqlite3_vtab_distinct(tls, pIdxInfo)))
 18741  	sqlite3.Xsqlite3_str_appendf(tls, pStr, ts+6463, libc.VaList(bp+80, (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxFlags))
 18742  	sqlite3.Xsqlite3_str_appendf(tls, pStr, ts+6480, libc.VaList(bp+88, int32((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FcolUsed)))
 18743  	(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = float64(10)
 18744  	(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedRows = int64(10)
 18745  	sqlite3.Xsqlite3_str_appendf(tls, pStr, ts+6496, libc.VaList(bp+96, (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxNum))
 18746  	sqlite3.Xsqlite3_str_appendf(tls, pStr, ts+6511,
 18747  		libc.VaList(bp+104, (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).ForderByConsumed))
 18748  	(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxStr = sqlite3.Xsqlite3_str_finish(tls, pStr)
 18749  	(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FneedToFreeIdxStr = 1
 18750  	return SQLITE_OK
 18751  }
 18752  
 18753  var qpvtabModule = sqlite3_module{
 18754  	FxConnect:    0,
 18755  	FxBestIndex:  0,
 18756  	FxDisconnect: 0,
 18757  	FxOpen:       0,
 18758  	FxClose:      0,
 18759  	FxFilter:     0,
 18760  	FxNext:       0,
 18761  	FxEof:        0,
 18762  	FxColumn:     0,
 18763  	FxRowid:      0,
 18764  }
 18765  
 18766  func sqlite3_qpvtab_init(tls *libc.TLS, db uintptr, pzErrMsg uintptr, pApi uintptr) int32 {
 18767  	var rc int32 = SQLITE_OK
 18768  	_ = pApi
 18769  
 18770  	rc = sqlite3.Xsqlite3_create_module(tls, db, ts+6535, uintptr(unsafe.Pointer(&qpvtabModule)), uintptr(0))
 18771  	return rc
 18772  }
 18773  
 18774  type ReStateNumber = uint16
 18775  
 18776  type ReStateSet1 = struct {
 18777  	FnState      uint32
 18778  	F__ccgo_pad1 [4]byte
 18779  	FaState      uintptr
 18780  }
 18781  
 18782  type ReStateSet = ReStateSet1
 18783  
 18784  type ReInput1 = struct {
 18785  	Fz  uintptr
 18786  	Fi  int32
 18787  	Fmx int32
 18788  }
 18789  
 18790  type ReInput = ReInput1
 18791  
 18792  type ReCompiled1 = struct {
 18793  	FsIn       ReInput
 18794  	FzErr      uintptr
 18795  	FaOp       uintptr
 18796  	FaArg      uintptr
 18797  	FxNextChar uintptr
 18798  	FzInit     [12]uint8
 18799  	FnInit     int32
 18800  	FnState    uint32
 18801  	FnAlloc    uint32
 18802  }
 18803  
 18804  type ReCompiled = ReCompiled1
 18805  
 18806  func re_add_state(tls *libc.TLS, pSet uintptr, newState int32) {
 18807  	var i uint32
 18808  	for i = uint32(0); i < (*ReStateSet)(unsafe.Pointer(pSet)).FnState; i++ {
 18809  		if int32(*(*ReStateNumber)(unsafe.Pointer((*ReStateSet)(unsafe.Pointer(pSet)).FaState + uintptr(i)*2))) == newState {
 18810  			return
 18811  		}
 18812  	}
 18813  	*(*ReStateNumber)(unsafe.Pointer((*ReStateSet)(unsafe.Pointer(pSet)).FaState + uintptr(libc.PostIncUint32(&(*ReStateSet)(unsafe.Pointer(pSet)).FnState, 1))*2)) = ReStateNumber(newState)
 18814  }
 18815  
 18816  func re_next_char(tls *libc.TLS, p uintptr) uint32 {
 18817  	var c uint32
 18818  	if (*ReInput)(unsafe.Pointer(p)).Fi >= (*ReInput)(unsafe.Pointer(p)).Fmx {
 18819  		return uint32(0)
 18820  	}
 18821  	c = uint32(*(*uint8)(unsafe.Pointer((*ReInput)(unsafe.Pointer(p)).Fz + uintptr(libc.PostIncInt32(&(*ReInput)(unsafe.Pointer(p)).Fi, 1)))))
 18822  	if c >= uint32(0x80) {
 18823  		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 {
 18824  			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)
 18825  			if c < uint32(0x80) {
 18826  				c = uint32(0xfffd)
 18827  			}
 18828  		} 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 &&
 18829  			int32(*(*uint8)(unsafe.Pointer((*ReInput)(unsafe.Pointer(p)).Fz + uintptr((*ReInput)(unsafe.Pointer(p)).Fi+1))))&0xc0 == 0x80 {
 18830  			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)
 18831  			*(*int32)(unsafe.Pointer(p + 8)) += 2
 18832  			if c <= uint32(0x7ff) || c >= uint32(0xd800) && c <= uint32(0xdfff) {
 18833  				c = uint32(0xfffd)
 18834  			}
 18835  		} 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 &&
 18836  			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 {
 18837  			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) |
 18838  				uint32(int32(*(*uint8)(unsafe.Pointer((*ReInput)(unsafe.Pointer(p)).Fz + uintptr((*ReInput)(unsafe.Pointer(p)).Fi+2))))&0x3f)
 18839  			*(*int32)(unsafe.Pointer(p + 8)) += 3
 18840  			if c <= uint32(0xffff) || c > uint32(0x10ffff) {
 18841  				c = uint32(0xfffd)
 18842  			}
 18843  		} else {
 18844  			c = uint32(0xfffd)
 18845  		}
 18846  	}
 18847  	return c
 18848  }
 18849  
 18850  func re_next_char_nocase(tls *libc.TLS, p uintptr) uint32 {
 18851  	var c uint32 = re_next_char(tls, p)
 18852  	if c >= uint32('A') && c <= uint32('Z') {
 18853  		c = c + uint32('a'-'A')
 18854  	}
 18855  	return c
 18856  }
 18857  
 18858  func re_word_char(tls *libc.TLS, c int32) int32 {
 18859  	return libc.Bool32(c >= '0' && c <= '9' || c >= 'a' && c <= 'z' ||
 18860  		c >= 'A' && c <= 'Z' || c == '_')
 18861  }
 18862  
 18863  func re_digit_char(tls *libc.TLS, c int32) int32 {
 18864  	return libc.Bool32(c >= '0' && c <= '9')
 18865  }
 18866  
 18867  func re_space_char(tls *libc.TLS, c int32) int32 {
 18868  	return libc.Bool32(c == ' ' || c == '\t' || c == '\n' || c == '\r' || c == '\v' || c == '\f')
 18869  }
 18870  
 18871  func sqlite3re_match(tls *libc.TLS, pRe uintptr, zIn uintptr, nIn int32) int32 {
 18872  	bp := tls.Alloc(248)
 18873  	defer tls.Free(248)
 18874  
 18875  	var pThis uintptr
 18876  	var pNext uintptr
 18877  
 18878  	var pToFree uintptr
 18879  	var i uint32
 18880  	var iSwap uint32
 18881  	var c int32
 18882  	var cPrev int32
 18883  	var rc int32
 18884  
 18885  	var x uint8
 18886  	var j int32
 18887  	var n int32
 18888  	var hit int32
 18889  	var x1 int32
 18890  	i = uint32(0)
 18891  	iSwap = uint32(0)
 18892  	c = RE_EOF + 1
 18893  	cPrev = 0
 18894  	rc = 0
 18895  
 18896  	(*ReInput)(unsafe.Pointer(bp + 232)).Fz = zIn
 18897  	(*ReInput)(unsafe.Pointer(bp + 232)).Fi = 0
 18898  	(*ReInput)(unsafe.Pointer(bp + 232)).Fmx = func() int32 {
 18899  		if nIn >= 0 {
 18900  			return nIn
 18901  		}
 18902  		return int32(libc.Xstrlen(tls, zIn))
 18903  	}()
 18904  
 18905  	if !((*ReCompiled)(unsafe.Pointer(pRe)).FnInit != 0) {
 18906  		goto __1
 18907  	}
 18908  	x = *(*uint8)(unsafe.Pointer(pRe + 48))
 18909  __2:
 18910  	if !((*ReInput)(unsafe.Pointer(bp+232)).Fi+(*ReCompiled)(unsafe.Pointer(pRe)).FnInit <= (*ReInput)(unsafe.Pointer(bp+232)).Fmx &&
 18911  		(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)) {
 18912  		goto __3
 18913  	}
 18914  	(*ReInput)(unsafe.Pointer(bp+232)).Fi++
 18915  	goto __2
 18916  __3:
 18917  	;
 18918  	if !((*ReInput)(unsafe.Pointer(bp+232)).Fi+(*ReCompiled)(unsafe.Pointer(pRe)).FnInit > (*ReInput)(unsafe.Pointer(bp+232)).Fmx) {
 18919  		goto __4
 18920  	}
 18921  	return 0
 18922  __4:
 18923  	;
 18924  __1:
 18925  	;
 18926  	if !(uint64((*ReCompiled)(unsafe.Pointer(pRe)).FnState) <= uint64(unsafe.Sizeof([100]ReStateNumber{}))/(uint64(unsafe.Sizeof(ReStateNumber(0)))*uint64(2))) {
 18927  		goto __5
 18928  	}
 18929  	pToFree = uintptr(0)
 18930  	(*ReStateSet)(unsafe.Pointer(bp)).FaState = bp + 32
 18931  	goto __6
 18932  __5:
 18933  	pToFree = sqlite3.Xsqlite3_malloc64(tls, uint64(unsafe.Sizeof(ReStateNumber(0)))*uint64(2)*uint64((*ReCompiled)(unsafe.Pointer(pRe)).FnState))
 18934  	if !(pToFree == uintptr(0)) {
 18935  		goto __7
 18936  	}
 18937  	return -1
 18938  __7:
 18939  	;
 18940  	(*ReStateSet)(unsafe.Pointer(bp)).FaState = pToFree
 18941  __6:
 18942  	;
 18943  	(*ReStateSet)(unsafe.Pointer(bp + 1*16)).FaState = (*ReStateSet)(unsafe.Pointer(bp)).FaState + uintptr((*ReCompiled)(unsafe.Pointer(pRe)).FnState)*2
 18944  	pNext = bp + 1*16
 18945  	(*ReStateSet)(unsafe.Pointer(pNext)).FnState = uint32(0)
 18946  	re_add_state(tls, pNext, 0)
 18947  __8:
 18948  	if !(c != RE_EOF && (*ReStateSet)(unsafe.Pointer(pNext)).FnState > uint32(0)) {
 18949  		goto __9
 18950  	}
 18951  	cPrev = c
 18952  	c = int32((*struct {
 18953  		f func(*libc.TLS, uintptr) uint32
 18954  	})(unsafe.Pointer(&struct{ uintptr }{(*ReCompiled)(unsafe.Pointer(pRe)).FxNextChar})).f(tls, bp+232))
 18955  	pThis = pNext
 18956  	pNext = bp + uintptr(iSwap)*16
 18957  	iSwap = uint32(1) - iSwap
 18958  	(*ReStateSet)(unsafe.Pointer(pNext)).FnState = uint32(0)
 18959  	i = uint32(0)
 18960  __10:
 18961  	if !(i < (*ReStateSet)(unsafe.Pointer(pThis)).FnState) {
 18962  		goto __12
 18963  	}
 18964  	x1 = int32(*(*ReStateNumber)(unsafe.Pointer((*ReStateSet)(unsafe.Pointer(pThis)).FaState + uintptr(i)*2)))
 18965  	switch int32(*(*uint8)(unsafe.Pointer((*ReCompiled)(unsafe.Pointer(pRe)).FaOp + uintptr(x1)))) {
 18966  	case RE_OP_MATCH:
 18967  		goto __14
 18968  	case RE_OP_ANY:
 18969  		goto __15
 18970  	case RE_OP_WORD:
 18971  		goto __16
 18972  	case RE_OP_NOTWORD:
 18973  		goto __17
 18974  	case RE_OP_DIGIT:
 18975  		goto __18
 18976  	case RE_OP_NOTDIGIT:
 18977  		goto __19
 18978  	case RE_OP_SPACE:
 18979  		goto __20
 18980  	case RE_OP_NOTSPACE:
 18981  		goto __21
 18982  	case RE_OP_BOUNDARY:
 18983  		goto __22
 18984  	case RE_OP_ANYSTAR:
 18985  		goto __23
 18986  	case RE_OP_FORK:
 18987  		goto __24
 18988  	case RE_OP_GOTO:
 18989  		goto __25
 18990  	case RE_OP_ACCEPT:
 18991  		goto __26
 18992  	case RE_OP_CC_EXC:
 18993  		goto __27
 18994  	case RE_OP_CC_INC:
 18995  		goto __28
 18996  	}
 18997  	goto __13
 18998  __14:
 18999  	if !(*(*int32)(unsafe.Pointer((*ReCompiled)(unsafe.Pointer(pRe)).FaArg + uintptr(x1)*4)) == c) {
 19000  		goto __29
 19001  	}
 19002  	re_add_state(tls, pNext, x1+1)
 19003  __29:
 19004  	;
 19005  	goto __13
 19006  
 19007  __15:
 19008  	if !(c != 0) {
 19009  		goto __30
 19010  	}
 19011  	re_add_state(tls, pNext, x1+1)
 19012  __30:
 19013  	;
 19014  	goto __13
 19015  
 19016  __16:
 19017  	if !(re_word_char(tls, c) != 0) {
 19018  		goto __31
 19019  	}
 19020  	re_add_state(tls, pNext, x1+1)
 19021  __31:
 19022  	;
 19023  	goto __13
 19024  
 19025  __17:
 19026  	if !(!(re_word_char(tls, c) != 0) && c != 0) {
 19027  		goto __32
 19028  	}
 19029  	re_add_state(tls, pNext, x1+1)
 19030  __32:
 19031  	;
 19032  	goto __13
 19033  
 19034  __18:
 19035  	if !(re_digit_char(tls, c) != 0) {
 19036  		goto __33
 19037  	}
 19038  	re_add_state(tls, pNext, x1+1)
 19039  __33:
 19040  	;
 19041  	goto __13
 19042  
 19043  __19:
 19044  	if !(!(re_digit_char(tls, c) != 0) && c != 0) {
 19045  		goto __34
 19046  	}
 19047  	re_add_state(tls, pNext, x1+1)
 19048  __34:
 19049  	;
 19050  	goto __13
 19051  
 19052  __20:
 19053  	if !(re_space_char(tls, c) != 0) {
 19054  		goto __35
 19055  	}
 19056  	re_add_state(tls, pNext, x1+1)
 19057  __35:
 19058  	;
 19059  	goto __13
 19060  
 19061  __21:
 19062  	if !(!(re_space_char(tls, c) != 0) && c != 0) {
 19063  		goto __36
 19064  	}
 19065  	re_add_state(tls, pNext, x1+1)
 19066  __36:
 19067  	;
 19068  	goto __13
 19069  
 19070  __22:
 19071  	if !(re_word_char(tls, c) != re_word_char(tls, cPrev)) {
 19072  		goto __37
 19073  	}
 19074  	re_add_state(tls, pThis, x1+1)
 19075  __37:
 19076  	;
 19077  	goto __13
 19078  
 19079  __23:
 19080  	re_add_state(tls, pNext, x1)
 19081  	re_add_state(tls, pThis, x1+1)
 19082  	goto __13
 19083  
 19084  __24:
 19085  	re_add_state(tls, pThis, x1+*(*int32)(unsafe.Pointer((*ReCompiled)(unsafe.Pointer(pRe)).FaArg + uintptr(x1)*4)))
 19086  	re_add_state(tls, pThis, x1+1)
 19087  	goto __13
 19088  
 19089  __25:
 19090  	re_add_state(tls, pThis, x1+*(*int32)(unsafe.Pointer((*ReCompiled)(unsafe.Pointer(pRe)).FaArg + uintptr(x1)*4)))
 19091  	goto __13
 19092  
 19093  __26:
 19094  	rc = 1
 19095  	goto re_match_end
 19096  
 19097  __27:
 19098  	if !(c == 0) {
 19099  		goto __38
 19100  	}
 19101  	goto __13
 19102  __38:
 19103  	;
 19104  	goto re_op_cc_inc
 19105  
 19106  __28:
 19107  re_op_cc_inc:
 19108  	j = 1
 19109  	n = *(*int32)(unsafe.Pointer((*ReCompiled)(unsafe.Pointer(pRe)).FaArg + uintptr(x1)*4))
 19110  	hit = 0
 19111  	j = 1
 19112  __39:
 19113  	if !(j > 0 && j < n) {
 19114  		goto __41
 19115  	}
 19116  	if !(int32(*(*uint8)(unsafe.Pointer((*ReCompiled)(unsafe.Pointer(pRe)).FaOp + uintptr(x1+j)))) == RE_OP_CC_VALUE) {
 19117  		goto __42
 19118  	}
 19119  	if !(*(*int32)(unsafe.Pointer((*ReCompiled)(unsafe.Pointer(pRe)).FaArg + uintptr(x1+j)*4)) == c) {
 19120  		goto __44
 19121  	}
 19122  	hit = 1
 19123  	j = -1
 19124  __44:
 19125  	;
 19126  	goto __43
 19127  __42:
 19128  	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) {
 19129  		goto __45
 19130  	}
 19131  	hit = 1
 19132  	j = -1
 19133  	goto __46
 19134  __45:
 19135  	j++
 19136  __46:
 19137  	;
 19138  __43:
 19139  	;
 19140  	goto __40
 19141  __40:
 19142  	j++
 19143  	goto __39
 19144  	goto __41
 19145  __41:
 19146  	;
 19147  	if !(int32(*(*uint8)(unsafe.Pointer((*ReCompiled)(unsafe.Pointer(pRe)).FaOp + uintptr(x1)))) == RE_OP_CC_EXC) {
 19148  		goto __47
 19149  	}
 19150  	hit = libc.BoolInt32(!(hit != 0))
 19151  __47:
 19152  	;
 19153  	if !(hit != 0) {
 19154  		goto __48
 19155  	}
 19156  	re_add_state(tls, pNext, x1+n)
 19157  __48:
 19158  	;
 19159  	goto __13
 19160  
 19161  __13:
 19162  	;
 19163  	goto __11
 19164  __11:
 19165  	i++
 19166  	goto __10
 19167  	goto __12
 19168  __12:
 19169  	;
 19170  	goto __8
 19171  __9:
 19172  	;
 19173  	i = uint32(0)
 19174  __49:
 19175  	if !(i < (*ReStateSet)(unsafe.Pointer(pNext)).FnState) {
 19176  		goto __51
 19177  	}
 19178  	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) {
 19179  		goto __52
 19180  	}
 19181  	rc = 1
 19182  	goto __51
 19183  __52:
 19184  	;
 19185  	goto __50
 19186  __50:
 19187  	i++
 19188  	goto __49
 19189  	goto __51
 19190  __51:
 19191  	;
 19192  re_match_end:
 19193  	sqlite3.Xsqlite3_free(tls, pToFree)
 19194  	return rc
 19195  }
 19196  
 19197  func re_resize(tls *libc.TLS, p uintptr, N int32) int32 {
 19198  	var aOp uintptr
 19199  	var aArg uintptr
 19200  	aOp = sqlite3.Xsqlite3_realloc64(tls, (*ReCompiled)(unsafe.Pointer(p)).FaOp, uint64(N)*uint64(unsafe.Sizeof(uint8(0))))
 19201  	if aOp == uintptr(0) {
 19202  		return 1
 19203  	}
 19204  	(*ReCompiled)(unsafe.Pointer(p)).FaOp = aOp
 19205  	aArg = sqlite3.Xsqlite3_realloc64(tls, (*ReCompiled)(unsafe.Pointer(p)).FaArg, uint64(N)*uint64(unsafe.Sizeof(int32(0))))
 19206  	if aArg == uintptr(0) {
 19207  		return 1
 19208  	}
 19209  	(*ReCompiled)(unsafe.Pointer(p)).FaArg = aArg
 19210  	(*ReCompiled)(unsafe.Pointer(p)).FnAlloc = uint32(N)
 19211  	return 0
 19212  }
 19213  
 19214  func re_insert(tls *libc.TLS, p uintptr, iBefore int32, op int32, arg int32) int32 {
 19215  	var i int32
 19216  	if (*ReCompiled)(unsafe.Pointer(p)).FnAlloc <= (*ReCompiled)(unsafe.Pointer(p)).FnState && re_resize(tls, p, int32((*ReCompiled)(unsafe.Pointer(p)).FnAlloc*uint32(2))) != 0 {
 19217  		return 0
 19218  	}
 19219  	for i = int32((*ReCompiled)(unsafe.Pointer(p)).FnState); i > iBefore; i-- {
 19220  		*(*uint8)(unsafe.Pointer((*ReCompiled)(unsafe.Pointer(p)).FaOp + uintptr(i))) = *(*uint8)(unsafe.Pointer((*ReCompiled)(unsafe.Pointer(p)).FaOp + uintptr(i-1)))
 19221  		*(*int32)(unsafe.Pointer((*ReCompiled)(unsafe.Pointer(p)).FaArg + uintptr(i)*4)) = *(*int32)(unsafe.Pointer((*ReCompiled)(unsafe.Pointer(p)).FaArg + uintptr(i-1)*4))
 19222  	}
 19223  	(*ReCompiled)(unsafe.Pointer(p)).FnState++
 19224  	*(*uint8)(unsafe.Pointer((*ReCompiled)(unsafe.Pointer(p)).FaOp + uintptr(iBefore))) = uint8(op)
 19225  	*(*int32)(unsafe.Pointer((*ReCompiled)(unsafe.Pointer(p)).FaArg + uintptr(iBefore)*4)) = arg
 19226  	return iBefore
 19227  }
 19228  
 19229  func re_append(tls *libc.TLS, p uintptr, op int32, arg int32) int32 {
 19230  	return re_insert(tls, p, int32((*ReCompiled)(unsafe.Pointer(p)).FnState), op, arg)
 19231  }
 19232  
 19233  func re_copy(tls *libc.TLS, p uintptr, iStart int32, N int32) {
 19234  	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 {
 19235  		return
 19236  	}
 19237  	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))))
 19238  	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))))
 19239  	*(*uint32)(unsafe.Pointer(p + 64)) += uint32(N)
 19240  }
 19241  
 19242  func re_hex(tls *libc.TLS, c int32, pV uintptr) int32 {
 19243  	if c >= '0' && c <= '9' {
 19244  		c = c - '0'
 19245  	} else if c >= 'a' && c <= 'f' {
 19246  		c = c - ('a' - 10)
 19247  	} else if c >= 'A' && c <= 'F' {
 19248  		c = c - ('A' - 10)
 19249  	} else {
 19250  		return 0
 19251  	}
 19252  	*(*int32)(unsafe.Pointer(pV)) = *(*int32)(unsafe.Pointer(pV))*16 + c&0xff
 19253  	return 1
 19254  }
 19255  
 19256  func re_esc_char(tls *libc.TLS, p uintptr) uint32 {
 19257  	bp := tls.Alloc(4)
 19258  	defer tls.Free(4)
 19259  
 19260  	var i int32
 19261  	*(*int32)(unsafe.Pointer(bp)) = 0
 19262  	var c uint8
 19263  	if (*ReCompiled)(unsafe.Pointer(p)).FsIn.Fi >= (*ReCompiled)(unsafe.Pointer(p)).FsIn.Fmx {
 19264  		return uint32(0)
 19265  	}
 19266  	c = *(*uint8)(unsafe.Pointer((*ReCompiled)(unsafe.Pointer(p)).FsIn.Fz + uintptr((*ReCompiled)(unsafe.Pointer(p)).FsIn.Fi)))
 19267  	if int32(c) == 'u' && (*ReCompiled)(unsafe.Pointer(p)).FsIn.Fi+4 < (*ReCompiled)(unsafe.Pointer(p)).FsIn.Fmx {
 19268  		var zIn uintptr = (*ReCompiled)(unsafe.Pointer(p)).FsIn.Fz + uintptr((*ReCompiled)(unsafe.Pointer(p)).FsIn.Fi)
 19269  		if re_hex(tls, int32(*(*uint8)(unsafe.Pointer(zIn + 1))), bp) != 0 &&
 19270  			re_hex(tls, int32(*(*uint8)(unsafe.Pointer(zIn + 2))), bp) != 0 &&
 19271  			re_hex(tls, int32(*(*uint8)(unsafe.Pointer(zIn + 3))), bp) != 0 &&
 19272  			re_hex(tls, int32(*(*uint8)(unsafe.Pointer(zIn + 4))), bp) != 0 {
 19273  			*(*int32)(unsafe.Pointer(p + 8)) += 5
 19274  			return uint32(*(*int32)(unsafe.Pointer(bp)))
 19275  		}
 19276  	}
 19277  	if int32(c) == 'x' && (*ReCompiled)(unsafe.Pointer(p)).FsIn.Fi+2 < (*ReCompiled)(unsafe.Pointer(p)).FsIn.Fmx {
 19278  		var zIn uintptr = (*ReCompiled)(unsafe.Pointer(p)).FsIn.Fz + uintptr((*ReCompiled)(unsafe.Pointer(p)).FsIn.Fi)
 19279  		if re_hex(tls, int32(*(*uint8)(unsafe.Pointer(zIn + 1))), bp) != 0 &&
 19280  			re_hex(tls, int32(*(*uint8)(unsafe.Pointer(zIn + 2))), bp) != 0 {
 19281  			*(*int32)(unsafe.Pointer(p + 8)) += 3
 19282  			return uint32(*(*int32)(unsafe.Pointer(bp)))
 19283  		}
 19284  	}
 19285  	for i = 0; zEsc[i] != 0 && int32(zEsc[i]) != int32(c); i++ {
 19286  	}
 19287  	if zEsc[i] != 0 {
 19288  		if i < 6 {
 19289  			c = zTrans[i]
 19290  		}
 19291  		(*ReCompiled)(unsafe.Pointer(p)).FsIn.Fi++
 19292  	} else {
 19293  		(*ReCompiled)(unsafe.Pointer(p)).FzErr = ts + 6542
 19294  	}
 19295  	return uint32(c)
 19296  }
 19297  
 19298  var zEsc = *(*[21]uint8)(unsafe.Pointer(ts + 6559))
 19299  var zTrans = *(*[7]uint8)(unsafe.Pointer(ts + 6580))
 19300  
 19301  func rePeek(tls *libc.TLS, p uintptr) uint8 {
 19302  	if (*ReCompiled)(unsafe.Pointer(p)).FsIn.Fi < (*ReCompiled)(unsafe.Pointer(p)).FsIn.Fmx {
 19303  		return *(*uint8)(unsafe.Pointer((*ReCompiled)(unsafe.Pointer(p)).FsIn.Fz + uintptr((*ReCompiled)(unsafe.Pointer(p)).FsIn.Fi)))
 19304  	}
 19305  	return uint8(0)
 19306  }
 19307  
 19308  func re_subcompile_re(tls *libc.TLS, p uintptr) uintptr {
 19309  	var zErr uintptr
 19310  	var iStart int32
 19311  	var iEnd int32
 19312  	var iGoto int32
 19313  	iStart = int32((*ReCompiled)(unsafe.Pointer(p)).FnState)
 19314  	zErr = re_subcompile_string(tls, p)
 19315  	if zErr != 0 {
 19316  		return zErr
 19317  	}
 19318  	for int32(rePeek(tls, p)) == '|' {
 19319  		iEnd = int32((*ReCompiled)(unsafe.Pointer(p)).FnState)
 19320  		re_insert(tls, p, iStart, RE_OP_FORK, iEnd+2-iStart)
 19321  		iGoto = re_append(tls, p, RE_OP_GOTO, 0)
 19322  		(*ReCompiled)(unsafe.Pointer(p)).FsIn.Fi++
 19323  		zErr = re_subcompile_string(tls, p)
 19324  		if zErr != 0 {
 19325  			return zErr
 19326  		}
 19327  		*(*int32)(unsafe.Pointer((*ReCompiled)(unsafe.Pointer(p)).FaArg + uintptr(iGoto)*4)) = int32((*ReCompiled)(unsafe.Pointer(p)).FnState - uint32(iGoto))
 19328  	}
 19329  	return uintptr(0)
 19330  }
 19331  
 19332  func re_subcompile_string(tls *libc.TLS, p uintptr) uintptr {
 19333  	var iPrev int32 = -1
 19334  	var iStart int32
 19335  	var c uint32
 19336  	var zErr uintptr
 19337  	for libc.AssignUint32(&c, (*struct {
 19338  		f func(*libc.TLS, uintptr) uint32
 19339  	})(unsafe.Pointer(&struct{ uintptr }{(*ReCompiled)(unsafe.Pointer(p)).FxNextChar})).f(tls, p)) != uint32(0) {
 19340  		iStart = int32((*ReCompiled)(unsafe.Pointer(p)).FnState)
 19341  		switch c {
 19342  		case uint32('|'):
 19343  			fallthrough
 19344  		case uint32('$'):
 19345  			fallthrough
 19346  		case uint32(')'):
 19347  			{
 19348  				(*ReCompiled)(unsafe.Pointer(p)).FsIn.Fi--
 19349  				return uintptr(0)
 19350  
 19351  			}
 19352  		case uint32('('):
 19353  			{
 19354  				zErr = re_subcompile_re(tls, p)
 19355  				if zErr != 0 {
 19356  					return zErr
 19357  				}
 19358  				if int32(rePeek(tls, p)) != ')' {
 19359  					return ts + 6587
 19360  				}
 19361  				(*ReCompiled)(unsafe.Pointer(p)).FsIn.Fi++
 19362  				break
 19363  
 19364  			}
 19365  		case uint32('.'):
 19366  			{
 19367  				if int32(rePeek(tls, p)) == '*' {
 19368  					re_append(tls, p, RE_OP_ANYSTAR, 0)
 19369  					(*ReCompiled)(unsafe.Pointer(p)).FsIn.Fi++
 19370  				} else {
 19371  					re_append(tls, p, RE_OP_ANY, 0)
 19372  				}
 19373  				break
 19374  
 19375  			}
 19376  		case uint32('*'):
 19377  			{
 19378  				if iPrev < 0 {
 19379  					return ts + 6601
 19380  				}
 19381  				re_insert(tls, p, iPrev, RE_OP_GOTO, int32((*ReCompiled)(unsafe.Pointer(p)).FnState-uint32(iPrev)+uint32(1)))
 19382  				re_append(tls, p, RE_OP_FORK, int32(uint32(iPrev)-(*ReCompiled)(unsafe.Pointer(p)).FnState+uint32(1)))
 19383  				break
 19384  
 19385  			}
 19386  		case uint32('+'):
 19387  			{
 19388  				if iPrev < 0 {
 19389  					return ts + 6621
 19390  				}
 19391  				re_append(tls, p, RE_OP_FORK, int32(uint32(iPrev)-(*ReCompiled)(unsafe.Pointer(p)).FnState))
 19392  				break
 19393  
 19394  			}
 19395  		case uint32('?'):
 19396  			{
 19397  				if iPrev < 0 {
 19398  					return ts + 6641
 19399  				}
 19400  				re_insert(tls, p, iPrev, RE_OP_FORK, int32((*ReCompiled)(unsafe.Pointer(p)).FnState-uint32(iPrev)+uint32(1)))
 19401  				break
 19402  
 19403  			}
 19404  		case uint32('{'):
 19405  			{
 19406  				var m int32 = 0
 19407  				var n int32 = 0
 19408  				var sz int32
 19409  				var j int32
 19410  				if iPrev < 0 {
 19411  					return ts + 6661
 19412  				}
 19413  				for libc.AssignUint32(&c, uint32(rePeek(tls, p))) >= uint32('0') && c <= uint32('9') {
 19414  					m = int32(uint32(m*10) + c - uint32('0'))
 19415  					(*ReCompiled)(unsafe.Pointer(p)).FsIn.Fi++
 19416  				}
 19417  				n = m
 19418  				if c == uint32(',') {
 19419  					(*ReCompiled)(unsafe.Pointer(p)).FsIn.Fi++
 19420  					n = 0
 19421  					for libc.AssignUint32(&c, uint32(rePeek(tls, p))) >= uint32('0') && c <= uint32('9') {
 19422  						n = int32(uint32(n*10) + c - uint32('0'))
 19423  						(*ReCompiled)(unsafe.Pointer(p)).FsIn.Fi++
 19424  					}
 19425  				}
 19426  				if c != uint32('}') {
 19427  					return ts + 6685
 19428  				}
 19429  				if n > 0 && n < m {
 19430  					return ts + 6699
 19431  				}
 19432  				(*ReCompiled)(unsafe.Pointer(p)).FsIn.Fi++
 19433  				sz = int32((*ReCompiled)(unsafe.Pointer(p)).FnState - uint32(iPrev))
 19434  				if m == 0 {
 19435  					if n == 0 {
 19436  						return ts + 6724
 19437  					}
 19438  					re_insert(tls, p, iPrev, RE_OP_FORK, sz+1)
 19439  					n--
 19440  				} else {
 19441  					for j = 1; j < m; j++ {
 19442  						re_copy(tls, p, iPrev, sz)
 19443  					}
 19444  				}
 19445  				for j = m; j < n; j++ {
 19446  					re_append(tls, p, RE_OP_FORK, sz+1)
 19447  					re_copy(tls, p, iPrev, sz)
 19448  				}
 19449  				if n == 0 && m > 0 {
 19450  					re_append(tls, p, RE_OP_FORK, -sz)
 19451  				}
 19452  				break
 19453  
 19454  			}
 19455  		case uint32('['):
 19456  			{
 19457  				var iFirst int32 = int32((*ReCompiled)(unsafe.Pointer(p)).FnState)
 19458  				if int32(rePeek(tls, p)) == '^' {
 19459  					re_append(tls, p, RE_OP_CC_EXC, 0)
 19460  					(*ReCompiled)(unsafe.Pointer(p)).FsIn.Fi++
 19461  				} else {
 19462  					re_append(tls, p, RE_OP_CC_INC, 0)
 19463  				}
 19464  				for libc.AssignUint32(&c, (*struct {
 19465  					f func(*libc.TLS, uintptr) uint32
 19466  				})(unsafe.Pointer(&struct{ uintptr }{(*ReCompiled)(unsafe.Pointer(p)).FxNextChar})).f(tls, p)) != uint32(0) {
 19467  					if c == uint32('[') && int32(rePeek(tls, p)) == ':' {
 19468  						return ts + 6757
 19469  					}
 19470  					if c == uint32('\\') {
 19471  						c = re_esc_char(tls, p)
 19472  					}
 19473  					if int32(rePeek(tls, p)) == '-' {
 19474  						re_append(tls, p, RE_OP_CC_RANGE, int32(c))
 19475  						(*ReCompiled)(unsafe.Pointer(p)).FsIn.Fi++
 19476  						c = (*struct {
 19477  							f func(*libc.TLS, uintptr) uint32
 19478  						})(unsafe.Pointer(&struct{ uintptr }{(*ReCompiled)(unsafe.Pointer(p)).FxNextChar})).f(tls, p)
 19479  						if c == uint32('\\') {
 19480  							c = re_esc_char(tls, p)
 19481  						}
 19482  						re_append(tls, p, RE_OP_CC_RANGE, int32(c))
 19483  					} else {
 19484  						re_append(tls, p, RE_OP_CC_VALUE, int32(c))
 19485  					}
 19486  					if int32(rePeek(tls, p)) == ']' {
 19487  						(*ReCompiled)(unsafe.Pointer(p)).FsIn.Fi++
 19488  						break
 19489  					}
 19490  				}
 19491  				if c == uint32(0) {
 19492  					return ts + 6795
 19493  				}
 19494  				*(*int32)(unsafe.Pointer((*ReCompiled)(unsafe.Pointer(p)).FaArg + uintptr(iFirst)*4)) = int32((*ReCompiled)(unsafe.Pointer(p)).FnState - uint32(iFirst))
 19495  				break
 19496  
 19497  			}
 19498  		case uint32('\\'):
 19499  			{
 19500  				var specialOp int32 = 0
 19501  				switch int32(rePeek(tls, p)) {
 19502  				case 'b':
 19503  					specialOp = RE_OP_BOUNDARY
 19504  					break
 19505  				case 'd':
 19506  					specialOp = RE_OP_DIGIT
 19507  					break
 19508  				case 'D':
 19509  					specialOp = RE_OP_NOTDIGIT
 19510  					break
 19511  				case 's':
 19512  					specialOp = RE_OP_SPACE
 19513  					break
 19514  				case 'S':
 19515  					specialOp = RE_OP_NOTSPACE
 19516  					break
 19517  				case 'w':
 19518  					specialOp = RE_OP_WORD
 19519  					break
 19520  				case 'W':
 19521  					specialOp = RE_OP_NOTWORD
 19522  					break
 19523  				}
 19524  				if specialOp != 0 {
 19525  					(*ReCompiled)(unsafe.Pointer(p)).FsIn.Fi++
 19526  					re_append(tls, p, specialOp, 0)
 19527  				} else {
 19528  					c = re_esc_char(tls, p)
 19529  					re_append(tls, p, RE_OP_MATCH, int32(c))
 19530  				}
 19531  				break
 19532  
 19533  			}
 19534  		default:
 19535  			{
 19536  				re_append(tls, p, RE_OP_MATCH, int32(c))
 19537  				break
 19538  
 19539  			}
 19540  		}
 19541  		iPrev = iStart
 19542  	}
 19543  	return uintptr(0)
 19544  }
 19545  
 19546  func sqlite3re_free(tls *libc.TLS, pRe uintptr) {
 19547  	if pRe != 0 {
 19548  		sqlite3.Xsqlite3_free(tls, (*ReCompiled)(unsafe.Pointer(pRe)).FaOp)
 19549  		sqlite3.Xsqlite3_free(tls, (*ReCompiled)(unsafe.Pointer(pRe)).FaArg)
 19550  		sqlite3.Xsqlite3_free(tls, pRe)
 19551  	}
 19552  }
 19553  
 19554  func sqlite3re_compile(tls *libc.TLS, ppRe uintptr, zIn uintptr, noCase int32) uintptr {
 19555  	var pRe uintptr
 19556  	var zErr uintptr
 19557  	var i int32
 19558  	var j int32
 19559  
 19560  	*(*uintptr)(unsafe.Pointer(ppRe)) = uintptr(0)
 19561  	pRe = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(ReCompiled{})))
 19562  	if pRe == uintptr(0) {
 19563  		return ts + 2069
 19564  	}
 19565  	libc.Xmemset(tls, pRe, 0, uint64(unsafe.Sizeof(ReCompiled{})))
 19566  	(*ReCompiled)(unsafe.Pointer(pRe)).FxNextChar = func() uintptr {
 19567  		if noCase != 0 {
 19568  			return *(*uintptr)(unsafe.Pointer(&struct {
 19569  				f func(*libc.TLS, uintptr) uint32
 19570  			}{re_next_char_nocase}))
 19571  		}
 19572  		return *(*uintptr)(unsafe.Pointer(&struct {
 19573  			f func(*libc.TLS, uintptr) uint32
 19574  		}{re_next_char}))
 19575  	}()
 19576  	if re_resize(tls, pRe, 30) != 0 {
 19577  		sqlite3re_free(tls, pRe)
 19578  		return ts + 2069
 19579  	}
 19580  	if int32(*(*uint8)(unsafe.Pointer(zIn))) == '^' {
 19581  		zIn++
 19582  	} else {
 19583  		re_append(tls, pRe, RE_OP_ANYSTAR, 0)
 19584  	}
 19585  	(*ReCompiled)(unsafe.Pointer(pRe)).FsIn.Fz = zIn
 19586  	(*ReCompiled)(unsafe.Pointer(pRe)).FsIn.Fi = 0
 19587  	(*ReCompiled)(unsafe.Pointer(pRe)).FsIn.Fmx = int32(libc.Xstrlen(tls, zIn))
 19588  	zErr = re_subcompile_re(tls, pRe)
 19589  	if zErr != 0 {
 19590  		sqlite3re_free(tls, pRe)
 19591  		return zErr
 19592  	}
 19593  	if int32(rePeek(tls, pRe)) == '$' && (*ReCompiled)(unsafe.Pointer(pRe)).FsIn.Fi+1 >= (*ReCompiled)(unsafe.Pointer(pRe)).FsIn.Fmx {
 19594  		re_append(tls, pRe, RE_OP_MATCH, RE_EOF)
 19595  		re_append(tls, pRe, RE_OP_ACCEPT, 0)
 19596  		*(*uintptr)(unsafe.Pointer(ppRe)) = pRe
 19597  	} else if (*ReCompiled)(unsafe.Pointer(pRe)).FsIn.Fi >= (*ReCompiled)(unsafe.Pointer(pRe)).FsIn.Fmx {
 19598  		re_append(tls, pRe, RE_OP_ACCEPT, 0)
 19599  		*(*uintptr)(unsafe.Pointer(ppRe)) = pRe
 19600  	} else {
 19601  		sqlite3re_free(tls, pRe)
 19602  		return ts + 6808
 19603  	}
 19604  
 19605  	if int32(*(*uint8)(unsafe.Pointer((*ReCompiled)(unsafe.Pointer(pRe)).FaOp))) == RE_OP_ANYSTAR && !(noCase != 0) {
 19606  		j = 0
 19607  		i = 1
 19608  		for ; j < int32(unsafe.Sizeof([12]uint8{}))-2 && int32(*(*uint8)(unsafe.Pointer((*ReCompiled)(unsafe.Pointer(pRe)).FaOp + uintptr(i)))) == RE_OP_MATCH; i++ {
 19609  			var x uint32 = uint32(*(*int32)(unsafe.Pointer((*ReCompiled)(unsafe.Pointer(pRe)).FaArg + uintptr(i)*4)))
 19610  			if x <= uint32(127) {
 19611  				*(*uint8)(unsafe.Pointer(pRe + 48 + uintptr(libc.PostIncInt32(&j, 1)))) = uint8(x)
 19612  			} else if x <= uint32(0xfff) {
 19613  				*(*uint8)(unsafe.Pointer(pRe + 48 + uintptr(libc.PostIncInt32(&j, 1)))) = uint8(uint32(0xc0) | x>>6)
 19614  				*(*uint8)(unsafe.Pointer(pRe + 48 + uintptr(libc.PostIncInt32(&j, 1)))) = uint8(uint32(0x80) | x&uint32(0x3f))
 19615  			} else if x <= uint32(0xffff) {
 19616  				*(*uint8)(unsafe.Pointer(pRe + 48 + uintptr(libc.PostIncInt32(&j, 1)))) = uint8(uint32(0xe0) | x>>12)
 19617  				*(*uint8)(unsafe.Pointer(pRe + 48 + uintptr(libc.PostIncInt32(&j, 1)))) = uint8(uint32(0x80) | x>>6&uint32(0x3f))
 19618  				*(*uint8)(unsafe.Pointer(pRe + 48 + uintptr(libc.PostIncInt32(&j, 1)))) = uint8(uint32(0x80) | x&uint32(0x3f))
 19619  			} else {
 19620  				break
 19621  			}
 19622  		}
 19623  		if j > 0 && int32(*(*uint8)(unsafe.Pointer(pRe + 48 + uintptr(j-1)))) == 0 {
 19624  			j--
 19625  		}
 19626  		(*ReCompiled)(unsafe.Pointer(pRe)).FnInit = j
 19627  	}
 19628  	return (*ReCompiled)(unsafe.Pointer(pRe)).FzErr
 19629  }
 19630  
 19631  func re_sql_func(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 19632  	bp := tls.Alloc(8)
 19633  	defer tls.Free(8)
 19634  
 19635  	var zPattern uintptr
 19636  	var zStr uintptr
 19637  	var zErr uintptr
 19638  	var setAux int32 = 0
 19639  
 19640  	_ = argc
 19641  	*(*uintptr)(unsafe.Pointer(bp)) = sqlite3.Xsqlite3_get_auxdata(tls, context, 0)
 19642  	if *(*uintptr)(unsafe.Pointer(bp)) == uintptr(0) {
 19643  		zPattern = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 19644  		if zPattern == uintptr(0) {
 19645  			return
 19646  		}
 19647  		zErr = sqlite3re_compile(tls, bp, zPattern, libc.Bool32(sqlite3.Xsqlite3_user_data(tls, context) != uintptr(0)))
 19648  		if zErr != 0 {
 19649  			sqlite3re_free(tls, *(*uintptr)(unsafe.Pointer(bp)))
 19650  			sqlite3.Xsqlite3_result_error(tls, context, zErr, -1)
 19651  			return
 19652  		}
 19653  		if *(*uintptr)(unsafe.Pointer(bp)) == uintptr(0) {
 19654  			sqlite3.Xsqlite3_result_error_nomem(tls, context)
 19655  			return
 19656  		}
 19657  		setAux = 1
 19658  	}
 19659  	zStr = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 19660  	if zStr != uintptr(0) {
 19661  		sqlite3.Xsqlite3_result_int(tls, context, sqlite3re_match(tls, *(*uintptr)(unsafe.Pointer(bp)), zStr, -1))
 19662  	}
 19663  	if setAux != 0 {
 19664  		sqlite3.Xsqlite3_set_auxdata(tls, context, 0, *(*uintptr)(unsafe.Pointer(bp)), *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{sqlite3re_free})))
 19665  	}
 19666  }
 19667  
 19668  func sqlite3_regexp_init(tls *libc.TLS, db uintptr, pzErrMsg uintptr, pApi uintptr) int32 {
 19669  	var rc int32 = SQLITE_OK
 19670  	_ = pApi
 19671  
 19672  	_ = pzErrMsg
 19673  	rc = sqlite3.Xsqlite3_create_function(tls, db, ts+6831, 2,
 19674  		SQLITE_UTF8|SQLITE_INNOCUOUS|SQLITE_DETERMINISTIC,
 19675  		uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 19676  			f func(*libc.TLS, uintptr, int32, uintptr)
 19677  		}{re_sql_func})), uintptr(0), uintptr(0))
 19678  	if rc == SQLITE_OK {
 19679  		rc = sqlite3.Xsqlite3_create_function(tls, db, ts+6838, 2,
 19680  			SQLITE_UTF8|SQLITE_INNOCUOUS|SQLITE_DETERMINISTIC,
 19681  			db, *(*uintptr)(unsafe.Pointer(&struct {
 19682  				f func(*libc.TLS, uintptr, int32, uintptr)
 19683  			}{re_sql_func})), uintptr(0), uintptr(0))
 19684  	}
 19685  	return rc
 19686  }
 19687  
 19688  func rememberFunc(tls *libc.TLS, pCtx uintptr, argc int32, argv uintptr) {
 19689  	var v sqlite3_int64
 19690  	var ptr uintptr
 19691  
 19692  	v = sqlite3.Xsqlite3_value_int64(tls, *(*uintptr)(unsafe.Pointer(argv)))
 19693  	ptr = sqlite3.Xsqlite3_value_pointer(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)), ts+4060)
 19694  	if ptr != 0 {
 19695  		*(*sqlite3_int64)(unsafe.Pointer(ptr)) = v
 19696  	}
 19697  	sqlite3.Xsqlite3_result_int64(tls, pCtx, v)
 19698  }
 19699  
 19700  func sqlite3_remember_init(tls *libc.TLS, db uintptr, pzErrMsg uintptr, pApi uintptr) int32 {
 19701  	var rc int32 = SQLITE_OK
 19702  	_ = pApi
 19703  
 19704  	rc = sqlite3.Xsqlite3_create_function(tls, db, ts+6846, 2, SQLITE_UTF8, uintptr(0),
 19705  		*(*uintptr)(unsafe.Pointer(&struct {
 19706  			f func(*libc.TLS, uintptr, int32, uintptr)
 19707  		}{rememberFunc})), uintptr(0), uintptr(0))
 19708  	return rc
 19709  }
 19710  
 19711  type series_cursor1 = struct {
 19712  	Fbase        sqlite3_vtab_cursor
 19713  	FisDesc      int32
 19714  	F__ccgo_pad1 [4]byte
 19715  	FiRowid      sqlite3_int64
 19716  	FiValue      sqlite3_int64
 19717  	FmnValue     sqlite3_int64
 19718  	FmxValue     sqlite3_int64
 19719  	FiStep       sqlite3_int64
 19720  }
 19721  
 19722  type series_cursor = series_cursor1
 19723  
 19724  func seriesConnect(tls *libc.TLS, db uintptr, pUnused uintptr, argcUnused int32, argvUnused uintptr, ppVtab uintptr, pzErrUnused uintptr) int32 {
 19725  	var pNew uintptr
 19726  	var rc int32
 19727  
 19728  	_ = pUnused
 19729  	_ = argcUnused
 19730  	_ = argvUnused
 19731  	_ = pzErrUnused
 19732  	rc = sqlite3.Xsqlite3_declare_vtab(tls, db,
 19733  		ts+6855)
 19734  	if rc == SQLITE_OK {
 19735  		pNew = libc.AssignPtrUintptr(ppVtab, sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(sqlite3_vtab{}))))
 19736  		if pNew == uintptr(0) {
 19737  			return SQLITE_NOMEM
 19738  		}
 19739  		libc.Xmemset(tls, pNew, 0, uint64(unsafe.Sizeof(sqlite3_vtab{})))
 19740  		sqlite3.Xsqlite3_vtab_config(tls, db, SQLITE_VTAB_INNOCUOUS, 0)
 19741  	}
 19742  	return rc
 19743  }
 19744  
 19745  func seriesDisconnect(tls *libc.TLS, pVtab uintptr) int32 {
 19746  	sqlite3.Xsqlite3_free(tls, pVtab)
 19747  	return SQLITE_OK
 19748  }
 19749  
 19750  func seriesOpen(tls *libc.TLS, pUnused uintptr, ppCursor uintptr) int32 {
 19751  	var pCur uintptr
 19752  	_ = pUnused
 19753  	pCur = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(series_cursor{})))
 19754  	if pCur == uintptr(0) {
 19755  		return SQLITE_NOMEM
 19756  	}
 19757  	libc.Xmemset(tls, pCur, 0, uint64(unsafe.Sizeof(series_cursor{})))
 19758  	*(*uintptr)(unsafe.Pointer(ppCursor)) = pCur
 19759  	return SQLITE_OK
 19760  }
 19761  
 19762  func seriesClose(tls *libc.TLS, cur uintptr) int32 {
 19763  	sqlite3.Xsqlite3_free(tls, cur)
 19764  	return SQLITE_OK
 19765  }
 19766  
 19767  func seriesNext(tls *libc.TLS, cur uintptr) int32 {
 19768  	var pCur uintptr = cur
 19769  	if (*series_cursor)(unsafe.Pointer(pCur)).FisDesc != 0 {
 19770  		*(*sqlite3_int64)(unsafe.Pointer(pCur + 24)) -= (*series_cursor)(unsafe.Pointer(pCur)).FiStep
 19771  	} else {
 19772  		*(*sqlite3_int64)(unsafe.Pointer(pCur + 24)) += (*series_cursor)(unsafe.Pointer(pCur)).FiStep
 19773  	}
 19774  	(*series_cursor)(unsafe.Pointer(pCur)).FiRowid++
 19775  	return SQLITE_OK
 19776  }
 19777  
 19778  func seriesColumn(tls *libc.TLS, cur uintptr, ctx uintptr, i int32) int32 {
 19779  	var pCur uintptr = cur
 19780  	var x sqlite3_int64 = int64(0)
 19781  	switch i {
 19782  	case SERIES_COLUMN_START:
 19783  		x = (*series_cursor)(unsafe.Pointer(pCur)).FmnValue
 19784  		break
 19785  	case SERIES_COLUMN_STOP:
 19786  		x = (*series_cursor)(unsafe.Pointer(pCur)).FmxValue
 19787  		break
 19788  	case SERIES_COLUMN_STEP:
 19789  		x = (*series_cursor)(unsafe.Pointer(pCur)).FiStep
 19790  		break
 19791  	default:
 19792  		x = (*series_cursor)(unsafe.Pointer(pCur)).FiValue
 19793  		break
 19794  	}
 19795  	sqlite3.Xsqlite3_result_int64(tls, ctx, x)
 19796  	return SQLITE_OK
 19797  }
 19798  
 19799  func seriesRowid(tls *libc.TLS, cur uintptr, pRowid uintptr) int32 {
 19800  	var pCur uintptr = cur
 19801  	*(*sqlite_int64)(unsafe.Pointer(pRowid)) = (*series_cursor)(unsafe.Pointer(pCur)).FiRowid
 19802  	return SQLITE_OK
 19803  }
 19804  
 19805  func seriesEof(tls *libc.TLS, cur uintptr) int32 {
 19806  	var pCur uintptr = cur
 19807  	if (*series_cursor)(unsafe.Pointer(pCur)).FisDesc != 0 {
 19808  		return libc.Bool32((*series_cursor)(unsafe.Pointer(pCur)).FiValue < (*series_cursor)(unsafe.Pointer(pCur)).FmnValue)
 19809  	} else {
 19810  		return libc.Bool32((*series_cursor)(unsafe.Pointer(pCur)).FiValue > (*series_cursor)(unsafe.Pointer(pCur)).FmxValue)
 19811  	}
 19812  	return int32(0)
 19813  }
 19814  
 19815  func seriesFilter(tls *libc.TLS, pVtabCursor uintptr, idxNum int32, idxStrUnused uintptr, argc int32, argv uintptr) int32 {
 19816  	var pCur uintptr = pVtabCursor
 19817  	var i int32 = 0
 19818  	_ = idxStrUnused
 19819  	if idxNum&1 != 0 {
 19820  		(*series_cursor)(unsafe.Pointer(pCur)).FmnValue = sqlite3.Xsqlite3_value_int64(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(libc.PostIncInt32(&i, 1))*8)))
 19821  	} else {
 19822  		(*series_cursor)(unsafe.Pointer(pCur)).FmnValue = int64(0)
 19823  	}
 19824  	if idxNum&2 != 0 {
 19825  		(*series_cursor)(unsafe.Pointer(pCur)).FmxValue = sqlite3.Xsqlite3_value_int64(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(libc.PostIncInt32(&i, 1))*8)))
 19826  	} else {
 19827  		(*series_cursor)(unsafe.Pointer(pCur)).FmxValue = int64(0xffffffff)
 19828  	}
 19829  	if idxNum&4 != 0 {
 19830  		(*series_cursor)(unsafe.Pointer(pCur)).FiStep = sqlite3.Xsqlite3_value_int64(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(libc.PostIncInt32(&i, 1))*8)))
 19831  		if (*series_cursor)(unsafe.Pointer(pCur)).FiStep == int64(0) {
 19832  			(*series_cursor)(unsafe.Pointer(pCur)).FiStep = int64(1)
 19833  		} else if (*series_cursor)(unsafe.Pointer(pCur)).FiStep < int64(0) {
 19834  			(*series_cursor)(unsafe.Pointer(pCur)).FiStep = -(*series_cursor)(unsafe.Pointer(pCur)).FiStep
 19835  			if idxNum&16 == 0 {
 19836  				idxNum = idxNum | 8
 19837  			}
 19838  		}
 19839  	} else {
 19840  		(*series_cursor)(unsafe.Pointer(pCur)).FiStep = int64(1)
 19841  	}
 19842  	for i = 0; i < argc; i++ {
 19843  		if sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8))) == SQLITE_NULL {
 19844  			(*series_cursor)(unsafe.Pointer(pCur)).FmnValue = int64(1)
 19845  			(*series_cursor)(unsafe.Pointer(pCur)).FmxValue = int64(0)
 19846  			break
 19847  		}
 19848  	}
 19849  	if idxNum&8 != 0 {
 19850  		(*series_cursor)(unsafe.Pointer(pCur)).FisDesc = 1
 19851  		(*series_cursor)(unsafe.Pointer(pCur)).FiValue = (*series_cursor)(unsafe.Pointer(pCur)).FmxValue
 19852  		if (*series_cursor)(unsafe.Pointer(pCur)).FiStep > int64(0) {
 19853  			*(*sqlite3_int64)(unsafe.Pointer(pCur + 24)) -= ((*series_cursor)(unsafe.Pointer(pCur)).FmxValue - (*series_cursor)(unsafe.Pointer(pCur)).FmnValue) % (*series_cursor)(unsafe.Pointer(pCur)).FiStep
 19854  		}
 19855  	} else {
 19856  		(*series_cursor)(unsafe.Pointer(pCur)).FisDesc = 0
 19857  		(*series_cursor)(unsafe.Pointer(pCur)).FiValue = (*series_cursor)(unsafe.Pointer(pCur)).FmnValue
 19858  	}
 19859  	(*series_cursor)(unsafe.Pointer(pCur)).FiRowid = int64(1)
 19860  	return SQLITE_OK
 19861  }
 19862  
 19863  func seriesBestIndex(tls *libc.TLS, pVTab uintptr, pIdxInfo uintptr) int32 {
 19864  	bp := tls.Alloc(12)
 19865  	defer tls.Free(12)
 19866  
 19867  	var i int32
 19868  	var j int32
 19869  	var idxNum int32 = 0
 19870  	var bStartSeen int32 = 0
 19871  	var unusableMask int32 = 0
 19872  	var nArg int32 = 0
 19873  
 19874  	var pConstraint uintptr
 19875  
 19876  	*(*int32)(unsafe.Pointer(bp)) = libc.AssignPtrInt32(bp+1*4, libc.AssignPtrInt32(bp+2*4, -1))
 19877  	pConstraint = (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint
 19878  	i = 0
 19879  __1:
 19880  	if !(i < (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnConstraint) {
 19881  		goto __3
 19882  	}
 19883  	{
 19884  		var iCol int32
 19885  		var iMask int32
 19886  		if (*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).FiColumn < SERIES_COLUMN_START {
 19887  			goto __2
 19888  		}
 19889  		iCol = (*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).FiColumn - SERIES_COLUMN_START
 19890  
 19891  		iMask = int32(1) << iCol
 19892  		if iCol == 0 {
 19893  			bStartSeen = 1
 19894  		}
 19895  		if int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fusable) == 0 {
 19896  			unusableMask = unusableMask | iMask
 19897  			goto __2
 19898  		} else if int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_EQ {
 19899  			idxNum = idxNum | iMask
 19900  			*(*int32)(unsafe.Pointer(bp + uintptr(iCol)*4)) = i
 19901  		}
 19902  
 19903  	}
 19904  	goto __2
 19905  __2:
 19906  	i++
 19907  	pConstraint += 12
 19908  	goto __1
 19909  	goto __3
 19910  __3:
 19911  	;
 19912  	for i = 0; i < 3; i++ {
 19913  		if libc.AssignInt32(&j, *(*int32)(unsafe.Pointer(bp + uintptr(i)*4))) >= 0 {
 19914  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(j)*8)).FargvIndex = libc.PreIncInt32(&nArg, 1)
 19915  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(j)*8)).Fomit = libc.BoolUint8(!(1 != 0))
 19916  		}
 19917  	}
 19918  
 19919  	if !(bStartSeen != 0) {
 19920  		sqlite3.Xsqlite3_free(tls, (*sqlite3_vtab)(unsafe.Pointer(pVTab)).FzErrMsg)
 19921  		(*sqlite3_vtab)(unsafe.Pointer(pVTab)).FzErrMsg = sqlite3.Xsqlite3_mprintf(tls,
 19922  			ts+6914, 0)
 19923  		return SQLITE_ERROR
 19924  	}
 19925  	if unusableMask & ^idxNum != 0 {
 19926  		return SQLITE_CONSTRAINT
 19927  	}
 19928  	if idxNum&3 == 3 {
 19929  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = float64(2 - libc.Bool32(idxNum&4 != 0))
 19930  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedRows = int64(1000)
 19931  		if (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnOrderBy >= 1 && (*sqlite3_index_orderby)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaOrderBy)).FiColumn == 0 {
 19932  			if (*sqlite3_index_orderby)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaOrderBy)).Fdesc != 0 {
 19933  				idxNum = idxNum | 8
 19934  			} else {
 19935  				idxNum = idxNum | 16
 19936  			}
 19937  			(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).ForderByConsumed = 1
 19938  		}
 19939  	} else {
 19940  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedRows = int64(2147483647)
 19941  	}
 19942  	(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxNum = idxNum
 19943  	return SQLITE_OK
 19944  }
 19945  
 19946  var seriesModule = sqlite3_module{
 19947  	FxConnect:    0,
 19948  	FxBestIndex:  0,
 19949  	FxDisconnect: 0,
 19950  	FxOpen:       0,
 19951  	FxClose:      0,
 19952  	FxFilter:     0,
 19953  	FxNext:       0,
 19954  	FxEof:        0,
 19955  	FxColumn:     0,
 19956  	FxRowid:      0,
 19957  }
 19958  
 19959  func sqlite3_series_init(tls *libc.TLS, db uintptr, pzErrMsg uintptr, pApi uintptr) int32 {
 19960  	var rc int32 = SQLITE_OK
 19961  	_ = pApi
 19962  
 19963  	if sqlite3.Xsqlite3_libversion_number(tls) < 3008012 && pzErrMsg != uintptr(0) {
 19964  		*(*uintptr)(unsafe.Pointer(pzErrMsg)) = sqlite3.Xsqlite3_mprintf(tls,
 19965  			ts+6972, 0)
 19966  		return SQLITE_ERROR
 19967  	}
 19968  	rc = sqlite3.Xsqlite3_create_module(tls, db, ts+7022, uintptr(unsafe.Pointer(&seriesModule)), uintptr(0))
 19969  	return rc
 19970  }
 19971  
 19972  type u16 = uint16
 19973  
 19974  var midClass = [128]uint8{
 19975  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19976  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19977  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19978  	uint8(CCLASS_SPACE), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19979  	uint8(CCLASS_SPACE), uint8(CCLASS_SPACE), uint8(CCLASS_OTHER),
 19980  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19981  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19982  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19983  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19984  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19985  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_SPACE),
 19986  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19987  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19988  	uint8(CCLASS_SILENT), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19989  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19990  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19991  	uint8(CCLASS_DIGIT), uint8(CCLASS_DIGIT), uint8(CCLASS_DIGIT),
 19992  	uint8(CCLASS_DIGIT), uint8(CCLASS_DIGIT), uint8(CCLASS_DIGIT),
 19993  	uint8(CCLASS_DIGIT), uint8(CCLASS_DIGIT), uint8(CCLASS_DIGIT),
 19994  	uint8(CCLASS_DIGIT), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19995  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19996  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_VOWEL),
 19997  	uint8(CCLASS_B), uint8(CCLASS_C), uint8(CCLASS_D),
 19998  	uint8(CCLASS_VOWEL), uint8(CCLASS_B), uint8(CCLASS_C),
 19999  	uint8(CCLASS_SILENT), uint8(CCLASS_VOWEL), uint8(CCLASS_C),
 20000  	uint8(CCLASS_C), uint8(CCLASS_L), uint8(CCLASS_M),
 20001  	uint8(CCLASS_M), uint8(CCLASS_VOWEL), uint8(CCLASS_B),
 20002  	uint8(CCLASS_C), uint8(CCLASS_R), uint8(CCLASS_C),
 20003  	uint8(CCLASS_D), uint8(CCLASS_VOWEL), uint8(CCLASS_B),
 20004  	uint8(CCLASS_B), uint8(CCLASS_C), uint8(CCLASS_VOWEL),
 20005  	uint8(CCLASS_C), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 20006  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 20007  	uint8(CCLASS_OTHER), uint8(CCLASS_VOWEL), uint8(CCLASS_B),
 20008  	uint8(CCLASS_C), uint8(CCLASS_D), uint8(CCLASS_VOWEL),
 20009  	uint8(CCLASS_B), uint8(CCLASS_C), uint8(CCLASS_SILENT),
 20010  	uint8(CCLASS_VOWEL), uint8(CCLASS_C), uint8(CCLASS_C),
 20011  	uint8(CCLASS_L), uint8(CCLASS_M), uint8(CCLASS_M),
 20012  	uint8(CCLASS_VOWEL), uint8(CCLASS_B), uint8(CCLASS_C),
 20013  	uint8(CCLASS_R), uint8(CCLASS_C), uint8(CCLASS_D),
 20014  	uint8(CCLASS_VOWEL), uint8(CCLASS_B), uint8(CCLASS_B),
 20015  	uint8(CCLASS_C), uint8(CCLASS_VOWEL), uint8(CCLASS_C),
 20016  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 20017  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 20018  }
 20019  
 20020  var initClass = [128]uint8{
 20021  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 20022  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 20023  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 20024  	uint8(CCLASS_SPACE), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 20025  	uint8(CCLASS_SPACE), uint8(CCLASS_SPACE), uint8(CCLASS_OTHER),
 20026  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 20027  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 20028  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 20029  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 20030  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 20031  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_SPACE),
 20032  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 20033  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 20034  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 20035  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 20036  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 20037  	uint8(CCLASS_DIGIT), uint8(CCLASS_DIGIT), uint8(CCLASS_DIGIT),
 20038  	uint8(CCLASS_DIGIT), uint8(CCLASS_DIGIT), uint8(CCLASS_DIGIT),
 20039  	uint8(CCLASS_DIGIT), uint8(CCLASS_DIGIT), uint8(CCLASS_DIGIT),
 20040  	uint8(CCLASS_DIGIT), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 20041  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 20042  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_VOWEL),
 20043  	uint8(CCLASS_B), uint8(CCLASS_C), uint8(CCLASS_D),
 20044  	uint8(CCLASS_VOWEL), uint8(CCLASS_B), uint8(CCLASS_C),
 20045  	uint8(CCLASS_SILENT), uint8(CCLASS_VOWEL), uint8(CCLASS_C),
 20046  	uint8(CCLASS_C), uint8(CCLASS_L), uint8(CCLASS_M),
 20047  	uint8(CCLASS_M), uint8(CCLASS_VOWEL), uint8(CCLASS_B),
 20048  	uint8(CCLASS_C), uint8(CCLASS_R), uint8(CCLASS_C),
 20049  	uint8(CCLASS_D), uint8(CCLASS_VOWEL), uint8(CCLASS_B),
 20050  	uint8(CCLASS_B), uint8(CCLASS_C), uint8(CCLASS_Y),
 20051  	uint8(CCLASS_C), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 20052  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 20053  	uint8(CCLASS_OTHER), uint8(CCLASS_VOWEL), uint8(CCLASS_B),
 20054  	uint8(CCLASS_C), uint8(CCLASS_D), uint8(CCLASS_VOWEL),
 20055  	uint8(CCLASS_B), uint8(CCLASS_C), uint8(CCLASS_SILENT),
 20056  	uint8(CCLASS_VOWEL), uint8(CCLASS_C), uint8(CCLASS_C),
 20057  	uint8(CCLASS_L), uint8(CCLASS_M), uint8(CCLASS_M),
 20058  	uint8(CCLASS_VOWEL), uint8(CCLASS_B), uint8(CCLASS_C),
 20059  	uint8(CCLASS_R), uint8(CCLASS_C), uint8(CCLASS_D),
 20060  	uint8(CCLASS_VOWEL), uint8(CCLASS_B), uint8(CCLASS_B),
 20061  	uint8(CCLASS_C), uint8(CCLASS_Y), uint8(CCLASS_C),
 20062  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 20063  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 20064  }
 20065  
 20066  var className = *(*[14]uint8)(unsafe.Pointer(ts + 7038))
 20067  
 20068  func phoneticHash(tls *libc.TLS, zIn uintptr, nIn int32) uintptr {
 20069  	var zOut uintptr = sqlite3.Xsqlite3_malloc64(tls, uint64(nIn+1))
 20070  	var i int32
 20071  	var nOut int32 = 0
 20072  	var cPrev uint8 = uint8(0x77)
 20073  	var cPrevX uint8 = uint8(0x77)
 20074  	var aClass uintptr = uintptr(unsafe.Pointer(&initClass))
 20075  
 20076  	if zOut == uintptr(0) {
 20077  		return uintptr(0)
 20078  	}
 20079  	if nIn > 2 {
 20080  		switch int32(*(*uint8)(unsafe.Pointer(zIn))) {
 20081  		case 'g':
 20082  			fallthrough
 20083  		case 'k':
 20084  			{
 20085  				if int32(*(*uint8)(unsafe.Pointer(zIn + 1))) == 'n' {
 20086  					zIn++
 20087  					nIn--
 20088  				}
 20089  				break
 20090  
 20091  			}
 20092  		}
 20093  	}
 20094  	for i = 0; i < nIn; i++ {
 20095  		var c uint8 = *(*uint8)(unsafe.Pointer(zIn + uintptr(i)))
 20096  		if i+1 < nIn {
 20097  			if int32(c) == 'w' && int32(*(*uint8)(unsafe.Pointer(zIn + uintptr(i+1)))) == 'r' {
 20098  				continue
 20099  			}
 20100  			if int32(c) == 'd' && (int32(*(*uint8)(unsafe.Pointer(zIn + uintptr(i+1)))) == 'j' || int32(*(*uint8)(unsafe.Pointer(zIn + uintptr(i+1)))) == 'g') {
 20101  				continue
 20102  			}
 20103  			if i+2 < nIn {
 20104  				if int32(c) == 't' && int32(*(*uint8)(unsafe.Pointer(zIn + uintptr(i+1)))) == 'c' && int32(*(*uint8)(unsafe.Pointer(zIn + uintptr(i+2)))) == 'h' {
 20105  					continue
 20106  				}
 20107  			}
 20108  		}
 20109  		c = *(*uint8)(unsafe.Pointer(aClass + uintptr(int32(c)&0x7f)))
 20110  		if int32(c) == CCLASS_SPACE {
 20111  			continue
 20112  		}
 20113  		if int32(c) == CCLASS_OTHER && int32(cPrev) != CCLASS_DIGIT {
 20114  			continue
 20115  		}
 20116  		aClass = uintptr(unsafe.Pointer(&midClass))
 20117  		if int32(c) == CCLASS_VOWEL && (int32(cPrevX) == CCLASS_R || int32(cPrevX) == CCLASS_L) {
 20118  			continue
 20119  		}
 20120  		if (int32(c) == CCLASS_R || int32(c) == CCLASS_L) && int32(cPrevX) == CCLASS_VOWEL {
 20121  			nOut--
 20122  		}
 20123  		cPrev = c
 20124  		if int32(c) == CCLASS_SILENT {
 20125  			continue
 20126  		}
 20127  		cPrevX = c
 20128  		c = className[c]
 20129  
 20130  		if nOut == 0 || int32(c) != int32(*(*uint8)(unsafe.Pointer(zOut + uintptr(nOut-1)))) {
 20131  			*(*uint8)(unsafe.Pointer(zOut + uintptr(libc.PostIncInt32(&nOut, 1)))) = c
 20132  		}
 20133  	}
 20134  	*(*uint8)(unsafe.Pointer(zOut + uintptr(nOut))) = uint8(0)
 20135  	return zOut
 20136  }
 20137  
 20138  func phoneticHashSqlFunc(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 20139  	var zIn uintptr
 20140  	var zOut uintptr
 20141  
 20142  	zIn = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 20143  	if zIn == uintptr(0) {
 20144  		return
 20145  	}
 20146  	zOut = phoneticHash(tls, zIn, sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(argv))))
 20147  	if zOut == uintptr(0) {
 20148  		sqlite3.Xsqlite3_result_error_nomem(tls, context)
 20149  	} else {
 20150  		sqlite3.Xsqlite3_result_text(tls, context, zOut, -1, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{sqlite3.Xsqlite3_free})))
 20151  	}
 20152  }
 20153  
 20154  func characterClass(tls *libc.TLS, cPrev uint8, c uint8) uint8 {
 20155  	if int32(cPrev) == 0 {
 20156  		return initClass[int32(c)&0x7f]
 20157  	}
 20158  	return midClass[int32(c)&0x7f]
 20159  }
 20160  
 20161  func insertOrDeleteCost(tls *libc.TLS, cPrev uint8, c uint8, cNext uint8) int32 {
 20162  	var classC uint8 = characterClass(tls, cPrev, c)
 20163  	var classCprev uint8
 20164  
 20165  	if int32(classC) == CCLASS_SILENT {
 20166  		return 1
 20167  	}
 20168  	if int32(cPrev) == int32(c) {
 20169  		return 10
 20170  	}
 20171  	if int32(classC) == CCLASS_VOWEL && (int32(cPrev) == 'r' || int32(cNext) == 'r') {
 20172  		return 20
 20173  	}
 20174  	classCprev = characterClass(tls, cPrev, cPrev)
 20175  	if int32(classC) == int32(classCprev) {
 20176  		if int32(classC) == CCLASS_VOWEL {
 20177  			return 15
 20178  		} else {
 20179  			return 50
 20180  		}
 20181  	}
 20182  
 20183  	return 100
 20184  }
 20185  
 20186  func substituteCost(tls *libc.TLS, cPrev uint8, cFrom uint8, cTo uint8) int32 {
 20187  	var classFrom uint8
 20188  	var classTo uint8
 20189  	if int32(cFrom) == int32(cTo) {
 20190  		return 0
 20191  	}
 20192  	if int32(cFrom) == int32(cTo)^0x20 && (int32(cTo) >= 'A' && int32(cTo) <= 'Z' || int32(cTo) >= 'a' && int32(cTo) <= 'z') {
 20193  		return 0
 20194  	}
 20195  	classFrom = characterClass(tls, cPrev, cFrom)
 20196  	classTo = characterClass(tls, cPrev, cTo)
 20197  	if int32(classFrom) == int32(classTo) {
 20198  		return 40
 20199  	}
 20200  	if int32(classFrom) >= CCLASS_B && int32(classFrom) <= CCLASS_Y &&
 20201  		int32(classTo) >= CCLASS_B && int32(classTo) <= CCLASS_Y {
 20202  		return 75
 20203  	}
 20204  
 20205  	return 100
 20206  }
 20207  
 20208  func editdist1(tls *libc.TLS, zA uintptr, zB uintptr, pnMatch uintptr) int32 {
 20209  	bp := tls.Alloc(300)
 20210  	defer tls.Free(300)
 20211  
 20212  	var nA int32
 20213  	var nB int32
 20214  	var xA int32
 20215  	var xB int32
 20216  	var cA uint8 = uint8(0)
 20217  	var cB uint8
 20218  	var cAprev uint8
 20219  	var cBprev uint8
 20220  	var cAnext uint8
 20221  	var cBnext uint8
 20222  	var d int32
 20223  	var dc int32 = 0
 20224  	var res int32
 20225  	var m uintptr
 20226  	var cx uintptr
 20227  	var toFree uintptr = uintptr(0)
 20228  	var nMatch int32 = 0
 20229  
 20230  	if zA == uintptr(0) || zB == uintptr(0) {
 20231  		return -1
 20232  	}
 20233  
 20234  	for *(*uint8)(unsafe.Pointer(zA)) != 0 && int32(*(*uint8)(unsafe.Pointer(zA))) == int32(*(*uint8)(unsafe.Pointer(zB))) {
 20235  		dc = int32(*(*uint8)(unsafe.Pointer(zA)))
 20236  		zA++
 20237  		zB++
 20238  		nMatch++
 20239  	}
 20240  	if pnMatch != 0 {
 20241  		*(*int32)(unsafe.Pointer(pnMatch)) = nMatch
 20242  	}
 20243  	if int32(*(*uint8)(unsafe.Pointer(zA))) == 0 && int32(*(*uint8)(unsafe.Pointer(zB))) == 0 {
 20244  		return 0
 20245  	}
 20246  
 20247  	for nA = 0; *(*uint8)(unsafe.Pointer(zA + uintptr(nA))) != 0; nA++ {
 20248  		if int32(*(*uint8)(unsafe.Pointer(zA + uintptr(nA))))&0x80 != 0 {
 20249  			return -2
 20250  		}
 20251  	}
 20252  	for nB = 0; *(*uint8)(unsafe.Pointer(zB + uintptr(nB))) != 0; nB++ {
 20253  		if int32(*(*uint8)(unsafe.Pointer(zB + uintptr(nB))))&0x80 != 0 {
 20254  			return -2
 20255  		}
 20256  	}
 20257  
 20258  	if nA == 0 {
 20259  		cBprev = uint8(dc)
 20260  		for xB = libc.AssignInt32(&res, 0); int32(libc.AssignUint8(&cB, *(*uint8)(unsafe.Pointer(zB + uintptr(xB))))) != 0; xB++ {
 20261  			res = res + insertOrDeleteCost(tls, cBprev, cB, *(*uint8)(unsafe.Pointer(zB + uintptr(xB+1))))/FINAL_INS_COST_DIV
 20262  			cBprev = cB
 20263  		}
 20264  		return res
 20265  	}
 20266  	if nB == 0 {
 20267  		cAprev = uint8(dc)
 20268  		for xA = libc.AssignInt32(&res, 0); int32(libc.AssignUint8(&cA, *(*uint8)(unsafe.Pointer(zA + uintptr(xA))))) != 0; xA++ {
 20269  			res = res + insertOrDeleteCost(tls, cAprev, cA, *(*uint8)(unsafe.Pointer(zA + uintptr(xA+1))))
 20270  			cAprev = cA
 20271  		}
 20272  		return res
 20273  	}
 20274  
 20275  	if int32(*(*uint8)(unsafe.Pointer(zA))) == '*' && int32(*(*uint8)(unsafe.Pointer(zA + 1))) == 0 {
 20276  		return 0
 20277  	}
 20278  
 20279  	if uint64(nB) < uint64(unsafe.Sizeof([75]int32{}))*uint64(4)/(uint64(unsafe.Sizeof(int32(0)))*uint64(5)) {
 20280  		m = bp
 20281  	} else {
 20282  		m = libc.AssignUintptr(&toFree, sqlite3.Xsqlite3_malloc64(tls, uint64((nB+1)*5)*uint64(unsafe.Sizeof(int32(0)))/uint64(4)))
 20283  		if m == uintptr(0) {
 20284  			return -3
 20285  		}
 20286  	}
 20287  	cx = m + uintptr(nB+1)*4
 20288  
 20289  	*(*int32)(unsafe.Pointer(m)) = 0
 20290  	*(*uint8)(unsafe.Pointer(cx)) = uint8(dc)
 20291  	cBprev = uint8(dc)
 20292  	for xB = 1; xB <= nB; xB++ {
 20293  		cBnext = *(*uint8)(unsafe.Pointer(zB + uintptr(xB)))
 20294  		cB = *(*uint8)(unsafe.Pointer(zB + uintptr(xB-1)))
 20295  		*(*uint8)(unsafe.Pointer(cx + uintptr(xB))) = cB
 20296  		*(*int32)(unsafe.Pointer(m + uintptr(xB)*4)) = *(*int32)(unsafe.Pointer(m + uintptr(xB-1)*4)) + insertOrDeleteCost(tls, cBprev, cB, cBnext)
 20297  		cBprev = cB
 20298  	}
 20299  	cAprev = uint8(dc)
 20300  	for xA = 1; xA <= nA; xA++ {
 20301  		var lastA int32 = libc.Bool32(xA == nA)
 20302  		cA = *(*uint8)(unsafe.Pointer(zA + uintptr(xA-1)))
 20303  		cAnext = *(*uint8)(unsafe.Pointer(zA + uintptr(xA)))
 20304  		if int32(cA) == '*' && lastA != 0 {
 20305  			break
 20306  		}
 20307  		d = *(*int32)(unsafe.Pointer(m))
 20308  		dc = int32(*(*uint8)(unsafe.Pointer(cx)))
 20309  		*(*int32)(unsafe.Pointer(m)) = d + insertOrDeleteCost(tls, cAprev, cA, cAnext)
 20310  		cBprev = uint8(0)
 20311  		for xB = 1; xB <= nB; xB++ {
 20312  			var totalCost int32
 20313  			var insCost int32
 20314  			var delCost int32
 20315  			var subCost int32
 20316  			var ncx int32
 20317  			cB = *(*uint8)(unsafe.Pointer(zB + uintptr(xB-1)))
 20318  			cBnext = *(*uint8)(unsafe.Pointer(zB + uintptr(xB)))
 20319  
 20320  			insCost = insertOrDeleteCost(tls, *(*uint8)(unsafe.Pointer(cx + uintptr(xB-1))), cB, cBnext)
 20321  			if lastA != 0 {
 20322  				insCost = insCost / FINAL_INS_COST_DIV
 20323  			}
 20324  
 20325  			delCost = insertOrDeleteCost(tls, *(*uint8)(unsafe.Pointer(cx + uintptr(xB))), cA, cBnext)
 20326  
 20327  			subCost = substituteCost(tls, *(*uint8)(unsafe.Pointer(cx + uintptr(xB-1))), cA, cB)
 20328  
 20329  			totalCost = insCost + *(*int32)(unsafe.Pointer(m + uintptr(xB-1)*4))
 20330  			ncx = int32(cB)
 20331  			if delCost+*(*int32)(unsafe.Pointer(m + uintptr(xB)*4)) < totalCost {
 20332  				totalCost = delCost + *(*int32)(unsafe.Pointer(m + uintptr(xB)*4))
 20333  				ncx = int32(cA)
 20334  			}
 20335  			if subCost+d < totalCost {
 20336  				totalCost = subCost + d
 20337  			}
 20338  
 20339  			d = *(*int32)(unsafe.Pointer(m + uintptr(xB)*4))
 20340  			dc = int32(*(*uint8)(unsafe.Pointer(cx + uintptr(xB))))
 20341  			*(*int32)(unsafe.Pointer(m + uintptr(xB)*4)) = totalCost
 20342  			*(*uint8)(unsafe.Pointer(cx + uintptr(xB))) = uint8(ncx)
 20343  			cBprev = cB
 20344  		}
 20345  		cAprev = cA
 20346  	}
 20347  
 20348  	if int32(cA) == '*' {
 20349  		res = *(*int32)(unsafe.Pointer(m + 1*4))
 20350  		for xB = 1; xB <= nB; xB++ {
 20351  			if *(*int32)(unsafe.Pointer(m + uintptr(xB)*4)) < res {
 20352  				res = *(*int32)(unsafe.Pointer(m + uintptr(xB)*4))
 20353  				if pnMatch != 0 {
 20354  					*(*int32)(unsafe.Pointer(pnMatch)) = xB + nMatch
 20355  				}
 20356  			}
 20357  		}
 20358  	} else {
 20359  		res = *(*int32)(unsafe.Pointer(m + uintptr(nB)*4))
 20360  
 20361  	}
 20362  	sqlite3.Xsqlite3_free(tls, toFree)
 20363  	return res
 20364  }
 20365  
 20366  func editdistSqlFunc(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 20367  	var res int32 = editdist1(tls,
 20368  		sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv))),
 20369  		sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8))),
 20370  		uintptr(0))
 20371  	if res < 0 {
 20372  		if res == -3 {
 20373  			sqlite3.Xsqlite3_result_error_nomem(tls, context)
 20374  		} else if res == -2 {
 20375  			sqlite3.Xsqlite3_result_error(tls, context, ts+7052, -1)
 20376  		} else {
 20377  			sqlite3.Xsqlite3_result_error(tls, context, ts+7082, -1)
 20378  		}
 20379  	} else {
 20380  		sqlite3.Xsqlite3_result_int(tls, context, res)
 20381  	}
 20382  }
 20383  
 20384  type EditDist3Cost1 = struct {
 20385  	FpNext uintptr
 20386  	FnFrom u8
 20387  	FnTo   u8
 20388  	FiCost u16
 20389  	Fa     [4]uint8
 20390  }
 20391  
 20392  type EditDist3Cost = EditDist3Cost1
 20393  type EditDist3Config1 = struct {
 20394  	FnLang       int32
 20395  	F__ccgo_pad1 [4]byte
 20396  	Fa           uintptr
 20397  }
 20398  
 20399  type EditDist3Config = EditDist3Config1
 20400  type EditDist3From1 = struct {
 20401  	FnSubst      int32
 20402  	FnDel        int32
 20403  	FnByte       int32
 20404  	F__ccgo_pad1 [4]byte
 20405  	FapSubst     uintptr
 20406  	FapDel       uintptr
 20407  }
 20408  
 20409  type EditDist3From = EditDist3From1
 20410  type EditDist3FromString1 = struct {
 20411  	Fz        uintptr
 20412  	Fn        int32
 20413  	FisPrefix int32
 20414  	Fa        uintptr
 20415  }
 20416  
 20417  type EditDist3FromString = EditDist3FromString1
 20418  type EditDist3To1 = struct {
 20419  	FnIns  int32
 20420  	FnByte int32
 20421  	FapIns uintptr
 20422  }
 20423  
 20424  type EditDist3To = EditDist3To1
 20425  type EditDist3ToString1 = struct {
 20426  	Fz           uintptr
 20427  	Fn           int32
 20428  	F__ccgo_pad1 [4]byte
 20429  	Fa           uintptr
 20430  }
 20431  
 20432  type EditDist3ToString = EditDist3ToString1
 20433  type EditDist3Lang1 = struct {
 20434  	FiLang    int32
 20435  	FiInsCost int32
 20436  	FiDelCost int32
 20437  	FiSubCost int32
 20438  	FpCost    uintptr
 20439  }
 20440  
 20441  type EditDist3Lang = EditDist3Lang1
 20442  
 20443  var editDist3Lang = EditDist3Lang{FiInsCost: 100, FiDelCost: 100, FiSubCost: 150}
 20444  
 20445  func editDist3ConfigClear(tls *libc.TLS, p uintptr) {
 20446  	var i int32
 20447  	if p == uintptr(0) {
 20448  		return
 20449  	}
 20450  	for i = 0; i < (*EditDist3Config)(unsafe.Pointer(p)).FnLang; i++ {
 20451  		var pCost uintptr
 20452  		var pNext uintptr
 20453  		pCost = (*EditDist3Lang)(unsafe.Pointer((*EditDist3Config)(unsafe.Pointer(p)).Fa + uintptr(i)*24)).FpCost
 20454  		for pCost != 0 {
 20455  			pNext = (*EditDist3Cost)(unsafe.Pointer(pCost)).FpNext
 20456  			sqlite3.Xsqlite3_free(tls, pCost)
 20457  			pCost = pNext
 20458  		}
 20459  	}
 20460  	sqlite3.Xsqlite3_free(tls, (*EditDist3Config)(unsafe.Pointer(p)).Fa)
 20461  	libc.Xmemset(tls, p, 0, uint64(unsafe.Sizeof(EditDist3Config{})))
 20462  }
 20463  
 20464  func editDist3ConfigDelete(tls *libc.TLS, pIn uintptr) {
 20465  	var p uintptr = pIn
 20466  	editDist3ConfigClear(tls, p)
 20467  	sqlite3.Xsqlite3_free(tls, p)
 20468  }
 20469  
 20470  func editDist3CostCompare(tls *libc.TLS, pA uintptr, pB uintptr) int32 {
 20471  	var n int32 = int32((*EditDist3Cost)(unsafe.Pointer(pA)).FnFrom)
 20472  	var rc int32
 20473  	if n > int32((*EditDist3Cost)(unsafe.Pointer(pB)).FnFrom) {
 20474  		n = int32((*EditDist3Cost)(unsafe.Pointer(pB)).FnFrom)
 20475  	}
 20476  	rc = libc.Xstrncmp(tls, pA+12, pB+12, uint64(n))
 20477  	if rc == 0 {
 20478  		rc = int32((*EditDist3Cost)(unsafe.Pointer(pA)).FnFrom) - int32((*EditDist3Cost)(unsafe.Pointer(pB)).FnFrom)
 20479  	}
 20480  	return rc
 20481  }
 20482  
 20483  func editDist3CostMerge(tls *libc.TLS, pA uintptr, pB uintptr) uintptr {
 20484  	bp := tls.Alloc(8)
 20485  	defer tls.Free(8)
 20486  
 20487  	*(*uintptr)(unsafe.Pointer(bp)) = uintptr(0)
 20488  	var ppTail uintptr = bp
 20489  	var p uintptr
 20490  	for pA != 0 && pB != 0 {
 20491  		if editDist3CostCompare(tls, pA, pB) <= 0 {
 20492  			p = pA
 20493  			pA = (*EditDist3Cost)(unsafe.Pointer(pA)).FpNext
 20494  		} else {
 20495  			p = pB
 20496  			pB = (*EditDist3Cost)(unsafe.Pointer(pB)).FpNext
 20497  		}
 20498  		*(*uintptr)(unsafe.Pointer(ppTail)) = p
 20499  		ppTail = p
 20500  	}
 20501  	if pA != 0 {
 20502  		*(*uintptr)(unsafe.Pointer(ppTail)) = pA
 20503  	} else {
 20504  		*(*uintptr)(unsafe.Pointer(ppTail)) = pB
 20505  	}
 20506  	return *(*uintptr)(unsafe.Pointer(bp))
 20507  }
 20508  
 20509  func editDist3CostSort(tls *libc.TLS, pList uintptr) uintptr {
 20510  	bp := tls.Alloc(480)
 20511  	defer tls.Free(480)
 20512  
 20513  	var p uintptr
 20514  	var i int32
 20515  	var mx int32 = 0
 20516  	*(*uintptr)(unsafe.Pointer(bp)) = uintptr(0)
 20517  	*(*uintptr)(unsafe.Pointer(bp + 1*8)) = uintptr(0)
 20518  	for pList != 0 {
 20519  		p = pList
 20520  		pList = (*EditDist3Cost)(unsafe.Pointer(p)).FpNext
 20521  		(*EditDist3Cost)(unsafe.Pointer(p)).FpNext = uintptr(0)
 20522  		for i = 0; *(*uintptr)(unsafe.Pointer(bp + uintptr(i)*8)) != 0; i++ {
 20523  			p = editDist3CostMerge(tls, *(*uintptr)(unsafe.Pointer(bp + uintptr(i)*8)), p)
 20524  			*(*uintptr)(unsafe.Pointer(bp + uintptr(i)*8)) = uintptr(0)
 20525  		}
 20526  		*(*uintptr)(unsafe.Pointer(bp + uintptr(i)*8)) = p
 20527  		if i > mx {
 20528  			mx = i
 20529  			*(*uintptr)(unsafe.Pointer(bp + uintptr(i+1)*8)) = uintptr(0)
 20530  		}
 20531  	}
 20532  	p = uintptr(0)
 20533  	for i = 0; i <= mx; i++ {
 20534  		if *(*uintptr)(unsafe.Pointer(bp + uintptr(i)*8)) != 0 {
 20535  			p = editDist3CostMerge(tls, p, *(*uintptr)(unsafe.Pointer(bp + uintptr(i)*8)))
 20536  		}
 20537  	}
 20538  	return p
 20539  }
 20540  
 20541  func editDist3ConfigLoad(tls *libc.TLS, p uintptr, db uintptr, zTable uintptr) int32 {
 20542  	bp := tls.Alloc(16)
 20543  	defer tls.Free(16)
 20544  
 20545  	var rc int32
 20546  	var rc2 int32
 20547  	var zSql uintptr
 20548  	var iLangPrev int32 = -9999
 20549  	var pLang uintptr = uintptr(0)
 20550  
 20551  	zSql = sqlite3.Xsqlite3_mprintf(tls,
 20552  		ts+7107, libc.VaList(bp, zTable))
 20553  	if zSql == uintptr(0) {
 20554  		return SQLITE_NOMEM
 20555  	}
 20556  	rc = sqlite3.Xsqlite3_prepare(tls, db, zSql, -1, bp+8, uintptr(0))
 20557  	sqlite3.Xsqlite3_free(tls, zSql)
 20558  	if rc != 0 {
 20559  		return rc
 20560  	}
 20561  	editDist3ConfigClear(tls, p)
 20562  	for sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp + 8))) == SQLITE_ROW {
 20563  		var iLang int32 = sqlite3.Xsqlite3_column_int(tls, *(*uintptr)(unsafe.Pointer(bp + 8)), 0)
 20564  		var zFrom uintptr = sqlite3.Xsqlite3_column_text(tls, *(*uintptr)(unsafe.Pointer(bp + 8)), 1)
 20565  		var nFrom int32
 20566  		if zFrom != 0 {
 20567  			nFrom = sqlite3.Xsqlite3_column_bytes(tls, *(*uintptr)(unsafe.Pointer(bp + 8)), 1)
 20568  		} else {
 20569  			nFrom = 0
 20570  		}
 20571  		var zTo uintptr = sqlite3.Xsqlite3_column_text(tls, *(*uintptr)(unsafe.Pointer(bp + 8)), 2)
 20572  		var nTo int32
 20573  		if zTo != 0 {
 20574  			nTo = sqlite3.Xsqlite3_column_bytes(tls, *(*uintptr)(unsafe.Pointer(bp + 8)), 2)
 20575  		} else {
 20576  			nTo = 0
 20577  		}
 20578  		var iCost int32 = sqlite3.Xsqlite3_column_int(tls, *(*uintptr)(unsafe.Pointer(bp + 8)), 3)
 20579  
 20580  		if nFrom > 100 || nTo > 100 {
 20581  			continue
 20582  		}
 20583  		if iCost < 0 {
 20584  			continue
 20585  		}
 20586  		if iCost >= 10000 {
 20587  			continue
 20588  		}
 20589  		if pLang == uintptr(0) || iLang != iLangPrev {
 20590  			var pNew uintptr
 20591  			pNew = sqlite3.Xsqlite3_realloc64(tls, (*EditDist3Config)(unsafe.Pointer(p)).Fa, uint64((*EditDist3Config)(unsafe.Pointer(p)).FnLang+1)*uint64(unsafe.Sizeof(EditDist3Lang{})))
 20592  			if pNew == uintptr(0) {
 20593  				rc = SQLITE_NOMEM
 20594  				break
 20595  			}
 20596  			(*EditDist3Config)(unsafe.Pointer(p)).Fa = pNew
 20597  			pLang = (*EditDist3Config)(unsafe.Pointer(p)).Fa + uintptr((*EditDist3Config)(unsafe.Pointer(p)).FnLang)*24
 20598  			(*EditDist3Config)(unsafe.Pointer(p)).FnLang++
 20599  			(*EditDist3Lang)(unsafe.Pointer(pLang)).FiLang = iLang
 20600  			(*EditDist3Lang)(unsafe.Pointer(pLang)).FiInsCost = 100
 20601  			(*EditDist3Lang)(unsafe.Pointer(pLang)).FiDelCost = 100
 20602  			(*EditDist3Lang)(unsafe.Pointer(pLang)).FiSubCost = 150
 20603  			(*EditDist3Lang)(unsafe.Pointer(pLang)).FpCost = uintptr(0)
 20604  			iLangPrev = iLang
 20605  		}
 20606  		if nFrom == 1 && int32(*(*uint8)(unsafe.Pointer(zFrom))) == '?' && nTo == 0 {
 20607  			(*EditDist3Lang)(unsafe.Pointer(pLang)).FiDelCost = iCost
 20608  		} else if nFrom == 0 && nTo == 1 && int32(*(*uint8)(unsafe.Pointer(zTo))) == '?' {
 20609  			(*EditDist3Lang)(unsafe.Pointer(pLang)).FiInsCost = iCost
 20610  		} else if nFrom == 1 && nTo == 1 && int32(*(*uint8)(unsafe.Pointer(zFrom))) == '?' && int32(*(*uint8)(unsafe.Pointer(zTo))) == '?' {
 20611  			(*EditDist3Lang)(unsafe.Pointer(pLang)).FiSubCost = iCost
 20612  		} else {
 20613  			var pCost uintptr
 20614  			var nExtra int32 = nFrom + nTo - 4
 20615  			if nExtra < 0 {
 20616  				nExtra = 0
 20617  			}
 20618  			pCost = sqlite3.Xsqlite3_malloc64(tls, uint64(unsafe.Sizeof(EditDist3Cost{}))+uint64(nExtra))
 20619  			if pCost == uintptr(0) {
 20620  				rc = SQLITE_NOMEM
 20621  				break
 20622  			}
 20623  			(*EditDist3Cost)(unsafe.Pointer(pCost)).FnFrom = u8(nFrom)
 20624  			(*EditDist3Cost)(unsafe.Pointer(pCost)).FnTo = u8(nTo)
 20625  			(*EditDist3Cost)(unsafe.Pointer(pCost)).FiCost = u16(iCost)
 20626  			libc.Xmemcpy(tls, pCost+12, zFrom, uint64(nFrom))
 20627  			libc.Xmemcpy(tls, pCost+12+uintptr(nFrom), zTo, uint64(nTo))
 20628  			(*EditDist3Cost)(unsafe.Pointer(pCost)).FpNext = (*EditDist3Lang)(unsafe.Pointer(pLang)).FpCost
 20629  			(*EditDist3Lang)(unsafe.Pointer(pLang)).FpCost = pCost
 20630  		}
 20631  	}
 20632  	rc2 = sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 8)))
 20633  	if rc == SQLITE_OK {
 20634  		rc = rc2
 20635  	}
 20636  	if rc == SQLITE_OK {
 20637  		var iLang int32
 20638  		for iLang = 0; iLang < (*EditDist3Config)(unsafe.Pointer(p)).FnLang; iLang++ {
 20639  			(*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)
 20640  		}
 20641  	}
 20642  	return rc
 20643  }
 20644  
 20645  func utf8Len(tls *libc.TLS, c uint8, N int32) int32 {
 20646  	var len int32 = 1
 20647  	if int32(c) > 0x7f {
 20648  		if int32(c)&0xe0 == 0xc0 {
 20649  			len = 2
 20650  		} else if int32(c)&0xf0 == 0xe0 {
 20651  			len = 3
 20652  		} else {
 20653  			len = 4
 20654  		}
 20655  	}
 20656  	if len > N {
 20657  		len = N
 20658  	}
 20659  	return len
 20660  }
 20661  
 20662  func matchTo(tls *libc.TLS, p uintptr, z uintptr, n int32) int32 {
 20663  	if int32(*(*uint8)(unsafe.Pointer(p + 12 + uintptr((*EditDist3Cost)(unsafe.Pointer(p)).FnFrom)))) != int32(*(*uint8)(unsafe.Pointer(z))) {
 20664  		return 0
 20665  	}
 20666  	if int32((*EditDist3Cost)(unsafe.Pointer(p)).FnTo) > n {
 20667  		return 0
 20668  	}
 20669  	if libc.Xstrncmp(tls, p+12+uintptr((*EditDist3Cost)(unsafe.Pointer(p)).FnFrom), z, uint64((*EditDist3Cost)(unsafe.Pointer(p)).FnTo)) != 0 {
 20670  		return 0
 20671  	}
 20672  	return 1
 20673  }
 20674  
 20675  func matchFrom(tls *libc.TLS, p uintptr, z uintptr, n int32) int32 {
 20676  	if (*EditDist3Cost)(unsafe.Pointer(p)).FnFrom != 0 {
 20677  		if int32(*(*uint8)(unsafe.Pointer(p + 12))) != int32(*(*uint8)(unsafe.Pointer(z))) {
 20678  			return 0
 20679  		}
 20680  		if libc.Xstrncmp(tls, p+12, z, uint64((*EditDist3Cost)(unsafe.Pointer(p)).FnFrom)) != 0 {
 20681  			return 0
 20682  		}
 20683  	}
 20684  	return 1
 20685  }
 20686  
 20687  func matchFromTo(tls *libc.TLS, pStr uintptr, n1 int32, z2 uintptr, n2 int32) int32 {
 20688  	var b1 int32 = (*EditDist3From)(unsafe.Pointer((*EditDist3FromString)(unsafe.Pointer(pStr)).Fa + uintptr(n1)*32)).FnByte
 20689  	if b1 > n2 {
 20690  		return 0
 20691  	}
 20692  
 20693  	if int32(*(*uint8)(unsafe.Pointer((*EditDist3FromString)(unsafe.Pointer(pStr)).Fz + uintptr(n1)))) != int32(*(*uint8)(unsafe.Pointer(z2))) {
 20694  		return 0
 20695  	}
 20696  	if libc.Xstrncmp(tls, (*EditDist3FromString)(unsafe.Pointer(pStr)).Fz+uintptr(n1), z2, uint64(b1)) != 0 {
 20697  		return 0
 20698  	}
 20699  	return 1
 20700  }
 20701  
 20702  func editDist3FromStringDelete(tls *libc.TLS, p uintptr) {
 20703  	var i int32
 20704  	if p != 0 {
 20705  		for i = 0; i < (*EditDist3FromString)(unsafe.Pointer(p)).Fn; i++ {
 20706  			sqlite3.Xsqlite3_free(tls, (*EditDist3From)(unsafe.Pointer((*EditDist3FromString)(unsafe.Pointer(p)).Fa+uintptr(i)*32)).FapDel)
 20707  			sqlite3.Xsqlite3_free(tls, (*EditDist3From)(unsafe.Pointer((*EditDist3FromString)(unsafe.Pointer(p)).Fa+uintptr(i)*32)).FapSubst)
 20708  		}
 20709  		sqlite3.Xsqlite3_free(tls, p)
 20710  	}
 20711  }
 20712  
 20713  func editDist3FromStringNew(tls *libc.TLS, pLang uintptr, z uintptr, n int32) uintptr {
 20714  	var pStr uintptr
 20715  	var p uintptr
 20716  	var i int32
 20717  
 20718  	if z == uintptr(0) {
 20719  		return uintptr(0)
 20720  	}
 20721  	if n < 0 {
 20722  		n = int32(libc.Xstrlen(tls, z))
 20723  	}
 20724  	pStr = sqlite3.Xsqlite3_malloc64(tls, uint64(unsafe.Sizeof(EditDist3FromString{}))+uint64(unsafe.Sizeof(EditDist3From{}))*uint64(n)+uint64(n)+uint64(1))
 20725  	if pStr == uintptr(0) {
 20726  		return uintptr(0)
 20727  	}
 20728  	(*EditDist3FromString)(unsafe.Pointer(pStr)).Fa = pStr + 1*24
 20729  	libc.Xmemset(tls, (*EditDist3FromString)(unsafe.Pointer(pStr)).Fa, 0, uint64(unsafe.Sizeof(EditDist3From{}))*uint64(n))
 20730  	(*EditDist3FromString)(unsafe.Pointer(pStr)).Fn = n
 20731  	(*EditDist3FromString)(unsafe.Pointer(pStr)).Fz = (*EditDist3FromString)(unsafe.Pointer(pStr)).Fa + uintptr(n)*32
 20732  	libc.Xmemcpy(tls, (*EditDist3FromString)(unsafe.Pointer(pStr)).Fz, z, uint64(n+1))
 20733  	if n != 0 && int32(*(*uint8)(unsafe.Pointer(z + uintptr(n-1)))) == '*' {
 20734  		(*EditDist3FromString)(unsafe.Pointer(pStr)).FisPrefix = 1
 20735  		n--
 20736  		(*EditDist3FromString)(unsafe.Pointer(pStr)).Fn--
 20737  		*(*uint8)(unsafe.Pointer((*EditDist3FromString)(unsafe.Pointer(pStr)).Fz + uintptr(n))) = uint8(0)
 20738  	} else {
 20739  		(*EditDist3FromString)(unsafe.Pointer(pStr)).FisPrefix = 0
 20740  	}
 20741  
 20742  	for i = 0; i < n; i++ {
 20743  		var pFrom uintptr = (*EditDist3FromString)(unsafe.Pointer(pStr)).Fa + uintptr(i)*32
 20744  		libc.Xmemset(tls, pFrom, 0, uint64(unsafe.Sizeof(EditDist3From{})))
 20745  		(*EditDist3From)(unsafe.Pointer(pFrom)).FnByte = utf8Len(tls, *(*uint8)(unsafe.Pointer(z + uintptr(i))), n-i)
 20746  		for p = (*EditDist3Lang)(unsafe.Pointer(pLang)).FpCost; p != 0; p = (*EditDist3Cost)(unsafe.Pointer(p)).FpNext {
 20747  			var apNew uintptr
 20748  			if i+int32((*EditDist3Cost)(unsafe.Pointer(p)).FnFrom) > n {
 20749  				continue
 20750  			}
 20751  			if matchFrom(tls, p, z+uintptr(i), n-i) == 0 {
 20752  				continue
 20753  			}
 20754  			if int32((*EditDist3Cost)(unsafe.Pointer(p)).FnTo) == 0 {
 20755  				apNew = sqlite3.Xsqlite3_realloc64(tls, (*EditDist3From)(unsafe.Pointer(pFrom)).FapDel,
 20756  					uint64(unsafe.Sizeof(uintptr(0)))*uint64((*EditDist3From)(unsafe.Pointer(pFrom)).FnDel+1))
 20757  				if apNew == uintptr(0) {
 20758  					break
 20759  				}
 20760  				(*EditDist3From)(unsafe.Pointer(pFrom)).FapDel = apNew
 20761  				*(*uintptr)(unsafe.Pointer(apNew + uintptr(libc.PostIncInt32(&(*EditDist3From)(unsafe.Pointer(pFrom)).FnDel, 1))*8)) = p
 20762  			} else {
 20763  				apNew = sqlite3.Xsqlite3_realloc64(tls, (*EditDist3From)(unsafe.Pointer(pFrom)).FapSubst,
 20764  					uint64(unsafe.Sizeof(uintptr(0)))*uint64((*EditDist3From)(unsafe.Pointer(pFrom)).FnSubst+1))
 20765  				if apNew == uintptr(0) {
 20766  					break
 20767  				}
 20768  				(*EditDist3From)(unsafe.Pointer(pFrom)).FapSubst = apNew
 20769  				*(*uintptr)(unsafe.Pointer(apNew + uintptr(libc.PostIncInt32(&(*EditDist3From)(unsafe.Pointer(pFrom)).FnSubst, 1))*8)) = p
 20770  			}
 20771  		}
 20772  		if p != 0 {
 20773  			editDist3FromStringDelete(tls, pStr)
 20774  			pStr = uintptr(0)
 20775  			break
 20776  		}
 20777  	}
 20778  	return pStr
 20779  }
 20780  
 20781  func updateCost(tls *libc.TLS, m uintptr, i int32, j int32, iCost int32) {
 20782  	var b uint32
 20783  
 20784  	b = *(*uint32)(unsafe.Pointer(m + uintptr(j)*4)) + uint32(iCost)
 20785  	if b < *(*uint32)(unsafe.Pointer(m + uintptr(i)*4)) {
 20786  		*(*uint32)(unsafe.Pointer(m + uintptr(i)*4)) = b
 20787  	}
 20788  }
 20789  
 20790  func editDist3Core(tls *libc.TLS, pFrom uintptr, z2 uintptr, n2 int32, pLang uintptr, pnMatch uintptr) int32 {
 20791  	bp := tls.Alloc(1048)
 20792  	defer tls.Free(1048)
 20793  
 20794  	var k int32
 20795  	var n int32
 20796  	var i1 int32
 20797  	var b1 int32
 20798  	var i2 int32
 20799  	var b2 int32
 20800  
 20801  	var a2 uintptr
 20802  	var m uintptr
 20803  	var pToFree uintptr
 20804  	var szRow int32
 20805  	var p uintptr
 20806  	var res int32
 20807  	var nByte sqlite3_uint64
 20808  
 20809  	var apNew uintptr
 20810  	var cx int32
 20811  	var cxp int32
 20812  	var cxd int32
 20813  	var cxu int32
 20814  	var rx int32
 20815  	var rxp int32
 20816  	var b int32
 20817  	var nExtra int32
 20818  	*(*EditDist3FromString)(unsafe.Pointer(bp + 1024)) = *(*EditDist3FromString)(unsafe.Pointer(pFrom))
 20819  
 20820  	n = ((*EditDist3FromString)(unsafe.Pointer(bp+1024)).Fn + 1) * (n2 + 1)
 20821  	n = (n + 1) & libc.CplInt32(1)
 20822  	nByte = uint64(n)*uint64(unsafe.Sizeof(uint32(0))) + uint64(unsafe.Sizeof(EditDist3To{}))*uint64(n2)
 20823  	if !(nByte <= sqlite3_uint64(unsafe.Sizeof([256]uint32{}))) {
 20824  		goto __1
 20825  	}
 20826  	m = bp
 20827  	pToFree = uintptr(0)
 20828  	goto __2
 20829  __1:
 20830  	m = libc.AssignUintptr(&pToFree, sqlite3.Xsqlite3_malloc64(tls, nByte))
 20831  	if !(m == uintptr(0)) {
 20832  		goto __3
 20833  	}
 20834  	return -1
 20835  __3:
 20836  	;
 20837  __2:
 20838  	;
 20839  	a2 = m + uintptr(n)*4
 20840  	libc.Xmemset(tls, a2, 0, uint64(unsafe.Sizeof(EditDist3To{}))*uint64(n2))
 20841  
 20842  	i2 = 0
 20843  __4:
 20844  	if !(i2 < n2) {
 20845  		goto __6
 20846  	}
 20847  	(*EditDist3To)(unsafe.Pointer(a2 + uintptr(i2)*16)).FnByte = utf8Len(tls, *(*uint8)(unsafe.Pointer(z2 + uintptr(i2))), n2-i2)
 20848  	p = (*EditDist3Lang)(unsafe.Pointer(pLang)).FpCost
 20849  __7:
 20850  	if !(p != 0) {
 20851  		goto __9
 20852  	}
 20853  	if !(int32((*EditDist3Cost)(unsafe.Pointer(p)).FnFrom) > 0) {
 20854  		goto __10
 20855  	}
 20856  	goto __9
 20857  __10:
 20858  	;
 20859  	if !(i2+int32((*EditDist3Cost)(unsafe.Pointer(p)).FnTo) > n2) {
 20860  		goto __11
 20861  	}
 20862  	goto __8
 20863  __11:
 20864  	;
 20865  	if !(int32(*(*uint8)(unsafe.Pointer(p + 12))) > int32(*(*uint8)(unsafe.Pointer(z2 + uintptr(i2))))) {
 20866  		goto __12
 20867  	}
 20868  	goto __9
 20869  __12:
 20870  	;
 20871  	if !(matchTo(tls, p, z2+uintptr(i2), n2-i2) == 0) {
 20872  		goto __13
 20873  	}
 20874  	goto __8
 20875  __13:
 20876  	;
 20877  	(*EditDist3To)(unsafe.Pointer(a2+uintptr(i2)*16)).FnIns++
 20878  	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))
 20879  	if !(apNew == uintptr(0)) {
 20880  		goto __14
 20881  	}
 20882  	res = -1
 20883  	goto editDist3Abort
 20884  __14:
 20885  	;
 20886  	(*EditDist3To)(unsafe.Pointer(a2 + uintptr(i2)*16)).FapIns = apNew
 20887  	*(*uintptr)(unsafe.Pointer((*EditDist3To)(unsafe.Pointer(a2+uintptr(i2)*16)).FapIns + uintptr((*EditDist3To)(unsafe.Pointer(a2+uintptr(i2)*16)).FnIns-1)*8)) = p
 20888  	goto __8
 20889  __8:
 20890  	p = (*EditDist3Cost)(unsafe.Pointer(p)).FpNext
 20891  	goto __7
 20892  	goto __9
 20893  __9:
 20894  	;
 20895  	goto __5
 20896  __5:
 20897  	i2++
 20898  	goto __4
 20899  	goto __6
 20900  __6:
 20901  	;
 20902  	szRow = (*EditDist3FromString)(unsafe.Pointer(bp+1024)).Fn + 1
 20903  	libc.Xmemset(tls, m, 0x01, uint64((n2+1)*szRow)*uint64(unsafe.Sizeof(uint32(0))))
 20904  	*(*uint32)(unsafe.Pointer(m)) = uint32(0)
 20905  
 20906  	i1 = 0
 20907  __15:
 20908  	if !(i1 < (*EditDist3FromString)(unsafe.Pointer(bp+1024)).Fn) {
 20909  		goto __17
 20910  	}
 20911  	b1 = (*EditDist3From)(unsafe.Pointer((*EditDist3FromString)(unsafe.Pointer(bp+1024)).Fa + uintptr(i1)*32)).FnByte
 20912  	updateCost(tls, m, i1+b1, i1, (*EditDist3Lang)(unsafe.Pointer(pLang)).FiDelCost)
 20913  	k = 0
 20914  __18:
 20915  	if !(k < (*EditDist3From)(unsafe.Pointer((*EditDist3FromString)(unsafe.Pointer(bp+1024)).Fa+uintptr(i1)*32)).FnDel) {
 20916  		goto __20
 20917  	}
 20918  	p = *(*uintptr)(unsafe.Pointer((*EditDist3From)(unsafe.Pointer((*EditDist3FromString)(unsafe.Pointer(bp+1024)).Fa+uintptr(i1)*32)).FapDel + uintptr(k)*8))
 20919  	updateCost(tls, m, i1+int32((*EditDist3Cost)(unsafe.Pointer(p)).FnFrom), i1, int32((*EditDist3Cost)(unsafe.Pointer(p)).FiCost))
 20920  	goto __19
 20921  __19:
 20922  	k++
 20923  	goto __18
 20924  	goto __20
 20925  __20:
 20926  	;
 20927  	goto __16
 20928  __16:
 20929  	i1 = i1 + b1
 20930  	goto __15
 20931  	goto __17
 20932  __17:
 20933  	;
 20934  	i2 = 0
 20935  __21:
 20936  	if !(i2 < n2) {
 20937  		goto __23
 20938  	}
 20939  	b2 = (*EditDist3To)(unsafe.Pointer(a2 + uintptr(i2)*16)).FnByte
 20940  	rx = szRow * (i2 + b2)
 20941  	rxp = szRow * i2
 20942  	updateCost(tls, m, rx, rxp, (*EditDist3Lang)(unsafe.Pointer(pLang)).FiInsCost)
 20943  	k = 0
 20944  __24:
 20945  	if !(k < (*EditDist3To)(unsafe.Pointer(a2+uintptr(i2)*16)).FnIns) {
 20946  		goto __26
 20947  	}
 20948  	p = *(*uintptr)(unsafe.Pointer((*EditDist3To)(unsafe.Pointer(a2+uintptr(i2)*16)).FapIns + uintptr(k)*8))
 20949  	updateCost(tls, m, szRow*(i2+int32((*EditDist3Cost)(unsafe.Pointer(p)).FnTo)), rxp, int32((*EditDist3Cost)(unsafe.Pointer(p)).FiCost))
 20950  	goto __25
 20951  __25:
 20952  	k++
 20953  	goto __24
 20954  	goto __26
 20955  __26:
 20956  	;
 20957  	i1 = 0
 20958  __27:
 20959  	if !(i1 < (*EditDist3FromString)(unsafe.Pointer(bp+1024)).Fn) {
 20960  		goto __29
 20961  	}
 20962  	b1 = (*EditDist3From)(unsafe.Pointer((*EditDist3FromString)(unsafe.Pointer(bp+1024)).Fa + uintptr(i1)*32)).FnByte
 20963  	cxp = rx + i1
 20964  	cx = cxp + b1
 20965  	cxd = rxp + i1
 20966  	cxu = cxd + b1
 20967  	updateCost(tls, m, cx, cxp, (*EditDist3Lang)(unsafe.Pointer(pLang)).FiDelCost)
 20968  	k = 0
 20969  __30:
 20970  	if !(k < (*EditDist3From)(unsafe.Pointer((*EditDist3FromString)(unsafe.Pointer(bp+1024)).Fa+uintptr(i1)*32)).FnDel) {
 20971  		goto __32
 20972  	}
 20973  	p = *(*uintptr)(unsafe.Pointer((*EditDist3From)(unsafe.Pointer((*EditDist3FromString)(unsafe.Pointer(bp+1024)).Fa+uintptr(i1)*32)).FapDel + uintptr(k)*8))
 20974  	updateCost(tls, m, cxp+int32((*EditDist3Cost)(unsafe.Pointer(p)).FnFrom), cxp, int32((*EditDist3Cost)(unsafe.Pointer(p)).FiCost))
 20975  	goto __31
 20976  __31:
 20977  	k++
 20978  	goto __30
 20979  	goto __32
 20980  __32:
 20981  	;
 20982  	updateCost(tls, m, cx, cxu, (*EditDist3Lang)(unsafe.Pointer(pLang)).FiInsCost)
 20983  	if !(matchFromTo(tls, bp+1024, i1, z2+uintptr(i2), n2-i2) != 0) {
 20984  		goto __33
 20985  	}
 20986  	updateCost(tls, m, cx, cxd, 0)
 20987  __33:
 20988  	;
 20989  	updateCost(tls, m, cx, cxd, (*EditDist3Lang)(unsafe.Pointer(pLang)).FiSubCost)
 20990  	k = 0
 20991  __34:
 20992  	if !(k < (*EditDist3From)(unsafe.Pointer((*EditDist3FromString)(unsafe.Pointer(bp+1024)).Fa+uintptr(i1)*32)).FnSubst) {
 20993  		goto __36
 20994  	}
 20995  	p = *(*uintptr)(unsafe.Pointer((*EditDist3From)(unsafe.Pointer((*EditDist3FromString)(unsafe.Pointer(bp+1024)).Fa+uintptr(i1)*32)).FapSubst + uintptr(k)*8))
 20996  	if !(matchTo(tls, p, z2+uintptr(i2), n2-i2) != 0) {
 20997  		goto __37
 20998  	}
 20999  	updateCost(tls, m, cxd+int32((*EditDist3Cost)(unsafe.Pointer(p)).FnFrom)+szRow*int32((*EditDist3Cost)(unsafe.Pointer(p)).FnTo), cxd, int32((*EditDist3Cost)(unsafe.Pointer(p)).FiCost))
 21000  __37:
 21001  	;
 21002  	goto __35
 21003  __35:
 21004  	k++
 21005  	goto __34
 21006  	goto __36
 21007  __36:
 21008  	;
 21009  	goto __28
 21010  __28:
 21011  	i1 = i1 + b1
 21012  	goto __27
 21013  	goto __29
 21014  __29:
 21015  	;
 21016  	goto __22
 21017  __22:
 21018  	i2 = i2 + b2
 21019  	goto __21
 21020  	goto __23
 21021  __23:
 21022  	;
 21023  	res = int32(*(*uint32)(unsafe.Pointer(m + uintptr(szRow*(n2+1)-1)*4)))
 21024  	n = n2
 21025  	if !((*EditDist3FromString)(unsafe.Pointer(bp+1024)).FisPrefix != 0) {
 21026  		goto __38
 21027  	}
 21028  	i2 = 1
 21029  __39:
 21030  	if !(i2 <= n2) {
 21031  		goto __41
 21032  	}
 21033  	b = int32(*(*uint32)(unsafe.Pointer(m + uintptr(szRow*i2-1)*4)))
 21034  	if !(b <= res) {
 21035  		goto __42
 21036  	}
 21037  	res = b
 21038  	n = i2 - 1
 21039  __42:
 21040  	;
 21041  	goto __40
 21042  __40:
 21043  	i2++
 21044  	goto __39
 21045  	goto __41
 21046  __41:
 21047  	;
 21048  __38:
 21049  	;
 21050  	if !(pnMatch != 0) {
 21051  		goto __43
 21052  	}
 21053  	nExtra = 0
 21054  	k = 0
 21055  __44:
 21056  	if !(k < n) {
 21057  		goto __46
 21058  	}
 21059  	if !(int32(*(*uint8)(unsafe.Pointer(z2 + uintptr(k))))&0xc0 == 0x80) {
 21060  		goto __47
 21061  	}
 21062  	nExtra++
 21063  __47:
 21064  	;
 21065  	goto __45
 21066  __45:
 21067  	k++
 21068  	goto __44
 21069  	goto __46
 21070  __46:
 21071  	;
 21072  	*(*int32)(unsafe.Pointer(pnMatch)) = n - nExtra
 21073  __43:
 21074  	;
 21075  editDist3Abort:
 21076  	i2 = 0
 21077  __48:
 21078  	if !(i2 < n2) {
 21079  		goto __50
 21080  	}
 21081  	sqlite3.Xsqlite3_free(tls, (*EditDist3To)(unsafe.Pointer(a2+uintptr(i2)*16)).FapIns)
 21082  	goto __49
 21083  __49:
 21084  	i2++
 21085  	goto __48
 21086  	goto __50
 21087  __50:
 21088  	;
 21089  	sqlite3.Xsqlite3_free(tls, pToFree)
 21090  	return res
 21091  }
 21092  
 21093  func editDist3FindLang(tls *libc.TLS, pConfig uintptr, iLang int32) uintptr {
 21094  	var i int32
 21095  	for i = 0; i < (*EditDist3Config)(unsafe.Pointer(pConfig)).FnLang; i++ {
 21096  		if (*EditDist3Lang)(unsafe.Pointer((*EditDist3Config)(unsafe.Pointer(pConfig)).Fa+uintptr(i)*24)).FiLang == iLang {
 21097  			return (*EditDist3Config)(unsafe.Pointer(pConfig)).Fa + uintptr(i)*24
 21098  		}
 21099  	}
 21100  	return uintptr(unsafe.Pointer(&editDist3Lang))
 21101  }
 21102  
 21103  func editDist3SqlFunc(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 21104  	var pConfig uintptr = sqlite3.Xsqlite3_user_data(tls, context)
 21105  	var db uintptr = sqlite3.Xsqlite3_context_db_handle(tls, context)
 21106  	var rc int32
 21107  	if argc == 1 {
 21108  		var zTable uintptr = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 21109  		rc = editDist3ConfigLoad(tls, pConfig, db, zTable)
 21110  		if rc != 0 {
 21111  			sqlite3.Xsqlite3_result_error_code(tls, context, rc)
 21112  		}
 21113  	} else {
 21114  		var zA uintptr = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 21115  		var zB uintptr = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 21116  		var nA int32 = sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(argv)))
 21117  		var nB int32 = sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 21118  		var iLang int32
 21119  		if argc == 3 {
 21120  			iLang = sqlite3.Xsqlite3_value_int(tls, *(*uintptr)(unsafe.Pointer(argv + 2*8)))
 21121  		} else {
 21122  			iLang = 0
 21123  		}
 21124  		var pLang uintptr = editDist3FindLang(tls, pConfig, iLang)
 21125  		var pFrom uintptr
 21126  		var dist int32
 21127  
 21128  		pFrom = editDist3FromStringNew(tls, pLang, zA, nA)
 21129  		if pFrom == uintptr(0) {
 21130  			sqlite3.Xsqlite3_result_error_nomem(tls, context)
 21131  			return
 21132  		}
 21133  		dist = editDist3Core(tls, pFrom, zB, nB, pLang, uintptr(0))
 21134  		editDist3FromStringDelete(tls, pFrom)
 21135  		if dist == -1 {
 21136  			sqlite3.Xsqlite3_result_error_nomem(tls, context)
 21137  		} else {
 21138  			sqlite3.Xsqlite3_result_int(tls, context, dist)
 21139  		}
 21140  	}
 21141  }
 21142  
 21143  func editDist3Install(tls *libc.TLS, db uintptr) int32 {
 21144  	var rc int32
 21145  	var pConfig uintptr = sqlite3.Xsqlite3_malloc64(tls, uint64(unsafe.Sizeof(EditDist3Config{})))
 21146  	if pConfig == uintptr(0) {
 21147  		return SQLITE_NOMEM
 21148  	}
 21149  	libc.Xmemset(tls, pConfig, 0, uint64(unsafe.Sizeof(EditDist3Config{})))
 21150  	rc = sqlite3.Xsqlite3_create_function_v2(tls, db, ts+7179,
 21151  		2, SQLITE_UTF8|SQLITE_DETERMINISTIC, pConfig,
 21152  		*(*uintptr)(unsafe.Pointer(&struct {
 21153  			f func(*libc.TLS, uintptr, int32, uintptr)
 21154  		}{editDist3SqlFunc})), uintptr(0), uintptr(0), uintptr(0))
 21155  	if rc == SQLITE_OK {
 21156  		rc = sqlite3.Xsqlite3_create_function_v2(tls, db, ts+7179,
 21157  			3, SQLITE_UTF8|SQLITE_DETERMINISTIC, pConfig,
 21158  			*(*uintptr)(unsafe.Pointer(&struct {
 21159  				f func(*libc.TLS, uintptr, int32, uintptr)
 21160  			}{editDist3SqlFunc})), uintptr(0), uintptr(0), uintptr(0))
 21161  	}
 21162  	if rc == SQLITE_OK {
 21163  		rc = sqlite3.Xsqlite3_create_function_v2(tls, db, ts+7179,
 21164  			1, SQLITE_UTF8|SQLITE_DETERMINISTIC, pConfig,
 21165  			*(*uintptr)(unsafe.Pointer(&struct {
 21166  				f func(*libc.TLS, uintptr, int32, uintptr)
 21167  			}{editDist3SqlFunc})), uintptr(0), uintptr(0), *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{editDist3ConfigDelete})))
 21168  	} else {
 21169  		sqlite3.Xsqlite3_free(tls, pConfig)
 21170  	}
 21171  	return rc
 21172  }
 21173  
 21174  var sqlite3Utf8Trans1 = [64]uint8{
 21175  	uint8(0x00), uint8(0x01), uint8(0x02), uint8(0x03), uint8(0x04), uint8(0x05), uint8(0x06), uint8(0x07),
 21176  	uint8(0x08), uint8(0x09), uint8(0x0a), uint8(0x0b), uint8(0x0c), uint8(0x0d), uint8(0x0e), uint8(0x0f),
 21177  	uint8(0x10), uint8(0x11), uint8(0x12), uint8(0x13), uint8(0x14), uint8(0x15), uint8(0x16), uint8(0x17),
 21178  	uint8(0x18), uint8(0x19), uint8(0x1a), uint8(0x1b), uint8(0x1c), uint8(0x1d), uint8(0x1e), uint8(0x1f),
 21179  	uint8(0x00), uint8(0x01), uint8(0x02), uint8(0x03), uint8(0x04), uint8(0x05), uint8(0x06), uint8(0x07),
 21180  	uint8(0x08), uint8(0x09), uint8(0x0a), uint8(0x0b), uint8(0x0c), uint8(0x0d), uint8(0x0e), uint8(0x0f),
 21181  	uint8(0x00), uint8(0x01), uint8(0x02), uint8(0x03), uint8(0x04), uint8(0x05), uint8(0x06), uint8(0x07),
 21182  	uint8(0x00), uint8(0x01), uint8(0x02), uint8(0x03), uint8(0x00), uint8(0x01), uint8(0x00), uint8(0x00),
 21183  }
 21184  
 21185  func utf8Read(tls *libc.TLS, z uintptr, n int32, pSize uintptr) int32 {
 21186  	var c int32
 21187  	var i int32
 21188  
 21189  	if 0 != 0 {
 21190  		c = libc.AssignInt32(&i, 0)
 21191  	} else {
 21192  		c = int32(*(*uint8)(unsafe.Pointer(z)))
 21193  		i = 1
 21194  		if c >= 0xc0 {
 21195  			c = int32(sqlite3Utf8Trans1[c-0xc0])
 21196  			for i < n && int32(*(*uint8)(unsafe.Pointer(z + uintptr(i))))&0xc0 == 0x80 {
 21197  				c = c<<6 + 0x3f&int32(*(*uint8)(unsafe.Pointer(z + uintptr(libc.PostIncInt32(&i, 1)))))
 21198  			}
 21199  		}
 21200  	}
 21201  	*(*int32)(unsafe.Pointer(pSize)) = i
 21202  	return c
 21203  }
 21204  
 21205  func utf8Charlen(tls *libc.TLS, zIn uintptr, nIn int32) int32 {
 21206  	bp := tls.Alloc(4)
 21207  	defer tls.Free(4)
 21208  
 21209  	var i int32
 21210  	var nChar int32 = 0
 21211  	for i = 0; i < nIn; nChar++ {
 21212  		utf8Read(tls, zIn+uintptr(i), nIn-i, bp)
 21213  		i = i + *(*int32)(unsafe.Pointer(bp))
 21214  	}
 21215  	return nChar
 21216  }
 21217  
 21218  type Transliteration1 = struct {
 21219  	FcFrom uint16
 21220  	FcTo0  uint8
 21221  	FcTo1  uint8
 21222  	FcTo2  uint8
 21223  	FcTo3  uint8
 21224  }
 21225  
 21226  type Transliteration = Transliteration1
 21227  
 21228  var translit = [389]Transliteration{
 21229  	{FcFrom: uint16(0x00A0), FcTo0: uint8(0x20)},
 21230  	{FcFrom: uint16(0x00B5), FcTo0: uint8(0x75)},
 21231  	{FcFrom: uint16(0x00C0), FcTo0: uint8(0x41)},
 21232  	{FcFrom: uint16(0x00C1), FcTo0: uint8(0x41)},
 21233  	{FcFrom: uint16(0x00C2), FcTo0: uint8(0x41)},
 21234  	{FcFrom: uint16(0x00C3), FcTo0: uint8(0x41)},
 21235  	{FcFrom: uint16(0x00C4), FcTo0: uint8(0x41), FcTo1: uint8(0x65)},
 21236  	{FcFrom: uint16(0x00C5), FcTo0: uint8(0x41), FcTo1: uint8(0x61)},
 21237  	{FcFrom: uint16(0x00C6), FcTo0: uint8(0x41), FcTo1: uint8(0x45)},
 21238  	{FcFrom: uint16(0x00C7), FcTo0: uint8(0x43)},
 21239  	{FcFrom: uint16(0x00C8), FcTo0: uint8(0x45)},
 21240  	{FcFrom: uint16(0x00C9), FcTo0: uint8(0x45)},
 21241  	{FcFrom: uint16(0x00CA), FcTo0: uint8(0x45)},
 21242  	{FcFrom: uint16(0x00CB), FcTo0: uint8(0x45)},
 21243  	{FcFrom: uint16(0x00CC), FcTo0: uint8(0x49)},
 21244  	{FcFrom: uint16(0x00CD), FcTo0: uint8(0x49)},
 21245  	{FcFrom: uint16(0x00CE), FcTo0: uint8(0x49)},
 21246  	{FcFrom: uint16(0x00CF), FcTo0: uint8(0x49)},
 21247  	{FcFrom: uint16(0x00D0), FcTo0: uint8(0x44)},
 21248  	{FcFrom: uint16(0x00D1), FcTo0: uint8(0x4E)},
 21249  	{FcFrom: uint16(0x00D2), FcTo0: uint8(0x4F)},
 21250  	{FcFrom: uint16(0x00D3), FcTo0: uint8(0x4F)},
 21251  	{FcFrom: uint16(0x00D4), FcTo0: uint8(0x4F)},
 21252  	{FcFrom: uint16(0x00D5), FcTo0: uint8(0x4F)},
 21253  	{FcFrom: uint16(0x00D6), FcTo0: uint8(0x4F), FcTo1: uint8(0x65)},
 21254  	{FcFrom: uint16(0x00D7), FcTo0: uint8(0x78)},
 21255  	{FcFrom: uint16(0x00D8), FcTo0: uint8(0x4F)},
 21256  	{FcFrom: uint16(0x00D9), FcTo0: uint8(0x55)},
 21257  	{FcFrom: uint16(0x00DA), FcTo0: uint8(0x55)},
 21258  	{FcFrom: uint16(0x00DB), FcTo0: uint8(0x55)},
 21259  	{FcFrom: uint16(0x00DC), FcTo0: uint8(0x55), FcTo1: uint8(0x65)},
 21260  	{FcFrom: uint16(0x00DD), FcTo0: uint8(0x59)},
 21261  	{FcFrom: uint16(0x00DE), FcTo0: uint8(0x54), FcTo1: uint8(0x68)},
 21262  	{FcFrom: uint16(0x00DF), FcTo0: uint8(0x73), FcTo1: uint8(0x73)},
 21263  	{FcFrom: uint16(0x00E0), FcTo0: uint8(0x61)},
 21264  	{FcFrom: uint16(0x00E1), FcTo0: uint8(0x61)},
 21265  	{FcFrom: uint16(0x00E2), FcTo0: uint8(0x61)},
 21266  	{FcFrom: uint16(0x00E3), FcTo0: uint8(0x61)},
 21267  	{FcFrom: uint16(0x00E4), FcTo0: uint8(0x61), FcTo1: uint8(0x65)},
 21268  	{FcFrom: uint16(0x00E5), FcTo0: uint8(0x61), FcTo1: uint8(0x61)},
 21269  	{FcFrom: uint16(0x00E6), FcTo0: uint8(0x61), FcTo1: uint8(0x65)},
 21270  	{FcFrom: uint16(0x00E7), FcTo0: uint8(0x63)},
 21271  	{FcFrom: uint16(0x00E8), FcTo0: uint8(0x65)},
 21272  	{FcFrom: uint16(0x00E9), FcTo0: uint8(0x65)},
 21273  	{FcFrom: uint16(0x00EA), FcTo0: uint8(0x65)},
 21274  	{FcFrom: uint16(0x00EB), FcTo0: uint8(0x65)},
 21275  	{FcFrom: uint16(0x00EC), FcTo0: uint8(0x69)},
 21276  	{FcFrom: uint16(0x00ED), FcTo0: uint8(0x69)},
 21277  	{FcFrom: uint16(0x00EE), FcTo0: uint8(0x69)},
 21278  	{FcFrom: uint16(0x00EF), FcTo0: uint8(0x69)},
 21279  	{FcFrom: uint16(0x00F0), FcTo0: uint8(0x64)},
 21280  	{FcFrom: uint16(0x00F1), FcTo0: uint8(0x6E)},
 21281  	{FcFrom: uint16(0x00F2), FcTo0: uint8(0x6F)},
 21282  	{FcFrom: uint16(0x00F3), FcTo0: uint8(0x6F)},
 21283  	{FcFrom: uint16(0x00F4), FcTo0: uint8(0x6F)},
 21284  	{FcFrom: uint16(0x00F5), FcTo0: uint8(0x6F)},
 21285  	{FcFrom: uint16(0x00F6), FcTo0: uint8(0x6F), FcTo1: uint8(0x65)},
 21286  	{FcFrom: uint16(0x00F7), FcTo0: uint8(0x3A)},
 21287  	{FcFrom: uint16(0x00F8), FcTo0: uint8(0x6F)},
 21288  	{FcFrom: uint16(0x00F9), FcTo0: uint8(0x75)},
 21289  	{FcFrom: uint16(0x00FA), FcTo0: uint8(0x75)},
 21290  	{FcFrom: uint16(0x00FB), FcTo0: uint8(0x75)},
 21291  	{FcFrom: uint16(0x00FC), FcTo0: uint8(0x75), FcTo1: uint8(0x65)},
 21292  	{FcFrom: uint16(0x00FD), FcTo0: uint8(0x79)},
 21293  	{FcFrom: uint16(0x00FE), FcTo0: uint8(0x74), FcTo1: uint8(0x68)},
 21294  	{FcFrom: uint16(0x00FF), FcTo0: uint8(0x79)},
 21295  	{FcFrom: uint16(0x0100), FcTo0: uint8(0x41)},
 21296  	{FcFrom: uint16(0x0101), FcTo0: uint8(0x61)},
 21297  	{FcFrom: uint16(0x0102), FcTo0: uint8(0x41)},
 21298  	{FcFrom: uint16(0x0103), FcTo0: uint8(0x61)},
 21299  	{FcFrom: uint16(0x0104), FcTo0: uint8(0x41)},
 21300  	{FcFrom: uint16(0x0105), FcTo0: uint8(0x61)},
 21301  	{FcFrom: uint16(0x0106), FcTo0: uint8(0x43)},
 21302  	{FcFrom: uint16(0x0107), FcTo0: uint8(0x63)},
 21303  	{FcFrom: uint16(0x0108), FcTo0: uint8(0x43), FcTo1: uint8(0x68)},
 21304  	{FcFrom: uint16(0x0109), FcTo0: uint8(0x63), FcTo1: uint8(0x68)},
 21305  	{FcFrom: uint16(0x010A), FcTo0: uint8(0x43)},
 21306  	{FcFrom: uint16(0x010B), FcTo0: uint8(0x63)},
 21307  	{FcFrom: uint16(0x010C), FcTo0: uint8(0x43)},
 21308  	{FcFrom: uint16(0x010D), FcTo0: uint8(0x63)},
 21309  	{FcFrom: uint16(0x010E), FcTo0: uint8(0x44)},
 21310  	{FcFrom: uint16(0x010F), FcTo0: uint8(0x64)},
 21311  	{FcFrom: uint16(0x0110), FcTo0: uint8(0x44)},
 21312  	{FcFrom: uint16(0x0111), FcTo0: uint8(0x64)},
 21313  	{FcFrom: uint16(0x0112), FcTo0: uint8(0x45)},
 21314  	{FcFrom: uint16(0x0113), FcTo0: uint8(0x65)},
 21315  	{FcFrom: uint16(0x0114), FcTo0: uint8(0x45)},
 21316  	{FcFrom: uint16(0x0115), FcTo0: uint8(0x65)},
 21317  	{FcFrom: uint16(0x0116), FcTo0: uint8(0x45)},
 21318  	{FcFrom: uint16(0x0117), FcTo0: uint8(0x65)},
 21319  	{FcFrom: uint16(0x0118), FcTo0: uint8(0x45)},
 21320  	{FcFrom: uint16(0x0119), FcTo0: uint8(0x65)},
 21321  	{FcFrom: uint16(0x011A), FcTo0: uint8(0x45)},
 21322  	{FcFrom: uint16(0x011B), FcTo0: uint8(0x65)},
 21323  	{FcFrom: uint16(0x011C), FcTo0: uint8(0x47), FcTo1: uint8(0x68)},
 21324  	{FcFrom: uint16(0x011D), FcTo0: uint8(0x67), FcTo1: uint8(0x68)},
 21325  	{FcFrom: uint16(0x011E), FcTo0: uint8(0x47)},
 21326  	{FcFrom: uint16(0x011F), FcTo0: uint8(0x67)},
 21327  	{FcFrom: uint16(0x0120), FcTo0: uint8(0x47)},
 21328  	{FcFrom: uint16(0x0121), FcTo0: uint8(0x67)},
 21329  	{FcFrom: uint16(0x0122), FcTo0: uint8(0x47)},
 21330  	{FcFrom: uint16(0x0123), FcTo0: uint8(0x67)},
 21331  	{FcFrom: uint16(0x0124), FcTo0: uint8(0x48), FcTo1: uint8(0x68)},
 21332  	{FcFrom: uint16(0x0125), FcTo0: uint8(0x68), FcTo1: uint8(0x68)},
 21333  	{FcFrom: uint16(0x0126), FcTo0: uint8(0x48)},
 21334  	{FcFrom: uint16(0x0127), FcTo0: uint8(0x68)},
 21335  	{FcFrom: uint16(0x0128), FcTo0: uint8(0x49)},
 21336  	{FcFrom: uint16(0x0129), FcTo0: uint8(0x69)},
 21337  	{FcFrom: uint16(0x012A), FcTo0: uint8(0x49)},
 21338  	{FcFrom: uint16(0x012B), FcTo0: uint8(0x69)},
 21339  	{FcFrom: uint16(0x012C), FcTo0: uint8(0x49)},
 21340  	{FcFrom: uint16(0x012D), FcTo0: uint8(0x69)},
 21341  	{FcFrom: uint16(0x012E), FcTo0: uint8(0x49)},
 21342  	{FcFrom: uint16(0x012F), FcTo0: uint8(0x69)},
 21343  	{FcFrom: uint16(0x0130), FcTo0: uint8(0x49)},
 21344  	{FcFrom: uint16(0x0131), FcTo0: uint8(0x69)},
 21345  	{FcFrom: uint16(0x0132), FcTo0: uint8(0x49), FcTo1: uint8(0x4A)},
 21346  	{FcFrom: uint16(0x0133), FcTo0: uint8(0x69), FcTo1: uint8(0x6A)},
 21347  	{FcFrom: uint16(0x0134), FcTo0: uint8(0x4A), FcTo1: uint8(0x68)},
 21348  	{FcFrom: uint16(0x0135), FcTo0: uint8(0x6A), FcTo1: uint8(0x68)},
 21349  	{FcFrom: uint16(0x0136), FcTo0: uint8(0x4B)},
 21350  	{FcFrom: uint16(0x0137), FcTo0: uint8(0x6B)},
 21351  	{FcFrom: uint16(0x0138), FcTo0: uint8(0x6B)},
 21352  	{FcFrom: uint16(0x0139), FcTo0: uint8(0x4C)},
 21353  	{FcFrom: uint16(0x013A), FcTo0: uint8(0x6C)},
 21354  	{FcFrom: uint16(0x013B), FcTo0: uint8(0x4C)},
 21355  	{FcFrom: uint16(0x013C), FcTo0: uint8(0x6C)},
 21356  	{FcFrom: uint16(0x013D), FcTo0: uint8(0x4C)},
 21357  	{FcFrom: uint16(0x013E), FcTo0: uint8(0x6C)},
 21358  	{FcFrom: uint16(0x013F), FcTo0: uint8(0x4C), FcTo1: uint8(0x2E)},
 21359  	{FcFrom: uint16(0x0140), FcTo0: uint8(0x6C), FcTo1: uint8(0x2E)},
 21360  	{FcFrom: uint16(0x0141), FcTo0: uint8(0x4C)},
 21361  	{FcFrom: uint16(0x0142), FcTo0: uint8(0x6C)},
 21362  	{FcFrom: uint16(0x0143), FcTo0: uint8(0x4E)},
 21363  	{FcFrom: uint16(0x0144), FcTo0: uint8(0x6E)},
 21364  	{FcFrom: uint16(0x0145), FcTo0: uint8(0x4E)},
 21365  	{FcFrom: uint16(0x0146), FcTo0: uint8(0x6E)},
 21366  	{FcFrom: uint16(0x0147), FcTo0: uint8(0x4E)},
 21367  	{FcFrom: uint16(0x0148), FcTo0: uint8(0x6E)},
 21368  	{FcFrom: uint16(0x0149), FcTo0: uint8(0x27), FcTo1: uint8(0x6E)},
 21369  	{FcFrom: uint16(0x014A), FcTo0: uint8(0x4E), FcTo1: uint8(0x47)},
 21370  	{FcFrom: uint16(0x014B), FcTo0: uint8(0x6E), FcTo1: uint8(0x67)},
 21371  	{FcFrom: uint16(0x014C), FcTo0: uint8(0x4F)},
 21372  	{FcFrom: uint16(0x014D), FcTo0: uint8(0x6F)},
 21373  	{FcFrom: uint16(0x014E), FcTo0: uint8(0x4F)},
 21374  	{FcFrom: uint16(0x014F), FcTo0: uint8(0x6F)},
 21375  	{FcFrom: uint16(0x0150), FcTo0: uint8(0x4F)},
 21376  	{FcFrom: uint16(0x0151), FcTo0: uint8(0x6F)},
 21377  	{FcFrom: uint16(0x0152), FcTo0: uint8(0x4F), FcTo1: uint8(0x45)},
 21378  	{FcFrom: uint16(0x0153), FcTo0: uint8(0x6F), FcTo1: uint8(0x65)},
 21379  	{FcFrom: uint16(0x0154), FcTo0: uint8(0x52)},
 21380  	{FcFrom: uint16(0x0155), FcTo0: uint8(0x72)},
 21381  	{FcFrom: uint16(0x0156), FcTo0: uint8(0x52)},
 21382  	{FcFrom: uint16(0x0157), FcTo0: uint8(0x72)},
 21383  	{FcFrom: uint16(0x0158), FcTo0: uint8(0x52)},
 21384  	{FcFrom: uint16(0x0159), FcTo0: uint8(0x72)},
 21385  	{FcFrom: uint16(0x015A), FcTo0: uint8(0x53)},
 21386  	{FcFrom: uint16(0x015B), FcTo0: uint8(0x73)},
 21387  	{FcFrom: uint16(0x015C), FcTo0: uint8(0x53), FcTo1: uint8(0x68)},
 21388  	{FcFrom: uint16(0x015D), FcTo0: uint8(0x73), FcTo1: uint8(0x68)},
 21389  	{FcFrom: uint16(0x015E), FcTo0: uint8(0x53)},
 21390  	{FcFrom: uint16(0x015F), FcTo0: uint8(0x73)},
 21391  	{FcFrom: uint16(0x0160), FcTo0: uint8(0x53)},
 21392  	{FcFrom: uint16(0x0161), FcTo0: uint8(0x73)},
 21393  	{FcFrom: uint16(0x0162), FcTo0: uint8(0x54)},
 21394  	{FcFrom: uint16(0x0163), FcTo0: uint8(0x74)},
 21395  	{FcFrom: uint16(0x0164), FcTo0: uint8(0x54)},
 21396  	{FcFrom: uint16(0x0165), FcTo0: uint8(0x74)},
 21397  	{FcFrom: uint16(0x0166), FcTo0: uint8(0x54)},
 21398  	{FcFrom: uint16(0x0167), FcTo0: uint8(0x74)},
 21399  	{FcFrom: uint16(0x0168), FcTo0: uint8(0x55)},
 21400  	{FcFrom: uint16(0x0169), FcTo0: uint8(0x75)},
 21401  	{FcFrom: uint16(0x016A), FcTo0: uint8(0x55)},
 21402  	{FcFrom: uint16(0x016B), FcTo0: uint8(0x75)},
 21403  	{FcFrom: uint16(0x016C), FcTo0: uint8(0x55)},
 21404  	{FcFrom: uint16(0x016D), FcTo0: uint8(0x75)},
 21405  	{FcFrom: uint16(0x016E), FcTo0: uint8(0x55)},
 21406  	{FcFrom: uint16(0x016F), FcTo0: uint8(0x75)},
 21407  	{FcFrom: uint16(0x0170), FcTo0: uint8(0x55)},
 21408  	{FcFrom: uint16(0x0171), FcTo0: uint8(0x75)},
 21409  	{FcFrom: uint16(0x0172), FcTo0: uint8(0x55)},
 21410  	{FcFrom: uint16(0x0173), FcTo0: uint8(0x75)},
 21411  	{FcFrom: uint16(0x0174), FcTo0: uint8(0x57)},
 21412  	{FcFrom: uint16(0x0175), FcTo0: uint8(0x77)},
 21413  	{FcFrom: uint16(0x0176), FcTo0: uint8(0x59)},
 21414  	{FcFrom: uint16(0x0177), FcTo0: uint8(0x79)},
 21415  	{FcFrom: uint16(0x0178), FcTo0: uint8(0x59)},
 21416  	{FcFrom: uint16(0x0179), FcTo0: uint8(0x5A)},
 21417  	{FcFrom: uint16(0x017A), FcTo0: uint8(0x7A)},
 21418  	{FcFrom: uint16(0x017B), FcTo0: uint8(0x5A)},
 21419  	{FcFrom: uint16(0x017C), FcTo0: uint8(0x7A)},
 21420  	{FcFrom: uint16(0x017D), FcTo0: uint8(0x5A)},
 21421  	{FcFrom: uint16(0x017E), FcTo0: uint8(0x7A)},
 21422  	{FcFrom: uint16(0x017F), FcTo0: uint8(0x73)},
 21423  	{FcFrom: uint16(0x0192), FcTo0: uint8(0x66)},
 21424  	{FcFrom: uint16(0x0218), FcTo0: uint8(0x53)},
 21425  	{FcFrom: uint16(0x0219), FcTo0: uint8(0x73)},
 21426  	{FcFrom: uint16(0x021A), FcTo0: uint8(0x54)},
 21427  	{FcFrom: uint16(0x021B), FcTo0: uint8(0x74)},
 21428  	{FcFrom: uint16(0x0386), FcTo0: uint8(0x41)},
 21429  	{FcFrom: uint16(0x0388), FcTo0: uint8(0x45)},
 21430  	{FcFrom: uint16(0x0389), FcTo0: uint8(0x49)},
 21431  	{FcFrom: uint16(0x038A), FcTo0: uint8(0x49)},
 21432  	{FcFrom: uint16(0x038C), FcTo0: uint8(0x4f)},
 21433  	{FcFrom: uint16(0x038E), FcTo0: uint8(0x59)},
 21434  	{FcFrom: uint16(0x038F), FcTo0: uint8(0x4f)},
 21435  	{FcFrom: uint16(0x0390), FcTo0: uint8(0x69)},
 21436  	{FcFrom: uint16(0x0391), FcTo0: uint8(0x41)},
 21437  	{FcFrom: uint16(0x0392), FcTo0: uint8(0x42)},
 21438  	{FcFrom: uint16(0x0393), FcTo0: uint8(0x47)},
 21439  	{FcFrom: uint16(0x0394), FcTo0: uint8(0x44)},
 21440  	{FcFrom: uint16(0x0395), FcTo0: uint8(0x45)},
 21441  	{FcFrom: uint16(0x0396), FcTo0: uint8(0x5a)},
 21442  	{FcFrom: uint16(0x0397), FcTo0: uint8(0x49)},
 21443  	{FcFrom: uint16(0x0398), FcTo0: uint8(0x54), FcTo1: uint8(0x68)},
 21444  	{FcFrom: uint16(0x0399), FcTo0: uint8(0x49)},
 21445  	{FcFrom: uint16(0x039A), FcTo0: uint8(0x4b)},
 21446  	{FcFrom: uint16(0x039B), FcTo0: uint8(0x4c)},
 21447  	{FcFrom: uint16(0x039C), FcTo0: uint8(0x4d)},
 21448  	{FcFrom: uint16(0x039D), FcTo0: uint8(0x4e)},
 21449  	{FcFrom: uint16(0x039E), FcTo0: uint8(0x58)},
 21450  	{FcFrom: uint16(0x039F), FcTo0: uint8(0x4f)},
 21451  	{FcFrom: uint16(0x03A0), FcTo0: uint8(0x50)},
 21452  	{FcFrom: uint16(0x03A1), FcTo0: uint8(0x52)},
 21453  	{FcFrom: uint16(0x03A3), FcTo0: uint8(0x53)},
 21454  	{FcFrom: uint16(0x03A4), FcTo0: uint8(0x54)},
 21455  	{FcFrom: uint16(0x03A5), FcTo0: uint8(0x59)},
 21456  	{FcFrom: uint16(0x03A6), FcTo0: uint8(0x46)},
 21457  	{FcFrom: uint16(0x03A7), FcTo0: uint8(0x43), FcTo1: uint8(0x68)},
 21458  	{FcFrom: uint16(0x03A8), FcTo0: uint8(0x50), FcTo1: uint8(0x73)},
 21459  	{FcFrom: uint16(0x03A9), FcTo0: uint8(0x4f)},
 21460  	{FcFrom: uint16(0x03AA), FcTo0: uint8(0x49)},
 21461  	{FcFrom: uint16(0x03AB), FcTo0: uint8(0x59)},
 21462  	{FcFrom: uint16(0x03AC), FcTo0: uint8(0x61)},
 21463  	{FcFrom: uint16(0x03AD), FcTo0: uint8(0x65)},
 21464  	{FcFrom: uint16(0x03AE), FcTo0: uint8(0x69)},
 21465  	{FcFrom: uint16(0x03AF), FcTo0: uint8(0x69)},
 21466  	{FcFrom: uint16(0x03B1), FcTo0: uint8(0x61)},
 21467  	{FcFrom: uint16(0x03B2), FcTo0: uint8(0x62)},
 21468  	{FcFrom: uint16(0x03B3), FcTo0: uint8(0x67)},
 21469  	{FcFrom: uint16(0x03B4), FcTo0: uint8(0x64)},
 21470  	{FcFrom: uint16(0x03B5), FcTo0: uint8(0x65)},
 21471  	{FcFrom: uint16(0x03B6), FcTo0: uint8(0x7a)},
 21472  	{FcFrom: uint16(0x03B7), FcTo0: uint8(0x69)},
 21473  	{FcFrom: uint16(0x03B8), FcTo0: uint8(0x74), FcTo1: uint8(0x68)},
 21474  	{FcFrom: uint16(0x03B9), FcTo0: uint8(0x69)},
 21475  	{FcFrom: uint16(0x03BA), FcTo0: uint8(0x6b)},
 21476  	{FcFrom: uint16(0x03BB), FcTo0: uint8(0x6c)},
 21477  	{FcFrom: uint16(0x03BC), FcTo0: uint8(0x6d)},
 21478  	{FcFrom: uint16(0x03BD), FcTo0: uint8(0x6e)},
 21479  	{FcFrom: uint16(0x03BE), FcTo0: uint8(0x78)},
 21480  	{FcFrom: uint16(0x03BF), FcTo0: uint8(0x6f)},
 21481  	{FcFrom: uint16(0x03C0), FcTo0: uint8(0x70)},
 21482  	{FcFrom: uint16(0x03C1), FcTo0: uint8(0x72)},
 21483  	{FcFrom: uint16(0x03C3), FcTo0: uint8(0x73)},
 21484  	{FcFrom: uint16(0x03C4), FcTo0: uint8(0x74)},
 21485  	{FcFrom: uint16(0x03C5), FcTo0: uint8(0x79)},
 21486  	{FcFrom: uint16(0x03C6), FcTo0: uint8(0x66)},
 21487  	{FcFrom: uint16(0x03C7), FcTo0: uint8(0x63), FcTo1: uint8(0x68)},
 21488  	{FcFrom: uint16(0x03C8), FcTo0: uint8(0x70), FcTo1: uint8(0x73)},
 21489  	{FcFrom: uint16(0x03C9), FcTo0: uint8(0x6f)},
 21490  	{FcFrom: uint16(0x03CA), FcTo0: uint8(0x69)},
 21491  	{FcFrom: uint16(0x03CB), FcTo0: uint8(0x79)},
 21492  	{FcFrom: uint16(0x03CC), FcTo0: uint8(0x6f)},
 21493  	{FcFrom: uint16(0x03CD), FcTo0: uint8(0x79)},
 21494  	{FcFrom: uint16(0x03CE), FcTo0: uint8(0x69)},
 21495  	{FcFrom: uint16(0x0400), FcTo0: uint8(0x45)},
 21496  	{FcFrom: uint16(0x0401), FcTo0: uint8(0x45)},
 21497  	{FcFrom: uint16(0x0402), FcTo0: uint8(0x44)},
 21498  	{FcFrom: uint16(0x0403), FcTo0: uint8(0x47)},
 21499  	{FcFrom: uint16(0x0404), FcTo0: uint8(0x45)},
 21500  	{FcFrom: uint16(0x0405), FcTo0: uint8(0x5a)},
 21501  	{FcFrom: uint16(0x0406), FcTo0: uint8(0x49)},
 21502  	{FcFrom: uint16(0x0407), FcTo0: uint8(0x49)},
 21503  	{FcFrom: uint16(0x0408), FcTo0: uint8(0x4a)},
 21504  	{FcFrom: uint16(0x0409), FcTo0: uint8(0x49)},
 21505  	{FcFrom: uint16(0x040A), FcTo0: uint8(0x4e)},
 21506  	{FcFrom: uint16(0x040B), FcTo0: uint8(0x44)},
 21507  	{FcFrom: uint16(0x040C), FcTo0: uint8(0x4b)},
 21508  	{FcFrom: uint16(0x040D), FcTo0: uint8(0x49)},
 21509  	{FcFrom: uint16(0x040E), FcTo0: uint8(0x55)},
 21510  	{FcFrom: uint16(0x040F), FcTo0: uint8(0x44)},
 21511  	{FcFrom: uint16(0x0410), FcTo0: uint8(0x41)},
 21512  	{FcFrom: uint16(0x0411), FcTo0: uint8(0x42)},
 21513  	{FcFrom: uint16(0x0412), FcTo0: uint8(0x56)},
 21514  	{FcFrom: uint16(0x0413), FcTo0: uint8(0x47)},
 21515  	{FcFrom: uint16(0x0414), FcTo0: uint8(0x44)},
 21516  	{FcFrom: uint16(0x0415), FcTo0: uint8(0x45)},
 21517  	{FcFrom: uint16(0x0416), FcTo0: uint8(0x5a), FcTo1: uint8(0x68)},
 21518  	{FcFrom: uint16(0x0417), FcTo0: uint8(0x5a)},
 21519  	{FcFrom: uint16(0x0418), FcTo0: uint8(0x49)},
 21520  	{FcFrom: uint16(0x0419), FcTo0: uint8(0x49)},
 21521  	{FcFrom: uint16(0x041A), FcTo0: uint8(0x4b)},
 21522  	{FcFrom: uint16(0x041B), FcTo0: uint8(0x4c)},
 21523  	{FcFrom: uint16(0x041C), FcTo0: uint8(0x4d)},
 21524  	{FcFrom: uint16(0x041D), FcTo0: uint8(0x4e)},
 21525  	{FcFrom: uint16(0x041E), FcTo0: uint8(0x4f)},
 21526  	{FcFrom: uint16(0x041F), FcTo0: uint8(0x50)},
 21527  	{FcFrom: uint16(0x0420), FcTo0: uint8(0x52)},
 21528  	{FcFrom: uint16(0x0421), FcTo0: uint8(0x53)},
 21529  	{FcFrom: uint16(0x0422), FcTo0: uint8(0x54)},
 21530  	{FcFrom: uint16(0x0423), FcTo0: uint8(0x55)},
 21531  	{FcFrom: uint16(0x0424), FcTo0: uint8(0x46)},
 21532  	{FcFrom: uint16(0x0425), FcTo0: uint8(0x4b), FcTo1: uint8(0x68)},
 21533  	{FcFrom: uint16(0x0426), FcTo0: uint8(0x54), FcTo1: uint8(0x63)},
 21534  	{FcFrom: uint16(0x0427), FcTo0: uint8(0x43), FcTo1: uint8(0x68)},
 21535  	{FcFrom: uint16(0x0428), FcTo0: uint8(0x53), FcTo1: uint8(0x68)},
 21536  	{FcFrom: uint16(0x0429), FcTo0: uint8(0x53), FcTo1: uint8(0x68), FcTo2: uint8(0x63), FcTo3: uint8(0x68)},
 21537  	{FcFrom: uint16(0x042A), FcTo0: uint8(0x61)},
 21538  	{FcFrom: uint16(0x042B), FcTo0: uint8(0x59)},
 21539  	{FcFrom: uint16(0x042C), FcTo0: uint8(0x59)},
 21540  	{FcFrom: uint16(0x042D), FcTo0: uint8(0x45)},
 21541  	{FcFrom: uint16(0x042E), FcTo0: uint8(0x49), FcTo1: uint8(0x75)},
 21542  	{FcFrom: uint16(0x042F), FcTo0: uint8(0x49), FcTo1: uint8(0x61)},
 21543  	{FcFrom: uint16(0x0430), FcTo0: uint8(0x61)},
 21544  	{FcFrom: uint16(0x0431), FcTo0: uint8(0x62)},
 21545  	{FcFrom: uint16(0x0432), FcTo0: uint8(0x76)},
 21546  	{FcFrom: uint16(0x0433), FcTo0: uint8(0x67)},
 21547  	{FcFrom: uint16(0x0434), FcTo0: uint8(0x64)},
 21548  	{FcFrom: uint16(0x0435), FcTo0: uint8(0x65)},
 21549  	{FcFrom: uint16(0x0436), FcTo0: uint8(0x7a), FcTo1: uint8(0x68)},
 21550  	{FcFrom: uint16(0x0437), FcTo0: uint8(0x7a)},
 21551  	{FcFrom: uint16(0x0438), FcTo0: uint8(0x69)},
 21552  	{FcFrom: uint16(0x0439), FcTo0: uint8(0x69)},
 21553  	{FcFrom: uint16(0x043A), FcTo0: uint8(0x6b)},
 21554  	{FcFrom: uint16(0x043B), FcTo0: uint8(0x6c)},
 21555  	{FcFrom: uint16(0x043C), FcTo0: uint8(0x6d)},
 21556  	{FcFrom: uint16(0x043D), FcTo0: uint8(0x6e)},
 21557  	{FcFrom: uint16(0x043E), FcTo0: uint8(0x6f)},
 21558  	{FcFrom: uint16(0x043F), FcTo0: uint8(0x70)},
 21559  	{FcFrom: uint16(0x0440), FcTo0: uint8(0x72)},
 21560  	{FcFrom: uint16(0x0441), FcTo0: uint8(0x73)},
 21561  	{FcFrom: uint16(0x0442), FcTo0: uint8(0x74)},
 21562  	{FcFrom: uint16(0x0443), FcTo0: uint8(0x75)},
 21563  	{FcFrom: uint16(0x0444), FcTo0: uint8(0x66)},
 21564  	{FcFrom: uint16(0x0445), FcTo0: uint8(0x6b), FcTo1: uint8(0x68)},
 21565  	{FcFrom: uint16(0x0446), FcTo0: uint8(0x74), FcTo1: uint8(0x63)},
 21566  	{FcFrom: uint16(0x0447), FcTo0: uint8(0x63), FcTo1: uint8(0x68)},
 21567  	{FcFrom: uint16(0x0448), FcTo0: uint8(0x73), FcTo1: uint8(0x68)},
 21568  	{FcFrom: uint16(0x0449), FcTo0: uint8(0x73), FcTo1: uint8(0x68), FcTo2: uint8(0x63), FcTo3: uint8(0x68)},
 21569  	{FcFrom: uint16(0x044A), FcTo0: uint8(0x61)},
 21570  	{FcFrom: uint16(0x044B), FcTo0: uint8(0x79)},
 21571  	{FcFrom: uint16(0x044C), FcTo0: uint8(0x79)},
 21572  	{FcFrom: uint16(0x044D), FcTo0: uint8(0x65)},
 21573  	{FcFrom: uint16(0x044E), FcTo0: uint8(0x69), FcTo1: uint8(0x75)},
 21574  	{FcFrom: uint16(0x044F), FcTo0: uint8(0x69), FcTo1: uint8(0x61)},
 21575  	{FcFrom: uint16(0x0450), FcTo0: uint8(0x65)},
 21576  	{FcFrom: uint16(0x0451), FcTo0: uint8(0x65)},
 21577  	{FcFrom: uint16(0x0452), FcTo0: uint8(0x64)},
 21578  	{FcFrom: uint16(0x0453), FcTo0: uint8(0x67)},
 21579  	{FcFrom: uint16(0x0454), FcTo0: uint8(0x65)},
 21580  	{FcFrom: uint16(0x0455), FcTo0: uint8(0x7a)},
 21581  	{FcFrom: uint16(0x0456), FcTo0: uint8(0x69)},
 21582  	{FcFrom: uint16(0x0457), FcTo0: uint8(0x69)},
 21583  	{FcFrom: uint16(0x0458), FcTo0: uint8(0x6a)},
 21584  	{FcFrom: uint16(0x0459), FcTo0: uint8(0x69)},
 21585  	{FcFrom: uint16(0x045A), FcTo0: uint8(0x6e)},
 21586  	{FcFrom: uint16(0x045B), FcTo0: uint8(0x64)},
 21587  	{FcFrom: uint16(0x045C), FcTo0: uint8(0x6b)},
 21588  	{FcFrom: uint16(0x045D), FcTo0: uint8(0x69)},
 21589  	{FcFrom: uint16(0x045E), FcTo0: uint8(0x75)},
 21590  	{FcFrom: uint16(0x045F), FcTo0: uint8(0x64)},
 21591  	{FcFrom: uint16(0x1E02), FcTo0: uint8(0x42)},
 21592  	{FcFrom: uint16(0x1E03), FcTo0: uint8(0x62)},
 21593  	{FcFrom: uint16(0x1E0A), FcTo0: uint8(0x44)},
 21594  	{FcFrom: uint16(0x1E0B), FcTo0: uint8(0x64)},
 21595  	{FcFrom: uint16(0x1E1E), FcTo0: uint8(0x46)},
 21596  	{FcFrom: uint16(0x1E1F), FcTo0: uint8(0x66)},
 21597  	{FcFrom: uint16(0x1E40), FcTo0: uint8(0x4D)},
 21598  	{FcFrom: uint16(0x1E41), FcTo0: uint8(0x6D)},
 21599  	{FcFrom: uint16(0x1E56), FcTo0: uint8(0x50)},
 21600  	{FcFrom: uint16(0x1E57), FcTo0: uint8(0x70)},
 21601  	{FcFrom: uint16(0x1E60), FcTo0: uint8(0x53)},
 21602  	{FcFrom: uint16(0x1E61), FcTo0: uint8(0x73)},
 21603  	{FcFrom: uint16(0x1E6A), FcTo0: uint8(0x54)},
 21604  	{FcFrom: uint16(0x1E6B), FcTo0: uint8(0x74)},
 21605  	{FcFrom: uint16(0x1E80), FcTo0: uint8(0x57)},
 21606  	{FcFrom: uint16(0x1E81), FcTo0: uint8(0x77)},
 21607  	{FcFrom: uint16(0x1E82), FcTo0: uint8(0x57)},
 21608  	{FcFrom: uint16(0x1E83), FcTo0: uint8(0x77)},
 21609  	{FcFrom: uint16(0x1E84), FcTo0: uint8(0x57)},
 21610  	{FcFrom: uint16(0x1E85), FcTo0: uint8(0x77)},
 21611  	{FcFrom: uint16(0x1EF2), FcTo0: uint8(0x59)},
 21612  	{FcFrom: uint16(0x1EF3), FcTo0: uint8(0x79)},
 21613  	{FcFrom: uint16(0xFB00), FcTo0: uint8(0x66), FcTo1: uint8(0x66)},
 21614  	{FcFrom: uint16(0xFB01), FcTo0: uint8(0x66), FcTo1: uint8(0x69)},
 21615  	{FcFrom: uint16(0xFB02), FcTo0: uint8(0x66), FcTo1: uint8(0x6C)},
 21616  	{FcFrom: uint16(0xFB05), FcTo0: uint8(0x73), FcTo1: uint8(0x74)},
 21617  	{FcFrom: uint16(0xFB06), FcTo0: uint8(0x73), FcTo1: uint8(0x74)},
 21618  }
 21619  
 21620  func spellfixFindTranslit(tls *libc.TLS, c int32, pxTop uintptr) uintptr {
 21621  	*(*int32)(unsafe.Pointer(pxTop)) = int32(uint64(unsafe.Sizeof(translit))/uint64(unsafe.Sizeof(Transliteration{})) - uint64(1))
 21622  	return uintptr(unsafe.Pointer(&translit))
 21623  }
 21624  
 21625  func transliterate(tls *libc.TLS, zIn uintptr, nIn int32) uintptr {
 21626  	bp := tls.Alloc(8)
 21627  	defer tls.Free(8)
 21628  
 21629  	var zOut uintptr = sqlite3.Xsqlite3_malloc64(tls, uint64(nIn*4+1))
 21630  	var c int32
 21631  
 21632  	var nOut int32
 21633  	if zOut == uintptr(0) {
 21634  		return uintptr(0)
 21635  	}
 21636  	nOut = 0
 21637  	for nIn > 0 {
 21638  		c = utf8Read(tls, zIn, nIn, bp)
 21639  		zIn += uintptr(*(*int32)(unsafe.Pointer(bp)))
 21640  		nIn = nIn - *(*int32)(unsafe.Pointer(bp))
 21641  		if c <= 127 {
 21642  			*(*uint8)(unsafe.Pointer(zOut + uintptr(libc.PostIncInt32(&nOut, 1)))) = uint8(c)
 21643  		} else {
 21644  			var xBtm int32
 21645  			var x int32
 21646  			var tbl uintptr = spellfixFindTranslit(tls, c, bp+4)
 21647  			xBtm = 0
 21648  			for *(*int32)(unsafe.Pointer(bp + 4)) >= xBtm {
 21649  				x = (*(*int32)(unsafe.Pointer(bp + 4)) + xBtm) / 2
 21650  				if int32((*Transliteration)(unsafe.Pointer(tbl+uintptr(x)*6)).FcFrom) == c {
 21651  					*(*uint8)(unsafe.Pointer(zOut + uintptr(libc.PostIncInt32(&nOut, 1)))) = (*Transliteration)(unsafe.Pointer(tbl + uintptr(x)*6)).FcTo0
 21652  					if (*Transliteration)(unsafe.Pointer(tbl+uintptr(x)*6)).FcTo1 != 0 {
 21653  						*(*uint8)(unsafe.Pointer(zOut + uintptr(libc.PostIncInt32(&nOut, 1)))) = (*Transliteration)(unsafe.Pointer(tbl + uintptr(x)*6)).FcTo1
 21654  						if (*Transliteration)(unsafe.Pointer(tbl+uintptr(x)*6)).FcTo2 != 0 {
 21655  							*(*uint8)(unsafe.Pointer(zOut + uintptr(libc.PostIncInt32(&nOut, 1)))) = (*Transliteration)(unsafe.Pointer(tbl + uintptr(x)*6)).FcTo2
 21656  							if (*Transliteration)(unsafe.Pointer(tbl+uintptr(x)*6)).FcTo3 != 0 {
 21657  								*(*uint8)(unsafe.Pointer(zOut + uintptr(libc.PostIncInt32(&nOut, 1)))) = (*Transliteration)(unsafe.Pointer(tbl + uintptr(x)*6)).FcTo3
 21658  							}
 21659  						}
 21660  					}
 21661  					c = 0
 21662  					break
 21663  				} else if int32((*Transliteration)(unsafe.Pointer(tbl+uintptr(x)*6)).FcFrom) > c {
 21664  					*(*int32)(unsafe.Pointer(bp + 4)) = x - 1
 21665  				} else {
 21666  					xBtm = x + 1
 21667  				}
 21668  			}
 21669  			if c != 0 {
 21670  				*(*uint8)(unsafe.Pointer(zOut + uintptr(libc.PostIncInt32(&nOut, 1)))) = uint8('?')
 21671  			}
 21672  		}
 21673  	}
 21674  	*(*uint8)(unsafe.Pointer(zOut + uintptr(nOut))) = uint8(0)
 21675  	return zOut
 21676  }
 21677  
 21678  func translen_to_charlen(tls *libc.TLS, zIn uintptr, nIn int32, nTrans int32) int32 {
 21679  	bp := tls.Alloc(8)
 21680  	defer tls.Free(8)
 21681  
 21682  	var i int32
 21683  	var c int32
 21684  
 21685  	var nOut int32
 21686  	var nChar int32
 21687  
 21688  	i = libc.AssignInt32(&nOut, 0)
 21689  	for nChar = 0; i < nIn && nOut < nTrans; nChar++ {
 21690  		c = utf8Read(tls, zIn+uintptr(i), nIn-i, bp)
 21691  		i = i + *(*int32)(unsafe.Pointer(bp))
 21692  
 21693  		nOut++
 21694  		if c >= 128 {
 21695  			var xBtm int32
 21696  			var x int32
 21697  			var tbl uintptr = spellfixFindTranslit(tls, c, bp+4)
 21698  			xBtm = 0
 21699  			for *(*int32)(unsafe.Pointer(bp + 4)) >= xBtm {
 21700  				x = (*(*int32)(unsafe.Pointer(bp + 4)) + xBtm) / 2
 21701  				if int32((*Transliteration)(unsafe.Pointer(tbl+uintptr(x)*6)).FcFrom) == c {
 21702  					if (*Transliteration)(unsafe.Pointer(tbl+uintptr(x)*6)).FcTo1 != 0 {
 21703  						nOut++
 21704  						if (*Transliteration)(unsafe.Pointer(tbl+uintptr(x)*6)).FcTo2 != 0 {
 21705  							nOut++
 21706  							if (*Transliteration)(unsafe.Pointer(tbl+uintptr(x)*6)).FcTo3 != 0 {
 21707  								nOut++
 21708  							}
 21709  						}
 21710  					}
 21711  					break
 21712  				} else if int32((*Transliteration)(unsafe.Pointer(tbl+uintptr(x)*6)).FcFrom) > c {
 21713  					*(*int32)(unsafe.Pointer(bp + 4)) = x - 1
 21714  				} else {
 21715  					xBtm = x + 1
 21716  				}
 21717  			}
 21718  		}
 21719  	}
 21720  
 21721  	return nChar
 21722  }
 21723  
 21724  func transliterateSqlFunc(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 21725  	var zIn uintptr = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 21726  	var nIn int32 = sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(argv)))
 21727  	var zOut uintptr = transliterate(tls, zIn, nIn)
 21728  	if zOut == uintptr(0) {
 21729  		sqlite3.Xsqlite3_result_error_nomem(tls, context)
 21730  	} else {
 21731  		sqlite3.Xsqlite3_result_text(tls, context, zOut, -1, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{sqlite3.Xsqlite3_free})))
 21732  	}
 21733  }
 21734  
 21735  func scriptCodeSqlFunc(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 21736  	bp := tls.Alloc(4)
 21737  	defer tls.Free(4)
 21738  
 21739  	var zIn uintptr = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 21740  	var nIn int32 = sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(argv)))
 21741  	var c int32
 21742  
 21743  	var scriptMask int32 = 0
 21744  	var res int32
 21745  	var seenDigit int32 = 0
 21746  
 21747  	for nIn > 0 {
 21748  		c = utf8Read(tls, zIn, nIn, bp)
 21749  		zIn += uintptr(*(*int32)(unsafe.Pointer(bp)))
 21750  		nIn = nIn - *(*int32)(unsafe.Pointer(bp))
 21751  		if c < 0x02af {
 21752  			if c >= 0x80 || int32(midClass[c&0x7f]) < CCLASS_DIGIT {
 21753  				scriptMask = scriptMask | SCRIPT_LATIN
 21754  			} else if c >= '0' && c <= '9' {
 21755  				seenDigit = 1
 21756  			}
 21757  		} else if c >= 0x0400 && c <= 0x04ff {
 21758  			scriptMask = scriptMask | SCRIPT_CYRILLIC
 21759  		} else if c >= 0x0386 && c <= 0x03ce {
 21760  			scriptMask = scriptMask | SCRIPT_GREEK
 21761  		} else if c >= 0x0590 && c <= 0x05ff {
 21762  			scriptMask = scriptMask | SCRIPT_HEBREW
 21763  		} else if c >= 0x0600 && c <= 0x06ff {
 21764  			scriptMask = scriptMask | SCRIPT_ARABIC
 21765  		}
 21766  	}
 21767  	if scriptMask == 0 && seenDigit != 0 {
 21768  		scriptMask = SCRIPT_LATIN
 21769  	}
 21770  	switch scriptMask {
 21771  	case 0:
 21772  		res = 999
 21773  		break
 21774  	case SCRIPT_LATIN:
 21775  		res = 215
 21776  		break
 21777  	case SCRIPT_CYRILLIC:
 21778  		res = 220
 21779  		break
 21780  	case SCRIPT_GREEK:
 21781  		res = 200
 21782  		break
 21783  	case SCRIPT_HEBREW:
 21784  		res = 125
 21785  		break
 21786  	case SCRIPT_ARABIC:
 21787  		res = 160
 21788  		break
 21789  	default:
 21790  		res = 998
 21791  		break
 21792  	}
 21793  	sqlite3.Xsqlite3_result_int(tls, context, res)
 21794  }
 21795  
 21796  type spellfix1_vtab1 = struct {
 21797  	Fbase       sqlite3_vtab
 21798  	Fdb         uintptr
 21799  	FzDbName    uintptr
 21800  	FzTableName uintptr
 21801  	FzCostTable uintptr
 21802  	FpConfig3   uintptr
 21803  }
 21804  
 21805  type spellfix1_vtab = spellfix1_vtab1
 21806  type spellfix1_cursor1 = struct {
 21807  	Fbase      sqlite3_vtab_cursor
 21808  	FpVTab     uintptr
 21809  	FzPattern  uintptr
 21810  	FidxNum    int32
 21811  	FnRow      int32
 21812  	FnAlloc    int32
 21813  	FiRow      int32
 21814  	FiLang     int32
 21815  	FiTop      int32
 21816  	FiScope    int32
 21817  	FnSearch   int32
 21818  	FpFullScan uintptr
 21819  	Fa         uintptr
 21820  }
 21821  
 21822  type spellfix1_cursor = spellfix1_cursor1
 21823  
 21824  type spellfix1_row = struct {
 21825  	FiRowid    sqlite3_int64
 21826  	FzWord     uintptr
 21827  	FiRank     int32
 21828  	FiDistance int32
 21829  	FiScore    int32
 21830  	FiMatchlen int32
 21831  	FzHash     [32]uint8
 21832  }
 21833  
 21834  func spellfix1DbExec(tls *libc.TLS, pRc uintptr, db uintptr, zFormat uintptr, va uintptr) {
 21835  	var ap va_list
 21836  	_ = ap
 21837  	var zSql uintptr
 21838  	if *(*int32)(unsafe.Pointer(pRc)) != 0 {
 21839  		return
 21840  	}
 21841  	ap = va
 21842  	zSql = sqlite3.Xsqlite3_vmprintf(tls, zFormat, ap)
 21843  	_ = ap
 21844  	if zSql == uintptr(0) {
 21845  		*(*int32)(unsafe.Pointer(pRc)) = SQLITE_NOMEM
 21846  	} else {
 21847  		*(*int32)(unsafe.Pointer(pRc)) = sqlite3.Xsqlite3_exec(tls, db, zSql, uintptr(0), uintptr(0), uintptr(0))
 21848  		sqlite3.Xsqlite3_free(tls, zSql)
 21849  	}
 21850  }
 21851  
 21852  func spellfix1Uninit(tls *libc.TLS, isDestroy int32, pVTab uintptr) int32 {
 21853  	bp := tls.Alloc(20)
 21854  	defer tls.Free(20)
 21855  
 21856  	var p uintptr = pVTab
 21857  	*(*int32)(unsafe.Pointer(bp + 16)) = SQLITE_OK
 21858  	if isDestroy != 0 {
 21859  		var db uintptr = (*spellfix1_vtab)(unsafe.Pointer(p)).Fdb
 21860  		spellfix1DbExec(tls, bp+16, db, ts+7189,
 21861  			libc.VaList(bp, (*spellfix1_vtab)(unsafe.Pointer(p)).FzDbName, (*spellfix1_vtab)(unsafe.Pointer(p)).FzTableName))
 21862  	}
 21863  	if *(*int32)(unsafe.Pointer(bp + 16)) == SQLITE_OK {
 21864  		sqlite3.Xsqlite3_free(tls, (*spellfix1_vtab)(unsafe.Pointer(p)).FzTableName)
 21865  		editDist3ConfigDelete(tls, (*spellfix1_vtab)(unsafe.Pointer(p)).FpConfig3)
 21866  		sqlite3.Xsqlite3_free(tls, (*spellfix1_vtab)(unsafe.Pointer(p)).FzCostTable)
 21867  		sqlite3.Xsqlite3_free(tls, p)
 21868  	}
 21869  	return *(*int32)(unsafe.Pointer(bp + 16))
 21870  }
 21871  
 21872  func spellfix1Disconnect(tls *libc.TLS, pVTab uintptr) int32 {
 21873  	return spellfix1Uninit(tls, 0, pVTab)
 21874  }
 21875  
 21876  func spellfix1Destroy(tls *libc.TLS, pVTab uintptr) int32 {
 21877  	return spellfix1Uninit(tls, 1, pVTab)
 21878  }
 21879  
 21880  func spellfix1Dequote(tls *libc.TLS, zIn uintptr) uintptr {
 21881  	bp := tls.Alloc(8)
 21882  	defer tls.Free(8)
 21883  
 21884  	var zOut uintptr
 21885  	var i int32
 21886  	var j int32
 21887  	var c uint8
 21888  	for int32(*(*uint16)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(libc.X__ctype_b_loc(tls))) + uintptr(int32(*(*uint8)(unsafe.Pointer(zIn))))*2)))&int32(_ISspace) != 0 {
 21889  		zIn++
 21890  	}
 21891  	zOut = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp, zIn))
 21892  	if zOut == uintptr(0) {
 21893  		return uintptr(0)
 21894  	}
 21895  	i = int32(libc.Xstrlen(tls, zOut))
 21896  	*(*uint8)(unsafe.Pointer(zOut + uintptr(i))) = uint8(0)
 21897  	c = *(*uint8)(unsafe.Pointer(zOut))
 21898  	if int32(c) == '\'' || int32(c) == '"' {
 21899  		i = 1
 21900  		j = 0
 21901  		for ; 1 != 0; i++ {
 21902  			*(*uint8)(unsafe.Pointer(zOut + uintptr(libc.PostIncInt32(&j, 1)))) = *(*uint8)(unsafe.Pointer(zOut + uintptr(i)))
 21903  			if int32(*(*uint8)(unsafe.Pointer(zOut + uintptr(i)))) == int32(c) {
 21904  				if int32(*(*uint8)(unsafe.Pointer(zOut + uintptr(i+1)))) == int32(c) {
 21905  					i++
 21906  				} else {
 21907  					*(*uint8)(unsafe.Pointer(zOut + uintptr(j-1))) = uint8(0)
 21908  					break
 21909  				}
 21910  			}
 21911  		}
 21912  	}
 21913  	return zOut
 21914  }
 21915  
 21916  func spellfix1Init(tls *libc.TLS, isCreate int32, db uintptr, pAux uintptr, argc int32, argv uintptr, ppVTab uintptr, pzErr uintptr) int32 {
 21917  	bp := tls.Alloc(60)
 21918  	defer tls.Free(60)
 21919  
 21920  	var pNew uintptr = uintptr(0)
 21921  
 21922  	var zDbName uintptr = *(*uintptr)(unsafe.Pointer(argv + 1*8))
 21923  	var zTableName uintptr = *(*uintptr)(unsafe.Pointer(argv + 2*8))
 21924  	var nDbName int32
 21925  	*(*int32)(unsafe.Pointer(bp + 56)) = SQLITE_OK
 21926  	var i int32
 21927  
 21928  	nDbName = int32(libc.Xstrlen(tls, zDbName))
 21929  	pNew = sqlite3.Xsqlite3_malloc64(tls, uint64(unsafe.Sizeof(spellfix1_vtab{}))+uint64(nDbName)+uint64(1))
 21930  	if pNew == uintptr(0) {
 21931  		*(*int32)(unsafe.Pointer(bp + 56)) = SQLITE_NOMEM
 21932  	} else {
 21933  		libc.Xmemset(tls, pNew, 0, uint64(unsafe.Sizeof(spellfix1_vtab{})))
 21934  		(*spellfix1_vtab)(unsafe.Pointer(pNew)).FzDbName = pNew + 1*64
 21935  		libc.Xmemcpy(tls, (*spellfix1_vtab)(unsafe.Pointer(pNew)).FzDbName, zDbName, uint64(nDbName+1))
 21936  		(*spellfix1_vtab)(unsafe.Pointer(pNew)).FzTableName = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp, zTableName))
 21937  		(*spellfix1_vtab)(unsafe.Pointer(pNew)).Fdb = db
 21938  		if (*spellfix1_vtab)(unsafe.Pointer(pNew)).FzTableName == uintptr(0) {
 21939  			*(*int32)(unsafe.Pointer(bp + 56)) = SQLITE_NOMEM
 21940  		} else {
 21941  			sqlite3.Xsqlite3_vtab_config(tls, db, SQLITE_VTAB_INNOCUOUS, 0)
 21942  			*(*int32)(unsafe.Pointer(bp + 56)) = sqlite3.Xsqlite3_declare_vtab(tls, db,
 21943  				ts+7226)
 21944  		}
 21945  		if *(*int32)(unsafe.Pointer(bp + 56)) == SQLITE_OK && isCreate != 0 {
 21946  			spellfix1DbExec(tls, bp+56, db,
 21947  				ts+7380,
 21948  				libc.VaList(bp+8, zDbName, zTableName))
 21949  			spellfix1DbExec(tls, bp+56, db,
 21950  				ts+7514,
 21951  				libc.VaList(bp+24, zDbName, zTableName, zTableName))
 21952  		}
 21953  		for i = 3; *(*int32)(unsafe.Pointer(bp + 56)) == SQLITE_OK && i < argc; i++ {
 21954  			if libc.Xstrncmp(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8)), ts+7599, uint64(16)) == 0 && (*spellfix1_vtab)(unsafe.Pointer(pNew)).FzCostTable == uintptr(0) {
 21955  				(*spellfix1_vtab)(unsafe.Pointer(pNew)).FzCostTable = spellfix1Dequote(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8))+16)
 21956  				if (*spellfix1_vtab)(unsafe.Pointer(pNew)).FzCostTable == uintptr(0) {
 21957  					*(*int32)(unsafe.Pointer(bp + 56)) = SQLITE_NOMEM
 21958  				}
 21959  				continue
 21960  			}
 21961  			*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+7616, libc.VaList(bp+48, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8))))
 21962  			*(*int32)(unsafe.Pointer(bp + 56)) = SQLITE_ERROR
 21963  		}
 21964  	}
 21965  
 21966  	if *(*int32)(unsafe.Pointer(bp + 56)) != 0 && pNew != 0 {
 21967  		*(*uintptr)(unsafe.Pointer(ppVTab)) = uintptr(0)
 21968  		spellfix1Uninit(tls, 0, pNew)
 21969  	} else {
 21970  		*(*uintptr)(unsafe.Pointer(ppVTab)) = pNew
 21971  	}
 21972  	return *(*int32)(unsafe.Pointer(bp + 56))
 21973  }
 21974  
 21975  func spellfix1Connect(tls *libc.TLS, db uintptr, pAux uintptr, argc int32, argv uintptr, ppVTab uintptr, pzErr uintptr) int32 {
 21976  	return spellfix1Init(tls, 0, db, pAux, argc, argv, ppVTab, pzErr)
 21977  }
 21978  
 21979  func spellfix1Create(tls *libc.TLS, db uintptr, pAux uintptr, argc int32, argv uintptr, ppVTab uintptr, pzErr uintptr) int32 {
 21980  	return spellfix1Init(tls, 1, db, pAux, argc, argv, ppVTab, pzErr)
 21981  }
 21982  
 21983  func spellfix1ResetCursor(tls *libc.TLS, pCur uintptr) {
 21984  	var i int32
 21985  	for i = 0; i < (*spellfix1_cursor)(unsafe.Pointer(pCur)).FnRow; i++ {
 21986  		sqlite3.Xsqlite3_free(tls, (*spellfix1_row)(unsafe.Pointer((*spellfix1_cursor)(unsafe.Pointer(pCur)).Fa+uintptr(i)*64)).FzWord)
 21987  	}
 21988  	(*spellfix1_cursor)(unsafe.Pointer(pCur)).FnRow = 0
 21989  	(*spellfix1_cursor)(unsafe.Pointer(pCur)).FiRow = 0
 21990  	(*spellfix1_cursor)(unsafe.Pointer(pCur)).FnSearch = 0
 21991  	if (*spellfix1_cursor)(unsafe.Pointer(pCur)).FpFullScan != 0 {
 21992  		sqlite3.Xsqlite3_finalize(tls, (*spellfix1_cursor)(unsafe.Pointer(pCur)).FpFullScan)
 21993  		(*spellfix1_cursor)(unsafe.Pointer(pCur)).FpFullScan = uintptr(0)
 21994  	}
 21995  }
 21996  
 21997  func spellfix1ResizeCursor(tls *libc.TLS, pCur uintptr, N int32) {
 21998  	var aNew uintptr
 21999  
 22000  	aNew = sqlite3.Xsqlite3_realloc64(tls, (*spellfix1_cursor)(unsafe.Pointer(pCur)).Fa, uint64(unsafe.Sizeof(spellfix1_row{}))*uint64(N))
 22001  	if aNew == uintptr(0) && N > 0 {
 22002  		spellfix1ResetCursor(tls, pCur)
 22003  		sqlite3.Xsqlite3_free(tls, (*spellfix1_cursor)(unsafe.Pointer(pCur)).Fa)
 22004  		(*spellfix1_cursor)(unsafe.Pointer(pCur)).FnAlloc = 0
 22005  		(*spellfix1_cursor)(unsafe.Pointer(pCur)).Fa = uintptr(0)
 22006  	} else {
 22007  		(*spellfix1_cursor)(unsafe.Pointer(pCur)).FnAlloc = N
 22008  		(*spellfix1_cursor)(unsafe.Pointer(pCur)).Fa = aNew
 22009  	}
 22010  }
 22011  
 22012  func spellfix1Close(tls *libc.TLS, cur uintptr) int32 {
 22013  	var pCur uintptr = cur
 22014  	spellfix1ResetCursor(tls, pCur)
 22015  	spellfix1ResizeCursor(tls, pCur, 0)
 22016  	sqlite3.Xsqlite3_free(tls, (*spellfix1_cursor)(unsafe.Pointer(pCur)).FzPattern)
 22017  	sqlite3.Xsqlite3_free(tls, pCur)
 22018  	return SQLITE_OK
 22019  }
 22020  
 22021  func spellfix1BestIndex(tls *libc.TLS, tab uintptr, pIdxInfo uintptr) int32 {
 22022  	var iPlan int32 = 0
 22023  	var iLangTerm int32 = -1
 22024  	var iTopTerm int32 = -1
 22025  	var iScopeTerm int32 = -1
 22026  	var iDistTerm int32 = -1
 22027  	var iRowidTerm int32 = -1
 22028  	var i int32
 22029  	var pConstraint uintptr
 22030  	pConstraint = (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint
 22031  	i = 0
 22032  __1:
 22033  	if !(i < (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnConstraint) {
 22034  		goto __3
 22035  	}
 22036  	{
 22037  		if int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fusable) == 0 {
 22038  			goto __2
 22039  		}
 22040  
 22041  		if iPlan&SPELLFIX_IDXNUM_MATCH == 0 &&
 22042  			(*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).FiColumn == SPELLFIX_COL_WORD &&
 22043  			int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_MATCH {
 22044  			iPlan = iPlan | SPELLFIX_IDXNUM_MATCH
 22045  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(i)*8)).FargvIndex = 1
 22046  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(i)*8)).Fomit = uint8(1)
 22047  		}
 22048  
 22049  		if iPlan&SPELLFIX_IDXNUM_LANGID == 0 &&
 22050  			(*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).FiColumn == SPELLFIX_COL_LANGID &&
 22051  			int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_EQ {
 22052  			iPlan = iPlan | SPELLFIX_IDXNUM_LANGID
 22053  			iLangTerm = i
 22054  		}
 22055  
 22056  		if iPlan&SPELLFIX_IDXNUM_TOP == 0 &&
 22057  			(*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).FiColumn == SPELLFIX_COL_TOP &&
 22058  			int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_EQ {
 22059  			iPlan = iPlan | SPELLFIX_IDXNUM_TOP
 22060  			iTopTerm = i
 22061  		}
 22062  
 22063  		if iPlan&SPELLFIX_IDXNUM_SCOPE == 0 &&
 22064  			(*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).FiColumn == SPELLFIX_COL_SCOPE &&
 22065  			int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_EQ {
 22066  			iPlan = iPlan | SPELLFIX_IDXNUM_SCOPE
 22067  			iScopeTerm = i
 22068  		}
 22069  
 22070  		if iPlan&(0x10|0x20) == 0 &&
 22071  			(*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).FiColumn == SPELLFIX_COL_DISTANCE &&
 22072  			(int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_LT ||
 22073  				int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_LE) {
 22074  			if int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_LT {
 22075  				iPlan = iPlan | SPELLFIX_IDXNUM_DISTLT
 22076  			} else {
 22077  				iPlan = iPlan | SPELLFIX_IDXNUM_DISTLE
 22078  			}
 22079  			iDistTerm = i
 22080  		}
 22081  
 22082  		if iPlan&SPELLFIX_IDXNUM_ROWID == 0 &&
 22083  			(*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).FiColumn < 0 &&
 22084  			int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_EQ {
 22085  			iPlan = iPlan | SPELLFIX_IDXNUM_ROWID
 22086  			iRowidTerm = i
 22087  		}
 22088  
 22089  	}
 22090  	goto __2
 22091  __2:
 22092  	i++
 22093  	pConstraint += 12
 22094  	goto __1
 22095  	goto __3
 22096  __3:
 22097  	;
 22098  	if iPlan&SPELLFIX_IDXNUM_MATCH != 0 {
 22099  		var idx int32 = 2
 22100  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxNum = iPlan
 22101  		if (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnOrderBy == 1 &&
 22102  			(*sqlite3_index_orderby)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaOrderBy)).FiColumn == SPELLFIX_COL_SCORE &&
 22103  			int32((*sqlite3_index_orderby)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaOrderBy)).Fdesc) == 0 {
 22104  			(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).ForderByConsumed = 1
 22105  		}
 22106  		if iPlan&SPELLFIX_IDXNUM_LANGID != 0 {
 22107  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(iLangTerm)*8)).FargvIndex = libc.PostIncInt32(&idx, 1)
 22108  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(iLangTerm)*8)).Fomit = uint8(1)
 22109  		}
 22110  		if iPlan&SPELLFIX_IDXNUM_TOP != 0 {
 22111  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(iTopTerm)*8)).FargvIndex = libc.PostIncInt32(&idx, 1)
 22112  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(iTopTerm)*8)).Fomit = uint8(1)
 22113  		}
 22114  		if iPlan&SPELLFIX_IDXNUM_SCOPE != 0 {
 22115  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(iScopeTerm)*8)).FargvIndex = libc.PostIncInt32(&idx, 1)
 22116  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(iScopeTerm)*8)).Fomit = uint8(1)
 22117  		}
 22118  		if iPlan&(0x10|0x20) != 0 {
 22119  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(iDistTerm)*8)).FargvIndex = libc.PostIncInt32(&idx, 1)
 22120  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(iDistTerm)*8)).Fomit = uint8(1)
 22121  		}
 22122  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = 1e5
 22123  	} else if iPlan&SPELLFIX_IDXNUM_ROWID != 0 {
 22124  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxNum = SPELLFIX_IDXNUM_ROWID
 22125  		(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(iRowidTerm)*8)).FargvIndex = 1
 22126  		(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(iRowidTerm)*8)).Fomit = uint8(1)
 22127  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = float64(5)
 22128  	} else {
 22129  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxNum = 0
 22130  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = 1e50
 22131  	}
 22132  	return SQLITE_OK
 22133  }
 22134  
 22135  func spellfix1Open(tls *libc.TLS, pVTab uintptr, ppCursor uintptr) int32 {
 22136  	var p uintptr = pVTab
 22137  	var pCur uintptr
 22138  	pCur = sqlite3.Xsqlite3_malloc64(tls, uint64(unsafe.Sizeof(spellfix1_cursor{})))
 22139  	if pCur == uintptr(0) {
 22140  		return SQLITE_NOMEM
 22141  	}
 22142  	libc.Xmemset(tls, pCur, 0, uint64(unsafe.Sizeof(spellfix1_cursor{})))
 22143  	(*spellfix1_cursor)(unsafe.Pointer(pCur)).FpVTab = p
 22144  	*(*uintptr)(unsafe.Pointer(ppCursor)) = pCur
 22145  	return SQLITE_OK
 22146  }
 22147  
 22148  func spellfix1Score(tls *libc.TLS, iDistance int32, iRank int32) int32 {
 22149  	var iLog2 int32
 22150  	iLog2 = 0
 22151  __1:
 22152  	if !(iRank > 0) {
 22153  		goto __3
 22154  	}
 22155  	{
 22156  	}
 22157  	goto __2
 22158  __2:
 22159  	iLog2++
 22160  	iRank >>= 1
 22161  	goto __1
 22162  	goto __3
 22163  __3:
 22164  	;
 22165  	return iDistance + 32 - iLog2
 22166  }
 22167  
 22168  func spellfix1RowCompare(tls *libc.TLS, A uintptr, B uintptr) int32 {
 22169  	var a uintptr = A
 22170  	var b uintptr = B
 22171  	return (*spellfix1_row)(unsafe.Pointer(a)).FiScore - (*spellfix1_row)(unsafe.Pointer(b)).FiScore
 22172  }
 22173  
 22174  type MatchQuery1 = struct {
 22175  	FpCur        uintptr
 22176  	FpStmt       uintptr
 22177  	FzHash       [32]uint8
 22178  	FzPattern    uintptr
 22179  	FnPattern    int32
 22180  	F__ccgo_pad1 [4]byte
 22181  	FpMatchStr3  uintptr
 22182  	FpConfig3    uintptr
 22183  	FpLang       uintptr
 22184  	FiLang       int32
 22185  	FiScope      int32
 22186  	FiMaxDist    int32
 22187  	Frc          int32
 22188  	FnRun        int32
 22189  	FazPrior     [1][32]uint8
 22190  	F__ccgo_pad2 [4]byte
 22191  }
 22192  
 22193  type MatchQuery = MatchQuery1
 22194  
 22195  func spellfix1RunQuery(tls *libc.TLS, p uintptr, zQuery uintptr, nQuery int32) {
 22196  	bp := tls.Alloc(76)
 22197  	defer tls.Free(76)
 22198  
 22199  	var zK1 uintptr
 22200  	var zWord uintptr
 22201  	var iDist int32
 22202  	var iRank int32
 22203  	var iScore int32
 22204  	var iWorst int32 = 0
 22205  	var idx int32
 22206  	var idxWorst int32 = -1
 22207  	var i int32
 22208  	var iScope int32 = (*MatchQuery)(unsafe.Pointer(p)).FiScope
 22209  	var pCur uintptr = (*MatchQuery)(unsafe.Pointer(p)).FpCur
 22210  	var pStmt uintptr = (*MatchQuery)(unsafe.Pointer(p)).FpStmt
 22211  
 22212  	var zClass uintptr
 22213  	var nClass int32
 22214  	var rc int32
 22215  
 22216  	if (*spellfix1_cursor)(unsafe.Pointer(pCur)).Fa == uintptr(0) || (*MatchQuery)(unsafe.Pointer(p)).Frc != 0 {
 22217  		return
 22218  	}
 22219  	zClass = phoneticHash(tls, zQuery, nQuery)
 22220  	if zClass == uintptr(0) {
 22221  		(*MatchQuery)(unsafe.Pointer(p)).Frc = SQLITE_NOMEM
 22222  		return
 22223  	}
 22224  	nClass = int32(libc.Xstrlen(tls, zClass))
 22225  	if nClass > SPELLFIX_MX_HASH-2 {
 22226  		nClass = SPELLFIX_MX_HASH - 2
 22227  		*(*uint8)(unsafe.Pointer(zClass + uintptr(nClass))) = uint8(0)
 22228  	}
 22229  	if nClass <= iScope {
 22230  		if nClass > 2 {
 22231  			iScope = nClass - 1
 22232  		} else {
 22233  			iScope = nClass
 22234  		}
 22235  	}
 22236  	libc.Xmemcpy(tls, bp+8, zClass, uint64(iScope))
 22237  	sqlite3.Xsqlite3_free(tls, zClass)
 22238  	*(*uint8)(unsafe.Pointer(bp + 8 + uintptr(iScope))) = uint8(0)
 22239  	libc.Xmemcpy(tls, bp+40, bp+8, uint64(iScope))
 22240  	*(*uint8)(unsafe.Pointer(bp + 40 + uintptr(iScope))) = uint8('Z')
 22241  	*(*uint8)(unsafe.Pointer(bp + 40 + uintptr(iScope+1))) = uint8(0)
 22242  
 22243  	libc.Xmemcpy(tls, p+108+uintptr(libc.PostIncInt32(&(*MatchQuery)(unsafe.Pointer(p)).FnRun, 1))*32, bp+8, uint64(iScope+1))
 22244  	if sqlite3.Xsqlite3_bind_text(tls, pStmt, 1, bp+8, -1, uintptr(0)) == SQLITE_NOMEM ||
 22245  		sqlite3.Xsqlite3_bind_text(tls, pStmt, 2, bp+40, -1, uintptr(0)) == SQLITE_NOMEM {
 22246  		(*MatchQuery)(unsafe.Pointer(p)).Frc = SQLITE_NOMEM
 22247  		return
 22248  	}
 22249  	for sqlite3.Xsqlite3_step(tls, pStmt) == SQLITE_ROW {
 22250  		*(*int32)(unsafe.Pointer(bp + 72)) = -1
 22251  		iRank = sqlite3.Xsqlite3_column_int(tls, pStmt, 2)
 22252  		if (*MatchQuery)(unsafe.Pointer(p)).FpMatchStr3 != 0 {
 22253  			var nWord int32 = sqlite3.Xsqlite3_column_bytes(tls, pStmt, 1)
 22254  			zWord = sqlite3.Xsqlite3_column_text(tls, pStmt, 1)
 22255  			iDist = editDist3Core(tls, (*MatchQuery)(unsafe.Pointer(p)).FpMatchStr3, zWord, nWord, (*MatchQuery)(unsafe.Pointer(p)).FpLang, bp+72)
 22256  		} else {
 22257  			zK1 = sqlite3.Xsqlite3_column_text(tls, pStmt, 3)
 22258  			if zK1 == uintptr(0) {
 22259  				continue
 22260  			}
 22261  			iDist = editdist1(tls, (*MatchQuery)(unsafe.Pointer(p)).FzPattern, zK1, uintptr(0))
 22262  		}
 22263  		if iDist < 0 {
 22264  			(*MatchQuery)(unsafe.Pointer(p)).Frc = SQLITE_NOMEM
 22265  			break
 22266  		}
 22267  		(*spellfix1_cursor)(unsafe.Pointer(pCur)).FnSearch++
 22268  
 22269  		if (*MatchQuery)(unsafe.Pointer(p)).FiMaxDist >= 0 {
 22270  			if iDist > (*MatchQuery)(unsafe.Pointer(p)).FiMaxDist {
 22271  				continue
 22272  			}
 22273  			if (*spellfix1_cursor)(unsafe.Pointer(pCur)).FnRow >= (*spellfix1_cursor)(unsafe.Pointer(pCur)).FnAlloc && (*spellfix1_cursor)(unsafe.Pointer(pCur)).FidxNum&SPELLFIX_IDXNUM_TOP == 0 {
 22274  				spellfix1ResizeCursor(tls, pCur, (*spellfix1_cursor)(unsafe.Pointer(pCur)).FnAlloc*2+10)
 22275  				if (*spellfix1_cursor)(unsafe.Pointer(pCur)).Fa == uintptr(0) {
 22276  					break
 22277  				}
 22278  			}
 22279  		}
 22280  
 22281  		iScore = spellfix1Score(tls, iDist, iRank)
 22282  		if (*spellfix1_cursor)(unsafe.Pointer(pCur)).FnRow < (*spellfix1_cursor)(unsafe.Pointer(pCur)).FnAlloc {
 22283  			idx = (*spellfix1_cursor)(unsafe.Pointer(pCur)).FnRow
 22284  		} else if iScore < iWorst {
 22285  			idx = idxWorst
 22286  			sqlite3.Xsqlite3_free(tls, (*spellfix1_row)(unsafe.Pointer((*spellfix1_cursor)(unsafe.Pointer(pCur)).Fa+uintptr(idx)*64)).FzWord)
 22287  		} else {
 22288  			continue
 22289  		}
 22290  
 22291  		(*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)))
 22292  		if (*spellfix1_row)(unsafe.Pointer((*spellfix1_cursor)(unsafe.Pointer(pCur)).Fa+uintptr(idx)*64)).FzWord == uintptr(0) {
 22293  			(*MatchQuery)(unsafe.Pointer(p)).Frc = SQLITE_NOMEM
 22294  			break
 22295  		}
 22296  		(*spellfix1_row)(unsafe.Pointer((*spellfix1_cursor)(unsafe.Pointer(pCur)).Fa + uintptr(idx)*64)).FiRowid = sqlite3.Xsqlite3_column_int64(tls, pStmt, 0)
 22297  		(*spellfix1_row)(unsafe.Pointer((*spellfix1_cursor)(unsafe.Pointer(pCur)).Fa + uintptr(idx)*64)).FiRank = iRank
 22298  		(*spellfix1_row)(unsafe.Pointer((*spellfix1_cursor)(unsafe.Pointer(pCur)).Fa + uintptr(idx)*64)).FiDistance = iDist
 22299  		(*spellfix1_row)(unsafe.Pointer((*spellfix1_cursor)(unsafe.Pointer(pCur)).Fa + uintptr(idx)*64)).FiScore = iScore
 22300  		(*spellfix1_row)(unsafe.Pointer((*spellfix1_cursor)(unsafe.Pointer(pCur)).Fa + uintptr(idx)*64)).FiMatchlen = *(*int32)(unsafe.Pointer(bp + 72))
 22301  		libc.Xmemcpy(tls, (*spellfix1_cursor)(unsafe.Pointer(pCur)).Fa+uintptr(idx)*64+32, bp+8, uint64(iScope+1))
 22302  		if (*spellfix1_cursor)(unsafe.Pointer(pCur)).FnRow < (*spellfix1_cursor)(unsafe.Pointer(pCur)).FnAlloc {
 22303  			(*spellfix1_cursor)(unsafe.Pointer(pCur)).FnRow++
 22304  		}
 22305  		if (*spellfix1_cursor)(unsafe.Pointer(pCur)).FnRow == (*spellfix1_cursor)(unsafe.Pointer(pCur)).FnAlloc {
 22306  			iWorst = (*spellfix1_row)(unsafe.Pointer((*spellfix1_cursor)(unsafe.Pointer(pCur)).Fa)).FiScore
 22307  			idxWorst = 0
 22308  			for i = 1; i < (*spellfix1_cursor)(unsafe.Pointer(pCur)).FnRow; i++ {
 22309  				iScore = (*spellfix1_row)(unsafe.Pointer((*spellfix1_cursor)(unsafe.Pointer(pCur)).Fa + uintptr(i)*64)).FiScore
 22310  				if iWorst < iScore {
 22311  					iWorst = iScore
 22312  					idxWorst = i
 22313  				}
 22314  			}
 22315  		}
 22316  	}
 22317  	rc = sqlite3.Xsqlite3_reset(tls, pStmt)
 22318  	if rc != 0 {
 22319  		(*MatchQuery)(unsafe.Pointer(p)).Frc = rc
 22320  	}
 22321  }
 22322  
 22323  func spellfix1FilterForMatch(tls *libc.TLS, pCur uintptr, argc int32, argv uintptr) int32 {
 22324  	bp := tls.Alloc(176)
 22325  	defer tls.Free(176)
 22326  
 22327  	var idxNum int32
 22328  	var zMatchThis uintptr
 22329  	var pMatchStr3 uintptr
 22330  	var zPattern uintptr
 22331  	var nPattern int32
 22332  	var iLimit int32
 22333  	var iScope int32
 22334  	var iLang int32
 22335  	var zSql uintptr
 22336  
 22337  	var rc int32
 22338  	var idx int32
 22339  	var p uintptr
 22340  
 22341  	idxNum = (*spellfix1_cursor)(unsafe.Pointer(pCur)).FidxNum
 22342  	pMatchStr3 = uintptr(0)
 22343  	iLimit = 20
 22344  	iScope = 3
 22345  	iLang = 0
 22346  	*(*uintptr)(unsafe.Pointer(bp + 168)) = uintptr(0)
 22347  	idx = 1
 22348  	p = (*spellfix1_cursor)(unsafe.Pointer(pCur)).FpVTab
 22349  
 22350  	if !((*spellfix1_vtab)(unsafe.Pointer(p)).FzCostTable != uintptr(0) && (*spellfix1_vtab)(unsafe.Pointer(p)).FpConfig3 == uintptr(0)) {
 22351  		goto __1
 22352  	}
 22353  	(*spellfix1_vtab)(unsafe.Pointer(p)).FpConfig3 = sqlite3.Xsqlite3_malloc64(tls, uint64(unsafe.Sizeof(EditDist3Config{})))
 22354  	if !((*spellfix1_vtab)(unsafe.Pointer(p)).FpConfig3 == uintptr(0)) {
 22355  		goto __2
 22356  	}
 22357  	return SQLITE_NOMEM
 22358  __2:
 22359  	;
 22360  	libc.Xmemset(tls, (*spellfix1_vtab)(unsafe.Pointer(p)).FpConfig3, 0, uint64(unsafe.Sizeof(EditDist3Config{})))
 22361  	rc = editDist3ConfigLoad(tls, (*spellfix1_vtab)(unsafe.Pointer(p)).FpConfig3, (*spellfix1_vtab)(unsafe.Pointer(p)).Fdb, (*spellfix1_vtab)(unsafe.Pointer(p)).FzCostTable)
 22362  	if !(rc != 0) {
 22363  		goto __3
 22364  	}
 22365  	return rc
 22366  __3:
 22367  	;
 22368  __1:
 22369  	;
 22370  	libc.Xmemset(tls, bp+24, 0, uint64(unsafe.Sizeof(MatchQuery{})))
 22371  	(*MatchQuery)(unsafe.Pointer(bp + 24)).FiScope = 3
 22372  	(*MatchQuery)(unsafe.Pointer(bp + 24)).FiMaxDist = -1
 22373  
 22374  	if !(idxNum&2 != 0) {
 22375  		goto __4
 22376  	}
 22377  	iLang = sqlite3.Xsqlite3_value_int(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(libc.PostIncInt32(&idx, 1))*8)))
 22378  __4:
 22379  	;
 22380  	if !(idxNum&4 != 0) {
 22381  		goto __5
 22382  	}
 22383  	iLimit = sqlite3.Xsqlite3_value_int(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(libc.PostIncInt32(&idx, 1))*8)))
 22384  	if !(iLimit < 1) {
 22385  		goto __6
 22386  	}
 22387  	iLimit = 1
 22388  __6:
 22389  	;
 22390  __5:
 22391  	;
 22392  	if !(idxNum&8 != 0) {
 22393  		goto __7
 22394  	}
 22395  	(*MatchQuery)(unsafe.Pointer(bp + 24)).FiScope = sqlite3.Xsqlite3_value_int(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(libc.PostIncInt32(&idx, 1))*8)))
 22396  	if !((*MatchQuery)(unsafe.Pointer(bp+24)).FiScope < 1) {
 22397  		goto __8
 22398  	}
 22399  	(*MatchQuery)(unsafe.Pointer(bp + 24)).FiScope = 1
 22400  __8:
 22401  	;
 22402  	if !((*MatchQuery)(unsafe.Pointer(bp+24)).FiScope > SPELLFIX_MX_HASH-2) {
 22403  		goto __9
 22404  	}
 22405  	(*MatchQuery)(unsafe.Pointer(bp + 24)).FiScope = SPELLFIX_MX_HASH - 2
 22406  __9:
 22407  	;
 22408  __7:
 22409  	;
 22410  	if !(idxNum&(16|32) != 0) {
 22411  		goto __10
 22412  	}
 22413  	(*MatchQuery)(unsafe.Pointer(bp + 24)).FiMaxDist = sqlite3.Xsqlite3_value_int(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(libc.PostIncInt32(&idx, 1))*8)))
 22414  	if !(idxNum&16 != 0) {
 22415  		goto __11
 22416  	}
 22417  	(*MatchQuery)(unsafe.Pointer(bp+24)).FiMaxDist--
 22418  __11:
 22419  	;
 22420  	if !((*MatchQuery)(unsafe.Pointer(bp+24)).FiMaxDist < 0) {
 22421  		goto __12
 22422  	}
 22423  	(*MatchQuery)(unsafe.Pointer(bp + 24)).FiMaxDist = 0
 22424  __12:
 22425  	;
 22426  __10:
 22427  	;
 22428  	spellfix1ResetCursor(tls, pCur)
 22429  	spellfix1ResizeCursor(tls, pCur, iLimit)
 22430  	zMatchThis = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 22431  	if !(zMatchThis == uintptr(0)) {
 22432  		goto __13
 22433  	}
 22434  	return SQLITE_OK
 22435  __13:
 22436  	;
 22437  	if !((*spellfix1_vtab)(unsafe.Pointer(p)).FpConfig3 != 0) {
 22438  		goto __14
 22439  	}
 22440  	(*MatchQuery)(unsafe.Pointer(bp + 24)).FpLang = editDist3FindLang(tls, (*spellfix1_vtab)(unsafe.Pointer(p)).FpConfig3, iLang)
 22441  	pMatchStr3 = editDist3FromStringNew(tls, (*MatchQuery)(unsafe.Pointer(bp+24)).FpLang, zMatchThis, -1)
 22442  	if !(pMatchStr3 == uintptr(0)) {
 22443  		goto __16
 22444  	}
 22445  	(*MatchQuery)(unsafe.Pointer(bp + 24)).Frc = SQLITE_NOMEM
 22446  	goto filter_exit
 22447  __16:
 22448  	;
 22449  	goto __15
 22450  __14:
 22451  	(*MatchQuery)(unsafe.Pointer(bp + 24)).FpLang = uintptr(0)
 22452  __15:
 22453  	;
 22454  	zPattern = transliterate(tls, zMatchThis, sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(argv))))
 22455  	sqlite3.Xsqlite3_free(tls, (*spellfix1_cursor)(unsafe.Pointer(pCur)).FzPattern)
 22456  	(*spellfix1_cursor)(unsafe.Pointer(pCur)).FzPattern = zPattern
 22457  	if !(zPattern == uintptr(0)) {
 22458  		goto __17
 22459  	}
 22460  	(*MatchQuery)(unsafe.Pointer(bp + 24)).Frc = SQLITE_NOMEM
 22461  	goto filter_exit
 22462  __17:
 22463  	;
 22464  	nPattern = int32(libc.Xstrlen(tls, zPattern))
 22465  	if !(int32(*(*uint8)(unsafe.Pointer(zPattern + uintptr(nPattern-1)))) == '*') {
 22466  		goto __18
 22467  	}
 22468  	nPattern--
 22469  __18:
 22470  	;
 22471  	zSql = sqlite3.Xsqlite3_mprintf(tls,
 22472  		ts+7650,
 22473  		libc.VaList(bp, (*spellfix1_vtab)(unsafe.Pointer(p)).FzDbName, (*spellfix1_vtab)(unsafe.Pointer(p)).FzTableName, iLang))
 22474  	if !(zSql == uintptr(0)) {
 22475  		goto __19
 22476  	}
 22477  	(*MatchQuery)(unsafe.Pointer(bp + 24)).Frc = SQLITE_NOMEM
 22478  	*(*uintptr)(unsafe.Pointer(bp + 168)) = uintptr(0)
 22479  	goto filter_exit
 22480  __19:
 22481  	;
 22482  	rc = sqlite3.Xsqlite3_prepare_v2(tls, (*spellfix1_vtab)(unsafe.Pointer(p)).Fdb, zSql, -1, bp+168, uintptr(0))
 22483  	sqlite3.Xsqlite3_free(tls, zSql)
 22484  	(*spellfix1_cursor)(unsafe.Pointer(pCur)).FiLang = iLang
 22485  	(*MatchQuery)(unsafe.Pointer(bp + 24)).FpCur = pCur
 22486  	(*MatchQuery)(unsafe.Pointer(bp + 24)).FpStmt = *(*uintptr)(unsafe.Pointer(bp + 168))
 22487  	(*MatchQuery)(unsafe.Pointer(bp + 24)).FzPattern = zPattern
 22488  	(*MatchQuery)(unsafe.Pointer(bp + 24)).FnPattern = nPattern
 22489  	(*MatchQuery)(unsafe.Pointer(bp + 24)).FpMatchStr3 = pMatchStr3
 22490  	(*MatchQuery)(unsafe.Pointer(bp + 24)).FiLang = iLang
 22491  	(*MatchQuery)(unsafe.Pointer(bp + 24)).Frc = rc
 22492  	(*MatchQuery)(unsafe.Pointer(bp + 24)).FpConfig3 = (*spellfix1_vtab)(unsafe.Pointer(p)).FpConfig3
 22493  	if !((*MatchQuery)(unsafe.Pointer(bp+24)).Frc == SQLITE_OK) {
 22494  		goto __20
 22495  	}
 22496  	spellfix1RunQuery(tls, bp+24, zPattern, nPattern)
 22497  __20:
 22498  	;
 22499  	if !((*spellfix1_cursor)(unsafe.Pointer(pCur)).Fa != 0) {
 22500  		goto __21
 22501  	}
 22502  	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 {
 22503  		f func(*libc.TLS, uintptr, uintptr) int32
 22504  	}{spellfix1RowCompare})))
 22505  	(*spellfix1_cursor)(unsafe.Pointer(pCur)).FiTop = iLimit
 22506  	(*spellfix1_cursor)(unsafe.Pointer(pCur)).FiScope = iScope
 22507  	goto __22
 22508  __21:
 22509  	(*MatchQuery)(unsafe.Pointer(bp + 24)).Frc = SQLITE_NOMEM
 22510  __22:
 22511  	;
 22512  filter_exit:
 22513  	sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 168)))
 22514  	editDist3FromStringDelete(tls, pMatchStr3)
 22515  	return (*MatchQuery)(unsafe.Pointer(bp + 24)).Frc
 22516  }
 22517  
 22518  func spellfix1FilterForFullScan(tls *libc.TLS, pCur uintptr, argc int32, argv uintptr) int32 {
 22519  	bp := tls.Alloc(24)
 22520  	defer tls.Free(24)
 22521  
 22522  	var rc int32 = SQLITE_OK
 22523  	var idxNum int32 = (*spellfix1_cursor)(unsafe.Pointer(pCur)).FidxNum
 22524  	var zSql uintptr
 22525  	var pVTab uintptr = (*spellfix1_cursor)(unsafe.Pointer(pCur)).FpVTab
 22526  	spellfix1ResetCursor(tls, pCur)
 22527  
 22528  	zSql = sqlite3.Xsqlite3_mprintf(tls,
 22529  		ts+7750,
 22530  		libc.VaList(bp, (*spellfix1_vtab)(unsafe.Pointer(pVTab)).FzDbName, (*spellfix1_vtab)(unsafe.Pointer(pVTab)).FzTableName,
 22531  			func() uintptr {
 22532  				if idxNum&64 != 0 {
 22533  					return ts + 7809
 22534  				}
 22535  				return ts + 584
 22536  			}()))
 22537  	if zSql == uintptr(0) {
 22538  		return SQLITE_NOMEM
 22539  	}
 22540  	rc = sqlite3.Xsqlite3_prepare_v2(tls, (*spellfix1_vtab)(unsafe.Pointer(pVTab)).Fdb, zSql, -1, pCur+56, uintptr(0))
 22541  	sqlite3.Xsqlite3_free(tls, zSql)
 22542  	if rc == SQLITE_OK && idxNum&64 != 0 {
 22543  		rc = sqlite3.Xsqlite3_bind_value(tls, (*spellfix1_cursor)(unsafe.Pointer(pCur)).FpFullScan, 1, *(*uintptr)(unsafe.Pointer(argv)))
 22544  	}
 22545  	(*spellfix1_cursor)(unsafe.Pointer(pCur)).FnRow = libc.AssignPtrInt32(pCur+36, 0)
 22546  	if rc == SQLITE_OK {
 22547  		rc = sqlite3.Xsqlite3_step(tls, (*spellfix1_cursor)(unsafe.Pointer(pCur)).FpFullScan)
 22548  		if rc == SQLITE_ROW {
 22549  			(*spellfix1_cursor)(unsafe.Pointer(pCur)).FiRow = -1
 22550  			rc = SQLITE_OK
 22551  		}
 22552  		if rc == SQLITE_DONE {
 22553  			rc = SQLITE_OK
 22554  		}
 22555  	} else {
 22556  		(*spellfix1_cursor)(unsafe.Pointer(pCur)).FiRow = 0
 22557  	}
 22558  	return rc
 22559  }
 22560  
 22561  func spellfix1Filter(tls *libc.TLS, cur uintptr, idxNum int32, idxStr uintptr, argc int32, argv uintptr) int32 {
 22562  	var pCur uintptr = cur
 22563  	var rc int32
 22564  	(*spellfix1_cursor)(unsafe.Pointer(pCur)).FidxNum = idxNum
 22565  	if idxNum&1 != 0 {
 22566  		rc = spellfix1FilterForMatch(tls, pCur, argc, argv)
 22567  	} else {
 22568  		rc = spellfix1FilterForFullScan(tls, pCur, argc, argv)
 22569  	}
 22570  	return rc
 22571  }
 22572  
 22573  func spellfix1Next(tls *libc.TLS, cur uintptr) int32 {
 22574  	var pCur uintptr = cur
 22575  	var rc int32 = SQLITE_OK
 22576  	if (*spellfix1_cursor)(unsafe.Pointer(pCur)).FiRow < (*spellfix1_cursor)(unsafe.Pointer(pCur)).FnRow {
 22577  		if (*spellfix1_cursor)(unsafe.Pointer(pCur)).FpFullScan != 0 {
 22578  			rc = sqlite3.Xsqlite3_step(tls, (*spellfix1_cursor)(unsafe.Pointer(pCur)).FpFullScan)
 22579  			if rc != SQLITE_ROW {
 22580  				(*spellfix1_cursor)(unsafe.Pointer(pCur)).FiRow = (*spellfix1_cursor)(unsafe.Pointer(pCur)).FnRow
 22581  			}
 22582  			if rc == SQLITE_ROW || rc == SQLITE_DONE {
 22583  				rc = SQLITE_OK
 22584  			}
 22585  		} else {
 22586  			(*spellfix1_cursor)(unsafe.Pointer(pCur)).FiRow++
 22587  		}
 22588  	}
 22589  	return rc
 22590  }
 22591  
 22592  func spellfix1Eof(tls *libc.TLS, cur uintptr) int32 {
 22593  	var pCur uintptr = cur
 22594  	return libc.Bool32((*spellfix1_cursor)(unsafe.Pointer(pCur)).FiRow >= (*spellfix1_cursor)(unsafe.Pointer(pCur)).FnRow)
 22595  }
 22596  
 22597  func spellfix1Column(tls *libc.TLS, cur uintptr, ctx uintptr, i int32) int32 {
 22598  	bp := tls.Alloc(4)
 22599  	defer tls.Free(4)
 22600  
 22601  	var pCur uintptr = cur
 22602  	if (*spellfix1_cursor)(unsafe.Pointer(pCur)).FpFullScan != 0 {
 22603  		if i <= SPELLFIX_COL_LANGID {
 22604  			sqlite3.Xsqlite3_result_value(tls, ctx, sqlite3.Xsqlite3_column_value(tls, (*spellfix1_cursor)(unsafe.Pointer(pCur)).FpFullScan, i))
 22605  		} else {
 22606  			sqlite3.Xsqlite3_result_null(tls, ctx)
 22607  		}
 22608  		return SQLITE_OK
 22609  	}
 22610  	switch i {
 22611  	case SPELLFIX_COL_WORD:
 22612  		{
 22613  			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))
 22614  			break
 22615  
 22616  		}
 22617  	case SPELLFIX_COL_RANK:
 22618  		{
 22619  			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)
 22620  			break
 22621  
 22622  		}
 22623  	case SPELLFIX_COL_DISTANCE:
 22624  		{
 22625  			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)
 22626  			break
 22627  
 22628  		}
 22629  	case SPELLFIX_COL_LANGID:
 22630  		{
 22631  			sqlite3.Xsqlite3_result_int(tls, ctx, (*spellfix1_cursor)(unsafe.Pointer(pCur)).FiLang)
 22632  			break
 22633  
 22634  		}
 22635  	case SPELLFIX_COL_SCORE:
 22636  		{
 22637  			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)
 22638  			break
 22639  
 22640  		}
 22641  	case SPELLFIX_COL_MATCHLEN:
 22642  		{
 22643  			*(*int32)(unsafe.Pointer(bp)) = (*spellfix1_row)(unsafe.Pointer((*spellfix1_cursor)(unsafe.Pointer(pCur)).Fa + uintptr((*spellfix1_cursor)(unsafe.Pointer(pCur)).FiRow)*64)).FiMatchlen
 22644  			if *(*int32)(unsafe.Pointer(bp)) < 0 {
 22645  				var nPattern int32 = int32(libc.Xstrlen(tls, (*spellfix1_cursor)(unsafe.Pointer(pCur)).FzPattern))
 22646  				var zWord uintptr = (*spellfix1_row)(unsafe.Pointer((*spellfix1_cursor)(unsafe.Pointer(pCur)).Fa + uintptr((*spellfix1_cursor)(unsafe.Pointer(pCur)).FiRow)*64)).FzWord
 22647  				var nWord int32 = int32(libc.Xstrlen(tls, zWord))
 22648  
 22649  				if nPattern > 0 && int32(*(*uint8)(unsafe.Pointer((*spellfix1_cursor)(unsafe.Pointer(pCur)).FzPattern + uintptr(nPattern-1)))) == '*' {
 22650  					var zTranslit uintptr
 22651  					var res int32
 22652  					zTranslit = transliterate(tls, zWord, nWord)
 22653  					if !(zTranslit != 0) {
 22654  						return SQLITE_NOMEM
 22655  					}
 22656  					res = editdist1(tls, (*spellfix1_cursor)(unsafe.Pointer(pCur)).FzPattern, zTranslit, bp)
 22657  					sqlite3.Xsqlite3_free(tls, zTranslit)
 22658  					if res < 0 {
 22659  						return SQLITE_NOMEM
 22660  					}
 22661  					*(*int32)(unsafe.Pointer(bp)) = translen_to_charlen(tls, zWord, nWord, *(*int32)(unsafe.Pointer(bp)))
 22662  				} else {
 22663  					*(*int32)(unsafe.Pointer(bp)) = utf8Charlen(tls, zWord, nWord)
 22664  				}
 22665  			}
 22666  
 22667  			sqlite3.Xsqlite3_result_int(tls, ctx, *(*int32)(unsafe.Pointer(bp)))
 22668  			break
 22669  
 22670  		}
 22671  	case SPELLFIX_COL_PHONEHASH:
 22672  		{
 22673  			sqlite3.Xsqlite3_result_text(tls, ctx, (*spellfix1_cursor)(unsafe.Pointer(pCur)).Fa+uintptr((*spellfix1_cursor)(unsafe.Pointer(pCur)).FiRow)*64+32, -1, uintptr(0))
 22674  			break
 22675  
 22676  		}
 22677  	case SPELLFIX_COL_TOP:
 22678  		{
 22679  			sqlite3.Xsqlite3_result_int(tls, ctx, (*spellfix1_cursor)(unsafe.Pointer(pCur)).FiTop)
 22680  			break
 22681  
 22682  		}
 22683  	case SPELLFIX_COL_SCOPE:
 22684  		{
 22685  			sqlite3.Xsqlite3_result_int(tls, ctx, (*spellfix1_cursor)(unsafe.Pointer(pCur)).FiScope)
 22686  			break
 22687  
 22688  		}
 22689  	case SPELLFIX_COL_SRCHCNT:
 22690  		{
 22691  			sqlite3.Xsqlite3_result_int(tls, ctx, (*spellfix1_cursor)(unsafe.Pointer(pCur)).FnSearch)
 22692  			break
 22693  
 22694  		}
 22695  	default:
 22696  		{
 22697  			sqlite3.Xsqlite3_result_null(tls, ctx)
 22698  			break
 22699  
 22700  		}
 22701  	}
 22702  	return SQLITE_OK
 22703  }
 22704  
 22705  func spellfix1Rowid(tls *libc.TLS, cur uintptr, pRowid uintptr) int32 {
 22706  	var pCur uintptr = cur
 22707  	if (*spellfix1_cursor)(unsafe.Pointer(pCur)).FpFullScan != 0 {
 22708  		*(*sqlite_int64)(unsafe.Pointer(pRowid)) = sqlite3.Xsqlite3_column_int64(tls, (*spellfix1_cursor)(unsafe.Pointer(pCur)).FpFullScan, 4)
 22709  	} else {
 22710  		*(*sqlite_int64)(unsafe.Pointer(pRowid)) = (*spellfix1_row)(unsafe.Pointer((*spellfix1_cursor)(unsafe.Pointer(pCur)).Fa + uintptr((*spellfix1_cursor)(unsafe.Pointer(pCur)).FiRow)*64)).FiRowid
 22711  	}
 22712  	return SQLITE_OK
 22713  }
 22714  
 22715  func spellfix1GetConflict(tls *libc.TLS, db uintptr) uintptr {
 22716  	var eConflict int32 = sqlite3.Xsqlite3_vtab_on_conflict(tls, db)
 22717  
 22718  	return azConflict[eConflict-1]
 22719  }
 22720  
 22721  var azConflict = [5]uintptr{
 22722  	ts + 7824, ts + 7833, ts + 7840, ts + 7840, ts + 7846,
 22723  }
 22724  
 22725  func spellfix1Update(tls *libc.TLS, pVTab uintptr, argc int32, argv uintptr, pRowid uintptr) int32 {
 22726  	bp := tls.Alloc(284)
 22727  	defer tls.Free(284)
 22728  
 22729  	*(*int32)(unsafe.Pointer(bp + 280)) = SQLITE_OK
 22730  	var rowid sqlite3_int64
 22731  	var newRowid sqlite3_int64
 22732  	var p uintptr = pVTab
 22733  	var db uintptr = (*spellfix1_vtab)(unsafe.Pointer(p)).Fdb
 22734  
 22735  	if argc == 1 {
 22736  		rowid = libc.AssignPtrInt64(pRowid, sqlite3.Xsqlite3_value_int64(tls, *(*uintptr)(unsafe.Pointer(argv))))
 22737  		spellfix1DbExec(tls, bp+280, db,
 22738  			ts+7854,
 22739  			libc.VaList(bp, (*spellfix1_vtab)(unsafe.Pointer(p)).FzDbName, (*spellfix1_vtab)(unsafe.Pointer(p)).FzTableName, rowid))
 22740  	} else {
 22741  		var zWord uintptr = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + 2*8)))
 22742  		var nWord int32 = sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(argv + 2*8)))
 22743  		var iLang int32 = sqlite3.Xsqlite3_value_int(tls, *(*uintptr)(unsafe.Pointer(argv + 5*8)))
 22744  		var iRank int32 = sqlite3.Xsqlite3_value_int(tls, *(*uintptr)(unsafe.Pointer(argv + 3*8)))
 22745  		var zSoundslike uintptr = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + 12*8)))
 22746  		var nSoundslike int32 = sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(argv + 12*8)))
 22747  		var zK1 uintptr
 22748  		var zK2 uintptr
 22749  		var i int32
 22750  		var c uint8
 22751  		var zConflict uintptr = spellfix1GetConflict(tls, db)
 22752  
 22753  		if zWord == uintptr(0) {
 22754  			var zCmd uintptr = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + 13*8)))
 22755  			if zCmd == uintptr(0) {
 22756  				(*sqlite3_vtab)(unsafe.Pointer(pVTab)).FzErrMsg = sqlite3.Xsqlite3_mprintf(tls, ts+7897,
 22757  					libc.VaList(bp+24, (*spellfix1_vtab)(unsafe.Pointer(p)).FzTableName))
 22758  				return SQLITE_CONSTRAINT | int32(5)<<8
 22759  			}
 22760  			if libc.Xstrcmp(tls, zCmd, ts+7933) == 0 {
 22761  				editDist3ConfigDelete(tls, (*spellfix1_vtab)(unsafe.Pointer(p)).FpConfig3)
 22762  				(*spellfix1_vtab)(unsafe.Pointer(p)).FpConfig3 = uintptr(0)
 22763  				return SQLITE_OK
 22764  			}
 22765  			if libc.Xstrncmp(tls, zCmd, ts+7599, uint64(16)) == 0 {
 22766  				editDist3ConfigDelete(tls, (*spellfix1_vtab)(unsafe.Pointer(p)).FpConfig3)
 22767  				(*spellfix1_vtab)(unsafe.Pointer(p)).FpConfig3 = uintptr(0)
 22768  				sqlite3.Xsqlite3_free(tls, (*spellfix1_vtab)(unsafe.Pointer(p)).FzCostTable)
 22769  				(*spellfix1_vtab)(unsafe.Pointer(p)).FzCostTable = spellfix1Dequote(tls, zCmd+uintptr(16))
 22770  				if (*spellfix1_vtab)(unsafe.Pointer(p)).FzCostTable == uintptr(0) {
 22771  					return SQLITE_NOMEM
 22772  				}
 22773  				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 {
 22774  					sqlite3.Xsqlite3_free(tls, (*spellfix1_vtab)(unsafe.Pointer(p)).FzCostTable)
 22775  					(*spellfix1_vtab)(unsafe.Pointer(p)).FzCostTable = uintptr(0)
 22776  				}
 22777  				return SQLITE_OK
 22778  			}
 22779  			(*sqlite3_vtab)(unsafe.Pointer(pVTab)).FzErrMsg = sqlite3.Xsqlite3_mprintf(tls, ts+7944,
 22780  				libc.VaList(bp+32, (*spellfix1_vtab)(unsafe.Pointer(p)).FzTableName, zCmd))
 22781  			return SQLITE_ERROR
 22782  		}
 22783  		if iRank < 1 {
 22784  			iRank = 1
 22785  		}
 22786  		if zSoundslike != 0 {
 22787  			zK1 = transliterate(tls, zSoundslike, nSoundslike)
 22788  		} else {
 22789  			zK1 = transliterate(tls, zWord, nWord)
 22790  		}
 22791  		if zK1 == uintptr(0) {
 22792  			return SQLITE_NOMEM
 22793  		}
 22794  		for i = 0; int32(libc.AssignUint8(&c, *(*uint8)(unsafe.Pointer(zK1 + uintptr(i))))) != 0; i++ {
 22795  			if int32(c) >= 'A' && int32(c) <= 'Z' {
 22796  				*(*uint8)(unsafe.Pointer(zK1 + uintptr(i))) += uint8('a' - 'A')
 22797  			}
 22798  		}
 22799  		zK2 = phoneticHash(tls, zK1, i)
 22800  		if zK2 == uintptr(0) {
 22801  			sqlite3.Xsqlite3_free(tls, zK1)
 22802  			return SQLITE_NOMEM
 22803  		}
 22804  		if sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(argv))) == SQLITE_NULL {
 22805  			if sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8))) == SQLITE_NULL {
 22806  				spellfix1DbExec(tls, bp+280, db,
 22807  					ts+7979,
 22808  					libc.VaList(bp+48, (*spellfix1_vtab)(unsafe.Pointer(p)).FzDbName, (*spellfix1_vtab)(unsafe.Pointer(p)).FzTableName,
 22809  						iRank, iLang, zWord, zK1, zWord, zK2))
 22810  			} else {
 22811  				newRowid = sqlite3.Xsqlite3_value_int64(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 22812  				spellfix1DbExec(tls, bp+280, db,
 22813  					ts+8065,
 22814  					libc.VaList(bp+112, zConflict, (*spellfix1_vtab)(unsafe.Pointer(p)).FzDbName, (*spellfix1_vtab)(unsafe.Pointer(p)).FzTableName,
 22815  						newRowid, iRank, iLang, zWord, zK1, zWord, zK2))
 22816  			}
 22817  			*(*sqlite_int64)(unsafe.Pointer(pRowid)) = sqlite3.Xsqlite3_last_insert_rowid(tls, db)
 22818  		} else {
 22819  			rowid = sqlite3.Xsqlite3_value_int64(tls, *(*uintptr)(unsafe.Pointer(argv)))
 22820  			newRowid = libc.AssignPtrInt64(pRowid, sqlite3.Xsqlite3_value_int64(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8))))
 22821  			spellfix1DbExec(tls, bp+280, db,
 22822  				ts+8165,
 22823  				libc.VaList(bp+192, zConflict, (*spellfix1_vtab)(unsafe.Pointer(p)).FzDbName, (*spellfix1_vtab)(unsafe.Pointer(p)).FzTableName, newRowid, iRank, iLang,
 22824  					zWord, zK1, zWord, zK2, rowid))
 22825  		}
 22826  		sqlite3.Xsqlite3_free(tls, zK1)
 22827  		sqlite3.Xsqlite3_free(tls, zK2)
 22828  	}
 22829  	return *(*int32)(unsafe.Pointer(bp + 280))
 22830  }
 22831  
 22832  func spellfix1Rename(tls *libc.TLS, pVTab uintptr, zNew uintptr) int32 {
 22833  	bp := tls.Alloc(36)
 22834  	defer tls.Free(36)
 22835  
 22836  	var p uintptr = pVTab
 22837  	var db uintptr = (*spellfix1_vtab)(unsafe.Pointer(p)).Fdb
 22838  	*(*int32)(unsafe.Pointer(bp + 32)) = SQLITE_OK
 22839  	var zNewName uintptr = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp, zNew))
 22840  	if zNewName == uintptr(0) {
 22841  		return SQLITE_NOMEM
 22842  	}
 22843  	spellfix1DbExec(tls, bp+32, db,
 22844  		ts+8274,
 22845  		libc.VaList(bp+8, (*spellfix1_vtab)(unsafe.Pointer(p)).FzDbName, (*spellfix1_vtab)(unsafe.Pointer(p)).FzTableName, zNewName))
 22846  	if *(*int32)(unsafe.Pointer(bp + 32)) == SQLITE_OK {
 22847  		sqlite3.Xsqlite3_free(tls, (*spellfix1_vtab)(unsafe.Pointer(p)).FzTableName)
 22848  		(*spellfix1_vtab)(unsafe.Pointer(p)).FzTableName = zNewName
 22849  	} else {
 22850  		sqlite3.Xsqlite3_free(tls, zNewName)
 22851  	}
 22852  	return *(*int32)(unsafe.Pointer(bp + 32))
 22853  }
 22854  
 22855  var spellfix1Module = sqlite3_module{
 22856  	FxCreate:     0,
 22857  	FxConnect:    0,
 22858  	FxBestIndex:  0,
 22859  	FxDisconnect: 0,
 22860  	FxDestroy:    0,
 22861  	FxOpen:       0,
 22862  	FxClose:      0,
 22863  	FxFilter:     0,
 22864  	FxNext:       0,
 22865  	FxEof:        0,
 22866  	FxColumn:     0,
 22867  	FxRowid:      0,
 22868  	FxUpdate:     0,
 22869  	FxRename:     0,
 22870  }
 22871  
 22872  func spellfix1Register(tls *libc.TLS, db uintptr) int32 {
 22873  	var rc int32 = SQLITE_OK
 22874  	var i int32
 22875  	rc = sqlite3.Xsqlite3_create_function(tls, db, ts+8323, 1,
 22876  		SQLITE_UTF8|SQLITE_DETERMINISTIC, uintptr(0),
 22877  		*(*uintptr)(unsafe.Pointer(&struct {
 22878  			f func(*libc.TLS, uintptr, int32, uintptr)
 22879  		}{transliterateSqlFunc})), uintptr(0), uintptr(0))
 22880  	if rc == SQLITE_OK {
 22881  		rc = sqlite3.Xsqlite3_create_function(tls, db, ts+8342, 2,
 22882  			SQLITE_UTF8|SQLITE_DETERMINISTIC, uintptr(0),
 22883  			*(*uintptr)(unsafe.Pointer(&struct {
 22884  				f func(*libc.TLS, uintptr, int32, uintptr)
 22885  			}{editdistSqlFunc})), uintptr(0), uintptr(0))
 22886  	}
 22887  	if rc == SQLITE_OK {
 22888  		rc = sqlite3.Xsqlite3_create_function(tls, db, ts+8361, 1,
 22889  			SQLITE_UTF8|SQLITE_DETERMINISTIC, uintptr(0),
 22890  			*(*uintptr)(unsafe.Pointer(&struct {
 22891  				f func(*libc.TLS, uintptr, int32, uintptr)
 22892  			}{phoneticHashSqlFunc})), uintptr(0), uintptr(0))
 22893  	}
 22894  	if rc == SQLITE_OK {
 22895  		rc = sqlite3.Xsqlite3_create_function(tls, db, ts+8381, 1,
 22896  			SQLITE_UTF8|SQLITE_DETERMINISTIC, uintptr(0),
 22897  			*(*uintptr)(unsafe.Pointer(&struct {
 22898  				f func(*libc.TLS, uintptr, int32, uintptr)
 22899  			}{scriptCodeSqlFunc})), uintptr(0), uintptr(0))
 22900  	}
 22901  	if rc == SQLITE_OK {
 22902  		rc = sqlite3.Xsqlite3_create_module(tls, db, ts+8402, uintptr(unsafe.Pointer(&spellfix1Module)), uintptr(0))
 22903  	}
 22904  	if rc == SQLITE_OK {
 22905  		rc = editDist3Install(tls, db)
 22906  	}
 22907  
 22908  	for i = 0; uint64(i) < uint64(unsafe.Sizeof(translit))/uint64(unsafe.Sizeof(Transliteration{}))-uint64(1); i++ {
 22909  	}
 22910  
 22911  	return rc
 22912  }
 22913  
 22914  func sqlite3_spellfix_init(tls *libc.TLS, db uintptr, pzErrMsg uintptr, pApi uintptr) int32 {
 22915  	_ = pApi
 22916  
 22917  	return spellfix1Register(tls, db)
 22918  	return SQLITE_OK
 22919  }
 22920  
 22921  var totype_one int32 = 1
 22922  
 22923  func totypeIsspace(tls *libc.TLS, c uint8) int32 {
 22924  	return libc.Bool32(int32(c) == ' ' || int32(c) == '\t' || int32(c) == '\n' || int32(c) == '\v' || int32(c) == '\f' || int32(c) == '\r')
 22925  }
 22926  
 22927  func totypeIsdigit(tls *libc.TLS, c uint8) int32 {
 22928  	return libc.Bool32(int32(c) >= '0' && int32(c) <= '9')
 22929  }
 22930  
 22931  func totypeCompare2pow63(tls *libc.TLS, zNum uintptr) int32 {
 22932  	var c int32 = 0
 22933  	var i int32
 22934  
 22935  	var pow63 uintptr = ts + 8412
 22936  	for i = 0; c == 0 && i < 18; i++ {
 22937  		c = (int32(*(*uint8)(unsafe.Pointer(zNum + uintptr(i)))) - int32(*(*uint8)(unsafe.Pointer(pow63 + uintptr(i))))) * 10
 22938  	}
 22939  	if c == 0 {
 22940  		c = int32(*(*uint8)(unsafe.Pointer(zNum + 18))) - '8'
 22941  	}
 22942  	return c
 22943  }
 22944  
 22945  func totypeAtoi64(tls *libc.TLS, zNum uintptr, pNum uintptr, length int32) int32 {
 22946  	var u sqlite3_uint64 = uint64(0)
 22947  	var neg int32 = 0
 22948  	var i int32
 22949  	var c int32 = 0
 22950  	var nonNum int32 = 0
 22951  	var zStart uintptr
 22952  	var zEnd uintptr = zNum + uintptr(length)
 22953  
 22954  	for zNum < zEnd && totypeIsspace(tls, *(*uint8)(unsafe.Pointer(zNum))) != 0 {
 22955  		zNum++
 22956  	}
 22957  	if zNum < zEnd {
 22958  		if int32(*(*uint8)(unsafe.Pointer(zNum))) == '-' {
 22959  			neg = 1
 22960  			zNum++
 22961  		} else if int32(*(*uint8)(unsafe.Pointer(zNum))) == '+' {
 22962  			zNum++
 22963  		}
 22964  	}
 22965  	zStart = zNum
 22966  	for zNum < zEnd && int32(*(*uint8)(unsafe.Pointer(zNum))) == '0' {
 22967  		zNum++
 22968  	}
 22969  	for i = 0; zNum+uintptr(i) < zEnd && libc.AssignInt32(&c, int32(*(*uint8)(unsafe.Pointer(zNum + uintptr(i))))) >= '0' && c <= '9'; i++ {
 22970  		u = u*uint64(10) + sqlite3_uint64(c) - uint64('0')
 22971  	}
 22972  	if u > uint64(int64(0xffffffff)|int64(0x7fffffff)<<32) {
 22973  		*(*sqlite3_int64)(unsafe.Pointer(pNum)) = int64(-1) - (int64(0xffffffff) | int64(0x7fffffff)<<32)
 22974  	} else if neg != 0 {
 22975  		*(*sqlite3_int64)(unsafe.Pointer(pNum)) = -sqlite3_int64(u)
 22976  	} else {
 22977  		*(*sqlite3_int64)(unsafe.Pointer(pNum)) = sqlite3_int64(u)
 22978  	}
 22979  	if c != 0 && zNum+uintptr(i) < zEnd || i == 0 && zStart == zNum || i > 19 || nonNum != 0 {
 22980  		return 1
 22981  	} else if i < 19 {
 22982  		return 0
 22983  	} else {
 22984  		c = totypeCompare2pow63(tls, zNum)
 22985  		if c < 0 {
 22986  			return 0
 22987  		} else if c > 0 {
 22988  			return 1
 22989  		} else {
 22990  			if neg != 0 {
 22991  				return 0
 22992  			}
 22993  			return 2
 22994  		}
 22995  	}
 22996  	return int32(0)
 22997  }
 22998  
 22999  func totypeAtoF(tls *libc.TLS, z uintptr, pResult uintptr, length int32) int32 {
 23000  	var zEnd uintptr
 23001  
 23002  	var sign int32
 23003  	var s sqlite3_int64
 23004  	var d int32
 23005  	var esign int32
 23006  	var e int32
 23007  	var eValid int32
 23008  	var result float64
 23009  	var nDigits int32
 23010  	var nonNum int32
 23011  	var scale float64
 23012  	zEnd = z + uintptr(length)
 23013  	sign = 1
 23014  	s = int64(0)
 23015  	d = 0
 23016  	esign = 1
 23017  	e = 0
 23018  	eValid = 1
 23019  	nDigits = 0
 23020  	nonNum = 0
 23021  
 23022  	*(*float64)(unsafe.Pointer(pResult)) = 0.0
 23023  
 23024  __1:
 23025  	if !(z < zEnd && totypeIsspace(tls, *(*uint8)(unsafe.Pointer(z))) != 0) {
 23026  		goto __2
 23027  	}
 23028  	z++
 23029  	goto __1
 23030  __2:
 23031  	;
 23032  	if !(z >= zEnd) {
 23033  		goto __3
 23034  	}
 23035  	return 0
 23036  __3:
 23037  	;
 23038  	if !(int32(*(*uint8)(unsafe.Pointer(z))) == '-') {
 23039  		goto __4
 23040  	}
 23041  	sign = -1
 23042  	z++
 23043  	goto __5
 23044  __4:
 23045  	if !(int32(*(*uint8)(unsafe.Pointer(z))) == '+') {
 23046  		goto __6
 23047  	}
 23048  	z++
 23049  __6:
 23050  	;
 23051  __5:
 23052  	;
 23053  __7:
 23054  	if !(z < zEnd && int32(*(*uint8)(unsafe.Pointer(z))) == '0') {
 23055  		goto __8
 23056  	}
 23057  	z++
 23058  	nDigits++
 23059  	goto __7
 23060  __8:
 23061  	;
 23062  __9:
 23063  	if !(z < zEnd && totypeIsdigit(tls, *(*uint8)(unsafe.Pointer(z))) != 0 && s < (int64(0xffffffff)|int64(0x7fffffff)<<32-int64(9))/int64(10)) {
 23064  		goto __10
 23065  	}
 23066  	s = s*int64(10) + sqlite3_int64(int32(*(*uint8)(unsafe.Pointer(z)))-'0')
 23067  	z++
 23068  	nDigits++
 23069  	goto __9
 23070  __10:
 23071  	;
 23072  __11:
 23073  	if !(z < zEnd && totypeIsdigit(tls, *(*uint8)(unsafe.Pointer(z))) != 0) {
 23074  		goto __12
 23075  	}
 23076  	z++
 23077  	nDigits++
 23078  	d++
 23079  	goto __11
 23080  __12:
 23081  	;
 23082  	if !(z >= zEnd) {
 23083  		goto __13
 23084  	}
 23085  	goto totype_atof_calc
 23086  __13:
 23087  	;
 23088  	if !(int32(*(*uint8)(unsafe.Pointer(z))) == '.') {
 23089  		goto __14
 23090  	}
 23091  	z++
 23092  
 23093  __15:
 23094  	if !(z < zEnd && totypeIsdigit(tls, *(*uint8)(unsafe.Pointer(z))) != 0 && s < (int64(0xffffffff)|int64(0x7fffffff)<<32-int64(9))/int64(10)) {
 23095  		goto __16
 23096  	}
 23097  	s = s*int64(10) + sqlite3_int64(int32(*(*uint8)(unsafe.Pointer(z)))-'0')
 23098  	z++
 23099  	nDigits++
 23100  	d--
 23101  	goto __15
 23102  __16:
 23103  	;
 23104  __17:
 23105  	if !(z < zEnd && totypeIsdigit(tls, *(*uint8)(unsafe.Pointer(z))) != 0) {
 23106  		goto __18
 23107  	}
 23108  	z++
 23109  	nDigits++
 23110  	goto __17
 23111  __18:
 23112  	;
 23113  __14:
 23114  	;
 23115  	if !(z >= zEnd) {
 23116  		goto __19
 23117  	}
 23118  	goto totype_atof_calc
 23119  __19:
 23120  	;
 23121  	if !(int32(*(*uint8)(unsafe.Pointer(z))) == 'e' || int32(*(*uint8)(unsafe.Pointer(z))) == 'E') {
 23122  		goto __20
 23123  	}
 23124  	z++
 23125  	eValid = 0
 23126  	if !(z >= zEnd) {
 23127  		goto __21
 23128  	}
 23129  	goto totype_atof_calc
 23130  __21:
 23131  	;
 23132  	if !(int32(*(*uint8)(unsafe.Pointer(z))) == '-') {
 23133  		goto __22
 23134  	}
 23135  	esign = -1
 23136  	z++
 23137  	goto __23
 23138  __22:
 23139  	if !(int32(*(*uint8)(unsafe.Pointer(z))) == '+') {
 23140  		goto __24
 23141  	}
 23142  	z++
 23143  __24:
 23144  	;
 23145  __23:
 23146  	;
 23147  __25:
 23148  	if !(z < zEnd && totypeIsdigit(tls, *(*uint8)(unsafe.Pointer(z))) != 0) {
 23149  		goto __26
 23150  	}
 23151  	if e < 10000 {
 23152  		e = e*10 + (int32(*(*uint8)(unsafe.Pointer(z))) - '0')
 23153  	} else {
 23154  		e = 10000
 23155  	}
 23156  	z++
 23157  	eValid = 1
 23158  	goto __25
 23159  __26:
 23160  	;
 23161  __20:
 23162  	;
 23163  	if !(nDigits != 0 && eValid != 0) {
 23164  		goto __27
 23165  	}
 23166  __28:
 23167  	if !(z < zEnd && totypeIsspace(tls, *(*uint8)(unsafe.Pointer(z))) != 0) {
 23168  		goto __29
 23169  	}
 23170  	z++
 23171  	goto __28
 23172  __29:
 23173  	;
 23174  __27:
 23175  	;
 23176  totype_atof_calc:
 23177  	e = e*esign + d
 23178  	if !(e < 0) {
 23179  		goto __30
 23180  	}
 23181  	esign = -1
 23182  	e = e * -1
 23183  	goto __31
 23184  __30:
 23185  	esign = 1
 23186  __31:
 23187  	;
 23188  	if !!(s != 0) {
 23189  		goto __32
 23190  	}
 23191  
 23192  	if sign < 0 && nDigits != 0 {
 23193  		result = -libc.Float64FromFloat64(float64(0))
 23194  	} else {
 23195  		result = float64(0)
 23196  	}
 23197  	goto __33
 23198  __32:
 23199  	if !(esign > 0) {
 23200  		goto __34
 23201  	}
 23202  __36:
 23203  	if !(s < (int64(0xffffffff)|int64(0x7fffffff)<<32)/int64(10) && e > 0) {
 23204  		goto __37
 23205  	}
 23206  	e--
 23207  	s = s * int64(10)
 23208  	goto __36
 23209  __37:
 23210  	;
 23211  	goto __35
 23212  __34:
 23213  __38:
 23214  	if !(!(int32(s%int64(10)) != 0) && e > 0) {
 23215  		goto __39
 23216  	}
 23217  	e--
 23218  	s = s / int64(10)
 23219  	goto __38
 23220  __39:
 23221  	;
 23222  __35:
 23223  	;
 23224  	if sign < 0 {
 23225  		s = -s
 23226  	} else {
 23227  		s = s
 23228  	}
 23229  
 23230  	if !(e != 0) {
 23231  		goto __40
 23232  	}
 23233  	scale = 1.0
 23234  
 23235  	if !(e > 307 && e < 342) {
 23236  		goto __42
 23237  	}
 23238  __44:
 23239  	if !(e%308 != 0) {
 23240  		goto __45
 23241  	}
 23242  	scale = scale * 1.0e+1
 23243  	e = e - 1
 23244  	goto __44
 23245  __45:
 23246  	;
 23247  	if !(esign < 0) {
 23248  		goto __46
 23249  	}
 23250  	result = float64(s) / scale
 23251  	result = result / 1.0e+308
 23252  	goto __47
 23253  __46:
 23254  	result = float64(s) * scale
 23255  	result = result * 1.0e+308
 23256  __47:
 23257  	;
 23258  	goto __43
 23259  __42:
 23260  	if !(e >= 342) {
 23261  		goto __48
 23262  	}
 23263  	if !(esign < 0) {
 23264  		goto __50
 23265  	}
 23266  	result = 0.0 * float64(s)
 23267  	goto __51
 23268  __50:
 23269  	result = libc.Float64(1e308) * libc.Float64(1e308) * float64(s)
 23270  __51:
 23271  	;
 23272  	goto __49
 23273  __48:
 23274  __52:
 23275  	if !(e%22 != 0) {
 23276  		goto __53
 23277  	}
 23278  	scale = scale * 1.0e+1
 23279  	e = e - 1
 23280  	goto __52
 23281  __53:
 23282  	;
 23283  __54:
 23284  	if !(e > 0) {
 23285  		goto __55
 23286  	}
 23287  	scale = scale * 1.0e+22
 23288  	e = e - 22
 23289  	goto __54
 23290  __55:
 23291  	;
 23292  	if !(esign < 0) {
 23293  		goto __56
 23294  	}
 23295  	result = float64(s) / scale
 23296  	goto __57
 23297  __56:
 23298  	result = float64(s) * scale
 23299  __57:
 23300  	;
 23301  __49:
 23302  	;
 23303  __43:
 23304  	;
 23305  	goto __41
 23306  __40:
 23307  	result = float64(s)
 23308  __41:
 23309  	;
 23310  __33:
 23311  	;
 23312  	*(*float64)(unsafe.Pointer(pResult)) = result
 23313  
 23314  	return libc.Bool32(z >= zEnd && nDigits > 0 && eValid != 0 && nonNum == 0)
 23315  }
 23316  
 23317  func tointegerFunc(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 23318  	bp := tls.Alloc(24)
 23319  	defer tls.Free(24)
 23320  
 23321  	_ = argc
 23322  	switch sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(argv))) {
 23323  	case SQLITE_FLOAT:
 23324  		{
 23325  			var rVal float64 = sqlite3.Xsqlite3_value_double(tls, *(*uintptr)(unsafe.Pointer(argv)))
 23326  			var iVal sqlite3_int64 = sqlite3_int64(rVal)
 23327  			if rVal == float64(iVal) {
 23328  				sqlite3.Xsqlite3_result_int64(tls, context, iVal)
 23329  			}
 23330  			break
 23331  
 23332  		}
 23333  	case SQLITE_INTEGER:
 23334  		{
 23335  			sqlite3.Xsqlite3_result_int64(tls, context, sqlite3.Xsqlite3_value_int64(tls, *(*uintptr)(unsafe.Pointer(argv))))
 23336  			break
 23337  
 23338  		}
 23339  	case SQLITE_BLOB:
 23340  		{
 23341  			var zBlob uintptr = sqlite3.Xsqlite3_value_blob(tls, *(*uintptr)(unsafe.Pointer(argv)))
 23342  			if zBlob != 0 {
 23343  				var nBlob int32 = sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(argv)))
 23344  				if uint64(nBlob) == uint64(unsafe.Sizeof(sqlite3_int64(0))) {
 23345  					if int32(*(*uint8)(unsafe.Pointer(uintptr(unsafe.Pointer(&totype_one))))) == 0 {
 23346  						var i int32
 23347  
 23348  						for i = 0; uint64(i) < uint64(unsafe.Sizeof(sqlite3_int64(0))); i++ {
 23349  							*(*uint8)(unsafe.Pointer(bp + uintptr(i))) = *(*uint8)(unsafe.Pointer(zBlob + uintptr(uint64(unsafe.Sizeof(sqlite3_int64(0)))-uint64(1)-uint64(i))))
 23350  						}
 23351  						libc.Xmemcpy(tls, bp+8, bp, uint64(unsafe.Sizeof(sqlite3_int64(0))))
 23352  					} else {
 23353  						libc.Xmemcpy(tls, bp+8, zBlob, uint64(unsafe.Sizeof(sqlite3_int64(0))))
 23354  					}
 23355  					sqlite3.Xsqlite3_result_int64(tls, context, *(*sqlite3_int64)(unsafe.Pointer(bp + 8)))
 23356  				}
 23357  			}
 23358  			break
 23359  
 23360  		}
 23361  	case SQLITE_TEXT:
 23362  		{
 23363  			var zStr uintptr = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 23364  			if zStr != 0 {
 23365  				var nStr int32 = sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(argv)))
 23366  				if nStr != 0 && !(totypeIsspace(tls, *(*uint8)(unsafe.Pointer(zStr))) != 0) {
 23367  					if !(totypeAtoi64(tls, zStr, bp+16, nStr) != 0) {
 23368  						sqlite3.Xsqlite3_result_int64(tls, context, *(*sqlite3_int64)(unsafe.Pointer(bp + 16)))
 23369  					}
 23370  				}
 23371  			}
 23372  			break
 23373  
 23374  		}
 23375  	default:
 23376  		{
 23377  			break
 23378  
 23379  		}
 23380  	}
 23381  }
 23382  
 23383  func torealFunc(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 23384  	bp := tls.Alloc(24)
 23385  	defer tls.Free(24)
 23386  
 23387  	_ = argc
 23388  	switch sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(argv))) {
 23389  	case SQLITE_FLOAT:
 23390  		{
 23391  			sqlite3.Xsqlite3_result_double(tls, context, sqlite3.Xsqlite3_value_double(tls, *(*uintptr)(unsafe.Pointer(argv))))
 23392  			break
 23393  
 23394  		}
 23395  	case SQLITE_INTEGER:
 23396  		{
 23397  			var iVal sqlite3_int64 = sqlite3.Xsqlite3_value_int64(tls, *(*uintptr)(unsafe.Pointer(argv)))
 23398  			var rVal float64 = float64(iVal)
 23399  			if iVal == sqlite3_int64(rVal) {
 23400  				sqlite3.Xsqlite3_result_double(tls, context, rVal)
 23401  			}
 23402  			break
 23403  
 23404  		}
 23405  	case SQLITE_BLOB:
 23406  		{
 23407  			var zBlob uintptr = sqlite3.Xsqlite3_value_blob(tls, *(*uintptr)(unsafe.Pointer(argv)))
 23408  			if zBlob != 0 {
 23409  				var nBlob int32 = sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(argv)))
 23410  				if uint64(nBlob) == uint64(unsafe.Sizeof(float64(0))) {
 23411  					if int32(*(*uint8)(unsafe.Pointer(uintptr(unsafe.Pointer(&totype_one))))) == 1 {
 23412  						var i int32
 23413  
 23414  						for i = 0; uint64(i) < uint64(unsafe.Sizeof(float64(0))); i++ {
 23415  							*(*uint8)(unsafe.Pointer(bp + uintptr(i))) = *(*uint8)(unsafe.Pointer(zBlob + uintptr(uint64(unsafe.Sizeof(float64(0)))-uint64(1)-uint64(i))))
 23416  						}
 23417  						libc.Xmemcpy(tls, bp+8, bp, uint64(unsafe.Sizeof(float64(0))))
 23418  					} else {
 23419  						libc.Xmemcpy(tls, bp+8, zBlob, uint64(unsafe.Sizeof(float64(0))))
 23420  					}
 23421  					sqlite3.Xsqlite3_result_double(tls, context, *(*float64)(unsafe.Pointer(bp + 8)))
 23422  				}
 23423  			}
 23424  			break
 23425  
 23426  		}
 23427  	case SQLITE_TEXT:
 23428  		{
 23429  			var zStr uintptr = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 23430  			if zStr != 0 {
 23431  				var nStr int32 = sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(argv)))
 23432  				if nStr != 0 && !(totypeIsspace(tls, *(*uint8)(unsafe.Pointer(zStr))) != 0) && !(totypeIsspace(tls, *(*uint8)(unsafe.Pointer(zStr + uintptr(nStr-1)))) != 0) {
 23433  					if totypeAtoF(tls, zStr, bp+16, nStr) != 0 {
 23434  						sqlite3.Xsqlite3_result_double(tls, context, *(*float64)(unsafe.Pointer(bp + 16)))
 23435  						return
 23436  					}
 23437  				}
 23438  			}
 23439  			break
 23440  
 23441  		}
 23442  	default:
 23443  		{
 23444  			break
 23445  
 23446  		}
 23447  	}
 23448  }
 23449  
 23450  func sqlite3_totype_init(tls *libc.TLS, db uintptr, pzErrMsg uintptr, pApi uintptr) int32 {
 23451  	var rc int32 = SQLITE_OK
 23452  	_ = pApi
 23453  
 23454  	_ = pzErrMsg
 23455  	rc = sqlite3.Xsqlite3_create_function(tls, db, ts+8431, 1,
 23456  		SQLITE_UTF8|SQLITE_DETERMINISTIC|SQLITE_INNOCUOUS, uintptr(0),
 23457  		*(*uintptr)(unsafe.Pointer(&struct {
 23458  			f func(*libc.TLS, uintptr, int32, uintptr)
 23459  		}{tointegerFunc})), uintptr(0), uintptr(0))
 23460  	if rc == SQLITE_OK {
 23461  		rc = sqlite3.Xsqlite3_create_function(tls, db, ts+8441, 1,
 23462  			SQLITE_UTF8|SQLITE_DETERMINISTIC|SQLITE_INNOCUOUS, uintptr(0),
 23463  			*(*uintptr)(unsafe.Pointer(&struct {
 23464  				f func(*libc.TLS, uintptr, int32, uintptr)
 23465  			}{torealFunc})), uintptr(0), uintptr(0))
 23466  	}
 23467  	return rc
 23468  }
 23469  
 23470  type UnionCsr1 = struct {
 23471  	Fbase        sqlite3_vtab_cursor
 23472  	FpStmt       uintptr
 23473  	FiMaxRowid   sqlite3_int64
 23474  	FiTab        int32
 23475  	F__ccgo_pad1 [4]byte
 23476  }
 23477  
 23478  type UnionCsr = UnionCsr1
 23479  type UnionTab1 = struct {
 23480  	Fbase        sqlite3_vtab
 23481  	Fdb          uintptr
 23482  	FbSwarm      int32
 23483  	FiPK         int32
 23484  	FnSrc        int32
 23485  	F__ccgo_pad1 [4]byte
 23486  	FaSrc        uintptr
 23487  	FbHasContext int32
 23488  	F__ccgo_pad2 [4]byte
 23489  	FzSourceStr  uintptr
 23490  	FpNotFound   uintptr
 23491  	FpOpenClose  uintptr
 23492  	FpClosable   uintptr
 23493  	FnOpen       int32
 23494  	FnMaxOpen    int32
 23495  }
 23496  
 23497  type UnionTab = UnionTab1
 23498  type UnionSrc1 = struct {
 23499  	FzDb           uintptr
 23500  	FzTab          uintptr
 23501  	FiMin          sqlite3_int64
 23502  	FiMax          sqlite3_int64
 23503  	FzFile         uintptr
 23504  	FzContext      uintptr
 23505  	FnUser         int32
 23506  	F__ccgo_pad1   [4]byte
 23507  	Fdb            uintptr
 23508  	FpNextClosable uintptr
 23509  }
 23510  
 23511  type UnionSrc = UnionSrc1
 23512  
 23513  func unionMalloc(tls *libc.TLS, pRc uintptr, nByte sqlite3_int64) uintptr {
 23514  	var pRet uintptr
 23515  
 23516  	if *(*int32)(unsafe.Pointer(pRc)) == SQLITE_OK {
 23517  		pRet = sqlite3.Xsqlite3_malloc64(tls, uint64(nByte))
 23518  		if pRet != 0 {
 23519  			libc.Xmemset(tls, pRet, 0, size_t(nByte))
 23520  		} else {
 23521  			*(*int32)(unsafe.Pointer(pRc)) = SQLITE_NOMEM
 23522  		}
 23523  	} else {
 23524  		pRet = uintptr(0)
 23525  	}
 23526  	return pRet
 23527  }
 23528  
 23529  func unionStrdup(tls *libc.TLS, pRc uintptr, zIn uintptr) uintptr {
 23530  	var zRet uintptr = uintptr(0)
 23531  	if zIn != 0 {
 23532  		var nByte sqlite3_int64 = sqlite3_int64(libc.Xstrlen(tls, zIn) + uint64(1))
 23533  		zRet = unionMalloc(tls, pRc, nByte)
 23534  		if zRet != 0 {
 23535  			libc.Xmemcpy(tls, zRet, zIn, size_t(nByte))
 23536  		}
 23537  	}
 23538  	return zRet
 23539  }
 23540  
 23541  func unionDequote(tls *libc.TLS, z uintptr) {
 23542  	if z != 0 {
 23543  		var q uint8 = *(*uint8)(unsafe.Pointer(z))
 23544  
 23545  		if int32(q) == '[' || int32(q) == '\'' || int32(q) == '"' || int32(q) == '`' {
 23546  			var iIn int32 = 1
 23547  			var iOut int32 = 0
 23548  			if int32(q) == '[' {
 23549  				q = uint8(']')
 23550  			}
 23551  			for *(*uint8)(unsafe.Pointer(z + uintptr(iIn))) != 0 {
 23552  				if int32(*(*uint8)(unsafe.Pointer(z + uintptr(iIn)))) == int32(q) {
 23553  					if int32(*(*uint8)(unsafe.Pointer(z + uintptr(iIn+1)))) != int32(q) {
 23554  						iIn++
 23555  						break
 23556  					} else {
 23557  						iIn = iIn + 2
 23558  						*(*uint8)(unsafe.Pointer(z + uintptr(libc.PostIncInt32(&iOut, 1)))) = q
 23559  					}
 23560  				} else {
 23561  					*(*uint8)(unsafe.Pointer(z + uintptr(libc.PostIncInt32(&iOut, 1)))) = *(*uint8)(unsafe.Pointer(z + uintptr(libc.PostIncInt32(&iIn, 1))))
 23562  				}
 23563  			}
 23564  			*(*uint8)(unsafe.Pointer(z + uintptr(iOut))) = uint8(0)
 23565  		}
 23566  	}
 23567  }
 23568  
 23569  func unionPrepare(tls *libc.TLS, pRc uintptr, db uintptr, zSql uintptr, pzErr uintptr) uintptr {
 23570  	bp := tls.Alloc(16)
 23571  	defer tls.Free(16)
 23572  
 23573  	*(*uintptr)(unsafe.Pointer(bp + 8)) = uintptr(0)
 23574  
 23575  	if *(*int32)(unsafe.Pointer(pRc)) == SQLITE_OK {
 23576  		var rc int32 = sqlite3.Xsqlite3_prepare_v2(tls, db, zSql, -1, bp+8, uintptr(0))
 23577  		if rc != SQLITE_OK {
 23578  			*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+8448, libc.VaList(bp, sqlite3.Xsqlite3_errmsg(tls, db)))
 23579  			*(*int32)(unsafe.Pointer(pRc)) = rc
 23580  		}
 23581  	}
 23582  	return *(*uintptr)(unsafe.Pointer(bp + 8))
 23583  }
 23584  
 23585  func unionPreparePrintf(tls *libc.TLS, pRc uintptr, pzErr uintptr, db uintptr, zFmt uintptr, va uintptr) uintptr {
 23586  	var pRet uintptr = uintptr(0)
 23587  	var zSql uintptr
 23588  	var ap va_list
 23589  	_ = ap
 23590  	ap = va
 23591  
 23592  	zSql = sqlite3.Xsqlite3_vmprintf(tls, zFmt, ap)
 23593  	if *(*int32)(unsafe.Pointer(pRc)) == SQLITE_OK {
 23594  		if zSql == uintptr(0) {
 23595  			*(*int32)(unsafe.Pointer(pRc)) = SQLITE_NOMEM
 23596  		} else {
 23597  			pRet = unionPrepare(tls, pRc, db, zSql, pzErr)
 23598  		}
 23599  	}
 23600  	sqlite3.Xsqlite3_free(tls, zSql)
 23601  
 23602  	_ = ap
 23603  	return pRet
 23604  }
 23605  
 23606  func unionFinalize(tls *libc.TLS, pRc uintptr, pStmt uintptr, pzErr uintptr) {
 23607  	bp := tls.Alloc(8)
 23608  	defer tls.Free(8)
 23609  
 23610  	var db uintptr = sqlite3.Xsqlite3_db_handle(tls, pStmt)
 23611  	var rc int32 = sqlite3.Xsqlite3_finalize(tls, pStmt)
 23612  	if *(*int32)(unsafe.Pointer(pRc)) == SQLITE_OK {
 23613  		*(*int32)(unsafe.Pointer(pRc)) = rc
 23614  		if rc != 0 {
 23615  			*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp, sqlite3.Xsqlite3_errmsg(tls, db)))
 23616  		}
 23617  	}
 23618  }
 23619  
 23620  func unionInvokeOpenClose(tls *libc.TLS, pTab uintptr, pSrc uintptr, bClose int32, pzErr uintptr) int32 {
 23621  	bp := tls.Alloc(8)
 23622  	defer tls.Free(8)
 23623  
 23624  	var rc int32 = SQLITE_OK
 23625  	if (*UnionTab)(unsafe.Pointer(pTab)).FpOpenClose != 0 {
 23626  		sqlite3.Xsqlite3_bind_text(tls, (*UnionTab)(unsafe.Pointer(pTab)).FpOpenClose, 1, (*UnionSrc)(unsafe.Pointer(pSrc)).FzFile, -1, uintptr(0))
 23627  		if (*UnionTab)(unsafe.Pointer(pTab)).FbHasContext != 0 {
 23628  			sqlite3.Xsqlite3_bind_text(tls, (*UnionTab)(unsafe.Pointer(pTab)).FpOpenClose, 2, (*UnionSrc)(unsafe.Pointer(pSrc)).FzContext, -1, uintptr(0))
 23629  		}
 23630  		sqlite3.Xsqlite3_bind_int(tls, (*UnionTab)(unsafe.Pointer(pTab)).FpOpenClose, 2+(*UnionTab)(unsafe.Pointer(pTab)).FbHasContext, bClose)
 23631  		sqlite3.Xsqlite3_step(tls, (*UnionTab)(unsafe.Pointer(pTab)).FpOpenClose)
 23632  		if SQLITE_OK != libc.AssignInt32(&rc, sqlite3.Xsqlite3_reset(tls, (*UnionTab)(unsafe.Pointer(pTab)).FpOpenClose)) {
 23633  			if pzErr != 0 {
 23634  				*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp, sqlite3.Xsqlite3_errmsg(tls, (*UnionTab)(unsafe.Pointer(pTab)).Fdb)))
 23635  			}
 23636  		}
 23637  	}
 23638  	return rc
 23639  }
 23640  
 23641  func unionCloseSources(tls *libc.TLS, pTab uintptr, nMax int32) {
 23642  	for (*UnionTab)(unsafe.Pointer(pTab)).FpClosable != 0 && (*UnionTab)(unsafe.Pointer(pTab)).FnOpen > nMax {
 23643  		var p uintptr
 23644  		var pp uintptr
 23645  		for pp = pTab + 88; (*UnionSrc)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(pp)))).FpNextClosable != 0; pp = *(*uintptr)(unsafe.Pointer(pp)) + 64 {
 23646  		}
 23647  		p = *(*uintptr)(unsafe.Pointer(pp))
 23648  
 23649  		sqlite3.Xsqlite3_close(tls, (*UnionSrc)(unsafe.Pointer(p)).Fdb)
 23650  		(*UnionSrc)(unsafe.Pointer(p)).Fdb = uintptr(0)
 23651  		*(*uintptr)(unsafe.Pointer(pp)) = uintptr(0)
 23652  		(*UnionTab)(unsafe.Pointer(pTab)).FnOpen--
 23653  		unionInvokeOpenClose(tls, pTab, p, 1, uintptr(0))
 23654  	}
 23655  }
 23656  
 23657  func unionDisconnect(tls *libc.TLS, pVtab uintptr) int32 {
 23658  	if pVtab != 0 {
 23659  		var pTab uintptr = pVtab
 23660  		var i int32
 23661  		for i = 0; i < (*UnionTab)(unsafe.Pointer(pTab)).FnSrc; i++ {
 23662  			var pSrc uintptr = (*UnionTab)(unsafe.Pointer(pTab)).FaSrc + uintptr(i)*72
 23663  			var bHaveSrcDb int32 = libc.Bool32((*UnionSrc)(unsafe.Pointer(pSrc)).Fdb != uintptr(0))
 23664  			sqlite3.Xsqlite3_close(tls, (*UnionSrc)(unsafe.Pointer(pSrc)).Fdb)
 23665  			if bHaveSrcDb != 0 {
 23666  				unionInvokeOpenClose(tls, pTab, pSrc, 1, uintptr(0))
 23667  			}
 23668  			sqlite3.Xsqlite3_free(tls, (*UnionSrc)(unsafe.Pointer(pSrc)).FzDb)
 23669  			sqlite3.Xsqlite3_free(tls, (*UnionSrc)(unsafe.Pointer(pSrc)).FzTab)
 23670  			sqlite3.Xsqlite3_free(tls, (*UnionSrc)(unsafe.Pointer(pSrc)).FzFile)
 23671  			sqlite3.Xsqlite3_free(tls, (*UnionSrc)(unsafe.Pointer(pSrc)).FzContext)
 23672  		}
 23673  		sqlite3.Xsqlite3_finalize(tls, (*UnionTab)(unsafe.Pointer(pTab)).FpNotFound)
 23674  		sqlite3.Xsqlite3_finalize(tls, (*UnionTab)(unsafe.Pointer(pTab)).FpOpenClose)
 23675  		sqlite3.Xsqlite3_free(tls, (*UnionTab)(unsafe.Pointer(pTab)).FzSourceStr)
 23676  		sqlite3.Xsqlite3_free(tls, (*UnionTab)(unsafe.Pointer(pTab)).FaSrc)
 23677  		sqlite3.Xsqlite3_free(tls, pTab)
 23678  	}
 23679  	return SQLITE_OK
 23680  }
 23681  
 23682  func unionIsIntkeyTable(tls *libc.TLS, db uintptr, pSrc uintptr, pzErr uintptr) int32 {
 23683  	bp := tls.Alloc(36)
 23684  	defer tls.Free(36)
 23685  
 23686  	*(*int32)(unsafe.Pointer(bp + 32)) = 0
 23687  	*(*uintptr)(unsafe.Pointer(bp + 24)) = uintptr(0)
 23688  	var rc int32
 23689  
 23690  	sqlite3.Xsqlite3_table_column_metadata(tls,
 23691  		db, (*UnionSrc)(unsafe.Pointer(pSrc)).FzDb, (*UnionSrc)(unsafe.Pointer(pSrc)).FzTab, ts+8462, bp+24, uintptr(0), uintptr(0), bp+32, uintptr(0))
 23692  	rc = sqlite3.Xsqlite3_errcode(tls, db)
 23693  	if rc == SQLITE_ERROR ||
 23694  		rc == SQLITE_OK && (!(*(*int32)(unsafe.Pointer(bp + 32)) != 0) || sqlite3.Xsqlite3_stricmp(tls, ts+8470, *(*uintptr)(unsafe.Pointer(bp + 24))) != 0) {
 23695  		rc = SQLITE_ERROR
 23696  		*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+8478,
 23697  			libc.VaList(bp, func() uintptr {
 23698  				if (*UnionSrc)(unsafe.Pointer(pSrc)).FzDb != 0 {
 23699  					return (*UnionSrc)(unsafe.Pointer(pSrc)).FzDb
 23700  				}
 23701  				return ts + 584
 23702  			}(),
 23703  				func() uintptr {
 23704  					if (*UnionSrc)(unsafe.Pointer(pSrc)).FzDb != 0 {
 23705  						return ts + 8506
 23706  					}
 23707  					return ts + 584
 23708  				}(),
 23709  				(*UnionSrc)(unsafe.Pointer(pSrc)).FzTab))
 23710  	}
 23711  	return rc
 23712  }
 23713  
 23714  func unionSourceToStr(tls *libc.TLS, pRc uintptr, pTab uintptr, pSrc uintptr, pzErr uintptr) uintptr {
 23715  	bp := tls.Alloc(4)
 23716  	defer tls.Free(4)
 23717  
 23718  	var zRet uintptr = uintptr(0)
 23719  	if *(*int32)(unsafe.Pointer(pRc)) == SQLITE_OK {
 23720  		var db uintptr = func() uintptr {
 23721  			if (*UnionTab)(unsafe.Pointer(pTab)).FbSwarm != 0 {
 23722  				return (*UnionSrc)(unsafe.Pointer(pSrc)).Fdb
 23723  			}
 23724  			return (*UnionTab)(unsafe.Pointer(pTab)).Fdb
 23725  		}()
 23726  		*(*int32)(unsafe.Pointer(bp)) = unionIsIntkeyTable(tls, db, pSrc, pzErr)
 23727  		var pStmt uintptr = unionPrepare(tls, bp, db,
 23728  			ts+8508, pzErr)
 23729  		if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK {
 23730  			sqlite3.Xsqlite3_bind_text(tls, pStmt, 1, (*UnionSrc)(unsafe.Pointer(pSrc)).FzTab, -1, uintptr(0))
 23731  			sqlite3.Xsqlite3_bind_text(tls, pStmt, 2, (*UnionSrc)(unsafe.Pointer(pSrc)).FzDb, -1, uintptr(0))
 23732  			if SQLITE_ROW == sqlite3.Xsqlite3_step(tls, pStmt) {
 23733  				var z uintptr = sqlite3.Xsqlite3_column_text(tls, pStmt, 0)
 23734  				zRet = unionStrdup(tls, bp, z)
 23735  			}
 23736  			unionFinalize(tls, bp, pStmt, pzErr)
 23737  		}
 23738  		*(*int32)(unsafe.Pointer(pRc)) = *(*int32)(unsafe.Pointer(bp))
 23739  	}
 23740  
 23741  	return zRet
 23742  }
 23743  
 23744  func unionSourceCheck(tls *libc.TLS, pTab uintptr, pzErr uintptr) int32 {
 23745  	bp := tls.Alloc(4)
 23746  	defer tls.Free(4)
 23747  
 23748  	*(*int32)(unsafe.Pointer(bp)) = SQLITE_OK
 23749  	var z0 uintptr = uintptr(0)
 23750  	var i int32
 23751  
 23752  	z0 = unionSourceToStr(tls, bp, pTab, (*UnionTab)(unsafe.Pointer(pTab)).FaSrc, pzErr)
 23753  	for i = 1; i < (*UnionTab)(unsafe.Pointer(pTab)).FnSrc; i++ {
 23754  		var z uintptr = unionSourceToStr(tls, bp, pTab, (*UnionTab)(unsafe.Pointer(pTab)).FaSrc+uintptr(i)*72, pzErr)
 23755  		if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK && sqlite3.Xsqlite3_stricmp(tls, z, z0) != 0 {
 23756  			*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+8592, 0)
 23757  			*(*int32)(unsafe.Pointer(bp)) = SQLITE_ERROR
 23758  		}
 23759  		sqlite3.Xsqlite3_free(tls, z)
 23760  	}
 23761  	sqlite3.Xsqlite3_free(tls, z0)
 23762  
 23763  	return *(*int32)(unsafe.Pointer(bp))
 23764  }
 23765  
 23766  func unionOpenDatabaseInner(tls *libc.TLS, pTab uintptr, pSrc uintptr, pzErr uintptr) int32 {
 23767  	bp := tls.Alloc(16)
 23768  	defer tls.Free(16)
 23769  
 23770  	var rc int32
 23771  
 23772  	rc = unionInvokeOpenClose(tls, pTab, pSrc, 0, pzErr)
 23773  	if rc != SQLITE_OK {
 23774  		return rc
 23775  	}
 23776  
 23777  	rc = sqlite3.Xsqlite3_open_v2(tls, (*UnionSrc)(unsafe.Pointer(pSrc)).FzFile, pSrc+56, openFlags, uintptr(0))
 23778  	if rc == SQLITE_OK {
 23779  		return rc
 23780  	}
 23781  	if (*UnionTab)(unsafe.Pointer(pTab)).FpNotFound != 0 {
 23782  		sqlite3.Xsqlite3_close(tls, (*UnionSrc)(unsafe.Pointer(pSrc)).Fdb)
 23783  		(*UnionSrc)(unsafe.Pointer(pSrc)).Fdb = uintptr(0)
 23784  		sqlite3.Xsqlite3_bind_text(tls, (*UnionTab)(unsafe.Pointer(pTab)).FpNotFound, 1, (*UnionSrc)(unsafe.Pointer(pSrc)).FzFile, -1, uintptr(0))
 23785  		if (*UnionTab)(unsafe.Pointer(pTab)).FbHasContext != 0 {
 23786  			sqlite3.Xsqlite3_bind_text(tls, (*UnionTab)(unsafe.Pointer(pTab)).FpNotFound, 2, (*UnionSrc)(unsafe.Pointer(pSrc)).FzContext, -1, uintptr(0))
 23787  		}
 23788  		sqlite3.Xsqlite3_step(tls, (*UnionTab)(unsafe.Pointer(pTab)).FpNotFound)
 23789  		if SQLITE_OK != libc.AssignInt32(&rc, sqlite3.Xsqlite3_reset(tls, (*UnionTab)(unsafe.Pointer(pTab)).FpNotFound)) {
 23790  			*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp, sqlite3.Xsqlite3_errmsg(tls, (*UnionTab)(unsafe.Pointer(pTab)).Fdb)))
 23791  			return rc
 23792  		}
 23793  		rc = sqlite3.Xsqlite3_open_v2(tls, (*UnionSrc)(unsafe.Pointer(pSrc)).FzFile, pSrc+56, openFlags, uintptr(0))
 23794  	}
 23795  	if rc != SQLITE_OK {
 23796  		*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp+8, sqlite3.Xsqlite3_errmsg(tls, (*UnionSrc)(unsafe.Pointer(pSrc)).Fdb)))
 23797  	}
 23798  	return rc
 23799  }
 23800  
 23801  var openFlags int32 = SQLITE_OPEN_READONLY | SQLITE_OPEN_URI
 23802  
 23803  func unionOpenDatabase(tls *libc.TLS, pTab uintptr, iSrc int32, pzErr uintptr) int32 {
 23804  	bp := tls.Alloc(4)
 23805  	defer tls.Free(4)
 23806  
 23807  	*(*int32)(unsafe.Pointer(bp)) = SQLITE_OK
 23808  	var pSrc uintptr = (*UnionTab)(unsafe.Pointer(pTab)).FaSrc + uintptr(iSrc)*72
 23809  
 23810  	if (*UnionSrc)(unsafe.Pointer(pSrc)).Fdb == uintptr(0) {
 23811  		unionCloseSources(tls, pTab, (*UnionTab)(unsafe.Pointer(pTab)).FnMaxOpen-1)
 23812  		*(*int32)(unsafe.Pointer(bp)) = unionOpenDatabaseInner(tls, pTab, pSrc, pzErr)
 23813  		if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK {
 23814  			var z uintptr = unionSourceToStr(tls, bp, pTab, pSrc, pzErr)
 23815  			if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK {
 23816  				if (*UnionTab)(unsafe.Pointer(pTab)).FzSourceStr == uintptr(0) {
 23817  					(*UnionTab)(unsafe.Pointer(pTab)).FzSourceStr = z
 23818  				} else {
 23819  					if sqlite3.Xsqlite3_stricmp(tls, z, (*UnionTab)(unsafe.Pointer(pTab)).FzSourceStr) != 0 {
 23820  						*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+8592, 0)
 23821  						*(*int32)(unsafe.Pointer(bp)) = SQLITE_ERROR
 23822  					}
 23823  					sqlite3.Xsqlite3_free(tls, z)
 23824  				}
 23825  			}
 23826  		}
 23827  
 23828  		if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK {
 23829  			(*UnionSrc)(unsafe.Pointer(pSrc)).FpNextClosable = (*UnionTab)(unsafe.Pointer(pTab)).FpClosable
 23830  			(*UnionTab)(unsafe.Pointer(pTab)).FpClosable = pSrc
 23831  			(*UnionTab)(unsafe.Pointer(pTab)).FnOpen++
 23832  		} else {
 23833  			sqlite3.Xsqlite3_close(tls, (*UnionSrc)(unsafe.Pointer(pSrc)).Fdb)
 23834  			(*UnionSrc)(unsafe.Pointer(pSrc)).Fdb = uintptr(0)
 23835  			unionInvokeOpenClose(tls, pTab, pSrc, 1, uintptr(0))
 23836  		}
 23837  	}
 23838  
 23839  	return *(*int32)(unsafe.Pointer(bp))
 23840  }
 23841  
 23842  func unionIncrRefcount(tls *libc.TLS, pTab uintptr, iTab int32) {
 23843  	if (*UnionTab)(unsafe.Pointer(pTab)).FbSwarm != 0 {
 23844  		var pSrc uintptr = (*UnionTab)(unsafe.Pointer(pTab)).FaSrc + uintptr(iTab)*72
 23845  
 23846  		if (*UnionSrc)(unsafe.Pointer(pSrc)).FnUser == 0 {
 23847  			var pp uintptr
 23848  			for pp = pTab + 88; *(*uintptr)(unsafe.Pointer(pp)) != pSrc; pp = *(*uintptr)(unsafe.Pointer(pp)) + 64 {
 23849  			}
 23850  			*(*uintptr)(unsafe.Pointer(pp)) = (*UnionSrc)(unsafe.Pointer(pSrc)).FpNextClosable
 23851  			(*UnionSrc)(unsafe.Pointer(pSrc)).FpNextClosable = uintptr(0)
 23852  		}
 23853  		(*UnionSrc)(unsafe.Pointer(pSrc)).FnUser++
 23854  	}
 23855  }
 23856  
 23857  func unionFinalizeCsrStmt(tls *libc.TLS, pCsr uintptr) int32 {
 23858  	var rc int32 = SQLITE_OK
 23859  	if (*UnionCsr)(unsafe.Pointer(pCsr)).FpStmt != 0 {
 23860  		var pTab uintptr = (*UnionCsr)(unsafe.Pointer(pCsr)).Fbase.FpVtab
 23861  		var pSrc uintptr = (*UnionTab)(unsafe.Pointer(pTab)).FaSrc + uintptr((*UnionCsr)(unsafe.Pointer(pCsr)).FiTab)*72
 23862  		rc = sqlite3.Xsqlite3_finalize(tls, (*UnionCsr)(unsafe.Pointer(pCsr)).FpStmt)
 23863  		(*UnionCsr)(unsafe.Pointer(pCsr)).FpStmt = uintptr(0)
 23864  		if (*UnionTab)(unsafe.Pointer(pTab)).FbSwarm != 0 {
 23865  			(*UnionSrc)(unsafe.Pointer(pSrc)).FnUser--
 23866  
 23867  			if (*UnionSrc)(unsafe.Pointer(pSrc)).FnUser == 0 {
 23868  				(*UnionSrc)(unsafe.Pointer(pSrc)).FpNextClosable = (*UnionTab)(unsafe.Pointer(pTab)).FpClosable
 23869  				(*UnionTab)(unsafe.Pointer(pTab)).FpClosable = pSrc
 23870  			}
 23871  			unionCloseSources(tls, pTab, (*UnionTab)(unsafe.Pointer(pTab)).FnMaxOpen)
 23872  		}
 23873  	}
 23874  	return rc
 23875  }
 23876  
 23877  func union_isspace(tls *libc.TLS, c uint8) int32 {
 23878  	return libc.Bool32(int32(c) == ' ' || int32(c) == '\n' || int32(c) == '\r' || int32(c) == '\t')
 23879  }
 23880  
 23881  func union_isidchar(tls *libc.TLS, c uint8) int32 {
 23882  	return libc.Bool32(int32(c) >= 'a' && int32(c) <= 'z' || int32(c) >= 'A' && int32(c) < 'Z' || int32(c) >= '0' && int32(c) <= '9')
 23883  }
 23884  
 23885  func unionConfigureVtab(tls *libc.TLS, pRc uintptr, pTab uintptr, pStmt uintptr, nArg int32, azArg uintptr, pzErr uintptr) {
 23886  	bp := tls.Alloc(68)
 23887  	defer tls.Free(68)
 23888  
 23889  	*(*int32)(unsafe.Pointer(bp + 64)) = *(*int32)(unsafe.Pointer(pRc))
 23890  	var i int32
 23891  	if *(*int32)(unsafe.Pointer(bp + 64)) == SQLITE_OK {
 23892  		(*UnionTab)(unsafe.Pointer(pTab)).FbHasContext = libc.Bool32(sqlite3.Xsqlite3_column_count(tls, pStmt) > 4)
 23893  	}
 23894  	for i = 0; *(*int32)(unsafe.Pointer(bp + 64)) == SQLITE_OK && i < nArg; i++ {
 23895  		var zArg uintptr = unionStrdup(tls, bp+64, *(*uintptr)(unsafe.Pointer(azArg + uintptr(i)*8)))
 23896  		if zArg != 0 {
 23897  			var nOpt int32 = 0
 23898  			var zOpt uintptr
 23899  			var zVal uintptr
 23900  
 23901  			unionDequote(tls, zArg)
 23902  			zOpt = zArg
 23903  			for union_isspace(tls, *(*uint8)(unsafe.Pointer(zOpt))) != 0 {
 23904  				zOpt++
 23905  			}
 23906  			zVal = zOpt
 23907  			if int32(*(*uint8)(unsafe.Pointer(zVal))) == ':' {
 23908  				zVal++
 23909  			}
 23910  			for union_isidchar(tls, *(*uint8)(unsafe.Pointer(zVal))) != 0 {
 23911  				zVal++
 23912  			}
 23913  			nOpt = int32((int64(zVal) - int64(zOpt)) / 1)
 23914  
 23915  			for union_isspace(tls, *(*uint8)(unsafe.Pointer(zVal))) != 0 {
 23916  				zVal++
 23917  			}
 23918  			if int32(*(*uint8)(unsafe.Pointer(zVal))) == '=' {
 23919  				*(*uint8)(unsafe.Pointer(zOpt + uintptr(nOpt))) = uint8(0)
 23920  				zVal++
 23921  				for union_isspace(tls, *(*uint8)(unsafe.Pointer(zVal))) != 0 {
 23922  					zVal++
 23923  				}
 23924  				zVal = unionStrdup(tls, bp+64, zVal)
 23925  				if zVal != 0 {
 23926  					unionDequote(tls, zVal)
 23927  					if int32(*(*uint8)(unsafe.Pointer(zOpt))) == ':' {
 23928  						var iParam int32 = sqlite3.Xsqlite3_bind_parameter_index(tls, pStmt, zOpt)
 23929  						if iParam == 0 {
 23930  							*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls,
 23931  								ts+8621, libc.VaList(bp, zOpt))
 23932  							*(*int32)(unsafe.Pointer(bp + 64)) = SQLITE_ERROR
 23933  						} else {
 23934  							*(*int32)(unsafe.Pointer(bp + 64)) = sqlite3.Xsqlite3_bind_text(tls, pStmt, iParam, zVal, -1, libc.UintptrFromInt32(-1))
 23935  						}
 23936  					} else if nOpt == 7 && 0 == sqlite3.Xsqlite3_strnicmp(tls, zOpt, ts+8658, 7) {
 23937  						(*UnionTab)(unsafe.Pointer(pTab)).FnMaxOpen = libc.Xatoi(tls, zVal)
 23938  						if (*UnionTab)(unsafe.Pointer(pTab)).FnMaxOpen <= 0 {
 23939  							*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+8666, 0)
 23940  							*(*int32)(unsafe.Pointer(bp + 64)) = SQLITE_ERROR
 23941  						}
 23942  					} else if nOpt == 7 && 0 == sqlite3.Xsqlite3_strnicmp(tls, zOpt, ts+8699, 7) {
 23943  						if (*UnionTab)(unsafe.Pointer(pTab)).FpNotFound != 0 {
 23944  							*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls,
 23945  								ts+8707, 0)
 23946  							*(*int32)(unsafe.Pointer(bp + 64)) = SQLITE_ERROR
 23947  						} else {
 23948  							(*UnionTab)(unsafe.Pointer(pTab)).FpNotFound = unionPreparePrintf(tls, bp+64, pzErr, (*UnionTab)(unsafe.Pointer(pTab)).Fdb,
 23949  								ts+8745, libc.VaList(bp+8, zVal, func() uintptr {
 23950  									if (*UnionTab)(unsafe.Pointer(pTab)).FbHasContext != 0 {
 23951  										return ts + 8762
 23952  									}
 23953  									return ts + 584
 23954  								}()))
 23955  						}
 23956  					} else if nOpt == 9 && 0 == sqlite3.Xsqlite3_strnicmp(tls, zOpt, ts+8765, 9) {
 23957  						if (*UnionTab)(unsafe.Pointer(pTab)).FpOpenClose != 0 {
 23958  							*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls,
 23959  								ts+8775, 0)
 23960  							*(*int32)(unsafe.Pointer(bp + 64)) = SQLITE_ERROR
 23961  						} else {
 23962  							(*UnionTab)(unsafe.Pointer(pTab)).FpOpenClose = unionPreparePrintf(tls, bp+64, pzErr, (*UnionTab)(unsafe.Pointer(pTab)).Fdb,
 23963  								ts+8815, libc.VaList(bp+24, zVal, func() uintptr {
 23964  									if (*UnionTab)(unsafe.Pointer(pTab)).FbHasContext != 0 {
 23965  										return ts + 8762
 23966  									}
 23967  									return ts + 584
 23968  								}()))
 23969  						}
 23970  					} else {
 23971  						*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+8834, libc.VaList(bp+40, zOpt))
 23972  						*(*int32)(unsafe.Pointer(bp + 64)) = SQLITE_ERROR
 23973  					}
 23974  					sqlite3.Xsqlite3_free(tls, zVal)
 23975  				}
 23976  			} else {
 23977  				if i == 0 && nArg == 1 {
 23978  					(*UnionTab)(unsafe.Pointer(pTab)).FpNotFound = unionPreparePrintf(tls, bp+64, pzErr, (*UnionTab)(unsafe.Pointer(pTab)).Fdb,
 23979  						ts+8869, libc.VaList(bp+48, zArg))
 23980  				} else {
 23981  					*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+8884, libc.VaList(bp+56, *(*uintptr)(unsafe.Pointer(azArg + uintptr(i)*8))))
 23982  					*(*int32)(unsafe.Pointer(bp + 64)) = SQLITE_ERROR
 23983  				}
 23984  			}
 23985  			sqlite3.Xsqlite3_free(tls, zArg)
 23986  		}
 23987  	}
 23988  	*(*int32)(unsafe.Pointer(pRc)) = *(*int32)(unsafe.Pointer(bp + 64))
 23989  }
 23990  
 23991  func unionConnect(tls *libc.TLS, db uintptr, pAux uintptr, argc int32, argv uintptr, ppVtab uintptr, pzErr uintptr) int32 {
 23992  	bp := tls.Alloc(44)
 23993  	defer tls.Free(44)
 23994  
 23995  	var pTab uintptr = uintptr(0)
 23996  	*(*int32)(unsafe.Pointer(bp + 40)) = SQLITE_OK
 23997  	var bSwarm int32 = func() int32 {
 23998  		if pAux == uintptr(0) {
 23999  			return 0
 24000  		}
 24001  		return 1
 24002  	}()
 24003  	var zVtab uintptr = func() uintptr {
 24004  		if bSwarm != 0 {
 24005  			return ts + 8911
 24006  		}
 24007  		return ts + 8921
 24008  	}()
 24009  
 24010  	if sqlite3.Xsqlite3_stricmp(tls, ts+8931, *(*uintptr)(unsafe.Pointer(argv + 1*8))) != 0 {
 24011  		*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+8936, libc.VaList(bp, zVtab))
 24012  		*(*int32)(unsafe.Pointer(bp + 40)) = SQLITE_ERROR
 24013  	} else if argc < 4 || argc > 4 && bSwarm == 0 {
 24014  		*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+8977, libc.VaList(bp+8, zVtab))
 24015  		*(*int32)(unsafe.Pointer(bp + 40)) = SQLITE_ERROR
 24016  	} else {
 24017  		var nAlloc int32 = 0
 24018  		var pStmt uintptr = uintptr(0)
 24019  		var zArg uintptr = unionStrdup(tls, bp+40, *(*uintptr)(unsafe.Pointer(argv + 3*8)))
 24020  
 24021  		unionDequote(tls, zArg)
 24022  		pStmt = unionPreparePrintf(tls, bp+40, pzErr, db,
 24023  			ts+9010, libc.VaList(bp+16, zArg))
 24024  
 24025  		pTab = unionMalloc(tls, bp+40, int64(unsafe.Sizeof(UnionTab{})))
 24026  		if pTab != 0 {
 24027  			(*UnionTab)(unsafe.Pointer(pTab)).Fdb = db
 24028  			(*UnionTab)(unsafe.Pointer(pTab)).FbSwarm = bSwarm
 24029  			(*UnionTab)(unsafe.Pointer(pTab)).FnMaxOpen = SWARMVTAB_MAX_OPEN
 24030  		}
 24031  
 24032  		if bSwarm != 0 {
 24033  			unionConfigureVtab(tls, bp+40, pTab, pStmt, argc-4, argv+4*8, pzErr)
 24034  		}
 24035  
 24036  		for *(*int32)(unsafe.Pointer(bp + 40)) == SQLITE_OK && SQLITE_ROW == sqlite3.Xsqlite3_step(tls, pStmt) {
 24037  			var zDb uintptr = sqlite3.Xsqlite3_column_text(tls, pStmt, 0)
 24038  			var zTab uintptr = sqlite3.Xsqlite3_column_text(tls, pStmt, 1)
 24039  			var iMin sqlite3_int64 = sqlite3.Xsqlite3_column_int64(tls, pStmt, 2)
 24040  			var iMax sqlite3_int64 = sqlite3.Xsqlite3_column_int64(tls, pStmt, 3)
 24041  			var pSrc uintptr
 24042  
 24043  			if nAlloc <= (*UnionTab)(unsafe.Pointer(pTab)).FnSrc {
 24044  				var nNew int32
 24045  				if nAlloc != 0 {
 24046  					nNew = nAlloc * 2
 24047  				} else {
 24048  					nNew = 8
 24049  				}
 24050  				var aNew uintptr = sqlite3.Xsqlite3_realloc64(tls,
 24051  					(*UnionTab)(unsafe.Pointer(pTab)).FaSrc, uint64(nNew)*uint64(unsafe.Sizeof(UnionSrc{})))
 24052  				if aNew == uintptr(0) {
 24053  					*(*int32)(unsafe.Pointer(bp + 40)) = SQLITE_NOMEM
 24054  					break
 24055  				} else {
 24056  					libc.Xmemset(tls, aNew+uintptr((*UnionTab)(unsafe.Pointer(pTab)).FnSrc)*72, 0, uint64(nNew-(*UnionTab)(unsafe.Pointer(pTab)).FnSrc)*uint64(unsafe.Sizeof(UnionSrc{})))
 24057  					(*UnionTab)(unsafe.Pointer(pTab)).FaSrc = aNew
 24058  					nAlloc = nNew
 24059  				}
 24060  			}
 24061  
 24062  			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 {
 24063  				*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+9040, 0)
 24064  				*(*int32)(unsafe.Pointer(bp + 40)) = SQLITE_ERROR
 24065  			}
 24066  
 24067  			if *(*int32)(unsafe.Pointer(bp + 40)) == SQLITE_OK {
 24068  				pSrc = (*UnionTab)(unsafe.Pointer(pTab)).FaSrc + uintptr(libc.PostIncInt32(&(*UnionTab)(unsafe.Pointer(pTab)).FnSrc, 1))*72
 24069  				(*UnionSrc)(unsafe.Pointer(pSrc)).FzTab = unionStrdup(tls, bp+40, zTab)
 24070  				(*UnionSrc)(unsafe.Pointer(pSrc)).FiMin = iMin
 24071  				(*UnionSrc)(unsafe.Pointer(pSrc)).FiMax = iMax
 24072  				if bSwarm != 0 {
 24073  					(*UnionSrc)(unsafe.Pointer(pSrc)).FzFile = unionStrdup(tls, bp+40, zDb)
 24074  				} else {
 24075  					(*UnionSrc)(unsafe.Pointer(pSrc)).FzDb = unionStrdup(tls, bp+40, zDb)
 24076  				}
 24077  				if (*UnionTab)(unsafe.Pointer(pTab)).FbHasContext != 0 {
 24078  					var zContext uintptr = sqlite3.Xsqlite3_column_text(tls, pStmt, 4)
 24079  					(*UnionSrc)(unsafe.Pointer(pSrc)).FzContext = unionStrdup(tls, bp+40, zContext)
 24080  				}
 24081  			}
 24082  		}
 24083  		unionFinalize(tls, bp+40, pStmt, pzErr)
 24084  		pStmt = uintptr(0)
 24085  
 24086  		if *(*int32)(unsafe.Pointer(bp + 40)) == SQLITE_OK && (*UnionTab)(unsafe.Pointer(pTab)).FnSrc == 0 {
 24087  			*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+9067, 0)
 24088  			*(*int32)(unsafe.Pointer(bp + 40)) = SQLITE_ERROR
 24089  		}
 24090  
 24091  		if *(*int32)(unsafe.Pointer(bp + 40)) == SQLITE_OK {
 24092  			if bSwarm != 0 {
 24093  				*(*int32)(unsafe.Pointer(bp + 40)) = unionOpenDatabase(tls, pTab, 0, pzErr)
 24094  			} else {
 24095  				*(*int32)(unsafe.Pointer(bp + 40)) = unionSourceCheck(tls, pTab, pzErr)
 24096  			}
 24097  		}
 24098  
 24099  		if *(*int32)(unsafe.Pointer(bp + 40)) == SQLITE_OK {
 24100  			var pSrc uintptr = (*UnionTab)(unsafe.Pointer(pTab)).FaSrc
 24101  			var tdb uintptr = func() uintptr {
 24102  				if (*UnionTab)(unsafe.Pointer(pTab)).FbSwarm != 0 {
 24103  					return (*UnionSrc)(unsafe.Pointer(pSrc)).Fdb
 24104  				}
 24105  				return (*UnionTab)(unsafe.Pointer(pTab)).Fdb
 24106  			}()
 24107  			pStmt = unionPreparePrintf(tls, bp+40, pzErr, tdb,
 24108  				ts+9095,
 24109  				libc.VaList(bp+24, (*UnionSrc)(unsafe.Pointer(pSrc)).FzTab, (*UnionSrc)(unsafe.Pointer(pSrc)).FzDb))
 24110  		}
 24111  		if *(*int32)(unsafe.Pointer(bp + 40)) == SQLITE_OK && SQLITE_ROW == sqlite3.Xsqlite3_step(tls, pStmt) {
 24112  			var zDecl uintptr = sqlite3.Xsqlite3_column_text(tls, pStmt, 0)
 24113  			*(*int32)(unsafe.Pointer(bp + 40)) = sqlite3.Xsqlite3_declare_vtab(tls, db, zDecl)
 24114  			(*UnionTab)(unsafe.Pointer(pTab)).FiPK = sqlite3.Xsqlite3_column_int(tls, pStmt, 1)
 24115  		}
 24116  
 24117  		unionFinalize(tls, bp+40, pStmt, pzErr)
 24118  	}
 24119  
 24120  	if *(*int32)(unsafe.Pointer(bp + 40)) != SQLITE_OK {
 24121  		unionDisconnect(tls, pTab)
 24122  		pTab = uintptr(0)
 24123  	}
 24124  
 24125  	*(*uintptr)(unsafe.Pointer(ppVtab)) = pTab
 24126  	return *(*int32)(unsafe.Pointer(bp + 40))
 24127  }
 24128  
 24129  func unionOpen(tls *libc.TLS, p uintptr, ppCursor uintptr) int32 {
 24130  	bp := tls.Alloc(4)
 24131  	defer tls.Free(4)
 24132  
 24133  	var pCsr uintptr
 24134  	*(*int32)(unsafe.Pointer(bp)) = SQLITE_OK
 24135  	_ = p
 24136  	pCsr = unionMalloc(tls, bp, int64(unsafe.Sizeof(UnionCsr{})))
 24137  	*(*uintptr)(unsafe.Pointer(ppCursor)) = pCsr
 24138  	return *(*int32)(unsafe.Pointer(bp))
 24139  }
 24140  
 24141  func unionClose(tls *libc.TLS, cur uintptr) int32 {
 24142  	var pCsr uintptr = cur
 24143  	unionFinalizeCsrStmt(tls, pCsr)
 24144  	sqlite3.Xsqlite3_free(tls, pCsr)
 24145  	return SQLITE_OK
 24146  }
 24147  
 24148  func doUnionNext(tls *libc.TLS, pCsr uintptr) int32 {
 24149  	bp := tls.Alloc(28)
 24150  	defer tls.Free(28)
 24151  
 24152  	*(*int32)(unsafe.Pointer(bp + 24)) = SQLITE_OK
 24153  
 24154  	if sqlite3.Xsqlite3_step(tls, (*UnionCsr)(unsafe.Pointer(pCsr)).FpStmt) != SQLITE_ROW {
 24155  		var pTab uintptr = (*UnionCsr)(unsafe.Pointer(pCsr)).Fbase.FpVtab
 24156  		*(*int32)(unsafe.Pointer(bp + 24)) = unionFinalizeCsrStmt(tls, pCsr)
 24157  		if *(*int32)(unsafe.Pointer(bp + 24)) == SQLITE_OK && (*UnionTab)(unsafe.Pointer(pTab)).FbSwarm != 0 {
 24158  			(*UnionCsr)(unsafe.Pointer(pCsr)).FiTab++
 24159  			if (*UnionCsr)(unsafe.Pointer(pCsr)).FiTab < (*UnionTab)(unsafe.Pointer(pTab)).FnSrc {
 24160  				var pSrc uintptr = (*UnionTab)(unsafe.Pointer(pTab)).FaSrc + uintptr((*UnionCsr)(unsafe.Pointer(pCsr)).FiTab)*72
 24161  				if (*UnionCsr)(unsafe.Pointer(pCsr)).FiMaxRowid >= (*UnionSrc)(unsafe.Pointer(pSrc)).FiMin {
 24162  					*(*int32)(unsafe.Pointer(bp + 24)) = unionOpenDatabase(tls, pTab, (*UnionCsr)(unsafe.Pointer(pCsr)).FiTab, pTab+16)
 24163  					(*UnionCsr)(unsafe.Pointer(pCsr)).FpStmt = unionPreparePrintf(tls, bp+24, pTab+16, (*UnionSrc)(unsafe.Pointer(pSrc)).Fdb,
 24164  						ts+9273,
 24165  						libc.VaList(bp, (*UnionSrc)(unsafe.Pointer(pSrc)).FzTab,
 24166  							func() uintptr {
 24167  								if (*UnionSrc)(unsafe.Pointer(pSrc)).FiMax > (*UnionCsr)(unsafe.Pointer(pCsr)).FiMaxRowid {
 24168  									return ts + 9305
 24169  								}
 24170  								return ts + 9322
 24171  							}(),
 24172  							(*UnionCsr)(unsafe.Pointer(pCsr)).FiMaxRowid))
 24173  					if *(*int32)(unsafe.Pointer(bp + 24)) == SQLITE_OK {
 24174  						unionIncrRefcount(tls, pTab, (*UnionCsr)(unsafe.Pointer(pCsr)).FiTab)
 24175  						*(*int32)(unsafe.Pointer(bp + 24)) = SQLITE_ROW
 24176  					}
 24177  				}
 24178  			}
 24179  		}
 24180  	}
 24181  
 24182  	return *(*int32)(unsafe.Pointer(bp + 24))
 24183  }
 24184  
 24185  func unionNext(tls *libc.TLS, cur uintptr) int32 {
 24186  	var rc int32
 24187  	for __ccgo := true; __ccgo; __ccgo = rc == SQLITE_ROW {
 24188  		rc = doUnionNext(tls, cur)
 24189  	}
 24190  	return rc
 24191  }
 24192  
 24193  func unionColumn(tls *libc.TLS, cur uintptr, ctx uintptr, i int32) int32 {
 24194  	var pCsr uintptr = cur
 24195  	sqlite3.Xsqlite3_result_value(tls, ctx, sqlite3.Xsqlite3_column_value(tls, (*UnionCsr)(unsafe.Pointer(pCsr)).FpStmt, i+1))
 24196  	return SQLITE_OK
 24197  }
 24198  
 24199  func unionRowid(tls *libc.TLS, cur uintptr, pRowid uintptr) int32 {
 24200  	var pCsr uintptr = cur
 24201  	*(*sqlite_int64)(unsafe.Pointer(pRowid)) = sqlite3.Xsqlite3_column_int64(tls, (*UnionCsr)(unsafe.Pointer(pCsr)).FpStmt, 0)
 24202  	return SQLITE_OK
 24203  }
 24204  
 24205  func unionEof(tls *libc.TLS, cur uintptr) int32 {
 24206  	var pCsr uintptr = cur
 24207  	return libc.Bool32((*UnionCsr)(unsafe.Pointer(pCsr)).FpStmt == uintptr(0))
 24208  }
 24209  
 24210  func unionFilter(tls *libc.TLS, pVtabCursor uintptr, idxNum int32, idxStr uintptr, argc int32, argv uintptr) int32 {
 24211  	bp := tls.Alloc(108)
 24212  	defer tls.Free(108)
 24213  
 24214  	var pTab uintptr = (*sqlite3_vtab_cursor)(unsafe.Pointer(pVtabCursor)).FpVtab
 24215  	var pCsr uintptr = pVtabCursor
 24216  	*(*int32)(unsafe.Pointer(bp + 104)) = SQLITE_OK
 24217  	var i int32
 24218  	var zSql uintptr = uintptr(0)
 24219  	var bZero int32 = 0
 24220  
 24221  	var iMin sqlite3_int64 = int64(-1) - (int64(0xffffffff) | int64(0x7fffffff)<<32)
 24222  	var iMax sqlite3_int64 = int64(0xffffffff) | int64(0x7fffffff)<<32
 24223  
 24224  	_ = idxStr
 24225  
 24226  	if idxNum == SQLITE_INDEX_CONSTRAINT_EQ {
 24227  		iMin = libc.AssignInt64(&iMax, sqlite3.Xsqlite3_value_int64(tls, *(*uintptr)(unsafe.Pointer(argv))))
 24228  	} else {
 24229  		if idxNum&(SQLITE_INDEX_CONSTRAINT_LE|SQLITE_INDEX_CONSTRAINT_LT) != 0 {
 24230  			iMax = sqlite3.Xsqlite3_value_int64(tls, *(*uintptr)(unsafe.Pointer(argv)))
 24231  			if idxNum&SQLITE_INDEX_CONSTRAINT_LT != 0 {
 24232  				if iMax == int64(-1)-(int64(0xffffffff)|int64(0x7fffffff)<<32) {
 24233  					bZero = 1
 24234  				} else {
 24235  					iMax--
 24236  				}
 24237  			}
 24238  		}
 24239  
 24240  		if idxNum&(SQLITE_INDEX_CONSTRAINT_GE|SQLITE_INDEX_CONSTRAINT_GT) != 0 {
 24241  			iMin = sqlite3.Xsqlite3_value_int64(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(argc-1)*8)))
 24242  			if idxNum&SQLITE_INDEX_CONSTRAINT_GT != 0 {
 24243  				if iMin == int64(0xffffffff)|int64(0x7fffffff)<<32 {
 24244  					bZero = 1
 24245  				} else {
 24246  					iMin++
 24247  				}
 24248  			}
 24249  		}
 24250  	}
 24251  
 24252  	unionFinalizeCsrStmt(tls, pCsr)
 24253  	if bZero != 0 {
 24254  		return SQLITE_OK
 24255  	}
 24256  
 24257  	for i = 0; i < (*UnionTab)(unsafe.Pointer(pTab)).FnSrc; i++ {
 24258  		var pSrc uintptr = (*UnionTab)(unsafe.Pointer(pTab)).FaSrc + uintptr(i)*72
 24259  		if iMin > (*UnionSrc)(unsafe.Pointer(pSrc)).FiMax || iMax < (*UnionSrc)(unsafe.Pointer(pSrc)).FiMin {
 24260  			continue
 24261  		}
 24262  
 24263  		zSql = sqlite3.Xsqlite3_mprintf(tls, ts+9326, libc.VaList(bp, zSql, func() uintptr {
 24264  			if zSql != 0 {
 24265  				return ts + 9360
 24266  			}
 24267  			return ts + 584
 24268  		}(), func() uintptr {
 24269  			if (*UnionSrc)(unsafe.Pointer(pSrc)).FzDb != 0 {
 24270  				return ts + 5624
 24271  			}
 24272  			return ts + 584
 24273  		}(), func() uintptr {
 24274  			if (*UnionSrc)(unsafe.Pointer(pSrc)).FzDb != 0 {
 24275  				return (*UnionSrc)(unsafe.Pointer(pSrc)).FzDb
 24276  			}
 24277  			return ts + 584
 24278  		}(), func() uintptr {
 24279  			if (*UnionSrc)(unsafe.Pointer(pSrc)).FzDb != 0 {
 24280  				return ts + 5626
 24281  			}
 24282  			return ts + 584
 24283  		}(), (*UnionSrc)(unsafe.Pointer(pSrc)).FzTab))
 24284  		if zSql == uintptr(0) {
 24285  			*(*int32)(unsafe.Pointer(bp + 104)) = SQLITE_NOMEM
 24286  			break
 24287  		}
 24288  
 24289  		if iMin == iMax {
 24290  			zSql = sqlite3.Xsqlite3_mprintf(tls, ts+9372, libc.VaList(bp+48, zSql, iMin))
 24291  		} else {
 24292  			var zWhere uintptr = ts + 9392
 24293  			if iMin != int64(-1)-(int64(0xffffffff)|int64(0x7fffffff)<<32) && iMin > (*UnionSrc)(unsafe.Pointer(pSrc)).FiMin {
 24294  				zSql = sqlite3.Xsqlite3_mprintf(tls, ts+9398, libc.VaList(bp+64, zSql, iMin))
 24295  				zWhere = ts + 9419
 24296  			}
 24297  			if iMax != int64(0xffffffff)|int64(0x7fffffff)<<32 && iMax < (*UnionSrc)(unsafe.Pointer(pSrc)).FiMax {
 24298  				zSql = sqlite3.Xsqlite3_mprintf(tls, ts+9423, libc.VaList(bp+80, zSql, zWhere, iMax))
 24299  			}
 24300  		}
 24301  
 24302  		if (*UnionTab)(unsafe.Pointer(pTab)).FbSwarm != 0 {
 24303  			(*UnionCsr)(unsafe.Pointer(pCsr)).FiTab = i
 24304  			(*UnionCsr)(unsafe.Pointer(pCsr)).FiMaxRowid = iMax
 24305  			*(*int32)(unsafe.Pointer(bp + 104)) = unionOpenDatabase(tls, pTab, i, pTab+16)
 24306  			break
 24307  		}
 24308  	}
 24309  
 24310  	if zSql == uintptr(0) {
 24311  		return *(*int32)(unsafe.Pointer(bp + 104))
 24312  	} else {
 24313  		var db uintptr = func() uintptr {
 24314  			if (*UnionTab)(unsafe.Pointer(pTab)).FbSwarm != 0 {
 24315  				return (*UnionSrc)(unsafe.Pointer((*UnionTab)(unsafe.Pointer(pTab)).FaSrc + uintptr((*UnionCsr)(unsafe.Pointer(pCsr)).FiTab)*72)).Fdb
 24316  			}
 24317  			return (*UnionTab)(unsafe.Pointer(pTab)).Fdb
 24318  		}()
 24319  		(*UnionCsr)(unsafe.Pointer(pCsr)).FpStmt = unionPrepare(tls, bp+104, db, zSql, pTab+16)
 24320  		if (*UnionCsr)(unsafe.Pointer(pCsr)).FpStmt != 0 {
 24321  			unionIncrRefcount(tls, pTab, (*UnionCsr)(unsafe.Pointer(pCsr)).FiTab)
 24322  		}
 24323  		sqlite3.Xsqlite3_free(tls, zSql)
 24324  	}
 24325  	if *(*int32)(unsafe.Pointer(bp + 104)) != SQLITE_OK {
 24326  		return *(*int32)(unsafe.Pointer(bp + 104))
 24327  	}
 24328  	return unionNext(tls, pVtabCursor)
 24329  }
 24330  
 24331  func unionBestIndex(tls *libc.TLS, tab uintptr, pIdxInfo uintptr) int32 {
 24332  	var pTab uintptr = tab
 24333  	var iEq int32 = -1
 24334  	var iLt int32 = -1
 24335  	var iGt int32 = -1
 24336  	var i int32
 24337  
 24338  	for i = 0; i < (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnConstraint; i++ {
 24339  		var p uintptr = (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint + uintptr(i)*12
 24340  		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) {
 24341  			switch int32((*sqlite3_index_constraint)(unsafe.Pointer(p)).Fop) {
 24342  			case SQLITE_INDEX_CONSTRAINT_EQ:
 24343  				iEq = i
 24344  				break
 24345  				fallthrough
 24346  			case SQLITE_INDEX_CONSTRAINT_LE:
 24347  				fallthrough
 24348  			case SQLITE_INDEX_CONSTRAINT_LT:
 24349  				iLt = i
 24350  				break
 24351  				fallthrough
 24352  			case SQLITE_INDEX_CONSTRAINT_GE:
 24353  				fallthrough
 24354  			case SQLITE_INDEX_CONSTRAINT_GT:
 24355  				iGt = i
 24356  				break
 24357  			}
 24358  		}
 24359  	}
 24360  
 24361  	if iEq >= 0 {
 24362  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedRows = int64(1)
 24363  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxFlags = SQLITE_INDEX_SCAN_UNIQUE
 24364  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = 3.0
 24365  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxNum = SQLITE_INDEX_CONSTRAINT_EQ
 24366  		(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(iEq)*8)).FargvIndex = 1
 24367  		(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(iEq)*8)).Fomit = uint8(1)
 24368  	} else {
 24369  		var iCons int32 = 1
 24370  		var idxNum int32 = 0
 24371  		var nRow sqlite3_int64 = int64(1000000)
 24372  		if iLt >= 0 {
 24373  			nRow = nRow / int64(2)
 24374  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(iLt)*8)).FargvIndex = libc.PostIncInt32(&iCons, 1)
 24375  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(iLt)*8)).Fomit = uint8(1)
 24376  			idxNum = idxNum | int32((*sqlite3_index_constraint)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint+uintptr(iLt)*12)).Fop)
 24377  		}
 24378  		if iGt >= 0 {
 24379  			nRow = nRow / int64(2)
 24380  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(iGt)*8)).FargvIndex = libc.PostIncInt32(&iCons, 1)
 24381  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(iGt)*8)).Fomit = uint8(1)
 24382  			idxNum = idxNum | int32((*sqlite3_index_constraint)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint+uintptr(iGt)*12)).Fop)
 24383  		}
 24384  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedRows = nRow
 24385  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = 3.0 * float64(nRow)
 24386  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxNum = idxNum
 24387  	}
 24388  
 24389  	return SQLITE_OK
 24390  }
 24391  
 24392  func createUnionVtab(tls *libc.TLS, db uintptr) int32 {
 24393  	var rc int32
 24394  
 24395  	rc = sqlite3.Xsqlite3_create_module(tls, db, ts+8921, uintptr(unsafe.Pointer(&unionModule)), uintptr(0))
 24396  	if rc == SQLITE_OK {
 24397  		rc = sqlite3.Xsqlite3_create_module(tls, db, ts+8911, uintptr(unsafe.Pointer(&unionModule)), db)
 24398  	}
 24399  	return rc
 24400  }
 24401  
 24402  var unionModule = sqlite3_module{
 24403  	FxCreate:     0,
 24404  	FxConnect:    0,
 24405  	FxBestIndex:  0,
 24406  	FxDisconnect: 0,
 24407  	FxDestroy:    0,
 24408  	FxOpen:       0,
 24409  	FxClose:      0,
 24410  	FxFilter:     0,
 24411  	FxNext:       0,
 24412  	FxEof:        0,
 24413  	FxColumn:     0,
 24414  	FxRowid:      0,
 24415  }
 24416  
 24417  func sqlite3_unionvtab_init(tls *libc.TLS, db uintptr, pzErrMsg uintptr, pApi uintptr) int32 {
 24418  	var rc int32 = SQLITE_OK
 24419  	_ = pApi
 24420  
 24421  	_ = pzErrMsg
 24422  	rc = createUnionVtab(tls, db)
 24423  	return rc
 24424  }
 24425  
 24426  type wholenumber_cursor1 = struct {
 24427  	Fbase    sqlite3_vtab_cursor
 24428  	FiValue  sqlite3_int64
 24429  	FmxValue sqlite3_int64
 24430  }
 24431  
 24432  type wholenumber_cursor = wholenumber_cursor1
 24433  
 24434  func wholenumberConnect(tls *libc.TLS, db uintptr, pAux uintptr, argc int32, argv uintptr, ppVtab uintptr, pzErr uintptr) int32 {
 24435  	var pNew uintptr
 24436  	pNew = libc.AssignPtrUintptr(ppVtab, sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(sqlite3_vtab{}))))
 24437  	if pNew == uintptr(0) {
 24438  		return SQLITE_NOMEM
 24439  	}
 24440  	sqlite3.Xsqlite3_declare_vtab(tls, db, ts+9441)
 24441  	sqlite3.Xsqlite3_vtab_config(tls, db, SQLITE_VTAB_INNOCUOUS, 0)
 24442  	libc.Xmemset(tls, pNew, 0, uint64(unsafe.Sizeof(sqlite3_vtab{})))
 24443  	return SQLITE_OK
 24444  }
 24445  
 24446  func wholenumberDisconnect(tls *libc.TLS, pVtab uintptr) int32 {
 24447  	sqlite3.Xsqlite3_free(tls, pVtab)
 24448  	return SQLITE_OK
 24449  }
 24450  
 24451  func wholenumberOpen(tls *libc.TLS, p uintptr, ppCursor uintptr) int32 {
 24452  	var pCur uintptr
 24453  	pCur = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(wholenumber_cursor{})))
 24454  	if pCur == uintptr(0) {
 24455  		return SQLITE_NOMEM
 24456  	}
 24457  	libc.Xmemset(tls, pCur, 0, uint64(unsafe.Sizeof(wholenumber_cursor{})))
 24458  	*(*uintptr)(unsafe.Pointer(ppCursor)) = pCur
 24459  	return SQLITE_OK
 24460  }
 24461  
 24462  func wholenumberClose(tls *libc.TLS, cur uintptr) int32 {
 24463  	sqlite3.Xsqlite3_free(tls, cur)
 24464  	return SQLITE_OK
 24465  }
 24466  
 24467  func wholenumberNext(tls *libc.TLS, cur uintptr) int32 {
 24468  	var pCur uintptr = cur
 24469  	(*wholenumber_cursor)(unsafe.Pointer(pCur)).FiValue++
 24470  	return SQLITE_OK
 24471  }
 24472  
 24473  func wholenumberColumn(tls *libc.TLS, cur uintptr, ctx uintptr, i int32) int32 {
 24474  	var pCur uintptr = cur
 24475  	sqlite3.Xsqlite3_result_int64(tls, ctx, (*wholenumber_cursor)(unsafe.Pointer(pCur)).FiValue)
 24476  	return SQLITE_OK
 24477  }
 24478  
 24479  func wholenumberRowid(tls *libc.TLS, cur uintptr, pRowid uintptr) int32 {
 24480  	var pCur uintptr = cur
 24481  	*(*sqlite_int64)(unsafe.Pointer(pRowid)) = (*wholenumber_cursor)(unsafe.Pointer(pCur)).FiValue
 24482  	return SQLITE_OK
 24483  }
 24484  
 24485  func wholenumberEof(tls *libc.TLS, cur uintptr) int32 {
 24486  	var pCur uintptr = cur
 24487  	return libc.Bool32((*wholenumber_cursor)(unsafe.Pointer(pCur)).FiValue > (*wholenumber_cursor)(unsafe.Pointer(pCur)).FmxValue || (*wholenumber_cursor)(unsafe.Pointer(pCur)).FiValue == int64(0))
 24488  }
 24489  
 24490  func wholenumberFilter(tls *libc.TLS, pVtabCursor uintptr, idxNum int32, idxStr uintptr, argc int32, argv uintptr) int32 {
 24491  	var pCur uintptr = pVtabCursor
 24492  	var v sqlite3_int64
 24493  	var i int32 = 0
 24494  	(*wholenumber_cursor)(unsafe.Pointer(pCur)).FiValue = int64(1)
 24495  	(*wholenumber_cursor)(unsafe.Pointer(pCur)).FmxValue = int64(0xffffffff)
 24496  	if idxNum&3 != 0 {
 24497  		v = sqlite3.Xsqlite3_value_int64(tls, *(*uintptr)(unsafe.Pointer(argv))) + sqlite3_int64(idxNum&1)
 24498  		if v > (*wholenumber_cursor)(unsafe.Pointer(pCur)).FiValue && v <= (*wholenumber_cursor)(unsafe.Pointer(pCur)).FmxValue {
 24499  			(*wholenumber_cursor)(unsafe.Pointer(pCur)).FiValue = v
 24500  		}
 24501  		i++
 24502  	}
 24503  	if idxNum&12 != 0 {
 24504  		v = sqlite3.Xsqlite3_value_int64(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8))) - sqlite3_int64(idxNum>>2&1)
 24505  		if v >= (*wholenumber_cursor)(unsafe.Pointer(pCur)).FiValue && v < (*wholenumber_cursor)(unsafe.Pointer(pCur)).FmxValue {
 24506  			(*wholenumber_cursor)(unsafe.Pointer(pCur)).FmxValue = v
 24507  		}
 24508  	}
 24509  	return SQLITE_OK
 24510  }
 24511  
 24512  func wholenumberBestIndex(tls *libc.TLS, tab uintptr, pIdxInfo uintptr) int32 {
 24513  	var i int32
 24514  	var idxNum int32 = 0
 24515  	var argvIdx int32 = 1
 24516  	var ltIdx int32 = -1
 24517  	var gtIdx int32 = -1
 24518  	var pConstraint uintptr
 24519  	pConstraint = (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint
 24520  	i = 0
 24521  __1:
 24522  	if !(i < (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnConstraint) {
 24523  		goto __3
 24524  	}
 24525  	{
 24526  		if int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fusable) == 0 {
 24527  			goto __2
 24528  		}
 24529  		if idxNum&3 == 0 && int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_GT {
 24530  			idxNum = idxNum | 1
 24531  			ltIdx = i
 24532  		}
 24533  		if idxNum&3 == 0 && int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_GE {
 24534  			idxNum = idxNum | 2
 24535  			ltIdx = i
 24536  		}
 24537  		if idxNum&12 == 0 && int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_LT {
 24538  			idxNum = idxNum | 4
 24539  			gtIdx = i
 24540  		}
 24541  		if idxNum&12 == 0 && int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_LE {
 24542  			idxNum = idxNum | 8
 24543  			gtIdx = i
 24544  		}
 24545  
 24546  	}
 24547  	goto __2
 24548  __2:
 24549  	i++
 24550  	pConstraint += 12
 24551  	goto __1
 24552  	goto __3
 24553  __3:
 24554  	;
 24555  	(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxNum = idxNum
 24556  	if ltIdx >= 0 {
 24557  		(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(ltIdx)*8)).FargvIndex = libc.PostIncInt32(&argvIdx, 1)
 24558  		(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(ltIdx)*8)).Fomit = uint8(1)
 24559  	}
 24560  	if gtIdx >= 0 {
 24561  		(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(gtIdx)*8)).FargvIndex = argvIdx
 24562  		(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(gtIdx)*8)).Fomit = uint8(1)
 24563  	}
 24564  	if (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnOrderBy == 1 &&
 24565  		int32((*sqlite3_index_orderby)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaOrderBy)).Fdesc) == 0 {
 24566  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).ForderByConsumed = 1
 24567  	}
 24568  	if idxNum&12 == 0 {
 24569  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = 1e99
 24570  	} else if idxNum&3 == 0 {
 24571  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = float64(5)
 24572  	} else {
 24573  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = float64(1)
 24574  	}
 24575  	return SQLITE_OK
 24576  }
 24577  
 24578  var wholenumberModule = sqlite3_module{
 24579  	FxCreate:     0,
 24580  	FxConnect:    0,
 24581  	FxBestIndex:  0,
 24582  	FxDisconnect: 0,
 24583  	FxDestroy:    0,
 24584  	FxOpen:       0,
 24585  	FxClose:      0,
 24586  	FxFilter:     0,
 24587  	FxNext:       0,
 24588  	FxEof:        0,
 24589  	FxColumn:     0,
 24590  	FxRowid:      0,
 24591  }
 24592  
 24593  func sqlite3_wholenumber_init(tls *libc.TLS, db uintptr, pzErrMsg uintptr, pApi uintptr) int32 {
 24594  	var rc int32 = SQLITE_OK
 24595  	_ = pApi
 24596  
 24597  	rc = sqlite3.Xsqlite3_create_module(tls, db, ts+9463, uintptr(unsafe.Pointer(&wholenumberModule)), uintptr(0))
 24598  	return rc
 24599  }
 24600  
 24601  func test_rbu_delta(tls *libc.TLS, pCtx uintptr, nArg int32, apVal uintptr) {
 24602  	var interp uintptr = sqlite3.Xsqlite3_user_data(tls, pCtx)
 24603  	var pScript uintptr
 24604  	var i int32
 24605  
 24606  	pScript = tcl.XTcl_NewObj(tls)
 24607  	(*Tcl_Obj)(unsafe.Pointer(pScript)).FrefCount++
 24608  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pScript, tcl.XTcl_NewStringObj(tls, ts+9475, -1))
 24609  	for i = 0; i < nArg; i++ {
 24610  		var pIn uintptr = *(*uintptr)(unsafe.Pointer(apVal + uintptr(i)*8))
 24611  		var z uintptr = sqlite3.Xsqlite3_value_text(tls, pIn)
 24612  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pScript, tcl.XTcl_NewStringObj(tls, z, -1))
 24613  	}
 24614  
 24615  	if TCL_OK == tcl.XTcl_EvalObjEx(tls, interp, pScript, TCL_GLOBAL_ONLY) {
 24616  		var z uintptr = tcl.XTcl_GetStringResult(tls, interp)
 24617  		sqlite3.Xsqlite3_result_text(tls, pCtx, z, -1, libc.UintptrFromInt32(-1))
 24618  	} else {
 24619  		tcl.XTcl_BackgroundError(tls, interp)
 24620  	}
 24621  
 24622  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 24623  		var _objPtr uintptr = pScript
 24624  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 24625  			tcl.XTclFreeObj(tls, _objPtr)
 24626  		}
 24627  	}
 24628  }
 24629  
 24630  func test_sqlite3rbu_cmd(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 24631  	bp := tls.Alloc(496)
 24632  	defer tls.Free(496)
 24633  
 24634  	var ret int32 = TCL_OK
 24635  	var pRbu uintptr = clientData
 24636  	*(*[14]RbuCmd)(unsafe.Pointer(bp + 24)) = [14]RbuCmd{
 24637  		{FzName: ts + 9485, FnArg: 2, FzUsage: ts + 584},
 24638  		{FzName: ts + 9490, FnArg: 2, FzUsage: ts + 584},
 24639  		{FzName: ts + 9496, FnArg: 2, FzUsage: ts + 584},
 24640  		{FzName: ts + 9513, FnArg: 2, FzUsage: ts + 584},
 24641  		{FzName: ts + 9523, FnArg: 3, FzUsage: ts + 9535},
 24642  		{FzName: ts + 9539, FnArg: 2, FzUsage: ts + 584},
 24643  		{FzName: ts + 9551, FnArg: 3, FzUsage: ts + 9554},
 24644  		{FzName: ts + 9558, FnArg: 2, FzUsage: ts + 584},
 24645  		{FzName: ts + 9564, FnArg: 2, FzUsage: ts + 584},
 24646  		{FzName: ts + 9573, FnArg: 2, FzUsage: ts + 584},
 24647  		{FzName: ts + 9588, FnArg: 3, FzUsage: ts + 9604},
 24648  		{FzName: ts + 9610, FnArg: 2, FzUsage: ts + 584},
 24649  		{FzName: ts + 9620, FnArg: 3, FzUsage: ts + 9535},
 24650  		{},
 24651  	}
 24652  
 24653  	if objc < 2 {
 24654  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+9631)
 24655  		return TCL_ERROR
 24656  	}
 24657  	ret = tcl.XTcl_GetIndexFromObjStruct(tls,
 24658  		interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp+24, int32(unsafe.Sizeof(RbuCmd{})), ts+9638, 0, bp+360)
 24659  	if ret != 0 {
 24660  		return TCL_ERROR
 24661  	}
 24662  	if objc != (*RbuCmd)(unsafe.Pointer(bp+24+uintptr(*(*int32)(unsafe.Pointer(bp + 360)))*24)).FnArg {
 24663  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, (*RbuCmd)(unsafe.Pointer(bp+24+uintptr(*(*int32)(unsafe.Pointer(bp + 360)))*24)).FzUsage)
 24664  		return TCL_ERROR
 24665  	}
 24666  
 24667  	switch *(*int32)(unsafe.Pointer(bp + 360)) {
 24668  	case 0:
 24669  		{
 24670  			var rc int32 = sqlite3.Xsqlite3rbu_step(tls, pRbu)
 24671  			tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3ErrName(tls, rc), -1))
 24672  			break
 24673  
 24674  		}
 24675  
 24676  	case 9:
 24677  		fallthrough
 24678  	case 1:
 24679  		{
 24680  			*(*uintptr)(unsafe.Pointer(bp + 368)) = uintptr(0)
 24681  			var rc int32
 24682  			tcl.XTcl_DeleteCommand(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))))
 24683  			if *(*int32)(unsafe.Pointer(bp + 360)) == 1 {
 24684  				rc = sqlite3.Xsqlite3rbu_close(tls, pRbu, bp+368)
 24685  			} else {
 24686  				rc = sqlite3.Xsqlite3rbu_close(tls, pRbu, uintptr(0))
 24687  			}
 24688  			if rc == SQLITE_OK || rc == SQLITE_DONE {
 24689  				tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3ErrName(tls, rc), -1))
 24690  
 24691  			} else {
 24692  				tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3ErrName(tls, rc), -1))
 24693  				if *(*uintptr)(unsafe.Pointer(bp + 368)) != 0 {
 24694  					tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+9645, *(*uintptr)(unsafe.Pointer(bp + 368)), 0))
 24695  					sqlite3.Xsqlite3_free(tls, *(*uintptr)(unsafe.Pointer(bp + 368)))
 24696  				}
 24697  				ret = TCL_ERROR
 24698  			}
 24699  			break
 24700  
 24701  		}
 24702  
 24703  	case 2:
 24704  		{
 24705  			var db uintptr = sqlite3.Xsqlite3rbu_db(tls, pRbu, 0)
 24706  			var rc int32 = sqlite3.Xsqlite3_create_function(tls,
 24707  				db, ts+9475, -1, SQLITE_UTF8, interp, *(*uintptr)(unsafe.Pointer(&struct {
 24708  					f func(*libc.TLS, uintptr, int32, uintptr)
 24709  				}{test_rbu_delta})), uintptr(0), uintptr(0))
 24710  			tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3ErrName(tls, rc), -1))
 24711  			ret = func() int32 {
 24712  				if rc == SQLITE_OK {
 24713  					return TCL_OK
 24714  				}
 24715  				return TCL_ERROR
 24716  			}()
 24717  			break
 24718  
 24719  		}
 24720  
 24721  	case 3:
 24722  		{
 24723  			var rc int32 = sqlite3.Xsqlite3rbu_savestate(tls, pRbu)
 24724  			tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3ErrName(tls, rc), -1))
 24725  			ret = func() int32 {
 24726  				if rc == SQLITE_OK {
 24727  					return TCL_OK
 24728  				}
 24729  				return TCL_ERROR
 24730  			}()
 24731  			break
 24732  
 24733  		}
 24734  
 24735  	case 12:
 24736  		fallthrough
 24737  	case 4:
 24738  		{
 24739  			var db uintptr = sqlite3.Xsqlite3rbu_db(tls, pRbu, libc.Bool32(*(*int32)(unsafe.Pointer(bp + 360)) == 12))
 24740  			var rc int32 = sqlite3.Xsqlite3_exec(tls, db, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8))), uintptr(0), uintptr(0), uintptr(0))
 24741  			if rc != SQLITE_OK {
 24742  				tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3_errmsg(tls, db), -1))
 24743  				ret = TCL_ERROR
 24744  			}
 24745  			break
 24746  
 24747  		}
 24748  
 24749  	case 5:
 24750  		{
 24751  			var pObj uintptr
 24752  			sqlite3.Xsqlite3rbu_bp_progress(tls, pRbu, bp+376, bp+380)
 24753  
 24754  			pObj = tcl.XTcl_NewObj(tls)
 24755  			tcl.XTcl_ListObjAppendElement(tls, interp, pObj, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 376))))
 24756  			tcl.XTcl_ListObjAppendElement(tls, interp, pObj, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 380))))
 24757  			tcl.XTcl_SetObjResult(tls, interp, pObj)
 24758  			break
 24759  
 24760  		}
 24761  
 24762  	case 6:
 24763  		{
 24764  			if tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+384) != 0 {
 24765  				ret = TCL_ERROR
 24766  			} else {
 24767  				var db uintptr = sqlite3.Xsqlite3rbu_db(tls, pRbu, *(*int32)(unsafe.Pointer(bp + 384)))
 24768  				if sqlite3TestMakePointerStr(tls, interp, bp+388, db) != 0 {
 24769  					ret = TCL_ERROR
 24770  				} else {
 24771  					tcl.XTcl_SetResult(tls, interp, bp+388, uintptr(1))
 24772  				}
 24773  			}
 24774  			break
 24775  
 24776  		}
 24777  	case 7:
 24778  		{
 24779  			*(*[6]uintptr)(unsafe.Pointer(bp + 440)) = [6]uintptr{uintptr(0), ts + 9649, ts + 9653, ts + 9658, ts + 9669, ts + 9674}
 24780  			var eState int32 = sqlite3.Xsqlite3rbu_state(tls, pRbu)
 24781  
 24782  			tcl.XTcl_SetResult(tls, interp, *(*uintptr)(unsafe.Pointer(bp + 440 + uintptr(eState)*8)), uintptr(0))
 24783  			break
 24784  
 24785  		}
 24786  	case 8:
 24787  		{
 24788  			var nStep sqlite3_int64 = sqlite3.Xsqlite3rbu_progress(tls, pRbu)
 24789  			tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewWideIntObj(tls, nStep))
 24790  			break
 24791  
 24792  		}
 24793  
 24794  	case 10:
 24795  		{
 24796  			if tcl.XTcl_GetWideIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+488) != 0 {
 24797  				ret = TCL_ERROR
 24798  			} else {
 24799  				*(*sqlite3_int64)(unsafe.Pointer(bp + 488)) = sqlite3.Xsqlite3rbu_temp_size_limit(tls, pRbu, *(*sqlite3_int64)(unsafe.Pointer(bp + 488)))
 24800  				tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewWideIntObj(tls, *(*sqlite3_int64)(unsafe.Pointer(bp + 488))))
 24801  			}
 24802  			break
 24803  
 24804  		}
 24805  	case 11:
 24806  		{
 24807  			var sz sqlite3_int64 = sqlite3.Xsqlite3rbu_temp_size(tls, pRbu)
 24808  			tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewWideIntObj(tls, sz))
 24809  			break
 24810  
 24811  		}
 24812  
 24813  	default:
 24814  		break
 24815  	}
 24816  
 24817  	return ret
 24818  }
 24819  
 24820  type RbuCmd = struct {
 24821  	FzName       uintptr
 24822  	FnArg        int32
 24823  	F__ccgo_pad1 [4]byte
 24824  	FzUsage      uintptr
 24825  }
 24826  
 24827  func test_sqlite3rbu(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 24828  	var pRbu uintptr = uintptr(0)
 24829  	var zCmd uintptr
 24830  	var zTarget uintptr
 24831  	var zRbu uintptr
 24832  	var zStateDb uintptr = uintptr(0)
 24833  
 24834  	if objc != 4 && objc != 5 {
 24835  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+9680)
 24836  		return TCL_ERROR
 24837  	}
 24838  	zCmd = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 24839  	zTarget = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 24840  	zRbu = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)))
 24841  	if objc == 5 {
 24842  		zStateDb = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 4*8)))
 24843  	}
 24844  
 24845  	pRbu = sqlite3.Xsqlite3rbu_open(tls, zTarget, zRbu, zStateDb)
 24846  	tcl.XTcl_CreateObjCommand(tls, interp, zCmd, *(*uintptr)(unsafe.Pointer(&struct {
 24847  		f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
 24848  	}{test_sqlite3rbu_cmd})), pRbu, uintptr(0))
 24849  	tcl.XTcl_SetObjResult(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 24850  	return TCL_OK
 24851  }
 24852  
 24853  func test_sqlite3rbu_vacuum(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 24854  	var pRbu uintptr = uintptr(0)
 24855  	var zCmd uintptr
 24856  	var zTarget uintptr
 24857  	var zStateDb uintptr = uintptr(0)
 24858  
 24859  	if objc != 3 && objc != 4 {
 24860  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+9713)
 24861  		return TCL_ERROR
 24862  	}
 24863  	zCmd = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 24864  	zTarget = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 24865  	if objc == 4 {
 24866  		zStateDb = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)))
 24867  	}
 24868  	if zStateDb != 0 && int32(*(*uint8)(unsafe.Pointer(zStateDb))) == 0 {
 24869  		zStateDb = uintptr(0)
 24870  	}
 24871  
 24872  	pRbu = sqlite3.Xsqlite3rbu_vacuum(tls, zTarget, zStateDb)
 24873  	tcl.XTcl_CreateObjCommand(tls, interp, zCmd, *(*uintptr)(unsafe.Pointer(&struct {
 24874  		f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
 24875  	}{test_sqlite3rbu_cmd})), pRbu, uintptr(0))
 24876  	tcl.XTcl_SetObjResult(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 24877  	return TCL_OK
 24878  }
 24879  
 24880  func test_sqlite3rbu_create_vfs(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 24881  	var zName uintptr
 24882  	var zParent uintptr
 24883  	var rc int32
 24884  
 24885  	if objc != 3 && objc != 4 {
 24886  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+9739)
 24887  		return TCL_ERROR
 24888  	}
 24889  
 24890  	zName = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(objc-2)*8)))
 24891  	zParent = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(objc-1)*8)))
 24892  	if int32(*(*uint8)(unsafe.Pointer(zParent))) == 0 {
 24893  		zParent = uintptr(0)
 24894  	}
 24895  
 24896  	rc = sqlite3.Xsqlite3rbu_create_vfs(tls, zName, zParent)
 24897  	if rc != SQLITE_OK {
 24898  		tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3ErrName(tls, rc), -1))
 24899  		return TCL_ERROR
 24900  	} else if objc == 4 {
 24901  		var pVfs uintptr = sqlite3.Xsqlite3_vfs_find(tls, zName)
 24902  		sqlite3.Xsqlite3_vfs_register(tls, pVfs, 1)
 24903  	}
 24904  
 24905  	tcl.XTcl_ResetResult(tls, interp)
 24906  	return TCL_OK
 24907  }
 24908  
 24909  func test_sqlite3rbu_destroy_vfs(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 24910  	var zName uintptr
 24911  
 24912  	if objc != 2 {
 24913  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+9762)
 24914  		return TCL_ERROR
 24915  	}
 24916  
 24917  	zName = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 24918  	sqlite3.Xsqlite3rbu_destroy_vfs(tls, zName)
 24919  	return TCL_OK
 24920  }
 24921  
 24922  func test_sqlite3rbu_internal_test(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 24923  	bp := tls.Alloc(16)
 24924  	defer tls.Free(16)
 24925  
 24926  	var db uintptr
 24927  
 24928  	if objc != 1 {
 24929  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+584)
 24930  		return TCL_ERROR
 24931  	}
 24932  
 24933  	db = sqlite3.Xsqlite3rbu_db(tls, uintptr(0), 0)
 24934  	if db != uintptr(0) {
 24935  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+9767, 0))
 24936  		return TCL_ERROR
 24937  	}
 24938  
 24939  	return TCL_OK
 24940  }
 24941  
 24942  func SqliteRbu_Init(tls *libc.TLS, interp uintptr) int32 {
 24943  	var i int32
 24944  	for i = 0; uint64(i) < uint64(unsafe.Sizeof(aObjCmd))/uint64(unsafe.Sizeof(struct {
 24945  		FzName uintptr
 24946  		FxProc uintptr
 24947  	}{})); i++ {
 24948  		tcl.XTcl_CreateObjCommand(tls, interp, aObjCmd[i].FzName, aObjCmd[i].FxProc, uintptr(0), uintptr(0))
 24949  	}
 24950  	return TCL_OK
 24951  }
 24952  
 24953  var aObjCmd = [5]struct {
 24954  	FzName uintptr
 24955  	FxProc uintptr
 24956  }{
 24957  	{FzName: ts + 9790, FxProc: 0},
 24958  	{FzName: ts + 9801, FxProc: 0},
 24959  	{FzName: ts + 9819, FxProc: 0},
 24960  	{FzName: ts + 9841, FxProc: 0},
 24961  	{FzName: ts + 9864, FxProc: 0},
 24962  }
 24963  
 24964  type sqlite31 = sqlite32
 24965  
 24966  type sqlite3_str = sqlite3_str1
 24967  
 24968  type uint8_t = uint8
 24969  type uint16_t = uint16
 24970  type uint32_t = uint32
 24971  type uint64_t = uint64
 24972  
 24973  type int_least8_t = int8
 24974  type int_least16_t = int16
 24975  type int_least32_t = int32
 24976  type int_least64_t = int64
 24977  
 24978  type uint_least8_t = uint8
 24979  type uint_least16_t = uint16
 24980  type uint_least32_t = uint32
 24981  type uint_least64_t = uint64
 24982  
 24983  type int_fast8_t = int8
 24984  type int_fast16_t = int64
 24985  type int_fast32_t = int64
 24986  type int_fast64_t = int64
 24987  
 24988  type uint_fast8_t = uint8
 24989  type uint_fast16_t = uint64
 24990  type uint_fast32_t = uint64
 24991  type uint_fast64_t = uint64
 24992  type uintptr_t = uint64
 24993  
 24994  type intmax_t = int64
 24995  type uintmax_t = uint64
 24996  
 24997  type imaxdiv_t = struct {
 24998  	Fquot int64
 24999  	Frem  int64
 25000  }
 25001  
 25002  type Hash1 = struct {
 25003  	Fhtsize uint32
 25004  	Fcount  uint32
 25005  	Ffirst  uintptr
 25006  	Fht     uintptr
 25007  }
 25008  
 25009  type Hash = Hash1
 25010  type HashElem1 = struct {
 25011  	Fnext uintptr
 25012  	Fprev uintptr
 25013  	Fdata uintptr
 25014  	FpKey uintptr
 25015  }
 25016  
 25017  type HashElem = HashElem1
 25018  
 25019  type _ht = struct {
 25020  	Fcount       uint32
 25021  	F__ccgo_pad1 [4]byte
 25022  	Fchain       uintptr
 25023  }
 25024  
 25025  type max_align_t = struct {
 25026  	F__max_align_ll int64
 25027  	F__max_align_ld float64
 25028  }
 25029  type i16 = int16_t
 25030  type i8 = int8_t
 25031  
 25032  type tRowcnt = u32
 25033  
 25034  type LogEst = int16_t
 25035  
 25036  type uptr = uintptr_t
 25037  
 25038  type BusyHandler1 = struct {
 25039  	FxBusyHandler uintptr
 25040  	FpBusyArg     uintptr
 25041  	FnBusy        int32
 25042  	F__ccgo_pad1  [4]byte
 25043  }
 25044  
 25045  type BusyHandler = BusyHandler1
 25046  
 25047  type AggInfo1 = struct {
 25048  	FdirectMode     u8
 25049  	FuseSortingIdx  u8
 25050  	F__ccgo_pad1    [2]byte
 25051  	FsortingIdx     int32
 25052  	FsortingIdxPTab int32
 25053  	FnSortingColumn int32
 25054  	FmnReg          int32
 25055  	FmxReg          int32
 25056  	FpGroupBy       uintptr
 25057  	FaCol           uintptr
 25058  	FnColumn        int32
 25059  	FnAccumulator   int32
 25060  	FaFunc          uintptr
 25061  	FnFunc          int32
 25062  	FselId          u32
 25063  }
 25064  
 25065  type AggInfo = AggInfo1
 25066  type AuthContext1 = struct {
 25067  	FzAuthContext uintptr
 25068  	FpParse       uintptr
 25069  }
 25070  
 25071  type AuthContext = AuthContext1
 25072  type AutoincInfo1 = struct {
 25073  	FpNext  uintptr
 25074  	FpTab   uintptr
 25075  	FiDb    int32
 25076  	FregCtr int32
 25077  }
 25078  
 25079  type AutoincInfo = AutoincInfo1
 25080  type CollSeq1 = struct {
 25081  	FzName       uintptr
 25082  	Fenc         u8
 25083  	F__ccgo_pad1 [7]byte
 25084  	FpUser       uintptr
 25085  	FxCmp        uintptr
 25086  	FxDel        uintptr
 25087  }
 25088  
 25089  type CollSeq = CollSeq1
 25090  type Column1 = struct {
 25091  	FzCnName     uintptr
 25092  	FnotNull     uint8
 25093  	F__ccgo_pad1 [1]byte
 25094  	Faffinity    uint8
 25095  	FszEst       u8
 25096  	FhName       u8
 25097  	F__ccgo_pad2 [1]byte
 25098  	FiDflt       u16
 25099  	FcolFlags    u16
 25100  	F__ccgo_pad3 [6]byte
 25101  }
 25102  
 25103  type Column = Column1
 25104  type Cte1 = struct {
 25105  	FzName       uintptr
 25106  	FpCols       uintptr
 25107  	FpSelect     uintptr
 25108  	FzCteErr     uintptr
 25109  	FpUse        uintptr
 25110  	FeM10d       u8
 25111  	F__ccgo_pad1 [7]byte
 25112  }
 25113  
 25114  type Cte = Cte1
 25115  type CteUse1 = struct {
 25116  	FnUse        int32
 25117  	FaddrM9e     int32
 25118  	FregRtn      int32
 25119  	FiCur        int32
 25120  	FnRowEst     LogEst
 25121  	FeM10d       u8
 25122  	F__ccgo_pad1 [1]byte
 25123  }
 25124  
 25125  type CteUse = CteUse1
 25126  type Db1 = struct {
 25127  	FzDbSName     uintptr
 25128  	FpBt          uintptr
 25129  	Fsafety_level u8
 25130  	FbSyncSet     u8
 25131  	F__ccgo_pad1  [6]byte
 25132  	FpSchema      uintptr
 25133  }
 25134  
 25135  type Db = Db1
 25136  type DbFixer1 = struct {
 25137  	FpParse      uintptr
 25138  	Fw           Walker
 25139  	FpSchema     uintptr
 25140  	FbTemp       u8
 25141  	F__ccgo_pad1 [7]byte
 25142  	FzDb         uintptr
 25143  	FzType       uintptr
 25144  	FpName       uintptr
 25145  }
 25146  
 25147  type DbFixer = DbFixer1
 25148  type Schema1 = struct {
 25149  	Fschema_cookie int32
 25150  	FiGeneration   int32
 25151  	FtblHash       Hash
 25152  	FidxHash       Hash
 25153  	FtrigHash      Hash
 25154  	FfkeyHash      Hash
 25155  	FpSeqTab       uintptr
 25156  	Ffile_format   u8
 25157  	Fenc           u8
 25158  	FschemaFlags   u16
 25159  	Fcache_size    int32
 25160  }
 25161  
 25162  type Schema = Schema1
 25163  type Expr1 = struct {
 25164  	Fop          u8
 25165  	FaffExpr     uint8
 25166  	Fop2         u8
 25167  	F__ccgo_pad1 [1]byte
 25168  	Fflags       u32
 25169  	Fu           struct{ FzToken uintptr }
 25170  	FpLeft       uintptr
 25171  	FpRight      uintptr
 25172  	Fx           struct{ FpList uintptr }
 25173  	FnHeight     int32
 25174  	FiTable      int32
 25175  	FiColumn     ynVar
 25176  	FiAgg        i16
 25177  	Fw           struct{ FiJoin int32 }
 25178  	FpAggInfo    uintptr
 25179  	Fy           struct{ FpTab uintptr }
 25180  }
 25181  
 25182  type Expr = Expr1
 25183  type ExprList1 = struct {
 25184  	FnExpr  int32
 25185  	FnAlloc int32
 25186  	Fa      [1]struct {
 25187  		FpExpr  uintptr
 25188  		FzEName uintptr
 25189  		Ffg     struct {
 25190  			F__ccgo_pad1 [0]uint32
 25191  			FsortFlags   u8
 25192  			F__ccgo_pad2 [3]byte
 25193  			FeEName      uint16
 25194  			F__ccgo_pad3 [2]byte
 25195  		}
 25196  		Fu struct {
 25197  			F__ccgo_pad1 [0]uint32
 25198  			Fx           struct {
 25199  				FiOrderByCol u16
 25200  				FiAlias      u16
 25201  			}
 25202  		}
 25203  		F__ccgo_pad1 [4]byte
 25204  	}
 25205  }
 25206  
 25207  type ExprList = ExprList1
 25208  type FKey1 = struct {
 25209  	FpFrom       uintptr
 25210  	FpNextFrom   uintptr
 25211  	FzTo         uintptr
 25212  	FpNextTo     uintptr
 25213  	FpPrevTo     uintptr
 25214  	FnCol        int32
 25215  	FisDeferred  u8
 25216  	FaAction     [2]u8
 25217  	F__ccgo_pad1 [1]byte
 25218  	FapTrigger   [2]uintptr
 25219  	FaCol        [1]struct {
 25220  		FiFrom       int32
 25221  		F__ccgo_pad1 [4]byte
 25222  		FzCol        uintptr
 25223  	}
 25224  }
 25225  
 25226  type FKey = FKey1
 25227  type FuncDestructor1 = struct {
 25228  	FnRef        int32
 25229  	F__ccgo_pad1 [4]byte
 25230  	FxDestroy    uintptr
 25231  	FpUserData   uintptr
 25232  }
 25233  
 25234  type FuncDestructor = FuncDestructor1
 25235  type FuncDef1 = struct {
 25236  	FnArg        i8
 25237  	F__ccgo_pad1 [3]byte
 25238  	FfuncFlags   u32
 25239  	FpUserData   uintptr
 25240  	FpNext       uintptr
 25241  	FxSFunc      uintptr
 25242  	FxFinalize   uintptr
 25243  	FxValue      uintptr
 25244  	FxInverse    uintptr
 25245  	FzName       uintptr
 25246  	Fu           struct{ FpHash uintptr }
 25247  }
 25248  
 25249  type FuncDef = FuncDef1
 25250  type FuncDefHash1 = struct{ Fa [23]uintptr }
 25251  
 25252  type FuncDefHash = FuncDefHash1
 25253  type IdList1 = struct {
 25254  	FnId         int32
 25255  	FeU4         u8
 25256  	F__ccgo_pad1 [3]byte
 25257  	Fa           [1]struct {
 25258  		FzName uintptr
 25259  		Fu4    struct {
 25260  			F__ccgo_pad1 [0]uint64
 25261  			Fidx         int32
 25262  			F__ccgo_pad2 [4]byte
 25263  		}
 25264  	}
 25265  }
 25266  
 25267  type IdList = IdList1
 25268  type Index1 = struct {
 25269  	FzName         uintptr
 25270  	FaiColumn      uintptr
 25271  	FaiRowLogEst   uintptr
 25272  	FpTable        uintptr
 25273  	FzColAff       uintptr
 25274  	FpNext         uintptr
 25275  	FpSchema       uintptr
 25276  	FaSortOrder    uintptr
 25277  	FazColl        uintptr
 25278  	FpPartIdxWhere uintptr
 25279  	FaColExpr      uintptr
 25280  	Ftnum          Pgno
 25281  	FszIdxRow      LogEst
 25282  	FnKeyCol       u16
 25283  	FnColumn       u16
 25284  	FonError       u8
 25285  	F__ccgo_pad1   [1]byte
 25286  	FidxType       uint16
 25287  	F__ccgo_pad2   [2]byte
 25288  	FnSample       int32
 25289  	FnSampleCol    int32
 25290  	FaAvgEq        uintptr
 25291  	FaSample       uintptr
 25292  	FaiRowEst      uintptr
 25293  	FnRowEst0      tRowcnt
 25294  	F__ccgo_pad3   [4]byte
 25295  	FcolNotIdxed   Bitmask
 25296  }
 25297  
 25298  type Index = Index1
 25299  type IndexSample1 = struct {
 25300  	Fp           uintptr
 25301  	Fn           int32
 25302  	F__ccgo_pad1 [4]byte
 25303  	FanEq        uintptr
 25304  	FanLt        uintptr
 25305  	FanDLt       uintptr
 25306  }
 25307  
 25308  type IndexSample = IndexSample1
 25309  type KeyInfo1 = struct {
 25310  	FnRef        u32
 25311  	Fenc         u8
 25312  	F__ccgo_pad1 [1]byte
 25313  	FnKeyField   u16
 25314  	FnAllField   u16
 25315  	F__ccgo_pad2 [6]byte
 25316  	Fdb          uintptr
 25317  	FaSortFlags  uintptr
 25318  	FaColl       [1]uintptr
 25319  }
 25320  
 25321  type KeyInfo = KeyInfo1
 25322  type Lookaside1 = struct {
 25323  	FbDisable    u32
 25324  	Fsz          u16
 25325  	FszTrue      u16
 25326  	FbMalloced   u8
 25327  	F__ccgo_pad1 [3]byte
 25328  	FnSlot       u32
 25329  	FanStat      [3]u32
 25330  	F__ccgo_pad2 [4]byte
 25331  	FpInit       uintptr
 25332  	FpFree       uintptr
 25333  	FpSmallInit  uintptr
 25334  	FpSmallFree  uintptr
 25335  	FpMiddle     uintptr
 25336  	FpStart      uintptr
 25337  	FpEnd        uintptr
 25338  }
 25339  
 25340  type Lookaside = Lookaside1
 25341  type LookasideSlot1 = struct{ FpNext uintptr }
 25342  
 25343  type LookasideSlot = LookasideSlot1
 25344  type Module1 = struct {
 25345  	FpModule     uintptr
 25346  	FzName       uintptr
 25347  	FnRefModule  int32
 25348  	F__ccgo_pad1 [4]byte
 25349  	FpAux        uintptr
 25350  	FxDestroy    uintptr
 25351  	FpEpoTab     uintptr
 25352  }
 25353  
 25354  type Module = Module1
 25355  type NameContext1 = struct {
 25356  	FpParse      uintptr
 25357  	FpSrcList    uintptr
 25358  	FuNC         struct{ FpEList uintptr }
 25359  	FpNext       uintptr
 25360  	FnRef        int32
 25361  	FnNcErr      int32
 25362  	FncFlags     int32
 25363  	F__ccgo_pad1 [4]byte
 25364  	FpWinSelect  uintptr
 25365  }
 25366  
 25367  type NameContext = NameContext1
 25368  type OnOrUsing1 = struct {
 25369  	FpOn    uintptr
 25370  	FpUsing uintptr
 25371  }
 25372  
 25373  type OnOrUsing = OnOrUsing1
 25374  type Parse1 = struct {
 25375  	Fdb               uintptr
 25376  	FzErrMsg          uintptr
 25377  	FpVdbe            uintptr
 25378  	Frc               int32
 25379  	FcolNamesSet      u8
 25380  	FcheckSchema      u8
 25381  	Fnested           u8
 25382  	FnTempReg         u8
 25383  	FisMultiWrite     u8
 25384  	FmayAbort         u8
 25385  	FhasCompound      u8
 25386  	FokConstFactor    u8
 25387  	FdisableLookaside u8
 25388  	FdisableVtab      u8
 25389  	FwithinRJSubrtn   u8
 25390  	F__ccgo_pad1      [1]byte
 25391  	FnRangeReg        int32
 25392  	FiRangeReg        int32
 25393  	FnErr             int32
 25394  	FnTab             int32
 25395  	FnMem             int32
 25396  	FszOpAlloc        int32
 25397  	FiSelfTab         int32
 25398  	FnLabel           int32
 25399  	FnLabelAlloc      int32
 25400  	F__ccgo_pad2      [4]byte
 25401  	FaLabel           uintptr
 25402  	FpConstExpr       uintptr
 25403  	FconstraintName   Token
 25404  	FwriteMask        yDbMask
 25405  	FcookieMask       yDbMask
 25406  	FregRowid         int32
 25407  	FregRoot          int32
 25408  	FnMaxArg          int32
 25409  	FnSelect          int32
 25410  	FnTableLock       int32
 25411  	F__ccgo_pad3      [4]byte
 25412  	FaTableLock       uintptr
 25413  	FpAinc            uintptr
 25414  	FpToplevel        uintptr
 25415  	FpTriggerTab      uintptr
 25416  	FpTriggerPrg      uintptr
 25417  	FpCleanup         uintptr
 25418  	Fu1               struct {
 25419  		F__ccgo_pad1 [0]uint64
 25420  		FaddrCrTab   int32
 25421  		F__ccgo_pad2 [4]byte
 25422  	}
 25423  	FnQueryLoop      u32
 25424  	Foldmask         u32
 25425  	Fnewmask         u32
 25426  	FeTriggerOp      u8
 25427  	FbReturning      u8
 25428  	FeOrconf         u8
 25429  	FdisableTriggers u8
 25430  	FaTempReg        [8]int32
 25431  	FpOuterParse     uintptr
 25432  	FsNameToken      Token
 25433  	FsLastToken      Token
 25434  	FnVar            ynVar
 25435  	FiPkSortOrder    u8
 25436  	Fexplain         u8
 25437  	FeParseMode      u8
 25438  	F__ccgo_pad4     [3]byte
 25439  	FnVtabLock       int32
 25440  	FnHeight         int32
 25441  	FaddrExplain     int32
 25442  	F__ccgo_pad5     [4]byte
 25443  	FpVList          uintptr
 25444  	FpReprepare      uintptr
 25445  	FzTail           uintptr
 25446  	FpNewTable       uintptr
 25447  	FpNewIndex       uintptr
 25448  	FpNewTrigger     uintptr
 25449  	FzAuthContext    uintptr
 25450  	FsArg            Token
 25451  	FapVtabLock      uintptr
 25452  	FpWith           uintptr
 25453  	FpRename         uintptr
 25454  }
 25455  
 25456  type Parse = Parse1
 25457  type ParseCleanup1 = struct {
 25458  	FpNext    uintptr
 25459  	FpPtr     uintptr
 25460  	FxCleanup uintptr
 25461  }
 25462  
 25463  type ParseCleanup = ParseCleanup1
 25464  type PreUpdate1 = struct {
 25465  	Fv            uintptr
 25466  	FpCsr         uintptr
 25467  	Fop           int32
 25468  	F__ccgo_pad1  [4]byte
 25469  	FaRecord      uintptr
 25470  	Fkeyinfo      KeyInfo
 25471  	FpUnpacked    uintptr
 25472  	FpNewUnpacked uintptr
 25473  	FiNewReg      int32
 25474  	FiBlobWrite   int32
 25475  	FiKey1        i64
 25476  	FiKey2        i64
 25477  	FaNew         uintptr
 25478  	FpTab         uintptr
 25479  	FpPk          uintptr
 25480  }
 25481  
 25482  type PrintfArguments1 = struct {
 25483  	FnArg  int32
 25484  	FnUsed int32
 25485  	FapArg uintptr
 25486  }
 25487  
 25488  type PrintfArguments = PrintfArguments1
 25489  type Returning1 = struct {
 25490  	FpParse      uintptr
 25491  	FpReturnEL   uintptr
 25492  	FretTrig     Trigger
 25493  	FretTStep    TriggerStep
 25494  	FiRetCur     int32
 25495  	FnRetCol     int32
 25496  	FiRetReg     int32
 25497  	F__ccgo_pad1 [4]byte
 25498  }
 25499  
 25500  type Returning = Returning1
 25501  type Savepoint1 = struct {
 25502  	FzName            uintptr
 25503  	FnDeferredCons    i64
 25504  	FnDeferredImmCons i64
 25505  	FpNext            uintptr
 25506  }
 25507  
 25508  type Savepoint = Savepoint1
 25509  type Select1 = struct {
 25510  	Fop           u8
 25511  	F__ccgo_pad1  [1]byte
 25512  	FnSelectRow   LogEst
 25513  	FselFlags     u32
 25514  	FiLimit       int32
 25515  	FiOffset      int32
 25516  	FselId        u32
 25517  	FaddrOpenEphm [2]int32
 25518  	F__ccgo_pad2  [4]byte
 25519  	FpEList       uintptr
 25520  	FpSrc         uintptr
 25521  	FpWhere       uintptr
 25522  	FpGroupBy     uintptr
 25523  	FpHaving      uintptr
 25524  	FpOrderBy     uintptr
 25525  	FpPrior       uintptr
 25526  	FpNext        uintptr
 25527  	FpLimit       uintptr
 25528  	FpWith        uintptr
 25529  	FpWin         uintptr
 25530  	FpWinDefn     uintptr
 25531  }
 25532  
 25533  type Select = Select1
 25534  type SelectDest1 = struct {
 25535  	FeDest       u8
 25536  	F__ccgo_pad1 [3]byte
 25537  	FiSDParm     int32
 25538  	FiSDParm2    int32
 25539  	FiSdst       int32
 25540  	FnSdst       int32
 25541  	F__ccgo_pad2 [4]byte
 25542  	FzAffSdst    uintptr
 25543  	FpOrderBy    uintptr
 25544  }
 25545  
 25546  type SelectDest = SelectDest1
 25547  type SrcItem1 = struct {
 25548  	FpSchema     uintptr
 25549  	FzDatabase   uintptr
 25550  	FzName       uintptr
 25551  	FzAlias      uintptr
 25552  	FpTab        uintptr
 25553  	FpSelect     uintptr
 25554  	FaddrFillSub int32
 25555  	FregReturn   int32
 25556  	FregResult   int32
 25557  	Ffg          struct {
 25558  		F__ccgo_pad1 [0]uint32
 25559  		Fjointype    u8
 25560  		F__ccgo_pad2 [3]byte
 25561  		FnotIndexed  uint16
 25562  		F__ccgo_pad3 [2]byte
 25563  	}
 25564  	FiCursor int32
 25565  	Fu3      struct{ FpOn uintptr }
 25566  	FcolUsed Bitmask
 25567  	Fu1      struct{ FzIndexedBy uintptr }
 25568  	Fu2      struct{ FpIBIndex uintptr }
 25569  }
 25570  
 25571  type SrcItem = SrcItem1
 25572  type SrcList1 = struct {
 25573  	FnSrc   int32
 25574  	FnAlloc u32
 25575  	Fa      [1]SrcItem
 25576  }
 25577  
 25578  type SrcList = SrcList1
 25579  type StrAccum = sqlite3_str1
 25580  type Table1 = struct {
 25581  	FzName      uintptr
 25582  	FaCol       uintptr
 25583  	FpIndex     uintptr
 25584  	FzColAff    uintptr
 25585  	FpCheck     uintptr
 25586  	Ftnum       Pgno
 25587  	FnTabRef    u32
 25588  	FtabFlags   u32
 25589  	FiPKey      i16
 25590  	FnCol       i16
 25591  	FnNVCol     i16
 25592  	FnRowLogEst LogEst
 25593  	FszTabRow   LogEst
 25594  	FkeyConf    u8
 25595  	FeTabType   u8
 25596  	Fu          struct {
 25597  		Ftab struct {
 25598  			FaddColOffset int32
 25599  			F__ccgo_pad1  [4]byte
 25600  			FpFKey        uintptr
 25601  			FpDfltList    uintptr
 25602  		}
 25603  	}
 25604  	FpTrigger uintptr
 25605  	FpSchema  uintptr
 25606  }
 25607  
 25608  type Table = Table1
 25609  type Token1 = struct {
 25610  	Fz           uintptr
 25611  	Fn           uint32
 25612  	F__ccgo_pad1 [4]byte
 25613  }
 25614  
 25615  type Token = Token1
 25616  type Trigger1 = struct {
 25617  	FzName       uintptr
 25618  	Ftable       uintptr
 25619  	Fop          u8
 25620  	Ftr_tm       u8
 25621  	FbReturning  u8
 25622  	F__ccgo_pad1 [5]byte
 25623  	FpWhen       uintptr
 25624  	FpColumns    uintptr
 25625  	FpSchema     uintptr
 25626  	FpTabSchema  uintptr
 25627  	Fstep_list   uintptr
 25628  	FpNext       uintptr
 25629  }
 25630  
 25631  type Trigger = Trigger1
 25632  type TriggerPrg1 = struct {
 25633  	FpTrigger    uintptr
 25634  	FpNext       uintptr
 25635  	FpProgram    uintptr
 25636  	Forconf      int32
 25637  	FaColmask    [2]u32
 25638  	F__ccgo_pad1 [4]byte
 25639  }
 25640  
 25641  type TriggerPrg = TriggerPrg1
 25642  type TriggerStep1 = struct {
 25643  	Fop          u8
 25644  	Forconf      u8
 25645  	F__ccgo_pad1 [6]byte
 25646  	FpTrig       uintptr
 25647  	FpSelect     uintptr
 25648  	FzTarget     uintptr
 25649  	FpFrom       uintptr
 25650  	FpWhere      uintptr
 25651  	FpExprList   uintptr
 25652  	FpIdList     uintptr
 25653  	FpUpsert     uintptr
 25654  	FzSpan       uintptr
 25655  	FpNext       uintptr
 25656  	FpLast       uintptr
 25657  }
 25658  
 25659  type TriggerStep = TriggerStep1
 25660  type UnpackedRecord1 = struct {
 25661  	FpKeyInfo    uintptr
 25662  	FaMem        uintptr
 25663  	Fu           struct{ Fz uintptr }
 25664  	Fn           int32
 25665  	FnField      u16
 25666  	Fdefault_rc  i8
 25667  	FerrCode     u8
 25668  	Fr1          i8
 25669  	Fr2          i8
 25670  	FeqSeen      u8
 25671  	F__ccgo_pad1 [5]byte
 25672  }
 25673  
 25674  type UnpackedRecord = UnpackedRecord1
 25675  type Upsert1 = struct {
 25676  	FpUpsertTarget      uintptr
 25677  	FpUpsertTargetWhere uintptr
 25678  	FpUpsertSet         uintptr
 25679  	FpUpsertWhere       uintptr
 25680  	FpNextUpsert        uintptr
 25681  	FisDoUpdate         u8
 25682  	F__ccgo_pad1        [7]byte
 25683  	FpToFree            uintptr
 25684  	FpUpsertIdx         uintptr
 25685  	FpUpsertSrc         uintptr
 25686  	FregData            int32
 25687  	FiDataCur           int32
 25688  	FiIdxCur            int32
 25689  	F__ccgo_pad2        [4]byte
 25690  }
 25691  
 25692  type Upsert = Upsert1
 25693  type VTable1 = struct {
 25694  	Fdb          uintptr
 25695  	FpMod        uintptr
 25696  	FpVtab       uintptr
 25697  	FnRef        int32
 25698  	FbConstraint u8
 25699  	FeVtabRisk   u8
 25700  	F__ccgo_pad1 [2]byte
 25701  	FiSavepoint  int32
 25702  	F__ccgo_pad2 [4]byte
 25703  	FpNext       uintptr
 25704  }
 25705  
 25706  type VTable = VTable1
 25707  type Walker1 = struct {
 25708  	FpParse           uintptr
 25709  	FxExprCallback    uintptr
 25710  	FxSelectCallback  uintptr
 25711  	FxSelectCallback2 uintptr
 25712  	FwalkerDepth      int32
 25713  	FeCode            u16
 25714  	F__ccgo_pad1      [2]byte
 25715  	Fu                struct{ FpNC uintptr }
 25716  }
 25717  
 25718  type Walker = Walker1
 25719  type Window1 = struct {
 25720  	FzName          uintptr
 25721  	FzBase          uintptr
 25722  	FpPartition     uintptr
 25723  	FpOrderBy       uintptr
 25724  	FeFrmType       u8
 25725  	FeStart         u8
 25726  	FeEnd           u8
 25727  	FbImplicitFrame u8
 25728  	FeExclude       u8
 25729  	F__ccgo_pad1    [3]byte
 25730  	FpStart         uintptr
 25731  	FpEnd           uintptr
 25732  	FppThis         uintptr
 25733  	FpNextWin       uintptr
 25734  	FpFilter        uintptr
 25735  	FpWFunc         uintptr
 25736  	FiEphCsr        int32
 25737  	FregAccum       int32
 25738  	FregResult      int32
 25739  	FcsrApp         int32
 25740  	FregApp         int32
 25741  	FregPart        int32
 25742  	FpOwner         uintptr
 25743  	FnBufferCol     int32
 25744  	FiArgCol        int32
 25745  	FregOne         int32
 25746  	FregStartRowid  int32
 25747  	FregEndRowid    int32
 25748  	FbExprArgs      u8
 25749  	F__ccgo_pad2    [3]byte
 25750  }
 25751  
 25752  type Window = Window1
 25753  type With1 = struct {
 25754  	FnCte   int32
 25755  	FbView  int32
 25756  	FpOuter uintptr
 25757  	Fa      [1]Cte
 25758  }
 25759  
 25760  type With = With1
 25761  
 25762  type Bitmask = u64
 25763  
 25764  type VList = int32
 25765  
 25766  type Pgno = u32
 25767  
 25768  type PgHdr1 = struct {
 25769  	FpPage      uintptr
 25770  	FpData      uintptr
 25771  	FpExtra     uintptr
 25772  	FpCache     uintptr
 25773  	FpDirty     uintptr
 25774  	FpPager     uintptr
 25775  	Fpgno       Pgno
 25776  	Fflags      u16
 25777  	FnRef       i16
 25778  	FpDirtyNext uintptr
 25779  	FpDirtyPrev uintptr
 25780  }
 25781  
 25782  type DbPage = PgHdr1
 25783  
 25784  type Btree1 = struct {
 25785  	Fdb             uintptr
 25786  	FpBt            uintptr
 25787  	FinTrans        u8
 25788  	Fsharable       u8
 25789  	Flocked         u8
 25790  	FhasIncrblobCur u8
 25791  	FwantToLock     int32
 25792  	FnBackup        int32
 25793  	FiBDataVersion  u32
 25794  	FpNext          uintptr
 25795  	FpPrev          uintptr
 25796  	Flock           BtLock
 25797  }
 25798  
 25799  type BtCursor1 = struct {
 25800  	FeState        u8
 25801  	FcurFlags      u8
 25802  	FcurPagerFlags u8
 25803  	Fhints         u8
 25804  	FskipNext      int32
 25805  	FpBtree        uintptr
 25806  	FaOverflow     uintptr
 25807  	FpKey          uintptr
 25808  	FpBt           uintptr
 25809  	FpNext         uintptr
 25810  	Finfo          CellInfo
 25811  	FnKey          i64
 25812  	FpgnoRoot      Pgno
 25813  	FiPage         i8
 25814  	FcurIntKey     u8
 25815  	Fix            u16
 25816  	FaiIdx         [19]u16
 25817  	F__ccgo_pad1   [2]byte
 25818  	FpKeyInfo      uintptr
 25819  	FpPage         uintptr
 25820  	FapPage        [19]uintptr
 25821  }
 25822  
 25823  type BtShared1 = struct {
 25824  	FpPager          uintptr
 25825  	Fdb              uintptr
 25826  	FpCursor         uintptr
 25827  	FpPage1          uintptr
 25828  	FopenFlags       u8
 25829  	FautoVacuum      u8
 25830  	FincrVacuum      u8
 25831  	FbDoTruncate     u8
 25832  	FinTransaction   u8
 25833  	Fmax1bytePayload u8
 25834  	FnReserveWanted  u8
 25835  	F__ccgo_pad1     [1]byte
 25836  	FbtsFlags        u16
 25837  	FmaxLocal        u16
 25838  	FminLocal        u16
 25839  	FmaxLeaf         u16
 25840  	FminLeaf         u16
 25841  	F__ccgo_pad2     [2]byte
 25842  	FpageSize        u32
 25843  	FusableSize      u32
 25844  	FnTransaction    int32
 25845  	FnPage           u32
 25846  	F__ccgo_pad3     [4]byte
 25847  	FpSchema         uintptr
 25848  	FxFreeSchema     uintptr
 25849  	Fmutex           uintptr
 25850  	FpHasContent     uintptr
 25851  	FnRef            int32
 25852  	F__ccgo_pad4     [4]byte
 25853  	FpNext           uintptr
 25854  	FpLock           uintptr
 25855  	FpWriter         uintptr
 25856  	FpTmpSpace       uintptr
 25857  	FnPreformatSize  int32
 25858  	F__ccgo_pad5     [4]byte
 25859  }
 25860  
 25861  type BtreePayload1 = struct {
 25862  	FpKey        uintptr
 25863  	FnKey        sqlite3_int64
 25864  	FpData       uintptr
 25865  	FaMem        uintptr
 25866  	FnMem        u16
 25867  	F__ccgo_pad1 [2]byte
 25868  	FnData       int32
 25869  	FnZero       int32
 25870  	F__ccgo_pad2 [4]byte
 25871  }
 25872  
 25873  type BtreePayload = BtreePayload1
 25874  
 25875  type Vdbe1 = struct {
 25876  	Fdb                 uintptr
 25877  	FpPrev              uintptr
 25878  	FpNext              uintptr
 25879  	FpParse             uintptr
 25880  	FnVar               ynVar
 25881  	F__ccgo_pad1        [2]byte
 25882  	FnMem               int32
 25883  	FnCursor            int32
 25884  	FcacheCtr           u32
 25885  	Fpc                 int32
 25886  	Frc                 int32
 25887  	FnChange            i64
 25888  	FiStatement         int32
 25889  	F__ccgo_pad2        [4]byte
 25890  	FiCurrentTime       i64
 25891  	FnFkConstraint      i64
 25892  	FnStmtDefCons       i64
 25893  	FnStmtDefImmCons    i64
 25894  	FaMem               uintptr
 25895  	FapArg              uintptr
 25896  	FapCsr              uintptr
 25897  	FaVar               uintptr
 25898  	FaOp                uintptr
 25899  	FnOp                int32
 25900  	FnOpAlloc           int32
 25901  	FaColName           uintptr
 25902  	FpResultSet         uintptr
 25903  	FzErrMsg            uintptr
 25904  	FpVList             uintptr
 25905  	FstartTime          i64
 25906  	FnResColumn         u16
 25907  	FerrorAction        u8
 25908  	FminWriteFileFormat u8
 25909  	FprepFlags          u8
 25910  	FeVdbeState         u8
 25911  	F__ccgo_pad3        [2]byte
 25912  	Fexpired            uint8
 25913  	F__ccgo_pad4        [3]byte
 25914  	FbtreeMask          yDbMask
 25915  	FlockMask           yDbMask
 25916  	FaCounter           [9]u32
 25917  	FzSql               uintptr
 25918  	FpFree              uintptr
 25919  	FpFrame             uintptr
 25920  	FpDelFrame          uintptr
 25921  	FnFrame             int32
 25922  	Fexpmask            u32
 25923  	FpProgram           uintptr
 25924  	FpAuxData           uintptr
 25925  }
 25926  
 25927  type SubProgram1 = struct {
 25928  	FaOp         uintptr
 25929  	FnOp         int32
 25930  	FnMem        int32
 25931  	FnCsr        int32
 25932  	F__ccgo_pad1 [4]byte
 25933  	FaOnce       uintptr
 25934  	Ftoken       uintptr
 25935  	FpNext       uintptr
 25936  }
 25937  
 25938  type SubProgram = SubProgram1
 25939  
 25940  type VdbeOp1 = struct {
 25941  	Fopcode u8
 25942  	Fp4type int8
 25943  	Fp5     u16
 25944  	Fp1     int32
 25945  	Fp2     int32
 25946  	Fp3     int32
 25947  	Fp4     struct {
 25948  		F__ccgo_pad1 [0]uint64
 25949  		Fi           int32
 25950  		F__ccgo_pad2 [4]byte
 25951  	}
 25952  	FzComment uintptr
 25953  }
 25954  
 25955  type p4union = struct {
 25956  	F__ccgo_pad1 [0]uint64
 25957  	Fi           int32
 25958  	F__ccgo_pad2 [4]byte
 25959  }
 25960  
 25961  type VdbeOp = VdbeOp1
 25962  
 25963  type VdbeOpList1 = struct {
 25964  	Fopcode u8
 25965  	Fp1     int8
 25966  	Fp2     int8
 25967  	Fp3     int8
 25968  }
 25969  
 25970  type VdbeOpList = VdbeOpList1
 25971  
 25972  type RecordCompare = uintptr
 25973  
 25974  type PgHdr = PgHdr1
 25975  
 25976  type sqlite3_xauth = uintptr
 25977  
 25978  type sqlite3InitInfo = struct {
 25979  	FnewTnum       Pgno
 25980  	FiDb           u8
 25981  	Fbusy          u8
 25982  	F__ccgo_pad1   [2]byte
 25983  	ForphanTrigger uint8
 25984  	F__ccgo_pad2   [7]byte
 25985  	FazInit        uintptr
 25986  }
 25987  
 25988  type sColMap = struct {
 25989  	FiFrom       int32
 25990  	F__ccgo_pad1 [4]byte
 25991  	FzCol        uintptr
 25992  }
 25993  
 25994  type AggInfo_col = struct {
 25995  	FpTab          uintptr
 25996  	FpCExpr        uintptr
 25997  	FiTable        int32
 25998  	FiMem          int32
 25999  	FiColumn       i16
 26000  	FiSorterColumn i16
 26001  	F__ccgo_pad1   [4]byte
 26002  }
 26003  
 26004  type AggInfo_func = struct {
 26005  	FpFExpr      uintptr
 26006  	FpFunc       uintptr
 26007  	FiMem        int32
 26008  	FiDistinct   int32
 26009  	FiDistAddr   int32
 26010  	F__ccgo_pad1 [4]byte
 26011  }
 26012  
 26013  type ynVar = i16
 26014  
 26015  type ExprList_item = struct {
 26016  	FpExpr  uintptr
 26017  	FzEName uintptr
 26018  	Ffg     struct {
 26019  		F__ccgo_pad1 [0]uint32
 26020  		FsortFlags   u8
 26021  		F__ccgo_pad2 [3]byte
 26022  		FeEName      uint16
 26023  		F__ccgo_pad3 [2]byte
 26024  	}
 26025  	Fu struct {
 26026  		F__ccgo_pad1 [0]uint32
 26027  		Fx           struct {
 26028  			FiOrderByCol u16
 26029  			FiAlias      u16
 26030  		}
 26031  	}
 26032  	F__ccgo_pad1 [4]byte
 26033  }
 26034  
 26035  type IdList_item = struct {
 26036  	FzName uintptr
 26037  	Fu4    struct {
 26038  		F__ccgo_pad1 [0]uint64
 26039  		Fidx         int32
 26040  		F__ccgo_pad2 [4]byte
 26041  	}
 26042  }
 26043  
 26044  type yDbMask = uint32
 26045  
 26046  type InitData = struct {
 26047  	Fdb          uintptr
 26048  	FpzErrMsg    uintptr
 26049  	FiDb         int32
 26050  	Frc          int32
 26051  	FmInitFlags  u32
 26052  	FnInitRow    u32
 26053  	FmxPage      Pgno
 26054  	F__ccgo_pad1 [4]byte
 26055  }
 26056  
 26057  type Sqlite3Config = struct {
 26058  	FbMemstat            int32
 26059  	FbCoreMutex          u8
 26060  	FbFullMutex          u8
 26061  	FbOpenUri            u8
 26062  	FbUseCis             u8
 26063  	FbSmallMalloc        u8
 26064  	FbExtraSchemaChecks  u8
 26065  	F__ccgo_pad1         [2]byte
 26066  	FmxStrlen            int32
 26067  	FneverCorrupt        int32
 26068  	FszLookaside         int32
 26069  	FnLookaside          int32
 26070  	FnStmtSpill          int32
 26071  	Fm                   sqlite3_mem_methods
 26072  	Fmutex               sqlite3_mutex_methods
 26073  	Fpcache2             sqlite3_pcache_methods2
 26074  	FpHeap               uintptr
 26075  	FnHeap               int32
 26076  	FmnReq               int32
 26077  	FmxReq               int32
 26078  	F__ccgo_pad2         [4]byte
 26079  	FszMmap              sqlite3_int64
 26080  	FmxMmap              sqlite3_int64
 26081  	FpPage               uintptr
 26082  	FszPage              int32
 26083  	FnPage               int32
 26084  	FmxParserStack       int32
 26085  	FsharedCacheEnabled  int32
 26086  	FszPma               u32
 26087  	FisInit              int32
 26088  	FinProgress          int32
 26089  	FisMutexInit         int32
 26090  	FisMallocInit        int32
 26091  	FisPCacheInit        int32
 26092  	FnRefInitMutex       int32
 26093  	F__ccgo_pad3         [4]byte
 26094  	FpInitMutex          uintptr
 26095  	FxLog                uintptr
 26096  	FpLogArg             uintptr
 26097  	FmxMemdbSize         sqlite3_int64
 26098  	FxTestCallback       uintptr
 26099  	FbLocaltimeFault     int32
 26100  	F__ccgo_pad4         [4]byte
 26101  	FxAltLocaltime       uintptr
 26102  	FiOnceResetThreshold int32
 26103  	FszSorterRef         u32
 26104  	FiPrngSeed           uint32
 26105  	F__ccgo_pad5         [4]byte
 26106  }
 26107  
 26108  type BoxGeomCtx1 = struct {
 26109  	Finterp  uintptr
 26110  	FpScript uintptr
 26111  }
 26112  
 26113  type BoxGeomCtx = BoxGeomCtx1
 26114  
 26115  type BoxQueryCtx1 = struct {
 26116  	Finterp  uintptr
 26117  	FpScript uintptr
 26118  }
 26119  
 26120  type BoxQueryCtx = BoxQueryCtx1
 26121  
 26122  func testDelUser(tls *libc.TLS, pCtx uintptr) {
 26123  	var p uintptr = pCtx
 26124  	tcl.XTcl_EvalObjEx(tls, (*BoxGeomCtx)(unsafe.Pointer(p)).Finterp, (*BoxGeomCtx)(unsafe.Pointer(p)).FpScript, 0)
 26125  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 26126  		var _objPtr uintptr = (*BoxGeomCtx)(unsafe.Pointer(p)).FpScript
 26127  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 26128  			tcl.XTclFreeObj(tls, _objPtr)
 26129  		}
 26130  	}
 26131  	sqlite3.Xsqlite3_free(tls, p)
 26132  }
 26133  
 26134  func invokeTclGeomCb(tls *libc.TLS, zName uintptr, p uintptr, nCoord int32, aCoord uintptr) int32 {
 26135  	bp := tls.Alloc(96)
 26136  	defer tls.Free(96)
 26137  
 26138  	var rc int32 = SQLITE_OK
 26139  	if (*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FpContext != 0 {
 26140  		var pCtx uintptr = (*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FpContext
 26141  		var interp uintptr = (*BoxGeomCtx)(unsafe.Pointer(pCtx)).Finterp
 26142  		var pScript uintptr = uintptr(0)
 26143  		var pParam uintptr = uintptr(0)
 26144  		var pCoord uintptr = uintptr(0)
 26145  		var ii int32
 26146  		var pRes uintptr
 26147  
 26148  		pScript = tcl.XTcl_DuplicateObj(tls, (*BoxGeomCtx)(unsafe.Pointer(pCtx)).FpScript)
 26149  		(*Tcl_Obj)(unsafe.Pointer(pScript)).FrefCount++
 26150  		tcl.XTcl_ListObjAppendElement(tls, interp, pScript, tcl.XTcl_NewStringObj(tls, zName, -1))
 26151  
 26152  		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))
 26153  		tcl.XTcl_ListObjAppendElement(tls, interp, pScript, tcl.XTcl_NewStringObj(tls, bp+16, -1))
 26154  
 26155  		pParam = tcl.XTcl_NewObj(tls)
 26156  		for ii = 0; ii < (*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FnParam; ii++ {
 26157  			tcl.XTcl_ListObjAppendElement(tls,
 26158  				interp, pParam, tcl.XTcl_NewDoubleObj(tls, *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FaParam + uintptr(ii)*8))))
 26159  		}
 26160  		tcl.XTcl_ListObjAppendElement(tls, interp, pScript, pParam)
 26161  
 26162  		pCoord = tcl.XTcl_NewObj(tls)
 26163  		for ii = 0; ii < nCoord; ii++ {
 26164  			tcl.XTcl_ListObjAppendElement(tls, interp, pCoord, tcl.XTcl_NewDoubleObj(tls, *(*sqlite3_rtree_dbl)(unsafe.Pointer(aCoord + uintptr(ii)*8))))
 26165  		}
 26166  		tcl.XTcl_ListObjAppendElement(tls, interp, pScript, pCoord)
 26167  
 26168  		sqlite3.Xsqlite3_snprintf(tls, int32(uint64(unsafe.Sizeof([64]uint8{}))-uint64(1)), bp+16, ts+9889, libc.VaList(bp+8, p))
 26169  		tcl.XTcl_ListObjAppendElement(tls, interp, pScript, tcl.XTcl_NewStringObj(tls, bp+16, -1))
 26170  
 26171  		rc = tcl.XTcl_EvalObjEx(tls, interp, pScript, 0)
 26172  		if rc != TCL_OK {
 26173  			rc = SQLITE_ERROR
 26174  		} else {
 26175  			*(*int32)(unsafe.Pointer(bp + 80)) = 0
 26176  			*(*uintptr)(unsafe.Pointer(bp + 88)) = uintptr(0)
 26177  
 26178  			pRes = tcl.XTcl_GetObjResult(tls, interp)
 26179  			if tcl.XTcl_ListObjGetElements(tls, interp, pRes, bp+80, bp+88) != 0 {
 26180  				return TCL_ERROR
 26181  			}
 26182  			if *(*int32)(unsafe.Pointer(bp + 80)) > 0 {
 26183  				var zCmd uintptr = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 88)))))
 26184  				if 0 == sqlite3.Xsqlite3_stricmp(tls, zCmd, ts+9892) {
 26185  					*(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FaParam)) = 0.0
 26186  					(*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FnParam = 1
 26187  				} else if 0 == sqlite3.Xsqlite3_stricmp(tls, zCmd, ts+9897) {
 26188  					if (*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FpUser != 0 || (*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FxDelUser != 0 {
 26189  						rc = SQLITE_ERROR
 26190  					} else {
 26191  						var pBGCtx uintptr = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(BoxGeomCtx{})))
 26192  						if pBGCtx == uintptr(0) {
 26193  							rc = SQLITE_NOMEM
 26194  						} else {
 26195  							(*BoxGeomCtx)(unsafe.Pointer(pBGCtx)).Finterp = interp
 26196  							(*BoxGeomCtx)(unsafe.Pointer(pBGCtx)).FpScript = tcl.XTcl_DuplicateObj(tls, pRes)
 26197  							(*Tcl_Obj)(unsafe.Pointer((*BoxGeomCtx)(unsafe.Pointer(pBGCtx)).FpScript)).FrefCount++
 26198  							tcl.XTcl_ListObjReplace(tls, interp, (*BoxGeomCtx)(unsafe.Pointer(pBGCtx)).FpScript, 0, 1, 0, uintptr(0))
 26199  							(*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FpUser = pBGCtx
 26200  							(*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FxDelUser = *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{testDelUser}))
 26201  						}
 26202  					}
 26203  				} else if 0 == sqlite3.Xsqlite3_stricmp(tls, zCmd, ts+9902) {
 26204  					if (*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FpUser != 0 || (*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FxDelUser != 0 {
 26205  						rc = SQLITE_ERROR
 26206  					}
 26207  				}
 26208  			}
 26209  		}
 26210  	}
 26211  	return rc
 26212  }
 26213  
 26214  func box_geom(tls *libc.TLS, p uintptr, nCoord int32, aCoord uintptr, pRes uintptr) int32 {
 26215  	var ii int32
 26216  
 26217  	if (*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FnParam != nCoord {
 26218  		invokeTclGeomCb(tls, ts+9915, p, nCoord, aCoord)
 26219  		return SQLITE_ERROR
 26220  	}
 26221  	if invokeTclGeomCb(tls, ts+9915, p, nCoord, aCoord) != 0 {
 26222  		return SQLITE_ERROR
 26223  	}
 26224  
 26225  	for ii = 0; ii < nCoord; ii = ii + 2 {
 26226  		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)) {
 26227  			*(*int32)(unsafe.Pointer(pRes)) = 0
 26228  			return SQLITE_OK
 26229  		}
 26230  	}
 26231  
 26232  	*(*int32)(unsafe.Pointer(pRes)) = 1
 26233  
 26234  	return SQLITE_OK
 26235  }
 26236  
 26237  func register_box_geom(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 26238  	bp := tls.Alloc(80)
 26239  	defer tls.Free(80)
 26240  
 26241  	var pCtx uintptr
 26242  
 26243  	if objc != 3 {
 26244  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+9919)
 26245  		return TCL_ERROR
 26246  	}
 26247  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+8) != 0 {
 26248  		return TCL_ERROR
 26249  	}
 26250  
 26251  	pCtx = tcl.XTcl_Alloc(tls, uint32(unsafe.Sizeof(uintptr(0))))
 26252  	(*BoxGeomCtx)(unsafe.Pointer(pCtx)).Finterp = interp
 26253  	(*BoxGeomCtx)(unsafe.Pointer(pCtx)).FpScript = tcl.XTcl_DuplicateObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 26254  	(*Tcl_Obj)(unsafe.Pointer((*BoxGeomCtx)(unsafe.Pointer(pCtx)).FpScript)).FrefCount++
 26255  
 26256  	sqlite3.Xsqlite3_rtree_geometry_callback(tls, *(*uintptr)(unsafe.Pointer(bp + 8)), ts+9915, *(*uintptr)(unsafe.Pointer(&struct {
 26257  		f func(*libc.TLS, uintptr, int32, uintptr, uintptr) int32
 26258  	}{box_geom})), pCtx)
 26259  
 26260  	sqlite3.Xsqlite3_snprintf(tls, 64, bp+16, ts+9889, libc.VaList(bp, pCtx))
 26261  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, bp+16, -1))
 26262  	return TCL_OK
 26263  }
 26264  
 26265  func box_query(tls *libc.TLS, pInfo uintptr) int32 {
 26266  	bp := tls.Alloc(60)
 26267  	defer tls.Free(60)
 26268  
 26269  	*(*[4]uintptr)(unsafe.Pointer(bp)) = [4]uintptr{ts + 5854, ts + 9929, ts + 9936, uintptr(0)}
 26270  	var pCtx uintptr = (*sqlite3_rtree_query_info)(unsafe.Pointer(pInfo)).FpContext
 26271  	var interp uintptr = (*BoxQueryCtx)(unsafe.Pointer(pCtx)).Finterp
 26272  	var pEval uintptr
 26273  	var pArg uintptr
 26274  	var pTmp uintptr = uintptr(0)
 26275  	var rc int32
 26276  	var ii int32
 26277  
 26278  	pEval = tcl.XTcl_DuplicateObj(tls, (*BoxQueryCtx)(unsafe.Pointer(pCtx)).FpScript)
 26279  	(*Tcl_Obj)(unsafe.Pointer(pEval)).FrefCount++
 26280  	pArg = tcl.XTcl_NewObj(tls)
 26281  	(*Tcl_Obj)(unsafe.Pointer(pArg)).FrefCount++
 26282  
 26283  	pTmp = tcl.XTcl_NewObj(tls)
 26284  	(*Tcl_Obj)(unsafe.Pointer(pTmp)).FrefCount++
 26285  	for ii = 0; ii < (*sqlite3_rtree_query_info)(unsafe.Pointer(pInfo)).FnParam; ii++ {
 26286  		var p uintptr = tcl.XTcl_NewDoubleObj(tls, *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_query_info)(unsafe.Pointer(pInfo)).FaParam + uintptr(ii)*8)))
 26287  		tcl.XTcl_ListObjAppendElement(tls, interp, pTmp, p)
 26288  	}
 26289  	tcl.XTcl_ListObjAppendElement(tls, interp, pArg, tcl.XTcl_NewStringObj(tls, ts+9942, -1))
 26290  	tcl.XTcl_ListObjAppendElement(tls, interp, pArg, pTmp)
 26291  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 26292  		var _objPtr uintptr = pTmp
 26293  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 26294  			tcl.XTclFreeObj(tls, _objPtr)
 26295  		}
 26296  	}
 26297  
 26298  	pTmp = tcl.XTcl_NewObj(tls)
 26299  	(*Tcl_Obj)(unsafe.Pointer(pTmp)).FrefCount++
 26300  	for ii = 0; ii < (*sqlite3_rtree_query_info)(unsafe.Pointer(pInfo)).FnCoord; ii++ {
 26301  		var p uintptr = tcl.XTcl_NewDoubleObj(tls, *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_query_info)(unsafe.Pointer(pInfo)).FaCoord + uintptr(ii)*8)))
 26302  		tcl.XTcl_ListObjAppendElement(tls, interp, pTmp, p)
 26303  	}
 26304  	tcl.XTcl_ListObjAppendElement(tls, interp, pArg, tcl.XTcl_NewStringObj(tls, ts+9949, -1))
 26305  	tcl.XTcl_ListObjAppendElement(tls, interp, pArg, pTmp)
 26306  	for __ccgo1 := true; __ccgo1; __ccgo1 = 0 != 0 {
 26307  		var _objPtr uintptr = pTmp
 26308  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 26309  			tcl.XTclFreeObj(tls, _objPtr)
 26310  		}
 26311  	}
 26312  
 26313  	pTmp = tcl.XTcl_NewObj(tls)
 26314  	(*Tcl_Obj)(unsafe.Pointer(pTmp)).FrefCount++
 26315  	for ii = 0; ii <= (*sqlite3_rtree_query_info)(unsafe.Pointer(pInfo)).FmxLevel; ii++ {
 26316  		var p uintptr = tcl.XTcl_NewIntObj(tls, int32(*(*uint32)(unsafe.Pointer((*sqlite3_rtree_query_info)(unsafe.Pointer(pInfo)).FanQueue + uintptr(ii)*4))))
 26317  		tcl.XTcl_ListObjAppendElement(tls, interp, pTmp, p)
 26318  	}
 26319  	tcl.XTcl_ListObjAppendElement(tls, interp, pArg, tcl.XTcl_NewStringObj(tls, ts+9956, -1))
 26320  	tcl.XTcl_ListObjAppendElement(tls, interp, pArg, pTmp)
 26321  	for __ccgo2 := true; __ccgo2; __ccgo2 = 0 != 0 {
 26322  		var _objPtr uintptr = pTmp
 26323  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 26324  			tcl.XTclFreeObj(tls, _objPtr)
 26325  		}
 26326  	}
 26327  
 26328  	tcl.XTcl_ListObjAppendElement(tls, interp, pArg, tcl.XTcl_NewStringObj(tls, ts+9964, -1))
 26329  	tcl.XTcl_ListObjAppendElement(tls, interp, pArg, tcl.XTcl_NewIntObj(tls, (*sqlite3_rtree_query_info)(unsafe.Pointer(pInfo)).FiLevel))
 26330  
 26331  	tcl.XTcl_ListObjAppendElement(tls, interp, pArg, tcl.XTcl_NewStringObj(tls, ts+9971, -1))
 26332  	tcl.XTcl_ListObjAppendElement(tls, interp, pArg, tcl.XTcl_NewIntObj(tls, (*sqlite3_rtree_query_info)(unsafe.Pointer(pInfo)).FmxLevel))
 26333  
 26334  	tcl.XTcl_ListObjAppendElement(tls, interp, pArg, tcl.XTcl_NewStringObj(tls, ts+9979, -1))
 26335  	tcl.XTcl_ListObjAppendElement(tls, interp, pArg, tcl.XTcl_NewWideIntObj(tls, (*sqlite3_rtree_query_info)(unsafe.Pointer(pInfo)).FiRowid))
 26336  
 26337  	tcl.XTcl_ListObjAppendElement(tls, interp, pArg, tcl.XTcl_NewStringObj(tls, ts+9986, -1))
 26338  	tcl.XTcl_ListObjAppendElement(tls, interp, pArg, tcl.XTcl_NewDoubleObj(tls, (*sqlite3_rtree_query_info)(unsafe.Pointer(pInfo)).FrParentScore))
 26339  
 26340  	tcl.XTcl_ListObjAppendElement(tls, interp, pArg, tcl.XTcl_NewStringObj(tls, ts+9999, -1))
 26341  	tcl.XTcl_ListObjAppendElement(tls, interp, pArg,
 26342  		tcl.XTcl_NewStringObj(tls, *(*uintptr)(unsafe.Pointer(bp + uintptr((*sqlite3_rtree_query_info)(unsafe.Pointer(pInfo)).FeParentWithin)*8)), -1))
 26343  
 26344  	tcl.XTcl_ListObjAppendElement(tls, interp, pEval, pArg)
 26345  	if tcl.XTcl_EvalObjEx(tls, interp, pEval, 0) != 0 {
 26346  		rc = SQLITE_ERROR
 26347  	} else {
 26348  		rc = SQLITE_OK
 26349  	}
 26350  
 26351  	if rc == SQLITE_OK {
 26352  		*(*float64)(unsafe.Pointer(bp + 48)) = 0.0
 26353  		*(*int32)(unsafe.Pointer(bp + 32)) = 0
 26354  		*(*int32)(unsafe.Pointer(bp + 56)) = 0
 26355  		*(*uintptr)(unsafe.Pointer(bp + 40)) = uintptr(0)
 26356  		var pRes uintptr = tcl.XTcl_GetObjResult(tls, interp)
 26357  
 26358  		if tcl.XTcl_ListObjGetElements(tls, interp, pRes, bp+32, bp+40) != 0 ||
 26359  			*(*int32)(unsafe.Pointer(bp + 32)) != 2 ||
 26360  			tcl.XTcl_GetDoubleFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 40)) + 1*8)), bp+48) != 0 ||
 26361  			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 {
 26362  			rc = SQLITE_ERROR
 26363  		} else {
 26364  			(*sqlite3_rtree_query_info)(unsafe.Pointer(pInfo)).FrScore = *(*float64)(unsafe.Pointer(bp + 48))
 26365  			(*sqlite3_rtree_query_info)(unsafe.Pointer(pInfo)).FeParentWithin = *(*int32)(unsafe.Pointer(bp + 56))
 26366  		}
 26367  	}
 26368  
 26369  	for __ccgo3 := true; __ccgo3; __ccgo3 = 0 != 0 {
 26370  		var _objPtr uintptr = pArg
 26371  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 26372  			tcl.XTclFreeObj(tls, _objPtr)
 26373  		}
 26374  	}
 26375  	for __ccgo4 := true; __ccgo4; __ccgo4 = 0 != 0 {
 26376  		var _objPtr uintptr = pEval
 26377  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 26378  			tcl.XTclFreeObj(tls, _objPtr)
 26379  		}
 26380  	}
 26381  	return rc
 26382  }
 26383  
 26384  func box_query_destroy(tls *libc.TLS, p uintptr) {
 26385  	var pCtx uintptr = p
 26386  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 26387  		var _objPtr uintptr = (*BoxQueryCtx)(unsafe.Pointer(pCtx)).FpScript
 26388  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 26389  			tcl.XTclFreeObj(tls, _objPtr)
 26390  		}
 26391  	}
 26392  	tcl.XTcl_Free(tls, pCtx)
 26393  }
 26394  
 26395  func register_box_query(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 26396  	bp := tls.Alloc(8)
 26397  	defer tls.Free(8)
 26398  
 26399  	var pCtx uintptr
 26400  
 26401  	if objc != 3 {
 26402  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+9919)
 26403  		return TCL_ERROR
 26404  	}
 26405  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 26406  		return TCL_ERROR
 26407  	}
 26408  
 26409  	pCtx = tcl.XTcl_Alloc(tls, uint32(unsafe.Sizeof(BoxQueryCtx{})))
 26410  	(*BoxQueryCtx)(unsafe.Pointer(pCtx)).Finterp = interp
 26411  	(*BoxQueryCtx)(unsafe.Pointer(pCtx)).FpScript = tcl.XTcl_DuplicateObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 26412  	(*Tcl_Obj)(unsafe.Pointer((*BoxQueryCtx)(unsafe.Pointer(pCtx)).FpScript)).FrefCount++
 26413  
 26414  	sqlite3.Xsqlite3_rtree_query_callback(tls,
 26415  		*(*uintptr)(unsafe.Pointer(bp)), ts+10019, *(*uintptr)(unsafe.Pointer(&struct {
 26416  			f func(*libc.TLS, uintptr) int32
 26417  		}{box_query})), pCtx, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{box_query_destroy})))
 26418  
 26419  	tcl.XTcl_ResetResult(tls, interp)
 26420  	return TCL_OK
 26421  }
 26422  
 26423  func Sqlitetestrtreedoc_Init(tls *libc.TLS, interp uintptr) int32 {
 26424  	tcl.XTcl_CreateObjCommand(tls, interp, ts+10024, *(*uintptr)(unsafe.Pointer(&struct {
 26425  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 26426  	}{register_box_geom})), uintptr(0), uintptr(0))
 26427  	tcl.XTcl_CreateObjCommand(tls, interp, ts+10042, *(*uintptr)(unsafe.Pointer(&struct {
 26428  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 26429  	}{register_box_query})), uintptr(0), uintptr(0))
 26430  	return TCL_OK
 26431  }
 26432  
 26433  type TestSession1 = struct {
 26434  	FpSession      uintptr
 26435  	Finterp        uintptr
 26436  	FpFilterScript uintptr
 26437  }
 26438  
 26439  type TestSession = TestSession1
 26440  
 26441  type TestStreamInput1 = struct {
 26442  	FnStream     int32
 26443  	F__ccgo_pad1 [4]byte
 26444  	FaData       uintptr
 26445  	FnData       int32
 26446  	FiData       int32
 26447  }
 26448  
 26449  type TestStreamInput = TestStreamInput1
 26450  
 26451  func dbHandleFromObj1(tls *libc.TLS, interp uintptr, pObj uintptr, pDb uintptr) int32 {
 26452  	bp := tls.Alloc(88)
 26453  	defer tls.Free(88)
 26454  
 26455  	if 0 == tcl.XTcl_GetCommandInfo(tls, interp, tcl.XTcl_GetString(tls, pObj), bp+24) {
 26456  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+1930, tcl.XTcl_GetString(tls, pObj), 0))
 26457  		return TCL_ERROR
 26458  	}
 26459  
 26460  	*(*uintptr)(unsafe.Pointer(pDb)) = *(*uintptr)(unsafe.Pointer((*Tcl_CmdInfo)(unsafe.Pointer(bp + 24)).FobjClientData))
 26461  	return TCL_OK
 26462  }
 26463  
 26464  func sql_exec_changeset(tls *libc.TLS, db uintptr, zSql uintptr, pnChangeset uintptr, ppChangeset uintptr) int32 {
 26465  	bp := tls.Alloc(8)
 26466  	defer tls.Free(8)
 26467  
 26468  	*(*uintptr)(unsafe.Pointer(bp)) = uintptr(0)
 26469  	var rc int32
 26470  
 26471  	rc = sqlite3.Xsqlite3session_create(tls, db, ts+85, bp)
 26472  
 26473  	if rc == SQLITE_OK {
 26474  		rc = sqlite3.Xsqlite3session_attach(tls, *(*uintptr)(unsafe.Pointer(bp)), uintptr(0))
 26475  	}
 26476  
 26477  	if rc == SQLITE_OK {
 26478  		rc = sqlite3.Xsqlite3_exec(tls, db, zSql, uintptr(0), uintptr(0), uintptr(0))
 26479  	}
 26480  
 26481  	if rc == SQLITE_OK {
 26482  		rc = sqlite3.Xsqlite3session_changeset(tls, *(*uintptr)(unsafe.Pointer(bp)), pnChangeset, ppChangeset)
 26483  	}
 26484  
 26485  	sqlite3.Xsqlite3session_delete(tls, *(*uintptr)(unsafe.Pointer(bp)))
 26486  
 26487  	return rc
 26488  }
 26489  
 26490  func test_sql_exec_changeset(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 26491  	bp := tls.Alloc(40)
 26492  	defer tls.Free(40)
 26493  
 26494  	var zSql uintptr
 26495  
 26496  	var rc int32
 26497  
 26498  	if objc != 3 {
 26499  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+10061)
 26500  		return TCL_ERROR
 26501  	}
 26502  	if dbHandleFromObj1(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp+16) != 0 {
 26503  		return TCL_ERROR
 26504  	}
 26505  	zSql = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 26506  
 26507  	rc = sql_exec_changeset(tls, *(*uintptr)(unsafe.Pointer(bp + 16)), zSql, bp+24, bp+32)
 26508  	if rc != SQLITE_OK {
 26509  		tcl.XTcl_ResetResult(tls, interp)
 26510  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+10068, 0))
 26511  		return TCL_ERROR
 26512  	}
 26513  
 26514  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewByteArrayObj(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), *(*int32)(unsafe.Pointer(bp + 24))))
 26515  	sqlite3.Xsqlite3_free(tls, *(*uintptr)(unsafe.Pointer(bp + 32)))
 26516  	return TCL_OK
 26517  }
 26518  
 26519  func test_tcl_integer(tls *libc.TLS, interp uintptr, zVar uintptr) int32 {
 26520  	bp := tls.Alloc(4)
 26521  	defer tls.Free(4)
 26522  
 26523  	var pObj uintptr
 26524  	*(*int32)(unsafe.Pointer(bp)) = 0
 26525  	var pName uintptr = tcl.XTcl_NewStringObj(tls, zVar, -1)
 26526  	(*Tcl_Obj)(unsafe.Pointer(pName)).FrefCount++
 26527  	pObj = tcl.XTcl_ObjGetVar2(tls, interp, pName, uintptr(0), TCL_GLOBAL_ONLY)
 26528  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 26529  		var _objPtr uintptr = pName
 26530  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 26531  			tcl.XTclFreeObj(tls, _objPtr)
 26532  		}
 26533  	}
 26534  	if pObj != 0 {
 26535  		tcl.XTcl_GetIntFromObj(tls, uintptr(0), pObj, bp)
 26536  	}
 26537  	return *(*int32)(unsafe.Pointer(bp))
 26538  }
 26539  
 26540  func test_session_error(tls *libc.TLS, interp uintptr, rc int32, zErr uintptr) int32 {
 26541  	bp := tls.Alloc(24)
 26542  	defer tls.Free(24)
 26543  
 26544  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3ErrName(tls, rc), -1))
 26545  	if zErr != 0 {
 26546  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+9645, zErr, 0))
 26547  		sqlite3.Xsqlite3_free(tls, zErr)
 26548  	}
 26549  	return TCL_ERROR
 26550  }
 26551  
 26552  func test_table_filter(tls *libc.TLS, pCtx uintptr, zTbl uintptr) int32 {
 26553  	bp := tls.Alloc(4)
 26554  	defer tls.Free(4)
 26555  
 26556  	var p uintptr = pCtx
 26557  	var pEval uintptr
 26558  	var rc int32
 26559  	*(*int32)(unsafe.Pointer(bp)) = 0
 26560  
 26561  	pEval = tcl.XTcl_DuplicateObj(tls, (*TestSession)(unsafe.Pointer(p)).FpFilterScript)
 26562  	(*Tcl_Obj)(unsafe.Pointer(pEval)).FrefCount++
 26563  	rc = tcl.XTcl_ListObjAppendElement(tls, (*TestSession)(unsafe.Pointer(p)).Finterp, pEval, tcl.XTcl_NewStringObj(tls, zTbl, -1))
 26564  	if rc == TCL_OK {
 26565  		rc = tcl.XTcl_EvalObjEx(tls, (*TestSession)(unsafe.Pointer(p)).Finterp, pEval, TCL_EVAL_GLOBAL)
 26566  	}
 26567  	if rc == TCL_OK {
 26568  		rc = tcl.XTcl_GetBooleanFromObj(tls, (*TestSession)(unsafe.Pointer(p)).Finterp, tcl.XTcl_GetObjResult(tls, (*TestSession)(unsafe.Pointer(p)).Finterp), bp)
 26569  	}
 26570  	if rc != TCL_OK {
 26571  		tcl.XTcl_BackgroundError(tls, (*TestSession)(unsafe.Pointer(p)).Finterp)
 26572  	}
 26573  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 26574  		var _objPtr uintptr = pEval
 26575  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 26576  			tcl.XTclFreeObj(tls, _objPtr)
 26577  		}
 26578  	}
 26579  
 26580  	return *(*int32)(unsafe.Pointer(bp))
 26581  }
 26582  
 26583  type TestSessionsBlob1 = struct {
 26584  	Fp           uintptr
 26585  	Fn           int32
 26586  	F__ccgo_pad1 [4]byte
 26587  }
 26588  
 26589  type TestSessionsBlob = TestSessionsBlob1
 26590  
 26591  func testStreamOutput(tls *libc.TLS, pCtx uintptr, pData uintptr, nData int32) int32 {
 26592  	var pBlob uintptr = pCtx
 26593  	var pNew uintptr
 26594  
 26595  	pNew = sqlite3.Xsqlite3_realloc(tls, (*TestSessionsBlob)(unsafe.Pointer(pBlob)).Fp, (*TestSessionsBlob)(unsafe.Pointer(pBlob)).Fn+nData)
 26596  	if pNew == uintptr(0) {
 26597  		return SQLITE_NOMEM
 26598  	}
 26599  	(*TestSessionsBlob)(unsafe.Pointer(pBlob)).Fp = pNew
 26600  	libc.Xmemcpy(tls, pNew+uintptr((*TestSessionsBlob)(unsafe.Pointer(pBlob)).Fn), pData, uint64(nData))
 26601  	*(*int32)(unsafe.Pointer(pBlob + 8)) += nData
 26602  	return SQLITE_OK
 26603  }
 26604  
 26605  func test_session_cmd(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 26606  	bp := tls.Alloc(44)
 26607  	defer tls.Free(44)
 26608  
 26609  	var p uintptr = clientData
 26610  	var pSession uintptr = (*TestSession)(unsafe.Pointer(p)).FpSession
 26611  
 26612  	var rc int32
 26613  
 26614  	if objc < 2 {
 26615  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+1999)
 26616  		return TCL_ERROR
 26617  	}
 26618  	rc = tcl.XTcl_GetIndexFromObjStruct(tls, interp,
 26619  		*(*uintptr)(unsafe.Pointer(objv + 1*8)), uintptr(unsafe.Pointer(&aSub)), int32(unsafe.Sizeof(SessionSubcmd{})), ts+2014, 0, bp)
 26620  	if rc != TCL_OK {
 26621  		return rc
 26622  	}
 26623  	if objc != 2+aSub[*(*int32)(unsafe.Pointer(bp))].FnArg {
 26624  		tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, aSub[*(*int32)(unsafe.Pointer(bp))].FzMsg)
 26625  		return TCL_ERROR
 26626  	}
 26627  
 26628  	switch *(*int32)(unsafe.Pointer(bp)) {
 26629  	case 0:
 26630  		{
 26631  			var zArg uintptr = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 26632  			if int32(*(*uint8)(unsafe.Pointer(zArg))) == '*' && int32(*(*uint8)(unsafe.Pointer(zArg + 1))) == 0 {
 26633  				zArg = uintptr(0)
 26634  			}
 26635  			rc = sqlite3.Xsqlite3session_attach(tls, pSession, zArg)
 26636  			if rc != SQLITE_OK {
 26637  				return test_session_error(tls, interp, rc, uintptr(0))
 26638  			}
 26639  			break
 26640  
 26641  		}
 26642  
 26643  	case 7:
 26644  		fallthrough
 26645  	case 1:
 26646  		{
 26647  			*(*TestSessionsBlob)(unsafe.Pointer(bp + 8)) = TestSessionsBlob{}
 26648  			if test_tcl_integer(tls, interp, ts+10098) != 0 {
 26649  				var pCtx uintptr = bp + 8
 26650  				if *(*int32)(unsafe.Pointer(bp)) == 7 {
 26651  					rc = sqlite3.Xsqlite3session_patchset_strm(tls, pSession, *(*uintptr)(unsafe.Pointer(&struct {
 26652  						f func(*libc.TLS, uintptr, uintptr, int32) int32
 26653  					}{testStreamOutput})), pCtx)
 26654  				} else {
 26655  					rc = sqlite3.Xsqlite3session_changeset_strm(tls, pSession, *(*uintptr)(unsafe.Pointer(&struct {
 26656  						f func(*libc.TLS, uintptr, uintptr, int32) int32
 26657  					}{testStreamOutput})), pCtx)
 26658  				}
 26659  			} else {
 26660  				if *(*int32)(unsafe.Pointer(bp)) == 7 {
 26661  					rc = sqlite3.Xsqlite3session_patchset(tls, pSession, bp+8+8, bp+8)
 26662  				} else {
 26663  					rc = sqlite3.Xsqlite3session_changeset(tls, pSession, bp+8+8, bp+8)
 26664  				}
 26665  			}
 26666  			if rc == SQLITE_OK {
 26667  				tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewByteArrayObj(tls, (*TestSessionsBlob)(unsafe.Pointer(bp+8)).Fp, (*TestSessionsBlob)(unsafe.Pointer(bp+8)).Fn))
 26668  			}
 26669  			sqlite3.Xsqlite3_free(tls, (*TestSessionsBlob)(unsafe.Pointer(bp+8)).Fp)
 26670  			if rc != SQLITE_OK {
 26671  				return test_session_error(tls, interp, rc, uintptr(0))
 26672  			}
 26673  			break
 26674  
 26675  		}
 26676  
 26677  	case 2:
 26678  		tcl.XTcl_DeleteCommand(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))))
 26679  		break
 26680  
 26681  	case 3:
 26682  		{
 26683  			if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+24) != 0 {
 26684  				return TCL_ERROR
 26685  			}
 26686  			*(*int32)(unsafe.Pointer(bp + 24)) = sqlite3.Xsqlite3session_enable(tls, pSession, *(*int32)(unsafe.Pointer(bp + 24)))
 26687  			tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, libc.Bool32(*(*int32)(unsafe.Pointer(bp + 24)) != 0)))
 26688  			break
 26689  
 26690  		}
 26691  
 26692  	case 4:
 26693  		{
 26694  			if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+28) != 0 {
 26695  				return TCL_ERROR
 26696  			}
 26697  			*(*int32)(unsafe.Pointer(bp + 28)) = sqlite3.Xsqlite3session_indirect(tls, pSession, *(*int32)(unsafe.Pointer(bp + 28)))
 26698  			tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, libc.Bool32(*(*int32)(unsafe.Pointer(bp + 28)) != 0)))
 26699  			break
 26700  
 26701  		}
 26702  
 26703  	case 5:
 26704  		{
 26705  			var val int32
 26706  			val = sqlite3.Xsqlite3session_isempty(tls, pSession)
 26707  			tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, libc.Bool32(val != 0)))
 26708  			break
 26709  
 26710  		}
 26711  
 26712  	case 6:
 26713  		{
 26714  			if (*TestSession)(unsafe.Pointer(p)).FpFilterScript != 0 {
 26715  				for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 26716  					var _objPtr uintptr = (*TestSession)(unsafe.Pointer(p)).FpFilterScript
 26717  					if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 26718  						tcl.XTclFreeObj(tls, _objPtr)
 26719  					}
 26720  				}
 26721  			}
 26722  			(*TestSession)(unsafe.Pointer(p)).Finterp = interp
 26723  			(*TestSession)(unsafe.Pointer(p)).FpFilterScript = tcl.XTcl_DuplicateObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 26724  			(*Tcl_Obj)(unsafe.Pointer((*TestSession)(unsafe.Pointer(p)).FpFilterScript)).FrefCount++
 26725  			sqlite3.Xsqlite3session_table_filter(tls, pSession, *(*uintptr)(unsafe.Pointer(&struct {
 26726  				f func(*libc.TLS, uintptr, uintptr) int32
 26727  			}{test_table_filter})), clientData)
 26728  			break
 26729  
 26730  		}
 26731  
 26732  	case 8:
 26733  		{
 26734  			*(*uintptr)(unsafe.Pointer(bp + 32)) = uintptr(0)
 26735  			rc = sqlite3.Xsqlite3session_diff(tls, pSession,
 26736  				tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8))),
 26737  				tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8))),
 26738  				bp+32)
 26739  
 26740  			if rc != 0 {
 26741  				return test_session_error(tls, interp, rc, *(*uintptr)(unsafe.Pointer(bp + 32)))
 26742  			}
 26743  			break
 26744  
 26745  		}
 26746  
 26747  	case 9:
 26748  		{
 26749  			var nMalloc sqlite3_int64 = sqlite3.Xsqlite3session_memory_used(tls, pSession)
 26750  			tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewWideIntObj(tls, nMalloc))
 26751  			break
 26752  
 26753  		}
 26754  
 26755  	case 10:
 26756  		{
 26757  			var nSize sqlite3_int64 = sqlite3.Xsqlite3session_changeset_size(tls, pSession)
 26758  			tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewWideIntObj(tls, nSize))
 26759  			break
 26760  
 26761  		}
 26762  	case 11:
 26763  		{
 26764  			var rc int32
 26765  
 26766  			if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+40) != 0 {
 26767  				return TCL_ERROR
 26768  			}
 26769  			rc = sqlite3.Xsqlite3session_object_config(tls,
 26770  				pSession, SQLITE_SESSION_OBJCONFIG_SIZE, bp+40)
 26771  			if rc != SQLITE_OK {
 26772  				tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3ErrName(tls, rc), -1))
 26773  			} else {
 26774  				tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 40))))
 26775  			}
 26776  			break
 26777  
 26778  		}
 26779  	}
 26780  
 26781  	return TCL_OK
 26782  }
 26783  
 26784  type SessionSubcmd = struct {
 26785  	FzSub        uintptr
 26786  	FnArg        int32
 26787  	F__ccgo_pad1 [4]byte
 26788  	FzMsg        uintptr
 26789  	FiSub        int32
 26790  	F__ccgo_pad2 [4]byte
 26791  }
 26792  
 26793  var aSub = [13]SessionSubcmd{
 26794  	{FzSub: ts + 10121, FnArg: 1, FzMsg: ts + 1951},
 26795  	{FzSub: ts + 10128, FzMsg: ts + 584},
 26796  	{FzSub: ts + 10138, FzMsg: ts + 584},
 26797  	{FzSub: ts + 10145, FnArg: 1, FzMsg: ts + 10152},
 26798  	{FzSub: ts + 10157, FnArg: 1, FzMsg: ts + 10152},
 26799  	{FzSub: ts + 10166, FzMsg: ts + 584},
 26800  	{FzSub: ts + 10174, FnArg: 1, FzMsg: ts + 10187},
 26801  	{FzSub: ts + 10194, FzMsg: ts + 584},
 26802  	{FzSub: ts + 10203, FnArg: 2, FzMsg: ts + 10208},
 26803  	{FzSub: ts + 10219, FzMsg: ts + 584},
 26804  	{FzSub: ts + 10231, FzMsg: ts + 584},
 26805  	{FzSub: ts + 10246, FnArg: 1, FzMsg: ts + 2413},
 26806  	{},
 26807  }
 26808  
 26809  func test_session_del(tls *libc.TLS, clientData uintptr) {
 26810  	var p uintptr = clientData
 26811  	if (*TestSession)(unsafe.Pointer(p)).FpFilterScript != 0 {
 26812  		for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 26813  			var _objPtr uintptr = (*TestSession)(unsafe.Pointer(p)).FpFilterScript
 26814  			if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 26815  				tcl.XTclFreeObj(tls, _objPtr)
 26816  			}
 26817  		}
 26818  	}
 26819  	sqlite3.Xsqlite3session_delete(tls, (*TestSession)(unsafe.Pointer(p)).FpSession)
 26820  	tcl.XTcl_Free(tls, p)
 26821  }
 26822  
 26823  func test_sqlite3session(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 26824  	bp := tls.Alloc(92)
 26825  	defer tls.Free(92)
 26826  
 26827  	var db uintptr
 26828  
 26829  	var rc int32
 26830  	var p uintptr
 26831  	*(*int32)(unsafe.Pointer(bp + 88)) = -1
 26832  
 26833  	if objc != 4 {
 26834  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+10265)
 26835  		return TCL_ERROR
 26836  	}
 26837  
 26838  	if 0 == tcl.XTcl_GetCommandInfo(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8))), bp+24) {
 26839  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+1930, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8))), 0))
 26840  		return TCL_ERROR
 26841  	}
 26842  	db = *(*uintptr)(unsafe.Pointer((*Tcl_CmdInfo)(unsafe.Pointer(bp + 24)).FobjClientData))
 26843  
 26844  	p = tcl.XTcl_Alloc(tls, uint32(unsafe.Sizeof(TestSession{})))
 26845  	libc.Xmemset(tls, p, 0, uint64(unsafe.Sizeof(TestSession{})))
 26846  	rc = sqlite3.Xsqlite3session_create(tls, db, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8))), p)
 26847  	if rc != SQLITE_OK {
 26848  		tcl.XTcl_Free(tls, p)
 26849  		return test_session_error(tls, interp, rc, uintptr(0))
 26850  	}
 26851  
 26852  	sqlite3.Xsqlite3session_object_config(tls, (*TestSession)(unsafe.Pointer(p)).FpSession, SQLITE_SESSION_OBJCONFIG_SIZE, bp+88)
 26853  
 26854  	*(*int32)(unsafe.Pointer(bp + 88)) = 1
 26855  	sqlite3.Xsqlite3session_object_config(tls, (*TestSession)(unsafe.Pointer(p)).FpSession, SQLITE_SESSION_OBJCONFIG_SIZE, bp+88)
 26856  
 26857  	tcl.XTcl_CreateObjCommand(tls,
 26858  		interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), *(*uintptr)(unsafe.Pointer(&struct {
 26859  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 26860  		}{test_session_cmd})), p,
 26861  		*(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{test_session_del})))
 26862  	tcl.XTcl_SetObjResult(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 26863  	return TCL_OK
 26864  }
 26865  
 26866  func test_append_value(tls *libc.TLS, pList uintptr, pVal uintptr) {
 26867  	if pVal == uintptr(0) {
 26868  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pList, tcl.XTcl_NewObj(tls))
 26869  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pList, tcl.XTcl_NewObj(tls))
 26870  	} else {
 26871  		var pObj uintptr
 26872  		switch sqlite3.Xsqlite3_value_type(tls, pVal) {
 26873  		case SQLITE_NULL:
 26874  			tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pList, tcl.XTcl_NewStringObj(tls, ts+10287, 1))
 26875  			pObj = tcl.XTcl_NewObj(tls)
 26876  			break
 26877  			fallthrough
 26878  		case SQLITE_INTEGER:
 26879  			tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pList, tcl.XTcl_NewStringObj(tls, ts+10289, 1))
 26880  			pObj = tcl.XTcl_NewWideIntObj(tls, sqlite3.Xsqlite3_value_int64(tls, pVal))
 26881  			break
 26882  			fallthrough
 26883  		case SQLITE_FLOAT:
 26884  			tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pList, tcl.XTcl_NewStringObj(tls, ts+10291, 1))
 26885  			pObj = tcl.XTcl_NewDoubleObj(tls, sqlite3.Xsqlite3_value_double(tls, pVal))
 26886  			break
 26887  			fallthrough
 26888  		case SQLITE_TEXT:
 26889  			{
 26890  				var z uintptr = sqlite3.Xsqlite3_value_blob(tls, pVal)
 26891  				var n int32 = sqlite3.Xsqlite3_value_bytes(tls, pVal)
 26892  				tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pList, tcl.XTcl_NewStringObj(tls, ts+10293, 1))
 26893  				pObj = tcl.XTcl_NewStringObj(tls, z, n)
 26894  				break
 26895  
 26896  			}
 26897  			fallthrough
 26898  		default:
 26899  			tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pList, tcl.XTcl_NewStringObj(tls, ts+6206, 1))
 26900  			pObj = tcl.XTcl_NewByteArrayObj(tls,
 26901  				sqlite3.Xsqlite3_value_blob(tls, pVal),
 26902  				sqlite3.Xsqlite3_value_bytes(tls, pVal))
 26903  			break
 26904  		}
 26905  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pList, pObj)
 26906  	}
 26907  }
 26908  
 26909  type TestConflictHandler1 = struct {
 26910  	Finterp          uintptr
 26911  	FpConflictScript uintptr
 26912  	FpFilterScript   uintptr
 26913  }
 26914  
 26915  type TestConflictHandler = TestConflictHandler1
 26916  
 26917  func test_obj_eq_string(tls *libc.TLS, p uintptr, z uintptr) int32 {
 26918  	bp := tls.Alloc(4)
 26919  	defer tls.Free(4)
 26920  
 26921  	var n int32
 26922  
 26923  	var zObj uintptr
 26924  
 26925  	n = int32(libc.Xstrlen(tls, z))
 26926  	zObj = tcl.XTcl_GetStringFromObj(tls, p, bp)
 26927  
 26928  	return libc.Bool32(*(*int32)(unsafe.Pointer(bp)) == n && (n == 0 || 0 == libc.Xmemcmp(tls, zObj, z, uint64(n))))
 26929  }
 26930  
 26931  func test_filter_handler(tls *libc.TLS, pCtx uintptr, zTab uintptr) int32 {
 26932  	bp := tls.Alloc(4)
 26933  	defer tls.Free(4)
 26934  
 26935  	var p uintptr = pCtx
 26936  	*(*int32)(unsafe.Pointer(bp)) = 1
 26937  	var pEval uintptr
 26938  	var interp uintptr = (*TestConflictHandler)(unsafe.Pointer(p)).Finterp
 26939  
 26940  	pEval = tcl.XTcl_DuplicateObj(tls, (*TestConflictHandler)(unsafe.Pointer(p)).FpFilterScript)
 26941  	(*Tcl_Obj)(unsafe.Pointer(pEval)).FrefCount++
 26942  
 26943  	if TCL_OK != tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pEval, tcl.XTcl_NewStringObj(tls, zTab, -1)) ||
 26944  		TCL_OK != tcl.XTcl_EvalObjEx(tls, interp, pEval, TCL_EVAL_GLOBAL) ||
 26945  		TCL_OK != tcl.XTcl_GetIntFromObj(tls, interp, tcl.XTcl_GetObjResult(tls, interp), bp) {
 26946  		tcl.XTcl_BackgroundError(tls, interp)
 26947  	}
 26948  
 26949  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 26950  		var _objPtr uintptr = pEval
 26951  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 26952  			tcl.XTclFreeObj(tls, _objPtr)
 26953  		}
 26954  	}
 26955  	return *(*int32)(unsafe.Pointer(bp))
 26956  }
 26957  
 26958  func test_conflict_handler(tls *libc.TLS, pCtx uintptr, eConf int32, pIter uintptr) int32 {
 26959  	bp := tls.Alloc(104)
 26960  	defer tls.Free(104)
 26961  
 26962  	var p uintptr = pCtx
 26963  	var pEval uintptr
 26964  	var interp uintptr = (*TestConflictHandler)(unsafe.Pointer(p)).Finterp
 26965  	*(*int32)(unsafe.Pointer(bp + 100)) = 0
 26966  
 26967  	pEval = tcl.XTcl_DuplicateObj(tls, (*TestConflictHandler)(unsafe.Pointer(p)).FpConflictScript)
 26968  	(*Tcl_Obj)(unsafe.Pointer(pEval)).FrefCount++
 26969  
 26970  	sqlite3.Xsqlite3changeset_op(tls, pIter, bp, bp+8, bp+12, uintptr(0))
 26971  
 26972  	if eConf == SQLITE_CHANGESET_FOREIGN_KEY {
 26973  		sqlite3.Xsqlite3changeset_fk_conflicts(tls, pIter, bp+16)
 26974  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pEval, tcl.XTcl_NewStringObj(tls, ts+10295, -1))
 26975  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pEval, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 16))))
 26976  	} else {
 26977  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pEval, tcl.XTcl_NewStringObj(tls,
 26978  			func() uintptr {
 26979  				if *(*int32)(unsafe.Pointer(bp + 12)) == SQLITE_INSERT {
 26980  					return ts + 10307
 26981  				}
 26982  				return func() uintptr {
 26983  					if *(*int32)(unsafe.Pointer(bp + 12)) == SQLITE_UPDATE {
 26984  						return ts + 10314
 26985  					}
 26986  					return ts + 10321
 26987  				}()
 26988  			}(), -1))
 26989  
 26990  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pEval, tcl.XTcl_NewStringObj(tls, *(*uintptr)(unsafe.Pointer(bp)), -1))
 26991  
 26992  		switch eConf {
 26993  		case SQLITE_CHANGESET_DATA:
 26994  			tcl.XTcl_ListObjAppendElement(tls, interp, pEval, tcl.XTcl_NewStringObj(tls, ts+10328, -1))
 26995  			break
 26996  			fallthrough
 26997  		case SQLITE_CHANGESET_NOTFOUND:
 26998  			tcl.XTcl_ListObjAppendElement(tls, interp, pEval, tcl.XTcl_NewStringObj(tls, ts+10333, -1))
 26999  			break
 27000  			fallthrough
 27001  		case SQLITE_CHANGESET_CONFLICT:
 27002  			tcl.XTcl_ListObjAppendElement(tls, interp, pEval, tcl.XTcl_NewStringObj(tls, ts+10342, -1))
 27003  			break
 27004  			fallthrough
 27005  		case SQLITE_CHANGESET_CONSTRAINT:
 27006  			tcl.XTcl_ListObjAppendElement(tls, interp, pEval, tcl.XTcl_NewStringObj(tls, ts+10351, -1))
 27007  			break
 27008  		}
 27009  
 27010  		if *(*int32)(unsafe.Pointer(bp + 12)) != SQLITE_INSERT {
 27011  			var i int32
 27012  			var pOld uintptr = tcl.XTcl_NewObj(tls)
 27013  			for i = 0; i < *(*int32)(unsafe.Pointer(bp + 8)); i++ {
 27014  				sqlite3.Xsqlite3changeset_old(tls, pIter, i, bp+24)
 27015  				test_append_value(tls, pOld, *(*uintptr)(unsafe.Pointer(bp + 24)))
 27016  			}
 27017  			tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pEval, pOld)
 27018  		}
 27019  
 27020  		if *(*int32)(unsafe.Pointer(bp + 12)) != SQLITE_DELETE {
 27021  			var i int32
 27022  			var pNew uintptr = tcl.XTcl_NewObj(tls)
 27023  			for i = 0; i < *(*int32)(unsafe.Pointer(bp + 8)); i++ {
 27024  				sqlite3.Xsqlite3changeset_new(tls, pIter, i, bp+32)
 27025  				test_append_value(tls, pNew, *(*uintptr)(unsafe.Pointer(bp + 32)))
 27026  			}
 27027  			tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pEval, pNew)
 27028  		}
 27029  
 27030  		if eConf == SQLITE_CHANGESET_DATA || eConf == SQLITE_CHANGESET_CONFLICT {
 27031  			var i int32
 27032  			var pConflict uintptr = tcl.XTcl_NewObj(tls)
 27033  			for i = 0; i < *(*int32)(unsafe.Pointer(bp + 8)); i++ {
 27034  				var rc int32
 27035  				_ = rc
 27036  
 27037  				rc = sqlite3.Xsqlite3changeset_conflict(tls, pIter, i, bp+40)
 27038  
 27039  				test_append_value(tls, pConflict, *(*uintptr)(unsafe.Pointer(bp + 40)))
 27040  			}
 27041  			tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pEval, pConflict)
 27042  		}
 27043  
 27044  		if eConf == SQLITE_CHANGESET_CONSTRAINT ||
 27045  			eConf == SQLITE_CHANGESET_NOTFOUND {
 27046  			var rc int32 = sqlite3.Xsqlite3changeset_conflict(tls, pIter, 0, bp+48)
 27047  			_ = rc
 27048  
 27049  		} else {
 27050  			var rc int32 = sqlite3.Xsqlite3changeset_conflict(tls, pIter, -1, bp+56)
 27051  			_ = rc
 27052  
 27053  			rc = sqlite3.Xsqlite3changeset_conflict(tls, pIter, *(*int32)(unsafe.Pointer(bp + 8)), bp+56)
 27054  
 27055  		}
 27056  		if *(*int32)(unsafe.Pointer(bp + 12)) == SQLITE_DELETE {
 27057  			var rc int32 = sqlite3.Xsqlite3changeset_new(tls, pIter, 0, bp+64)
 27058  			_ = rc
 27059  
 27060  		} else {
 27061  			var rc int32 = sqlite3.Xsqlite3changeset_new(tls, pIter, -1, bp+72)
 27062  			_ = rc
 27063  
 27064  			rc = sqlite3.Xsqlite3changeset_new(tls, pIter, *(*int32)(unsafe.Pointer(bp + 8)), bp+72)
 27065  
 27066  		}
 27067  		if *(*int32)(unsafe.Pointer(bp + 12)) == SQLITE_INSERT {
 27068  			var rc int32 = sqlite3.Xsqlite3changeset_old(tls, pIter, 0, bp+80)
 27069  			_ = rc
 27070  
 27071  		} else {
 27072  			var rc int32 = sqlite3.Xsqlite3changeset_old(tls, pIter, -1, bp+88)
 27073  			_ = rc
 27074  
 27075  			rc = sqlite3.Xsqlite3changeset_old(tls, pIter, *(*int32)(unsafe.Pointer(bp + 8)), bp+88)
 27076  
 27077  		}
 27078  		if eConf != SQLITE_CHANGESET_FOREIGN_KEY {
 27079  			var rc int32 = sqlite3.Xsqlite3changeset_fk_conflicts(tls, pIter, bp+96)
 27080  			_ = rc
 27081  
 27082  		}
 27083  
 27084  	}
 27085  
 27086  	if TCL_OK != tcl.XTcl_EvalObjEx(tls, interp, pEval, TCL_EVAL_GLOBAL) {
 27087  		tcl.XTcl_BackgroundError(tls, interp)
 27088  	} else {
 27089  		var pRes uintptr = tcl.XTcl_GetObjResult(tls, interp)
 27090  		if test_obj_eq_string(tls, pRes, ts+10362) != 0 || test_obj_eq_string(tls, pRes, ts+584) != 0 {
 27091  			*(*int32)(unsafe.Pointer(bp + 100)) = SQLITE_CHANGESET_OMIT
 27092  		} else if test_obj_eq_string(tls, pRes, ts+7846) != 0 {
 27093  			*(*int32)(unsafe.Pointer(bp + 100)) = SQLITE_CHANGESET_REPLACE
 27094  		} else if test_obj_eq_string(tls, pRes, ts+7840) != 0 {
 27095  			*(*int32)(unsafe.Pointer(bp + 100)) = SQLITE_CHANGESET_ABORT
 27096  		} else {
 27097  			tcl.XTcl_GetIntFromObj(tls, uintptr(0), pRes, bp+100)
 27098  		}
 27099  	}
 27100  
 27101  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 27102  		var _objPtr uintptr = pEval
 27103  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 27104  			tcl.XTclFreeObj(tls, _objPtr)
 27105  		}
 27106  	}
 27107  	return *(*int32)(unsafe.Pointer(bp + 100))
 27108  }
 27109  
 27110  func replace_handler(tls *libc.TLS, pCtx uintptr, eConf int32, pIter uintptr) int32 {
 27111  	bp := tls.Alloc(32)
 27112  	defer tls.Free(32)
 27113  
 27114  	var i int32
 27115  	var x int32 = 0
 27116  
 27117  	sqlite3.Xsqlite3changeset_op(tls, pIter, bp, bp+8, bp+12, uintptr(0))
 27118  
 27119  	if *(*int32)(unsafe.Pointer(bp + 12)) != SQLITE_INSERT {
 27120  		for i = 0; i < *(*int32)(unsafe.Pointer(bp + 8)); i++ {
 27121  			sqlite3.Xsqlite3changeset_old(tls, pIter, i, bp+16)
 27122  			sqlite3.Xsqlite3_value_text16(tls, *(*uintptr)(unsafe.Pointer(bp + 16)))
 27123  			x++
 27124  		}
 27125  	}
 27126  
 27127  	if *(*int32)(unsafe.Pointer(bp + 12)) != SQLITE_DELETE {
 27128  		for i = 0; i < *(*int32)(unsafe.Pointer(bp + 8)); i++ {
 27129  			sqlite3.Xsqlite3changeset_new(tls, pIter, i, bp+24)
 27130  			sqlite3.Xsqlite3_value_text16(tls, *(*uintptr)(unsafe.Pointer(bp + 24)))
 27131  			x++
 27132  		}
 27133  	}
 27134  
 27135  	if eConf == SQLITE_CHANGESET_DATA {
 27136  		return SQLITE_CHANGESET_REPLACE
 27137  	}
 27138  	return SQLITE_CHANGESET_OMIT
 27139  }
 27140  
 27141  func testStreamInput(tls *libc.TLS, pCtx uintptr, pData uintptr, pnData uintptr) int32 {
 27142  	var p uintptr = pCtx
 27143  	var nReq int32 = *(*int32)(unsafe.Pointer(pnData))
 27144  	var nRem int32 = (*TestStreamInput)(unsafe.Pointer(p)).FnData - (*TestStreamInput)(unsafe.Pointer(p)).FiData
 27145  	var nRet int32 = (*TestStreamInput)(unsafe.Pointer(p)).FnStream
 27146  
 27147  	var pAlloc uintptr = sqlite3.Xsqlite3_malloc(tls, 10)
 27148  	if pAlloc == uintptr(0) {
 27149  		return SQLITE_NOMEM
 27150  	}
 27151  	sqlite3.Xsqlite3_free(tls, pAlloc)
 27152  
 27153  	if nRet > nReq {
 27154  		nRet = nReq
 27155  	}
 27156  	if nRet > nRem {
 27157  		nRet = nRem
 27158  	}
 27159  
 27160  	if nRet > 0 {
 27161  		libc.Xmemcpy(tls, pData, (*TestStreamInput)(unsafe.Pointer(p)).FaData+uintptr((*TestStreamInput)(unsafe.Pointer(p)).FiData), uint64(nRet))
 27162  		*(*int32)(unsafe.Pointer(p + 20)) += nRet
 27163  	}
 27164  
 27165  	*(*int32)(unsafe.Pointer(pnData)) = nRet
 27166  	return SQLITE_OK
 27167  }
 27168  
 27169  func testSqlite3changesetApply(tls *libc.TLS, bV2 int32, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 27170  	bp := tls.Alloc(156)
 27171  	defer tls.Free(156)
 27172  
 27173  	var db uintptr
 27174  
 27175  	var rc int32
 27176  	var pChangeset uintptr
 27177  
 27178  	*(*uintptr)(unsafe.Pointer(bp + 144)) = uintptr(0)
 27179  	*(*int32)(unsafe.Pointer(bp + 152)) = 0
 27180  	var flags int32 = 0
 27181  
 27182  	libc.Xmemset(tls, bp+24, 0, uint64(unsafe.Sizeof(TestStreamInput{})))
 27183  	(*TestStreamInput)(unsafe.Pointer(bp + 24)).FnStream = test_tcl_integer(tls, interp, ts+10098)
 27184  
 27185  	if bV2 != 0 {
 27186  		if objc > 1 {
 27187  			var z1 uintptr = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 27188  			var n int32 = int32(libc.Xstrlen(tls, z1))
 27189  			if n > 1 && n <= 12 && 0 == sqlite3.Xsqlite3_strnicmp(tls, ts+10367, z1, n) {
 27190  				flags = flags | SQLITE_CHANGESETAPPLY_NOSAVEPOINT
 27191  				objc--
 27192  				objv += 8
 27193  			}
 27194  		}
 27195  		if objc > 1 {
 27196  			var z1 uintptr = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 27197  			var n int32 = int32(libc.Xstrlen(tls, z1))
 27198  			if n > 1 && n <= 7 && 0 == sqlite3.Xsqlite3_strnicmp(tls, ts+10380, z1, n) {
 27199  				flags = flags | SQLITE_CHANGESETAPPLY_INVERT
 27200  				objc--
 27201  				objv += 8
 27202  			}
 27203  		}
 27204  	}
 27205  
 27206  	if objc != 4 && objc != 5 {
 27207  		var zMsg uintptr
 27208  		if bV2 != 0 {
 27209  			zMsg = ts + 10388
 27210  		} else {
 27211  			zMsg = ts + 10459
 27212  		}
 27213  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, zMsg)
 27214  		return TCL_ERROR
 27215  	}
 27216  	if 0 == tcl.XTcl_GetCommandInfo(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+48) {
 27217  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+1930, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), 0))
 27218  		return TCL_ERROR
 27219  	}
 27220  	db = *(*uintptr)(unsafe.Pointer((*Tcl_CmdInfo)(unsafe.Pointer(bp + 48)).FobjClientData))
 27221  	pChangeset = tcl.XTcl_GetByteArrayFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+112)
 27222  	(*TestConflictHandler)(unsafe.Pointer(bp + 120)).FpConflictScript = *(*uintptr)(unsafe.Pointer(objv + 3*8))
 27223  	(*TestConflictHandler)(unsafe.Pointer(bp + 120)).FpFilterScript = func() uintptr {
 27224  		if objc == 5 {
 27225  			return *(*uintptr)(unsafe.Pointer(objv + 4*8))
 27226  		}
 27227  		return uintptr(0)
 27228  	}()
 27229  	(*TestConflictHandler)(unsafe.Pointer(bp + 120)).Finterp = interp
 27230  
 27231  	if (*TestStreamInput)(unsafe.Pointer(bp+24)).FnStream == 0 {
 27232  		if bV2 == 0 {
 27233  			rc = sqlite3.Xsqlite3changeset_apply(tls, db, *(*int32)(unsafe.Pointer(bp + 112)), pChangeset,
 27234  				func() uintptr {
 27235  					if objc == 5 {
 27236  						return *(*uintptr)(unsafe.Pointer(&struct {
 27237  							f func(*libc.TLS, uintptr, uintptr) int32
 27238  						}{test_filter_handler}))
 27239  					}
 27240  					return uintptr(0)
 27241  				}(), *(*uintptr)(unsafe.Pointer(&struct {
 27242  					f func(*libc.TLS, uintptr, int32, uintptr) int32
 27243  				}{test_conflict_handler})), bp+120)
 27244  		} else {
 27245  			rc = sqlite3.Xsqlite3changeset_apply_v2(tls, db, *(*int32)(unsafe.Pointer(bp + 112)), pChangeset,
 27246  				func() uintptr {
 27247  					if objc == 5 {
 27248  						return *(*uintptr)(unsafe.Pointer(&struct {
 27249  							f func(*libc.TLS, uintptr, uintptr) int32
 27250  						}{test_filter_handler}))
 27251  					}
 27252  					return uintptr(0)
 27253  				}(), *(*uintptr)(unsafe.Pointer(&struct {
 27254  					f func(*libc.TLS, uintptr, int32, uintptr) int32
 27255  				}{test_conflict_handler})), bp+120,
 27256  				bp+144, bp+152, flags)
 27257  		}
 27258  	} else {
 27259  		(*TestStreamInput)(unsafe.Pointer(bp + 24)).FaData = pChangeset
 27260  		(*TestStreamInput)(unsafe.Pointer(bp + 24)).FnData = *(*int32)(unsafe.Pointer(bp + 112))
 27261  		if bV2 == 0 {
 27262  			rc = sqlite3.Xsqlite3changeset_apply_strm(tls, db, *(*uintptr)(unsafe.Pointer(&struct {
 27263  				f func(*libc.TLS, uintptr, uintptr, uintptr) int32
 27264  			}{testStreamInput})), bp+24,
 27265  				func() uintptr {
 27266  					if objc == 5 {
 27267  						return *(*uintptr)(unsafe.Pointer(&struct {
 27268  							f func(*libc.TLS, uintptr, uintptr) int32
 27269  						}{test_filter_handler}))
 27270  					}
 27271  					return uintptr(0)
 27272  				}(),
 27273  				*(*uintptr)(unsafe.Pointer(&struct {
 27274  					f func(*libc.TLS, uintptr, int32, uintptr) int32
 27275  				}{test_conflict_handler})), bp+120)
 27276  		} else {
 27277  			rc = sqlite3.Xsqlite3changeset_apply_v2_strm(tls, db, *(*uintptr)(unsafe.Pointer(&struct {
 27278  				f func(*libc.TLS, uintptr, uintptr, uintptr) int32
 27279  			}{testStreamInput})), bp+24,
 27280  				func() uintptr {
 27281  					if objc == 5 {
 27282  						return *(*uintptr)(unsafe.Pointer(&struct {
 27283  							f func(*libc.TLS, uintptr, uintptr) int32
 27284  						}{test_filter_handler}))
 27285  					}
 27286  					return uintptr(0)
 27287  				}(),
 27288  				*(*uintptr)(unsafe.Pointer(&struct {
 27289  					f func(*libc.TLS, uintptr, int32, uintptr) int32
 27290  				}{test_conflict_handler})), bp+120,
 27291  				bp+144, bp+152, flags)
 27292  		}
 27293  	}
 27294  
 27295  	if rc != SQLITE_OK {
 27296  		return test_session_error(tls, interp, rc, uintptr(0))
 27297  	} else {
 27298  		tcl.XTcl_ResetResult(tls, interp)
 27299  		if bV2 != 0 && *(*uintptr)(unsafe.Pointer(bp + 144)) != 0 {
 27300  			tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewByteArrayObj(tls, *(*uintptr)(unsafe.Pointer(bp + 144)), *(*int32)(unsafe.Pointer(bp + 152))))
 27301  		}
 27302  	}
 27303  	sqlite3.Xsqlite3_free(tls, *(*uintptr)(unsafe.Pointer(bp + 144)))
 27304  	return TCL_OK
 27305  }
 27306  
 27307  func test_sqlite3changeset_apply(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 27308  	return testSqlite3changesetApply(tls, 0, clientData, interp, objc, objv)
 27309  }
 27310  
 27311  func test_sqlite3changeset_apply_v2(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 27312  	return testSqlite3changesetApply(tls, 1, clientData, interp, objc, objv)
 27313  }
 27314  
 27315  func test_sqlite3changeset_apply_replace_all(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 27316  	bp := tls.Alloc(92)
 27317  	defer tls.Free(92)
 27318  
 27319  	var db uintptr
 27320  
 27321  	var rc int32
 27322  	var pChangeset uintptr
 27323  
 27324  	if objc != 3 {
 27325  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+10504)
 27326  		return TCL_ERROR
 27327  	}
 27328  	if 0 == tcl.XTcl_GetCommandInfo(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+24) {
 27329  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+1930, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8))), 0))
 27330  		return TCL_ERROR
 27331  	}
 27332  	db = *(*uintptr)(unsafe.Pointer((*Tcl_CmdInfo)(unsafe.Pointer(bp + 24)).FobjClientData))
 27333  	pChangeset = tcl.XTcl_GetByteArrayFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+88)
 27334  
 27335  	rc = sqlite3.Xsqlite3changeset_apply(tls, db, *(*int32)(unsafe.Pointer(bp + 88)), pChangeset, uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 27336  		f func(*libc.TLS, uintptr, int32, uintptr) int32
 27337  	}{replace_handler})), uintptr(0))
 27338  	if rc != SQLITE_OK {
 27339  		return test_session_error(tls, interp, rc, uintptr(0))
 27340  	}
 27341  	tcl.XTcl_ResetResult(tls, interp)
 27342  	return TCL_OK
 27343  }
 27344  
 27345  func test_sqlite3changeset_invert(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 27346  	bp := tls.Alloc(40)
 27347  	defer tls.Free(40)
 27348  
 27349  	var rc int32
 27350  
 27351  	if objc != 2 {
 27352  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+10517)
 27353  		return TCL_ERROR
 27354  	}
 27355  
 27356  	libc.Xmemset(tls, bp, 0, uint64(unsafe.Sizeof(TestStreamInput{})))
 27357  	libc.Xmemset(tls, bp+24, 0, uint64(unsafe.Sizeof(TestSessionsBlob{})))
 27358  	(*TestStreamInput)(unsafe.Pointer(bp)).FnStream = test_tcl_integer(tls, interp, ts+10098)
 27359  	(*TestStreamInput)(unsafe.Pointer(bp)).FaData = tcl.XTcl_GetByteArrayFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp+16)
 27360  
 27361  	if (*TestStreamInput)(unsafe.Pointer(bp)).FnStream != 0 {
 27362  		rc = sqlite3.Xsqlite3changeset_invert_strm(tls,
 27363  			*(*uintptr)(unsafe.Pointer(&struct {
 27364  				f func(*libc.TLS, uintptr, uintptr, uintptr) int32
 27365  			}{testStreamInput})), bp, *(*uintptr)(unsafe.Pointer(&struct {
 27366  				f func(*libc.TLS, uintptr, uintptr, int32) int32
 27367  			}{testStreamOutput})), bp+24)
 27368  	} else {
 27369  		rc = sqlite3.Xsqlite3changeset_invert(tls, (*TestStreamInput)(unsafe.Pointer(bp)).FnData, (*TestStreamInput)(unsafe.Pointer(bp)).FaData, bp+24+8, bp+24)
 27370  	}
 27371  	if rc != SQLITE_OK {
 27372  		rc = test_session_error(tls, interp, rc, uintptr(0))
 27373  	} else {
 27374  		tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewByteArrayObj(tls, (*TestSessionsBlob)(unsafe.Pointer(bp+24)).Fp, (*TestSessionsBlob)(unsafe.Pointer(bp+24)).Fn))
 27375  	}
 27376  	sqlite3.Xsqlite3_free(tls, (*TestSessionsBlob)(unsafe.Pointer(bp+24)).Fp)
 27377  	return rc
 27378  }
 27379  
 27380  func test_sqlite3changeset_concat(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 27381  	bp := tls.Alloc(64)
 27382  	defer tls.Free(64)
 27383  
 27384  	var rc int32
 27385  
 27386  	*(*TestSessionsBlob)(unsafe.Pointer(bp + 48)) = TestSessionsBlob{}
 27387  
 27388  	if objc != 3 {
 27389  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+10527)
 27390  		return TCL_ERROR
 27391  	}
 27392  
 27393  	libc.Xmemset(tls, bp, 0, uint64(unsafe.Sizeof(TestStreamInput{})))
 27394  	libc.Xmemset(tls, bp+24, 0, uint64(unsafe.Sizeof(TestStreamInput{})))
 27395  	(*TestStreamInput)(unsafe.Pointer(bp)).FaData = tcl.XTcl_GetByteArrayFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp+16)
 27396  	(*TestStreamInput)(unsafe.Pointer(bp + 24)).FaData = tcl.XTcl_GetByteArrayFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+24+16)
 27397  	(*TestStreamInput)(unsafe.Pointer(bp)).FnStream = test_tcl_integer(tls, interp, ts+10098)
 27398  	(*TestStreamInput)(unsafe.Pointer(bp + 24)).FnStream = (*TestStreamInput)(unsafe.Pointer(bp)).FnStream
 27399  
 27400  	if (*TestStreamInput)(unsafe.Pointer(bp)).FnStream > 0 {
 27401  		rc = sqlite3.Xsqlite3changeset_concat_strm(tls,
 27402  			*(*uintptr)(unsafe.Pointer(&struct {
 27403  				f func(*libc.TLS, uintptr, uintptr, uintptr) int32
 27404  			}{testStreamInput})), bp,
 27405  			*(*uintptr)(unsafe.Pointer(&struct {
 27406  				f func(*libc.TLS, uintptr, uintptr, uintptr) int32
 27407  			}{testStreamInput})), bp+24,
 27408  			*(*uintptr)(unsafe.Pointer(&struct {
 27409  				f func(*libc.TLS, uintptr, uintptr, int32) int32
 27410  			}{testStreamOutput})), bp+48)
 27411  	} else {
 27412  		rc = sqlite3.Xsqlite3changeset_concat(tls,
 27413  			(*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)
 27414  	}
 27415  
 27416  	if rc != SQLITE_OK {
 27417  		rc = test_session_error(tls, interp, rc, uintptr(0))
 27418  	} else {
 27419  		tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewByteArrayObj(tls, (*TestSessionsBlob)(unsafe.Pointer(bp+48)).Fp, (*TestSessionsBlob)(unsafe.Pointer(bp+48)).Fn))
 27420  	}
 27421  	sqlite3.Xsqlite3_free(tls, (*TestSessionsBlob)(unsafe.Pointer(bp+48)).Fp)
 27422  	return rc
 27423  }
 27424  
 27425  func test_sqlite3session_foreach(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 27426  	bp := tls.Alloc(104)
 27427  	defer tls.Free(104)
 27428  
 27429  	var pChangeset uintptr
 27430  
 27431  	var rc int32
 27432  	var pVarname uintptr
 27433  	var pCS uintptr
 27434  	var pScript uintptr
 27435  	var isCheckNext int32 = 0
 27436  	var isInvert int32 = 0
 27437  
 27438  	libc.Xmemset(tls, bp, 0, uint64(unsafe.Sizeof(TestStreamInput{})))
 27439  
 27440  	for objc > 1 {
 27441  		var zOpt uintptr = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 27442  		var nOpt int32 = int32(libc.Xstrlen(tls, zOpt))
 27443  		if int32(*(*uint8)(unsafe.Pointer(zOpt))) != '-' {
 27444  			break
 27445  		}
 27446  		if nOpt <= 7 && 0 == sqlite3.Xsqlite3_strnicmp(tls, zOpt, ts+10380, nOpt) {
 27447  			isInvert = 1
 27448  		} else if nOpt <= 5 && 0 == sqlite3.Xsqlite3_strnicmp(tls, zOpt, ts+10538, nOpt) {
 27449  			isCheckNext = 1
 27450  		} else {
 27451  			break
 27452  		}
 27453  		objv += 8
 27454  		objc--
 27455  	}
 27456  	if objc != 4 {
 27457  		tcl.XTcl_WrongNumArgs(tls,
 27458  			interp, 1, objv, ts+10544)
 27459  		return TCL_ERROR
 27460  	}
 27461  
 27462  	pVarname = *(*uintptr)(unsafe.Pointer(objv + 1*8))
 27463  	pCS = *(*uintptr)(unsafe.Pointer(objv + 2*8))
 27464  	pScript = *(*uintptr)(unsafe.Pointer(objv + 3*8))
 27465  
 27466  	pChangeset = tcl.XTcl_GetByteArrayFromObj(tls, pCS, bp+24)
 27467  	(*TestStreamInput)(unsafe.Pointer(bp)).FnStream = test_tcl_integer(tls, interp, ts+10098)
 27468  	if isInvert != 0 {
 27469  		var f int32 = SQLITE_CHANGESETSTART_INVERT
 27470  		if (*TestStreamInput)(unsafe.Pointer(bp)).FnStream == 0 {
 27471  			rc = sqlite3.Xsqlite3changeset_start_v2(tls, bp+32, *(*int32)(unsafe.Pointer(bp + 24)), pChangeset, f)
 27472  		} else {
 27473  			var pCtx uintptr = bp
 27474  			(*TestStreamInput)(unsafe.Pointer(bp)).FaData = pChangeset
 27475  			(*TestStreamInput)(unsafe.Pointer(bp)).FnData = *(*int32)(unsafe.Pointer(bp + 24))
 27476  			rc = sqlite3.Xsqlite3changeset_start_v2_strm(tls, bp+32, *(*uintptr)(unsafe.Pointer(&struct {
 27477  				f func(*libc.TLS, uintptr, uintptr, uintptr) int32
 27478  			}{testStreamInput})), pCtx, f)
 27479  		}
 27480  	} else {
 27481  		if (*TestStreamInput)(unsafe.Pointer(bp)).FnStream == 0 {
 27482  			rc = sqlite3.Xsqlite3changeset_start(tls, bp+32, *(*int32)(unsafe.Pointer(bp + 24)), pChangeset)
 27483  		} else {
 27484  			(*TestStreamInput)(unsafe.Pointer(bp)).FaData = pChangeset
 27485  			(*TestStreamInput)(unsafe.Pointer(bp)).FnData = *(*int32)(unsafe.Pointer(bp + 24))
 27486  			rc = sqlite3.Xsqlite3changeset_start_strm(tls, bp+32, *(*uintptr)(unsafe.Pointer(&struct {
 27487  				f func(*libc.TLS, uintptr, uintptr, uintptr) int32
 27488  			}{testStreamInput})), bp)
 27489  		}
 27490  	}
 27491  	if rc != SQLITE_OK {
 27492  		return test_session_error(tls, interp, rc, uintptr(0))
 27493  	}
 27494  
 27495  	for SQLITE_ROW == sqlite3.Xsqlite3changeset_next(tls, *(*uintptr)(unsafe.Pointer(bp + 32))) {
 27496  		var pVar uintptr
 27497  		var pOld uintptr
 27498  		var pNew uintptr
 27499  
 27500  		var zPK uintptr
 27501  
 27502  		var i int32
 27503  
 27504  		if SQLITE_MISUSE != sqlite3.Xsqlite3changeset_fk_conflicts(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), bp+40) {
 27505  			sqlite3.Xsqlite3changeset_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 32)))
 27506  			return TCL_ERROR
 27507  		}
 27508  
 27509  		sqlite3.Xsqlite3changeset_op(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), bp+48, bp+56, bp+60, bp+64)
 27510  		pVar = tcl.XTcl_NewObj(tls)
 27511  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pVar, tcl.XTcl_NewStringObj(tls,
 27512  			func() uintptr {
 27513  				if *(*int32)(unsafe.Pointer(bp + 60)) == SQLITE_INSERT {
 27514  					return ts + 10307
 27515  				}
 27516  				return func() uintptr {
 27517  					if *(*int32)(unsafe.Pointer(bp + 60)) == SQLITE_UPDATE {
 27518  						return ts + 10314
 27519  					}
 27520  					return ts + 10321
 27521  				}()
 27522  			}(), -1))
 27523  
 27524  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pVar, tcl.XTcl_NewStringObj(tls, *(*uintptr)(unsafe.Pointer(bp + 48)), -1))
 27525  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pVar, tcl.XTcl_NewIntObj(tls, libc.Bool32(*(*int32)(unsafe.Pointer(bp + 64)) != 0)))
 27526  
 27527  		zPK = tcl.XTcl_Alloc(tls, uint32(*(*int32)(unsafe.Pointer(bp + 56))+1))
 27528  		libc.Xmemset(tls, zPK, 0, uint64(*(*int32)(unsafe.Pointer(bp + 56))+1))
 27529  		sqlite3.Xsqlite3changeset_pk(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), bp+72, bp+80)
 27530  
 27531  		for i = 0; i < *(*int32)(unsafe.Pointer(bp + 56)); i++ {
 27532  			*(*uint8)(unsafe.Pointer(zPK + uintptr(i))) = func() uint8 {
 27533  				if *(*uint8)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 72)) + uintptr(i))) != 0 {
 27534  					return uint8('X')
 27535  				}
 27536  				return uint8('.')
 27537  			}()
 27538  		}
 27539  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pVar, tcl.XTcl_NewStringObj(tls, zPK, -1))
 27540  		tcl.XTcl_Free(tls, zPK)
 27541  
 27542  		pOld = tcl.XTcl_NewObj(tls)
 27543  		if *(*int32)(unsafe.Pointer(bp + 60)) != SQLITE_INSERT {
 27544  			for i = 0; i < *(*int32)(unsafe.Pointer(bp + 56)); i++ {
 27545  				sqlite3.Xsqlite3changeset_old(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), i, bp+88)
 27546  				test_append_value(tls, pOld, *(*uintptr)(unsafe.Pointer(bp + 88)))
 27547  			}
 27548  		}
 27549  		pNew = tcl.XTcl_NewObj(tls)
 27550  		if *(*int32)(unsafe.Pointer(bp + 60)) != SQLITE_DELETE {
 27551  			for i = 0; i < *(*int32)(unsafe.Pointer(bp + 56)); i++ {
 27552  				sqlite3.Xsqlite3changeset_new(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), i, bp+96)
 27553  				test_append_value(tls, pNew, *(*uintptr)(unsafe.Pointer(bp + 96)))
 27554  			}
 27555  		}
 27556  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pVar, pOld)
 27557  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pVar, pNew)
 27558  
 27559  		tcl.XTcl_ObjSetVar2(tls, interp, pVarname, uintptr(0), pVar, 0)
 27560  		rc = tcl.XTcl_EvalObjEx(tls, interp, pScript, 0)
 27561  		if rc != TCL_OK && rc != TCL_CONTINUE {
 27562  			sqlite3.Xsqlite3changeset_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 32)))
 27563  			if rc == TCL_BREAK {
 27564  				return TCL_OK
 27565  			}
 27566  			return rc
 27567  		}
 27568  	}
 27569  
 27570  	if isCheckNext != 0 {
 27571  		var rc2 int32 = sqlite3.Xsqlite3changeset_next(tls, *(*uintptr)(unsafe.Pointer(bp + 32)))
 27572  		_ = rc2
 27573  		rc = sqlite3.Xsqlite3changeset_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 32)))
 27574  
 27575  	} else {
 27576  		rc = sqlite3.Xsqlite3changeset_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 32)))
 27577  	}
 27578  	if rc != SQLITE_OK {
 27579  		return test_session_error(tls, interp, rc, uintptr(0))
 27580  	}
 27581  
 27582  	return TCL_OK
 27583  }
 27584  
 27585  func test_rebaser_cmd(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 27586  	bp := tls.Alloc(48)
 27587  	defer tls.Free(48)
 27588  
 27589  	var p uintptr = clientData
 27590  
 27591  	var rc int32
 27592  
 27593  	if objc < 2 {
 27594  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+1999)
 27595  		return TCL_ERROR
 27596  	}
 27597  	rc = tcl.XTcl_GetIndexFromObjStruct(tls, interp,
 27598  		*(*uintptr)(unsafe.Pointer(objv + 1*8)), uintptr(unsafe.Pointer(&aSub1)), int32(unsafe.Sizeof(RebaseSubcmd{})), ts+2014, 0, bp)
 27599  	if rc != TCL_OK {
 27600  		return rc
 27601  	}
 27602  	if objc != 2+aSub1[*(*int32)(unsafe.Pointer(bp))].FnArg {
 27603  		tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, aSub1[*(*int32)(unsafe.Pointer(bp))].FzMsg)
 27604  		return TCL_ERROR
 27605  	}
 27606  
 27607  	switch *(*int32)(unsafe.Pointer(bp)) {
 27608  	case 0:
 27609  		{
 27610  			*(*int32)(unsafe.Pointer(bp + 4)) = 0
 27611  			var pRebase uintptr = tcl.XTcl_GetByteArrayFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+4)
 27612  			rc = sqlite3.Xsqlite3rebaser_configure(tls, p, *(*int32)(unsafe.Pointer(bp + 4)), pRebase)
 27613  			break
 27614  
 27615  		}
 27616  
 27617  	case 1:
 27618  		tcl.XTcl_DeleteCommand(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))))
 27619  		break
 27620  
 27621  	default:
 27622  		{
 27623  			libc.Xmemset(tls, bp+8, 0, uint64(unsafe.Sizeof(TestStreamInput{})))
 27624  			libc.Xmemset(tls, bp+32, 0, uint64(unsafe.Sizeof(TestSessionsBlob{})))
 27625  			(*TestStreamInput)(unsafe.Pointer(bp + 8)).FaData = tcl.XTcl_GetByteArrayFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+8+16)
 27626  			(*TestStreamInput)(unsafe.Pointer(bp + 8)).FnStream = test_tcl_integer(tls, interp, ts+10098)
 27627  
 27628  			if (*TestStreamInput)(unsafe.Pointer(bp+8)).FnStream != 0 {
 27629  				rc = sqlite3.Xsqlite3rebaser_rebase_strm(tls, p,
 27630  					*(*uintptr)(unsafe.Pointer(&struct {
 27631  						f func(*libc.TLS, uintptr, uintptr, uintptr) int32
 27632  					}{testStreamInput})), bp+8,
 27633  					*(*uintptr)(unsafe.Pointer(&struct {
 27634  						f func(*libc.TLS, uintptr, uintptr, int32) int32
 27635  					}{testStreamOutput})), bp+32)
 27636  			} else {
 27637  				rc = sqlite3.Xsqlite3rebaser_rebase(tls, p, (*TestStreamInput)(unsafe.Pointer(bp+8)).FnData, (*TestStreamInput)(unsafe.Pointer(bp+8)).FaData, bp+32+8, bp+32)
 27638  			}
 27639  
 27640  			if rc == SQLITE_OK {
 27641  				tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewByteArrayObj(tls, (*TestSessionsBlob)(unsafe.Pointer(bp+32)).Fp, (*TestSessionsBlob)(unsafe.Pointer(bp+32)).Fn))
 27642  			}
 27643  			sqlite3.Xsqlite3_free(tls, (*TestSessionsBlob)(unsafe.Pointer(bp+32)).Fp)
 27644  			break
 27645  
 27646  		}
 27647  	}
 27648  
 27649  	if rc != SQLITE_OK {
 27650  		return test_session_error(tls, interp, rc, uintptr(0))
 27651  	}
 27652  	return TCL_OK
 27653  }
 27654  
 27655  type RebaseSubcmd = struct {
 27656  	FzSub        uintptr
 27657  	FnArg        int32
 27658  	F__ccgo_pad1 [4]byte
 27659  	FzMsg        uintptr
 27660  	FiSub        int32
 27661  	F__ccgo_pad2 [4]byte
 27662  }
 27663  
 27664  var aSub1 = [4]RebaseSubcmd{
 27665  	{FzSub: ts + 10587, FnArg: 1, FzMsg: ts + 10597},
 27666  	{FzSub: ts + 10138, FzMsg: ts + 584},
 27667  	{FzSub: ts + 10609, FnArg: 1, FzMsg: ts + 10517},
 27668  	{},
 27669  }
 27670  
 27671  func test_rebaser_del(tls *libc.TLS, clientData uintptr) {
 27672  	var p uintptr = clientData
 27673  	sqlite3.Xsqlite3rebaser_delete(tls, p)
 27674  }
 27675  
 27676  func test_sqlite3rebaser_create(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 27677  	bp := tls.Alloc(8)
 27678  	defer tls.Free(8)
 27679  
 27680  	var rc int32
 27681  	*(*uintptr)(unsafe.Pointer(bp)) = uintptr(0)
 27682  	if objc != 2 {
 27683  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+9762)
 27684  		return SQLITE_ERROR
 27685  	}
 27686  
 27687  	rc = sqlite3.Xsqlite3rebaser_create(tls, bp)
 27688  	if rc != SQLITE_OK {
 27689  		return test_session_error(tls, interp, rc, uintptr(0))
 27690  	}
 27691  
 27692  	tcl.XTcl_CreateObjCommand(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), *(*uintptr)(unsafe.Pointer(&struct {
 27693  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 27694  	}{test_rebaser_cmd})),
 27695  		*(*uintptr)(unsafe.Pointer(bp)), *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{test_rebaser_del})))
 27696  	tcl.XTcl_SetObjResult(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 27697  	return TCL_OK
 27698  }
 27699  
 27700  func test_sqlite3session_config(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 27701  	bp := tls.Alloc(8)
 27702  	defer tls.Free(8)
 27703  
 27704  	var rc int32
 27705  
 27706  	if objc != 3 {
 27707  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+10616)
 27708  		return SQLITE_ERROR
 27709  	}
 27710  	rc = tcl.XTcl_GetIndexFromObjStruct(tls, interp,
 27711  		*(*uintptr)(unsafe.Pointer(objv + 1*8)), uintptr(unsafe.Pointer(&aSub2)), int32(unsafe.Sizeof(ConfigOpt{})), ts+2014, 0, bp)
 27712  	if rc != TCL_OK {
 27713  		return rc
 27714  	}
 27715  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+4) != 0 {
 27716  		return TCL_ERROR
 27717  	}
 27718  
 27719  	rc = sqlite3.Xsqlite3session_config(tls, aSub2[*(*int32)(unsafe.Pointer(bp))].Fop, bp+4)
 27720  	if rc != SQLITE_OK {
 27721  		return test_session_error(tls, interp, rc, uintptr(0))
 27722  	}
 27723  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 4))))
 27724  	return TCL_OK
 27725  }
 27726  
 27727  type ConfigOpt = struct {
 27728  	FzSub        uintptr
 27729  	Fop          int32
 27730  	F__ccgo_pad1 [4]byte
 27731  }
 27732  
 27733  var aSub2 = [3]ConfigOpt{
 27734  	{FzSub: ts + 10625, Fop: SQLITE_SESSION_CONFIG_STRMSIZE},
 27735  	{FzSub: ts + 2758},
 27736  	{},
 27737  }
 27738  
 27739  func TestSession_Init(tls *libc.TLS, interp uintptr) int32 {
 27740  	bp := tls.Alloc(160)
 27741  	defer tls.Free(160)
 27742  
 27743  	*(*[10]struct {
 27744  		FzCmd  uintptr
 27745  		FxProc uintptr
 27746  	})(unsafe.Pointer(bp)) = [10]struct {
 27747  		FzCmd  uintptr
 27748  		FxProc uintptr
 27749  	}{
 27750  		{FzCmd: ts + 10635, FxProc: *(*uintptr)(unsafe.Pointer(&struct {
 27751  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 27752  		}{test_sqlite3session}))},
 27753  		{FzCmd: ts + 10650, FxProc: *(*uintptr)(unsafe.Pointer(&struct {
 27754  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 27755  		}{test_sqlite3session_foreach}))},
 27756  		{FzCmd: ts + 10673, FxProc: *(*uintptr)(unsafe.Pointer(&struct {
 27757  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 27758  		}{test_sqlite3changeset_invert}))},
 27759  		{FzCmd: ts + 10697, FxProc: *(*uintptr)(unsafe.Pointer(&struct {
 27760  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 27761  		}{test_sqlite3changeset_concat}))},
 27762  		{FzCmd: ts + 10721, FxProc: *(*uintptr)(unsafe.Pointer(&struct {
 27763  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 27764  		}{test_sqlite3changeset_apply}))},
 27765  		{FzCmd: ts + 10744, FxProc: *(*uintptr)(unsafe.Pointer(&struct {
 27766  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 27767  		}{test_sqlite3changeset_apply_v2}))},
 27768  		{FzCmd: ts + 10770,
 27769  			FxProc: *(*uintptr)(unsafe.Pointer(&struct {
 27770  				f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 27771  			}{test_sqlite3changeset_apply_replace_all}))},
 27772  		{FzCmd: ts + 10805, FxProc: *(*uintptr)(unsafe.Pointer(&struct {
 27773  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 27774  		}{test_sql_exec_changeset}))},
 27775  		{FzCmd: ts + 10824, FxProc: *(*uintptr)(unsafe.Pointer(&struct {
 27776  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 27777  		}{test_sqlite3rebaser_create}))},
 27778  		{FzCmd: ts + 10846, FxProc: *(*uintptr)(unsafe.Pointer(&struct {
 27779  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 27780  		}{test_sqlite3session_config}))},
 27781  	}
 27782  	var i int32
 27783  
 27784  	for i = 0; uint64(i) < uint64(unsafe.Sizeof([10]struct {
 27785  		FzCmd  uintptr
 27786  		FxProc uintptr
 27787  	}{}))/uint64(unsafe.Sizeof(struct {
 27788  		FzCmd  uintptr
 27789  		FxProc uintptr
 27790  	}{})); i++ {
 27791  		var p uintptr = bp + uintptr(i)*16
 27792  		tcl.XTcl_CreateObjCommand(tls, interp, (*struct {
 27793  			FzCmd  uintptr
 27794  			FxProc uintptr
 27795  		})(unsafe.Pointer(p)).FzCmd, (*struct {
 27796  			FzCmd  uintptr
 27797  			FxProc uintptr
 27798  		})(unsafe.Pointer(p)).FxProc, uintptr(0), uintptr(0))
 27799  	}
 27800  
 27801  	return TCL_OK
 27802  }
 27803  
 27804  type sig_atomic_t = int32
 27805  
 27806  type sigval = struct {
 27807  	F__ccgo_pad1 [0]uint64
 27808  	Fsival_int   int32
 27809  	F__ccgo_pad2 [4]byte
 27810  }
 27811  
 27812  type siginfo_t = struct {
 27813  	Fsi_signo  int32
 27814  	Fsi_errno  int32
 27815  	Fsi_code   int32
 27816  	F__pad0    int32
 27817  	F_sifields struct {
 27818  		F__ccgo_pad1 [0]uint64
 27819  		F_pad        [28]int32
 27820  	}
 27821  }
 27822  
 27823  type sigval_t = sigval
 27824  
 27825  type sigevent_t = sigevent
 27826  
 27827  type sig_t = uintptr
 27828  
 27829  type sigaction = struct {
 27830  	F__sigaction_handler struct{ Fsa_handler uintptr }
 27831  	Fsa_mask             struct{ F__val [16]uint64 }
 27832  	Fsa_flags            int32
 27833  	F__ccgo_pad1         [4]byte
 27834  	Fsa_restorer         uintptr
 27835  }
 27836  
 27837  type pt_regs = struct {
 27838  	Fgpr       [32]uint64
 27839  	Fnip       uint64
 27840  	Fmsr       uint64
 27841  	Forig_gpr3 uint64
 27842  	Fctr       uint64
 27843  	Flink      uint64
 27844  	Fxer       uint64
 27845  	Fccr       uint64
 27846  	Fsofte     uint64
 27847  	Ftrap      uint64
 27848  	Fdar       uint64
 27849  	Fdsisr     uint64
 27850  	Fresult    uint64
 27851  }
 27852  
 27853  type ppc_debug_info = struct {
 27854  	Fversion             uint32
 27855  	Fnum_instruction_bps uint32
 27856  	Fnum_data_bps        uint32
 27857  	Fnum_condition_regs  uint32
 27858  	Fdata_bp_alignment   uint32
 27859  	Fsizeof_condition    uint32
 27860  	Ffeatures            uint64
 27861  }
 27862  
 27863  type ppc_hw_breakpoint = struct {
 27864  	Fversion         uint32
 27865  	Ftrigger_type    uint32
 27866  	Faddr_mode       uint32
 27867  	Fcondition_mode  uint32
 27868  	Faddr            uint64
 27869  	Faddr2           uint64
 27870  	Fcondition_value uint64
 27871  }
 27872  
 27873  type elf_greg_t64 = uint64
 27874  type elf_gregset_t64 = [48]elf_greg_t64
 27875  
 27876  type elf_greg_t32 = uint32
 27877  type elf_gregset_t32 = [48]elf_greg_t32
 27878  type compat_elf_gregset_t = elf_gregset_t32
 27879  
 27880  type elf_greg_t = elf_greg_t64
 27881  type elf_gregset_t = elf_gregset_t64
 27882  
 27883  type elf_fpreg_t = float64
 27884  type elf_fpregset_t = [33]elf_fpreg_t
 27885  
 27886  type elf_vrreg_t = struct {
 27887  	F__ccgo_pad1 [0]uint64
 27888  	Fu           [4]uint32
 27889  }
 27890  type elf_vrregset_t = [34]elf_vrreg_t
 27891  type elf_vrregset_t32 = [33]elf_vrreg_t
 27892  type elf_vsrreghalf_t32 = [32]elf_fpreg_t
 27893  
 27894  type ppc64_opd_entry = struct {
 27895  	Ffuncaddr uint64
 27896  	Fr2       uint64
 27897  }
 27898  
 27899  type sigcontext = struct {
 27900  	F_unused     [4]uint64
 27901  	Fsignal      int32
 27902  	F_pad0       int32
 27903  	Fhandler     uint64
 27904  	Foldmask     uint64
 27905  	Fregs        uintptr
 27906  	Fgp_regs     elf_gregset_t
 27907  	Ffp_regs     elf_fpregset_t
 27908  	Fv_regs      uintptr
 27909  	Fvmx_reserve [101]int64
 27910  }
 27911  
 27912  type stack_t = struct {
 27913  	Fss_sp       uintptr
 27914  	Fss_flags    int32
 27915  	F__ccgo_pad1 [4]byte
 27916  	Fss_size     size_t
 27917  }
 27918  
 27919  type gregset_t = [48]uint64
 27920  type fpregset_t = [33]float64
 27921  
 27922  type _libc_vscr = struct {
 27923  	Fvscr_word uint32
 27924  	F__pad     [3]uint32
 27925  }
 27926  
 27927  type vscr_t = _libc_vscr
 27928  
 27929  type _libc_vrstate = struct {
 27930  	Fvrregs [32][4]uint32
 27931  	Fvscr   vscr_t
 27932  	Fvrsave uint32
 27933  	F__pad  [3]uint32
 27934  }
 27935  
 27936  type vrregset_t = _libc_vrstate
 27937  
 27938  type mcontext_t = struct {
 27939  	F__glibc_reserved [4]uint64
 27940  	Fsignal           int32
 27941  	F__pad0           int32
 27942  	Fhandler          uint64
 27943  	Foldmask          uint64
 27944  	Fregs             uintptr
 27945  	Fgp_regs          gregset_t
 27946  	Ffp_regs          fpregset_t
 27947  	Fv_regs           uintptr
 27948  	Fvmx_reserve      [69]int64
 27949  }
 27950  
 27951  type ucontext_t1 = struct {
 27952  	Fuc_flags    uint64
 27953  	Fuc_link     uintptr
 27954  	Fuc_stack    stack_t
 27955  	Fuc_sigmask  sigset_t
 27956  	Fuc_mcontext mcontext_t
 27957  }
 27958  
 27959  type ucontext_t = ucontext_t1
 27960  
 27961  type sigstack = struct {
 27962  	Fss_sp       uintptr
 27963  	Fss_onstack  int32
 27964  	F__ccgo_pad1 [4]byte
 27965  }
 27966  
 27967  type SqliteDb = struct {
 27968  	Fdb             uintptr
 27969  	Finterp         uintptr
 27970  	FzBusy          uintptr
 27971  	FzCommit        uintptr
 27972  	FzTrace         uintptr
 27973  	FzTraceV2       uintptr
 27974  	FzProfile       uintptr
 27975  	FzProgress      uintptr
 27976  	FzBindFallback  uintptr
 27977  	FzAuth          uintptr
 27978  	FdisableAuth    int32
 27979  	F__ccgo_pad1    [4]byte
 27980  	FzNull          uintptr
 27981  	FpFunc          uintptr
 27982  	FpUpdateHook    uintptr
 27983  	FpPreUpdateHook uintptr
 27984  	FpRollbackHook  uintptr
 27985  	FpWalHook       uintptr
 27986  	FpUnlockNotify  uintptr
 27987  	FpCollate       uintptr
 27988  	Frc             int32
 27989  	F__ccgo_pad2    [4]byte
 27990  	FpCollateNeeded uintptr
 27991  	FstmtList       uintptr
 27992  	FstmtLast       uintptr
 27993  	FmaxStmt        int32
 27994  	FnStmt          int32
 27995  	FpIncrblob      uintptr
 27996  	FnStep          int32
 27997  	FnSort          int32
 27998  	FnIndex         int32
 27999  	FnVMStep        int32
 28000  	FnTransaction   int32
 28001  	FopenFlags      int32
 28002  	FnRef           int32
 28003  	FbLegacyPrepare int32
 28004  }
 28005  
 28006  type SqlFunc1 = struct {
 28007  	Finterp      uintptr
 28008  	FpScript     uintptr
 28009  	FpDb         uintptr
 28010  	FuseEvalObjv int32
 28011  	FeType       int32
 28012  	FzName       uintptr
 28013  	FpNext       uintptr
 28014  }
 28015  
 28016  type SqlFunc = SqlFunc1
 28017  
 28018  type SqlCollate1 = struct {
 28019  	Finterp  uintptr
 28020  	FzScript uintptr
 28021  	FpNext   uintptr
 28022  }
 28023  
 28024  type SqlCollate = SqlCollate1
 28025  
 28026  type SqlPreparedStmt1 = struct {
 28027  	FpNext       uintptr
 28028  	FpPrev       uintptr
 28029  	FpStmt       uintptr
 28030  	FnSql        int32
 28031  	F__ccgo_pad1 [4]byte
 28032  	FzSql        uintptr
 28033  	FnParm       int32
 28034  	F__ccgo_pad2 [4]byte
 28035  	FapParm      uintptr
 28036  }
 28037  
 28038  type SqlPreparedStmt = SqlPreparedStmt1
 28039  
 28040  type IncrblobChannel1 = struct {
 28041  	FpBlob       uintptr
 28042  	FpDb         uintptr
 28043  	FiSeek       int32
 28044  	F__ccgo_pad1 [4]byte
 28045  	Fchannel     Tcl_Channel
 28046  	FpNext       uintptr
 28047  	FpPrev       uintptr
 28048  }
 28049  
 28050  type IncrblobChannel = IncrblobChannel1
 28051  
 28052  func strlen30(tls *libc.TLS, z uintptr) int32 {
 28053  	var z2 uintptr = z
 28054  	for *(*uint8)(unsafe.Pointer(z2)) != 0 {
 28055  		z2++
 28056  	}
 28057  	return 0x3fffffff & int32((int64(z2)-int64(z))/1)
 28058  }
 28059  
 28060  func closeIncrblobChannels(tls *libc.TLS, pDb uintptr) {
 28061  	var p uintptr
 28062  	var pNext uintptr
 28063  
 28064  	for p = (*SqliteDb)(unsafe.Pointer(pDb)).FpIncrblob; p != 0; p = pNext {
 28065  		pNext = (*IncrblobChannel)(unsafe.Pointer(p)).FpNext
 28066  
 28067  		tcl.XTcl_UnregisterChannel(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp, (*IncrblobChannel)(unsafe.Pointer(p)).Fchannel)
 28068  	}
 28069  }
 28070  
 28071  func incrblobClose(tls *libc.TLS, instanceData ClientData, interp uintptr) int32 {
 28072  	var p uintptr = instanceData
 28073  	var rc int32 = sqlite3.Xsqlite3_blob_close(tls, (*IncrblobChannel)(unsafe.Pointer(p)).FpBlob)
 28074  	var db uintptr = (*SqliteDb)(unsafe.Pointer((*IncrblobChannel)(unsafe.Pointer(p)).FpDb)).Fdb
 28075  
 28076  	if (*IncrblobChannel)(unsafe.Pointer(p)).FpNext != 0 {
 28077  		(*IncrblobChannel)(unsafe.Pointer((*IncrblobChannel)(unsafe.Pointer(p)).FpNext)).FpPrev = (*IncrblobChannel)(unsafe.Pointer(p)).FpPrev
 28078  	}
 28079  	if (*IncrblobChannel)(unsafe.Pointer(p)).FpPrev != 0 {
 28080  		(*IncrblobChannel)(unsafe.Pointer((*IncrblobChannel)(unsafe.Pointer(p)).FpPrev)).FpNext = (*IncrblobChannel)(unsafe.Pointer(p)).FpNext
 28081  	}
 28082  	if (*SqliteDb)(unsafe.Pointer((*IncrblobChannel)(unsafe.Pointer(p)).FpDb)).FpIncrblob == p {
 28083  		(*SqliteDb)(unsafe.Pointer((*IncrblobChannel)(unsafe.Pointer(p)).FpDb)).FpIncrblob = (*IncrblobChannel)(unsafe.Pointer(p)).FpNext
 28084  	}
 28085  
 28086  	tcl.XTcl_Free(tls, p)
 28087  
 28088  	if rc != SQLITE_OK {
 28089  		tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3_errmsg(tls, db), uintptr(1))
 28090  		return TCL_ERROR
 28091  	}
 28092  	return TCL_OK
 28093  }
 28094  
 28095  func incrblobInput(tls *libc.TLS, instanceData ClientData, buf uintptr, bufSize int32, errorCodePtr uintptr) int32 {
 28096  	var p uintptr = instanceData
 28097  	var nRead int32 = bufSize
 28098  	var nBlob int32
 28099  	var rc int32
 28100  
 28101  	nBlob = sqlite3.Xsqlite3_blob_bytes(tls, (*IncrblobChannel)(unsafe.Pointer(p)).FpBlob)
 28102  	if (*IncrblobChannel)(unsafe.Pointer(p)).FiSeek+nRead > nBlob {
 28103  		nRead = nBlob - (*IncrblobChannel)(unsafe.Pointer(p)).FiSeek
 28104  	}
 28105  	if nRead <= 0 {
 28106  		return 0
 28107  	}
 28108  
 28109  	rc = sqlite3.Xsqlite3_blob_read(tls, (*IncrblobChannel)(unsafe.Pointer(p)).FpBlob, buf, nRead, (*IncrblobChannel)(unsafe.Pointer(p)).FiSeek)
 28110  	if rc != SQLITE_OK {
 28111  		*(*int32)(unsafe.Pointer(errorCodePtr)) = rc
 28112  		return -1
 28113  	}
 28114  
 28115  	*(*int32)(unsafe.Pointer(p + 16)) += nRead
 28116  	return nRead
 28117  }
 28118  
 28119  func incrblobOutput(tls *libc.TLS, instanceData ClientData, buf uintptr, toWrite int32, errorCodePtr uintptr) int32 {
 28120  	var p uintptr = instanceData
 28121  	var nWrite int32 = toWrite
 28122  	var nBlob int32
 28123  	var rc int32
 28124  
 28125  	nBlob = sqlite3.Xsqlite3_blob_bytes(tls, (*IncrblobChannel)(unsafe.Pointer(p)).FpBlob)
 28126  	if (*IncrblobChannel)(unsafe.Pointer(p)).FiSeek+nWrite > nBlob {
 28127  		*(*int32)(unsafe.Pointer(errorCodePtr)) = EINVAL
 28128  		return -1
 28129  	}
 28130  	if nWrite <= 0 {
 28131  		return 0
 28132  	}
 28133  
 28134  	rc = sqlite3.Xsqlite3_blob_write(tls, (*IncrblobChannel)(unsafe.Pointer(p)).FpBlob, buf, nWrite, (*IncrblobChannel)(unsafe.Pointer(p)).FiSeek)
 28135  	if rc != SQLITE_OK {
 28136  		*(*int32)(unsafe.Pointer(errorCodePtr)) = EIO
 28137  		return -1
 28138  	}
 28139  
 28140  	*(*int32)(unsafe.Pointer(p + 16)) += nWrite
 28141  	return nWrite
 28142  }
 28143  
 28144  func incrblobSeek(tls *libc.TLS, instanceData ClientData, offset int64, seekMode int32, errorCodePtr uintptr) int32 {
 28145  	var p uintptr = instanceData
 28146  
 28147  	switch seekMode {
 28148  	case SEEK_SET:
 28149  		(*IncrblobChannel)(unsafe.Pointer(p)).FiSeek = int32(offset)
 28150  		break
 28151  	case SEEK_CUR:
 28152  		*(*int32)(unsafe.Pointer(p + 16)) += int32(offset)
 28153  		break
 28154  	case SEEK_END:
 28155  		(*IncrblobChannel)(unsafe.Pointer(p)).FiSeek = int32(int64(sqlite3.Xsqlite3_blob_bytes(tls, (*IncrblobChannel)(unsafe.Pointer(p)).FpBlob)) + offset)
 28156  		break
 28157  
 28158  	default:
 28159  	}
 28160  
 28161  	return (*IncrblobChannel)(unsafe.Pointer(p)).FiSeek
 28162  }
 28163  
 28164  func incrblobWatch(tls *libc.TLS, instanceData ClientData, mode int32) {
 28165  }
 28166  
 28167  func incrblobHandle(tls *libc.TLS, instanceData ClientData, dir int32, hPtr uintptr) int32 {
 28168  	return TCL_ERROR
 28169  }
 28170  
 28171  var IncrblobChannelType = Tcl_ChannelType{
 28172  	FtypeName:      ts + 10868,
 28173  	Fversion:       uintptr(0x2),
 28174  	FcloseProc:     0,
 28175  	FinputProc:     0,
 28176  	FoutputProc:    0,
 28177  	FseekProc:      0,
 28178  	FwatchProc:     0,
 28179  	FgetHandleProc: 0,
 28180  }
 28181  
 28182  func createIncrblobChannel(tls *libc.TLS, interp uintptr, pDb uintptr, zDb uintptr, zTable uintptr, zColumn uintptr, iRow sqlite_int64, isReadonly int32) int32 {
 28183  	bp := tls.Alloc(80)
 28184  	defer tls.Free(80)
 28185  
 28186  	var p uintptr
 28187  	var db uintptr = (*SqliteDb)(unsafe.Pointer(pDb)).Fdb
 28188  
 28189  	var rc int32
 28190  	var flags int32 = int32(1)<<1 | func() int32 {
 28191  		if isReadonly != 0 {
 28192  			return 0
 28193  		}
 28194  		return int32(1) << 2
 28195  	}()
 28196  
 28197  	rc = sqlite3.Xsqlite3_blob_open(tls, db, zDb, zTable, zColumn, iRow, libc.BoolInt32(!(isReadonly != 0)), bp+8)
 28198  	if rc != SQLITE_OK {
 28199  		tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3_errmsg(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb), uintptr(1))
 28200  		return TCL_ERROR
 28201  	}
 28202  
 28203  	p = tcl.XTcl_Alloc(tls, uint32(unsafe.Sizeof(IncrblobChannel{})))
 28204  	(*IncrblobChannel)(unsafe.Pointer(p)).FiSeek = 0
 28205  	(*IncrblobChannel)(unsafe.Pointer(p)).FpBlob = *(*uintptr)(unsafe.Pointer(bp + 8))
 28206  
 28207  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([64]uint8{})), bp+16, ts+10877, libc.VaList(bp, libc.PreIncInt32(&count, 1)))
 28208  	(*IncrblobChannel)(unsafe.Pointer(p)).Fchannel = tcl.XTcl_CreateChannel(tls, uintptr(unsafe.Pointer(&IncrblobChannelType)), bp+16, p, flags)
 28209  	tcl.XTcl_RegisterChannel(tls, interp, (*IncrblobChannel)(unsafe.Pointer(p)).Fchannel)
 28210  
 28211  	(*IncrblobChannel)(unsafe.Pointer(p)).FpNext = (*SqliteDb)(unsafe.Pointer(pDb)).FpIncrblob
 28212  	(*IncrblobChannel)(unsafe.Pointer(p)).FpPrev = uintptr(0)
 28213  	if (*IncrblobChannel)(unsafe.Pointer(p)).FpNext != 0 {
 28214  		(*IncrblobChannel)(unsafe.Pointer((*IncrblobChannel)(unsafe.Pointer(p)).FpNext)).FpPrev = p
 28215  	}
 28216  	(*SqliteDb)(unsafe.Pointer(pDb)).FpIncrblob = p
 28217  	(*IncrblobChannel)(unsafe.Pointer(p)).FpDb = pDb
 28218  
 28219  	tcl.XTcl_SetResult(tls, interp, tcl.XTcl_GetChannelName(tls, (*IncrblobChannel)(unsafe.Pointer(p)).Fchannel), uintptr(1))
 28220  	return TCL_OK
 28221  }
 28222  
 28223  var count int32 = 0
 28224  
 28225  func safeToUseEvalObjv(tls *libc.TLS, interp uintptr, pCmd uintptr) int32 {
 28226  	bp := tls.Alloc(4)
 28227  	defer tls.Free(4)
 28228  
 28229  	var z uintptr
 28230  
 28231  	z = tcl.XTcl_GetStringFromObj(tls, pCmd, bp)
 28232  	for libc.PostDecInt32(&*(*int32)(unsafe.Pointer(bp)), 1) > 0 {
 28233  		var c int32 = int32(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&z, 1))))
 28234  		if c == '$' || c == '[' || c == ';' {
 28235  			return 0
 28236  		}
 28237  	}
 28238  	return 1
 28239  }
 28240  
 28241  func findSqlFunc(tls *libc.TLS, pDb uintptr, zName uintptr) uintptr {
 28242  	var p uintptr
 28243  	var pNew uintptr
 28244  	var nName int32 = strlen30(tls, zName)
 28245  	pNew = tcl.XTcl_Alloc(tls, uint32(uint64(unsafe.Sizeof(SqlFunc{}))+uint64(nName)+uint64(1)))
 28246  	(*SqlFunc)(unsafe.Pointer(pNew)).FzName = pNew + 1*48
 28247  	libc.Xmemcpy(tls, (*SqlFunc)(unsafe.Pointer(pNew)).FzName, zName, uint64(nName+1))
 28248  	for p = (*SqliteDb)(unsafe.Pointer(pDb)).FpFunc; p != 0; p = (*SqlFunc)(unsafe.Pointer(p)).FpNext {
 28249  		if sqlite3.Xsqlite3_stricmp(tls, (*SqlFunc)(unsafe.Pointer(p)).FzName, (*SqlFunc)(unsafe.Pointer(pNew)).FzName) == 0 {
 28250  			tcl.XTcl_Free(tls, pNew)
 28251  			return p
 28252  		}
 28253  	}
 28254  	(*SqlFunc)(unsafe.Pointer(pNew)).Finterp = (*SqliteDb)(unsafe.Pointer(pDb)).Finterp
 28255  	(*SqlFunc)(unsafe.Pointer(pNew)).FpDb = pDb
 28256  	(*SqlFunc)(unsafe.Pointer(pNew)).FpScript = uintptr(0)
 28257  	(*SqlFunc)(unsafe.Pointer(pNew)).FpNext = (*SqliteDb)(unsafe.Pointer(pDb)).FpFunc
 28258  	(*SqliteDb)(unsafe.Pointer(pDb)).FpFunc = pNew
 28259  	return pNew
 28260  }
 28261  
 28262  func dbFreeStmt(tls *libc.TLS, pStmt uintptr) {
 28263  	if sqlite3.Xsqlite3_sql(tls, (*SqlPreparedStmt)(unsafe.Pointer(pStmt)).FpStmt) == uintptr(0) {
 28264  		tcl.XTcl_Free(tls, (*SqlPreparedStmt)(unsafe.Pointer(pStmt)).FzSql)
 28265  	}
 28266  	sqlite3.Xsqlite3_finalize(tls, (*SqlPreparedStmt)(unsafe.Pointer(pStmt)).FpStmt)
 28267  	tcl.XTcl_Free(tls, pStmt)
 28268  }
 28269  
 28270  func flushStmtCache(tls *libc.TLS, pDb uintptr) {
 28271  	var pPreStmt uintptr
 28272  	var pNext uintptr
 28273  
 28274  	for pPreStmt = (*SqliteDb)(unsafe.Pointer(pDb)).FstmtList; pPreStmt != 0; pPreStmt = pNext {
 28275  		pNext = (*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FpNext
 28276  		dbFreeStmt(tls, pPreStmt)
 28277  	}
 28278  	(*SqliteDb)(unsafe.Pointer(pDb)).FnStmt = 0
 28279  	(*SqliteDb)(unsafe.Pointer(pDb)).FstmtLast = uintptr(0)
 28280  	(*SqliteDb)(unsafe.Pointer(pDb)).FstmtList = uintptr(0)
 28281  }
 28282  
 28283  func addDatabaseRef(tls *libc.TLS, pDb uintptr) {
 28284  	(*SqliteDb)(unsafe.Pointer(pDb)).FnRef++
 28285  }
 28286  
 28287  func delDatabaseRef(tls *libc.TLS, pDb uintptr) {
 28288  	(*SqliteDb)(unsafe.Pointer(pDb)).FnRef--
 28289  	if (*SqliteDb)(unsafe.Pointer(pDb)).FnRef == 0 {
 28290  		flushStmtCache(tls, pDb)
 28291  		closeIncrblobChannels(tls, pDb)
 28292  		sqlite3.Xsqlite3_close(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb)
 28293  		for (*SqliteDb)(unsafe.Pointer(pDb)).FpFunc != 0 {
 28294  			var pFunc uintptr = (*SqliteDb)(unsafe.Pointer(pDb)).FpFunc
 28295  			(*SqliteDb)(unsafe.Pointer(pDb)).FpFunc = (*SqlFunc)(unsafe.Pointer(pFunc)).FpNext
 28296  
 28297  			for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 28298  				var _objPtr uintptr = (*SqlFunc)(unsafe.Pointer(pFunc)).FpScript
 28299  				if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 28300  					tcl.XTclFreeObj(tls, _objPtr)
 28301  				}
 28302  			}
 28303  			tcl.XTcl_Free(tls, pFunc)
 28304  		}
 28305  		for (*SqliteDb)(unsafe.Pointer(pDb)).FpCollate != 0 {
 28306  			var pCollate uintptr = (*SqliteDb)(unsafe.Pointer(pDb)).FpCollate
 28307  			(*SqliteDb)(unsafe.Pointer(pDb)).FpCollate = (*SqlCollate)(unsafe.Pointer(pCollate)).FpNext
 28308  			tcl.XTcl_Free(tls, pCollate)
 28309  		}
 28310  		if (*SqliteDb)(unsafe.Pointer(pDb)).FzBusy != 0 {
 28311  			tcl.XTcl_Free(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzBusy)
 28312  		}
 28313  		if (*SqliteDb)(unsafe.Pointer(pDb)).FzTrace != 0 {
 28314  			tcl.XTcl_Free(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzTrace)
 28315  		}
 28316  		if (*SqliteDb)(unsafe.Pointer(pDb)).FzTraceV2 != 0 {
 28317  			tcl.XTcl_Free(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzTraceV2)
 28318  		}
 28319  		if (*SqliteDb)(unsafe.Pointer(pDb)).FzProfile != 0 {
 28320  			tcl.XTcl_Free(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzProfile)
 28321  		}
 28322  		if (*SqliteDb)(unsafe.Pointer(pDb)).FzBindFallback != 0 {
 28323  			tcl.XTcl_Free(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzBindFallback)
 28324  		}
 28325  		if (*SqliteDb)(unsafe.Pointer(pDb)).FzAuth != 0 {
 28326  			tcl.XTcl_Free(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzAuth)
 28327  		}
 28328  		if (*SqliteDb)(unsafe.Pointer(pDb)).FzNull != 0 {
 28329  			tcl.XTcl_Free(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzNull)
 28330  		}
 28331  		if (*SqliteDb)(unsafe.Pointer(pDb)).FpUpdateHook != 0 {
 28332  			for __ccgo1 := true; __ccgo1; __ccgo1 = 0 != 0 {
 28333  				var _objPtr uintptr = (*SqliteDb)(unsafe.Pointer(pDb)).FpUpdateHook
 28334  				if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 28335  					tcl.XTclFreeObj(tls, _objPtr)
 28336  				}
 28337  			}
 28338  		}
 28339  		if (*SqliteDb)(unsafe.Pointer(pDb)).FpPreUpdateHook != 0 {
 28340  			for __ccgo2 := true; __ccgo2; __ccgo2 = 0 != 0 {
 28341  				var _objPtr uintptr = (*SqliteDb)(unsafe.Pointer(pDb)).FpPreUpdateHook
 28342  				if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 28343  					tcl.XTclFreeObj(tls, _objPtr)
 28344  				}
 28345  			}
 28346  		}
 28347  		if (*SqliteDb)(unsafe.Pointer(pDb)).FpRollbackHook != 0 {
 28348  			for __ccgo3 := true; __ccgo3; __ccgo3 = 0 != 0 {
 28349  				var _objPtr uintptr = (*SqliteDb)(unsafe.Pointer(pDb)).FpRollbackHook
 28350  				if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 28351  					tcl.XTclFreeObj(tls, _objPtr)
 28352  				}
 28353  			}
 28354  		}
 28355  		if (*SqliteDb)(unsafe.Pointer(pDb)).FpWalHook != 0 {
 28356  			for __ccgo4 := true; __ccgo4; __ccgo4 = 0 != 0 {
 28357  				var _objPtr uintptr = (*SqliteDb)(unsafe.Pointer(pDb)).FpWalHook
 28358  				if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 28359  					tcl.XTclFreeObj(tls, _objPtr)
 28360  				}
 28361  			}
 28362  		}
 28363  		if (*SqliteDb)(unsafe.Pointer(pDb)).FpCollateNeeded != 0 {
 28364  			for __ccgo5 := true; __ccgo5; __ccgo5 = 0 != 0 {
 28365  				var _objPtr uintptr = (*SqliteDb)(unsafe.Pointer(pDb)).FpCollateNeeded
 28366  				if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 28367  					tcl.XTclFreeObj(tls, _objPtr)
 28368  				}
 28369  			}
 28370  		}
 28371  		tcl.XTcl_Free(tls, pDb)
 28372  	}
 28373  }
 28374  
 28375  func DbDeleteCmd(tls *libc.TLS, db uintptr) {
 28376  	var pDb uintptr = db
 28377  	delDatabaseRef(tls, pDb)
 28378  }
 28379  
 28380  func DbBusyHandler(tls *libc.TLS, cd uintptr, nTries int32) int32 {
 28381  	bp := tls.Alloc(70)
 28382  	defer tls.Free(70)
 28383  
 28384  	var pDb uintptr = cd
 28385  	var rc int32
 28386  
 28387  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([30]uint8{})), bp+40, ts+1333, libc.VaList(bp, nTries))
 28388  	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)))
 28389  	if rc != TCL_OK || libc.Xatoi(tls, tcl.XTcl_GetStringResult(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp)) != 0 {
 28390  		return 0
 28391  	}
 28392  	return 1
 28393  }
 28394  
 28395  func DbProgressHandler(tls *libc.TLS, cd uintptr) int32 {
 28396  	var pDb uintptr = cd
 28397  	var rc int32
 28398  
 28399  	rc = tcl.XTcl_Eval(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp, (*SqliteDb)(unsafe.Pointer(pDb)).FzProgress)
 28400  	if rc != TCL_OK || libc.Xatoi(tls, tcl.XTcl_GetStringResult(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp)) != 0 {
 28401  		return 1
 28402  	}
 28403  	return 0
 28404  }
 28405  
 28406  func DbTraceHandler(tls *libc.TLS, cd uintptr, zSql uintptr) {
 28407  	bp := tls.Alloc(216)
 28408  	defer tls.Free(216)
 28409  
 28410  	var pDb uintptr = cd
 28411  
 28412  	tcl.XTcl_DStringInit(tls, bp)
 28413  	tcl.XTcl_DStringAppend(tls, bp, (*SqliteDb)(unsafe.Pointer(pDb)).FzTrace, -1)
 28414  	tcl.XTcl_DStringAppendElement(tls, bp, zSql)
 28415  	tcl.XTcl_Eval(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp, (*Tcl_DString)(unsafe.Pointer(bp)).Fstring)
 28416  	tcl.XTcl_DStringFree(tls, bp)
 28417  	tcl.XTcl_ResetResult(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp)
 28418  }
 28419  
 28420  func DbTraceV2Handler(tls *libc.TLS, type1 uint32, cd uintptr, pd uintptr, xd uintptr) int32 {
 28421  	var pDb uintptr = cd
 28422  	var pCmd uintptr
 28423  
 28424  	switch type1 {
 28425  	case uint32(SQLITE_TRACE_STMT):
 28426  		{
 28427  			var pStmt uintptr = pd
 28428  			var zSql uintptr = xd
 28429  
 28430  			pCmd = tcl.XTcl_NewStringObj(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzTraceV2, -1)
 28431  			(*Tcl_Obj)(unsafe.Pointer(pCmd)).FrefCount++
 28432  			tcl.XTcl_ListObjAppendElement(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp, pCmd,
 28433  				tcl.XTcl_NewWideIntObj(tls, int64(pStmt)))
 28434  			tcl.XTcl_ListObjAppendElement(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp, pCmd,
 28435  				tcl.XTcl_NewStringObj(tls, zSql, -1))
 28436  			tcl.XTcl_EvalObjEx(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp, pCmd, TCL_EVAL_DIRECT)
 28437  			for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 28438  				var _objPtr uintptr = pCmd
 28439  				if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 28440  					tcl.XTclFreeObj(tls, _objPtr)
 28441  				}
 28442  			}
 28443  			tcl.XTcl_ResetResult(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp)
 28444  			break
 28445  
 28446  		}
 28447  	case uint32(SQLITE_TRACE_PROFILE):
 28448  		{
 28449  			var pStmt uintptr = pd
 28450  			var ns sqlite3_int64 = *(*sqlite3_int64)(unsafe.Pointer(xd))
 28451  
 28452  			pCmd = tcl.XTcl_NewStringObj(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzTraceV2, -1)
 28453  			(*Tcl_Obj)(unsafe.Pointer(pCmd)).FrefCount++
 28454  			tcl.XTcl_ListObjAppendElement(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp, pCmd,
 28455  				tcl.XTcl_NewWideIntObj(tls, int64(pStmt)))
 28456  			tcl.XTcl_ListObjAppendElement(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp, pCmd,
 28457  				tcl.XTcl_NewWideIntObj(tls, ns))
 28458  			tcl.XTcl_EvalObjEx(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp, pCmd, TCL_EVAL_DIRECT)
 28459  			for __ccgo1 := true; __ccgo1; __ccgo1 = 0 != 0 {
 28460  				var _objPtr uintptr = pCmd
 28461  				if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 28462  					tcl.XTclFreeObj(tls, _objPtr)
 28463  				}
 28464  			}
 28465  			tcl.XTcl_ResetResult(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp)
 28466  			break
 28467  
 28468  		}
 28469  	case uint32(SQLITE_TRACE_ROW):
 28470  		{
 28471  			var pStmt uintptr = pd
 28472  
 28473  			pCmd = tcl.XTcl_NewStringObj(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzTraceV2, -1)
 28474  			(*Tcl_Obj)(unsafe.Pointer(pCmd)).FrefCount++
 28475  			tcl.XTcl_ListObjAppendElement(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp, pCmd,
 28476  				tcl.XTcl_NewWideIntObj(tls, int64(pStmt)))
 28477  			tcl.XTcl_EvalObjEx(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp, pCmd, TCL_EVAL_DIRECT)
 28478  			for __ccgo2 := true; __ccgo2; __ccgo2 = 0 != 0 {
 28479  				var _objPtr uintptr = pCmd
 28480  				if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 28481  					tcl.XTclFreeObj(tls, _objPtr)
 28482  				}
 28483  			}
 28484  			tcl.XTcl_ResetResult(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp)
 28485  			break
 28486  
 28487  		}
 28488  	case uint32(SQLITE_TRACE_CLOSE):
 28489  		{
 28490  			var db uintptr = pd
 28491  
 28492  			pCmd = tcl.XTcl_NewStringObj(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzTraceV2, -1)
 28493  			(*Tcl_Obj)(unsafe.Pointer(pCmd)).FrefCount++
 28494  			tcl.XTcl_ListObjAppendElement(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp, pCmd,
 28495  				tcl.XTcl_NewWideIntObj(tls, int64(db)))
 28496  			tcl.XTcl_EvalObjEx(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp, pCmd, TCL_EVAL_DIRECT)
 28497  			for __ccgo3 := true; __ccgo3; __ccgo3 = 0 != 0 {
 28498  				var _objPtr uintptr = pCmd
 28499  				if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 28500  					tcl.XTclFreeObj(tls, _objPtr)
 28501  				}
 28502  			}
 28503  			tcl.XTcl_ResetResult(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp)
 28504  			break
 28505  
 28506  		}
 28507  	}
 28508  	return SQLITE_OK
 28509  }
 28510  
 28511  func DbProfileHandler(tls *libc.TLS, cd uintptr, zSql uintptr, tm1 sqlite_uint64) {
 28512  	bp := tls.Alloc(328)
 28513  	defer tls.Free(328)
 28514  
 28515  	var pDb uintptr = cd
 28516  
 28517  	sqlite3.Xsqlite3_snprintf(tls, int32(uint64(unsafe.Sizeof([100]uint8{}))-uint64(1)), bp+8, ts+6325, libc.VaList(bp, tm1))
 28518  	tcl.XTcl_DStringInit(tls, bp+112)
 28519  	tcl.XTcl_DStringAppend(tls, bp+112, (*SqliteDb)(unsafe.Pointer(pDb)).FzProfile, -1)
 28520  	tcl.XTcl_DStringAppendElement(tls, bp+112, zSql)
 28521  	tcl.XTcl_DStringAppendElement(tls, bp+112, bp+8)
 28522  	tcl.XTcl_Eval(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp, (*Tcl_DString)(unsafe.Pointer(bp+112)).Fstring)
 28523  	tcl.XTcl_DStringFree(tls, bp+112)
 28524  	tcl.XTcl_ResetResult(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp)
 28525  }
 28526  
 28527  func DbCommitHandler(tls *libc.TLS, cd uintptr) int32 {
 28528  	var pDb uintptr = cd
 28529  	var rc int32
 28530  
 28531  	rc = tcl.XTcl_Eval(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp, (*SqliteDb)(unsafe.Pointer(pDb)).FzCommit)
 28532  	if rc != TCL_OK || libc.Xatoi(tls, tcl.XTcl_GetStringResult(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp)) != 0 {
 28533  		return 1
 28534  	}
 28535  	return 0
 28536  }
 28537  
 28538  func DbRollbackHandler(tls *libc.TLS, clientData uintptr) {
 28539  	var pDb uintptr = clientData
 28540  
 28541  	if TCL_OK != tcl.XTcl_EvalObjEx(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp, (*SqliteDb)(unsafe.Pointer(pDb)).FpRollbackHook, 0) {
 28542  		tcl.XTcl_BackgroundError(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp)
 28543  	}
 28544  }
 28545  
 28546  func DbWalHandler(tls *libc.TLS, clientData uintptr, db uintptr, zDb uintptr, nEntry int32) int32 {
 28547  	bp := tls.Alloc(4)
 28548  	defer tls.Free(4)
 28549  
 28550  	*(*int32)(unsafe.Pointer(bp)) = SQLITE_OK
 28551  	var p uintptr
 28552  	var pDb uintptr = clientData
 28553  	var interp uintptr = (*SqliteDb)(unsafe.Pointer(pDb)).Finterp
 28554  
 28555  	p = tcl.XTcl_DuplicateObj(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FpWalHook)
 28556  	(*Tcl_Obj)(unsafe.Pointer(p)).FrefCount++
 28557  	tcl.XTcl_ListObjAppendElement(tls, interp, p, tcl.XTcl_NewStringObj(tls, zDb, -1))
 28558  	tcl.XTcl_ListObjAppendElement(tls, interp, p, tcl.XTcl_NewIntObj(tls, nEntry))
 28559  	if TCL_OK != tcl.XTcl_EvalObjEx(tls, interp, p, 0) ||
 28560  		TCL_OK != tcl.XTcl_GetIntFromObj(tls, interp, tcl.XTcl_GetObjResult(tls, interp), bp) {
 28561  		tcl.XTcl_BackgroundError(tls, interp)
 28562  	}
 28563  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 28564  		var _objPtr uintptr = p
 28565  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 28566  			tcl.XTclFreeObj(tls, _objPtr)
 28567  		}
 28568  	}
 28569  
 28570  	return *(*int32)(unsafe.Pointer(bp))
 28571  }
 28572  
 28573  func setTestUnlockNotifyVars(tls *libc.TLS, interp uintptr, iArg int32, nArg int32) {
 28574  	bp := tls.Alloc(80)
 28575  	defer tls.Free(80)
 28576  
 28577  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([64]uint8{})), bp+16, ts+1333, libc.VaList(bp, iArg))
 28578  	tcl.XTcl_SetVar2(tls, interp, ts+10889, uintptr(0), bp+16, TCL_GLOBAL_ONLY)
 28579  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([64]uint8{})), bp+16, ts+1333, libc.VaList(bp+8, nArg))
 28580  	tcl.XTcl_SetVar2(tls, interp, ts+10914, uintptr(0), bp+16, TCL_GLOBAL_ONLY)
 28581  }
 28582  
 28583  func DbUnlockNotify(tls *libc.TLS, apArg uintptr, nArg int32) {
 28584  	var i int32
 28585  	for i = 0; i < nArg; i++ {
 28586  		var flags int32 = TCL_EVAL_GLOBAL | TCL_EVAL_DIRECT
 28587  		var pDb uintptr = *(*uintptr)(unsafe.Pointer(apArg + uintptr(i)*8))
 28588  		setTestUnlockNotifyVars(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp, i, nArg)
 28589  
 28590  		tcl.XTcl_EvalObjEx(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp, (*SqliteDb)(unsafe.Pointer(pDb)).FpUnlockNotify, flags)
 28591  		for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 28592  			var _objPtr uintptr = (*SqliteDb)(unsafe.Pointer(pDb)).FpUnlockNotify
 28593  			if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 28594  				tcl.XTclFreeObj(tls, _objPtr)
 28595  			}
 28596  		}
 28597  		(*SqliteDb)(unsafe.Pointer(pDb)).FpUnlockNotify = uintptr(0)
 28598  	}
 28599  }
 28600  
 28601  func DbPreUpdateHandler(tls *libc.TLS, p uintptr, db uintptr, op int32, zDb uintptr, zTbl uintptr, iKey1 sqlite_int64, iKey2 sqlite_int64) {
 28602  	var pDb uintptr = p
 28603  	var pCmd uintptr
 28604  
 28605  	pCmd = tcl.XTcl_DuplicateObj(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FpPreUpdateHook)
 28606  	(*Tcl_Obj)(unsafe.Pointer(pCmd)).FrefCount++
 28607  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pCmd, tcl.XTcl_NewStringObj(tls, azStr[(op-1)/9], -1))
 28608  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pCmd, tcl.XTcl_NewStringObj(tls, zDb, -1))
 28609  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pCmd, tcl.XTcl_NewStringObj(tls, zTbl, -1))
 28610  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pCmd, tcl.XTcl_NewWideIntObj(tls, iKey1))
 28611  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pCmd, tcl.XTcl_NewWideIntObj(tls, iKey2))
 28612  	tcl.XTcl_EvalObjEx(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp, pCmd, TCL_EVAL_DIRECT)
 28613  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 28614  		var _objPtr uintptr = pCmd
 28615  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 28616  			tcl.XTclFreeObj(tls, _objPtr)
 28617  		}
 28618  	}
 28619  }
 28620  
 28621  var azStr = [3]uintptr{ts + 10321, ts + 10307, ts + 10314}
 28622  
 28623  func DbUpdateHandler(tls *libc.TLS, p uintptr, op int32, zDb uintptr, zTbl uintptr, rowid sqlite_int64) {
 28624  	var pDb uintptr = p
 28625  	var pCmd uintptr
 28626  
 28627  	pCmd = tcl.XTcl_DuplicateObj(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FpUpdateHook)
 28628  	(*Tcl_Obj)(unsafe.Pointer(pCmd)).FrefCount++
 28629  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pCmd, tcl.XTcl_NewStringObj(tls, azStr1[(op-1)/9], -1))
 28630  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pCmd, tcl.XTcl_NewStringObj(tls, zDb, -1))
 28631  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pCmd, tcl.XTcl_NewStringObj(tls, zTbl, -1))
 28632  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pCmd, tcl.XTcl_NewWideIntObj(tls, rowid))
 28633  	tcl.XTcl_EvalObjEx(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp, pCmd, TCL_EVAL_DIRECT)
 28634  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 28635  		var _objPtr uintptr = pCmd
 28636  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 28637  			tcl.XTclFreeObj(tls, _objPtr)
 28638  		}
 28639  	}
 28640  }
 28641  
 28642  var azStr1 = [3]uintptr{ts + 10321, ts + 10307, ts + 10314}
 28643  
 28644  func tclCollateNeeded(tls *libc.TLS, pCtx uintptr, db uintptr, enc int32, zName uintptr) {
 28645  	var pDb uintptr = pCtx
 28646  	var pScript uintptr = tcl.XTcl_DuplicateObj(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FpCollateNeeded)
 28647  	(*Tcl_Obj)(unsafe.Pointer(pScript)).FrefCount++
 28648  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pScript, tcl.XTcl_NewStringObj(tls, zName, -1))
 28649  	tcl.XTcl_EvalObjEx(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp, pScript, 0)
 28650  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 28651  		var _objPtr uintptr = pScript
 28652  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 28653  			tcl.XTclFreeObj(tls, _objPtr)
 28654  		}
 28655  	}
 28656  }
 28657  
 28658  func tclSqlCollate(tls *libc.TLS, pCtx uintptr, nA int32, zA uintptr, nB int32, zB uintptr) int32 {
 28659  	var p uintptr = pCtx
 28660  	var pCmd uintptr
 28661  
 28662  	pCmd = tcl.XTcl_NewStringObj(tls, (*SqlCollate)(unsafe.Pointer(p)).FzScript, -1)
 28663  	(*Tcl_Obj)(unsafe.Pointer(pCmd)).FrefCount++
 28664  	tcl.XTcl_ListObjAppendElement(tls, (*SqlCollate)(unsafe.Pointer(p)).Finterp, pCmd, tcl.XTcl_NewStringObj(tls, zA, nA))
 28665  	tcl.XTcl_ListObjAppendElement(tls, (*SqlCollate)(unsafe.Pointer(p)).Finterp, pCmd, tcl.XTcl_NewStringObj(tls, zB, nB))
 28666  	tcl.XTcl_EvalObjEx(tls, (*SqlCollate)(unsafe.Pointer(p)).Finterp, pCmd, TCL_EVAL_DIRECT)
 28667  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 28668  		var _objPtr uintptr = pCmd
 28669  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 28670  			tcl.XTclFreeObj(tls, _objPtr)
 28671  		}
 28672  	}
 28673  	return libc.Xatoi(tls, tcl.XTcl_GetStringResult(tls, (*SqlCollate)(unsafe.Pointer(p)).Finterp))
 28674  }
 28675  
 28676  func tclSqlFunc(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 28677  	bp := tls.Alloc(40)
 28678  	defer tls.Free(40)
 28679  
 28680  	var p uintptr = sqlite3.Xsqlite3_user_data(tls, context)
 28681  	var pCmd uintptr
 28682  	var i int32
 28683  	var rc int32
 28684  
 28685  	if argc == 0 {
 28686  		pCmd = (*SqlFunc)(unsafe.Pointer(p)).FpScript
 28687  		(*Tcl_Obj)(unsafe.Pointer(pCmd)).FrefCount++
 28688  		rc = tcl.XTcl_EvalObjEx(tls, (*SqlFunc)(unsafe.Pointer(p)).Finterp, pCmd, 0)
 28689  		for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 28690  			var _objPtr uintptr = pCmd
 28691  			if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 28692  				tcl.XTclFreeObj(tls, _objPtr)
 28693  			}
 28694  		}
 28695  	} else {
 28696  		if tcl.XTcl_ListObjGetElements(tls, (*SqlFunc)(unsafe.Pointer(p)).Finterp, (*SqlFunc)(unsafe.Pointer(p)).FpScript, bp, bp+8) != 0 {
 28697  			sqlite3.Xsqlite3_result_error(tls, context, tcl.XTcl_GetStringResult(tls, (*SqlFunc)(unsafe.Pointer(p)).Finterp), -1)
 28698  			return
 28699  		}
 28700  		pCmd = tcl.XTcl_NewListObj(tls, *(*int32)(unsafe.Pointer(bp)), *(*uintptr)(unsafe.Pointer(bp + 8)))
 28701  		(*Tcl_Obj)(unsafe.Pointer(pCmd)).FrefCount++
 28702  		for i = 0; i < argc; i++ {
 28703  			var pIn uintptr = *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8))
 28704  			var pVal uintptr
 28705  
 28706  			switch sqlite3.Xsqlite3_value_type(tls, pIn) {
 28707  			case SQLITE_BLOB:
 28708  				{
 28709  					var bytes int32 = sqlite3.Xsqlite3_value_bytes(tls, pIn)
 28710  					pVal = tcl.XTcl_NewByteArrayObj(tls, sqlite3.Xsqlite3_value_blob(tls, pIn), bytes)
 28711  					break
 28712  
 28713  				}
 28714  				fallthrough
 28715  			case SQLITE_INTEGER:
 28716  				{
 28717  					var v sqlite_int64 = sqlite3.Xsqlite3_value_int64(tls, pIn)
 28718  					if v >= int64(-2147483647) && v <= int64(2147483647) {
 28719  						pVal = tcl.XTcl_NewIntObj(tls, int32(v))
 28720  					} else {
 28721  						pVal = tcl.XTcl_NewWideIntObj(tls, v)
 28722  					}
 28723  					break
 28724  
 28725  				}
 28726  				fallthrough
 28727  			case SQLITE_FLOAT:
 28728  				{
 28729  					var r float64 = sqlite3.Xsqlite3_value_double(tls, pIn)
 28730  					pVal = tcl.XTcl_NewDoubleObj(tls, r)
 28731  					break
 28732  
 28733  				}
 28734  				fallthrough
 28735  			case SQLITE_NULL:
 28736  				{
 28737  					pVal = tcl.XTcl_NewStringObj(tls, (*SqliteDb)(unsafe.Pointer((*SqlFunc)(unsafe.Pointer(p)).FpDb)).FzNull, -1)
 28738  					break
 28739  
 28740  				}
 28741  				fallthrough
 28742  			default:
 28743  				{
 28744  					var bytes int32 = sqlite3.Xsqlite3_value_bytes(tls, pIn)
 28745  					pVal = tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3_value_text(tls, pIn), bytes)
 28746  					break
 28747  
 28748  				}
 28749  			}
 28750  			rc = tcl.XTcl_ListObjAppendElement(tls, (*SqlFunc)(unsafe.Pointer(p)).Finterp, pCmd, pVal)
 28751  			if rc != 0 {
 28752  				for __ccgo1 := true; __ccgo1; __ccgo1 = 0 != 0 {
 28753  					var _objPtr uintptr = pCmd
 28754  					if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 28755  						tcl.XTclFreeObj(tls, _objPtr)
 28756  					}
 28757  				}
 28758  				sqlite3.Xsqlite3_result_error(tls, context, tcl.XTcl_GetStringResult(tls, (*SqlFunc)(unsafe.Pointer(p)).Finterp), -1)
 28759  				return
 28760  			}
 28761  		}
 28762  		if !((*SqlFunc)(unsafe.Pointer(p)).FuseEvalObjv != 0) {
 28763  			tcl.XTcl_GetString(tls, pCmd)
 28764  		}
 28765  		rc = tcl.XTcl_EvalObjEx(tls, (*SqlFunc)(unsafe.Pointer(p)).Finterp, pCmd, TCL_EVAL_DIRECT)
 28766  		for __ccgo2 := true; __ccgo2; __ccgo2 = 0 != 0 {
 28767  			var _objPtr uintptr = pCmd
 28768  			if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 28769  				tcl.XTclFreeObj(tls, _objPtr)
 28770  			}
 28771  		}
 28772  	}
 28773  
 28774  	if rc != 0 && rc != TCL_RETURN {
 28775  		sqlite3.Xsqlite3_result_error(tls, context, tcl.XTcl_GetStringResult(tls, (*SqlFunc)(unsafe.Pointer(p)).Finterp), -1)
 28776  	} else {
 28777  		var pVar uintptr = tcl.XTcl_GetObjResult(tls, (*SqlFunc)(unsafe.Pointer(p)).Finterp)
 28778  
 28779  		var data uintptr
 28780  		var zType uintptr = func() uintptr {
 28781  			if (*Tcl_Obj)(unsafe.Pointer(pVar)).FtypePtr != 0 {
 28782  				return (*Tcl_ObjType)(unsafe.Pointer((*Tcl_Obj)(unsafe.Pointer(pVar)).FtypePtr)).Fname
 28783  			}
 28784  			return ts + 584
 28785  		}()
 28786  		var c uint8 = *(*uint8)(unsafe.Pointer(zType))
 28787  		var eType int32 = (*SqlFunc)(unsafe.Pointer(p)).FeType
 28788  
 28789  		if eType == SQLITE_NULL {
 28790  			if int32(c) == 'b' && libc.Xstrcmp(tls, zType, ts+2544) == 0 && (*Tcl_Obj)(unsafe.Pointer(pVar)).Fbytes == uintptr(0) {
 28791  				eType = SQLITE_BLOB
 28792  			} else if int32(c) == 'b' && libc.Xstrcmp(tls, zType, ts+2554) == 0 ||
 28793  				int32(c) == 'w' && libc.Xstrcmp(tls, zType, ts+2569) == 0 ||
 28794  				int32(c) == 'i' && libc.Xstrcmp(tls, zType, ts+2577) == 0 {
 28795  				eType = SQLITE_INTEGER
 28796  			} else if int32(c) == 'd' && libc.Xstrcmp(tls, zType, ts+2562) == 0 {
 28797  				eType = SQLITE_FLOAT
 28798  			} else {
 28799  				eType = SQLITE_TEXT
 28800  			}
 28801  		}
 28802  
 28803  		switch eType {
 28804  		case SQLITE_BLOB:
 28805  			{
 28806  				data = tcl.XTcl_GetByteArrayFromObj(tls, pVar, bp+16)
 28807  				sqlite3.Xsqlite3_result_blob(tls, context, data, *(*int32)(unsafe.Pointer(bp + 16)), libc.UintptrFromInt32(-1))
 28808  				break
 28809  
 28810  			}
 28811  			fallthrough
 28812  		case SQLITE_INTEGER:
 28813  			{
 28814  				if TCL_OK == tcl.XTcl_GetWideIntFromObj(tls, uintptr(0), pVar, bp+24) {
 28815  					sqlite3.Xsqlite3_result_int64(tls, context, *(*Tcl_WideInt)(unsafe.Pointer(bp + 24)))
 28816  					break
 28817  				}
 28818  
 28819  			}
 28820  			fallthrough
 28821  		case SQLITE_FLOAT:
 28822  			{
 28823  				if TCL_OK == tcl.XTcl_GetDoubleFromObj(tls, uintptr(0), pVar, bp+32) {
 28824  					sqlite3.Xsqlite3_result_double(tls, context, *(*float64)(unsafe.Pointer(bp + 32)))
 28825  					break
 28826  				}
 28827  
 28828  			}
 28829  			fallthrough
 28830  		default:
 28831  			{
 28832  				data = tcl.XTcl_GetStringFromObj(tls, pVar, bp+16)
 28833  				sqlite3.Xsqlite3_result_text(tls, context, data, *(*int32)(unsafe.Pointer(bp + 16)), libc.UintptrFromInt32(-1))
 28834  				break
 28835  
 28836  			}
 28837  		}
 28838  
 28839  	}
 28840  }
 28841  
 28842  func auth_callback(tls *libc.TLS, pArg uintptr, code int32, zArg1 uintptr, zArg2 uintptr, zArg3 uintptr, zArg4 uintptr) int32 {
 28843  	bp := tls.Alloc(216)
 28844  	defer tls.Free(216)
 28845  
 28846  	var zCode uintptr
 28847  
 28848  	var rc int32
 28849  	var zReply uintptr
 28850  
 28851  	var pDb uintptr = pArg
 28852  	if (*SqliteDb)(unsafe.Pointer(pDb)).FdisableAuth != 0 {
 28853  		return SQLITE_OK
 28854  	}
 28855  
 28856  	switch code {
 28857  	case SQLITE_COPY:
 28858  		zCode = ts + 10944
 28859  		break
 28860  	case SQLITE_CREATE_INDEX:
 28861  		zCode = ts + 10956
 28862  		break
 28863  	case SQLITE_CREATE_TABLE:
 28864  		zCode = ts + 10976
 28865  		break
 28866  	case SQLITE_CREATE_TEMP_INDEX:
 28867  		zCode = ts + 10996
 28868  		break
 28869  	case SQLITE_CREATE_TEMP_TABLE:
 28870  		zCode = ts + 11021
 28871  		break
 28872  	case SQLITE_CREATE_TEMP_TRIGGER:
 28873  		zCode = ts + 11046
 28874  		break
 28875  	case SQLITE_CREATE_TEMP_VIEW:
 28876  		zCode = ts + 11073
 28877  		break
 28878  	case SQLITE_CREATE_TRIGGER:
 28879  		zCode = ts + 11097
 28880  		break
 28881  	case SQLITE_CREATE_VIEW:
 28882  		zCode = ts + 11119
 28883  		break
 28884  	case SQLITE_DELETE:
 28885  		zCode = ts + 11138
 28886  		break
 28887  	case SQLITE_DROP_INDEX:
 28888  		zCode = ts + 11152
 28889  		break
 28890  	case SQLITE_DROP_TABLE:
 28891  		zCode = ts + 11170
 28892  		break
 28893  	case SQLITE_DROP_TEMP_INDEX:
 28894  		zCode = ts + 11188
 28895  		break
 28896  	case SQLITE_DROP_TEMP_TABLE:
 28897  		zCode = ts + 11211
 28898  		break
 28899  	case SQLITE_DROP_TEMP_TRIGGER:
 28900  		zCode = ts + 11234
 28901  		break
 28902  	case SQLITE_DROP_TEMP_VIEW:
 28903  		zCode = ts + 11259
 28904  		break
 28905  	case SQLITE_DROP_TRIGGER:
 28906  		zCode = ts + 11281
 28907  		break
 28908  	case SQLITE_DROP_VIEW:
 28909  		zCode = ts + 11301
 28910  		break
 28911  	case SQLITE_INSERT:
 28912  		zCode = ts + 11318
 28913  		break
 28914  	case SQLITE_PRAGMA:
 28915  		zCode = ts + 11332
 28916  		break
 28917  	case SQLITE_READ:
 28918  		zCode = ts + 11346
 28919  		break
 28920  	case SQLITE_SELECT:
 28921  		zCode = ts + 11358
 28922  		break
 28923  	case SQLITE_TRANSACTION:
 28924  		zCode = ts + 11372
 28925  		break
 28926  	case SQLITE_UPDATE:
 28927  		zCode = ts + 11391
 28928  		break
 28929  	case SQLITE_ATTACH:
 28930  		zCode = ts + 11405
 28931  		break
 28932  	case SQLITE_DETACH:
 28933  		zCode = ts + 11419
 28934  		break
 28935  	case SQLITE_ALTER_TABLE:
 28936  		zCode = ts + 11433
 28937  		break
 28938  	case SQLITE_REINDEX:
 28939  		zCode = ts + 11452
 28940  		break
 28941  	case SQLITE_ANALYZE:
 28942  		zCode = ts + 11467
 28943  		break
 28944  	case SQLITE_CREATE_VTABLE:
 28945  		zCode = ts + 11482
 28946  		break
 28947  	case SQLITE_DROP_VTABLE:
 28948  		zCode = ts + 11503
 28949  		break
 28950  	case SQLITE_FUNCTION:
 28951  		zCode = ts + 11522
 28952  		break
 28953  	case SQLITE_SAVEPOINT:
 28954  		zCode = ts + 11538
 28955  		break
 28956  	case SQLITE_RECURSIVE:
 28957  		zCode = ts + 11555
 28958  		break
 28959  	default:
 28960  		zCode = ts + 11572
 28961  		break
 28962  	}
 28963  	tcl.XTcl_DStringInit(tls, bp)
 28964  	tcl.XTcl_DStringAppend(tls, bp, (*SqliteDb)(unsafe.Pointer(pDb)).FzAuth, -1)
 28965  	tcl.XTcl_DStringAppendElement(tls, bp, zCode)
 28966  	tcl.XTcl_DStringAppendElement(tls, bp, func() uintptr {
 28967  		if zArg1 != 0 {
 28968  			return zArg1
 28969  		}
 28970  		return ts + 584
 28971  	}())
 28972  	tcl.XTcl_DStringAppendElement(tls, bp, func() uintptr {
 28973  		if zArg2 != 0 {
 28974  			return zArg2
 28975  		}
 28976  		return ts + 584
 28977  	}())
 28978  	tcl.XTcl_DStringAppendElement(tls, bp, func() uintptr {
 28979  		if zArg3 != 0 {
 28980  			return zArg3
 28981  		}
 28982  		return ts + 584
 28983  	}())
 28984  	tcl.XTcl_DStringAppendElement(tls, bp, func() uintptr {
 28985  		if zArg4 != 0 {
 28986  			return zArg4
 28987  		}
 28988  		return ts + 584
 28989  	}())
 28990  	rc = tcl.XTcl_GlobalEval(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp, (*Tcl_DString)(unsafe.Pointer(bp)).Fstring)
 28991  	tcl.XTcl_DStringFree(tls, bp)
 28992  	if rc == TCL_OK {
 28993  		zReply = tcl.XTcl_GetStringResult(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp)
 28994  	} else {
 28995  		zReply = ts + 11577
 28996  	}
 28997  	if libc.Xstrcmp(tls, zReply, ts+2127) == 0 {
 28998  		rc = SQLITE_OK
 28999  	} else if libc.Xstrcmp(tls, zReply, ts+11577) == 0 {
 29000  		rc = SQLITE_DENY
 29001  	} else if libc.Xstrcmp(tls, zReply, ts+11589) == 0 {
 29002  		rc = SQLITE_IGNORE
 29003  	} else {
 29004  		rc = 999
 29005  	}
 29006  	return rc
 29007  }
 29008  
 29009  func local_getline(tls *libc.TLS, zPrompt uintptr, in uintptr) uintptr {
 29010  	var zLine uintptr
 29011  	var nLine int32
 29012  	var n int32
 29013  
 29014  	nLine = 100
 29015  	zLine = libc.Xmalloc(tls, uint64(nLine))
 29016  	if zLine == uintptr(0) {
 29017  		return uintptr(0)
 29018  	}
 29019  	n = 0
 29020  	for 1 != 0 {
 29021  		if n+100 > nLine {
 29022  			nLine = nLine*2 + 100
 29023  			zLine = libc.Xrealloc(tls, zLine, uint64(nLine))
 29024  			if zLine == uintptr(0) {
 29025  				return uintptr(0)
 29026  			}
 29027  		}
 29028  		if libc.Xfgets(tls, zLine+uintptr(n), nLine-n, in) == uintptr(0) {
 29029  			if n == 0 {
 29030  				libc.Xfree(tls, zLine)
 29031  				return uintptr(0)
 29032  			}
 29033  			*(*uint8)(unsafe.Pointer(zLine + uintptr(n))) = uint8(0)
 29034  			break
 29035  		}
 29036  		for *(*uint8)(unsafe.Pointer(zLine + uintptr(n))) != 0 {
 29037  			n++
 29038  		}
 29039  		if n > 0 && int32(*(*uint8)(unsafe.Pointer(zLine + uintptr(n-1)))) == '\n' {
 29040  			n--
 29041  			*(*uint8)(unsafe.Pointer(zLine + uintptr(n))) = uint8(0)
 29042  			break
 29043  		}
 29044  	}
 29045  	zLine = libc.Xrealloc(tls, zLine, uint64(n+1))
 29046  	return zLine
 29047  }
 29048  
 29049  func DbTransPostCmd(tls *libc.TLS, data uintptr, interp uintptr, result int32) int32 {
 29050  	bp := tls.Alloc(16)
 29051  	defer tls.Free(16)
 29052  
 29053  	var pDb uintptr = *(*ClientData)(unsafe.Pointer(data))
 29054  	var rc int32 = result
 29055  	var zEnd uintptr
 29056  
 29057  	(*SqliteDb)(unsafe.Pointer(pDb)).FnTransaction--
 29058  	zEnd = azEnd[libc.Bool32(rc == TCL_ERROR)*2+libc.Bool32((*SqliteDb)(unsafe.Pointer(pDb)).FnTransaction == 0)]
 29059  
 29060  	(*SqliteDb)(unsafe.Pointer(pDb)).FdisableAuth++
 29061  	if sqlite3.Xsqlite3_exec(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, zEnd, uintptr(0), uintptr(0), uintptr(0)) != 0 {
 29062  		if rc != TCL_ERROR {
 29063  			tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, sqlite3.Xsqlite3_errmsg(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb), uintptr(0)))
 29064  			rc = TCL_ERROR
 29065  		}
 29066  		sqlite3.Xsqlite3_exec(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, ts+7824, uintptr(0), uintptr(0), uintptr(0))
 29067  	}
 29068  	(*SqliteDb)(unsafe.Pointer(pDb)).FdisableAuth--
 29069  
 29070  	delDatabaseRef(tls, pDb)
 29071  	return rc
 29072  }
 29073  
 29074  var azEnd = [4]uintptr{
 29075  	ts + 11603,
 29076  	ts + 11628,
 29077  	ts + 11635,
 29078  	ts + 7824,
 29079  }
 29080  
 29081  func dbPrepare(tls *libc.TLS, pDb uintptr, zSql uintptr, ppStmt uintptr, pzOut uintptr) int32 {
 29082  	var prepFlags uint32 = uint32(0)
 29083  	if (*SqliteDb)(unsafe.Pointer(pDb)).FbLegacyPrepare != 0 {
 29084  		return sqlite3.Xsqlite3_prepare(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, zSql, -1, ppStmt, pzOut)
 29085  	}
 29086  
 29087  	if (*SqliteDb)(unsafe.Pointer(pDb)).FmaxStmt > 5 {
 29088  		prepFlags = uint32(SQLITE_PREPARE_PERSISTENT)
 29089  	}
 29090  
 29091  	return sqlite3.Xsqlite3_prepare_v3(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, zSql, -1, prepFlags, ppStmt, pzOut)
 29092  }
 29093  
 29094  func dbPrepareAndBind(tls *libc.TLS, pDb uintptr, zIn uintptr, pzOut uintptr, ppPreStmt uintptr) int32 {
 29095  	bp := tls.Alloc(32)
 29096  	defer tls.Free(32)
 29097  
 29098  	var zSql uintptr = zIn
 29099  	*(*uintptr)(unsafe.Pointer(bp)) = uintptr(0)
 29100  	var pPreStmt uintptr
 29101  	var nSql int32
 29102  	var nVar int32 = 0
 29103  	var iParm int32 = 0
 29104  	var c uint8
 29105  	var i int32
 29106  	var needResultReset int32 = 0
 29107  	var rc int32 = SQLITE_OK
 29108  	var interp uintptr = (*SqliteDb)(unsafe.Pointer(pDb)).Finterp
 29109  
 29110  	*(*uintptr)(unsafe.Pointer(ppPreStmt)) = uintptr(0)
 29111  
 29112  	for int32(libc.AssignUint8(&c, *(*uint8)(unsafe.Pointer(zSql)))) == ' ' || int32(c) == '\t' || int32(c) == '\r' || int32(c) == '\n' {
 29113  		zSql++
 29114  	}
 29115  	nSql = strlen30(tls, zSql)
 29116  
 29117  	for pPreStmt = (*SqliteDb)(unsafe.Pointer(pDb)).FstmtList; pPreStmt != 0; pPreStmt = (*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FpNext {
 29118  		var n int32 = (*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FnSql
 29119  		if nSql >= n &&
 29120  			libc.Xmemcmp(tls, (*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FzSql, zSql, uint64(n)) == 0 &&
 29121  			(int32(*(*uint8)(unsafe.Pointer(zSql + uintptr(n)))) == 0 || int32(*(*uint8)(unsafe.Pointer(zSql + uintptr(n-1)))) == ';') {
 29122  			*(*uintptr)(unsafe.Pointer(bp)) = (*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FpStmt
 29123  			*(*uintptr)(unsafe.Pointer(pzOut)) = zSql + uintptr((*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FnSql)
 29124  
 29125  			if (*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FpPrev != 0 {
 29126  				(*SqlPreparedStmt)(unsafe.Pointer((*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FpPrev)).FpNext = (*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FpNext
 29127  			} else {
 29128  				(*SqliteDb)(unsafe.Pointer(pDb)).FstmtList = (*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FpNext
 29129  			}
 29130  			if (*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FpNext != 0 {
 29131  				(*SqlPreparedStmt)(unsafe.Pointer((*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FpNext)).FpPrev = (*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FpPrev
 29132  			} else {
 29133  				(*SqliteDb)(unsafe.Pointer(pDb)).FstmtLast = (*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FpPrev
 29134  			}
 29135  			(*SqliteDb)(unsafe.Pointer(pDb)).FnStmt--
 29136  			nVar = sqlite3.Xsqlite3_bind_parameter_count(tls, *(*uintptr)(unsafe.Pointer(bp)))
 29137  			break
 29138  		}
 29139  	}
 29140  
 29141  	if pPreStmt == uintptr(0) {
 29142  		var nByte int32
 29143  
 29144  		if SQLITE_OK != dbPrepare(tls, pDb, zSql, bp, pzOut) {
 29145  			tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3_errmsg(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb), -1))
 29146  			return TCL_ERROR
 29147  		}
 29148  		if *(*uintptr)(unsafe.Pointer(bp)) == uintptr(0) {
 29149  			if SQLITE_OK != sqlite3.Xsqlite3_errcode(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb) {
 29150  				tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3_errmsg(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb), -1))
 29151  				return TCL_ERROR
 29152  			} else {
 29153  				return TCL_OK
 29154  			}
 29155  		}
 29156  
 29157  		nVar = sqlite3.Xsqlite3_bind_parameter_count(tls, *(*uintptr)(unsafe.Pointer(bp)))
 29158  		nByte = int32(uint64(unsafe.Sizeof(SqlPreparedStmt{})) + uint64(nVar)*uint64(unsafe.Sizeof(uintptr(0))))
 29159  		pPreStmt = tcl.XTcl_Alloc(tls, uint32(nByte))
 29160  		libc.Xmemset(tls, pPreStmt, 0, uint64(nByte))
 29161  
 29162  		(*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FpStmt = *(*uintptr)(unsafe.Pointer(bp))
 29163  		(*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FnSql = int32((int64(*(*uintptr)(unsafe.Pointer(pzOut))) - int64(zSql)) / 1)
 29164  		(*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FzSql = sqlite3.Xsqlite3_sql(tls, *(*uintptr)(unsafe.Pointer(bp)))
 29165  		(*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FapParm = pPreStmt + 1*56
 29166  		if (*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FzSql == uintptr(0) {
 29167  			var zCopy uintptr = tcl.XTcl_Alloc(tls, uint32((*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FnSql+1))
 29168  			libc.Xmemcpy(tls, zCopy, zSql, uint64((*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FnSql))
 29169  			*(*uint8)(unsafe.Pointer(zCopy + uintptr((*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FnSql))) = uint8(0)
 29170  			(*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FzSql = zCopy
 29171  		}
 29172  	}
 29173  
 29174  	for i = 1; i <= nVar; i++ {
 29175  		var zVar uintptr = sqlite3.Xsqlite3_bind_parameter_name(tls, *(*uintptr)(unsafe.Pointer(bp)), i)
 29176  		if zVar != uintptr(0) && (int32(*(*uint8)(unsafe.Pointer(zVar))) == '$' || int32(*(*uint8)(unsafe.Pointer(zVar))) == ':' || int32(*(*uint8)(unsafe.Pointer(zVar))) == '@') {
 29177  			var pVar uintptr = tcl.XTcl_GetVar2Ex(tls, interp, zVar+1, uintptr(0), 0)
 29178  			if pVar == uintptr(0) && (*SqliteDb)(unsafe.Pointer(pDb)).FzBindFallback != uintptr(0) {
 29179  				var pCmd uintptr
 29180  				var rx int32
 29181  				pCmd = tcl.XTcl_NewStringObj(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzBindFallback, -1)
 29182  				(*Tcl_Obj)(unsafe.Pointer(pCmd)).FrefCount++
 29183  				tcl.XTcl_ListObjAppendElement(tls, interp, pCmd, tcl.XTcl_NewStringObj(tls, zVar, -1))
 29184  				if needResultReset != 0 {
 29185  					tcl.XTcl_ResetResult(tls, interp)
 29186  				}
 29187  				needResultReset = 1
 29188  				rx = tcl.XTcl_EvalObjEx(tls, interp, pCmd, TCL_EVAL_DIRECT)
 29189  				for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 29190  					var _objPtr uintptr = pCmd
 29191  					if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 29192  						tcl.XTclFreeObj(tls, _objPtr)
 29193  					}
 29194  				}
 29195  				if rx == TCL_OK {
 29196  					pVar = tcl.XTcl_GetObjResult(tls, interp)
 29197  				} else if rx == TCL_ERROR {
 29198  					rc = TCL_ERROR
 29199  					break
 29200  				} else {
 29201  					pVar = uintptr(0)
 29202  				}
 29203  			}
 29204  			if pVar != 0 {
 29205  				var data uintptr
 29206  				var zType uintptr = func() uintptr {
 29207  					if (*Tcl_Obj)(unsafe.Pointer(pVar)).FtypePtr != 0 {
 29208  						return (*Tcl_ObjType)(unsafe.Pointer((*Tcl_Obj)(unsafe.Pointer(pVar)).FtypePtr)).Fname
 29209  					}
 29210  					return ts + 584
 29211  				}()
 29212  				c = *(*uint8)(unsafe.Pointer(zType))
 29213  				if int32(*(*uint8)(unsafe.Pointer(zVar))) == '@' || int32(c) == 'b' && libc.Xstrcmp(tls, zType, ts+2544) == 0 && (*Tcl_Obj)(unsafe.Pointer(pVar)).Fbytes == uintptr(0) {
 29214  					data = tcl.XTcl_GetByteArrayFromObj(tls, pVar, bp+8)
 29215  					sqlite3.Xsqlite3_bind_blob(tls, *(*uintptr)(unsafe.Pointer(bp)), i, data, *(*int32)(unsafe.Pointer(bp + 8)), uintptr(0))
 29216  					(*Tcl_Obj)(unsafe.Pointer(pVar)).FrefCount++
 29217  					*(*uintptr)(unsafe.Pointer((*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FapParm + uintptr(libc.PostIncInt32(&iParm, 1))*8)) = pVar
 29218  				} else if int32(c) == 'b' && libc.Xstrcmp(tls, zType, ts+2554) == 0 {
 29219  					tcl.XTcl_GetIntFromObj(tls, interp, pVar, bp+8)
 29220  					sqlite3.Xsqlite3_bind_int(tls, *(*uintptr)(unsafe.Pointer(bp)), i, *(*int32)(unsafe.Pointer(bp + 8)))
 29221  				} else if int32(c) == 'd' && libc.Xstrcmp(tls, zType, ts+2562) == 0 {
 29222  					tcl.XTcl_GetDoubleFromObj(tls, interp, pVar, bp+16)
 29223  					sqlite3.Xsqlite3_bind_double(tls, *(*uintptr)(unsafe.Pointer(bp)), i, *(*float64)(unsafe.Pointer(bp + 16)))
 29224  				} else if int32(c) == 'w' && libc.Xstrcmp(tls, zType, ts+2569) == 0 || int32(c) == 'i' && libc.Xstrcmp(tls, zType, ts+2577) == 0 {
 29225  					tcl.XTcl_GetWideIntFromObj(tls, interp, pVar, bp+24)
 29226  					sqlite3.Xsqlite3_bind_int64(tls, *(*uintptr)(unsafe.Pointer(bp)), i, *(*Tcl_WideInt)(unsafe.Pointer(bp + 24)))
 29227  				} else {
 29228  					data = tcl.XTcl_GetStringFromObj(tls, pVar, bp+8)
 29229  					sqlite3.Xsqlite3_bind_text(tls, *(*uintptr)(unsafe.Pointer(bp)), i, data, *(*int32)(unsafe.Pointer(bp + 8)), uintptr(0))
 29230  					(*Tcl_Obj)(unsafe.Pointer(pVar)).FrefCount++
 29231  					*(*uintptr)(unsafe.Pointer((*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FapParm + uintptr(libc.PostIncInt32(&iParm, 1))*8)) = pVar
 29232  				}
 29233  			} else {
 29234  				sqlite3.Xsqlite3_bind_null(tls, *(*uintptr)(unsafe.Pointer(bp)), i)
 29235  			}
 29236  			if needResultReset != 0 {
 29237  				tcl.XTcl_ResetResult(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp)
 29238  			}
 29239  		}
 29240  	}
 29241  	(*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FnParm = iParm
 29242  	*(*uintptr)(unsafe.Pointer(ppPreStmt)) = pPreStmt
 29243  	if needResultReset != 0 && rc == TCL_OK {
 29244  		tcl.XTcl_ResetResult(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp)
 29245  	}
 29246  
 29247  	return rc
 29248  }
 29249  
 29250  func dbReleaseStmt(tls *libc.TLS, pDb uintptr, pPreStmt uintptr, discard int32) {
 29251  	var i int32
 29252  
 29253  	for i = 0; i < (*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FnParm; i++ {
 29254  		for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 29255  			var _objPtr uintptr = *(*uintptr)(unsafe.Pointer((*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FapParm + uintptr(i)*8))
 29256  			if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 29257  				tcl.XTclFreeObj(tls, _objPtr)
 29258  			}
 29259  		}
 29260  	}
 29261  	(*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FnParm = 0
 29262  
 29263  	if (*SqliteDb)(unsafe.Pointer(pDb)).FmaxStmt <= 0 || discard != 0 {
 29264  		dbFreeStmt(tls, pPreStmt)
 29265  	} else {
 29266  		(*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FpNext = (*SqliteDb)(unsafe.Pointer(pDb)).FstmtList
 29267  		(*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FpPrev = uintptr(0)
 29268  		if (*SqliteDb)(unsafe.Pointer(pDb)).FstmtList != 0 {
 29269  			(*SqlPreparedStmt)(unsafe.Pointer((*SqliteDb)(unsafe.Pointer(pDb)).FstmtList)).FpPrev = pPreStmt
 29270  		}
 29271  		(*SqliteDb)(unsafe.Pointer(pDb)).FstmtList = pPreStmt
 29272  		if (*SqliteDb)(unsafe.Pointer(pDb)).FstmtLast == uintptr(0) {
 29273  			(*SqliteDb)(unsafe.Pointer(pDb)).FstmtLast = pPreStmt
 29274  		} else {
 29275  		}
 29276  		(*SqliteDb)(unsafe.Pointer(pDb)).FnStmt++
 29277  
 29278  		for (*SqliteDb)(unsafe.Pointer(pDb)).FnStmt > (*SqliteDb)(unsafe.Pointer(pDb)).FmaxStmt {
 29279  			var pLast uintptr = (*SqliteDb)(unsafe.Pointer(pDb)).FstmtLast
 29280  			(*SqliteDb)(unsafe.Pointer(pDb)).FstmtLast = (*SqlPreparedStmt)(unsafe.Pointer(pLast)).FpPrev
 29281  			(*SqlPreparedStmt)(unsafe.Pointer((*SqliteDb)(unsafe.Pointer(pDb)).FstmtLast)).FpNext = uintptr(0)
 29282  			(*SqliteDb)(unsafe.Pointer(pDb)).FnStmt--
 29283  			dbFreeStmt(tls, pLast)
 29284  		}
 29285  	}
 29286  }
 29287  
 29288  type DbEvalContext1 = struct {
 29289  	FpDb       uintptr
 29290  	FpSql      uintptr
 29291  	FzSql      uintptr
 29292  	FpPreStmt  uintptr
 29293  	FnCol      int32
 29294  	FevalFlags int32
 29295  	FpArray    uintptr
 29296  	FapColName uintptr
 29297  }
 29298  
 29299  type DbEvalContext = DbEvalContext1
 29300  
 29301  func dbReleaseColumnNames(tls *libc.TLS, p uintptr) {
 29302  	if (*DbEvalContext)(unsafe.Pointer(p)).FapColName != 0 {
 29303  		var i int32
 29304  		for i = 0; i < (*DbEvalContext)(unsafe.Pointer(p)).FnCol; i++ {
 29305  			for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 29306  				var _objPtr uintptr = *(*uintptr)(unsafe.Pointer((*DbEvalContext)(unsafe.Pointer(p)).FapColName + uintptr(i)*8))
 29307  				if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 29308  					tcl.XTclFreeObj(tls, _objPtr)
 29309  				}
 29310  			}
 29311  		}
 29312  		tcl.XTcl_Free(tls, (*DbEvalContext)(unsafe.Pointer(p)).FapColName)
 29313  		(*DbEvalContext)(unsafe.Pointer(p)).FapColName = uintptr(0)
 29314  	}
 29315  	(*DbEvalContext)(unsafe.Pointer(p)).FnCol = 0
 29316  }
 29317  
 29318  func dbEvalInit(tls *libc.TLS, p uintptr, pDb uintptr, pSql uintptr, pArray uintptr, evalFlags int32) {
 29319  	libc.Xmemset(tls, p, 0, uint64(unsafe.Sizeof(DbEvalContext{})))
 29320  	(*DbEvalContext)(unsafe.Pointer(p)).FpDb = pDb
 29321  	(*DbEvalContext)(unsafe.Pointer(p)).FzSql = tcl.XTcl_GetString(tls, pSql)
 29322  	(*DbEvalContext)(unsafe.Pointer(p)).FpSql = pSql
 29323  	(*Tcl_Obj)(unsafe.Pointer(pSql)).FrefCount++
 29324  	if pArray != 0 {
 29325  		(*DbEvalContext)(unsafe.Pointer(p)).FpArray = pArray
 29326  		(*Tcl_Obj)(unsafe.Pointer(pArray)).FrefCount++
 29327  	}
 29328  	(*DbEvalContext)(unsafe.Pointer(p)).FevalFlags = evalFlags
 29329  	addDatabaseRef(tls, (*DbEvalContext)(unsafe.Pointer(p)).FpDb)
 29330  }
 29331  
 29332  func dbEvalRowInfo(tls *libc.TLS, p uintptr, pnCol uintptr, papColName uintptr) {
 29333  	if uintptr(0) == (*DbEvalContext)(unsafe.Pointer(p)).FapColName {
 29334  		var pStmt uintptr = (*SqlPreparedStmt)(unsafe.Pointer((*DbEvalContext)(unsafe.Pointer(p)).FpPreStmt)).FpStmt
 29335  		var i int32
 29336  		var nCol int32
 29337  		var apColName uintptr = uintptr(0)
 29338  
 29339  		(*DbEvalContext)(unsafe.Pointer(p)).FnCol = libc.AssignInt32(&nCol, sqlite3.Xsqlite3_column_count(tls, pStmt))
 29340  		if nCol > 0 && (papColName != 0 || (*DbEvalContext)(unsafe.Pointer(p)).FpArray != 0) {
 29341  			apColName = tcl.XTcl_Alloc(tls, uint32(uint64(unsafe.Sizeof(uintptr(0)))*uint64(nCol)))
 29342  			for i = 0; i < nCol; i++ {
 29343  				*(*uintptr)(unsafe.Pointer(apColName + uintptr(i)*8)) = tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3_column_name(tls, pStmt, i), -1)
 29344  				(*Tcl_Obj)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(apColName + uintptr(i)*8)))).FrefCount++
 29345  			}
 29346  			(*DbEvalContext)(unsafe.Pointer(p)).FapColName = apColName
 29347  		}
 29348  
 29349  		if (*DbEvalContext)(unsafe.Pointer(p)).FpArray != 0 {
 29350  			var interp uintptr = (*SqliteDb)(unsafe.Pointer((*DbEvalContext)(unsafe.Pointer(p)).FpDb)).Finterp
 29351  			var pColList uintptr = tcl.XTcl_NewObj(tls)
 29352  			var pStar uintptr = tcl.XTcl_NewStringObj(tls, ts+3840, -1)
 29353  
 29354  			for i = 0; i < nCol; i++ {
 29355  				tcl.XTcl_ListObjAppendElement(tls, interp, pColList, *(*uintptr)(unsafe.Pointer(apColName + uintptr(i)*8)))
 29356  			}
 29357  			(*Tcl_Obj)(unsafe.Pointer(pStar)).FrefCount++
 29358  			tcl.XTcl_ObjSetVar2(tls, interp, (*DbEvalContext)(unsafe.Pointer(p)).FpArray, pStar, pColList, 0)
 29359  			for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 29360  				var _objPtr uintptr = pStar
 29361  				if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 29362  					tcl.XTclFreeObj(tls, _objPtr)
 29363  				}
 29364  			}
 29365  		}
 29366  	}
 29367  
 29368  	if papColName != 0 {
 29369  		*(*uintptr)(unsafe.Pointer(papColName)) = (*DbEvalContext)(unsafe.Pointer(p)).FapColName
 29370  	}
 29371  	if pnCol != 0 {
 29372  		*(*int32)(unsafe.Pointer(pnCol)) = (*DbEvalContext)(unsafe.Pointer(p)).FnCol
 29373  	}
 29374  }
 29375  
 29376  func dbEvalStep(tls *libc.TLS, p uintptr) int32 {
 29377  	var zPrevSql uintptr = uintptr(0)
 29378  
 29379  	for *(*uint8)(unsafe.Pointer((*DbEvalContext)(unsafe.Pointer(p)).FzSql)) != 0 || (*DbEvalContext)(unsafe.Pointer(p)).FpPreStmt != 0 {
 29380  		var rc int32
 29381  		if (*DbEvalContext)(unsafe.Pointer(p)).FpPreStmt == uintptr(0) {
 29382  			zPrevSql = func() uintptr {
 29383  				if (*DbEvalContext)(unsafe.Pointer(p)).FzSql == zPrevSql {
 29384  					return uintptr(0)
 29385  				}
 29386  				return (*DbEvalContext)(unsafe.Pointer(p)).FzSql
 29387  			}()
 29388  			rc = dbPrepareAndBind(tls, (*DbEvalContext)(unsafe.Pointer(p)).FpDb, (*DbEvalContext)(unsafe.Pointer(p)).FzSql, p+16, p+24)
 29389  			if rc != TCL_OK {
 29390  				return rc
 29391  			}
 29392  		} else {
 29393  			var rcs int32
 29394  			var pDb uintptr = (*DbEvalContext)(unsafe.Pointer(p)).FpDb
 29395  			var pPreStmt uintptr = (*DbEvalContext)(unsafe.Pointer(p)).FpPreStmt
 29396  			var pStmt uintptr = (*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FpStmt
 29397  
 29398  			rcs = sqlite3.Xsqlite3_step(tls, pStmt)
 29399  			if rcs == SQLITE_ROW {
 29400  				return TCL_OK
 29401  			}
 29402  			if (*DbEvalContext)(unsafe.Pointer(p)).FpArray != 0 {
 29403  				dbEvalRowInfo(tls, p, uintptr(0), uintptr(0))
 29404  			}
 29405  			rcs = sqlite3.Xsqlite3_reset(tls, pStmt)
 29406  
 29407  			(*SqliteDb)(unsafe.Pointer(pDb)).FnStep = sqlite3.Xsqlite3_stmt_status(tls, pStmt, SQLITE_STMTSTATUS_FULLSCAN_STEP, 1)
 29408  			(*SqliteDb)(unsafe.Pointer(pDb)).FnSort = sqlite3.Xsqlite3_stmt_status(tls, pStmt, SQLITE_STMTSTATUS_SORT, 1)
 29409  			(*SqliteDb)(unsafe.Pointer(pDb)).FnIndex = sqlite3.Xsqlite3_stmt_status(tls, pStmt, SQLITE_STMTSTATUS_AUTOINDEX, 1)
 29410  			(*SqliteDb)(unsafe.Pointer(pDb)).FnVMStep = sqlite3.Xsqlite3_stmt_status(tls, pStmt, SQLITE_STMTSTATUS_VM_STEP, 1)
 29411  			dbReleaseColumnNames(tls, p)
 29412  			(*DbEvalContext)(unsafe.Pointer(p)).FpPreStmt = uintptr(0)
 29413  
 29414  			if rcs != SQLITE_OK {
 29415  				dbReleaseStmt(tls, pDb, pPreStmt, 1)
 29416  				if (*SqliteDb)(unsafe.Pointer((*DbEvalContext)(unsafe.Pointer(p)).FpDb)).FbLegacyPrepare != 0 && rcs == SQLITE_SCHEMA && zPrevSql != 0 {
 29417  					(*DbEvalContext)(unsafe.Pointer(p)).FzSql = zPrevSql
 29418  					continue
 29419  				}
 29420  				tcl.XTcl_SetObjResult(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp,
 29421  					tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3_errmsg(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb), -1))
 29422  				return TCL_ERROR
 29423  			} else {
 29424  				dbReleaseStmt(tls, pDb, pPreStmt, 0)
 29425  			}
 29426  		}
 29427  	}
 29428  
 29429  	return TCL_BREAK
 29430  }
 29431  
 29432  func dbEvalFinalize(tls *libc.TLS, p uintptr) {
 29433  	if (*DbEvalContext)(unsafe.Pointer(p)).FpPreStmt != 0 {
 29434  		sqlite3.Xsqlite3_reset(tls, (*SqlPreparedStmt)(unsafe.Pointer((*DbEvalContext)(unsafe.Pointer(p)).FpPreStmt)).FpStmt)
 29435  		dbReleaseStmt(tls, (*DbEvalContext)(unsafe.Pointer(p)).FpDb, (*DbEvalContext)(unsafe.Pointer(p)).FpPreStmt, 0)
 29436  		(*DbEvalContext)(unsafe.Pointer(p)).FpPreStmt = uintptr(0)
 29437  	}
 29438  	if (*DbEvalContext)(unsafe.Pointer(p)).FpArray != 0 {
 29439  		for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 29440  			var _objPtr uintptr = (*DbEvalContext)(unsafe.Pointer(p)).FpArray
 29441  			if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 29442  				tcl.XTclFreeObj(tls, _objPtr)
 29443  			}
 29444  		}
 29445  		(*DbEvalContext)(unsafe.Pointer(p)).FpArray = uintptr(0)
 29446  	}
 29447  	for __ccgo1 := true; __ccgo1; __ccgo1 = 0 != 0 {
 29448  		var _objPtr uintptr = (*DbEvalContext)(unsafe.Pointer(p)).FpSql
 29449  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 29450  			tcl.XTclFreeObj(tls, _objPtr)
 29451  		}
 29452  	}
 29453  	dbReleaseColumnNames(tls, p)
 29454  	delDatabaseRef(tls, (*DbEvalContext)(unsafe.Pointer(p)).FpDb)
 29455  }
 29456  
 29457  func dbEvalColumnValue(tls *libc.TLS, p uintptr, iCol int32) uintptr {
 29458  	var pStmt uintptr = (*SqlPreparedStmt)(unsafe.Pointer((*DbEvalContext)(unsafe.Pointer(p)).FpPreStmt)).FpStmt
 29459  	switch sqlite3.Xsqlite3_column_type(tls, pStmt, iCol) {
 29460  	case SQLITE_BLOB:
 29461  		{
 29462  			var bytes int32 = sqlite3.Xsqlite3_column_bytes(tls, pStmt, iCol)
 29463  			var zBlob uintptr = sqlite3.Xsqlite3_column_blob(tls, pStmt, iCol)
 29464  			if !(zBlob != 0) {
 29465  				bytes = 0
 29466  			}
 29467  			return tcl.XTcl_NewByteArrayObj(tls, zBlob, bytes)
 29468  
 29469  		}
 29470  	case SQLITE_INTEGER:
 29471  		{
 29472  			var v sqlite_int64 = sqlite3.Xsqlite3_column_int64(tls, pStmt, iCol)
 29473  			if v >= int64(-2147483647) && v <= int64(2147483647) {
 29474  				return tcl.XTcl_NewIntObj(tls, int32(v))
 29475  			} else {
 29476  				return tcl.XTcl_NewWideIntObj(tls, v)
 29477  			}
 29478  
 29479  		}
 29480  		fallthrough
 29481  	case SQLITE_FLOAT:
 29482  		{
 29483  			return tcl.XTcl_NewDoubleObj(tls, sqlite3.Xsqlite3_column_double(tls, pStmt, iCol))
 29484  
 29485  		}
 29486  	case SQLITE_NULL:
 29487  		{
 29488  			return tcl.XTcl_NewStringObj(tls, (*SqliteDb)(unsafe.Pointer((*DbEvalContext)(unsafe.Pointer(p)).FpDb)).FzNull, -1)
 29489  
 29490  		}
 29491  	}
 29492  
 29493  	return tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3_column_text(tls, pStmt, iCol), -1)
 29494  }
 29495  
 29496  func DbUseNre(tls *libc.TLS) int32 {
 29497  	bp := tls.Alloc(8)
 29498  	defer tls.Free(8)
 29499  
 29500  	tcl.XTcl_GetVersion(tls, bp, bp+4, uintptr(0), uintptr(0))
 29501  	return libc.Bool32(*(*int32)(unsafe.Pointer(bp)) == 8 && *(*int32)(unsafe.Pointer(bp + 4)) >= 6 || *(*int32)(unsafe.Pointer(bp)) > 8)
 29502  }
 29503  
 29504  func DbEvalNextCmd(tls *libc.TLS, data uintptr, interp uintptr, result int32) int32 {
 29505  	bp := tls.Alloc(16)
 29506  	defer tls.Free(16)
 29507  
 29508  	var rc int32 = result
 29509  
 29510  	var p uintptr = *(*ClientData)(unsafe.Pointer(data))
 29511  	var pScript uintptr = *(*ClientData)(unsafe.Pointer(data + 1*8))
 29512  	var pArray uintptr = (*DbEvalContext)(unsafe.Pointer(p)).FpArray
 29513  
 29514  	for (rc == TCL_OK || rc == TCL_CONTINUE) && TCL_OK == libc.AssignInt32(&rc, dbEvalStep(tls, p)) {
 29515  		var i int32
 29516  
 29517  		dbEvalRowInfo(tls, p, bp, bp+8)
 29518  		for i = 0; i < *(*int32)(unsafe.Pointer(bp)); i++ {
 29519  			if pArray == uintptr(0) {
 29520  				tcl.XTcl_ObjSetVar2(tls, interp, *(*uintptr)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 8)) + uintptr(i)*8)), uintptr(0), dbEvalColumnValue(tls, p, i), 0)
 29521  			} else if (*DbEvalContext)(unsafe.Pointer(p)).FevalFlags&SQLITE_EVAL_WITHOUTNULLS != 0 &&
 29522  				sqlite3.Xsqlite3_column_type(tls, (*SqlPreparedStmt)(unsafe.Pointer((*DbEvalContext)(unsafe.Pointer(p)).FpPreStmt)).FpStmt, i) == SQLITE_NULL {
 29523  				tcl.XTcl_UnsetVar2(tls, interp, tcl.XTcl_GetString(tls, pArray),
 29524  					tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 8)) + uintptr(i)*8))), 0)
 29525  			} else {
 29526  				tcl.XTcl_ObjSetVar2(tls, interp, pArray, *(*uintptr)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 8)) + uintptr(i)*8)), dbEvalColumnValue(tls, p, i), 0)
 29527  			}
 29528  		}
 29529  
 29530  		if DbUseNre(tls) != 0 {
 29531  			tcl.XTcl_NRAddCallback(tls, interp, *(*uintptr)(unsafe.Pointer(&struct {
 29532  				f func(*libc.TLS, uintptr, uintptr, int32) int32
 29533  			}{DbEvalNextCmd})), p, pScript, uintptr(0), uintptr(0))
 29534  			return tcl.XTcl_NREvalObj(tls, interp, pScript, 0)
 29535  		} else {
 29536  			rc = tcl.XTcl_EvalObjEx(tls, interp, pScript, 0)
 29537  		}
 29538  	}
 29539  
 29540  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 29541  		var _objPtr uintptr = pScript
 29542  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 29543  			tcl.XTclFreeObj(tls, _objPtr)
 29544  		}
 29545  	}
 29546  	dbEvalFinalize(tls, p)
 29547  	tcl.XTcl_Free(tls, p)
 29548  
 29549  	if rc == TCL_OK || rc == TCL_BREAK {
 29550  		tcl.XTcl_ResetResult(tls, interp)
 29551  		rc = TCL_OK
 29552  	}
 29553  	return rc
 29554  }
 29555  
 29556  func DbHookCmd(tls *libc.TLS, interp uintptr, pDb uintptr, pArg uintptr, ppHook uintptr) {
 29557  	var db uintptr = (*SqliteDb)(unsafe.Pointer(pDb)).Fdb
 29558  
 29559  	if *(*uintptr)(unsafe.Pointer(ppHook)) != 0 {
 29560  		tcl.XTcl_SetObjResult(tls, interp, *(*uintptr)(unsafe.Pointer(ppHook)))
 29561  		if pArg != 0 {
 29562  			for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 29563  				var _objPtr uintptr = *(*uintptr)(unsafe.Pointer(ppHook))
 29564  				if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 29565  					tcl.XTclFreeObj(tls, _objPtr)
 29566  				}
 29567  			}
 29568  			*(*uintptr)(unsafe.Pointer(ppHook)) = uintptr(0)
 29569  		}
 29570  	}
 29571  	if pArg != 0 {
 29572  		if tcl.XTcl_GetCharLength(tls, pArg) > 0 {
 29573  			*(*uintptr)(unsafe.Pointer(ppHook)) = pArg
 29574  			(*Tcl_Obj)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(ppHook)))).FrefCount++
 29575  		}
 29576  	}
 29577  
 29578  	sqlite3.Xsqlite3_preupdate_hook(tls, db, func() uintptr {
 29579  		if (*SqliteDb)(unsafe.Pointer(pDb)).FpPreUpdateHook != 0 {
 29580  			return *(*uintptr)(unsafe.Pointer(&struct {
 29581  				f func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, sqlite_int64, sqlite_int64)
 29582  			}{DbPreUpdateHandler}))
 29583  		}
 29584  		return uintptr(0)
 29585  	}(), pDb)
 29586  	sqlite3.Xsqlite3_update_hook(tls, db, func() uintptr {
 29587  		if (*SqliteDb)(unsafe.Pointer(pDb)).FpUpdateHook != 0 {
 29588  			return *(*uintptr)(unsafe.Pointer(&struct {
 29589  				f func(*libc.TLS, uintptr, int32, uintptr, uintptr, sqlite_int64)
 29590  			}{DbUpdateHandler}))
 29591  		}
 29592  		return uintptr(0)
 29593  	}(), pDb)
 29594  	sqlite3.Xsqlite3_rollback_hook(tls, db, func() uintptr {
 29595  		if (*SqliteDb)(unsafe.Pointer(pDb)).FpRollbackHook != 0 {
 29596  			return *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{DbRollbackHandler}))
 29597  		}
 29598  		return uintptr(0)
 29599  	}(), pDb)
 29600  	sqlite3.Xsqlite3_wal_hook(tls, db, func() uintptr {
 29601  		if (*SqliteDb)(unsafe.Pointer(pDb)).FpWalHook != 0 {
 29602  			return *(*uintptr)(unsafe.Pointer(&struct {
 29603  				f func(*libc.TLS, uintptr, uintptr, uintptr, int32) int32
 29604  			}{DbWalHandler}))
 29605  		}
 29606  		return uintptr(0)
 29607  	}(), pDb)
 29608  }
 29609  
 29610  func DbObjCmd(tls *libc.TLS, cd uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 29611  	bp := tls.Alloc(1588)
 29612  	defer tls.Free(1588)
 29613  	*(*uintptr)(unsafe.Pointer(bp + 1464)) = cd
 29614  
 29615  	var pDb uintptr
 29616  
 29617  	var rc int32
 29618  	var zAuth uintptr
 29619  
 29620  	var zDestFile uintptr
 29621  	var zSrcDb uintptr
 29622  
 29623  	var pBackup uintptr
 29624  	var zCallback uintptr
 29625  
 29626  	var zBusy uintptr
 29627  
 29628  	var subCmd uintptr
 29629  
 29630  	var pResult uintptr
 29631  	var pCollate uintptr
 29632  	var zName uintptr
 29633  	var zScript uintptr
 29634  
 29635  	var _objPtr uintptr
 29636  	var zCommit uintptr
 29637  
 29638  	var pResult1 uintptr
 29639  	var isComplete int32
 29640  
 29641  	var zOpt uintptr
 29642  
 29643  	var pResult2 uintptr
 29644  	var ii int32
 29645  	var zErr uintptr
 29646  	var nErr int32
 29647  	var z uintptr
 29648  	var zTable uintptr
 29649  	var zFile uintptr
 29650  	var zConflict uintptr
 29651  
 29652  	var nCol int32
 29653  	var nByte int32
 29654  	var i int32
 29655  	var j int32
 29656  	var nSep int32
 29657  	var nNull int32
 29658  	var zSql uintptr
 29659  	var zLine uintptr
 29660  	var azCol uintptr
 29661  	var zCommit1 uintptr
 29662  	var in uintptr
 29663  	var lineno int32
 29664  
 29665  	var pResult3 uintptr
 29666  
 29667  	var zSep uintptr
 29668  	var zNull uintptr
 29669  
 29670  	var z1 uintptr
 29671  	var flags int32
 29672  	var zSchema uintptr
 29673  	var pValue uintptr
 29674  	var pBA uintptr
 29675  	var pData uintptr
 29676  
 29677  	var xrc int32
 29678  
 29679  	var i1 int32
 29680  
 29681  	var pResult4 uintptr
 29682  
 29683  	var i2 int32
 29684  
 29685  	var _objPtr1 uintptr
 29686  
 29687  	var pRet uintptr
 29688  
 29689  	var p uintptr
 29690  	var pArray uintptr
 29691  	var pScript uintptr
 29692  	var evalFlags int32
 29693  	var zOpt1 uintptr
 29694  
 29695  	var z2 uintptr
 29696  	var n1 int32
 29697  	var _objPtr2 uintptr
 29698  	var flags1 int32
 29699  	var pFunc uintptr
 29700  	var pScript1 uintptr
 29701  	var zName1 uintptr
 29702  
 29703  	var i3 int32
 29704  
 29705  	var isReadonly1 int32
 29706  	var zDb uintptr
 29707  	var zTable1 uintptr
 29708  	var zColumn uintptr
 29709  
 29710  	var zNull1 uintptr
 29711  	var pResult5 uintptr
 29712  	var rowid Tcl_WideInt
 29713  	var zProgress uintptr
 29714  
 29715  	var zProfile uintptr
 29716  
 29717  	var zSrcFile uintptr
 29718  	var zDestDb uintptr
 29719  
 29720  	var pBackup1 uintptr
 29721  	var nTimeout int32
 29722  	var needFree int32
 29723  	var zSchema1 uintptr
 29724  
 29725  	var pData1 uintptr
 29726  	var v2 int32
 29727  	var zOp uintptr
 29728  
 29729  	var pResult6 uintptr
 29730  	var zTrace uintptr
 29731  
 29732  	var _objPtr3 uintptr
 29733  	var _objPtr4 uintptr
 29734  
 29735  	var pError uintptr
 29736  
 29737  	var i4 int32
 29738  	var zTraceV2 uintptr
 29739  
 29740  	var wMask Tcl_WideInt
 29741  
 29742  	var pScript2 uintptr
 29743  	var zBegin uintptr
 29744  	var _objPtr5 uintptr
 29745  	var xNotify uintptr
 29746  	var pNotifyArg uintptr
 29747  	var nCol2 int32
 29748  	var pRet1 uintptr
 29749  	var pObj1 uintptr
 29750  
 29751  	var ppHook uintptr
 29752  
 29753  	var zArg uintptr
 29754  	var i5 int32
 29755  	pDb = *(*uintptr)(unsafe.Pointer(bp + 1464))
 29756  	rc = TCL_OK
 29757  
 29758  	if !(objc < 2) {
 29759  		goto __1
 29760  	}
 29761  	tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+1999)
 29762  	return TCL_ERROR
 29763  __1:
 29764  	;
 29765  	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) {
 29766  		goto __2
 29767  	}
 29768  	return TCL_ERROR
 29769  __2:
 29770  	;
 29771  	switch uint32(*(*int32)(unsafe.Pointer(bp + 1016))) {
 29772  	case uint32(0):
 29773  		goto __4
 29774  
 29775  	case uint32(1):
 29776  		goto __5
 29777  
 29778  	case uint32(2):
 29779  		goto __6
 29780  
 29781  	case uint32(3):
 29782  		goto __7
 29783  
 29784  	case uint32(4):
 29785  		goto __8
 29786  
 29787  	case uint32(5):
 29788  		goto __9
 29789  
 29790  	case uint32(6):
 29791  		goto __10
 29792  
 29793  	case uint32(7):
 29794  		goto __11
 29795  
 29796  	case uint32(8):
 29797  		goto __12
 29798  
 29799  	case uint32(9):
 29800  		goto __13
 29801  
 29802  	case uint32(10):
 29803  		goto __14
 29804  
 29805  	case uint32(11):
 29806  		goto __15
 29807  
 29808  	case uint32(12):
 29809  		goto __16
 29810  
 29811  	case uint32(13):
 29812  		goto __17
 29813  
 29814  	case uint32(14):
 29815  		goto __18
 29816  
 29817  	case uint32(15):
 29818  		goto __19
 29819  
 29820  	case uint32(16):
 29821  		goto __20
 29822  
 29823  	case uint32(18):
 29824  		goto __21
 29825  	case uint32(24):
 29826  		goto __22
 29827  
 29828  	case uint32(17):
 29829  		goto __23
 29830  
 29831  	case uint32(19):
 29832  		goto __24
 29833  
 29834  	case uint32(20):
 29835  		goto __25
 29836  
 29837  	case uint32(21):
 29838  		goto __26
 29839  
 29840  	case uint32(23):
 29841  		goto __27
 29842  
 29843  	case uint32(22):
 29844  		goto __28
 29845  
 29846  	case uint32(27):
 29847  		goto __29
 29848  
 29849  	case uint32(26):
 29850  		goto __30
 29851  
 29852  	case uint32(28):
 29853  		goto __31
 29854  
 29855  	case uint32(29):
 29856  		goto __32
 29857  
 29858  	case uint32(31):
 29859  		goto __33
 29860  
 29861  	case uint32(32):
 29862  		goto __34
 29863  
 29864  	case uint32(33):
 29865  		goto __35
 29866  
 29867  	case uint32(34):
 29868  		goto __36
 29869  
 29870  	case uint32(35):
 29871  		goto __37
 29872  
 29873  	case uint32(36):
 29874  		goto __38
 29875  
 29876  	case uint32(37):
 29877  		goto __39
 29878  
 29879  	case uint32(38):
 29880  		goto __40
 29881  
 29882  	case uint32(25):
 29883  		goto __41
 29884  
 29885  	case uint32(41):
 29886  		goto __42
 29887  	case uint32(39):
 29888  		goto __43
 29889  	case uint32(30):
 29890  		goto __44
 29891  
 29892  	case uint32(40):
 29893  		goto __45
 29894  	}
 29895  	goto __3
 29896  
 29897  __4:
 29898  	if !(objc > 3) {
 29899  		goto __46
 29900  	}
 29901  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+11698)
 29902  	return TCL_ERROR
 29903  	goto __47
 29904  __46:
 29905  	if !(objc == 2) {
 29906  		goto __48
 29907  	}
 29908  	if !((*SqliteDb)(unsafe.Pointer(pDb)).FzAuth != 0) {
 29909  		goto __50
 29910  	}
 29911  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, (*SqliteDb)(unsafe.Pointer(pDb)).FzAuth, uintptr(0)))
 29912  __50:
 29913  	;
 29914  	goto __49
 29915  __48:
 29916  	if !((*SqliteDb)(unsafe.Pointer(pDb)).FzAuth != 0) {
 29917  		goto __51
 29918  	}
 29919  	tcl.XTcl_Free(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzAuth)
 29920  __51:
 29921  	;
 29922  	zAuth = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+1020)
 29923  	if !(zAuth != 0 && *(*int32)(unsafe.Pointer(bp + 1020)) > 0) {
 29924  		goto __52
 29925  	}
 29926  	(*SqliteDb)(unsafe.Pointer(pDb)).FzAuth = tcl.XTcl_Alloc(tls, uint32(*(*int32)(unsafe.Pointer(bp + 1020))+1))
 29927  	libc.Xmemcpy(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzAuth, zAuth, uint64(*(*int32)(unsafe.Pointer(bp + 1020))+1))
 29928  	goto __53
 29929  __52:
 29930  	(*SqliteDb)(unsafe.Pointer(pDb)).FzAuth = uintptr(0)
 29931  __53:
 29932  	;
 29933  	if !((*SqliteDb)(unsafe.Pointer(pDb)).FzAuth != 0) {
 29934  		goto __54
 29935  	}
 29936  	(*SqliteDb)(unsafe.Pointer(pDb)).Finterp = interp
 29937  	sqlite3.Xsqlite3_set_authorizer(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, *(*uintptr)(unsafe.Pointer(&struct {
 29938  		f func(*libc.TLS, uintptr, int32, uintptr, uintptr, uintptr, uintptr) int32
 29939  	}{auth_callback})), pDb)
 29940  	goto __55
 29941  __54:
 29942  	sqlite3.Xsqlite3_set_authorizer(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, uintptr(0), uintptr(0))
 29943  __55:
 29944  	;
 29945  __49:
 29946  	;
 29947  __47:
 29948  	;
 29949  	goto __3
 29950  
 29951  __5:
 29952  	if !(objc == 3) {
 29953  		goto __56
 29954  	}
 29955  	zSrcDb = ts + 85
 29956  	zDestFile = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 29957  	goto __57
 29958  __56:
 29959  	if !(objc == 4) {
 29960  		goto __58
 29961  	}
 29962  	zSrcDb = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 29963  	zDestFile = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)))
 29964  	goto __59
 29965  __58:
 29966  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+11709)
 29967  	return TCL_ERROR
 29968  __59:
 29969  	;
 29970  __57:
 29971  	;
 29972  	rc = sqlite3.Xsqlite3_open_v2(tls, zDestFile, bp+1024,
 29973  		SQLITE_OPEN_READWRITE|SQLITE_OPEN_CREATE|(*SqliteDb)(unsafe.Pointer(pDb)).FopenFlags, uintptr(0))
 29974  	if !(rc != SQLITE_OK) {
 29975  		goto __60
 29976  	}
 29977  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+16, ts+11729,
 29978  		sqlite3.Xsqlite3_errmsg(tls, *(*uintptr)(unsafe.Pointer(bp + 1024))), uintptr(0)))
 29979  	sqlite3.Xsqlite3_close(tls, *(*uintptr)(unsafe.Pointer(bp + 1024)))
 29980  	return TCL_ERROR
 29981  __60:
 29982  	;
 29983  	pBackup = sqlite3.Xsqlite3_backup_init(tls, *(*uintptr)(unsafe.Pointer(bp + 1024)), ts+85, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, zSrcDb)
 29984  	if !(pBackup == uintptr(0)) {
 29985  		goto __61
 29986  	}
 29987  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+40, ts+11759,
 29988  		sqlite3.Xsqlite3_errmsg(tls, *(*uintptr)(unsafe.Pointer(bp + 1024))), uintptr(0)))
 29989  	sqlite3.Xsqlite3_close(tls, *(*uintptr)(unsafe.Pointer(bp + 1024)))
 29990  	return TCL_ERROR
 29991  __61:
 29992  	;
 29993  __62:
 29994  	if !(libc.AssignInt32(&rc, sqlite3.Xsqlite3_backup_step(tls, pBackup, 100)) == SQLITE_OK) {
 29995  		goto __63
 29996  	}
 29997  	goto __62
 29998  __63:
 29999  	;
 30000  	sqlite3.Xsqlite3_backup_finish(tls, pBackup)
 30001  	if !(rc == SQLITE_DONE) {
 30002  		goto __64
 30003  	}
 30004  	rc = TCL_OK
 30005  	goto __65
 30006  __64:
 30007  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+64, ts+11759,
 30008  		sqlite3.Xsqlite3_errmsg(tls, *(*uintptr)(unsafe.Pointer(bp + 1024))), uintptr(0)))
 30009  	rc = TCL_ERROR
 30010  __65:
 30011  	;
 30012  	sqlite3.Xsqlite3_close(tls, *(*uintptr)(unsafe.Pointer(bp + 1024)))
 30013  	goto __3
 30014  
 30015  __6:
 30016  	if !(objc > 3) {
 30017  		goto __66
 30018  	}
 30019  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+11698)
 30020  	return TCL_ERROR
 30021  	goto __67
 30022  __66:
 30023  	if !(objc == 2) {
 30024  		goto __68
 30025  	}
 30026  	if !((*SqliteDb)(unsafe.Pointer(pDb)).FzBindFallback != 0) {
 30027  		goto __70
 30028  	}
 30029  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+88, (*SqliteDb)(unsafe.Pointer(pDb)).FzBindFallback, uintptr(0)))
 30030  __70:
 30031  	;
 30032  	goto __69
 30033  __68:
 30034  	if !((*SqliteDb)(unsafe.Pointer(pDb)).FzBindFallback != 0) {
 30035  		goto __71
 30036  	}
 30037  	tcl.XTcl_Free(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzBindFallback)
 30038  __71:
 30039  	;
 30040  	zCallback = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+1032)
 30041  	if !(zCallback != 0 && *(*int32)(unsafe.Pointer(bp + 1032)) > 0) {
 30042  		goto __72
 30043  	}
 30044  	(*SqliteDb)(unsafe.Pointer(pDb)).FzBindFallback = tcl.XTcl_Alloc(tls, uint32(*(*int32)(unsafe.Pointer(bp + 1032))+1))
 30045  	libc.Xmemcpy(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzBindFallback, zCallback, uint64(*(*int32)(unsafe.Pointer(bp + 1032))+1))
 30046  	goto __73
 30047  __72:
 30048  	(*SqliteDb)(unsafe.Pointer(pDb)).FzBindFallback = uintptr(0)
 30049  __73:
 30050  	;
 30051  __69:
 30052  	;
 30053  __67:
 30054  	;
 30055  	goto __3
 30056  
 30057  __7:
 30058  	if !(objc > 3) {
 30059  		goto __74
 30060  	}
 30061  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+11775)
 30062  	return TCL_ERROR
 30063  	goto __75
 30064  __74:
 30065  	if !(objc == 2) {
 30066  		goto __76
 30067  	}
 30068  	if !((*SqliteDb)(unsafe.Pointer(pDb)).FzBusy != 0) {
 30069  		goto __78
 30070  	}
 30071  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+104, (*SqliteDb)(unsafe.Pointer(pDb)).FzBusy, uintptr(0)))
 30072  __78:
 30073  	;
 30074  	goto __77
 30075  __76:
 30076  	if !((*SqliteDb)(unsafe.Pointer(pDb)).FzBusy != 0) {
 30077  		goto __79
 30078  	}
 30079  	tcl.XTcl_Free(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzBusy)
 30080  __79:
 30081  	;
 30082  	zBusy = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+1036)
 30083  	if !(zBusy != 0 && *(*int32)(unsafe.Pointer(bp + 1036)) > 0) {
 30084  		goto __80
 30085  	}
 30086  	(*SqliteDb)(unsafe.Pointer(pDb)).FzBusy = tcl.XTcl_Alloc(tls, uint32(*(*int32)(unsafe.Pointer(bp + 1036))+1))
 30087  	libc.Xmemcpy(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzBusy, zBusy, uint64(*(*int32)(unsafe.Pointer(bp + 1036))+1))
 30088  	goto __81
 30089  __80:
 30090  	(*SqliteDb)(unsafe.Pointer(pDb)).FzBusy = uintptr(0)
 30091  __81:
 30092  	;
 30093  	if !((*SqliteDb)(unsafe.Pointer(pDb)).FzBusy != 0) {
 30094  		goto __82
 30095  	}
 30096  	(*SqliteDb)(unsafe.Pointer(pDb)).Finterp = interp
 30097  	sqlite3.Xsqlite3_busy_handler(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, *(*uintptr)(unsafe.Pointer(&struct {
 30098  		f func(*libc.TLS, uintptr, int32) int32
 30099  	}{DbBusyHandler})), pDb)
 30100  	goto __83
 30101  __82:
 30102  	sqlite3.Xsqlite3_busy_handler(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, uintptr(0), uintptr(0))
 30103  __83:
 30104  	;
 30105  __77:
 30106  	;
 30107  __75:
 30108  	;
 30109  	goto __3
 30110  
 30111  __8:
 30112  	if !(objc <= 2) {
 30113  		goto __84
 30114  	}
 30115  	tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+11784)
 30116  	return TCL_ERROR
 30117  __84:
 30118  	;
 30119  	subCmd = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)), uintptr(0))
 30120  	if !(int32(*(*uint8)(unsafe.Pointer(subCmd))) == 'f' && libc.Xstrcmp(tls, subCmd, ts+11803) == 0) {
 30121  		goto __85
 30122  	}
 30123  	if !(objc != 3) {
 30124  		goto __87
 30125  	}
 30126  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+11803)
 30127  	return TCL_ERROR
 30128  	goto __88
 30129  __87:
 30130  	flushStmtCache(tls, pDb)
 30131  __88:
 30132  	;
 30133  	goto __86
 30134  __85:
 30135  	if !(int32(*(*uint8)(unsafe.Pointer(subCmd))) == 's' && libc.Xstrcmp(tls, subCmd, ts+11809) == 0) {
 30136  		goto __89
 30137  	}
 30138  	if !(objc != 4) {
 30139  		goto __91
 30140  	}
 30141  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+11814)
 30142  	return TCL_ERROR
 30143  	goto __92
 30144  __91:
 30145  	if !(TCL_ERROR == tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+1040)) {
 30146  		goto __93
 30147  	}
 30148  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+120, ts+11821,
 30149  		tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)), uintptr(0)), ts+11838, uintptr(0)))
 30150  	return TCL_ERROR
 30151  	goto __94
 30152  __93:
 30153  	if !(*(*int32)(unsafe.Pointer(bp + 1040)) < 0) {
 30154  		goto __95
 30155  	}
 30156  	flushStmtCache(tls, pDb)
 30157  	*(*int32)(unsafe.Pointer(bp + 1040)) = 0
 30158  	goto __96
 30159  __95:
 30160  	if !(*(*int32)(unsafe.Pointer(bp + 1040)) > MAX_PREPARED_STMTS) {
 30161  		goto __97
 30162  	}
 30163  	*(*int32)(unsafe.Pointer(bp + 1040)) = MAX_PREPARED_STMTS
 30164  __97:
 30165  	;
 30166  __96:
 30167  	;
 30168  	(*SqliteDb)(unsafe.Pointer(pDb)).FmaxStmt = *(*int32)(unsafe.Pointer(bp + 1040))
 30169  __94:
 30170  	;
 30171  __92:
 30172  	;
 30173  	goto __90
 30174  __89:
 30175  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+152, ts+11851,
 30176  		tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)), uintptr(0)), ts+11864,
 30177  		uintptr(0)))
 30178  	return TCL_ERROR
 30179  __90:
 30180  	;
 30181  __86:
 30182  	;
 30183  	goto __3
 30184  
 30185  __9:
 30186  	if !(objc != 2) {
 30187  		goto __98
 30188  	}
 30189  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+584)
 30190  	return TCL_ERROR
 30191  __98:
 30192  	;
 30193  	pResult = tcl.XTcl_GetObjResult(tls, interp)
 30194  	tcl.XTcl_SetWideIntObj(tls, pResult, sqlite3.Xsqlite3_changes64(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb))
 30195  	goto __3
 30196  
 30197  __10:
 30198  	tcl.XTcl_DeleteCommand(tls, interp, tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)))
 30199  	goto __3
 30200  
 30201  __11:
 30202  	if !(objc != 4) {
 30203  		goto __99
 30204  	}
 30205  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+11889)
 30206  	return TCL_ERROR
 30207  __99:
 30208  	;
 30209  	zName = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)), uintptr(0))
 30210  	zScript = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+1044)
 30211  	pCollate = tcl.XTcl_Alloc(tls, uint32(uint64(unsafe.Sizeof(SqlCollate{}))+uint64(*(*int32)(unsafe.Pointer(bp + 1044)))+uint64(1)))
 30212  	if !(pCollate == uintptr(0)) {
 30213  		goto __100
 30214  	}
 30215  	return TCL_ERROR
 30216  __100:
 30217  	;
 30218  	(*SqlCollate)(unsafe.Pointer(pCollate)).Finterp = interp
 30219  	(*SqlCollate)(unsafe.Pointer(pCollate)).FpNext = (*SqliteDb)(unsafe.Pointer(pDb)).FpCollate
 30220  	(*SqlCollate)(unsafe.Pointer(pCollate)).FzScript = pCollate + 1*24
 30221  	(*SqliteDb)(unsafe.Pointer(pDb)).FpCollate = pCollate
 30222  	libc.Xmemcpy(tls, (*SqlCollate)(unsafe.Pointer(pCollate)).FzScript, zScript, uint64(*(*int32)(unsafe.Pointer(bp + 1044))+1))
 30223  	if !(sqlite3.Xsqlite3_create_collation(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, zName, SQLITE_UTF8,
 30224  		pCollate, *(*uintptr)(unsafe.Pointer(&struct {
 30225  			f func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32
 30226  		}{tclSqlCollate}))) != 0) {
 30227  		goto __101
 30228  	}
 30229  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3_errmsg(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb), uintptr(1))
 30230  	return TCL_ERROR
 30231  __101:
 30232  	;
 30233  	goto __3
 30234  
 30235  __12:
 30236  	if !(objc != 3) {
 30237  		goto __102
 30238  	}
 30239  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+10187)
 30240  	return TCL_ERROR
 30241  __102:
 30242  	;
 30243  	if !((*SqliteDb)(unsafe.Pointer(pDb)).FpCollateNeeded != 0) {
 30244  		goto __103
 30245  	}
 30246  __104:
 30247  	_objPtr = (*SqliteDb)(unsafe.Pointer(pDb)).FpCollateNeeded
 30248  	if !(libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1) {
 30249  		goto __107
 30250  	}
 30251  	tcl.XTclFreeObj(tls, _objPtr)
 30252  __107:
 30253  	;
 30254  	goto __105
 30255  __105:
 30256  	if 0 != 0 {
 30257  		goto __104
 30258  	}
 30259  	goto __106
 30260  __106:
 30261  	;
 30262  __103:
 30263  	;
 30264  	(*SqliteDb)(unsafe.Pointer(pDb)).FpCollateNeeded = tcl.XTcl_DuplicateObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 30265  	(*Tcl_Obj)(unsafe.Pointer((*SqliteDb)(unsafe.Pointer(pDb)).FpCollateNeeded)).FrefCount++
 30266  	sqlite3.Xsqlite3_collation_needed(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, pDb, *(*uintptr)(unsafe.Pointer(&struct {
 30267  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr)
 30268  	}{tclCollateNeeded})))
 30269  	goto __3
 30270  
 30271  __13:
 30272  	if !(objc > 3) {
 30273  		goto __108
 30274  	}
 30275  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+11698)
 30276  	return TCL_ERROR
 30277  	goto __109
 30278  __108:
 30279  	if !(objc == 2) {
 30280  		goto __110
 30281  	}
 30282  	if !((*SqliteDb)(unsafe.Pointer(pDb)).FzCommit != 0) {
 30283  		goto __112
 30284  	}
 30285  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+184, (*SqliteDb)(unsafe.Pointer(pDb)).FzCommit, uintptr(0)))
 30286  __112:
 30287  	;
 30288  	goto __111
 30289  __110:
 30290  	if !((*SqliteDb)(unsafe.Pointer(pDb)).FzCommit != 0) {
 30291  		goto __113
 30292  	}
 30293  	tcl.XTcl_Free(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzCommit)
 30294  __113:
 30295  	;
 30296  	zCommit = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+1048)
 30297  	if !(zCommit != 0 && *(*int32)(unsafe.Pointer(bp + 1048)) > 0) {
 30298  		goto __114
 30299  	}
 30300  	(*SqliteDb)(unsafe.Pointer(pDb)).FzCommit = tcl.XTcl_Alloc(tls, uint32(*(*int32)(unsafe.Pointer(bp + 1048))+1))
 30301  	libc.Xmemcpy(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzCommit, zCommit, uint64(*(*int32)(unsafe.Pointer(bp + 1048))+1))
 30302  	goto __115
 30303  __114:
 30304  	(*SqliteDb)(unsafe.Pointer(pDb)).FzCommit = uintptr(0)
 30305  __115:
 30306  	;
 30307  	if !((*SqliteDb)(unsafe.Pointer(pDb)).FzCommit != 0) {
 30308  		goto __116
 30309  	}
 30310  	(*SqliteDb)(unsafe.Pointer(pDb)).Finterp = interp
 30311  	sqlite3.Xsqlite3_commit_hook(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, *(*uintptr)(unsafe.Pointer(&struct {
 30312  		f func(*libc.TLS, uintptr) int32
 30313  	}{DbCommitHandler})), pDb)
 30314  	goto __117
 30315  __116:
 30316  	sqlite3.Xsqlite3_commit_hook(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, uintptr(0), uintptr(0))
 30317  __117:
 30318  	;
 30319  __111:
 30320  	;
 30321  __109:
 30322  	;
 30323  	goto __3
 30324  
 30325  __14:
 30326  	if !(objc != 3) {
 30327  		goto __118
 30328  	}
 30329  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+9535)
 30330  	return TCL_ERROR
 30331  __118:
 30332  	;
 30333  	isComplete = sqlite3.Xsqlite3_complete(tls, tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)), uintptr(0)))
 30334  	pResult1 = tcl.XTcl_GetObjResult(tls, interp)
 30335  	tcl.XTcl_SetIntObj(tls, pResult1, libc.Bool32(isComplete != 0))
 30336  	goto __3
 30337  
 30338  __15:
 30339  	if !(objc > 4) {
 30340  		goto __119
 30341  	}
 30342  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+11901)
 30343  	return TCL_ERROR
 30344  __119:
 30345  	;
 30346  	if !(objc == 2) {
 30347  		goto __120
 30348  	}
 30349  
 30350  	pResult2 = tcl.XTcl_NewListObj(tls, 0, uintptr(0))
 30351  	ii = 0
 30352  __122:
 30353  	if !(uint64(ii) < uint64(unsafe.Sizeof(aDbConfig))/uint64(unsafe.Sizeof(DbConfigChoices{}))) {
 30354  		goto __124
 30355  	}
 30356  	*(*int32)(unsafe.Pointer(bp + 1052)) = 0
 30357  	sqlite3.Xsqlite3_db_config(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, aDbConfig[ii].Fop, libc.VaList(bp+200, -1, bp+1052))
 30358  	tcl.XTcl_ListObjAppendElement(tls, interp, pResult2,
 30359  		tcl.XTcl_NewStringObj(tls, aDbConfig[ii].FzName, -1))
 30360  	tcl.XTcl_ListObjAppendElement(tls, interp, pResult2,
 30361  		tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 1052))))
 30362  	goto __123
 30363  __123:
 30364  	ii++
 30365  	goto __122
 30366  	goto __124
 30367  __124:
 30368  	;
 30369  	goto __121
 30370  __120:
 30371  	zOpt = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 30372  	*(*int32)(unsafe.Pointer(bp + 1056)) = -1
 30373  	*(*int32)(unsafe.Pointer(bp + 1060)) = 0
 30374  	if !(int32(*(*uint8)(unsafe.Pointer(zOpt))) == '-') {
 30375  		goto __125
 30376  	}
 30377  	zOpt++
 30378  __125:
 30379  	;
 30380  	ii = 0
 30381  __126:
 30382  	if !(uint64(ii) < uint64(unsafe.Sizeof(aDbConfig))/uint64(unsafe.Sizeof(DbConfigChoices{}))) {
 30383  		goto __128
 30384  	}
 30385  	if !(libc.Xstrcmp(tls, aDbConfig[ii].FzName, zOpt) == 0) {
 30386  		goto __129
 30387  	}
 30388  	goto __128
 30389  __129:
 30390  	;
 30391  	goto __127
 30392  __127:
 30393  	ii++
 30394  	goto __126
 30395  	goto __128
 30396  __128:
 30397  	;
 30398  	if !(uint64(ii) >= uint64(unsafe.Sizeof(aDbConfig))/uint64(unsafe.Sizeof(DbConfigChoices{}))) {
 30399  		goto __130
 30400  	}
 30401  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+216, ts+11920, zOpt,
 30402  		ts+11945, uintptr(0)))
 30403  	return TCL_ERROR
 30404  __130:
 30405  	;
 30406  	if !(objc == 4) {
 30407  		goto __131
 30408  	}
 30409  	if !(tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+1056) != 0) {
 30410  		goto __132
 30411  	}
 30412  	return TCL_ERROR
 30413  __132:
 30414  	;
 30415  __131:
 30416  	;
 30417  	sqlite3.Xsqlite3_db_config(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, aDbConfig[ii].Fop, libc.VaList(bp+248, *(*int32)(unsafe.Pointer(bp + 1056)), bp+1060))
 30418  	pResult2 = tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 1060)))
 30419  __121:
 30420  	;
 30421  	tcl.XTcl_SetObjResult(tls, interp, pResult2)
 30422  	goto __3
 30423  
 30424  __16:
 30425  	lineno = 0
 30426  	if !(objc < 5 || objc > 7) {
 30427  		goto __133
 30428  	}
 30429  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv,
 30430  		ts+11947)
 30431  	return TCL_ERROR
 30432  __133:
 30433  	;
 30434  	if !(objc >= 6) {
 30435  		goto __134
 30436  	}
 30437  	zSep = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 5*8)), uintptr(0))
 30438  	goto __135
 30439  __134:
 30440  	zSep = ts + 12009
 30441  __135:
 30442  	;
 30443  	if !(objc >= 7) {
 30444  		goto __136
 30445  	}
 30446  	zNull = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 6*8)), uintptr(0))
 30447  	goto __137
 30448  __136:
 30449  	zNull = ts + 584
 30450  __137:
 30451  	;
 30452  	zConflict = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)), uintptr(0))
 30453  	zTable = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)), uintptr(0))
 30454  	zFile = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 4*8)), uintptr(0))
 30455  	nSep = strlen30(tls, zSep)
 30456  	nNull = strlen30(tls, zNull)
 30457  	if !(nSep == 0) {
 30458  		goto __138
 30459  	}
 30460  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+264, ts+12011,
 30461  		uintptr(0)))
 30462  	return TCL_ERROR
 30463  __138:
 30464  	;
 30465  	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) {
 30466  		goto __139
 30467  	}
 30468  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+280, ts+12090, zConflict,
 30469  		ts+12099, uintptr(0)))
 30470  	return TCL_ERROR
 30471  __139:
 30472  	;
 30473  	zSql = sqlite3.Xsqlite3_mprintf(tls, ts+12179, libc.VaList(bp+312, zTable))
 30474  	if !(zSql == uintptr(0)) {
 30475  		goto __140
 30476  	}
 30477  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+320, ts+12198, zTable, uintptr(0)))
 30478  	return TCL_ERROR
 30479  __140:
 30480  	;
 30481  	nByte = strlen30(tls, zSql)
 30482  	rc = sqlite3.Xsqlite3_prepare(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, zSql, -1, bp+1064, uintptr(0))
 30483  	sqlite3.Xsqlite3_free(tls, zSql)
 30484  	if !(rc != 0) {
 30485  		goto __141
 30486  	}
 30487  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+344, ts+12221, sqlite3.Xsqlite3_errmsg(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb), uintptr(0)))
 30488  	nCol = 0
 30489  	goto __142
 30490  __141:
 30491  	nCol = sqlite3.Xsqlite3_column_count(tls, *(*uintptr)(unsafe.Pointer(bp + 1064)))
 30492  __142:
 30493  	;
 30494  	sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 1064)))
 30495  	if !(nCol == 0) {
 30496  		goto __143
 30497  	}
 30498  	return TCL_ERROR
 30499  __143:
 30500  	;
 30501  	zSql = libc.Xmalloc(tls, uint64(nByte+50+nCol*2))
 30502  	if !(zSql == uintptr(0)) {
 30503  		goto __144
 30504  	}
 30505  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+368, ts+12229, uintptr(0)))
 30506  	return TCL_ERROR
 30507  __144:
 30508  	;
 30509  	sqlite3.Xsqlite3_snprintf(tls, nByte+50, zSql, ts+12251,
 30510  		libc.VaList(bp+384, zConflict, zTable))
 30511  	j = strlen30(tls, zSql)
 30512  	i = 1
 30513  __145:
 30514  	if !(i < nCol) {
 30515  		goto __147
 30516  	}
 30517  	*(*uint8)(unsafe.Pointer(zSql + uintptr(libc.PostIncInt32(&j, 1)))) = uint8(',')
 30518  	*(*uint8)(unsafe.Pointer(zSql + uintptr(libc.PostIncInt32(&j, 1)))) = uint8('?')
 30519  	goto __146
 30520  __146:
 30521  	i++
 30522  	goto __145
 30523  	goto __147
 30524  __147:
 30525  	;
 30526  	*(*uint8)(unsafe.Pointer(zSql + uintptr(libc.PostIncInt32(&j, 1)))) = uint8(')')
 30527  	*(*uint8)(unsafe.Pointer(zSql + uintptr(j))) = uint8(0)
 30528  	rc = sqlite3.Xsqlite3_prepare(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, zSql, -1, bp+1064, uintptr(0))
 30529  	libc.Xfree(tls, zSql)
 30530  	if !(rc != 0) {
 30531  		goto __148
 30532  	}
 30533  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+400, ts+12221, sqlite3.Xsqlite3_errmsg(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb), uintptr(0)))
 30534  	sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 1064)))
 30535  	return TCL_ERROR
 30536  __148:
 30537  	;
 30538  	in = libc.Xfopen(tls, zFile, ts+4402)
 30539  	if !(in == uintptr(0)) {
 30540  		goto __149
 30541  	}
 30542  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+424, ts+12283, zFile, uintptr(0)))
 30543  	sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 1064)))
 30544  	return TCL_ERROR
 30545  __149:
 30546  	;
 30547  	azCol = libc.Xmalloc(tls, uint64(unsafe.Sizeof(uintptr(0)))*uint64(nCol+1))
 30548  	if !(azCol == uintptr(0)) {
 30549  		goto __150
 30550  	}
 30551  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+448, ts+12229, uintptr(0)))
 30552  	libc.Xfclose(tls, in)
 30553  	return TCL_ERROR
 30554  __150:
 30555  	;
 30556  	sqlite3.Xsqlite3_exec(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, ts+12309, uintptr(0), uintptr(0), uintptr(0))
 30557  	zCommit1 = ts + 11628
 30558  __151:
 30559  	if !(libc.AssignUintptr(&zLine, local_getline(tls, uintptr(0), in)) != uintptr(0)) {
 30560  		goto __152
 30561  	}
 30562  	lineno++
 30563  	*(*uintptr)(unsafe.Pointer(azCol)) = zLine
 30564  	i = 0
 30565  	z = zLine
 30566  __153:
 30567  	if !(*(*uint8)(unsafe.Pointer(z)) != 0) {
 30568  		goto __155
 30569  	}
 30570  	if !(int32(*(*uint8)(unsafe.Pointer(z))) == int32(*(*uint8)(unsafe.Pointer(zSep))) && libc.Xstrncmp(tls, z, zSep, uint64(nSep)) == 0) {
 30571  		goto __156
 30572  	}
 30573  	*(*uint8)(unsafe.Pointer(z)) = uint8(0)
 30574  	i++
 30575  	if !(i < nCol) {
 30576  		goto __157
 30577  	}
 30578  	*(*uintptr)(unsafe.Pointer(azCol + uintptr(i)*8)) = z + uintptr(nSep)
 30579  	z += uintptr(nSep - 1)
 30580  __157:
 30581  	;
 30582  __156:
 30583  	;
 30584  	goto __154
 30585  __154:
 30586  	z++
 30587  	goto __153
 30588  	goto __155
 30589  __155:
 30590  	;
 30591  	if !(i+1 != nCol) {
 30592  		goto __158
 30593  	}
 30594  	nErr = strlen30(tls, zFile) + 200
 30595  	zErr = libc.Xmalloc(tls, uint64(nErr))
 30596  	if !(zErr != 0) {
 30597  		goto __159
 30598  	}
 30599  	sqlite3.Xsqlite3_snprintf(tls, nErr, zErr,
 30600  		ts+12315,
 30601  		libc.VaList(bp+464, zFile, lineno, nCol, i+1))
 30602  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+496, zErr, uintptr(0)))
 30603  	libc.Xfree(tls, zErr)
 30604  __159:
 30605  	;
 30606  	zCommit1 = ts + 7824
 30607  	goto __152
 30608  __158:
 30609  	;
 30610  	i = 0
 30611  __160:
 30612  	if !(i < nCol) {
 30613  		goto __162
 30614  	}
 30615  
 30616  	if !(nNull > 0 && libc.Xstrcmp(tls, *(*uintptr)(unsafe.Pointer(azCol + uintptr(i)*8)), zNull) == 0 ||
 30617  		strlen30(tls, *(*uintptr)(unsafe.Pointer(azCol + uintptr(i)*8))) == 0) {
 30618  		goto __163
 30619  	}
 30620  	sqlite3.Xsqlite3_bind_null(tls, *(*uintptr)(unsafe.Pointer(bp + 1064)), i+1)
 30621  	goto __164
 30622  __163:
 30623  	sqlite3.Xsqlite3_bind_text(tls, *(*uintptr)(unsafe.Pointer(bp + 1064)), i+1, *(*uintptr)(unsafe.Pointer(azCol + uintptr(i)*8)), -1, uintptr(0))
 30624  __164:
 30625  	;
 30626  	goto __161
 30627  __161:
 30628  	i++
 30629  	goto __160
 30630  	goto __162
 30631  __162:
 30632  	;
 30633  	sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp + 1064)))
 30634  	rc = sqlite3.Xsqlite3_reset(tls, *(*uintptr)(unsafe.Pointer(bp + 1064)))
 30635  	libc.Xfree(tls, zLine)
 30636  	if !(rc != SQLITE_OK) {
 30637  		goto __165
 30638  	}
 30639  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+512, ts+12221, sqlite3.Xsqlite3_errmsg(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb), uintptr(0)))
 30640  	zCommit1 = ts + 7824
 30641  	goto __152
 30642  __165:
 30643  	;
 30644  	goto __151
 30645  __152:
 30646  	;
 30647  	libc.Xfree(tls, azCol)
 30648  	libc.Xfclose(tls, in)
 30649  	sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 1064)))
 30650  	sqlite3.Xsqlite3_exec(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, zCommit1, uintptr(0), uintptr(0), uintptr(0))
 30651  
 30652  	if !(int32(*(*uint8)(unsafe.Pointer(zCommit1))) == 'C') {
 30653  		goto __166
 30654  	}
 30655  
 30656  	pResult3 = tcl.XTcl_GetObjResult(tls, interp)
 30657  	tcl.XTcl_SetIntObj(tls, pResult3, lineno)
 30658  	rc = TCL_OK
 30659  	goto __167
 30660  __166:
 30661  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([80]uint8{})), bp+1072, ts+1333, libc.VaList(bp+536, lineno))
 30662  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+544, ts+12375, bp+1072,
 30663  		uintptr(0)))
 30664  	rc = TCL_ERROR
 30665  __167:
 30666  	;
 30667  	goto __3
 30668  
 30669  __17:
 30670  	zSchema = uintptr(0)
 30671  	pValue = uintptr(0)
 30672  	*(*sqlite3_int64)(unsafe.Pointer(bp + 1168)) = int64(0)
 30673  	*(*int32)(unsafe.Pointer(bp + 1160)) = 0
 30674  
 30675  	if !(objc < 3) {
 30676  		goto __168
 30677  	}
 30678  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+12408)
 30679  	rc = TCL_ERROR
 30680  	goto __3
 30681  __168:
 30682  	;
 30683  	i1 = 2
 30684  __169:
 30685  	if !(i1 < objc-1) {
 30686  		goto __171
 30687  	}
 30688  	z1 = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(i1)*8)))
 30689  	if !(libc.Xstrcmp(tls, z1, ts+12425) == 0 && i1 < objc-2) {
 30690  		goto __172
 30691  	}
 30692  	rc = tcl.XTcl_GetWideIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(libc.PreIncInt32(&i1, 1))*8)), bp+1152)
 30693  	if !(rc != 0) {
 30694  		goto __173
 30695  	}
 30696  	goto deserialize_error
 30697  __173:
 30698  	;
 30699  	*(*sqlite3_int64)(unsafe.Pointer(bp + 1168)) = *(*Tcl_WideInt)(unsafe.Pointer(bp + 1152))
 30700  	goto __170
 30701  __172:
 30702  	;
 30703  	if !(libc.Xstrcmp(tls, z1, ts+12434) == 0 && i1 < objc-2) {
 30704  		goto __174
 30705  	}
 30706  	rc = tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(libc.PreIncInt32(&i1, 1))*8)), bp+1160)
 30707  	if !(rc != 0) {
 30708  		goto __175
 30709  	}
 30710  	goto deserialize_error
 30711  __175:
 30712  	;
 30713  	goto __170
 30714  __174:
 30715  	;
 30716  	if !(zSchema == uintptr(0) && i1 == objc-2 && int32(*(*uint8)(unsafe.Pointer(z1))) != '-') {
 30717  		goto __176
 30718  	}
 30719  	zSchema = z1
 30720  	goto __170
 30721  __176:
 30722  	;
 30723  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+568, ts+12444, z1, uintptr(0)))
 30724  	rc = TCL_ERROR
 30725  	goto deserialize_error
 30726  	goto __170
 30727  __170:
 30728  	i1++
 30729  	goto __169
 30730  	goto __171
 30731  __171:
 30732  	;
 30733  	pValue = *(*uintptr)(unsafe.Pointer(objv + uintptr(objc-1)*8))
 30734  	pBA = tcl.XTcl_GetByteArrayFromObj(tls, pValue, bp+1164)
 30735  	pData = sqlite3.Xsqlite3_malloc64(tls, uint64(*(*int32)(unsafe.Pointer(bp + 1164))))
 30736  	if !(pData == uintptr(0) && *(*int32)(unsafe.Pointer(bp + 1164)) > 0) {
 30737  		goto __177
 30738  	}
 30739  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+592, ts+2069, uintptr(0)))
 30740  	rc = TCL_ERROR
 30741  	goto __178
 30742  __177:
 30743  	if !(*(*int32)(unsafe.Pointer(bp + 1164)) > 0) {
 30744  		goto __179
 30745  	}
 30746  	libc.Xmemcpy(tls, pData, pBA, uint64(*(*int32)(unsafe.Pointer(bp + 1164))))
 30747  __179:
 30748  	;
 30749  	if !(*(*int32)(unsafe.Pointer(bp + 1160)) != 0) {
 30750  		goto __180
 30751  	}
 30752  	flags = SQLITE_DESERIALIZE_FREEONCLOSE | SQLITE_DESERIALIZE_READONLY
 30753  	goto __181
 30754  __180:
 30755  	flags = SQLITE_DESERIALIZE_FREEONCLOSE | SQLITE_DESERIALIZE_RESIZEABLE
 30756  __181:
 30757  	;
 30758  	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))
 30759  	if !(xrc != 0) {
 30760  		goto __182
 30761  	}
 30762  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+608, ts+12461, uintptr(0)))
 30763  	rc = TCL_ERROR
 30764  __182:
 30765  	;
 30766  	if !(*(*sqlite3_int64)(unsafe.Pointer(bp + 1168)) > int64(0)) {
 30767  		goto __183
 30768  	}
 30769  	sqlite3.Xsqlite3_file_control(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, zSchema, SQLITE_FCNTL_SIZE_LIMIT, bp+1168)
 30770  __183:
 30771  	;
 30772  __178:
 30773  	;
 30774  deserialize_error:
 30775  	goto __3
 30776  
 30777  __18:
 30778  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+624, ts+12489,
 30779  		uintptr(0)))
 30780  	return TCL_ERROR
 30781  
 30782  __19:
 30783  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, sqlite3.Xsqlite3_errcode(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb)))
 30784  	goto __3
 30785  
 30786  __20:
 30787  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, sqlite3.Xsqlite3_error_offset(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb)))
 30788  	goto __3
 30789  
 30790  __21:
 30791  __22:
 30792  	pResult4 = uintptr(0)
 30793  	if !(objc != 3) {
 30794  		goto __184
 30795  	}
 30796  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+9535)
 30797  	return TCL_ERROR
 30798  __184:
 30799  	;
 30800  	dbEvalInit(tls, bp+1176, pDb, *(*uintptr)(unsafe.Pointer(objv + 2*8)), uintptr(0), 0)
 30801  	rc = dbEvalStep(tls, bp+1176)
 30802  	if !(*(*int32)(unsafe.Pointer(bp + 1016)) == 24) {
 30803  		goto __185
 30804  	}
 30805  	if !(rc == TCL_OK) {
 30806  		goto __187
 30807  	}
 30808  	pResult4 = dbEvalColumnValue(tls, bp+1176, 0)
 30809  	goto __188
 30810  __187:
 30811  	if !(rc == TCL_BREAK) {
 30812  		goto __189
 30813  	}
 30814  	tcl.XTcl_ResetResult(tls, interp)
 30815  __189:
 30816  	;
 30817  __188:
 30818  	;
 30819  	goto __186
 30820  __185:
 30821  	if !(rc == TCL_BREAK || rc == TCL_OK) {
 30822  		goto __190
 30823  	}
 30824  	pResult4 = tcl.XTcl_NewIntObj(tls, libc.Bool32(libc.Bool32(rc == TCL_OK) != 0))
 30825  __190:
 30826  	;
 30827  __186:
 30828  	;
 30829  	dbEvalFinalize(tls, bp+1176)
 30830  	if !(pResult4 != 0) {
 30831  		goto __191
 30832  	}
 30833  	tcl.XTcl_SetObjResult(tls, interp, pResult4)
 30834  __191:
 30835  	;
 30836  	if !(rc == TCL_BREAK) {
 30837  		goto __192
 30838  	}
 30839  	rc = TCL_OK
 30840  __192:
 30841  	;
 30842  	goto __3
 30843  
 30844  __23:
 30845  	evalFlags = 0
 30846  __193:
 30847  	if !(objc > 3 && libc.AssignUintptr(&zOpt1, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))) != uintptr(0) && int32(*(*uint8)(unsafe.Pointer(zOpt1))) == '-') {
 30848  		goto __194
 30849  	}
 30850  	if !(libc.Xstrcmp(tls, zOpt1, ts+12537) == 0) {
 30851  		goto __195
 30852  	}
 30853  	evalFlags = evalFlags | SQLITE_EVAL_WITHOUTNULLS
 30854  	goto __196
 30855  __195:
 30856  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+640, ts+12551, zOpt1, ts+11945, uintptr(0)))
 30857  	return TCL_ERROR
 30858  __196:
 30859  	;
 30860  	objc--
 30861  	objv += 8
 30862  	goto __193
 30863  __194:
 30864  	;
 30865  	if !(objc < 3 || objc > 5) {
 30866  		goto __197
 30867  	}
 30868  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv,
 30869  		ts+12569)
 30870  	return TCL_ERROR
 30871  __197:
 30872  	;
 30873  	if !(objc == 3) {
 30874  		goto __198
 30875  	}
 30876  	pRet = tcl.XTcl_NewObj(tls)
 30877  	(*Tcl_Obj)(unsafe.Pointer(pRet)).FrefCount++
 30878  	dbEvalInit(tls, bp+1232, pDb, *(*uintptr)(unsafe.Pointer(objv + 2*8)), uintptr(0), 0)
 30879  __200:
 30880  	if !(TCL_OK == libc.AssignInt32(&rc, dbEvalStep(tls, bp+1232))) {
 30881  		goto __201
 30882  	}
 30883  	dbEvalRowInfo(tls, bp+1232, bp+1288, uintptr(0))
 30884  	i2 = 0
 30885  __202:
 30886  	if !(i2 < *(*int32)(unsafe.Pointer(bp + 1288))) {
 30887  		goto __204
 30888  	}
 30889  	tcl.XTcl_ListObjAppendElement(tls, interp, pRet, dbEvalColumnValue(tls, bp+1232, i2))
 30890  	goto __203
 30891  __203:
 30892  	i2++
 30893  	goto __202
 30894  	goto __204
 30895  __204:
 30896  	;
 30897  	goto __200
 30898  __201:
 30899  	;
 30900  	dbEvalFinalize(tls, bp+1232)
 30901  	if !(rc == TCL_BREAK) {
 30902  		goto __205
 30903  	}
 30904  	tcl.XTcl_SetObjResult(tls, interp, pRet)
 30905  	rc = TCL_OK
 30906  __205:
 30907  	;
 30908  __206:
 30909  	_objPtr1 = pRet
 30910  	if !(libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr1)).FrefCount, 1) <= 1) {
 30911  		goto __209
 30912  	}
 30913  	tcl.XTclFreeObj(tls, _objPtr1)
 30914  __209:
 30915  	;
 30916  	goto __207
 30917  __207:
 30918  	if 0 != 0 {
 30919  		goto __206
 30920  	}
 30921  	goto __208
 30922  __208:
 30923  	;
 30924  	goto __199
 30925  __198:
 30926  	pArray = uintptr(0)
 30927  
 30928  	if !(objc >= 5 && *(*uint8)(unsafe.Pointer(tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8))))) != 0) {
 30929  		goto __210
 30930  	}
 30931  	pArray = *(*uintptr)(unsafe.Pointer(objv + 3*8))
 30932  __210:
 30933  	;
 30934  	pScript = *(*uintptr)(unsafe.Pointer(objv + uintptr(objc-1)*8))
 30935  	(*Tcl_Obj)(unsafe.Pointer(pScript)).FrefCount++
 30936  
 30937  	p = tcl.XTcl_Alloc(tls, uint32(unsafe.Sizeof(DbEvalContext{})))
 30938  	dbEvalInit(tls, p, pDb, *(*uintptr)(unsafe.Pointer(objv + 2*8)), pArray, evalFlags)
 30939  
 30940  	*(*ClientData)(unsafe.Pointer(bp + 1296)) = p
 30941  	*(*ClientData)(unsafe.Pointer(bp + 1296 + 1*8)) = pScript
 30942  	rc = DbEvalNextCmd(tls, bp+1296, interp, TCL_OK)
 30943  __199:
 30944  	;
 30945  	goto __3
 30946  
 30947  __24:
 30948  	flags1 = SQLITE_UTF8
 30949  	*(*int32)(unsafe.Pointer(bp + 1312)) = -1
 30950  	*(*int32)(unsafe.Pointer(bp + 1368)) = SQLITE_NULL
 30951  	if !(objc < 4) {
 30952  		goto __211
 30953  	}
 30954  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+12605)
 30955  	return TCL_ERROR
 30956  __211:
 30957  	;
 30958  	i3 = 3
 30959  __212:
 30960  	if !(i3 < objc-1) {
 30961  		goto __214
 30962  	}
 30963  	z2 = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(i3)*8)))
 30964  	n1 = strlen30(tls, z2)
 30965  	if !(n1 > 1 && libc.Xstrncmp(tls, z2, ts+12628, uint64(n1)) == 0) {
 30966  		goto __215
 30967  	}
 30968  	if !(i3 == objc-2) {
 30969  		goto __217
 30970  	}
 30971  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+672, ts+12638, z2, uintptr(0)))
 30972  	return TCL_ERROR
 30973  __217:
 30974  	;
 30975  	if !(tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(i3+1)*8)), bp+1312) != 0) {
 30976  		goto __218
 30977  	}
 30978  	return TCL_ERROR
 30979  __218:
 30980  	;
 30981  	if !(*(*int32)(unsafe.Pointer(bp + 1312)) < 0) {
 30982  		goto __219
 30983  	}
 30984  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+696, ts+12668,
 30985  		uintptr(0)))
 30986  	return TCL_ERROR
 30987  __219:
 30988  	;
 30989  	i3++
 30990  	goto __216
 30991  __215:
 30992  	if !(n1 > 1 && libc.Xstrncmp(tls, z2, ts+12709, uint64(n1)) == 0) {
 30993  		goto __220
 30994  	}
 30995  	flags1 = flags1 | SQLITE_DETERMINISTIC
 30996  	goto __221
 30997  __220:
 30998  	if !(n1 > 1 && libc.Xstrncmp(tls, z2, ts+12724, uint64(n1)) == 0) {
 30999  		goto __222
 31000  	}
 31001  	flags1 = flags1 | SQLITE_DIRECTONLY
 31002  	goto __223
 31003  __222:
 31004  	if !(n1 > 1 && libc.Xstrncmp(tls, z2, ts+12736, uint64(n1)) == 0) {
 31005  		goto __224
 31006  	}
 31007  	flags1 = flags1 | SQLITE_INNOCUOUS
 31008  	goto __225
 31009  __224:
 31010  	if !(n1 > 1 && libc.Xstrncmp(tls, z2, ts+12747, uint64(n1)) == 0) {
 31011  		goto __226
 31012  	}
 31013  	*(*[6]uintptr)(unsafe.Pointer(bp + 1320)) = [6]uintptr{ts + 8470, ts + 12759, ts + 12764, ts + 12769, ts + 12774, uintptr(0)}
 31014  
 31015  	if !(i3 == objc-2) {
 31016  		goto __228
 31017  	}
 31018  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+712, ts+12638, z2, uintptr(0)))
 31019  	return TCL_ERROR
 31020  __228:
 31021  	;
 31022  	i3++
 31023  	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) {
 31024  		goto __229
 31025  	}
 31026  	return TCL_ERROR
 31027  __229:
 31028  	;
 31029  	*(*int32)(unsafe.Pointer(bp + 1368))++
 31030  	goto __227
 31031  __226:
 31032  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+736, ts+11851, z2,
 31033  		ts+12783, uintptr(0)))
 31034  	return TCL_ERROR
 31035  __227:
 31036  	;
 31037  __225:
 31038  	;
 31039  __223:
 31040  	;
 31041  __221:
 31042  	;
 31043  __216:
 31044  	;
 31045  	goto __213
 31046  __213:
 31047  	i3++
 31048  	goto __212
 31049  	goto __214
 31050  __214:
 31051  	;
 31052  	pScript1 = *(*uintptr)(unsafe.Pointer(objv + uintptr(objc-1)*8))
 31053  	zName1 = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)), uintptr(0))
 31054  	pFunc = findSqlFunc(tls, pDb, zName1)
 31055  	if !(pFunc == uintptr(0)) {
 31056  		goto __230
 31057  	}
 31058  	return TCL_ERROR
 31059  __230:
 31060  	;
 31061  	if !((*SqlFunc)(unsafe.Pointer(pFunc)).FpScript != 0) {
 31062  		goto __231
 31063  	}
 31064  __232:
 31065  	_objPtr2 = (*SqlFunc)(unsafe.Pointer(pFunc)).FpScript
 31066  	if !(libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr2)).FrefCount, 1) <= 1) {
 31067  		goto __235
 31068  	}
 31069  	tcl.XTclFreeObj(tls, _objPtr2)
 31070  __235:
 31071  	;
 31072  	goto __233
 31073  __233:
 31074  	if 0 != 0 {
 31075  		goto __232
 31076  	}
 31077  	goto __234
 31078  __234:
 31079  	;
 31080  __231:
 31081  	;
 31082  	(*SqlFunc)(unsafe.Pointer(pFunc)).FpScript = pScript1
 31083  	(*Tcl_Obj)(unsafe.Pointer(pScript1)).FrefCount++
 31084  	(*SqlFunc)(unsafe.Pointer(pFunc)).FuseEvalObjv = safeToUseEvalObjv(tls, interp, pScript1)
 31085  	(*SqlFunc)(unsafe.Pointer(pFunc)).FeType = *(*int32)(unsafe.Pointer(bp + 1368))
 31086  	rc = sqlite3.Xsqlite3_create_function(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, zName1, *(*int32)(unsafe.Pointer(bp + 1312)), flags1,
 31087  		pFunc, *(*uintptr)(unsafe.Pointer(&struct {
 31088  			f func(*libc.TLS, uintptr, int32, uintptr)
 31089  		}{tclSqlFunc})), uintptr(0), uintptr(0))
 31090  	if !(rc != SQLITE_OK) {
 31091  		goto __236
 31092  	}
 31093  	rc = TCL_ERROR
 31094  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3_errmsg(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb), uintptr(1))
 31095  __236:
 31096  	;
 31097  	goto __3
 31098  
 31099  __25:
 31100  	isReadonly1 = 0
 31101  	zDb = ts + 85
 31102  
 31103  	if !(objc > 3 && libc.Xstrcmp(tls, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8))), ts+12434) == 0) {
 31104  		goto __237
 31105  	}
 31106  	isReadonly1 = 1
 31107  __237:
 31108  	;
 31109  	if !(objc != 5+isReadonly1 && objc != 6+isReadonly1) {
 31110  		goto __238
 31111  	}
 31112  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+12861)
 31113  	return TCL_ERROR
 31114  __238:
 31115  	;
 31116  	if !(objc == 6+isReadonly1) {
 31117  		goto __239
 31118  	}
 31119  	zDb = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(2+isReadonly1)*8)))
 31120  __239:
 31121  	;
 31122  	zTable1 = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(objc-3)*8)))
 31123  	zColumn = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(objc-2)*8)))
 31124  	rc = tcl.XTcl_GetWideIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(objc-1)*8)), bp+1376)
 31125  
 31126  	if !(rc == TCL_OK) {
 31127  		goto __240
 31128  	}
 31129  	rc = createIncrblobChannel(tls,
 31130  		interp, pDb, zDb, zTable1, zColumn, *(*Tcl_WideInt)(unsafe.Pointer(bp + 1376)), isReadonly1)
 31131  __240:
 31132  	;
 31133  	goto __3
 31134  
 31135  __26:
 31136  	sqlite3.Xsqlite3_interrupt(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb)
 31137  	goto __3
 31138  
 31139  __27:
 31140  	if !(objc != 2 && objc != 3) {
 31141  		goto __241
 31142  	}
 31143  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+12897)
 31144  	return TCL_ERROR
 31145  __241:
 31146  	;
 31147  	if !(objc == 3) {
 31148  		goto __242
 31149  	}
 31150  	zNull1 = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+1384)
 31151  	if !((*SqliteDb)(unsafe.Pointer(pDb)).FzNull != 0) {
 31152  		goto __243
 31153  	}
 31154  	tcl.XTcl_Free(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzNull)
 31155  __243:
 31156  	;
 31157  	if !(zNull1 != 0 && *(*int32)(unsafe.Pointer(bp + 1384)) > 0) {
 31158  		goto __244
 31159  	}
 31160  	(*SqliteDb)(unsafe.Pointer(pDb)).FzNull = tcl.XTcl_Alloc(tls, uint32(*(*int32)(unsafe.Pointer(bp + 1384))+1))
 31161  	libc.Xmemcpy(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzNull, zNull1, uint64(*(*int32)(unsafe.Pointer(bp + 1384))))
 31162  	*(*uint8)(unsafe.Pointer((*SqliteDb)(unsafe.Pointer(pDb)).FzNull + uintptr(*(*int32)(unsafe.Pointer(bp + 1384))))) = uint8(0)
 31163  	goto __245
 31164  __244:
 31165  	(*SqliteDb)(unsafe.Pointer(pDb)).FzNull = uintptr(0)
 31166  __245:
 31167  	;
 31168  __242:
 31169  	;
 31170  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzNull, -1))
 31171  	goto __3
 31172  
 31173  __28:
 31174  	if !(objc != 2) {
 31175  		goto __246
 31176  	}
 31177  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+584)
 31178  	return TCL_ERROR
 31179  __246:
 31180  	;
 31181  	rowid = sqlite3.Xsqlite3_last_insert_rowid(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb)
 31182  	pResult5 = tcl.XTcl_GetObjResult(tls, interp)
 31183  	tcl.XTcl_SetWideIntObj(tls, pResult5, rowid)
 31184  	goto __3
 31185  
 31186  __29:
 31187  	if !(objc == 2) {
 31188  		goto __247
 31189  	}
 31190  	if !((*SqliteDb)(unsafe.Pointer(pDb)).FzProgress != 0) {
 31191  		goto __249
 31192  	}
 31193  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+768, (*SqliteDb)(unsafe.Pointer(pDb)).FzProgress, uintptr(0)))
 31194  __249:
 31195  	;
 31196  	goto __248
 31197  __247:
 31198  	if !(objc == 4) {
 31199  		goto __250
 31200  	}
 31201  	if !(TCL_OK != tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+1388)) {
 31202  		goto __252
 31203  	}
 31204  	return TCL_ERROR
 31205  __252:
 31206  	;
 31207  	if !((*SqliteDb)(unsafe.Pointer(pDb)).FzProgress != 0) {
 31208  		goto __253
 31209  	}
 31210  	tcl.XTcl_Free(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzProgress)
 31211  __253:
 31212  	;
 31213  	zProgress = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+1392)
 31214  	if !(zProgress != 0 && *(*int32)(unsafe.Pointer(bp + 1392)) > 0) {
 31215  		goto __254
 31216  	}
 31217  	(*SqliteDb)(unsafe.Pointer(pDb)).FzProgress = tcl.XTcl_Alloc(tls, uint32(*(*int32)(unsafe.Pointer(bp + 1392))+1))
 31218  	libc.Xmemcpy(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzProgress, zProgress, uint64(*(*int32)(unsafe.Pointer(bp + 1392))+1))
 31219  	goto __255
 31220  __254:
 31221  	(*SqliteDb)(unsafe.Pointer(pDb)).FzProgress = uintptr(0)
 31222  __255:
 31223  	;
 31224  	if !((*SqliteDb)(unsafe.Pointer(pDb)).FzProgress != 0) {
 31225  		goto __256
 31226  	}
 31227  	(*SqliteDb)(unsafe.Pointer(pDb)).Finterp = interp
 31228  	sqlite3.Xsqlite3_progress_handler(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, *(*int32)(unsafe.Pointer(bp + 1388)), *(*uintptr)(unsafe.Pointer(&struct {
 31229  		f func(*libc.TLS, uintptr) int32
 31230  	}{DbProgressHandler})), pDb)
 31231  	goto __257
 31232  __256:
 31233  	sqlite3.Xsqlite3_progress_handler(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, 0, uintptr(0), uintptr(0))
 31234  __257:
 31235  	;
 31236  	goto __251
 31237  __250:
 31238  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+12907)
 31239  	return TCL_ERROR
 31240  __251:
 31241  	;
 31242  __248:
 31243  	;
 31244  	goto __3
 31245  
 31246  __30:
 31247  	if !(objc > 3) {
 31248  		goto __258
 31249  	}
 31250  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+11698)
 31251  	return TCL_ERROR
 31252  	goto __259
 31253  __258:
 31254  	if !(objc == 2) {
 31255  		goto __260
 31256  	}
 31257  	if !((*SqliteDb)(unsafe.Pointer(pDb)).FzProfile != 0) {
 31258  		goto __262
 31259  	}
 31260  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+784, (*SqliteDb)(unsafe.Pointer(pDb)).FzProfile, uintptr(0)))
 31261  __262:
 31262  	;
 31263  	goto __261
 31264  __260:
 31265  	if !((*SqliteDb)(unsafe.Pointer(pDb)).FzProfile != 0) {
 31266  		goto __263
 31267  	}
 31268  	tcl.XTcl_Free(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzProfile)
 31269  __263:
 31270  	;
 31271  	zProfile = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+1396)
 31272  	if !(zProfile != 0 && *(*int32)(unsafe.Pointer(bp + 1396)) > 0) {
 31273  		goto __264
 31274  	}
 31275  	(*SqliteDb)(unsafe.Pointer(pDb)).FzProfile = tcl.XTcl_Alloc(tls, uint32(*(*int32)(unsafe.Pointer(bp + 1396))+1))
 31276  	libc.Xmemcpy(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzProfile, zProfile, uint64(*(*int32)(unsafe.Pointer(bp + 1396))+1))
 31277  	goto __265
 31278  __264:
 31279  	(*SqliteDb)(unsafe.Pointer(pDb)).FzProfile = uintptr(0)
 31280  __265:
 31281  	;
 31282  	if !((*SqliteDb)(unsafe.Pointer(pDb)).FzProfile != 0) {
 31283  		goto __266
 31284  	}
 31285  	(*SqliteDb)(unsafe.Pointer(pDb)).Finterp = interp
 31286  	sqlite3.Xsqlite3_profile(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, *(*uintptr)(unsafe.Pointer(&struct {
 31287  		f func(*libc.TLS, uintptr, uintptr, sqlite_uint64)
 31288  	}{DbProfileHandler})), pDb)
 31289  	goto __267
 31290  __266:
 31291  	sqlite3.Xsqlite3_profile(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, uintptr(0), uintptr(0))
 31292  __267:
 31293  	;
 31294  __261:
 31295  	;
 31296  __259:
 31297  	;
 31298  	goto __3
 31299  
 31300  __31:
 31301  	if !(objc != 3) {
 31302  		goto __268
 31303  	}
 31304  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+12918)
 31305  	return TCL_ERROR
 31306  __268:
 31307  	;
 31308  	goto __3
 31309  
 31310  __32:
 31311  	nTimeout = 0
 31312  
 31313  	if !(objc == 3) {
 31314  		goto __269
 31315  	}
 31316  	zDestDb = ts + 85
 31317  	zSrcFile = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 31318  	goto __270
 31319  __269:
 31320  	if !(objc == 4) {
 31321  		goto __271
 31322  	}
 31323  	zDestDb = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 31324  	zSrcFile = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)))
 31325  	goto __272
 31326  __271:
 31327  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+11709)
 31328  	return TCL_ERROR
 31329  __272:
 31330  	;
 31331  __270:
 31332  	;
 31333  	rc = sqlite3.Xsqlite3_open_v2(tls, zSrcFile, bp+1400,
 31334  		SQLITE_OPEN_READONLY|(*SqliteDb)(unsafe.Pointer(pDb)).FopenFlags, uintptr(0))
 31335  	if !(rc != SQLITE_OK) {
 31336  		goto __273
 31337  	}
 31338  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+800, ts+12922,
 31339  		sqlite3.Xsqlite3_errmsg(tls, *(*uintptr)(unsafe.Pointer(bp + 1400))), uintptr(0)))
 31340  	sqlite3.Xsqlite3_close(tls, *(*uintptr)(unsafe.Pointer(bp + 1400)))
 31341  	return TCL_ERROR
 31342  __273:
 31343  	;
 31344  	pBackup1 = sqlite3.Xsqlite3_backup_init(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, zDestDb, *(*uintptr)(unsafe.Pointer(bp + 1400)), ts+85)
 31345  	if !(pBackup1 == uintptr(0)) {
 31346  		goto __274
 31347  	}
 31348  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+824, ts+12952,
 31349  		sqlite3.Xsqlite3_errmsg(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb), uintptr(0)))
 31350  	sqlite3.Xsqlite3_close(tls, *(*uintptr)(unsafe.Pointer(bp + 1400)))
 31351  	return TCL_ERROR
 31352  __274:
 31353  	;
 31354  __275:
 31355  	if !(libc.AssignInt32(&rc, sqlite3.Xsqlite3_backup_step(tls, pBackup1, 100)) == SQLITE_OK ||
 31356  		rc == SQLITE_BUSY) {
 31357  		goto __276
 31358  	}
 31359  	if !(rc == SQLITE_BUSY) {
 31360  		goto __277
 31361  	}
 31362  	if !(libc.PostIncInt32(&nTimeout, 1) >= 3) {
 31363  		goto __278
 31364  	}
 31365  	goto __276
 31366  __278:
 31367  	;
 31368  	sqlite3.Xsqlite3_sleep(tls, 100)
 31369  __277:
 31370  	;
 31371  	goto __275
 31372  __276:
 31373  	;
 31374  	sqlite3.Xsqlite3_backup_finish(tls, pBackup1)
 31375  	if !(rc == SQLITE_DONE) {
 31376  		goto __279
 31377  	}
 31378  	rc = TCL_OK
 31379  	goto __280
 31380  __279:
 31381  	if !(rc == SQLITE_BUSY || rc == SQLITE_LOCKED) {
 31382  		goto __281
 31383  	}
 31384  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+848, ts+12969,
 31385  		uintptr(0)))
 31386  	rc = TCL_ERROR
 31387  	goto __282
 31388  __281:
 31389  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+864, ts+12952,
 31390  		sqlite3.Xsqlite3_errmsg(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb), uintptr(0)))
 31391  	rc = TCL_ERROR
 31392  __282:
 31393  	;
 31394  __280:
 31395  	;
 31396  	sqlite3.Xsqlite3_close(tls, *(*uintptr)(unsafe.Pointer(bp + 1400)))
 31397  	goto __3
 31398  
 31399  __33:
 31400  	if objc >= 3 {
 31401  		zSchema1 = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 31402  	} else {
 31403  		zSchema1 = ts + 85
 31404  	}
 31405  	*(*sqlite3_int64)(unsafe.Pointer(bp + 1408)) = int64(0)
 31406  	if !(objc != 2 && objc != 3) {
 31407  		goto __283
 31408  	}
 31409  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+13006)
 31410  	rc = TCL_ERROR
 31411  	goto __284
 31412  __283:
 31413  	pData1 = sqlite3.Xsqlite3_serialize(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, zSchema1, bp+1408, uint32(SQLITE_SERIALIZE_NOCOPY))
 31414  	if !(pData1 != 0) {
 31415  		goto __285
 31416  	}
 31417  	needFree = 0
 31418  	goto __286
 31419  __285:
 31420  	pData1 = sqlite3.Xsqlite3_serialize(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, zSchema1, bp+1408, uint32(0))
 31421  	needFree = 1
 31422  __286:
 31423  	;
 31424  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewByteArrayObj(tls, pData1, int32(*(*sqlite3_int64)(unsafe.Pointer(bp + 1408)))))
 31425  	if !(needFree != 0) {
 31426  		goto __287
 31427  	}
 31428  	sqlite3.Xsqlite3_free(tls, pData1)
 31429  __287:
 31430  	;
 31431  __284:
 31432  	;
 31433  	goto __3
 31434  
 31435  __34:
 31436  	if !(objc != 3) {
 31437  		goto __288
 31438  	}
 31439  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+13017)
 31440  	return TCL_ERROR
 31441  __288:
 31442  	;
 31443  	zOp = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 31444  	if !(libc.Xstrcmp(tls, zOp, ts+9485) == 0) {
 31445  		goto __289
 31446  	}
 31447  	v2 = (*SqliteDb)(unsafe.Pointer(pDb)).FnStep
 31448  	goto __290
 31449  __289:
 31450  	if !(libc.Xstrcmp(tls, zOp, ts+13039) == 0) {
 31451  		goto __291
 31452  	}
 31453  	v2 = (*SqliteDb)(unsafe.Pointer(pDb)).FnSort
 31454  	goto __292
 31455  __291:
 31456  	if !(libc.Xstrcmp(tls, zOp, ts+13044) == 0) {
 31457  		goto __293
 31458  	}
 31459  	v2 = (*SqliteDb)(unsafe.Pointer(pDb)).FnIndex
 31460  	goto __294
 31461  __293:
 31462  	if !(libc.Xstrcmp(tls, zOp, ts+13054) == 0) {
 31463  		goto __295
 31464  	}
 31465  	v2 = (*SqliteDb)(unsafe.Pointer(pDb)).FnVMStep
 31466  	goto __296
 31467  __295:
 31468  	tcl.XTcl_AppendResult(tls, interp,
 31469  		libc.VaList(bp+888, ts+13061,
 31470  			uintptr(0)))
 31471  	return TCL_ERROR
 31472  __296:
 31473  	;
 31474  __294:
 31475  	;
 31476  __292:
 31477  	;
 31478  __290:
 31479  	;
 31480  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, v2))
 31481  	goto __3
 31482  
 31483  __35:
 31484  	if !(objc != 3) {
 31485  		goto __297
 31486  	}
 31487  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+13117)
 31488  	return TCL_ERROR
 31489  __297:
 31490  	;
 31491  	if !(tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+1416) != 0) {
 31492  		goto __298
 31493  	}
 31494  	return TCL_ERROR
 31495  __298:
 31496  	;
 31497  	sqlite3.Xsqlite3_busy_timeout(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, *(*int32)(unsafe.Pointer(bp + 1416)))
 31498  	goto __3
 31499  
 31500  __36:
 31501  	if !(objc != 2) {
 31502  		goto __299
 31503  	}
 31504  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+584)
 31505  	return TCL_ERROR
 31506  __299:
 31507  	;
 31508  	pResult6 = tcl.XTcl_GetObjResult(tls, interp)
 31509  	tcl.XTcl_SetWideIntObj(tls, pResult6, sqlite3.Xsqlite3_total_changes64(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb))
 31510  	goto __3
 31511  
 31512  __37:
 31513  	if !(objc > 3) {
 31514  		goto __300
 31515  	}
 31516  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+11698)
 31517  	return TCL_ERROR
 31518  	goto __301
 31519  __300:
 31520  	if !(objc == 2) {
 31521  		goto __302
 31522  	}
 31523  	if !((*SqliteDb)(unsafe.Pointer(pDb)).FzTrace != 0) {
 31524  		goto __304
 31525  	}
 31526  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+904, (*SqliteDb)(unsafe.Pointer(pDb)).FzTrace, uintptr(0)))
 31527  __304:
 31528  	;
 31529  	goto __303
 31530  __302:
 31531  	if !((*SqliteDb)(unsafe.Pointer(pDb)).FzTrace != 0) {
 31532  		goto __305
 31533  	}
 31534  	tcl.XTcl_Free(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzTrace)
 31535  __305:
 31536  	;
 31537  	zTrace = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+1420)
 31538  	if !(zTrace != 0 && *(*int32)(unsafe.Pointer(bp + 1420)) > 0) {
 31539  		goto __306
 31540  	}
 31541  	(*SqliteDb)(unsafe.Pointer(pDb)).FzTrace = tcl.XTcl_Alloc(tls, uint32(*(*int32)(unsafe.Pointer(bp + 1420))+1))
 31542  	libc.Xmemcpy(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzTrace, zTrace, uint64(*(*int32)(unsafe.Pointer(bp + 1420))+1))
 31543  	goto __307
 31544  __306:
 31545  	(*SqliteDb)(unsafe.Pointer(pDb)).FzTrace = uintptr(0)
 31546  __307:
 31547  	;
 31548  	if !((*SqliteDb)(unsafe.Pointer(pDb)).FzTrace != 0) {
 31549  		goto __308
 31550  	}
 31551  	(*SqliteDb)(unsafe.Pointer(pDb)).Finterp = interp
 31552  	sqlite3.Xsqlite3_trace(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, *(*uintptr)(unsafe.Pointer(&struct {
 31553  		f func(*libc.TLS, uintptr, uintptr)
 31554  	}{DbTraceHandler})), pDb)
 31555  	goto __309
 31556  __308:
 31557  	sqlite3.Xsqlite3_trace(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, uintptr(0), uintptr(0))
 31558  __309:
 31559  	;
 31560  __303:
 31561  	;
 31562  __301:
 31563  	;
 31564  	goto __3
 31565  
 31566  __38:
 31567  	if !(objc > 4) {
 31568  		goto __310
 31569  	}
 31570  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+13130)
 31571  	return TCL_ERROR
 31572  	goto __311
 31573  __310:
 31574  	if !(objc == 2) {
 31575  		goto __312
 31576  	}
 31577  	if !((*SqliteDb)(unsafe.Pointer(pDb)).FzTraceV2 != 0) {
 31578  		goto __314
 31579  	}
 31580  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+920, (*SqliteDb)(unsafe.Pointer(pDb)).FzTraceV2, uintptr(0)))
 31581  __314:
 31582  	;
 31583  	goto __313
 31584  __312:
 31585  	wMask = int64(0)
 31586  	if !(objc == 4) {
 31587  		goto __315
 31588  	}
 31589  	if !(TCL_OK != tcl.XTcl_ListObjLength(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+1424)) {
 31590  		goto __317
 31591  	}
 31592  	return TCL_ERROR
 31593  __317:
 31594  	;
 31595  	i4 = 0
 31596  __318:
 31597  	if !(i4 < *(*int32)(unsafe.Pointer(bp + 1424))) {
 31598  		goto __320
 31599  	}
 31600  	if !(TCL_OK != tcl.XTcl_ListObjIndex(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), i4, bp+1432)) {
 31601  		goto __321
 31602  	}
 31603  	return TCL_ERROR
 31604  __321:
 31605  	;
 31606  	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) {
 31607  		goto __322
 31608  	}
 31609  	pError = tcl.XTcl_DuplicateObj(tls, tcl.XTcl_GetObjResult(tls, interp))
 31610  	(*Tcl_Obj)(unsafe.Pointer(pError)).FrefCount++
 31611  	if !(TCL_OK == tcl.XTcl_GetWideIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(bp + 1432)), bp+1448)) {
 31612  		goto __324
 31613  	}
 31614  __326:
 31615  	_objPtr3 = pError
 31616  	if !(libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr3)).FrefCount, 1) <= 1) {
 31617  		goto __329
 31618  	}
 31619  	tcl.XTclFreeObj(tls, _objPtr3)
 31620  __329:
 31621  	;
 31622  	goto __327
 31623  __327:
 31624  	if 0 != 0 {
 31625  		goto __326
 31626  	}
 31627  	goto __328
 31628  __328:
 31629  	;
 31630  	wMask = wMask | *(*Tcl_WideInt)(unsafe.Pointer(bp + 1448))
 31631  	goto __325
 31632  __324:
 31633  	tcl.XTcl_SetObjResult(tls, interp, pError)
 31634  __330:
 31635  	_objPtr4 = pError
 31636  	if !(libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr4)).FrefCount, 1) <= 1) {
 31637  		goto __333
 31638  	}
 31639  	tcl.XTclFreeObj(tls, _objPtr4)
 31640  __333:
 31641  	;
 31642  	goto __331
 31643  __331:
 31644  	if 0 != 0 {
 31645  		goto __330
 31646  	}
 31647  	goto __332
 31648  __332:
 31649  	;
 31650  	return TCL_ERROR
 31651  __325:
 31652  	;
 31653  	goto __323
 31654  __322:
 31655  	switch uint32(*(*int32)(unsafe.Pointer(bp + 1440))) {
 31656  	case uint32(0):
 31657  		goto __335
 31658  	case uint32(1):
 31659  		goto __336
 31660  	case uint32(2):
 31661  		goto __337
 31662  	case uint32(3):
 31663  		goto __338
 31664  	}
 31665  	goto __334
 31666  __335:
 31667  	wMask = wMask | int64(SQLITE_TRACE_STMT)
 31668  	goto __334
 31669  __336:
 31670  	wMask = wMask | int64(SQLITE_TRACE_PROFILE)
 31671  	goto __334
 31672  __337:
 31673  	wMask = wMask | int64(SQLITE_TRACE_ROW)
 31674  	goto __334
 31675  __338:
 31676  	wMask = wMask | int64(SQLITE_TRACE_CLOSE)
 31677  	goto __334
 31678  __334:
 31679  	;
 31680  __323:
 31681  	;
 31682  	goto __319
 31683  __319:
 31684  	i4++
 31685  	goto __318
 31686  	goto __320
 31687  __320:
 31688  	;
 31689  	goto __316
 31690  __315:
 31691  	wMask = int64(SQLITE_TRACE_STMT)
 31692  __316:
 31693  	;
 31694  	if !((*SqliteDb)(unsafe.Pointer(pDb)).FzTraceV2 != 0) {
 31695  		goto __339
 31696  	}
 31697  	tcl.XTcl_Free(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzTraceV2)
 31698  __339:
 31699  	;
 31700  	zTraceV2 = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+1424)
 31701  	if !(zTraceV2 != 0 && *(*int32)(unsafe.Pointer(bp + 1424)) > 0) {
 31702  		goto __340
 31703  	}
 31704  	(*SqliteDb)(unsafe.Pointer(pDb)).FzTraceV2 = tcl.XTcl_Alloc(tls, uint32(*(*int32)(unsafe.Pointer(bp + 1424))+1))
 31705  	libc.Xmemcpy(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzTraceV2, zTraceV2, uint64(*(*int32)(unsafe.Pointer(bp + 1424))+1))
 31706  	goto __341
 31707  __340:
 31708  	(*SqliteDb)(unsafe.Pointer(pDb)).FzTraceV2 = uintptr(0)
 31709  __341:
 31710  	;
 31711  	if !((*SqliteDb)(unsafe.Pointer(pDb)).FzTraceV2 != 0) {
 31712  		goto __342
 31713  	}
 31714  	(*SqliteDb)(unsafe.Pointer(pDb)).Finterp = interp
 31715  	sqlite3.Xsqlite3_trace_v2(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, uint32(wMask), *(*uintptr)(unsafe.Pointer(&struct {
 31716  		f func(*libc.TLS, uint32, uintptr, uintptr, uintptr) int32
 31717  	}{DbTraceV2Handler})), pDb)
 31718  	goto __343
 31719  __342:
 31720  	sqlite3.Xsqlite3_trace_v2(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, uint32(0), uintptr(0), uintptr(0))
 31721  __343:
 31722  	;
 31723  __313:
 31724  	;
 31725  __311:
 31726  	;
 31727  	goto __3
 31728  
 31729  __39:
 31730  	zBegin = ts + 13159
 31731  	if !(objc != 3 && objc != 4) {
 31732  		goto __344
 31733  	}
 31734  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+13186)
 31735  	return TCL_ERROR
 31736  __344:
 31737  	;
 31738  	if !((*SqliteDb)(unsafe.Pointer(pDb)).FnTransaction == 0 && objc == 4) {
 31739  		goto __345
 31740  	}
 31741  	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) {
 31742  		goto __346
 31743  	}
 31744  	return TCL_ERROR
 31745  __346:
 31746  	;
 31747  	switch uint32(*(*int32)(unsafe.Pointer(bp + 1456))) {
 31748  	case uint32(0):
 31749  		goto __348
 31750  	case uint32(1):
 31751  		goto __349
 31752  	case uint32(2):
 31753  		goto __350
 31754  	}
 31755  	goto __347
 31756  __348:
 31757  	;
 31758  	goto __347
 31759  __349:
 31760  	zBegin = ts + 13217
 31761  	goto __347
 31762  __350:
 31763  	zBegin = ts + 13233
 31764  	goto __347
 31765  __347:
 31766  	;
 31767  __345:
 31768  	;
 31769  	pScript2 = *(*uintptr)(unsafe.Pointer(objv + uintptr(objc-1)*8))
 31770  
 31771  	(*SqliteDb)(unsafe.Pointer(pDb)).FdisableAuth++
 31772  	rc = sqlite3.Xsqlite3_exec(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, zBegin, uintptr(0), uintptr(0), uintptr(0))
 31773  	(*SqliteDb)(unsafe.Pointer(pDb)).FdisableAuth--
 31774  	if !(rc != SQLITE_OK) {
 31775  		goto __351
 31776  	}
 31777  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+936, sqlite3.Xsqlite3_errmsg(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb), uintptr(0)))
 31778  	return TCL_ERROR
 31779  __351:
 31780  	;
 31781  	(*SqliteDb)(unsafe.Pointer(pDb)).FnTransaction++
 31782  
 31783  	addDatabaseRef(tls, pDb)
 31784  	if !(DbUseNre(tls) != 0) {
 31785  		goto __352
 31786  	}
 31787  	tcl.XTcl_NRAddCallback(tls, interp, *(*uintptr)(unsafe.Pointer(&struct {
 31788  		f func(*libc.TLS, uintptr, uintptr, int32) int32
 31789  	}{DbTransPostCmd})), *(*uintptr)(unsafe.Pointer(bp + 1464)), uintptr(0), uintptr(0), uintptr(0))
 31790  	tcl.XTcl_NREvalObj(tls, interp, pScript2, 0)
 31791  	goto __353
 31792  __352:
 31793  	rc = DbTransPostCmd(tls, bp+1464, interp, tcl.XTcl_EvalObjEx(tls, interp, pScript2, 0))
 31794  __353:
 31795  	;
 31796  	goto __3
 31797  
 31798  __40:
 31799  	if !(objc != 2 && objc != 3) {
 31800  		goto __354
 31801  	}
 31802  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+13249)
 31803  	rc = TCL_ERROR
 31804  	goto __355
 31805  __354:
 31806  	xNotify = uintptr(0)
 31807  	pNotifyArg = uintptr(0)
 31808  
 31809  	if !((*SqliteDb)(unsafe.Pointer(pDb)).FpUnlockNotify != 0) {
 31810  		goto __356
 31811  	}
 31812  __357:
 31813  	_objPtr5 = (*SqliteDb)(unsafe.Pointer(pDb)).FpUnlockNotify
 31814  	if !(libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr5)).FrefCount, 1) <= 1) {
 31815  		goto __360
 31816  	}
 31817  	tcl.XTclFreeObj(tls, _objPtr5)
 31818  __360:
 31819  	;
 31820  	goto __358
 31821  __358:
 31822  	if 0 != 0 {
 31823  		goto __357
 31824  	}
 31825  	goto __359
 31826  __359:
 31827  	;
 31828  	(*SqliteDb)(unsafe.Pointer(pDb)).FpUnlockNotify = uintptr(0)
 31829  __356:
 31830  	;
 31831  	if !(objc == 3) {
 31832  		goto __361
 31833  	}
 31834  	xNotify = *(*uintptr)(unsafe.Pointer(&struct {
 31835  		f func(*libc.TLS, uintptr, int32)
 31836  	}{DbUnlockNotify}))
 31837  	pNotifyArg = pDb
 31838  	(*SqliteDb)(unsafe.Pointer(pDb)).FpUnlockNotify = *(*uintptr)(unsafe.Pointer(objv + 2*8))
 31839  	(*Tcl_Obj)(unsafe.Pointer((*SqliteDb)(unsafe.Pointer(pDb)).FpUnlockNotify)).FrefCount++
 31840  __361:
 31841  	;
 31842  	if !(sqlite3.Xsqlite3_unlock_notify(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, xNotify, pNotifyArg) != 0) {
 31843  		goto __362
 31844  	}
 31845  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+952, sqlite3.Xsqlite3_errmsg(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb), uintptr(0)))
 31846  	rc = TCL_ERROR
 31847  __362:
 31848  	;
 31849  __355:
 31850  	;
 31851  	goto __3
 31852  
 31853  __41:
 31854  	if !(objc < 3) {
 31855  		goto __363
 31856  	}
 31857  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+13258)
 31858  __363:
 31859  	;
 31860  	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) {
 31861  		goto __364
 31862  	}
 31863  	return TCL_ERROR
 31864  __364:
 31865  	;
 31866  	switch uint32(*(*int32)(unsafe.Pointer(bp + 1472))) {
 31867  	case uint32(0):
 31868  		goto __366
 31869  
 31870  	case uint32(2):
 31871  		goto __367
 31872  
 31873  	case uint32(1):
 31874  		goto __368
 31875  
 31876  	case uint32(3):
 31877  		goto __369
 31878  	case uint32(4):
 31879  		goto __370
 31880  	}
 31881  	goto __365
 31882  __366:
 31883  	nCol2 = sqlite3.Xsqlite3_preupdate_count(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb)
 31884  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, nCol2))
 31885  	goto __365
 31886  
 31887  __367:
 31888  	if !(objc > 4) {
 31889  		goto __371
 31890  	}
 31891  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+13277)
 31892  	return TCL_ERROR
 31893  __371:
 31894  	;
 31895  	DbHookCmd(tls, interp, pDb, func() uintptr {
 31896  		if objc == 4 {
 31897  			return *(*uintptr)(unsafe.Pointer(objv + 3*8))
 31898  		}
 31899  		return uintptr(0)
 31900  	}(), pDb+112)
 31901  	goto __365
 31902  
 31903  __368:
 31904  	if !(objc != 3) {
 31905  		goto __372
 31906  	}
 31907  	tcl.XTcl_WrongNumArgs(tls, interp, 3, objv, ts+584)
 31908  	return TCL_ERROR
 31909  __372:
 31910  	;
 31911  	pRet1 = tcl.XTcl_NewIntObj(tls, sqlite3.Xsqlite3_preupdate_depth(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb))
 31912  	tcl.XTcl_SetObjResult(tls, interp, pRet1)
 31913  	goto __365
 31914  
 31915  __369:
 31916  __370:
 31917  	if !(objc != 4) {
 31918  		goto __373
 31919  	}
 31920  	tcl.XTcl_WrongNumArgs(tls, interp, 3, objv, ts+13291)
 31921  	return TCL_ERROR
 31922  __373:
 31923  	;
 31924  	if !(tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+1476) != 0) {
 31925  		goto __374
 31926  	}
 31927  	return TCL_ERROR
 31928  __374:
 31929  	;
 31930  	if !(*(*int32)(unsafe.Pointer(bp + 1472)) == 4) {
 31931  		goto __375
 31932  	}
 31933  	rc = sqlite3.Xsqlite3_preupdate_old(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, *(*int32)(unsafe.Pointer(bp + 1476)), bp+1480)
 31934  	goto __376
 31935  __375:
 31936  	;
 31937  	rc = sqlite3.Xsqlite3_preupdate_new(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, *(*int32)(unsafe.Pointer(bp + 1476)), bp+1480)
 31938  __376:
 31939  	;
 31940  	if !(rc == SQLITE_OK) {
 31941  		goto __377
 31942  	}
 31943  	pObj1 = tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(bp + 1480))), -1)
 31944  	tcl.XTcl_SetObjResult(tls, interp, pObj1)
 31945  	goto __378
 31946  __377:
 31947  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+968, sqlite3.Xsqlite3_errmsg(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb), uintptr(0)))
 31948  	return TCL_ERROR
 31949  __378:
 31950  	;
 31951  __365:
 31952  	;
 31953  	goto __3
 31954  
 31955  __42:
 31956  __43:
 31957  __44:
 31958  	ppHook = uintptr(0)
 31959  	if !(*(*int32)(unsafe.Pointer(bp + 1016)) == 41) {
 31960  		goto __379
 31961  	}
 31962  	ppHook = pDb + 128
 31963  __379:
 31964  	;
 31965  	if !(*(*int32)(unsafe.Pointer(bp + 1016)) == 39) {
 31966  		goto __380
 31967  	}
 31968  	ppHook = pDb + 104
 31969  __380:
 31970  	;
 31971  	if !(*(*int32)(unsafe.Pointer(bp + 1016)) == 30) {
 31972  		goto __381
 31973  	}
 31974  	ppHook = pDb + 120
 31975  __381:
 31976  	;
 31977  	if !(objc > 3) {
 31978  		goto __382
 31979  	}
 31980  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+13249)
 31981  	return TCL_ERROR
 31982  __382:
 31983  	;
 31984  	DbHookCmd(tls, interp, pDb, func() uintptr {
 31985  		if objc == 3 {
 31986  			return *(*uintptr)(unsafe.Pointer(objv + 2*8))
 31987  		}
 31988  		return uintptr(0)
 31989  	}(), ppHook)
 31990  	goto __3
 31991  
 31992  __45:
 31993  	i5 = 2
 31994  __383:
 31995  	if !(i5 < objc) {
 31996  		goto __385
 31997  	}
 31998  	zArg = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(i5)*8)))
 31999  
 32000  	if !(libc.Xstrcmp(tls, zArg, ts+13297) == 0 && i5+1 < objc) {
 32001  		goto __386
 32002  	}
 32003  	i5++
 32004  	if !(tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(i5)*8)), pDb+228) != 0) {
 32005  		goto __388
 32006  	}
 32007  	return TCL_ERROR
 32008  __388:
 32009  	;
 32010  	goto __387
 32011  __386:
 32012  	if !(libc.Xstrcmp(tls, zArg, ts+13317) == 0) {
 32013  		goto __389
 32014  	}
 32015  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([100]uint8{})), bp+1488, ts+9889,
 32016  		libc.VaList(bp+984, func() uintptr {
 32017  			if (*SqliteDb)(unsafe.Pointer(pDb)).FstmtList != 0 {
 32018  				return (*SqlPreparedStmt)(unsafe.Pointer((*SqliteDb)(unsafe.Pointer(pDb)).FstmtList)).FpStmt
 32019  			}
 32020  			return uintptr(0)
 32021  		}()))
 32022  	tcl.XTcl_SetResult(tls, interp, bp+1488, uintptr(1))
 32023  	goto __390
 32024  __389:
 32025  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+992, ts+13332, zArg, uintptr(0)))
 32026  	return TCL_ERROR
 32027  __390:
 32028  	;
 32029  __387:
 32030  	;
 32031  	goto __384
 32032  __384:
 32033  	i5++
 32034  	goto __383
 32035  	goto __385
 32036  __385:
 32037  	;
 32038  	if !(i5 == 2) {
 32039  		goto __391
 32040  	}
 32041  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3_libversion(tls), uintptr(0))
 32042  __391:
 32043  	;
 32044  	goto __3
 32045  
 32046  __3:
 32047  	;
 32048  	return rc
 32049  }
 32050  
 32051  type DbConfigChoices = struct {
 32052  	FzName       uintptr
 32053  	Fop          int32
 32054  	F__ccgo_pad1 [4]byte
 32055  }
 32056  
 32057  var DB_strs = [43]uintptr{
 32058  	ts + 13351, ts + 13362, ts + 13369,
 32059  	ts + 13383, ts + 13388, ts + 13394,
 32060  	ts + 9490, ts + 13402, ts + 13410,
 32061  	ts + 13427, ts + 13439, ts + 13448,
 32062  	ts + 13455, ts + 13460, ts + 13472,
 32063  	ts + 13494, ts + 13504, ts + 4896,
 32064  	ts + 13516, ts + 13523, ts + 10868,
 32065  	ts + 13532, ts + 13542, ts + 13560,
 32066  	ts + 13570, ts + 13580, ts + 13590,
 32067  	ts + 9564, ts + 13598, ts + 13604,
 32068  	ts + 13612, ts + 13626, ts + 13636,
 32069  	ts + 13643, ts + 13651, ts + 13665,
 32070  	ts + 13671, ts + 13680, ts + 13692,
 32071  	ts + 13706, ts + 13718, ts + 13726,
 32072  	uintptr(0),
 32073  }
 32074  var aDbConfig = [16]DbConfigChoices{
 32075  	{FzName: ts + 13735, Fop: SQLITE_DBCONFIG_DEFENSIVE},
 32076  	{FzName: ts + 13745, Fop: SQLITE_DBCONFIG_DQS_DDL},
 32077  	{FzName: ts + 13753, Fop: SQLITE_DBCONFIG_DQS_DML},
 32078  	{FzName: ts + 13761, Fop: SQLITE_DBCONFIG_ENABLE_FKEY},
 32079  	{FzName: ts + 13773, Fop: SQLITE_DBCONFIG_ENABLE_QPSG},
 32080  	{FzName: ts + 13785, Fop: SQLITE_DBCONFIG_ENABLE_TRIGGER},
 32081  	{FzName: ts + 13800, Fop: SQLITE_DBCONFIG_ENABLE_VIEW},
 32082  	{FzName: ts + 13812, Fop: SQLITE_DBCONFIG_ENABLE_FTS3_TOKENIZER},
 32083  	{FzName: ts + 13827, Fop: SQLITE_DBCONFIG_LEGACY_ALTER_TABLE},
 32084  	{FzName: ts + 13846, Fop: SQLITE_DBCONFIG_LEGACY_FILE_FORMAT},
 32085  	{FzName: ts + 13865, Fop: SQLITE_DBCONFIG_ENABLE_LOAD_EXTENSION},
 32086  	{FzName: ts + 13880, Fop: SQLITE_DBCONFIG_NO_CKPT_ON_CLOSE},
 32087  	{FzName: ts + 13897, Fop: SQLITE_DBCONFIG_RESET_DATABASE},
 32088  	{FzName: ts + 13912, Fop: SQLITE_DBCONFIG_TRIGGER_EQP},
 32089  	{FzName: ts + 13924, Fop: SQLITE_DBCONFIG_TRUSTED_SCHEMA},
 32090  	{FzName: ts + 13939, Fop: SQLITE_DBCONFIG_WRITABLE_SCHEMA},
 32091  }
 32092  var TTYPE_strs = [5]uintptr{
 32093  	ts + 13955, ts + 13590, ts + 13965, ts + 9490, uintptr(0),
 32094  }
 32095  var TTYPE_strs1 = [4]uintptr{
 32096  	ts + 13969, ts + 13978, ts + 13988, uintptr(0),
 32097  }
 32098  var azSub = [6]uintptr{ts + 1965, ts + 13998, ts + 14004, ts + 14009, ts + 14013, uintptr(0)}
 32099  
 32100  func DbObjCmdAdaptor(tls *libc.TLS, cd uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 32101  	return tcl.XTcl_NRCallObjProc(tls, interp, *(*uintptr)(unsafe.Pointer(&struct {
 32102  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 32103  	}{DbObjCmd})), cd, objc, objv)
 32104  }
 32105  
 32106  func sqliteCmdUsage(tls *libc.TLS, interp uintptr, objv uintptr) int32 {
 32107  	tcl.XTcl_WrongNumArgs(tls, interp, 1, objv,
 32108  		ts+14017)
 32109  	return TCL_ERROR
 32110  }
 32111  
 32112  func DbMain(tls *libc.TLS, cd uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 32113  	bp := tls.Alloc(336)
 32114  	defer tls.Free(336)
 32115  
 32116  	var p uintptr
 32117  	var zArg uintptr
 32118  	var zErrMsg uintptr
 32119  	var i int32
 32120  	var zFile uintptr = uintptr(0)
 32121  	var zVfs uintptr = uintptr(0)
 32122  	var flags int32
 32123  	*(*int32)(unsafe.Pointer(bp + 112)) = 1
 32124  
 32125  	var rc int32
 32126  
 32127  	flags = SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE | SQLITE_OPEN_NOMUTEX
 32128  
 32129  	if objc == 1 {
 32130  		return sqliteCmdUsage(tls, interp, objv)
 32131  	}
 32132  	if objc == 2 {
 32133  		zArg = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)), uintptr(0))
 32134  		if libc.Xstrcmp(tls, zArg, ts+14163) == 0 {
 32135  			tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, sqlite3.Xsqlite3_libversion(tls), uintptr(0)))
 32136  			return TCL_OK
 32137  		}
 32138  		if libc.Xstrcmp(tls, zArg, ts+14172) == 0 {
 32139  			tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+16, sqlite3.Xsqlite3_sourceid(tls), uintptr(0)))
 32140  			return TCL_OK
 32141  		}
 32142  		if libc.Xstrcmp(tls, zArg, ts+14182) == 0 {
 32143  			tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+14193, uintptr(0)))
 32144  			return TCL_OK
 32145  		}
 32146  		if int32(*(*uint8)(unsafe.Pointer(zArg))) == '-' {
 32147  			return sqliteCmdUsage(tls, interp, objv)
 32148  		}
 32149  	}
 32150  	for i = 2; i < objc; i++ {
 32151  		zArg = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(i)*8)))
 32152  		if int32(*(*uint8)(unsafe.Pointer(zArg))) != '-' {
 32153  			if zFile != uintptr(0) {
 32154  				return sqliteCmdUsage(tls, interp, objv)
 32155  			}
 32156  			zFile = zArg
 32157  			continue
 32158  		}
 32159  		if i == objc-1 {
 32160  			return sqliteCmdUsage(tls, interp, objv)
 32161  		}
 32162  		i++
 32163  		if libc.Xstrcmp(tls, zArg, ts+14195) == 0 {
 32164  		} else if libc.Xstrcmp(tls, zArg, ts+14200) == 0 {
 32165  			zVfs = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(i)*8)))
 32166  		} else if libc.Xstrcmp(tls, zArg, ts+12434) == 0 {
 32167  			if tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(i)*8)), bp+88) != 0 {
 32168  				return TCL_ERROR
 32169  			}
 32170  			if *(*int32)(unsafe.Pointer(bp + 88)) != 0 {
 32171  				flags = flags & libc.CplInt32(SQLITE_OPEN_READWRITE|SQLITE_OPEN_CREATE)
 32172  				flags = flags | SQLITE_OPEN_READONLY
 32173  			} else {
 32174  				flags = flags & libc.CplInt32(SQLITE_OPEN_READONLY)
 32175  				flags = flags | SQLITE_OPEN_READWRITE
 32176  			}
 32177  		} else if libc.Xstrcmp(tls, zArg, ts+14205) == 0 {
 32178  			if tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(i)*8)), bp+92) != 0 {
 32179  				return TCL_ERROR
 32180  			}
 32181  			if *(*int32)(unsafe.Pointer(bp + 92)) != 0 && flags&SQLITE_OPEN_READONLY == 0 {
 32182  				flags = flags | SQLITE_OPEN_CREATE
 32183  			} else {
 32184  				flags = flags & libc.CplInt32(SQLITE_OPEN_CREATE)
 32185  			}
 32186  		} else if libc.Xstrcmp(tls, zArg, ts+14213) == 0 {
 32187  			if tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(i)*8)), bp+96) != 0 {
 32188  				return TCL_ERROR
 32189  			}
 32190  			if *(*int32)(unsafe.Pointer(bp + 96)) != 0 {
 32191  				flags = flags | SQLITE_OPEN_NOFOLLOW
 32192  			} else {
 32193  				flags = flags & libc.CplInt32(SQLITE_OPEN_NOFOLLOW)
 32194  			}
 32195  		} else if libc.Xstrcmp(tls, zArg, ts+14223) == 0 {
 32196  			if tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(i)*8)), bp+100) != 0 {
 32197  				return TCL_ERROR
 32198  			}
 32199  			if *(*int32)(unsafe.Pointer(bp + 100)) != 0 {
 32200  				flags = flags | SQLITE_OPEN_NOMUTEX
 32201  				flags = flags & libc.CplInt32(SQLITE_OPEN_FULLMUTEX)
 32202  			} else {
 32203  				flags = flags & libc.CplInt32(SQLITE_OPEN_NOMUTEX)
 32204  			}
 32205  		} else if libc.Xstrcmp(tls, zArg, ts+14232) == 0 {
 32206  			if tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(i)*8)), bp+104) != 0 {
 32207  				return TCL_ERROR
 32208  			}
 32209  			if *(*int32)(unsafe.Pointer(bp + 104)) != 0 {
 32210  				flags = flags | SQLITE_OPEN_FULLMUTEX
 32211  				flags = flags & libc.CplInt32(SQLITE_OPEN_NOMUTEX)
 32212  			} else {
 32213  				flags = flags & libc.CplInt32(SQLITE_OPEN_FULLMUTEX)
 32214  			}
 32215  		} else if libc.Xstrcmp(tls, zArg, ts+14243) == 0 {
 32216  			if tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(i)*8)), bp+108) != 0 {
 32217  				return TCL_ERROR
 32218  			}
 32219  			if *(*int32)(unsafe.Pointer(bp + 108)) != 0 {
 32220  				flags = flags | SQLITE_OPEN_URI
 32221  			} else {
 32222  				flags = flags & libc.CplInt32(SQLITE_OPEN_URI)
 32223  			}
 32224  		} else if libc.Xstrcmp(tls, zArg, ts+14248) == 0 {
 32225  			if tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(i)*8)), bp+112) != 0 {
 32226  				return TCL_ERROR
 32227  			}
 32228  		} else {
 32229  			tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+48, ts+12444, zArg, uintptr(0)))
 32230  			return TCL_ERROR
 32231  		}
 32232  	}
 32233  	zErrMsg = uintptr(0)
 32234  	p = tcl.XTcl_Alloc(tls, uint32(unsafe.Sizeof(SqliteDb{})))
 32235  	libc.Xmemset(tls, p, 0, uint64(unsafe.Sizeof(SqliteDb{})))
 32236  	if zFile == uintptr(0) {
 32237  		zFile = ts + 584
 32238  	}
 32239  	if *(*int32)(unsafe.Pointer(bp + 112)) != 0 {
 32240  		zFile = tcl.XTcl_TranslateFileName(tls, interp, zFile, bp+120)
 32241  	}
 32242  	rc = sqlite3.Xsqlite3_open_v2(tls, zFile, p, flags, zVfs)
 32243  	if *(*int32)(unsafe.Pointer(bp + 112)) != 0 {
 32244  		tcl.XTcl_DStringFree(tls, bp+120)
 32245  	}
 32246  	if (*SqliteDb)(unsafe.Pointer(p)).Fdb != 0 {
 32247  		if SQLITE_OK != sqlite3.Xsqlite3_errcode(tls, (*SqliteDb)(unsafe.Pointer(p)).Fdb) {
 32248  			zErrMsg = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp+72, sqlite3.Xsqlite3_errmsg(tls, (*SqliteDb)(unsafe.Pointer(p)).Fdb)))
 32249  			sqlite3.Xsqlite3_close(tls, (*SqliteDb)(unsafe.Pointer(p)).Fdb)
 32250  			(*SqliteDb)(unsafe.Pointer(p)).Fdb = uintptr(0)
 32251  		}
 32252  	} else {
 32253  		zErrMsg = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp+80, sqlite3.Xsqlite3_errstr(tls, rc)))
 32254  	}
 32255  	if (*SqliteDb)(unsafe.Pointer(p)).Fdb == uintptr(0) {
 32256  		tcl.XTcl_SetResult(tls, interp, zErrMsg, uintptr(1))
 32257  		tcl.XTcl_Free(tls, p)
 32258  		sqlite3.Xsqlite3_free(tls, zErrMsg)
 32259  		return TCL_ERROR
 32260  	}
 32261  	(*SqliteDb)(unsafe.Pointer(p)).FmaxStmt = NUM_PREPARED_STMTS
 32262  	(*SqliteDb)(unsafe.Pointer(p)).FopenFlags = flags & SQLITE_OPEN_URI
 32263  	(*SqliteDb)(unsafe.Pointer(p)).Finterp = interp
 32264  	zArg = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)), uintptr(0))
 32265  	if DbUseNre(tls) != 0 {
 32266  		tcl.XTcl_NRCreateCommand(tls, interp, zArg, *(*uintptr)(unsafe.Pointer(&struct {
 32267  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 32268  		}{DbObjCmdAdaptor})), *(*uintptr)(unsafe.Pointer(&struct {
 32269  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 32270  		}{DbObjCmd})),
 32271  			p, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{DbDeleteCmd})))
 32272  	} else {
 32273  		tcl.XTcl_CreateObjCommand(tls, interp, zArg, *(*uintptr)(unsafe.Pointer(&struct {
 32274  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 32275  		}{DbObjCmd})), p, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{DbDeleteCmd})))
 32276  	}
 32277  	(*SqliteDb)(unsafe.Pointer(p)).FnRef = 1
 32278  	return TCL_OK
 32279  }
 32280  
 32281  func Sqlite3_Init(tls *libc.TLS, interp uintptr) int32 {
 32282  	var rc int32
 32283  	if 1 != 0 {
 32284  		rc = TCL_OK
 32285  	} else {
 32286  		rc = TCL_ERROR
 32287  	}
 32288  	if rc == TCL_OK {
 32289  		tcl.XTcl_CreateObjCommand(tls, interp, ts+14267, *(*uintptr)(unsafe.Pointer(&struct {
 32290  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 32291  		}{DbMain})), uintptr(0), uintptr(0))
 32292  
 32293  		tcl.XTcl_CreateObjCommand(tls, interp, ts+14275, *(*uintptr)(unsafe.Pointer(&struct {
 32294  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 32295  		}{DbMain})), uintptr(0), uintptr(0))
 32296  		rc = tcl.XTcl_PkgProvideEx(tls, interp, ts+14267, ts+14282, uintptr(0))
 32297  	}
 32298  	return rc
 32299  }
 32300  
 32301  func Tclsqlite3_Init(tls *libc.TLS, interp uintptr) int32 {
 32302  	return Sqlite3_Init(tls, interp)
 32303  }
 32304  
 32305  func Sqlite3_Unload(tls *libc.TLS, interp uintptr, flags int32) int32 {
 32306  	return TCL_OK
 32307  }
 32308  
 32309  func Tclsqlite3_Unload(tls *libc.TLS, interp uintptr, flags int32) int32 {
 32310  	return TCL_OK
 32311  }
 32312  
 32313  func Sqlite3_SafeInit(tls *libc.TLS, interp uintptr) int32 {
 32314  	return TCL_ERROR
 32315  }
 32316  
 32317  func Sqlite3_SafeUnload(tls *libc.TLS, interp uintptr, flags int32) int32 {
 32318  	return TCL_ERROR
 32319  }
 32320  
 32321  func Sqlite_Init(tls *libc.TLS, interp uintptr) int32 {
 32322  	return Sqlite3_Init(tls, interp)
 32323  }
 32324  
 32325  func Tclsqlite_Init(tls *libc.TLS, interp uintptr) int32 {
 32326  	return Sqlite3_Init(tls, interp)
 32327  }
 32328  
 32329  func Sqlite_Unload(tls *libc.TLS, interp uintptr, flags int32) int32 {
 32330  	return TCL_OK
 32331  }
 32332  
 32333  func Tclsqlite_Unload(tls *libc.TLS, interp uintptr, flags int32) int32 {
 32334  	return TCL_OK
 32335  }
 32336  
 32337  func tclsh_main_loop(tls *libc.TLS) uintptr {
 32338  	return uintptr(unsafe.Pointer(&zMainloop))
 32339  }
 32340  
 32341  var zMainloop = *(*[431]uint8)(unsafe.Pointer(ts + 14289))
 32342  
 32343  func main1(tls *libc.TLS, argc int32, argv uintptr) int32 {
 32344  	bp := tls.Alloc(64)
 32345  	defer tls.Free(64)
 32346  
 32347  	var interp uintptr
 32348  	var i int32
 32349  	var zScript uintptr = uintptr(0)
 32350  
 32351  	if libc.Xgetenv(tls, ts+14720) != 0 {
 32352  		if libc.Xisatty(tls, 0) != 0 && libc.Xisatty(tls, 2) != 0 {
 32353  			libc.Xfprintf(tls, libc.Xstderr,
 32354  				ts+14739,
 32355  				libc.VaList(bp, libc.Xgetpid(tls)))
 32356  			libc.Xfgetc(tls, libc.Xstdin)
 32357  		} else {
 32358  			libc.Xraise(tls, SIGTRAP)
 32359  		}
 32360  	}
 32361  
 32362  	sqlite3.Xsqlite3_shutdown(tls)
 32363  
 32364  	tcl.XTcl_FindExecutable(tls, *(*uintptr)(unsafe.Pointer(argv)))
 32365  	tcl.XTcl_SetSystemEncoding(tls, uintptr(0), ts+14801)
 32366  	interp = tcl.XTcl_CreateInterp(tls)
 32367  	Sqlite3_Init(tls, interp)
 32368  
 32369  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([32]uint8{})), bp+32, ts+1333, libc.VaList(bp+8, argc-1))
 32370  	tcl.XTcl_SetVar2(tls, interp, ts+14807, uintptr(0), bp+32, TCL_GLOBAL_ONLY)
 32371  	tcl.XTcl_SetVar2(tls, interp, ts+14812, uintptr(0), *(*uintptr)(unsafe.Pointer(argv)), TCL_GLOBAL_ONLY)
 32372  	tcl.XTcl_SetVar2(tls, interp, ts+14818, uintptr(0), ts+584, TCL_GLOBAL_ONLY)
 32373  	for i = 1; i < argc; i++ {
 32374  		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)
 32375  	}
 32376  	zScript = sqlite3TestInit(tls, interp)
 32377  	if zScript == uintptr(0) {
 32378  		zScript = tclsh_main_loop(tls)
 32379  	}
 32380  	if tcl.XTcl_GlobalEval(tls, interp, zScript) != TCL_OK {
 32381  		var zInfo uintptr = tcl.XTcl_GetVar2(tls, interp, ts+14823, uintptr(0), TCL_GLOBAL_ONLY)
 32382  		if zInfo == uintptr(0) {
 32383  			zInfo = tcl.XTcl_GetStringResult(tls, interp)
 32384  		}
 32385  		libc.Xfprintf(tls, libc.Xstderr, ts+14833, libc.VaList(bp+16, *(*uintptr)(unsafe.Pointer(argv)), zInfo))
 32386  		return 1
 32387  	}
 32388  	return 0
 32389  }
 32390  
 32391  type sqlite3_value = sqlite3_value1
 32392  
 32393  type sqlite3_context = sqlite3_context1
 32394  
 32395  type _IO_cookie_io_functions_t = struct {
 32396  	Fread  uintptr
 32397  	Fwrite uintptr
 32398  	Fseek  uintptr
 32399  	Fclose uintptr
 32400  }
 32401  
 32402  type cookie_io_functions_t = _IO_cookie_io_functions_t
 32403  type off64_t = int64
 32404  type fpos64_t = _G_fpos64_t
 32405  type ino64_t = uint64
 32406  
 32407  type fd_set1 = struct{ Ffds_bits [16]int64 }
 32408  
 32409  type blkcnt64_t = int64
 32410  type fsblkcnt64_t = uint64
 32411  type fsfilcnt64_t = uint64
 32412  
 32413  type comparison_fn_t = uintptr
 32414  type PreUpdate = PreUpdate1
 32415  
 32416  type Vdbe = Vdbe1
 32417  
 32418  type Mem = sqlite3_value1
 32419  
 32420  type Op = VdbeOp1
 32421  
 32422  type Bool = uint32
 32423  
 32424  type AuxData1 = struct {
 32425  	FiAuxOp     int32
 32426  	FiAuxArg    int32
 32427  	FpAux       uintptr
 32428  	FxDeleteAux uintptr
 32429  	FpNextAux   uintptr
 32430  }
 32431  
 32432  type AuxData = AuxData1
 32433  
 32434  type VdbeCursor1 = struct {
 32435  	FeCurType       u8
 32436  	FiDb            i8
 32437  	FnullRow        u8
 32438  	FdeferredMoveto u8
 32439  	FisTable        u8
 32440  	F__ccgo_pad1    [3]byte
 32441  	FisEphemeral    uint8
 32442  	F__ccgo_pad2    [1]byte
 32443  	FseekHit        u16
 32444  	F__ccgo_pad3    [4]byte
 32445  	Fub             struct{ FpBtx uintptr }
 32446  	FseqCount       i64
 32447  	FcacheStatus    u32
 32448  	FseekResult     int32
 32449  	FpAltCursor     uintptr
 32450  	Fuc             struct{ FpCursor uintptr }
 32451  	FpKeyInfo       uintptr
 32452  	FiHdrOffset     u32
 32453  	FpgnoRoot       Pgno
 32454  	FnField         i16
 32455  	FnHdrParsed     u16
 32456  	F__ccgo_pad4    [4]byte
 32457  	FmovetoTarget   i64
 32458  	FaOffset        uintptr
 32459  	FaRow           uintptr
 32460  	FpayloadSize    u32
 32461  	FszRow          u32
 32462  	FaType          [1]u32
 32463  	F__ccgo_pad5    [4]byte
 32464  }
 32465  
 32466  type VdbeCursor = VdbeCursor1
 32467  
 32468  type VdbeFrame1 = struct {
 32469  	Fv         uintptr
 32470  	FpParent   uintptr
 32471  	FaOp       uintptr
 32472  	FanExec    uintptr
 32473  	FaMem      uintptr
 32474  	FapCsr     uintptr
 32475  	FaOnce     uintptr
 32476  	Ftoken     uintptr
 32477  	FlastRowid i64
 32478  	FpAuxData  uintptr
 32479  	FnCursor   int32
 32480  	Fpc        int32
 32481  	FnOp       int32
 32482  	FnMem      int32
 32483  	FnChildMem int32
 32484  	FnChildCsr int32
 32485  	FnChange   i64
 32486  	FnDbChange i64
 32487  }
 32488  
 32489  type VdbeFrame = VdbeFrame1
 32490  
 32491  type MemValue = struct{ Fr float64 }
 32492  
 32493  type bft = uint32
 32494  
 32495  type ScanStatus1 = struct {
 32496  	FaddrExplain int32
 32497  	FaddrLoop    int32
 32498  	FaddrVisit   int32
 32499  	FiSelectID   int32
 32500  	FnEst        LogEst
 32501  	F__ccgo_pad1 [6]byte
 32502  	FzName       uintptr
 32503  }
 32504  
 32505  type ScanStatus = ScanStatus1
 32506  
 32507  type DblquoteStr1 = struct {
 32508  	FpNextStr uintptr
 32509  	Fz        [8]uint8
 32510  }
 32511  
 32512  type DblquoteStr = DblquoteStr1
 32513  
 32514  type ValueList1 = struct {
 32515  	FpCsr uintptr
 32516  	FpOut uintptr
 32517  }
 32518  
 32519  type ValueList = ValueList1
 32520  
 32521  func testHexToInt(tls *libc.TLS, h int32) int32 {
 32522  	if h >= '0' && h <= '9' {
 32523  		return h - '0'
 32524  	} else if h >= 'a' && h <= 'f' {
 32525  		return h - 'a' + 10
 32526  	} else {
 32527  		return h - 'A' + 10
 32528  	}
 32529  	return int32(0)
 32530  }
 32531  
 32532  func sqlite3TestTextToPtr(tls *libc.TLS, z uintptr) uintptr {
 32533  	bp := tls.Alloc(20)
 32534  	defer tls.Free(20)
 32535  
 32536  	if int32(*(*uint8)(unsafe.Pointer(z))) == '0' && int32(*(*uint8)(unsafe.Pointer(z + 1))) == 'x' {
 32537  		z += uintptr(2)
 32538  	}
 32539  	*(*u64)(unsafe.Pointer(bp + 8)) = uint64(0)
 32540  	for *(*uint8)(unsafe.Pointer(z)) != 0 {
 32541  		*(*u64)(unsafe.Pointer(bp + 8)) = *(*u64)(unsafe.Pointer(bp + 8))<<4 + u64(testHexToInt(tls, int32(*(*uint8)(unsafe.Pointer(z)))))
 32542  		z++
 32543  	}
 32544  	if uint64(unsafe.Sizeof(uintptr(0))) == uint64(unsafe.Sizeof(u64(0))) {
 32545  		libc.Xmemcpy(tls, bp, bp+8, uint64(unsafe.Sizeof(uintptr(0))))
 32546  	} else {
 32547  		*(*u32)(unsafe.Pointer(bp + 16)) = u32(*(*u64)(unsafe.Pointer(bp + 8)))
 32548  		libc.Xmemcpy(tls, bp, bp+16, uint64(unsafe.Sizeof(uintptr(0))))
 32549  	}
 32550  	return *(*uintptr)(unsafe.Pointer(bp))
 32551  }
 32552  
 32553  func get_sqlite_pointer(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 32554  	bp := tls.Alloc(212)
 32555  	defer tls.Free(212)
 32556  
 32557  	var p uintptr
 32558  
 32559  	if objc != 2 {
 32560  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+14841)
 32561  		return TCL_ERROR
 32562  	}
 32563  	if !(tcl.XTcl_GetCommandInfo(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+48) != 0) {
 32564  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14859,
 32565  			tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), uintptr(0)))
 32566  		return TCL_ERROR
 32567  	}
 32568  	p = (*Tcl_CmdInfo)(unsafe.Pointer(bp + 48)).FobjClientData
 32569  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([100]uint8{})), bp+112, ts+9889, libc.VaList(bp+24, (*struct{ Fdb uintptr })(unsafe.Pointer(p)).Fdb))
 32570  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, bp+112, 0))
 32571  	return TCL_OK
 32572  }
 32573  
 32574  func getDbPointer(tls *libc.TLS, interp uintptr, zA uintptr, ppDb uintptr) int32 {
 32575  	bp := tls.Alloc(64)
 32576  	defer tls.Free(64)
 32577  
 32578  	var p uintptr
 32579  
 32580  	if tcl.XTcl_GetCommandInfo(tls, interp, zA, bp) != 0 {
 32581  		p = (*Tcl_CmdInfo)(unsafe.Pointer(bp)).FobjClientData
 32582  		*(*uintptr)(unsafe.Pointer(ppDb)) = (*struct{ Fdb uintptr })(unsafe.Pointer(p)).Fdb
 32583  	} else {
 32584  		*(*uintptr)(unsafe.Pointer(ppDb)) = sqlite3TestTextToPtr(tls, zA)
 32585  	}
 32586  	return TCL_OK
 32587  }
 32588  
 32589  func sqlite3TestErrCode(tls *libc.TLS, interp uintptr, db uintptr, rc int32) int32 {
 32590  	bp := tls.Alloc(248)
 32591  	defer tls.Free(248)
 32592  
 32593  	if sqlite3.Xsqlite3_threadsafe(tls) == 0 && rc != SQLITE_MISUSE && rc != SQLITE_OK &&
 32594  		sqlite3.Xsqlite3_errcode(tls, db) != rc {
 32595  		var r2 int32 = sqlite3.Xsqlite3_errcode(tls, db)
 32596  		sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([200]uint8{})), bp+48,
 32597  			ts+14879,
 32598  			libc.VaList(bp, sqlite3.Xsqlite3ErrName(tls, rc), rc, sqlite3.Xsqlite3ErrName(tls, r2), r2))
 32599  		tcl.XTcl_ResetResult(tls, interp)
 32600  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, bp+48, 0))
 32601  		return 1
 32602  	}
 32603  	return 0
 32604  }
 32605  
 32606  func getStmtPointer(tls *libc.TLS, interp uintptr, zArg uintptr, ppStmt uintptr) int32 {
 32607  	*(*uintptr)(unsafe.Pointer(ppStmt)) = sqlite3TestTextToPtr(tls, zArg)
 32608  	return TCL_OK
 32609  }
 32610  
 32611  func sqlite3TestMakePointerStr(tls *libc.TLS, interp uintptr, zPtr uintptr, p uintptr) int32 {
 32612  	bp := tls.Alloc(8)
 32613  	defer tls.Free(8)
 32614  
 32615  	sqlite3.Xsqlite3_snprintf(tls, 100, zPtr, ts+9889, libc.VaList(bp, p))
 32616  	return TCL_OK
 32617  }
 32618  
 32619  func exec_printf_cb(tls *libc.TLS, pArg uintptr, argc int32, argv uintptr, name uintptr) int32 {
 32620  	var str uintptr = pArg
 32621  	var i int32
 32622  
 32623  	if (*Tcl_DString)(unsafe.Pointer(str)).Flength == 0 {
 32624  		for i = 0; i < argc; i++ {
 32625  			tcl.XTcl_DStringAppendElement(tls, str, func() uintptr {
 32626  				if *(*uintptr)(unsafe.Pointer(name + uintptr(i)*8)) != 0 {
 32627  					return *(*uintptr)(unsafe.Pointer(name + uintptr(i)*8))
 32628  				}
 32629  				return ts + 5846
 32630  			}())
 32631  		}
 32632  	}
 32633  	for i = 0; i < argc; i++ {
 32634  		tcl.XTcl_DStringAppendElement(tls, str, func() uintptr {
 32635  			if *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8)) != 0 {
 32636  				return *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8))
 32637  			}
 32638  			return ts + 5846
 32639  		}())
 32640  	}
 32641  	return 0
 32642  }
 32643  
 32644  func test_io_trace(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 32645  	return TCL_OK
 32646  }
 32647  
 32648  func clang_sanitize_address(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 32649  	var res int32 = 0
 32650  	if res == 0 && libc.Xgetenv(tls, ts+14937) != uintptr(0) {
 32651  		res = 1
 32652  	}
 32653  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, res))
 32654  	return TCL_OK
 32655  }
 32656  
 32657  func test_exec_printf(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 32658  	bp := tls.Alloc(310)
 32659  	defer tls.Free(310)
 32660  
 32661  	var rc int32
 32662  	*(*uintptr)(unsafe.Pointer(bp + 272)) = uintptr(0)
 32663  	var zSql uintptr
 32664  
 32665  	if argc != 4 {
 32666  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 32667  			ts+14975, 0))
 32668  		return TCL_ERROR
 32669  	}
 32670  	if getDbPointer(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)), bp+48) != 0 {
 32671  		return TCL_ERROR
 32672  	}
 32673  	tcl.XTcl_DStringInit(tls, bp+56)
 32674  	zSql = sqlite3.Xsqlite3_mprintf(tls, *(*uintptr)(unsafe.Pointer(argv + 2*8)), libc.VaList(bp+32, *(*uintptr)(unsafe.Pointer(argv + 3*8))))
 32675  	rc = sqlite3.Xsqlite3_exec(tls, *(*uintptr)(unsafe.Pointer(bp + 48)), zSql, *(*uintptr)(unsafe.Pointer(&struct {
 32676  		f func(*libc.TLS, uintptr, int32, uintptr, uintptr) int32
 32677  	}{exec_printf_cb})), bp+56, bp+272)
 32678  	sqlite3.Xsqlite3_free(tls, zSql)
 32679  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([30]uint8{})), bp+280, ts+1333, libc.VaList(bp+40, rc))
 32680  	tcl.XTcl_AppendElement(tls, interp, bp+280)
 32681  	tcl.XTcl_AppendElement(tls, interp, func() uintptr {
 32682  		if rc == SQLITE_OK {
 32683  			return (*Tcl_DString)(unsafe.Pointer(bp + 56)).Fstring
 32684  		}
 32685  		return *(*uintptr)(unsafe.Pointer(bp + 272))
 32686  	}())
 32687  	tcl.XTcl_DStringFree(tls, bp+56)
 32688  	if *(*uintptr)(unsafe.Pointer(bp + 272)) != 0 {
 32689  		sqlite3.Xsqlite3_free(tls, *(*uintptr)(unsafe.Pointer(bp + 272)))
 32690  	}
 32691  	if sqlite3TestErrCode(tls, interp, *(*uintptr)(unsafe.Pointer(bp + 48)), rc) != 0 {
 32692  		return TCL_ERROR
 32693  	}
 32694  	return TCL_OK
 32695  }
 32696  
 32697  func test_exec_hex(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 32698  	bp := tls.Alloc(806)
 32699  	defer tls.Free(806)
 32700  
 32701  	var rc int32
 32702  	var i int32
 32703  	var j int32
 32704  	*(*uintptr)(unsafe.Pointer(bp + 768)) = uintptr(0)
 32705  	var zHex uintptr
 32706  
 32707  	if argc != 3 {
 32708  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 32709  			ts+14993, 0))
 32710  		return TCL_ERROR
 32711  	}
 32712  	if getDbPointer(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)), bp+40) != 0 {
 32713  		return TCL_ERROR
 32714  	}
 32715  	zHex = *(*uintptr)(unsafe.Pointer(argv + 2*8))
 32716  	i = libc.AssignInt32(&j, 0)
 32717  __1:
 32718  	if !(uint64(i) < uint64(unsafe.Sizeof([501]uint8{}))-uint64(1) && *(*uint8)(unsafe.Pointer(zHex + uintptr(j))) != 0) {
 32719  		goto __3
 32720  	}
 32721  	{
 32722  		if int32(*(*uint8)(unsafe.Pointer(zHex + uintptr(j)))) == '%' && *(*uint8)(unsafe.Pointer(zHex + uintptr(j+2))) != 0 && *(*uint8)(unsafe.Pointer(zHex + uintptr(j+2))) != 0 {
 32723  			*(*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))))))
 32724  			j = j + 2
 32725  		} else {
 32726  			*(*uint8)(unsafe.Pointer(bp + 48 + uintptr(i))) = *(*uint8)(unsafe.Pointer(zHex + uintptr(j)))
 32727  		}
 32728  
 32729  	}
 32730  	goto __2
 32731  __2:
 32732  	i++
 32733  	j++
 32734  	goto __1
 32735  	goto __3
 32736  __3:
 32737  	;
 32738  	*(*uint8)(unsafe.Pointer(bp + 48 + uintptr(i))) = uint8(0)
 32739  	tcl.XTcl_DStringInit(tls, bp+552)
 32740  	rc = sqlite3.Xsqlite3_exec(tls, *(*uintptr)(unsafe.Pointer(bp + 40)), bp+48, *(*uintptr)(unsafe.Pointer(&struct {
 32741  		f func(*libc.TLS, uintptr, int32, uintptr, uintptr) int32
 32742  	}{exec_printf_cb})), bp+552, bp+768)
 32743  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([30]uint8{})), bp+776, ts+1333, libc.VaList(bp+32, rc))
 32744  	tcl.XTcl_AppendElement(tls, interp, bp+776)
 32745  	tcl.XTcl_AppendElement(tls, interp, func() uintptr {
 32746  		if rc == SQLITE_OK {
 32747  			return (*Tcl_DString)(unsafe.Pointer(bp + 552)).Fstring
 32748  		}
 32749  		return *(*uintptr)(unsafe.Pointer(bp + 768))
 32750  	}())
 32751  	tcl.XTcl_DStringFree(tls, bp+552)
 32752  	if *(*uintptr)(unsafe.Pointer(bp + 768)) != 0 {
 32753  		sqlite3.Xsqlite3_free(tls, *(*uintptr)(unsafe.Pointer(bp + 768)))
 32754  	}
 32755  	if sqlite3TestErrCode(tls, interp, *(*uintptr)(unsafe.Pointer(bp + 40)), rc) != 0 {
 32756  		return TCL_ERROR
 32757  	}
 32758  	return TCL_OK
 32759  }
 32760  
 32761  func db_enter(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 32762  	bp := tls.Alloc(40)
 32763  	defer tls.Free(40)
 32764  
 32765  	if argc != 2 {
 32766  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 32767  			ts+15001, 0))
 32768  		return TCL_ERROR
 32769  	}
 32770  	if getDbPointer(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)), bp+32) != 0 {
 32771  		return TCL_ERROR
 32772  	}
 32773  	sqlite3.Xsqlite3_mutex_enter(tls, (*sqlite31)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 32)))).Fmutex)
 32774  	return TCL_OK
 32775  }
 32776  
 32777  func db_leave(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 32778  	bp := tls.Alloc(40)
 32779  	defer tls.Free(40)
 32780  
 32781  	if argc != 2 {
 32782  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 32783  			ts+15001, 0))
 32784  		return TCL_ERROR
 32785  	}
 32786  	if getDbPointer(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)), bp+32) != 0 {
 32787  		return TCL_ERROR
 32788  	}
 32789  	sqlite3.Xsqlite3_mutex_leave(tls, (*sqlite31)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 32)))).Fmutex)
 32790  	return TCL_OK
 32791  }
 32792  
 32793  func test_exec(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 32794  	bp := tls.Alloc(310)
 32795  	defer tls.Free(310)
 32796  
 32797  	var rc int32
 32798  	*(*uintptr)(unsafe.Pointer(bp + 272)) = uintptr(0)
 32799  	var zSql uintptr
 32800  	var i int32
 32801  	var j int32
 32802  
 32803  	if argc != 3 {
 32804  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 32805  			ts+15005, 0))
 32806  		return TCL_ERROR
 32807  	}
 32808  	if getDbPointer(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)), bp+48) != 0 {
 32809  		return TCL_ERROR
 32810  	}
 32811  	tcl.XTcl_DStringInit(tls, bp+56)
 32812  	zSql = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp+32, *(*uintptr)(unsafe.Pointer(argv + 2*8))))
 32813  	for i = libc.AssignInt32(&j, 0); *(*uint8)(unsafe.Pointer(zSql + uintptr(i))) != 0; {
 32814  		if int32(*(*uint8)(unsafe.Pointer(zSql + uintptr(i)))) == '%' {
 32815  			*(*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))))))
 32816  			i = i + 3
 32817  		} else {
 32818  			*(*uint8)(unsafe.Pointer(zSql + uintptr(libc.PostIncInt32(&j, 1)))) = *(*uint8)(unsafe.Pointer(zSql + uintptr(libc.PostIncInt32(&i, 1))))
 32819  		}
 32820  	}
 32821  	*(*uint8)(unsafe.Pointer(zSql + uintptr(j))) = uint8(0)
 32822  	rc = sqlite3.Xsqlite3_exec(tls, *(*uintptr)(unsafe.Pointer(bp + 48)), zSql, *(*uintptr)(unsafe.Pointer(&struct {
 32823  		f func(*libc.TLS, uintptr, int32, uintptr, uintptr) int32
 32824  	}{exec_printf_cb})), bp+56, bp+272)
 32825  	sqlite3.Xsqlite3_free(tls, zSql)
 32826  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([30]uint8{})), bp+280, ts+1333, libc.VaList(bp+40, rc))
 32827  	tcl.XTcl_AppendElement(tls, interp, bp+280)
 32828  	tcl.XTcl_AppendElement(tls, interp, func() uintptr {
 32829  		if rc == SQLITE_OK {
 32830  			return (*Tcl_DString)(unsafe.Pointer(bp + 56)).Fstring
 32831  		}
 32832  		return *(*uintptr)(unsafe.Pointer(bp + 272))
 32833  	}())
 32834  	tcl.XTcl_DStringFree(tls, bp+56)
 32835  	if *(*uintptr)(unsafe.Pointer(bp + 272)) != 0 {
 32836  		sqlite3.Xsqlite3_free(tls, *(*uintptr)(unsafe.Pointer(bp + 272)))
 32837  	}
 32838  	if sqlite3TestErrCode(tls, interp, *(*uintptr)(unsafe.Pointer(bp + 48)), rc) != 0 {
 32839  		return TCL_ERROR
 32840  	}
 32841  	return TCL_OK
 32842  }
 32843  
 32844  func test_exec_nr(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 32845  	bp := tls.Alloc(48)
 32846  	defer tls.Free(48)
 32847  
 32848  	var rc int32
 32849  	*(*uintptr)(unsafe.Pointer(bp + 40)) = uintptr(0)
 32850  	if argc != 3 {
 32851  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 32852  			ts+15005, 0))
 32853  		return TCL_ERROR
 32854  	}
 32855  	if getDbPointer(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)), bp+32) != 0 {
 32856  		return TCL_ERROR
 32857  	}
 32858  	rc = sqlite3.Xsqlite3_exec(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), *(*uintptr)(unsafe.Pointer(argv + 2*8)), uintptr(0), uintptr(0), bp+40)
 32859  	if sqlite3TestErrCode(tls, interp, *(*uintptr)(unsafe.Pointer(bp + 32)), rc) != 0 {
 32860  		return TCL_ERROR
 32861  	}
 32862  	return TCL_OK
 32863  }
 32864  
 32865  func test_mprintf_z(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 32866  	bp := tls.Alloc(40)
 32867  	defer tls.Free(40)
 32868  
 32869  	var zResult uintptr = uintptr(0)
 32870  	var i int32
 32871  
 32872  	for i = 2; i < argc && (i == 2 || zResult != 0); i++ {
 32873  		zResult = sqlite3.Xsqlite3_mprintf(tls, ts+15013, libc.VaList(bp, zResult, *(*uintptr)(unsafe.Pointer(argv + 1*8)), *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8))))
 32874  	}
 32875  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+24, zResult, 0))
 32876  	sqlite3.Xsqlite3_free(tls, zResult)
 32877  	return TCL_OK
 32878  }
 32879  
 32880  func test_mprintf_n(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 32881  	bp := tls.Alloc(20)
 32882  	defer tls.Free(20)
 32883  
 32884  	var zStr uintptr
 32885  	*(*int32)(unsafe.Pointer(bp + 16)) = 0
 32886  	zStr = sqlite3.Xsqlite3_mprintf(tls, ts+15020, libc.VaList(bp, *(*uintptr)(unsafe.Pointer(argv + 1*8)), bp+16))
 32887  	sqlite3.Xsqlite3_free(tls, zStr)
 32888  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 16))))
 32889  	return TCL_OK
 32890  }
 32891  
 32892  func test_snprintf_int(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 32893  	bp := tls.Alloc(124)
 32894  	defer tls.Free(124)
 32895  
 32896  	var n int32 = libc.Xatoi(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 32897  	var zFormat uintptr = *(*uintptr)(unsafe.Pointer(argv + 2*8))
 32898  	var a1 int32 = libc.Xatoi(tls, *(*uintptr)(unsafe.Pointer(argv + 3*8)))
 32899  	if uint64(n) > uint64(unsafe.Sizeof([100]uint8{})) {
 32900  		n = int32(unsafe.Sizeof([100]uint8{}))
 32901  	}
 32902  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([100]uint8{})), bp+24, ts+15025, 0)
 32903  	sqlite3.Xsqlite3_snprintf(tls, n, bp+24, zFormat, libc.VaList(bp, a1))
 32904  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+8, bp+24, 0))
 32905  	return TCL_OK
 32906  }
 32907  
 32908  func test_get_table_printf(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 32909  	bp := tls.Alloc(350)
 32910  	defer tls.Free(350)
 32911  
 32912  	var rc int32
 32913  	*(*uintptr)(unsafe.Pointer(bp + 304)) = uintptr(0)
 32914  	*(*int32)(unsafe.Pointer(bp + 312)) = 0
 32915  	*(*int32)(unsafe.Pointer(bp + 316)) = 0
 32916  
 32917  	var i int32
 32918  
 32919  	var zSql uintptr
 32920  	*(*int32)(unsafe.Pointer(bp + 64)) = -1
 32921  	if argc == 5 {
 32922  		if tcl.XTcl_GetInt(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 4*8)), bp+64) != 0 {
 32923  			return TCL_ERROR
 32924  		}
 32925  	}
 32926  	if argc != 4 && argc != 5 {
 32927  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 32928  			ts+15052, 0))
 32929  		return TCL_ERROR
 32930  	}
 32931  	if getDbPointer(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)), bp+72) != 0 {
 32932  		return TCL_ERROR
 32933  	}
 32934  	tcl.XTcl_DStringInit(tls, bp+80)
 32935  	zSql = sqlite3.Xsqlite3_mprintf(tls, *(*uintptr)(unsafe.Pointer(argv + 2*8)), libc.VaList(bp+32, *(*uintptr)(unsafe.Pointer(argv + 3*8))))
 32936  	if argc == 5 {
 32937  		rc = sqlite3.Xsqlite3_get_table(tls, *(*uintptr)(unsafe.Pointer(bp + 72)), zSql, bp+296, uintptr(0), uintptr(0), bp+304)
 32938  	} else {
 32939  		rc = sqlite3.Xsqlite3_get_table(tls, *(*uintptr)(unsafe.Pointer(bp + 72)), zSql, bp+296, bp+312, bp+316, bp+304)
 32940  		*(*int32)(unsafe.Pointer(bp + 64)) = (*(*int32)(unsafe.Pointer(bp + 312)) + 1) * *(*int32)(unsafe.Pointer(bp + 316))
 32941  	}
 32942  	sqlite3.Xsqlite3_free(tls, zSql)
 32943  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([30]uint8{})), bp+320, ts+1333, libc.VaList(bp+40, rc))
 32944  	tcl.XTcl_AppendElement(tls, interp, bp+320)
 32945  	if rc == SQLITE_OK {
 32946  		if argc == 4 {
 32947  			sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([30]uint8{})), bp+320, ts+1333, libc.VaList(bp+48, *(*int32)(unsafe.Pointer(bp + 312))))
 32948  			tcl.XTcl_AppendElement(tls, interp, bp+320)
 32949  			sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([30]uint8{})), bp+320, ts+1333, libc.VaList(bp+56, *(*int32)(unsafe.Pointer(bp + 316))))
 32950  			tcl.XTcl_AppendElement(tls, interp, bp+320)
 32951  		}
 32952  		for i = 0; i < *(*int32)(unsafe.Pointer(bp + 64)); i++ {
 32953  			tcl.XTcl_AppendElement(tls, interp, func() uintptr {
 32954  				if *(*uintptr)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 296)) + uintptr(i)*8)) != 0 {
 32955  					return *(*uintptr)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 296)) + uintptr(i)*8))
 32956  				}
 32957  				return ts + 5846
 32958  			}())
 32959  		}
 32960  	} else {
 32961  		tcl.XTcl_AppendElement(tls, interp, *(*uintptr)(unsafe.Pointer(bp + 304)))
 32962  	}
 32963  	sqlite3.Xsqlite3_free_table(tls, *(*uintptr)(unsafe.Pointer(bp + 296)))
 32964  	if *(*uintptr)(unsafe.Pointer(bp + 304)) != 0 {
 32965  		sqlite3.Xsqlite3_free(tls, *(*uintptr)(unsafe.Pointer(bp + 304)))
 32966  	}
 32967  	if sqlite3TestErrCode(tls, interp, *(*uintptr)(unsafe.Pointer(bp + 72)), rc) != 0 {
 32968  		return TCL_ERROR
 32969  	}
 32970  	return TCL_OK
 32971  }
 32972  
 32973  func test_last_rowid(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 32974  	bp := tls.Alloc(94)
 32975  	defer tls.Free(94)
 32976  
 32977  	if argc != 2 {
 32978  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)), ts+15078, 0))
 32979  		return TCL_ERROR
 32980  	}
 32981  	if getDbPointer(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)), bp+56) != 0 {
 32982  		return TCL_ERROR
 32983  	}
 32984  	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)))))
 32985  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+40, bp+64, 0))
 32986  	return SQLITE_OK
 32987  }
 32988  
 32989  func test_key(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 32990  	return TCL_OK
 32991  }
 32992  
 32993  func test_rekey(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 32994  	return TCL_OK
 32995  }
 32996  
 32997  func sqlite_test_close(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 32998  	bp := tls.Alloc(40)
 32999  	defer tls.Free(40)
 33000  
 33001  	var rc int32
 33002  	if argc != 2 {
 33003  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 33004  			ts+15083, 0))
 33005  		return TCL_ERROR
 33006  	}
 33007  	if getDbPointer(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)), bp+32) != 0 {
 33008  		return TCL_ERROR
 33009  	}
 33010  	rc = sqlite3.Xsqlite3_close(tls, *(*uintptr)(unsafe.Pointer(bp + 32)))
 33011  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 33012  	return TCL_OK
 33013  }
 33014  
 33015  func sqlite_test_close_v2(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 33016  	bp := tls.Alloc(40)
 33017  	defer tls.Free(40)
 33018  
 33019  	var rc int32
 33020  	if argc != 2 {
 33021  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 33022  			ts+15083, 0))
 33023  		return TCL_ERROR
 33024  	}
 33025  	if getDbPointer(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)), bp+32) != 0 {
 33026  		return TCL_ERROR
 33027  	}
 33028  	rc = sqlite3.Xsqlite3_close_v2(tls, *(*uintptr)(unsafe.Pointer(bp + 32)))
 33029  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 33030  	return TCL_OK
 33031  }
 33032  
 33033  func t1_ifnullFunc(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 33034  	var i int32
 33035  	for i = 0; i < argc; i++ {
 33036  		if SQLITE_NULL != sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8))) {
 33037  			var n int32 = sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8)))
 33038  			sqlite3.Xsqlite3_result_text(tls, context, sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8))),
 33039  				n, libc.UintptrFromInt32(-1))
 33040  			break
 33041  		}
 33042  	}
 33043  }
 33044  
 33045  func hex8Func(tls *libc.TLS, p uintptr, argc int32, argv uintptr) {
 33046  	bp := tls.Alloc(208)
 33047  	defer tls.Free(208)
 33048  
 33049  	var z uintptr
 33050  	var i int32
 33051  
 33052  	z = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 33053  	for i = 0; uint64(i) < uint64(unsafe.Sizeof([200]uint8{}))/uint64(2)-uint64(2) && *(*uint8)(unsafe.Pointer(z + uintptr(i))) != 0; i++ {
 33054  		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))))))
 33055  	}
 33056  	*(*uint8)(unsafe.Pointer(bp + 8 + uintptr(i*2))) = uint8(0)
 33057  	sqlite3.Xsqlite3_result_text(tls, p, bp+8, -1, libc.UintptrFromInt32(-1))
 33058  }
 33059  
 33060  func hex16Func(tls *libc.TLS, p uintptr, argc int32, argv uintptr) {
 33061  	bp := tls.Alloc(408)
 33062  	defer tls.Free(408)
 33063  
 33064  	var z uintptr
 33065  	var i int32
 33066  
 33067  	z = sqlite3.Xsqlite3_value_text16(tls, *(*uintptr)(unsafe.Pointer(argv)))
 33068  	for i = 0; uint64(i) < uint64(unsafe.Sizeof([400]uint8{}))/uint64(4)-uint64(4) && *(*uint16)(unsafe.Pointer(z + uintptr(i)*2)) != 0; i++ {
 33069  		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))
 33070  	}
 33071  	*(*uint8)(unsafe.Pointer(bp + 8 + uintptr(i*4))) = uint8(0)
 33072  	sqlite3.Xsqlite3_result_text(tls, p, bp+8, -1, libc.UintptrFromInt32(-1))
 33073  }
 33074  
 33075  type dstr = struct {
 33076  	FnAlloc int32
 33077  	FnUsed  int32
 33078  	Fz      uintptr
 33079  }
 33080  
 33081  func dstrAppend(tls *libc.TLS, p uintptr, z uintptr, divider int32) {
 33082  	var n int32 = int32(libc.Xstrlen(tls, z))
 33083  	if (*dstr)(unsafe.Pointer(p)).FnUsed+n+2 > (*dstr)(unsafe.Pointer(p)).FnAlloc {
 33084  		var zNew uintptr
 33085  		(*dstr)(unsafe.Pointer(p)).FnAlloc = (*dstr)(unsafe.Pointer(p)).FnAlloc*2 + n + 200
 33086  		zNew = sqlite3.Xsqlite3_realloc(tls, (*dstr)(unsafe.Pointer(p)).Fz, (*dstr)(unsafe.Pointer(p)).FnAlloc)
 33087  		if zNew == uintptr(0) {
 33088  			sqlite3.Xsqlite3_free(tls, (*dstr)(unsafe.Pointer(p)).Fz)
 33089  			libc.Xmemset(tls, p, 0, uint64(unsafe.Sizeof(dstr{})))
 33090  			return
 33091  		}
 33092  		(*dstr)(unsafe.Pointer(p)).Fz = zNew
 33093  	}
 33094  	if divider != 0 && (*dstr)(unsafe.Pointer(p)).FnUsed > 0 {
 33095  		*(*uint8)(unsafe.Pointer((*dstr)(unsafe.Pointer(p)).Fz + uintptr(libc.PostIncInt32(&(*dstr)(unsafe.Pointer(p)).FnUsed, 1)))) = uint8(divider)
 33096  	}
 33097  	libc.Xmemcpy(tls, (*dstr)(unsafe.Pointer(p)).Fz+uintptr((*dstr)(unsafe.Pointer(p)).FnUsed), z, uint64(n+1))
 33098  	*(*int32)(unsafe.Pointer(p + 4)) += n
 33099  }
 33100  
 33101  func execFuncCallback(tls *libc.TLS, pData uintptr, argc int32, argv uintptr, NotUsed uintptr) int32 {
 33102  	var p uintptr = pData
 33103  	var i int32
 33104  	for i = 0; i < argc; i++ {
 33105  		if *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8)) == uintptr(0) {
 33106  			dstrAppend(tls, p, ts+5846, ' ')
 33107  		} else {
 33108  			dstrAppend(tls, p, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8)), ' ')
 33109  		}
 33110  	}
 33111  	return 0
 33112  }
 33113  
 33114  func sqlite3ExecFunc(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 33115  	bp := tls.Alloc(16)
 33116  	defer tls.Free(16)
 33117  
 33118  	libc.Xmemset(tls, bp, 0, uint64(unsafe.Sizeof(dstr{})))
 33119  	sqlite3.Xsqlite3_exec(tls, sqlite3.Xsqlite3_user_data(tls, context),
 33120  		sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv))),
 33121  		*(*uintptr)(unsafe.Pointer(&struct {
 33122  			f func(*libc.TLS, uintptr, int32, uintptr, uintptr) int32
 33123  		}{execFuncCallback})), bp, uintptr(0))
 33124  	sqlite3.Xsqlite3_result_text(tls, context, (*dstr)(unsafe.Pointer(bp)).Fz, (*dstr)(unsafe.Pointer(bp)).FnUsed, libc.UintptrFromInt32(-1))
 33125  	sqlite3.Xsqlite3_free(tls, (*dstr)(unsafe.Pointer(bp)).Fz)
 33126  }
 33127  
 33128  func tkt2213Function(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 33129  	var nText int32
 33130  	var zText1 uintptr
 33131  	var zText2 uintptr
 33132  	var zText3 uintptr
 33133  
 33134  	nText = sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(argv)))
 33135  	zText1 = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 33136  	zText2 = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 33137  	zText3 = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 33138  
 33139  	if zText1 != zText2 || zText2 != zText3 {
 33140  		sqlite3.Xsqlite3_result_error(tls, context, ts+15099, -1)
 33141  	} else {
 33142  		var zCopy uintptr = sqlite3.Xsqlite3_malloc(tls, nText)
 33143  		libc.Xmemcpy(tls, zCopy, zText1, uint64(nText))
 33144  		sqlite3.Xsqlite3_result_text(tls, context, zCopy, nText, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{sqlite3.Xsqlite3_free})))
 33145  	}
 33146  }
 33147  
 33148  func ptrChngFunction(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 33149  	var p1 uintptr
 33150  	var p2 uintptr
 33151  	var zCmd uintptr
 33152  	if argc != 4 {
 33153  		return
 33154  	}
 33155  	zCmd = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 33156  	if zCmd == uintptr(0) {
 33157  		return
 33158  	}
 33159  	if libc.Xstrcmp(tls, zCmd, ts+12764) == 0 {
 33160  		p1 = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 33161  	} else if libc.Xstrcmp(tls, zCmd, ts+15120) == 0 {
 33162  		p1 = sqlite3.Xsqlite3_value_text16(tls, *(*uintptr)(unsafe.Pointer(argv)))
 33163  	} else if libc.Xstrcmp(tls, zCmd, ts+12769) == 0 {
 33164  		p1 = sqlite3.Xsqlite3_value_blob(tls, *(*uintptr)(unsafe.Pointer(argv)))
 33165  	} else {
 33166  		return
 33167  	}
 33168  	zCmd = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + 2*8)))
 33169  	if zCmd == uintptr(0) {
 33170  		return
 33171  	}
 33172  	if libc.Xstrcmp(tls, zCmd, ts+15127) == 0 {
 33173  		sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(argv)))
 33174  	} else if libc.Xstrcmp(tls, zCmd, ts+15133) == 0 {
 33175  		sqlite3.Xsqlite3_value_bytes16(tls, *(*uintptr)(unsafe.Pointer(argv)))
 33176  	} else if libc.Xstrcmp(tls, zCmd, ts+15141) == 0 {
 33177  	} else {
 33178  		return
 33179  	}
 33180  	zCmd = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + 3*8)))
 33181  	if zCmd == uintptr(0) {
 33182  		return
 33183  	}
 33184  	if libc.Xstrcmp(tls, zCmd, ts+12764) == 0 {
 33185  		p2 = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 33186  	} else if libc.Xstrcmp(tls, zCmd, ts+15120) == 0 {
 33187  		p2 = sqlite3.Xsqlite3_value_text16(tls, *(*uintptr)(unsafe.Pointer(argv)))
 33188  	} else if libc.Xstrcmp(tls, zCmd, ts+12769) == 0 {
 33189  		p2 = sqlite3.Xsqlite3_value_blob(tls, *(*uintptr)(unsafe.Pointer(argv)))
 33190  	} else {
 33191  		return
 33192  	}
 33193  	sqlite3.Xsqlite3_result_int(tls, context, libc.Bool32(p1 != p2))
 33194  }
 33195  
 33196  func nondeterministicFunction(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 33197  	sqlite3.Xsqlite3_result_int(tls, context, libc.PostIncInt32(&cnt, 1))
 33198  }
 33199  
 33200  var cnt int32 = 0
 33201  
 33202  func intrealFunction(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 33203  	bp := tls.Alloc(8)
 33204  	defer tls.Free(8)
 33205  
 33206  	var v sqlite3_int64 = sqlite3.Xsqlite3_value_int64(tls, *(*uintptr)(unsafe.Pointer(argv)))
 33207  	sqlite3.Xsqlite3_result_int64(tls, context, v)
 33208  	sqlite3.Xsqlite3_test_control(tls, SQLITE_TESTCTRL_RESULT_INTREAL, libc.VaList(bp, context))
 33209  }
 33210  
 33211  func test_create_function(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 33212  	bp := tls.Alloc(40)
 33213  	defer tls.Free(40)
 33214  
 33215  	var rc int32
 33216  
 33217  	if argc != 2 {
 33218  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 33219  			ts+15078, 0))
 33220  		return TCL_ERROR
 33221  	}
 33222  	if getDbPointer(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)), bp+32) != 0 {
 33223  		return TCL_ERROR
 33224  	}
 33225  	rc = sqlite3.Xsqlite3_create_function(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), ts+15146, -1, SQLITE_UTF8, uintptr(0),
 33226  		*(*uintptr)(unsafe.Pointer(&struct {
 33227  			f func(*libc.TLS, uintptr, int32, uintptr)
 33228  		}{t1_ifnullFunc})), uintptr(0), uintptr(0))
 33229  	if rc == SQLITE_OK {
 33230  		rc = sqlite3.Xsqlite3_create_function(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), ts+15157, 1, SQLITE_UTF8|SQLITE_DETERMINISTIC,
 33231  			uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 33232  				f func(*libc.TLS, uintptr, int32, uintptr)
 33233  			}{hex8Func})), uintptr(0), uintptr(0))
 33234  	}
 33235  	if rc == SQLITE_OK {
 33236  		rc = sqlite3.Xsqlite3_create_function(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), ts+15162, 1, SQLITE_UTF16|SQLITE_DETERMINISTIC,
 33237  			uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 33238  				f func(*libc.TLS, uintptr, int32, uintptr)
 33239  			}{hex16Func})), uintptr(0), uintptr(0))
 33240  	}
 33241  	if rc == SQLITE_OK {
 33242  		rc = sqlite3.Xsqlite3_create_function(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), ts+15168, 1, SQLITE_ANY, uintptr(0),
 33243  			*(*uintptr)(unsafe.Pointer(&struct {
 33244  				f func(*libc.TLS, uintptr, int32, uintptr)
 33245  			}{tkt2213Function})), uintptr(0), uintptr(0))
 33246  	}
 33247  	if rc == SQLITE_OK {
 33248  		rc = sqlite3.Xsqlite3_create_function(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), ts+15180, 4, SQLITE_ANY, uintptr(0),
 33249  			*(*uintptr)(unsafe.Pointer(&struct {
 33250  				f func(*libc.TLS, uintptr, int32, uintptr)
 33251  			}{ptrChngFunction})), uintptr(0), uintptr(0))
 33252  	}
 33253  
 33254  	if rc == SQLITE_OK {
 33255  		rc = sqlite3.Xsqlite3_create_function(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), ts+15195, -1, SQLITE_UTF8,
 33256  			uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 33257  				f func(*libc.TLS, uintptr, int32, uintptr)
 33258  			}{nondeterministicFunction})), uintptr(0), uintptr(0))
 33259  	}
 33260  	if rc == SQLITE_OK {
 33261  		rc = sqlite3.Xsqlite3_create_function(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), ts+15204, -1, SQLITE_UTF8|SQLITE_DETERMINISTIC,
 33262  			uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 33263  				f func(*libc.TLS, uintptr, int32, uintptr)
 33264  			}{nondeterministicFunction})), uintptr(0), uintptr(0))
 33265  	}
 33266  
 33267  	if rc == SQLITE_OK {
 33268  		rc = sqlite3.Xsqlite3_create_function(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), ts+15213, 1, SQLITE_UTF8,
 33269  			uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 33270  				f func(*libc.TLS, uintptr, int32, uintptr)
 33271  			}{intrealFunction})), uintptr(0), uintptr(0))
 33272  	}
 33273  
 33274  	if rc == SQLITE_OK {
 33275  		var zUtf16 uintptr
 33276  		var pVal uintptr
 33277  		sqlite3.Xsqlite3_mutex_enter(tls, (*sqlite31)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 32)))).Fmutex)
 33278  		pVal = sqlite3.Xsqlite3ValueNew(tls, *(*uintptr)(unsafe.Pointer(bp + 32)))
 33279  		sqlite3.Xsqlite3ValueSetStr(tls, pVal, -1, ts+15221, uint8(SQLITE_UTF8), uintptr(0))
 33280  		zUtf16 = sqlite3.Xsqlite3ValueText(tls, pVal, func() uint8 {
 33281  			if int32(*(*uint8)(unsafe.Pointer(uintptr(unsafe.Pointer(&sqlite3.Xsqlite3one))))) == 0 {
 33282  				return uint8(SQLITE_UTF16BE)
 33283  			}
 33284  			return uint8(SQLITE_UTF16LE)
 33285  		}())
 33286  		if (*sqlite31)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 32)))).FmallocFailed != 0 {
 33287  			rc = SQLITE_NOMEM
 33288  		} else {
 33289  			rc = sqlite3.Xsqlite3_create_function16(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), zUtf16,
 33290  				1, SQLITE_UTF16, *(*uintptr)(unsafe.Pointer(bp + 32)), *(*uintptr)(unsafe.Pointer(&struct {
 33291  					f func(*libc.TLS, uintptr, int32, uintptr)
 33292  				}{sqlite3ExecFunc})), uintptr(0), uintptr(0))
 33293  		}
 33294  		sqlite3.Xsqlite3ValueFree(tls, pVal)
 33295  		sqlite3.Xsqlite3_mutex_leave(tls, (*sqlite31)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 32)))).Fmutex)
 33296  	}
 33297  
 33298  	if sqlite3TestErrCode(tls, interp, *(*uintptr)(unsafe.Pointer(bp + 32)), rc) != 0 {
 33299  		return TCL_ERROR
 33300  	}
 33301  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 33302  	return TCL_OK
 33303  }
 33304  
 33305  func test_drop_modules(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 33306  	bp := tls.Alloc(40)
 33307  	defer tls.Free(40)
 33308  
 33309  	if argc < 2 {
 33310  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 33311  			ts+15078, 0))
 33312  		return TCL_ERROR
 33313  	}
 33314  	if getDbPointer(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)), bp+32) != 0 {
 33315  		return TCL_ERROR
 33316  	}
 33317  	sqlite3.Xsqlite3_drop_modules(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), func() uintptr {
 33318  		if argc > 2 {
 33319  			return argv + uintptr(2)*8
 33320  		}
 33321  		return uintptr(0)
 33322  	}())
 33323  	return TCL_OK
 33324  }
 33325  
 33326  type t1CountCtx1 = struct{ Fn int32 }
 33327  
 33328  type t1CountCtx = t1CountCtx1
 33329  
 33330  func t1CountStep(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 33331  	bp := tls.Alloc(9)
 33332  	defer tls.Free(9)
 33333  
 33334  	var p uintptr
 33335  	p = sqlite3.Xsqlite3_aggregate_context(tls, context, int32(unsafe.Sizeof(t1CountCtx{})))
 33336  	if (argc == 0 || SQLITE_NULL != sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(argv)))) && p != 0 {
 33337  		(*t1CountCtx)(unsafe.Pointer(p)).Fn++
 33338  	}
 33339  	if argc > 0 {
 33340  		var v int32 = sqlite3.Xsqlite3_value_int(tls, *(*uintptr)(unsafe.Pointer(argv)))
 33341  		if v == 40 {
 33342  			sqlite3.Xsqlite3_result_error(tls, context, ts+15235, -1)
 33343  		} else if v == 41 {
 33344  			*(*[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)}
 33345  			sqlite3.Xsqlite3_result_error16(tls, context, bp+uintptr(1-libc.Bool32(int32(*(*uint8)(unsafe.Pointer(uintptr(unsafe.Pointer(&sqlite3.Xsqlite3one))))) == 0)), -1)
 33346  		}
 33347  	}
 33348  }
 33349  
 33350  func t1CountFinalize(tls *libc.TLS, context uintptr) {
 33351  	var p uintptr
 33352  	p = sqlite3.Xsqlite3_aggregate_context(tls, context, int32(unsafe.Sizeof(t1CountCtx{})))
 33353  	if p != 0 {
 33354  		if (*t1CountCtx)(unsafe.Pointer(p)).Fn == 42 {
 33355  			sqlite3.Xsqlite3_result_error(tls, context, ts+15265, -1)
 33356  		} else {
 33357  			sqlite3.Xsqlite3_result_int(tls, context, func() int32 {
 33358  				if p != 0 {
 33359  					return (*t1CountCtx)(unsafe.Pointer(p)).Fn
 33360  				}
 33361  				return 0
 33362  			}())
 33363  		}
 33364  	}
 33365  }
 33366  
 33367  func legacyCountStep(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 33368  }
 33369  
 33370  func legacyCountFinalize(tls *libc.TLS, context uintptr) {
 33371  	sqlite3.Xsqlite3_result_int(tls, context, sqlite3.Xsqlite3_aggregate_count(tls, context))
 33372  }
 33373  
 33374  func test_create_aggregate(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 33375  	bp := tls.Alloc(40)
 33376  	defer tls.Free(40)
 33377  
 33378  	var rc int32
 33379  	if argc != 2 {
 33380  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 33381  			ts+15083, 0))
 33382  		return TCL_ERROR
 33383  	}
 33384  	if getDbPointer(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)), bp+32) != 0 {
 33385  		return TCL_ERROR
 33386  	}
 33387  	rc = sqlite3.Xsqlite3_create_function(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), ts+15286, 0, SQLITE_UTF8, uintptr(0), uintptr(0),
 33388  		*(*uintptr)(unsafe.Pointer(&struct {
 33389  			f func(*libc.TLS, uintptr, int32, uintptr)
 33390  		}{t1CountStep})), *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{t1CountFinalize})))
 33391  	if rc == SQLITE_OK {
 33392  		rc = sqlite3.Xsqlite3_create_function(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), ts+15286, 1, SQLITE_UTF8, uintptr(0), uintptr(0),
 33393  			*(*uintptr)(unsafe.Pointer(&struct {
 33394  				f func(*libc.TLS, uintptr, int32, uintptr)
 33395  			}{t1CountStep})), *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{t1CountFinalize})))
 33396  	}
 33397  	if rc == SQLITE_OK {
 33398  		rc = sqlite3.Xsqlite3_create_function(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), ts+15294, 0, SQLITE_ANY, uintptr(0), uintptr(0),
 33399  			*(*uintptr)(unsafe.Pointer(&struct {
 33400  				f func(*libc.TLS, uintptr, int32, uintptr)
 33401  			}{legacyCountStep})), *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{legacyCountFinalize})))
 33402  	}
 33403  	if sqlite3TestErrCode(tls, interp, *(*uintptr)(unsafe.Pointer(bp + 32)), rc) != 0 {
 33404  		return TCL_ERROR
 33405  	}
 33406  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 33407  	return TCL_OK
 33408  }
 33409  
 33410  func test_printf(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 33411  	bp := tls.Alloc(40)
 33412  	defer tls.Free(40)
 33413  
 33414  	if argc != 2 {
 33415  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 33416  			ts+15307, 0))
 33417  		return TCL_ERROR
 33418  	}
 33419  	libc.Xprintf(tls, ts+389, libc.VaList(bp+32, *(*uintptr)(unsafe.Pointer(argv + 1*8))))
 33420  	return TCL_OK
 33421  }
 33422  
 33423  func sqlite3_mprintf_int(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 33424  	bp := tls.Alloc(84)
 33425  	defer tls.Free(84)
 33426  
 33427  	var i int32
 33428  	var z uintptr
 33429  	if argc != 5 {
 33430  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 33431  			ts+15314, 0))
 33432  		return TCL_ERROR
 33433  	}
 33434  	for i = 2; i < 5; i++ {
 33435  		if tcl.XTcl_GetInt(tls, interp, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8)), bp+72+uintptr(i-2)*4) != 0 {
 33436  			return TCL_ERROR
 33437  		}
 33438  	}
 33439  	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))))
 33440  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+56, z, 0))
 33441  	sqlite3.Xsqlite3_free(tls, z)
 33442  	return TCL_OK
 33443  }
 33444  
 33445  func sqlite3_mprintf_int64(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 33446  	bp := tls.Alloc(112)
 33447  	defer tls.Free(112)
 33448  
 33449  	var i int32
 33450  
 33451  	var z uintptr
 33452  	if argc != 5 {
 33453  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 33454  			ts+15314, 0))
 33455  		return TCL_ERROR
 33456  	}
 33457  	for i = 2; i < 5; i++ {
 33458  		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 {
 33459  			tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+15335, 0))
 33460  			return TCL_ERROR
 33461  		}
 33462  	}
 33463  	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))))
 33464  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+72, z, 0))
 33465  	sqlite3.Xsqlite3_free(tls, z)
 33466  	return TCL_OK
 33467  }
 33468  
 33469  func sqlite3_mprintf_long(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 33470  	bp := tls.Alloc(112)
 33471  	defer tls.Free(112)
 33472  
 33473  	var i int32
 33474  
 33475  	var z uintptr
 33476  	if argc != 5 {
 33477  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 33478  			ts+15314, 0))
 33479  		return TCL_ERROR
 33480  	}
 33481  	for i = 2; i < 5; i++ {
 33482  		if tcl.XTcl_GetInt(tls, interp, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8)), bp+72+uintptr(i-2)*4) != 0 {
 33483  			return TCL_ERROR
 33484  		}
 33485  		*(*int64)(unsafe.Pointer(bp + 88 + uintptr(i-2)*8)) = int64(*(*int32)(unsafe.Pointer(bp + 72 + uintptr(i-2)*4)))
 33486  		*(*int64)(unsafe.Pointer(bp + 88 + uintptr(i-2)*8)) &= int64(uint64(1)<<(uint64(unsafe.Sizeof(int32(0)))*uint64(8)) - uint64(1))
 33487  	}
 33488  	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))))
 33489  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+56, z, 0))
 33490  	sqlite3.Xsqlite3_free(tls, z)
 33491  	return TCL_OK
 33492  }
 33493  
 33494  func sqlite3_mprintf_str(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 33495  	bp := tls.Alloc(84)
 33496  	defer tls.Free(84)
 33497  
 33498  	var i int32
 33499  	var z uintptr
 33500  	if argc < 4 || argc > 5 {
 33501  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 33502  			ts+15374, 0))
 33503  		return TCL_ERROR
 33504  	}
 33505  	for i = 2; i < 4; i++ {
 33506  		if tcl.XTcl_GetInt(tls, interp, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8)), bp+72+uintptr(i-2)*4) != 0 {
 33507  			return TCL_ERROR
 33508  		}
 33509  	}
 33510  	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 {
 33511  		if argc > 4 {
 33512  			return *(*uintptr)(unsafe.Pointer(argv + 4*8))
 33513  		}
 33514  		return uintptr(0)
 33515  	}()))
 33516  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+56, z, 0))
 33517  	sqlite3.Xsqlite3_free(tls, z)
 33518  	return TCL_OK
 33519  }
 33520  
 33521  func sqlite3_snprintf_str(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 33522  	bp := tls.Alloc(104)
 33523  	defer tls.Free(104)
 33524  
 33525  	var i int32
 33526  
 33527  	var z uintptr
 33528  	if argc < 5 || argc > 6 {
 33529  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 33530  			ts+15400, 0))
 33531  		return TCL_ERROR
 33532  	}
 33533  	if tcl.XTcl_GetInt(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)), bp+88) != 0 {
 33534  		return TCL_ERROR
 33535  	}
 33536  	if *(*int32)(unsafe.Pointer(bp + 88)) < 0 {
 33537  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+15430, 0))
 33538  		return TCL_ERROR
 33539  	}
 33540  	for i = 3; i < 5; i++ {
 33541  		if tcl.XTcl_GetInt(tls, interp, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8)), bp+92+uintptr(i-3)*4) != 0 {
 33542  			return TCL_ERROR
 33543  		}
 33544  	}
 33545  	z = sqlite3.Xsqlite3_malloc(tls, *(*int32)(unsafe.Pointer(bp + 88))+1)
 33546  	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 {
 33547  		if argc > 4 {
 33548  			return *(*uintptr)(unsafe.Pointer(argv + 5*8))
 33549  		}
 33550  		return uintptr(0)
 33551  	}()))
 33552  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+72, z, 0))
 33553  	sqlite3.Xsqlite3_free(tls, z)
 33554  	return TCL_OK
 33555  }
 33556  
 33557  func sqlite3_mprintf_double(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 33558  	bp := tls.Alloc(96)
 33559  	defer tls.Free(96)
 33560  
 33561  	var i int32
 33562  
 33563  	var z uintptr
 33564  	if argc != 5 {
 33565  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 33566  			ts+15453, 0))
 33567  		return TCL_ERROR
 33568  	}
 33569  	for i = 2; i < 4; i++ {
 33570  		if tcl.XTcl_GetInt(tls, interp, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8)), bp+72+uintptr(i-2)*4) != 0 {
 33571  			return TCL_ERROR
 33572  		}
 33573  	}
 33574  	if tcl.XTcl_GetDouble(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 4*8)), bp+88) != 0 {
 33575  		return TCL_ERROR
 33576  	}
 33577  	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))))
 33578  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+56, z, 0))
 33579  	sqlite3.Xsqlite3_free(tls, z)
 33580  	return TCL_OK
 33581  }
 33582  
 33583  func sqlite3_mprintf_scaled(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 33584  	bp := tls.Alloc(72)
 33585  	defer tls.Free(72)
 33586  
 33587  	var i int32
 33588  
 33589  	var z uintptr
 33590  	if argc != 4 {
 33591  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 33592  			ts+15477, 0))
 33593  		return TCL_ERROR
 33594  	}
 33595  	for i = 2; i < 4; i++ {
 33596  		if tcl.XTcl_GetDouble(tls, interp, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8)), bp+56+uintptr(i-2)*8) != 0 {
 33597  			return TCL_ERROR
 33598  		}
 33599  	}
 33600  	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))))
 33601  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+40, z, 0))
 33602  	sqlite3.Xsqlite3_free(tls, z)
 33603  	return TCL_OK
 33604  }
 33605  
 33606  func sqlite3_mprintf_stronly(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 33607  	bp := tls.Alloc(56)
 33608  	defer tls.Free(56)
 33609  
 33610  	var z uintptr
 33611  	if argc != 3 {
 33612  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 33613  			ts+15500, 0))
 33614  		return TCL_ERROR
 33615  	}
 33616  	z = sqlite3.Xsqlite3_mprintf(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)), libc.VaList(bp+32, *(*uintptr)(unsafe.Pointer(argv + 2*8))))
 33617  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+40, z, 0))
 33618  	sqlite3.Xsqlite3_free(tls, z)
 33619  	return TCL_OK
 33620  }
 33621  
 33622  func sqlite3_mprintf_hexdouble(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 33623  	bp := tls.Alloc(112)
 33624  	defer tls.Free(112)
 33625  
 33626  	var z uintptr
 33627  
 33628  	if argc != 3 {
 33629  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 33630  			ts+15500, 0))
 33631  		return TCL_ERROR
 33632  	}
 33633  	if libc.Xsscanf(tls, *(*uintptr)(unsafe.Pointer(argv + 2*8)), ts+15516, libc.VaList(bp+32, bp+88, bp+92)) != 2 {
 33634  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+48, ts+15525, 0))
 33635  		return TCL_ERROR
 33636  	}
 33637  	*(*sqlite_uint64)(unsafe.Pointer(bp + 104)) = sqlite_uint64(*(*uint32)(unsafe.Pointer(bp + 88)))
 33638  	*(*sqlite_uint64)(unsafe.Pointer(bp + 104)) = *(*sqlite_uint64)(unsafe.Pointer(bp + 104))<<32 + sqlite_uint64(*(*uint32)(unsafe.Pointer(bp + 92)))
 33639  	libc.Xmemcpy(tls, bp+96, bp+104, uint64(unsafe.Sizeof(float64(0))))
 33640  	z = sqlite3.Xsqlite3_mprintf(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)), libc.VaList(bp+64, *(*float64)(unsafe.Pointer(bp + 96))))
 33641  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+72, z, 0))
 33642  	sqlite3.Xsqlite3_free(tls, z)
 33643  	return TCL_OK
 33644  }
 33645  
 33646  func test_enable_shared(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 33647  	bp := tls.Alloc(4)
 33648  	defer tls.Free(4)
 33649  
 33650  	var rc int32
 33651  
 33652  	var ret int32 = 0
 33653  
 33654  	if objc != 2 && objc != 1 {
 33655  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+15569)
 33656  		return TCL_ERROR
 33657  	}
 33658  	ret = sqlite3.Xsqlite3Config.FsharedCacheEnabled
 33659  
 33660  	if objc == 2 {
 33661  		if tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp) != 0 {
 33662  			return TCL_ERROR
 33663  		}
 33664  		rc = sqlite3.Xsqlite3_enable_shared_cache(tls, *(*int32)(unsafe.Pointer(bp)))
 33665  		if rc != SQLITE_OK {
 33666  			tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrStr(tls, rc), uintptr(0))
 33667  			return TCL_ERROR
 33668  		}
 33669  	}
 33670  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, libc.Bool32(ret != 0)))
 33671  	return TCL_OK
 33672  }
 33673  
 33674  func test_extended_result_codes(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 33675  	bp := tls.Alloc(12)
 33676  	defer tls.Free(12)
 33677  
 33678  	if objc != 3 {
 33679  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+15579)
 33680  		return TCL_ERROR
 33681  	}
 33682  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 33683  		return TCL_ERROR
 33684  	}
 33685  	if tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+8) != 0 {
 33686  		return TCL_ERROR
 33687  	}
 33688  	sqlite3.Xsqlite3_extended_result_codes(tls, *(*uintptr)(unsafe.Pointer(bp)), *(*int32)(unsafe.Pointer(bp + 8)))
 33689  	return TCL_OK
 33690  }
 33691  
 33692  func test_libversion_number(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 33693  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, sqlite3.Xsqlite3_libversion_number(tls)))
 33694  	return TCL_OK
 33695  }
 33696  
 33697  func test_table_column_metadata(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 33698  	bp := tls.Alloc(52)
 33699  	defer tls.Free(52)
 33700  
 33701  	var zDb uintptr
 33702  	var zTbl uintptr
 33703  	var zCol uintptr
 33704  	var rc int32
 33705  	var pRet uintptr
 33706  
 33707  	if objc != 5 && objc != 4 {
 33708  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+15590)
 33709  		return TCL_ERROR
 33710  	}
 33711  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+16) != 0 {
 33712  		return TCL_ERROR
 33713  	}
 33714  	zDb = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 33715  	zTbl = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)))
 33716  	if objc == 5 {
 33717  		zCol = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 4*8)))
 33718  	} else {
 33719  		zCol = uintptr(0)
 33720  	}
 33721  
 33722  	if libc.Xstrlen(tls, zDb) == uint64(0) {
 33723  		zDb = uintptr(0)
 33724  	}
 33725  
 33726  	rc = sqlite3.Xsqlite3_table_column_metadata(tls, *(*uintptr)(unsafe.Pointer(bp + 16)), zDb, zTbl, zCol,
 33727  		bp+24, bp+32, bp+40, bp+44, bp+48)
 33728  
 33729  	if rc != SQLITE_OK {
 33730  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, sqlite3.Xsqlite3_errmsg(tls, *(*uintptr)(unsafe.Pointer(bp + 16))), 0))
 33731  		return TCL_ERROR
 33732  	}
 33733  
 33734  	pRet = tcl.XTcl_NewObj(tls)
 33735  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pRet, tcl.XTcl_NewStringObj(tls, *(*uintptr)(unsafe.Pointer(bp + 24)), -1))
 33736  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pRet, tcl.XTcl_NewStringObj(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), -1))
 33737  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pRet, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 40))))
 33738  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pRet, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 44))))
 33739  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pRet, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 48))))
 33740  	tcl.XTcl_SetObjResult(tls, interp, pRet)
 33741  
 33742  	return TCL_OK
 33743  }
 33744  
 33745  func blobHandleFromObj(tls *libc.TLS, interp uintptr, pObj uintptr, ppBlob uintptr) int32 {
 33746  	bp := tls.Alloc(8)
 33747  	defer tls.Free(8)
 33748  
 33749  	var z uintptr
 33750  
 33751  	z = tcl.XTcl_GetStringFromObj(tls, pObj, bp)
 33752  	if *(*int32)(unsafe.Pointer(bp)) == 0 {
 33753  		*(*uintptr)(unsafe.Pointer(ppBlob)) = uintptr(0)
 33754  	} else {
 33755  		var channel Tcl_Channel
 33756  		var instanceData ClientData
 33757  
 33758  		channel = tcl.XTcl_GetChannel(tls, interp, z, bp+4)
 33759  		if !(channel != 0) {
 33760  			return TCL_ERROR
 33761  		}
 33762  
 33763  		tcl.XTcl_Flush(tls, channel)
 33764  		tcl.XTcl_Seek(tls, channel, int64(0), SEEK_SET)
 33765  
 33766  		instanceData = tcl.XTcl_GetChannelInstanceData(tls, channel)
 33767  		*(*uintptr)(unsafe.Pointer(ppBlob)) = *(*uintptr)(unsafe.Pointer(instanceData))
 33768  	}
 33769  
 33770  	return TCL_OK
 33771  }
 33772  
 33773  func test_blob_reopen(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 33774  	bp := tls.Alloc(16)
 33775  	defer tls.Free(16)
 33776  
 33777  	var rc int32
 33778  
 33779  	if objc != 3 {
 33780  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+15616)
 33781  		return TCL_ERROR
 33782  	}
 33783  
 33784  	if blobHandleFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp) != 0 {
 33785  		return TCL_ERROR
 33786  	}
 33787  	if tcl.XTcl_GetWideIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+8) != 0 {
 33788  		return TCL_ERROR
 33789  	}
 33790  
 33791  	rc = sqlite3.Xsqlite3_blob_reopen(tls, *(*uintptr)(unsafe.Pointer(bp)), *(*Tcl_WideInt)(unsafe.Pointer(bp + 8)))
 33792  	if rc != SQLITE_OK {
 33793  		tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(1))
 33794  	}
 33795  
 33796  	return func() int32 {
 33797  		if rc == SQLITE_OK {
 33798  			return TCL_OK
 33799  		}
 33800  		return TCL_ERROR
 33801  	}()
 33802  }
 33803  
 33804  type TestCollationX1 = struct {
 33805  	Finterp uintptr
 33806  	FpCmp   uintptr
 33807  	FpDel   uintptr
 33808  }
 33809  
 33810  type TestCollationX = TestCollationX1
 33811  
 33812  func testCreateCollationDel(tls *libc.TLS, pCtx uintptr) {
 33813  	var p uintptr = pCtx
 33814  
 33815  	var rc int32 = tcl.XTcl_EvalObjEx(tls, (*TestCollationX)(unsafe.Pointer(p)).Finterp, (*TestCollationX)(unsafe.Pointer(p)).FpDel, TCL_EVAL_DIRECT|TCL_EVAL_GLOBAL)
 33816  	if rc != TCL_OK {
 33817  		tcl.XTcl_BackgroundError(tls, (*TestCollationX)(unsafe.Pointer(p)).Finterp)
 33818  	}
 33819  
 33820  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 33821  		var _objPtr uintptr = (*TestCollationX)(unsafe.Pointer(p)).FpCmp
 33822  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 33823  			tcl.XTclFreeObj(tls, _objPtr)
 33824  		}
 33825  	}
 33826  	for __ccgo1 := true; __ccgo1; __ccgo1 = 0 != 0 {
 33827  		var _objPtr uintptr = (*TestCollationX)(unsafe.Pointer(p)).FpDel
 33828  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 33829  			tcl.XTclFreeObj(tls, _objPtr)
 33830  		}
 33831  	}
 33832  	sqlite3.Xsqlite3_free(tls, p)
 33833  }
 33834  
 33835  func testCreateCollationCmp(tls *libc.TLS, pCtx uintptr, nLeft int32, zLeft uintptr, nRight int32, zRight uintptr) int32 {
 33836  	bp := tls.Alloc(4)
 33837  	defer tls.Free(4)
 33838  
 33839  	var p uintptr = pCtx
 33840  	var pScript uintptr = tcl.XTcl_DuplicateObj(tls, (*TestCollationX)(unsafe.Pointer(p)).FpCmp)
 33841  	*(*int32)(unsafe.Pointer(bp)) = 0
 33842  
 33843  	(*Tcl_Obj)(unsafe.Pointer(pScript)).FrefCount++
 33844  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pScript, tcl.XTcl_NewStringObj(tls, zLeft, nLeft))
 33845  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pScript, tcl.XTcl_NewStringObj(tls, zRight, nRight))
 33846  
 33847  	if TCL_OK != tcl.XTcl_EvalObjEx(tls, (*TestCollationX)(unsafe.Pointer(p)).Finterp, pScript, TCL_EVAL_DIRECT|TCL_EVAL_GLOBAL) ||
 33848  		TCL_OK != tcl.XTcl_GetIntFromObj(tls, (*TestCollationX)(unsafe.Pointer(p)).Finterp, tcl.XTcl_GetObjResult(tls, (*TestCollationX)(unsafe.Pointer(p)).Finterp), bp) {
 33849  		tcl.XTcl_BackgroundError(tls, (*TestCollationX)(unsafe.Pointer(p)).Finterp)
 33850  	}
 33851  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 33852  		var _objPtr uintptr = pScript
 33853  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 33854  			tcl.XTclFreeObj(tls, _objPtr)
 33855  		}
 33856  	}
 33857  
 33858  	return *(*int32)(unsafe.Pointer(bp))
 33859  }
 33860  
 33861  func test_create_collation_v2(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 33862  	bp := tls.Alloc(24)
 33863  	defer tls.Free(24)
 33864  
 33865  	var p uintptr
 33866  
 33867  	var rc int32
 33868  
 33869  	if objc != 5 {
 33870  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+15630)
 33871  		return TCL_ERROR
 33872  	}
 33873  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+16) != 0 {
 33874  		return TCL_ERROR
 33875  	}
 33876  
 33877  	p = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(TestCollationX{})))
 33878  	(*TestCollationX)(unsafe.Pointer(p)).FpCmp = *(*uintptr)(unsafe.Pointer(objv + 3*8))
 33879  	(*TestCollationX)(unsafe.Pointer(p)).FpDel = *(*uintptr)(unsafe.Pointer(objv + 4*8))
 33880  	(*TestCollationX)(unsafe.Pointer(p)).Finterp = interp
 33881  	(*Tcl_Obj)(unsafe.Pointer((*TestCollationX)(unsafe.Pointer(p)).FpCmp)).FrefCount++
 33882  	(*Tcl_Obj)(unsafe.Pointer((*TestCollationX)(unsafe.Pointer(p)).FpDel)).FrefCount++
 33883  
 33884  	rc = sqlite3.Xsqlite3_create_collation_v2(tls, *(*uintptr)(unsafe.Pointer(bp + 16)), tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8))), 16,
 33885  		p, *(*uintptr)(unsafe.Pointer(&struct {
 33886  			f func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32
 33887  		}{testCreateCollationCmp})), *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{testCreateCollationDel})))
 33888  	if rc != SQLITE_MISUSE {
 33889  		tcl.XTcl_AppendResult(tls, interp,
 33890  			libc.VaList(bp, ts+15663, uintptr(0)))
 33891  		return TCL_ERROR
 33892  	}
 33893  	rc = sqlite3.Xsqlite3_create_collation_v2(tls, *(*uintptr)(unsafe.Pointer(bp + 16)), tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8))), SQLITE_UTF8,
 33894  		p, *(*uintptr)(unsafe.Pointer(&struct {
 33895  			f func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32
 33896  		}{testCreateCollationCmp})), *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{testCreateCollationDel})))
 33897  	return TCL_OK
 33898  }
 33899  
 33900  type CreateFunctionV21 = struct {
 33901  	Finterp   uintptr
 33902  	FpFunc    uintptr
 33903  	FpStep    uintptr
 33904  	FpFinal   uintptr
 33905  	FpDestroy uintptr
 33906  }
 33907  
 33908  type CreateFunctionV2 = CreateFunctionV21
 33909  
 33910  func cf2Func(tls *libc.TLS, ctx uintptr, nArg int32, aArg uintptr) {
 33911  }
 33912  
 33913  func cf2Step(tls *libc.TLS, ctx uintptr, nArg int32, aArg uintptr) {
 33914  }
 33915  
 33916  func cf2Final(tls *libc.TLS, ctx uintptr) {
 33917  }
 33918  
 33919  func cf2Destroy(tls *libc.TLS, pUser uintptr) {
 33920  	var p uintptr = pUser
 33921  
 33922  	if (*CreateFunctionV2)(unsafe.Pointer(p)).Finterp != 0 && (*CreateFunctionV2)(unsafe.Pointer(p)).FpDestroy != 0 {
 33923  		var rc int32 = tcl.XTcl_EvalObjEx(tls, (*CreateFunctionV2)(unsafe.Pointer(p)).Finterp, (*CreateFunctionV2)(unsafe.Pointer(p)).FpDestroy, 0)
 33924  		if rc != TCL_OK {
 33925  			tcl.XTcl_BackgroundError(tls, (*CreateFunctionV2)(unsafe.Pointer(p)).Finterp)
 33926  		}
 33927  	}
 33928  
 33929  	if (*CreateFunctionV2)(unsafe.Pointer(p)).FpFunc != 0 {
 33930  		for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 33931  			var _objPtr uintptr = (*CreateFunctionV2)(unsafe.Pointer(p)).FpFunc
 33932  			if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 33933  				tcl.XTclFreeObj(tls, _objPtr)
 33934  			}
 33935  		}
 33936  	}
 33937  	if (*CreateFunctionV2)(unsafe.Pointer(p)).FpStep != 0 {
 33938  		for __ccgo1 := true; __ccgo1; __ccgo1 = 0 != 0 {
 33939  			var _objPtr uintptr = (*CreateFunctionV2)(unsafe.Pointer(p)).FpStep
 33940  			if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 33941  				tcl.XTclFreeObj(tls, _objPtr)
 33942  			}
 33943  		}
 33944  	}
 33945  	if (*CreateFunctionV2)(unsafe.Pointer(p)).FpFinal != 0 {
 33946  		for __ccgo2 := true; __ccgo2; __ccgo2 = 0 != 0 {
 33947  			var _objPtr uintptr = (*CreateFunctionV2)(unsafe.Pointer(p)).FpFinal
 33948  			if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 33949  				tcl.XTclFreeObj(tls, _objPtr)
 33950  			}
 33951  		}
 33952  	}
 33953  	if (*CreateFunctionV2)(unsafe.Pointer(p)).FpDestroy != 0 {
 33954  		for __ccgo3 := true; __ccgo3; __ccgo3 = 0 != 0 {
 33955  			var _objPtr uintptr = (*CreateFunctionV2)(unsafe.Pointer(p)).FpDestroy
 33956  			if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 33957  				tcl.XTclFreeObj(tls, _objPtr)
 33958  			}
 33959  		}
 33960  	}
 33961  	sqlite3.Xsqlite3_free(tls, p)
 33962  }
 33963  
 33964  func test_create_function_v2(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 33965  	bp := tls.Alloc(180)
 33966  	defer tls.Free(180)
 33967  
 33968  	var zFunc uintptr
 33969  
 33970  	var p uintptr
 33971  	var i int32
 33972  	var rc int32
 33973  
 33974  	*(*[6]EncTable)(unsafe.Pointer(bp + 32)) = [6]EncTable{
 33975  		{FzEnc: ts + 15728, Fenc: SQLITE_UTF8},
 33976  		{FzEnc: ts + 15733, Fenc: SQLITE_UTF16},
 33977  		{FzEnc: ts + 15739, Fenc: SQLITE_UTF16LE},
 33978  		{FzEnc: ts + 15747, Fenc: SQLITE_UTF16BE},
 33979  		{FzEnc: ts + 12774, Fenc: SQLITE_ANY},
 33980  		{FzEnc: ts + 14193},
 33981  	}
 33982  
 33983  	if objc < 5 || objc%2 == 0 {
 33984  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+15755)
 33985  		return TCL_ERROR
 33986  	}
 33987  
 33988  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+16) != 0 {
 33989  		return TCL_ERROR
 33990  	}
 33991  	zFunc = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 33992  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+24) != 0 {
 33993  		return TCL_ERROR
 33994  	}
 33995  	if tcl.XTcl_GetIndexFromObjStruct(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 4*8)), bp+32, int32(unsafe.Sizeof(EncTable{})),
 33996  		ts+15784, 0, bp+128) != 0 {
 33997  		return TCL_ERROR
 33998  	}
 33999  	*(*int32)(unsafe.Pointer(bp + 128)) = (*EncTable)(unsafe.Pointer(bp + 32 + uintptr(*(*int32)(unsafe.Pointer(bp + 128)))*16)).Fenc
 34000  
 34001  	p = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(CreateFunctionV2{})))
 34002  
 34003  	libc.Xmemset(tls, p, 0, uint64(unsafe.Sizeof(CreateFunctionV2{})))
 34004  	(*CreateFunctionV2)(unsafe.Pointer(p)).Finterp = interp
 34005  
 34006  	for i = 5; i < objc; i = i + 2 {
 34007  		*(*[5]uintptr)(unsafe.Pointer(bp + 136)) = [5]uintptr{ts + 15793, ts + 15799, ts + 15805, ts + 15812, uintptr(0)}
 34008  		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 {
 34009  			sqlite3.Xsqlite3_free(tls, p)
 34010  			return TCL_ERROR
 34011  		}
 34012  
 34013  		switch *(*int32)(unsafe.Pointer(bp + 176)) {
 34014  		case 0:
 34015  			(*CreateFunctionV2)(unsafe.Pointer(p)).FpFunc = *(*uintptr)(unsafe.Pointer(objv + uintptr(i+1)*8))
 34016  			break
 34017  		case 1:
 34018  			(*CreateFunctionV2)(unsafe.Pointer(p)).FpStep = *(*uintptr)(unsafe.Pointer(objv + uintptr(i+1)*8))
 34019  			break
 34020  		case 2:
 34021  			(*CreateFunctionV2)(unsafe.Pointer(p)).FpFinal = *(*uintptr)(unsafe.Pointer(objv + uintptr(i+1)*8))
 34022  			break
 34023  		case 3:
 34024  			(*CreateFunctionV2)(unsafe.Pointer(p)).FpDestroy = *(*uintptr)(unsafe.Pointer(objv + uintptr(i+1)*8))
 34025  			break
 34026  		}
 34027  	}
 34028  	if (*CreateFunctionV2)(unsafe.Pointer(p)).FpFunc != 0 {
 34029  		(*CreateFunctionV2)(unsafe.Pointer(p)).FpFunc = tcl.XTcl_DuplicateObj(tls, (*CreateFunctionV2)(unsafe.Pointer(p)).FpFunc)
 34030  	}
 34031  	if (*CreateFunctionV2)(unsafe.Pointer(p)).FpStep != 0 {
 34032  		(*CreateFunctionV2)(unsafe.Pointer(p)).FpStep = tcl.XTcl_DuplicateObj(tls, (*CreateFunctionV2)(unsafe.Pointer(p)).FpStep)
 34033  	}
 34034  	if (*CreateFunctionV2)(unsafe.Pointer(p)).FpFinal != 0 {
 34035  		(*CreateFunctionV2)(unsafe.Pointer(p)).FpFinal = tcl.XTcl_DuplicateObj(tls, (*CreateFunctionV2)(unsafe.Pointer(p)).FpFinal)
 34036  	}
 34037  	if (*CreateFunctionV2)(unsafe.Pointer(p)).FpDestroy != 0 {
 34038  		(*CreateFunctionV2)(unsafe.Pointer(p)).FpDestroy = tcl.XTcl_DuplicateObj(tls, (*CreateFunctionV2)(unsafe.Pointer(p)).FpDestroy)
 34039  	}
 34040  
 34041  	if (*CreateFunctionV2)(unsafe.Pointer(p)).FpFunc != 0 {
 34042  		(*Tcl_Obj)(unsafe.Pointer((*CreateFunctionV2)(unsafe.Pointer(p)).FpFunc)).FrefCount++
 34043  	}
 34044  	if (*CreateFunctionV2)(unsafe.Pointer(p)).FpStep != 0 {
 34045  		(*Tcl_Obj)(unsafe.Pointer((*CreateFunctionV2)(unsafe.Pointer(p)).FpStep)).FrefCount++
 34046  	}
 34047  	if (*CreateFunctionV2)(unsafe.Pointer(p)).FpFinal != 0 {
 34048  		(*Tcl_Obj)(unsafe.Pointer((*CreateFunctionV2)(unsafe.Pointer(p)).FpFinal)).FrefCount++
 34049  	}
 34050  	if (*CreateFunctionV2)(unsafe.Pointer(p)).FpDestroy != 0 {
 34051  		(*Tcl_Obj)(unsafe.Pointer((*CreateFunctionV2)(unsafe.Pointer(p)).FpDestroy)).FrefCount++
 34052  	}
 34053  
 34054  	rc = sqlite3.Xsqlite3_create_function_v2(tls, *(*uintptr)(unsafe.Pointer(bp + 16)), zFunc, *(*int32)(unsafe.Pointer(bp + 24)), *(*int32)(unsafe.Pointer(bp + 128)), p,
 34055  		func() uintptr {
 34056  			if (*CreateFunctionV2)(unsafe.Pointer(p)).FpFunc != 0 {
 34057  				return *(*uintptr)(unsafe.Pointer(&struct {
 34058  					f func(*libc.TLS, uintptr, int32, uintptr)
 34059  				}{cf2Func}))
 34060  			}
 34061  			return uintptr(0)
 34062  		}(),
 34063  		func() uintptr {
 34064  			if (*CreateFunctionV2)(unsafe.Pointer(p)).FpStep != 0 {
 34065  				return *(*uintptr)(unsafe.Pointer(&struct {
 34066  					f func(*libc.TLS, uintptr, int32, uintptr)
 34067  				}{cf2Step}))
 34068  			}
 34069  			return uintptr(0)
 34070  		}(),
 34071  		func() uintptr {
 34072  			if (*CreateFunctionV2)(unsafe.Pointer(p)).FpFinal != 0 {
 34073  				return *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{cf2Final}))
 34074  			}
 34075  			return uintptr(0)
 34076  		}(),
 34077  		*(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{cf2Destroy})))
 34078  	if rc != SQLITE_OK {
 34079  		tcl.XTcl_ResetResult(tls, interp)
 34080  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, sqlite3.Xsqlite3ErrName(tls, rc), 0))
 34081  		return TCL_ERROR
 34082  	}
 34083  	return TCL_OK
 34084  }
 34085  
 34086  type EncTable = struct {
 34087  	FzEnc        uintptr
 34088  	Fenc         int32
 34089  	F__ccgo_pad1 [4]byte
 34090  }
 34091  
 34092  func test_load_extension(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 34093  	bp := tls.Alloc(88)
 34094  	defer tls.Free(88)
 34095  
 34096  	var db uintptr
 34097  	_ = db
 34098  	var rc int32
 34099  	var zDb uintptr
 34100  	var zFile uintptr
 34101  	_ = zFile
 34102  	var zProc uintptr = uintptr(0)
 34103  	_ = zProc
 34104  	var zErr uintptr = uintptr(0)
 34105  
 34106  	if objc != 4 && objc != 3 {
 34107  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+15828)
 34108  		return TCL_ERROR
 34109  	}
 34110  	zDb = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 34111  	zFile = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 34112  	if objc == 4 {
 34113  		zProc = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)))
 34114  	}
 34115  
 34116  	if !(tcl.XTcl_GetCommandInfo(tls, interp, zDb, bp+24) != 0) {
 34117  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14859, zDb, uintptr(0)))
 34118  		return TCL_ERROR
 34119  	}
 34120  	db = (*struct{ Fdb uintptr })(unsafe.Pointer((*Tcl_CmdInfo)(unsafe.Pointer(bp + 24)).FobjClientData)).Fdb
 34121  
 34122  	rc = SQLITE_ERROR
 34123  	zErr = sqlite3.Xsqlite3_mprintf(tls, ts+15850, 0)
 34124  	_ = zProc
 34125  	_ = zFile
 34126  	if rc != SQLITE_OK {
 34127  		tcl.XTcl_SetResult(tls, interp, func() uintptr {
 34128  			if zErr != 0 {
 34129  				return zErr
 34130  			}
 34131  			return ts + 584
 34132  		}(), uintptr(1))
 34133  		rc = TCL_ERROR
 34134  	} else {
 34135  		rc = TCL_OK
 34136  	}
 34137  	sqlite3.Xsqlite3_free(tls, zErr)
 34138  
 34139  	return rc
 34140  }
 34141  
 34142  func test_enable_load(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 34143  	bp := tls.Alloc(100)
 34144  	defer tls.Free(100)
 34145  
 34146  	var db uintptr
 34147  	_ = db
 34148  	var zDb uintptr
 34149  
 34150  	if objc != 3 {
 34151  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+15892)
 34152  		return TCL_ERROR
 34153  	}
 34154  	zDb = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 34155  
 34156  	if !(tcl.XTcl_GetCommandInfo(tls, interp, zDb, bp+32) != 0) {
 34157  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14859, zDb, uintptr(0)))
 34158  		return TCL_ERROR
 34159  	}
 34160  	db = (*struct{ Fdb uintptr })(unsafe.Pointer((*Tcl_CmdInfo)(unsafe.Pointer(bp + 32)).FobjClientData)).Fdb
 34161  
 34162  	if tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+96) != 0 {
 34163  		return TCL_ERROR
 34164  	}
 34165  
 34166  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+24, ts+15850))
 34167  	return TCL_ERROR
 34168  }
 34169  
 34170  func sqlite_abort(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 34171  	libc.Xexit(tls, 255)
 34172  
 34173  	return TCL_OK
 34174  }
 34175  
 34176  func testFunc(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 34177  	var zArg0 uintptr
 34178  __1:
 34179  	if !(argc >= 2) {
 34180  		goto __2
 34181  	}
 34182  	zArg0 = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 34183  	if !(zArg0 != 0) {
 34184  		goto __3
 34185  	}
 34186  	if !(0 == sqlite3.Xsqlite3StrICmp(tls, zArg0, ts+2577)) {
 34187  		goto __5
 34188  	}
 34189  	sqlite3.Xsqlite3_result_int(tls, context, sqlite3.Xsqlite3_value_int(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8))))
 34190  	goto __6
 34191  __5:
 34192  	if !(sqlite3.Xsqlite3StrICmp(tls, zArg0, ts+3973) == 0) {
 34193  		goto __7
 34194  	}
 34195  	sqlite3.Xsqlite3_result_int64(tls, context, sqlite3.Xsqlite3_value_int64(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8))))
 34196  	goto __8
 34197  __7:
 34198  	if !(sqlite3.Xsqlite3StrICmp(tls, zArg0, ts+15908) == 0) {
 34199  		goto __9
 34200  	}
 34201  	sqlite3.Xsqlite3_result_text(tls, context, sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8))), -1,
 34202  		libc.UintptrFromInt32(-1))
 34203  	goto __10
 34204  __9:
 34205  	if !(sqlite3.Xsqlite3StrICmp(tls, zArg0, ts+2562) == 0) {
 34206  		goto __11
 34207  	}
 34208  	sqlite3.Xsqlite3_result_double(tls, context, sqlite3.Xsqlite3_value_double(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8))))
 34209  	goto __12
 34210  __11:
 34211  	if !(sqlite3.Xsqlite3StrICmp(tls, zArg0, ts+7939) == 0) {
 34212  		goto __13
 34213  	}
 34214  	sqlite3.Xsqlite3_result_null(tls, context)
 34215  	goto __14
 34216  __13:
 34217  	if !(sqlite3.Xsqlite3StrICmp(tls, zArg0, ts+10013) == 0) {
 34218  		goto __15
 34219  	}
 34220  	sqlite3.Xsqlite3_result_value(tls, context, *(*uintptr)(unsafe.Pointer(argv + uintptr(sqlite3.Xsqlite3_value_int(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8))))*8)))
 34221  	goto __16
 34222  __15:
 34223  	goto error_out
 34224  __16:
 34225  	;
 34226  __14:
 34227  	;
 34228  __12:
 34229  	;
 34230  __10:
 34231  	;
 34232  __8:
 34233  	;
 34234  __6:
 34235  	;
 34236  	goto __4
 34237  __3:
 34238  	goto error_out
 34239  __4:
 34240  	;
 34241  	argc = argc - 2
 34242  	argv += 8 * uintptr(2)
 34243  	goto __1
 34244  __2:
 34245  	;
 34246  	return
 34247  
 34248  error_out:
 34249  	sqlite3.Xsqlite3_result_error(tls, context,
 34250  		ts+15915, -1)
 34251  }
 34252  
 34253  func test_register_func(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 34254  	bp := tls.Alloc(56)
 34255  	defer tls.Free(56)
 34256  
 34257  	var rc int32
 34258  	if argc != 3 {
 34259  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 34260  			ts+15983, 0))
 34261  		return TCL_ERROR
 34262  	}
 34263  	if getDbPointer(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)), bp+48) != 0 {
 34264  		return TCL_ERROR
 34265  	}
 34266  	rc = sqlite3.Xsqlite3_create_function(tls, *(*uintptr)(unsafe.Pointer(bp + 48)), *(*uintptr)(unsafe.Pointer(argv + 2*8)), -1, SQLITE_UTF8, uintptr(0),
 34267  		*(*uintptr)(unsafe.Pointer(&struct {
 34268  			f func(*libc.TLS, uintptr, int32, uintptr)
 34269  		}{testFunc})), uintptr(0), uintptr(0))
 34270  	if rc != 0 {
 34271  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, sqlite3.Xsqlite3ErrStr(tls, rc), 0))
 34272  		return TCL_ERROR
 34273  	}
 34274  	if sqlite3TestErrCode(tls, interp, *(*uintptr)(unsafe.Pointer(bp + 48)), rc) != 0 {
 34275  		return TCL_ERROR
 34276  	}
 34277  	return TCL_OK
 34278  }
 34279  
 34280  func test_finalize(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 34281  	bp := tls.Alloc(40)
 34282  	defer tls.Free(40)
 34283  
 34284  	var rc int32
 34285  	var db uintptr = uintptr(0)
 34286  
 34287  	if objc != 2 {
 34288  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 34289  			tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+16001, 0))
 34290  		return TCL_ERROR
 34291  	}
 34292  
 34293  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0 {
 34294  		return TCL_ERROR
 34295  	}
 34296  
 34297  	if *(*uintptr)(unsafe.Pointer(bp + 32)) != 0 {
 34298  		db = sqlite3.Xsqlite3_db_handle(tls, *(*uintptr)(unsafe.Pointer(bp + 32)))
 34299  	}
 34300  	rc = sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 32)))
 34301  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 34302  	if db != 0 && sqlite3TestErrCode(tls, interp, db, rc) != 0 {
 34303  		return TCL_ERROR
 34304  	}
 34305  	return TCL_OK
 34306  }
 34307  
 34308  func test_stmt_status(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 34309  	bp := tls.Alloc(16)
 34310  	defer tls.Free(16)
 34311  
 34312  	var iValue int32
 34313  	var i int32
 34314  	*(*int32)(unsafe.Pointer(bp + 8)) = 0
 34315  
 34316  	var zOpName uintptr
 34317  
 34318  	if objc != 4 {
 34319  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+16009)
 34320  		return TCL_ERROR
 34321  	}
 34322  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 34323  		return TCL_ERROR
 34324  	}
 34325  	zOpName = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 34326  	for i = 0; i < int32(uint64(unsafe.Sizeof(aOp))/uint64(unsafe.Sizeof(struct {
 34327  		FzName       uintptr
 34328  		Fop          int32
 34329  		F__ccgo_pad1 [4]byte
 34330  	}{}))); i++ {
 34331  		if libc.Xstrcmp(tls, aOp[i].FzName, zOpName) == 0 {
 34332  			*(*int32)(unsafe.Pointer(bp + 8)) = aOp[i].Fop
 34333  			break
 34334  		}
 34335  	}
 34336  	if i >= int32(uint64(unsafe.Sizeof(aOp))/uint64(unsafe.Sizeof(struct {
 34337  		FzName       uintptr
 34338  		Fop          int32
 34339  		F__ccgo_pad1 [4]byte
 34340  	}{}))) {
 34341  		if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+8) != 0 {
 34342  			return TCL_ERROR
 34343  		}
 34344  	}
 34345  	if tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+12) != 0 {
 34346  		return TCL_ERROR
 34347  	}
 34348  	iValue = sqlite3.Xsqlite3_stmt_status(tls, *(*uintptr)(unsafe.Pointer(bp)), *(*int32)(unsafe.Pointer(bp + 8)), *(*int32)(unsafe.Pointer(bp + 12)))
 34349  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, iValue))
 34350  	return TCL_OK
 34351  }
 34352  
 34353  var aOp = [7]struct {
 34354  	FzName       uintptr
 34355  	Fop          int32
 34356  	F__ccgo_pad1 [4]byte
 34357  }{
 34358  	{FzName: ts + 16034, Fop: SQLITE_STMTSTATUS_FULLSCAN_STEP},
 34359  	{FzName: ts + 16066, Fop: SQLITE_STMTSTATUS_SORT},
 34360  	{FzName: ts + 16089, Fop: SQLITE_STMTSTATUS_AUTOINDEX},
 34361  	{FzName: ts + 16117, Fop: SQLITE_STMTSTATUS_VM_STEP},
 34362  	{FzName: ts + 16143, Fop: SQLITE_STMTSTATUS_REPREPARE},
 34363  	{FzName: ts + 16171, Fop: SQLITE_STMTSTATUS_RUN},
 34364  	{FzName: ts + 16193, Fop: SQLITE_STMTSTATUS_MEMUSED},
 34365  }
 34366  
 34367  func test_config_sorterref(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 34368  	bp := tls.Alloc(12)
 34369  	defer tls.Free(12)
 34370  
 34371  	if objc != 2 {
 34372  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+16219)
 34373  		return TCL_ERROR
 34374  	}
 34375  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp+8) != 0 {
 34376  		return TCL_ERROR
 34377  	}
 34378  	sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_SORTERREF_SIZE, libc.VaList(bp, *(*int32)(unsafe.Pointer(bp + 8))))
 34379  	return TCL_OK
 34380  }
 34381  
 34382  func vfsCurrentTimeInt64(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 34383  	bp := tls.Alloc(8)
 34384  	defer tls.Free(8)
 34385  
 34386  	var pVfs uintptr = sqlite3.Xsqlite3_vfs_find(tls, uintptr(0))
 34387  	if objc != 1 {
 34388  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+584)
 34389  		return TCL_ERROR
 34390  	}
 34391  	(*struct {
 34392  		f func(*libc.TLS, uintptr, uintptr) int32
 34393  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pVfs)).FxCurrentTimeInt64})).f(tls, pVfs, bp)
 34394  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewWideIntObj(tls, *(*i64)(unsafe.Pointer(bp))))
 34395  	return TCL_OK
 34396  }
 34397  
 34398  func test_snapshot_get(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 34399  	bp := tls.Alloc(116)
 34400  	defer tls.Free(116)
 34401  
 34402  	var rc int32
 34403  
 34404  	var zName uintptr
 34405  	*(*uintptr)(unsafe.Pointer(bp + 8)) = uintptr(0)
 34406  
 34407  	if objc != 3 {
 34408  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+16225)
 34409  		return TCL_ERROR
 34410  	}
 34411  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 34412  		return TCL_ERROR
 34413  	}
 34414  	zName = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 34415  
 34416  	rc = sqlite3.Xsqlite3_snapshot_get(tls, *(*uintptr)(unsafe.Pointer(bp)), zName, bp+8)
 34417  	if rc != SQLITE_OK {
 34418  		tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3ErrName(tls, rc), -1))
 34419  		return TCL_ERROR
 34420  	} else {
 34421  		if sqlite3TestMakePointerStr(tls, interp, bp+16, *(*uintptr)(unsafe.Pointer(bp + 8))) != 0 {
 34422  			return TCL_ERROR
 34423  		}
 34424  		tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, bp+16, -1))
 34425  	}
 34426  	return TCL_OK
 34427  }
 34428  
 34429  func test_snapshot_recover(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 34430  	bp := tls.Alloc(8)
 34431  	defer tls.Free(8)
 34432  
 34433  	var rc int32
 34434  
 34435  	var zName uintptr
 34436  
 34437  	if objc != 3 {
 34438  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+16225)
 34439  		return TCL_ERROR
 34440  	}
 34441  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 34442  		return TCL_ERROR
 34443  	}
 34444  	zName = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 34445  
 34446  	rc = sqlite3.Xsqlite3_snapshot_recover(tls, *(*uintptr)(unsafe.Pointer(bp)), zName)
 34447  	if rc != SQLITE_OK {
 34448  		tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3ErrName(tls, rc), -1))
 34449  		return TCL_ERROR
 34450  	} else {
 34451  		tcl.XTcl_ResetResult(tls, interp)
 34452  	}
 34453  	return TCL_OK
 34454  }
 34455  
 34456  func test_snapshot_open(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 34457  	bp := tls.Alloc(8)
 34458  	defer tls.Free(8)
 34459  
 34460  	var rc int32
 34461  
 34462  	var zName uintptr
 34463  	var pSnapshot uintptr
 34464  
 34465  	if objc != 4 {
 34466  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+16235)
 34467  		return TCL_ERROR
 34468  	}
 34469  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 34470  		return TCL_ERROR
 34471  	}
 34472  	zName = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 34473  	pSnapshot = sqlite3TestTextToPtr(tls, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8))))
 34474  
 34475  	rc = sqlite3.Xsqlite3_snapshot_open(tls, *(*uintptr)(unsafe.Pointer(bp)), zName, pSnapshot)
 34476  	if rc != SQLITE_OK {
 34477  		tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3ErrName(tls, rc), -1))
 34478  		return TCL_ERROR
 34479  	} else {
 34480  		tcl.XTcl_ResetResult(tls, interp)
 34481  	}
 34482  	return TCL_OK
 34483  }
 34484  
 34485  func test_snapshot_free(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 34486  	var pSnapshot uintptr
 34487  	if objc != 2 {
 34488  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+16254)
 34489  		return TCL_ERROR
 34490  	}
 34491  	pSnapshot = sqlite3TestTextToPtr(tls, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))))
 34492  	sqlite3.Xsqlite3_snapshot_free(tls, pSnapshot)
 34493  	return TCL_OK
 34494  }
 34495  
 34496  func test_snapshot_cmp(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 34497  	var res int32
 34498  	var p1 uintptr
 34499  	var p2 uintptr
 34500  	if objc != 3 {
 34501  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+16263)
 34502  		return TCL_ERROR
 34503  	}
 34504  	p1 = sqlite3TestTextToPtr(tls, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))))
 34505  	p2 = sqlite3TestTextToPtr(tls, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8))))
 34506  	res = sqlite3.Xsqlite3_snapshot_cmp(tls, p1, p2)
 34507  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, res))
 34508  	return TCL_OK
 34509  }
 34510  
 34511  func test_snapshot_get_blob(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 34512  	bp := tls.Alloc(16)
 34513  	defer tls.Free(16)
 34514  
 34515  	var rc int32
 34516  
 34517  	var zName uintptr
 34518  	*(*uintptr)(unsafe.Pointer(bp + 8)) = uintptr(0)
 34519  
 34520  	if objc != 3 {
 34521  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+16225)
 34522  		return TCL_ERROR
 34523  	}
 34524  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 34525  		return TCL_ERROR
 34526  	}
 34527  	zName = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 34528  
 34529  	rc = sqlite3.Xsqlite3_snapshot_get(tls, *(*uintptr)(unsafe.Pointer(bp)), zName, bp+8)
 34530  	if rc != SQLITE_OK {
 34531  		tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3ErrName(tls, rc), -1))
 34532  		return TCL_ERROR
 34533  	} else {
 34534  		tcl.XTcl_SetObjResult(tls, interp,
 34535  			tcl.XTcl_NewByteArrayObj(tls, *(*uintptr)(unsafe.Pointer(bp + 8)), int32(unsafe.Sizeof(sqlite3_snapshot{}))))
 34536  		sqlite3.Xsqlite3_snapshot_free(tls, *(*uintptr)(unsafe.Pointer(bp + 8)))
 34537  	}
 34538  	return TCL_OK
 34539  }
 34540  
 34541  func test_snapshot_open_blob(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 34542  	bp := tls.Alloc(28)
 34543  	defer tls.Free(28)
 34544  
 34545  	var rc int32
 34546  
 34547  	var zName uintptr
 34548  	var pBlob uintptr
 34549  
 34550  	if objc != 4 {
 34551  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+16235)
 34552  		return TCL_ERROR
 34553  	}
 34554  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+16) != 0 {
 34555  		return TCL_ERROR
 34556  	}
 34557  	zName = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 34558  	pBlob = tcl.XTcl_GetByteArrayFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+24)
 34559  	if uint64(*(*int32)(unsafe.Pointer(bp + 24))) != uint64(unsafe.Sizeof(sqlite3_snapshot{})) {
 34560  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+16283, 0))
 34561  		return TCL_ERROR
 34562  	}
 34563  	rc = sqlite3.Xsqlite3_snapshot_open(tls, *(*uintptr)(unsafe.Pointer(bp + 16)), zName, pBlob)
 34564  	if rc != SQLITE_OK {
 34565  		tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3ErrName(tls, rc), -1))
 34566  		return TCL_ERROR
 34567  	}
 34568  	return TCL_OK
 34569  }
 34570  
 34571  func test_snapshot_cmp_blob(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 34572  	bp := tls.Alloc(24)
 34573  	defer tls.Free(24)
 34574  
 34575  	var res int32
 34576  	var p1 uintptr
 34577  	var p2 uintptr
 34578  
 34579  	if objc != 3 {
 34580  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+16263)
 34581  		return TCL_ERROR
 34582  	}
 34583  
 34584  	p1 = tcl.XTcl_GetByteArrayFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp+16)
 34585  	p2 = tcl.XTcl_GetByteArrayFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+20)
 34586  
 34587  	if uint64(*(*int32)(unsafe.Pointer(bp + 16))) != uint64(unsafe.Sizeof(sqlite3_snapshot{})) || *(*int32)(unsafe.Pointer(bp + 16)) != *(*int32)(unsafe.Pointer(bp + 20)) {
 34588  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+16283, 0))
 34589  		return TCL_ERROR
 34590  	}
 34591  
 34592  	res = sqlite3.Xsqlite3_snapshot_cmp(tls, p1, p2)
 34593  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, res))
 34594  	return TCL_OK
 34595  }
 34596  
 34597  func test_delete_database(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 34598  	var rc int32
 34599  	var zFile uintptr
 34600  	if objc != 2 {
 34601  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+16296)
 34602  		return TCL_ERROR
 34603  	}
 34604  	zFile = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 34605  	rc = sqlite3_delete_database(tls, zFile)
 34606  
 34607  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3ErrName(tls, rc), -1))
 34608  	return TCL_OK
 34609  }
 34610  
 34611  func test_atomic_batch_write(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 34612  	bp := tls.Alloc(32)
 34613  	defer tls.Free(32)
 34614  
 34615  	var zFile uintptr = uintptr(0)
 34616  	*(*uintptr)(unsafe.Pointer(bp + 16)) = uintptr(0)
 34617  	*(*uintptr)(unsafe.Pointer(bp + 24)) = uintptr(0)
 34618  	var bRes int32 = 0
 34619  	var dc int32 = 0
 34620  	var rc int32
 34621  
 34622  	if objc != 2 {
 34623  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+16301)
 34624  		return TCL_ERROR
 34625  	}
 34626  	zFile = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 34627  
 34628  	rc = sqlite3.Xsqlite3_open(tls, zFile, bp+16)
 34629  	if rc != SQLITE_OK {
 34630  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, sqlite3.Xsqlite3_errmsg(tls, *(*uintptr)(unsafe.Pointer(bp + 16))), 0))
 34631  		sqlite3.Xsqlite3_close(tls, *(*uintptr)(unsafe.Pointer(bp + 16)))
 34632  		return TCL_ERROR
 34633  	}
 34634  
 34635  	rc = sqlite3.Xsqlite3_file_control(tls, *(*uintptr)(unsafe.Pointer(bp + 16)), ts+85, SQLITE_FCNTL_FILE_POINTER, bp+24)
 34636  	dc = (*struct {
 34637  		f func(*libc.TLS, uintptr) int32
 34638  	})(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)))
 34639  	if dc&SQLITE_IOCAP_BATCH_ATOMIC != 0 {
 34640  		bRes = 1
 34641  	}
 34642  
 34643  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, bRes))
 34644  	sqlite3.Xsqlite3_close(tls, *(*uintptr)(unsafe.Pointer(bp + 16)))
 34645  	return TCL_OK
 34646  }
 34647  
 34648  func test_next_stmt(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 34649  	bp := tls.Alloc(114)
 34650  	defer tls.Free(114)
 34651  
 34652  	*(*uintptr)(unsafe.Pointer(bp + 48)) = uintptr(0)
 34653  
 34654  	if objc != 3 {
 34655  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 34656  			tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+16306, 0))
 34657  		return TCL_ERROR
 34658  	}
 34659  
 34660  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+48) != 0 {
 34661  		return TCL_ERROR
 34662  	}
 34663  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8))), bp+56) != 0 {
 34664  		return TCL_ERROR
 34665  	}
 34666  	*(*uintptr)(unsafe.Pointer(bp + 56)) = sqlite3.Xsqlite3_next_stmt(tls, *(*uintptr)(unsafe.Pointer(bp + 48)), *(*uintptr)(unsafe.Pointer(bp + 56)))
 34667  	if *(*uintptr)(unsafe.Pointer(bp + 56)) != 0 {
 34668  		if sqlite3TestMakePointerStr(tls, interp, bp+64, *(*uintptr)(unsafe.Pointer(bp + 56))) != 0 {
 34669  			return TCL_ERROR
 34670  		}
 34671  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, bp+64, 0))
 34672  	}
 34673  	return TCL_OK
 34674  }
 34675  
 34676  func test_stmt_readonly(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 34677  	bp := tls.Alloc(40)
 34678  	defer tls.Free(40)
 34679  
 34680  	var rc int32
 34681  
 34682  	if objc != 2 {
 34683  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 34684  			tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+16315, 0))
 34685  		return TCL_ERROR
 34686  	}
 34687  
 34688  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0 {
 34689  		return TCL_ERROR
 34690  	}
 34691  	rc = sqlite3.Xsqlite3_stmt_readonly(tls, *(*uintptr)(unsafe.Pointer(bp + 32)))
 34692  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, libc.Bool32(rc != 0)))
 34693  	return TCL_OK
 34694  }
 34695  
 34696  func test_stmt_isexplain(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 34697  	bp := tls.Alloc(40)
 34698  	defer tls.Free(40)
 34699  
 34700  	var rc int32
 34701  
 34702  	if objc != 2 {
 34703  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 34704  			tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+16315, 0))
 34705  		return TCL_ERROR
 34706  	}
 34707  
 34708  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0 {
 34709  		return TCL_ERROR
 34710  	}
 34711  	rc = sqlite3.Xsqlite3_stmt_isexplain(tls, *(*uintptr)(unsafe.Pointer(bp + 32)))
 34712  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, rc))
 34713  	return TCL_OK
 34714  }
 34715  
 34716  func test_stmt_busy(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 34717  	bp := tls.Alloc(40)
 34718  	defer tls.Free(40)
 34719  
 34720  	var rc int32
 34721  
 34722  	if objc != 2 {
 34723  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 34724  			tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+16315, 0))
 34725  		return TCL_ERROR
 34726  	}
 34727  
 34728  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0 {
 34729  		return TCL_ERROR
 34730  	}
 34731  	rc = sqlite3.Xsqlite3_stmt_busy(tls, *(*uintptr)(unsafe.Pointer(bp + 32)))
 34732  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, libc.Bool32(rc != 0)))
 34733  	return TCL_OK
 34734  }
 34735  
 34736  func uses_stmt_journal(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 34737  	bp := tls.Alloc(40)
 34738  	defer tls.Free(40)
 34739  
 34740  	if objc != 2 {
 34741  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 34742  			tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+16315, 0))
 34743  		return TCL_ERROR
 34744  	}
 34745  
 34746  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0 {
 34747  		return TCL_ERROR
 34748  	}
 34749  	sqlite3.Xsqlite3_stmt_readonly(tls, *(*uintptr)(unsafe.Pointer(bp + 32)))
 34750  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, libc.Bool32(int32(*(*uint8)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 32)) + 200))&0x20>>5) != 0)))
 34751  	return TCL_OK
 34752  }
 34753  
 34754  func test_reset(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 34755  	bp := tls.Alloc(40)
 34756  	defer tls.Free(40)
 34757  
 34758  	var rc int32
 34759  
 34760  	if objc != 2 {
 34761  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 34762  			tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+16001, 0))
 34763  		return TCL_ERROR
 34764  	}
 34765  
 34766  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0 {
 34767  		return TCL_ERROR
 34768  	}
 34769  
 34770  	rc = sqlite3.Xsqlite3_reset(tls, *(*uintptr)(unsafe.Pointer(bp + 32)))
 34771  	if *(*uintptr)(unsafe.Pointer(bp + 32)) != 0 && sqlite3TestErrCode(tls, interp, sqlite3.Xsqlite3_db_handle(tls, *(*uintptr)(unsafe.Pointer(bp + 32))), rc) != 0 {
 34772  		return TCL_ERROR
 34773  	}
 34774  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 34775  
 34776  	return TCL_OK
 34777  }
 34778  
 34779  func test_expired(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 34780  	bp := tls.Alloc(40)
 34781  	defer tls.Free(40)
 34782  
 34783  	if objc != 2 {
 34784  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 34785  			tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+16001, 0))
 34786  		return TCL_ERROR
 34787  	}
 34788  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0 {
 34789  		return TCL_ERROR
 34790  	}
 34791  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, libc.Bool32(sqlite3.Xsqlite3_expired(tls, *(*uintptr)(unsafe.Pointer(bp + 32))) != 0)))
 34792  	return TCL_OK
 34793  }
 34794  
 34795  func test_transfer_bind(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 34796  	bp := tls.Alloc(48)
 34797  	defer tls.Free(48)
 34798  
 34799  	if objc != 3 {
 34800  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 34801  			tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+16321, 0))
 34802  		return TCL_ERROR
 34803  	}
 34804  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0 {
 34805  		return TCL_ERROR
 34806  	}
 34807  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8))), bp+40) != 0 {
 34808  		return TCL_ERROR
 34809  	}
 34810  	tcl.XTcl_SetObjResult(tls, interp,
 34811  		tcl.XTcl_NewIntObj(tls, sqlite3.Xsqlite3_transfer_bindings(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), *(*uintptr)(unsafe.Pointer(bp + 40)))))
 34812  	return TCL_OK
 34813  }
 34814  
 34815  func test_changes(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 34816  	bp := tls.Alloc(40)
 34817  	defer tls.Free(40)
 34818  
 34819  	if objc != 2 {
 34820  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 34821  			tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))), ts+15001, 0))
 34822  		return TCL_ERROR
 34823  	}
 34824  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0 {
 34825  		return TCL_ERROR
 34826  	}
 34827  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, sqlite3.Xsqlite3_changes(tls, *(*uintptr)(unsafe.Pointer(bp + 32)))))
 34828  	return TCL_OK
 34829  }
 34830  
 34831  var sqlite_static_bind_value uintptr = uintptr(0)
 34832  var sqlite_static_bind_nbyte int32 = 0
 34833  
 34834  func test_bind(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 34835  	bp := tls.Alloc(142)
 34836  	defer tls.Free(142)
 34837  
 34838  	var rc int32
 34839  
 34840  	if argc != 5 {
 34841  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 34842  			ts+16340, 0))
 34843  		return TCL_ERROR
 34844  	}
 34845  	if getStmtPointer(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)), bp+80) != 0 {
 34846  		return TCL_ERROR
 34847  	}
 34848  	if tcl.XTcl_GetInt(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 2*8)), bp+88) != 0 {
 34849  		return TCL_ERROR
 34850  	}
 34851  	if libc.Xstrcmp(tls, *(*uintptr)(unsafe.Pointer(argv + 4*8)), ts+7939) == 0 {
 34852  		rc = sqlite3.Xsqlite3_bind_null(tls, *(*uintptr)(unsafe.Pointer(bp + 80)), *(*int32)(unsafe.Pointer(bp + 88)))
 34853  	} else if libc.Xstrcmp(tls, *(*uintptr)(unsafe.Pointer(argv + 4*8)), ts+16376) == 0 {
 34854  		rc = sqlite3.Xsqlite3_bind_text(tls, *(*uintptr)(unsafe.Pointer(bp + 80)), *(*int32)(unsafe.Pointer(bp + 88)), sqlite_static_bind_value, -1, uintptr(0))
 34855  	} else if libc.Xstrcmp(tls, *(*uintptr)(unsafe.Pointer(argv + 4*8)), ts+16383) == 0 {
 34856  		rc = sqlite3.Xsqlite3_bind_text(tls, *(*uintptr)(unsafe.Pointer(bp + 80)), *(*int32)(unsafe.Pointer(bp + 88)), sqlite_static_bind_value,
 34857  			sqlite_static_bind_nbyte, uintptr(0))
 34858  	} else if libc.Xstrcmp(tls, *(*uintptr)(unsafe.Pointer(argv + 4*8)), ts+16397) == 0 {
 34859  		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))
 34860  	} else if libc.Xstrcmp(tls, *(*uintptr)(unsafe.Pointer(argv + 4*8)), ts+16404) == 0 {
 34861  		rc = sqlite3.Xsqlite3_bind_text(tls, *(*uintptr)(unsafe.Pointer(bp + 80)), *(*int32)(unsafe.Pointer(bp + 88)), ts+16411, 10, uintptr(0))
 34862  	} else {
 34863  		tcl.XTcl_AppendResult(tls, interp,
 34864  			libc.VaList(bp+32, ts+16422, 0))
 34865  		return TCL_ERROR
 34866  	}
 34867  	if sqlite3TestErrCode(tls, interp, sqlite3.Xsqlite3_db_handle(tls, *(*uintptr)(unsafe.Pointer(bp + 80))), rc) != 0 {
 34868  		return TCL_ERROR
 34869  	}
 34870  	if rc != 0 {
 34871  		sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([50]uint8{})), bp+92, ts+16476, libc.VaList(bp+48, rc))
 34872  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+56, bp+92, sqlite3.Xsqlite3ErrStr(tls, rc), 0))
 34873  		return TCL_ERROR
 34874  	}
 34875  	return TCL_OK
 34876  }
 34877  
 34878  var pTestCollateInterp uintptr
 34879  
 34880  func test_collate_func(tls *libc.TLS, pCtx uintptr, nA int32, zA uintptr, nB int32, zB uintptr) int32 {
 34881  	bp := tls.Alloc(4)
 34882  	defer tls.Free(4)
 34883  
 34884  	var i uintptr = pTestCollateInterp
 34885  	var encin int32 = int32(pCtx)
 34886  
 34887  	var n int32
 34888  	var pVal uintptr
 34889  	var pX uintptr
 34890  
 34891  	pX = tcl.XTcl_NewStringObj(tls, ts+16482, -1)
 34892  	(*Tcl_Obj)(unsafe.Pointer(pX)).FrefCount++
 34893  
 34894  	switch encin {
 34895  	case SQLITE_UTF8:
 34896  		tcl.XTcl_ListObjAppendElement(tls, i, pX, tcl.XTcl_NewStringObj(tls, ts+16495, -1))
 34897  		break
 34898  	case SQLITE_UTF16LE:
 34899  		tcl.XTcl_ListObjAppendElement(tls, i, pX, tcl.XTcl_NewStringObj(tls, ts+16501, -1))
 34900  		break
 34901  	case SQLITE_UTF16BE:
 34902  		tcl.XTcl_ListObjAppendElement(tls, i, pX, tcl.XTcl_NewStringObj(tls, ts+16510, -1))
 34903  		break
 34904  	default:
 34905  	}
 34906  
 34907  	sqlite3.Xsqlite3BeginBenignMalloc(tls)
 34908  	pVal = sqlite3.Xsqlite3ValueNew(tls, uintptr(0))
 34909  	if pVal != 0 {
 34910  		sqlite3.Xsqlite3ValueSetStr(tls, pVal, nA, zA, uint8(encin), uintptr(0))
 34911  		n = sqlite3.Xsqlite3_value_bytes(tls, pVal)
 34912  		tcl.XTcl_ListObjAppendElement(tls, i, pX,
 34913  			tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3_value_text(tls, pVal), n))
 34914  		sqlite3.Xsqlite3ValueSetStr(tls, pVal, nB, zB, uint8(encin), uintptr(0))
 34915  		n = sqlite3.Xsqlite3_value_bytes(tls, pVal)
 34916  		tcl.XTcl_ListObjAppendElement(tls, i, pX,
 34917  			tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3_value_text(tls, pVal), n))
 34918  		sqlite3.Xsqlite3ValueFree(tls, pVal)
 34919  	}
 34920  	sqlite3.Xsqlite3EndBenignMalloc(tls)
 34921  
 34922  	tcl.XTcl_EvalObjEx(tls, i, pX, 0)
 34923  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 34924  		var _objPtr uintptr = pX
 34925  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 34926  			tcl.XTclFreeObj(tls, _objPtr)
 34927  		}
 34928  	}
 34929  	tcl.XTcl_GetIntFromObj(tls, i, tcl.XTcl_GetObjResult(tls, i), bp)
 34930  	return *(*int32)(unsafe.Pointer(bp))
 34931  }
 34932  
 34933  func test_collate(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 34934  	bp := tls.Alloc(60)
 34935  	defer tls.Free(60)
 34936  
 34937  	var pVal uintptr
 34938  	var rc int32
 34939  	var zUtf16 uintptr
 34940  
 34941  	if !(objc != 5) {
 34942  		goto __1
 34943  	}
 34944  	goto bad_args
 34945  __1:
 34946  	;
 34947  	pTestCollateInterp = interp
 34948  	if !(getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+48) != 0) {
 34949  		goto __2
 34950  	}
 34951  	return TCL_ERROR
 34952  __2:
 34953  	;
 34954  	if !(TCL_OK != tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+56)) {
 34955  		goto __3
 34956  	}
 34957  	return TCL_ERROR
 34958  __3:
 34959  	;
 34960  	rc = sqlite3.Xsqlite3_create_collation(tls, *(*uintptr)(unsafe.Pointer(bp + 48)), ts+16482, SQLITE_UTF8,
 34961  		uintptr(SQLITE_UTF8), func() uintptr {
 34962  			if *(*int32)(unsafe.Pointer(bp + 56)) != 0 {
 34963  				return *(*uintptr)(unsafe.Pointer(&struct {
 34964  					f func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32
 34965  				}{test_collate_func}))
 34966  			}
 34967  			return uintptr(0)
 34968  		}())
 34969  	if !(rc == SQLITE_OK) {
 34970  		goto __4
 34971  	}
 34972  	if !(TCL_OK != tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+56)) {
 34973  		goto __5
 34974  	}
 34975  	return TCL_ERROR
 34976  __5:
 34977  	;
 34978  	rc = sqlite3.Xsqlite3_create_collation(tls, *(*uintptr)(unsafe.Pointer(bp + 48)), ts+16482, SQLITE_UTF16LE,
 34979  		uintptr(SQLITE_UTF16LE), func() uintptr {
 34980  			if *(*int32)(unsafe.Pointer(bp + 56)) != 0 {
 34981  				return *(*uintptr)(unsafe.Pointer(&struct {
 34982  					f func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32
 34983  				}{test_collate_func}))
 34984  			}
 34985  			return uintptr(0)
 34986  		}())
 34987  	if !(TCL_OK != tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 4*8)), bp+56)) {
 34988  		goto __6
 34989  	}
 34990  	return TCL_ERROR
 34991  __6:
 34992  	;
 34993  	sqlite3.Xsqlite3_mutex_enter(tls, (*sqlite31)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 48)))).Fmutex)
 34994  	pVal = sqlite3.Xsqlite3ValueNew(tls, *(*uintptr)(unsafe.Pointer(bp + 48)))
 34995  	sqlite3.Xsqlite3ValueSetStr(tls, pVal, -1, ts+16482, uint8(SQLITE_UTF8), uintptr(0))
 34996  	zUtf16 = sqlite3.Xsqlite3ValueText(tls, pVal, func() uint8 {
 34997  		if int32(*(*uint8)(unsafe.Pointer(uintptr(unsafe.Pointer(&sqlite3.Xsqlite3one))))) == 0 {
 34998  			return uint8(SQLITE_UTF16BE)
 34999  		}
 35000  		return uint8(SQLITE_UTF16LE)
 35001  	}())
 35002  	if !((*sqlite31)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 48)))).FmallocFailed != 0) {
 35003  		goto __7
 35004  	}
 35005  	rc = SQLITE_NOMEM
 35006  	goto __8
 35007  __7:
 35008  	rc = sqlite3.Xsqlite3_create_collation16(tls, *(*uintptr)(unsafe.Pointer(bp + 48)), zUtf16, SQLITE_UTF16BE,
 35009  		uintptr(SQLITE_UTF16BE), func() uintptr {
 35010  			if *(*int32)(unsafe.Pointer(bp + 56)) != 0 {
 35011  				return *(*uintptr)(unsafe.Pointer(&struct {
 35012  					f func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32
 35013  				}{test_collate_func}))
 35014  			}
 35015  			return uintptr(0)
 35016  		}())
 35017  __8:
 35018  	;
 35019  	sqlite3.Xsqlite3ValueFree(tls, pVal)
 35020  	sqlite3.Xsqlite3_mutex_leave(tls, (*sqlite31)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 48)))).Fmutex)
 35021  __4:
 35022  	;
 35023  	if !(sqlite3TestErrCode(tls, interp, *(*uintptr)(unsafe.Pointer(bp + 48)), rc) != 0) {
 35024  		goto __9
 35025  	}
 35026  	return TCL_ERROR
 35027  __9:
 35028  	;
 35029  	if !(rc != SQLITE_OK) {
 35030  		goto __10
 35031  	}
 35032  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, sqlite3.Xsqlite3ErrName(tls, rc), 0))
 35033  	return TCL_ERROR
 35034  __10:
 35035  	;
 35036  	return TCL_OK
 35037  
 35038  bad_args:
 35039  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+16, ts+14949,
 35040  		tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+16519, 0))
 35041  	return TCL_ERROR
 35042  }
 35043  
 35044  func test_utf16bin_collate_func(tls *libc.TLS, pCtx uintptr, nA int32, zA uintptr, nB int32, zB uintptr) int32 {
 35045  	var nCmp int32 = func() int32 {
 35046  		if nA > nB {
 35047  			return nB
 35048  		}
 35049  		return nA
 35050  	}()
 35051  	var res int32 = libc.Xmemcmp(tls, zA, zB, uint64(nCmp))
 35052  	if res == 0 {
 35053  		res = nA - nB
 35054  	}
 35055  	return res
 35056  }
 35057  
 35058  func test_utf16bin_collate(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 35059  	bp := tls.Alloc(8)
 35060  	defer tls.Free(8)
 35061  
 35062  	var rc int32
 35063  
 35064  	if !(objc != 2) {
 35065  		goto __1
 35066  	}
 35067  	goto bad_args
 35068  __1:
 35069  	;
 35070  	if !(getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0) {
 35071  		goto __2
 35072  	}
 35073  	return TCL_ERROR
 35074  __2:
 35075  	;
 35076  	rc = sqlite3.Xsqlite3_create_collation(tls, *(*uintptr)(unsafe.Pointer(bp)), ts+16552, SQLITE_UTF16, uintptr(0),
 35077  		*(*uintptr)(unsafe.Pointer(&struct {
 35078  			f func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32
 35079  		}{test_utf16bin_collate_func})))
 35080  	if !(sqlite3TestErrCode(tls, interp, *(*uintptr)(unsafe.Pointer(bp)), rc) != 0) {
 35081  		goto __3
 35082  	}
 35083  	return TCL_ERROR
 35084  __3:
 35085  	;
 35086  	return TCL_OK
 35087  
 35088  bad_args:
 35089  	tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2050)
 35090  	return TCL_ERROR
 35091  }
 35092  
 35093  var zNeededCollation [200]uint8
 35094  var pzNeededCollation uintptr = 0
 35095  
 35096  func test_collate_needed_cb(tls *libc.TLS, pCtx uintptr, db uintptr, eTextRep int32, pName uintptr) {
 35097  	var enc int32 = int32((*sqlite31)(unsafe.Pointer(db)).Fenc)
 35098  	var i int32
 35099  	var z uintptr
 35100  	z = pName
 35101  	i = 0
 35102  	for ; *(*uint8)(unsafe.Pointer(z)) != 0 || *(*uint8)(unsafe.Pointer(z + 1)) != 0; z++ {
 35103  		if *(*uint8)(unsafe.Pointer(z)) != 0 {
 35104  			zNeededCollation[libc.PostIncInt32(&i, 1)] = *(*uint8)(unsafe.Pointer(z))
 35105  		}
 35106  	}
 35107  	zNeededCollation[i] = uint8(0)
 35108  	sqlite3.Xsqlite3_create_collation(tls,
 35109  		db, ts+16482, int32((*sqlite31)(unsafe.Pointer(db)).Fenc), uintptr(intptr_t(enc)), *(*uintptr)(unsafe.Pointer(&struct {
 35110  			f func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32
 35111  		}{test_collate_func})))
 35112  }
 35113  
 35114  func test_collate_needed(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 35115  	bp := tls.Alloc(8)
 35116  	defer tls.Free(8)
 35117  
 35118  	var rc int32
 35119  
 35120  	if !(objc != 2) {
 35121  		goto __1
 35122  	}
 35123  	goto bad_args
 35124  __1:
 35125  	;
 35126  	if !(getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0) {
 35127  		goto __2
 35128  	}
 35129  	return TCL_ERROR
 35130  __2:
 35131  	;
 35132  	rc = sqlite3.Xsqlite3_collation_needed16(tls, *(*uintptr)(unsafe.Pointer(bp)), uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 35133  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr)
 35134  	}{test_collate_needed_cb})))
 35135  	zNeededCollation[0] = uint8(0)
 35136  	if !(sqlite3TestErrCode(tls, interp, *(*uintptr)(unsafe.Pointer(bp)), rc) != 0) {
 35137  		goto __3
 35138  	}
 35139  	return TCL_ERROR
 35140  __3:
 35141  	;
 35142  	return TCL_OK
 35143  
 35144  bad_args:
 35145  	tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2050)
 35146  	return TCL_ERROR
 35147  }
 35148  
 35149  var unaligned_string_counter int32 = 0
 35150  
 35151  func alignmentCollFunc(tls *libc.TLS, NotUsed uintptr, nKey1 int32, pKey1 uintptr, nKey2 int32, pKey2 uintptr) int32 {
 35152  	var rc int32
 35153  	var n int32
 35154  	if nKey1 < nKey2 {
 35155  		n = nKey1
 35156  	} else {
 35157  		n = nKey2
 35158  	}
 35159  	if nKey1 > 0 && 1 == 1&int32(pKey1) {
 35160  		unaligned_string_counter++
 35161  	}
 35162  	if nKey2 > 0 && 1 == 1&int32(pKey2) {
 35163  		unaligned_string_counter++
 35164  	}
 35165  	rc = libc.Xmemcmp(tls, pKey1, pKey2, uint64(n))
 35166  	if rc == 0 {
 35167  		rc = nKey1 - nKey2
 35168  	}
 35169  	return rc
 35170  }
 35171  
 35172  func add_alignment_test_collations(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 35173  	bp := tls.Alloc(8)
 35174  	defer tls.Free(8)
 35175  
 35176  	if objc >= 2 {
 35177  		if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 35178  			return TCL_ERROR
 35179  		}
 35180  		sqlite3.Xsqlite3_create_collation(tls, *(*uintptr)(unsafe.Pointer(bp)), ts+16561, SQLITE_UTF16,
 35181  			uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 35182  				f func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32
 35183  			}{alignmentCollFunc})))
 35184  		sqlite3.Xsqlite3_create_collation(tls, *(*uintptr)(unsafe.Pointer(bp)), ts+16577, SQLITE_UTF16_ALIGNED,
 35185  			uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 35186  				f func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32
 35187  			}{alignmentCollFunc})))
 35188  	}
 35189  	return SQLITE_OK
 35190  }
 35191  
 35192  func test_function_utf8(tls *libc.TLS, pCtx uintptr, nArg int32, argv uintptr) {
 35193  	var interp uintptr
 35194  	var pX uintptr
 35195  	var pVal uintptr
 35196  	interp = sqlite3.Xsqlite3_user_data(tls, pCtx)
 35197  	pX = tcl.XTcl_NewStringObj(tls, ts+16591, -1)
 35198  	(*Tcl_Obj)(unsafe.Pointer(pX)).FrefCount++
 35199  	tcl.XTcl_ListObjAppendElement(tls, interp, pX, tcl.XTcl_NewStringObj(tls, ts+16495, -1))
 35200  	tcl.XTcl_ListObjAppendElement(tls, interp, pX,
 35201  		tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv))), -1))
 35202  	tcl.XTcl_EvalObjEx(tls, interp, pX, 0)
 35203  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 35204  		var _objPtr uintptr = pX
 35205  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 35206  			tcl.XTclFreeObj(tls, _objPtr)
 35207  		}
 35208  	}
 35209  	sqlite3.Xsqlite3_result_text(tls, pCtx, tcl.XTcl_GetStringResult(tls, interp), -1, libc.UintptrFromInt32(-1))
 35210  	pVal = sqlite3.Xsqlite3ValueNew(tls, uintptr(0))
 35211  	sqlite3.Xsqlite3ValueSetStr(tls, pVal, -1, tcl.XTcl_GetStringResult(tls, interp),
 35212  		uint8(SQLITE_UTF8), uintptr(0))
 35213  	sqlite3.Xsqlite3_result_text16be(tls, pCtx, sqlite3.Xsqlite3_value_text16be(tls, pVal),
 35214  		-1, libc.UintptrFromInt32(-1))
 35215  	sqlite3.Xsqlite3ValueFree(tls, pVal)
 35216  }
 35217  
 35218  func test_function_utf16le(tls *libc.TLS, pCtx uintptr, nArg int32, argv uintptr) {
 35219  	var interp uintptr
 35220  	var pX uintptr
 35221  	var pVal uintptr
 35222  	interp = sqlite3.Xsqlite3_user_data(tls, pCtx)
 35223  	pX = tcl.XTcl_NewStringObj(tls, ts+16591, -1)
 35224  	(*Tcl_Obj)(unsafe.Pointer(pX)).FrefCount++
 35225  	tcl.XTcl_ListObjAppendElement(tls, interp, pX, tcl.XTcl_NewStringObj(tls, ts+16501, -1))
 35226  	tcl.XTcl_ListObjAppendElement(tls, interp, pX,
 35227  		tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv))), -1))
 35228  	tcl.XTcl_EvalObjEx(tls, interp, pX, 0)
 35229  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 35230  		var _objPtr uintptr = pX
 35231  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 35232  			tcl.XTclFreeObj(tls, _objPtr)
 35233  		}
 35234  	}
 35235  	pVal = sqlite3.Xsqlite3ValueNew(tls, uintptr(0))
 35236  	sqlite3.Xsqlite3ValueSetStr(tls, pVal, -1, tcl.XTcl_GetStringResult(tls, interp),
 35237  		uint8(SQLITE_UTF8), uintptr(0))
 35238  	sqlite3.Xsqlite3_result_text(tls, pCtx, sqlite3.Xsqlite3_value_text(tls, pVal), -1, libc.UintptrFromInt32(-1))
 35239  	sqlite3.Xsqlite3ValueFree(tls, pVal)
 35240  }
 35241  
 35242  func test_function_utf16be(tls *libc.TLS, pCtx uintptr, nArg int32, argv uintptr) {
 35243  	var interp uintptr
 35244  	var pX uintptr
 35245  	var pVal uintptr
 35246  	interp = sqlite3.Xsqlite3_user_data(tls, pCtx)
 35247  	pX = tcl.XTcl_NewStringObj(tls, ts+16591, -1)
 35248  	(*Tcl_Obj)(unsafe.Pointer(pX)).FrefCount++
 35249  	tcl.XTcl_ListObjAppendElement(tls, interp, pX, tcl.XTcl_NewStringObj(tls, ts+16510, -1))
 35250  	tcl.XTcl_ListObjAppendElement(tls, interp, pX,
 35251  		tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv))), -1))
 35252  	tcl.XTcl_EvalObjEx(tls, interp, pX, 0)
 35253  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 35254  		var _objPtr uintptr = pX
 35255  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 35256  			tcl.XTclFreeObj(tls, _objPtr)
 35257  		}
 35258  	}
 35259  	pVal = sqlite3.Xsqlite3ValueNew(tls, uintptr(0))
 35260  	sqlite3.Xsqlite3ValueSetStr(tls, pVal, -1, tcl.XTcl_GetStringResult(tls, interp),
 35261  		uint8(SQLITE_UTF8), uintptr(0))
 35262  	sqlite3.Xsqlite3_result_text16(tls, pCtx, sqlite3.Xsqlite3_value_text16le(tls, pVal),
 35263  		-1, libc.UintptrFromInt32(-1))
 35264  	sqlite3.Xsqlite3_result_text16be(tls, pCtx, sqlite3.Xsqlite3_value_text16le(tls, pVal),
 35265  		-1, libc.UintptrFromInt32(-1))
 35266  	sqlite3.Xsqlite3_result_text16le(tls, pCtx, sqlite3.Xsqlite3_value_text16le(tls, pVal),
 35267  		-1, libc.UintptrFromInt32(-1))
 35268  	sqlite3.Xsqlite3ValueFree(tls, pVal)
 35269  }
 35270  
 35271  func test_function(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 35272  	bp := tls.Alloc(44)
 35273  	defer tls.Free(44)
 35274  
 35275  	if !(objc != 5) {
 35276  		goto __1
 35277  	}
 35278  	goto bad_args
 35279  __1:
 35280  	;
 35281  	if !(getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0) {
 35282  		goto __2
 35283  	}
 35284  	return TCL_ERROR
 35285  __2:
 35286  	;
 35287  	if !(TCL_OK != tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+40)) {
 35288  		goto __3
 35289  	}
 35290  	return TCL_ERROR
 35291  __3:
 35292  	;
 35293  	if !(*(*int32)(unsafe.Pointer(bp + 40)) != 0) {
 35294  		goto __4
 35295  	}
 35296  	sqlite3.Xsqlite3_create_function(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), ts+16591, 1, SQLITE_UTF8,
 35297  		interp, *(*uintptr)(unsafe.Pointer(&struct {
 35298  			f func(*libc.TLS, uintptr, int32, uintptr)
 35299  		}{test_function_utf8})), uintptr(0), uintptr(0))
 35300  __4:
 35301  	;
 35302  	if !(TCL_OK != tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+40)) {
 35303  		goto __5
 35304  	}
 35305  	return TCL_ERROR
 35306  __5:
 35307  	;
 35308  	if !(*(*int32)(unsafe.Pointer(bp + 40)) != 0) {
 35309  		goto __6
 35310  	}
 35311  	sqlite3.Xsqlite3_create_function(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), ts+16591, 1, SQLITE_UTF16LE,
 35312  		interp, *(*uintptr)(unsafe.Pointer(&struct {
 35313  			f func(*libc.TLS, uintptr, int32, uintptr)
 35314  		}{test_function_utf16le})), uintptr(0), uintptr(0))
 35315  __6:
 35316  	;
 35317  	if !(TCL_OK != tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 4*8)), bp+40)) {
 35318  		goto __7
 35319  	}
 35320  	return TCL_ERROR
 35321  __7:
 35322  	;
 35323  	if !(*(*int32)(unsafe.Pointer(bp + 40)) != 0) {
 35324  		goto __8
 35325  	}
 35326  	sqlite3.Xsqlite3_create_function(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), ts+16591, 1, SQLITE_UTF16BE,
 35327  		interp, *(*uintptr)(unsafe.Pointer(&struct {
 35328  			f func(*libc.TLS, uintptr, int32, uintptr)
 35329  		}{test_function_utf16be})), uintptr(0), uintptr(0))
 35330  __8:
 35331  	;
 35332  	return TCL_OK
 35333  bad_args:
 35334  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 35335  		tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+16519, 0))
 35336  	return TCL_ERROR
 35337  }
 35338  
 35339  func test_errstr(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 35340  	var zCode uintptr
 35341  	var i int32
 35342  	if objc != 1 {
 35343  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+16605)
 35344  	}
 35345  
 35346  	zCode = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 35347  	for i = 0; i < 200; i++ {
 35348  		if 0 == libc.Xstrcmp(tls, sqlite3.Xsqlite3ErrName(tls, i), zCode) {
 35349  			break
 35350  		}
 35351  	}
 35352  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrStr(tls, i), uintptr(0))
 35353  	return TCL_OK
 35354  }
 35355  
 35356  func test_breakpoint(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 35357  	return TCL_OK
 35358  }
 35359  
 35360  func test_bind_zeroblob(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 35361  	bp := tls.Alloc(16)
 35362  	defer tls.Free(16)
 35363  
 35364  	var rc int32
 35365  
 35366  	if objc != 4 {
 35367  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+16618)
 35368  		return TCL_ERROR
 35369  	}
 35370  
 35371  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 35372  		return TCL_ERROR
 35373  	}
 35374  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+8) != 0 {
 35375  		return TCL_ERROR
 35376  	}
 35377  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+12) != 0 {
 35378  		return TCL_ERROR
 35379  	}
 35380  
 35381  	rc = sqlite3.Xsqlite3_bind_zeroblob(tls, *(*uintptr)(unsafe.Pointer(bp)), *(*int32)(unsafe.Pointer(bp + 8)), *(*int32)(unsafe.Pointer(bp + 12)))
 35382  	if sqlite3TestErrCode(tls, interp, sqlite3.Xsqlite3_db_handle(tls, *(*uintptr)(unsafe.Pointer(bp))), rc) != 0 {
 35383  		return TCL_ERROR
 35384  	}
 35385  	if rc != SQLITE_OK {
 35386  		return TCL_ERROR
 35387  	}
 35388  
 35389  	return TCL_OK
 35390  }
 35391  
 35392  func test_bind_zeroblob64(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 35393  	bp := tls.Alloc(40)
 35394  	defer tls.Free(40)
 35395  
 35396  	var rc int32
 35397  
 35398  	if objc != 4 {
 35399  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+16618)
 35400  		return TCL_ERROR
 35401  	}
 35402  
 35403  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+16) != 0 {
 35404  		return TCL_ERROR
 35405  	}
 35406  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+24) != 0 {
 35407  		return TCL_ERROR
 35408  	}
 35409  	if tcl.XTcl_GetWideIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+32) != 0 {
 35410  		return TCL_ERROR
 35411  	}
 35412  
 35413  	rc = sqlite3.Xsqlite3_bind_zeroblob64(tls, *(*uintptr)(unsafe.Pointer(bp + 16)), *(*int32)(unsafe.Pointer(bp + 24)), uint64(*(*Tcl_WideInt)(unsafe.Pointer(bp + 32))))
 35414  	if sqlite3TestErrCode(tls, interp, sqlite3.Xsqlite3_db_handle(tls, *(*uintptr)(unsafe.Pointer(bp + 16))), rc) != 0 {
 35415  		return TCL_ERROR
 35416  	}
 35417  	if rc != SQLITE_OK {
 35418  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, sqlite3.Xsqlite3ErrName(tls, rc), 0))
 35419  		return TCL_ERROR
 35420  	}
 35421  
 35422  	return TCL_OK
 35423  }
 35424  
 35425  func test_bind_int(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 35426  	bp := tls.Alloc(48)
 35427  	defer tls.Free(48)
 35428  
 35429  	var rc int32
 35430  
 35431  	if objc != 4 {
 35432  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 35433  			tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+16629, 0))
 35434  		return TCL_ERROR
 35435  	}
 35436  
 35437  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0 {
 35438  		return TCL_ERROR
 35439  	}
 35440  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+40) != 0 {
 35441  		return TCL_ERROR
 35442  	}
 35443  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+44) != 0 {
 35444  		return TCL_ERROR
 35445  	}
 35446  
 35447  	rc = sqlite3.Xsqlite3_bind_int(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), *(*int32)(unsafe.Pointer(bp + 40)), *(*int32)(unsafe.Pointer(bp + 44)))
 35448  	if sqlite3TestErrCode(tls, interp, sqlite3.Xsqlite3_db_handle(tls, *(*uintptr)(unsafe.Pointer(bp + 32))), rc) != 0 {
 35449  		return TCL_ERROR
 35450  	}
 35451  	if rc != SQLITE_OK {
 35452  		return TCL_ERROR
 35453  	}
 35454  
 35455  	return TCL_OK
 35456  }
 35457  
 35458  func test_intarray_addr(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 35459  	var i int32
 35460  
 35461  	sqlite3.Xsqlite3_free(tls, p)
 35462  	p = uintptr(0)
 35463  	if objc > 1 {
 35464  		p = sqlite3.Xsqlite3_malloc(tls, int32(uint64(unsafe.Sizeof(int32(0)))*uint64(objc-1)))
 35465  		if p == uintptr(0) {
 35466  			return TCL_ERROR
 35467  		}
 35468  		for i = 0; i < objc-1; i++ {
 35469  			if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(1+i)*8)), p+uintptr(i)*4) != 0 {
 35470  				sqlite3.Xsqlite3_free(tls, p)
 35471  				p = uintptr(0)
 35472  				return TCL_ERROR
 35473  			}
 35474  		}
 35475  	}
 35476  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewWideIntObj(tls, int64(p)))
 35477  	return TCL_OK
 35478  }
 35479  
 35480  var p uintptr = uintptr(0)
 35481  
 35482  func test_int64array_addr(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 35483  	bp := tls.Alloc(8)
 35484  	defer tls.Free(8)
 35485  
 35486  	var i int32
 35487  
 35488  	sqlite3.Xsqlite3_free(tls, p1)
 35489  	p1 = uintptr(0)
 35490  	if objc > 1 {
 35491  		p1 = sqlite3.Xsqlite3_malloc(tls, int32(uint64(unsafe.Sizeof(sqlite3_int64(0)))*uint64(objc-1)))
 35492  		if p1 == uintptr(0) {
 35493  			return TCL_ERROR
 35494  		}
 35495  		for i = 0; i < objc-1; i++ {
 35496  			if tcl.XTcl_GetWideIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(1+i)*8)), bp) != 0 {
 35497  				sqlite3.Xsqlite3_free(tls, p1)
 35498  				p1 = uintptr(0)
 35499  				return TCL_ERROR
 35500  			}
 35501  			*(*sqlite3_int64)(unsafe.Pointer(p1 + uintptr(i)*8)) = *(*Tcl_WideInt)(unsafe.Pointer(bp))
 35502  		}
 35503  	}
 35504  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewWideIntObj(tls, int64(p1)))
 35505  	return TCL_OK
 35506  }
 35507  
 35508  var p1 uintptr = uintptr(0)
 35509  
 35510  func test_doublearray_addr(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 35511  	var i int32
 35512  
 35513  	sqlite3.Xsqlite3_free(tls, p2)
 35514  	p2 = uintptr(0)
 35515  	if objc > 1 {
 35516  		p2 = sqlite3.Xsqlite3_malloc(tls, int32(uint64(unsafe.Sizeof(float64(0)))*uint64(objc-1)))
 35517  		if p2 == uintptr(0) {
 35518  			return TCL_ERROR
 35519  		}
 35520  		for i = 0; i < objc-1; i++ {
 35521  			if tcl.XTcl_GetDoubleFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(1+i)*8)), p2+uintptr(i)*8) != 0 {
 35522  				sqlite3.Xsqlite3_free(tls, p2)
 35523  				p2 = uintptr(0)
 35524  				return TCL_ERROR
 35525  			}
 35526  		}
 35527  	}
 35528  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewWideIntObj(tls, int64(p2)))
 35529  	return TCL_OK
 35530  }
 35531  
 35532  var p2 uintptr = uintptr(0)
 35533  
 35534  func test_textarray_addr(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 35535  	bp := tls.Alloc(8)
 35536  	defer tls.Free(8)
 35537  
 35538  	var i int32
 35539  
 35540  	for i = 0; i < n; i++ {
 35541  		sqlite3.Xsqlite3_free(tls, *(*uintptr)(unsafe.Pointer(p3 + uintptr(i)*8)))
 35542  	}
 35543  	sqlite3.Xsqlite3_free(tls, p3)
 35544  	p3 = uintptr(0)
 35545  	if objc > 1 {
 35546  		p3 = sqlite3.Xsqlite3_malloc(tls, int32(uint64(unsafe.Sizeof(uintptr(0)))*uint64(objc-1)))
 35547  		if p3 == uintptr(0) {
 35548  			return TCL_ERROR
 35549  		}
 35550  		for i = 0; i < objc-1; i++ {
 35551  			*(*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)))))
 35552  		}
 35553  	}
 35554  	n = objc - 1
 35555  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewWideIntObj(tls, int64(p3)))
 35556  	return TCL_OK
 35557  }
 35558  
 35559  var n int32 = 0
 35560  var p3 uintptr = uintptr(0)
 35561  
 35562  func test_bind_int64(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 35563  	bp := tls.Alloc(56)
 35564  	defer tls.Free(56)
 35565  
 35566  	var rc int32
 35567  
 35568  	if objc != 4 {
 35569  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 35570  			tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+16629, 0))
 35571  		return TCL_ERROR
 35572  	}
 35573  
 35574  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0 {
 35575  		return TCL_ERROR
 35576  	}
 35577  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+40) != 0 {
 35578  		return TCL_ERROR
 35579  	}
 35580  	if tcl.XTcl_GetWideIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+48) != 0 {
 35581  		return TCL_ERROR
 35582  	}
 35583  
 35584  	rc = sqlite3.Xsqlite3_bind_int64(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), *(*int32)(unsafe.Pointer(bp + 40)), *(*Tcl_WideInt)(unsafe.Pointer(bp + 48)))
 35585  	if sqlite3TestErrCode(tls, interp, sqlite3.Xsqlite3_db_handle(tls, *(*uintptr)(unsafe.Pointer(bp + 32))), rc) != 0 {
 35586  		return TCL_ERROR
 35587  	}
 35588  	if rc != SQLITE_OK {
 35589  		return TCL_ERROR
 35590  	}
 35591  
 35592  	return TCL_OK
 35593  }
 35594  
 35595  func test_bind_double(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 35596  	bp := tls.Alloc(64)
 35597  	defer tls.Free(64)
 35598  
 35599  	*(*float64)(unsafe.Pointer(bp + 48)) = float64(0)
 35600  	var rc int32
 35601  	var zVal uintptr
 35602  	var i int32
 35603  
 35604  	if objc != 4 {
 35605  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 35606  			tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+16629, 0))
 35607  		return TCL_ERROR
 35608  	}
 35609  
 35610  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0 {
 35611  		return TCL_ERROR
 35612  	}
 35613  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+40) != 0 {
 35614  		return TCL_ERROR
 35615  	}
 35616  
 35617  	zVal = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)))
 35618  	for i = 0; uint64(i) < uint64(unsafe.Sizeof(aSpecialFp))/uint64(unsafe.Sizeof(struct {
 35619  		FzName  uintptr
 35620  		FiUpper uint32
 35621  		FiLower uint32
 35622  	}{})); i++ {
 35623  		if libc.Xstrcmp(tls, aSpecialFp[i].FzName, zVal) == 0 {
 35624  			*(*sqlite3_uint64)(unsafe.Pointer(bp + 56)) = sqlite3_uint64(aSpecialFp[i].FiUpper)
 35625  			*(*sqlite3_uint64)(unsafe.Pointer(bp + 56)) <<= 32
 35626  			*(*sqlite3_uint64)(unsafe.Pointer(bp + 56)) |= sqlite3_uint64(aSpecialFp[i].FiLower)
 35627  
 35628  			libc.Xmemcpy(tls, bp+48, bp+56, uint64(8))
 35629  			break
 35630  		}
 35631  	}
 35632  	if uint64(i) >= uint64(unsafe.Sizeof(aSpecialFp))/uint64(unsafe.Sizeof(struct {
 35633  		FzName  uintptr
 35634  		FiUpper uint32
 35635  		FiLower uint32
 35636  	}{})) && tcl.XTcl_GetDoubleFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+48) != 0 {
 35637  		return TCL_ERROR
 35638  	}
 35639  	rc = sqlite3.Xsqlite3_bind_double(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), *(*int32)(unsafe.Pointer(bp + 40)), *(*float64)(unsafe.Pointer(bp + 48)))
 35640  	if sqlite3TestErrCode(tls, interp, sqlite3.Xsqlite3_db_handle(tls, *(*uintptr)(unsafe.Pointer(bp + 32))), rc) != 0 {
 35641  		return TCL_ERROR
 35642  	}
 35643  	if rc != SQLITE_OK {
 35644  		return TCL_ERROR
 35645  	}
 35646  
 35647  	return TCL_OK
 35648  }
 35649  
 35650  var aSpecialFp = [10]struct {
 35651  	FzName  uintptr
 35652  	FiUpper uint32
 35653  	FiLower uint32
 35654  }{
 35655  	{FzName: ts + 16643, FiUpper: uint32(0x7fffffff), FiLower: 0xffffffff},
 35656  	{FzName: ts + 16647, FiUpper: uint32(0x7ff7ffff), FiLower: 0xffffffff},
 35657  	{FzName: ts + 16652, FiUpper: 0xffffffff, FiLower: 0xffffffff},
 35658  	{FzName: ts + 16657, FiUpper: 0xfff7ffff, FiLower: 0xffffffff},
 35659  	{FzName: ts + 16663, FiUpper: uint32(0x7ff00000)},
 35660  	{FzName: ts + 16668, FiUpper: 0xfff00000},
 35661  	{FzName: ts + 16673, FiLower: uint32(0x00000001)},
 35662  	{FzName: ts + 16681, FiUpper: 0x80000000, FiLower: uint32(0x00000001)},
 35663  	{FzName: ts + 16690, FiUpper: uint32(0x7ff80000)},
 35664  	{FzName: ts + 16695, FiUpper: 0xfff80000},
 35665  }
 35666  
 35667  func test_bind_null(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 35668  	bp := tls.Alloc(44)
 35669  	defer tls.Free(44)
 35670  
 35671  	var rc int32
 35672  
 35673  	if objc != 3 {
 35674  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 35675  			tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+16701, 0))
 35676  		return TCL_ERROR
 35677  	}
 35678  
 35679  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0 {
 35680  		return TCL_ERROR
 35681  	}
 35682  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+40) != 0 {
 35683  		return TCL_ERROR
 35684  	}
 35685  
 35686  	rc = sqlite3.Xsqlite3_bind_null(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), *(*int32)(unsafe.Pointer(bp + 40)))
 35687  	if sqlite3TestErrCode(tls, interp, sqlite3.Xsqlite3_db_handle(tls, *(*uintptr)(unsafe.Pointer(bp + 32))), rc) != 0 {
 35688  		return TCL_ERROR
 35689  	}
 35690  	if rc != SQLITE_OK {
 35691  		return TCL_ERROR
 35692  	}
 35693  
 35694  	return TCL_OK
 35695  }
 35696  
 35697  func test_bind_text(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 35698  	bp := tls.Alloc(84)
 35699  	defer tls.Free(84)
 35700  
 35701  	*(*int32)(unsafe.Pointer(bp + 76)) = 0
 35702  
 35703  	var value uintptr
 35704  	var rc int32
 35705  	var toFree uintptr = uintptr(0)
 35706  
 35707  	if objc != 5 {
 35708  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 35709  			tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+16709, 0))
 35710  		return TCL_ERROR
 35711  	}
 35712  
 35713  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+64) != 0 {
 35714  		return TCL_ERROR
 35715  	}
 35716  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+72) != 0 {
 35717  		return TCL_ERROR
 35718  	}
 35719  	value = tcl.XTcl_GetByteArrayFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+76)
 35720  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 4*8)), bp+80) != 0 {
 35721  		return TCL_ERROR
 35722  	}
 35723  	if *(*int32)(unsafe.Pointer(bp + 80)) < 0 {
 35724  		toFree = libc.Xmalloc(tls, uint64(*(*int32)(unsafe.Pointer(bp + 76))+1))
 35725  		if toFree == uintptr(0) {
 35726  			tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+2069, uintptr(0)))
 35727  			return TCL_ERROR
 35728  		}
 35729  		libc.Xmemcpy(tls, toFree, value, uint64(*(*int32)(unsafe.Pointer(bp + 76))))
 35730  		*(*uint8)(unsafe.Pointer(toFree + uintptr(*(*int32)(unsafe.Pointer(bp + 76))))) = uint8(0)
 35731  		value = toFree
 35732  	}
 35733  	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))
 35734  	libc.Xfree(tls, toFree)
 35735  	if sqlite3TestErrCode(tls, interp, sqlite3.Xsqlite3_db_handle(tls, *(*uintptr)(unsafe.Pointer(bp + 64))), rc) != 0 {
 35736  		return TCL_ERROR
 35737  	}
 35738  	if rc != SQLITE_OK {
 35739  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+48, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0)))
 35740  		return TCL_ERROR
 35741  	}
 35742  
 35743  	return TCL_OK
 35744  }
 35745  
 35746  func test_bind_text16(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 35747  	bp := tls.Alloc(84)
 35748  	defer tls.Free(84)
 35749  
 35750  	var value uintptr
 35751  	var toFree uintptr = uintptr(0)
 35752  	var rc int32
 35753  	*(*int32)(unsafe.Pointer(bp + 76)) = 0
 35754  
 35755  	var xDel uintptr = func() uintptr {
 35756  		if objc == 6 {
 35757  			return uintptr(0)
 35758  		}
 35759  		return libc.UintptrFromInt32(-1)
 35760  	}()
 35761  	var oStmt uintptr = *(*uintptr)(unsafe.Pointer(objv + uintptr(objc-4)*8))
 35762  	var oN uintptr = *(*uintptr)(unsafe.Pointer(objv + uintptr(objc-3)*8))
 35763  	var oString uintptr = *(*uintptr)(unsafe.Pointer(objv + uintptr(objc-2)*8))
 35764  	var oBytes uintptr = *(*uintptr)(unsafe.Pointer(objv + uintptr(objc-1)*8))
 35765  
 35766  	if objc != 5 && objc != 6 {
 35767  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 35768  			tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+16709, 0))
 35769  		return TCL_ERROR
 35770  	}
 35771  
 35772  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, oStmt), bp+64) != 0 {
 35773  		return TCL_ERROR
 35774  	}
 35775  	if tcl.XTcl_GetIntFromObj(tls, interp, oN, bp+72) != 0 {
 35776  		return TCL_ERROR
 35777  	}
 35778  	value = tcl.XTcl_GetByteArrayFromObj(tls, oString, bp+76)
 35779  	if tcl.XTcl_GetIntFromObj(tls, interp, oBytes, bp+80) != 0 {
 35780  		return TCL_ERROR
 35781  	}
 35782  	if *(*int32)(unsafe.Pointer(bp + 80)) < 0 && xDel == libc.UintptrFromInt32(-1) {
 35783  		toFree = libc.Xmalloc(tls, uint64(*(*int32)(unsafe.Pointer(bp + 76))+3))
 35784  		if toFree == uintptr(0) {
 35785  			tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+2069, uintptr(0)))
 35786  			return TCL_ERROR
 35787  		}
 35788  		libc.Xmemcpy(tls, toFree, value, uint64(*(*int32)(unsafe.Pointer(bp + 76))))
 35789  		libc.Xmemset(tls, toFree+uintptr(*(*int32)(unsafe.Pointer(bp + 76))), 0, uint64(3))
 35790  		value = toFree
 35791  	}
 35792  	rc = sqlite3.Xsqlite3_bind_text16(tls, *(*uintptr)(unsafe.Pointer(bp + 64)), *(*int32)(unsafe.Pointer(bp + 72)), value, *(*int32)(unsafe.Pointer(bp + 80)), xDel)
 35793  	libc.Xfree(tls, toFree)
 35794  	if sqlite3TestErrCode(tls, interp, sqlite3.Xsqlite3_db_handle(tls, *(*uintptr)(unsafe.Pointer(bp + 64))), rc) != 0 {
 35795  		return TCL_ERROR
 35796  	}
 35797  	if rc != SQLITE_OK {
 35798  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+48, sqlite3.Xsqlite3ErrName(tls, rc), 0))
 35799  		return TCL_ERROR
 35800  	}
 35801  
 35802  	return TCL_OK
 35803  }
 35804  
 35805  func test_bind_blob(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 35806  	bp := tls.Alloc(284)
 35807  	defer tls.Free(284)
 35808  
 35809  	var value uintptr
 35810  	var rc int32
 35811  	var xDestructor sqlite3_destructor_type = libc.UintptrFromInt32(-1)
 35812  
 35813  	if objc != 5 && objc != 6 {
 35814  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 35815  			tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+16729, 0))
 35816  		return TCL_ERROR
 35817  	}
 35818  
 35819  	if objc == 6 {
 35820  		xDestructor = uintptr(0)
 35821  		objv += 8
 35822  	}
 35823  
 35824  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+64) != 0 {
 35825  		return TCL_ERROR
 35826  	}
 35827  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+72) != 0 {
 35828  		return TCL_ERROR
 35829  	}
 35830  
 35831  	value = tcl.XTcl_GetByteArrayFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+76)
 35832  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 4*8)), bp+80) != 0 {
 35833  		return TCL_ERROR
 35834  	}
 35835  
 35836  	if *(*int32)(unsafe.Pointer(bp + 80)) > *(*int32)(unsafe.Pointer(bp + 76)) {
 35837  		sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([200]uint8{})), bp+84,
 35838  			ts+16748, libc.VaList(bp+32, *(*int32)(unsafe.Pointer(bp + 80)), *(*int32)(unsafe.Pointer(bp + 76))))
 35839  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+48, bp+84, uintptr(0)))
 35840  		return TCL_ERROR
 35841  	}
 35842  
 35843  	rc = sqlite3.Xsqlite3_bind_blob(tls, *(*uintptr)(unsafe.Pointer(bp + 64)), *(*int32)(unsafe.Pointer(bp + 72)), value, *(*int32)(unsafe.Pointer(bp + 80)), xDestructor)
 35844  	if sqlite3TestErrCode(tls, interp, sqlite3.Xsqlite3_db_handle(tls, *(*uintptr)(unsafe.Pointer(bp + 64))), rc) != 0 {
 35845  		return TCL_ERROR
 35846  	}
 35847  	if rc != SQLITE_OK {
 35848  		return TCL_ERROR
 35849  	}
 35850  
 35851  	return TCL_OK
 35852  }
 35853  
 35854  func test_bind_value_from_preupdate(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 35855  	bp := tls.Alloc(48)
 35856  	defer tls.Free(48)
 35857  
 35858  	var z3 uintptr = uintptr(0)
 35859  	var db uintptr = uintptr(0)
 35860  	*(*uintptr)(unsafe.Pointer(bp + 40)) = uintptr(0)
 35861  
 35862  	if objc != 5 {
 35863  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+16782)
 35864  		return TCL_ERROR
 35865  	}
 35866  
 35867  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+24) != 0 {
 35868  		return TCL_ERROR
 35869  	}
 35870  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+32) != 0 {
 35871  		return TCL_ERROR
 35872  	}
 35873  	z3 = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)))
 35874  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 4*8)), bp+36) != 0 {
 35875  		return TCL_ERROR
 35876  	}
 35877  	db = sqlite3.Xsqlite3_db_handle(tls, *(*uintptr)(unsafe.Pointer(bp + 24)))
 35878  
 35879  	if int32(*(*uint8)(unsafe.Pointer(z3))) == 'n' {
 35880  		sqlite3.Xsqlite3_preupdate_new(tls, db, *(*int32)(unsafe.Pointer(bp + 36)), bp+40)
 35881  	} else if int32(*(*uint8)(unsafe.Pointer(z3))) == 'o' {
 35882  		sqlite3.Xsqlite3_preupdate_old(tls, db, *(*int32)(unsafe.Pointer(bp + 36)), bp+40)
 35883  	} else {
 35884  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+16801, z3, uintptr(0)))
 35885  		return TCL_ERROR
 35886  	}
 35887  	sqlite3.Xsqlite3_bind_value(tls, *(*uintptr)(unsafe.Pointer(bp + 24)), *(*int32)(unsafe.Pointer(bp + 32)), *(*uintptr)(unsafe.Pointer(bp + 40)))
 35888  
 35889  	return TCL_OK
 35890  }
 35891  
 35892  func test_bind_value_from_select(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 35893  	bp := tls.Alloc(72)
 35894  	defer tls.Free(72)
 35895  
 35896  	var zSql uintptr = uintptr(0)
 35897  	var db uintptr = uintptr(0)
 35898  	var rc int32 = SQLITE_OK
 35899  
 35900  	if objc != 4 {
 35901  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+16828)
 35902  		return TCL_ERROR
 35903  	}
 35904  
 35905  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+48) != 0 {
 35906  		return TCL_ERROR
 35907  	}
 35908  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+56) != 0 {
 35909  		return TCL_ERROR
 35910  	}
 35911  	zSql = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)))
 35912  	db = sqlite3.Xsqlite3_db_handle(tls, *(*uintptr)(unsafe.Pointer(bp + 48)))
 35913  
 35914  	rc = sqlite3.Xsqlite3_prepare_v2(tls, db, zSql, -1, bp+64, uintptr(0))
 35915  	if rc != SQLITE_OK {
 35916  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+16842, sqlite3.Xsqlite3_errmsg(tls, db), uintptr(0)))
 35917  		return TCL_ERROR
 35918  	}
 35919  	if sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp + 64))) == SQLITE_ROW {
 35920  		var pVal uintptr = sqlite3.Xsqlite3_column_value(tls, *(*uintptr)(unsafe.Pointer(bp + 64)), 0)
 35921  		sqlite3.Xsqlite3_bind_value(tls, *(*uintptr)(unsafe.Pointer(bp + 48)), *(*int32)(unsafe.Pointer(bp + 56)), pVal)
 35922  	}
 35923  	rc = sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 64)))
 35924  	if rc != SQLITE_OK {
 35925  		tcl.XTcl_AppendResult(tls, interp,
 35926  			libc.VaList(bp+24, ts+16857, sqlite3.Xsqlite3_errmsg(tls, db), uintptr(0)))
 35927  		return TCL_ERROR
 35928  	}
 35929  
 35930  	return TCL_OK
 35931  }
 35932  
 35933  func test_carray_bind(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 35934  	bp := tls.Alloc(112)
 35935  	defer tls.Free(112)
 35936  
 35937  	var eType int32
 35938  	var nData int32
 35939  	var aData uintptr
 35940  	var isTransient int32
 35941  	var isStatic int32
 35942  
 35943  	var i int32
 35944  	var j int32
 35945  	var rc int32
 35946  	var xDel uintptr
 35947  	var z uintptr
 35948  
 35949  	var a uintptr
 35950  
 35951  	var a1 uintptr
 35952  
 35953  	var a2 uintptr
 35954  	var v3 uintptr
 35955  	var a3 uintptr
 35956  	eType = 0
 35957  	nData = 0
 35958  	aData = uintptr(0)
 35959  	isTransient = 0
 35960  	isStatic = 0
 35961  	xDel = *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{sqlite3.Xsqlite3_free}))
 35962  
 35963  	if !(aStaticData != 0) {
 35964  		goto __1
 35965  	}
 35966  
 35967  	if !(eStaticType == 3) {
 35968  		goto __2
 35969  	}
 35970  	i = 0
 35971  __3:
 35972  	if !(i < nStaticData) {
 35973  		goto __5
 35974  	}
 35975  	sqlite3.Xsqlite3_free(tls, *(*uintptr)(unsafe.Pointer(aStaticData + uintptr(i)*8)))
 35976  	goto __4
 35977  __4:
 35978  	i++
 35979  	goto __3
 35980  	goto __5
 35981  __5:
 35982  	;
 35983  __2:
 35984  	;
 35985  	sqlite3.Xsqlite3_free(tls, aStaticData)
 35986  	aStaticData = uintptr(0)
 35987  	nStaticData = 0
 35988  	eStaticType = 0
 35989  __1:
 35990  	;
 35991  	if !(objc == 1) {
 35992  		goto __6
 35993  	}
 35994  	return TCL_OK
 35995  __6:
 35996  	;
 35997  	i = 1
 35998  __7:
 35999  	if !(i < objc && int32(*(*uint8)(unsafe.Pointer(tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(i)*8)))))) == '-') {
 36000  		goto __9
 36001  	}
 36002  	z = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(i)*8)))
 36003  	if !(libc.Xstrcmp(tls, z, ts+16878) == 0) {
 36004  		goto __10
 36005  	}
 36006  	isTransient = 1
 36007  	xDel = libc.UintptrFromInt32(-1)
 36008  	goto __11
 36009  __10:
 36010  	if !(libc.Xstrcmp(tls, z, ts+16889) == 0) {
 36011  		goto __12
 36012  	}
 36013  	isStatic = 1
 36014  	xDel = uintptr(0)
 36015  	goto __13
 36016  __12:
 36017  	if !(libc.Xstrcmp(tls, z, ts+16897) == 0) {
 36018  		goto __14
 36019  	}
 36020  	eType = 0
 36021  	goto __15
 36022  __14:
 36023  	if !(libc.Xstrcmp(tls, z, ts+16904) == 0) {
 36024  		goto __16
 36025  	}
 36026  	eType = 1
 36027  	goto __17
 36028  __16:
 36029  	if !(libc.Xstrcmp(tls, z, ts+16911) == 0) {
 36030  		goto __18
 36031  	}
 36032  	eType = 2
 36033  	goto __19
 36034  __18:
 36035  	if !(libc.Xstrcmp(tls, z, ts+16919) == 0) {
 36036  		goto __20
 36037  	}
 36038  	eType = 3
 36039  	goto __21
 36040  __20:
 36041  	if !(libc.Xstrcmp(tls, z, ts+16925) == 0) {
 36042  		goto __22
 36043  	}
 36044  	goto __9
 36045  	goto __23
 36046  __22:
 36047  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+12444, z, uintptr(0)))
 36048  	return TCL_ERROR
 36049  __23:
 36050  	;
 36051  __21:
 36052  	;
 36053  __19:
 36054  	;
 36055  __17:
 36056  	;
 36057  __15:
 36058  	;
 36059  __13:
 36060  	;
 36061  __11:
 36062  	;
 36063  	goto __8
 36064  __8:
 36065  	i++
 36066  	goto __7
 36067  	goto __9
 36068  __9:
 36069  	;
 36070  	if !(eType == 3 && !(isStatic != 0) && !(isTransient != 0)) {
 36071  		goto __24
 36072  	}
 36073  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+24, ts+16928,
 36074  		uintptr(0)))
 36075  	return TCL_ERROR
 36076  __24:
 36077  	;
 36078  	if !(isStatic != 0 && isTransient != 0) {
 36079  		goto __25
 36080  	}
 36081  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+40, ts+16975,
 36082  		uintptr(0)))
 36083  	return TCL_ERROR
 36084  __25:
 36085  	;
 36086  	if !(objc-i < 2) {
 36087  		goto __26
 36088  	}
 36089  	tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+17013)
 36090  	return TCL_ERROR
 36091  __26:
 36092  	;
 36093  	if !(getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(i)*8))), bp+80) != 0) {
 36094  		goto __27
 36095  	}
 36096  	return TCL_ERROR
 36097  __27:
 36098  	;
 36099  	i++
 36100  	if !(tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(i)*8)), bp+88) != 0) {
 36101  		goto __28
 36102  	}
 36103  	return TCL_ERROR
 36104  __28:
 36105  	;
 36106  	i++
 36107  	nData = objc - i
 36108  	switch eType + 4*libc.Bool32(nData <= 0) {
 36109  	case 0:
 36110  		goto __30
 36111  	case 1:
 36112  		goto __31
 36113  	case 2:
 36114  		goto __32
 36115  	case 3:
 36116  		goto __33
 36117  	case 4:
 36118  		goto __34
 36119  	}
 36120  	goto __29
 36121  __30:
 36122  	a = sqlite3.Xsqlite3_malloc(tls, int32(uint64(unsafe.Sizeof(int32(0)))*uint64(nData)))
 36123  	if !(a == uintptr(0)) {
 36124  		goto __35
 36125  	}
 36126  	rc = SQLITE_NOMEM
 36127  	goto carray_bind_done
 36128  __35:
 36129  	;
 36130  	j = 0
 36131  __36:
 36132  	if !(j < nData) {
 36133  		goto __38
 36134  	}
 36135  	if !(tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(i+j)*8)), bp+92) != 0) {
 36136  		goto __39
 36137  	}
 36138  	sqlite3.Xsqlite3_free(tls, a)
 36139  	return TCL_ERROR
 36140  __39:
 36141  	;
 36142  	*(*int32)(unsafe.Pointer(a + uintptr(j)*4)) = *(*int32)(unsafe.Pointer(bp + 92))
 36143  	goto __37
 36144  __37:
 36145  	j++
 36146  	goto __36
 36147  	goto __38
 36148  __38:
 36149  	;
 36150  	aData = a
 36151  	goto __29
 36152  
 36153  __31:
 36154  	a1 = sqlite3.Xsqlite3_malloc(tls, int32(uint64(unsafe.Sizeof(sqlite3_int64(0)))*uint64(nData)))
 36155  	if !(a1 == uintptr(0)) {
 36156  		goto __40
 36157  	}
 36158  	rc = SQLITE_NOMEM
 36159  	goto carray_bind_done
 36160  __40:
 36161  	;
 36162  	j = 0
 36163  __41:
 36164  	if !(j < nData) {
 36165  		goto __43
 36166  	}
 36167  	if !(tcl.XTcl_GetWideIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(i+j)*8)), bp+96) != 0) {
 36168  		goto __44
 36169  	}
 36170  	sqlite3.Xsqlite3_free(tls, a1)
 36171  	return TCL_ERROR
 36172  __44:
 36173  	;
 36174  	*(*sqlite3_int64)(unsafe.Pointer(a1 + uintptr(j)*8)) = *(*Tcl_WideInt)(unsafe.Pointer(bp + 96))
 36175  	goto __42
 36176  __42:
 36177  	j++
 36178  	goto __41
 36179  	goto __43
 36180  __43:
 36181  	;
 36182  	aData = a1
 36183  	goto __29
 36184  
 36185  __32:
 36186  	a2 = sqlite3.Xsqlite3_malloc(tls, int32(uint64(unsafe.Sizeof(float64(0)))*uint64(nData)))
 36187  	if !(a2 == uintptr(0)) {
 36188  		goto __45
 36189  	}
 36190  	rc = SQLITE_NOMEM
 36191  	goto carray_bind_done
 36192  __45:
 36193  	;
 36194  	j = 0
 36195  __46:
 36196  	if !(j < nData) {
 36197  		goto __48
 36198  	}
 36199  	if !(tcl.XTcl_GetDoubleFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(i+j)*8)), bp+104) != 0) {
 36200  		goto __49
 36201  	}
 36202  	sqlite3.Xsqlite3_free(tls, a2)
 36203  	return TCL_ERROR
 36204  __49:
 36205  	;
 36206  	*(*float64)(unsafe.Pointer(a2 + uintptr(j)*8)) = *(*float64)(unsafe.Pointer(bp + 104))
 36207  	goto __47
 36208  __47:
 36209  	j++
 36210  	goto __46
 36211  	goto __48
 36212  __48:
 36213  	;
 36214  	aData = a2
 36215  	goto __29
 36216  
 36217  __33:
 36218  	a3 = sqlite3.Xsqlite3_malloc(tls, int32(uint64(unsafe.Sizeof(uintptr(0)))*uint64(nData)))
 36219  	if !(a3 == uintptr(0)) {
 36220  		goto __50
 36221  	}
 36222  	rc = SQLITE_NOMEM
 36223  	goto carray_bind_done
 36224  __50:
 36225  	;
 36226  	j = 0
 36227  __51:
 36228  	if !(j < nData) {
 36229  		goto __53
 36230  	}
 36231  	v3 = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(i+j)*8)))
 36232  	*(*uintptr)(unsafe.Pointer(a3 + uintptr(j)*8)) = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp+56, v3))
 36233  	goto __52
 36234  __52:
 36235  	j++
 36236  	goto __51
 36237  	goto __53
 36238  __53:
 36239  	;
 36240  	aData = a3
 36241  	goto __29
 36242  
 36243  __34:
 36244  	aData = ts + 584
 36245  	xDel = uintptr(0)
 36246  	isTransient = 0
 36247  	isStatic = 0
 36248  	goto __29
 36249  
 36250  __29:
 36251  	;
 36252  	if !(isStatic != 0) {
 36253  		goto __54
 36254  	}
 36255  	aStaticData = aData
 36256  	nStaticData = nData
 36257  	eStaticType = eType
 36258  __54:
 36259  	;
 36260  	rc = sqlite3_carray_bind(tls, *(*uintptr)(unsafe.Pointer(bp + 80)), *(*int32)(unsafe.Pointer(bp + 88)), aData, nData, eType, xDel)
 36261  	if !(isTransient != 0) {
 36262  		goto __55
 36263  	}
 36264  	if !(eType == 3) {
 36265  		goto __56
 36266  	}
 36267  	i = 0
 36268  __57:
 36269  	if !(i < nData) {
 36270  		goto __59
 36271  	}
 36272  	sqlite3.Xsqlite3_free(tls, *(*uintptr)(unsafe.Pointer(aData + uintptr(i)*8)))
 36273  	goto __58
 36274  __58:
 36275  	i++
 36276  	goto __57
 36277  	goto __59
 36278  __59:
 36279  	;
 36280  __56:
 36281  	;
 36282  	sqlite3.Xsqlite3_free(tls, aData)
 36283  __55:
 36284  	;
 36285  carray_bind_done:
 36286  	if !(rc != 0) {
 36287  		goto __60
 36288  	}
 36289  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+64, sqlite3.Xsqlite3_errstr(tls, rc), uintptr(0)))
 36290  	return TCL_ERROR
 36291  __60:
 36292  	;
 36293  	return TCL_OK
 36294  }
 36295  
 36296  var aStaticData uintptr = uintptr(0)
 36297  var nStaticData int32 = 0
 36298  var eStaticType int32 = 0
 36299  
 36300  func test_bind_parameter_count(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 36301  	bp := tls.Alloc(8)
 36302  	defer tls.Free(8)
 36303  
 36304  	if objc != 2 {
 36305  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+17042)
 36306  		return TCL_ERROR
 36307  	}
 36308  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 36309  		return TCL_ERROR
 36310  	}
 36311  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, sqlite3.Xsqlite3_bind_parameter_count(tls, *(*uintptr)(unsafe.Pointer(bp)))))
 36312  	return TCL_OK
 36313  }
 36314  
 36315  func test_bind_parameter_name(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 36316  	bp := tls.Alloc(12)
 36317  	defer tls.Free(12)
 36318  
 36319  	if objc != 3 {
 36320  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+17047)
 36321  		return TCL_ERROR
 36322  	}
 36323  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 36324  		return TCL_ERROR
 36325  	}
 36326  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+8) != 0 {
 36327  		return TCL_ERROR
 36328  	}
 36329  	tcl.XTcl_SetObjResult(tls, interp,
 36330  		tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3_bind_parameter_name(tls, *(*uintptr)(unsafe.Pointer(bp)), *(*int32)(unsafe.Pointer(bp + 8))), -1))
 36331  	return TCL_OK
 36332  }
 36333  
 36334  func test_bind_parameter_index(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 36335  	bp := tls.Alloc(8)
 36336  	defer tls.Free(8)
 36337  
 36338  	if objc != 3 {
 36339  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+17054)
 36340  		return TCL_ERROR
 36341  	}
 36342  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 36343  		return TCL_ERROR
 36344  	}
 36345  	tcl.XTcl_SetObjResult(tls, interp,
 36346  		tcl.XTcl_NewIntObj(tls,
 36347  			sqlite3.Xsqlite3_bind_parameter_index(tls, *(*uintptr)(unsafe.Pointer(bp)), tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8))))))
 36348  	return TCL_OK
 36349  }
 36350  
 36351  func test_clear_bindings(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 36352  	bp := tls.Alloc(8)
 36353  	defer tls.Free(8)
 36354  
 36355  	if objc != 2 {
 36356  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+17042)
 36357  		return TCL_ERROR
 36358  	}
 36359  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 36360  		return TCL_ERROR
 36361  	}
 36362  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, sqlite3.Xsqlite3_clear_bindings(tls, *(*uintptr)(unsafe.Pointer(bp)))))
 36363  	return TCL_OK
 36364  }
 36365  
 36366  func test_sleep(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 36367  	bp := tls.Alloc(4)
 36368  	defer tls.Free(4)
 36369  
 36370  	if objc != 2 {
 36371  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+13117)
 36372  		return TCL_ERROR
 36373  	}
 36374  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp) != 0 {
 36375  		return TCL_ERROR
 36376  	}
 36377  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, sqlite3.Xsqlite3_sleep(tls, *(*int32)(unsafe.Pointer(bp)))))
 36378  	return TCL_OK
 36379  }
 36380  
 36381  func test_ex_errcode(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 36382  	bp := tls.Alloc(56)
 36383  	defer tls.Free(56)
 36384  
 36385  	var rc int32
 36386  
 36387  	if objc != 2 {
 36388  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 36389  			tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))), ts+15001, 0))
 36390  		return TCL_ERROR
 36391  	}
 36392  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+48) != 0 {
 36393  		return TCL_ERROR
 36394  	}
 36395  	rc = sqlite3.Xsqlite3_extended_errcode(tls, *(*uintptr)(unsafe.Pointer(bp + 48)))
 36396  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, sqlite3.Xsqlite3ErrName(tls, rc), 0))
 36397  	return TCL_OK
 36398  }
 36399  
 36400  func test_errcode(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 36401  	bp := tls.Alloc(56)
 36402  	defer tls.Free(56)
 36403  
 36404  	var rc int32
 36405  
 36406  	if objc != 2 {
 36407  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 36408  			tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))), ts+15001, 0))
 36409  		return TCL_ERROR
 36410  	}
 36411  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+48) != 0 {
 36412  		return TCL_ERROR
 36413  	}
 36414  	rc = sqlite3.Xsqlite3_errcode(tls, *(*uintptr)(unsafe.Pointer(bp + 48)))
 36415  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, sqlite3.Xsqlite3ErrName(tls, rc), 0))
 36416  	return TCL_OK
 36417  }
 36418  
 36419  func test_errmsg(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 36420  	bp := tls.Alloc(40)
 36421  	defer tls.Free(40)
 36422  
 36423  	var zErr uintptr
 36424  
 36425  	if objc != 2 {
 36426  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 36427  			tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))), ts+15001, 0))
 36428  		return TCL_ERROR
 36429  	}
 36430  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0 {
 36431  		return TCL_ERROR
 36432  	}
 36433  
 36434  	zErr = sqlite3.Xsqlite3_errmsg(tls, *(*uintptr)(unsafe.Pointer(bp + 32)))
 36435  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, zErr, -1))
 36436  	return TCL_OK
 36437  }
 36438  
 36439  func test_error_offset(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 36440  	bp := tls.Alloc(40)
 36441  	defer tls.Free(40)
 36442  
 36443  	var iByteOffset int32
 36444  
 36445  	if objc != 2 {
 36446  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 36447  			tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))), ts+15001, 0))
 36448  		return TCL_ERROR
 36449  	}
 36450  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0 {
 36451  		return TCL_ERROR
 36452  	}
 36453  
 36454  	iByteOffset = sqlite3.Xsqlite3_error_offset(tls, *(*uintptr)(unsafe.Pointer(bp + 32)))
 36455  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, iByteOffset))
 36456  	return TCL_OK
 36457  }
 36458  
 36459  func test_errmsg16(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 36460  	bp := tls.Alloc(40)
 36461  	defer tls.Free(40)
 36462  
 36463  	var zErr uintptr
 36464  	var z uintptr
 36465  	var bytes int32 = 0
 36466  
 36467  	if objc != 2 {
 36468  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 36469  			tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))), ts+15001, 0))
 36470  		return TCL_ERROR
 36471  	}
 36472  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0 {
 36473  		return TCL_ERROR
 36474  	}
 36475  
 36476  	zErr = sqlite3.Xsqlite3_errmsg16(tls, *(*uintptr)(unsafe.Pointer(bp + 32)))
 36477  	if zErr != 0 {
 36478  		z = zErr
 36479  		for bytes = 0; *(*uint8)(unsafe.Pointer(z + uintptr(bytes))) != 0 || *(*uint8)(unsafe.Pointer(z + uintptr(bytes+1))) != 0; bytes = bytes + 2 {
 36480  		}
 36481  	}
 36482  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewByteArrayObj(tls, zErr, bytes))
 36483  	return TCL_OK
 36484  }
 36485  
 36486  func test_prepare(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 36487  	bp := tls.Alloc(162)
 36488  	defer tls.Free(162)
 36489  
 36490  	var zSql uintptr
 36491  
 36492  	*(*uintptr)(unsafe.Pointer(bp + 104)) = uintptr(0)
 36493  	*(*uintptr)(unsafe.Pointer(bp + 96)) = uintptr(0)
 36494  
 36495  	var rc int32
 36496  
 36497  	if objc != 5 && objc != 4 {
 36498  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 36499  			tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))), ts+17064, 0))
 36500  		return TCL_ERROR
 36501  	}
 36502  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+80) != 0 {
 36503  		return TCL_ERROR
 36504  	}
 36505  	zSql = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 36506  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+88) != 0 {
 36507  		return TCL_ERROR
 36508  	}
 36509  
 36510  	rc = sqlite3.Xsqlite3_prepare(tls, *(*uintptr)(unsafe.Pointer(bp + 80)), zSql, *(*int32)(unsafe.Pointer(bp + 88)), bp+96, func() uintptr {
 36511  		if objc >= 5 {
 36512  			return bp + 104
 36513  		}
 36514  		return uintptr(0)
 36515  	}())
 36516  	tcl.XTcl_ResetResult(tls, interp)
 36517  	if sqlite3TestErrCode(tls, interp, *(*uintptr)(unsafe.Pointer(bp + 80)), rc) != 0 {
 36518  		return TCL_ERROR
 36519  	}
 36520  	if *(*uintptr)(unsafe.Pointer(bp + 104)) != 0 && objc >= 5 {
 36521  		if *(*int32)(unsafe.Pointer(bp + 88)) >= 0 {
 36522  			*(*int32)(unsafe.Pointer(bp + 88)) = *(*int32)(unsafe.Pointer(bp + 88)) - int32((int64(*(*uintptr)(unsafe.Pointer(bp + 104)))-int64(zSql))/1)
 36523  		}
 36524  		if int32(libc.Xstrlen(tls, *(*uintptr)(unsafe.Pointer(bp + 104)))) < *(*int32)(unsafe.Pointer(bp + 88)) {
 36525  			*(*int32)(unsafe.Pointer(bp + 88)) = int32(libc.Xstrlen(tls, *(*uintptr)(unsafe.Pointer(bp + 104))))
 36526  		}
 36527  		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)
 36528  	}
 36529  	if rc != SQLITE_OK {
 36530  		sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([50]uint8{})), bp+112, ts+16476, libc.VaList(bp+32, rc))
 36531  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+40, bp+112, sqlite3.Xsqlite3_errmsg(tls, *(*uintptr)(unsafe.Pointer(bp + 80))), 0))
 36532  		return TCL_ERROR
 36533  	}
 36534  
 36535  	if *(*uintptr)(unsafe.Pointer(bp + 96)) != 0 {
 36536  		if sqlite3TestMakePointerStr(tls, interp, bp+112, *(*uintptr)(unsafe.Pointer(bp + 96))) != 0 {
 36537  			return TCL_ERROR
 36538  		}
 36539  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+64, bp+112, 0))
 36540  	}
 36541  	return TCL_OK
 36542  }
 36543  
 36544  func test_prepare_v2(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 36545  	bp := tls.Alloc(162)
 36546  	defer tls.Free(162)
 36547  
 36548  	var zSql uintptr
 36549  	var zCopy uintptr = uintptr(0)
 36550  
 36551  	*(*uintptr)(unsafe.Pointer(bp + 96)) = uintptr(0)
 36552  	var pzTail uintptr
 36553  	*(*uintptr)(unsafe.Pointer(bp + 104)) = uintptr(0)
 36554  
 36555  	var rc int32
 36556  
 36557  	if objc != 5 && objc != 4 {
 36558  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 36559  			tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))), ts+17088, 0))
 36560  		return TCL_ERROR
 36561  	}
 36562  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+80) != 0 {
 36563  		return TCL_ERROR
 36564  	}
 36565  	zSql = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 36566  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+88) != 0 {
 36567  		return TCL_ERROR
 36568  	}
 36569  
 36570  	if *(*int32)(unsafe.Pointer(bp + 88)) >= 0 {
 36571  		zCopy = libc.Xmalloc(tls, uint64(*(*int32)(unsafe.Pointer(bp + 88))))
 36572  		libc.Xmemcpy(tls, zCopy, zSql, uint64(*(*int32)(unsafe.Pointer(bp + 88))))
 36573  	} else {
 36574  		var n int32 = int32(libc.Xstrlen(tls, zSql)) + 1
 36575  		zCopy = libc.Xmalloc(tls, uint64(n))
 36576  		libc.Xmemcpy(tls, zCopy, zSql, uint64(n))
 36577  	}
 36578  	if objc >= 5 {
 36579  		pzTail = bp + 96
 36580  	} else {
 36581  		pzTail = uintptr(0)
 36582  	}
 36583  	rc = sqlite3.Xsqlite3_prepare_v2(tls, *(*uintptr)(unsafe.Pointer(bp + 80)), zCopy, *(*int32)(unsafe.Pointer(bp + 88)), bp+104, pzTail)
 36584  	if objc >= 5 {
 36585  		*(*uintptr)(unsafe.Pointer(bp + 96)) = zSql + uintptr((int64(*(*uintptr)(unsafe.Pointer(bp + 96)))-int64(zCopy))/1)
 36586  	}
 36587  	libc.Xfree(tls, zCopy)
 36588  
 36589  	tcl.XTcl_ResetResult(tls, interp)
 36590  	if sqlite3TestErrCode(tls, interp, *(*uintptr)(unsafe.Pointer(bp + 80)), rc) != 0 {
 36591  		return TCL_ERROR
 36592  	}
 36593  	if rc == SQLITE_OK && objc >= 5 && *(*uintptr)(unsafe.Pointer(bp + 96)) != 0 {
 36594  		if *(*int32)(unsafe.Pointer(bp + 88)) >= 0 {
 36595  			*(*int32)(unsafe.Pointer(bp + 88)) = *(*int32)(unsafe.Pointer(bp + 88)) - int32((int64(*(*uintptr)(unsafe.Pointer(bp + 96)))-int64(zSql))/1)
 36596  		}
 36597  		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)
 36598  	}
 36599  	if rc != SQLITE_OK {
 36600  		sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([50]uint8{})), bp+112, ts+16476, libc.VaList(bp+32, rc))
 36601  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+40, bp+112, sqlite3.Xsqlite3_errmsg(tls, *(*uintptr)(unsafe.Pointer(bp + 80))), 0))
 36602  		return TCL_ERROR
 36603  	}
 36604  
 36605  	if *(*uintptr)(unsafe.Pointer(bp + 104)) != 0 {
 36606  		if sqlite3TestMakePointerStr(tls, interp, bp+112, *(*uintptr)(unsafe.Pointer(bp + 104))) != 0 {
 36607  			return TCL_ERROR
 36608  		}
 36609  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+64, bp+112, 0))
 36610  	}
 36611  	return TCL_OK
 36612  }
 36613  
 36614  func test_prepare_v3(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 36615  	bp := tls.Alloc(162)
 36616  	defer tls.Free(162)
 36617  
 36618  	var zSql uintptr
 36619  	var zCopy uintptr = uintptr(0)
 36620  
 36621  	*(*uintptr)(unsafe.Pointer(bp + 96)) = uintptr(0)
 36622  	var pzTail uintptr
 36623  	*(*uintptr)(unsafe.Pointer(bp + 104)) = uintptr(0)
 36624  
 36625  	var rc int32
 36626  
 36627  	if objc != 6 && objc != 5 {
 36628  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 36629  			tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))), ts+17110, 0))
 36630  		return TCL_ERROR
 36631  	}
 36632  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+80) != 0 {
 36633  		return TCL_ERROR
 36634  	}
 36635  	zSql = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 36636  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+88) != 0 {
 36637  		return TCL_ERROR
 36638  	}
 36639  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 4*8)), bp+92) != 0 {
 36640  		return TCL_ERROR
 36641  	}
 36642  
 36643  	if *(*int32)(unsafe.Pointer(bp + 88)) >= 0 {
 36644  		zCopy = libc.Xmalloc(tls, uint64(*(*int32)(unsafe.Pointer(bp + 88))))
 36645  		libc.Xmemcpy(tls, zCopy, zSql, uint64(*(*int32)(unsafe.Pointer(bp + 88))))
 36646  	} else {
 36647  		var n int32 = int32(libc.Xstrlen(tls, zSql)) + 1
 36648  		zCopy = libc.Xmalloc(tls, uint64(n))
 36649  		libc.Xmemcpy(tls, zCopy, zSql, uint64(n))
 36650  	}
 36651  	if objc >= 6 {
 36652  		pzTail = bp + 96
 36653  	} else {
 36654  		pzTail = uintptr(0)
 36655  	}
 36656  	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)
 36657  	libc.Xfree(tls, zCopy)
 36658  	*(*uintptr)(unsafe.Pointer(bp + 96)) = zSql + uintptr((int64(*(*uintptr)(unsafe.Pointer(bp + 96)))-int64(zCopy))/1)
 36659  
 36660  	tcl.XTcl_ResetResult(tls, interp)
 36661  	if sqlite3TestErrCode(tls, interp, *(*uintptr)(unsafe.Pointer(bp + 80)), rc) != 0 {
 36662  		return TCL_ERROR
 36663  	}
 36664  	if rc == SQLITE_OK && *(*uintptr)(unsafe.Pointer(bp + 96)) != 0 && objc >= 6 {
 36665  		if *(*int32)(unsafe.Pointer(bp + 88)) >= 0 {
 36666  			*(*int32)(unsafe.Pointer(bp + 88)) = *(*int32)(unsafe.Pointer(bp + 88)) - int32((int64(*(*uintptr)(unsafe.Pointer(bp + 96)))-int64(zSql))/1)
 36667  		}
 36668  		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)
 36669  	}
 36670  	if rc != SQLITE_OK {
 36671  		sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([50]uint8{})), bp+112, ts+16476, libc.VaList(bp+32, rc))
 36672  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+40, bp+112, sqlite3.Xsqlite3_errmsg(tls, *(*uintptr)(unsafe.Pointer(bp + 80))), 0))
 36673  		return TCL_ERROR
 36674  	}
 36675  
 36676  	if *(*uintptr)(unsafe.Pointer(bp + 104)) != 0 {
 36677  		if sqlite3TestMakePointerStr(tls, interp, bp+112, *(*uintptr)(unsafe.Pointer(bp + 104))) != 0 {
 36678  			return TCL_ERROR
 36679  		}
 36680  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+64, bp+112, 0))
 36681  	}
 36682  	return TCL_OK
 36683  }
 36684  
 36685  func test_prepare_tkt3134(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 36686  	bp := tls.Alloc(146)
 36687  	defer tls.Free(146)
 36688  
 36689  	*(*uintptr)(unsafe.Pointer(bp + 88)) = uintptr(0)
 36690  
 36691  	var rc int32
 36692  
 36693  	if objc != 2 {
 36694  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 36695  			tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))), ts+17088, 0))
 36696  		return TCL_ERROR
 36697  	}
 36698  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+80) != 0 {
 36699  		return TCL_ERROR
 36700  	}
 36701  	rc = sqlite3.Xsqlite3_prepare_v2(tls, *(*uintptr)(unsafe.Pointer(bp + 80)), uintptr(unsafe.Pointer(&zSql))+1, 0, bp+88, uintptr(0))
 36702  
 36703  	if sqlite3TestErrCode(tls, interp, *(*uintptr)(unsafe.Pointer(bp + 80)), rc) != 0 {
 36704  		return TCL_ERROR
 36705  	}
 36706  	if rc != SQLITE_OK {
 36707  		sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([50]uint8{})), bp+96, ts+16476, libc.VaList(bp+32, rc))
 36708  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+40, bp+96, sqlite3.Xsqlite3_errmsg(tls, *(*uintptr)(unsafe.Pointer(bp + 80))), 0))
 36709  		return TCL_ERROR
 36710  	}
 36711  
 36712  	if *(*uintptr)(unsafe.Pointer(bp + 88)) != 0 {
 36713  		if sqlite3TestMakePointerStr(tls, interp, bp+96, *(*uintptr)(unsafe.Pointer(bp + 88))) != 0 {
 36714  			return TCL_ERROR
 36715  		}
 36716  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+64, bp+96, 0))
 36717  	}
 36718  	return TCL_OK
 36719  }
 36720  
 36721  var zSql = *(*[10]uint8)(unsafe.Pointer(ts + 17138))
 36722  
 36723  func test_prepare16(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 36724  	bp := tls.Alloc(130)
 36725  	defer tls.Free(130)
 36726  
 36727  	var zSql uintptr
 36728  	*(*uintptr)(unsafe.Pointer(bp + 72)) = uintptr(0)
 36729  	var pTail uintptr = uintptr(0)
 36730  	*(*uintptr)(unsafe.Pointer(bp + 64)) = uintptr(0)
 36731  
 36732  	var rc int32
 36733  
 36734  	if objc != 5 && objc != 4 {
 36735  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 36736  			tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))), ts+17064, 0))
 36737  		return TCL_ERROR
 36738  	}
 36739  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+48) != 0 {
 36740  		return TCL_ERROR
 36741  	}
 36742  	zSql = tcl.XTcl_GetByteArrayFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+56)
 36743  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+60) != 0 {
 36744  		return TCL_ERROR
 36745  	}
 36746  
 36747  	rc = sqlite3.Xsqlite3_prepare16(tls, *(*uintptr)(unsafe.Pointer(bp + 48)), zSql, *(*int32)(unsafe.Pointer(bp + 60)), bp+64, func() uintptr {
 36748  		if objc >= 5 {
 36749  			return bp + 72
 36750  		}
 36751  		return uintptr(0)
 36752  	}())
 36753  	if sqlite3TestErrCode(tls, interp, *(*uintptr)(unsafe.Pointer(bp + 48)), rc) != 0 {
 36754  		return TCL_ERROR
 36755  	}
 36756  	if rc != 0 {
 36757  		return TCL_ERROR
 36758  	}
 36759  
 36760  	if objc >= 5 {
 36761  		if *(*uintptr)(unsafe.Pointer(bp + 72)) != 0 {
 36762  			*(*int32)(unsafe.Pointer(bp + 56)) = *(*int32)(unsafe.Pointer(bp + 56)) - int32((int64(*(*uintptr)(unsafe.Pointer(bp + 72)))-int64(zSql))/1)
 36763  		} else {
 36764  			*(*int32)(unsafe.Pointer(bp + 56)) = 0
 36765  		}
 36766  		pTail = tcl.XTcl_NewByteArrayObj(tls, *(*uintptr)(unsafe.Pointer(bp + 72)), *(*int32)(unsafe.Pointer(bp + 56)))
 36767  		(*Tcl_Obj)(unsafe.Pointer(pTail)).FrefCount++
 36768  		tcl.XTcl_ObjSetVar2(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 4*8)), uintptr(0), pTail, 0)
 36769  		for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 36770  			var _objPtr uintptr = pTail
 36771  			if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 36772  				tcl.XTclFreeObj(tls, _objPtr)
 36773  			}
 36774  		}
 36775  	}
 36776  
 36777  	if *(*uintptr)(unsafe.Pointer(bp + 64)) != 0 {
 36778  		if sqlite3TestMakePointerStr(tls, interp, bp+80, *(*uintptr)(unsafe.Pointer(bp + 64))) != 0 {
 36779  			return TCL_ERROR
 36780  		}
 36781  	}
 36782  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, bp+80, 0))
 36783  	return TCL_OK
 36784  }
 36785  
 36786  func test_prepare16_v2(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 36787  	bp := tls.Alloc(130)
 36788  	defer tls.Free(130)
 36789  
 36790  	var zSql uintptr
 36791  	*(*uintptr)(unsafe.Pointer(bp + 72)) = uintptr(0)
 36792  	var pTail uintptr = uintptr(0)
 36793  	*(*uintptr)(unsafe.Pointer(bp + 64)) = uintptr(0)
 36794  
 36795  	var rc int32
 36796  
 36797  	if objc != 5 && objc != 4 {
 36798  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 36799  			tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))), ts+17064, 0))
 36800  		return TCL_ERROR
 36801  	}
 36802  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+48) != 0 {
 36803  		return TCL_ERROR
 36804  	}
 36805  	zSql = tcl.XTcl_GetByteArrayFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+56)
 36806  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+60) != 0 {
 36807  		return TCL_ERROR
 36808  	}
 36809  
 36810  	rc = sqlite3.Xsqlite3_prepare16_v2(tls, *(*uintptr)(unsafe.Pointer(bp + 48)), zSql, *(*int32)(unsafe.Pointer(bp + 60)), bp+64, func() uintptr {
 36811  		if objc >= 5 {
 36812  			return bp + 72
 36813  		}
 36814  		return uintptr(0)
 36815  	}())
 36816  	if sqlite3TestErrCode(tls, interp, *(*uintptr)(unsafe.Pointer(bp + 48)), rc) != 0 {
 36817  		return TCL_ERROR
 36818  	}
 36819  	if rc != 0 {
 36820  		return TCL_ERROR
 36821  	}
 36822  
 36823  	if objc >= 5 {
 36824  		if *(*uintptr)(unsafe.Pointer(bp + 72)) != 0 {
 36825  			*(*int32)(unsafe.Pointer(bp + 56)) = *(*int32)(unsafe.Pointer(bp + 56)) - int32((int64(*(*uintptr)(unsafe.Pointer(bp + 72)))-int64(zSql))/1)
 36826  		} else {
 36827  			*(*int32)(unsafe.Pointer(bp + 56)) = 0
 36828  		}
 36829  		pTail = tcl.XTcl_NewByteArrayObj(tls, *(*uintptr)(unsafe.Pointer(bp + 72)), *(*int32)(unsafe.Pointer(bp + 56)))
 36830  		(*Tcl_Obj)(unsafe.Pointer(pTail)).FrefCount++
 36831  		tcl.XTcl_ObjSetVar2(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 4*8)), uintptr(0), pTail, 0)
 36832  		for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 36833  			var _objPtr uintptr = pTail
 36834  			if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 36835  				tcl.XTclFreeObj(tls, _objPtr)
 36836  			}
 36837  		}
 36838  	}
 36839  
 36840  	if *(*uintptr)(unsafe.Pointer(bp + 64)) != 0 {
 36841  		if sqlite3TestMakePointerStr(tls, interp, bp+80, *(*uintptr)(unsafe.Pointer(bp + 64))) != 0 {
 36842  			return TCL_ERROR
 36843  		}
 36844  	}
 36845  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, bp+80, 0))
 36846  	return TCL_OK
 36847  }
 36848  
 36849  func test_open(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 36850  	bp := tls.Alloc(156)
 36851  	defer tls.Free(156)
 36852  
 36853  	var zFilename uintptr
 36854  
 36855  	if objc != 3 && objc != 2 && objc != 1 {
 36856  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 36857  			tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))), ts+17148, 0))
 36858  		return TCL_ERROR
 36859  	}
 36860  
 36861  	if objc > 1 {
 36862  		zFilename = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 36863  	} else {
 36864  		zFilename = uintptr(0)
 36865  	}
 36866  	sqlite3.Xsqlite3_open(tls, zFilename, bp+48)
 36867  
 36868  	if sqlite3TestMakePointerStr(tls, interp, bp+56, *(*uintptr)(unsafe.Pointer(bp + 48))) != 0 {
 36869  		return TCL_ERROR
 36870  	}
 36871  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, bp+56, 0))
 36872  	return TCL_OK
 36873  }
 36874  
 36875  func test_open_v2(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 36876  	bp := tls.Alloc(484)
 36877  	defer tls.Free(484)
 36878  
 36879  	var zFilename uintptr
 36880  	var zVfs uintptr
 36881  	var flags int32 = 0
 36882  
 36883  	var rc int32
 36884  
 36885  	var i int32
 36886  
 36887  	if objc != 4 {
 36888  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+17171)
 36889  		return TCL_ERROR
 36890  	}
 36891  	zFilename = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 36892  	zVfs = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)))
 36893  	if int32(*(*uint8)(unsafe.Pointer(zVfs))) == 0x00 {
 36894  		zVfs = uintptr(0)
 36895  	}
 36896  
 36897  	rc = tcl.XTcl_ListObjGetElements(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+16, bp+24)
 36898  	if rc != TCL_OK {
 36899  		return rc
 36900  	}
 36901  	for i = 0; i < *(*int32)(unsafe.Pointer(bp + 16)); i++ {
 36902  		*(*[21]OpenFlag)(unsafe.Pointer(bp + 32)) = [21]OpenFlag{
 36903  			{FzFlag: ts + 17190, Fflag: SQLITE_OPEN_READONLY},
 36904  			{FzFlag: ts + 17211, Fflag: SQLITE_OPEN_READWRITE},
 36905  			{FzFlag: ts + 17233, Fflag: SQLITE_OPEN_CREATE},
 36906  			{FzFlag: ts + 17252, Fflag: SQLITE_OPEN_DELETEONCLOSE},
 36907  			{FzFlag: ts + 17278, Fflag: SQLITE_OPEN_EXCLUSIVE},
 36908  			{FzFlag: ts + 17300, Fflag: SQLITE_OPEN_AUTOPROXY},
 36909  			{FzFlag: ts + 17322, Fflag: SQLITE_OPEN_MAIN_DB},
 36910  			{FzFlag: ts + 17342, Fflag: SQLITE_OPEN_TEMP_DB},
 36911  			{FzFlag: ts + 17362, Fflag: SQLITE_OPEN_TRANSIENT_DB},
 36912  			{FzFlag: ts + 17387, Fflag: SQLITE_OPEN_MAIN_JOURNAL},
 36913  			{FzFlag: ts + 17412, Fflag: SQLITE_OPEN_TEMP_JOURNAL},
 36914  			{FzFlag: ts + 17437, Fflag: SQLITE_OPEN_SUBJOURNAL},
 36915  			{FzFlag: ts + 17460, Fflag: SQLITE_OPEN_SUPER_JOURNAL},
 36916  			{FzFlag: ts + 17486, Fflag: SQLITE_OPEN_NOMUTEX},
 36917  			{FzFlag: ts + 17506, Fflag: SQLITE_OPEN_FULLMUTEX},
 36918  			{FzFlag: ts + 17528, Fflag: SQLITE_OPEN_SHAREDCACHE},
 36919  			{FzFlag: ts + 17552, Fflag: SQLITE_OPEN_PRIVATECACHE},
 36920  			{FzFlag: ts + 17577, Fflag: SQLITE_OPEN_WAL},
 36921  			{FzFlag: ts + 17593, Fflag: SQLITE_OPEN_URI},
 36922  			{FzFlag: ts + 17609, Fflag: SQLITE_OPEN_EXRESCODE},
 36923  			{},
 36924  		}
 36925  		rc = tcl.XTcl_GetIndexFromObjStruct(tls, interp, *(*uintptr)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 24)) + uintptr(i)*8)), bp+32, int32(unsafe.Sizeof(OpenFlag{})),
 36926  			ts+17631, 0, bp+368)
 36927  		if rc != TCL_OK {
 36928  			return rc
 36929  		}
 36930  		flags = flags | (*OpenFlag)(unsafe.Pointer(bp+32+uintptr(*(*int32)(unsafe.Pointer(bp + 368)))*16)).Fflag
 36931  	}
 36932  
 36933  	rc = sqlite3.Xsqlite3_open_v2(tls, zFilename, bp+376, flags, zVfs)
 36934  	if sqlite3TestMakePointerStr(tls, interp, bp+384, *(*uintptr)(unsafe.Pointer(bp + 376))) != 0 {
 36935  		return TCL_ERROR
 36936  	}
 36937  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, bp+384, 0))
 36938  	return TCL_OK
 36939  }
 36940  
 36941  type OpenFlag = struct {
 36942  	FzFlag       uintptr
 36943  	Fflag        int32
 36944  	F__ccgo_pad1 [4]byte
 36945  }
 36946  
 36947  func test_open16(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 36948  	bp := tls.Alloc(156)
 36949  	defer tls.Free(156)
 36950  
 36951  	var zFilename uintptr
 36952  
 36953  	if objc != 3 {
 36954  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 36955  			tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))), ts+17148, 0))
 36956  		return TCL_ERROR
 36957  	}
 36958  
 36959  	zFilename = tcl.XTcl_GetByteArrayFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)), uintptr(0))
 36960  	sqlite3.Xsqlite3_open16(tls, zFilename, bp+48)
 36961  
 36962  	if sqlite3TestMakePointerStr(tls, interp, bp+56, *(*uintptr)(unsafe.Pointer(bp + 48))) != 0 {
 36963  		return TCL_ERROR
 36964  	}
 36965  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, bp+56, 0))
 36966  	return TCL_OK
 36967  }
 36968  
 36969  func test_complete16(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 36970  	var zBuf uintptr
 36971  
 36972  	if objc != 2 {
 36973  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+17636)
 36974  		return TCL_ERROR
 36975  	}
 36976  
 36977  	zBuf = tcl.XTcl_GetByteArrayFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)), uintptr(0))
 36978  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, sqlite3.Xsqlite3_complete16(tls, zBuf)))
 36979  	return TCL_OK
 36980  }
 36981  
 36982  func test_normalize(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 36983  	var zSql uintptr
 36984  	var zNorm uintptr
 36985  
 36986  	if objc != 2 {
 36987  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+9535)
 36988  		return TCL_ERROR
 36989  	}
 36990  
 36991  	zSql = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 36992  	zNorm = sqlite3_normalize(tls, zSql)
 36993  	if zNorm != 0 {
 36994  		tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, zNorm, -1))
 36995  		sqlite3.Xsqlite3_free(tls, zNorm)
 36996  	}
 36997  	return TCL_OK
 36998  }
 36999  
 37000  func test_step(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 37001  	bp := tls.Alloc(40)
 37002  	defer tls.Free(40)
 37003  
 37004  	var rc int32
 37005  
 37006  	if objc != 2 {
 37007  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 37008  			tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))), ts+16315, 0))
 37009  		return TCL_ERROR
 37010  	}
 37011  
 37012  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0 {
 37013  		return TCL_ERROR
 37014  	}
 37015  	rc = sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp + 32)))
 37016  
 37017  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 37018  	return TCL_OK
 37019  }
 37020  
 37021  func test_sql(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 37022  	bp := tls.Alloc(8)
 37023  	defer tls.Free(8)
 37024  
 37025  	if objc != 2 {
 37026  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+17042)
 37027  		return TCL_ERROR
 37028  	}
 37029  
 37030  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 37031  		return TCL_ERROR
 37032  	}
 37033  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3_sql(tls, *(*uintptr)(unsafe.Pointer(bp))), uintptr(1))
 37034  	return TCL_OK
 37035  }
 37036  
 37037  func test_ex_sql(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 37038  	bp := tls.Alloc(8)
 37039  	defer tls.Free(8)
 37040  
 37041  	var z uintptr
 37042  
 37043  	if objc != 2 {
 37044  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+17042)
 37045  		return TCL_ERROR
 37046  	}
 37047  
 37048  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 37049  		return TCL_ERROR
 37050  	}
 37051  	z = sqlite3.Xsqlite3_expanded_sql(tls, *(*uintptr)(unsafe.Pointer(bp)))
 37052  	tcl.XTcl_SetResult(tls, interp, z, uintptr(1))
 37053  	sqlite3.Xsqlite3_free(tls, z)
 37054  	return TCL_OK
 37055  }
 37056  
 37057  func test_column_count(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 37058  	bp := tls.Alloc(40)
 37059  	defer tls.Free(40)
 37060  
 37061  	if objc != 2 {
 37062  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 37063  			tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))), ts+17649, 0))
 37064  		return TCL_ERROR
 37065  	}
 37066  
 37067  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0 {
 37068  		return TCL_ERROR
 37069  	}
 37070  
 37071  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, sqlite3.Xsqlite3_column_count(tls, *(*uintptr)(unsafe.Pointer(bp + 32)))))
 37072  	return TCL_OK
 37073  }
 37074  
 37075  func test_column_type(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 37076  	bp := tls.Alloc(44)
 37077  	defer tls.Free(44)
 37078  
 37079  	var tp int32
 37080  
 37081  	if objc != 3 {
 37082  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 37083  			tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))), ts+17649, 0))
 37084  		return TCL_ERROR
 37085  	}
 37086  
 37087  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0 {
 37088  		return TCL_ERROR
 37089  	}
 37090  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+40) != 0 {
 37091  		return TCL_ERROR
 37092  	}
 37093  
 37094  	tp = sqlite3.Xsqlite3_column_type(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), *(*int32)(unsafe.Pointer(bp + 40)))
 37095  	switch tp {
 37096  	case SQLITE_INTEGER:
 37097  		tcl.XTcl_SetResult(tls, interp, ts+2413, uintptr(0))
 37098  		break
 37099  	case SQLITE_NULL:
 37100  		tcl.XTcl_SetResult(tls, interp, ts+5846, uintptr(0))
 37101  		break
 37102  	case SQLITE_FLOAT:
 37103  		tcl.XTcl_SetResult(tls, interp, ts+17662, uintptr(0))
 37104  		break
 37105  	case SQLITE_TEXT:
 37106  		tcl.XTcl_SetResult(tls, interp, ts+17668, uintptr(0))
 37107  		break
 37108  	case SQLITE_BLOB:
 37109  		tcl.XTcl_SetResult(tls, interp, ts+17673, uintptr(0))
 37110  		break
 37111  	default:
 37112  	}
 37113  
 37114  	return TCL_OK
 37115  }
 37116  
 37117  func test_column_int64(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 37118  	bp := tls.Alloc(44)
 37119  	defer tls.Free(44)
 37120  
 37121  	var iVal i64
 37122  
 37123  	if objc != 3 {
 37124  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 37125  			tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))), ts+17649, 0))
 37126  		return TCL_ERROR
 37127  	}
 37128  
 37129  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0 {
 37130  		return TCL_ERROR
 37131  	}
 37132  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+40) != 0 {
 37133  		return TCL_ERROR
 37134  	}
 37135  
 37136  	iVal = sqlite3.Xsqlite3_column_int64(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), *(*int32)(unsafe.Pointer(bp + 40)))
 37137  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewWideIntObj(tls, iVal))
 37138  	return TCL_OK
 37139  }
 37140  
 37141  func test_column_blob(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 37142  	bp := tls.Alloc(44)
 37143  	defer tls.Free(44)
 37144  
 37145  	var len int32
 37146  	var pBlob uintptr
 37147  
 37148  	if objc != 3 {
 37149  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 37150  			tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))), ts+17649, 0))
 37151  		return TCL_ERROR
 37152  	}
 37153  
 37154  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0 {
 37155  		return TCL_ERROR
 37156  	}
 37157  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+40) != 0 {
 37158  		return TCL_ERROR
 37159  	}
 37160  
 37161  	len = sqlite3.Xsqlite3_column_bytes(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), *(*int32)(unsafe.Pointer(bp + 40)))
 37162  	pBlob = sqlite3.Xsqlite3_column_blob(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), *(*int32)(unsafe.Pointer(bp + 40)))
 37163  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewByteArrayObj(tls, pBlob, len))
 37164  	return TCL_OK
 37165  }
 37166  
 37167  func test_column_double(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 37168  	bp := tls.Alloc(44)
 37169  	defer tls.Free(44)
 37170  
 37171  	var rVal float64
 37172  
 37173  	if objc != 3 {
 37174  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 37175  			tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))), ts+17649, 0))
 37176  		return TCL_ERROR
 37177  	}
 37178  
 37179  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0 {
 37180  		return TCL_ERROR
 37181  	}
 37182  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+40) != 0 {
 37183  		return TCL_ERROR
 37184  	}
 37185  
 37186  	rVal = sqlite3.Xsqlite3_column_double(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), *(*int32)(unsafe.Pointer(bp + 40)))
 37187  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewDoubleObj(tls, rVal))
 37188  	return TCL_OK
 37189  }
 37190  
 37191  func test_data_count(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 37192  	bp := tls.Alloc(40)
 37193  	defer tls.Free(40)
 37194  
 37195  	if objc != 2 {
 37196  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 37197  			tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))), ts+17649, 0))
 37198  		return TCL_ERROR
 37199  	}
 37200  
 37201  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0 {
 37202  		return TCL_ERROR
 37203  	}
 37204  
 37205  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, sqlite3.Xsqlite3_data_count(tls, *(*uintptr)(unsafe.Pointer(bp + 32)))))
 37206  	return TCL_OK
 37207  }
 37208  
 37209  func test_stmt_utf8(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 37210  	bp := tls.Alloc(44)
 37211  	defer tls.Free(44)
 37212  
 37213  	var xFunc uintptr
 37214  	var zRet uintptr
 37215  
 37216  	xFunc = clientData
 37217  	if objc != 3 {
 37218  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 37219  			tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))), ts+17649, 0))
 37220  		return TCL_ERROR
 37221  	}
 37222  
 37223  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0 {
 37224  		return TCL_ERROR
 37225  	}
 37226  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+40) != 0 {
 37227  		return TCL_ERROR
 37228  	}
 37229  	zRet = (*struct {
 37230  		f func(*libc.TLS, uintptr, int32) uintptr
 37231  	})(unsafe.Pointer(&struct{ uintptr }{xFunc})).f(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), *(*int32)(unsafe.Pointer(bp + 40)))
 37232  	if zRet != 0 {
 37233  		tcl.XTcl_SetResult(tls, interp, zRet, uintptr(0))
 37234  	}
 37235  	return TCL_OK
 37236  }
 37237  
 37238  func test_global_recover(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 37239  	var rc int32
 37240  	if objc != 1 {
 37241  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+584)
 37242  		return TCL_ERROR
 37243  	}
 37244  	rc = sqlite3.Xsqlite3_global_recover(tls)
 37245  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 37246  	return TCL_OK
 37247  }
 37248  
 37249  func test_stmt_utf16(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 37250  	bp := tls.Alloc(44)
 37251  	defer tls.Free(44)
 37252  
 37253  	var pRet uintptr
 37254  	var zName16 uintptr
 37255  	var xFunc uintptr
 37256  
 37257  	xFunc = clientData
 37258  	if objc != 3 {
 37259  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 37260  			tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))), ts+17649, 0))
 37261  		return TCL_ERROR
 37262  	}
 37263  
 37264  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0 {
 37265  		return TCL_ERROR
 37266  	}
 37267  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+40) != 0 {
 37268  		return TCL_ERROR
 37269  	}
 37270  
 37271  	zName16 = (*struct {
 37272  		f func(*libc.TLS, uintptr, int32) uintptr
 37273  	})(unsafe.Pointer(&struct{ uintptr }{xFunc})).f(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), *(*int32)(unsafe.Pointer(bp + 40)))
 37274  	if zName16 != 0 {
 37275  		var n int32
 37276  		var z uintptr = zName16
 37277  		for n = 0; *(*uint8)(unsafe.Pointer(z + uintptr(n))) != 0 || *(*uint8)(unsafe.Pointer(z + uintptr(n+1))) != 0; n = n + 2 {
 37278  		}
 37279  		pRet = tcl.XTcl_NewByteArrayObj(tls, zName16, n+2)
 37280  		tcl.XTcl_SetObjResult(tls, interp, pRet)
 37281  	}
 37282  
 37283  	return TCL_OK
 37284  }
 37285  
 37286  func test_stmt_int(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 37287  	bp := tls.Alloc(44)
 37288  	defer tls.Free(44)
 37289  
 37290  	var xFunc uintptr
 37291  
 37292  	xFunc = clientData
 37293  	if objc != 3 {
 37294  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 37295  			tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))), ts+17649, 0))
 37296  		return TCL_ERROR
 37297  	}
 37298  
 37299  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0 {
 37300  		return TCL_ERROR
 37301  	}
 37302  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+40) != 0 {
 37303  		return TCL_ERROR
 37304  	}
 37305  
 37306  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, (*struct {
 37307  		f func(*libc.TLS, uintptr, int32) int32
 37308  	})(unsafe.Pointer(&struct{ uintptr }{xFunc})).f(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), *(*int32)(unsafe.Pointer(bp + 40)))))
 37309  	return TCL_OK
 37310  }
 37311  
 37312  func test_interrupt(tls *libc.TLS, clientData uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 37313  	bp := tls.Alloc(40)
 37314  	defer tls.Free(40)
 37315  
 37316  	if argc != 2 {
 37317  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)), ts+15001, 0))
 37318  		return TCL_ERROR
 37319  	}
 37320  	if getDbPointer(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)), bp+32) != 0 {
 37321  		return TCL_ERROR
 37322  	}
 37323  	sqlite3.Xsqlite3_interrupt(tls, *(*uintptr)(unsafe.Pointer(bp + 32)))
 37324  	return TCL_OK
 37325  }
 37326  
 37327  func delete_function(tls *libc.TLS, clientData uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 37328  	bp := tls.Alloc(40)
 37329  	defer tls.Free(40)
 37330  
 37331  	var rc int32
 37332  
 37333  	if argc != 3 {
 37334  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 37335  			ts+17678, 0))
 37336  		return TCL_ERROR
 37337  	}
 37338  	if getDbPointer(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)), bp+32) != 0 {
 37339  		return TCL_ERROR
 37340  	}
 37341  	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))
 37342  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 37343  	return TCL_OK
 37344  }
 37345  
 37346  func delete_collation(tls *libc.TLS, clientData uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 37347  	bp := tls.Alloc(40)
 37348  	defer tls.Free(40)
 37349  
 37350  	var rc int32
 37351  
 37352  	if argc != 3 {
 37353  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 37354  			ts+17678, 0))
 37355  		return TCL_ERROR
 37356  	}
 37357  	if getDbPointer(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)), bp+32) != 0 {
 37358  		return TCL_ERROR
 37359  	}
 37360  	rc = sqlite3.Xsqlite3_create_collation(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), *(*uintptr)(unsafe.Pointer(argv + 2*8)), SQLITE_UTF8, uintptr(0), uintptr(0))
 37361  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 37362  	return TCL_OK
 37363  }
 37364  
 37365  func get_autocommit(tls *libc.TLS, clientData uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 37366  	bp := tls.Alloc(94)
 37367  	defer tls.Free(94)
 37368  
 37369  	if argc != 2 {
 37370  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 37371  			ts+15001, 0))
 37372  		return TCL_ERROR
 37373  	}
 37374  	if getDbPointer(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)), bp+56) != 0 {
 37375  		return TCL_ERROR
 37376  	}
 37377  	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)))))
 37378  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+40, bp+64, 0))
 37379  	return TCL_OK
 37380  }
 37381  
 37382  func test_busy_timeout(tls *libc.TLS, clientData uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 37383  	bp := tls.Alloc(60)
 37384  	defer tls.Free(60)
 37385  
 37386  	var rc int32
 37387  
 37388  	if argc != 3 {
 37389  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 37390  			ts+15001, 0))
 37391  		return TCL_ERROR
 37392  	}
 37393  	if getDbPointer(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)), bp+48) != 0 {
 37394  		return TCL_ERROR
 37395  	}
 37396  	if tcl.XTcl_GetInt(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 2*8)), bp+56) != 0 {
 37397  		return TCL_ERROR
 37398  	}
 37399  	rc = sqlite3.Xsqlite3_busy_timeout(tls, *(*uintptr)(unsafe.Pointer(bp + 48)), *(*int32)(unsafe.Pointer(bp + 56)))
 37400  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, sqlite3.Xsqlite3ErrName(tls, rc), 0))
 37401  	return TCL_OK
 37402  }
 37403  
 37404  func tcl_variable_type(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 37405  	var pVar uintptr
 37406  	if objc != 2 {
 37407  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+17696)
 37408  		return TCL_ERROR
 37409  	}
 37410  	pVar = tcl.XTcl_GetVar2Ex(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), uintptr(0), TCL_LEAVE_ERR_MSG)
 37411  	if pVar == uintptr(0) {
 37412  		return TCL_ERROR
 37413  	}
 37414  	if (*Tcl_Obj)(unsafe.Pointer(pVar)).FtypePtr != 0 {
 37415  		tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, (*Tcl_ObjType)(unsafe.Pointer((*Tcl_Obj)(unsafe.Pointer(pVar)).FtypePtr)).Fname, -1))
 37416  	}
 37417  	return TCL_OK
 37418  }
 37419  
 37420  func test_release_memory(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 37421  	bp := tls.Alloc(4)
 37422  	defer tls.Free(4)
 37423  
 37424  	var amt int32
 37425  	if objc != 1 && objc != 2 {
 37426  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+17705)
 37427  		return TCL_ERROR
 37428  	}
 37429  	if objc == 2 {
 37430  		if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp) != 0 {
 37431  			return TCL_ERROR
 37432  		}
 37433  	} else {
 37434  		*(*int32)(unsafe.Pointer(bp)) = -1
 37435  	}
 37436  	amt = sqlite3.Xsqlite3_release_memory(tls, *(*int32)(unsafe.Pointer(bp)))
 37437  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, amt))
 37438  	return TCL_OK
 37439  }
 37440  
 37441  func test_db_release_memory(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 37442  	bp := tls.Alloc(8)
 37443  	defer tls.Free(8)
 37444  
 37445  	var rc int32
 37446  	if objc != 2 {
 37447  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2050)
 37448  		return TCL_ERROR
 37449  	}
 37450  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 37451  		return TCL_ERROR
 37452  	}
 37453  	rc = sqlite3.Xsqlite3_db_release_memory(tls, *(*uintptr)(unsafe.Pointer(bp)))
 37454  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, rc))
 37455  	return TCL_OK
 37456  }
 37457  
 37458  func test_db_cacheflush(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 37459  	bp := tls.Alloc(8)
 37460  	defer tls.Free(8)
 37461  
 37462  	var rc int32
 37463  	if objc != 2 {
 37464  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2050)
 37465  		return TCL_ERROR
 37466  	}
 37467  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 37468  		return TCL_ERROR
 37469  	}
 37470  	rc = sqlite3.Xsqlite3_db_cacheflush(tls, *(*uintptr)(unsafe.Pointer(bp)))
 37471  	if rc != 0 {
 37472  		tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrStr(tls, rc), uintptr(0))
 37473  		return TCL_ERROR
 37474  	}
 37475  
 37476  	tcl.XTcl_ResetResult(tls, interp)
 37477  	return TCL_OK
 37478  }
 37479  
 37480  func test_system_errno(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 37481  	bp := tls.Alloc(8)
 37482  	defer tls.Free(8)
 37483  
 37484  	var iErrno int32
 37485  	if objc != 2 {
 37486  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2050)
 37487  		return TCL_ERROR
 37488  	}
 37489  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 37490  		return TCL_ERROR
 37491  	}
 37492  	iErrno = sqlite3.Xsqlite3_system_errno(tls, *(*uintptr)(unsafe.Pointer(bp)))
 37493  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, iErrno))
 37494  	return TCL_OK
 37495  }
 37496  
 37497  func test_db_filename(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 37498  	bp := tls.Alloc(24)
 37499  	defer tls.Free(24)
 37500  
 37501  	var zDbName uintptr
 37502  	if objc != 3 {
 37503  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+16225)
 37504  		return TCL_ERROR
 37505  	}
 37506  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+16) != 0 {
 37507  		return TCL_ERROR
 37508  	}
 37509  	zDbName = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 37510  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, sqlite3.Xsqlite3_db_filename(tls, *(*uintptr)(unsafe.Pointer(bp + 16)), zDbName), uintptr(0)))
 37511  	return TCL_OK
 37512  }
 37513  
 37514  func test_db_readonly(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 37515  	bp := tls.Alloc(8)
 37516  	defer tls.Free(8)
 37517  
 37518  	var zDbName uintptr
 37519  	if objc != 3 {
 37520  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+16225)
 37521  		return TCL_ERROR
 37522  	}
 37523  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 37524  		return TCL_ERROR
 37525  	}
 37526  	zDbName = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 37527  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, sqlite3.Xsqlite3_db_readonly(tls, *(*uintptr)(unsafe.Pointer(bp)), zDbName)))
 37528  	return TCL_OK
 37529  }
 37530  
 37531  func test_soft_heap_limit(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 37532  	bp := tls.Alloc(8)
 37533  	defer tls.Free(8)
 37534  
 37535  	var amt sqlite3_int64
 37536  	*(*Tcl_WideInt)(unsafe.Pointer(bp)) = int64(-1)
 37537  	if objc != 1 && objc != 2 {
 37538  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+17705)
 37539  		return TCL_ERROR
 37540  	}
 37541  	if objc == 2 {
 37542  		if tcl.XTcl_GetWideIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp) != 0 {
 37543  			return TCL_ERROR
 37544  		}
 37545  	}
 37546  	amt = sqlite3.Xsqlite3_soft_heap_limit64(tls, *(*Tcl_WideInt)(unsafe.Pointer(bp)))
 37547  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewWideIntObj(tls, amt))
 37548  	return TCL_OK
 37549  }
 37550  
 37551  func test_hard_heap_limit(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 37552  	bp := tls.Alloc(8)
 37553  	defer tls.Free(8)
 37554  
 37555  	var amt sqlite3_int64
 37556  	*(*Tcl_WideInt)(unsafe.Pointer(bp)) = int64(-1)
 37557  	if objc != 1 && objc != 2 {
 37558  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+17705)
 37559  		return TCL_ERROR
 37560  	}
 37561  	if objc == 2 {
 37562  		if tcl.XTcl_GetWideIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp) != 0 {
 37563  			return TCL_ERROR
 37564  		}
 37565  	}
 37566  	amt = sqlite3.Xsqlite3_hard_heap_limit64(tls, *(*Tcl_WideInt)(unsafe.Pointer(bp)))
 37567  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewWideIntObj(tls, amt))
 37568  	return TCL_OK
 37569  }
 37570  
 37571  func test_thread_cleanup(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 37572  	sqlite3.Xsqlite3_thread_cleanup(tls)
 37573  	return TCL_OK
 37574  }
 37575  
 37576  func test_pager_refcounts(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 37577  	bp := tls.Alloc(40)
 37578  	defer tls.Free(40)
 37579  
 37580  	var i int32
 37581  	var v int32
 37582  	var a uintptr
 37583  	var pResult uintptr
 37584  
 37585  	if objc != 2 {
 37586  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 37587  			tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+15001, 0))
 37588  		return TCL_ERROR
 37589  	}
 37590  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0 {
 37591  		return TCL_ERROR
 37592  	}
 37593  	pResult = tcl.XTcl_NewObj(tls)
 37594  	for i = 0; i < (*sqlite31)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 32)))).FnDb; i++ {
 37595  		if (*Db)(unsafe.Pointer((*sqlite31)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 32)))).FaDb+uintptr(i)*32)).FpBt == uintptr(0) {
 37596  			v = -1
 37597  		} else {
 37598  			sqlite3.Xsqlite3_mutex_enter(tls, (*sqlite31)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 32)))).Fmutex)
 37599  			a = sqlite3.Xsqlite3PagerStats(tls, sqlite3.Xsqlite3BtreePager(tls, (*Db)(unsafe.Pointer((*sqlite31)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 32)))).FaDb+uintptr(i)*32)).FpBt))
 37600  			v = *(*int32)(unsafe.Pointer(a))
 37601  			sqlite3.Xsqlite3_mutex_leave(tls, (*sqlite31)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 32)))).Fmutex)
 37602  		}
 37603  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pResult, tcl.XTcl_NewIntObj(tls, v))
 37604  	}
 37605  	tcl.XTcl_SetObjResult(tls, interp, pResult)
 37606  	return TCL_OK
 37607  }
 37608  
 37609  func working_64bit_int(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 37610  	var pTestObj uintptr
 37611  	var working int32 = 0
 37612  
 37613  	pTestObj = tcl.XTcl_NewWideIntObj(tls, int64(1000000)*int64(1234567890))
 37614  	working = libc.Bool32(libc.Xstrcmp(tls, tcl.XTcl_GetString(tls, pTestObj), ts+17709) == 0)
 37615  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 37616  		var _objPtr uintptr = pTestObj
 37617  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 37618  			tcl.XTclFreeObj(tls, _objPtr)
 37619  		}
 37620  	}
 37621  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, libc.Bool32(working != 0)))
 37622  	return TCL_OK
 37623  }
 37624  
 37625  func vfs_unlink_test(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 37626  	bp := tls.Alloc(496)
 37627  	defer tls.Free(496)
 37628  
 37629  	var i int32
 37630  	var pMain uintptr
 37631  
 37632  	sqlite3.Xsqlite3_vfs_unregister(tls, uintptr(0))
 37633  	(*sqlite3_vfs)(unsafe.Pointer(bp)).FzName = ts + 17726
 37634  	(*sqlite3_vfs)(unsafe.Pointer(bp + 168)).FzName = ts + 17732
 37635  
 37636  	pMain = sqlite3.Xsqlite3_vfs_find(tls, uintptr(0))
 37637  	sqlite3.Xsqlite3_vfs_register(tls, bp, 0)
 37638  
 37639  	sqlite3.Xsqlite3_vfs_register(tls, bp+168, 0)
 37640  
 37641  	sqlite3.Xsqlite3_vfs_register(tls, bp, 1)
 37642  
 37643  	sqlite3.Xsqlite3_vfs_register(tls, bp+168, 1)
 37644  
 37645  	if pMain != 0 {
 37646  		sqlite3.Xsqlite3_vfs_register(tls, pMain, 1)
 37647  
 37648  	}
 37649  
 37650  	for i = 0; uint64(i) < uint64(unsafe.Sizeof([20]uintptr{}))/uint64(unsafe.Sizeof(uintptr(0))); i++ {
 37651  		*(*uintptr)(unsafe.Pointer(bp + 336 + uintptr(i)*8)) = sqlite3.Xsqlite3_vfs_find(tls, uintptr(0))
 37652  		if *(*uintptr)(unsafe.Pointer(bp + 336 + uintptr(i)*8)) != 0 {
 37653  			sqlite3.Xsqlite3_vfs_unregister(tls, *(*uintptr)(unsafe.Pointer(bp + 336 + uintptr(i)*8)))
 37654  
 37655  		}
 37656  	}
 37657  
 37658  	sqlite3.Xsqlite3_vfs_register(tls, pMain, 0)
 37659  
 37660  	sqlite3.Xsqlite3_vfs_unregister(tls, pMain)
 37661  
 37662  	for i = int32(uint64(unsafe.Sizeof([20]uintptr{}))/uint64(unsafe.Sizeof(uintptr(0))) - uint64(1)); i >= 0; i-- {
 37663  		if *(*uintptr)(unsafe.Pointer(bp + 336 + uintptr(i)*8)) != 0 {
 37664  			sqlite3.Xsqlite3_vfs_register(tls, *(*uintptr)(unsafe.Pointer(bp + 336 + uintptr(i)*8)), 1)
 37665  
 37666  		}
 37667  	}
 37668  
 37669  	sqlite3.Xsqlite3_vfs_unregister(tls, bp)
 37670  	sqlite3.Xsqlite3_vfs_unregister(tls, bp+168)
 37671  
 37672  	sqlite3.Xsqlite3_vfs_unregister(tls, bp)
 37673  	sqlite3.Xsqlite3_vfs_unregister(tls, bp+168)
 37674  
 37675  	return TCL_OK
 37676  }
 37677  
 37678  func vfs_initfail_test(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 37679  	bp := tls.Alloc(168)
 37680  	defer tls.Free(168)
 37681  
 37682  	(*sqlite3_vfs)(unsafe.Pointer(bp)).FzName = ts + 17726
 37683  
 37684  	if sqlite3.Xsqlite3_vfs_find(tls, uintptr(0)) != 0 {
 37685  		return TCL_ERROR
 37686  	}
 37687  	sqlite3.Xsqlite3_vfs_register(tls, bp, 0)
 37688  	if sqlite3.Xsqlite3_vfs_find(tls, uintptr(0)) != 0 {
 37689  		return TCL_ERROR
 37690  	}
 37691  	sqlite3.Xsqlite3_vfs_register(tls, bp, 1)
 37692  	if sqlite3.Xsqlite3_vfs_find(tls, uintptr(0)) != 0 {
 37693  		return TCL_ERROR
 37694  	}
 37695  	return TCL_OK
 37696  }
 37697  
 37698  var apVfs [20]uintptr
 37699  var nVfs int32 = 0
 37700  
 37701  func vfs_unregister_all(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 37702  	var i int32
 37703  	for i = 0; i < int32(uint64(unsafe.Sizeof(apVfs))/uint64(unsafe.Sizeof(uintptr(0)))); i++ {
 37704  		apVfs[i] = sqlite3.Xsqlite3_vfs_find(tls, uintptr(0))
 37705  		if apVfs[i] == uintptr(0) {
 37706  			break
 37707  		}
 37708  		sqlite3.Xsqlite3_vfs_unregister(tls, apVfs[i])
 37709  	}
 37710  	nVfs = i
 37711  	return TCL_OK
 37712  }
 37713  
 37714  func vfs_reregister_all(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 37715  	var i int32
 37716  	for i = nVfs - 1; i >= 0; i-- {
 37717  		sqlite3.Xsqlite3_vfs_register(tls, apVfs[i], 1)
 37718  	}
 37719  	return TCL_OK
 37720  }
 37721  
 37722  func file_control_test(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 37723  	bp := tls.Alloc(44)
 37724  	defer tls.Free(44)
 37725  
 37726  	*(*int32)(unsafe.Pointer(bp + 40)) = 0
 37727  
 37728  	var rc int32
 37729  	_ = rc
 37730  
 37731  	if objc != 2 {
 37732  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 37733  			tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+15001, 0))
 37734  		return TCL_ERROR
 37735  	}
 37736  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0 {
 37737  		return TCL_ERROR
 37738  	}
 37739  	rc = sqlite3.Xsqlite3_file_control(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), uintptr(0), 0, bp+40)
 37740  
 37741  	rc = sqlite3.Xsqlite3_file_control(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), ts+17738, SQLITE_FCNTL_LOCKSTATE, bp+40)
 37742  
 37743  	rc = sqlite3.Xsqlite3_file_control(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), ts+85, -1, bp+40)
 37744  
 37745  	rc = sqlite3.Xsqlite3_file_control(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), ts+8931, -1, bp+40)
 37746  
 37747  	return TCL_OK
 37748  }
 37749  
 37750  func file_control_lasterrno_test(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 37751  	bp := tls.Alloc(76)
 37752  	defer tls.Free(76)
 37753  
 37754  	*(*int32)(unsafe.Pointer(bp + 72)) = 0
 37755  
 37756  	var rc int32
 37757  
 37758  	if objc != 2 {
 37759  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 37760  			tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+15001, 0))
 37761  		return TCL_ERROR
 37762  	}
 37763  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+64) != 0 {
 37764  		return TCL_ERROR
 37765  	}
 37766  	rc = sqlite3.Xsqlite3_file_control(tls, *(*uintptr)(unsafe.Pointer(bp + 64)), uintptr(0), SQLITE_FCNTL_LAST_ERRNO, bp+72)
 37767  	if rc != 0 {
 37768  		tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, rc))
 37769  		return TCL_ERROR
 37770  	}
 37771  	if *(*int32)(unsafe.Pointer(bp + 72)) != 0 {
 37772  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+17751,
 37773  			tcl.XTcl_GetStringFromObj(tls, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 72))), uintptr(0)), ts+4894, 0))
 37774  		return TCL_ERROR
 37775  	}
 37776  	return TCL_OK
 37777  }
 37778  
 37779  func file_control_data_version(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 37780  	bp := tls.Alloc(120)
 37781  	defer tls.Free(120)
 37782  
 37783  	var zDb uintptr
 37784  
 37785  	var rc int32
 37786  
 37787  	if objc != 3 && objc != 2 {
 37788  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+17779)
 37789  		return TCL_ERROR
 37790  	}
 37791  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+8) != 0 {
 37792  		return TCL_ERROR
 37793  	}
 37794  	if objc == 3 {
 37795  		zDb = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 37796  	} else {
 37797  		zDb = uintptr(0)
 37798  	}
 37799  
 37800  	rc = sqlite3.Xsqlite3_file_control(tls, *(*uintptr)(unsafe.Pointer(bp + 8)), zDb, SQLITE_FCNTL_DATA_VERSION, bp+16)
 37801  	if rc != 0 {
 37802  		tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 37803  		return TCL_ERROR
 37804  	} else {
 37805  		sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([100]uint8{})), bp+20, ts+17791, libc.VaList(bp, *(*uint32)(unsafe.Pointer(bp + 16))))
 37806  		tcl.XTcl_SetResult(tls, interp, bp+20, uintptr(1))
 37807  		return TCL_OK
 37808  	}
 37809  	return int32(0)
 37810  }
 37811  
 37812  func file_control_chunksize_test(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 37813  	bp := tls.Alloc(12)
 37814  	defer tls.Free(12)
 37815  
 37816  	var zDb uintptr
 37817  
 37818  	var rc int32
 37819  
 37820  	if objc != 4 {
 37821  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+17794)
 37822  		return TCL_ERROR
 37823  	}
 37824  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 ||
 37825  		tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+8) != 0 {
 37826  		return TCL_ERROR
 37827  	}
 37828  	zDb = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 37829  	if int32(*(*uint8)(unsafe.Pointer(zDb))) == 0 {
 37830  		zDb = uintptr(0)
 37831  	}
 37832  
 37833  	rc = sqlite3.Xsqlite3_file_control(tls, *(*uintptr)(unsafe.Pointer(bp)), zDb, SQLITE_FCNTL_CHUNK_SIZE, bp+8)
 37834  	if rc != 0 {
 37835  		tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 37836  		return TCL_ERROR
 37837  	}
 37838  	return TCL_OK
 37839  }
 37840  
 37841  func file_control_sizehint_test(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 37842  	bp := tls.Alloc(16)
 37843  	defer tls.Free(16)
 37844  
 37845  	var zDb uintptr
 37846  
 37847  	var rc int32
 37848  
 37849  	if objc != 4 {
 37850  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+17794)
 37851  		return TCL_ERROR
 37852  	}
 37853  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 ||
 37854  		tcl.XTcl_GetWideIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+8) != 0 {
 37855  		return TCL_ERROR
 37856  	}
 37857  	zDb = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 37858  	if int32(*(*uint8)(unsafe.Pointer(zDb))) == 0 {
 37859  		zDb = uintptr(0)
 37860  	}
 37861  
 37862  	rc = sqlite3.Xsqlite3_file_control(tls, *(*uintptr)(unsafe.Pointer(bp)), zDb, SQLITE_FCNTL_SIZE_HINT, bp+8)
 37863  	if rc != 0 {
 37864  		tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 37865  		return TCL_ERROR
 37866  	}
 37867  	return TCL_OK
 37868  }
 37869  
 37870  func file_control_lockproxy_test(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 37871  	bp := tls.Alloc(40)
 37872  	defer tls.Free(40)
 37873  
 37874  	if objc != 3 {
 37875  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 37876  			tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+17809, 0))
 37877  		return TCL_ERROR
 37878  	}
 37879  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0 {
 37880  		return TCL_ERROR
 37881  	}
 37882  
 37883  	return TCL_OK
 37884  }
 37885  
 37886  func file_control_persist_wal(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 37887  	bp := tls.Alloc(176)
 37888  	defer tls.Free(176)
 37889  
 37890  	var rc int32
 37891  
 37892  	if objc != 3 {
 37893  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 37894  			tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+17817, 0))
 37895  		return TCL_ERROR
 37896  	}
 37897  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+64) != 0 {
 37898  		return TCL_ERROR
 37899  	}
 37900  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+72) != 0 {
 37901  		return TCL_ERROR
 37902  	}
 37903  	rc = sqlite3.Xsqlite3_file_control(tls, *(*uintptr)(unsafe.Pointer(bp + 64)), uintptr(0), SQLITE_FCNTL_PERSIST_WAL, bp+72)
 37904  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([100]uint8{})), bp+76, ts+17826, libc.VaList(bp+32, rc, *(*int32)(unsafe.Pointer(bp + 72))))
 37905  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+48, bp+76, uintptr(0)))
 37906  	return TCL_OK
 37907  }
 37908  
 37909  func file_control_powersafe_overwrite(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 37910  	bp := tls.Alloc(176)
 37911  	defer tls.Free(176)
 37912  
 37913  	var rc int32
 37914  
 37915  	if objc != 3 {
 37916  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 37917  			tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+17817, 0))
 37918  		return TCL_ERROR
 37919  	}
 37920  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+64) != 0 {
 37921  		return TCL_ERROR
 37922  	}
 37923  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+72) != 0 {
 37924  		return TCL_ERROR
 37925  	}
 37926  	rc = sqlite3.Xsqlite3_file_control(tls, *(*uintptr)(unsafe.Pointer(bp + 64)), uintptr(0), SQLITE_FCNTL_POWERSAFE_OVERWRITE, bp+72)
 37927  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([100]uint8{})), bp+76, ts+17826, libc.VaList(bp+32, rc, *(*int32)(unsafe.Pointer(bp + 72))))
 37928  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+48, bp+76, uintptr(0)))
 37929  	return TCL_OK
 37930  }
 37931  
 37932  func file_control_vfsname(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 37933  	bp := tls.Alloc(64)
 37934  	defer tls.Free(64)
 37935  
 37936  	var zDbName uintptr = ts + 85
 37937  	*(*uintptr)(unsafe.Pointer(bp + 56)) = uintptr(0)
 37938  
 37939  	if objc != 2 && objc != 3 {
 37940  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 37941  			tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+17832, 0))
 37942  		return TCL_ERROR
 37943  	}
 37944  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+48) != 0 {
 37945  		return TCL_ERROR
 37946  	}
 37947  	if objc == 3 {
 37948  		zDbName = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 37949  	}
 37950  	sqlite3.Xsqlite3_file_control(tls, *(*uintptr)(unsafe.Pointer(bp + 48)), zDbName, SQLITE_FCNTL_VFSNAME, bp+56)
 37951  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, *(*uintptr)(unsafe.Pointer(bp + 56)), uintptr(0)))
 37952  	sqlite3.Xsqlite3_free(tls, *(*uintptr)(unsafe.Pointer(bp + 56)))
 37953  	return TCL_OK
 37954  }
 37955  
 37956  func file_control_reservebytes(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 37957  	bp := tls.Alloc(12)
 37958  	defer tls.Free(12)
 37959  
 37960  	var zDbName uintptr = ts + 85
 37961  	*(*int32)(unsafe.Pointer(bp + 8)) = 0
 37962  	var rc int32
 37963  
 37964  	if objc != 3 {
 37965  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+17844)
 37966  		return TCL_ERROR
 37967  	}
 37968  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 ||
 37969  		tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+8) != 0 {
 37970  		return TCL_ERROR
 37971  	}
 37972  
 37973  	rc = sqlite3.Xsqlite3_file_control(tls, *(*uintptr)(unsafe.Pointer(bp)), zDbName, SQLITE_FCNTL_RESERVE_BYTES, bp+8)
 37974  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3ErrName(tls, rc), -1))
 37975  	return TCL_OK
 37976  }
 37977  
 37978  func file_control_tempfilename(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 37979  	bp := tls.Alloc(64)
 37980  	defer tls.Free(64)
 37981  
 37982  	var zDbName uintptr = ts + 85
 37983  	*(*uintptr)(unsafe.Pointer(bp + 56)) = uintptr(0)
 37984  
 37985  	if objc != 2 && objc != 3 {
 37986  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 37987  			tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+17832, 0))
 37988  		return TCL_ERROR
 37989  	}
 37990  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+48) != 0 {
 37991  		return TCL_ERROR
 37992  	}
 37993  	if objc == 3 {
 37994  		zDbName = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 37995  	}
 37996  	sqlite3.Xsqlite3_file_control(tls, *(*uintptr)(unsafe.Pointer(bp + 48)), zDbName, SQLITE_FCNTL_TEMPFILENAME, bp+56)
 37997  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, *(*uintptr)(unsafe.Pointer(bp + 56)), uintptr(0)))
 37998  	sqlite3.Xsqlite3_free(tls, *(*uintptr)(unsafe.Pointer(bp + 56)))
 37999  	return TCL_OK
 38000  }
 38001  
 38002  func file_control_external_reader(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 38003  	bp := tls.Alloc(44)
 38004  	defer tls.Free(44)
 38005  
 38006  	var zName uintptr = ts + 85
 38007  	*(*int32)(unsafe.Pointer(bp + 40)) = 0
 38008  	var rc int32 = SQLITE_OK
 38009  
 38010  	if objc != 2 && objc != 3 {
 38011  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 38012  			tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+17832, 0))
 38013  		return TCL_ERROR
 38014  	}
 38015  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0 {
 38016  		return TCL_ERROR
 38017  	}
 38018  	if objc == 3 {
 38019  		zName = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 38020  	}
 38021  	rc = sqlite3.Xsqlite3_file_control(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), zName, SQLITE_FCNTL_EXTERNAL_READER, bp+40)
 38022  	if rc != SQLITE_OK {
 38023  		tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 38024  		return TCL_ERROR
 38025  	}
 38026  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 40))))
 38027  	return TCL_OK
 38028  }
 38029  
 38030  func vfs_list(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 38031  	var pVfs uintptr
 38032  	var pRet uintptr = tcl.XTcl_NewObj(tls)
 38033  	if objc != 1 {
 38034  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+584)
 38035  		return TCL_ERROR
 38036  	}
 38037  	for pVfs = sqlite3.Xsqlite3_vfs_find(tls, uintptr(0)); pVfs != 0; pVfs = (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpNext {
 38038  		tcl.XTcl_ListObjAppendElement(tls, interp, pRet, tcl.XTcl_NewStringObj(tls, (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FzName, -1))
 38039  	}
 38040  	tcl.XTcl_SetObjResult(tls, interp, pRet)
 38041  	return TCL_OK
 38042  }
 38043  
 38044  func test_limit(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 38045  	bp := tls.Alloc(68)
 38046  	defer tls.Free(68)
 38047  
 38048  	var rc int32
 38049  	var i int32
 38050  	var id int32 = 0
 38051  
 38052  	var zId uintptr
 38053  
 38054  	if objc != 4 {
 38055  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 38056  			tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+17849, 0))
 38057  		return TCL_ERROR
 38058  	}
 38059  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+56) != 0 {
 38060  		return TCL_ERROR
 38061  	}
 38062  	zId = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 38063  	for i = 0; uint64(i) < uint64(unsafe.Sizeof(aId))/uint64(unsafe.Sizeof(struct {
 38064  		FzName       uintptr
 38065  		Fid          int32
 38066  		F__ccgo_pad1 [4]byte
 38067  	}{})); i++ {
 38068  		if libc.Xstrcmp(tls, zId, aId[i].FzName) == 0 {
 38069  			id = aId[i].Fid
 38070  			break
 38071  		}
 38072  	}
 38073  	if uint64(i) >= uint64(unsafe.Sizeof(aId))/uint64(unsafe.Sizeof(struct {
 38074  		FzName       uintptr
 38075  		Fid          int32
 38076  		F__ccgo_pad1 [4]byte
 38077  	}{})) {
 38078  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+17862, zId, uintptr(0)))
 38079  		return TCL_ERROR
 38080  	}
 38081  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+64) != 0 {
 38082  		return TCL_ERROR
 38083  	}
 38084  	rc = sqlite3.Xsqlite3_limit(tls, *(*uintptr)(unsafe.Pointer(bp + 56)), id, *(*int32)(unsafe.Pointer(bp + 64)))
 38085  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, rc))
 38086  	return TCL_OK
 38087  }
 38088  
 38089  var aId = [14]struct {
 38090  	FzName       uintptr
 38091  	Fid          int32
 38092  	F__ccgo_pad1 [4]byte
 38093  }{
 38094  	{FzName: ts + 17883},
 38095  	{FzName: ts + 17903, Fid: SQLITE_LIMIT_SQL_LENGTH},
 38096  	{FzName: ts + 17927, Fid: SQLITE_LIMIT_COLUMN},
 38097  	{FzName: ts + 17947, Fid: SQLITE_LIMIT_EXPR_DEPTH},
 38098  	{FzName: ts + 17971, Fid: SQLITE_LIMIT_COMPOUND_SELECT},
 38099  	{FzName: ts + 18000, Fid: SQLITE_LIMIT_VDBE_OP},
 38100  	{FzName: ts + 18021, Fid: SQLITE_LIMIT_FUNCTION_ARG},
 38101  	{FzName: ts + 18047, Fid: SQLITE_LIMIT_ATTACHED},
 38102  	{FzName: ts + 18069, Fid: SQLITE_LIMIT_LIKE_PATTERN_LENGTH},
 38103  	{FzName: ts + 18102, Fid: SQLITE_LIMIT_VARIABLE_NUMBER},
 38104  	{FzName: ts + 18131, Fid: SQLITE_LIMIT_TRIGGER_DEPTH},
 38105  	{FzName: ts + 18158, Fid: SQLITE_LIMIT_WORKER_THREADS},
 38106  	{FzName: ts + 18186, Fid: -1},
 38107  	{FzName: ts + 18208, Fid: SQLITE_LIMIT_WORKER_THREADS + 1},
 38108  }
 38109  
 38110  func save_prng_state(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 38111  	var rc int32 = sqlite3.Xsqlite3_test_control(tls, 9999, 0)
 38112  	_ = rc
 38113  
 38114  	rc = sqlite3.Xsqlite3_test_control(tls, -1, 0)
 38115  
 38116  	sqlite3.Xsqlite3_test_control(tls, SQLITE_TESTCTRL_PRNG_SAVE, 0)
 38117  	return TCL_OK
 38118  }
 38119  
 38120  func restore_prng_state(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 38121  	sqlite3.Xsqlite3_test_control(tls, SQLITE_TESTCTRL_PRNG_RESTORE, 0)
 38122  	return TCL_OK
 38123  }
 38124  
 38125  func reset_prng_state(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 38126  	sqlite3.Xsqlite3_randomness(tls, 0, uintptr(0))
 38127  	return TCL_OK
 38128  }
 38129  
 38130  func prng_seed(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 38131  	bp := tls.Alloc(32)
 38132  	defer tls.Free(32)
 38133  
 38134  	*(*int32)(unsafe.Pointer(bp + 16)) = 0
 38135  	*(*uintptr)(unsafe.Pointer(bp + 24)) = uintptr(0)
 38136  	if objc != 2 && objc != 3 {
 38137  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+18228)
 38138  		return TCL_ERROR
 38139  	}
 38140  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp+16) != 0 {
 38141  		return TCL_ERROR
 38142  	}
 38143  	if objc == 3 && getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8))), bp+24) != 0 {
 38144  		return TCL_ERROR
 38145  	}
 38146  	sqlite3.Xsqlite3_test_control(tls, SQLITE_TESTCTRL_PRNG_SEED, libc.VaList(bp, *(*int32)(unsafe.Pointer(bp + 16)), *(*uintptr)(unsafe.Pointer(bp + 24))))
 38147  	return TCL_OK
 38148  }
 38149  
 38150  func extra_schema_checks(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 38151  	bp := tls.Alloc(12)
 38152  	defer tls.Free(12)
 38153  
 38154  	*(*int32)(unsafe.Pointer(bp + 8)) = 0
 38155  	if objc != 2 {
 38156  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+18238)
 38157  		return TCL_ERROR
 38158  	}
 38159  	if tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp+8) != 0 {
 38160  		return TCL_ERROR
 38161  	}
 38162  	sqlite3.Xsqlite3_test_control(tls, SQLITE_TESTCTRL_EXTRA_SCHEMA_CHECKS, libc.VaList(bp, *(*int32)(unsafe.Pointer(bp + 8))))
 38163  	return TCL_OK
 38164  }
 38165  
 38166  func database_may_be_corrupt(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 38167  	bp := tls.Alloc(8)
 38168  	defer tls.Free(8)
 38169  
 38170  	sqlite3.Xsqlite3_test_control(tls, SQLITE_TESTCTRL_NEVER_CORRUPT, libc.VaList(bp, 0))
 38171  	return TCL_OK
 38172  }
 38173  
 38174  func database_never_corrupt(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 38175  	bp := tls.Alloc(8)
 38176  	defer tls.Free(8)
 38177  
 38178  	sqlite3.Xsqlite3_test_control(tls, SQLITE_TESTCTRL_NEVER_CORRUPT, libc.VaList(bp, 1))
 38179  	return TCL_OK
 38180  }
 38181  
 38182  func test_pcache_stats(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 38183  	bp := tls.Alloc(16)
 38184  	defer tls.Free(16)
 38185  
 38186  	var pRet uintptr
 38187  
 38188  	sqlite3.Xsqlite3PcacheStats(tls, bp, bp+4, bp+8, bp+12)
 38189  
 38190  	pRet = tcl.XTcl_NewObj(tls)
 38191  	tcl.XTcl_ListObjAppendElement(tls, interp, pRet, tcl.XTcl_NewStringObj(tls, ts+18246, -1))
 38192  	tcl.XTcl_ListObjAppendElement(tls, interp, pRet, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp))))
 38193  	tcl.XTcl_ListObjAppendElement(tls, interp, pRet, tcl.XTcl_NewStringObj(tls, ts+18254, -1))
 38194  	tcl.XTcl_ListObjAppendElement(tls, interp, pRet, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 4))))
 38195  	tcl.XTcl_ListObjAppendElement(tls, interp, pRet, tcl.XTcl_NewStringObj(tls, ts+18258, -1))
 38196  	tcl.XTcl_ListObjAppendElement(tls, interp, pRet, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 8))))
 38197  	tcl.XTcl_ListObjAppendElement(tls, interp, pRet, tcl.XTcl_NewStringObj(tls, ts+18262, -1))
 38198  	tcl.XTcl_ListObjAppendElement(tls, interp, pRet, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 12))))
 38199  
 38200  	tcl.XTcl_SetObjResult(tls, interp, pRet)
 38201  
 38202  	return TCL_OK
 38203  }
 38204  
 38205  func test_unlock_notify_cb(tls *libc.TLS, aArg uintptr, nArg int32) {
 38206  	var ii int32
 38207  	for ii = 0; ii < nArg; ii++ {
 38208  		tcl.XTcl_EvalEx(tls, *(*uintptr)(unsafe.Pointer(aArg + uintptr(ii)*8)), ts+13692, -1, TCL_EVAL_GLOBAL)
 38209  	}
 38210  }
 38211  
 38212  func test_unlock_notify(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 38213  	bp := tls.Alloc(8)
 38214  	defer tls.Free(8)
 38215  
 38216  	var rc int32
 38217  
 38218  	if objc != 2 {
 38219  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2050)
 38220  		return TCL_ERROR
 38221  	}
 38222  
 38223  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 38224  		return TCL_ERROR
 38225  	}
 38226  	rc = sqlite3.Xsqlite3_unlock_notify(tls, *(*uintptr)(unsafe.Pointer(bp)), *(*uintptr)(unsafe.Pointer(&struct {
 38227  		f func(*libc.TLS, uintptr, int32)
 38228  	}{test_unlock_notify_cb})), interp)
 38229  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 38230  	return TCL_OK
 38231  }
 38232  
 38233  func test_wal_checkpoint(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 38234  	bp := tls.Alloc(8)
 38235  	defer tls.Free(8)
 38236  
 38237  	var zDb uintptr = uintptr(0)
 38238  
 38239  	var rc int32
 38240  
 38241  	if objc != 3 && objc != 2 {
 38242  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+18273)
 38243  		return TCL_ERROR
 38244  	}
 38245  
 38246  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 38247  		return TCL_ERROR
 38248  	}
 38249  	if objc == 3 {
 38250  		zDb = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 38251  	}
 38252  	rc = sqlite3.Xsqlite3_wal_checkpoint(tls, *(*uintptr)(unsafe.Pointer(bp)), zDb)
 38253  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 38254  	return TCL_OK
 38255  }
 38256  
 38257  func test_wal_checkpoint_v2(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 38258  	bp := tls.Alloc(96)
 38259  	defer tls.Free(96)
 38260  
 38261  	var zDb uintptr = uintptr(0)
 38262  
 38263  	var rc int32
 38264  
 38265  	*(*int32)(unsafe.Pointer(bp + 88)) = -555
 38266  	*(*int32)(unsafe.Pointer(bp + 92)) = -555
 38267  	var pRet uintptr
 38268  
 38269  	*(*[5]uintptr)(unsafe.Pointer(bp + 48)) = [5]uintptr{ts + 18283, ts + 18291, ts + 18296, ts + 18304, uintptr(0)}
 38270  
 38271  	if objc != 3 && objc != 4 {
 38272  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+18313)
 38273  		return TCL_ERROR
 38274  	}
 38275  
 38276  	if objc == 4 {
 38277  		zDb = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)))
 38278  	}
 38279  	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) &&
 38280  		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) {
 38281  		return TCL_ERROR
 38282  	}
 38283  
 38284  	rc = sqlite3.Xsqlite3_wal_checkpoint_v2(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), zDb, *(*int32)(unsafe.Pointer(bp + 40)), bp+88, bp+92)
 38285  	if rc != SQLITE_OK && rc != SQLITE_BUSY {
 38286  		var zErrCode uintptr = sqlite3.Xsqlite3ErrName(tls, rc)
 38287  		tcl.XTcl_ResetResult(tls, interp)
 38288  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, zErrCode, ts+9645, sqlite3.Xsqlite3_errmsg(tls, *(*uintptr)(unsafe.Pointer(bp + 32))), 0))
 38289  		return TCL_ERROR
 38290  	}
 38291  
 38292  	pRet = tcl.XTcl_NewObj(tls)
 38293  	tcl.XTcl_ListObjAppendElement(tls, interp, pRet, tcl.XTcl_NewIntObj(tls, func() int32 {
 38294  		if rc == SQLITE_BUSY {
 38295  			return 1
 38296  		}
 38297  		return 0
 38298  	}()))
 38299  	tcl.XTcl_ListObjAppendElement(tls, interp, pRet, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 88))))
 38300  	tcl.XTcl_ListObjAppendElement(tls, interp, pRet, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 92))))
 38301  	tcl.XTcl_SetObjResult(tls, interp, pRet)
 38302  
 38303  	return TCL_OK
 38304  }
 38305  
 38306  func test_wal_autocheckpoint(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 38307  	bp := tls.Alloc(12)
 38308  	defer tls.Free(12)
 38309  
 38310  	var rc int32
 38311  
 38312  	if objc != 3 {
 38313  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+18333)
 38314  		return TCL_ERROR
 38315  	}
 38316  
 38317  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 ||
 38318  		tcl.XTcl_GetIntFromObj(tls, uintptr(0), *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+8) != 0 {
 38319  		return TCL_ERROR
 38320  	}
 38321  
 38322  	rc = sqlite3.Xsqlite3_wal_autocheckpoint(tls, *(*uintptr)(unsafe.Pointer(bp)), *(*int32)(unsafe.Pointer(bp + 8)))
 38323  	tcl.XTcl_ResetResult(tls, interp)
 38324  	if rc != SQLITE_OK {
 38325  		var zErrCode uintptr = sqlite3.Xsqlite3ErrName(tls, rc)
 38326  		tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, zErrCode, -1))
 38327  		return TCL_ERROR
 38328  	}
 38329  
 38330  	return TCL_OK
 38331  }
 38332  
 38333  type LogCallback = struct {
 38334  	FpInterp uintptr
 38335  	FpObj    uintptr
 38336  }
 38337  
 38338  var logcallback = LogCallback{}
 38339  
 38340  func xLogcallback(tls *libc.TLS, unused uintptr, err int32, zMsg uintptr) {
 38341  	var pNew uintptr = tcl.XTcl_DuplicateObj(tls, logcallback.FpObj)
 38342  	(*Tcl_Obj)(unsafe.Pointer(pNew)).FrefCount++
 38343  	tcl.XTcl_ListObjAppendElement(tls,
 38344  		uintptr(0), pNew, tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3ErrName(tls, err), -1))
 38345  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pNew, tcl.XTcl_NewStringObj(tls, zMsg, -1))
 38346  	tcl.XTcl_EvalObjEx(tls, logcallback.FpInterp, pNew, TCL_EVAL_GLOBAL|TCL_EVAL_DIRECT)
 38347  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 38348  		var _objPtr uintptr = pNew
 38349  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 38350  			tcl.XTclFreeObj(tls, _objPtr)
 38351  		}
 38352  	}
 38353  }
 38354  
 38355  func test_sqlite3_log(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 38356  	bp := tls.Alloc(32)
 38357  	defer tls.Free(32)
 38358  
 38359  	if objc > 2 {
 38360  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+10187)
 38361  		return TCL_ERROR
 38362  	}
 38363  	if logcallback.FpObj != 0 {
 38364  		for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 38365  			var _objPtr uintptr = logcallback.FpObj
 38366  			if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 38367  				tcl.XTclFreeObj(tls, _objPtr)
 38368  			}
 38369  		}
 38370  		logcallback.FpObj = uintptr(0)
 38371  		logcallback.FpInterp = uintptr(0)
 38372  		sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_LOG, libc.VaList(bp, uintptr(0), uintptr(0)))
 38373  	}
 38374  	if objc > 1 {
 38375  		logcallback.FpObj = *(*uintptr)(unsafe.Pointer(objv + 1*8))
 38376  		(*Tcl_Obj)(unsafe.Pointer(logcallback.FpObj)).FrefCount++
 38377  		logcallback.FpInterp = interp
 38378  		sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_LOG, libc.VaList(bp+16, *(*uintptr)(unsafe.Pointer(&struct {
 38379  			f func(*libc.TLS, uintptr, int32, uintptr)
 38380  		}{xLogcallback})), uintptr(0)))
 38381  	}
 38382  	return TCL_OK
 38383  }
 38384  
 38385  func runAsObjProc(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 38386  	bp := tls.Alloc(112)
 38387  	defer tls.Free(112)
 38388  
 38389  	if objc < 2 {
 38390  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+18342)
 38391  		return TCL_ERROR
 38392  	}
 38393  	if !(tcl.XTcl_GetCommandInfo(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+48) != 0) {
 38394  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14859,
 38395  			tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), uintptr(0)))
 38396  		return TCL_ERROR
 38397  	}
 38398  	if (*Tcl_CmdInfo)(unsafe.Pointer(bp+48)).FobjProc == uintptr(0) {
 38399  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+24, ts+18354,
 38400  			tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), uintptr(0)))
 38401  		return TCL_ERROR
 38402  	}
 38403  	return (*struct {
 38404  		f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
 38405  	})(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)
 38406  }
 38407  
 38408  func printExplainQueryPlan(tls *libc.TLS, pStmt uintptr) int32 {
 38409  	bp := tls.Alloc(48)
 38410  	defer tls.Free(48)
 38411  
 38412  	var zSql uintptr
 38413  	var zExplain uintptr
 38414  
 38415  	var rc int32
 38416  
 38417  	zSql = sqlite3.Xsqlite3_sql(tls, pStmt)
 38418  	if zSql == uintptr(0) {
 38419  		return SQLITE_ERROR
 38420  	}
 38421  
 38422  	zExplain = sqlite3.Xsqlite3_mprintf(tls, ts+330, libc.VaList(bp, zSql))
 38423  	if zExplain == uintptr(0) {
 38424  		return SQLITE_NOMEM
 38425  	}
 38426  
 38427  	rc = sqlite3.Xsqlite3_prepare_v2(tls, sqlite3.Xsqlite3_db_handle(tls, pStmt), zExplain, -1, bp+40, uintptr(0))
 38428  	sqlite3.Xsqlite3_free(tls, zExplain)
 38429  	if rc != SQLITE_OK {
 38430  		return rc
 38431  	}
 38432  
 38433  	for SQLITE_ROW == sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp + 40))) {
 38434  		var iSelectid int32 = sqlite3.Xsqlite3_column_int(tls, *(*uintptr)(unsafe.Pointer(bp + 40)), 0)
 38435  		var iOrder int32 = sqlite3.Xsqlite3_column_int(tls, *(*uintptr)(unsafe.Pointer(bp + 40)), 1)
 38436  		var iFrom int32 = sqlite3.Xsqlite3_column_int(tls, *(*uintptr)(unsafe.Pointer(bp + 40)), 2)
 38437  		var zDetail uintptr = sqlite3.Xsqlite3_column_text(tls, *(*uintptr)(unsafe.Pointer(bp + 40)), 3)
 38438  
 38439  		libc.Xprintf(tls, ts+18379, libc.VaList(bp+8, iSelectid, iOrder, iFrom, zDetail))
 38440  	}
 38441  
 38442  	return sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 40)))
 38443  }
 38444  
 38445  func test_print_eqp(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 38446  	bp := tls.Alloc(8)
 38447  	defer tls.Free(8)
 38448  
 38449  	var rc int32
 38450  
 38451  	if objc != 2 {
 38452  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+17042)
 38453  		return TCL_ERROR
 38454  	}
 38455  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 38456  		return TCL_ERROR
 38457  	}
 38458  	rc = printExplainQueryPlan(tls, *(*uintptr)(unsafe.Pointer(bp)))
 38459  
 38460  	libc.Xfflush(tls, libc.Xstdout)
 38461  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 38462  	return TCL_OK
 38463  }
 38464  
 38465  type timex = struct {
 38466  	Fmodes       uint32
 38467  	F__ccgo_pad1 [4]byte
 38468  	Foffset      int64
 38469  	Ffreq        int64
 38470  	Fmaxerror    int64
 38471  	Festerror    int64
 38472  	Fstatus      int32
 38473  	F__ccgo_pad2 [4]byte
 38474  	Fconstant    int64
 38475  	Fprecision   int64
 38476  	Ftolerance   int64
 38477  	Ftime        struct {
 38478  		Ftv_sec  int64
 38479  		Ftv_usec int64
 38480  	}
 38481  	Ftick        int64
 38482  	Fppsfreq     int64
 38483  	Fjitter      int64
 38484  	Fshift       int32
 38485  	F__ccgo_pad3 [4]byte
 38486  	Fstabil      int64
 38487  	Fjitcnt      int64
 38488  	Fcalcnt      int64
 38489  	Ferrcnt      int64
 38490  	Fstbcnt      int64
 38491  	Ftai         int32
 38492  	__164        uint32
 38493  	__168        uint32
 38494  	__172        uint32
 38495  	__176        uint32
 38496  	__180        uint32
 38497  	__184        uint32
 38498  	__188        uint32
 38499  	__192        uint32
 38500  	__196        uint32
 38501  	__200        uint32
 38502  	__204        uint32
 38503  }
 38504  
 38505  func testLocaltime(tls *libc.TLS, aliasT uintptr, aliasTM uintptr) int32 {
 38506  	var t time_t = *(*time_t)(unsafe.Pointer(aliasT))
 38507  	var pTm uintptr = aliasTM
 38508  	var altT time_t
 38509  	var iJD sqlite3_int64
 38510  	var Z int32
 38511  	var A int32
 38512  	var B int32
 38513  	var C int32
 38514  	var D int32
 38515  	var E int32
 38516  	var X1 int32
 38517  	var S int32
 38518  
 38519  	if t/int64(86400)&int64(1) != 0 {
 38520  		altT = t + int64(1800)
 38521  	} else {
 38522  		altT = t - int64(1800)
 38523  	}
 38524  	iJD = altT + 210866760000
 38525  	Z = int32((iJD + int64(43200)) / int64(86400))
 38526  	A = libc.Int32FromFloat64((float64(Z) - 1867216.25) / 36524.25)
 38527  	A = Z + 1 + A - A/4
 38528  	B = A + 1524
 38529  	C = libc.Int32FromFloat64((float64(B) - 122.1) / 365.25)
 38530  	D = 36525 * (C & 32767) / 100
 38531  	E = libc.Int32FromFloat64(float64(B-D) / 30.6001)
 38532  	X1 = libc.Int32FromFloat64(30.6001 * float64(E))
 38533  	(*tm)(unsafe.Pointer(pTm)).Ftm_mday = B - D - X1
 38534  	(*tm)(unsafe.Pointer(pTm)).Ftm_mon = func() int32 {
 38535  		if E < 14 {
 38536  			return E - 2
 38537  		}
 38538  		return E - 14
 38539  	}()
 38540  	(*tm)(unsafe.Pointer(pTm)).Ftm_year = func() int32 {
 38541  		if (*tm)(unsafe.Pointer(pTm)).Ftm_mon > 1 {
 38542  			return C - 4716
 38543  		}
 38544  		return C - 4715
 38545  	}() - 1900
 38546  	S = int32((iJD + int64(43200)) % int64(86400))
 38547  	(*tm)(unsafe.Pointer(pTm)).Ftm_hour = S / 3600
 38548  	(*tm)(unsafe.Pointer(pTm)).Ftm_min = S / 60 % 60
 38549  	(*tm)(unsafe.Pointer(pTm)).Ftm_sec = S % 60
 38550  	return libc.Bool32(t == int64(959609760))
 38551  }
 38552  
 38553  func test_test_control(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 38554  	bp := tls.Alloc(192)
 38555  	defer tls.Free(192)
 38556  
 38557  	*(*[4]Verb)(unsafe.Pointer(bp + 72)) = [4]Verb{
 38558  		{FzName: ts + 18392, Fi: SQLITE_TESTCTRL_LOCALTIME_FAULT},
 38559  		{FzName: ts + 18424, Fi: SQLITE_TESTCTRL_SORTER_MMAP},
 38560  		{FzName: ts + 18452, Fi: SQLITE_TESTCTRL_IMPOSTER},
 38561  		{FzName: ts + 18477, Fi: SQLITE_TESTCTRL_INTERNAL_FUNCTIONS},
 38562  	}
 38563  
 38564  	var iFlag int32
 38565  	var rc int32
 38566  
 38567  	if objc < 2 {
 38568  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+18512)
 38569  		return TCL_ERROR
 38570  	}
 38571  
 38572  	rc = tcl.XTcl_GetIndexFromObjStruct(tls,
 38573  		interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp+72, int32(unsafe.Sizeof(Verb{})), ts+18525, 0, bp+136)
 38574  	if rc != TCL_OK {
 38575  		return rc
 38576  	}
 38577  
 38578  	iFlag = (*Verb)(unsafe.Pointer(bp + 72 + uintptr(*(*int32)(unsafe.Pointer(bp + 136)))*16)).Fi
 38579  	switch iFlag {
 38580  	case SQLITE_TESTCTRL_INTERNAL_FUNCTIONS:
 38581  		{
 38582  			*(*uintptr)(unsafe.Pointer(bp + 144)) = uintptr(0)
 38583  			if objc != 3 {
 38584  				tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+2050)
 38585  				return TCL_ERROR
 38586  			}
 38587  			if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8))), bp+144) != 0 {
 38588  				return TCL_ERROR
 38589  			}
 38590  			sqlite3.Xsqlite3_test_control(tls, SQLITE_TESTCTRL_INTERNAL_FUNCTIONS, libc.VaList(bp, *(*uintptr)(unsafe.Pointer(bp + 144))))
 38591  			break
 38592  
 38593  		}
 38594  	case SQLITE_TESTCTRL_LOCALTIME_FAULT:
 38595  		{
 38596  			if objc != 3 {
 38597  				tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+18530)
 38598  				return TCL_ERROR
 38599  			}
 38600  			if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+152) != 0 {
 38601  				return TCL_ERROR
 38602  			}
 38603  			sqlite3.Xsqlite3_test_control(tls, iFlag, libc.VaList(bp+8, *(*int32)(unsafe.Pointer(bp + 152)), *(*uintptr)(unsafe.Pointer(&struct {
 38604  				f func(*libc.TLS, uintptr, uintptr) int32
 38605  			}{testLocaltime}))))
 38606  			break
 38607  
 38608  		}
 38609  
 38610  	case SQLITE_TESTCTRL_SORTER_MMAP:
 38611  		{
 38612  			if objc != 4 {
 38613  				tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+18536)
 38614  				return TCL_ERROR
 38615  			}
 38616  			if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8))), bp+160) != 0 {
 38617  				return TCL_ERROR
 38618  			}
 38619  			if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+168) != 0 {
 38620  				return TCL_ERROR
 38621  			}
 38622  			sqlite3.Xsqlite3_test_control(tls, SQLITE_TESTCTRL_SORTER_MMAP, libc.VaList(bp+24, *(*uintptr)(unsafe.Pointer(bp + 160)), *(*int32)(unsafe.Pointer(bp + 168))))
 38623  			break
 38624  
 38625  		}
 38626  
 38627  	case SQLITE_TESTCTRL_IMPOSTER:
 38628  		{
 38629  			var zDbName uintptr
 38630  
 38631  			if objc != 6 {
 38632  				tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+18545)
 38633  				return TCL_ERROR
 38634  			}
 38635  			if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8))), bp+176) != 0 {
 38636  				return TCL_ERROR
 38637  			}
 38638  			zDbName = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)))
 38639  			if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 4*8)), bp+184) != 0 {
 38640  				return TCL_ERROR
 38641  			}
 38642  			if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 5*8)), bp+188) != 0 {
 38643  				return TCL_ERROR
 38644  			}
 38645  			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))))
 38646  			break
 38647  
 38648  		}
 38649  	}
 38650  
 38651  	tcl.XTcl_ResetResult(tls, interp)
 38652  	return TCL_OK
 38653  }
 38654  
 38655  type Verb = struct {
 38656  	FzName       uintptr
 38657  	Fi           int32
 38658  	F__ccgo_pad1 [4]byte
 38659  }
 38660  
 38661  type rlim_t = uint64
 38662  type rlim64_t = uint64
 38663  
 38664  type rlimit = struct {
 38665  	Frlim_cur rlim_t
 38666  	Frlim_max rlim_t
 38667  }
 38668  
 38669  type rlimit64 = struct {
 38670  	Frlim_cur rlim64_t
 38671  	Frlim_max rlim64_t
 38672  }
 38673  
 38674  type rusage = struct {
 38675  	Fru_utime struct {
 38676  		Ftv_sec  int64
 38677  		Ftv_usec int64
 38678  	}
 38679  	Fru_stime struct {
 38680  		Ftv_sec  int64
 38681  		Ftv_usec int64
 38682  	}
 38683  	F__32  struct{ Fru_maxrss int64 }
 38684  	F__40  struct{ Fru_ixrss int64 }
 38685  	F__48  struct{ Fru_idrss int64 }
 38686  	F__56  struct{ Fru_isrss int64 }
 38687  	F__64  struct{ Fru_minflt int64 }
 38688  	F__72  struct{ Fru_majflt int64 }
 38689  	F__80  struct{ Fru_nswap int64 }
 38690  	F__88  struct{ Fru_inblock int64 }
 38691  	F__96  struct{ Fru_oublock int64 }
 38692  	F__104 struct{ Fru_msgsnd int64 }
 38693  	F__112 struct{ Fru_msgrcv int64 }
 38694  	F__120 struct{ Fru_nsignals int64 }
 38695  	F__128 struct{ Fru_nvcsw int64 }
 38696  	F__136 struct{ Fru_nivcsw int64 }
 38697  }
 38698  
 38699  func test_getrusage(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 38700  	bp := tls.Alloc(1216)
 38701  	defer tls.Free(1216)
 38702  
 38703  	libc.Xmemset(tls, bp+48, 0, uint64(unsafe.Sizeof(rusage{})))
 38704  	libc.Xgetrusage(tls, RUSAGE_SELF, bp+48)
 38705  
 38706  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([1024]uint8{})), bp+192,
 38707  		ts+18566,
 38708  		libc.VaList(bp, int32((*rusage)(unsafe.Pointer(bp+48)).Fru_utime.Ftv_sec), int32((*rusage)(unsafe.Pointer(bp+48)).Fru_utime.Ftv_usec),
 38709  			int32((*rusage)(unsafe.Pointer(bp+48)).Fru_stime.Ftv_sec), int32((*rusage)(unsafe.Pointer(bp+48)).Fru_stime.Ftv_usec),
 38710  			int32(*(*int64)(unsafe.Pointer(bp + 48 + 64))), int32(*(*int64)(unsafe.Pointer(bp + 48 + 72)))))
 38711  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, bp+192, -1))
 38712  	return TCL_OK
 38713  }
 38714  
 38715  func optimization_control(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 38716  	bp := tls.Alloc(68)
 38717  	defer tls.Free(68)
 38718  
 38719  	var i int32
 38720  
 38721  	var zOpt uintptr
 38722  
 38723  	var mask int32 = 0
 38724  
 38725  	if objc != 4 {
 38726  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+18626)
 38727  		return TCL_ERROR
 38728  	}
 38729  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+56) != 0 {
 38730  		return TCL_ERROR
 38731  	}
 38732  	if tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+64) != 0 {
 38733  		return TCL_ERROR
 38734  	}
 38735  	zOpt = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 38736  	for i = 0; uint64(i) < uint64(unsafe.Sizeof(aOpt))/uint64(unsafe.Sizeof(struct {
 38737  		FzOptName    uintptr
 38738  		Fmask        int32
 38739  		F__ccgo_pad1 [4]byte
 38740  	}{})); i++ {
 38741  		if libc.Xstrcmp(tls, zOpt, aOpt[i].FzOptName) == 0 {
 38742  			mask = aOpt[i].Fmask
 38743  			break
 38744  		}
 38745  	}
 38746  	if *(*int32)(unsafe.Pointer(bp + 64)) != 0 {
 38747  		mask = ^mask
 38748  	}
 38749  	if uint64(i) >= uint64(unsafe.Sizeof(aOpt))/uint64(unsafe.Sizeof(struct {
 38750  		FzOptName    uintptr
 38751  		Fmask        int32
 38752  		F__ccgo_pad1 [4]byte
 38753  	}{})) {
 38754  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+18641,
 38755  			uintptr(0)))
 38756  		for i = 0; uint64(i) < uint64(unsafe.Sizeof(aOpt))/uint64(unsafe.Sizeof(struct {
 38757  			FzOptName    uintptr
 38758  			Fmask        int32
 38759  			F__ccgo_pad1 [4]byte
 38760  		}{})); i++ {
 38761  			tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+16, ts+4894, aOpt[i].FzOptName, uintptr(0)))
 38762  		}
 38763  		return TCL_ERROR
 38764  	}
 38765  	sqlite3.Xsqlite3_test_control(tls, SQLITE_TESTCTRL_OPTIMIZATIONS, libc.VaList(bp+40, *(*uintptr)(unsafe.Pointer(bp + 56)), mask))
 38766  	return TCL_OK
 38767  }
 38768  
 38769  var aOpt = [14]struct {
 38770  	FzOptName    uintptr
 38771  	Fmask        int32
 38772  	F__ccgo_pad1 [4]byte
 38773  }{
 38774  	{FzOptName: ts + 18682, Fmask: libc.Int32FromUint32(SQLITE_AllOpts)},
 38775  	{FzOptName: ts + 18686},
 38776  	{FzOptName: ts + 18691, Fmask: SQLITE_QueryFlattener},
 38777  	{FzOptName: ts + 18707, Fmask: SQLITE_GroupByOrder},
 38778  	{FzOptName: ts + 18721, Fmask: SQLITE_FactorOutConst},
 38779  	{FzOptName: ts + 18738, Fmask: SQLITE_DistinctOpt},
 38780  	{FzOptName: ts + 18751, Fmask: SQLITE_CoverIdxScan},
 38781  	{FzOptName: ts + 18766, Fmask: SQLITE_OrderByIdxJoin},
 38782  	{FzOptName: ts + 18784, Fmask: SQLITE_Transitive},
 38783  	{FzOptName: ts + 18795, Fmask: SQLITE_OmitNoopJoin},
 38784  	{FzOptName: ts + 18810, Fmask: SQLITE_Stat4},
 38785  	{FzOptName: ts + 18816, Fmask: SQLITE_SkipScan},
 38786  	{FzOptName: ts + 18826, Fmask: SQLITE_PushDown},
 38787  	{FzOptName: ts + 18836, Fmask: SQLITE_BalancedMerge},
 38788  }
 38789  
 38790  func tclLoadStaticExtensionCmd(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 38791  	bp := tls.Alloc(80)
 38792  	defer tls.Free(80)
 38793  
 38794  	var zName uintptr
 38795  	var i int32
 38796  	var j int32
 38797  	var rc int32
 38798  	*(*uintptr)(unsafe.Pointer(bp + 72)) = uintptr(0)
 38799  	if objc < 3 {
 38800  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+18851)
 38801  		return TCL_ERROR
 38802  	}
 38803  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+64) != 0 {
 38804  		return TCL_ERROR
 38805  	}
 38806  	for j = 2; j < objc; j++ {
 38807  		zName = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(j)*8)))
 38808  		for i = 0; i < int32(uint64(unsafe.Sizeof(aExtension))/uint64(unsafe.Sizeof(struct {
 38809  			FzExtName uintptr
 38810  			FpInit    uintptr
 38811  		}{}))); i++ {
 38812  			if libc.Xstrcmp(tls, zName, aExtension[i].FzExtName) == 0 {
 38813  				break
 38814  			}
 38815  		}
 38816  		if i >= int32(uint64(unsafe.Sizeof(aExtension))/uint64(unsafe.Sizeof(struct {
 38817  			FzExtName uintptr
 38818  			FpInit    uintptr
 38819  		}{}))) {
 38820  			tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+18863, zName, uintptr(0)))
 38821  			return TCL_ERROR
 38822  		}
 38823  		if aExtension[i].FpInit != 0 {
 38824  			rc = (*struct {
 38825  				f func(*libc.TLS, uintptr, uintptr, uintptr) int32
 38826  			})(unsafe.Pointer(&struct{ uintptr }{aExtension[i].FpInit})).f(tls, *(*uintptr)(unsafe.Pointer(bp + 64)), bp+72, uintptr(0))
 38827  		} else {
 38828  			rc = SQLITE_OK
 38829  		}
 38830  		if rc != SQLITE_OK && rc != SQLITE_OK|int32(1)<<8 || *(*uintptr)(unsafe.Pointer(bp + 72)) != 0 {
 38831  			tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+24, ts+18883, zName, ts+18902, *(*uintptr)(unsafe.Pointer(bp + 72)),
 38832  				uintptr(0)))
 38833  			sqlite3.Xsqlite3_free(tls, *(*uintptr)(unsafe.Pointer(bp + 72)))
 38834  			return TCL_ERROR
 38835  		}
 38836  	}
 38837  	return TCL_OK
 38838  }
 38839  
 38840  var aExtension = [22]struct {
 38841  	FzExtName uintptr
 38842  	FpInit    uintptr
 38843  }{
 38844  	{FzExtName: ts + 18912, FpInit: 0},
 38845  	{FzExtName: ts + 18919, FpInit: 0},
 38846  	{FzExtName: ts + 4060, FpInit: 0},
 38847  	{FzExtName: ts + 18929, FpInit: 0},
 38848  	{FzExtName: ts + 4815, FpInit: 0},
 38849  	{FzExtName: ts + 4838, FpInit: 0},
 38850  	{FzExtName: ts + 4896, FpInit: 0},
 38851  	{FzExtName: ts + 4974, FpInit: 0},
 38852  	{FzExtName: ts + 18937, FpInit: 0},
 38853  	{FzExtName: ts + 5483, FpInit: 0},
 38854  	{FzExtName: ts + 5507, FpInit: 0},
 38855  	{FzExtName: ts + 18944, FpInit: 0},
 38856  	{FzExtName: ts + 6087, FpInit: 0},
 38857  	{FzExtName: ts + 6162, FpInit: 0},
 38858  	{FzExtName: ts + 6535, FpInit: 0},
 38859  	{FzExtName: ts + 6831, FpInit: 0},
 38860  	{FzExtName: ts + 6846, FpInit: 0},
 38861  	{FzExtName: ts + 18953, FpInit: 0},
 38862  	{FzExtName: ts + 18960, FpInit: 0},
 38863  	{FzExtName: ts + 18969, FpInit: 0},
 38864  	{FzExtName: ts + 8921, FpInit: 0},
 38865  	{FzExtName: ts + 9463, FpInit: 0},
 38866  }
 38867  
 38868  func sorter_test_fakeheap(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 38869  	bp := tls.Alloc(4)
 38870  	defer tls.Free(4)
 38871  
 38872  	if objc != 2 {
 38873  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+10152)
 38874  		return TCL_ERROR
 38875  	}
 38876  
 38877  	if tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp) != 0 {
 38878  		return TCL_ERROR
 38879  	}
 38880  
 38881  	if *(*int32)(unsafe.Pointer(bp)) != 0 {
 38882  		if sqlite3.Xsqlite3Config.FpHeap == uintptr(0) {
 38883  			sqlite3.Xsqlite3Config.FpHeap = libc.UintptrFromInt64(int64(-1))
 38884  		}
 38885  	} else {
 38886  		if sqlite3.Xsqlite3Config.FpHeap == libc.UintptrFromInt64(int64(-1)) {
 38887  			sqlite3.Xsqlite3Config.FpHeap = uintptr(0)
 38888  		}
 38889  	}
 38890  
 38891  	tcl.XTcl_ResetResult(tls, interp)
 38892  	return TCL_OK
 38893  }
 38894  
 38895  func sorter_test_sort4_helper(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 38896  	bp := tls.Alloc(80)
 38897  	defer tls.Free(80)
 38898  
 38899  	var zSql1 uintptr
 38900  	var zSql2 uintptr
 38901  
 38902  	var iStep int32
 38903  	var iCksum1 uint32
 38904  	var iCksum2 uint32
 38905  	var rc int32
 38906  	var iB int32
 38907  
 38908  	var a int32
 38909  	var a1 int32
 38910  	iCksum1 = uint32(0)
 38911  	iCksum2 = uint32(0)
 38912  
 38913  	if !(objc != 5) {
 38914  		goto __1
 38915  	}
 38916  	tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+18976)
 38917  	return TCL_ERROR
 38918  __1:
 38919  	;
 38920  	if !(getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+56) != 0) {
 38921  		goto __2
 38922  	}
 38923  	return TCL_ERROR
 38924  __2:
 38925  	;
 38926  	zSql1 = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 38927  	if !(tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+64) != 0) {
 38928  		goto __3
 38929  	}
 38930  	return TCL_ERROR
 38931  __3:
 38932  	;
 38933  	zSql2 = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 4*8)))
 38934  
 38935  	rc = sqlite3.Xsqlite3_prepare_v2(tls, *(*uintptr)(unsafe.Pointer(bp + 56)), zSql1, -1, bp+72, uintptr(0))
 38936  	if !(rc != SQLITE_OK) {
 38937  		goto __4
 38938  	}
 38939  	goto sql_error
 38940  __4:
 38941  	;
 38942  	iB = sqlite3.Xsqlite3_column_count(tls, *(*uintptr)(unsafe.Pointer(bp + 72))) - 1
 38943  	iStep = 0
 38944  __5:
 38945  	if !(iStep < *(*int32)(unsafe.Pointer(bp + 64)) && SQLITE_ROW == sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp + 72)))) {
 38946  		goto __7
 38947  	}
 38948  	a = sqlite3.Xsqlite3_column_int(tls, *(*uintptr)(unsafe.Pointer(bp + 72)), 0)
 38949  	if !(a != sqlite3.Xsqlite3_column_int(tls, *(*uintptr)(unsafe.Pointer(bp + 72)), iB)) {
 38950  		goto __8
 38951  	}
 38952  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+18995, 0))
 38953  	return TCL_ERROR
 38954  __8:
 38955  	;
 38956  	iCksum1 = iCksum1 + (iCksum1<<3 + uint32(a))
 38957  	goto __6
 38958  __6:
 38959  	iStep++
 38960  	goto __5
 38961  	goto __7
 38962  __7:
 38963  	;
 38964  	rc = sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 72)))
 38965  	if !(rc != SQLITE_OK) {
 38966  		goto __9
 38967  	}
 38968  	goto sql_error
 38969  __9:
 38970  	;
 38971  	rc = sqlite3.Xsqlite3_prepare_v2(tls, *(*uintptr)(unsafe.Pointer(bp + 56)), zSql2, -1, bp+72, uintptr(0))
 38972  	if !(rc != SQLITE_OK) {
 38973  		goto __10
 38974  	}
 38975  	goto sql_error
 38976  __10:
 38977  	;
 38978  	iStep = 0
 38979  __11:
 38980  	if !(SQLITE_ROW == sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp + 72)))) {
 38981  		goto __13
 38982  	}
 38983  	a1 = sqlite3.Xsqlite3_column_int(tls, *(*uintptr)(unsafe.Pointer(bp + 72)), 0)
 38984  	iCksum2 = iCksum2 + (iCksum2<<3 + uint32(a1))
 38985  	goto __12
 38986  __12:
 38987  	iStep++
 38988  	goto __11
 38989  	goto __13
 38990  __13:
 38991  	;
 38992  	rc = sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 72)))
 38993  	if !(rc != SQLITE_OK) {
 38994  		goto __14
 38995  	}
 38996  	goto sql_error
 38997  __14:
 38998  	;
 38999  	if !(iCksum1 != iCksum2) {
 39000  		goto __15
 39001  	}
 39002  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+16, ts+19014, 0))
 39003  	return TCL_ERROR
 39004  __15:
 39005  	;
 39006  	return TCL_OK
 39007  sql_error:
 39008  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+19032, sqlite3.Xsqlite3_errmsg(tls, *(*uintptr)(unsafe.Pointer(bp + 56))), 0))
 39009  	return TCL_ERROR
 39010  }
 39011  
 39012  func test_bad_behavior(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 39013  	bp := tls.Alloc(44)
 39014  	defer tls.Free(44)
 39015  
 39016  	var xyz int32
 39017  	var i int32 = *(*int32)(unsafe.Pointer(clientData))
 39018  	var j int32
 39019  
 39020  	var a uintptr
 39021  	if objc != 2 {
 39022  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+19044)
 39023  		return TCL_ERROR
 39024  	}
 39025  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp) != 0 {
 39026  		return TCL_ERROR
 39027  	}
 39028  	switch *(*int32)(unsafe.Pointer(bp)) {
 39029  	case 1:
 39030  		{
 39031  			xyz = 0x7fffff00 - i
 39032  			xyz = xyz + 0x100
 39033  			tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, xyz))
 39034  			break
 39035  
 39036  		}
 39037  	case 2:
 39038  		{
 39039  			*(*int32)(unsafe.Pointer(bp + 4 + 1*4)) = 5
 39040  			if *(*int32)(unsafe.Pointer(bp + 4 + uintptr(i)*4)) > 0 {
 39041  				*(*int32)(unsafe.Pointer(bp + 4 + 1*4))++
 39042  			}
 39043  			tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 4 + 1*4))))
 39044  			break
 39045  
 39046  		}
 39047  	case 3:
 39048  		{
 39049  			a = libc.Xmalloc(tls, uint64(unsafe.Sizeof(int32(0)))*uint64(10))
 39050  			for j = 0; j < 10; j++ {
 39051  				*(*int32)(unsafe.Pointer(a + uintptr(j)*4)) = j
 39052  			}
 39053  			libc.Xfree(tls, a)
 39054  			tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(a + uintptr(i)*4))))
 39055  			break
 39056  
 39057  		}
 39058  	case 4:
 39059  		{
 39060  			tcl.XTcl_Panic(tls, ts+19049, 0)
 39061  			break
 39062  
 39063  		}
 39064  	}
 39065  	return TCL_OK
 39066  }
 39067  
 39068  func test_register_dbstat_vtab(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 39069  	bp := tls.Alloc(64)
 39070  	defer tls.Free(64)
 39071  
 39072  	var zDb uintptr
 39073  
 39074  	if objc != 2 {
 39075  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2050)
 39076  		return TCL_ERROR
 39077  	}
 39078  
 39079  	zDb = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 39080  	if tcl.XTcl_GetCommandInfo(tls, interp, zDb, bp) != 0 {
 39081  		var db uintptr = (*struct{ Fdb uintptr })(unsafe.Pointer((*Tcl_CmdInfo)(unsafe.Pointer(bp)).FobjClientData)).Fdb
 39082  		sqlite3.Xsqlite3DbstatRegister(tls, db)
 39083  	}
 39084  	return TCL_OK
 39085  }
 39086  
 39087  func test_sqlite3_db_config(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 39088  	bp := tls.Alloc(28)
 39089  	defer tls.Free(28)
 39090  
 39091  	var i int32
 39092  	*(*int32)(unsafe.Pointer(bp + 24)) = 0
 39093  	var zSetting uintptr
 39094  
 39095  	if objc != 4 && objc != 3 {
 39096  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+19066)
 39097  		return TCL_ERROR
 39098  	}
 39099  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+16) != 0 {
 39100  		return TCL_ERROR
 39101  	}
 39102  	zSetting = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 39103  	if sqlite3.Xsqlite3_strglob(tls, ts+19085, zSetting) == 0 {
 39104  		zSetting += uintptr(7)
 39105  	}
 39106  	if sqlite3.Xsqlite3_strglob(tls, ts+19094, zSetting) == 0 {
 39107  		zSetting += uintptr(9)
 39108  	}
 39109  	if sqlite3.Xsqlite3_strglob(tls, ts+19105, zSetting) == 0 {
 39110  		zSetting += uintptr(7)
 39111  	}
 39112  	for i = 0; i < int32(uint64(unsafe.Sizeof(aSetting))/uint64(unsafe.Sizeof(struct {
 39113  		FzName       uintptr
 39114  		FeVal        int32
 39115  		F__ccgo_pad1 [4]byte
 39116  	}{}))); i++ {
 39117  		if libc.Xstrcmp(tls, zSetting, aSetting[i].FzName) == 0 {
 39118  			break
 39119  		}
 39120  	}
 39121  	if i >= int32(uint64(unsafe.Sizeof(aSetting))/uint64(unsafe.Sizeof(struct {
 39122  		FzName       uintptr
 39123  		FeVal        int32
 39124  		F__ccgo_pad1 [4]byte
 39125  	}{}))) {
 39126  		tcl.XTcl_SetObjResult(tls, interp,
 39127  			tcl.XTcl_NewStringObj(tls, ts+19114, -1))
 39128  		return TCL_ERROR
 39129  	}
 39130  	if objc == 4 {
 39131  		if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+24) != 0 {
 39132  			return TCL_ERROR
 39133  		}
 39134  	} else {
 39135  		*(*int32)(unsafe.Pointer(bp + 24)) = -1
 39136  	}
 39137  	sqlite3.Xsqlite3_db_config(tls, *(*uintptr)(unsafe.Pointer(bp + 16)), aSetting[i].FeVal, libc.VaList(bp, *(*int32)(unsafe.Pointer(bp + 24)), bp+24))
 39138  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 24))))
 39139  	return TCL_OK
 39140  }
 39141  
 39142  var aSetting = [14]struct {
 39143  	FzName       uintptr
 39144  	FeVal        int32
 39145  	F__ccgo_pad1 [4]byte
 39146  }{
 39147  	{FzName: ts + 19148, FeVal: SQLITE_DBCONFIG_ENABLE_FKEY},
 39148  	{FzName: ts + 19153, FeVal: SQLITE_DBCONFIG_ENABLE_TRIGGER},
 39149  	{FzName: ts + 19161, FeVal: SQLITE_DBCONFIG_ENABLE_FTS3_TOKENIZER},
 39150  	{FzName: ts + 19176, FeVal: SQLITE_DBCONFIG_ENABLE_LOAD_EXTENSION},
 39151  	{FzName: ts + 19191, FeVal: SQLITE_DBCONFIG_NO_CKPT_ON_CLOSE},
 39152  	{FzName: ts + 19208, FeVal: SQLITE_DBCONFIG_ENABLE_QPSG},
 39153  	{FzName: ts + 19213, FeVal: SQLITE_DBCONFIG_TRIGGER_EQP},
 39154  	{FzName: ts + 19225, FeVal: SQLITE_DBCONFIG_RESET_DATABASE},
 39155  	{FzName: ts + 19234, FeVal: SQLITE_DBCONFIG_DEFENSIVE},
 39156  	{FzName: ts + 19244, FeVal: SQLITE_DBCONFIG_WRITABLE_SCHEMA},
 39157  	{FzName: ts + 19260, FeVal: SQLITE_DBCONFIG_LEGACY_ALTER_TABLE},
 39158  	{FzName: ts + 19279, FeVal: SQLITE_DBCONFIG_DQS_DML},
 39159  	{FzName: ts + 19287, FeVal: SQLITE_DBCONFIG_DQS_DDL},
 39160  	{FzName: ts + 19295, FeVal: SQLITE_DBCONFIG_LEGACY_FILE_FORMAT},
 39161  }
 39162  
 39163  func test_sqlite3_txn_state(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 39164  	bp := tls.Alloc(8)
 39165  	defer tls.Free(8)
 39166  
 39167  	var zSchema uintptr
 39168  	var iTxn int32
 39169  
 39170  	if objc != 2 && objc != 3 {
 39171  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+19314)
 39172  		return TCL_ERROR
 39173  	}
 39174  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 39175  		return TCL_ERROR
 39176  	}
 39177  	if objc == 3 {
 39178  		zSchema = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 39179  	} else {
 39180  		zSchema = uintptr(0)
 39181  	}
 39182  	iTxn = sqlite3.Xsqlite3_txn_state(tls, *(*uintptr)(unsafe.Pointer(bp)), zSchema)
 39183  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, iTxn))
 39184  	return TCL_OK
 39185  }
 39186  
 39187  func test_dbconfig_maindbname_icecube(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 39188  	bp := tls.Alloc(16)
 39189  	defer tls.Free(16)
 39190  
 39191  	var rc int32
 39192  
 39193  	if objc != 2 {
 39194  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2050)
 39195  		return TCL_ERROR
 39196  	} else {
 39197  		if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+8) != 0 {
 39198  			return TCL_ERROR
 39199  		}
 39200  		rc = sqlite3.Xsqlite3_db_config(tls, *(*uintptr)(unsafe.Pointer(bp + 8)), SQLITE_DBCONFIG_MAINDBNAME, libc.VaList(bp, ts+19326))
 39201  		tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, rc))
 39202  		return TCL_OK
 39203  	}
 39204  	return int32(0)
 39205  }
 39206  
 39207  func test_mmap_warm(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 39208  	bp := tls.Alloc(8)
 39209  	defer tls.Free(8)
 39210  
 39211  	if objc != 2 && objc != 3 {
 39212  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+19334)
 39213  		return TCL_ERROR
 39214  	} else {
 39215  		var rc int32
 39216  
 39217  		var zDb uintptr = uintptr(0)
 39218  		if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 39219  			return TCL_ERROR
 39220  		}
 39221  		if objc == 3 {
 39222  			zDb = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 39223  		}
 39224  		rc = sqlite3_mmap_warm(tls, *(*uintptr)(unsafe.Pointer(bp)), zDb)
 39225  		tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3ErrName(tls, rc), -1))
 39226  		return TCL_OK
 39227  	}
 39228  	return int32(0)
 39229  }
 39230  
 39231  func test_write_db(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 39232  	bp := tls.Alloc(32)
 39233  	defer tls.Free(32)
 39234  
 39235  	*(*uintptr)(unsafe.Pointer(bp)) = uintptr(0)
 39236  	*(*Tcl_WideInt)(unsafe.Pointer(bp + 8)) = int64(0)
 39237  	var aData uintptr = uintptr(0)
 39238  	*(*int32)(unsafe.Pointer(bp + 16)) = 0
 39239  	*(*uintptr)(unsafe.Pointer(bp + 24)) = uintptr(0)
 39240  	var rc int32
 39241  
 39242  	if objc != 4 {
 39243  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+19346)
 39244  		return TCL_ERROR
 39245  	}
 39246  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 39247  		return TCL_ERROR
 39248  	}
 39249  	if tcl.XTcl_GetWideIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+8) != 0 {
 39250  		return TCL_ERROR
 39251  	}
 39252  	aData = tcl.XTcl_GetByteArrayFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+16)
 39253  
 39254  	sqlite3.Xsqlite3_file_control(tls, *(*uintptr)(unsafe.Pointer(bp)), ts+85, SQLITE_FCNTL_FILE_POINTER, bp+24)
 39255  	rc = (*struct {
 39256  		f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 39257  	})(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)))
 39258  
 39259  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(1))
 39260  	return TCL_OK
 39261  }
 39262  
 39263  func test_register_cksumvfs(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 39264  	if objc != 1 {
 39265  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+584)
 39266  		return TCL_ERROR
 39267  	} else {
 39268  		var rc int32 = sqlite3_register_cksumvfs(tls, uintptr(0))
 39269  		tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(1))
 39270  	}
 39271  	return TCL_OK
 39272  }
 39273  
 39274  func test_unregister_cksumvfs(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 39275  	if objc != 1 {
 39276  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+584)
 39277  		return TCL_ERROR
 39278  	} else {
 39279  		var rc int32 = sqlite3_unregister_cksumvfs(tls)
 39280  		tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(1))
 39281  	}
 39282  	return TCL_OK
 39283  }
 39284  
 39285  func test_decode_hexdb(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 39286  	bp := tls.Alloc(296)
 39287  	defer tls.Free(296)
 39288  
 39289  	var zIn uintptr = uintptr(0)
 39290  	var a uintptr = uintptr(0)
 39291  	*(*int32)(unsafe.Pointer(bp + 216)) = 0
 39292  	var lineno int32 = 0
 39293  	var i int32
 39294  	var iNext int32
 39295  	var iOffset int32 = 0
 39296  
 39297  	var rc int32
 39298  
 39299  	if objc != 2 {
 39300  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+19361)
 39301  		return TCL_ERROR
 39302  	}
 39303  	zIn = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 39304  	for i = 0; *(*uint8)(unsafe.Pointer(zIn + uintptr(i))) != 0; i = iNext {
 39305  		lineno++
 39306  		for iNext = i; *(*uint8)(unsafe.Pointer(zIn + uintptr(iNext))) != 0 && int32(*(*uint8)(unsafe.Pointer(zIn + uintptr(iNext)))) != '\n'; iNext++ {
 39307  		}
 39308  		if int32(*(*uint8)(unsafe.Pointer(zIn + uintptr(iNext)))) == '\n' {
 39309  			iNext++
 39310  		}
 39311  		for int32(*(*uint8)(unsafe.Pointer(zIn + uintptr(i)))) == ' ' || int32(*(*uint8)(unsafe.Pointer(zIn + uintptr(i)))) == '\t' {
 39312  			i++
 39313  		}
 39314  		if a == uintptr(0) {
 39315  			rc = libc.Xsscanf(tls, zIn+uintptr(i), ts+19367, libc.VaList(bp, bp+216, bp+220))
 39316  			if rc != 2 {
 39317  				continue
 39318  			}
 39319  			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 {
 39320  				tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+16, ts+19389, uintptr(0)))
 39321  				return TCL_ERROR
 39322  			}
 39323  			*(*int32)(unsafe.Pointer(bp + 216)) = (*(*int32)(unsafe.Pointer(bp + 216)) + *(*int32)(unsafe.Pointer(bp + 220)) - 1) & ^(*(*int32)(unsafe.Pointer(bp + 220)) - 1)
 39324  			if *(*int32)(unsafe.Pointer(bp + 216)) < 512 {
 39325  				tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+19410, uintptr(0)))
 39326  				return TCL_ERROR
 39327  			}
 39328  			a = libc.Xmalloc(tls, uint64(*(*int32)(unsafe.Pointer(bp + 216))))
 39329  			if a == uintptr(0) {
 39330  				tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+48, ts+2069, uintptr(0)))
 39331  				return TCL_ERROR
 39332  			}
 39333  			libc.Xmemset(tls, a, 0, uint64(*(*int32)(unsafe.Pointer(bp + 216))))
 39334  			continue
 39335  		}
 39336  		rc = libc.Xsscanf(tls, zIn+uintptr(i), ts+19427, libc.VaList(bp+64, bp+224, bp+228))
 39337  		if rc == 2 {
 39338  			iOffset = *(*int32)(unsafe.Pointer(bp + 228))
 39339  			continue
 39340  		}
 39341  		rc = libc.Xsscanf(tls, zIn+uintptr(i), ts+19447,
 39342  			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,
 39343  				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))
 39344  		if rc == 17 {
 39345  			*(*int32)(unsafe.Pointer(bp + 228)) = iOffset + *(*int32)(unsafe.Pointer(bp + 224))
 39346  			if *(*int32)(unsafe.Pointer(bp + 228))+16 <= *(*int32)(unsafe.Pointer(bp + 216)) {
 39347  				var ii int32
 39348  				for ii = 0; ii < 16; ii++ {
 39349  					*(*uint8)(unsafe.Pointer(a + uintptr(*(*int32)(unsafe.Pointer(bp + 228))+ii))) = uint8(*(*uint32)(unsafe.Pointer(bp + 232 + uintptr(ii)*4)) & uint32(0xff))
 39350  				}
 39351  			}
 39352  			continue
 39353  		}
 39354  	}
 39355  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewByteArrayObj(tls, a, *(*int32)(unsafe.Pointer(bp + 216))))
 39356  	libc.Xfree(tls, a)
 39357  	return TCL_OK
 39358  }
 39359  
 39360  type AutovacPageData1 = struct {
 39361  	Finterp  uintptr
 39362  	FzScript uintptr
 39363  }
 39364  
 39365  type AutovacPageData = AutovacPageData1
 39366  
 39367  func test_autovacuum_pages_callback(tls *libc.TLS, pClientData uintptr, zSchema uintptr, nFilePages uint32, nFreePages uint32, nBytePerPage uint32) uint32 {
 39368  	bp := tls.Alloc(344)
 39369  	defer tls.Free(344)
 39370  
 39371  	var pData uintptr = pClientData
 39372  
 39373  	tcl.XTcl_DStringInit(tls, bp+24)
 39374  	tcl.XTcl_DStringAppend(tls, bp+24, (*AutovacPageData)(unsafe.Pointer(pData)).FzScript, -1)
 39375  	tcl.XTcl_DStringAppendElement(tls, bp+24, zSchema)
 39376  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([100]uint8{})), bp+240, ts+17791, libc.VaList(bp, nFilePages))
 39377  	tcl.XTcl_DStringAppendElement(tls, bp+24, bp+240)
 39378  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([100]uint8{})), bp+240, ts+17791, libc.VaList(bp+8, nFreePages))
 39379  	tcl.XTcl_DStringAppendElement(tls, bp+24, bp+240)
 39380  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([100]uint8{})), bp+240, ts+17791, libc.VaList(bp+16, nBytePerPage))
 39381  	tcl.XTcl_DStringAppendElement(tls, bp+24, bp+240)
 39382  	tcl.XTcl_ResetResult(tls, (*AutovacPageData)(unsafe.Pointer(pData)).Finterp)
 39383  	tcl.XTcl_Eval(tls, (*AutovacPageData)(unsafe.Pointer(pData)).Finterp, (*Tcl_DString)(unsafe.Pointer(bp+24)).Fstring)
 39384  	tcl.XTcl_DStringFree(tls, bp+24)
 39385  	*(*uint32)(unsafe.Pointer(bp + 340)) = nFreePages
 39386  	tcl.XTcl_GetIntFromObj(tls, uintptr(0), tcl.XTcl_GetObjResult(tls, (*AutovacPageData)(unsafe.Pointer(pData)).Finterp), bp+340)
 39387  	return *(*uint32)(unsafe.Pointer(bp + 340))
 39388  }
 39389  
 39390  func test_autovacuum_pages(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 39391  	bp := tls.Alloc(1048)
 39392  	defer tls.Free(1048)
 39393  
 39394  	var pData uintptr
 39395  
 39396  	var rc int32
 39397  	var zScript uintptr
 39398  	if objc != 2 && objc != 3 {
 39399  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+19501)
 39400  		return TCL_ERROR
 39401  	}
 39402  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+40) != 0 {
 39403  		return TCL_ERROR
 39404  	}
 39405  	if objc == 3 {
 39406  		zScript = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 39407  	} else {
 39408  		zScript = uintptr(0)
 39409  	}
 39410  	if zScript != 0 {
 39411  		var nScript size_t = libc.Xstrlen(tls, zScript)
 39412  		pData = sqlite3.Xsqlite3_malloc64(tls, uint64(unsafe.Sizeof(AutovacPageData{}))+nScript+uint64(1))
 39413  		if pData == uintptr(0) {
 39414  			tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+2069, uintptr(0)))
 39415  			return TCL_ERROR
 39416  		}
 39417  		(*AutovacPageData)(unsafe.Pointer(pData)).Finterp = interp
 39418  		(*AutovacPageData)(unsafe.Pointer(pData)).FzScript = pData + 1*16
 39419  		libc.Xmemcpy(tls, (*AutovacPageData)(unsafe.Pointer(pData)).FzScript, zScript, nScript+uint64(1))
 39420  		rc = sqlite3.Xsqlite3_autovacuum_pages(tls, *(*uintptr)(unsafe.Pointer(bp + 40)), *(*uintptr)(unsafe.Pointer(&struct {
 39421  			f func(*libc.TLS, uintptr, uintptr, uint32, uint32, uint32) uint32
 39422  		}{test_autovacuum_pages_callback})),
 39423  			pData, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{sqlite3.Xsqlite3_free})))
 39424  	} else {
 39425  		rc = sqlite3.Xsqlite3_autovacuum_pages(tls, *(*uintptr)(unsafe.Pointer(bp + 40)), uintptr(0), uintptr(0), uintptr(0))
 39426  	}
 39427  	if rc != 0 {
 39428  		sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([1000]uint8{})), bp+48,
 39429  			ts+19513, libc.VaList(bp+16, rc))
 39430  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+24, bp+48, uintptr(0)))
 39431  		return TCL_ERROR
 39432  	}
 39433  	return TCL_OK
 39434  }
 39435  
 39436  func Sqlitetest1_Init(tls *libc.TLS, interp uintptr) int32 {
 39437  	var i int32
 39438  
 39439  	for i = 0; uint64(i) < uint64(unsafe.Sizeof(aCmd1))/uint64(unsafe.Sizeof(struct {
 39440  		FzName uintptr
 39441  		FxProc uintptr
 39442  	}{})); i++ {
 39443  		tcl.XTcl_CreateCommand(tls, interp, aCmd1[i].FzName, aCmd1[i].FxProc, uintptr(0), uintptr(0))
 39444  	}
 39445  	for i = 0; uint64(i) < uint64(unsafe.Sizeof(aObjCmd1))/uint64(unsafe.Sizeof(struct {
 39446  		FzName      uintptr
 39447  		FxProc      uintptr
 39448  		FclientData uintptr
 39449  	}{})); i++ {
 39450  		tcl.XTcl_CreateObjCommand(tls, interp, aObjCmd1[i].FzName,
 39451  			aObjCmd1[i].FxProc, aObjCmd1[i].FclientData, uintptr(0))
 39452  	}
 39453  	tcl.XTcl_LinkVar(tls, interp, ts+19551,
 39454  		uintptr(unsafe.Pointer(&sqlite3.Xsqlite3_search_count)), TCL_LINK_INT)
 39455  	tcl.XTcl_LinkVar(tls, interp, ts+19571,
 39456  		uintptr(unsafe.Pointer(&sqlite3.Xsqlite3_found_count)), TCL_LINK_INT)
 39457  	tcl.XTcl_LinkVar(tls, interp, ts+19590,
 39458  		uintptr(unsafe.Pointer(&sqlite3.Xsqlite3_sort_count)), TCL_LINK_INT)
 39459  	tcl.XTcl_LinkVar(tls, interp, ts+19608,
 39460  		uintptr(unsafe.Pointer(&sqlite3.Xsqlite3_max_blobsize)), TCL_LINK_INT)
 39461  	tcl.XTcl_LinkVar(tls, interp, ts+19629,
 39462  		uintptr(unsafe.Pointer(&sqlite3.Xsqlite3_like_count)), TCL_LINK_INT)
 39463  	tcl.XTcl_LinkVar(tls, interp, ts+19647,
 39464  		uintptr(unsafe.Pointer(&sqlite3.Xsqlite3_interrupt_count)), TCL_LINK_INT)
 39465  	tcl.XTcl_LinkVar(tls, interp, ts+19670,
 39466  		uintptr(unsafe.Pointer(&sqlite3.Xsqlite3_open_file_count)), TCL_LINK_INT)
 39467  	tcl.XTcl_LinkVar(tls, interp, ts+19693,
 39468  		uintptr(unsafe.Pointer(&sqlite3.Xsqlite3_current_time)), TCL_LINK_INT)
 39469  	tcl.XTcl_LinkVar(tls, interp, ts+19713,
 39470  		uintptr(unsafe.Pointer(&sqlite3.Xsqlite3_xferopt_count)), TCL_LINK_INT)
 39471  	tcl.XTcl_LinkVar(tls, interp, ts+19735,
 39472  		uintptr(unsafe.Pointer(&sqlite3.Xsqlite3_pager_readdb_count)), TCL_LINK_INT)
 39473  	tcl.XTcl_LinkVar(tls, interp, ts+19762,
 39474  		uintptr(unsafe.Pointer(&sqlite3.Xsqlite3_pager_writedb_count)), TCL_LINK_INT)
 39475  	tcl.XTcl_LinkVar(tls, interp, ts+19790,
 39476  		uintptr(unsafe.Pointer(&sqlite3.Xsqlite3_pager_writej_count)), TCL_LINK_INT)
 39477  	tcl.XTcl_LinkVar(tls, interp, ts+19817,
 39478  		uintptr(unsafe.Pointer(&unaligned_string_counter)), TCL_LINK_INT)
 39479  	tcl.XTcl_LinkVar(tls, interp, ts+19842,
 39480  		uintptr(unsafe.Pointer(&pzNeededCollation)), TCL_LINK_STRING|TCL_LINK_READ_ONLY)
 39481  	{
 39482  		tcl.XTcl_LinkVar(tls, interp, ts+19871,
 39483  			uintptr(unsafe.Pointer(&query_plan)), TCL_LINK_STRING|TCL_LINK_READ_ONLY)
 39484  
 39485  	}
 39486  	tcl.XTcl_LinkVar(tls, interp, ts+19889,
 39487  		uintptr(unsafe.Pointer(&sqlite3.Xsqlite3_opentemp_count)), TCL_LINK_INT)
 39488  	tcl.XTcl_LinkVar(tls, interp, ts+19911,
 39489  		uintptr(unsafe.Pointer(&sqlite_static_bind_value)), TCL_LINK_STRING)
 39490  	tcl.XTcl_LinkVar(tls, interp, ts+19936,
 39491  		uintptr(unsafe.Pointer(&sqlite_static_bind_nbyte)), TCL_LINK_INT)
 39492  	tcl.XTcl_LinkVar(tls, interp, ts+19961,
 39493  		uintptr(unsafe.Pointer(&sqlite3.Xsqlite3_temp_directory)), TCL_LINK_STRING)
 39494  	tcl.XTcl_LinkVar(tls, interp, ts+19983,
 39495  		uintptr(unsafe.Pointer(&sqlite3.Xsqlite3_data_directory)), TCL_LINK_STRING)
 39496  	tcl.XTcl_LinkVar(tls, interp, ts+20005,
 39497  		uintptr(unsafe.Pointer(&bitmask_size)), TCL_LINK_INT|TCL_LINK_READ_ONLY)
 39498  	tcl.XTcl_LinkVar(tls, interp, ts+20018,
 39499  		uintptr(unsafe.Pointer(&longdouble_size)), TCL_LINK_INT|TCL_LINK_READ_ONLY)
 39500  	tcl.XTcl_LinkVar(tls, interp, ts+20034,
 39501  		uintptr(unsafe.Pointer(&sqlite3.Xsqlite3_sync_count)), TCL_LINK_INT)
 39502  	tcl.XTcl_LinkVar(tls, interp, ts+20052,
 39503  		uintptr(unsafe.Pointer(&sqlite3.Xsqlite3_fullsync_count)), TCL_LINK_INT)
 39504  	return TCL_OK
 39505  }
 39506  
 39507  var iZero int32 = 0
 39508  var aCmd1 = [39]struct {
 39509  	FzName uintptr
 39510  	FxProc uintptr
 39511  }{
 39512  	{FzName: ts + 20074, FxProc: 0},
 39513  	{FzName: ts + 20083, FxProc: 0},
 39514  	{FzName: ts + 20092, FxProc: 0},
 39515  	{FzName: ts + 20112, FxProc: 0},
 39516  	{FzName: ts + 20134, FxProc: 0},
 39517  	{FzName: ts + 20155, FxProc: 0},
 39518  	{FzName: ts + 20175, FxProc: 0},
 39519  	{FzName: ts + 20196, FxProc: 0},
 39520  	{FzName: ts + 20220, FxProc: 0},
 39521  	{FzName: ts + 20243, FxProc: 0},
 39522  	{FzName: ts + 20266, FxProc: 0},
 39523  	{FzName: ts + 20292, FxProc: 0},
 39524  	{FzName: ts + 20315, FxProc: 0},
 39525  	{FzName: ts + 20338, FxProc: 0},
 39526  	{FzName: ts + 20359, FxProc: 0},
 39527  	{FzName: ts + 20385, FxProc: 0},
 39528  	{FzName: ts + 20405, FxProc: 0},
 39529  	{FzName: ts + 20422, FxProc: 0},
 39530  	{FzName: ts + 20435, FxProc: 0},
 39531  	{FzName: ts + 20451, FxProc: 0},
 39532  	{FzName: ts + 20476, FxProc: 0},
 39533  	{FzName: ts + 20490, FxProc: 0},
 39534  	{FzName: ts + 20507, FxProc: 0},
 39535  	{FzName: ts + 20531, FxProc: 0},
 39536  	{FzName: ts + 20556, FxProc: 0},
 39537  	{FzName: ts + 20577, FxProc: 0},
 39538  	{FzName: ts + 20607, FxProc: 0},
 39539  	{FzName: ts + 20620, FxProc: 0},
 39540  	{FzName: ts + 20632, FxProc: 0},
 39541  	{FzName: ts + 20643, FxProc: 0},
 39542  	{FzName: ts + 20655, FxProc: 0},
 39543  	{FzName: ts + 20669, FxProc: 0},
 39544  	{FzName: ts + 20687, FxProc: 0},
 39545  	{FzName: ts + 20710, FxProc: 0},
 39546  	{FzName: ts + 20734, FxProc: 0},
 39547  	{FzName: ts + 20757, FxProc: 0},
 39548  	{FzName: ts + 20778, FxProc: 0},
 39549  	{FzName: ts + 20785, FxProc: 0},
 39550  	{FzName: ts + 20800, FxProc: 0},
 39551  }
 39552  var aObjCmd1 = [165]struct {
 39553  	FzName      uintptr
 39554  	FxProc      uintptr
 39555  	FclientData uintptr
 39556  }{
 39557  	{FzName: ts + 20823, FxProc: 0},
 39558  	{FzName: ts + 20841, FxProc: 0},
 39559  	{FzName: ts + 20859, FxProc: 0, FclientData: 0},
 39560  	{FzName: ts + 20872, FxProc: 0},
 39561  	{FzName: ts + 20893, FxProc: 0},
 39562  	{FzName: ts + 20920, FxProc: 0},
 39563  	{FzName: ts + 20934, FxProc: 0},
 39564  	{FzName: ts + 20950, FxProc: 0},
 39565  	{FzName: ts + 20967, FxProc: 0},
 39566  	{FzName: ts + 20982, FxProc: 0},
 39567  	{FzName: ts + 20999, FxProc: 0},
 39568  	{FzName: ts + 21021, FxProc: 0},
 39569  	{FzName: ts + 21045, FxProc: 0},
 39570  	{FzName: ts + 21064, FxProc: 0},
 39571  	{FzName: ts + 21084, FxProc: 0},
 39572  	{FzName: ts + 21102, FxProc: 0},
 39573  	{FzName: ts + 21120, FxProc: 0},
 39574  	{FzName: ts + 21140, FxProc: 0},
 39575  	{FzName: ts + 21158, FxProc: 0},
 39576  	{FzName: ts + 21189, FxProc: 0},
 39577  	{FzName: ts + 21223, FxProc: 0},
 39578  	{FzName: ts + 21243, FxProc: 0},
 39579  	{FzName: ts + 21272, FxProc: 0},
 39580  	{FzName: ts + 21300, FxProc: 0},
 39581  	{FzName: ts + 21329, FxProc: 0},
 39582  	{FzName: ts + 21352, FxProc: 0},
 39583  	{FzName: ts + 21366, FxProc: 0},
 39584  	{FzName: ts + 21382, FxProc: 0},
 39585  	{FzName: ts + 21407, FxProc: 0},
 39586  	{FzName: ts + 21422, FxProc: 0},
 39587  	{FzName: ts + 21443, FxProc: 0},
 39588  	{FzName: ts + 21460, FxProc: 0},
 39589  	{FzName: ts + 21473, FxProc: 0},
 39590  	{FzName: ts + 21488, FxProc: 0},
 39591  	{FzName: ts + 21504, FxProc: 0},
 39592  	{FzName: ts + 21523, FxProc: 0},
 39593  	{FzName: ts + 21541, FxProc: 0},
 39594  	{FzName: ts + 21557, FxProc: 0},
 39595  	{FzName: ts + 21575, FxProc: 0},
 39596  	{FzName: ts + 21594, FxProc: 0},
 39597  	{FzName: ts + 21613, FxProc: 0},
 39598  	{FzName: ts + 21637, FxProc: 0},
 39599  	{FzName: ts + 21658, FxProc: 0},
 39600  	{FzName: ts + 21675, FxProc: 0},
 39601  	{FzName: ts + 21695, FxProc: 0},
 39602  	{FzName: ts + 21709, FxProc: 0},
 39603  	{FzName: ts + 21725, FxProc: 0},
 39604  	{FzName: ts + 21751, FxProc: 0},
 39605  	{FzName: ts + 21767, FxProc: 0},
 39606  	{FzName: ts + 21780, FxProc: 0},
 39607  	{FzName: ts + 21792, FxProc: 0},
 39608  	{FzName: ts + 21813, FxProc: 0},
 39609  	{FzName: ts + 21831, FxProc: 0},
 39610  	{FzName: ts + 21853, FxProc: 0},
 39611  	{FzName: ts + 21876, FxProc: 0},
 39612  	{FzName: ts + 21894, FxProc: 0},
 39613  	{FzName: ts + 21912, FxProc: 0},
 39614  	{FzName: ts + 21935, FxProc: 0},
 39615  	{FzName: ts + 21961, FxProc: 0},
 39616  	{FzName: ts + 21983, FxProc: 0},
 39617  	{FzName: ts + 22004, FxProc: 0},
 39618  	{FzName: ts + 22024, FxProc: 0},
 39619  	{FzName: ts + 22044, FxProc: 0},
 39620  	{FzName: ts + 22068, FxProc: 0},
 39621  	{FzName: ts + 22094, FxProc: 0},
 39622  	{FzName: ts + 22120, FxProc: 0},
 39623  	{FzName: ts + 22143, FxProc: 0},
 39624  	{FzName: ts + 22167, FxProc: 0},
 39625  	{FzName: ts + 22190, FxProc: 0},
 39626  	{FzName: ts + 22220, FxProc: 0},
 39627  	{FzName: ts + 22250, FxProc: 0},
 39628  	{FzName: ts + 22264, FxProc: 0},
 39629  	{FzName: ts + 22292, FxProc: 0},
 39630  	{FzName: ts + 22308, FxProc: 0},
 39631  	{FzName: ts + 22327, FxProc: 0},
 39632  	{FzName: ts + 22344, FxProc: 0},
 39633  	{FzName: ts + 22354, FxProc: 0},
 39634  	{FzName: ts + 22374, FxProc: 0},
 39635  	{FzName: ts + 22397, FxProc: 0},
 39636  	{FzName: ts + 22421, FxProc: 0},
 39637  	{FzName: ts + 22442, FxProc: 0},
 39638  	{FzName: ts + 22454, FxProc: 0},
 39639  	{FzName: ts + 22475, FxProc: 0},
 39640  	{FzName: ts + 22494, FxProc: 0},
 39641  	{FzName: ts + 22514, FxProc: 0},
 39642  	{FzName: ts + 22534, FxProc: 0},
 39643  	{FzName: ts + 22556, FxProc: 0},
 39644  	{FzName: ts + 22577, FxProc: 0, FclientData: 0},
 39645  	{FzName: ts + 22597, FxProc: 0, FclientData: 0},
 39646  	{FzName: ts + 22617, FxProc: 0, FclientData: 0},
 39647  	{FzName: ts + 22636, FxProc: 0, FclientData: 0},
 39648  	{FzName: ts + 22657, FxProc: 0, FclientData: 0},
 39649  	{FzName: ts + 22681, FxProc: 0, FclientData: 0},
 39650  	{FzName: ts + 22710, FxProc: 0, FclientData: 0},
 39651  	{FzName: ts + 22736, FxProc: 0, FclientData: 0},
 39652  	{FzName: ts + 22763, FxProc: 0, FclientData: 0},
 39653  	{FzName: ts + 22786, FxProc: 0, FclientData: 0},
 39654  	{FzName: ts + 22808, FxProc: 0, FclientData: 0},
 39655  	{FzName: ts + 22830, FxProc: 0},
 39656  	{FzName: ts + 22860, FxProc: 0, FclientData: 0},
 39657  	{FzName: ts + 22886,
 39658  		FxProc: 0, FclientData: 0},
 39659  	{FzName: ts + 22917, FxProc: 0, FclientData: 0},
 39660  	{FzName: ts + 22945, FxProc: 0, FclientData: 0},
 39661  	{FzName: ts + 22974, FxProc: 0},
 39662  	{FzName: ts + 23002, FxProc: 0},
 39663  	{FzName: ts + 23025, FxProc: 0},
 39664  	{FzName: ts + 23043, FxProc: 0},
 39665  	{FzName: ts + 23059, FxProc: 0},
 39666  	{FzName: ts + 23077, FxProc: 0},
 39667  	{FzName: ts + 23096, FxProc: 0},
 39668  	{FzName: ts + 23115, FxProc: 0},
 39669  	{FzName: ts + 23133, FxProc: 0},
 39670  	{FzName: ts + 23161, FxProc: 0},
 39671  	{FzName: ts + 23189, FxProc: 0},
 39672  	{FzName: ts + 23217, FxProc: 0},
 39673  	{FzName: ts + 23244, FxProc: 0},
 39674  	{FzName: ts + 23270, FxProc: 0},
 39675  	{FzName: ts + 23295, FxProc: 0},
 39676  	{FzName: ts + 23328, FxProc: 0},
 39677  	{FzName: ts + 23349, FxProc: 0},
 39678  	{FzName: ts + 23375, FxProc: 0},
 39679  	{FzName: ts + 23401, FxProc: 0},
 39680  	{FzName: ts + 23430, FxProc: 0},
 39681  	{FzName: ts + 23447, FxProc: 0},
 39682  	{FzName: ts + 23474, FxProc: 0},
 39683  	{FzName: ts + 23491, FxProc: 0},
 39684  	{FzName: ts + 23515, FxProc: 0},
 39685  	{FzName: ts + 23533, FxProc: 0},
 39686  	{FzName: ts + 23559, FxProc: 0},
 39687  	{FzName: ts + 23579, FxProc: 0},
 39688  	{FzName: ts + 23597, FxProc: 0},
 39689  	{FzName: ts + 23625, FxProc: 0},
 39690  	{FzName: ts + 23653, FxProc: 0},
 39691  	{FzName: ts + 23679, FxProc: 0},
 39692  	{FzName: ts + 23709, FxProc: 0},
 39693  	{FzName: ts + 23729, FxProc: 0},
 39694  	{FzName: ts + 23742, FxProc: 0},
 39695  	{FzName: ts + 23764, FxProc: 0},
 39696  	{FzName: ts + 23787, FxProc: 0},
 39697  	{FzName: ts + 23813, FxProc: 0},
 39698  	{FzName: ts + 23840, FxProc: 0},
 39699  	{FzName: ts + 23857, FxProc: 0},
 39700  	{FzName: ts + 23882, FxProc: 0},
 39701  	{FzName: ts + 23903, FxProc: 0},
 39702  	{FzName: ts + 23913, FxProc: 0},
 39703  	{FzName: ts + 23935, FxProc: 0},
 39704  	{FzName: ts + 23956, FxProc: 0},
 39705  	{FzName: ts + 23981, FxProc: 0},
 39706  	{FzName: ts + 24004, FxProc: 0},
 39707  	{FzName: ts + 24025, FxProc: 0},
 39708  	{FzName: ts + 24047, FxProc: 0},
 39709  	{FzName: ts + 24069, FxProc: 0},
 39710  	{FzName: ts + 24090, FxProc: 0},
 39711  	{FzName: ts + 24115, FxProc: 0},
 39712  	{FzName: ts + 24141, FxProc: 0},
 39713  	{FzName: ts + 24168, FxProc: 0},
 39714  	{FzName: ts + 24194, FxProc: 0},
 39715  	{FzName: ts + 24218, FxProc: 0},
 39716  	{FzName: ts + 24237, FxProc: 0},
 39717  	{FzName: ts + 24255, FxProc: 0},
 39718  	{FzName: ts + 24280, FxProc: 0},
 39719  	{FzName: ts + 24305, FxProc: 0},
 39720  	{FzName: ts + 24318, FxProc: 0},
 39721  	{FzName: ts + 24332, FxProc: 0},
 39722  	{FzName: ts + 24358, FxProc: 0},
 39723  }
 39724  var bitmask_size int32 = int32(uint64(unsafe.Sizeof(Bitmask(0))) * uint64(8))
 39725  var longdouble_size int32 = int32(unsafe.Sizeof(float64(0)))
 39726  var query_plan uintptr = ts + 24386
 39727  
 39728  var test_pagesize int32 = 1024
 39729  
 39730  func pager_test_reiniter(tls *libc.TLS, pNotUsed uintptr) {
 39731  	return
 39732  }
 39733  
 39734  func pager_open(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 39735  	bp := tls.Alloc(192)
 39736  	defer tls.Free(192)
 39737  
 39738  	var rc int32
 39739  
 39740  	if argc != 3 {
 39741  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 39742  			ts+24412, 0))
 39743  		return TCL_ERROR
 39744  	}
 39745  	if tcl.XTcl_GetInt(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 2*8)), bp+72) != 0 {
 39746  		return TCL_ERROR
 39747  	}
 39748  	rc = sqlite3.Xsqlite3PagerOpen(tls, sqlite3.Xsqlite3_vfs_find(tls, uintptr(0)), bp+80, *(*uintptr)(unsafe.Pointer(argv + 1*8)), 0, 0,
 39749  		SQLITE_OPEN_READWRITE|SQLITE_OPEN_CREATE|SQLITE_OPEN_MAIN_DB,
 39750  		*(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{pager_test_reiniter})))
 39751  	if rc != SQLITE_OK {
 39752  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, sqlite3.Xsqlite3ErrName(tls, rc), 0))
 39753  		return TCL_ERROR
 39754  	}
 39755  	sqlite3.Xsqlite3PagerSetCachesize(tls, *(*uintptr)(unsafe.Pointer(bp + 80)), *(*int32)(unsafe.Pointer(bp + 72)))
 39756  	*(*u32)(unsafe.Pointer(bp + 88)) = u32(test_pagesize)
 39757  	sqlite3.Xsqlite3PagerSetPagesize(tls, *(*uintptr)(unsafe.Pointer(bp + 80)), bp+88, -1)
 39758  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([100]uint8{})), bp+92, ts+9889, libc.VaList(bp+48, *(*uintptr)(unsafe.Pointer(bp + 80))))
 39759  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+56, bp+92, 0))
 39760  	return TCL_OK
 39761  }
 39762  
 39763  func pager_close(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 39764  	bp := tls.Alloc(48)
 39765  	defer tls.Free(48)
 39766  
 39767  	var pPager uintptr
 39768  	var rc int32
 39769  	if argc != 2 {
 39770  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 39771  			ts+24430, 0))
 39772  		return TCL_ERROR
 39773  	}
 39774  	pPager = sqlite3TestTextToPtr(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 39775  	rc = sqlite3.Xsqlite3PagerClose(tls, pPager, uintptr(0))
 39776  	if rc != SQLITE_OK {
 39777  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, sqlite3.Xsqlite3ErrName(tls, rc), 0))
 39778  		return TCL_ERROR
 39779  	}
 39780  	return TCL_OK
 39781  }
 39782  
 39783  func pager_rollback(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 39784  	bp := tls.Alloc(48)
 39785  	defer tls.Free(48)
 39786  
 39787  	var pPager uintptr
 39788  	var rc int32
 39789  	if argc != 2 {
 39790  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 39791  			ts+24430, 0))
 39792  		return TCL_ERROR
 39793  	}
 39794  	pPager = sqlite3TestTextToPtr(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 39795  	rc = sqlite3.Xsqlite3PagerRollback(tls, pPager)
 39796  	if rc != SQLITE_OK {
 39797  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, sqlite3.Xsqlite3ErrName(tls, rc), 0))
 39798  		return TCL_ERROR
 39799  	}
 39800  	return TCL_OK
 39801  }
 39802  
 39803  func pager_commit(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 39804  	bp := tls.Alloc(64)
 39805  	defer tls.Free(64)
 39806  
 39807  	var pPager uintptr
 39808  	var rc int32
 39809  	if argc != 2 {
 39810  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 39811  			ts+24430, 0))
 39812  		return TCL_ERROR
 39813  	}
 39814  	pPager = sqlite3TestTextToPtr(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 39815  	rc = sqlite3.Xsqlite3PagerCommitPhaseOne(tls, pPager, uintptr(0), 0)
 39816  	if rc != SQLITE_OK {
 39817  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, sqlite3.Xsqlite3ErrName(tls, rc), 0))
 39818  		return TCL_ERROR
 39819  	}
 39820  	rc = sqlite3.Xsqlite3PagerCommitPhaseTwo(tls, pPager)
 39821  	if rc != SQLITE_OK {
 39822  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+48, sqlite3.Xsqlite3ErrName(tls, rc), 0))
 39823  		return TCL_ERROR
 39824  	}
 39825  	return TCL_OK
 39826  }
 39827  
 39828  func pager_stmt_begin(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 39829  	bp := tls.Alloc(48)
 39830  	defer tls.Free(48)
 39831  
 39832  	var pPager uintptr
 39833  	var rc int32
 39834  	if argc != 2 {
 39835  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 39836  			ts+24430, 0))
 39837  		return TCL_ERROR
 39838  	}
 39839  	pPager = sqlite3TestTextToPtr(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 39840  	rc = sqlite3.Xsqlite3PagerOpenSavepoint(tls, pPager, 1)
 39841  	if rc != SQLITE_OK {
 39842  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, sqlite3.Xsqlite3ErrName(tls, rc), 0))
 39843  		return TCL_ERROR
 39844  	}
 39845  	return TCL_OK
 39846  }
 39847  
 39848  func pager_stmt_rollback(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 39849  	bp := tls.Alloc(48)
 39850  	defer tls.Free(48)
 39851  
 39852  	var pPager uintptr
 39853  	var rc int32
 39854  	if argc != 2 {
 39855  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 39856  			ts+24430, 0))
 39857  		return TCL_ERROR
 39858  	}
 39859  	pPager = sqlite3TestTextToPtr(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 39860  	rc = sqlite3.Xsqlite3PagerSavepoint(tls, pPager, SAVEPOINT_ROLLBACK, 0)
 39861  	sqlite3.Xsqlite3PagerSavepoint(tls, pPager, SAVEPOINT_RELEASE, 0)
 39862  	if rc != SQLITE_OK {
 39863  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, sqlite3.Xsqlite3ErrName(tls, rc), 0))
 39864  		return TCL_ERROR
 39865  	}
 39866  	return TCL_OK
 39867  }
 39868  
 39869  func pager_stmt_commit(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 39870  	bp := tls.Alloc(48)
 39871  	defer tls.Free(48)
 39872  
 39873  	var pPager uintptr
 39874  	var rc int32
 39875  	if argc != 2 {
 39876  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 39877  			ts+24430, 0))
 39878  		return TCL_ERROR
 39879  	}
 39880  	pPager = sqlite3TestTextToPtr(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 39881  	rc = sqlite3.Xsqlite3PagerSavepoint(tls, pPager, SAVEPOINT_RELEASE, 0)
 39882  	if rc != SQLITE_OK {
 39883  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, sqlite3.Xsqlite3ErrName(tls, rc), 0))
 39884  		return TCL_ERROR
 39885  	}
 39886  	return TCL_OK
 39887  }
 39888  
 39889  func pager_stats(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 39890  	bp := tls.Alloc(140)
 39891  	defer tls.Free(140)
 39892  
 39893  	var pPager uintptr
 39894  	var i int32
 39895  	var a uintptr
 39896  	if argc != 2 {
 39897  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 39898  			ts+24430, 0))
 39899  		return TCL_ERROR
 39900  	}
 39901  	pPager = sqlite3TestTextToPtr(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 39902  	a = sqlite3.Xsqlite3PagerStats(tls, pPager)
 39903  	for i = 0; i < 9; i++ {
 39904  		tcl.XTcl_AppendElement(tls, interp, zName[i])
 39905  		sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([100]uint8{})), bp+40, ts+1333, libc.VaList(bp+32, *(*int32)(unsafe.Pointer(a + uintptr(i)*4))))
 39906  		tcl.XTcl_AppendElement(tls, interp, bp+40)
 39907  	}
 39908  	return TCL_OK
 39909  }
 39910  
 39911  var zName = [9]uintptr{
 39912  	ts + 24435, ts + 24439, ts + 18254, ts + 11809, ts + 9558, ts + 24444,
 39913  	ts + 24448, ts + 24452, ts + 24457,
 39914  }
 39915  
 39916  func pager_pagecount(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 39917  	bp := tls.Alloc(160)
 39918  	defer tls.Free(160)
 39919  
 39920  	var pPager uintptr
 39921  
 39922  	if argc != 2 {
 39923  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 39924  			ts+24430, 0))
 39925  		return TCL_ERROR
 39926  	}
 39927  	pPager = sqlite3TestTextToPtr(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 39928  	sqlite3.Xsqlite3PagerPagecount(tls, pPager, bp+56)
 39929  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([100]uint8{})), bp+60, ts+1333, libc.VaList(bp+32, *(*int32)(unsafe.Pointer(bp + 56))))
 39930  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+40, bp+60, 0))
 39931  	return TCL_OK
 39932  }
 39933  
 39934  func page_get(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 39935  	bp := tls.Alloc(188)
 39936  	defer tls.Free(188)
 39937  
 39938  	var pPager uintptr
 39939  
 39940  	*(*uintptr)(unsafe.Pointer(bp + 80)) = uintptr(0)
 39941  
 39942  	var rc int32
 39943  	if argc != 3 {
 39944  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 39945  			ts+24462, 0))
 39946  		return TCL_ERROR
 39947  	}
 39948  	pPager = sqlite3TestTextToPtr(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 39949  	if tcl.XTcl_GetInt(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 2*8)), bp+72) != 0 {
 39950  		return TCL_ERROR
 39951  	}
 39952  	rc = sqlite3.Xsqlite3PagerSharedLock(tls, pPager)
 39953  	if rc == SQLITE_OK {
 39954  		rc = sqlite3.Xsqlite3PagerGet(tls, pPager, uint32(*(*int32)(unsafe.Pointer(bp + 72))), bp+80, 0)
 39955  	}
 39956  	if rc != SQLITE_OK {
 39957  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, sqlite3.Xsqlite3ErrName(tls, rc), 0))
 39958  		return TCL_ERROR
 39959  	}
 39960  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([100]uint8{})), bp+88, ts+9889, libc.VaList(bp+48, *(*uintptr)(unsafe.Pointer(bp + 80))))
 39961  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+56, bp+88, 0))
 39962  	return TCL_OK
 39963  }
 39964  
 39965  func page_lookup(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 39966  	bp := tls.Alloc(160)
 39967  	defer tls.Free(160)
 39968  
 39969  	var pPager uintptr
 39970  
 39971  	var pPage uintptr
 39972  
 39973  	if argc != 3 {
 39974  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 39975  			ts+24462, 0))
 39976  		return TCL_ERROR
 39977  	}
 39978  	pPager = sqlite3TestTextToPtr(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 39979  	if tcl.XTcl_GetInt(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 2*8)), bp+56) != 0 {
 39980  		return TCL_ERROR
 39981  	}
 39982  	pPage = sqlite3.Xsqlite3PagerLookup(tls, pPager, uint32(*(*int32)(unsafe.Pointer(bp + 56))))
 39983  	if pPage != 0 {
 39984  		sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([100]uint8{})), bp+60, ts+9889, libc.VaList(bp+32, pPage))
 39985  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+40, bp+60, 0))
 39986  	}
 39987  	return TCL_OK
 39988  }
 39989  
 39990  func pager_truncate(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 39991  	bp := tls.Alloc(36)
 39992  	defer tls.Free(36)
 39993  
 39994  	var pPager uintptr
 39995  
 39996  	if argc != 3 {
 39997  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 39998  			ts+24462, 0))
 39999  		return TCL_ERROR
 40000  	}
 40001  	pPager = sqlite3TestTextToPtr(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 40002  	if tcl.XTcl_GetInt(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 2*8)), bp+32) != 0 {
 40003  		return TCL_ERROR
 40004  	}
 40005  	sqlite3.Xsqlite3PagerTruncateImage(tls, pPager, uint32(*(*int32)(unsafe.Pointer(bp + 32))))
 40006  	return TCL_OK
 40007  }
 40008  
 40009  func page_unref(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 40010  	bp := tls.Alloc(32)
 40011  	defer tls.Free(32)
 40012  
 40013  	var pPage uintptr
 40014  	if argc != 2 {
 40015  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 40016  			ts+24472, 0))
 40017  		return TCL_ERROR
 40018  	}
 40019  	pPage = sqlite3TestTextToPtr(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 40020  	sqlite3.Xsqlite3PagerUnref(tls, pPage)
 40021  	return TCL_OK
 40022  }
 40023  
 40024  func page_read(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 40025  	bp := tls.Alloc(148)
 40026  	defer tls.Free(148)
 40027  
 40028  	var pPage uintptr
 40029  	if argc != 2 {
 40030  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 40031  			ts+24472, 0))
 40032  		return TCL_ERROR
 40033  	}
 40034  	pPage = sqlite3TestTextToPtr(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 40035  	libc.Xmemcpy(tls, bp+48, sqlite3.Xsqlite3PagerGetData(tls, pPage), uint64(unsafe.Sizeof([100]uint8{})))
 40036  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, bp+48, 0))
 40037  	return TCL_OK
 40038  }
 40039  
 40040  func page_number(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 40041  	bp := tls.Alloc(156)
 40042  	defer tls.Free(156)
 40043  
 40044  	var pPage uintptr
 40045  	if argc != 2 {
 40046  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 40047  			ts+24472, 0))
 40048  		return TCL_ERROR
 40049  	}
 40050  	pPage = sqlite3TestTextToPtr(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 40051  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([100]uint8{})), bp+56, ts+1333, libc.VaList(bp+32, sqlite3.Xsqlite3PagerPagenumber(tls, pPage)))
 40052  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+40, bp+56, 0))
 40053  	return TCL_OK
 40054  }
 40055  
 40056  func page_write(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 40057  	bp := tls.Alloc(48)
 40058  	defer tls.Free(48)
 40059  
 40060  	var pPage uintptr
 40061  	var pData uintptr
 40062  	var rc int32
 40063  	if argc != 3 {
 40064  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 40065  			ts+24479, 0))
 40066  		return TCL_ERROR
 40067  	}
 40068  	pPage = sqlite3TestTextToPtr(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 40069  	rc = sqlite3.Xsqlite3PagerWrite(tls, pPage)
 40070  	if rc != SQLITE_OK {
 40071  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, sqlite3.Xsqlite3ErrName(tls, rc), 0))
 40072  		return TCL_ERROR
 40073  	}
 40074  	pData = sqlite3.Xsqlite3PagerGetData(tls, pPage)
 40075  	libc.Xstrncpy(tls, pData, *(*uintptr)(unsafe.Pointer(argv + 2*8)), uint64(test_pagesize-1))
 40076  	*(*uint8)(unsafe.Pointer(pData + uintptr(test_pagesize-1))) = uint8(0)
 40077  	return TCL_OK
 40078  }
 40079  
 40080  func fake_big_file(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 40081  	bp := tls.Alloc(96)
 40082  	defer tls.Free(96)
 40083  
 40084  	var pVfs uintptr
 40085  	*(*uintptr)(unsafe.Pointer(bp + 88)) = uintptr(0)
 40086  	var rc int32
 40087  
 40088  	var offset i64
 40089  	var zFile uintptr
 40090  	var nFile int32
 40091  	if argc != 3 {
 40092  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 40093  			ts+24491, 0))
 40094  		return TCL_ERROR
 40095  	}
 40096  	if tcl.XTcl_GetInt(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)), bp+80) != 0 {
 40097  		return TCL_ERROR
 40098  	}
 40099  
 40100  	pVfs = sqlite3.Xsqlite3_vfs_find(tls, uintptr(0))
 40101  	nFile = int32(libc.Xstrlen(tls, *(*uintptr)(unsafe.Pointer(argv + 2*8))))
 40102  	zFile = sqlite3.Xsqlite3_malloc(tls, nFile+2)
 40103  	if zFile == uintptr(0) {
 40104  		return TCL_ERROR
 40105  	}
 40106  	libc.Xmemcpy(tls, zFile, *(*uintptr)(unsafe.Pointer(argv + 2*8)), uint64(nFile+1))
 40107  	*(*uint8)(unsafe.Pointer(zFile + uintptr(nFile+1))) = uint8(0)
 40108  	rc = sqlite3.Xsqlite3OsOpenMalloc(tls, pVfs, zFile, bp+88,
 40109  		SQLITE_OPEN_CREATE|SQLITE_OPEN_READWRITE|SQLITE_OPEN_MAIN_DB, uintptr(0))
 40110  	if rc != 0 {
 40111  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+24510, sqlite3.Xsqlite3ErrName(tls, rc), 0))
 40112  		sqlite3.Xsqlite3_free(tls, zFile)
 40113  		return TCL_ERROR
 40114  	}
 40115  	offset = i64(*(*int32)(unsafe.Pointer(bp + 80)))
 40116  	offset = offset * int64(1024*1024)
 40117  	rc = sqlite3.Xsqlite3OsWrite(tls, *(*uintptr)(unsafe.Pointer(bp + 88)), ts+24524, 14, offset)
 40118  	sqlite3.Xsqlite3OsCloseFree(tls, *(*uintptr)(unsafe.Pointer(bp + 88)))
 40119  	sqlite3.Xsqlite3_free(tls, zFile)
 40120  	if rc != 0 {
 40121  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+56, ts+24538, sqlite3.Xsqlite3ErrName(tls, rc), 0))
 40122  		return TCL_ERROR
 40123  	}
 40124  	return TCL_OK
 40125  }
 40126  
 40127  func testPendingByte(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 40128  	bp := tls.Alloc(44)
 40129  	defer tls.Free(44)
 40130  
 40131  	var rc int32
 40132  	if argc != 2 {
 40133  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 40134  			ts+24553, uintptr(0)))
 40135  		return TCL_ERROR
 40136  	}
 40137  	if tcl.XTcl_GetInt(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)), bp+40) != 0 {
 40138  		return TCL_ERROR
 40139  	}
 40140  	rc = sqlite3.Xsqlite3_test_control(tls, SQLITE_TESTCTRL_PENDING_BYTE, libc.VaList(bp+32, *(*int32)(unsafe.Pointer(bp + 40))))
 40141  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, rc))
 40142  	return TCL_OK
 40143  }
 40144  
 40145  var faultSimInterp uintptr = uintptr(0)
 40146  var faultSimScriptSize int32 = 0
 40147  var faultSimScript uintptr
 40148  
 40149  func faultSimCallback(tls *libc.TLS, x int32) int32 {
 40150  	bp := tls.Alloc(38)
 40151  	defer tls.Free(38)
 40152  
 40153  	var i int32
 40154  	var isNeg int32
 40155  	var rc int32
 40156  	if x == 0 {
 40157  		libc.Xmemcpy(tls, faultSimScript+uintptr(faultSimScriptSize), ts+14193, uint64(2))
 40158  	} else {
 40159  		if x < 0 {
 40160  			isNeg = 1
 40161  			x = -x
 40162  		} else {
 40163  			isNeg = 0
 40164  		}
 40165  		*(*uint8)(unsafe.Pointer(bp + 8 + 29)) = uint8(0)
 40166  		i = int32(uint64(unsafe.Sizeof([30]uint8{})) - uint64(2))
 40167  	__1:
 40168  		if !(i > 0 && x > 0) {
 40169  			goto __3
 40170  		}
 40171  		{
 40172  			*(*uint8)(unsafe.Pointer(bp + 8 + uintptr(i))) = uint8(x%10 + '0')
 40173  
 40174  		}
 40175  		goto __2
 40176  	__2:
 40177  		i--
 40178  		x = x / 10
 40179  		goto __1
 40180  		goto __3
 40181  	__3:
 40182  		;
 40183  		if isNeg != 0 {
 40184  			*(*uint8)(unsafe.Pointer(bp + 8 + uintptr(libc.PostDecInt32(&i, 1)))) = uint8('-')
 40185  		}
 40186  		libc.Xmemcpy(tls, faultSimScript+uintptr(faultSimScriptSize), bp+8+uintptr(i)+uintptr(1), uint64(unsafe.Sizeof([30]uint8{}))-uint64(i))
 40187  	}
 40188  	rc = tcl.XTcl_Eval(tls, faultSimInterp, faultSimScript)
 40189  	if rc != 0 {
 40190  		libc.Xfprintf(tls, libc.Xstderr, ts+24568, libc.VaList(bp, faultSimScript))
 40191  		rc = SQLITE_ERROR
 40192  	} else {
 40193  		rc = libc.Xatoi(tls, tcl.XTcl_GetStringResult(tls, faultSimInterp))
 40194  	}
 40195  	tcl.XTcl_ResetResult(tls, faultSimInterp)
 40196  	return rc
 40197  }
 40198  
 40199  func faultInstallCmd(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 40200  	bp := tls.Alloc(64)
 40201  	defer tls.Free(64)
 40202  
 40203  	var zScript uintptr
 40204  	var nScript int32
 40205  	var rc int32
 40206  	if argc != 1 && argc != 2 {
 40207  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 40208  			ts+24604, uintptr(0)))
 40209  	}
 40210  	if argc == 2 {
 40211  		zScript = *(*uintptr)(unsafe.Pointer(argv + 1*8))
 40212  	} else {
 40213  		zScript = ts + 584
 40214  	}
 40215  	nScript = int32(libc.Xstrlen(tls, zScript))
 40216  	if faultSimScript != 0 {
 40217  		libc.Xfree(tls, faultSimScript)
 40218  		faultSimScript = uintptr(0)
 40219  	}
 40220  	if nScript == 0 {
 40221  		rc = sqlite3.Xsqlite3_test_control(tls, SQLITE_TESTCTRL_FAULT_INSTALL, libc.VaList(bp+32, 0))
 40222  	} else {
 40223  		faultSimScript = libc.Xmalloc(tls, uint64(nScript+100))
 40224  		if faultSimScript == uintptr(0) {
 40225  			tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+40, ts+2069, uintptr(0)))
 40226  			return SQLITE_ERROR
 40227  		}
 40228  		libc.Xmemcpy(tls, faultSimScript, zScript, uint64(nScript))
 40229  		*(*uint8)(unsafe.Pointer(faultSimScript + uintptr(nScript))) = uint8(' ')
 40230  		faultSimScriptSize = nScript + 1
 40231  		faultSimInterp = interp
 40232  		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}))))
 40233  	}
 40234  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, rc))
 40235  	return SQLITE_OK
 40236  }
 40237  
 40238  func testBitvecBuiltinTest(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 40239  	bp := tls.Alloc(452)
 40240  	defer tls.Free(452)
 40241  
 40242  	var rc int32
 40243  	var nProg int32 = 0
 40244  
 40245  	var z uintptr
 40246  	if argc != 3 {
 40247  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 40248  			ts+24613, uintptr(0)))
 40249  	}
 40250  	if tcl.XTcl_GetInt(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)), bp+48) != 0 {
 40251  		return TCL_ERROR
 40252  	}
 40253  	z = *(*uintptr)(unsafe.Pointer(argv + 2*8))
 40254  	for nProg < 99 && *(*uint8)(unsafe.Pointer(z)) != 0 {
 40255  		for *(*uint8)(unsafe.Pointer(z)) != 0 && !(int32(sqlite3.Xsqlite3CtypeMap[*(*uint8)(unsafe.Pointer(z))])&0x04 != 0) {
 40256  			z++
 40257  		}
 40258  		if int32(*(*uint8)(unsafe.Pointer(z))) == 0 {
 40259  			break
 40260  		}
 40261  		*(*int32)(unsafe.Pointer(bp + 52 + uintptr(libc.PostIncInt32(&nProg, 1))*4)) = libc.Xatoi(tls, z)
 40262  		for int32(sqlite3.Xsqlite3CtypeMap[*(*uint8)(unsafe.Pointer(z))])&0x04 != 0 {
 40263  			z++
 40264  		}
 40265  	}
 40266  	*(*int32)(unsafe.Pointer(bp + 52 + uintptr(nProg)*4)) = 0
 40267  	rc = sqlite3.Xsqlite3_test_control(tls, SQLITE_TESTCTRL_BITVEC_TEST, libc.VaList(bp+32, *(*int32)(unsafe.Pointer(bp + 48)), bp+52))
 40268  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, rc))
 40269  	return TCL_OK
 40270  }
 40271  
 40272  func Sqlitetest2_Init(tls *libc.TLS, interp uintptr) int32 {
 40273  	var i int32
 40274  	for i = 0; uint64(i) < uint64(unsafe.Sizeof(aCmd2))/uint64(unsafe.Sizeof(struct {
 40275  		FzName uintptr
 40276  		FxProc uintptr
 40277  	}{})); i++ {
 40278  		tcl.XTcl_CreateCommand(tls, interp, aCmd2[i].FzName, aCmd2[i].FxProc, uintptr(0), uintptr(0))
 40279  	}
 40280  	tcl.XTcl_LinkVar(tls, interp, ts+24628,
 40281  		uintptr(unsafe.Pointer(&sqlite3.Xsqlite3_io_error_pending)), TCL_LINK_INT)
 40282  	tcl.XTcl_LinkVar(tls, interp, ts+24652,
 40283  		uintptr(unsafe.Pointer(&sqlite3.Xsqlite3_io_error_persist)), TCL_LINK_INT)
 40284  	tcl.XTcl_LinkVar(tls, interp, ts+24676,
 40285  		uintptr(unsafe.Pointer(&sqlite3.Xsqlite3_io_error_hit)), TCL_LINK_INT)
 40286  	tcl.XTcl_LinkVar(tls, interp, ts+24696,
 40287  		uintptr(unsafe.Pointer(&sqlite3.Xsqlite3_io_error_hardhit)), TCL_LINK_INT)
 40288  	tcl.XTcl_LinkVar(tls, interp, ts+24720,
 40289  		uintptr(unsafe.Pointer(&sqlite3.Xsqlite3_diskfull_pending)), TCL_LINK_INT)
 40290  	tcl.XTcl_LinkVar(tls, interp, ts+24744,
 40291  		uintptr(unsafe.Pointer(&sqlite3.Xsqlite3_diskfull)), TCL_LINK_INT)
 40292  	tcl.XTcl_LinkVar(tls, interp, ts+24760,
 40293  		uintptr(unsafe.Pointer(&sqlite3.Xsqlite3PendingByte)), TCL_LINK_INT|TCL_LINK_READ_ONLY)
 40294  	return TCL_OK
 40295  }
 40296  
 40297  var aCmd2 = [20]struct {
 40298  	FzName uintptr
 40299  	FxProc uintptr
 40300  }{
 40301  	{FzName: ts + 24780, FxProc: 0},
 40302  	{FzName: ts + 24791, FxProc: 0},
 40303  	{FzName: ts + 24803, FxProc: 0},
 40304  	{FzName: ts + 24816, FxProc: 0},
 40305  	{FzName: ts + 24831, FxProc: 0},
 40306  	{FzName: ts + 24848, FxProc: 0},
 40307  	{FzName: ts + 24866, FxProc: 0},
 40308  	{FzName: ts + 24886, FxProc: 0},
 40309  	{FzName: ts + 24898, FxProc: 0},
 40310  	{FzName: ts + 24914, FxProc: 0},
 40311  	{FzName: ts + 24923, FxProc: 0},
 40312  	{FzName: ts + 24935, FxProc: 0},
 40313  	{FzName: ts + 24946, FxProc: 0},
 40314  	{FzName: ts + 24956, FxProc: 0},
 40315  	{FzName: ts + 24967, FxProc: 0},
 40316  	{FzName: ts + 24979, FxProc: 0},
 40317  	{FzName: ts + 24994, FxProc: 0},
 40318  	{FzName: ts + 25008, FxProc: 0},
 40319  	{FzName: ts + 25033, FxProc: 0},
 40320  	{FzName: ts + 25067, FxProc: 0},
 40321  }
 40322  
 40323  type Btree = Btree1
 40324  type BtCursor = BtCursor1
 40325  type BtShared = BtShared1
 40326  
 40327  type MemPage1 = struct {
 40328  	FisInit          u8
 40329  	FintKey          u8
 40330  	FintKeyLeaf      u8
 40331  	F__ccgo_pad1     [1]byte
 40332  	Fpgno            Pgno
 40333  	Fleaf            u8
 40334  	FhdrOffset       u8
 40335  	FchildPtrSize    u8
 40336  	Fmax1bytePayload u8
 40337  	FnOverflow       u8
 40338  	F__ccgo_pad2     [1]byte
 40339  	FmaxLocal        u16
 40340  	FminLocal        u16
 40341  	FcellOffset      u16
 40342  	FnFree           int32
 40343  	FnCell           u16
 40344  	FmaskPage        u16
 40345  	FaiOvfl          [4]u16
 40346  	F__ccgo_pad3     [4]byte
 40347  	FapOvfl          [4]uintptr
 40348  	FpBt             uintptr
 40349  	FaData           uintptr
 40350  	FaDataEnd        uintptr
 40351  	FaCellIdx        uintptr
 40352  	FaDataOfst       uintptr
 40353  	FpDbPage         uintptr
 40354  	FxCellSize       uintptr
 40355  	FxParseCell      uintptr
 40356  }
 40357  
 40358  type MemPage = MemPage1
 40359  type BtLock1 = struct {
 40360  	FpBtree      uintptr
 40361  	FiTable      Pgno
 40362  	FeLock       u8
 40363  	F__ccgo_pad1 [3]byte
 40364  	FpNext       uintptr
 40365  }
 40366  
 40367  type BtLock = BtLock1
 40368  type CellInfo1 = struct {
 40369  	FnKey     i64
 40370  	FpPayload uintptr
 40371  	FnPayload u32
 40372  	FnLocal   u16
 40373  	FnSize    u16
 40374  }
 40375  
 40376  type CellInfo = CellInfo1
 40377  
 40378  type IntegrityCk1 = struct {
 40379  	FpBt       uintptr
 40380  	FpPager    uintptr
 40381  	FaPgRef    uintptr
 40382  	FnPage     Pgno
 40383  	FmxErr     int32
 40384  	FnErr      int32
 40385  	FbOomFault int32
 40386  	FzPfx      uintptr
 40387  	Fv1        Pgno
 40388  	Fv2        int32
 40389  	FerrMsg    StrAccum
 40390  	Fheap      uintptr
 40391  	Fdb        uintptr
 40392  }
 40393  
 40394  type IntegrityCk = IntegrityCk1
 40395  
 40396  var sDb sqlite31
 40397  var nRefSqlite3 int32 = 0
 40398  
 40399  func btree_open(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 40400  	bp := tls.Alloc(188)
 40401  	defer tls.Free(188)
 40402  
 40403  	var rc int32
 40404  
 40405  	var n int32
 40406  	var zFilename uintptr
 40407  	if argc != 3 {
 40408  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 40409  			ts+25102, 0))
 40410  		return TCL_ERROR
 40411  	}
 40412  	if tcl.XTcl_GetInt(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 2*8)), bp+72) != 0 {
 40413  		return TCL_ERROR
 40414  	}
 40415  	nRefSqlite3++
 40416  	if nRefSqlite3 == 1 {
 40417  		sDb.FpVfs = sqlite3.Xsqlite3_vfs_find(tls, uintptr(0))
 40418  		sDb.Fmutex = sqlite3.Xsqlite3MutexAlloc(tls, SQLITE_MUTEX_RECURSIVE)
 40419  		sqlite3.Xsqlite3_mutex_enter(tls, sDb.Fmutex)
 40420  	}
 40421  	n = int32(libc.Xstrlen(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8))))
 40422  	zFilename = sqlite3.Xsqlite3_malloc(tls, n+2)
 40423  	if zFilename == uintptr(0) {
 40424  		return TCL_ERROR
 40425  	}
 40426  	libc.Xmemcpy(tls, zFilename, *(*uintptr)(unsafe.Pointer(argv + 1*8)), uint64(n+1))
 40427  	*(*uint8)(unsafe.Pointer(zFilename + uintptr(n+1))) = uint8(0)
 40428  	rc = sqlite3.Xsqlite3BtreeOpen(tls, sDb.FpVfs, zFilename, uintptr(unsafe.Pointer(&sDb)), bp+80, 0,
 40429  		SQLITE_OPEN_READWRITE|SQLITE_OPEN_CREATE|SQLITE_OPEN_MAIN_DB)
 40430  	sqlite3.Xsqlite3_free(tls, zFilename)
 40431  	if rc != SQLITE_OK {
 40432  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, sqlite3.Xsqlite3ErrName(tls, rc), 0))
 40433  		return TCL_ERROR
 40434  	}
 40435  	sqlite3.Xsqlite3BtreeSetCacheSize(tls, *(*uintptr)(unsafe.Pointer(bp + 80)), *(*int32)(unsafe.Pointer(bp + 72)))
 40436  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([100]uint8{})), bp+88, ts+9889, libc.VaList(bp+48, *(*uintptr)(unsafe.Pointer(bp + 80))))
 40437  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+56, bp+88, 0))
 40438  	return TCL_OK
 40439  }
 40440  
 40441  func btree_close(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 40442  	bp := tls.Alloc(48)
 40443  	defer tls.Free(48)
 40444  
 40445  	var pBt uintptr
 40446  	var rc int32
 40447  	if argc != 2 {
 40448  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 40449  			ts+24430, 0))
 40450  		return TCL_ERROR
 40451  	}
 40452  	pBt = sqlite3TestTextToPtr(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 40453  	rc = sqlite3.Xsqlite3BtreeClose(tls, pBt)
 40454  	if rc != SQLITE_OK {
 40455  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, sqlite3.Xsqlite3ErrName(tls, rc), 0))
 40456  		return TCL_ERROR
 40457  	}
 40458  	nRefSqlite3--
 40459  	if nRefSqlite3 == 0 {
 40460  		sqlite3.Xsqlite3_mutex_leave(tls, sDb.Fmutex)
 40461  		sqlite3.Xsqlite3_mutex_free(tls, sDb.Fmutex)
 40462  		sDb.Fmutex = uintptr(0)
 40463  		sDb.FpVfs = uintptr(0)
 40464  	}
 40465  	return TCL_OK
 40466  }
 40467  
 40468  func btree_begin_transaction(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 40469  	bp := tls.Alloc(48)
 40470  	defer tls.Free(48)
 40471  
 40472  	var pBt uintptr
 40473  	var rc int32
 40474  	if argc != 2 {
 40475  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 40476  			ts+24430, 0))
 40477  		return TCL_ERROR
 40478  	}
 40479  	pBt = sqlite3TestTextToPtr(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 40480  	sqlite3.Xsqlite3BtreeEnter(tls, pBt)
 40481  	rc = sqlite3.Xsqlite3BtreeBeginTrans(tls, pBt, 1, uintptr(0))
 40482  	sqlite3.Xsqlite3BtreeLeave(tls, pBt)
 40483  	if rc != SQLITE_OK {
 40484  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, sqlite3.Xsqlite3ErrName(tls, rc), 0))
 40485  		return TCL_ERROR
 40486  	}
 40487  	return TCL_OK
 40488  }
 40489  
 40490  func btree_pager_stats(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 40491  	bp := tls.Alloc(140)
 40492  	defer tls.Free(140)
 40493  
 40494  	var pBt uintptr
 40495  	var i int32
 40496  	var a uintptr
 40497  
 40498  	if argc != 2 {
 40499  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 40500  			ts+24430, 0))
 40501  		return TCL_ERROR
 40502  	}
 40503  	pBt = sqlite3TestTextToPtr(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 40504  
 40505  	sqlite3.Xsqlite3_mutex_enter(tls, (*sqlite31)(unsafe.Pointer((*Btree)(unsafe.Pointer(pBt)).Fdb)).Fmutex)
 40506  
 40507  	sqlite3.Xsqlite3BtreeEnter(tls, pBt)
 40508  	a = sqlite3.Xsqlite3PagerStats(tls, sqlite3.Xsqlite3BtreePager(tls, pBt))
 40509  	for i = 0; i < 11; i++ {
 40510  		tcl.XTcl_AppendElement(tls, interp, zName1[i])
 40511  		sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([100]uint8{})), bp+40, ts+1333, libc.VaList(bp+32, *(*int32)(unsafe.Pointer(a + uintptr(i)*4))))
 40512  		tcl.XTcl_AppendElement(tls, interp, bp+40)
 40513  	}
 40514  	sqlite3.Xsqlite3BtreeLeave(tls, pBt)
 40515  
 40516  	sqlite3.Xsqlite3_mutex_leave(tls, (*sqlite31)(unsafe.Pointer((*Btree)(unsafe.Pointer(pBt)).Fdb)).Fmutex)
 40517  	return TCL_OK
 40518  }
 40519  
 40520  var zName1 = [11]uintptr{
 40521  	ts + 24435, ts + 24439, ts + 18254, ts + 11809, ts + 9558, ts + 24444,
 40522  	ts + 24448, ts + 24452, ts + 24457, ts + 25126, ts + 25131,
 40523  }
 40524  
 40525  func btree_cursor(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 40526  	bp := tls.Alloc(110)
 40527  	defer tls.Free(110)
 40528  
 40529  	var pBt uintptr
 40530  
 40531  	var pCur uintptr
 40532  	var rc int32 = SQLITE_OK
 40533  
 40534  	if argc != 4 {
 40535  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 40536  			ts+25137, 0))
 40537  		return TCL_ERROR
 40538  	}
 40539  	pBt = sqlite3TestTextToPtr(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 40540  	if tcl.XTcl_GetInt(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 2*8)), bp+72) != 0 {
 40541  		return TCL_ERROR
 40542  	}
 40543  	if tcl.XTcl_GetBoolean(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 3*8)), bp+76) != 0 {
 40544  		return TCL_ERROR
 40545  	}
 40546  	if *(*int32)(unsafe.Pointer(bp + 76)) != 0 {
 40547  		*(*int32)(unsafe.Pointer(bp + 76)) = BTREE_WRCSR
 40548  	}
 40549  	pCur = tcl.XTcl_Alloc(tls, uint32(sqlite3.Xsqlite3BtreeCursorSize(tls)))
 40550  	libc.Xmemset(tls, pCur, 0, uint64(sqlite3.Xsqlite3BtreeCursorSize(tls)))
 40551  	sqlite3.Xsqlite3_mutex_enter(tls, (*sqlite31)(unsafe.Pointer((*Btree)(unsafe.Pointer(pBt)).Fdb)).Fmutex)
 40552  	sqlite3.Xsqlite3BtreeEnter(tls, pBt)
 40553  	rc = sqlite3.Xsqlite3BtreeLockTable(tls, pBt, *(*int32)(unsafe.Pointer(bp + 72)), libc.BoolUint8(!!(*(*int32)(unsafe.Pointer(bp + 76)) != 0)))
 40554  	if rc == SQLITE_OK {
 40555  		rc = sqlite3.Xsqlite3BtreeCursor(tls, pBt, uint32(*(*int32)(unsafe.Pointer(bp + 72))), *(*int32)(unsafe.Pointer(bp + 76)), uintptr(0), pCur)
 40556  	}
 40557  	sqlite3.Xsqlite3BtreeLeave(tls, pBt)
 40558  	sqlite3.Xsqlite3_mutex_leave(tls, (*sqlite31)(unsafe.Pointer((*Btree)(unsafe.Pointer(pBt)).Fdb)).Fmutex)
 40559  	if rc != 0 {
 40560  		tcl.XTcl_Free(tls, pCur)
 40561  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, sqlite3.Xsqlite3ErrName(tls, rc), 0))
 40562  		return TCL_ERROR
 40563  	}
 40564  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([30]uint8{})), bp+80, ts+9889, libc.VaList(bp+48, pCur))
 40565  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+56, bp+80, 0))
 40566  	return SQLITE_OK
 40567  }
 40568  
 40569  func btree_close_cursor(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 40570  	bp := tls.Alloc(48)
 40571  	defer tls.Free(48)
 40572  
 40573  	var pCur uintptr
 40574  	var rc int32
 40575  
 40576  	if argc != 2 {
 40577  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 40578  			ts+24430, 0))
 40579  		return TCL_ERROR
 40580  	}
 40581  	pCur = sqlite3TestTextToPtr(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 40582  	{
 40583  		var pBt uintptr = (*BtCursor)(unsafe.Pointer(pCur)).FpBtree
 40584  		sqlite3.Xsqlite3_mutex_enter(tls, (*sqlite31)(unsafe.Pointer((*Btree)(unsafe.Pointer(pBt)).Fdb)).Fmutex)
 40585  		sqlite3.Xsqlite3BtreeEnter(tls, pBt)
 40586  		rc = sqlite3.Xsqlite3BtreeCloseCursor(tls, pCur)
 40587  		sqlite3.Xsqlite3BtreeLeave(tls, pBt)
 40588  		sqlite3.Xsqlite3_mutex_leave(tls, (*sqlite31)(unsafe.Pointer((*Btree)(unsafe.Pointer(pBt)).Fdb)).Fmutex)
 40589  
 40590  	}
 40591  	tcl.XTcl_Free(tls, pCur)
 40592  	if rc != 0 {
 40593  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, sqlite3.Xsqlite3ErrName(tls, rc), 0))
 40594  		return TCL_ERROR
 40595  	}
 40596  	return SQLITE_OK
 40597  }
 40598  
 40599  func btree_next(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 40600  	bp := tls.Alloc(172)
 40601  	defer tls.Free(172)
 40602  
 40603  	var pCur uintptr
 40604  	var rc int32
 40605  	var res int32 = 0
 40606  
 40607  	if argc != 2 {
 40608  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 40609  			ts+24430, 0))
 40610  		return TCL_ERROR
 40611  	}
 40612  	pCur = sqlite3TestTextToPtr(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 40613  	sqlite3.Xsqlite3BtreeEnter(tls, (*BtCursor)(unsafe.Pointer(pCur)).FpBtree)
 40614  	rc = sqlite3.Xsqlite3BtreeNext(tls, pCur, 0)
 40615  	if rc == SQLITE_DONE {
 40616  		res = 1
 40617  		rc = SQLITE_OK
 40618  	}
 40619  	sqlite3.Xsqlite3BtreeLeave(tls, (*BtCursor)(unsafe.Pointer(pCur)).FpBtree)
 40620  	if rc != 0 {
 40621  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, sqlite3.Xsqlite3ErrName(tls, rc), 0))
 40622  		return TCL_ERROR
 40623  	}
 40624  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([100]uint8{})), bp+72, ts+1333, libc.VaList(bp+48, res))
 40625  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+56, bp+72, 0))
 40626  	return SQLITE_OK
 40627  }
 40628  
 40629  func btree_first(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 40630  	bp := tls.Alloc(176)
 40631  	defer tls.Free(176)
 40632  
 40633  	var pCur uintptr
 40634  	var rc int32
 40635  	*(*int32)(unsafe.Pointer(bp + 72)) = 0
 40636  
 40637  	if argc != 2 {
 40638  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 40639  			ts+24430, 0))
 40640  		return TCL_ERROR
 40641  	}
 40642  	pCur = sqlite3TestTextToPtr(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 40643  	sqlite3.Xsqlite3BtreeEnter(tls, (*BtCursor)(unsafe.Pointer(pCur)).FpBtree)
 40644  	rc = sqlite3.Xsqlite3BtreeFirst(tls, pCur, bp+72)
 40645  	sqlite3.Xsqlite3BtreeLeave(tls, (*BtCursor)(unsafe.Pointer(pCur)).FpBtree)
 40646  	if rc != 0 {
 40647  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, sqlite3.Xsqlite3ErrName(tls, rc), 0))
 40648  		return TCL_ERROR
 40649  	}
 40650  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([100]uint8{})), bp+76, ts+1333, libc.VaList(bp+48, *(*int32)(unsafe.Pointer(bp + 72))))
 40651  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+56, bp+76, 0))
 40652  	return SQLITE_OK
 40653  }
 40654  
 40655  func btree_eof(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 40656  	bp := tls.Alloc(106)
 40657  	defer tls.Free(106)
 40658  
 40659  	var pCur uintptr
 40660  	var rc int32
 40661  
 40662  	if argc != 2 {
 40663  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 40664  			ts+24430, 0))
 40665  		return TCL_ERROR
 40666  	}
 40667  	pCur = sqlite3TestTextToPtr(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 40668  	sqlite3.Xsqlite3BtreeEnter(tls, (*BtCursor)(unsafe.Pointer(pCur)).FpBtree)
 40669  	rc = sqlite3.Xsqlite3BtreeEof(tls, pCur)
 40670  	sqlite3.Xsqlite3BtreeLeave(tls, (*BtCursor)(unsafe.Pointer(pCur)).FpBtree)
 40671  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([50]uint8{})), bp+56, ts+1333, libc.VaList(bp+32, rc))
 40672  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+40, bp+56, 0))
 40673  	return SQLITE_OK
 40674  }
 40675  
 40676  func btree_payload_size(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 40677  	bp := tls.Alloc(106)
 40678  	defer tls.Free(106)
 40679  
 40680  	var pCur uintptr
 40681  	var n u32
 40682  
 40683  	if argc != 2 {
 40684  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 40685  			ts+24430, 0))
 40686  		return TCL_ERROR
 40687  	}
 40688  	pCur = sqlite3TestTextToPtr(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 40689  	sqlite3.Xsqlite3BtreeEnter(tls, (*BtCursor)(unsafe.Pointer(pCur)).FpBtree)
 40690  	n = sqlite3.Xsqlite3BtreePayloadSize(tls, pCur)
 40691  	sqlite3.Xsqlite3BtreeLeave(tls, (*BtCursor)(unsafe.Pointer(pCur)).FpBtree)
 40692  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([50]uint8{})), bp+56, ts+17791, libc.VaList(bp+32, n))
 40693  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+40, bp+56, 0))
 40694  	return SQLITE_OK
 40695  }
 40696  
 40697  func btree_varint_test(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 40698  	bp := tls.Alloc(516)
 40699  	defer tls.Free(516)
 40700  
 40701  	var in u64
 40702  
 40703  	var n1 int32
 40704  	var n2 int32
 40705  	var i int32
 40706  	var j int32
 40707  
 40708  	if argc != 5 {
 40709  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 40710  			ts+25161, 0))
 40711  		return TCL_ERROR
 40712  	}
 40713  	if tcl.XTcl_GetInt(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)), bp+184) != 0 {
 40714  		return TCL_ERROR
 40715  	}
 40716  	if tcl.XTcl_GetInt(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 2*8)), bp+188) != 0 {
 40717  		return TCL_ERROR
 40718  	}
 40719  	if tcl.XTcl_GetInt(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 3*8)), bp+192) != 0 {
 40720  		return TCL_ERROR
 40721  	}
 40722  	if tcl.XTcl_GetInt(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 4*8)), bp+196) != 0 {
 40723  		return TCL_ERROR
 40724  	}
 40725  	in = u64(*(*u32)(unsafe.Pointer(bp + 184)))
 40726  	in = in * u64(*(*u32)(unsafe.Pointer(bp + 188)))
 40727  	for i = 0; i < int32(*(*u32)(unsafe.Pointer(bp + 192))); i++ {
 40728  		n1 = sqlite3.Xsqlite3PutVarint(tls, bp+200, in)
 40729  		if n1 > 9 || n1 < 1 {
 40730  			sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([200]uint8{})), bp+300,
 40731  				ts+25196, libc.VaList(bp+32, n1))
 40732  			tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+40, bp+300, 0))
 40733  			return TCL_ERROR
 40734  		}
 40735  		n2 = int32(sqlite3.Xsqlite3GetVarint(tls, bp+200, bp+504))
 40736  		if n1 != n2 {
 40737  			sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([200]uint8{})), bp+300,
 40738  				ts+25246, libc.VaList(bp+56, n1, n2))
 40739  			tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+72, bp+300, 0))
 40740  			return TCL_ERROR
 40741  		}
 40742  		if in != *(*u64)(unsafe.Pointer(bp + 504)) {
 40743  			sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([200]uint8{})), bp+300,
 40744  				ts+25294, libc.VaList(bp+88, in, *(*u64)(unsafe.Pointer(bp + 504))))
 40745  			tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+104, bp+300, 0))
 40746  			return TCL_ERROR
 40747  		}
 40748  		if in&uint64(0xffffffff) == in {
 40749  			n2 = int32(func() uint8 {
 40750  				if int32(*(*uint8)(unsafe.Pointer(bp + 200))) < int32(u8(0x80)) {
 40751  					return uint8(func() int32 { *(*u32)(unsafe.Pointer(bp + 512)) = u32(*(*uint8)(unsafe.Pointer(bp + 200))); return 1 }())
 40752  				}
 40753  				return sqlite3.Xsqlite3GetVarint32(tls, bp+200, bp+512)
 40754  			}())
 40755  			*(*u64)(unsafe.Pointer(bp + 504)) = u64(*(*u32)(unsafe.Pointer(bp + 512)))
 40756  			if n1 != n2 {
 40757  				sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([200]uint8{})), bp+300,
 40758  					ts+25333,
 40759  					libc.VaList(bp+120, n1, n2))
 40760  				tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+136, bp+300, 0))
 40761  				return TCL_ERROR
 40762  			}
 40763  			if in != *(*u64)(unsafe.Pointer(bp + 504)) {
 40764  				sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([200]uint8{})), bp+300,
 40765  					ts+25383,
 40766  					libc.VaList(bp+152, in, *(*u64)(unsafe.Pointer(bp + 504))))
 40767  				tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+168, bp+300, 0))
 40768  				return TCL_ERROR
 40769  			}
 40770  		}
 40771  
 40772  		for j = 0; j < 19; j++ {
 40773  			sqlite3.Xsqlite3GetVarint(tls, bp+200, bp+504)
 40774  		}
 40775  		in = in + u64(*(*u32)(unsafe.Pointer(bp + 196)))
 40776  	}
 40777  	return TCL_OK
 40778  }
 40779  
 40780  func btree_from_db(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 40781  	bp := tls.Alloc(236)
 40782  	defer tls.Free(236)
 40783  
 40784  	var db uintptr
 40785  	var pBt uintptr
 40786  	var iDb int32 = 0
 40787  
 40788  	if argc != 2 && argc != 3 {
 40789  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 40790  			ts+25439, 0))
 40791  		return TCL_ERROR
 40792  	}
 40793  
 40794  	if 1 != tcl.XTcl_GetCommandInfo(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)), bp+72) {
 40795  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25455, *(*uintptr)(unsafe.Pointer(argv + 1*8)), ts+11945, 0))
 40796  		return TCL_ERROR
 40797  	}
 40798  	if argc == 3 {
 40799  		iDb = libc.Xatoi(tls, *(*uintptr)(unsafe.Pointer(argv + 2*8)))
 40800  	}
 40801  
 40802  	db = *(*uintptr)(unsafe.Pointer((*Tcl_CmdInfo)(unsafe.Pointer(bp + 72)).FobjClientData))
 40803  
 40804  	pBt = (*Db)(unsafe.Pointer((*sqlite31)(unsafe.Pointer(db)).FaDb + uintptr(iDb)*32)).FpBt
 40805  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([100]uint8{})), bp+136, ts+9889, libc.VaList(bp+64, pBt))
 40806  	tcl.XTcl_SetResult(tls, interp, bp+136, uintptr(1))
 40807  	return TCL_OK
 40808  }
 40809  
 40810  func btree_ismemdb(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 40811  	bp := tls.Alloc(32)
 40812  	defer tls.Free(32)
 40813  
 40814  	var pBt uintptr
 40815  	var res int32
 40816  	var pFile uintptr
 40817  
 40818  	if argc != 2 {
 40819  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 40820  			ts+24430, 0))
 40821  		return TCL_ERROR
 40822  	}
 40823  	pBt = sqlite3TestTextToPtr(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 40824  	sqlite3.Xsqlite3_mutex_enter(tls, (*sqlite31)(unsafe.Pointer((*Btree)(unsafe.Pointer(pBt)).Fdb)).Fmutex)
 40825  	sqlite3.Xsqlite3BtreeEnter(tls, pBt)
 40826  	pFile = sqlite3.Xsqlite3PagerFile(tls, sqlite3.Xsqlite3BtreePager(tls, pBt))
 40827  	res = libc.Bool32((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods == uintptr(0))
 40828  	sqlite3.Xsqlite3BtreeLeave(tls, pBt)
 40829  	sqlite3.Xsqlite3_mutex_leave(tls, (*sqlite31)(unsafe.Pointer((*Btree)(unsafe.Pointer(pBt)).Fdb)).Fmutex)
 40830  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, libc.Bool32(res != 0)))
 40831  	return SQLITE_OK
 40832  }
 40833  
 40834  func btree_set_cache_size(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 40835  	bp := tls.Alloc(36)
 40836  	defer tls.Free(36)
 40837  
 40838  	var pBt uintptr
 40839  
 40840  	if argc != 3 {
 40841  		tcl.XTcl_AppendResult(tls,
 40842  			interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)), ts+25476, 0))
 40843  		return TCL_ERROR
 40844  	}
 40845  	pBt = sqlite3TestTextToPtr(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 40846  	if tcl.XTcl_GetInt(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 2*8)), bp+32) != 0 {
 40847  		return TCL_ERROR
 40848  	}
 40849  
 40850  	sqlite3.Xsqlite3_mutex_enter(tls, (*sqlite31)(unsafe.Pointer((*Btree)(unsafe.Pointer(pBt)).Fdb)).Fmutex)
 40851  	sqlite3.Xsqlite3BtreeEnter(tls, pBt)
 40852  	sqlite3.Xsqlite3BtreeSetCacheSize(tls, pBt, *(*int32)(unsafe.Pointer(bp + 32)))
 40853  	sqlite3.Xsqlite3BtreeLeave(tls, pBt)
 40854  	sqlite3.Xsqlite3_mutex_leave(tls, (*sqlite31)(unsafe.Pointer((*Btree)(unsafe.Pointer(pBt)).Fdb)).Fmutex)
 40855  	return TCL_OK
 40856  }
 40857  
 40858  func btree_insert(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 40859  	bp := tls.Alloc(68)
 40860  	defer tls.Free(68)
 40861  
 40862  	var pCur uintptr
 40863  
 40864  	if objc != 4 && objc != 3 {
 40865  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+25488)
 40866  		return TCL_ERROR
 40867  	}
 40868  
 40869  	libc.Xmemset(tls, bp+16, 0, uint64(unsafe.Sizeof(BtreePayload{})))
 40870  	if objc == 4 {
 40871  		if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+64) != 0 {
 40872  			return TCL_ERROR
 40873  		}
 40874  		(*BtreePayload)(unsafe.Pointer(bp + 16)).FnKey = sqlite3_int64(*(*int32)(unsafe.Pointer(bp + 64)))
 40875  		(*BtreePayload)(unsafe.Pointer(bp + 16)).FpData = tcl.XTcl_GetByteArrayFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+16+36)
 40876  	} else {
 40877  		(*BtreePayload)(unsafe.Pointer(bp + 16)).FpKey = tcl.XTcl_GetByteArrayFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+64)
 40878  		(*BtreePayload)(unsafe.Pointer(bp + 16)).FnKey = sqlite3_int64(*(*int32)(unsafe.Pointer(bp + 64)))
 40879  	}
 40880  	pCur = sqlite3TestTextToPtr(tls, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))))
 40881  
 40882  	sqlite3.Xsqlite3_mutex_enter(tls, (*sqlite31)(unsafe.Pointer((*Btree)(unsafe.Pointer((*BtCursor)(unsafe.Pointer(pCur)).FpBtree)).Fdb)).Fmutex)
 40883  	sqlite3.Xsqlite3BtreeEnter(tls, (*BtCursor)(unsafe.Pointer(pCur)).FpBtree)
 40884  	*(*int32)(unsafe.Pointer(bp + 64)) = sqlite3.Xsqlite3BtreeInsert(tls, pCur, bp+16, 0, 0)
 40885  	sqlite3.Xsqlite3BtreeLeave(tls, (*BtCursor)(unsafe.Pointer(pCur)).FpBtree)
 40886  	sqlite3.Xsqlite3_mutex_leave(tls, (*sqlite31)(unsafe.Pointer((*Btree)(unsafe.Pointer((*BtCursor)(unsafe.Pointer(pCur)).FpBtree)).Fdb)).Fmutex)
 40887  
 40888  	tcl.XTcl_ResetResult(tls, interp)
 40889  	if *(*int32)(unsafe.Pointer(bp + 64)) != 0 {
 40890  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, sqlite3.Xsqlite3ErrName(tls, *(*int32)(unsafe.Pointer(bp + 64))), 0))
 40891  		return TCL_ERROR
 40892  	}
 40893  	return TCL_OK
 40894  }
 40895  
 40896  func Sqlitetest3_Init(tls *libc.TLS, interp uintptr) int32 {
 40897  	var i int32
 40898  
 40899  	for i = 0; uint64(i) < uint64(unsafe.Sizeof(aCmd3))/uint64(unsafe.Sizeof(struct {
 40900  		FzName uintptr
 40901  		FxProc uintptr
 40902  	}{})); i++ {
 40903  		tcl.XTcl_CreateCommand(tls, interp, aCmd3[i].FzName, aCmd3[i].FxProc, uintptr(0), uintptr(0))
 40904  	}
 40905  
 40906  	tcl.XTcl_CreateObjCommand(tls, interp, ts+25512, *(*uintptr)(unsafe.Pointer(&struct {
 40907  		f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
 40908  	}{btree_insert})), uintptr(0), uintptr(0))
 40909  
 40910  	return TCL_OK
 40911  }
 40912  
 40913  var aCmd3 = [14]struct {
 40914  	FzName uintptr
 40915  	FxProc uintptr
 40916  }{
 40917  	{FzName: ts + 25525, FxProc: 0},
 40918  	{FzName: ts + 25536, FxProc: 0},
 40919  	{FzName: ts + 25548, FxProc: 0},
 40920  	{FzName: ts + 25572, FxProc: 0},
 40921  	{FzName: ts + 25590, FxProc: 0},
 40922  	{FzName: ts + 25603, FxProc: 0},
 40923  	{FzName: ts + 25622, FxProc: 0},
 40924  	{FzName: ts + 25633, FxProc: 0},
 40925  	{FzName: ts + 25643, FxProc: 0},
 40926  	{FzName: ts + 25662, FxProc: 0},
 40927  	{FzName: ts + 25674, FxProc: 0},
 40928  	{FzName: ts + 25692, FxProc: 0},
 40929  	{FzName: ts + 25706, FxProc: 0},
 40930  	{FzName: ts + 25720, FxProc: 0},
 40931  }
 40932  
 40933  type sched_param = struct{ Fsched_priority int32 }
 40934  
 40935  type cpu_set_t = struct{ F__bits [16]uint64 }
 40936  
 40937  type _pthread_cleanup_buffer = struct {
 40938  	F__routine    uintptr
 40939  	F__arg        uintptr
 40940  	F__canceltype int32
 40941  	F__ccgo_pad1  [4]byte
 40942  	F__prev       uintptr
 40943  }
 40944  
 40945  type __pthread_cleanup_frame = struct {
 40946  	F__cancel_routine uintptr
 40947  	F__cancel_arg     uintptr
 40948  	F__do_it          int32
 40949  	F__cancel_type    int32
 40950  }
 40951  
 40952  type Thread = struct {
 40953  	FzFilename   uintptr
 40954  	FxOp         uintptr
 40955  	FzArg        uintptr
 40956  	Fopnum       int32
 40957  	Fbusy        int32
 40958  	Fcompleted   int32
 40959  	F__ccgo_pad1 [4]byte
 40960  	Fdb          uintptr
 40961  	FpStmt       uintptr
 40962  	FzErr        uintptr
 40963  	FzStaticErr  uintptr
 40964  	Frc          int32
 40965  	Fargc        int32
 40966  	Fargv        [100]uintptr
 40967  	Fcolv        [100]uintptr
 40968  }
 40969  
 40970  var threadset [26]Thread
 40971  
 40972  func test_barrier(tls *libc.TLS) {
 40973  	var pMutex uintptr = sqlite3.Xsqlite3_mutex_alloc(tls, SQLITE_MUTEX_STATIC_APP1)
 40974  	sqlite3.Xsqlite3_mutex_enter(tls, pMutex)
 40975  	sqlite3.Xsqlite3_mutex_leave(tls, pMutex)
 40976  }
 40977  
 40978  func test_thread_main(tls *libc.TLS, pArg uintptr) uintptr {
 40979  	var p uintptr = pArg
 40980  	if (*Thread)(unsafe.Pointer(p)).Fdb != 0 {
 40981  		sqlite3.Xsqlite3_close(tls, (*Thread)(unsafe.Pointer(p)).Fdb)
 40982  	}
 40983  	sqlite3.Xsqlite3_open(tls, (*Thread)(unsafe.Pointer(p)).FzFilename, p+40)
 40984  	if SQLITE_OK != sqlite3.Xsqlite3_errcode(tls, (*Thread)(unsafe.Pointer(p)).Fdb) {
 40985  		(*Thread)(unsafe.Pointer(p)).FzErr = libc.Xstrdup(tls, sqlite3.Xsqlite3_errmsg(tls, (*Thread)(unsafe.Pointer(p)).Fdb))
 40986  		sqlite3.Xsqlite3_close(tls, (*Thread)(unsafe.Pointer(p)).Fdb)
 40987  		(*Thread)(unsafe.Pointer(p)).Fdb = uintptr(0)
 40988  	}
 40989  	(*Thread)(unsafe.Pointer(p)).FpStmt = uintptr(0)
 40990  	test_barrier(tls)
 40991  	(*Thread)(unsafe.Pointer(p)).Fcompleted = 1
 40992  	for (*Thread)(unsafe.Pointer(p)).Fopnum <= (*Thread)(unsafe.Pointer(p)).Fcompleted {
 40993  		libc.Xsched_yield(tls)
 40994  	}
 40995  	test_barrier(tls)
 40996  	for (*Thread)(unsafe.Pointer(p)).FxOp != 0 {
 40997  		if (*Thread)(unsafe.Pointer(p)).FzErr != 0 && (*Thread)(unsafe.Pointer(p)).FzErr != (*Thread)(unsafe.Pointer(p)).FzStaticErr {
 40998  			sqlite3.Xsqlite3_free(tls, (*Thread)(unsafe.Pointer(p)).FzErr)
 40999  			(*Thread)(unsafe.Pointer(p)).FzErr = uintptr(0)
 41000  		}
 41001  		(*struct{ f func(*libc.TLS, uintptr) })(unsafe.Pointer(&struct{ uintptr }{(*Thread)(unsafe.Pointer(p)).FxOp})).f(tls, p)
 41002  		test_barrier(tls)
 41003  		(*Thread)(unsafe.Pointer(p)).Fcompleted++
 41004  		for (*Thread)(unsafe.Pointer(p)).Fopnum <= (*Thread)(unsafe.Pointer(p)).Fcompleted {
 41005  			libc.Xsched_yield(tls)
 41006  		}
 41007  		test_barrier(tls)
 41008  	}
 41009  	if (*Thread)(unsafe.Pointer(p)).FpStmt != 0 {
 41010  		sqlite3.Xsqlite3_finalize(tls, (*Thread)(unsafe.Pointer(p)).FpStmt)
 41011  		(*Thread)(unsafe.Pointer(p)).FpStmt = uintptr(0)
 41012  	}
 41013  	if (*Thread)(unsafe.Pointer(p)).Fdb != 0 {
 41014  		sqlite3.Xsqlite3_close(tls, (*Thread)(unsafe.Pointer(p)).Fdb)
 41015  		(*Thread)(unsafe.Pointer(p)).Fdb = uintptr(0)
 41016  	}
 41017  	if (*Thread)(unsafe.Pointer(p)).FzErr != 0 && (*Thread)(unsafe.Pointer(p)).FzErr != (*Thread)(unsafe.Pointer(p)).FzStaticErr {
 41018  		sqlite3.Xsqlite3_free(tls, (*Thread)(unsafe.Pointer(p)).FzErr)
 41019  		(*Thread)(unsafe.Pointer(p)).FzErr = uintptr(0)
 41020  	}
 41021  	test_barrier(tls)
 41022  	(*Thread)(unsafe.Pointer(p)).Fcompleted++
 41023  	sqlite3.Xsqlite3_thread_cleanup(tls)
 41024  	return uintptr(0)
 41025  }
 41026  
 41027  func parse_thread_id(tls *libc.TLS, interp uintptr, zArg uintptr) int32 {
 41028  	bp := tls.Alloc(16)
 41029  	defer tls.Free(16)
 41030  
 41031  	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) {
 41032  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+25741, 0))
 41033  		return -1
 41034  	}
 41035  	return int32(*(*uint8)(unsafe.Pointer(zArg))) - 'A'
 41036  }
 41037  
 41038  func tcl_thread_create(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 41039  	bp := tls.Alloc(96)
 41040  	defer tls.Free(96)
 41041  
 41042  	var i int32
 41043  
 41044  	var rc int32
 41045  
 41046  	if argc != 3 {
 41047  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 41048  			ts+25780, 0))
 41049  		return TCL_ERROR
 41050  	}
 41051  	i = parse_thread_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 41052  	if i < 0 {
 41053  		return TCL_ERROR
 41054  	}
 41055  	if threadset[i].Fbusy != 0 {
 41056  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25793, *(*uintptr)(unsafe.Pointer(argv + 1*8)), ts+25801, 0))
 41057  		return TCL_ERROR
 41058  	}
 41059  	threadset[i].Fbusy = 1
 41060  	sqlite3.Xsqlite3_free(tls, threadset[i].FzFilename)
 41061  	threadset[i].FzFilename = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp+64, *(*uintptr)(unsafe.Pointer(argv + 2*8))))
 41062  	threadset[i].Fopnum = 1
 41063  	threadset[i].Fcompleted = 0
 41064  	rc = libc.Xpthread_create(tls, bp+88, uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 41065  		f func(*libc.TLS, uintptr) uintptr
 41066  	}{test_thread_main})), uintptr(unsafe.Pointer(&threadset))+uintptr(i)*1680)
 41067  	if rc != 0 {
 41068  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+72, ts+25821, 0))
 41069  		sqlite3.Xsqlite3_free(tls, threadset[i].FzFilename)
 41070  		threadset[i].Fbusy = 0
 41071  		return TCL_ERROR
 41072  	}
 41073  	libc.Xpthread_detach(tls, *(*pthread_t)(unsafe.Pointer(bp + 88)))
 41074  	return TCL_OK
 41075  }
 41076  
 41077  func test_thread_wait(tls *libc.TLS, p uintptr) {
 41078  	test_barrier(tls)
 41079  	for (*Thread)(unsafe.Pointer(p)).Fopnum > (*Thread)(unsafe.Pointer(p)).Fcompleted {
 41080  		libc.Xsched_yield(tls)
 41081  	}
 41082  	test_barrier(tls)
 41083  }
 41084  
 41085  func tcl_thread_wait(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 41086  	bp := tls.Alloc(48)
 41087  	defer tls.Free(48)
 41088  
 41089  	var i int32
 41090  
 41091  	if argc != 2 {
 41092  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 41093  			ts+25849, 0))
 41094  		return TCL_ERROR
 41095  	}
 41096  	i = parse_thread_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 41097  	if i < 0 {
 41098  		return TCL_ERROR
 41099  	}
 41100  	if !(threadset[i].Fbusy != 0) {
 41101  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25853, 0))
 41102  		return TCL_ERROR
 41103  	}
 41104  	test_thread_wait(tls, uintptr(unsafe.Pointer(&threadset))+uintptr(i)*1680)
 41105  	return TCL_OK
 41106  }
 41107  
 41108  func test_stop_thread(tls *libc.TLS, p uintptr) {
 41109  	test_thread_wait(tls, p)
 41110  	(*Thread)(unsafe.Pointer(p)).FxOp = uintptr(0)
 41111  	(*Thread)(unsafe.Pointer(p)).Fopnum++
 41112  	test_thread_wait(tls, p)
 41113  	sqlite3.Xsqlite3_free(tls, (*Thread)(unsafe.Pointer(p)).FzArg)
 41114  	(*Thread)(unsafe.Pointer(p)).FzArg = uintptr(0)
 41115  	sqlite3.Xsqlite3_free(tls, (*Thread)(unsafe.Pointer(p)).FzFilename)
 41116  	(*Thread)(unsafe.Pointer(p)).FzFilename = uintptr(0)
 41117  	(*Thread)(unsafe.Pointer(p)).Fbusy = 0
 41118  }
 41119  
 41120  func tcl_thread_halt(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 41121  	bp := tls.Alloc(48)
 41122  	defer tls.Free(48)
 41123  
 41124  	var i int32
 41125  
 41126  	if argc != 2 {
 41127  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 41128  			ts+25849, 0))
 41129  		return TCL_ERROR
 41130  	}
 41131  	if int32(*(*uint8)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(argv + 1*8))))) == '*' && int32(*(*uint8)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(argv + 1*8)) + 1))) == 0 {
 41132  		for i = 0; i < N_THREAD; i++ {
 41133  			if threadset[i].Fbusy != 0 {
 41134  				test_stop_thread(tls, uintptr(unsafe.Pointer(&threadset))+uintptr(i)*1680)
 41135  			}
 41136  		}
 41137  	} else {
 41138  		i = parse_thread_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 41139  		if i < 0 {
 41140  			return TCL_ERROR
 41141  		}
 41142  		if !(threadset[i].Fbusy != 0) {
 41143  			tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25853, 0))
 41144  			return TCL_ERROR
 41145  		}
 41146  		test_stop_thread(tls, uintptr(unsafe.Pointer(&threadset))+uintptr(i)*1680)
 41147  	}
 41148  	return TCL_OK
 41149  }
 41150  
 41151  func tcl_thread_argc(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 41152  	bp := tls.Alloc(172)
 41153  	defer tls.Free(172)
 41154  
 41155  	var i int32
 41156  
 41157  	if argc != 2 {
 41158  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 41159  			ts+25849, 0))
 41160  		return TCL_ERROR
 41161  	}
 41162  	i = parse_thread_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 41163  	if i < 0 {
 41164  		return TCL_ERROR
 41165  	}
 41166  	if !(threadset[i].Fbusy != 0) {
 41167  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25853, 0))
 41168  		return TCL_ERROR
 41169  	}
 41170  	test_thread_wait(tls, uintptr(unsafe.Pointer(&threadset))+uintptr(i)*1680)
 41171  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([100]uint8{})), bp+72, ts+1333, libc.VaList(bp+48, threadset[i].Fargc))
 41172  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+56, bp+72, 0))
 41173  	return TCL_OK
 41174  }
 41175  
 41176  func tcl_thread_argv(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 41177  	bp := tls.Alloc(84)
 41178  	defer tls.Free(84)
 41179  
 41180  	var i int32
 41181  
 41182  	if argc != 3 {
 41183  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 41184  			ts+25868, 0))
 41185  		return TCL_ERROR
 41186  	}
 41187  	i = parse_thread_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 41188  	if i < 0 {
 41189  		return TCL_ERROR
 41190  	}
 41191  	if !(threadset[i].Fbusy != 0) {
 41192  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25853, 0))
 41193  		return TCL_ERROR
 41194  	}
 41195  	if tcl.XTcl_GetInt(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 2*8)), bp+80) != 0 {
 41196  		return TCL_ERROR
 41197  	}
 41198  	test_thread_wait(tls, uintptr(unsafe.Pointer(&threadset))+uintptr(i)*1680)
 41199  	if *(*int32)(unsafe.Pointer(bp + 80)) < 0 || *(*int32)(unsafe.Pointer(bp + 80)) >= threadset[i].Fargc {
 41200  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+48, ts+25874, 0))
 41201  		return TCL_ERROR
 41202  	}
 41203  	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))
 41204  	return TCL_OK
 41205  }
 41206  
 41207  func tcl_thread_colname(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 41208  	bp := tls.Alloc(84)
 41209  	defer tls.Free(84)
 41210  
 41211  	var i int32
 41212  
 41213  	if argc != 3 {
 41214  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 41215  			ts+25868, 0))
 41216  		return TCL_ERROR
 41217  	}
 41218  	i = parse_thread_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 41219  	if i < 0 {
 41220  		return TCL_ERROR
 41221  	}
 41222  	if !(threadset[i].Fbusy != 0) {
 41223  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25853, 0))
 41224  		return TCL_ERROR
 41225  	}
 41226  	if tcl.XTcl_GetInt(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 2*8)), bp+80) != 0 {
 41227  		return TCL_ERROR
 41228  	}
 41229  	test_thread_wait(tls, uintptr(unsafe.Pointer(&threadset))+uintptr(i)*1680)
 41230  	if *(*int32)(unsafe.Pointer(bp + 80)) < 0 || *(*int32)(unsafe.Pointer(bp + 80)) >= threadset[i].Fargc {
 41231  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+48, ts+25874, 0))
 41232  		return TCL_ERROR
 41233  	}
 41234  	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))
 41235  	return TCL_OK
 41236  }
 41237  
 41238  func tcl_thread_result(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 41239  	bp := tls.Alloc(64)
 41240  	defer tls.Free(64)
 41241  
 41242  	var i int32
 41243  	var zName uintptr
 41244  
 41245  	if argc != 2 {
 41246  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 41247  			ts+25849, 0))
 41248  		return TCL_ERROR
 41249  	}
 41250  	i = parse_thread_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 41251  	if i < 0 {
 41252  		return TCL_ERROR
 41253  	}
 41254  	if !(threadset[i].Fbusy != 0) {
 41255  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25853, 0))
 41256  		return TCL_ERROR
 41257  	}
 41258  	test_thread_wait(tls, uintptr(unsafe.Pointer(&threadset))+uintptr(i)*1680)
 41259  	zName = sqlite3.Xsqlite3ErrName(tls, threadset[i].Frc)
 41260  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+48, zName, 0))
 41261  	return TCL_OK
 41262  }
 41263  
 41264  func tcl_thread_error(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 41265  	bp := tls.Alloc(64)
 41266  	defer tls.Free(64)
 41267  
 41268  	var i int32
 41269  
 41270  	if argc != 2 {
 41271  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 41272  			ts+25849, 0))
 41273  		return TCL_ERROR
 41274  	}
 41275  	i = parse_thread_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 41276  	if i < 0 {
 41277  		return TCL_ERROR
 41278  	}
 41279  	if !(threadset[i].Fbusy != 0) {
 41280  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25853, 0))
 41281  		return TCL_ERROR
 41282  	}
 41283  	test_thread_wait(tls, uintptr(unsafe.Pointer(&threadset))+uintptr(i)*1680)
 41284  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+48, threadset[i].FzErr, 0))
 41285  	return TCL_OK
 41286  }
 41287  
 41288  func do_compile(tls *libc.TLS, p uintptr) {
 41289  	if (*Thread)(unsafe.Pointer(p)).Fdb == uintptr(0) {
 41290  		(*Thread)(unsafe.Pointer(p)).FzErr = libc.AssignPtrUintptr(p+64, ts+25901)
 41291  		(*Thread)(unsafe.Pointer(p)).Frc = SQLITE_ERROR
 41292  		return
 41293  	}
 41294  	if (*Thread)(unsafe.Pointer(p)).FpStmt != 0 {
 41295  		sqlite3.Xsqlite3_finalize(tls, (*Thread)(unsafe.Pointer(p)).FpStmt)
 41296  		(*Thread)(unsafe.Pointer(p)).FpStmt = uintptr(0)
 41297  	}
 41298  	(*Thread)(unsafe.Pointer(p)).Frc = sqlite3.Xsqlite3_prepare(tls, (*Thread)(unsafe.Pointer(p)).Fdb, (*Thread)(unsafe.Pointer(p)).FzArg, -1, p+48, uintptr(0))
 41299  }
 41300  
 41301  func tcl_thread_compile(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 41302  	bp := tls.Alloc(56)
 41303  	defer tls.Free(56)
 41304  
 41305  	var i int32
 41306  	if argc != 3 {
 41307  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 41308  			ts+25921, 0))
 41309  		return TCL_ERROR
 41310  	}
 41311  	i = parse_thread_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 41312  	if i < 0 {
 41313  		return TCL_ERROR
 41314  	}
 41315  	if !(threadset[i].Fbusy != 0) {
 41316  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25853, 0))
 41317  		return TCL_ERROR
 41318  	}
 41319  	test_thread_wait(tls, uintptr(unsafe.Pointer(&threadset))+uintptr(i)*1680)
 41320  	threadset[i].FxOp = *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{do_compile}))
 41321  	sqlite3.Xsqlite3_free(tls, threadset[i].FzArg)
 41322  	threadset[i].FzArg = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp+48, *(*uintptr)(unsafe.Pointer(argv + 2*8))))
 41323  	test_barrier(tls)
 41324  	threadset[i].Fopnum++
 41325  	return TCL_OK
 41326  }
 41327  
 41328  func do_step(tls *libc.TLS, p uintptr) {
 41329  	var i int32
 41330  	if (*Thread)(unsafe.Pointer(p)).FpStmt == uintptr(0) {
 41331  		(*Thread)(unsafe.Pointer(p)).FzErr = libc.AssignPtrUintptr(p+64, ts+25929)
 41332  		(*Thread)(unsafe.Pointer(p)).Frc = SQLITE_ERROR
 41333  		return
 41334  	}
 41335  	(*Thread)(unsafe.Pointer(p)).Frc = sqlite3.Xsqlite3_step(tls, (*Thread)(unsafe.Pointer(p)).FpStmt)
 41336  	if (*Thread)(unsafe.Pointer(p)).Frc == SQLITE_ROW {
 41337  		(*Thread)(unsafe.Pointer(p)).Fargc = sqlite3.Xsqlite3_column_count(tls, (*Thread)(unsafe.Pointer(p)).FpStmt)
 41338  		for i = 0; i < sqlite3.Xsqlite3_data_count(tls, (*Thread)(unsafe.Pointer(p)).FpStmt); i++ {
 41339  			*(*uintptr)(unsafe.Pointer(p + 80 + uintptr(i)*8)) = sqlite3.Xsqlite3_column_text(tls, (*Thread)(unsafe.Pointer(p)).FpStmt, i)
 41340  		}
 41341  		for i = 0; i < (*Thread)(unsafe.Pointer(p)).Fargc; i++ {
 41342  			*(*uintptr)(unsafe.Pointer(p + 880 + uintptr(i)*8)) = sqlite3.Xsqlite3_column_name(tls, (*Thread)(unsafe.Pointer(p)).FpStmt, i)
 41343  		}
 41344  	}
 41345  }
 41346  
 41347  func tcl_thread_step(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 41348  	bp := tls.Alloc(48)
 41349  	defer tls.Free(48)
 41350  
 41351  	var i int32
 41352  	if argc != 2 {
 41353  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 41354  			ts+25958, 0))
 41355  		return TCL_ERROR
 41356  	}
 41357  	i = parse_thread_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 41358  	if i < 0 {
 41359  		return TCL_ERROR
 41360  	}
 41361  	if !(threadset[i].Fbusy != 0) {
 41362  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25853, 0))
 41363  		return TCL_ERROR
 41364  	}
 41365  	test_thread_wait(tls, uintptr(unsafe.Pointer(&threadset))+uintptr(i)*1680)
 41366  	threadset[i].FxOp = *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{do_step}))
 41367  	test_barrier(tls)
 41368  	threadset[i].Fopnum++
 41369  	return TCL_OK
 41370  }
 41371  
 41372  func do_finalize(tls *libc.TLS, p uintptr) {
 41373  	if (*Thread)(unsafe.Pointer(p)).FpStmt == uintptr(0) {
 41374  		(*Thread)(unsafe.Pointer(p)).FzErr = libc.AssignPtrUintptr(p+64, ts+25929)
 41375  		(*Thread)(unsafe.Pointer(p)).Frc = SQLITE_ERROR
 41376  		return
 41377  	}
 41378  	(*Thread)(unsafe.Pointer(p)).Frc = sqlite3.Xsqlite3_finalize(tls, (*Thread)(unsafe.Pointer(p)).FpStmt)
 41379  	(*Thread)(unsafe.Pointer(p)).FpStmt = uintptr(0)
 41380  }
 41381  
 41382  func tcl_thread_finalize(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 41383  	bp := tls.Alloc(48)
 41384  	defer tls.Free(48)
 41385  
 41386  	var i int32
 41387  	if argc != 2 {
 41388  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 41389  			ts+25958, 0))
 41390  		return TCL_ERROR
 41391  	}
 41392  	i = parse_thread_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 41393  	if i < 0 {
 41394  		return TCL_ERROR
 41395  	}
 41396  	if !(threadset[i].Fbusy != 0) {
 41397  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25853, 0))
 41398  		return TCL_ERROR
 41399  	}
 41400  	test_thread_wait(tls, uintptr(unsafe.Pointer(&threadset))+uintptr(i)*1680)
 41401  	threadset[i].FxOp = *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{do_finalize}))
 41402  	sqlite3.Xsqlite3_free(tls, threadset[i].FzArg)
 41403  	threadset[i].FzArg = uintptr(0)
 41404  	test_barrier(tls)
 41405  	threadset[i].Fopnum++
 41406  	return TCL_OK
 41407  }
 41408  
 41409  func tcl_thread_swap(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 41410  	bp := tls.Alloc(64)
 41411  	defer tls.Free(64)
 41412  
 41413  	var i int32
 41414  	var j int32
 41415  	var temp uintptr
 41416  	if argc != 3 {
 41417  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 41418  			ts+25963, 0))
 41419  		return TCL_ERROR
 41420  	}
 41421  	i = parse_thread_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 41422  	if i < 0 {
 41423  		return TCL_ERROR
 41424  	}
 41425  	if !(threadset[i].Fbusy != 0) {
 41426  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25853, 0))
 41427  		return TCL_ERROR
 41428  	}
 41429  	test_thread_wait(tls, uintptr(unsafe.Pointer(&threadset))+uintptr(i)*1680)
 41430  	j = parse_thread_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 2*8)))
 41431  	if j < 0 {
 41432  		return TCL_ERROR
 41433  	}
 41434  	if !(threadset[j].Fbusy != 0) {
 41435  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+48, ts+25853, 0))
 41436  		return TCL_ERROR
 41437  	}
 41438  	test_thread_wait(tls, uintptr(unsafe.Pointer(&threadset))+uintptr(j)*1680)
 41439  	temp = threadset[i].Fdb
 41440  	threadset[i].Fdb = threadset[j].Fdb
 41441  	threadset[j].Fdb = temp
 41442  	return TCL_OK
 41443  }
 41444  
 41445  func tcl_thread_db_get(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 41446  	bp := tls.Alloc(164)
 41447  	defer tls.Free(164)
 41448  
 41449  	var i int32
 41450  
 41451  	if argc != 2 {
 41452  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 41453  			ts+25849, 0))
 41454  		return TCL_ERROR
 41455  	}
 41456  	i = parse_thread_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 41457  	if i < 0 {
 41458  		return TCL_ERROR
 41459  	}
 41460  	if !(threadset[i].Fbusy != 0) {
 41461  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25853, 0))
 41462  		return TCL_ERROR
 41463  	}
 41464  	test_thread_wait(tls, uintptr(unsafe.Pointer(&threadset))+uintptr(i)*1680)
 41465  	sqlite3TestMakePointerStr(tls, interp, bp+64, threadset[i].Fdb)
 41466  	threadset[i].Fdb = uintptr(0)
 41467  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+48, bp+64, uintptr(0)))
 41468  	return TCL_OK
 41469  }
 41470  
 41471  func tcl_thread_db_put(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 41472  	bp := tls.Alloc(48)
 41473  	defer tls.Free(48)
 41474  
 41475  	var i int32
 41476  	if argc != 3 {
 41477  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 41478  			ts+25972, 0))
 41479  		return TCL_ERROR
 41480  	}
 41481  	i = parse_thread_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 41482  	if i < 0 {
 41483  		return TCL_ERROR
 41484  	}
 41485  	if !(threadset[i].Fbusy != 0) {
 41486  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25853, 0))
 41487  		return TCL_ERROR
 41488  	}
 41489  	test_thread_wait(tls, uintptr(unsafe.Pointer(&threadset))+uintptr(i)*1680)
 41490  
 41491  	threadset[i].Fdb = sqlite3TestTextToPtr(tls, *(*uintptr)(unsafe.Pointer(argv + 2*8)))
 41492  	return TCL_OK
 41493  }
 41494  
 41495  func tcl_thread_stmt_get(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 41496  	bp := tls.Alloc(164)
 41497  	defer tls.Free(164)
 41498  
 41499  	var i int32
 41500  
 41501  	if argc != 2 {
 41502  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 41503  			ts+25849, 0))
 41504  		return TCL_ERROR
 41505  	}
 41506  	i = parse_thread_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 41507  	if i < 0 {
 41508  		return TCL_ERROR
 41509  	}
 41510  	if !(threadset[i].Fbusy != 0) {
 41511  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25853, 0))
 41512  		return TCL_ERROR
 41513  	}
 41514  	test_thread_wait(tls, uintptr(unsafe.Pointer(&threadset))+uintptr(i)*1680)
 41515  	sqlite3TestMakePointerStr(tls, interp, bp+64, threadset[i].FpStmt)
 41516  	threadset[i].FpStmt = uintptr(0)
 41517  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+48, bp+64, uintptr(0)))
 41518  	return TCL_OK
 41519  }
 41520  
 41521  func Sqlitetest4_Init(tls *libc.TLS, interp uintptr) int32 {
 41522  	var i int32
 41523  
 41524  	for i = 0; uint64(i) < uint64(unsafe.Sizeof(aCmd4))/uint64(unsafe.Sizeof(struct {
 41525  		FzName uintptr
 41526  		FxProc uintptr
 41527  	}{})); i++ {
 41528  		tcl.XTcl_CreateCommand(tls, interp, aCmd4[i].FzName, aCmd4[i].FxProc, uintptr(0), uintptr(0))
 41529  	}
 41530  	return TCL_OK
 41531  }
 41532  
 41533  var aCmd4 = [15]struct {
 41534  	FzName uintptr
 41535  	FxProc uintptr
 41536  }{
 41537  	{FzName: ts + 25979, FxProc: 0},
 41538  	{FzName: ts + 25993, FxProc: 0},
 41539  	{FzName: ts + 26005, FxProc: 0},
 41540  	{FzName: ts + 26017, FxProc: 0},
 41541  	{FzName: ts + 26029, FxProc: 0},
 41542  	{FzName: ts + 26041, FxProc: 0},
 41543  	{FzName: ts + 26056, FxProc: 0},
 41544  	{FzName: ts + 26070, FxProc: 0},
 41545  	{FzName: ts + 26083, FxProc: 0},
 41546  	{FzName: ts + 26098, FxProc: 0},
 41547  	{FzName: ts + 26110, FxProc: 0},
 41548  	{FzName: ts + 26126, FxProc: 0},
 41549  	{FzName: ts + 26138, FxProc: 0},
 41550  	{FzName: ts + 26152, FxProc: 0},
 41551  	{FzName: ts + 26166, FxProc: 0},
 41552  }
 41553  
 41554  func binarize(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 41555  	bp := tls.Alloc(4)
 41556  	defer tls.Free(4)
 41557  
 41558  	var bytes uintptr
 41559  	var pRet uintptr
 41560  
 41561  	bytes = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp)
 41562  	pRet = tcl.XTcl_NewByteArrayObj(tls, bytes, *(*int32)(unsafe.Pointer(bp))+1)
 41563  	tcl.XTcl_SetObjResult(tls, interp, pRet)
 41564  	return TCL_OK
 41565  }
 41566  
 41567  func test_value_overhead(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 41568  	bp := tls.Alloc(96)
 41569  	defer tls.Free(96)
 41570  
 41571  	var i int32
 41572  
 41573  	if objc != 3 {
 41574  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 41575  			tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+26182, 0))
 41576  		return TCL_ERROR
 41577  	}
 41578  
 41579  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp+32) != 0 {
 41580  		return TCL_ERROR
 41581  	}
 41582  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+36) != 0 {
 41583  		return TCL_ERROR
 41584  	}
 41585  
 41586  	(*Mem)(unsafe.Pointer(bp + 40)).Fflags = u16(MEM_Str | MEM_Term | MEM_Static)
 41587  	(*Mem)(unsafe.Pointer(bp + 40)).Fz = ts + 26209
 41588  	(*Mem)(unsafe.Pointer(bp + 40)).Fenc = u8(SQLITE_UTF8)
 41589  
 41590  	for i = 0; i < *(*int32)(unsafe.Pointer(bp + 32)); i++ {
 41591  		if *(*int32)(unsafe.Pointer(bp + 36)) != 0 {
 41592  			sqlite3.Xsqlite3_value_text(tls, bp+40)
 41593  		}
 41594  	}
 41595  
 41596  	return TCL_OK
 41597  }
 41598  
 41599  func name_to_enc(tls *libc.TLS, interp uintptr, pObj uintptr) u8 {
 41600  	bp := tls.Alloc(104)
 41601  	defer tls.Free(104)
 41602  
 41603  	*(*[5]EncName)(unsafe.Pointer(bp + 24)) = [5]EncName{
 41604  		{FzName: ts + 26221, Fenc: u8(SQLITE_UTF8)},
 41605  		{FzName: ts + 26226, Fenc: u8(SQLITE_UTF16LE)},
 41606  		{FzName: ts + 26234, Fenc: u8(SQLITE_UTF16BE)},
 41607  		{FzName: ts + 26242, Fenc: u8(SQLITE_UTF16)},
 41608  		{},
 41609  	}
 41610  	var pEnc uintptr
 41611  	var z uintptr = tcl.XTcl_GetString(tls, pObj)
 41612  	for pEnc = bp + 24; (*EncName)(unsafe.Pointer(pEnc)).FzName != 0; pEnc += 16 {
 41613  		if 0 == sqlite3.Xsqlite3StrICmp(tls, z, (*EncName)(unsafe.Pointer(pEnc)).FzName) {
 41614  			break
 41615  		}
 41616  	}
 41617  	if !(int32((*EncName)(unsafe.Pointer(pEnc)).Fenc) != 0) {
 41618  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+26248, z, 0))
 41619  	}
 41620  	if int32((*EncName)(unsafe.Pointer(pEnc)).Fenc) == SQLITE_UTF16 {
 41621  		return func() uint8 {
 41622  			if int32(*(*uint8)(unsafe.Pointer(uintptr(unsafe.Pointer(&sqlite3.Xsqlite3one))))) == 0 {
 41623  				return uint8(SQLITE_UTF16BE)
 41624  			}
 41625  			return uint8(SQLITE_UTF16LE)
 41626  		}()
 41627  	}
 41628  	return (*EncName)(unsafe.Pointer(pEnc)).Fenc
 41629  }
 41630  
 41631  type EncName = struct {
 41632  	FzName       uintptr
 41633  	Fenc         u8
 41634  	F__ccgo_pad1 [7]byte
 41635  }
 41636  
 41637  func test_translate(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 41638  	bp := tls.Alloc(44)
 41639  	defer tls.Free(44)
 41640  
 41641  	var enc_from u8
 41642  	var enc_to u8
 41643  	var pVal uintptr
 41644  	var z uintptr
 41645  
 41646  	var xDel uintptr = uintptr(0)
 41647  
 41648  	if objc != 4 && objc != 5 {
 41649  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 41650  			tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)),
 41651  			ts+26267, 0))
 41652  		return TCL_ERROR
 41653  	}
 41654  	if objc == 5 {
 41655  		xDel = *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{sqlite3.Xsqlite3_free}))
 41656  	}
 41657  
 41658  	enc_from = name_to_enc(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 41659  	if !(enc_from != 0) {
 41660  		return TCL_ERROR
 41661  	}
 41662  	enc_to = name_to_enc(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)))
 41663  	if !(enc_to != 0) {
 41664  		return TCL_ERROR
 41665  	}
 41666  
 41667  	pVal = sqlite3.Xsqlite3ValueNew(tls, uintptr(0))
 41668  
 41669  	if int32(enc_from) == SQLITE_UTF8 {
 41670  		z = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 41671  		if objc == 5 {
 41672  			z = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp+32, z))
 41673  		}
 41674  		sqlite3.Xsqlite3ValueSetStr(tls, pVal, -1, z, enc_from, xDel)
 41675  	} else {
 41676  		z = tcl.XTcl_GetByteArrayFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp+40)
 41677  		if objc == 5 {
 41678  			var zTmp uintptr = z
 41679  			z = sqlite3.Xsqlite3_malloc(tls, *(*int32)(unsafe.Pointer(bp + 40)))
 41680  			libc.Xmemcpy(tls, z, zTmp, uint64(*(*int32)(unsafe.Pointer(bp + 40))))
 41681  		}
 41682  		sqlite3.Xsqlite3ValueSetStr(tls, pVal, -1, z, enc_from, xDel)
 41683  	}
 41684  
 41685  	z = sqlite3.Xsqlite3ValueText(tls, pVal, enc_to)
 41686  	*(*int32)(unsafe.Pointer(bp + 40)) = sqlite3.Xsqlite3ValueBytes(tls, pVal, enc_to) + func() int32 {
 41687  		if int32(enc_to) == SQLITE_UTF8 {
 41688  			return 1
 41689  		}
 41690  		return 2
 41691  	}()
 41692  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewByteArrayObj(tls, z, *(*int32)(unsafe.Pointer(bp + 40))))
 41693  
 41694  	sqlite3.Xsqlite3ValueFree(tls, pVal)
 41695  
 41696  	return TCL_OK
 41697  }
 41698  
 41699  func test_translate_selftest(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 41700  	sqlite3.Xsqlite3UtfSelfTest(tls)
 41701  	return SQLITE_OK
 41702  }
 41703  
 41704  func Sqlitetest5_Init(tls *libc.TLS, interp uintptr) int32 {
 41705  	var i int32
 41706  	for i = 0; uint64(i) < uint64(unsafe.Sizeof(aCmd5))/uint64(unsafe.Sizeof(struct {
 41707  		FzName uintptr
 41708  		FxProc uintptr
 41709  	}{})); i++ {
 41710  		tcl.XTcl_CreateObjCommand(tls, interp, aCmd5[i].FzName, aCmd5[i].FxProc, uintptr(0), uintptr(0))
 41711  	}
 41712  	return SQLITE_OK
 41713  }
 41714  
 41715  var aCmd5 = [4]struct {
 41716  	FzName uintptr
 41717  	FxProc uintptr
 41718  }{
 41719  	{FzName: ts + 26302, FxProc: 0},
 41720  	{FzName: ts + 26311, FxProc: 0},
 41721  	{FzName: ts + 26331, FxProc: 0},
 41722  	{FzName: ts + 26346, FxProc: 0},
 41723  }
 41724  
 41725  type CrashFile1 = struct {
 41726  	FpMethod     uintptr
 41727  	FpRealFile   uintptr
 41728  	FzName       uintptr
 41729  	Fflags       int32
 41730  	F__ccgo_pad1 [4]byte
 41731  	FzData       uintptr
 41732  	FnData       int32
 41733  	F__ccgo_pad2 [4]byte
 41734  	FiSize       i64
 41735  }
 41736  
 41737  type CrashFile = CrashFile1
 41738  type CrashGlobal1 = struct {
 41739  	FpWriteList             uintptr
 41740  	FpWriteListEnd          uintptr
 41741  	FiSectorSize            int32
 41742  	FiDeviceCharacteristics int32
 41743  	FiCrash                 int32
 41744  	FzCrashFile             [500]uint8
 41745  }
 41746  
 41747  type CrashGlobal = CrashGlobal1
 41748  type WriteBuffer1 = struct {
 41749  	FiOffset     i64
 41750  	FnBuf        int32
 41751  	F__ccgo_pad1 [4]byte
 41752  	FzBuf        uintptr
 41753  	FpFile       uintptr
 41754  	FpNext       uintptr
 41755  }
 41756  
 41757  type WriteBuffer = WriteBuffer1
 41758  
 41759  var g = CrashGlobal{FiSectorSize: SQLITE_DEFAULT_SECTOR_SIZE}
 41760  
 41761  var sqlite3CrashTestEnable int32 = 0
 41762  
 41763  func crash_malloc(tls *libc.TLS, nByte int32) uintptr {
 41764  	return tcl.XTcl_AttemptAlloc(tls, uint32(size_t(nByte)))
 41765  }
 41766  
 41767  func crash_free(tls *libc.TLS, p uintptr) {
 41768  	tcl.XTcl_Free(tls, p)
 41769  }
 41770  
 41771  func crash_realloc(tls *libc.TLS, p uintptr, n int32) uintptr {
 41772  	return tcl.XTcl_AttemptRealloc(tls, p, uint32(size_t(n)))
 41773  }
 41774  
 41775  func writeDbFile(tls *libc.TLS, p uintptr, z uintptr, iAmt i64, iOff i64) int32 {
 41776  	var rc int32 = SQLITE_OK
 41777  	var iSkip int32 = 0
 41778  	if iAmt-i64(iSkip) > int64(0) {
 41779  		rc = sqlite3.Xsqlite3OsWrite(tls, (*CrashFile)(unsafe.Pointer(p)).FpRealFile, z+uintptr(iSkip), int32(iAmt-i64(iSkip)), iOff+i64(iSkip))
 41780  	}
 41781  	return rc
 41782  }
 41783  
 41784  func writeListSync(tls *libc.TLS, pFile uintptr, isCrash int32) int32 {
 41785  	bp := tls.Alloc(16)
 41786  	defer tls.Free(16)
 41787  
 41788  	var rc int32 = SQLITE_OK
 41789  	var iDc int32 = g.FiDeviceCharacteristics
 41790  	var pWrite uintptr
 41791  	var ppPtr uintptr
 41792  
 41793  	var pFinal uintptr = uintptr(0)
 41794  	if !(isCrash != 0) {
 41795  		for pWrite = g.FpWriteList; pWrite != 0; pWrite = (*WriteBuffer)(unsafe.Pointer(pWrite)).FpNext {
 41796  			if (*WriteBuffer)(unsafe.Pointer(pWrite)).FpFile == pFile {
 41797  				pFinal = pWrite
 41798  			}
 41799  		}
 41800  	} else if iDc&(SQLITE_IOCAP_SEQUENTIAL|SQLITE_IOCAP_SAFE_APPEND) != 0 {
 41801  		var nWrite int32 = 0
 41802  
 41803  		for pWrite = g.FpWriteList; pWrite != 0; pWrite = (*WriteBuffer)(unsafe.Pointer(pWrite)).FpNext {
 41804  			nWrite++
 41805  		}
 41806  		sqlite3.Xsqlite3_randomness(tls, int32(unsafe.Sizeof(int32(0))), bp)
 41807  		*(*int32)(unsafe.Pointer(bp)) = func() int32 {
 41808  			if *(*int32)(unsafe.Pointer(bp)) < 0 {
 41809  				return -1 * *(*int32)(unsafe.Pointer(bp))
 41810  			}
 41811  			return *(*int32)(unsafe.Pointer(bp))
 41812  		}() % nWrite
 41813  		for pWrite = g.FpWriteList; *(*int32)(unsafe.Pointer(bp)) > 0; pWrite = (*WriteBuffer)(unsafe.Pointer(pWrite)).FpNext {
 41814  			*(*int32)(unsafe.Pointer(bp))--
 41815  		}
 41816  		pFinal = pWrite
 41817  	}
 41818  
 41819  	ppPtr = uintptr(unsafe.Pointer(&g))
 41820  	for pWrite = *(*uintptr)(unsafe.Pointer(ppPtr)); rc == SQLITE_OK && pWrite != 0; pWrite = *(*uintptr)(unsafe.Pointer(ppPtr)) {
 41821  		var pRealFile uintptr = (*CrashFile)(unsafe.Pointer((*WriteBuffer)(unsafe.Pointer(pWrite)).FpFile)).FpRealFile
 41822  
 41823  		var eAction int32 = 0
 41824  		if !(isCrash != 0) {
 41825  			eAction = 2
 41826  			if (*WriteBuffer)(unsafe.Pointer(pWrite)).FpFile == pFile || iDc&SQLITE_IOCAP_SEQUENTIAL != 0 {
 41827  				eAction = 1
 41828  			}
 41829  		} else {
 41830  			sqlite3.Xsqlite3_randomness(tls, 1, bp+4)
 41831  
 41832  			if iDc&SQLITE_IOCAP_ATOMIC != 0 || (*WriteBuffer)(unsafe.Pointer(pWrite)).FzBuf == uintptr(0) {
 41833  				*(*uint8)(unsafe.Pointer(bp + 4)) &= uint8(0x01)
 41834  			}
 41835  
 41836  			if iDc&SQLITE_IOCAP_SEQUENTIAL != 0 && pWrite != pFinal {
 41837  				*(*uint8)(unsafe.Pointer(bp + 4)) = uint8(0)
 41838  			}
 41839  
 41840  			if iDc&SQLITE_IOCAP_SAFE_APPEND != 0 && (*WriteBuffer)(unsafe.Pointer(pWrite)).FzBuf != 0 {
 41841  				sqlite3.Xsqlite3OsFileSize(tls, pRealFile, bp+8)
 41842  				if *(*i64)(unsafe.Pointer(bp + 8)) == (*WriteBuffer)(unsafe.Pointer(pWrite)).FiOffset {
 41843  					*(*uint8)(unsafe.Pointer(bp + 4)) = uint8(0)
 41844  				}
 41845  			}
 41846  
 41847  			if int32(*(*uint8)(unsafe.Pointer(bp + 4)))&0x06 == 0x06 {
 41848  				eAction = 3
 41849  			} else {
 41850  				eAction = func() int32 {
 41851  					if int32(*(*uint8)(unsafe.Pointer(bp + 4)))&0x01 != 0 {
 41852  						return 2
 41853  					}
 41854  					return 1
 41855  				}()
 41856  			}
 41857  		}
 41858  
 41859  		switch eAction {
 41860  		case 1:
 41861  			{
 41862  				if (*WriteBuffer)(unsafe.Pointer(pWrite)).FzBuf != 0 {
 41863  					rc = writeDbFile(tls,
 41864  						(*WriteBuffer)(unsafe.Pointer(pWrite)).FpFile, (*WriteBuffer)(unsafe.Pointer(pWrite)).FzBuf, int64((*WriteBuffer)(unsafe.Pointer(pWrite)).FnBuf), (*WriteBuffer)(unsafe.Pointer(pWrite)).FiOffset)
 41865  				} else {
 41866  					rc = sqlite3.Xsqlite3OsTruncate(tls, pRealFile, (*WriteBuffer)(unsafe.Pointer(pWrite)).FiOffset)
 41867  				}
 41868  				*(*uintptr)(unsafe.Pointer(ppPtr)) = (*WriteBuffer)(unsafe.Pointer(pWrite)).FpNext
 41869  				crash_free(tls, pWrite)
 41870  				break
 41871  
 41872  			}
 41873  		case 2:
 41874  			{
 41875  				ppPtr = pWrite + 32
 41876  				break
 41877  
 41878  			}
 41879  		case 3:
 41880  			{
 41881  				var zGarbage uintptr
 41882  				var iFirst int32 = int32((*WriteBuffer)(unsafe.Pointer(pWrite)).FiOffset / i64(g.FiSectorSize))
 41883  				var iLast int32 = int32(((*WriteBuffer)(unsafe.Pointer(pWrite)).FiOffset + i64((*WriteBuffer)(unsafe.Pointer(pWrite)).FnBuf) - int64(1)) / i64(g.FiSectorSize))
 41884  
 41885  				zGarbage = crash_malloc(tls, g.FiSectorSize)
 41886  				if zGarbage != 0 {
 41887  					var i sqlite3_int64
 41888  					for i = sqlite3_int64(iFirst); rc == SQLITE_OK && i <= sqlite3_int64(iLast); i++ {
 41889  						sqlite3.Xsqlite3_randomness(tls, g.FiSectorSize, zGarbage)
 41890  						rc = writeDbFile(tls,
 41891  							(*WriteBuffer)(unsafe.Pointer(pWrite)).FpFile, zGarbage, int64(g.FiSectorSize), i*sqlite3_int64(g.FiSectorSize))
 41892  					}
 41893  					crash_free(tls, zGarbage)
 41894  				} else {
 41895  					rc = SQLITE_NOMEM
 41896  				}
 41897  
 41898  				ppPtr = pWrite + 32
 41899  				break
 41900  
 41901  			}
 41902  
 41903  		default:
 41904  		}
 41905  
 41906  		if pWrite == pFinal {
 41907  			break
 41908  		}
 41909  	}
 41910  
 41911  	if rc == SQLITE_OK && isCrash != 0 {
 41912  		libc.Xexit(tls, -1)
 41913  	}
 41914  
 41915  	for pWrite = g.FpWriteList; pWrite != 0 && (*WriteBuffer)(unsafe.Pointer(pWrite)).FpNext != 0; pWrite = (*WriteBuffer)(unsafe.Pointer(pWrite)).FpNext {
 41916  	}
 41917  	g.FpWriteListEnd = pWrite
 41918  
 41919  	return rc
 41920  }
 41921  
 41922  func writeListAppend(tls *libc.TLS, pFile uintptr, iOffset sqlite3_int64, zBuf uintptr, nBuf int32) int32 {
 41923  	var pNew uintptr
 41924  
 41925  	pNew = crash_malloc(tls, int32(uint64(unsafe.Sizeof(WriteBuffer{}))+uint64(nBuf)))
 41926  	if pNew == uintptr(0) {
 41927  		libc.Xfprintf(tls, libc.Xstderr, ts+26365, 0)
 41928  	}
 41929  	libc.Xmemset(tls, pNew, 0, uint64(unsafe.Sizeof(WriteBuffer{}))+uint64(nBuf))
 41930  	(*WriteBuffer)(unsafe.Pointer(pNew)).FiOffset = iOffset
 41931  	(*WriteBuffer)(unsafe.Pointer(pNew)).FnBuf = nBuf
 41932  	(*WriteBuffer)(unsafe.Pointer(pNew)).FpFile = pFile
 41933  	if zBuf != 0 {
 41934  		(*WriteBuffer)(unsafe.Pointer(pNew)).FzBuf = pNew + 1*40
 41935  		libc.Xmemcpy(tls, (*WriteBuffer)(unsafe.Pointer(pNew)).FzBuf, zBuf, uint64(nBuf))
 41936  	}
 41937  
 41938  	if g.FpWriteList != 0 {
 41939  		(*WriteBuffer)(unsafe.Pointer(g.FpWriteListEnd)).FpNext = pNew
 41940  	} else {
 41941  		g.FpWriteList = pNew
 41942  	}
 41943  	g.FpWriteListEnd = pNew
 41944  
 41945  	return SQLITE_OK
 41946  }
 41947  
 41948  func cfClose(tls *libc.TLS, pFile uintptr) int32 {
 41949  	var pCrash uintptr = pFile
 41950  	writeListSync(tls, pCrash, 0)
 41951  	sqlite3.Xsqlite3OsClose(tls, (*CrashFile)(unsafe.Pointer(pCrash)).FpRealFile)
 41952  	return SQLITE_OK
 41953  }
 41954  
 41955  func cfRead(tls *libc.TLS, pFile uintptr, zBuf uintptr, iAmt int32, iOfst sqlite_int64) int32 {
 41956  	var pCrash uintptr = pFile
 41957  	var nCopy int32 = func() int32 {
 41958  		if i64(iAmt) < (*CrashFile)(unsafe.Pointer(pCrash)).FiSize-iOfst {
 41959  			return int32(i64(iAmt))
 41960  		}
 41961  		return int32((*CrashFile)(unsafe.Pointer(pCrash)).FiSize - iOfst)
 41962  	}()
 41963  
 41964  	if nCopy > 0 {
 41965  		libc.Xmemcpy(tls, zBuf, (*CrashFile)(unsafe.Pointer(pCrash)).FzData+uintptr(iOfst), uint64(nCopy))
 41966  	}
 41967  
 41968  	if nCopy < iAmt {
 41969  		return SQLITE_IOERR | int32(2)<<8
 41970  	}
 41971  
 41972  	return SQLITE_OK
 41973  }
 41974  
 41975  func cfWrite(tls *libc.TLS, pFile uintptr, zBuf uintptr, iAmt int32, iOfst sqlite_int64) int32 {
 41976  	var pCrash uintptr = pFile
 41977  	if sqlite_int64(iAmt)+iOfst > (*CrashFile)(unsafe.Pointer(pCrash)).FiSize {
 41978  		(*CrashFile)(unsafe.Pointer(pCrash)).FiSize = i64(int32(sqlite_int64(iAmt) + iOfst))
 41979  	}
 41980  	for (*CrashFile)(unsafe.Pointer(pCrash)).FiSize > i64((*CrashFile)(unsafe.Pointer(pCrash)).FnData) {
 41981  		var zNew uintptr
 41982  		var nNew int32 = (*CrashFile)(unsafe.Pointer(pCrash)).FnData*2 + 4096
 41983  		zNew = crash_realloc(tls, (*CrashFile)(unsafe.Pointer(pCrash)).FzData, nNew)
 41984  		if !(zNew != 0) {
 41985  			return SQLITE_NOMEM
 41986  		}
 41987  		libc.Xmemset(tls, zNew+uintptr((*CrashFile)(unsafe.Pointer(pCrash)).FnData), 0, uint64(nNew-(*CrashFile)(unsafe.Pointer(pCrash)).FnData))
 41988  		(*CrashFile)(unsafe.Pointer(pCrash)).FnData = nNew
 41989  		(*CrashFile)(unsafe.Pointer(pCrash)).FzData = zNew
 41990  	}
 41991  	libc.Xmemcpy(tls, (*CrashFile)(unsafe.Pointer(pCrash)).FzData+uintptr(iOfst), zBuf, uint64(iAmt))
 41992  	return writeListAppend(tls, pFile, iOfst, zBuf, iAmt)
 41993  }
 41994  
 41995  func cfTruncate(tls *libc.TLS, pFile uintptr, size sqlite_int64) int32 {
 41996  	var pCrash uintptr = pFile
 41997  
 41998  	if (*CrashFile)(unsafe.Pointer(pCrash)).FiSize > size {
 41999  		(*CrashFile)(unsafe.Pointer(pCrash)).FiSize = i64(int32(size))
 42000  	}
 42001  	return writeListAppend(tls, pFile, size, uintptr(0), 0)
 42002  }
 42003  
 42004  func cfSync(tls *libc.TLS, pFile uintptr, flags int32) int32 {
 42005  	var pCrash uintptr = pFile
 42006  	var isCrash int32 = 0
 42007  
 42008  	var zName uintptr = (*CrashFile)(unsafe.Pointer(pCrash)).FzName
 42009  	var zCrashFile uintptr = uintptr(unsafe.Pointer(&g)) + 28
 42010  	var nName int32 = int32(libc.Xstrlen(tls, zName))
 42011  	var nCrashFile int32 = int32(libc.Xstrlen(tls, zCrashFile))
 42012  
 42013  	if nCrashFile > 0 && int32(*(*uint8)(unsafe.Pointer(zCrashFile + uintptr(nCrashFile-1)))) == '*' {
 42014  		nCrashFile--
 42015  		if nName > nCrashFile {
 42016  			nName = nCrashFile
 42017  		}
 42018  	}
 42019  
 42020  	if nName == nCrashFile && 0 == libc.Xmemcmp(tls, zName, zCrashFile, uint64(nName)) {
 42021  		if libc.PreDecInt32(&g.FiCrash, 1) == 0 {
 42022  			isCrash = 1
 42023  		}
 42024  	}
 42025  
 42026  	return writeListSync(tls, pCrash, isCrash)
 42027  }
 42028  
 42029  func cfFileSize(tls *libc.TLS, pFile uintptr, pSize uintptr) int32 {
 42030  	var pCrash uintptr = pFile
 42031  	*(*sqlite_int64)(unsafe.Pointer(pSize)) = (*CrashFile)(unsafe.Pointer(pCrash)).FiSize
 42032  	return SQLITE_OK
 42033  }
 42034  
 42035  func cfLock(tls *libc.TLS, pFile uintptr, eLock int32) int32 {
 42036  	return sqlite3.Xsqlite3OsLock(tls, (*CrashFile)(unsafe.Pointer(pFile)).FpRealFile, eLock)
 42037  }
 42038  
 42039  func cfUnlock(tls *libc.TLS, pFile uintptr, eLock int32) int32 {
 42040  	return sqlite3.Xsqlite3OsUnlock(tls, (*CrashFile)(unsafe.Pointer(pFile)).FpRealFile, eLock)
 42041  }
 42042  
 42043  func cfCheckReservedLock(tls *libc.TLS, pFile uintptr, pResOut uintptr) int32 {
 42044  	return sqlite3.Xsqlite3OsCheckReservedLock(tls, (*CrashFile)(unsafe.Pointer(pFile)).FpRealFile, pResOut)
 42045  }
 42046  
 42047  func cfFileControl(tls *libc.TLS, pFile uintptr, op int32, pArg uintptr) int32 {
 42048  	if op == SQLITE_FCNTL_SIZE_HINT {
 42049  		var pCrash uintptr = pFile
 42050  		var nByte i64 = *(*i64)(unsafe.Pointer(pArg))
 42051  		if nByte > (*CrashFile)(unsafe.Pointer(pCrash)).FiSize {
 42052  			if SQLITE_OK == writeListAppend(tls, pFile, nByte, uintptr(0), 0) {
 42053  				(*CrashFile)(unsafe.Pointer(pCrash)).FiSize = i64(int32(nByte))
 42054  			}
 42055  		}
 42056  		return SQLITE_OK
 42057  	}
 42058  	return sqlite3.Xsqlite3OsFileControl(tls, (*CrashFile)(unsafe.Pointer(pFile)).FpRealFile, op, pArg)
 42059  }
 42060  
 42061  func cfSectorSize(tls *libc.TLS, pFile uintptr) int32 {
 42062  	return g.FiSectorSize
 42063  }
 42064  
 42065  func cfDeviceCharacteristics(tls *libc.TLS, pFile uintptr) int32 {
 42066  	return g.FiDeviceCharacteristics
 42067  }
 42068  
 42069  func cfShmLock(tls *libc.TLS, pFile uintptr, ofst int32, n int32, flags int32) int32 {
 42070  	var pReal uintptr = (*CrashFile)(unsafe.Pointer(pFile)).FpRealFile
 42071  	return (*struct {
 42072  		f func(*libc.TLS, uintptr, int32, int32, int32) int32
 42073  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pReal)).FpMethods)).FxShmLock})).f(tls, pReal, ofst, n, flags)
 42074  }
 42075  
 42076  func cfShmBarrier(tls *libc.TLS, pFile uintptr) {
 42077  	var pReal uintptr = (*CrashFile)(unsafe.Pointer(pFile)).FpRealFile
 42078  	(*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)
 42079  }
 42080  
 42081  func cfShmUnmap(tls *libc.TLS, pFile uintptr, delFlag int32) int32 {
 42082  	var pReal uintptr = (*CrashFile)(unsafe.Pointer(pFile)).FpRealFile
 42083  	return (*struct {
 42084  		f func(*libc.TLS, uintptr, int32) int32
 42085  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pReal)).FpMethods)).FxShmUnmap})).f(tls, pReal, delFlag)
 42086  }
 42087  
 42088  func cfShmMap(tls *libc.TLS, pFile uintptr, iRegion int32, sz int32, w int32, pp uintptr) int32 {
 42089  	var pReal uintptr = (*CrashFile)(unsafe.Pointer(pFile)).FpRealFile
 42090  	return (*struct {
 42091  		f func(*libc.TLS, uintptr, int32, int32, int32, uintptr) int32
 42092  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pReal)).FpMethods)).FxShmMap})).f(tls, pReal, iRegion, sz, w, pp)
 42093  }
 42094  
 42095  var CrashFileVtab = sqlite3_io_methods{
 42096  	FiVersion:               2,
 42097  	FxClose:                 0,
 42098  	FxRead:                  0,
 42099  	FxWrite:                 0,
 42100  	FxTruncate:              0,
 42101  	FxSync:                  0,
 42102  	FxFileSize:              0,
 42103  	FxLock:                  0,
 42104  	FxUnlock:                0,
 42105  	FxCheckReservedLock:     0,
 42106  	FxFileControl:           0,
 42107  	FxSectorSize:            0,
 42108  	FxDeviceCharacteristics: 0,
 42109  	FxShmMap:                0,
 42110  	FxShmLock:               0,
 42111  	FxShmBarrier:            0,
 42112  	FxShmUnmap:              0,
 42113  }
 42114  
 42115  type crashAppData = struct{ FpOrig uintptr }
 42116  
 42117  func cfOpen(tls *libc.TLS, pCfVfs uintptr, zName uintptr, pFile uintptr, flags int32, pOutFlags uintptr) int32 {
 42118  	bp := tls.Alloc(8)
 42119  	defer tls.Free(8)
 42120  
 42121  	var pVfs uintptr = (*sqlite3_vfs)(unsafe.Pointer(pCfVfs)).FpAppData
 42122  	var rc int32
 42123  	var pWrapper uintptr = pFile
 42124  	var pReal uintptr = pWrapper + 1*56
 42125  
 42126  	libc.Xmemset(tls, pWrapper, 0, uint64(unsafe.Sizeof(CrashFile{})))
 42127  	rc = sqlite3.Xsqlite3OsOpen(tls, pVfs, zName, pReal, flags, pOutFlags)
 42128  
 42129  	if rc == SQLITE_OK {
 42130  		(*CrashFile)(unsafe.Pointer(pWrapper)).FpMethod = uintptr(unsafe.Pointer(&CrashFileVtab))
 42131  		(*CrashFile)(unsafe.Pointer(pWrapper)).FzName = zName
 42132  		(*CrashFile)(unsafe.Pointer(pWrapper)).FpRealFile = pReal
 42133  		rc = sqlite3.Xsqlite3OsFileSize(tls, pReal, bp)
 42134  		(*CrashFile)(unsafe.Pointer(pWrapper)).FiSize = i64(int32(*(*i64)(unsafe.Pointer(bp))))
 42135  		(*CrashFile)(unsafe.Pointer(pWrapper)).Fflags = flags
 42136  	}
 42137  	if rc == SQLITE_OK {
 42138  		(*CrashFile)(unsafe.Pointer(pWrapper)).FnData = int32(int64(4096) + (*CrashFile)(unsafe.Pointer(pWrapper)).FiSize)
 42139  		(*CrashFile)(unsafe.Pointer(pWrapper)).FzData = crash_malloc(tls, (*CrashFile)(unsafe.Pointer(pWrapper)).FnData)
 42140  		if (*CrashFile)(unsafe.Pointer(pWrapper)).FzData != 0 {
 42141  			var iOff i64
 42142  
 42143  			libc.Xmemset(tls, (*CrashFile)(unsafe.Pointer(pWrapper)).FzData, 0, uint64((*CrashFile)(unsafe.Pointer(pWrapper)).FnData))
 42144  			for iOff = int64(0); iOff < (*CrashFile)(unsafe.Pointer(pWrapper)).FiSize; iOff = iOff + int64(512) {
 42145  				var nRead int32 = int32((*CrashFile)(unsafe.Pointer(pWrapper)).FiSize - iOff)
 42146  				if nRead > 512 {
 42147  					nRead = 512
 42148  				}
 42149  				rc = sqlite3.Xsqlite3OsRead(tls, pReal, (*CrashFile)(unsafe.Pointer(pWrapper)).FzData+uintptr(iOff), nRead, iOff)
 42150  			}
 42151  		} else {
 42152  			rc = SQLITE_NOMEM
 42153  		}
 42154  	}
 42155  	if rc != SQLITE_OK && (*CrashFile)(unsafe.Pointer(pWrapper)).FpMethod != 0 {
 42156  		sqlite3.Xsqlite3OsClose(tls, pFile)
 42157  	}
 42158  	return rc
 42159  }
 42160  
 42161  func cfDelete(tls *libc.TLS, pCfVfs uintptr, zPath uintptr, dirSync int32) int32 {
 42162  	var pVfs uintptr = (*sqlite3_vfs)(unsafe.Pointer(pCfVfs)).FpAppData
 42163  	return (*struct {
 42164  		f func(*libc.TLS, uintptr, uintptr, int32) int32
 42165  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pVfs)).FxDelete})).f(tls, pVfs, zPath, dirSync)
 42166  }
 42167  
 42168  func cfAccess(tls *libc.TLS, pCfVfs uintptr, zPath uintptr, flags int32, pResOut uintptr) int32 {
 42169  	var pVfs uintptr = (*sqlite3_vfs)(unsafe.Pointer(pCfVfs)).FpAppData
 42170  	return (*struct {
 42171  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 42172  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pVfs)).FxAccess})).f(tls, pVfs, zPath, flags, pResOut)
 42173  }
 42174  
 42175  func cfFullPathname(tls *libc.TLS, pCfVfs uintptr, zPath uintptr, nPathOut int32, zPathOut uintptr) int32 {
 42176  	var pVfs uintptr = (*sqlite3_vfs)(unsafe.Pointer(pCfVfs)).FpAppData
 42177  	return (*struct {
 42178  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 42179  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pVfs)).FxFullPathname})).f(tls, pVfs, zPath, nPathOut, zPathOut)
 42180  }
 42181  
 42182  func cfDlOpen(tls *libc.TLS, pCfVfs uintptr, zPath uintptr) uintptr {
 42183  	var pVfs uintptr = (*sqlite3_vfs)(unsafe.Pointer(pCfVfs)).FpAppData
 42184  	return (*struct {
 42185  		f func(*libc.TLS, uintptr, uintptr) uintptr
 42186  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pVfs)).FxDlOpen})).f(tls, pVfs, zPath)
 42187  }
 42188  
 42189  func cfDlError(tls *libc.TLS, pCfVfs uintptr, nByte int32, zErrMsg uintptr) {
 42190  	var pVfs uintptr = (*sqlite3_vfs)(unsafe.Pointer(pCfVfs)).FpAppData
 42191  	(*struct {
 42192  		f func(*libc.TLS, uintptr, int32, uintptr)
 42193  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pVfs)).FxDlError})).f(tls, pVfs, nByte, zErrMsg)
 42194  }
 42195  
 42196  func cfDlSym(tls *libc.TLS, pCfVfs uintptr, pH uintptr, zSym uintptr) uintptr {
 42197  	var pVfs uintptr = (*sqlite3_vfs)(unsafe.Pointer(pCfVfs)).FpAppData
 42198  	return (*struct {
 42199  		f func(*libc.TLS, uintptr, uintptr, uintptr) uintptr
 42200  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pVfs)).FxDlSym})).f(tls, pVfs, pH, zSym)
 42201  }
 42202  
 42203  func cfDlClose(tls *libc.TLS, pCfVfs uintptr, pHandle uintptr) {
 42204  	var pVfs uintptr = (*sqlite3_vfs)(unsafe.Pointer(pCfVfs)).FpAppData
 42205  	(*struct {
 42206  		f func(*libc.TLS, uintptr, uintptr)
 42207  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pVfs)).FxDlClose})).f(tls, pVfs, pHandle)
 42208  }
 42209  
 42210  func cfRandomness(tls *libc.TLS, pCfVfs uintptr, nByte int32, zBufOut uintptr) int32 {
 42211  	var pVfs uintptr = (*sqlite3_vfs)(unsafe.Pointer(pCfVfs)).FpAppData
 42212  	return (*struct {
 42213  		f func(*libc.TLS, uintptr, int32, uintptr) int32
 42214  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pVfs)).FxRandomness})).f(tls, pVfs, nByte, zBufOut)
 42215  }
 42216  
 42217  func cfSleep(tls *libc.TLS, pCfVfs uintptr, nMicro int32) int32 {
 42218  	var pVfs uintptr = (*sqlite3_vfs)(unsafe.Pointer(pCfVfs)).FpAppData
 42219  	return (*struct {
 42220  		f func(*libc.TLS, uintptr, int32) int32
 42221  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pVfs)).FxSleep})).f(tls, pVfs, nMicro)
 42222  }
 42223  
 42224  func cfCurrentTime(tls *libc.TLS, pCfVfs uintptr, pTimeOut uintptr) int32 {
 42225  	var pVfs uintptr = (*sqlite3_vfs)(unsafe.Pointer(pCfVfs)).FpAppData
 42226  	return (*struct {
 42227  		f func(*libc.TLS, uintptr, uintptr) int32
 42228  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pVfs)).FxCurrentTime})).f(tls, pVfs, pTimeOut)
 42229  }
 42230  
 42231  func cfGetLastError(tls *libc.TLS, pCfVfs uintptr, n int32, z uintptr) int32 {
 42232  	var pVfs uintptr = (*sqlite3_vfs)(unsafe.Pointer(pCfVfs)).FpAppData
 42233  	return (*struct {
 42234  		f func(*libc.TLS, uintptr, int32, uintptr) int32
 42235  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pVfs)).FxGetLastError})).f(tls, pVfs, n, z)
 42236  }
 42237  
 42238  func processDevSymArgs(tls *libc.TLS, interp uintptr, objc int32, objv uintptr, piDeviceChar uintptr, piSectorSize uintptr) int32 {
 42239  	bp := tls.Alloc(316)
 42240  	defer tls.Free(316)
 42241  
 42242  	*(*[14]DeviceFlag)(unsafe.Pointer(bp + 88)) = [14]DeviceFlag{
 42243  		{FzName: ts + 26403, FiValue: SQLITE_IOCAP_ATOMIC},
 42244  		{FzName: ts + 26410, FiValue: SQLITE_IOCAP_ATOMIC512},
 42245  		{FzName: ts + 26420, FiValue: SQLITE_IOCAP_ATOMIC1K},
 42246  		{FzName: ts + 26429, FiValue: SQLITE_IOCAP_ATOMIC2K},
 42247  		{FzName: ts + 26438, FiValue: SQLITE_IOCAP_ATOMIC4K},
 42248  		{FzName: ts + 26447, FiValue: SQLITE_IOCAP_ATOMIC8K},
 42249  		{FzName: ts + 26456, FiValue: SQLITE_IOCAP_ATOMIC16K},
 42250  		{FzName: ts + 26466, FiValue: SQLITE_IOCAP_ATOMIC32K},
 42251  		{FzName: ts + 26476, FiValue: SQLITE_IOCAP_ATOMIC64K},
 42252  		{FzName: ts + 26486, FiValue: SQLITE_IOCAP_SEQUENTIAL},
 42253  		{FzName: ts + 26497, FiValue: SQLITE_IOCAP_SAFE_APPEND},
 42254  		{FzName: ts + 26509, FiValue: SQLITE_IOCAP_POWERSAFE_OVERWRITE},
 42255  		{FzName: ts + 26529, FiValue: SQLITE_IOCAP_BATCH_ATOMIC},
 42256  		{},
 42257  	}
 42258  	var i int32
 42259  	var iDc int32 = 0
 42260  	*(*int32)(unsafe.Pointer(bp + 68)) = 0
 42261  	var setSectorsize int32 = 0
 42262  	var setDeviceChar int32 = 0
 42263  
 42264  	for i = 0; i < objc; i = i + 2 {
 42265  		var zOpt uintptr = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(i)*8)), bp+64)
 42266  
 42267  		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) &&
 42268  			(*(*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) {
 42269  			tcl.XTcl_AppendResult(tls, interp,
 42270  				libc.VaList(bp, ts+26571, zOpt,
 42271  					ts+26585, 0))
 42272  			return TCL_ERROR
 42273  		}
 42274  		if i == objc-1 {
 42275  			tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+26633, zOpt, ts+11945, 0))
 42276  			return TCL_ERROR
 42277  		}
 42278  
 42279  		if int32(*(*uint8)(unsafe.Pointer(zOpt + 1))) == 's' {
 42280  			if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(i+1)*8)), bp+68) != 0 {
 42281  				return TCL_ERROR
 42282  			}
 42283  			setSectorsize = 1
 42284  		} else {
 42285  			var j int32
 42286  
 42287  			if tcl.XTcl_ListObjGetElements(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(i+1)*8)), bp+72, bp+80) != 0 {
 42288  				return TCL_ERROR
 42289  			}
 42290  			for j = 0; j < *(*int32)(unsafe.Pointer(bp + 72)); j++ {
 42291  				var rc int32
 42292  
 42293  				var pFlag uintptr = tcl.XTcl_DuplicateObj(tls, *(*uintptr)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 80)) + uintptr(j)*8)))
 42294  				(*Tcl_Obj)(unsafe.Pointer(pFlag)).FrefCount++
 42295  				tcl.XTcl_UtfToLower(tls, tcl.XTcl_GetString(tls, pFlag))
 42296  
 42297  				rc = tcl.XTcl_GetIndexFromObjStruct(tls,
 42298  					interp, pFlag, bp+88, int32(unsafe.Sizeof(DeviceFlag{})), ts+26664, 0, bp+312)
 42299  				for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 42300  					var _objPtr uintptr = pFlag
 42301  					if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 42302  						tcl.XTclFreeObj(tls, _objPtr)
 42303  					}
 42304  				}
 42305  				if rc != 0 {
 42306  					return TCL_ERROR
 42307  				}
 42308  
 42309  				iDc = iDc | (*DeviceFlag)(unsafe.Pointer(bp+88+uintptr(*(*int32)(unsafe.Pointer(bp + 312)))*16)).FiValue
 42310  			}
 42311  			setDeviceChar = 1
 42312  		}
 42313  	}
 42314  
 42315  	if setDeviceChar != 0 {
 42316  		*(*int32)(unsafe.Pointer(piDeviceChar)) = iDc
 42317  	}
 42318  	if setSectorsize != 0 {
 42319  		*(*int32)(unsafe.Pointer(piSectorSize)) = *(*int32)(unsafe.Pointer(bp + 68))
 42320  	}
 42321  
 42322  	return TCL_OK
 42323  }
 42324  
 42325  type DeviceFlag = struct {
 42326  	FzName       uintptr
 42327  	FiValue      int32
 42328  	F__ccgo_pad1 [4]byte
 42329  }
 42330  
 42331  func crashNowCmd(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 42332  	if objc != 1 {
 42333  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+584)
 42334  		return TCL_ERROR
 42335  	}
 42336  	writeListSync(tls, uintptr(0), 1)
 42337  
 42338  	return TCL_OK
 42339  }
 42340  
 42341  func crashEnableCmd(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 42342  	bp := tls.Alloc(8)
 42343  	defer tls.Free(8)
 42344  
 42345  	*(*int32)(unsafe.Pointer(bp + 4)) = 0
 42346  
 42347  	if objc != 2 && objc != 3 {
 42348  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+26677)
 42349  		return TCL_ERROR
 42350  	}
 42351  
 42352  	if tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp) != 0 {
 42353  		return TCL_ERROR
 42354  	}
 42355  	if objc == 3 && tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+4) != 0 {
 42356  		return TCL_ERROR
 42357  	}
 42358  
 42359  	if *(*int32)(unsafe.Pointer(bp)) != 0 && crashVfs.FpAppData != 0 || !(*(*int32)(unsafe.Pointer(bp)) != 0) && !(int32(crashVfs.FpAppData) != 0) {
 42360  		return TCL_OK
 42361  	}
 42362  
 42363  	if crashVfs.FpAppData == uintptr(0) {
 42364  		var pOriginalVfs uintptr = sqlite3.Xsqlite3_vfs_find(tls, uintptr(0))
 42365  		crashVfs.FmxPathname = (*sqlite3_vfs)(unsafe.Pointer(pOriginalVfs)).FmxPathname
 42366  		crashVfs.FpAppData = pOriginalVfs
 42367  		crashVfs.FszOsFile = int32(uint64(unsafe.Sizeof(CrashFile{})) + uint64((*sqlite3_vfs)(unsafe.Pointer(pOriginalVfs)).FszOsFile))
 42368  		sqlite3.Xsqlite3_vfs_register(tls, uintptr(unsafe.Pointer(&crashVfs)), *(*int32)(unsafe.Pointer(bp + 4)))
 42369  	} else {
 42370  		crashVfs.FpAppData = uintptr(0)
 42371  		sqlite3.Xsqlite3_vfs_unregister(tls, uintptr(unsafe.Pointer(&crashVfs)))
 42372  	}
 42373  
 42374  	return TCL_OK
 42375  }
 42376  
 42377  var crashVfs = sqlite3_vfs{
 42378  	FiVersion:      2,
 42379  	FzName:         ts + 26694,
 42380  	FxOpen:         0,
 42381  	FxDelete:       0,
 42382  	FxAccess:       0,
 42383  	FxFullPathname: 0,
 42384  	FxDlOpen:       0,
 42385  	FxDlError:      0,
 42386  	FxDlSym:        0,
 42387  	FxDlClose:      0,
 42388  	FxRandomness:   0,
 42389  	FxSleep:        0,
 42390  	FxCurrentTime:  0,
 42391  	FxGetLastError: 0,
 42392  }
 42393  
 42394  func crashParamsObjCmd(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 42395  	bp := tls.Alloc(48)
 42396  	defer tls.Free(48)
 42397  
 42398  	var zCrashFile uintptr
 42399  
 42400  	*(*int32)(unsafe.Pointer(bp + 40)) = -1
 42401  	*(*int32)(unsafe.Pointer(bp + 44)) = -1
 42402  
 42403  	if !(objc < 3) {
 42404  		goto __1
 42405  	}
 42406  	tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+26700)
 42407  	goto error
 42408  __1:
 42409  	;
 42410  	zCrashFile = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(objc-1)*8)), bp+32)
 42411  	if !(uint64(*(*int32)(unsafe.Pointer(bp + 32))) >= uint64(unsafe.Sizeof([500]uint8{}))) {
 42412  		goto __2
 42413  	}
 42414  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+26726, zCrashFile, ts+11945, 0))
 42415  	goto error
 42416  __2:
 42417  	;
 42418  	if !(tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(objc-2)*8)), bp+36) != 0) {
 42419  		goto __3
 42420  	}
 42421  	goto error
 42422  __3:
 42423  	;
 42424  	if !(processDevSymArgs(tls, interp, objc-3, objv+1*8, bp+40, bp+44) != 0) {
 42425  		goto __4
 42426  	}
 42427  	return TCL_ERROR
 42428  __4:
 42429  	;
 42430  	if !(*(*int32)(unsafe.Pointer(bp + 40)) >= 0) {
 42431  		goto __5
 42432  	}
 42433  	g.FiDeviceCharacteristics = *(*int32)(unsafe.Pointer(bp + 40))
 42434  __5:
 42435  	;
 42436  	if !(*(*int32)(unsafe.Pointer(bp + 44)) >= 0) {
 42437  		goto __6
 42438  	}
 42439  	g.FiSectorSize = *(*int32)(unsafe.Pointer(bp + 44))
 42440  __6:
 42441  	;
 42442  	g.FiCrash = *(*int32)(unsafe.Pointer(bp + 36))
 42443  	libc.Xmemcpy(tls, uintptr(unsafe.Pointer(&g))+28, zCrashFile, uint64(*(*int32)(unsafe.Pointer(bp + 32))+1))
 42444  	sqlite3CrashTestEnable = 1
 42445  	return TCL_OK
 42446  
 42447  error:
 42448  	return TCL_ERROR
 42449  }
 42450  
 42451  func devSymObjCmd(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 42452  	bp := tls.Alloc(8)
 42453  	defer tls.Free(8)
 42454  
 42455  	*(*int32)(unsafe.Pointer(bp)) = -1
 42456  	*(*int32)(unsafe.Pointer(bp + 4)) = -1
 42457  
 42458  	if processDevSymArgs(tls, interp, objc-1, objv+1*8, bp, bp+4) != 0 {
 42459  		return TCL_ERROR
 42460  	}
 42461  	devsym_register(tls, *(*int32)(unsafe.Pointer(bp)), *(*int32)(unsafe.Pointer(bp + 4)))
 42462  
 42463  	return TCL_OK
 42464  }
 42465  
 42466  func writeCrashObjCmd(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 42467  	bp := tls.Alloc(4)
 42468  	defer tls.Free(4)
 42469  
 42470  	*(*int32)(unsafe.Pointer(bp)) = 0
 42471  
 42472  	if objc != 2 {
 42473  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+26750)
 42474  		return TCL_ERROR
 42475  	}
 42476  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp) != 0 {
 42477  		return TCL_ERROR
 42478  	}
 42479  
 42480  	devsym_crash_on_write(tls, *(*int32)(unsafe.Pointer(bp)))
 42481  	return TCL_OK
 42482  }
 42483  
 42484  func dsUnregisterObjCmd(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 42485  	if objc != 1 {
 42486  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+584)
 42487  		return TCL_ERROR
 42488  	}
 42489  
 42490  	devsym_unregister(tls)
 42491  	return TCL_OK
 42492  }
 42493  
 42494  func jtObjCmd(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 42495  	bp := tls.Alloc(48)
 42496  	defer tls.Free(48)
 42497  
 42498  	var zParent uintptr = uintptr(0)
 42499  
 42500  	if objc != 2 && objc != 3 {
 42501  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+26757)
 42502  		return TCL_ERROR
 42503  	}
 42504  	zParent = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 42505  	if objc == 3 {
 42506  		if libc.Xstrcmp(tls, zParent, ts+26779) != 0 {
 42507  			tcl.XTcl_AppendResult(tls, interp,
 42508  				libc.VaList(bp, ts+11851, zParent, ts+26788, 0))
 42509  			return TCL_ERROR
 42510  		}
 42511  		zParent = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 42512  	}
 42513  
 42514  	if !(int32(*(*uint8)(unsafe.Pointer(zParent))) != 0) {
 42515  		zParent = uintptr(0)
 42516  	}
 42517  	if jt_register(tls, zParent, libc.Bool32(objc == 3)) != 0 {
 42518  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+26808, 0))
 42519  		return TCL_ERROR
 42520  	}
 42521  
 42522  	return TCL_OK
 42523  }
 42524  
 42525  func jtUnregisterObjCmd(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 42526  	if objc != 1 {
 42527  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+584)
 42528  		return TCL_ERROR
 42529  	}
 42530  
 42531  	jt_unregister(tls)
 42532  	return TCL_OK
 42533  }
 42534  
 42535  func Sqlitetest6_Init(tls *libc.TLS, interp uintptr) int32 {
 42536  	tcl.XTcl_CreateObjCommand(tls, interp, ts+26829, *(*uintptr)(unsafe.Pointer(&struct {
 42537  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 42538  	}{crashEnableCmd})), uintptr(0), uintptr(0))
 42539  	tcl.XTcl_CreateObjCommand(tls, interp, ts+26850, *(*uintptr)(unsafe.Pointer(&struct {
 42540  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 42541  	}{crashParamsObjCmd})), uintptr(0), uintptr(0))
 42542  	tcl.XTcl_CreateObjCommand(tls, interp, ts+26870, *(*uintptr)(unsafe.Pointer(&struct {
 42543  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 42544  	}{crashNowCmd})), uintptr(0), uintptr(0))
 42545  	tcl.XTcl_CreateObjCommand(tls, interp, ts+26888, *(*uintptr)(unsafe.Pointer(&struct {
 42546  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 42547  	}{devSymObjCmd})), uintptr(0), uintptr(0))
 42548  	tcl.XTcl_CreateObjCommand(tls, interp, ts+26912, *(*uintptr)(unsafe.Pointer(&struct {
 42549  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 42550  	}{writeCrashObjCmd})), uintptr(0), uintptr(0))
 42551  	tcl.XTcl_CreateObjCommand(tls, interp, ts+26935, *(*uintptr)(unsafe.Pointer(&struct {
 42552  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 42553  	}{dsUnregisterObjCmd})), uintptr(0), uintptr(0))
 42554  	tcl.XTcl_CreateObjCommand(tls, interp, ts+26953, *(*uintptr)(unsafe.Pointer(&struct {
 42555  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 42556  	}{jtObjCmd})), uintptr(0), uintptr(0))
 42557  	tcl.XTcl_CreateObjCommand(tls, interp, ts+26969, *(*uintptr)(unsafe.Pointer(&struct {
 42558  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 42559  	}{jtUnregisterObjCmd})), uintptr(0), uintptr(0))
 42560  	return TCL_OK
 42561  }
 42562  
 42563  type Thread1 = struct {
 42564  	FzFilename   uintptr
 42565  	FxOp         uintptr
 42566  	FzArg        uintptr
 42567  	Fopnum       int32
 42568  	Fbusy        int32
 42569  	Fcompleted   int32
 42570  	F__ccgo_pad1 [4]byte
 42571  	Fdb          uintptr
 42572  	FpStmt       uintptr
 42573  	FzErr        uintptr
 42574  	FzStaticErr  uintptr
 42575  	Frc          int32
 42576  	Fargc        int32
 42577  	Fargv        [100]uintptr
 42578  	Fcolv        [100]uintptr
 42579  	FnServer     int32
 42580  	F__ccgo_pad2 [4]byte
 42581  }
 42582  
 42583  var threadset1 [26]Thread1
 42584  
 42585  func client_main(tls *libc.TLS, pArg uintptr) uintptr {
 42586  	var p uintptr = pArg
 42587  	if (*Thread1)(unsafe.Pointer(p)).Fdb != 0 {
 42588  		sqlite3_client_close(tls, (*Thread1)(unsafe.Pointer(p)).Fdb)
 42589  	}
 42590  	sqlite3_client_open(tls, (*Thread1)(unsafe.Pointer(p)).FzFilename, p+40)
 42591  	if SQLITE_OK != sqlite3.Xsqlite3_errcode(tls, (*Thread1)(unsafe.Pointer(p)).Fdb) {
 42592  		(*Thread1)(unsafe.Pointer(p)).FzErr = libc.Xstrdup(tls, sqlite3.Xsqlite3_errmsg(tls, (*Thread1)(unsafe.Pointer(p)).Fdb))
 42593  		sqlite3_client_close(tls, (*Thread1)(unsafe.Pointer(p)).Fdb)
 42594  		(*Thread1)(unsafe.Pointer(p)).Fdb = uintptr(0)
 42595  	}
 42596  	(*Thread1)(unsafe.Pointer(p)).FpStmt = uintptr(0)
 42597  	(*Thread1)(unsafe.Pointer(p)).Fcompleted = 1
 42598  	for (*Thread1)(unsafe.Pointer(p)).Fopnum <= (*Thread1)(unsafe.Pointer(p)).Fcompleted {
 42599  		libc.Xsched_yield(tls)
 42600  	}
 42601  	for (*Thread1)(unsafe.Pointer(p)).FxOp != 0 {
 42602  		if (*Thread1)(unsafe.Pointer(p)).FzErr != 0 && (*Thread1)(unsafe.Pointer(p)).FzErr != (*Thread1)(unsafe.Pointer(p)).FzStaticErr {
 42603  			sqlite3.Xsqlite3_free(tls, (*Thread1)(unsafe.Pointer(p)).FzErr)
 42604  			(*Thread1)(unsafe.Pointer(p)).FzErr = uintptr(0)
 42605  		}
 42606  		(*struct{ f func(*libc.TLS, uintptr) })(unsafe.Pointer(&struct{ uintptr }{(*Thread1)(unsafe.Pointer(p)).FxOp})).f(tls, p)
 42607  		(*Thread1)(unsafe.Pointer(p)).Fcompleted++
 42608  		for (*Thread1)(unsafe.Pointer(p)).Fopnum <= (*Thread1)(unsafe.Pointer(p)).Fcompleted {
 42609  			libc.Xsched_yield(tls)
 42610  		}
 42611  	}
 42612  	if (*Thread1)(unsafe.Pointer(p)).FpStmt != 0 {
 42613  		sqlite3_client_finalize(tls, (*Thread1)(unsafe.Pointer(p)).FpStmt)
 42614  		(*Thread1)(unsafe.Pointer(p)).FpStmt = uintptr(0)
 42615  	}
 42616  	if (*Thread1)(unsafe.Pointer(p)).Fdb != 0 {
 42617  		sqlite3_client_close(tls, (*Thread1)(unsafe.Pointer(p)).Fdb)
 42618  		(*Thread1)(unsafe.Pointer(p)).Fdb = uintptr(0)
 42619  	}
 42620  	if (*Thread1)(unsafe.Pointer(p)).FzErr != 0 && (*Thread1)(unsafe.Pointer(p)).FzErr != (*Thread1)(unsafe.Pointer(p)).FzStaticErr {
 42621  		sqlite3.Xsqlite3_free(tls, (*Thread1)(unsafe.Pointer(p)).FzErr)
 42622  		(*Thread1)(unsafe.Pointer(p)).FzErr = uintptr(0)
 42623  	}
 42624  	(*Thread1)(unsafe.Pointer(p)).Fcompleted++
 42625  	sqlite3.Xsqlite3_thread_cleanup(tls)
 42626  	return uintptr(0)
 42627  }
 42628  
 42629  func parse_client_id(tls *libc.TLS, interp uintptr, zArg uintptr) int32 {
 42630  	bp := tls.Alloc(16)
 42631  	defer tls.Free(16)
 42632  
 42633  	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) {
 42634  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+25741, 0))
 42635  		return -1
 42636  	}
 42637  	return int32(*(*uint8)(unsafe.Pointer(zArg))) - 'A'
 42638  }
 42639  
 42640  func tcl_client_create(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 42641  	bp := tls.Alloc(96)
 42642  	defer tls.Free(96)
 42643  
 42644  	var i int32
 42645  
 42646  	var rc int32
 42647  
 42648  	if argc != 3 {
 42649  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 42650  			ts+25780, 0))
 42651  		return TCL_ERROR
 42652  	}
 42653  	i = parse_client_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 42654  	if i < 0 {
 42655  		return TCL_ERROR
 42656  	}
 42657  	if threadset1[i].Fbusy != 0 {
 42658  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25793, *(*uintptr)(unsafe.Pointer(argv + 1*8)), ts+25801, 0))
 42659  		return TCL_ERROR
 42660  	}
 42661  	threadset1[i].Fbusy = 1
 42662  	sqlite3.Xsqlite3_free(tls, threadset1[i].FzFilename)
 42663  	threadset1[i].FzFilename = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp+64, *(*uintptr)(unsafe.Pointer(argv + 2*8))))
 42664  	threadset1[i].Fopnum = 1
 42665  	threadset1[i].Fcompleted = 0
 42666  	rc = libc.Xpthread_create(tls, bp+88, uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 42667  		f func(*libc.TLS, uintptr) uintptr
 42668  	}{client_main})), uintptr(unsafe.Pointer(&threadset1))+uintptr(i)*1688)
 42669  	if rc != 0 {
 42670  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+72, ts+25821, 0))
 42671  		sqlite3.Xsqlite3_free(tls, threadset1[i].FzFilename)
 42672  		threadset1[i].Fbusy = 0
 42673  		return TCL_ERROR
 42674  	}
 42675  	libc.Xpthread_detach(tls, *(*pthread_t)(unsafe.Pointer(bp + 88)))
 42676  	if threadset1[i].FnServer == 0 {
 42677  		threadset1[i].FnServer = 1
 42678  		sqlite3_server_start2(tls, uintptr(unsafe.Pointer(&threadset1))+uintptr(i)*1688+1680)
 42679  	}
 42680  	return TCL_OK
 42681  }
 42682  
 42683  func client_wait(tls *libc.TLS, p uintptr) {
 42684  	for (*Thread1)(unsafe.Pointer(p)).Fopnum > (*Thread1)(unsafe.Pointer(p)).Fcompleted {
 42685  		libc.Xsched_yield(tls)
 42686  	}
 42687  }
 42688  
 42689  func tcl_client_wait(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 42690  	bp := tls.Alloc(48)
 42691  	defer tls.Free(48)
 42692  
 42693  	var i int32
 42694  
 42695  	if argc != 2 {
 42696  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 42697  			ts+25849, 0))
 42698  		return TCL_ERROR
 42699  	}
 42700  	i = parse_client_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 42701  	if i < 0 {
 42702  		return TCL_ERROR
 42703  	}
 42704  	if !(threadset1[i].Fbusy != 0) {
 42705  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25853, 0))
 42706  		return TCL_ERROR
 42707  	}
 42708  	client_wait(tls, uintptr(unsafe.Pointer(&threadset1))+uintptr(i)*1688)
 42709  	return TCL_OK
 42710  }
 42711  
 42712  func stop_thread(tls *libc.TLS, p uintptr) {
 42713  	client_wait(tls, p)
 42714  	(*Thread1)(unsafe.Pointer(p)).FxOp = uintptr(0)
 42715  	(*Thread1)(unsafe.Pointer(p)).Fopnum++
 42716  	client_wait(tls, p)
 42717  	sqlite3.Xsqlite3_free(tls, (*Thread1)(unsafe.Pointer(p)).FzArg)
 42718  	(*Thread1)(unsafe.Pointer(p)).FzArg = uintptr(0)
 42719  	sqlite3.Xsqlite3_free(tls, (*Thread1)(unsafe.Pointer(p)).FzFilename)
 42720  	(*Thread1)(unsafe.Pointer(p)).FzFilename = uintptr(0)
 42721  	(*Thread1)(unsafe.Pointer(p)).Fbusy = 0
 42722  }
 42723  
 42724  func tcl_client_halt(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 42725  	bp := tls.Alloc(48)
 42726  	defer tls.Free(48)
 42727  
 42728  	var i int32
 42729  
 42730  	if argc != 2 {
 42731  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 42732  			ts+25849, 0))
 42733  		return TCL_ERROR
 42734  	}
 42735  	if int32(*(*uint8)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(argv + 1*8))))) == '*' && int32(*(*uint8)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(argv + 1*8)) + 1))) == 0 {
 42736  		for i = 0; i < N_THREAD; i++ {
 42737  			if threadset1[i].Fbusy != 0 {
 42738  				stop_thread(tls, uintptr(unsafe.Pointer(&threadset1))+uintptr(i)*1688)
 42739  			}
 42740  		}
 42741  	} else {
 42742  		i = parse_client_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 42743  		if i < 0 {
 42744  			return TCL_ERROR
 42745  		}
 42746  		if !(threadset1[i].Fbusy != 0) {
 42747  			tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25853, 0))
 42748  			return TCL_ERROR
 42749  		}
 42750  		stop_thread(tls, uintptr(unsafe.Pointer(&threadset1))+uintptr(i)*1688)
 42751  	}
 42752  
 42753  	for i = 0; i < N_THREAD && threadset1[i].Fbusy == 0; i++ {
 42754  	}
 42755  	if i >= N_THREAD {
 42756  		sqlite3_server_stop(tls)
 42757  		for 1 != 0 {
 42758  			for i = 0; i < N_THREAD && threadset1[i].FnServer == 0; i++ {
 42759  			}
 42760  			if i == N_THREAD {
 42761  				break
 42762  			}
 42763  			libc.Xsched_yield(tls)
 42764  		}
 42765  	}
 42766  	return TCL_OK
 42767  }
 42768  
 42769  func tcl_client_argc(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 42770  	bp := tls.Alloc(172)
 42771  	defer tls.Free(172)
 42772  
 42773  	var i int32
 42774  
 42775  	if argc != 2 {
 42776  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 42777  			ts+25849, 0))
 42778  		return TCL_ERROR
 42779  	}
 42780  	i = parse_client_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 42781  	if i < 0 {
 42782  		return TCL_ERROR
 42783  	}
 42784  	if !(threadset1[i].Fbusy != 0) {
 42785  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25853, 0))
 42786  		return TCL_ERROR
 42787  	}
 42788  	client_wait(tls, uintptr(unsafe.Pointer(&threadset1))+uintptr(i)*1688)
 42789  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([100]uint8{})), bp+72, ts+1333, libc.VaList(bp+48, threadset1[i].Fargc))
 42790  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+56, bp+72, 0))
 42791  	return TCL_OK
 42792  }
 42793  
 42794  func tcl_client_argv(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 42795  	bp := tls.Alloc(84)
 42796  	defer tls.Free(84)
 42797  
 42798  	var i int32
 42799  
 42800  	if argc != 3 {
 42801  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 42802  			ts+25868, 0))
 42803  		return TCL_ERROR
 42804  	}
 42805  	i = parse_client_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 42806  	if i < 0 {
 42807  		return TCL_ERROR
 42808  	}
 42809  	if !(threadset1[i].Fbusy != 0) {
 42810  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25853, 0))
 42811  		return TCL_ERROR
 42812  	}
 42813  	if tcl.XTcl_GetInt(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 2*8)), bp+80) != 0 {
 42814  		return TCL_ERROR
 42815  	}
 42816  	client_wait(tls, uintptr(unsafe.Pointer(&threadset1))+uintptr(i)*1688)
 42817  	if *(*int32)(unsafe.Pointer(bp + 80)) < 0 || *(*int32)(unsafe.Pointer(bp + 80)) >= threadset1[i].Fargc {
 42818  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+48, ts+25874, 0))
 42819  		return TCL_ERROR
 42820  	}
 42821  	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))
 42822  	return TCL_OK
 42823  }
 42824  
 42825  func tcl_client_colname(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 42826  	bp := tls.Alloc(84)
 42827  	defer tls.Free(84)
 42828  
 42829  	var i int32
 42830  
 42831  	if argc != 3 {
 42832  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 42833  			ts+25868, 0))
 42834  		return TCL_ERROR
 42835  	}
 42836  	i = parse_client_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 42837  	if i < 0 {
 42838  		return TCL_ERROR
 42839  	}
 42840  	if !(threadset1[i].Fbusy != 0) {
 42841  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25853, 0))
 42842  		return TCL_ERROR
 42843  	}
 42844  	if tcl.XTcl_GetInt(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 2*8)), bp+80) != 0 {
 42845  		return TCL_ERROR
 42846  	}
 42847  	client_wait(tls, uintptr(unsafe.Pointer(&threadset1))+uintptr(i)*1688)
 42848  	if *(*int32)(unsafe.Pointer(bp + 80)) < 0 || *(*int32)(unsafe.Pointer(bp + 80)) >= threadset1[i].Fargc {
 42849  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+48, ts+25874, 0))
 42850  		return TCL_ERROR
 42851  	}
 42852  	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))
 42853  	return TCL_OK
 42854  }
 42855  
 42856  func tcl_client_result(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 42857  	bp := tls.Alloc(64)
 42858  	defer tls.Free(64)
 42859  
 42860  	var i int32
 42861  	var zName uintptr
 42862  
 42863  	if argc != 2 {
 42864  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 42865  			ts+25849, 0))
 42866  		return TCL_ERROR
 42867  	}
 42868  	i = parse_client_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 42869  	if i < 0 {
 42870  		return TCL_ERROR
 42871  	}
 42872  	if !(threadset1[i].Fbusy != 0) {
 42873  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25853, 0))
 42874  		return TCL_ERROR
 42875  	}
 42876  	client_wait(tls, uintptr(unsafe.Pointer(&threadset1))+uintptr(i)*1688)
 42877  	zName = sqlite3.Xsqlite3ErrName(tls, threadset1[i].Frc)
 42878  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+48, zName, 0))
 42879  	return TCL_OK
 42880  }
 42881  
 42882  func tcl_client_error(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 42883  	bp := tls.Alloc(64)
 42884  	defer tls.Free(64)
 42885  
 42886  	var i int32
 42887  
 42888  	if argc != 2 {
 42889  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 42890  			ts+25849, 0))
 42891  		return TCL_ERROR
 42892  	}
 42893  	i = parse_client_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 42894  	if i < 0 {
 42895  		return TCL_ERROR
 42896  	}
 42897  	if !(threadset1[i].Fbusy != 0) {
 42898  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25853, 0))
 42899  		return TCL_ERROR
 42900  	}
 42901  	client_wait(tls, uintptr(unsafe.Pointer(&threadset1))+uintptr(i)*1688)
 42902  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+48, threadset1[i].FzErr, 0))
 42903  	return TCL_OK
 42904  }
 42905  
 42906  func do_compile1(tls *libc.TLS, p uintptr) {
 42907  	if (*Thread1)(unsafe.Pointer(p)).Fdb == uintptr(0) {
 42908  		(*Thread1)(unsafe.Pointer(p)).FzErr = libc.AssignPtrUintptr(p+64, ts+25901)
 42909  		(*Thread1)(unsafe.Pointer(p)).Frc = SQLITE_ERROR
 42910  		return
 42911  	}
 42912  	if (*Thread1)(unsafe.Pointer(p)).FpStmt != 0 {
 42913  		sqlite3_client_finalize(tls, (*Thread1)(unsafe.Pointer(p)).FpStmt)
 42914  		(*Thread1)(unsafe.Pointer(p)).FpStmt = uintptr(0)
 42915  	}
 42916  	(*Thread1)(unsafe.Pointer(p)).Frc = sqlite3_client_prepare(tls, (*Thread1)(unsafe.Pointer(p)).Fdb, (*Thread1)(unsafe.Pointer(p)).FzArg, -1, p+48, uintptr(0))
 42917  }
 42918  
 42919  func tcl_client_compile(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 42920  	bp := tls.Alloc(56)
 42921  	defer tls.Free(56)
 42922  
 42923  	var i int32
 42924  	if argc != 3 {
 42925  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 42926  			ts+25921, 0))
 42927  		return TCL_ERROR
 42928  	}
 42929  	i = parse_client_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 42930  	if i < 0 {
 42931  		return TCL_ERROR
 42932  	}
 42933  	if !(threadset1[i].Fbusy != 0) {
 42934  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25853, 0))
 42935  		return TCL_ERROR
 42936  	}
 42937  	client_wait(tls, uintptr(unsafe.Pointer(&threadset1))+uintptr(i)*1688)
 42938  	threadset1[i].FxOp = *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{do_compile1}))
 42939  	sqlite3.Xsqlite3_free(tls, threadset1[i].FzArg)
 42940  	threadset1[i].FzArg = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp+48, *(*uintptr)(unsafe.Pointer(argv + 2*8))))
 42941  	threadset1[i].Fopnum++
 42942  	return TCL_OK
 42943  }
 42944  
 42945  func do_step1(tls *libc.TLS, p uintptr) {
 42946  	var i int32
 42947  	if (*Thread1)(unsafe.Pointer(p)).FpStmt == uintptr(0) {
 42948  		(*Thread1)(unsafe.Pointer(p)).FzErr = libc.AssignPtrUintptr(p+64, ts+25929)
 42949  		(*Thread1)(unsafe.Pointer(p)).Frc = SQLITE_ERROR
 42950  		return
 42951  	}
 42952  	(*Thread1)(unsafe.Pointer(p)).Frc = sqlite3_client_step(tls, (*Thread1)(unsafe.Pointer(p)).FpStmt)
 42953  	if (*Thread1)(unsafe.Pointer(p)).Frc == SQLITE_ROW {
 42954  		(*Thread1)(unsafe.Pointer(p)).Fargc = sqlite3.Xsqlite3_column_count(tls, (*Thread1)(unsafe.Pointer(p)).FpStmt)
 42955  		for i = 0; i < sqlite3.Xsqlite3_data_count(tls, (*Thread1)(unsafe.Pointer(p)).FpStmt); i++ {
 42956  			*(*uintptr)(unsafe.Pointer(p + 80 + uintptr(i)*8)) = sqlite3.Xsqlite3_column_text(tls, (*Thread1)(unsafe.Pointer(p)).FpStmt, i)
 42957  		}
 42958  		for i = 0; i < (*Thread1)(unsafe.Pointer(p)).Fargc; i++ {
 42959  			*(*uintptr)(unsafe.Pointer(p + 880 + uintptr(i)*8)) = sqlite3.Xsqlite3_column_name(tls, (*Thread1)(unsafe.Pointer(p)).FpStmt, i)
 42960  		}
 42961  	}
 42962  }
 42963  
 42964  func tcl_client_step(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 42965  	bp := tls.Alloc(48)
 42966  	defer tls.Free(48)
 42967  
 42968  	var i int32
 42969  	if argc != 2 {
 42970  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 42971  			ts+25958, 0))
 42972  		return TCL_ERROR
 42973  	}
 42974  	i = parse_client_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 42975  	if i < 0 {
 42976  		return TCL_ERROR
 42977  	}
 42978  	if !(threadset1[i].Fbusy != 0) {
 42979  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25853, 0))
 42980  		return TCL_ERROR
 42981  	}
 42982  	client_wait(tls, uintptr(unsafe.Pointer(&threadset1))+uintptr(i)*1688)
 42983  	threadset1[i].FxOp = *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{do_step1}))
 42984  	threadset1[i].Fopnum++
 42985  	return TCL_OK
 42986  }
 42987  
 42988  func do_finalize1(tls *libc.TLS, p uintptr) {
 42989  	if (*Thread1)(unsafe.Pointer(p)).FpStmt == uintptr(0) {
 42990  		(*Thread1)(unsafe.Pointer(p)).FzErr = libc.AssignPtrUintptr(p+64, ts+25929)
 42991  		(*Thread1)(unsafe.Pointer(p)).Frc = SQLITE_ERROR
 42992  		return
 42993  	}
 42994  	(*Thread1)(unsafe.Pointer(p)).Frc = sqlite3_client_finalize(tls, (*Thread1)(unsafe.Pointer(p)).FpStmt)
 42995  	(*Thread1)(unsafe.Pointer(p)).FpStmt = uintptr(0)
 42996  }
 42997  
 42998  func tcl_client_finalize(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 42999  	bp := tls.Alloc(48)
 43000  	defer tls.Free(48)
 43001  
 43002  	var i int32
 43003  	if argc != 2 {
 43004  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 43005  			ts+25958, 0))
 43006  		return TCL_ERROR
 43007  	}
 43008  	i = parse_client_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 43009  	if i < 0 {
 43010  		return TCL_ERROR
 43011  	}
 43012  	if !(threadset1[i].Fbusy != 0) {
 43013  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25853, 0))
 43014  		return TCL_ERROR
 43015  	}
 43016  	client_wait(tls, uintptr(unsafe.Pointer(&threadset1))+uintptr(i)*1688)
 43017  	threadset1[i].FxOp = *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{do_finalize1}))
 43018  	sqlite3.Xsqlite3_free(tls, threadset1[i].FzArg)
 43019  	threadset1[i].FzArg = uintptr(0)
 43020  	threadset1[i].Fopnum++
 43021  	return TCL_OK
 43022  }
 43023  
 43024  func do_reset(tls *libc.TLS, p uintptr) {
 43025  	if (*Thread1)(unsafe.Pointer(p)).FpStmt == uintptr(0) {
 43026  		(*Thread1)(unsafe.Pointer(p)).FzErr = libc.AssignPtrUintptr(p+64, ts+25929)
 43027  		(*Thread1)(unsafe.Pointer(p)).Frc = SQLITE_ERROR
 43028  		return
 43029  	}
 43030  	(*Thread1)(unsafe.Pointer(p)).Frc = sqlite3_client_reset(tls, (*Thread1)(unsafe.Pointer(p)).FpStmt)
 43031  	(*Thread1)(unsafe.Pointer(p)).FpStmt = uintptr(0)
 43032  }
 43033  
 43034  func tcl_client_reset(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 43035  	bp := tls.Alloc(48)
 43036  	defer tls.Free(48)
 43037  
 43038  	var i int32
 43039  	if argc != 2 {
 43040  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 43041  			ts+25958, 0))
 43042  		return TCL_ERROR
 43043  	}
 43044  	i = parse_client_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 43045  	if i < 0 {
 43046  		return TCL_ERROR
 43047  	}
 43048  	if !(threadset1[i].Fbusy != 0) {
 43049  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25853, 0))
 43050  		return TCL_ERROR
 43051  	}
 43052  	client_wait(tls, uintptr(unsafe.Pointer(&threadset1))+uintptr(i)*1688)
 43053  	threadset1[i].FxOp = *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{do_reset}))
 43054  	sqlite3.Xsqlite3_free(tls, threadset1[i].FzArg)
 43055  	threadset1[i].FzArg = uintptr(0)
 43056  	threadset1[i].Fopnum++
 43057  	return TCL_OK
 43058  }
 43059  
 43060  func tcl_client_swap(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 43061  	bp := tls.Alloc(64)
 43062  	defer tls.Free(64)
 43063  
 43064  	var i int32
 43065  	var j int32
 43066  	var temp uintptr
 43067  	if argc != 3 {
 43068  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 43069  			ts+25963, 0))
 43070  		return TCL_ERROR
 43071  	}
 43072  	i = parse_client_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 43073  	if i < 0 {
 43074  		return TCL_ERROR
 43075  	}
 43076  	if !(threadset1[i].Fbusy != 0) {
 43077  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25853, 0))
 43078  		return TCL_ERROR
 43079  	}
 43080  	client_wait(tls, uintptr(unsafe.Pointer(&threadset1))+uintptr(i)*1688)
 43081  	j = parse_client_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 2*8)))
 43082  	if j < 0 {
 43083  		return TCL_ERROR
 43084  	}
 43085  	if !(threadset1[j].Fbusy != 0) {
 43086  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+48, ts+25853, 0))
 43087  		return TCL_ERROR
 43088  	}
 43089  	client_wait(tls, uintptr(unsafe.Pointer(&threadset1))+uintptr(j)*1688)
 43090  	temp = threadset1[i].Fdb
 43091  	threadset1[i].Fdb = threadset1[j].Fdb
 43092  	threadset1[j].Fdb = temp
 43093  	return TCL_OK
 43094  }
 43095  
 43096  func Sqlitetest7_Init(tls *libc.TLS, interp uintptr) int32 {
 43097  	var i int32
 43098  
 43099  	for i = 0; uint64(i) < uint64(unsafe.Sizeof(aCmd6))/uint64(unsafe.Sizeof(struct {
 43100  		FzName uintptr
 43101  		FxProc uintptr
 43102  	}{})); i++ {
 43103  		tcl.XTcl_CreateCommand(tls, interp, aCmd6[i].FzName, aCmd6[i].FxProc, uintptr(0), uintptr(0))
 43104  	}
 43105  	return TCL_OK
 43106  }
 43107  
 43108  var aCmd6 = [13]struct {
 43109  	FzName uintptr
 43110  	FxProc uintptr
 43111  }{
 43112  	{FzName: ts + 26987, FxProc: 0},
 43113  	{FzName: ts + 27001, FxProc: 0},
 43114  	{FzName: ts + 27013, FxProc: 0},
 43115  	{FzName: ts + 27025, FxProc: 0},
 43116  	{FzName: ts + 27037, FxProc: 0},
 43117  	{FzName: ts + 27049, FxProc: 0},
 43118  	{FzName: ts + 27064, FxProc: 0},
 43119  	{FzName: ts + 27078, FxProc: 0},
 43120  	{FzName: ts + 27091, FxProc: 0},
 43121  	{FzName: ts + 27106, FxProc: 0},
 43122  	{FzName: ts + 27118, FxProc: 0},
 43123  	{FzName: ts + 27131, FxProc: 0},
 43124  	{FzName: ts + 27147, FxProc: 0},
 43125  }
 43126  
 43127  type echo_vtab1 = struct {
 43128  	Fbase          sqlite3_vtab
 43129  	Finterp        uintptr
 43130  	Fdb            uintptr
 43131  	FisPattern     int32
 43132  	FinTransaction int32
 43133  	FzThis         uintptr
 43134  	FzTableName    uintptr
 43135  	FzLogName      uintptr
 43136  	FnCol          int32
 43137  	F__ccgo_pad1   [4]byte
 43138  	FaIndex        uintptr
 43139  	FaCol          uintptr
 43140  }
 43141  
 43142  type echo_vtab = echo_vtab1
 43143  type echo_cursor1 = struct {
 43144  	Fbase  sqlite3_vtab_cursor
 43145  	FpStmt uintptr
 43146  }
 43147  
 43148  type echo_cursor = echo_cursor1
 43149  
 43150  func simulateVtabError(tls *libc.TLS, p uintptr, zMethod uintptr) int32 {
 43151  	bp := tls.Alloc(152)
 43152  	defer tls.Free(152)
 43153  
 43154  	var zErr uintptr
 43155  
 43156  	*(*uint8)(unsafe.Pointer(bp + 24 + 127)) = uint8(0)
 43157  	sqlite3.Xsqlite3_snprintf(tls, 127, bp+24, ts+27159, libc.VaList(bp, zMethod, (*echo_vtab)(unsafe.Pointer(p)).FzTableName))
 43158  	zErr = tcl.XTcl_GetVar2(tls, (*echo_vtab)(unsafe.Pointer(p)).Finterp, bp+24, uintptr(0), TCL_GLOBAL_ONLY)
 43159  	if zErr != 0 {
 43160  		(*echo_vtab)(unsafe.Pointer(p)).Fbase.FzErrMsg = sqlite3.Xsqlite3_mprintf(tls, ts+27183, libc.VaList(bp+16, zErr))
 43161  	}
 43162  	return libc.Bool32(zErr != uintptr(0))
 43163  }
 43164  
 43165  func dequoteString(tls *libc.TLS, z uintptr) {
 43166  	var quote int32
 43167  	var i int32
 43168  	var j int32
 43169  	if z == uintptr(0) {
 43170  		return
 43171  	}
 43172  	quote = int32(*(*uint8)(unsafe.Pointer(z)))
 43173  	switch quote {
 43174  	case '\'':
 43175  		break
 43176  	case '"':
 43177  		break
 43178  	case '`':
 43179  		break
 43180  	case '[':
 43181  		quote = ']'
 43182  		break
 43183  	default:
 43184  		return
 43185  	}
 43186  	i = 1
 43187  	j = 0
 43188  	for ; *(*uint8)(unsafe.Pointer(z + uintptr(i))) != 0; i++ {
 43189  		if int32(*(*uint8)(unsafe.Pointer(z + uintptr(i)))) == quote {
 43190  			if int32(*(*uint8)(unsafe.Pointer(z + uintptr(i+1)))) == quote {
 43191  				*(*uint8)(unsafe.Pointer(z + uintptr(libc.PostIncInt32(&j, 1)))) = uint8(quote)
 43192  				i++
 43193  			} else {
 43194  				*(*uint8)(unsafe.Pointer(z + uintptr(libc.PostIncInt32(&j, 1)))) = uint8(0)
 43195  				break
 43196  			}
 43197  		} else {
 43198  			*(*uint8)(unsafe.Pointer(z + uintptr(libc.PostIncInt32(&j, 1)))) = *(*uint8)(unsafe.Pointer(z + uintptr(i)))
 43199  		}
 43200  	}
 43201  }
 43202  
 43203  func getColumnNames(tls *libc.TLS, db uintptr, zTab uintptr, paCol uintptr, pnCol uintptr) int32 {
 43204  	bp := tls.Alloc(24)
 43205  	defer tls.Free(24)
 43206  
 43207  	var aCol uintptr
 43208  	var zSql uintptr
 43209  
 43210  	var rc int32
 43211  	var nCol int32
 43212  	var zName uintptr
 43213  	var ii int32
 43214  	var nBytes int32
 43215  	var zSpace uintptr
 43216  	aCol = uintptr(0)
 43217  	*(*uintptr)(unsafe.Pointer(bp + 16)) = uintptr(0)
 43218  	rc = SQLITE_OK
 43219  	nCol = 0
 43220  
 43221  	zSql = sqlite3.Xsqlite3_mprintf(tls, ts+27203, libc.VaList(bp, zTab))
 43222  	if !!(zSql != 0) {
 43223  		goto __1
 43224  	}
 43225  	rc = SQLITE_NOMEM
 43226  	goto out
 43227  __1:
 43228  	;
 43229  	rc = sqlite3.Xsqlite3_prepare(tls, db, zSql, -1, bp+16, uintptr(0))
 43230  	sqlite3.Xsqlite3_free(tls, zSql)
 43231  
 43232  	if !(rc == SQLITE_OK) {
 43233  		goto __2
 43234  	}
 43235  	nCol = sqlite3.Xsqlite3_column_count(tls, *(*uintptr)(unsafe.Pointer(bp + 16)))
 43236  
 43237  	nBytes = int32(uint64(unsafe.Sizeof(uintptr(0))) * uint64(nCol))
 43238  	ii = 0
 43239  __3:
 43240  	if !(ii < nCol) {
 43241  		goto __5
 43242  	}
 43243  	zName = sqlite3.Xsqlite3_column_name(tls, *(*uintptr)(unsafe.Pointer(bp + 16)), ii)
 43244  	if !!(zName != 0) {
 43245  		goto __6
 43246  	}
 43247  	rc = SQLITE_NOMEM
 43248  	goto out
 43249  __6:
 43250  	;
 43251  	nBytes = nBytes + (int32(libc.Xstrlen(tls, zName)) + 1)
 43252  	goto __4
 43253  __4:
 43254  	ii++
 43255  	goto __3
 43256  	goto __5
 43257  __5:
 43258  	;
 43259  	aCol = sqlite3.Xsqlite3MallocZero(tls, uint64(nBytes))
 43260  	if !!(aCol != 0) {
 43261  		goto __7
 43262  	}
 43263  	rc = SQLITE_NOMEM
 43264  	goto out
 43265  __7:
 43266  	;
 43267  	zSpace = aCol + uintptr(nCol)*8
 43268  	ii = 0
 43269  __8:
 43270  	if !(ii < nCol) {
 43271  		goto __10
 43272  	}
 43273  	*(*uintptr)(unsafe.Pointer(aCol + uintptr(ii)*8)) = zSpace
 43274  	sqlite3.Xsqlite3_snprintf(tls, nBytes, zSpace, ts, libc.VaList(bp+8, sqlite3.Xsqlite3_column_name(tls, *(*uintptr)(unsafe.Pointer(bp + 16)), ii)))
 43275  	zSpace += uintptr(int32(libc.Xstrlen(tls, zSpace)) + 1)
 43276  	goto __9
 43277  __9:
 43278  	ii++
 43279  	goto __8
 43280  	goto __10
 43281  __10:
 43282  	;
 43283  __2:
 43284  	;
 43285  	*(*uintptr)(unsafe.Pointer(paCol)) = aCol
 43286  	*(*int32)(unsafe.Pointer(pnCol)) = nCol
 43287  
 43288  out:
 43289  	sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 16)))
 43290  	return rc
 43291  }
 43292  
 43293  func getIndexArray(tls *libc.TLS, db uintptr, zTab uintptr, nCol int32, paIndex uintptr) int32 {
 43294  	bp := tls.Alloc(32)
 43295  	defer tls.Free(32)
 43296  
 43297  	var aIndex uintptr
 43298  	var rc int32
 43299  	var zSql uintptr
 43300  	var cid int32
 43301  	var zIdx uintptr
 43302  
 43303  	var rc2 int32
 43304  	*(*uintptr)(unsafe.Pointer(bp + 16)) = uintptr(0)
 43305  	aIndex = uintptr(0)
 43306  
 43307  	aIndex = sqlite3.Xsqlite3MallocZero(tls, uint64(unsafe.Sizeof(int32(0)))*uint64(nCol))
 43308  	if !!(aIndex != 0) {
 43309  		goto __1
 43310  	}
 43311  	rc = SQLITE_NOMEM
 43312  	goto get_index_array_out
 43313  __1:
 43314  	;
 43315  	zSql = sqlite3.Xsqlite3_mprintf(tls, ts+27220, libc.VaList(bp, zTab))
 43316  	if !!(zSql != 0) {
 43317  		goto __2
 43318  	}
 43319  	rc = SQLITE_NOMEM
 43320  	goto get_index_array_out
 43321  __2:
 43322  	;
 43323  	rc = sqlite3.Xsqlite3_prepare(tls, db, zSql, -1, bp+16, uintptr(0))
 43324  	sqlite3.Xsqlite3_free(tls, zSql)
 43325  
 43326  __3:
 43327  	if !(*(*uintptr)(unsafe.Pointer(bp + 16)) != 0 && sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp + 16))) == SQLITE_ROW) {
 43328  		goto __4
 43329  	}
 43330  	zIdx = sqlite3.Xsqlite3_column_text(tls, *(*uintptr)(unsafe.Pointer(bp + 16)), 1)
 43331  	*(*uintptr)(unsafe.Pointer(bp + 24)) = uintptr(0)
 43332  	if !(zIdx == uintptr(0)) {
 43333  		goto __5
 43334  	}
 43335  	goto __3
 43336  __5:
 43337  	;
 43338  	zSql = sqlite3.Xsqlite3_mprintf(tls, ts+27242, libc.VaList(bp+8, zIdx))
 43339  	if !!(zSql != 0) {
 43340  		goto __6
 43341  	}
 43342  	rc = SQLITE_NOMEM
 43343  	goto get_index_array_out
 43344  __6:
 43345  	;
 43346  	rc = sqlite3.Xsqlite3_prepare(tls, db, zSql, -1, bp+24, uintptr(0))
 43347  	sqlite3.Xsqlite3_free(tls, zSql)
 43348  	if !(*(*uintptr)(unsafe.Pointer(bp + 24)) != 0 && sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp + 24))) == SQLITE_ROW) {
 43349  		goto __7
 43350  	}
 43351  	cid = sqlite3.Xsqlite3_column_int(tls, *(*uintptr)(unsafe.Pointer(bp + 24)), 1)
 43352  
 43353  	*(*int32)(unsafe.Pointer(aIndex + uintptr(cid)*4)) = 1
 43354  __7:
 43355  	;
 43356  	if !(*(*uintptr)(unsafe.Pointer(bp + 24)) != 0) {
 43357  		goto __8
 43358  	}
 43359  	rc = sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 24)))
 43360  __8:
 43361  	;
 43362  	if !(rc != SQLITE_OK) {
 43363  		goto __9
 43364  	}
 43365  	goto get_index_array_out
 43366  __9:
 43367  	;
 43368  	goto __3
 43369  __4:
 43370  	;
 43371  get_index_array_out:
 43372  	if !(*(*uintptr)(unsafe.Pointer(bp + 16)) != 0) {
 43373  		goto __10
 43374  	}
 43375  	rc2 = sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 16)))
 43376  	if !(rc == SQLITE_OK) {
 43377  		goto __11
 43378  	}
 43379  	rc = rc2
 43380  __11:
 43381  	;
 43382  __10:
 43383  	;
 43384  	if !(rc != SQLITE_OK) {
 43385  		goto __12
 43386  	}
 43387  	sqlite3.Xsqlite3_free(tls, aIndex)
 43388  	aIndex = uintptr(0)
 43389  __12:
 43390  	;
 43391  	*(*uintptr)(unsafe.Pointer(paIndex)) = aIndex
 43392  	return rc
 43393  }
 43394  
 43395  func appendToEchoModule(tls *libc.TLS, interp uintptr, zArg uintptr) {
 43396  	var flags int32 = TCL_APPEND_VALUE | TCL_LIST_ELEMENT | TCL_GLOBAL_ONLY
 43397  	tcl.XTcl_SetVar2(tls, interp, ts+27264, uintptr(0), func() uintptr {
 43398  		if zArg != 0 {
 43399  			return zArg
 43400  		}
 43401  		return ts + 584
 43402  	}(), flags)
 43403  }
 43404  
 43405  func echoDeclareVtab(tls *libc.TLS, pVtab uintptr, db uintptr) int32 {
 43406  	bp := tls.Alloc(8)
 43407  	defer tls.Free(8)
 43408  
 43409  	var rc int32 = SQLITE_OK
 43410  
 43411  	if (*echo_vtab)(unsafe.Pointer(pVtab)).FzTableName != 0 {
 43412  		*(*uintptr)(unsafe.Pointer(bp)) = uintptr(0)
 43413  		rc = sqlite3.Xsqlite3_prepare(tls, db,
 43414  			ts+27276,
 43415  			-1, bp, uintptr(0))
 43416  		if rc == SQLITE_OK {
 43417  			sqlite3.Xsqlite3_bind_text(tls, *(*uintptr)(unsafe.Pointer(bp)), 1, (*echo_vtab)(unsafe.Pointer(pVtab)).FzTableName, -1, uintptr(0))
 43418  			if sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp))) == SQLITE_ROW {
 43419  				var rc2 int32
 43420  				var zCreateTable uintptr = sqlite3.Xsqlite3_column_text(tls, *(*uintptr)(unsafe.Pointer(bp)), 0)
 43421  				rc = sqlite3.Xsqlite3_declare_vtab(tls, db, zCreateTable)
 43422  				rc2 = sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp)))
 43423  				if rc == SQLITE_OK {
 43424  					rc = rc2
 43425  				}
 43426  			} else {
 43427  				rc = sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp)))
 43428  				if rc == SQLITE_OK {
 43429  					rc = SQLITE_ERROR
 43430  				}
 43431  			}
 43432  			if rc == SQLITE_OK {
 43433  				rc = getColumnNames(tls, db, (*echo_vtab)(unsafe.Pointer(pVtab)).FzTableName, pVtab+88, pVtab+72)
 43434  			}
 43435  			if rc == SQLITE_OK {
 43436  				rc = getIndexArray(tls, db, (*echo_vtab)(unsafe.Pointer(pVtab)).FzTableName, (*echo_vtab)(unsafe.Pointer(pVtab)).FnCol, pVtab+80)
 43437  			}
 43438  		}
 43439  	}
 43440  
 43441  	return rc
 43442  }
 43443  
 43444  func echoDestructor(tls *libc.TLS, pVtab uintptr) int32 {
 43445  	var p uintptr = pVtab
 43446  	sqlite3.Xsqlite3_free(tls, (*echo_vtab)(unsafe.Pointer(p)).FaIndex)
 43447  	sqlite3.Xsqlite3_free(tls, (*echo_vtab)(unsafe.Pointer(p)).FaCol)
 43448  	sqlite3.Xsqlite3_free(tls, (*echo_vtab)(unsafe.Pointer(p)).FzThis)
 43449  	sqlite3.Xsqlite3_free(tls, (*echo_vtab)(unsafe.Pointer(p)).FzTableName)
 43450  	sqlite3.Xsqlite3_free(tls, (*echo_vtab)(unsafe.Pointer(p)).FzLogName)
 43451  	sqlite3.Xsqlite3_free(tls, p)
 43452  	return 0
 43453  }
 43454  
 43455  type EchoModule1 = struct {
 43456  	Finterp uintptr
 43457  	Fdb     uintptr
 43458  }
 43459  
 43460  type EchoModule = EchoModule1
 43461  
 43462  func echoConstructor(tls *libc.TLS, db uintptr, pAux uintptr, argc int32, argv uintptr, ppVtab uintptr, pzErr uintptr) int32 {
 43463  	bp := tls.Alloc(32)
 43464  	defer tls.Free(32)
 43465  
 43466  	var rc int32
 43467  	var i int32
 43468  	var pVtab uintptr
 43469  
 43470  	pVtab = sqlite3.Xsqlite3MallocZero(tls, uint64(unsafe.Sizeof(echo_vtab{})))
 43471  	if !(pVtab != 0) {
 43472  		return SQLITE_NOMEM
 43473  	}
 43474  	(*echo_vtab)(unsafe.Pointer(pVtab)).Finterp = (*EchoModule)(unsafe.Pointer(pAux)).Finterp
 43475  	(*echo_vtab)(unsafe.Pointer(pVtab)).Fdb = db
 43476  
 43477  	(*echo_vtab)(unsafe.Pointer(pVtab)).FzThis = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp, *(*uintptr)(unsafe.Pointer(argv + 2*8))))
 43478  	if !(int32((*echo_vtab)(unsafe.Pointer(pVtab)).FzThis) != 0) {
 43479  		echoDestructor(tls, pVtab)
 43480  		return SQLITE_NOMEM
 43481  	}
 43482  
 43483  	if argc > 3 {
 43484  		(*echo_vtab)(unsafe.Pointer(pVtab)).FzTableName = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp+8, *(*uintptr)(unsafe.Pointer(argv + 3*8))))
 43485  		dequoteString(tls, (*echo_vtab)(unsafe.Pointer(pVtab)).FzTableName)
 43486  		if (*echo_vtab)(unsafe.Pointer(pVtab)).FzTableName != 0 && int32(*(*uint8)(unsafe.Pointer((*echo_vtab)(unsafe.Pointer(pVtab)).FzTableName))) == '*' {
 43487  			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))
 43488  			sqlite3.Xsqlite3_free(tls, (*echo_vtab)(unsafe.Pointer(pVtab)).FzTableName)
 43489  			(*echo_vtab)(unsafe.Pointer(pVtab)).FzTableName = z
 43490  			(*echo_vtab)(unsafe.Pointer(pVtab)).FisPattern = 1
 43491  		}
 43492  		if !(int32((*echo_vtab)(unsafe.Pointer(pVtab)).FzTableName) != 0) {
 43493  			echoDestructor(tls, pVtab)
 43494  			return SQLITE_NOMEM
 43495  		}
 43496  	}
 43497  
 43498  	for i = 0; i < argc; i++ {
 43499  		appendToEchoModule(tls, (*echo_vtab)(unsafe.Pointer(pVtab)).Finterp, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8)))
 43500  	}
 43501  
 43502  	rc = echoDeclareVtab(tls, pVtab, db)
 43503  	if rc != SQLITE_OK {
 43504  		echoDestructor(tls, pVtab)
 43505  		return rc
 43506  	}
 43507  
 43508  	*(*uintptr)(unsafe.Pointer(ppVtab)) = pVtab
 43509  	return SQLITE_OK
 43510  }
 43511  
 43512  func echoCreate(tls *libc.TLS, db uintptr, pAux uintptr, argc int32, argv uintptr, ppVtab uintptr, pzErr uintptr) int32 {
 43513  	bp := tls.Alloc(24)
 43514  	defer tls.Free(24)
 43515  
 43516  	var rc int32 = SQLITE_OK
 43517  	appendToEchoModule(tls, (*EchoModule)(unsafe.Pointer(pAux)).Finterp, ts+27345)
 43518  	rc = echoConstructor(tls, db, pAux, argc, argv, ppVtab, pzErr)
 43519  
 43520  	if rc == SQLITE_OK && argc == 5 {
 43521  		var zSql uintptr
 43522  		var pVtab uintptr = *(*uintptr)(unsafe.Pointer(ppVtab))
 43523  		(*echo_vtab)(unsafe.Pointer(pVtab)).FzLogName = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp, *(*uintptr)(unsafe.Pointer(argv + 4*8))))
 43524  		zSql = sqlite3.Xsqlite3_mprintf(tls, ts+27353, libc.VaList(bp+8, (*echo_vtab)(unsafe.Pointer(pVtab)).FzLogName))
 43525  		rc = sqlite3.Xsqlite3_exec(tls, db, zSql, uintptr(0), uintptr(0), uintptr(0))
 43526  		sqlite3.Xsqlite3_free(tls, zSql)
 43527  		if rc != SQLITE_OK {
 43528  			*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp+16, sqlite3.Xsqlite3_errmsg(tls, db)))
 43529  		}
 43530  	}
 43531  
 43532  	if *(*uintptr)(unsafe.Pointer(ppVtab)) != 0 && rc != SQLITE_OK {
 43533  		echoDestructor(tls, *(*uintptr)(unsafe.Pointer(ppVtab)))
 43534  		*(*uintptr)(unsafe.Pointer(ppVtab)) = uintptr(0)
 43535  	}
 43536  
 43537  	if rc == SQLITE_OK {
 43538  		(*echo_vtab)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(ppVtab)))).FinTransaction = 1
 43539  	}
 43540  
 43541  	return rc
 43542  }
 43543  
 43544  func echoConnect(tls *libc.TLS, db uintptr, pAux uintptr, argc int32, argv uintptr, ppVtab uintptr, pzErr uintptr) int32 {
 43545  	appendToEchoModule(tls, (*EchoModule)(unsafe.Pointer(pAux)).Finterp, ts+27377)
 43546  	return echoConstructor(tls, db, pAux, argc, argv, ppVtab, pzErr)
 43547  }
 43548  
 43549  func echoDisconnect(tls *libc.TLS, pVtab uintptr) int32 {
 43550  	appendToEchoModule(tls, (*echo_vtab)(unsafe.Pointer(pVtab)).Finterp, ts+27386)
 43551  	return echoDestructor(tls, pVtab)
 43552  }
 43553  
 43554  func echoDestroy(tls *libc.TLS, pVtab uintptr) int32 {
 43555  	bp := tls.Alloc(8)
 43556  	defer tls.Free(8)
 43557  
 43558  	var rc int32 = SQLITE_OK
 43559  	var p uintptr = pVtab
 43560  	appendToEchoModule(tls, (*echo_vtab)(unsafe.Pointer(pVtab)).Finterp, ts+27398)
 43561  
 43562  	if p != 0 && (*echo_vtab)(unsafe.Pointer(p)).FzLogName != 0 {
 43563  		var zSql uintptr
 43564  		zSql = sqlite3.Xsqlite3_mprintf(tls, ts+27407, libc.VaList(bp, (*echo_vtab)(unsafe.Pointer(p)).FzLogName))
 43565  		rc = sqlite3.Xsqlite3_exec(tls, (*echo_vtab)(unsafe.Pointer(p)).Fdb, zSql, uintptr(0), uintptr(0), uintptr(0))
 43566  		sqlite3.Xsqlite3_free(tls, zSql)
 43567  	}
 43568  
 43569  	if rc == SQLITE_OK {
 43570  		rc = echoDestructor(tls, pVtab)
 43571  	}
 43572  	return rc
 43573  }
 43574  
 43575  func echoOpen(tls *libc.TLS, pVTab uintptr, ppCursor uintptr) int32 {
 43576  	var pCur uintptr
 43577  	if simulateVtabError(tls, pVTab, ts+27421) != 0 {
 43578  		return SQLITE_ERROR
 43579  	}
 43580  	pCur = sqlite3.Xsqlite3MallocZero(tls, uint64(unsafe.Sizeof(echo_cursor{})))
 43581  	*(*uintptr)(unsafe.Pointer(ppCursor)) = pCur
 43582  	return func() int32 {
 43583  		if pCur != 0 {
 43584  			return SQLITE_OK
 43585  		}
 43586  		return SQLITE_NOMEM
 43587  	}()
 43588  }
 43589  
 43590  func echoClose(tls *libc.TLS, cur uintptr) int32 {
 43591  	var rc int32
 43592  	var pCur uintptr = cur
 43593  	var pStmt uintptr = (*echo_cursor)(unsafe.Pointer(pCur)).FpStmt
 43594  	(*echo_cursor)(unsafe.Pointer(pCur)).FpStmt = uintptr(0)
 43595  	sqlite3.Xsqlite3_free(tls, pCur)
 43596  	rc = sqlite3.Xsqlite3_finalize(tls, pStmt)
 43597  	return rc
 43598  }
 43599  
 43600  func echoEof(tls *libc.TLS, cur uintptr) int32 {
 43601  	return func() int32 {
 43602  		if (*echo_cursor)(unsafe.Pointer(cur)).FpStmt != 0 {
 43603  			return 0
 43604  		}
 43605  		return 1
 43606  	}()
 43607  }
 43608  
 43609  func echoNext(tls *libc.TLS, cur uintptr) int32 {
 43610  	var rc int32 = SQLITE_OK
 43611  	var pCur uintptr = cur
 43612  
 43613  	if simulateVtabError(tls, (*sqlite3_vtab_cursor)(unsafe.Pointer(cur)).FpVtab, ts+27427) != 0 {
 43614  		return SQLITE_ERROR
 43615  	}
 43616  
 43617  	if (*echo_cursor)(unsafe.Pointer(pCur)).FpStmt != 0 {
 43618  		rc = sqlite3.Xsqlite3_step(tls, (*echo_cursor)(unsafe.Pointer(pCur)).FpStmt)
 43619  		if rc == SQLITE_ROW {
 43620  			rc = SQLITE_OK
 43621  		} else {
 43622  			rc = sqlite3.Xsqlite3_finalize(tls, (*echo_cursor)(unsafe.Pointer(pCur)).FpStmt)
 43623  			(*echo_cursor)(unsafe.Pointer(pCur)).FpStmt = uintptr(0)
 43624  		}
 43625  	}
 43626  
 43627  	return rc
 43628  }
 43629  
 43630  func echoColumn(tls *libc.TLS, cur uintptr, ctx uintptr, i int32) int32 {
 43631  	var iCol int32 = i + 1
 43632  	var pStmt uintptr = (*echo_cursor)(unsafe.Pointer(cur)).FpStmt
 43633  
 43634  	if simulateVtabError(tls, (*sqlite3_vtab_cursor)(unsafe.Pointer(cur)).FpVtab, ts+27433) != 0 {
 43635  		return SQLITE_ERROR
 43636  	}
 43637  
 43638  	if !(pStmt != 0) {
 43639  		sqlite3.Xsqlite3_result_null(tls, ctx)
 43640  	} else {
 43641  		sqlite3.Xsqlite3_result_value(tls, ctx, sqlite3.Xsqlite3_column_value(tls, pStmt, iCol))
 43642  	}
 43643  	return SQLITE_OK
 43644  }
 43645  
 43646  func echoRowid(tls *libc.TLS, cur uintptr, pRowid uintptr) int32 {
 43647  	var pStmt uintptr = (*echo_cursor)(unsafe.Pointer(cur)).FpStmt
 43648  
 43649  	if simulateVtabError(tls, (*sqlite3_vtab_cursor)(unsafe.Pointer(cur)).FpVtab, ts+2304) != 0 {
 43650  		return SQLITE_ERROR
 43651  	}
 43652  
 43653  	*(*sqlite_int64)(unsafe.Pointer(pRowid)) = sqlite3.Xsqlite3_column_int64(tls, pStmt, 0)
 43654  	return SQLITE_OK
 43655  }
 43656  
 43657  func hashString(tls *libc.TLS, zString uintptr) int32 {
 43658  	var val u32 = u32(0)
 43659  	var ii int32
 43660  	for ii = 0; *(*uint8)(unsafe.Pointer(zString + uintptr(ii))) != 0; ii++ {
 43661  		val = val<<3 + u32(int32(*(*uint8)(unsafe.Pointer(zString + uintptr(ii)))))
 43662  	}
 43663  	return int32(val & u32(0x7fffffff))
 43664  }
 43665  
 43666  func echoFilter(tls *libc.TLS, pVtabCursor uintptr, idxNum int32, idxStr uintptr, argc int32, argv uintptr) int32 {
 43667  	var rc int32
 43668  	var i int32
 43669  
 43670  	var pCur uintptr = pVtabCursor
 43671  	var pVtab uintptr = (*sqlite3_vtab_cursor)(unsafe.Pointer(pVtabCursor)).FpVtab
 43672  	var db uintptr = (*echo_vtab)(unsafe.Pointer(pVtab)).Fdb
 43673  
 43674  	if simulateVtabError(tls, pVtab, ts+27441) != 0 {
 43675  		return SQLITE_ERROR
 43676  	}
 43677  
 43678  	appendToEchoModule(tls, (*echo_vtab)(unsafe.Pointer(pVtab)).Finterp, ts+27441)
 43679  	appendToEchoModule(tls, (*echo_vtab)(unsafe.Pointer(pVtab)).Finterp, idxStr)
 43680  	for i = 0; i < argc; i++ {
 43681  		appendToEchoModule(tls, (*echo_vtab)(unsafe.Pointer(pVtab)).Finterp, sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8))))
 43682  	}
 43683  
 43684  	sqlite3.Xsqlite3_finalize(tls, (*echo_cursor)(unsafe.Pointer(pCur)).FpStmt)
 43685  	(*echo_cursor)(unsafe.Pointer(pCur)).FpStmt = uintptr(0)
 43686  
 43687  	rc = sqlite3.Xsqlite3_prepare(tls, db, idxStr, -1, pCur+8, uintptr(0))
 43688  
 43689  	for i = 0; rc == SQLITE_OK && i < argc; i++ {
 43690  		rc = sqlite3.Xsqlite3_bind_value(tls, (*echo_cursor)(unsafe.Pointer(pCur)).FpStmt, i+1, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8)))
 43691  	}
 43692  
 43693  	if rc == SQLITE_OK {
 43694  		rc = echoNext(tls, pVtabCursor)
 43695  	}
 43696  
 43697  	return rc
 43698  }
 43699  
 43700  func string_concat(tls *libc.TLS, pzStr uintptr, zAppend uintptr, doFree int32, pRc uintptr) {
 43701  	bp := tls.Alloc(24)
 43702  	defer tls.Free(24)
 43703  
 43704  	var zIn uintptr = *(*uintptr)(unsafe.Pointer(pzStr))
 43705  	if !(zAppend != 0) && doFree != 0 && *(*int32)(unsafe.Pointer(pRc)) == SQLITE_OK {
 43706  		*(*int32)(unsafe.Pointer(pRc)) = SQLITE_NOMEM
 43707  	}
 43708  	if *(*int32)(unsafe.Pointer(pRc)) != SQLITE_OK {
 43709  		sqlite3.Xsqlite3_free(tls, zIn)
 43710  		zIn = uintptr(0)
 43711  	} else {
 43712  		if zIn != 0 {
 43713  			var zTemp uintptr = zIn
 43714  			zIn = sqlite3.Xsqlite3_mprintf(tls, ts+27340, libc.VaList(bp, zIn, zAppend))
 43715  			sqlite3.Xsqlite3_free(tls, zTemp)
 43716  		} else {
 43717  			zIn = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp+16, zAppend))
 43718  		}
 43719  		if !(zIn != 0) {
 43720  			*(*int32)(unsafe.Pointer(pRc)) = SQLITE_NOMEM
 43721  		}
 43722  	}
 43723  	*(*uintptr)(unsafe.Pointer(pzStr)) = zIn
 43724  	if doFree != 0 {
 43725  		sqlite3.Xsqlite3_free(tls, zAppend)
 43726  	}
 43727  }
 43728  
 43729  func echoSelectList(tls *libc.TLS, pTab uintptr, pIdxInfo uintptr) uintptr {
 43730  	bp := tls.Alloc(24)
 43731  	defer tls.Free(24)
 43732  
 43733  	var zRet uintptr = uintptr(0)
 43734  	if sqlite3.Xsqlite3_libversion_number(tls) < 3010000 {
 43735  		zRet = sqlite3.Xsqlite3_mprintf(tls, ts+27449, 0)
 43736  	} else {
 43737  		var i int32
 43738  		for i = 0; i < (*echo_vtab)(unsafe.Pointer(pTab)).FnCol; i++ {
 43739  			if (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FcolUsed&(uint64(1)<<func() int32 {
 43740  				if i >= 63 {
 43741  					return 63
 43742  				}
 43743  				return i
 43744  			}()) != 0 {
 43745  				zRet = sqlite3.Xsqlite3_mprintf(tls, ts+27453, libc.VaList(bp, zRet, *(*uintptr)(unsafe.Pointer((*echo_vtab)(unsafe.Pointer(pTab)).FaCol + uintptr(i)*8))))
 43746  			} else {
 43747  				zRet = sqlite3.Xsqlite3_mprintf(tls, ts+27460, libc.VaList(bp+16, zRet))
 43748  			}
 43749  			if !(zRet != 0) {
 43750  				break
 43751  			}
 43752  		}
 43753  	}
 43754  	return zRet
 43755  }
 43756  
 43757  func echoBestIndex(tls *libc.TLS, tab uintptr, pIdxInfo uintptr) int32 {
 43758  	bp := tls.Alloc(100)
 43759  	defer tls.Free(100)
 43760  
 43761  	var ii int32
 43762  	*(*uintptr)(unsafe.Pointer(bp + 88)) = uintptr(0)
 43763  	var zCol uintptr = uintptr(0)
 43764  	var zNew uintptr
 43765  	var nArg int32 = 0
 43766  	var zSep uintptr = ts + 9392
 43767  	var pVtab uintptr = tab
 43768  	*(*uintptr)(unsafe.Pointer(bp + 80)) = uintptr(0)
 43769  	var interp uintptr = (*echo_vtab)(unsafe.Pointer(pVtab)).Finterp
 43770  
 43771  	var nRow int32 = 0
 43772  	var useIdx int32 = 0
 43773  	*(*int32)(unsafe.Pointer(bp + 96)) = SQLITE_OK
 43774  	var useCost int32 = 0
 43775  	var cost float64 = float64(0)
 43776  	var isIgnoreUsable int32 = 0
 43777  	if tcl.XTcl_GetVar2(tls, interp, ts+27469, uintptr(0), TCL_GLOBAL_ONLY) != 0 {
 43778  		isIgnoreUsable = 1
 43779  	}
 43780  
 43781  	if simulateVtabError(tls, pVtab, ts+27495) != 0 {
 43782  		return SQLITE_ERROR
 43783  	}
 43784  
 43785  	if tcl.XTcl_GetVar2(tls, interp, ts+27506, uintptr(0), TCL_GLOBAL_ONLY) != 0 {
 43786  		cost = libc.Xatof(tls, tcl.XTcl_GetVar2(tls, interp, ts+27506, uintptr(0), TCL_GLOBAL_ONLY))
 43787  		useCost = 1
 43788  	} else {
 43789  		*(*uintptr)(unsafe.Pointer(bp + 88)) = sqlite3.Xsqlite3_mprintf(tls, ts+27523, libc.VaList(bp, (*echo_vtab)(unsafe.Pointer(pVtab)).FzTableName))
 43790  		if !(*(*uintptr)(unsafe.Pointer(bp + 88)) != 0) {
 43791  			return SQLITE_NOMEM
 43792  		}
 43793  		*(*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))
 43794  		sqlite3.Xsqlite3_free(tls, *(*uintptr)(unsafe.Pointer(bp + 88)))
 43795  		if *(*int32)(unsafe.Pointer(bp + 96)) != SQLITE_OK {
 43796  			return *(*int32)(unsafe.Pointer(bp + 96))
 43797  		}
 43798  		sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp + 80)))
 43799  		nRow = sqlite3.Xsqlite3_column_int(tls, *(*uintptr)(unsafe.Pointer(bp + 80)), 0)
 43800  		*(*int32)(unsafe.Pointer(bp + 96)) = sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 80)))
 43801  		if *(*int32)(unsafe.Pointer(bp + 96)) != SQLITE_OK {
 43802  			return *(*int32)(unsafe.Pointer(bp + 96))
 43803  		}
 43804  	}
 43805  
 43806  	zCol = echoSelectList(tls, pVtab, pIdxInfo)
 43807  	if !(zCol != 0) {
 43808  		return SQLITE_NOMEM
 43809  	}
 43810  	*(*uintptr)(unsafe.Pointer(bp + 88)) = sqlite3.Xsqlite3_mprintf(tls, ts+27547, libc.VaList(bp+8, zCol, (*echo_vtab)(unsafe.Pointer(pVtab)).FzTableName))
 43811  	if !(*(*uintptr)(unsafe.Pointer(bp + 88)) != 0) {
 43812  		return SQLITE_NOMEM
 43813  	}
 43814  
 43815  	for ii = 0; ii < (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnConstraint; ii++ {
 43816  		var pConstraint uintptr
 43817  		var pUsage uintptr
 43818  		var iCol int32
 43819  
 43820  		pConstraint = (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint + uintptr(ii)*12
 43821  		pUsage = (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(ii)*8
 43822  
 43823  		if !(isIgnoreUsable != 0) && !(int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fusable) != 0) {
 43824  			continue
 43825  		}
 43826  
 43827  		iCol = (*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).FiColumn
 43828  		if iCol < 0 || *(*int32)(unsafe.Pointer((*echo_vtab)(unsafe.Pointer(pVtab)).FaIndex + uintptr(iCol)*4)) != 0 {
 43829  			var zNewCol uintptr
 43830  			if iCol >= 0 {
 43831  				zNewCol = *(*uintptr)(unsafe.Pointer((*echo_vtab)(unsafe.Pointer(pVtab)).FaCol + uintptr(iCol)*8))
 43832  			} else {
 43833  				zNewCol = ts + 6427
 43834  			}
 43835  			var zOp uintptr = uintptr(0)
 43836  			useIdx = 1
 43837  			switch int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) {
 43838  			case SQLITE_INDEX_CONSTRAINT_EQ:
 43839  				zOp = ts + 27570
 43840  				break
 43841  				fallthrough
 43842  			case SQLITE_INDEX_CONSTRAINT_LT:
 43843  				zOp = ts + 27572
 43844  				break
 43845  				fallthrough
 43846  			case SQLITE_INDEX_CONSTRAINT_GT:
 43847  				zOp = ts + 27574
 43848  				break
 43849  				fallthrough
 43850  			case SQLITE_INDEX_CONSTRAINT_LE:
 43851  				zOp = ts + 27576
 43852  				break
 43853  				fallthrough
 43854  			case SQLITE_INDEX_CONSTRAINT_GE:
 43855  				zOp = ts + 27579
 43856  				break
 43857  				fallthrough
 43858  			case SQLITE_INDEX_CONSTRAINT_MATCH:
 43859  				zOp = ts + 27582
 43860  				break
 43861  				fallthrough
 43862  			case SQLITE_INDEX_CONSTRAINT_LIKE:
 43863  				zOp = ts + 27587
 43864  				break
 43865  				fallthrough
 43866  			case SQLITE_INDEX_CONSTRAINT_GLOB:
 43867  				zOp = ts + 27592
 43868  				break
 43869  				fallthrough
 43870  			case SQLITE_INDEX_CONSTRAINT_REGEXP:
 43871  				zOp = ts + 6831
 43872  				break
 43873  			}
 43874  			if zOp != 0 {
 43875  				if int32(*(*uint8)(unsafe.Pointer(zOp))) == 'L' {
 43876  					zNew = sqlite3.Xsqlite3_mprintf(tls, ts+27597,
 43877  						libc.VaList(bp+24, zSep, zNewCol))
 43878  				} else {
 43879  					zNew = sqlite3.Xsqlite3_mprintf(tls, ts+27632, libc.VaList(bp+40, zSep, zNewCol, zOp))
 43880  				}
 43881  				string_concat(tls, bp+88, zNew, 1, bp+96)
 43882  				zSep = ts + 9419
 43883  				(*sqlite3_index_constraint_usage)(unsafe.Pointer(pUsage)).FargvIndex = libc.PreIncInt32(&nArg, 1)
 43884  				(*sqlite3_index_constraint_usage)(unsafe.Pointer(pUsage)).Fomit = uint8(1)
 43885  			}
 43886  		}
 43887  	}
 43888  
 43889  	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) {
 43890  		var iCol int32 = (*sqlite3_index_orderby)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaOrderBy)).FiColumn
 43891  		var zNewCol uintptr
 43892  		if iCol >= 0 {
 43893  			zNewCol = *(*uintptr)(unsafe.Pointer((*echo_vtab)(unsafe.Pointer(pVtab)).FaCol + uintptr(iCol)*8))
 43894  		} else {
 43895  			zNewCol = ts + 6427
 43896  		}
 43897  		var zDir uintptr
 43898  		if (*sqlite3_index_orderby)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaOrderBy)).Fdesc != 0 {
 43899  			zDir = ts + 27644
 43900  		} else {
 43901  			zDir = ts + 27649
 43902  		}
 43903  		zNew = sqlite3.Xsqlite3_mprintf(tls, ts+27653, libc.VaList(bp+64, zNewCol, zDir))
 43904  		string_concat(tls, bp+88, zNew, 1, bp+96)
 43905  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).ForderByConsumed = 1
 43906  	}
 43907  
 43908  	appendToEchoModule(tls, (*echo_vtab)(unsafe.Pointer(pVtab)).Finterp, ts+27495)
 43909  
 43910  	appendToEchoModule(tls, (*echo_vtab)(unsafe.Pointer(pVtab)).Finterp, *(*uintptr)(unsafe.Pointer(bp + 88)))
 43911  
 43912  	if !(*(*uintptr)(unsafe.Pointer(bp + 88)) != 0) {
 43913  		return *(*int32)(unsafe.Pointer(bp + 96))
 43914  	}
 43915  	(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxNum = hashString(tls, *(*uintptr)(unsafe.Pointer(bp + 88)))
 43916  	(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxStr = *(*uintptr)(unsafe.Pointer(bp + 88))
 43917  	(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FneedToFreeIdxStr = 1
 43918  	if useCost != 0 {
 43919  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = cost
 43920  	} else if useIdx != 0 {
 43921  		for ii = 0; uint64(ii) < uint64(unsafe.Sizeof(int32(0)))*uint64(8)-uint64(1); ii++ {
 43922  			if nRow&(int32(1)<<ii) != 0 {
 43923  				(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = float64(ii)
 43924  			}
 43925  		}
 43926  	} else {
 43927  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = float64(nRow)
 43928  	}
 43929  	return *(*int32)(unsafe.Pointer(bp + 96))
 43930  }
 43931  
 43932  func echoUpdate(tls *libc.TLS, tab uintptr, nData int32, apData uintptr, pRowid uintptr) int32 {
 43933  	bp := tls.Alloc(136)
 43934  	defer tls.Free(136)
 43935  
 43936  	var pVtab uintptr = tab
 43937  	var db uintptr = (*echo_vtab)(unsafe.Pointer(pVtab)).Fdb
 43938  	*(*int32)(unsafe.Pointer(bp + 104)) = SQLITE_OK
 43939  
 43940  	*(*uintptr)(unsafe.Pointer(bp + 128)) = uintptr(0)
 43941  	*(*uintptr)(unsafe.Pointer(bp + 96)) = uintptr(0)
 43942  	var bindArgZero int32 = 0
 43943  	var bindArgOne int32 = 0
 43944  	var i int32
 43945  
 43946  	if simulateVtabError(tls, pVtab, ts+27669) != 0 {
 43947  		return SQLITE_ERROR
 43948  	}
 43949  
 43950  	if nData > 1 && sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(apData))) == SQLITE_INTEGER {
 43951  		var zSep uintptr = ts + 27677
 43952  		*(*uintptr)(unsafe.Pointer(bp + 96)) = sqlite3.Xsqlite3_mprintf(tls, ts+27682, libc.VaList(bp, (*echo_vtab)(unsafe.Pointer(pVtab)).FzTableName))
 43953  		if !(*(*uintptr)(unsafe.Pointer(bp + 96)) != 0) {
 43954  			*(*int32)(unsafe.Pointer(bp + 104)) = SQLITE_NOMEM
 43955  		}
 43956  
 43957  		bindArgOne = libc.Bool32(*(*uintptr)(unsafe.Pointer(apData + 1*8)) != 0 && sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(apData + 1*8))) == SQLITE_INTEGER)
 43958  		bindArgZero = 1
 43959  
 43960  		if bindArgOne != 0 {
 43961  			string_concat(tls, bp+96, ts+27692, 0, bp+104)
 43962  			zSep = ts + 4758
 43963  		}
 43964  		for i = 2; i < nData; i++ {
 43965  			if *(*uintptr)(unsafe.Pointer(apData + uintptr(i)*8)) == uintptr(0) {
 43966  				continue
 43967  			}
 43968  			string_concat(tls, bp+96, sqlite3.Xsqlite3_mprintf(tls,
 43969  				ts+27707, libc.VaList(bp+8, zSep, *(*uintptr)(unsafe.Pointer((*echo_vtab)(unsafe.Pointer(pVtab)).FaCol + uintptr(i-2)*8)), i)), 1, bp+104)
 43970  			zSep = ts + 4758
 43971  		}
 43972  		string_concat(tls, bp+96, sqlite3.Xsqlite3_mprintf(tls, ts+27717, libc.VaList(bp+32, nData)), 1, bp+104)
 43973  	} else if nData == 1 && sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(apData))) == SQLITE_INTEGER {
 43974  		*(*uintptr)(unsafe.Pointer(bp + 96)) = sqlite3.Xsqlite3_mprintf(tls, ts+27734, libc.VaList(bp+40, (*echo_vtab)(unsafe.Pointer(pVtab)).FzTableName))
 43975  		if !(*(*uintptr)(unsafe.Pointer(bp + 96)) != 0) {
 43976  			*(*int32)(unsafe.Pointer(bp + 104)) = SQLITE_NOMEM
 43977  		}
 43978  		bindArgZero = 1
 43979  	} else if nData > 2 && sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(apData))) == SQLITE_NULL {
 43980  		var ii int32
 43981  		*(*uintptr)(unsafe.Pointer(bp + 112)) = uintptr(0)
 43982  		*(*uintptr)(unsafe.Pointer(bp + 120)) = uintptr(0)
 43983  
 43984  		*(*uintptr)(unsafe.Pointer(bp + 112)) = sqlite3.Xsqlite3_mprintf(tls, ts+27766, libc.VaList(bp+48, (*echo_vtab)(unsafe.Pointer(pVtab)).FzTableName))
 43985  		if !(*(*uintptr)(unsafe.Pointer(bp + 112)) != 0) {
 43986  			*(*int32)(unsafe.Pointer(bp + 104)) = SQLITE_NOMEM
 43987  		}
 43988  		if sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(apData + 1*8))) == SQLITE_INTEGER {
 43989  			bindArgOne = 1
 43990  			*(*uintptr)(unsafe.Pointer(bp + 120)) = sqlite3.Xsqlite3_mprintf(tls, ts+3405, 0)
 43991  			string_concat(tls, bp+112, ts+6427, 0, bp+104)
 43992  		}
 43993  
 43994  		for ii = 2; ii < nData; ii++ {
 43995  			string_concat(tls, bp+112,
 43996  				sqlite3.Xsqlite3_mprintf(tls, ts+27783, libc.VaList(bp+56, func() uintptr {
 43997  					if *(*uintptr)(unsafe.Pointer(bp + 120)) != 0 {
 43998  						return ts + 97
 43999  					}
 44000  					return ts + 584
 44001  				}(), *(*uintptr)(unsafe.Pointer((*echo_vtab)(unsafe.Pointer(pVtab)).FaCol + uintptr(ii-2)*8)))), 1, bp+104)
 44002  			string_concat(tls, bp+120,
 44003  				sqlite3.Xsqlite3_mprintf(tls, ts+27788, libc.VaList(bp+72, func() uintptr {
 44004  					if *(*uintptr)(unsafe.Pointer(bp + 120)) != 0 {
 44005  						return ts + 97
 44006  					}
 44007  					return ts + 584
 44008  				}(), ii)), 1, bp+104)
 44009  		}
 44010  
 44011  		string_concat(tls, bp+96, *(*uintptr)(unsafe.Pointer(bp + 112)), 1, bp+104)
 44012  		string_concat(tls, bp+96, ts+27794, 0, bp+104)
 44013  		string_concat(tls, bp+96, *(*uintptr)(unsafe.Pointer(bp + 120)), 1, bp+104)
 44014  		string_concat(tls, bp+96, ts+585, 0, bp+104)
 44015  	} else {
 44016  		return SQLITE_ERROR
 44017  	}
 44018  
 44019  	if *(*int32)(unsafe.Pointer(bp + 104)) == SQLITE_OK {
 44020  		*(*int32)(unsafe.Pointer(bp + 104)) = sqlite3.Xsqlite3_prepare(tls, db, *(*uintptr)(unsafe.Pointer(bp + 96)), -1, bp+128, uintptr(0))
 44021  	}
 44022  
 44023  	sqlite3.Xsqlite3_free(tls, *(*uintptr)(unsafe.Pointer(bp + 96)))
 44024  	if *(*int32)(unsafe.Pointer(bp + 104)) == SQLITE_OK {
 44025  		if bindArgZero != 0 {
 44026  			sqlite3.Xsqlite3_bind_value(tls, *(*uintptr)(unsafe.Pointer(bp + 128)), nData, *(*uintptr)(unsafe.Pointer(apData)))
 44027  		}
 44028  		if bindArgOne != 0 {
 44029  			sqlite3.Xsqlite3_bind_value(tls, *(*uintptr)(unsafe.Pointer(bp + 128)), 1, *(*uintptr)(unsafe.Pointer(apData + 1*8)))
 44030  		}
 44031  		for i = 2; i < nData && *(*int32)(unsafe.Pointer(bp + 104)) == SQLITE_OK; i++ {
 44032  			if *(*uintptr)(unsafe.Pointer(apData + uintptr(i)*8)) != 0 {
 44033  				*(*int32)(unsafe.Pointer(bp + 104)) = sqlite3.Xsqlite3_bind_value(tls, *(*uintptr)(unsafe.Pointer(bp + 128)), i, *(*uintptr)(unsafe.Pointer(apData + uintptr(i)*8)))
 44034  			}
 44035  		}
 44036  		if *(*int32)(unsafe.Pointer(bp + 104)) == SQLITE_OK {
 44037  			sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp + 128)))
 44038  			*(*int32)(unsafe.Pointer(bp + 104)) = sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 128)))
 44039  		} else {
 44040  			sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 128)))
 44041  		}
 44042  	}
 44043  
 44044  	if pRowid != 0 && *(*int32)(unsafe.Pointer(bp + 104)) == SQLITE_OK {
 44045  		*(*sqlite_int64)(unsafe.Pointer(pRowid)) = sqlite3.Xsqlite3_last_insert_rowid(tls, db)
 44046  	}
 44047  	if *(*int32)(unsafe.Pointer(bp + 104)) != SQLITE_OK {
 44048  		(*sqlite3_vtab)(unsafe.Pointer(tab)).FzErrMsg = sqlite3.Xsqlite3_mprintf(tls, ts+27183, libc.VaList(bp+88, sqlite3.Xsqlite3_errmsg(tls, db)))
 44049  	}
 44050  
 44051  	return *(*int32)(unsafe.Pointer(bp + 104))
 44052  }
 44053  
 44054  func echoTransactionCall(tls *libc.TLS, tab uintptr, zCall uintptr) int32 {
 44055  	bp := tls.Alloc(8)
 44056  	defer tls.Free(8)
 44057  
 44058  	var z uintptr
 44059  	var pVtab uintptr = tab
 44060  	z = sqlite3.Xsqlite3_mprintf(tls, ts+27804, libc.VaList(bp, (*echo_vtab)(unsafe.Pointer(pVtab)).FzTableName))
 44061  	if z == uintptr(0) {
 44062  		return SQLITE_NOMEM
 44063  	}
 44064  	appendToEchoModule(tls, (*echo_vtab)(unsafe.Pointer(pVtab)).Finterp, zCall)
 44065  	appendToEchoModule(tls, (*echo_vtab)(unsafe.Pointer(pVtab)).Finterp, z)
 44066  	sqlite3.Xsqlite3_free(tls, z)
 44067  	return SQLITE_OK
 44068  }
 44069  
 44070  func echoBegin(tls *libc.TLS, tab uintptr) int32 {
 44071  	var rc int32
 44072  	var pVtab uintptr = tab
 44073  	var interp uintptr = (*echo_vtab)(unsafe.Pointer(pVtab)).Finterp
 44074  	var zVal uintptr
 44075  
 44076  	if simulateVtabError(tls, pVtab, ts+27813) != 0 {
 44077  		return SQLITE_ERROR
 44078  	}
 44079  
 44080  	rc = echoTransactionCall(tls, tab, ts+27813)
 44081  
 44082  	if rc == SQLITE_OK {
 44083  		zVal = tcl.XTcl_GetVar2(tls, interp, ts+27820, uintptr(0), TCL_GLOBAL_ONLY)
 44084  		if zVal != 0 && 0 == libc.Xstrcmp(tls, zVal, (*echo_vtab)(unsafe.Pointer(pVtab)).FzTableName) {
 44085  			rc = SQLITE_ERROR
 44086  		}
 44087  	}
 44088  	if rc == SQLITE_OK {
 44089  		(*echo_vtab)(unsafe.Pointer(pVtab)).FinTransaction = 1
 44090  	}
 44091  	return rc
 44092  }
 44093  
 44094  func echoSync(tls *libc.TLS, tab uintptr) int32 {
 44095  	var rc int32
 44096  	var pVtab uintptr = tab
 44097  	var interp uintptr = (*echo_vtab)(unsafe.Pointer(pVtab)).Finterp
 44098  	var zVal uintptr
 44099  
 44100  	if simulateVtabError(tls, pVtab, ts+27843) != 0 {
 44101  		return SQLITE_ERROR
 44102  	}
 44103  
 44104  	rc = echoTransactionCall(tls, tab, ts+27843)
 44105  
 44106  	if rc == SQLITE_OK {
 44107  		zVal = tcl.XTcl_GetVar2(tls, interp, ts+27849, uintptr(0), TCL_GLOBAL_ONLY)
 44108  		if zVal != 0 && 0 == libc.Xstrcmp(tls, zVal, (*echo_vtab)(unsafe.Pointer(pVtab)).FzTableName) {
 44109  			rc = -1
 44110  		}
 44111  	}
 44112  	return rc
 44113  }
 44114  
 44115  func echoCommit(tls *libc.TLS, tab uintptr) int32 {
 44116  	var pVtab uintptr = tab
 44117  	var rc int32
 44118  
 44119  	if simulateVtabError(tls, pVtab, ts+27871) != 0 {
 44120  		return SQLITE_ERROR
 44121  	}
 44122  
 44123  	sqlite3.Xsqlite3BeginBenignMalloc(tls)
 44124  	rc = echoTransactionCall(tls, tab, ts+27871)
 44125  	sqlite3.Xsqlite3EndBenignMalloc(tls)
 44126  	(*echo_vtab)(unsafe.Pointer(pVtab)).FinTransaction = 0
 44127  	return rc
 44128  }
 44129  
 44130  func echoRollback(tls *libc.TLS, tab uintptr) int32 {
 44131  	var rc int32
 44132  	var pVtab uintptr = tab
 44133  
 44134  	rc = echoTransactionCall(tls, tab, ts+27879)
 44135  	(*echo_vtab)(unsafe.Pointer(pVtab)).FinTransaction = 0
 44136  	return rc
 44137  }
 44138  
 44139  func overloadedGlobFunction(tls *libc.TLS, pContext uintptr, nArg int32, apArg uintptr) {
 44140  	bp := tls.Alloc(216)
 44141  	defer tls.Free(216)
 44142  
 44143  	var interp uintptr = sqlite3.Xsqlite3_user_data(tls, pContext)
 44144  
 44145  	var i int32
 44146  	var rc int32
 44147  	tcl.XTcl_DStringInit(tls, bp)
 44148  	tcl.XTcl_DStringAppendElement(tls, bp, ts+27889)
 44149  	for i = 0; i < nArg; i++ {
 44150  		tcl.XTcl_DStringAppendElement(tls, bp, sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(apArg + uintptr(i)*8))))
 44151  	}
 44152  	rc = tcl.XTcl_Eval(tls, interp, (*Tcl_DString)(unsafe.Pointer(bp)).Fstring)
 44153  	tcl.XTcl_DStringFree(tls, bp)
 44154  	if rc != 0 {
 44155  		sqlite3.Xsqlite3_result_error(tls, pContext, tcl.XTcl_GetStringResult(tls, interp), -1)
 44156  	} else {
 44157  		sqlite3.Xsqlite3_result_text(tls, pContext, tcl.XTcl_GetStringResult(tls, interp),
 44158  			-1, libc.UintptrFromInt32(-1))
 44159  	}
 44160  	tcl.XTcl_ResetResult(tls, interp)
 44161  }
 44162  
 44163  func echoFindFunction(tls *libc.TLS, vtab uintptr, nArg int32, zFuncName uintptr, pxFunc uintptr, ppArg uintptr) int32 {
 44164  	bp := tls.Alloc(64)
 44165  	defer tls.Free(64)
 44166  
 44167  	var pVtab uintptr = vtab
 44168  	var interp uintptr = (*echo_vtab)(unsafe.Pointer(pVtab)).Finterp
 44169  
 44170  	if libc.Xstrcmp(tls, zFuncName, ts+27592) != 0 {
 44171  		return 0
 44172  	}
 44173  	if tcl.XTcl_GetCommandInfo(tls, interp, ts+27889, bp) == 0 {
 44174  		return 0
 44175  	}
 44176  	*(*uintptr)(unsafe.Pointer(pxFunc)) = *(*uintptr)(unsafe.Pointer(&struct {
 44177  		f func(*libc.TLS, uintptr, int32, uintptr)
 44178  	}{overloadedGlobFunction}))
 44179  	*(*uintptr)(unsafe.Pointer(ppArg)) = interp
 44180  	return 1
 44181  }
 44182  
 44183  func echoRename(tls *libc.TLS, vtab uintptr, zNewName uintptr) int32 {
 44184  	bp := tls.Alloc(24)
 44185  	defer tls.Free(24)
 44186  
 44187  	var rc int32 = SQLITE_OK
 44188  	var p uintptr = vtab
 44189  
 44190  	if simulateVtabError(tls, p, ts+27910) != 0 {
 44191  		return SQLITE_ERROR
 44192  	}
 44193  
 44194  	if (*echo_vtab)(unsafe.Pointer(p)).FisPattern != 0 {
 44195  		var nThis int32 = int32(libc.Xstrlen(tls, (*echo_vtab)(unsafe.Pointer(p)).FzThis))
 44196  		var zSql uintptr = sqlite3.Xsqlite3_mprintf(tls, ts+27918,
 44197  			libc.VaList(bp, (*echo_vtab)(unsafe.Pointer(p)).FzTableName, zNewName, (*echo_vtab)(unsafe.Pointer(p)).FzTableName+uintptr(nThis)))
 44198  		rc = sqlite3.Xsqlite3_exec(tls, (*echo_vtab)(unsafe.Pointer(p)).Fdb, zSql, uintptr(0), uintptr(0), uintptr(0))
 44199  		sqlite3.Xsqlite3_free(tls, zSql)
 44200  	}
 44201  
 44202  	return rc
 44203  }
 44204  
 44205  func echoSavepoint(tls *libc.TLS, pVTab uintptr, iSavepoint int32) int32 {
 44206  	return SQLITE_OK
 44207  }
 44208  
 44209  func echoRelease(tls *libc.TLS, pVTab uintptr, iSavepoint int32) int32 {
 44210  	return SQLITE_OK
 44211  }
 44212  
 44213  func echoRollbackTo(tls *libc.TLS, pVTab uintptr, iSavepoint int32) int32 {
 44214  	return SQLITE_OK
 44215  }
 44216  
 44217  var echoModule = sqlite3_module{
 44218  	FiVersion:      1,
 44219  	FxCreate:       0,
 44220  	FxConnect:      0,
 44221  	FxBestIndex:    0,
 44222  	FxDisconnect:   0,
 44223  	FxDestroy:      0,
 44224  	FxOpen:         0,
 44225  	FxClose:        0,
 44226  	FxFilter:       0,
 44227  	FxNext:         0,
 44228  	FxEof:          0,
 44229  	FxColumn:       0,
 44230  	FxRowid:        0,
 44231  	FxUpdate:       0,
 44232  	FxBegin:        0,
 44233  	FxSync:         0,
 44234  	FxCommit:       0,
 44235  	FxRollback:     0,
 44236  	FxFindFunction: 0,
 44237  	FxRename:       0,
 44238  }
 44239  
 44240  var echoModuleV2 = sqlite3_module{
 44241  	FiVersion:      2,
 44242  	FxCreate:       0,
 44243  	FxConnect:      0,
 44244  	FxBestIndex:    0,
 44245  	FxDisconnect:   0,
 44246  	FxDestroy:      0,
 44247  	FxOpen:         0,
 44248  	FxClose:        0,
 44249  	FxFilter:       0,
 44250  	FxNext:         0,
 44251  	FxEof:          0,
 44252  	FxColumn:       0,
 44253  	FxRowid:        0,
 44254  	FxUpdate:       0,
 44255  	FxBegin:        0,
 44256  	FxSync:         0,
 44257  	FxCommit:       0,
 44258  	FxRollback:     0,
 44259  	FxFindFunction: 0,
 44260  	FxRename:       0,
 44261  	FxSavepoint:    0,
 44262  	FxRelease:      0,
 44263  	FxRollbackTo:   0,
 44264  }
 44265  
 44266  func moduleDestroy(tls *libc.TLS, p uintptr) {
 44267  	var pMod uintptr = p
 44268  	sqlite3.Xsqlite3_create_function(tls, (*EchoModule)(unsafe.Pointer(pMod)).Fdb, ts+27948,
 44269  		SQLITE_ANY, 1, uintptr(0), uintptr(0), uintptr(0), uintptr(0))
 44270  	sqlite3.Xsqlite3_free(tls, p)
 44271  }
 44272  
 44273  func register_echo_module(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 44274  	bp := tls.Alloc(8)
 44275  	defer tls.Free(8)
 44276  
 44277  	var rc int32
 44278  
 44279  	var pMod uintptr
 44280  	if objc != 2 {
 44281  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2050)
 44282  		return TCL_ERROR
 44283  	}
 44284  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 44285  		return TCL_ERROR
 44286  	}
 44287  
 44288  	pMod = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(EchoModule{})))
 44289  	(*EchoModule)(unsafe.Pointer(pMod)).Finterp = interp
 44290  	(*EchoModule)(unsafe.Pointer(pMod)).Fdb = *(*uintptr)(unsafe.Pointer(bp))
 44291  	rc = sqlite3.Xsqlite3_create_module_v2(tls,
 44292  		*(*uintptr)(unsafe.Pointer(bp)), ts+27986, uintptr(unsafe.Pointer(&echoModule)), pMod, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{moduleDestroy})))
 44293  
 44294  	if rc == SQLITE_OK {
 44295  		pMod = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(EchoModule{})))
 44296  		(*EchoModule)(unsafe.Pointer(pMod)).Finterp = interp
 44297  		(*EchoModule)(unsafe.Pointer(pMod)).Fdb = *(*uintptr)(unsafe.Pointer(bp))
 44298  		rc = sqlite3.Xsqlite3_create_module_v2(tls, *(*uintptr)(unsafe.Pointer(bp)), ts+27991,
 44299  			uintptr(unsafe.Pointer(&echoModuleV2)), pMod, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{moduleDestroy})))
 44300  	}
 44301  
 44302  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 44303  	return TCL_OK
 44304  }
 44305  
 44306  func declare_vtab(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 44307  	bp := tls.Alloc(8)
 44308  	defer tls.Free(8)
 44309  
 44310  	var rc int32
 44311  	if objc != 3 {
 44312  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+10061)
 44313  		return TCL_ERROR
 44314  	}
 44315  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 44316  		return TCL_ERROR
 44317  	}
 44318  	rc = sqlite3.Xsqlite3_declare_vtab(tls, *(*uintptr)(unsafe.Pointer(bp)), tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8))))
 44319  	if rc != SQLITE_OK {
 44320  		tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3_errmsg(tls, *(*uintptr)(unsafe.Pointer(bp))), uintptr(1))
 44321  		return TCL_ERROR
 44322  	}
 44323  	return TCL_OK
 44324  }
 44325  
 44326  func Sqlitetest8_Init(tls *libc.TLS, interp uintptr) int32 {
 44327  	var i int32
 44328  	for i = 0; uint64(i) < uint64(unsafe.Sizeof(aObjCmd2))/uint64(unsafe.Sizeof(struct {
 44329  		FzName      uintptr
 44330  		FxProc      uintptr
 44331  		FclientData uintptr
 44332  	}{})); i++ {
 44333  		tcl.XTcl_CreateObjCommand(tls, interp, aObjCmd2[i].FzName,
 44334  			aObjCmd2[i].FxProc, aObjCmd2[i].FclientData, uintptr(0))
 44335  	}
 44336  	return TCL_OK
 44337  }
 44338  
 44339  var aObjCmd2 = [2]struct {
 44340  	FzName      uintptr
 44341  	FxProc      uintptr
 44342  	FclientData uintptr
 44343  }{
 44344  	{FzName: ts + 27999, FxProc: 0},
 44345  	{FzName: ts + 28020, FxProc: 0},
 44346  }
 44347  
 44348  func c_collation_test(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 44349  	bp := tls.Alloc(32)
 44350  	defer tls.Free(32)
 44351  
 44352  	var zErrFunction uintptr
 44353  
 44354  	var rc int32
 44355  	zErrFunction = ts + 28041
 44356  	if !(objc != 1) {
 44357  		goto __1
 44358  	}
 44359  	tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+584)
 44360  	return TCL_ERROR
 44361  __1:
 44362  	;
 44363  	rc = sqlite3.Xsqlite3_open(tls, ts+1757, bp+24)
 44364  	if !(rc != SQLITE_OK) {
 44365  		goto __2
 44366  	}
 44367  	zErrFunction = ts + 21460
 44368  	goto error_out
 44369  __2:
 44370  	;
 44371  	rc = sqlite3.Xsqlite3_create_collation(tls, *(*uintptr)(unsafe.Pointer(bp + 24)), ts+13402, 456, uintptr(0), uintptr(0))
 44372  	if !(rc != SQLITE_MISUSE) {
 44373  		goto __3
 44374  	}
 44375  	sqlite3.Xsqlite3_close(tls, *(*uintptr)(unsafe.Pointer(bp + 24)))
 44376  	zErrFunction = ts + 28045
 44377  	goto error_out
 44378  __3:
 44379  	;
 44380  	sqlite3.Xsqlite3_close(tls, *(*uintptr)(unsafe.Pointer(bp + 24)))
 44381  	return TCL_OK
 44382  
 44383  error_out:
 44384  	tcl.XTcl_ResetResult(tls, interp)
 44385  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+28070, zErrFunction, 0))
 44386  	return TCL_ERROR
 44387  }
 44388  
 44389  func c_realloc_test(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 44390  	bp := tls.Alloc(24)
 44391  	defer tls.Free(24)
 44392  
 44393  	var p uintptr
 44394  	var zErrFunction uintptr
 44395  	zErrFunction = ts + 28041
 44396  
 44397  	if !(objc != 1) {
 44398  		goto __1
 44399  	}
 44400  	tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+584)
 44401  	return TCL_ERROR
 44402  __1:
 44403  	;
 44404  	p = sqlite3.Xsqlite3_malloc(tls, 5)
 44405  	if !!(p != 0) {
 44406  		goto __2
 44407  	}
 44408  	zErrFunction = ts + 28095
 44409  	goto error_out
 44410  __2:
 44411  	;
 44412  	p = sqlite3.Xsqlite3_realloc(tls, p, -1)
 44413  	if !(p != 0) {
 44414  		goto __3
 44415  	}
 44416  	zErrFunction = ts + 28110
 44417  	goto error_out
 44418  __3:
 44419  	;
 44420  	return TCL_OK
 44421  
 44422  error_out:
 44423  	tcl.XTcl_ResetResult(tls, interp)
 44424  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+28070, zErrFunction, 0))
 44425  	return TCL_ERROR
 44426  }
 44427  
 44428  func c_misuse_test(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 44429  	bp := tls.Alloc(40)
 44430  	defer tls.Free(40)
 44431  
 44432  	var zErrFunction uintptr
 44433  
 44434  	var rc int32
 44435  	zErrFunction = ts + 28041
 44436  	*(*uintptr)(unsafe.Pointer(bp + 24)) = uintptr(0)
 44437  
 44438  	if !(objc != 1) {
 44439  		goto __1
 44440  	}
 44441  	tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+584)
 44442  	return TCL_ERROR
 44443  __1:
 44444  	;
 44445  	rc = sqlite3.Xsqlite3_open(tls, ts+1757, bp+24)
 44446  	if !(rc != SQLITE_OK) {
 44447  		goto __2
 44448  	}
 44449  	zErrFunction = ts + 21460
 44450  	goto error_out
 44451  __2:
 44452  	;
 44453  	sqlite3.Xsqlite3_close(tls, *(*uintptr)(unsafe.Pointer(bp + 24)))
 44454  
 44455  	rc = sqlite3.Xsqlite3_errcode(tls, *(*uintptr)(unsafe.Pointer(bp + 24)))
 44456  	if !(rc != SQLITE_MISUSE) {
 44457  		goto __3
 44458  	}
 44459  	zErrFunction = ts + 21366
 44460  	goto error_out
 44461  __3:
 44462  	;
 44463  	*(*uintptr)(unsafe.Pointer(bp + 32)) = uintptr(1234)
 44464  	rc = sqlite3.Xsqlite3_prepare(tls, *(*uintptr)(unsafe.Pointer(bp + 24)), uintptr(0), 0, bp+32, uintptr(0))
 44465  	if !(rc != SQLITE_MISUSE) {
 44466  		goto __4
 44467  	}
 44468  	zErrFunction = ts + 21541
 44469  	goto error_out
 44470  __4:
 44471  	;
 44472  	*(*uintptr)(unsafe.Pointer(bp + 32)) = uintptr(1234)
 44473  	rc = sqlite3.Xsqlite3_prepare_v2(tls, *(*uintptr)(unsafe.Pointer(bp + 24)), uintptr(0), 0, bp+32, uintptr(0))
 44474  	if !(rc != SQLITE_MISUSE) {
 44475  		goto __5
 44476  	}
 44477  	zErrFunction = ts + 21575
 44478  	goto error_out
 44479  __5:
 44480  	;
 44481  	*(*uintptr)(unsafe.Pointer(bp + 32)) = uintptr(1234)
 44482  	rc = sqlite3.Xsqlite3_prepare16(tls, *(*uintptr)(unsafe.Pointer(bp + 24)), uintptr(0), 0, bp+32, uintptr(0))
 44483  	if !(rc != SQLITE_MISUSE) {
 44484  		goto __6
 44485  	}
 44486  	zErrFunction = ts + 21557
 44487  	goto error_out
 44488  __6:
 44489  	;
 44490  	*(*uintptr)(unsafe.Pointer(bp + 32)) = uintptr(1234)
 44491  	rc = sqlite3.Xsqlite3_prepare16_v2(tls, *(*uintptr)(unsafe.Pointer(bp + 24)), uintptr(0), 0, bp+32, uintptr(0))
 44492  	if !(rc != SQLITE_MISUSE) {
 44493  		goto __7
 44494  	}
 44495  	zErrFunction = ts + 21637
 44496  	goto error_out
 44497  __7:
 44498  	;
 44499  	return TCL_OK
 44500  
 44501  error_out:
 44502  	tcl.XTcl_ResetResult(tls, interp)
 44503  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+28070, zErrFunction, 0))
 44504  	return TCL_ERROR
 44505  }
 44506  
 44507  func Sqlitetest9_Init(tls *libc.TLS, interp uintptr) int32 {
 44508  	var i int32
 44509  	for i = 0; uint64(i) < uint64(unsafe.Sizeof(aObjCmd3))/uint64(unsafe.Sizeof(struct {
 44510  		FzName      uintptr
 44511  		FxProc      uintptr
 44512  		FclientData uintptr
 44513  	}{})); i++ {
 44514  		tcl.XTcl_CreateObjCommand(tls, interp, aObjCmd3[i].FzName,
 44515  			aObjCmd3[i].FxProc, aObjCmd3[i].FclientData, uintptr(0))
 44516  	}
 44517  	return TCL_OK
 44518  }
 44519  
 44520  var aObjCmd3 = [3]struct {
 44521  	FzName      uintptr
 44522  	FxProc      uintptr
 44523  	FclientData uintptr
 44524  }{
 44525  	{FzName: ts + 28126, FxProc: 0},
 44526  	{FzName: ts + 28140, FxProc: 0},
 44527  	{FzName: ts + 28155, FxProc: 0},
 44528  }
 44529  
 44530  func Sqlitetestasync_Init(tls *libc.TLS, interp uintptr) int32 {
 44531  	return TCL_OK
 44532  }
 44533  
 44534  func resetAutoExtObjCmd(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 44535  	sqlite3.Xsqlite3_reset_auto_extension(tls)
 44536  	return SQLITE_OK
 44537  }
 44538  
 44539  func Sqlitetest_autoext_Init(tls *libc.TLS, interp uintptr) int32 {
 44540  	tcl.XTcl_CreateObjCommand(tls, interp, ts+28172,
 44541  		*(*uintptr)(unsafe.Pointer(&struct {
 44542  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 44543  		}{resetAutoExtObjCmd})), uintptr(0), uintptr(0))
 44544  	return TCL_OK
 44545  }
 44546  
 44547  func backupTestCmd(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 44548  	bp := tls.Alloc(196)
 44549  	defer tls.Free(196)
 44550  
 44551  	*(*[5]BackupSubCommand)(unsafe.Pointer(bp)) = [5]BackupSubCommand{
 44552  		{FzCmd: ts + 9485, FnArg: 1, FzArg: ts + 28201},
 44553  		{FzCmd: ts + 28207, FeCmd: uint32(1), FzArg: ts + 584},
 44554  		{FzCmd: ts + 28214, FeCmd: uint32(2), FzArg: ts + 584},
 44555  		{FzCmd: ts + 28224, FeCmd: uint32(3), FzArg: ts + 584},
 44556  		{},
 44557  	}
 44558  
 44559  	var p uintptr = clientData
 44560  
 44561  	var rc int32
 44562  
 44563  	rc = tcl.XTcl_GetIndexFromObjStruct(tls,
 44564  		interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp, int32(unsafe.Sizeof(BackupSubCommand{})), ts+11691, 0, bp+120)
 44565  	if rc != TCL_OK {
 44566  		return rc
 44567  	}
 44568  	if objc != 2+(*BackupSubCommand)(unsafe.Pointer(bp+uintptr(*(*int32)(unsafe.Pointer(bp + 120)))*24)).FnArg {
 44569  		tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, (*BackupSubCommand)(unsafe.Pointer(bp+uintptr(*(*int32)(unsafe.Pointer(bp + 120)))*24)).FzArg)
 44570  		return TCL_ERROR
 44571  	}
 44572  
 44573  	switch (*BackupSubCommand)(unsafe.Pointer(bp + uintptr(*(*int32)(unsafe.Pointer(bp + 120)))*24)).FeCmd {
 44574  	case uint32(1):
 44575  		{
 44576  			var zCmdName uintptr
 44577  
 44578  			zCmdName = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv)))
 44579  			tcl.XTcl_GetCommandInfo(tls, interp, zCmdName, bp+128)
 44580  			(*Tcl_CmdInfo)(unsafe.Pointer(bp + 128)).FdeleteProc = uintptr(0)
 44581  			tcl.XTcl_SetCommandInfo(tls, interp, zCmdName, bp+128)
 44582  			tcl.XTcl_DeleteCommand(tls, interp, zCmdName)
 44583  
 44584  			rc = sqlite3.Xsqlite3_backup_finish(tls, p)
 44585  			tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 44586  			break
 44587  
 44588  		}
 44589  
 44590  	case uint32(0):
 44591  		{
 44592  			if TCL_OK != tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+192) {
 44593  				return TCL_ERROR
 44594  			}
 44595  			rc = sqlite3.Xsqlite3_backup_step(tls, p, *(*int32)(unsafe.Pointer(bp + 192)))
 44596  			tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 44597  			break
 44598  
 44599  		}
 44600  
 44601  	case uint32(2):
 44602  		tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, sqlite3.Xsqlite3_backup_remaining(tls, p)))
 44603  		break
 44604  
 44605  	case uint32(3):
 44606  		tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, sqlite3.Xsqlite3_backup_pagecount(tls, p)))
 44607  		break
 44608  	}
 44609  
 44610  	return TCL_OK
 44611  }
 44612  
 44613  type BackupSubCommand = struct {
 44614  	FzCmd uintptr
 44615  	FeCmd uint32
 44616  	FnArg int32
 44617  	FzArg uintptr
 44618  }
 44619  
 44620  func backupTestFinish(tls *libc.TLS, clientData ClientData) {
 44621  	var pBackup uintptr = clientData
 44622  	sqlite3.Xsqlite3_backup_finish(tls, pBackup)
 44623  }
 44624  
 44625  func backupTestInit(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 44626  	bp := tls.Alloc(32)
 44627  	defer tls.Free(32)
 44628  
 44629  	var pBackup uintptr
 44630  
 44631  	var zDestName uintptr
 44632  	var zSrcName uintptr
 44633  	var zCmd uintptr
 44634  
 44635  	if objc != 6 {
 44636  		tcl.XTcl_WrongNumArgs(tls,
 44637  			interp, 1, objv, ts+28234)
 44638  		return TCL_ERROR
 44639  	}
 44640  
 44641  	zCmd = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 44642  	getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8))), bp+16)
 44643  	zDestName = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)))
 44644  	getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 4*8))), bp+24)
 44645  	zSrcName = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 5*8)))
 44646  
 44647  	pBackup = sqlite3.Xsqlite3_backup_init(tls, *(*uintptr)(unsafe.Pointer(bp + 16)), zDestName, *(*uintptr)(unsafe.Pointer(bp + 24)), zSrcName)
 44648  	if !(pBackup != 0) {
 44649  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+28280, 0))
 44650  		return TCL_ERROR
 44651  	}
 44652  
 44653  	tcl.XTcl_CreateObjCommand(tls, interp, zCmd, *(*uintptr)(unsafe.Pointer(&struct {
 44654  		f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
 44655  	}{backupTestCmd})), pBackup, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, ClientData) }{backupTestFinish})))
 44656  	tcl.XTcl_SetObjResult(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 44657  	return TCL_OK
 44658  }
 44659  
 44660  func Sqlitetestbackup_Init(tls *libc.TLS, interp uintptr) int32 {
 44661  	tcl.XTcl_CreateObjCommand(tls, interp, ts+28309, *(*uintptr)(unsafe.Pointer(&struct {
 44662  		f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
 44663  	}{backupTestInit})), uintptr(0), uintptr(0))
 44664  	return TCL_OK
 44665  }
 44666  
 44667  type tcl_vtab1 = struct {
 44668  	Fbase   sqlite3_vtab
 44669  	Finterp uintptr
 44670  	FpCmd   uintptr
 44671  	Fdb     uintptr
 44672  }
 44673  
 44674  type tcl_vtab = tcl_vtab1
 44675  type tcl_cursor1 = struct {
 44676  	Fbase  sqlite3_vtab_cursor
 44677  	FpStmt uintptr
 44678  }
 44679  
 44680  type tcl_cursor = tcl_cursor1
 44681  
 44682  func tclDequote(tls *libc.TLS, z uintptr) {
 44683  	var q uint8 = *(*uint8)(unsafe.Pointer(z))
 44684  
 44685  	if int32(q) == '[' || int32(q) == '\'' || int32(q) == '"' || int32(q) == '`' {
 44686  		var iIn int32 = 1
 44687  		var iOut int32 = 0
 44688  		if int32(q) == '[' {
 44689  			q = uint8(']')
 44690  		}
 44691  
 44692  		for *(*uint8)(unsafe.Pointer(z + uintptr(iIn))) != 0 {
 44693  			if int32(*(*uint8)(unsafe.Pointer(z + uintptr(iIn)))) == int32(q) {
 44694  				if int32(*(*uint8)(unsafe.Pointer(z + uintptr(iIn+1)))) != int32(q) {
 44695  					iIn++
 44696  					break
 44697  				} else {
 44698  					iIn = iIn + 2
 44699  					*(*uint8)(unsafe.Pointer(z + uintptr(libc.PostIncInt32(&iOut, 1)))) = q
 44700  				}
 44701  			} else {
 44702  				*(*uint8)(unsafe.Pointer(z + uintptr(libc.PostIncInt32(&iOut, 1)))) = *(*uint8)(unsafe.Pointer(z + uintptr(libc.PostIncInt32(&iIn, 1))))
 44703  			}
 44704  		}
 44705  
 44706  		*(*uint8)(unsafe.Pointer(z + uintptr(iOut))) = uint8(0)
 44707  	}
 44708  }
 44709  
 44710  func tclConnect(tls *libc.TLS, db uintptr, pAux uintptr, argc int32, argv uintptr, ppVtab uintptr, pzErr uintptr) int32 {
 44711  	bp := tls.Alloc(8)
 44712  	defer tls.Free(8)
 44713  
 44714  	var interp uintptr = pAux
 44715  	var pTab uintptr = uintptr(0)
 44716  	var zCmd uintptr = uintptr(0)
 44717  	var pScript uintptr = uintptr(0)
 44718  	var rc int32 = SQLITE_OK
 44719  
 44720  	if argc != 4 {
 44721  		*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+28324, 0)
 44722  		return SQLITE_ERROR
 44723  	}
 44724  
 44725  	zCmd = sqlite3.Xsqlite3_malloc64(tls, libc.Xstrlen(tls, *(*uintptr)(unsafe.Pointer(argv + 3*8)))+uint64(1))
 44726  	pTab = sqlite3.Xsqlite3_malloc64(tls, uint64(unsafe.Sizeof(tcl_vtab{})))
 44727  	if zCmd != 0 && pTab != 0 {
 44728  		libc.Xmemcpy(tls, zCmd, *(*uintptr)(unsafe.Pointer(argv + 3*8)), libc.Xstrlen(tls, *(*uintptr)(unsafe.Pointer(argv + 3*8)))+uint64(1))
 44729  		tclDequote(tls, zCmd)
 44730  		libc.Xmemset(tls, pTab, 0, uint64(unsafe.Sizeof(tcl_vtab{})))
 44731  
 44732  		(*tcl_vtab)(unsafe.Pointer(pTab)).FpCmd = tcl.XTcl_NewStringObj(tls, zCmd, -1)
 44733  		(*tcl_vtab)(unsafe.Pointer(pTab)).Finterp = interp
 44734  		(*tcl_vtab)(unsafe.Pointer(pTab)).Fdb = db
 44735  		(*Tcl_Obj)(unsafe.Pointer((*tcl_vtab)(unsafe.Pointer(pTab)).FpCmd)).FrefCount++
 44736  
 44737  		pScript = tcl.XTcl_DuplicateObj(tls, (*tcl_vtab)(unsafe.Pointer(pTab)).FpCmd)
 44738  		(*Tcl_Obj)(unsafe.Pointer(pScript)).FrefCount++
 44739  		tcl.XTcl_ListObjAppendElement(tls, interp, pScript, tcl.XTcl_NewStringObj(tls, ts+27377, -1))
 44740  
 44741  		rc = tcl.XTcl_EvalObjEx(tls, interp, pScript, TCL_EVAL_GLOBAL)
 44742  		if rc != TCL_OK {
 44743  			*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp, tcl.XTcl_GetStringResult(tls, interp)))
 44744  			rc = SQLITE_ERROR
 44745  		} else {
 44746  			rc = sqlite3.Xsqlite3_declare_vtab(tls, db, tcl.XTcl_GetStringResult(tls, interp))
 44747  		}
 44748  
 44749  		if rc != SQLITE_OK {
 44750  			sqlite3.Xsqlite3_free(tls, pTab)
 44751  			pTab = uintptr(0)
 44752  		}
 44753  	} else {
 44754  		rc = SQLITE_NOMEM
 44755  	}
 44756  
 44757  	sqlite3.Xsqlite3_free(tls, zCmd)
 44758  	*(*uintptr)(unsafe.Pointer(ppVtab)) = pTab
 44759  	return rc
 44760  }
 44761  
 44762  func tclDisconnect(tls *libc.TLS, pVtab uintptr) int32 {
 44763  	var pTab uintptr = pVtab
 44764  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 44765  		var _objPtr uintptr = (*tcl_vtab)(unsafe.Pointer(pTab)).FpCmd
 44766  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 44767  			tcl.XTclFreeObj(tls, _objPtr)
 44768  		}
 44769  	}
 44770  	sqlite3.Xsqlite3_free(tls, pTab)
 44771  	return SQLITE_OK
 44772  }
 44773  
 44774  func tclOpen(tls *libc.TLS, pVTab uintptr, ppCursor uintptr) int32 {
 44775  	var pCur uintptr
 44776  	pCur = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(tcl_cursor{})))
 44777  	if pCur == uintptr(0) {
 44778  		return SQLITE_NOMEM
 44779  	}
 44780  	libc.Xmemset(tls, pCur, 0, uint64(unsafe.Sizeof(tcl_cursor{})))
 44781  	*(*uintptr)(unsafe.Pointer(ppCursor)) = pCur
 44782  	return SQLITE_OK
 44783  }
 44784  
 44785  func tclClose(tls *libc.TLS, cur uintptr) int32 {
 44786  	var pCur uintptr = cur
 44787  	if pCur != 0 {
 44788  		sqlite3.Xsqlite3_finalize(tls, (*tcl_cursor)(unsafe.Pointer(pCur)).FpStmt)
 44789  		sqlite3.Xsqlite3_free(tls, pCur)
 44790  	}
 44791  	return SQLITE_OK
 44792  }
 44793  
 44794  func tclNext(tls *libc.TLS, pVtabCursor uintptr) int32 {
 44795  	bp := tls.Alloc(8)
 44796  	defer tls.Free(8)
 44797  
 44798  	var pCsr uintptr = pVtabCursor
 44799  	if (*tcl_cursor)(unsafe.Pointer(pCsr)).FpStmt != 0 {
 44800  		var pTab uintptr = (*sqlite3_vtab_cursor)(unsafe.Pointer(pVtabCursor)).FpVtab
 44801  		var rc int32 = sqlite3.Xsqlite3_step(tls, (*tcl_cursor)(unsafe.Pointer(pCsr)).FpStmt)
 44802  		if rc != SQLITE_ROW {
 44803  			var zErr uintptr
 44804  			rc = sqlite3.Xsqlite3_finalize(tls, (*tcl_cursor)(unsafe.Pointer(pCsr)).FpStmt)
 44805  			(*tcl_cursor)(unsafe.Pointer(pCsr)).FpStmt = uintptr(0)
 44806  			if rc != SQLITE_OK {
 44807  				zErr = sqlite3.Xsqlite3_errmsg(tls, (*tcl_vtab)(unsafe.Pointer(pTab)).Fdb)
 44808  				(*tcl_vtab)(unsafe.Pointer(pTab)).Fbase.FzErrMsg = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp, zErr))
 44809  			}
 44810  		}
 44811  	}
 44812  	return SQLITE_OK
 44813  }
 44814  
 44815  func tclFilter(tls *libc.TLS, pVtabCursor uintptr, idxNum int32, idxStr uintptr, argc int32, argv uintptr) int32 {
 44816  	bp := tls.Alloc(56)
 44817  	defer tls.Free(56)
 44818  
 44819  	var pCsr uintptr = pVtabCursor
 44820  	var pTab uintptr = (*sqlite3_vtab_cursor)(unsafe.Pointer(pVtabCursor)).FpVtab
 44821  	var interp uintptr = (*tcl_vtab)(unsafe.Pointer(pTab)).Finterp
 44822  	var pScript uintptr
 44823  	var pArg uintptr
 44824  	var ii int32
 44825  	var rc int32
 44826  
 44827  	pScript = tcl.XTcl_DuplicateObj(tls, (*tcl_vtab)(unsafe.Pointer(pTab)).FpCmd)
 44828  	(*Tcl_Obj)(unsafe.Pointer(pScript)).FrefCount++
 44829  	tcl.XTcl_ListObjAppendElement(tls, interp, pScript, tcl.XTcl_NewStringObj(tls, ts+27441, -1))
 44830  	tcl.XTcl_ListObjAppendElement(tls, interp, pScript, tcl.XTcl_NewIntObj(tls, idxNum))
 44831  	if idxStr != 0 {
 44832  		tcl.XTcl_ListObjAppendElement(tls, interp, pScript, tcl.XTcl_NewStringObj(tls, idxStr, -1))
 44833  	} else {
 44834  		tcl.XTcl_ListObjAppendElement(tls, interp, pScript, tcl.XTcl_NewStringObj(tls, ts+584, -1))
 44835  	}
 44836  
 44837  	pArg = tcl.XTcl_NewObj(tls)
 44838  	(*Tcl_Obj)(unsafe.Pointer(pArg)).FrefCount++
 44839  	for ii = 0; ii < argc; ii++ {
 44840  		var zVal uintptr = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(ii)*8)))
 44841  		var pVal uintptr
 44842  		if zVal == uintptr(0) {
 44843  			pVal = tcl.XTcl_NewObj(tls)
 44844  			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) {
 44845  				var pVal2 uintptr = uintptr(0)
 44846  				zVal = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(bp + 32)))
 44847  				if zVal != 0 {
 44848  					pVal2 = tcl.XTcl_NewStringObj(tls, zVal, -1)
 44849  				} else {
 44850  					pVal2 = tcl.XTcl_NewObj(tls)
 44851  				}
 44852  				tcl.XTcl_ListObjAppendElement(tls, interp, pVal, pVal2)
 44853  			}
 44854  		} else {
 44855  			pVal = tcl.XTcl_NewStringObj(tls, zVal, -1)
 44856  		}
 44857  		tcl.XTcl_ListObjAppendElement(tls, interp, pArg, pVal)
 44858  	}
 44859  	tcl.XTcl_ListObjAppendElement(tls, interp, pScript, pArg)
 44860  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 44861  		var _objPtr uintptr = pArg
 44862  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 44863  			tcl.XTclFreeObj(tls, _objPtr)
 44864  		}
 44865  	}
 44866  
 44867  	rc = tcl.XTcl_EvalObjEx(tls, interp, pScript, TCL_EVAL_GLOBAL)
 44868  	if rc != TCL_OK {
 44869  		var zErr uintptr = tcl.XTcl_GetStringResult(tls, interp)
 44870  		rc = SQLITE_ERROR
 44871  		(*tcl_vtab)(unsafe.Pointer(pTab)).Fbase.FzErrMsg = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp, zErr))
 44872  	} else {
 44873  		var pRes uintptr = tcl.XTcl_GetObjResult(tls, interp)
 44874  		*(*uintptr)(unsafe.Pointer(bp + 48)) = uintptr(0)
 44875  
 44876  		rc = tcl.XTcl_ListObjGetElements(tls, interp, pRes, bp+40, bp+48)
 44877  		if rc != TCL_OK {
 44878  			var zErr uintptr = tcl.XTcl_GetStringResult(tls, interp)
 44879  			rc = SQLITE_ERROR
 44880  			(*tcl_vtab)(unsafe.Pointer(pTab)).Fbase.FzErrMsg = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp+8, zErr))
 44881  		} else {
 44882  			for ii = 0; rc == SQLITE_OK && ii < *(*int32)(unsafe.Pointer(bp + 40)); ii = ii + 2 {
 44883  				var zCmd uintptr = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 48)) + uintptr(ii)*8)))
 44884  				var p uintptr = *(*uintptr)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 48)) + uintptr(ii+1)*8))
 44885  				if sqlite3.Xsqlite3_stricmp(tls, ts+1947, zCmd) == 0 {
 44886  					var zSql uintptr = tcl.XTcl_GetString(tls, p)
 44887  					rc = sqlite3.Xsqlite3_prepare_v2(tls, (*tcl_vtab)(unsafe.Pointer(pTab)).Fdb, zSql, -1, pCsr+8, uintptr(0))
 44888  					if rc != SQLITE_OK {
 44889  						var zErr uintptr = sqlite3.Xsqlite3_errmsg(tls, (*tcl_vtab)(unsafe.Pointer(pTab)).Fdb)
 44890  						(*tcl_vtab)(unsafe.Pointer(pTab)).Fbase.FzErrMsg = sqlite3.Xsqlite3_mprintf(tls, ts+28350, libc.VaList(bp+16, zErr))
 44891  					}
 44892  				} else {
 44893  					rc = SQLITE_ERROR
 44894  					(*tcl_vtab)(unsafe.Pointer(pTab)).Fbase.FzErrMsg = sqlite3.Xsqlite3_mprintf(tls, ts+28350, libc.VaList(bp+24, zCmd))
 44895  				}
 44896  			}
 44897  		}
 44898  	}
 44899  
 44900  	if rc == SQLITE_OK {
 44901  		rc = tclNext(tls, pVtabCursor)
 44902  	}
 44903  	return rc
 44904  }
 44905  
 44906  func tclColumn(tls *libc.TLS, pVtabCursor uintptr, ctx uintptr, i int32) int32 {
 44907  	var pCsr uintptr = pVtabCursor
 44908  	sqlite3.Xsqlite3_result_value(tls, ctx, sqlite3.Xsqlite3_column_value(tls, (*tcl_cursor)(unsafe.Pointer(pCsr)).FpStmt, i+1))
 44909  	return SQLITE_OK
 44910  }
 44911  
 44912  func tclRowid(tls *libc.TLS, pVtabCursor uintptr, pRowid uintptr) int32 {
 44913  	var pCsr uintptr = pVtabCursor
 44914  	*(*sqlite_int64)(unsafe.Pointer(pRowid)) = sqlite3.Xsqlite3_column_int64(tls, (*tcl_cursor)(unsafe.Pointer(pCsr)).FpStmt, 0)
 44915  	return SQLITE_OK
 44916  }
 44917  
 44918  func tclEof(tls *libc.TLS, pVtabCursor uintptr) int32 {
 44919  	var pCsr uintptr = pVtabCursor
 44920  	return libc.Bool32((*tcl_cursor)(unsafe.Pointer(pCsr)).FpStmt == uintptr(0))
 44921  }
 44922  
 44923  func testBestIndexObjConstraints(tls *libc.TLS, interp uintptr, pIdxInfo uintptr) {
 44924  	var ii int32
 44925  	var pRes uintptr = tcl.XTcl_NewObj(tls)
 44926  	(*Tcl_Obj)(unsafe.Pointer(pRes)).FrefCount++
 44927  	for ii = 0; ii < (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnConstraint; ii++ {
 44928  		var pCons uintptr = (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint + uintptr(ii)*12
 44929  		var pElem uintptr = tcl.XTcl_NewObj(tls)
 44930  		var zOp uintptr = ts + 3405
 44931  
 44932  		(*Tcl_Obj)(unsafe.Pointer(pElem)).FrefCount++
 44933  
 44934  		switch int32((*sqlite3_index_constraint)(unsafe.Pointer(pCons)).Fop) {
 44935  		case SQLITE_INDEX_CONSTRAINT_EQ:
 44936  			zOp = ts + 28365
 44937  			break
 44938  		case SQLITE_INDEX_CONSTRAINT_GT:
 44939  			zOp = ts + 28368
 44940  			break
 44941  		case SQLITE_INDEX_CONSTRAINT_LE:
 44942  			zOp = ts + 28371
 44943  			break
 44944  		case SQLITE_INDEX_CONSTRAINT_LT:
 44945  			zOp = ts + 28374
 44946  			break
 44947  		case SQLITE_INDEX_CONSTRAINT_GE:
 44948  			zOp = ts + 28377
 44949  			break
 44950  		case SQLITE_INDEX_CONSTRAINT_MATCH:
 44951  			zOp = ts + 28380
 44952  			break
 44953  		case SQLITE_INDEX_CONSTRAINT_LIKE:
 44954  			zOp = ts + 27587
 44955  			break
 44956  		case SQLITE_INDEX_CONSTRAINT_GLOB:
 44957  			zOp = ts + 27592
 44958  			break
 44959  		case SQLITE_INDEX_CONSTRAINT_REGEXP:
 44960  			zOp = ts + 6831
 44961  			break
 44962  		case SQLITE_INDEX_CONSTRAINT_NE:
 44963  			zOp = ts + 28386
 44964  			break
 44965  		case SQLITE_INDEX_CONSTRAINT_ISNOT:
 44966  			zOp = ts + 28389
 44967  			break
 44968  		case SQLITE_INDEX_CONSTRAINT_ISNOTNULL:
 44969  			zOp = ts + 28395
 44970  			break
 44971  		case SQLITE_INDEX_CONSTRAINT_ISNULL:
 44972  			zOp = ts + 28405
 44973  			break
 44974  		case SQLITE_INDEX_CONSTRAINT_IS:
 44975  			zOp = ts + 5851
 44976  			break
 44977  		case SQLITE_INDEX_CONSTRAINT_LIMIT:
 44978  			zOp = ts + 28412
 44979  			break
 44980  		case SQLITE_INDEX_CONSTRAINT_OFFSET:
 44981  			zOp = ts + 28418
 44982  			break
 44983  		}
 44984  
 44985  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pElem, tcl.XTcl_NewStringObj(tls, ts+6194, -1))
 44986  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pElem, tcl.XTcl_NewStringObj(tls, zOp, -1))
 44987  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pElem, tcl.XTcl_NewStringObj(tls, ts+28425, -1))
 44988  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pElem, tcl.XTcl_NewIntObj(tls, (*sqlite3_index_constraint)(unsafe.Pointer(pCons)).FiColumn))
 44989  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pElem, tcl.XTcl_NewStringObj(tls, ts+28432, -1))
 44990  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pElem, tcl.XTcl_NewIntObj(tls, int32((*sqlite3_index_constraint)(unsafe.Pointer(pCons)).Fusable)))
 44991  
 44992  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pRes, pElem)
 44993  		for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 44994  			var _objPtr uintptr = pElem
 44995  			if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 44996  				tcl.XTclFreeObj(tls, _objPtr)
 44997  			}
 44998  		}
 44999  	}
 45000  
 45001  	tcl.XTcl_SetObjResult(tls, interp, pRes)
 45002  	for __ccgo1 := true; __ccgo1; __ccgo1 = 0 != 0 {
 45003  		var _objPtr uintptr = pRes
 45004  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 45005  			tcl.XTclFreeObj(tls, _objPtr)
 45006  		}
 45007  	}
 45008  }
 45009  
 45010  func testBestIndexObjOrderby(tls *libc.TLS, interp uintptr, pIdxInfo uintptr) {
 45011  	var ii int32
 45012  	var pRes uintptr = tcl.XTcl_NewObj(tls)
 45013  	(*Tcl_Obj)(unsafe.Pointer(pRes)).FrefCount++
 45014  	for ii = 0; ii < (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnOrderBy; ii++ {
 45015  		var pOrder uintptr = (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaOrderBy + uintptr(ii)*8
 45016  		var pElem uintptr = tcl.XTcl_NewObj(tls)
 45017  		(*Tcl_Obj)(unsafe.Pointer(pElem)).FrefCount++
 45018  
 45019  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pElem, tcl.XTcl_NewStringObj(tls, ts+28425, -1))
 45020  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pElem, tcl.XTcl_NewIntObj(tls, (*sqlite3_index_orderby)(unsafe.Pointer(pOrder)).FiColumn))
 45021  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pElem, tcl.XTcl_NewStringObj(tls, ts+28439, -1))
 45022  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pElem, tcl.XTcl_NewIntObj(tls, int32((*sqlite3_index_orderby)(unsafe.Pointer(pOrder)).Fdesc)))
 45023  
 45024  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pRes, pElem)
 45025  		for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 45026  			var _objPtr uintptr = pElem
 45027  			if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 45028  				tcl.XTclFreeObj(tls, _objPtr)
 45029  			}
 45030  		}
 45031  	}
 45032  
 45033  	tcl.XTcl_SetObjResult(tls, interp, pRes)
 45034  	for __ccgo1 := true; __ccgo1; __ccgo1 = 0 != 0 {
 45035  		var _objPtr uintptr = pRes
 45036  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 45037  			tcl.XTclFreeObj(tls, _objPtr)
 45038  		}
 45039  	}
 45040  }
 45041  
 45042  func testBestIndexObj(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 45043  	bp := tls.Alloc(80)
 45044  	defer tls.Free(80)
 45045  
 45046  	*(*[7]uintptr)(unsafe.Pointer(bp)) = [7]uintptr{
 45047  		ts + 28444,
 45048  		ts + 28456,
 45049  		ts + 28464,
 45050  		ts + 28469,
 45051  		ts + 28478,
 45052  		ts + 28481,
 45053  		uintptr(0),
 45054  	}
 45055  
 45056  	var pIdxInfo uintptr = clientData
 45057  
 45058  	if objc < 2 {
 45059  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2523)
 45060  		return TCL_ERROR
 45061  	}
 45062  	if tcl.XTcl_GetIndexFromObjStruct(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp, int32(unsafe.Sizeof(uintptr(0))), ts+2014, 0, bp+56) != 0 {
 45063  		return TCL_ERROR
 45064  	}
 45065  
 45066  	if *(*int32)(unsafe.Pointer(bp + 56)) < 4 && objc != 2 {
 45067  		tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+584)
 45068  		return TCL_ERROR
 45069  	}
 45070  	if *(*int32)(unsafe.Pointer(bp + 56)) == 4 && objc != 4 {
 45071  		tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+28491)
 45072  		return TCL_ERROR
 45073  	}
 45074  	if *(*int32)(unsafe.Pointer(bp + 56)) == 5 && objc != 3 && objc != 4 {
 45075  		tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+28505)
 45076  		return TCL_ERROR
 45077  	}
 45078  
 45079  	switch *(*int32)(unsafe.Pointer(bp + 56)) {
 45080  	case 0:
 45081  		testBestIndexObjConstraints(tls, interp, pIdxInfo)
 45082  		break
 45083  
 45084  	case 1:
 45085  		testBestIndexObjOrderby(tls, interp, pIdxInfo)
 45086  		break
 45087  
 45088  	case 2:
 45089  		tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewWideIntObj(tls, int64((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FcolUsed)))
 45090  		break
 45091  
 45092  	case 3:
 45093  		{
 45094  			var bDistinct int32 = sqlite3.Xsqlite3_vtab_distinct(tls, pIdxInfo)
 45095  			tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, bDistinct))
 45096  			break
 45097  
 45098  		}
 45099  
 45100  	case 4:
 45101  		{
 45102  			if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+60) != 0 ||
 45103  				tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+64) != 0 {
 45104  				return TCL_ERROR
 45105  			}
 45106  			tcl.XTcl_SetObjResult(tls, interp,
 45107  				tcl.XTcl_NewIntObj(tls, sqlite3.Xsqlite3_vtab_in(tls, pIdxInfo, *(*int32)(unsafe.Pointer(bp + 60)), *(*int32)(unsafe.Pointer(bp + 64)))))
 45108  			break
 45109  
 45110  		}
 45111  
 45112  	case 5:
 45113  		{
 45114  			*(*int32)(unsafe.Pointer(bp + 68)) = 0
 45115  			var rc int32
 45116  			*(*uintptr)(unsafe.Pointer(bp + 72)) = uintptr(0)
 45117  			var zVal uintptr = ts + 584
 45118  			if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+68) != 0 {
 45119  				return TCL_ERROR
 45120  			}
 45121  			rc = sqlite3.Xsqlite3_vtab_rhs_value(tls, pIdxInfo, *(*int32)(unsafe.Pointer(bp + 68)), bp+72)
 45122  			if rc != SQLITE_OK && rc != SQLITE_NOTFOUND {
 45123  				tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(1))
 45124  				return TCL_ERROR
 45125  			}
 45126  			if *(*uintptr)(unsafe.Pointer(bp + 72)) != 0 {
 45127  				zVal = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(bp + 72)))
 45128  			} else if objc == 4 {
 45129  				zVal = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)))
 45130  			}
 45131  			tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, zVal, -1))
 45132  			break
 45133  
 45134  		}
 45135  	}
 45136  
 45137  	return TCL_OK
 45138  }
 45139  
 45140  func tclBestIndex(tls *libc.TLS, tab uintptr, pIdxInfo uintptr) int32 {
 45141  	bp := tls.Alloc(108)
 45142  	defer tls.Free(108)
 45143  
 45144  	var pTab uintptr = tab
 45145  	var interp uintptr = (*tcl_vtab)(unsafe.Pointer(pTab)).Finterp
 45146  	var rc int32 = SQLITE_OK
 45147  
 45148  	var pScript uintptr
 45149  
 45150  	pScript = tcl.XTcl_DuplicateObj(tls, (*tcl_vtab)(unsafe.Pointer(pTab)).FpCmd)
 45151  	(*Tcl_Obj)(unsafe.Pointer(pScript)).FrefCount++
 45152  	tcl.XTcl_ListObjAppendElement(tls, interp, pScript, tcl.XTcl_NewStringObj(tls, ts+27495, -1))
 45153  
 45154  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([24]uint8{})), bp+56, ts+28521, libc.VaList(bp, libc.PostIncInt32(&iNext, 1)))
 45155  	tcl.XTcl_CreateObjCommand(tls, interp, bp+56, *(*uintptr)(unsafe.Pointer(&struct {
 45156  		f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
 45157  	}{testBestIndexObj})), pIdxInfo, uintptr(0))
 45158  	tcl.XTcl_ListObjAppendElement(tls, interp, pScript, tcl.XTcl_NewStringObj(tls, bp+56, -1))
 45159  	rc = tcl.XTcl_EvalObjEx(tls, interp, pScript, TCL_EVAL_GLOBAL)
 45160  	tcl.XTcl_DeleteCommand(tls, interp, bp+56)
 45161  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 45162  		var _objPtr uintptr = pScript
 45163  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 45164  			tcl.XTclFreeObj(tls, _objPtr)
 45165  		}
 45166  	}
 45167  
 45168  	if rc != TCL_OK {
 45169  		var zErr uintptr = tcl.XTcl_GetStringResult(tls, interp)
 45170  		rc = SQLITE_ERROR
 45171  		(*tcl_vtab)(unsafe.Pointer(pTab)).Fbase.FzErrMsg = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp+8, zErr))
 45172  	} else {
 45173  		var pRes uintptr = tcl.XTcl_GetObjResult(tls, interp)
 45174  		*(*uintptr)(unsafe.Pointer(bp + 88)) = uintptr(0)
 45175  
 45176  		rc = tcl.XTcl_ListObjGetElements(tls, interp, pRes, bp+80, bp+88)
 45177  		if rc != TCL_OK {
 45178  			var zErr uintptr = tcl.XTcl_GetStringResult(tls, interp)
 45179  			rc = SQLITE_ERROR
 45180  			(*tcl_vtab)(unsafe.Pointer(pTab)).Fbase.FzErrMsg = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp+16, zErr))
 45181  		} else {
 45182  			var ii int32
 45183  			var iArgv int32 = 1
 45184  			for ii = 0; rc == SQLITE_OK && ii < *(*int32)(unsafe.Pointer(bp + 80)); ii = ii + 2 {
 45185  				var zCmd uintptr = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 88)) + uintptr(ii)*8)))
 45186  				var p uintptr = *(*uintptr)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 88)) + uintptr(ii+1)*8))
 45187  				if sqlite3.Xsqlite3_stricmp(tls, ts+28533, zCmd) == 0 {
 45188  					rc = tcl.XTcl_GetDoubleFromObj(tls, interp, p, pIdxInfo+64)
 45189  				} else if sqlite3.Xsqlite3_stricmp(tls, ts+28456, zCmd) == 0 {
 45190  					rc = tcl.XTcl_GetIntFromObj(tls, interp, p, pIdxInfo+60)
 45191  				} else if sqlite3.Xsqlite3_stricmp(tls, ts+28538, zCmd) == 0 {
 45192  					rc = tcl.XTcl_GetIntFromObj(tls, interp, p, pIdxInfo+40)
 45193  				} else if sqlite3.Xsqlite3_stricmp(tls, ts+28545, zCmd) == 0 {
 45194  					sqlite3.Xsqlite3_free(tls, (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxStr)
 45195  					(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxStr = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp+24, tcl.XTcl_GetString(tls, p)))
 45196  					(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FneedToFreeIdxStr = 1
 45197  				} else if sqlite3.Xsqlite3_stricmp(tls, ts+28552, zCmd) == 0 {
 45198  					*(*Tcl_WideInt)(unsafe.Pointer(bp + 96)) = int64(0)
 45199  					rc = tcl.XTcl_GetWideIntFromObj(tls, interp, p, bp+96)
 45200  					(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedRows = sqlite3_int64(tRowcnt(*(*Tcl_WideInt)(unsafe.Pointer(bp + 96))))
 45201  				} else if sqlite3.Xsqlite3_stricmp(tls, ts+28557, zCmd) == 0 ||
 45202  					sqlite3.Xsqlite3_stricmp(tls, ts+28561, zCmd) == 0 {
 45203  					rc = tcl.XTcl_GetIntFromObj(tls, interp, p, bp+104)
 45204  					if rc == SQLITE_OK {
 45205  						if *(*int32)(unsafe.Pointer(bp + 104)) < 0 || *(*int32)(unsafe.Pointer(bp + 104)) >= (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnConstraint {
 45206  							rc = SQLITE_ERROR
 45207  							(*tcl_vtab)(unsafe.Pointer(pTab)).Fbase.FzErrMsg = sqlite3.Xsqlite3_mprintf(tls, ts+28566, libc.VaList(bp+32, *(*int32)(unsafe.Pointer(bp + 104))))
 45208  						} else {
 45209  							var bOmit int32 = libc.Bool32(int32(*(*uint8)(unsafe.Pointer(zCmd))) == 'o' || int32(*(*uint8)(unsafe.Pointer(zCmd))) == 'O')
 45210  							(*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)
 45211  							(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(*(*int32)(unsafe.Pointer(bp + 104)))*8)).Fomit = uint8(bOmit)
 45212  						}
 45213  					}
 45214  				} else {
 45215  					rc = SQLITE_ERROR
 45216  					(*tcl_vtab)(unsafe.Pointer(pTab)).Fbase.FzErrMsg = sqlite3.Xsqlite3_mprintf(tls, ts+28350, libc.VaList(bp+40, zCmd))
 45217  				}
 45218  				if rc != SQLITE_OK && (*tcl_vtab)(unsafe.Pointer(pTab)).Fbase.FzErrMsg == uintptr(0) {
 45219  					var zErr uintptr = tcl.XTcl_GetStringResult(tls, interp)
 45220  					(*tcl_vtab)(unsafe.Pointer(pTab)).Fbase.FzErrMsg = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp+48, zErr))
 45221  				}
 45222  			}
 45223  		}
 45224  	}
 45225  
 45226  	return rc
 45227  }
 45228  
 45229  var iNext int32 = 43
 45230  
 45231  var tclModule = sqlite3_module{
 45232  	FxCreate:     0,
 45233  	FxConnect:    0,
 45234  	FxBestIndex:  0,
 45235  	FxDisconnect: 0,
 45236  	FxDestroy:    0,
 45237  	FxOpen:       0,
 45238  	FxClose:      0,
 45239  	FxFilter:     0,
 45240  	FxNext:       0,
 45241  	FxEof:        0,
 45242  	FxColumn:     0,
 45243  	FxRowid:      0,
 45244  }
 45245  
 45246  func register_tcl_module(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 45247  	bp := tls.Alloc(8)
 45248  	defer tls.Free(8)
 45249  
 45250  	if objc != 2 {
 45251  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2050)
 45252  		return TCL_ERROR
 45253  	}
 45254  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 45255  		return TCL_ERROR
 45256  	}
 45257  	sqlite3.Xsqlite3_create_module(tls, *(*uintptr)(unsafe.Pointer(bp)), ts+28581, uintptr(unsafe.Pointer(&tclModule)), interp)
 45258  	return TCL_OK
 45259  }
 45260  
 45261  func Sqlitetesttcl_Init(tls *libc.TLS, interp uintptr) int32 {
 45262  	var i int32
 45263  	for i = 0; uint64(i) < uint64(unsafe.Sizeof(aObjCmd4))/uint64(unsafe.Sizeof(struct {
 45264  		FzName      uintptr
 45265  		FxProc      uintptr
 45266  		FclientData uintptr
 45267  	}{})); i++ {
 45268  		tcl.XTcl_CreateObjCommand(tls, interp, aObjCmd4[i].FzName,
 45269  			aObjCmd4[i].FxProc, aObjCmd4[i].FclientData, uintptr(0))
 45270  	}
 45271  	return TCL_OK
 45272  }
 45273  
 45274  var aObjCmd4 = [1]struct {
 45275  	FzName      uintptr
 45276  	FxProc      uintptr
 45277  	FclientData uintptr
 45278  }{
 45279  	{FzName: ts + 28585, FxProc: 0},
 45280  }
 45281  
 45282  func ptrToText(tls *libc.TLS, p uintptr) uintptr {
 45283  	bp := tls.Alloc(8)
 45284  	defer tls.Free(8)
 45285  
 45286  	sqlite3.Xsqlite3_snprintf(tls, int32(uint64(unsafe.Sizeof(buf))-uint64(1)), uintptr(unsafe.Pointer(&buf)), ts+9889, libc.VaList(bp, p))
 45287  	return uintptr(unsafe.Pointer(&buf))
 45288  }
 45289  
 45290  var buf [100]uint8
 45291  
 45292  func blobHandleFromObj1(tls *libc.TLS, interp uintptr, pObj uintptr, ppBlob uintptr) int32 {
 45293  	bp := tls.Alloc(8)
 45294  	defer tls.Free(8)
 45295  
 45296  	var z uintptr
 45297  
 45298  	z = tcl.XTcl_GetStringFromObj(tls, pObj, bp)
 45299  	if *(*int32)(unsafe.Pointer(bp)) == 0 {
 45300  		*(*uintptr)(unsafe.Pointer(ppBlob)) = uintptr(0)
 45301  	} else if *(*int32)(unsafe.Pointer(bp)) > 9 && 0 == libc.Xmemcmp(tls, ts+28605, z, uint64(9)) {
 45302  		var channel Tcl_Channel
 45303  		var instanceData ClientData
 45304  
 45305  		channel = tcl.XTcl_GetChannel(tls, interp, z, bp+4)
 45306  		if !(channel != 0) {
 45307  			return TCL_ERROR
 45308  		}
 45309  
 45310  		tcl.XTcl_Flush(tls, channel)
 45311  		tcl.XTcl_Seek(tls, channel, int64(0), SEEK_SET)
 45312  
 45313  		instanceData = tcl.XTcl_GetChannelInstanceData(tls, channel)
 45314  		*(*uintptr)(unsafe.Pointer(ppBlob)) = *(*uintptr)(unsafe.Pointer(instanceData))
 45315  	} else {
 45316  		*(*uintptr)(unsafe.Pointer(ppBlob)) = sqlite3TestTextToPtr(tls, z)
 45317  	}
 45318  
 45319  	return TCL_OK
 45320  }
 45321  
 45322  func blobStringFromObj(tls *libc.TLS, pObj uintptr) uintptr {
 45323  	bp := tls.Alloc(4)
 45324  	defer tls.Free(4)
 45325  
 45326  	var z uintptr
 45327  	z = tcl.XTcl_GetStringFromObj(tls, pObj, bp)
 45328  	return func() uintptr {
 45329  		if *(*int32)(unsafe.Pointer(bp)) != 0 {
 45330  			return z
 45331  		}
 45332  		return uintptr(0)
 45333  	}()
 45334  }
 45335  
 45336  func test_blob_open(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 45337  	bp := tls.Alloc(40)
 45338  	defer tls.Free(40)
 45339  
 45340  	var zDb uintptr
 45341  	var zTable uintptr
 45342  	var zColumn uintptr
 45343  
 45344  	var zVarname uintptr
 45345  
 45346  	*(*uintptr)(unsafe.Pointer(bp + 32)) = bp
 45347  	var rc int32
 45348  
 45349  	if objc != 8 {
 45350  		var zUsage uintptr = ts + 28615
 45351  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, zUsage)
 45352  		return TCL_ERROR
 45353  	}
 45354  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+8) != 0 {
 45355  		return TCL_ERROR
 45356  	}
 45357  	zDb = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 45358  	zTable = blobStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)))
 45359  	zColumn = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 4*8)))
 45360  	if tcl.XTcl_GetWideIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 5*8)), bp+16) != 0 {
 45361  		return TCL_ERROR
 45362  	}
 45363  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 6*8)), bp) != 0 {
 45364  		return TCL_ERROR
 45365  	}
 45366  	zVarname = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 7*8)), bp+24)
 45367  
 45368  	if *(*int32)(unsafe.Pointer(bp + 24)) > 0 {
 45369  		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)
 45370  		tcl.XTcl_SetVar2(tls, interp, zVarname, uintptr(0), ptrToText(tls, *(*uintptr)(unsafe.Pointer(bp + 32))), 0)
 45371  	} else {
 45372  		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))
 45373  	}
 45374  
 45375  	if rc == SQLITE_OK {
 45376  		tcl.XTcl_ResetResult(tls, interp)
 45377  	} else {
 45378  		tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(1))
 45379  		return TCL_ERROR
 45380  	}
 45381  	return TCL_OK
 45382  }
 45383  
 45384  func test_blob_close(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 45385  	bp := tls.Alloc(8)
 45386  	defer tls.Free(8)
 45387  
 45388  	var rc int32
 45389  
 45390  	if objc != 2 {
 45391  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+28660)
 45392  		return TCL_ERROR
 45393  	}
 45394  
 45395  	if blobHandleFromObj1(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp) != 0 {
 45396  		return TCL_ERROR
 45397  	}
 45398  	rc = sqlite3.Xsqlite3_blob_close(tls, *(*uintptr)(unsafe.Pointer(bp)))
 45399  
 45400  	if rc != 0 {
 45401  		tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(1))
 45402  	} else {
 45403  		tcl.XTcl_ResetResult(tls, interp)
 45404  	}
 45405  	return TCL_OK
 45406  }
 45407  
 45408  func test_blob_bytes(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 45409  	bp := tls.Alloc(8)
 45410  	defer tls.Free(8)
 45411  
 45412  	var nByte int32
 45413  
 45414  	if objc != 2 {
 45415  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+28660)
 45416  		return TCL_ERROR
 45417  	}
 45418  
 45419  	if blobHandleFromObj1(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp) != 0 {
 45420  		return TCL_ERROR
 45421  	}
 45422  	nByte = sqlite3.Xsqlite3_blob_bytes(tls, *(*uintptr)(unsafe.Pointer(bp)))
 45423  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, nByte))
 45424  
 45425  	return TCL_OK
 45426  }
 45427  
 45428  func test_blob_read(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 45429  	bp := tls.Alloc(32)
 45430  	defer tls.Free(32)
 45431  
 45432  	var zBuf uintptr = uintptr(0)
 45433  	var rc int32
 45434  
 45435  	if objc != 4 {
 45436  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+28667)
 45437  		return TCL_ERROR
 45438  	}
 45439  
 45440  	if blobHandleFromObj1(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp+16) != 0 {
 45441  		return TCL_ERROR
 45442  	}
 45443  	if TCL_OK != tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+24) ||
 45444  		TCL_OK != tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+28) {
 45445  		return TCL_ERROR
 45446  	}
 45447  
 45448  	if *(*int32)(unsafe.Pointer(bp + 28)) > 0 {
 45449  		zBuf = tcl.XTcl_AttemptAlloc(tls, uint32(*(*int32)(unsafe.Pointer(bp + 28))))
 45450  		if zBuf == uintptr(0) {
 45451  			tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+28684, 0))
 45452  			return TCL_ERROR
 45453  		}
 45454  	}
 45455  	rc = sqlite3.Xsqlite3_blob_read(tls, *(*uintptr)(unsafe.Pointer(bp + 16)), zBuf, *(*int32)(unsafe.Pointer(bp + 28)), *(*int32)(unsafe.Pointer(bp + 24)))
 45456  	if rc == SQLITE_OK {
 45457  		tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewByteArrayObj(tls, zBuf, *(*int32)(unsafe.Pointer(bp + 28))))
 45458  	} else {
 45459  		tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(1))
 45460  	}
 45461  	tcl.XTcl_Free(tls, zBuf)
 45462  
 45463  	return func() int32 {
 45464  		if rc == SQLITE_OK {
 45465  			return TCL_OK
 45466  		}
 45467  		return TCL_ERROR
 45468  	}()
 45469  }
 45470  
 45471  func test_blob_write(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 45472  	bp := tls.Alloc(16)
 45473  	defer tls.Free(16)
 45474  
 45475  	var rc int32
 45476  	var zBuf uintptr
 45477  
 45478  	if objc != 4 && objc != 5 {
 45479  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+28745)
 45480  		return TCL_ERROR
 45481  	}
 45482  
 45483  	if blobHandleFromObj1(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp) != 0 {
 45484  		return TCL_ERROR
 45485  	}
 45486  	if TCL_OK != tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+8) {
 45487  		return TCL_ERROR
 45488  	}
 45489  
 45490  	zBuf = tcl.XTcl_GetByteArrayFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+12)
 45491  	if objc == 5 && tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 4*8)), bp+12) != 0 {
 45492  		return TCL_ERROR
 45493  	}
 45494  	rc = sqlite3.Xsqlite3_blob_write(tls, *(*uintptr)(unsafe.Pointer(bp)), zBuf, *(*int32)(unsafe.Pointer(bp + 12)), *(*int32)(unsafe.Pointer(bp + 8)))
 45495  	if rc != SQLITE_OK {
 45496  		tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(1))
 45497  	}
 45498  
 45499  	return func() int32 {
 45500  		if rc == SQLITE_OK {
 45501  			return TCL_OK
 45502  		}
 45503  		return TCL_ERROR
 45504  	}()
 45505  }
 45506  
 45507  func Sqlitetest_blob_Init(tls *libc.TLS, interp uintptr) int32 {
 45508  	var i int32
 45509  	for i = 0; uint64(i) < uint64(unsafe.Sizeof(aObjCmd5))/uint64(unsafe.Sizeof(struct {
 45510  		FzName uintptr
 45511  		FxProc uintptr
 45512  	}{})); i++ {
 45513  		tcl.XTcl_CreateObjCommand(tls, interp, aObjCmd5[i].FzName, aObjCmd5[i].FxProc, uintptr(0), uintptr(0))
 45514  	}
 45515  	return TCL_OK
 45516  }
 45517  
 45518  var aObjCmd5 = [5]struct {
 45519  	FzName uintptr
 45520  	FxProc uintptr
 45521  }{
 45522  	{FzName: ts + 28772, FxProc: 0},
 45523  	{FzName: ts + 28790, FxProc: 0},
 45524  	{FzName: ts + 28809, FxProc: 0},
 45525  	{FzName: ts + 28828, FxProc: 0},
 45526  	{FzName: ts + 28846, FxProc: 0},
 45527  }
 45528  
 45529  func sqlite3BtreeSharedCacheReport(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 45530  	var pBt uintptr
 45531  	var pRet uintptr = tcl.XTcl_NewObj(tls)
 45532  	for pBt = sqlite3.Xsqlite3SharedCacheList; pBt != 0; pBt = (*BtShared)(unsafe.Pointer(pBt)).FpNext {
 45533  		var zFile uintptr = sqlite3.Xsqlite3PagerFilename(tls, (*BtShared)(unsafe.Pointer(pBt)).FpPager, 1)
 45534  		tcl.XTcl_ListObjAppendElement(tls, interp, pRet, tcl.XTcl_NewStringObj(tls, zFile, -1))
 45535  		tcl.XTcl_ListObjAppendElement(tls, interp, pRet, tcl.XTcl_NewIntObj(tls, (*BtShared)(unsafe.Pointer(pBt)).FnRef))
 45536  	}
 45537  	tcl.XTcl_SetObjResult(tls, interp, pRet)
 45538  	return TCL_OK
 45539  }
 45540  
 45541  func sqlite3BtreeCursorList(tls *libc.TLS, p uintptr) {
 45542  }
 45543  
 45544  func set_options(tls *libc.TLS, interp uintptr) {
 45545  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+28880, ts+28899,
 45546  		TCL_GLOBAL_ONLY)
 45547  
 45548  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+28901, ts+14193, TCL_GLOBAL_ONLY)
 45549  
 45550  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+28909, ts+14193, TCL_GLOBAL_ONLY)
 45551  
 45552  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+28927, ts+28940, TCL_GLOBAL_ONLY)
 45553  
 45554  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+28944, ts+28899, TCL_GLOBAL_ONLY)
 45555  
 45556  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+28951, ts+14193, TCL_GLOBAL_ONLY)
 45557  
 45558  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+28963, ts+14193, TCL_GLOBAL_ONLY)
 45559  
 45560  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+28969, ts+14193, TCL_GLOBAL_ONLY)
 45561  
 45562  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+28991, ts+14193, TCL_GLOBAL_ONLY)
 45563  
 45564  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29003, ts+28899, TCL_GLOBAL_ONLY)
 45565  
 45566  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29011, ts+28899, TCL_GLOBAL_ONLY)
 45567  
 45568  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29015, ts+28899, TCL_GLOBAL_ONLY)
 45569  
 45570  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29040, ts+28899, TCL_GLOBAL_ONLY)
 45571  
 45572  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29045,
 45573  		ts+29060, TCL_GLOBAL_ONLY)
 45574  
 45575  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29062, ts+14193, TCL_GLOBAL_ONLY)
 45576  
 45577  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29071, ts+14193, TCL_GLOBAL_ONLY)
 45578  
 45579  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29081, ts+14193, TCL_GLOBAL_ONLY)
 45580  
 45581  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29093, ts+14193, TCL_GLOBAL_ONLY)
 45582  
 45583  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+13460, ts+28899, TCL_GLOBAL_ONLY)
 45584  
 45585  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29107, ts+28899, TCL_GLOBAL_ONLY)
 45586  
 45587  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29115, ts+14193, TCL_GLOBAL_ONLY)
 45588  
 45589  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29120, ts+14193, TCL_GLOBAL_ONLY)
 45590  
 45591  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29125, ts+28899, TCL_GLOBAL_ONLY)
 45592  
 45593  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+13580, ts+28899, TCL_GLOBAL_ONLY)
 45594  
 45595  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29141, ts+28899, TCL_GLOBAL_ONLY)
 45596  
 45597  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29150, ts+28899, TCL_GLOBAL_ONLY)
 45598  
 45599  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29156, ts+28899, TCL_GLOBAL_ONLY)
 45600  
 45601  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29167, ts+28899, TCL_GLOBAL_ONLY)
 45602  
 45603  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+1957, ts+28899, TCL_GLOBAL_ONLY)
 45604  
 45605  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29178, ts+14193, TCL_GLOBAL_ONLY)
 45606  
 45607  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29188, ts+14193, TCL_GLOBAL_ONLY)
 45608  
 45609  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29200, ts+28899, TCL_GLOBAL_ONLY)
 45610  
 45611  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29208, ts+28899, TCL_GLOBAL_ONLY)
 45612  
 45613  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29214, ts+14193, TCL_GLOBAL_ONLY)
 45614  
 45615  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29224, ts+14193, TCL_GLOBAL_ONLY)
 45616  
 45617  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+10121, ts+28899, TCL_GLOBAL_ONLY)
 45618  
 45619  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29241, ts+28899, TCL_GLOBAL_ONLY)
 45620  
 45621  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29246, ts+28899, TCL_GLOBAL_ONLY)
 45622  
 45623  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+13044, ts+28899, TCL_GLOBAL_ONLY)
 45624  
 45625  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29254, ts+28899, TCL_GLOBAL_ONLY)
 45626  
 45627  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29264, ts+28899, TCL_GLOBAL_ONLY)
 45628  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29275,
 45629  		ts+14193, TCL_GLOBAL_ONLY)
 45630  
 45631  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29294, ts+28899, TCL_GLOBAL_ONLY)
 45632  
 45633  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29306, ts+28899, TCL_GLOBAL_ONLY)
 45634  
 45635  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29319, ts+28899, TCL_GLOBAL_ONLY)
 45636  
 45637  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29327, ts+28899, TCL_GLOBAL_ONLY)
 45638  
 45639  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29332, ts+28899, TCL_GLOBAL_ONLY)
 45640  
 45641  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29338, ts+28899, TCL_GLOBAL_ONLY)
 45642  
 45643  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29342, ts+28899, TCL_GLOBAL_ONLY)
 45644  
 45645  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29357, ts+14193,
 45646  		TCL_GLOBAL_ONLY)
 45647  
 45648  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29377, ts+28899, TCL_GLOBAL_ONLY)
 45649  
 45650  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+13439, ts+28899, TCL_GLOBAL_ONLY)
 45651  
 45652  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29397, ts+28899, TCL_GLOBAL_ONLY)
 45653  
 45654  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29406, ts+28899, TCL_GLOBAL_ONLY)
 45655  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29415, ts+28899, TCL_GLOBAL_ONLY)
 45656  
 45657  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29425, ts+28899, TCL_GLOBAL_ONLY)
 45658  
 45659  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29434, ts+28899, TCL_GLOBAL_ONLY)
 45660  
 45661  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29443, ts+28899, TCL_GLOBAL_ONLY)
 45662  
 45663  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29454, ts+28899, TCL_GLOBAL_ONLY)
 45664  
 45665  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+4974, ts+28899, TCL_GLOBAL_ONLY)
 45666  
 45667  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29461, ts+28899, TCL_GLOBAL_ONLY)
 45668  
 45669  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29475, ts+28899, TCL_GLOBAL_ONLY)
 45670  
 45671  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29486, ts+14193, TCL_GLOBAL_ONLY)
 45672  
 45673  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29491, ts+14193, TCL_GLOBAL_ONLY)
 45674  
 45675  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29496, ts+14193, TCL_GLOBAL_ONLY)
 45676  
 45677  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29501, ts+28899, TCL_GLOBAL_ONLY)
 45678  
 45679  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29506, ts+14193, TCL_GLOBAL_ONLY)
 45680  
 45681  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29519, ts+28899, TCL_GLOBAL_ONLY)
 45682  
 45683  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29533, ts+28899, TCL_GLOBAL_ONLY)
 45684  
 45685  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29542, ts+14193, TCL_GLOBAL_ONLY)
 45686  
 45687  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29546, ts+14193, TCL_GLOBAL_ONLY)
 45688  
 45689  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+10868, ts+28899, TCL_GLOBAL_ONLY)
 45690  
 45691  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29561, ts+28899, TCL_GLOBAL_ONLY)
 45692  
 45693  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29573, ts+14193, TCL_GLOBAL_ONLY)
 45694  
 45695  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29586, ts+28899, TCL_GLOBAL_ONLY)
 45696  
 45697  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29595, ts+14193, TCL_GLOBAL_ONLY)
 45698  
 45699  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29604, ts+28899, TCL_GLOBAL_ONLY)
 45700  
 45701  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29614, ts+28899, TCL_GLOBAL_ONLY)
 45702  
 45703  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29624,
 45704  		func() uintptr {
 45705  			if uint64(unsafe.Sizeof(float64(0))) > uint64(unsafe.Sizeof(float64(0))) {
 45706  				return ts + 28899
 45707  			}
 45708  			return ts + 14193
 45709  		}(),
 45710  		TCL_GLOBAL_ONLY)
 45711  
 45712  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29636, ts+28899, TCL_GLOBAL_ONLY)
 45713  
 45714  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29645, ts+28899, TCL_GLOBAL_ONLY)
 45715  
 45716  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29658, ts+28899, TCL_GLOBAL_ONLY)
 45717  
 45718  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29668, ts+14193, TCL_GLOBAL_ONLY)
 45719  
 45720  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29678, ts+28899, TCL_GLOBAL_ONLY)
 45721  
 45722  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29685, ts+28899, TCL_GLOBAL_ONLY)
 45723  
 45724  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29689, ts+28899, TCL_GLOBAL_ONLY)
 45725  
 45726  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29703, ts+28899, TCL_GLOBAL_ONLY)
 45727  
 45728  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+9564, ts+28899, TCL_GLOBAL_ONLY)
 45729  
 45730  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29710, ts+28899, TCL_GLOBAL_ONLY)
 45731  
 45732  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29718, ts+28899, TCL_GLOBAL_ONLY)
 45733  
 45734  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29724, ts+14193, TCL_GLOBAL_ONLY)
 45735  
 45736  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29739, ts+28899, TCL_GLOBAL_ONLY)
 45737  
 45738  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29754, ts+28899, TCL_GLOBAL_ONLY)
 45739  
 45740  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29769, ts+28899, TCL_GLOBAL_ONLY)
 45741  
 45742  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+18810, ts+28899, TCL_GLOBAL_ONLY)
 45743  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29777, ts+28899, TCL_GLOBAL_ONLY)
 45744  
 45745  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29786, ts+14193, TCL_GLOBAL_ONLY)
 45746  
 45747  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29797, ts+14193, TCL_GLOBAL_ONLY)
 45748  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29816, ts+14193, TCL_GLOBAL_ONLY)
 45749  
 45750  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29837, ts+28899, TCL_GLOBAL_ONLY)
 45751  
 45752  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29850, ts+28899, TCL_GLOBAL_ONLY)
 45753  
 45754  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29859, ts+28899, TCL_GLOBAL_ONLY)
 45755  
 45756  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29866,
 45757  		func() uintptr {
 45758  			if 1 != 0 {
 45759  				return ts + 28899
 45760  			}
 45761  			return ts + 14193
 45762  		}(), TCL_GLOBAL_ONLY)
 45763  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29877,
 45764  		func() uintptr {
 45765  			if SQLITE_THREADSAFE == 1 {
 45766  				return ts + 28899
 45767  			}
 45768  			return ts + 14193
 45769  		}(), TCL_GLOBAL_ONLY)
 45770  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29889,
 45771  		func() uintptr {
 45772  			if SQLITE_THREADSAFE == 2 {
 45773  				return ts + 28899
 45774  			}
 45775  			return ts + 14193
 45776  		}(), TCL_GLOBAL_ONLY)
 45777  
 45778  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29901, ts+28899, TCL_GLOBAL_ONLY)
 45779  
 45780  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+13665, ts+28899, TCL_GLOBAL_ONLY)
 45781  
 45782  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29908, ts+28899, TCL_GLOBAL_ONLY)
 45783  
 45784  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29916, ts+28899, TCL_GLOBAL_ONLY)
 45785  
 45786  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+15733, ts+28899, TCL_GLOBAL_ONLY)
 45787  
 45788  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29929, ts+28899, TCL_GLOBAL_ONLY)
 45789  
 45790  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29936, ts+28899, TCL_GLOBAL_ONLY)
 45791  
 45792  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29941, ts+28899, TCL_GLOBAL_ONLY)
 45793  
 45794  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29946, ts+28899, TCL_GLOBAL_ONLY)
 45795  
 45796  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29950, ts+28899, TCL_GLOBAL_ONLY)
 45797  
 45798  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29954, ts+14193, TCL_GLOBAL_ONLY)
 45799  
 45800  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+13692, ts+28899, TCL_GLOBAL_ONLY)
 45801  
 45802  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29974, ts+14193, TCL_GLOBAL_ONLY)
 45803  
 45804  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29993, ts+14193, TCL_GLOBAL_ONLY)
 45805  
 45806  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+30007, ts+14193, TCL_GLOBAL_ONLY)
 45807  
 45808  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+30016, ts+14193, TCL_GLOBAL_ONLY)
 45809  
 45810  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+30040, ts+14193, TCL_GLOBAL_ONLY)
 45811  
 45812  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+30061, ts+14193, TCL_GLOBAL_ONLY)
 45813  
 45814  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+30068, ts+14193, TCL_GLOBAL_ONLY)
 45815  
 45816  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+30081, ts+14193, TCL_GLOBAL_ONLY)
 45817  
 45818  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+30091, ts+28899, TCL_GLOBAL_ONLY)
 45819  
 45820  	{
 45821  		tcl.XTcl_LinkVar(tls, interp, ts+30102, uintptr(unsafe.Pointer(&cv_MAX_LENGTH)), TCL_LINK_INT|TCL_LINK_READ_ONLY)
 45822  	}
 45823  
 45824  	{
 45825  		tcl.XTcl_LinkVar(tls, interp, ts+30120, uintptr(unsafe.Pointer(&cv_MAX_COLUMN)), TCL_LINK_INT|TCL_LINK_READ_ONLY)
 45826  	}
 45827  
 45828  	{
 45829  		tcl.XTcl_LinkVar(tls, interp, ts+30138, uintptr(unsafe.Pointer(&cv_MAX_SQL_LENGTH)), TCL_LINK_INT|TCL_LINK_READ_ONLY)
 45830  	}
 45831  
 45832  	{
 45833  		tcl.XTcl_LinkVar(tls, interp, ts+30160, uintptr(unsafe.Pointer(&cv_MAX_EXPR_DEPTH)), TCL_LINK_INT|TCL_LINK_READ_ONLY)
 45834  	}
 45835  
 45836  	{
 45837  		tcl.XTcl_LinkVar(tls, interp, ts+30182, uintptr(unsafe.Pointer(&cv_MAX_COMPOUND_SELECT)), TCL_LINK_INT|TCL_LINK_READ_ONLY)
 45838  	}
 45839  
 45840  	{
 45841  		tcl.XTcl_LinkVar(tls, interp, ts+30209, uintptr(unsafe.Pointer(&cv_MAX_VDBE_OP)), TCL_LINK_INT|TCL_LINK_READ_ONLY)
 45842  	}
 45843  
 45844  	{
 45845  		tcl.XTcl_LinkVar(tls, interp, ts+30228, uintptr(unsafe.Pointer(&cv_MAX_FUNCTION_ARG)), TCL_LINK_INT|TCL_LINK_READ_ONLY)
 45846  	}
 45847  
 45848  	{
 45849  		tcl.XTcl_LinkVar(tls, interp, ts+30252, uintptr(unsafe.Pointer(&cv_MAX_VARIABLE_NUMBER)), TCL_LINK_INT|TCL_LINK_READ_ONLY)
 45850  	}
 45851  
 45852  	{
 45853  		tcl.XTcl_LinkVar(tls, interp, ts+30279, uintptr(unsafe.Pointer(&cv_MAX_PAGE_SIZE)), TCL_LINK_INT|TCL_LINK_READ_ONLY)
 45854  	}
 45855  
 45856  	{
 45857  		tcl.XTcl_LinkVar(tls, interp, ts+30300, uintptr(unsafe.Pointer(&cv_MAX_PAGE_COUNT)), TCL_LINK_INT|TCL_LINK_READ_ONLY)
 45858  	}
 45859  
 45860  	{
 45861  		tcl.XTcl_LinkVar(tls, interp, ts+30322, uintptr(unsafe.Pointer(&cv_MAX_LIKE_PATTERN_LENGTH)), TCL_LINK_INT|TCL_LINK_READ_ONLY)
 45862  	}
 45863  
 45864  	{
 45865  		tcl.XTcl_LinkVar(tls, interp, ts+30353, uintptr(unsafe.Pointer(&cv_MAX_TRIGGER_DEPTH)), TCL_LINK_INT|TCL_LINK_READ_ONLY)
 45866  	}
 45867  
 45868  	{
 45869  		tcl.XTcl_LinkVar(tls, interp, ts+30378, uintptr(unsafe.Pointer(&cv_DEFAULT_CACHE_SIZE)), TCL_LINK_INT|TCL_LINK_READ_ONLY)
 45870  	}
 45871  
 45872  	{
 45873  		tcl.XTcl_LinkVar(tls, interp, ts+30404, uintptr(unsafe.Pointer(&cv_DEFAULT_PAGE_SIZE)), TCL_LINK_INT|TCL_LINK_READ_ONLY)
 45874  	}
 45875  
 45876  	{
 45877  		tcl.XTcl_LinkVar(tls, interp, ts+30429, uintptr(unsafe.Pointer(&cv_DEFAULT_FILE_FORMAT)), TCL_LINK_INT|TCL_LINK_READ_ONLY)
 45878  	}
 45879  
 45880  	{
 45881  		tcl.XTcl_LinkVar(tls, interp, ts+30456, uintptr(unsafe.Pointer(&cv_DEFAULT_SYNCHRONOUS)), TCL_LINK_INT|TCL_LINK_READ_ONLY)
 45882  	}
 45883  
 45884  	{
 45885  		tcl.XTcl_LinkVar(tls, interp, ts+30483, uintptr(unsafe.Pointer(&cv_DEFAULT_WAL_SYNCHRONOUS)), TCL_LINK_INT|TCL_LINK_READ_ONLY)
 45886  	}
 45887  
 45888  	{
 45889  		tcl.XTcl_LinkVar(tls, interp, ts+30514, uintptr(unsafe.Pointer(&cv_MAX_ATTACHED)), TCL_LINK_INT|TCL_LINK_READ_ONLY)
 45890  	}
 45891  
 45892  	{
 45893  		tcl.XTcl_LinkVar(tls, interp, ts+30534, uintptr(unsafe.Pointer(&cv_MAX_DEFAULT_PAGE_SIZE)), TCL_LINK_INT|TCL_LINK_READ_ONLY)
 45894  	}
 45895  
 45896  	{
 45897  		tcl.XTcl_LinkVar(tls, interp, ts+30563, uintptr(unsafe.Pointer(&cv_MAX_WORKER_THREADS)), TCL_LINK_INT|TCL_LINK_READ_ONLY)
 45898  	}
 45899  
 45900  	{
 45901  		tcl.XTcl_LinkVar(tls, interp, ts+30589, uintptr(unsafe.Pointer(&cv_TEMP_STORE)),
 45902  			TCL_LINK_INT|TCL_LINK_READ_ONLY)
 45903  
 45904  	}
 45905  
 45906  	{
 45907  		tcl.XTcl_LinkVar(tls, interp, ts+30600, uintptr(unsafe.Pointer(&cv___GNUC__)),
 45908  			TCL_LINK_INT|TCL_LINK_READ_ONLY)
 45909  
 45910  	}
 45911  }
 45912  
 45913  var cv_MAX_LENGTH int32 = SQLITE_MAX_LENGTH
 45914  var cv_MAX_COLUMN int32 = SQLITE_MAX_COLUMN
 45915  var cv_MAX_SQL_LENGTH int32 = SQLITE_MAX_SQL_LENGTH
 45916  var cv_MAX_EXPR_DEPTH int32 = SQLITE_MAX_EXPR_DEPTH
 45917  var cv_MAX_COMPOUND_SELECT int32 = SQLITE_MAX_COMPOUND_SELECT
 45918  var cv_MAX_VDBE_OP int32 = SQLITE_MAX_VDBE_OP
 45919  var cv_MAX_FUNCTION_ARG int32 = SQLITE_MAX_FUNCTION_ARG
 45920  var cv_MAX_VARIABLE_NUMBER int32 = SQLITE_MAX_VARIABLE_NUMBER
 45921  var cv_MAX_PAGE_SIZE int32 = SQLITE_MAX_PAGE_SIZE
 45922  var cv_MAX_PAGE_COUNT int32 = SQLITE_MAX_PAGE_COUNT
 45923  var cv_MAX_LIKE_PATTERN_LENGTH int32 = SQLITE_MAX_LIKE_PATTERN_LENGTH
 45924  var cv_MAX_TRIGGER_DEPTH int32 = SQLITE_MAX_TRIGGER_DEPTH
 45925  var cv_DEFAULT_CACHE_SIZE int32 = -2000
 45926  var cv_DEFAULT_PAGE_SIZE int32 = SQLITE_DEFAULT_PAGE_SIZE
 45927  var cv_DEFAULT_FILE_FORMAT int32 = SQLITE_DEFAULT_FILE_FORMAT
 45928  var cv_DEFAULT_SYNCHRONOUS int32 = SQLITE_DEFAULT_SYNCHRONOUS
 45929  var cv_DEFAULT_WAL_SYNCHRONOUS int32 = SQLITE_DEFAULT_SYNCHRONOUS
 45930  var cv_MAX_ATTACHED int32 = SQLITE_MAX_ATTACHED
 45931  var cv_MAX_DEFAULT_PAGE_SIZE int32 = SQLITE_MAX_DEFAULT_PAGE_SIZE
 45932  var cv_MAX_WORKER_THREADS int32 = SQLITE_MAX_WORKER_THREADS
 45933  var cv_TEMP_STORE int32 = SQLITE_TEMP_STORE
 45934  var cv___GNUC__ int32 = 1
 45935  
 45936  func Sqliteconfig_Init(tls *libc.TLS, interp uintptr) int32 {
 45937  	set_options(tls, interp)
 45938  	return TCL_OK
 45939  }
 45940  
 45941  func sqlite3Delete83Name(tls *libc.TLS, z uintptr) {
 45942  	var i int32
 45943  	var sz int32
 45944  	sz = int32(libc.Xstrlen(tls, z))
 45945  	for i = sz - 1; i > 0 && int32(*(*uint8)(unsafe.Pointer(z + uintptr(i)))) != '/' && int32(*(*uint8)(unsafe.Pointer(z + uintptr(i)))) != '.'; i-- {
 45946  	}
 45947  	if int32(*(*uint8)(unsafe.Pointer(z + uintptr(i)))) == '.' && sz > i+4 {
 45948  		libc.Xmemmove(tls, z+uintptr(i+1), z+uintptr(sz-3), uint64(4))
 45949  	}
 45950  }
 45951  
 45952  func sqlite3DeleteUnlinkIfExists(tls *libc.TLS, pVfs uintptr, zFile uintptr, pbExists uintptr) int32 {
 45953  	var rc int32 = SQLITE_ERROR
 45954  
 45955  	rc = libc.Xaccess(tls, zFile, F_OK)
 45956  	if rc != 0 {
 45957  		if *(*int32)(unsafe.Pointer(libc.X__errno_location(tls))) == ENOENT {
 45958  			if pbExists != 0 {
 45959  				*(*int32)(unsafe.Pointer(pbExists)) = 0
 45960  			}
 45961  			rc = SQLITE_OK
 45962  		}
 45963  	} else {
 45964  		if pbExists != 0 {
 45965  			*(*int32)(unsafe.Pointer(pbExists)) = 1
 45966  		}
 45967  		rc = libc.Xunlink(tls, zFile)
 45968  	}
 45969  	return rc
 45970  }
 45971  
 45972  func sqlite3_delete_database(tls *libc.TLS, zFile uintptr) int32 {
 45973  	bp := tls.Alloc(156)
 45974  	defer tls.Free(156)
 45975  
 45976  	var zBuf uintptr
 45977  	var nBuf int32
 45978  	var rc int32 = 0
 45979  	var i int32
 45980  
 45981  	*(*[4]uintptr)(unsafe.Pointer(bp + 24)) = [4]uintptr{ts, ts + 30609, ts + 30620, ts + 30627}
 45982  
 45983  	*(*[6]MFile)(unsafe.Pointer(bp + 56)) = [6]MFile{
 45984  		{FzFmt: ts + 30634},
 45985  		{FzFmt: ts + 30641},
 45986  		{FzFmt: ts + 30656},
 45987  		{FzFmt: ts + 30634, Fb83: 1},
 45988  		{FzFmt: ts + 30641, FiOffset: SQLITE_MULTIPLEX_JOURNAL_8_3_OFFSET, Fb83: 1},
 45989  		{FzFmt: ts + 30656, FiOffset: SQLITE_MULTIPLEX_WAL_8_3_OFFSET, Fb83: 1},
 45990  	}
 45991  
 45992  	var pVfs uintptr = uintptr(0)
 45993  
 45994  	nBuf = int32(libc.Xstrlen(tls, zFile)) + 100
 45995  	zBuf = sqlite3.Xsqlite3_malloc(tls, nBuf)
 45996  	if zBuf == uintptr(0) {
 45997  		return SQLITE_NOMEM
 45998  	}
 45999  
 46000  	for i = 0; rc == 0 && uint64(i) < uint64(unsafe.Sizeof([4]uintptr{}))/uint64(unsafe.Sizeof(uintptr(0))); i++ {
 46001  		sqlite3.Xsqlite3_snprintf(tls, nBuf, zBuf, *(*uintptr)(unsafe.Pointer(bp + 24 + uintptr(i)*8)), libc.VaList(bp, zFile))
 46002  		rc = sqlite3DeleteUnlinkIfExists(tls, pVfs, zBuf, uintptr(0))
 46003  		if rc == 0 && i != 0 {
 46004  			sqlite3Delete83Name(tls, zBuf)
 46005  			rc = sqlite3DeleteUnlinkIfExists(tls, pVfs, zBuf, uintptr(0))
 46006  		}
 46007  	}
 46008  
 46009  	for i = 0; rc == 0 && uint64(i) < uint64(unsafe.Sizeof([6]MFile{}))/uint64(unsafe.Sizeof(MFile{})); i++ {
 46010  		var p uintptr = bp + 56 + uintptr(i)*16
 46011  		var iChunk int32
 46012  		for iChunk = 1; iChunk <= MX_CHUNK_NUMBER; iChunk++ {
 46013  			sqlite3.Xsqlite3_snprintf(tls, nBuf, zBuf, (*MFile)(unsafe.Pointer(p)).FzFmt, libc.VaList(bp+8, zFile, iChunk+(*MFile)(unsafe.Pointer(p)).FiOffset))
 46014  			if (*MFile)(unsafe.Pointer(p)).Fb83 != 0 {
 46015  				sqlite3Delete83Name(tls, zBuf)
 46016  			}
 46017  			rc = sqlite3DeleteUnlinkIfExists(tls, pVfs, zBuf, bp+152)
 46018  			if *(*int32)(unsafe.Pointer(bp + 152)) == 0 || rc != 0 {
 46019  				break
 46020  			}
 46021  		}
 46022  	}
 46023  
 46024  	sqlite3.Xsqlite3_free(tls, zBuf)
 46025  	return func() int32 {
 46026  		if rc != 0 {
 46027  			return SQLITE_ERROR
 46028  		}
 46029  		return SQLITE_OK
 46030  	}()
 46031  }
 46032  
 46033  type MFile = struct {
 46034  	FzFmt    uintptr
 46035  	FiOffset int32
 46036  	Fb83     int32
 46037  }
 46038  
 46039  func Sqlitetest_demovfs_Init(tls *libc.TLS, interp uintptr) int32 {
 46040  	return TCL_OK
 46041  }
 46042  
 46043  type devsym_file1 = struct {
 46044  	Fbase  sqlite3_file
 46045  	FpReal uintptr
 46046  }
 46047  
 46048  type devsym_file = devsym_file1
 46049  
 46050  type DevsymGlobal = struct {
 46051  	FpVfs        uintptr
 46052  	FiDeviceChar int32
 46053  	FiSectorSize int32
 46054  	FnWriteCrash int32
 46055  	F__ccgo_pad1 [4]byte
 46056  }
 46057  
 46058  var g1 = DevsymGlobal{FiSectorSize: 512}
 46059  
 46060  func devsymClose(tls *libc.TLS, pFile uintptr) int32 {
 46061  	var p uintptr = pFile
 46062  	sqlite3.Xsqlite3OsClose(tls, (*devsym_file)(unsafe.Pointer(p)).FpReal)
 46063  	return SQLITE_OK
 46064  }
 46065  
 46066  func devsymRead(tls *libc.TLS, pFile uintptr, zBuf uintptr, iAmt int32, iOfst sqlite_int64) int32 {
 46067  	var p uintptr = pFile
 46068  	return sqlite3.Xsqlite3OsRead(tls, (*devsym_file)(unsafe.Pointer(p)).FpReal, zBuf, iAmt, iOfst)
 46069  }
 46070  
 46071  func devsymWrite(tls *libc.TLS, pFile uintptr, zBuf uintptr, iAmt int32, iOfst sqlite_int64) int32 {
 46072  	var p uintptr = pFile
 46073  	return sqlite3.Xsqlite3OsWrite(tls, (*devsym_file)(unsafe.Pointer(p)).FpReal, zBuf, iAmt, iOfst)
 46074  }
 46075  
 46076  func devsymTruncate(tls *libc.TLS, pFile uintptr, size sqlite_int64) int32 {
 46077  	var p uintptr = pFile
 46078  	return sqlite3.Xsqlite3OsTruncate(tls, (*devsym_file)(unsafe.Pointer(p)).FpReal, size)
 46079  }
 46080  
 46081  func devsymSync(tls *libc.TLS, pFile uintptr, flags int32) int32 {
 46082  	var p uintptr = pFile
 46083  	return sqlite3.Xsqlite3OsSync(tls, (*devsym_file)(unsafe.Pointer(p)).FpReal, flags)
 46084  }
 46085  
 46086  func devsymFileSize(tls *libc.TLS, pFile uintptr, pSize uintptr) int32 {
 46087  	var p uintptr = pFile
 46088  	return sqlite3.Xsqlite3OsFileSize(tls, (*devsym_file)(unsafe.Pointer(p)).FpReal, pSize)
 46089  }
 46090  
 46091  func devsymLock(tls *libc.TLS, pFile uintptr, eLock int32) int32 {
 46092  	var p uintptr = pFile
 46093  	return sqlite3.Xsqlite3OsLock(tls, (*devsym_file)(unsafe.Pointer(p)).FpReal, eLock)
 46094  }
 46095  
 46096  func devsymUnlock(tls *libc.TLS, pFile uintptr, eLock int32) int32 {
 46097  	var p uintptr = pFile
 46098  	return sqlite3.Xsqlite3OsUnlock(tls, (*devsym_file)(unsafe.Pointer(p)).FpReal, eLock)
 46099  }
 46100  
 46101  func devsymCheckReservedLock(tls *libc.TLS, pFile uintptr, pResOut uintptr) int32 {
 46102  	var p uintptr = pFile
 46103  	return sqlite3.Xsqlite3OsCheckReservedLock(tls, (*devsym_file)(unsafe.Pointer(p)).FpReal, pResOut)
 46104  }
 46105  
 46106  func devsymFileControl(tls *libc.TLS, pFile uintptr, op int32, pArg uintptr) int32 {
 46107  	var p uintptr = pFile
 46108  	return sqlite3.Xsqlite3OsFileControl(tls, (*devsym_file)(unsafe.Pointer(p)).FpReal, op, pArg)
 46109  }
 46110  
 46111  func devsymSectorSize(tls *libc.TLS, pFile uintptr) int32 {
 46112  	return g1.FiSectorSize
 46113  }
 46114  
 46115  func devsymDeviceCharacteristics(tls *libc.TLS, pFile uintptr) int32 {
 46116  	return g1.FiDeviceChar
 46117  }
 46118  
 46119  func devsymShmLock(tls *libc.TLS, pFile uintptr, ofst int32, n int32, flags int32) int32 {
 46120  	var p uintptr = pFile
 46121  	return (*struct {
 46122  		f func(*libc.TLS, uintptr, int32, int32, int32) int32
 46123  	})(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)
 46124  }
 46125  
 46126  func devsymShmMap(tls *libc.TLS, pFile uintptr, iRegion int32, szRegion int32, isWrite int32, pp uintptr) int32 {
 46127  	var p uintptr = pFile
 46128  	return (*struct {
 46129  		f func(*libc.TLS, uintptr, int32, int32, int32, uintptr) int32
 46130  	})(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)
 46131  }
 46132  
 46133  func devsymShmBarrier(tls *libc.TLS, pFile uintptr) {
 46134  	var p uintptr = pFile
 46135  	(*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)
 46136  }
 46137  
 46138  func devsymShmUnmap(tls *libc.TLS, pFile uintptr, delFlag int32) int32 {
 46139  	var p uintptr = pFile
 46140  	return (*struct {
 46141  		f func(*libc.TLS, uintptr, int32) int32
 46142  	})(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)
 46143  }
 46144  
 46145  func devsymOpen(tls *libc.TLS, pVfs uintptr, zName uintptr, pFile uintptr, flags int32, pOutFlags uintptr) int32 {
 46146  	var rc int32
 46147  	var p uintptr = pFile
 46148  	(*devsym_file)(unsafe.Pointer(p)).FpReal = p + 1*16
 46149  	rc = sqlite3.Xsqlite3OsOpen(tls, g1.FpVfs, zName, (*devsym_file)(unsafe.Pointer(p)).FpReal, flags, pOutFlags)
 46150  	if (*sqlite3_file)(unsafe.Pointer((*devsym_file)(unsafe.Pointer(p)).FpReal)).FpMethods != 0 {
 46151  		(*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods = uintptr(unsafe.Pointer(&devsym_io_methods))
 46152  	}
 46153  	return rc
 46154  }
 46155  
 46156  var devsym_io_methods = sqlite3_io_methods{
 46157  	FiVersion:               2,
 46158  	FxClose:                 0,
 46159  	FxRead:                  0,
 46160  	FxWrite:                 0,
 46161  	FxTruncate:              0,
 46162  	FxSync:                  0,
 46163  	FxFileSize:              0,
 46164  	FxLock:                  0,
 46165  	FxUnlock:                0,
 46166  	FxCheckReservedLock:     0,
 46167  	FxFileControl:           0,
 46168  	FxSectorSize:            0,
 46169  	FxDeviceCharacteristics: 0,
 46170  	FxShmMap:                0,
 46171  	FxShmLock:               0,
 46172  	FxShmBarrier:            0,
 46173  	FxShmUnmap:              0,
 46174  }
 46175  
 46176  func devsymDelete(tls *libc.TLS, pVfs uintptr, zPath uintptr, dirSync int32) int32 {
 46177  	return sqlite3.Xsqlite3OsDelete(tls, g1.FpVfs, zPath, dirSync)
 46178  }
 46179  
 46180  func devsymAccess(tls *libc.TLS, pVfs uintptr, zPath uintptr, flags int32, pResOut uintptr) int32 {
 46181  	return sqlite3.Xsqlite3OsAccess(tls, g1.FpVfs, zPath, flags, pResOut)
 46182  }
 46183  
 46184  func devsymFullPathname(tls *libc.TLS, pVfs uintptr, zPath uintptr, nOut int32, zOut uintptr) int32 {
 46185  	return sqlite3.Xsqlite3OsFullPathname(tls, g1.FpVfs, zPath, nOut, zOut)
 46186  }
 46187  
 46188  func devsymRandomness(tls *libc.TLS, pVfs uintptr, nByte int32, zBufOut uintptr) int32 {
 46189  	return sqlite3.Xsqlite3OsRandomness(tls, g1.FpVfs, nByte, zBufOut)
 46190  }
 46191  
 46192  func devsymSleep(tls *libc.TLS, pVfs uintptr, nMicro int32) int32 {
 46193  	return sqlite3.Xsqlite3OsSleep(tls, g1.FpVfs, nMicro)
 46194  }
 46195  
 46196  func devsymCurrentTime(tls *libc.TLS, pVfs uintptr, pTimeOut uintptr) int32 {
 46197  	return (*struct {
 46198  		f func(*libc.TLS, uintptr, uintptr) int32
 46199  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(g1.FpVfs)).FxCurrentTime})).f(tls, g1.FpVfs, pTimeOut)
 46200  }
 46201  
 46202  func writecrashSectorSize(tls *libc.TLS, pFile uintptr) int32 {
 46203  	var p uintptr = pFile
 46204  	return sqlite3.Xsqlite3OsSectorSize(tls, (*devsym_file)(unsafe.Pointer(p)).FpReal)
 46205  }
 46206  
 46207  func writecrashDeviceCharacteristics(tls *libc.TLS, pFile uintptr) int32 {
 46208  	var p uintptr = pFile
 46209  	return sqlite3.Xsqlite3OsDeviceCharacteristics(tls, (*devsym_file)(unsafe.Pointer(p)).FpReal)
 46210  }
 46211  
 46212  func writecrashWrite(tls *libc.TLS, pFile uintptr, zBuf uintptr, iAmt int32, iOfst sqlite_int64) int32 {
 46213  	var p uintptr = pFile
 46214  	if g1.FnWriteCrash > 0 {
 46215  		g1.FnWriteCrash--
 46216  		if g1.FnWriteCrash == 0 {
 46217  			libc.Xabort(tls)
 46218  		}
 46219  	}
 46220  	return sqlite3.Xsqlite3OsWrite(tls, (*devsym_file)(unsafe.Pointer(p)).FpReal, zBuf, iAmt, iOfst)
 46221  }
 46222  
 46223  func writecrashOpen(tls *libc.TLS, pVfs uintptr, zName uintptr, pFile uintptr, flags int32, pOutFlags uintptr) int32 {
 46224  	var rc int32
 46225  	var p uintptr = pFile
 46226  	(*devsym_file)(unsafe.Pointer(p)).FpReal = p + 1*16
 46227  	rc = sqlite3.Xsqlite3OsOpen(tls, g1.FpVfs, zName, (*devsym_file)(unsafe.Pointer(p)).FpReal, flags, pOutFlags)
 46228  	if (*sqlite3_file)(unsafe.Pointer((*devsym_file)(unsafe.Pointer(p)).FpReal)).FpMethods != 0 {
 46229  		(*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods = uintptr(unsafe.Pointer(&writecrash_io_methods))
 46230  	}
 46231  	return rc
 46232  }
 46233  
 46234  var writecrash_io_methods = sqlite3_io_methods{
 46235  	FiVersion:               2,
 46236  	FxClose:                 0,
 46237  	FxRead:                  0,
 46238  	FxWrite:                 0,
 46239  	FxTruncate:              0,
 46240  	FxSync:                  0,
 46241  	FxFileSize:              0,
 46242  	FxLock:                  0,
 46243  	FxUnlock:                0,
 46244  	FxCheckReservedLock:     0,
 46245  	FxFileControl:           0,
 46246  	FxSectorSize:            0,
 46247  	FxDeviceCharacteristics: 0,
 46248  	FxShmMap:                0,
 46249  	FxShmLock:               0,
 46250  	FxShmBarrier:            0,
 46251  	FxShmUnmap:              0,
 46252  }
 46253  
 46254  var devsym_vfs = sqlite3_vfs{
 46255  	FiVersion:      2,
 46256  	FszOsFile:      int32(unsafe.Sizeof(devsym_file{})),
 46257  	FmxPathname:    DEVSYM_MAX_PATHNAME,
 46258  	FzName:         ts + 30667,
 46259  	FxOpen:         0,
 46260  	FxDelete:       0,
 46261  	FxAccess:       0,
 46262  	FxFullPathname: 0,
 46263  	FxRandomness:   0,
 46264  	FxSleep:        0,
 46265  	FxCurrentTime:  0,
 46266  }
 46267  
 46268  var writecrash_vfs = sqlite3_vfs{
 46269  	FiVersion:      2,
 46270  	FszOsFile:      int32(unsafe.Sizeof(devsym_file{})),
 46271  	FmxPathname:    DEVSYM_MAX_PATHNAME,
 46272  	FzName:         ts + 30674,
 46273  	FxOpen:         0,
 46274  	FxDelete:       0,
 46275  	FxAccess:       0,
 46276  	FxFullPathname: 0,
 46277  	FxRandomness:   0,
 46278  	FxSleep:        0,
 46279  	FxCurrentTime:  0,
 46280  }
 46281  
 46282  func devsym_register(tls *libc.TLS, iDeviceChar int32, iSectorSize int32) {
 46283  	if g1.FpVfs == uintptr(0) {
 46284  		g1.FpVfs = sqlite3.Xsqlite3_vfs_find(tls, uintptr(0))
 46285  		*(*int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&devsym_vfs)) + 4)) += (*sqlite3_vfs)(unsafe.Pointer(g1.FpVfs)).FszOsFile
 46286  		*(*int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&writecrash_vfs)) + 4)) += (*sqlite3_vfs)(unsafe.Pointer(g1.FpVfs)).FszOsFile
 46287  		sqlite3.Xsqlite3_vfs_register(tls, uintptr(unsafe.Pointer(&devsym_vfs)), 0)
 46288  		sqlite3.Xsqlite3_vfs_register(tls, uintptr(unsafe.Pointer(&writecrash_vfs)), 0)
 46289  	}
 46290  	if iDeviceChar >= 0 {
 46291  		g1.FiDeviceChar = iDeviceChar
 46292  	} else {
 46293  		g1.FiDeviceChar = 0
 46294  	}
 46295  	if iSectorSize >= 0 {
 46296  		g1.FiSectorSize = iSectorSize
 46297  	} else {
 46298  		g1.FiSectorSize = 512
 46299  	}
 46300  }
 46301  
 46302  func devsym_unregister(tls *libc.TLS) {
 46303  	sqlite3.Xsqlite3_vfs_unregister(tls, uintptr(unsafe.Pointer(&devsym_vfs)))
 46304  	sqlite3.Xsqlite3_vfs_unregister(tls, uintptr(unsafe.Pointer(&writecrash_vfs)))
 46305  	g1.FpVfs = uintptr(0)
 46306  	g1.FiDeviceChar = 0
 46307  	g1.FiSectorSize = 0
 46308  }
 46309  
 46310  func devsym_crash_on_write(tls *libc.TLS, nWrite int32) {
 46311  	if g1.FpVfs == uintptr(0) {
 46312  		g1.FpVfs = sqlite3.Xsqlite3_vfs_find(tls, uintptr(0))
 46313  		*(*int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&devsym_vfs)) + 4)) += (*sqlite3_vfs)(unsafe.Pointer(g1.FpVfs)).FszOsFile
 46314  		*(*int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&writecrash_vfs)) + 4)) += (*sqlite3_vfs)(unsafe.Pointer(g1.FpVfs)).FszOsFile
 46315  		sqlite3.Xsqlite3_vfs_register(tls, uintptr(unsafe.Pointer(&devsym_vfs)), 0)
 46316  		sqlite3.Xsqlite3_vfs_register(tls, uintptr(unsafe.Pointer(&writecrash_vfs)), 0)
 46317  	}
 46318  	g1.FnWriteCrash = nWrite
 46319  }
 46320  
 46321  type Tcl_StatBuf = stat
 46322  
 46323  type stat64 = struct {
 46324  	Fst_dev     uint64
 46325  	Fst_ino     uint64
 46326  	Fst_nlink   uint64
 46327  	Fst_mode    uint32
 46328  	Fst_uid     uint32
 46329  	Fst_gid     uint32
 46330  	F__pad2     int32
 46331  	Fst_rdev    uint64
 46332  	Fst_size    int64
 46333  	Fst_blksize int64
 46334  	Fst_blocks  int64
 46335  	Fst_atim    struct {
 46336  		Ftv_sec  int64
 46337  		Ftv_nsec int64
 46338  	}
 46339  	Fst_mtim struct {
 46340  		Ftv_sec  int64
 46341  		Ftv_nsec int64
 46342  	}
 46343  	Fst_ctim struct {
 46344  		Ftv_sec  int64
 46345  		Ftv_nsec int64
 46346  	}
 46347  	F__glibc_reserved4 uint64
 46348  	F__glibc_reserved5 uint64
 46349  	F__glibc_reserved6 uint64
 46350  }
 46351  
 46352  type statx_timestamp = struct {
 46353  	Ftv_sec     int64
 46354  	Ftv_nsec    uint32
 46355  	F__reserved int32
 46356  }
 46357  
 46358  type statx = struct {
 46359  	Fstx_mask            uint32
 46360  	Fstx_blksize         uint32
 46361  	Fstx_attributes      uint64
 46362  	Fstx_nlink           uint32
 46363  	Fstx_uid             uint32
 46364  	Fstx_gid             uint32
 46365  	Fstx_mode            uint16
 46366  	F__spare0            [1]uint16
 46367  	Fstx_ino             uint64
 46368  	Fstx_size            uint64
 46369  	Fstx_blocks          uint64
 46370  	Fstx_attributes_mask uint64
 46371  	Fstx_atime           struct {
 46372  		Ftv_sec     int64
 46373  		Ftv_nsec    uint32
 46374  		F__reserved int32
 46375  	}
 46376  	Fstx_btime struct {
 46377  		Ftv_sec     int64
 46378  		Ftv_nsec    uint32
 46379  		F__reserved int32
 46380  	}
 46381  	Fstx_ctime struct {
 46382  		Ftv_sec     int64
 46383  		Ftv_nsec    uint32
 46384  		F__reserved int32
 46385  	}
 46386  	Fstx_mtime struct {
 46387  		Ftv_sec     int64
 46388  		Ftv_nsec    uint32
 46389  		F__reserved int32
 46390  	}
 46391  	Fstx_rdev_major uint32
 46392  	Fstx_rdev_minor uint32
 46393  	Fstx_dev_major  uint32
 46394  	Fstx_dev_minor  uint32
 46395  	Fstx_mnt_id     uint64
 46396  	F__spare2       uint64
 46397  	F__spare3       [12]uint64
 46398  }
 46399  
 46400  type flock64 = struct {
 46401  	Fl_type      int16
 46402  	Fl_whence    int16
 46403  	F__ccgo_pad1 [4]byte
 46404  	Fl_start     int64
 46405  	Fl_len       int64
 46406  	Fl_pid       int32
 46407  	F__ccgo_pad2 [4]byte
 46408  }
 46409  
 46410  type iovec = struct {
 46411  	Fiov_base uintptr
 46412  	Fiov_len  size_t
 46413  }
 46414  
 46415  type f_owner_ex = struct {
 46416  	Ftype uint32
 46417  	Fpid  int32
 46418  }
 46419  
 46420  type file_handle = struct {
 46421  	F__ccgo_pad1  [0]uint32
 46422  	Fhandle_bytes uint32
 46423  	Fhandle_type  int32
 46424  }
 46425  
 46426  type dirent64 = struct {
 46427  	Fd_ino       uint64
 46428  	Fd_off       int64
 46429  	Fd_reclen    uint16
 46430  	Fd_type      uint8
 46431  	Fd_name      [256]uint8
 46432  	F__ccgo_pad1 [5]byte
 46433  }
 46434  
 46435  type fs_vtab1 = struct {
 46436  	Fbase sqlite3_vtab
 46437  	Fdb   uintptr
 46438  	FzDb  uintptr
 46439  	FzTbl uintptr
 46440  }
 46441  
 46442  type fs_vtab = fs_vtab1
 46443  type fs_cursor1 = struct {
 46444  	Fbase   sqlite3_vtab_cursor
 46445  	FpStmt  uintptr
 46446  	FzBuf   uintptr
 46447  	FnBuf   int32
 46448  	FnAlloc int32
 46449  }
 46450  
 46451  type fs_cursor = fs_cursor1
 46452  
 46453  type FsdirVtab1 = struct{ Fbase sqlite3_vtab }
 46454  
 46455  type FsdirVtab = FsdirVtab1
 46456  type FsdirCsr1 = struct {
 46457  	Fbase   sqlite3_vtab_cursor
 46458  	FzDir   uintptr
 46459  	FpDir   uintptr
 46460  	FiRowid sqlite3_int64
 46461  	FpEntry uintptr
 46462  }
 46463  
 46464  type FsdirCsr = FsdirCsr1
 46465  
 46466  func fsdirConnect1(tls *libc.TLS, db uintptr, pAux uintptr, argc int32, argv uintptr, ppVtab uintptr, pzErr uintptr) int32 {
 46467  	var pTab uintptr
 46468  
 46469  	if argc != 3 {
 46470  		*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+28324, 0)
 46471  		return SQLITE_ERROR
 46472  	}
 46473  
 46474  	pTab = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(FsdirVtab{})))
 46475  	if !(pTab != 0) {
 46476  		return SQLITE_NOMEM
 46477  	}
 46478  	libc.Xmemset(tls, pTab, 0, uint64(unsafe.Sizeof(FsdirVtab{})))
 46479  
 46480  	*(*uintptr)(unsafe.Pointer(ppVtab)) = pTab
 46481  	sqlite3.Xsqlite3_declare_vtab(tls, db, ts+30685)
 46482  
 46483  	return SQLITE_OK
 46484  }
 46485  
 46486  func fsdirDisconnect1(tls *libc.TLS, pVtab uintptr) int32 {
 46487  	sqlite3.Xsqlite3_free(tls, pVtab)
 46488  	return SQLITE_OK
 46489  }
 46490  
 46491  func fsdirBestIndex1(tls *libc.TLS, tab uintptr, pIdxInfo uintptr) int32 {
 46492  	var ii int32
 46493  
 46494  	(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = 1000000000.0
 46495  
 46496  	for ii = 0; ii < (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnConstraint; ii++ {
 46497  		var p uintptr = (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint + uintptr(ii)*12
 46498  		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 {
 46499  			var pUsage uintptr
 46500  			pUsage = (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(ii)*8
 46501  			(*sqlite3_index_constraint_usage)(unsafe.Pointer(pUsage)).Fomit = uint8(1)
 46502  			(*sqlite3_index_constraint_usage)(unsafe.Pointer(pUsage)).FargvIndex = 1
 46503  			(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxNum = 1
 46504  			(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = 1.0
 46505  			break
 46506  		}
 46507  	}
 46508  
 46509  	return SQLITE_OK
 46510  }
 46511  
 46512  func fsdirOpen1(tls *libc.TLS, pVTab uintptr, ppCursor uintptr) int32 {
 46513  	var pCur uintptr
 46514  
 46515  	pCur = sqlite3.Xsqlite3_malloc(tls, int32(uint64(unsafe.Sizeof(FsdirCsr{}))+uint64(256)))
 46516  	if pCur == uintptr(0) {
 46517  		return SQLITE_NOMEM
 46518  	}
 46519  	libc.Xmemset(tls, pCur, 0, uint64(unsafe.Sizeof(FsdirCsr{})))
 46520  	*(*uintptr)(unsafe.Pointer(ppCursor)) = pCur
 46521  	return SQLITE_OK
 46522  }
 46523  
 46524  func fsdirClose1(tls *libc.TLS, cur uintptr) int32 {
 46525  	var pCur uintptr = cur
 46526  	if (*FsdirCsr)(unsafe.Pointer(pCur)).FpDir != 0 {
 46527  		libc.Xclosedir(tls, (*FsdirCsr)(unsafe.Pointer(pCur)).FpDir)
 46528  	}
 46529  	sqlite3.Xsqlite3_free(tls, (*FsdirCsr)(unsafe.Pointer(pCur)).FzDir)
 46530  	sqlite3.Xsqlite3_free(tls, pCur)
 46531  	return SQLITE_OK
 46532  }
 46533  
 46534  func fsdirNext1(tls *libc.TLS, cur uintptr) int32 {
 46535  	var pCsr uintptr = cur
 46536  
 46537  	if (*FsdirCsr)(unsafe.Pointer(pCsr)).FpDir != 0 {
 46538  		(*FsdirCsr)(unsafe.Pointer(pCsr)).FpEntry = libc.Xreaddir(tls, (*FsdirCsr)(unsafe.Pointer(pCsr)).FpDir)
 46539  		if (*FsdirCsr)(unsafe.Pointer(pCsr)).FpEntry == uintptr(0) {
 46540  			libc.Xclosedir(tls, (*FsdirCsr)(unsafe.Pointer(pCsr)).FpDir)
 46541  			(*FsdirCsr)(unsafe.Pointer(pCsr)).FpDir = uintptr(0)
 46542  		}
 46543  		(*FsdirCsr)(unsafe.Pointer(pCsr)).FiRowid++
 46544  	}
 46545  
 46546  	return SQLITE_OK
 46547  }
 46548  
 46549  func fsdirFilter1(tls *libc.TLS, pVtabCursor uintptr, idxNum int32, idxStr uintptr, argc int32, argv uintptr) int32 {
 46550  	var pCsr uintptr = pVtabCursor
 46551  	var zDir uintptr
 46552  	var nDir int32
 46553  
 46554  	if idxNum != 1 || argc != 1 {
 46555  		return SQLITE_ERROR
 46556  	}
 46557  
 46558  	(*FsdirCsr)(unsafe.Pointer(pCsr)).FiRowid = int64(0)
 46559  	sqlite3.Xsqlite3_free(tls, (*FsdirCsr)(unsafe.Pointer(pCsr)).FzDir)
 46560  	if (*FsdirCsr)(unsafe.Pointer(pCsr)).FpDir != 0 {
 46561  		libc.Xclosedir(tls, (*FsdirCsr)(unsafe.Pointer(pCsr)).FpDir)
 46562  		(*FsdirCsr)(unsafe.Pointer(pCsr)).FpDir = uintptr(0)
 46563  	}
 46564  
 46565  	zDir = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 46566  	nDir = sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(argv)))
 46567  	(*FsdirCsr)(unsafe.Pointer(pCsr)).FzDir = sqlite3.Xsqlite3_malloc(tls, nDir+1)
 46568  	if (*FsdirCsr)(unsafe.Pointer(pCsr)).FzDir == uintptr(0) {
 46569  		return SQLITE_NOMEM
 46570  	}
 46571  	libc.Xmemcpy(tls, (*FsdirCsr)(unsafe.Pointer(pCsr)).FzDir, zDir, uint64(nDir+1))
 46572  
 46573  	(*FsdirCsr)(unsafe.Pointer(pCsr)).FpDir = libc.Xopendir(tls, (*FsdirCsr)(unsafe.Pointer(pCsr)).FzDir)
 46574  	return fsdirNext1(tls, pVtabCursor)
 46575  }
 46576  
 46577  func fsdirEof1(tls *libc.TLS, cur uintptr) int32 {
 46578  	var pCsr uintptr = cur
 46579  	return libc.Bool32((*FsdirCsr)(unsafe.Pointer(pCsr)).FpDir == uintptr(0))
 46580  }
 46581  
 46582  func fsdirColumn1(tls *libc.TLS, cur uintptr, ctx uintptr, i int32) int32 {
 46583  	var pCsr uintptr = cur
 46584  	switch i {
 46585  	case 0:
 46586  		sqlite3.Xsqlite3_result_text(tls, ctx, (*FsdirCsr)(unsafe.Pointer(pCsr)).FzDir, -1, uintptr(0))
 46587  		break
 46588  
 46589  	case 1:
 46590  		sqlite3.Xsqlite3_result_text(tls, ctx, (*FsdirCsr)(unsafe.Pointer(pCsr)).FpEntry+19, -1, libc.UintptrFromInt32(-1))
 46591  		break
 46592  
 46593  	default:
 46594  	}
 46595  
 46596  	return SQLITE_OK
 46597  }
 46598  
 46599  func fsdirRowid1(tls *libc.TLS, cur uintptr, pRowid uintptr) int32 {
 46600  	var pCsr uintptr = cur
 46601  	*(*sqlite_int64)(unsafe.Pointer(pRowid)) = (*FsdirCsr)(unsafe.Pointer(pCsr)).FiRowid
 46602  	return SQLITE_OK
 46603  }
 46604  
 46605  type FstreeVtab1 = struct {
 46606  	Fbase sqlite3_vtab
 46607  	Fdb   uintptr
 46608  }
 46609  
 46610  type FstreeVtab = FstreeVtab1
 46611  type FstreeCsr1 = struct {
 46612  	Fbase        sqlite3_vtab_cursor
 46613  	FpStmt       uintptr
 46614  	Ffd          int32
 46615  	F__ccgo_pad1 [4]byte
 46616  }
 46617  
 46618  type FstreeCsr = FstreeCsr1
 46619  
 46620  func fstreeConnect(tls *libc.TLS, db uintptr, pAux uintptr, argc int32, argv uintptr, ppVtab uintptr, pzErr uintptr) int32 {
 46621  	var pTab uintptr
 46622  
 46623  	if argc != 3 {
 46624  		*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+28324, 0)
 46625  		return SQLITE_ERROR
 46626  	}
 46627  
 46628  	pTab = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(FstreeVtab{})))
 46629  	if !(pTab != 0) {
 46630  		return SQLITE_NOMEM
 46631  	}
 46632  	libc.Xmemset(tls, pTab, 0, uint64(unsafe.Sizeof(FstreeVtab{})))
 46633  	(*FstreeVtab)(unsafe.Pointer(pTab)).Fdb = db
 46634  
 46635  	*(*uintptr)(unsafe.Pointer(ppVtab)) = pTab
 46636  	sqlite3.Xsqlite3_declare_vtab(tls, db, ts+30714)
 46637  
 46638  	return SQLITE_OK
 46639  }
 46640  
 46641  func fstreeDisconnect(tls *libc.TLS, pVtab uintptr) int32 {
 46642  	sqlite3.Xsqlite3_free(tls, pVtab)
 46643  	return SQLITE_OK
 46644  }
 46645  
 46646  func fstreeBestIndex(tls *libc.TLS, tab uintptr, pIdxInfo uintptr) int32 {
 46647  	var ii int32
 46648  
 46649  	for ii = 0; ii < (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnConstraint; ii++ {
 46650  		var p uintptr = (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint + uintptr(ii)*12
 46651  		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 ||
 46652  			int32((*sqlite3_index_constraint)(unsafe.Pointer(p)).Fop) == SQLITE_INDEX_CONSTRAINT_LIKE ||
 46653  			int32((*sqlite3_index_constraint)(unsafe.Pointer(p)).Fop) == SQLITE_INDEX_CONSTRAINT_EQ) {
 46654  			var pUsage uintptr
 46655  			pUsage = (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(ii)*8
 46656  			(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxNum = int32((*sqlite3_index_constraint)(unsafe.Pointer(p)).Fop)
 46657  			(*sqlite3_index_constraint_usage)(unsafe.Pointer(pUsage)).FargvIndex = 1
 46658  			(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = 100000.0
 46659  			return SQLITE_OK
 46660  		}
 46661  	}
 46662  
 46663  	(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = 1000000000.0
 46664  	return SQLITE_OK
 46665  }
 46666  
 46667  func fstreeOpen(tls *libc.TLS, pVTab uintptr, ppCursor uintptr) int32 {
 46668  	var pCur uintptr
 46669  	pCur = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(FstreeCsr{})))
 46670  	if pCur == uintptr(0) {
 46671  		return SQLITE_NOMEM
 46672  	}
 46673  	libc.Xmemset(tls, pCur, 0, uint64(unsafe.Sizeof(FstreeCsr{})))
 46674  	(*FstreeCsr)(unsafe.Pointer(pCur)).Ffd = -1
 46675  	*(*uintptr)(unsafe.Pointer(ppCursor)) = pCur
 46676  	return SQLITE_OK
 46677  }
 46678  
 46679  func fstreeCloseFd(tls *libc.TLS, pCsr uintptr) {
 46680  	if (*FstreeCsr)(unsafe.Pointer(pCsr)).Ffd >= 0 {
 46681  		libc.Xclose(tls, (*FstreeCsr)(unsafe.Pointer(pCsr)).Ffd)
 46682  		(*FstreeCsr)(unsafe.Pointer(pCsr)).Ffd = -1
 46683  	}
 46684  }
 46685  
 46686  func fstreeClose(tls *libc.TLS, cur uintptr) int32 {
 46687  	var pCsr uintptr = cur
 46688  	sqlite3.Xsqlite3_finalize(tls, (*FstreeCsr)(unsafe.Pointer(pCsr)).FpStmt)
 46689  	fstreeCloseFd(tls, pCsr)
 46690  	sqlite3.Xsqlite3_free(tls, pCsr)
 46691  	return SQLITE_OK
 46692  }
 46693  
 46694  func fstreeNext(tls *libc.TLS, cur uintptr) int32 {
 46695  	var pCsr uintptr = cur
 46696  	var rc int32
 46697  
 46698  	fstreeCloseFd(tls, pCsr)
 46699  	rc = sqlite3.Xsqlite3_step(tls, (*FstreeCsr)(unsafe.Pointer(pCsr)).FpStmt)
 46700  	if rc != SQLITE_ROW {
 46701  		rc = sqlite3.Xsqlite3_finalize(tls, (*FstreeCsr)(unsafe.Pointer(pCsr)).FpStmt)
 46702  		(*FstreeCsr)(unsafe.Pointer(pCsr)).FpStmt = uintptr(0)
 46703  	} else {
 46704  		rc = SQLITE_OK
 46705  		(*FstreeCsr)(unsafe.Pointer(pCsr)).Ffd = libc.Xopen(tls, sqlite3.Xsqlite3_column_text(tls, (*FstreeCsr)(unsafe.Pointer(pCsr)).FpStmt, 0), O_RDONLY, 0)
 46706  	}
 46707  
 46708  	return rc
 46709  }
 46710  
 46711  func fstreeFilter(tls *libc.TLS, pVtabCursor uintptr, idxNum int32, idxStr uintptr, argc int32, argv uintptr) int32 {
 46712  	bp := tls.Alloc(2)
 46713  	defer tls.Free(2)
 46714  
 46715  	var pCsr uintptr = pVtabCursor
 46716  	var pTab uintptr = (*FstreeCsr)(unsafe.Pointer(pCsr)).Fbase.FpVtab
 46717  	var rc int32
 46718  	var zSql uintptr = ts + 30750
 46719  	var zRoot uintptr
 46720  	var nRoot int32
 46721  	var zPrefix uintptr
 46722  	var nPrefix int32
 46723  	var zDir uintptr
 46724  	var nDir int32
 46725  	*(*[2]uint8)(unsafe.Pointer(bp)) = [2]uint8{uint8(0), uint8(0)}
 46726  
 46727  	zRoot = ts + 30982
 46728  	nRoot = 1
 46729  	zPrefix = ts + 584
 46730  	nPrefix = 0
 46731  
 46732  	zDir = zRoot
 46733  	nDir = nRoot
 46734  
 46735  	fstreeCloseFd(tls, pCsr)
 46736  	sqlite3.Xsqlite3_finalize(tls, (*FstreeCsr)(unsafe.Pointer(pCsr)).FpStmt)
 46737  	(*FstreeCsr)(unsafe.Pointer(pCsr)).FpStmt = uintptr(0)
 46738  	rc = sqlite3.Xsqlite3_prepare_v2(tls, (*FstreeVtab)(unsafe.Pointer(pTab)).Fdb, zSql, -1, pCsr+8, uintptr(0))
 46739  	if rc != SQLITE_OK {
 46740  		return rc
 46741  	}
 46742  
 46743  	if idxNum != 0 {
 46744  		var zQuery uintptr = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 46745  		switch idxNum {
 46746  		case SQLITE_INDEX_CONSTRAINT_GLOB:
 46747  			*(*uint8)(unsafe.Pointer(bp)) = uint8('*')
 46748  			*(*uint8)(unsafe.Pointer(bp + 1)) = uint8('?')
 46749  			break
 46750  			fallthrough
 46751  		case SQLITE_INDEX_CONSTRAINT_LIKE:
 46752  			*(*uint8)(unsafe.Pointer(bp)) = uint8('_')
 46753  			*(*uint8)(unsafe.Pointer(bp + 1)) = uint8('%')
 46754  			break
 46755  		}
 46756  
 46757  		if sqlite3.Xsqlite3_strnicmp(tls, zQuery, zPrefix, nPrefix) == 0 {
 46758  			var i int32
 46759  			for i = nPrefix; *(*uint8)(unsafe.Pointer(zQuery + uintptr(i))) != 0; i++ {
 46760  				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))) {
 46761  					break
 46762  				}
 46763  				if int32(*(*uint8)(unsafe.Pointer(zQuery + uintptr(i)))) == '/' {
 46764  					nDir = i
 46765  				}
 46766  			}
 46767  			zDir = zQuery
 46768  		}
 46769  	}
 46770  	if nDir == 0 {
 46771  		nDir = 1
 46772  	}
 46773  
 46774  	sqlite3.Xsqlite3_bind_text(tls, (*FstreeCsr)(unsafe.Pointer(pCsr)).FpStmt, 1, zDir, nDir, libc.UintptrFromInt32(-1))
 46775  	sqlite3.Xsqlite3_bind_text(tls, (*FstreeCsr)(unsafe.Pointer(pCsr)).FpStmt, 2, zRoot, nRoot, libc.UintptrFromInt32(-1))
 46776  	sqlite3.Xsqlite3_bind_text(tls, (*FstreeCsr)(unsafe.Pointer(pCsr)).FpStmt, 3, zPrefix, nPrefix, libc.UintptrFromInt32(-1))
 46777  
 46778  	return fstreeNext(tls, pVtabCursor)
 46779  }
 46780  
 46781  func fstreeEof(tls *libc.TLS, cur uintptr) int32 {
 46782  	var pCsr uintptr = cur
 46783  	return libc.Bool32((*FstreeCsr)(unsafe.Pointer(pCsr)).FpStmt == uintptr(0))
 46784  }
 46785  
 46786  func fstreeColumn(tls *libc.TLS, cur uintptr, ctx uintptr, i int32) int32 {
 46787  	bp := tls.Alloc(144)
 46788  	defer tls.Free(144)
 46789  
 46790  	var pCsr uintptr = cur
 46791  	if i == 0 {
 46792  		sqlite3.Xsqlite3_result_value(tls, ctx, sqlite3.Xsqlite3_column_value(tls, (*FstreeCsr)(unsafe.Pointer(pCsr)).FpStmt, 0))
 46793  	} else {
 46794  		libc.Xfstat(tls, (*FstreeCsr)(unsafe.Pointer(pCsr)).Ffd, bp)
 46795  
 46796  		if (*stat)(unsafe.Pointer(bp)).Fst_mode&uint32(0170000) == uint32(0100000) {
 46797  			if i == 1 {
 46798  				sqlite3.Xsqlite3_result_int64(tls, ctx, (*stat)(unsafe.Pointer(bp)).Fst_size)
 46799  			} else {
 46800  				var nRead int32
 46801  				var aBuf uintptr = sqlite3.Xsqlite3_malloc(tls, int32((*stat)(unsafe.Pointer(bp)).Fst_mode+uint32(1)))
 46802  				if !(aBuf != 0) {
 46803  					return SQLITE_NOMEM
 46804  				}
 46805  				nRead = int32(libc.Xread(tls, (*FstreeCsr)(unsafe.Pointer(pCsr)).Ffd, aBuf, uint64((*stat)(unsafe.Pointer(bp)).Fst_mode)))
 46806  				if uint32(nRead) != (*stat)(unsafe.Pointer(bp)).Fst_mode {
 46807  					return SQLITE_IOERR
 46808  				}
 46809  				sqlite3.Xsqlite3_result_blob(tls, ctx, aBuf, nRead, libc.UintptrFromInt32(-1))
 46810  				sqlite3.Xsqlite3_free(tls, aBuf)
 46811  			}
 46812  		}
 46813  	}
 46814  
 46815  	return SQLITE_OK
 46816  }
 46817  
 46818  func fstreeRowid(tls *libc.TLS, cur uintptr, pRowid uintptr) int32 {
 46819  	*(*sqlite_int64)(unsafe.Pointer(pRowid)) = int64(0)
 46820  	return SQLITE_OK
 46821  }
 46822  
 46823  func fsConnect(tls *libc.TLS, db uintptr, pAux uintptr, argc int32, argv uintptr, ppVtab uintptr, pzErr uintptr) int32 {
 46824  	var pVtab uintptr
 46825  	var nByte int32
 46826  	var zTbl uintptr
 46827  	var zDb uintptr = *(*uintptr)(unsafe.Pointer(argv + 1*8))
 46828  
 46829  	if argc != 4 {
 46830  		*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+28324, 0)
 46831  		return SQLITE_ERROR
 46832  	}
 46833  	zTbl = *(*uintptr)(unsafe.Pointer(argv + 3*8))
 46834  
 46835  	nByte = int32(uint64(unsafe.Sizeof(fs_vtab{})) + uint64(int32(libc.Xstrlen(tls, zTbl))) + uint64(1) + uint64(int32(libc.Xstrlen(tls, zDb))) + uint64(1))
 46836  	pVtab = sqlite3.Xsqlite3MallocZero(tls, uint64(nByte))
 46837  	if !(pVtab != 0) {
 46838  		return SQLITE_NOMEM
 46839  	}
 46840  
 46841  	(*fs_vtab)(unsafe.Pointer(pVtab)).FzTbl = pVtab + 1*48
 46842  	(*fs_vtab)(unsafe.Pointer(pVtab)).FzDb = (*fs_vtab)(unsafe.Pointer(pVtab)).FzTbl + uintptr(libc.Xstrlen(tls, zTbl)+uint64(1))
 46843  	(*fs_vtab)(unsafe.Pointer(pVtab)).Fdb = db
 46844  	libc.Xmemcpy(tls, (*fs_vtab)(unsafe.Pointer(pVtab)).FzTbl, zTbl, libc.Xstrlen(tls, zTbl))
 46845  	libc.Xmemcpy(tls, (*fs_vtab)(unsafe.Pointer(pVtab)).FzDb, zDb, libc.Xstrlen(tls, zDb))
 46846  	*(*uintptr)(unsafe.Pointer(ppVtab)) = pVtab
 46847  	sqlite3.Xsqlite3_declare_vtab(tls, db, ts+30984)
 46848  
 46849  	return SQLITE_OK
 46850  }
 46851  
 46852  func fsDisconnect(tls *libc.TLS, pVtab uintptr) int32 {
 46853  	sqlite3.Xsqlite3_free(tls, pVtab)
 46854  	return SQLITE_OK
 46855  }
 46856  
 46857  func fsOpen(tls *libc.TLS, pVTab uintptr, ppCursor uintptr) int32 {
 46858  	var pCur uintptr
 46859  	pCur = sqlite3.Xsqlite3MallocZero(tls, uint64(unsafe.Sizeof(fs_cursor{})))
 46860  	*(*uintptr)(unsafe.Pointer(ppCursor)) = pCur
 46861  	return SQLITE_OK
 46862  }
 46863  
 46864  func fsClose(tls *libc.TLS, cur uintptr) int32 {
 46865  	var pCur uintptr = cur
 46866  	sqlite3.Xsqlite3_finalize(tls, (*fs_cursor)(unsafe.Pointer(pCur)).FpStmt)
 46867  	sqlite3.Xsqlite3_free(tls, (*fs_cursor)(unsafe.Pointer(pCur)).FzBuf)
 46868  	sqlite3.Xsqlite3_free(tls, pCur)
 46869  	return SQLITE_OK
 46870  }
 46871  
 46872  func fsNext(tls *libc.TLS, cur uintptr) int32 {
 46873  	var pCur uintptr = cur
 46874  	var rc int32
 46875  
 46876  	rc = sqlite3.Xsqlite3_step(tls, (*fs_cursor)(unsafe.Pointer(pCur)).FpStmt)
 46877  	if rc == SQLITE_ROW || rc == SQLITE_DONE {
 46878  		rc = SQLITE_OK
 46879  	}
 46880  
 46881  	return rc
 46882  }
 46883  
 46884  func fsFilter(tls *libc.TLS, pVtabCursor uintptr, idxNum int32, idxStr uintptr, argc int32, argv uintptr) int32 {
 46885  	bp := tls.Alloc(32)
 46886  	defer tls.Free(32)
 46887  
 46888  	var rc int32
 46889  	var pCur uintptr = pVtabCursor
 46890  	var p uintptr = (*sqlite3_vtab_cursor)(unsafe.Pointer(pVtabCursor)).FpVtab
 46891  
 46892  	if idxNum == 1 {
 46893  		var zStmt uintptr = sqlite3.Xsqlite3_mprintf(tls,
 46894  			ts+31021, libc.VaList(bp, (*fs_vtab)(unsafe.Pointer(p)).FzDb, (*fs_vtab)(unsafe.Pointer(p)).FzTbl))
 46895  		if !(zStmt != 0) {
 46896  			return SQLITE_NOMEM
 46897  		}
 46898  		rc = sqlite3.Xsqlite3_prepare_v2(tls, (*fs_vtab)(unsafe.Pointer(p)).Fdb, zStmt, -1, pCur+8, uintptr(0))
 46899  		sqlite3.Xsqlite3_free(tls, zStmt)
 46900  		if rc == SQLITE_OK {
 46901  			sqlite3.Xsqlite3_bind_value(tls, (*fs_cursor)(unsafe.Pointer(pCur)).FpStmt, 1, *(*uintptr)(unsafe.Pointer(argv)))
 46902  		}
 46903  	} else {
 46904  		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))
 46905  		if !(zStmt != 0) {
 46906  			return SQLITE_NOMEM
 46907  		}
 46908  		rc = sqlite3.Xsqlite3_prepare_v2(tls, (*fs_vtab)(unsafe.Pointer(p)).Fdb, zStmt, -1, pCur+8, uintptr(0))
 46909  		sqlite3.Xsqlite3_free(tls, zStmt)
 46910  	}
 46911  
 46912  	if rc == SQLITE_OK {
 46913  		rc = fsNext(tls, pVtabCursor)
 46914  	}
 46915  	return rc
 46916  }
 46917  
 46918  func fsColumn(tls *libc.TLS, cur uintptr, ctx uintptr, i int32) int32 {
 46919  	bp := tls.Alloc(144)
 46920  	defer tls.Free(144)
 46921  
 46922  	var pCur uintptr = cur
 46923  
 46924  	if i == 0 {
 46925  		sqlite3.Xsqlite3_result_value(tls, ctx, sqlite3.Xsqlite3_column_value(tls, (*fs_cursor)(unsafe.Pointer(pCur)).FpStmt, 0))
 46926  	} else {
 46927  		var zFile uintptr = sqlite3.Xsqlite3_column_text(tls, (*fs_cursor)(unsafe.Pointer(pCur)).FpStmt, 1)
 46928  
 46929  		var fd int32
 46930  		var n int32
 46931  		fd = libc.Xopen(tls, zFile, O_RDONLY, 0)
 46932  		if fd < 0 {
 46933  			return SQLITE_IOERR
 46934  		}
 46935  		libc.Xfstat(tls, fd, bp)
 46936  
 46937  		if (*stat)(unsafe.Pointer(bp)).Fst_size >= int64((*fs_cursor)(unsafe.Pointer(pCur)).FnAlloc) {
 46938  			var nNew sqlite3_int64 = (*stat)(unsafe.Pointer(bp)).Fst_size * int64(2)
 46939  			var zNew uintptr
 46940  			if nNew < int64(1024) {
 46941  				nNew = int64(1024)
 46942  			}
 46943  
 46944  			zNew = sqlite3.Xsqlite3Realloc(tls, (*fs_cursor)(unsafe.Pointer(pCur)).FzBuf, uint64(nNew))
 46945  			if zNew == uintptr(0) {
 46946  				libc.Xclose(tls, fd)
 46947  				return SQLITE_NOMEM
 46948  			}
 46949  			(*fs_cursor)(unsafe.Pointer(pCur)).FzBuf = zNew
 46950  			(*fs_cursor)(unsafe.Pointer(pCur)).FnAlloc = int32(nNew)
 46951  		}
 46952  
 46953  		n = int32(libc.Xread(tls, fd, (*fs_cursor)(unsafe.Pointer(pCur)).FzBuf, uint64((*stat)(unsafe.Pointer(bp)).Fst_size)))
 46954  		libc.Xclose(tls, fd)
 46955  		if int64(n) != (*stat)(unsafe.Pointer(bp)).Fst_size {
 46956  			return SQLITE_ERROR
 46957  		}
 46958  		(*fs_cursor)(unsafe.Pointer(pCur)).FnBuf = int32((*stat)(unsafe.Pointer(bp)).Fst_size)
 46959  		*(*uint8)(unsafe.Pointer((*fs_cursor)(unsafe.Pointer(pCur)).FzBuf + uintptr((*fs_cursor)(unsafe.Pointer(pCur)).FnBuf))) = uint8(0)
 46960  
 46961  		sqlite3.Xsqlite3_result_text(tls, ctx, (*fs_cursor)(unsafe.Pointer(pCur)).FzBuf, -1, libc.UintptrFromInt32(-1))
 46962  	}
 46963  	return SQLITE_OK
 46964  }
 46965  
 46966  func fsRowid(tls *libc.TLS, cur uintptr, pRowid uintptr) int32 {
 46967  	var pCur uintptr = cur
 46968  	*(*sqlite_int64)(unsafe.Pointer(pRowid)) = sqlite3.Xsqlite3_column_int64(tls, (*fs_cursor)(unsafe.Pointer(pCur)).FpStmt, 0)
 46969  	return SQLITE_OK
 46970  }
 46971  
 46972  func fsEof(tls *libc.TLS, cur uintptr) int32 {
 46973  	var pCur uintptr = cur
 46974  	return libc.Bool32(sqlite3.Xsqlite3_data_count(tls, (*fs_cursor)(unsafe.Pointer(pCur)).FpStmt) == 0)
 46975  }
 46976  
 46977  func fsBestIndex(tls *libc.TLS, tab uintptr, pIdxInfo uintptr) int32 {
 46978  	var ii int32
 46979  
 46980  	for ii = 0; ii < (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnConstraint; ii++ {
 46981  		var pCons uintptr = (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint + uintptr(ii)*12
 46982  		if (*sqlite3_index_constraint)(unsafe.Pointer(pCons)).FiColumn < 0 && (*sqlite3_index_constraint)(unsafe.Pointer(pCons)).Fusable != 0 &&
 46983  			int32((*sqlite3_index_constraint)(unsafe.Pointer(pCons)).Fop) == SQLITE_INDEX_CONSTRAINT_EQ {
 46984  			var pUsage uintptr
 46985  			pUsage = (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(ii)*8
 46986  			(*sqlite3_index_constraint_usage)(unsafe.Pointer(pUsage)).Fomit = uint8(0)
 46987  			(*sqlite3_index_constraint_usage)(unsafe.Pointer(pUsage)).FargvIndex = 1
 46988  			(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxNum = 1
 46989  			(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = 1.0
 46990  			break
 46991  		}
 46992  	}
 46993  
 46994  	return SQLITE_OK
 46995  }
 46996  
 46997  var fsModule = sqlite3_module{
 46998  	FxCreate:     0,
 46999  	FxConnect:    0,
 47000  	FxBestIndex:  0,
 47001  	FxDisconnect: 0,
 47002  	FxDestroy:    0,
 47003  	FxOpen:       0,
 47004  	FxClose:      0,
 47005  	FxFilter:     0,
 47006  	FxNext:       0,
 47007  	FxEof:        0,
 47008  	FxColumn:     0,
 47009  	FxRowid:      0,
 47010  }
 47011  
 47012  var fsdirModule = sqlite3_module{
 47013  	FxCreate:     0,
 47014  	FxConnect:    0,
 47015  	FxBestIndex:  0,
 47016  	FxDisconnect: 0,
 47017  	FxDestroy:    0,
 47018  	FxOpen:       0,
 47019  	FxClose:      0,
 47020  	FxFilter:     0,
 47021  	FxNext:       0,
 47022  	FxEof:        0,
 47023  	FxColumn:     0,
 47024  	FxRowid:      0,
 47025  }
 47026  
 47027  var fstreeModule = sqlite3_module{
 47028  	FxCreate:     0,
 47029  	FxConnect:    0,
 47030  	FxBestIndex:  0,
 47031  	FxDisconnect: 0,
 47032  	FxDestroy:    0,
 47033  	FxOpen:       0,
 47034  	FxClose:      0,
 47035  	FxFilter:     0,
 47036  	FxNext:       0,
 47037  	FxEof:        0,
 47038  	FxColumn:     0,
 47039  	FxRowid:      0,
 47040  }
 47041  
 47042  func register_fs_module(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 47043  	bp := tls.Alloc(8)
 47044  	defer tls.Free(8)
 47045  
 47046  	if objc != 2 {
 47047  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2050)
 47048  		return TCL_ERROR
 47049  	}
 47050  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 47051  		return TCL_ERROR
 47052  	}
 47053  	sqlite3.Xsqlite3_create_module(tls, *(*uintptr)(unsafe.Pointer(bp)), ts+31055, uintptr(unsafe.Pointer(&fsModule)), interp)
 47054  	sqlite3.Xsqlite3_create_module(tls, *(*uintptr)(unsafe.Pointer(bp)), ts+5325, uintptr(unsafe.Pointer(&fsdirModule)), uintptr(0))
 47055  	sqlite3.Xsqlite3_create_module(tls, *(*uintptr)(unsafe.Pointer(bp)), ts+31058, uintptr(unsafe.Pointer(&fstreeModule)), uintptr(0))
 47056  	return TCL_OK
 47057  }
 47058  
 47059  func Sqlitetestfs_Init(tls *libc.TLS, interp uintptr) int32 {
 47060  	var i int32
 47061  	for i = 0; uint64(i) < uint64(unsafe.Sizeof(aObjCmd6))/uint64(unsafe.Sizeof(struct {
 47062  		FzName      uintptr
 47063  		FxProc      uintptr
 47064  		FclientData uintptr
 47065  	}{})); i++ {
 47066  		tcl.XTcl_CreateObjCommand(tls, interp, aObjCmd6[i].FzName,
 47067  			aObjCmd6[i].FxProc, aObjCmd6[i].FclientData, uintptr(0))
 47068  	}
 47069  	return TCL_OK
 47070  }
 47071  
 47072  var aObjCmd6 = [1]struct {
 47073  	FzName      uintptr
 47074  	FxProc      uintptr
 47075  	FclientData uintptr
 47076  }{
 47077  	{FzName: ts + 31065, FxProc: 0},
 47078  }
 47079  
 47080  type fd_set2 = struct{ F__fds_bits [16]int64 }
 47081  
 47082  func testContextMalloc(tls *libc.TLS, context uintptr, nByte int32) uintptr {
 47083  	var z uintptr = sqlite3.Xsqlite3_malloc(tls, nByte)
 47084  	if !(z != 0) && nByte > 0 {
 47085  		sqlite3.Xsqlite3_result_error_nomem(tls, context)
 47086  	}
 47087  	return z
 47088  }
 47089  
 47090  func randStr(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 47091  	bp := tls.Alloc(1004)
 47092  	defer tls.Free(1004)
 47093  
 47094  	var iMin int32
 47095  	var iMax int32
 47096  	var n int32
 47097  
 47098  	var i int32
 47099  
 47100  	iMin = sqlite3.Xsqlite3_value_int(tls, *(*uintptr)(unsafe.Pointer(argv)))
 47101  	if iMin < 0 {
 47102  		iMin = 0
 47103  	}
 47104  	if uint64(iMin) >= uint64(unsafe.Sizeof([1000]uint8{})) {
 47105  		iMin = int32(uint64(unsafe.Sizeof([1000]uint8{})) - uint64(1))
 47106  	}
 47107  	iMax = sqlite3.Xsqlite3_value_int(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 47108  	if iMax < iMin {
 47109  		iMax = iMin
 47110  	}
 47111  	if uint64(iMax) >= uint64(unsafe.Sizeof([1000]uint8{})) {
 47112  		iMax = int32(uint64(unsafe.Sizeof([1000]uint8{})) - uint64(1))
 47113  	}
 47114  	n = iMin
 47115  	if iMax > iMin {
 47116  		sqlite3.Xsqlite3_randomness(tls, int32(unsafe.Sizeof(int32(0))), bp)
 47117  		*(*int32)(unsafe.Pointer(bp)) &= 0x7fffffff
 47118  		n = n + *(*int32)(unsafe.Pointer(bp))%(iMax+1-iMin)
 47119  	}
 47120  
 47121  	sqlite3.Xsqlite3_randomness(tls, n, bp+4)
 47122  	for i = 0; i < n; i++ {
 47123  		*(*uint8)(unsafe.Pointer(bp + 4 + uintptr(i))) = zSrc[uint64(*(*uint8)(unsafe.Pointer(bp + 4 + uintptr(i))))%(uint64(unsafe.Sizeof(zSrc))-uint64(1))]
 47124  	}
 47125  	*(*uint8)(unsafe.Pointer(bp + 4 + uintptr(n))) = uint8(0)
 47126  	sqlite3.Xsqlite3_result_text(tls, context, bp+4, n, libc.UintptrFromInt32(-1))
 47127  }
 47128  
 47129  var zSrc = *(*[79]uint8)(unsafe.Pointer(ts + 31084))
 47130  
 47131  var test_destructor_count_var int32 = 0
 47132  
 47133  func destructor(tls *libc.TLS, p uintptr) {
 47134  	var zVal uintptr = p
 47135  
 47136  	zVal--
 47137  	sqlite3.Xsqlite3_free(tls, zVal)
 47138  	test_destructor_count_var--
 47139  }
 47140  
 47141  func test_destructor(tls *libc.TLS, pCtx uintptr, nArg int32, argv uintptr) {
 47142  	var zVal uintptr
 47143  	var len int32
 47144  
 47145  	test_destructor_count_var++
 47146  
 47147  	if sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(argv))) == SQLITE_NULL {
 47148  		return
 47149  	}
 47150  	len = sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(argv)))
 47151  	zVal = testContextMalloc(tls, pCtx, len+3)
 47152  	if !(zVal != 0) {
 47153  		return
 47154  	}
 47155  	*(*uint8)(unsafe.Pointer(zVal + uintptr(len+1))) = uint8(0)
 47156  	*(*uint8)(unsafe.Pointer(zVal + uintptr(len+2))) = uint8(0)
 47157  	zVal++
 47158  	libc.Xmemcpy(tls, zVal, sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv))), uint64(len))
 47159  	sqlite3.Xsqlite3_result_text(tls, pCtx, zVal, -1, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{destructor})))
 47160  }
 47161  
 47162  func test_destructor16(tls *libc.TLS, pCtx uintptr, nArg int32, argv uintptr) {
 47163  	var zVal uintptr
 47164  	var len int32
 47165  
 47166  	test_destructor_count_var++
 47167  
 47168  	if sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(argv))) == SQLITE_NULL {
 47169  		return
 47170  	}
 47171  	len = sqlite3.Xsqlite3_value_bytes16(tls, *(*uintptr)(unsafe.Pointer(argv)))
 47172  	zVal = testContextMalloc(tls, pCtx, len+3)
 47173  	if !(zVal != 0) {
 47174  		return
 47175  	}
 47176  	*(*uint8)(unsafe.Pointer(zVal + uintptr(len+1))) = uint8(0)
 47177  	*(*uint8)(unsafe.Pointer(zVal + uintptr(len+2))) = uint8(0)
 47178  	zVal++
 47179  	libc.Xmemcpy(tls, zVal, sqlite3.Xsqlite3_value_text16(tls, *(*uintptr)(unsafe.Pointer(argv))), uint64(len))
 47180  	sqlite3.Xsqlite3_result_text16(tls, pCtx, zVal, -1, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{destructor})))
 47181  }
 47182  
 47183  func test_destructor_count(tls *libc.TLS, pCtx uintptr, nArg int32, argv uintptr) {
 47184  	sqlite3.Xsqlite3_result_int(tls, pCtx, test_destructor_count_var)
 47185  }
 47186  
 47187  func test_agg_errmsg16_step(tls *libc.TLS, a uintptr, b int32, c uintptr) {
 47188  }
 47189  
 47190  func test_agg_errmsg16_final(tls *libc.TLS, ctx uintptr) {
 47191  	var z uintptr
 47192  	var db uintptr = sqlite3.Xsqlite3_context_db_handle(tls, ctx)
 47193  	sqlite3.Xsqlite3_aggregate_context(tls, ctx, 2048)
 47194  	z = sqlite3.Xsqlite3_errmsg16(tls, db)
 47195  	sqlite3.Xsqlite3_result_text16(tls, ctx, z, -1, libc.UintptrFromInt32(-1))
 47196  }
 47197  
 47198  func free_test_auxdata(tls *libc.TLS, p uintptr) {
 47199  	sqlite3.Xsqlite3_free(tls, p)
 47200  }
 47201  
 47202  func test_auxdata(tls *libc.TLS, pCtx uintptr, nArg int32, argv uintptr) {
 47203  	var i int32
 47204  	var zRet uintptr = testContextMalloc(tls, pCtx, nArg*2)
 47205  	if !(zRet != 0) {
 47206  		return
 47207  	}
 47208  	libc.Xmemset(tls, zRet, 0, uint64(nArg*2))
 47209  	for i = 0; i < nArg; i++ {
 47210  		var z uintptr = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8)))
 47211  		if z != 0 {
 47212  			var n int32
 47213  			var zAux uintptr = sqlite3.Xsqlite3_get_auxdata(tls, pCtx, i)
 47214  			if zAux != 0 {
 47215  				*(*uint8)(unsafe.Pointer(zRet + uintptr(i*2))) = uint8('1')
 47216  
 47217  			} else {
 47218  				*(*uint8)(unsafe.Pointer(zRet + uintptr(i*2))) = uint8('0')
 47219  			}
 47220  			n = int32(libc.Xstrlen(tls, z)) + 1
 47221  			zAux = testContextMalloc(tls, pCtx, n)
 47222  			if zAux != 0 {
 47223  				libc.Xmemcpy(tls, zAux, z, uint64(n))
 47224  				sqlite3.Xsqlite3_set_auxdata(tls, pCtx, i, zAux, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{free_test_auxdata})))
 47225  			}
 47226  			*(*uint8)(unsafe.Pointer(zRet + uintptr(i*2+1))) = uint8(' ')
 47227  		}
 47228  	}
 47229  	sqlite3.Xsqlite3_result_text(tls, pCtx, zRet, 2*nArg-1, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{free_test_auxdata})))
 47230  }
 47231  
 47232  func test_error(tls *libc.TLS, pCtx uintptr, nArg int32, argv uintptr) {
 47233  	sqlite3.Xsqlite3_result_error(tls, pCtx, sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv))), -1)
 47234  	if nArg == 2 {
 47235  		sqlite3.Xsqlite3_result_error_code(tls, pCtx, sqlite3.Xsqlite3_value_int(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8))))
 47236  	}
 47237  }
 47238  
 47239  func counterFunc(tls *libc.TLS, pCtx uintptr, nArg int32, argv uintptr) {
 47240  	var pCounter uintptr = sqlite3.Xsqlite3_get_auxdata(tls, pCtx, 0)
 47241  	if pCounter == uintptr(0) {
 47242  		pCounter = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(int32(0))))
 47243  		if pCounter == uintptr(0) {
 47244  			sqlite3.Xsqlite3_result_error_nomem(tls, pCtx)
 47245  			return
 47246  		}
 47247  		*(*int32)(unsafe.Pointer(pCounter)) = sqlite3.Xsqlite3_value_int(tls, *(*uintptr)(unsafe.Pointer(argv)))
 47248  		sqlite3.Xsqlite3_set_auxdata(tls, pCtx, 0, pCounter, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{sqlite3.Xsqlite3_free})))
 47249  	} else {
 47250  		*(*int32)(unsafe.Pointer(pCounter))++
 47251  	}
 47252  	sqlite3.Xsqlite3_result_int(tls, pCtx, *(*int32)(unsafe.Pointer(pCounter)))
 47253  }
 47254  
 47255  func test_isolation(tls *libc.TLS, pCtx uintptr, nArg int32, argv uintptr) {
 47256  	sqlite3.Xsqlite3_value_text16(tls, *(*uintptr)(unsafe.Pointer(argv)))
 47257  	sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 47258  	sqlite3.Xsqlite3_value_text16(tls, *(*uintptr)(unsafe.Pointer(argv)))
 47259  	sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 47260  	sqlite3.Xsqlite3_result_value(tls, pCtx, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 47261  }
 47262  
 47263  func test_eval(tls *libc.TLS, pCtx uintptr, nArg int32, argv uintptr) {
 47264  	bp := tls.Alloc(16)
 47265  	defer tls.Free(16)
 47266  
 47267  	var rc int32
 47268  	var db uintptr = sqlite3.Xsqlite3_context_db_handle(tls, pCtx)
 47269  	var zSql uintptr
 47270  
 47271  	zSql = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 47272  	rc = sqlite3.Xsqlite3_prepare_v2(tls, db, zSql, -1, bp+8, uintptr(0))
 47273  	if rc == SQLITE_OK {
 47274  		rc = sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp + 8)))
 47275  		if rc == SQLITE_ROW {
 47276  			sqlite3.Xsqlite3_result_value(tls, pCtx, sqlite3.Xsqlite3_column_value(tls, *(*uintptr)(unsafe.Pointer(bp + 8)), 0))
 47277  		}
 47278  		rc = sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 8)))
 47279  	}
 47280  	if rc != 0 {
 47281  		var zErr uintptr
 47282  
 47283  		zErr = sqlite3.Xsqlite3_mprintf(tls, ts+31163, libc.VaList(bp, sqlite3.Xsqlite3_errmsg(tls, db)))
 47284  		sqlite3.Xsqlite3_result_text(tls, pCtx, zErr, -1, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{sqlite3.Xsqlite3_free})))
 47285  		sqlite3.Xsqlite3_result_error_code(tls, pCtx, rc)
 47286  	}
 47287  }
 47288  
 47289  func testHexChar(tls *libc.TLS, c uint8) int32 {
 47290  	if int32(c) >= '0' && int32(c) <= '9' {
 47291  		return int32(c) - '0'
 47292  	} else if int32(c) >= 'a' && int32(c) <= 'f' {
 47293  		return int32(c) - 'a' + 10
 47294  	} else if int32(c) >= 'A' && int32(c) <= 'F' {
 47295  		return int32(c) - 'A' + 10
 47296  	}
 47297  	return 0
 47298  }
 47299  
 47300  func testHexToBin(tls *libc.TLS, zIn uintptr, zOut uintptr) {
 47301  	for *(*uint8)(unsafe.Pointer(zIn)) != 0 && *(*uint8)(unsafe.Pointer(zIn + 1)) != 0 {
 47302  		*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&zOut, 1))) = uint8(testHexChar(tls, *(*uint8)(unsafe.Pointer(zIn)))<<4 + testHexChar(tls, *(*uint8)(unsafe.Pointer(zIn + 1))))
 47303  		zIn += uintptr(2)
 47304  	}
 47305  }
 47306  
 47307  func testHexToUtf16be(tls *libc.TLS, pCtx uintptr, nArg int32, argv uintptr) {
 47308  	var n int32
 47309  	var zIn uintptr
 47310  	var zOut uintptr
 47311  
 47312  	n = sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(argv)))
 47313  	zIn = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 47314  	zOut = sqlite3.Xsqlite3_malloc(tls, n/2)
 47315  	if zOut == uintptr(0) {
 47316  		sqlite3.Xsqlite3_result_error_nomem(tls, pCtx)
 47317  	} else {
 47318  		testHexToBin(tls, zIn, zOut)
 47319  		sqlite3.Xsqlite3_result_text16be(tls, pCtx, zOut, n/2, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{sqlite3.Xsqlite3_free})))
 47320  	}
 47321  }
 47322  
 47323  func testHexToUtf8(tls *libc.TLS, pCtx uintptr, nArg int32, argv uintptr) {
 47324  	var n int32
 47325  	var zIn uintptr
 47326  	var zOut uintptr
 47327  
 47328  	n = sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(argv)))
 47329  	zIn = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 47330  	zOut = sqlite3.Xsqlite3_malloc(tls, n/2)
 47331  	if zOut == uintptr(0) {
 47332  		sqlite3.Xsqlite3_result_error_nomem(tls, pCtx)
 47333  	} else {
 47334  		testHexToBin(tls, zIn, zOut)
 47335  		sqlite3.Xsqlite3_result_text(tls, pCtx, zOut, n/2, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{sqlite3.Xsqlite3_free})))
 47336  	}
 47337  }
 47338  
 47339  func testHexToUtf16le(tls *libc.TLS, pCtx uintptr, nArg int32, argv uintptr) {
 47340  	var n int32
 47341  	var zIn uintptr
 47342  	var zOut uintptr
 47343  
 47344  	n = sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(argv)))
 47345  	zIn = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 47346  	zOut = sqlite3.Xsqlite3_malloc(tls, n/2)
 47347  	if zOut == uintptr(0) {
 47348  		sqlite3.Xsqlite3_result_error_nomem(tls, pCtx)
 47349  	} else {
 47350  		testHexToBin(tls, zIn, zOut)
 47351  		sqlite3.Xsqlite3_result_text16le(tls, pCtx, zOut, n/2, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{sqlite3.Xsqlite3_free})))
 47352  	}
 47353  }
 47354  
 47355  func real2hex(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 47356  	bp := tls.Alloc(28)
 47357  	defer tls.Free(28)
 47358  
 47359  	var i int32
 47360  	var bigEndian int32
 47361  	*(*sqlite3_uint64)(unsafe.Pointer(bp)) = uint64(1)
 47362  	bigEndian = libc.Bool32(int32(*(*uint8)(unsafe.Pointer(bp))) == 0)
 47363  	*(*float64)(unsafe.Pointer(bp)) = sqlite3.Xsqlite3_value_double(tls, *(*uintptr)(unsafe.Pointer(argv)))
 47364  	for i = 0; i < 8; i++ {
 47365  		if bigEndian != 0 {
 47366  			*(*uint8)(unsafe.Pointer(bp + 8 + uintptr(i*2))) = *(*uint8)(unsafe.Pointer(ts + 31194 + uintptr(int32(*(*uint8)(unsafe.Pointer(bp + uintptr(i))))>>4)))
 47367  			*(*uint8)(unsafe.Pointer(bp + 8 + uintptr(i*2+1))) = *(*uint8)(unsafe.Pointer(ts + 31194 + uintptr(int32(*(*uint8)(unsafe.Pointer(bp + uintptr(i))))&0xf)))
 47368  		} else {
 47369  			*(*uint8)(unsafe.Pointer(bp + 8 + uintptr(14-i*2))) = *(*uint8)(unsafe.Pointer(ts + 31194 + uintptr(int32(*(*uint8)(unsafe.Pointer(bp + uintptr(i))))>>4)))
 47370  			*(*uint8)(unsafe.Pointer(bp + 8 + uintptr(14-i*2+1))) = *(*uint8)(unsafe.Pointer(ts + 31194 + uintptr(int32(*(*uint8)(unsafe.Pointer(bp + uintptr(i))))&0xf)))
 47371  		}
 47372  	}
 47373  	*(*uint8)(unsafe.Pointer(bp + 8 + 16)) = uint8(0)
 47374  	sqlite3.Xsqlite3_result_text(tls, context, bp+8, -1, libc.UintptrFromInt32(-1))
 47375  }
 47376  
 47377  func test_extract(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 47378  	bp := tls.Alloc(72)
 47379  	defer tls.Free(72)
 47380  
 47381  	var db uintptr = sqlite3.Xsqlite3_context_db_handle(tls, context)
 47382  	var pRec uintptr
 47383  	var pEndHdr uintptr
 47384  	var pHdr uintptr
 47385  	var pBody uintptr
 47386  
 47387  	var iIdx int32
 47388  	var iCurrent int32 = 0
 47389  
 47390  	pRec = sqlite3.Xsqlite3_value_blob(tls, *(*uintptr)(unsafe.Pointer(argv)))
 47391  	iIdx = sqlite3.Xsqlite3_value_int(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 47392  
 47393  	pHdr = pRec + uintptr(sqlite3.Xsqlite3GetVarint(tls, pRec, bp))
 47394  	pBody = libc.AssignUintptr(&pEndHdr, pRec+uintptr(*(*u64)(unsafe.Pointer(bp))))
 47395  
 47396  	for iCurrent = 0; pHdr < pEndHdr && iCurrent <= iIdx; iCurrent++ {
 47397  		libc.Xmemset(tls, bp+8, 0, uint64(unsafe.Sizeof(Mem{})))
 47398  		(*Mem)(unsafe.Pointer(bp + 8)).Fdb = db
 47399  		(*Mem)(unsafe.Pointer(bp + 8)).Fenc = (*sqlite31)(unsafe.Pointer(db)).Fenc
 47400  		pHdr += uintptr(sqlite3.Xsqlite3GetVarint(tls, pHdr, bp+64))
 47401  		sqlite3.Xsqlite3VdbeSerialGet(tls, pBody, u32(*(*u64)(unsafe.Pointer(bp + 64))), bp+8)
 47402  		pBody += uintptr(sqlite3.Xsqlite3VdbeSerialTypeLen(tls, u32(*(*u64)(unsafe.Pointer(bp + 64)))))
 47403  
 47404  		if iCurrent == iIdx {
 47405  			sqlite3.Xsqlite3_result_value(tls, context, bp+8)
 47406  		}
 47407  
 47408  		if (*Mem)(unsafe.Pointer(bp+8)).FszMalloc != 0 {
 47409  			sqlite3.Xsqlite3DbFree(tls, db, (*Mem)(unsafe.Pointer(bp+8)).FzMalloc)
 47410  		}
 47411  	}
 47412  }
 47413  
 47414  func test_decode(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 47415  	bp := tls.Alloc(123)
 47416  	defer tls.Free(123)
 47417  
 47418  	var db uintptr = sqlite3.Xsqlite3_context_db_handle(tls, context)
 47419  	var pRec uintptr
 47420  	var pEndHdr uintptr
 47421  	var pHdr uintptr
 47422  	var pBody uintptr
 47423  
 47424  	var pRet uintptr
 47425  
 47426  	pRet = tcl.XTcl_NewObj(tls)
 47427  	(*Tcl_Obj)(unsafe.Pointer(pRet)).FrefCount++
 47428  
 47429  	pRec = sqlite3.Xsqlite3_value_blob(tls, *(*uintptr)(unsafe.Pointer(argv)))
 47430  
 47431  	pHdr = pRec + uintptr(sqlite3.Xsqlite3GetVarint(tls, pRec, bp+32))
 47432  	pBody = libc.AssignUintptr(&pEndHdr, pRec+uintptr(*(*u64)(unsafe.Pointer(bp + 32))))
 47433  	for pHdr < pEndHdr {
 47434  		var pVal uintptr = uintptr(0)
 47435  
 47436  		libc.Xmemset(tls, bp+40, 0, uint64(unsafe.Sizeof(Mem{})))
 47437  		(*Mem)(unsafe.Pointer(bp + 40)).Fdb = db
 47438  		(*Mem)(unsafe.Pointer(bp + 40)).Fenc = (*sqlite31)(unsafe.Pointer(db)).Fenc
 47439  		pHdr += uintptr(sqlite3.Xsqlite3GetVarint(tls, pHdr, bp+96))
 47440  		sqlite3.Xsqlite3VdbeSerialGet(tls, pBody, u32(*(*u64)(unsafe.Pointer(bp + 96))), bp+40)
 47441  		pBody += uintptr(sqlite3.Xsqlite3VdbeSerialTypeLen(tls, u32(*(*u64)(unsafe.Pointer(bp + 96)))))
 47442  
 47443  		switch sqlite3.Xsqlite3_value_type(tls, bp+40) {
 47444  		case SQLITE_TEXT:
 47445  			pVal = tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3_value_text(tls, bp+40), -1)
 47446  			break
 47447  
 47448  		case SQLITE_BLOB:
 47449  			{
 47450  				*(*[16]uint8)(unsafe.Pointer(bp + 107)) = [16]uint8{
 47451  					uint8('0'), uint8('1'), uint8('2'), uint8('3'), uint8('4'), uint8('5'), uint8('6'), uint8('7'),
 47452  					uint8('8'), uint8('9'), uint8('a'), uint8('b'), uint8('c'), uint8('d'), uint8('e'), uint8('f'),
 47453  				}
 47454  				var n int32 = sqlite3.Xsqlite3_value_bytes(tls, bp+40)
 47455  				var z uintptr = sqlite3.Xsqlite3_value_blob(tls, bp+40)
 47456  				var i int32
 47457  				pVal = tcl.XTcl_NewStringObj(tls, ts+6334, -1)
 47458  				for i = 0; i < n; i++ {
 47459  					*(*uint8)(unsafe.Pointer(bp + 104)) = *(*uint8)(unsafe.Pointer(bp + 107 + uintptr(int32(*(*u8)(unsafe.Pointer(z + uintptr(i))))>>4&0x0F)))
 47460  					*(*uint8)(unsafe.Pointer(bp + 104 + 1)) = *(*uint8)(unsafe.Pointer(bp + 107 + uintptr(int32(*(*u8)(unsafe.Pointer(z + uintptr(i))))&0x0F)))
 47461  					*(*uint8)(unsafe.Pointer(bp + 104 + 2)) = uint8(0)
 47462  					tcl.XTcl_AppendStringsToObj(tls, pVal, libc.VaList(bp, bp+104, 0))
 47463  				}
 47464  				tcl.XTcl_AppendStringsToObj(tls, pVal, libc.VaList(bp+16, ts+5624, 0))
 47465  				break
 47466  
 47467  			}
 47468  
 47469  		case SQLITE_FLOAT:
 47470  			pVal = tcl.XTcl_NewDoubleObj(tls, sqlite3.Xsqlite3_value_double(tls, bp+40))
 47471  			break
 47472  
 47473  		case SQLITE_INTEGER:
 47474  			pVal = tcl.XTcl_NewWideIntObj(tls, sqlite3.Xsqlite3_value_int64(tls, bp+40))
 47475  			break
 47476  
 47477  		case SQLITE_NULL:
 47478  			pVal = tcl.XTcl_NewStringObj(tls, ts+5846, -1)
 47479  			break
 47480  
 47481  		default:
 47482  		}
 47483  
 47484  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pRet, pVal)
 47485  
 47486  		if (*Mem)(unsafe.Pointer(bp+40)).FszMalloc != 0 {
 47487  			sqlite3.Xsqlite3DbFree(tls, db, (*Mem)(unsafe.Pointer(bp+40)).FzMalloc)
 47488  		}
 47489  	}
 47490  
 47491  	sqlite3.Xsqlite3_result_text(tls, context, tcl.XTcl_GetString(tls, pRet), -1, libc.UintptrFromInt32(-1))
 47492  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 47493  		var _objPtr uintptr = pRet
 47494  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 47495  			tcl.XTclFreeObj(tls, _objPtr)
 47496  		}
 47497  	}
 47498  }
 47499  
 47500  func test_zeroblob(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 47501  	var nZero int32 = sqlite3.Xsqlite3_value_int(tls, *(*uintptr)(unsafe.Pointer(argv)))
 47502  	sqlite3.Xsqlite3_result_zeroblob(tls, context, nZero)
 47503  }
 47504  
 47505  func test_getsubtype(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 47506  	sqlite3.Xsqlite3_result_int(tls, context, int32(sqlite3.Xsqlite3_value_subtype(tls, *(*uintptr)(unsafe.Pointer(argv)))))
 47507  }
 47508  
 47509  func test_frombind(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 47510  	var m sqlite3_uint64 = uint64(0)
 47511  	var i int32
 47512  	for i = 0; i < argc && i < 63; i++ {
 47513  		if sqlite3.Xsqlite3_value_frombind(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8))) != 0 {
 47514  			m = m | uint64(1)<<i
 47515  		}
 47516  	}
 47517  	sqlite3.Xsqlite3_result_int64(tls, context, sqlite3_int64(m))
 47518  }
 47519  
 47520  func test_setsubtype(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 47521  	sqlite3.Xsqlite3_result_value(tls, context, *(*uintptr)(unsafe.Pointer(argv)))
 47522  	sqlite3.Xsqlite3_result_subtype(tls, context, uint32(sqlite3.Xsqlite3_value_int(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))))
 47523  }
 47524  
 47525  func registerTestFunctions(tls *libc.TLS, db uintptr, pzErrMsg uintptr, pThunk uintptr) int32 {
 47526  	var i int32
 47527  
 47528  	for i = 0; uint64(i) < uint64(unsafe.Sizeof(aFuncs))/uint64(unsafe.Sizeof(struct {
 47529  		FzName       uintptr
 47530  		FnArg        int8
 47531  		F__ccgo_pad1 [3]byte
 47532  		FeTextRep    uint32
 47533  		FxFunc       uintptr
 47534  	}{})); i++ {
 47535  		sqlite3.Xsqlite3_create_function(tls, db, aFuncs[i].FzName, int32(aFuncs[i].FnArg),
 47536  			int32(aFuncs[i].FeTextRep), uintptr(0), aFuncs[i].FxFunc, uintptr(0), uintptr(0))
 47537  	}
 47538  
 47539  	sqlite3.Xsqlite3_create_function(tls, db, ts+31211, 0, SQLITE_ANY, uintptr(0), uintptr(0),
 47540  		*(*uintptr)(unsafe.Pointer(&struct {
 47541  			f func(*libc.TLS, uintptr, int32, uintptr)
 47542  		}{test_agg_errmsg16_step})), *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{test_agg_errmsg16_final})))
 47543  
 47544  	return SQLITE_OK
 47545  }
 47546  
 47547  var aFuncs = [20]struct {
 47548  	FzName       uintptr
 47549  	FnArg        int8
 47550  	F__ccgo_pad1 [3]byte
 47551  	FeTextRep    uint32
 47552  	FxFunc       uintptr
 47553  }{
 47554  	{FzName: ts + 31229, FnArg: int8(2), FeTextRep: uint32(SQLITE_UTF8), FxFunc: 0},
 47555  	{FzName: ts + 31237, FnArg: int8(1), FeTextRep: uint32(SQLITE_UTF8), FxFunc: 0},
 47556  	{FzName: ts + 31253, FnArg: int8(1), FeTextRep: uint32(SQLITE_UTF8), FxFunc: 0},
 47557  	{FzName: ts + 31271, FnArg: int8(1), FeTextRep: uint32(SQLITE_UTF8), FxFunc: 0},
 47558  	{FzName: ts + 31286, FnArg: int8(1), FeTextRep: uint32(SQLITE_UTF8), FxFunc: 0},
 47559  	{FzName: ts + 31301, FnArg: int8(1), FeTextRep: uint32(SQLITE_UTF8), FxFunc: 0},
 47560  	{FzName: ts + 31313, FeTextRep: uint32(SQLITE_UTF8), FxFunc: 0},
 47561  	{FzName: ts + 31335, FnArg: int8(-1), FeTextRep: uint32(SQLITE_UTF8), FxFunc: 0},
 47562  	{FzName: ts + 31348, FnArg: int8(1), FeTextRep: uint32(SQLITE_UTF8), FxFunc: 0},
 47563  	{FzName: ts + 31348, FnArg: int8(2), FeTextRep: uint32(SQLITE_UTF8), FxFunc: 0},
 47564  	{FzName: ts + 31359, FnArg: int8(1), FeTextRep: uint32(SQLITE_UTF8), FxFunc: 0},
 47565  	{FzName: ts + 31369, FnArg: int8(2), FeTextRep: uint32(SQLITE_UTF8), FxFunc: 0},
 47566  	{FzName: ts + 31384, FnArg: int8(1), FeTextRep: uint32(SQLITE_UTF8), FxFunc: 0},
 47567  	{FzName: ts + 31397, FnArg: int8(1), FeTextRep: uint32(SQLITE_UTF8), FxFunc: 0},
 47568  	{FzName: ts + 31406, FnArg: int8(1), FeTextRep: uint32(SQLITE_UTF8), FxFunc: 0},
 47569  	{FzName: ts + 31418, FnArg: int8(2), FeTextRep: uint32(SQLITE_UTF8), FxFunc: 0},
 47570  	{FzName: ts + 31431, FnArg: int8(1), FeTextRep: uint32(SQLITE_UTF8 | SQLITE_DETERMINISTIC), FxFunc: 0},
 47571  	{FzName: ts + 31445, FnArg: int8(1), FeTextRep: uint32(SQLITE_UTF8), FxFunc: 0},
 47572  	{FzName: ts + 31461, FnArg: int8(2), FeTextRep: uint32(SQLITE_UTF8), FxFunc: 0},
 47573  	{FzName: ts + 31477, FnArg: int8(-1), FeTextRep: uint32(SQLITE_UTF8), FxFunc: 0},
 47574  }
 47575  
 47576  func autoinstall_test_funcs(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 47577  	var rc int32 = sqlite3.Xsqlite3_auto_extension(tls, *(*uintptr)(unsafe.Pointer(&struct {
 47578  		f func(*libc.TLS, uintptr, uintptr, uintptr) int32
 47579  	}{registerTestFunctions})))
 47580  	if rc == SQLITE_OK {
 47581  		rc = sqlite3.Xsqlite3_auto_extension(tls, *(*uintptr)(unsafe.Pointer(&struct {
 47582  			f func(*libc.TLS, uintptr, uintptr, uintptr) int32
 47583  		}{Md5_Register})))
 47584  	}
 47585  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, rc))
 47586  	return TCL_OK
 47587  }
 47588  
 47589  func tStep(tls *libc.TLS, a uintptr, b int32, c uintptr) {
 47590  }
 47591  
 47592  func tFinal(tls *libc.TLS, a uintptr) {
 47593  }
 47594  
 47595  func abuse_create_function(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 47596  	bp := tls.Alloc(24)
 47597  	defer tls.Free(24)
 47598  
 47599  	var rc int32
 47600  	var mxArg int32
 47601  
 47602  	if !(getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+16) != 0) {
 47603  		goto __1
 47604  	}
 47605  	return TCL_ERROR
 47606  __1:
 47607  	;
 47608  	rc = sqlite3.Xsqlite3_create_function(tls, *(*uintptr)(unsafe.Pointer(bp + 16)), ts+31491, 1, SQLITE_UTF8, uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 47609  		f func(*libc.TLS, uintptr, int32, uintptr)
 47610  	}{tStep})), *(*uintptr)(unsafe.Pointer(&struct {
 47611  		f func(*libc.TLS, uintptr, int32, uintptr)
 47612  	}{tStep})), *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{tFinal})))
 47613  	if !(rc != SQLITE_MISUSE) {
 47614  		goto __2
 47615  	}
 47616  	goto abuse_err
 47617  __2:
 47618  	;
 47619  	rc = sqlite3.Xsqlite3_create_function(tls, *(*uintptr)(unsafe.Pointer(bp + 16)), ts+31491, 1, SQLITE_UTF8, uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 47620  		f func(*libc.TLS, uintptr, int32, uintptr)
 47621  	}{tStep})), *(*uintptr)(unsafe.Pointer(&struct {
 47622  		f func(*libc.TLS, uintptr, int32, uintptr)
 47623  	}{tStep})), uintptr(0))
 47624  	if !(rc != SQLITE_MISUSE) {
 47625  		goto __3
 47626  	}
 47627  	goto abuse_err
 47628  __3:
 47629  	;
 47630  	rc = sqlite3.Xsqlite3_create_function(tls, *(*uintptr)(unsafe.Pointer(bp + 16)), ts+31491, 1, SQLITE_UTF8, uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 47631  		f func(*libc.TLS, uintptr, int32, uintptr)
 47632  	}{tStep})), uintptr(0), *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{tFinal})))
 47633  	if !(rc != SQLITE_MISUSE) {
 47634  		goto __4
 47635  	}
 47636  	goto abuse_err
 47637  __4:
 47638  	;
 47639  	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})))
 47640  	if !(rc != SQLITE_MISUSE) {
 47641  		goto __5
 47642  	}
 47643  	goto abuse_err
 47644  __5:
 47645  	;
 47646  	rc = sqlite3.Xsqlite3_create_function(tls, *(*uintptr)(unsafe.Pointer(bp + 16)), ts+31491, 1, SQLITE_UTF8, uintptr(0), uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 47647  		f func(*libc.TLS, uintptr, int32, uintptr)
 47648  	}{tStep})), uintptr(0))
 47649  	if !(rc != SQLITE_MISUSE) {
 47650  		goto __6
 47651  	}
 47652  	goto abuse_err
 47653  __6:
 47654  	;
 47655  	rc = sqlite3.Xsqlite3_create_function(tls, *(*uintptr)(unsafe.Pointer(bp + 16)), ts+31491, -2, SQLITE_UTF8, uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 47656  		f func(*libc.TLS, uintptr, int32, uintptr)
 47657  	}{tStep})), uintptr(0), uintptr(0))
 47658  	if !(rc != SQLITE_MISUSE) {
 47659  		goto __7
 47660  	}
 47661  	goto abuse_err
 47662  __7:
 47663  	;
 47664  	rc = sqlite3.Xsqlite3_create_function(tls, *(*uintptr)(unsafe.Pointer(bp + 16)), ts+31491, 128, SQLITE_UTF8, uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 47665  		f func(*libc.TLS, uintptr, int32, uintptr)
 47666  	}{tStep})), uintptr(0), uintptr(0))
 47667  	if !(rc != SQLITE_MISUSE) {
 47668  		goto __8
 47669  	}
 47670  	goto abuse_err
 47671  __8:
 47672  	;
 47673  	rc = sqlite3.Xsqlite3_create_function(tls, *(*uintptr)(unsafe.Pointer(bp + 16)),
 47674  		ts+31494,
 47675  		1, SQLITE_UTF8, uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 47676  			f func(*libc.TLS, uintptr, int32, uintptr)
 47677  		}{tStep})), uintptr(0), uintptr(0))
 47678  	if !(rc != SQLITE_MISUSE) {
 47679  		goto __9
 47680  	}
 47681  	goto abuse_err
 47682  __9:
 47683  	;
 47684  	sqlite3.Xsqlite3_limit(tls, *(*uintptr)(unsafe.Pointer(bp + 16)), SQLITE_LIMIT_FUNCTION_ARG, 10000)
 47685  	mxArg = sqlite3.Xsqlite3_limit(tls, *(*uintptr)(unsafe.Pointer(bp + 16)), SQLITE_LIMIT_FUNCTION_ARG, -1)
 47686  	rc = sqlite3.Xsqlite3_create_function(tls, *(*uintptr)(unsafe.Pointer(bp + 16)),
 47687  		ts+31751,
 47688  		mxArg, SQLITE_UTF8, uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 47689  			f func(*libc.TLS, uintptr, int32, uintptr)
 47690  		}{tStep})), uintptr(0), uintptr(0))
 47691  	if !(rc != SQLITE_OK) {
 47692  		goto __10
 47693  	}
 47694  	goto abuse_err
 47695  __10:
 47696  	;
 47697  	return TCL_OK
 47698  
 47699  abuse_err:
 47700  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+32007,
 47701  		uintptr(0)))
 47702  	return TCL_ERROR
 47703  }
 47704  
 47705  func rankfunc(tls *libc.TLS, pCtx uintptr, nVal int32, apVal uintptr) {
 47706  	var aMatchinfo uintptr
 47707  	var nMatchinfo int32
 47708  	var nCol int32
 47709  	var nPhrase int32
 47710  	var iPhrase int32
 47711  	var score float64
 47712  	var nHitCount int32
 47713  	var nGlobalHitCount int32
 47714  	var weight float64
 47715  	var iCol int32
 47716  
 47717  	var aPhraseinfo uintptr
 47718  	nCol = 0
 47719  	nPhrase = 0
 47720  	score = 0.0
 47721  
 47722  	if !(nVal < 1) {
 47723  		goto __1
 47724  	}
 47725  	goto wrong_number_args
 47726  __1:
 47727  	;
 47728  	aMatchinfo = sqlite3.Xsqlite3_value_blob(tls, *(*uintptr)(unsafe.Pointer(apVal)))
 47729  	nMatchinfo = int32(uint64(sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(apVal)))) / uint64(unsafe.Sizeof(int32(0))))
 47730  	if !(nMatchinfo >= 2) {
 47731  		goto __2
 47732  	}
 47733  	nPhrase = *(*int32)(unsafe.Pointer(aMatchinfo))
 47734  	nCol = *(*int32)(unsafe.Pointer(aMatchinfo + 1*4))
 47735  __2:
 47736  	;
 47737  	if !(nMatchinfo != 2+3*nCol*nPhrase) {
 47738  		goto __3
 47739  	}
 47740  	sqlite3.Xsqlite3_result_error(tls, pCtx,
 47741  		ts+32050, -1)
 47742  	return
 47743  __3:
 47744  	;
 47745  	if !(nVal != 1+nCol) {
 47746  		goto __4
 47747  	}
 47748  	goto wrong_number_args
 47749  __4:
 47750  	;
 47751  	iPhrase = 0
 47752  __5:
 47753  	if !(iPhrase < nPhrase) {
 47754  		goto __7
 47755  	}
 47756  
 47757  	aPhraseinfo = aMatchinfo + uintptr(2+iPhrase*nCol*3)*4
 47758  	iCol = 0
 47759  __8:
 47760  	if !(iCol < nCol) {
 47761  		goto __10
 47762  	}
 47763  	nHitCount = *(*int32)(unsafe.Pointer(aPhraseinfo + uintptr(3*iCol)*4))
 47764  	nGlobalHitCount = *(*int32)(unsafe.Pointer(aPhraseinfo + uintptr(3*iCol+1)*4))
 47765  	weight = sqlite3.Xsqlite3_value_double(tls, *(*uintptr)(unsafe.Pointer(apVal + uintptr(iCol+1)*8)))
 47766  	if !(nHitCount > 0) {
 47767  		goto __11
 47768  	}
 47769  	score = score + float64(nHitCount)/float64(nGlobalHitCount)*weight
 47770  __11:
 47771  	;
 47772  	goto __9
 47773  __9:
 47774  	iCol++
 47775  	goto __8
 47776  	goto __10
 47777  __10:
 47778  	;
 47779  	goto __6
 47780  __6:
 47781  	iPhrase++
 47782  	goto __5
 47783  	goto __7
 47784  __7:
 47785  	;
 47786  	sqlite3.Xsqlite3_result_double(tls, pCtx, score)
 47787  	return
 47788  
 47789  wrong_number_args:
 47790  	sqlite3.Xsqlite3_result_error(tls, pCtx, ts+32099, -1)
 47791  }
 47792  
 47793  func install_fts3_rank_function(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 47794  	bp := tls.Alloc(8)
 47795  	defer tls.Free(8)
 47796  
 47797  	if objc != 2 {
 47798  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2050)
 47799  		return TCL_ERROR
 47800  	}
 47801  
 47802  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 47803  		return TCL_ERROR
 47804  	}
 47805  	sqlite3.Xsqlite3_create_function(tls, *(*uintptr)(unsafe.Pointer(bp)), ts+32144, -1, SQLITE_UTF8, uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 47806  		f func(*libc.TLS, uintptr, int32, uintptr)
 47807  	}{rankfunc})), uintptr(0), uintptr(0))
 47808  	return TCL_OK
 47809  }
 47810  
 47811  func Sqlitetest_func_Init(tls *libc.TLS, interp uintptr) int32 {
 47812  	var i int32
 47813  
 47814  	for i = 0; uint64(i) < uint64(unsafe.Sizeof(aObjCmd7))/uint64(unsafe.Sizeof(struct {
 47815  		FzName uintptr
 47816  		FxProc uintptr
 47817  	}{})); i++ {
 47818  		tcl.XTcl_CreateObjCommand(tls, interp, aObjCmd7[i].FzName, aObjCmd7[i].FxProc, uintptr(0), uintptr(0))
 47819  	}
 47820  	sqlite3.Xsqlite3_initialize(tls)
 47821  	sqlite3.Xsqlite3_auto_extension(tls, *(*uintptr)(unsafe.Pointer(&struct {
 47822  		f func(*libc.TLS, uintptr, uintptr, uintptr) int32
 47823  	}{registerTestFunctions})))
 47824  	sqlite3.Xsqlite3_auto_extension(tls, *(*uintptr)(unsafe.Pointer(&struct {
 47825  		f func(*libc.TLS, uintptr, uintptr, uintptr) int32
 47826  	}{Md5_Register})))
 47827  	return TCL_OK
 47828  }
 47829  
 47830  var aObjCmd7 = [3]struct {
 47831  	FzName uintptr
 47832  	FxProc uintptr
 47833  }{
 47834  	{FzName: ts + 32149, FxProc: 0},
 47835  	{FzName: ts + 32176, FxProc: 0},
 47836  	{FzName: ts + 32198, FxProc: 0},
 47837  }
 47838  
 47839  type fd_set3 = struct{ Ffds_bits [16]int64 }
 47840  
 47841  func sqlite3TestBinToHex(tls *libc.TLS, zBuf uintptr, N int32) {
 47842  	bp := tls.Alloc(17)
 47843  	defer tls.Free(17)
 47844  
 47845  	*(*[17]uint8)(unsafe.Pointer(bp)) = *(*[17]uint8)(unsafe.Pointer(ts + 32225))
 47846  	var i int32
 47847  	var j int32
 47848  	var c uint8
 47849  	i = N * 2
 47850  	*(*uint8)(unsafe.Pointer(zBuf + uintptr(libc.PostDecInt32(&i, 1)))) = uint8(0)
 47851  	for j = N - 1; j >= 0; j-- {
 47852  		c = *(*uint8)(unsafe.Pointer(zBuf + uintptr(j)))
 47853  		*(*uint8)(unsafe.Pointer(zBuf + uintptr(libc.PostDecInt32(&i, 1)))) = *(*uint8)(unsafe.Pointer(bp + uintptr(int32(c)&0xf)))
 47854  		*(*uint8)(unsafe.Pointer(zBuf + uintptr(libc.PostDecInt32(&i, 1)))) = *(*uint8)(unsafe.Pointer(bp + uintptr(int32(c)>>4)))
 47855  	}
 47856  
 47857  }
 47858  
 47859  func sqlite3TestHexToBin(tls *libc.TLS, zIn uintptr, N int32, aOut uintptr) int32 {
 47860  	bp := tls.Alloc(256)
 47861  	defer tls.Free(256)
 47862  
 47863  	*(*[256]uint8)(unsafe.Pointer(bp)) = [256]uint8{
 47864  		uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0),
 47865  		uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0),
 47866  		uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0),
 47867  		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),
 47868  		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),
 47869  		uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0),
 47870  		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),
 47871  		uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0),
 47872  		uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0),
 47873  		uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0),
 47874  		uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0),
 47875  		uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0),
 47876  		uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0),
 47877  		uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0),
 47878  		uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0),
 47879  		uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0),
 47880  	}
 47881  	var i int32
 47882  	var j int32
 47883  	var hi int32 = 1
 47884  	var c uint8
 47885  
 47886  	for i = libc.AssignInt32(&j, 0); i < N; i++ {
 47887  		c = *(*uint8)(unsafe.Pointer(bp + uintptr(*(*uint8)(unsafe.Pointer(zIn + uintptr(i))))))
 47888  		if int32(c) == 0 {
 47889  			continue
 47890  		}
 47891  		if hi != 0 {
 47892  			*(*uint8)(unsafe.Pointer(aOut + uintptr(j))) = uint8((int32(c) - 1) << 4)
 47893  			hi = 0
 47894  		} else {
 47895  			*(*uint8)(unsafe.Pointer(aOut + uintptr(libc.PostIncInt32(&j, 1)))) |= uint8(int32(c) - 1)
 47896  			hi = 1
 47897  		}
 47898  	}
 47899  	return j
 47900  }
 47901  
 47902  func hexio_read(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 47903  	bp := tls.Alloc(48)
 47904  	defer tls.Free(48)
 47905  
 47906  	var got int32
 47907  	var zFile uintptr
 47908  	var zBuf uintptr
 47909  	var in uintptr
 47910  
 47911  	if objc != 4 {
 47912  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+32242)
 47913  		return TCL_ERROR
 47914  	}
 47915  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+40) != 0 {
 47916  		return TCL_ERROR
 47917  	}
 47918  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+44) != 0 {
 47919  		return TCL_ERROR
 47920  	}
 47921  	zFile = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 47922  	zBuf = sqlite3.Xsqlite3_malloc(tls, *(*int32)(unsafe.Pointer(bp + 44))*2+1)
 47923  	if zBuf == uintptr(0) {
 47924  		return TCL_ERROR
 47925  	}
 47926  	in = libc.Xfopen(tls, zFile, ts+4402)
 47927  	if in == uintptr(0) {
 47928  		in = libc.Xfopen(tls, zFile, ts+32262)
 47929  	}
 47930  	if in == uintptr(0) {
 47931  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+32264, zFile, 0))
 47932  		return TCL_ERROR
 47933  	}
 47934  	libc.Xfseek(tls, in, int64(*(*int32)(unsafe.Pointer(bp + 40))), SEEK_SET)
 47935  	got = int32(libc.Xfread(tls, zBuf, uint64(1), uint64(*(*int32)(unsafe.Pointer(bp + 44))), in))
 47936  	libc.Xfclose(tls, in)
 47937  	if got < 0 {
 47938  		got = 0
 47939  	}
 47940  	sqlite3TestBinToHex(tls, zBuf, got)
 47941  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+24, zBuf, 0))
 47942  	sqlite3.Xsqlite3_free(tls, zBuf)
 47943  	return TCL_OK
 47944  }
 47945  
 47946  func hexio_write(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 47947  	bp := tls.Alloc(32)
 47948  	defer tls.Free(32)
 47949  
 47950  	var nOut int32
 47951  	var written int32
 47952  	var zFile uintptr
 47953  	var zIn uintptr
 47954  	var aOut uintptr
 47955  	var out uintptr
 47956  
 47957  	if objc != 4 {
 47958  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+32288)
 47959  		return TCL_ERROR
 47960  	}
 47961  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+24) != 0 {
 47962  		return TCL_ERROR
 47963  	}
 47964  	zFile = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 47965  	zIn = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+28)
 47966  	aOut = sqlite3.Xsqlite3_malloc(tls, 1+*(*int32)(unsafe.Pointer(bp + 28))/2)
 47967  	if aOut == uintptr(0) {
 47968  		return TCL_ERROR
 47969  	}
 47970  	nOut = sqlite3TestHexToBin(tls, zIn, *(*int32)(unsafe.Pointer(bp + 28)), aOut)
 47971  	out = libc.Xfopen(tls, zFile, ts+32312)
 47972  	if out == uintptr(0) {
 47973  		out = libc.Xfopen(tls, zFile, ts+32316)
 47974  	}
 47975  	if out == uintptr(0) {
 47976  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+32319, zFile, 0))
 47977  		return TCL_ERROR
 47978  	}
 47979  	libc.Xfseek(tls, out, int64(*(*int32)(unsafe.Pointer(bp + 24))), SEEK_SET)
 47980  	written = int32(libc.Xfwrite(tls, aOut, uint64(1), uint64(nOut), out))
 47981  	sqlite3.Xsqlite3_free(tls, aOut)
 47982  	libc.Xfclose(tls, out)
 47983  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, written))
 47984  	return TCL_OK
 47985  }
 47986  
 47987  func hexio_get_int(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 47988  	bp := tls.Alloc(8)
 47989  	defer tls.Free(8)
 47990  
 47991  	var val int32
 47992  
 47993  	var nOut int32
 47994  	var zIn uintptr
 47995  	var aOut uintptr
 47996  
 47997  	if objc != 2 {
 47998  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+32344)
 47999  		return TCL_ERROR
 48000  	}
 48001  	zIn = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp)
 48002  	aOut = sqlite3.Xsqlite3_malloc(tls, 1+*(*int32)(unsafe.Pointer(bp))/2)
 48003  	if aOut == uintptr(0) {
 48004  		return TCL_ERROR
 48005  	}
 48006  	nOut = sqlite3TestHexToBin(tls, zIn, *(*int32)(unsafe.Pointer(bp)), aOut)
 48007  	if nOut >= 4 {
 48008  		libc.Xmemcpy(tls, bp+4, aOut, uint64(4))
 48009  	} else {
 48010  		libc.Xmemset(tls, bp+4, 0, uint64(unsafe.Sizeof([4]uint8{})))
 48011  		libc.Xmemcpy(tls, bp+4+uintptr(4-nOut), aOut, uint64(nOut))
 48012  	}
 48013  	sqlite3.Xsqlite3_free(tls, aOut)
 48014  	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)))
 48015  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, val))
 48016  	return TCL_OK
 48017  }
 48018  
 48019  func hexio_render_int16(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 48020  	bp := tls.Alloc(14)
 48021  	defer tls.Free(14)
 48022  
 48023  	if objc != 2 {
 48024  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2413)
 48025  		return TCL_ERROR
 48026  	}
 48027  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp) != 0 {
 48028  		return TCL_ERROR
 48029  	}
 48030  	*(*uint8)(unsafe.Pointer(bp + 4)) = uint8(*(*int32)(unsafe.Pointer(bp)) >> 8)
 48031  	*(*uint8)(unsafe.Pointer(bp + 4 + 1)) = uint8(*(*int32)(unsafe.Pointer(bp)))
 48032  	sqlite3TestBinToHex(tls, bp+4, 2)
 48033  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, bp+4, 4))
 48034  	return TCL_OK
 48035  }
 48036  
 48037  func hexio_render_int32(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 48038  	bp := tls.Alloc(14)
 48039  	defer tls.Free(14)
 48040  
 48041  	if objc != 2 {
 48042  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2413)
 48043  		return TCL_ERROR
 48044  	}
 48045  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp) != 0 {
 48046  		return TCL_ERROR
 48047  	}
 48048  	*(*uint8)(unsafe.Pointer(bp + 4)) = uint8(*(*int32)(unsafe.Pointer(bp)) >> 24)
 48049  	*(*uint8)(unsafe.Pointer(bp + 4 + 1)) = uint8(*(*int32)(unsafe.Pointer(bp)) >> 16)
 48050  	*(*uint8)(unsafe.Pointer(bp + 4 + 2)) = uint8(*(*int32)(unsafe.Pointer(bp)) >> 8)
 48051  	*(*uint8)(unsafe.Pointer(bp + 4 + 3)) = uint8(*(*int32)(unsafe.Pointer(bp)))
 48052  	sqlite3TestBinToHex(tls, bp+4, 4)
 48053  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, bp+4, 8))
 48054  	return TCL_OK
 48055  }
 48056  
 48057  func utf8_to_utf8(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 48058  	bp := tls.Alloc(16)
 48059  	defer tls.Free(16)
 48060  
 48061  	tcl.XTcl_AppendResult(tls, interp,
 48062  		libc.VaList(bp, ts+32352, 0))
 48063  	return TCL_ERROR
 48064  }
 48065  
 48066  func getFts3Varint(tls *libc.TLS, p uintptr, v uintptr) int32 {
 48067  	var q uintptr = p
 48068  	var x sqlite_uint64 = uint64(0)
 48069  	var y sqlite_uint64 = uint64(1)
 48070  	for int32(*(*uint8)(unsafe.Pointer(q)))&0x80 == 0x80 {
 48071  		x = x + y*sqlite_uint64(int32(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&q, 1))))&0x7f)
 48072  		y <<= 7
 48073  	}
 48074  	x = x + y*sqlite_uint64(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&q, 1))))
 48075  	*(*sqlite_int64)(unsafe.Pointer(v)) = sqlite_int64(x)
 48076  	return int32((int64(q) - int64(p)) / 1)
 48077  }
 48078  
 48079  func putFts3Varint(tls *libc.TLS, p uintptr, v sqlite_int64) int32 {
 48080  	var q uintptr = p
 48081  	var vu sqlite_uint64 = sqlite_uint64(v)
 48082  	for __ccgo := true; __ccgo; __ccgo = vu != uint64(0) {
 48083  		*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&q, 1))) = uint8(vu&uint64(0x7f) | uint64(0x80))
 48084  		vu >>= 7
 48085  	}
 48086  	*(*uint8)(unsafe.Pointer(q + libc.UintptrFromInt32(-1))) &= uint8(0x7f)
 48087  
 48088  	return int32((int64(q) - int64(p)) / 1)
 48089  }
 48090  
 48091  func read_fts3varint(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 48092  	bp := tls.Alloc(16)
 48093  	defer tls.Free(16)
 48094  
 48095  	var zBlob uintptr
 48096  
 48097  	var nVal int32
 48098  
 48099  	if objc != 3 {
 48100  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+32406)
 48101  		return TCL_ERROR
 48102  	}
 48103  	zBlob = tcl.XTcl_GetByteArrayFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp)
 48104  
 48105  	nVal = getFts3Varint(tls, zBlob, bp+8)
 48106  	tcl.XTcl_ObjSetVar2(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), uintptr(0), tcl.XTcl_NewWideIntObj(tls, *(*sqlite3_int64)(unsafe.Pointer(bp + 8))), 0)
 48107  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, nVal))
 48108  	return TCL_OK
 48109  }
 48110  
 48111  func make_fts3record(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 48112  	bp := tls.Alloc(28)
 48113  	defer tls.Free(28)
 48114  
 48115  	*(*uintptr)(unsafe.Pointer(bp + 8)) = uintptr(0)
 48116  	*(*int32)(unsafe.Pointer(bp)) = 0
 48117  	var aOut uintptr = uintptr(0)
 48118  	var nOut int32 = 0
 48119  	var nAlloc int32 = 0
 48120  	var i int32
 48121  
 48122  	if objc != 2 {
 48123  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+32419)
 48124  		return TCL_ERROR
 48125  	}
 48126  	if tcl.XTcl_ListObjGetElements(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp, bp+8) != 0 {
 48127  		return TCL_ERROR
 48128  	}
 48129  
 48130  	for i = 0; i < *(*int32)(unsafe.Pointer(bp)); i++ {
 48131  		if TCL_OK == tcl.XTcl_GetWideIntFromObj(tls, uintptr(0), *(*uintptr)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 8)) + uintptr(i)*8)), bp+16) {
 48132  			if nOut+10 > nAlloc {
 48133  				var nNew int32
 48134  				if nAlloc != 0 {
 48135  					nNew = nAlloc * 2
 48136  				} else {
 48137  					nNew = 128
 48138  				}
 48139  				var aNew uintptr = sqlite3.Xsqlite3_realloc(tls, aOut, nNew)
 48140  				if aNew == uintptr(0) {
 48141  					sqlite3.Xsqlite3_free(tls, aOut)
 48142  					return TCL_ERROR
 48143  				}
 48144  				aOut = aNew
 48145  				nAlloc = nNew
 48146  			}
 48147  			nOut = nOut + putFts3Varint(tls, aOut+uintptr(nOut), *(*sqlite3_int64)(unsafe.Pointer(bp + 16)))
 48148  		} else {
 48149  			*(*int32)(unsafe.Pointer(bp + 24)) = 0
 48150  			var zVal uintptr = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 8)) + uintptr(i)*8)), bp+24)
 48151  			for nOut+*(*int32)(unsafe.Pointer(bp + 24)) > nAlloc {
 48152  				var nNew int32
 48153  				if nAlloc != 0 {
 48154  					nNew = nAlloc * 2
 48155  				} else {
 48156  					nNew = 128
 48157  				}
 48158  				var aNew uintptr = sqlite3.Xsqlite3_realloc(tls, aOut, nNew)
 48159  				if aNew == uintptr(0) {
 48160  					sqlite3.Xsqlite3_free(tls, aOut)
 48161  					return TCL_ERROR
 48162  				}
 48163  				aOut = aNew
 48164  				nAlloc = nNew
 48165  			}
 48166  			libc.Xmemcpy(tls, aOut+uintptr(nOut), zVal, uint64(*(*int32)(unsafe.Pointer(bp + 24))))
 48167  			nOut = nOut + *(*int32)(unsafe.Pointer(bp + 24))
 48168  		}
 48169  	}
 48170  
 48171  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewByteArrayObj(tls, aOut, nOut))
 48172  	sqlite3.Xsqlite3_free(tls, aOut)
 48173  	return TCL_OK
 48174  }
 48175  
 48176  func Sqlitetest_hexio_Init(tls *libc.TLS, interp uintptr) int32 {
 48177  	var i int32
 48178  	for i = 0; uint64(i) < uint64(unsafe.Sizeof(aObjCmd8))/uint64(unsafe.Sizeof(struct {
 48179  		FzName uintptr
 48180  		FxProc uintptr
 48181  	}{})); i++ {
 48182  		tcl.XTcl_CreateObjCommand(tls, interp, aObjCmd8[i].FzName, aObjCmd8[i].FxProc, uintptr(0), uintptr(0))
 48183  	}
 48184  	return TCL_OK
 48185  }
 48186  
 48187  var aObjCmd8 = [8]struct {
 48188  	FzName uintptr
 48189  	FxProc uintptr
 48190  }{
 48191  	{FzName: ts + 32424, FxProc: 0},
 48192  	{FzName: ts + 32435, FxProc: 0},
 48193  	{FzName: ts + 32447, FxProc: 0},
 48194  	{FzName: ts + 32461, FxProc: 0},
 48195  	{FzName: ts + 32480, FxProc: 0},
 48196  	{FzName: ts + 32499, FxProc: 0},
 48197  	{FzName: ts + 32512, FxProc: 0},
 48198  	{FzName: ts + 32528, FxProc: 0},
 48199  }
 48200  
 48201  type Wrapped = struct {
 48202  	Fpcache      sqlite3_pcache_methods2
 48203  	Fmem         sqlite3_mem_methods
 48204  	Fmutex       sqlite3_mutex_methods
 48205  	Fmem_init    int32
 48206  	Fmem_fail    int32
 48207  	Fmutex_init  int32
 48208  	Fmutex_fail  int32
 48209  	Fpcache_init int32
 48210  	Fpcache_fail int32
 48211  }
 48212  
 48213  var wrapped Wrapped
 48214  
 48215  func wrMemInit(tls *libc.TLS, pAppData uintptr) int32 {
 48216  	var rc int32
 48217  	if wrapped.Fmem_fail != 0 {
 48218  		rc = SQLITE_ERROR
 48219  	} else {
 48220  		rc = (*struct {
 48221  			f func(*libc.TLS, uintptr) int32
 48222  		})(unsafe.Pointer(&struct{ uintptr }{wrapped.Fmem.FxInit})).f(tls, wrapped.Fmem.FpAppData)
 48223  	}
 48224  	if rc == SQLITE_OK {
 48225  		wrapped.Fmem_init = 1
 48226  	}
 48227  	return rc
 48228  }
 48229  
 48230  func wrMemShutdown(tls *libc.TLS, pAppData uintptr) {
 48231  	(*struct{ f func(*libc.TLS, uintptr) })(unsafe.Pointer(&struct{ uintptr }{wrapped.Fmem.FxShutdown})).f(tls, wrapped.Fmem.FpAppData)
 48232  	wrapped.Fmem_init = 0
 48233  }
 48234  
 48235  func wrMemMalloc(tls *libc.TLS, n int32) uintptr {
 48236  	return (*struct {
 48237  		f func(*libc.TLS, int32) uintptr
 48238  	})(unsafe.Pointer(&struct{ uintptr }{wrapped.Fmem.FxMalloc})).f(tls, n)
 48239  }
 48240  
 48241  func wrMemFree(tls *libc.TLS, p uintptr) {
 48242  	(*struct{ f func(*libc.TLS, uintptr) })(unsafe.Pointer(&struct{ uintptr }{wrapped.Fmem.FxFree})).f(tls, p)
 48243  }
 48244  
 48245  func wrMemRealloc(tls *libc.TLS, p uintptr, n int32) uintptr {
 48246  	return (*struct {
 48247  		f func(*libc.TLS, uintptr, int32) uintptr
 48248  	})(unsafe.Pointer(&struct{ uintptr }{wrapped.Fmem.FxRealloc})).f(tls, p, n)
 48249  }
 48250  
 48251  func wrMemSize(tls *libc.TLS, p uintptr) int32 {
 48252  	return (*struct {
 48253  		f func(*libc.TLS, uintptr) int32
 48254  	})(unsafe.Pointer(&struct{ uintptr }{wrapped.Fmem.FxSize})).f(tls, p)
 48255  }
 48256  
 48257  func wrMemRoundup(tls *libc.TLS, n int32) int32 {
 48258  	return (*struct{ f func(*libc.TLS, int32) int32 })(unsafe.Pointer(&struct{ uintptr }{wrapped.Fmem.FxRoundup})).f(tls, n)
 48259  }
 48260  
 48261  func wrMutexInit(tls *libc.TLS) int32 {
 48262  	var rc int32
 48263  	if wrapped.Fmutex_fail != 0 {
 48264  		rc = SQLITE_ERROR
 48265  	} else {
 48266  		rc = (*struct{ f func(*libc.TLS) int32 })(unsafe.Pointer(&struct{ uintptr }{wrapped.Fmutex.FxMutexInit})).f(tls)
 48267  	}
 48268  	if rc == SQLITE_OK {
 48269  		wrapped.Fmutex_init = 1
 48270  	}
 48271  	return rc
 48272  }
 48273  
 48274  func wrMutexEnd(tls *libc.TLS) int32 {
 48275  	(*struct{ f func(*libc.TLS) int32 })(unsafe.Pointer(&struct{ uintptr }{wrapped.Fmutex.FxMutexEnd})).f(tls)
 48276  	wrapped.Fmutex_init = 0
 48277  	return SQLITE_OK
 48278  }
 48279  
 48280  func wrMutexAlloc(tls *libc.TLS, e int32) uintptr {
 48281  	return (*struct {
 48282  		f func(*libc.TLS, int32) uintptr
 48283  	})(unsafe.Pointer(&struct{ uintptr }{wrapped.Fmutex.FxMutexAlloc})).f(tls, e)
 48284  }
 48285  
 48286  func wrMutexFree(tls *libc.TLS, p uintptr) {
 48287  	(*struct{ f func(*libc.TLS, uintptr) })(unsafe.Pointer(&struct{ uintptr }{wrapped.Fmutex.FxMutexFree})).f(tls, p)
 48288  }
 48289  
 48290  func wrMutexEnter(tls *libc.TLS, p uintptr) {
 48291  	(*struct{ f func(*libc.TLS, uintptr) })(unsafe.Pointer(&struct{ uintptr }{wrapped.Fmutex.FxMutexEnter})).f(tls, p)
 48292  }
 48293  
 48294  func wrMutexTry(tls *libc.TLS, p uintptr) int32 {
 48295  	return (*struct {
 48296  		f func(*libc.TLS, uintptr) int32
 48297  	})(unsafe.Pointer(&struct{ uintptr }{wrapped.Fmutex.FxMutexTry})).f(tls, p)
 48298  }
 48299  
 48300  func wrMutexLeave(tls *libc.TLS, p uintptr) {
 48301  	(*struct{ f func(*libc.TLS, uintptr) })(unsafe.Pointer(&struct{ uintptr }{wrapped.Fmutex.FxMutexLeave})).f(tls, p)
 48302  }
 48303  
 48304  func wrMutexHeld(tls *libc.TLS, p uintptr) int32 {
 48305  	return (*struct {
 48306  		f func(*libc.TLS, uintptr) int32
 48307  	})(unsafe.Pointer(&struct{ uintptr }{wrapped.Fmutex.FxMutexHeld})).f(tls, p)
 48308  }
 48309  
 48310  func wrMutexNotheld(tls *libc.TLS, p uintptr) int32 {
 48311  	return (*struct {
 48312  		f func(*libc.TLS, uintptr) int32
 48313  	})(unsafe.Pointer(&struct{ uintptr }{wrapped.Fmutex.FxMutexNotheld})).f(tls, p)
 48314  }
 48315  
 48316  func wrPCacheInit(tls *libc.TLS, pArg uintptr) int32 {
 48317  	var rc int32
 48318  	if wrapped.Fpcache_fail != 0 {
 48319  		rc = SQLITE_ERROR
 48320  	} else {
 48321  		rc = (*struct {
 48322  			f func(*libc.TLS, uintptr) int32
 48323  		})(unsafe.Pointer(&struct{ uintptr }{wrapped.Fpcache.FxInit})).f(tls, wrapped.Fpcache.FpArg)
 48324  	}
 48325  	if rc == SQLITE_OK {
 48326  		wrapped.Fpcache_init = 1
 48327  	}
 48328  	return rc
 48329  }
 48330  
 48331  func wrPCacheShutdown(tls *libc.TLS, pArg uintptr) {
 48332  	(*struct{ f func(*libc.TLS, uintptr) })(unsafe.Pointer(&struct{ uintptr }{wrapped.Fpcache.FxShutdown})).f(tls, wrapped.Fpcache.FpArg)
 48333  	wrapped.Fpcache_init = 0
 48334  }
 48335  
 48336  func wrPCacheCreate(tls *libc.TLS, a int32, b int32, c int32) uintptr {
 48337  	return (*struct {
 48338  		f func(*libc.TLS, int32, int32, int32) uintptr
 48339  	})(unsafe.Pointer(&struct{ uintptr }{wrapped.Fpcache.FxCreate})).f(tls, a, b, c)
 48340  }
 48341  
 48342  func wrPCacheCachesize(tls *libc.TLS, p uintptr, n int32) {
 48343  	(*struct {
 48344  		f func(*libc.TLS, uintptr, int32)
 48345  	})(unsafe.Pointer(&struct{ uintptr }{wrapped.Fpcache.FxCachesize})).f(tls, p, n)
 48346  }
 48347  
 48348  func wrPCachePagecount(tls *libc.TLS, p uintptr) int32 {
 48349  	return (*struct {
 48350  		f func(*libc.TLS, uintptr) int32
 48351  	})(unsafe.Pointer(&struct{ uintptr }{wrapped.Fpcache.FxPagecount})).f(tls, p)
 48352  }
 48353  
 48354  func wrPCacheFetch(tls *libc.TLS, p uintptr, a uint32, b int32) uintptr {
 48355  	return (*struct {
 48356  		f func(*libc.TLS, uintptr, uint32, int32) uintptr
 48357  	})(unsafe.Pointer(&struct{ uintptr }{wrapped.Fpcache.FxFetch})).f(tls, p, a, b)
 48358  }
 48359  
 48360  func wrPCacheUnpin(tls *libc.TLS, p uintptr, a uintptr, b int32) {
 48361  	(*struct {
 48362  		f func(*libc.TLS, uintptr, uintptr, int32)
 48363  	})(unsafe.Pointer(&struct{ uintptr }{wrapped.Fpcache.FxUnpin})).f(tls, p, a, b)
 48364  }
 48365  
 48366  func wrPCacheRekey(tls *libc.TLS, p uintptr, a uintptr, b uint32, c uint32) {
 48367  	(*struct {
 48368  		f func(*libc.TLS, uintptr, uintptr, uint32, uint32)
 48369  	})(unsafe.Pointer(&struct{ uintptr }{wrapped.Fpcache.FxRekey})).f(tls, p, a, b, c)
 48370  }
 48371  
 48372  func wrPCacheTruncate(tls *libc.TLS, p uintptr, a uint32) {
 48373  	(*struct {
 48374  		f func(*libc.TLS, uintptr, uint32)
 48375  	})(unsafe.Pointer(&struct{ uintptr }{wrapped.Fpcache.FxTruncate})).f(tls, p, a)
 48376  }
 48377  
 48378  func wrPCacheDestroy(tls *libc.TLS, p uintptr) {
 48379  	(*struct{ f func(*libc.TLS, uintptr) })(unsafe.Pointer(&struct{ uintptr }{wrapped.Fpcache.FxDestroy})).f(tls, p)
 48380  }
 48381  
 48382  func installInitWrappers(tls *libc.TLS) {
 48383  	bp := tls.Alloc(288)
 48384  	defer tls.Free(288)
 48385  
 48386  	*(*sqlite3_mutex_methods)(unsafe.Pointer(bp + 48)) = sqlite3_mutex_methods{
 48387  		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 {
 48388  			f func(*libc.TLS, int32) uintptr
 48389  		}{wrMutexAlloc})),
 48390  		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 {
 48391  			f func(*libc.TLS, uintptr) int32
 48392  		}{wrMutexTry})),
 48393  		FxMutexLeave: *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{wrMutexLeave})), FxMutexHeld: *(*uintptr)(unsafe.Pointer(&struct {
 48394  			f func(*libc.TLS, uintptr) int32
 48395  		}{wrMutexHeld})), FxMutexNotheld: *(*uintptr)(unsafe.Pointer(&struct {
 48396  			f func(*libc.TLS, uintptr) int32
 48397  		}{wrMutexNotheld})),
 48398  	}
 48399  	*(*sqlite3_pcache_methods2)(unsafe.Pointer(bp + 184)) = sqlite3_pcache_methods2{
 48400  		FiVersion: 1,
 48401  		FxInit: *(*uintptr)(unsafe.Pointer(&struct {
 48402  			f func(*libc.TLS, uintptr) int32
 48403  		}{wrPCacheInit})), FxShutdown: *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{wrPCacheShutdown})), FxCreate: *(*uintptr)(unsafe.Pointer(&struct {
 48404  			f func(*libc.TLS, int32, int32, int32) uintptr
 48405  		}{wrPCacheCreate})),
 48406  		FxCachesize: *(*uintptr)(unsafe.Pointer(&struct {
 48407  			f func(*libc.TLS, uintptr, int32)
 48408  		}{wrPCacheCachesize})), FxPagecount: *(*uintptr)(unsafe.Pointer(&struct {
 48409  			f func(*libc.TLS, uintptr) int32
 48410  		}{wrPCachePagecount})), FxFetch: *(*uintptr)(unsafe.Pointer(&struct {
 48411  			f func(*libc.TLS, uintptr, uint32, int32) uintptr
 48412  		}{wrPCacheFetch})),
 48413  		FxUnpin: *(*uintptr)(unsafe.Pointer(&struct {
 48414  			f func(*libc.TLS, uintptr, uintptr, int32)
 48415  		}{wrPCacheUnpin})), FxRekey: *(*uintptr)(unsafe.Pointer(&struct {
 48416  			f func(*libc.TLS, uintptr, uintptr, uint32, uint32)
 48417  		}{wrPCacheRekey})), FxTruncate: *(*uintptr)(unsafe.Pointer(&struct {
 48418  			f func(*libc.TLS, uintptr, uint32)
 48419  		}{wrPCacheTruncate})),
 48420  		FxDestroy: *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{wrPCacheDestroy})),
 48421  	}
 48422  	*(*sqlite3_mem_methods)(unsafe.Pointer(bp + 120)) = sqlite3_mem_methods{
 48423  		FxMalloc: *(*uintptr)(unsafe.Pointer(&struct {
 48424  			f func(*libc.TLS, int32) uintptr
 48425  		}{wrMemMalloc})), FxFree: *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{wrMemFree})), FxRealloc: *(*uintptr)(unsafe.Pointer(&struct {
 48426  			f func(*libc.TLS, uintptr, int32) uintptr
 48427  		}{wrMemRealloc})),
 48428  		FxSize: *(*uintptr)(unsafe.Pointer(&struct {
 48429  			f func(*libc.TLS, uintptr) int32
 48430  		}{wrMemSize})), FxRoundup: *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, int32) int32 }{wrMemRoundup})), FxInit: *(*uintptr)(unsafe.Pointer(&struct {
 48431  			f func(*libc.TLS, uintptr) int32
 48432  		}{wrMemInit})),
 48433  		FxShutdown: *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{wrMemShutdown})),
 48434  	}
 48435  
 48436  	libc.Xmemset(tls, uintptr(unsafe.Pointer(&wrapped)), 0, uint64(unsafe.Sizeof(wrapped)))
 48437  
 48438  	sqlite3.Xsqlite3_shutdown(tls)
 48439  	sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_GETMUTEX, libc.VaList(bp, uintptr(unsafe.Pointer(&wrapped))+168))
 48440  	sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_GETMALLOC, libc.VaList(bp+8, uintptr(unsafe.Pointer(&wrapped))+104))
 48441  	sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_GETPCACHE2, libc.VaList(bp+16, uintptr(unsafe.Pointer(&wrapped))))
 48442  	sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_MUTEX, libc.VaList(bp+24, bp+48))
 48443  	sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_MALLOC, libc.VaList(bp+32, bp+120))
 48444  	sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_PCACHE2, libc.VaList(bp+40, bp+184))
 48445  }
 48446  
 48447  func init_wrapper_install(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 48448  	bp := tls.Alloc(24)
 48449  	defer tls.Free(24)
 48450  
 48451  	var i int32
 48452  	installInitWrappers(tls)
 48453  	for i = 1; i < objc; i++ {
 48454  		var z uintptr = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(i)*8)))
 48455  		if libc.Xstrcmp(tls, z, ts+32544) == 0 {
 48456  			wrapped.Fmem_fail = 1
 48457  		} else if libc.Xstrcmp(tls, z, ts+29150) == 0 {
 48458  			wrapped.Fmutex_fail = 1
 48459  		} else if libc.Xstrcmp(tls, z, ts+32548) == 0 {
 48460  			wrapped.Fpcache_fail = 1
 48461  		} else {
 48462  			tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+32555, z, ts+11945))
 48463  			return TCL_ERROR
 48464  		}
 48465  	}
 48466  	return TCL_OK
 48467  }
 48468  
 48469  func init_wrapper_uninstall(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 48470  	bp := tls.Alloc(24)
 48471  	defer tls.Free(24)
 48472  
 48473  	if objc != 1 {
 48474  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+584)
 48475  		return TCL_ERROR
 48476  	}
 48477  
 48478  	sqlite3.Xsqlite3_shutdown(tls)
 48479  	sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_MUTEX, libc.VaList(bp, uintptr(unsafe.Pointer(&wrapped))+168))
 48480  	sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_MALLOC, libc.VaList(bp+8, uintptr(unsafe.Pointer(&wrapped))+104))
 48481  	sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_PCACHE2, libc.VaList(bp+16, uintptr(unsafe.Pointer(&wrapped))))
 48482  	return TCL_OK
 48483  }
 48484  
 48485  func init_wrapper_clear(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 48486  	if objc != 1 {
 48487  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+584)
 48488  		return TCL_ERROR
 48489  	}
 48490  
 48491  	wrapped.Fmem_fail = 0
 48492  	wrapped.Fmutex_fail = 0
 48493  	wrapped.Fpcache_fail = 0
 48494  	return TCL_OK
 48495  }
 48496  
 48497  func init_wrapper_query(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 48498  	var pRet uintptr
 48499  
 48500  	if objc != 1 {
 48501  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+584)
 48502  		return TCL_ERROR
 48503  	}
 48504  
 48505  	pRet = tcl.XTcl_NewObj(tls)
 48506  	if wrapped.Fmutex_init != 0 {
 48507  		tcl.XTcl_ListObjAppendElement(tls, interp, pRet, tcl.XTcl_NewStringObj(tls, ts+29150, -1))
 48508  	}
 48509  	if wrapped.Fmem_init != 0 {
 48510  		tcl.XTcl_ListObjAppendElement(tls, interp, pRet, tcl.XTcl_NewStringObj(tls, ts+32544, -1))
 48511  	}
 48512  	if wrapped.Fpcache_init != 0 {
 48513  		tcl.XTcl_ListObjAppendElement(tls, interp, pRet, tcl.XTcl_NewStringObj(tls, ts+32548, -1))
 48514  	}
 48515  
 48516  	tcl.XTcl_SetObjResult(tls, interp, pRet)
 48517  	return TCL_OK
 48518  }
 48519  
 48520  func Sqlitetest_init_Init(tls *libc.TLS, interp uintptr) int32 {
 48521  	var i int32
 48522  
 48523  	for i = 0; uint64(i) < uint64(unsafe.Sizeof(aObjCmd9))/uint64(unsafe.Sizeof(struct {
 48524  		FzName uintptr
 48525  		FxProc uintptr
 48526  	}{})); i++ {
 48527  		tcl.XTcl_CreateObjCommand(tls, interp, aObjCmd9[i].FzName, aObjCmd9[i].FxProc, uintptr(0), uintptr(0))
 48528  	}
 48529  
 48530  	return TCL_OK
 48531  }
 48532  
 48533  var aObjCmd9 = [4]struct {
 48534  	FzName uintptr
 48535  	FxProc uintptr
 48536  }{
 48537  	{FzName: ts + 32575, FxProc: 0},
 48538  	{FzName: ts + 32596, FxProc: 0},
 48539  	{FzName: ts + 32615, FxProc: 0},
 48540  	{FzName: ts + 32638, FxProc: 0},
 48541  }
 48542  
 48543  type sqlite3_intarray1 = struct {
 48544  	Fn           int32
 48545  	F__ccgo_pad1 [4]byte
 48546  	Fa           uintptr
 48547  	FxFree       uintptr
 48548  }
 48549  
 48550  type sqlite3_intarray = sqlite3_intarray1
 48551  
 48552  type intarray_vtab1 = struct {
 48553  	Fbase     sqlite3_vtab
 48554  	FpContent uintptr
 48555  }
 48556  
 48557  type intarray_vtab = intarray_vtab1
 48558  type intarray_cursor1 = struct {
 48559  	Fbase        sqlite3_vtab_cursor
 48560  	Fi           int32
 48561  	F__ccgo_pad1 [4]byte
 48562  }
 48563  
 48564  type intarray_cursor = intarray_cursor1
 48565  
 48566  func intarrayFree(tls *libc.TLS, p uintptr) {
 48567  	if (*sqlite3_intarray)(unsafe.Pointer(p)).FxFree != 0 {
 48568  		(*struct{ f func(*libc.TLS, uintptr) })(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_intarray)(unsafe.Pointer(p)).FxFree})).f(tls, (*sqlite3_intarray)(unsafe.Pointer(p)).Fa)
 48569  	}
 48570  	sqlite3.Xsqlite3_free(tls, p)
 48571  }
 48572  
 48573  func intarrayDestroy(tls *libc.TLS, p uintptr) int32 {
 48574  	var pVtab uintptr = p
 48575  	sqlite3.Xsqlite3_free(tls, pVtab)
 48576  	return 0
 48577  }
 48578  
 48579  func intarrayCreate(tls *libc.TLS, db uintptr, pAux uintptr, argc int32, argv uintptr, ppVtab uintptr, pzErr uintptr) int32 {
 48580  	var rc int32 = SQLITE_NOMEM
 48581  	var pVtab uintptr = sqlite3.Xsqlite3_malloc64(tls, uint64(unsafe.Sizeof(intarray_vtab{})))
 48582  
 48583  	if pVtab != 0 {
 48584  		libc.Xmemset(tls, pVtab, 0, uint64(unsafe.Sizeof(intarray_vtab{})))
 48585  		(*intarray_vtab)(unsafe.Pointer(pVtab)).FpContent = pAux
 48586  		rc = sqlite3.Xsqlite3_declare_vtab(tls, db, ts+32657)
 48587  	}
 48588  	*(*uintptr)(unsafe.Pointer(ppVtab)) = pVtab
 48589  	return rc
 48590  }
 48591  
 48592  func intarrayOpen(tls *libc.TLS, pVTab uintptr, ppCursor uintptr) int32 {
 48593  	var rc int32 = SQLITE_NOMEM
 48594  	var pCur uintptr
 48595  	pCur = sqlite3.Xsqlite3_malloc64(tls, uint64(unsafe.Sizeof(intarray_cursor{})))
 48596  	if pCur != 0 {
 48597  		libc.Xmemset(tls, pCur, 0, uint64(unsafe.Sizeof(intarray_cursor{})))
 48598  		*(*uintptr)(unsafe.Pointer(ppCursor)) = pCur
 48599  		rc = SQLITE_OK
 48600  	}
 48601  	return rc
 48602  }
 48603  
 48604  func intarrayClose(tls *libc.TLS, cur uintptr) int32 {
 48605  	var pCur uintptr = cur
 48606  	sqlite3.Xsqlite3_free(tls, pCur)
 48607  	return SQLITE_OK
 48608  }
 48609  
 48610  func intarrayColumn(tls *libc.TLS, cur uintptr, ctx uintptr, i int32) int32 {
 48611  	var pCur uintptr = cur
 48612  	var pVtab uintptr = (*sqlite3_vtab_cursor)(unsafe.Pointer(cur)).FpVtab
 48613  	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 {
 48614  		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)))
 48615  	}
 48616  	return SQLITE_OK
 48617  }
 48618  
 48619  func intarrayRowid(tls *libc.TLS, cur uintptr, pRowid uintptr) int32 {
 48620  	var pCur uintptr = cur
 48621  	*(*sqlite_int64)(unsafe.Pointer(pRowid)) = sqlite_int64((*intarray_cursor)(unsafe.Pointer(pCur)).Fi)
 48622  	return SQLITE_OK
 48623  }
 48624  
 48625  func intarrayEof(tls *libc.TLS, cur uintptr) int32 {
 48626  	var pCur uintptr = cur
 48627  	var pVtab uintptr = (*sqlite3_vtab_cursor)(unsafe.Pointer(cur)).FpVtab
 48628  	return libc.Bool32((*intarray_cursor)(unsafe.Pointer(pCur)).Fi >= (*sqlite3_intarray)(unsafe.Pointer((*intarray_vtab)(unsafe.Pointer(pVtab)).FpContent)).Fn)
 48629  }
 48630  
 48631  func intarrayNext(tls *libc.TLS, cur uintptr) int32 {
 48632  	var pCur uintptr = cur
 48633  	(*intarray_cursor)(unsafe.Pointer(pCur)).Fi++
 48634  	return SQLITE_OK
 48635  }
 48636  
 48637  func intarrayFilter(tls *libc.TLS, pVtabCursor uintptr, idxNum int32, idxStr uintptr, argc int32, argv uintptr) int32 {
 48638  	var pCur uintptr = pVtabCursor
 48639  	(*intarray_cursor)(unsafe.Pointer(pCur)).Fi = 0
 48640  	return SQLITE_OK
 48641  }
 48642  
 48643  func intarrayBestIndex(tls *libc.TLS, tab uintptr, pIdxInfo uintptr) int32 {
 48644  	return SQLITE_OK
 48645  }
 48646  
 48647  var intarrayModule = sqlite3_module{
 48648  	FxCreate:     0,
 48649  	FxConnect:    0,
 48650  	FxBestIndex:  0,
 48651  	FxDisconnect: 0,
 48652  	FxDestroy:    0,
 48653  	FxOpen:       0,
 48654  	FxClose:      0,
 48655  	FxFilter:     0,
 48656  	FxNext:       0,
 48657  	FxEof:        0,
 48658  	FxColumn:     0,
 48659  	FxRowid:      0,
 48660  }
 48661  
 48662  func sqlite3_intarray_create(tls *libc.TLS, db uintptr, zName uintptr, ppReturn uintptr) int32 {
 48663  	bp := tls.Alloc(16)
 48664  	defer tls.Free(16)
 48665  
 48666  	var rc int32 = SQLITE_OK
 48667  	var p uintptr
 48668  
 48669  	*(*uintptr)(unsafe.Pointer(ppReturn)) = libc.AssignUintptr(&p, sqlite3.Xsqlite3_malloc64(tls, uint64(unsafe.Sizeof(sqlite3_intarray{}))))
 48670  	if p == uintptr(0) {
 48671  		return SQLITE_NOMEM
 48672  	}
 48673  	libc.Xmemset(tls, p, 0, uint64(unsafe.Sizeof(sqlite3_intarray{})))
 48674  	rc = sqlite3.Xsqlite3_create_module_v2(tls, db, zName, uintptr(unsafe.Pointer(&intarrayModule)), p,
 48675  		*(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{intarrayFree})))
 48676  	if rc == SQLITE_OK {
 48677  		var zSql uintptr
 48678  		zSql = sqlite3.Xsqlite3_mprintf(tls, ts+32699,
 48679  			libc.VaList(bp, zName, zName))
 48680  		rc = sqlite3.Xsqlite3_exec(tls, db, zSql, uintptr(0), uintptr(0), uintptr(0))
 48681  		sqlite3.Xsqlite3_free(tls, zSql)
 48682  	}
 48683  	return rc
 48684  }
 48685  
 48686  func sqlite3_intarray_bind(tls *libc.TLS, pIntArray uintptr, nElements int32, aElements uintptr, xFree uintptr) int32 {
 48687  	if (*sqlite3_intarray)(unsafe.Pointer(pIntArray)).FxFree != 0 {
 48688  		(*struct{ f func(*libc.TLS, uintptr) })(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_intarray)(unsafe.Pointer(pIntArray)).FxFree})).f(tls, (*sqlite3_intarray)(unsafe.Pointer(pIntArray)).Fa)
 48689  	}
 48690  	(*sqlite3_intarray)(unsafe.Pointer(pIntArray)).Fn = nElements
 48691  	(*sqlite3_intarray)(unsafe.Pointer(pIntArray)).Fa = aElements
 48692  	(*sqlite3_intarray)(unsafe.Pointer(pIntArray)).FxFree = xFree
 48693  	return SQLITE_OK
 48694  }
 48695  
 48696  func test_intarray_create(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 48697  	bp := tls.Alloc(148)
 48698  	defer tls.Free(148)
 48699  
 48700  	var zName uintptr
 48701  
 48702  	var rc int32 = SQLITE_OK
 48703  
 48704  	if objc != 3 {
 48705  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2050)
 48706  		return TCL_ERROR
 48707  	}
 48708  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0 {
 48709  		return TCL_ERROR
 48710  	}
 48711  	zName = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 48712  	rc = sqlite3_intarray_create(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), zName, bp+40)
 48713  	if rc != SQLITE_OK {
 48714  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0)))
 48715  		return TCL_ERROR
 48716  	}
 48717  	sqlite3TestMakePointerStr(tls, interp, bp+48, *(*uintptr)(unsafe.Pointer(bp + 40)))
 48718  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+16, bp+48, uintptr(0)))
 48719  	return TCL_OK
 48720  }
 48721  
 48722  func test_intarray_bind(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 48723  	bp := tls.Alloc(40)
 48724  	defer tls.Free(40)
 48725  
 48726  	var pArray uintptr
 48727  	var rc int32 = SQLITE_OK
 48728  	var i int32
 48729  	var n int32
 48730  	var a uintptr
 48731  
 48732  	if objc < 2 {
 48733  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+32737)
 48734  		return TCL_ERROR
 48735  	}
 48736  	pArray = sqlite3TestTextToPtr(tls, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))))
 48737  	n = objc - 2
 48738  	a = sqlite3.Xsqlite3_malloc64(tls, uint64(unsafe.Sizeof(sqlite3_int64(0)))*uint64(n))
 48739  	if a == uintptr(0) {
 48740  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+32746, uintptr(0)))
 48741  		return TCL_ERROR
 48742  	}
 48743  	for i = 0; i < n; i++ {
 48744  		*(*Tcl_WideInt)(unsafe.Pointer(bp + 32)) = int64(0)
 48745  		tcl.XTcl_GetWideIntFromObj(tls, uintptr(0), *(*uintptr)(unsafe.Pointer(objv + uintptr(i+2)*8)), bp+32)
 48746  		*(*sqlite3_int64)(unsafe.Pointer(a + uintptr(i)*8)) = *(*Tcl_WideInt)(unsafe.Pointer(bp + 32))
 48747  	}
 48748  	rc = sqlite3_intarray_bind(tls, pArray, n, a, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{sqlite3.Xsqlite3_free})))
 48749  	if rc != SQLITE_OK {
 48750  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+16, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0)))
 48751  		return TCL_ERROR
 48752  	}
 48753  	return TCL_OK
 48754  }
 48755  
 48756  func Sqlitetestintarray_Init(tls *libc.TLS, interp uintptr) int32 {
 48757  	var i int32
 48758  	for i = 0; uint64(i) < uint64(unsafe.Sizeof(aObjCmd10))/uint64(unsafe.Sizeof(struct {
 48759  		FzName      uintptr
 48760  		FxProc      uintptr
 48761  		FclientData uintptr
 48762  	}{})); i++ {
 48763  		tcl.XTcl_CreateObjCommand(tls, interp, aObjCmd10[i].FzName,
 48764  			aObjCmd10[i].FxProc, aObjCmd10[i].FclientData, uintptr(0))
 48765  	}
 48766  	return TCL_OK
 48767  }
 48768  
 48769  var aObjCmd10 = [2]struct {
 48770  	FzName      uintptr
 48771  	FxProc      uintptr
 48772  	FclientData uintptr
 48773  }{
 48774  	{FzName: ts + 32759, FxProc: 0},
 48775  	{FzName: ts + 32783, FxProc: 0},
 48776  }
 48777  
 48778  type jt_file1 = struct {
 48779  	Fbase        sqlite3_file
 48780  	FzName       uintptr
 48781  	Fflags       int32
 48782  	FeLock       int32
 48783  	FnPage       u32
 48784  	FnPagesize   u32
 48785  	FpWritable   uintptr
 48786  	FaCksum      uintptr
 48787  	FnSync       int32
 48788  	F__ccgo_pad1 [4]byte
 48789  	FiMaxOff     sqlite3_int64
 48790  	FpNext       uintptr
 48791  	FpReal       uintptr
 48792  }
 48793  
 48794  type jt_file = jt_file1
 48795  
 48796  var jt_vfs = sqlite3_vfs{
 48797  	FiVersion:          2,
 48798  	FszOsFile:          int32(unsafe.Sizeof(jt_file{})),
 48799  	FmxPathname:        JT_MAX_PATHNAME,
 48800  	FzName:             ts + 32805,
 48801  	FxOpen:             0,
 48802  	FxDelete:           0,
 48803  	FxAccess:           0,
 48804  	FxFullPathname:     0,
 48805  	FxDlOpen:           0,
 48806  	FxDlError:          0,
 48807  	FxDlSym:            0,
 48808  	FxDlClose:          0,
 48809  	FxRandomness:       0,
 48810  	FxSleep:            0,
 48811  	FxCurrentTime:      0,
 48812  	FxGetLastError:     0,
 48813  	FxCurrentTimeInt64: 0,
 48814  }
 48815  
 48816  var jt_io_methods = sqlite3_io_methods{
 48817  	FiVersion:               1,
 48818  	FxClose:                 0,
 48819  	FxRead:                  0,
 48820  	FxWrite:                 0,
 48821  	FxTruncate:              0,
 48822  	FxSync:                  0,
 48823  	FxFileSize:              0,
 48824  	FxLock:                  0,
 48825  	FxUnlock:                0,
 48826  	FxCheckReservedLock:     0,
 48827  	FxFileControl:           0,
 48828  	FxSectorSize:            0,
 48829  	FxDeviceCharacteristics: 0,
 48830  }
 48831  
 48832  type JtGlobal = struct {
 48833  	FpVfs  uintptr
 48834  	FpList uintptr
 48835  }
 48836  
 48837  var g2 = JtGlobal{}
 48838  
 48839  func enterJtMutex(tls *libc.TLS) {
 48840  	sqlite3.Xsqlite3_mutex_enter(tls, sqlite3.Xsqlite3_mutex_alloc(tls, SQLITE_MUTEX_STATIC_PRNG))
 48841  }
 48842  
 48843  func leaveJtMutex(tls *libc.TLS) {
 48844  	sqlite3.Xsqlite3_mutex_leave(tls, sqlite3.Xsqlite3_mutex_alloc(tls, SQLITE_MUTEX_STATIC_PRNG))
 48845  }
 48846  
 48847  func stop_ioerr_simulation(tls *libc.TLS, piSave uintptr, piSave2 uintptr) {
 48848  	*(*int32)(unsafe.Pointer(piSave)) = libc.AtomicLoadInt32(&sqlite3.Xsqlite3_io_error_pending)
 48849  	*(*int32)(unsafe.Pointer(piSave2)) = sqlite3.Xsqlite3_io_error_hit
 48850  	libc.AtomicStoreInt32(&sqlite3.Xsqlite3_io_error_pending, int32(-1))
 48851  	sqlite3.Xsqlite3_io_error_hit = 0
 48852  }
 48853  
 48854  func start_ioerr_simulation(tls *libc.TLS, iSave int32, iSave2 int32) {
 48855  	libc.AtomicStoreInt32(&sqlite3.Xsqlite3_io_error_pending, iSave)
 48856  	sqlite3.Xsqlite3_io_error_hit = iSave2
 48857  }
 48858  
 48859  func closeTransaction(tls *libc.TLS, p uintptr) {
 48860  	sqlite3.Xsqlite3BitvecDestroy(tls, (*jt_file)(unsafe.Pointer(p)).FpWritable)
 48861  	sqlite3.Xsqlite3_free(tls, (*jt_file)(unsafe.Pointer(p)).FaCksum)
 48862  	(*jt_file)(unsafe.Pointer(p)).FpWritable = uintptr(0)
 48863  	(*jt_file)(unsafe.Pointer(p)).FaCksum = uintptr(0)
 48864  	(*jt_file)(unsafe.Pointer(p)).FnSync = 0
 48865  }
 48866  
 48867  func jtClose(tls *libc.TLS, pFile uintptr) int32 {
 48868  	var pp uintptr
 48869  	var p uintptr = pFile
 48870  
 48871  	closeTransaction(tls, p)
 48872  	enterJtMutex(tls)
 48873  	if (*jt_file)(unsafe.Pointer(p)).FzName != 0 {
 48874  		for pp = uintptr(unsafe.Pointer(&g2)) + 8; *(*uintptr)(unsafe.Pointer(pp)) != p; pp = *(*uintptr)(unsafe.Pointer(pp)) + 64 {
 48875  		}
 48876  		*(*uintptr)(unsafe.Pointer(pp)) = (*jt_file)(unsafe.Pointer(p)).FpNext
 48877  	}
 48878  	leaveJtMutex(tls)
 48879  	sqlite3.Xsqlite3OsClose(tls, (*jt_file)(unsafe.Pointer(p)).FpReal)
 48880  	return SQLITE_OK
 48881  }
 48882  
 48883  func jtRead(tls *libc.TLS, pFile uintptr, zBuf uintptr, iAmt int32, iOfst sqlite_int64) int32 {
 48884  	var p uintptr = pFile
 48885  	return sqlite3.Xsqlite3OsRead(tls, (*jt_file)(unsafe.Pointer(p)).FpReal, zBuf, iAmt, iOfst)
 48886  }
 48887  
 48888  func locateDatabaseHandle(tls *libc.TLS, zJournal uintptr, noLock int32) uintptr {
 48889  	var pMain uintptr = uintptr(0)
 48890  	enterJtMutex(tls)
 48891  	for pMain = g2.FpList; pMain != 0; pMain = (*jt_file)(unsafe.Pointer(pMain)).FpNext {
 48892  		var nName int32 = int32(libc.Xstrlen(tls, zJournal) - libc.Xstrlen(tls, ts+32808))
 48893  		if (*jt_file)(unsafe.Pointer(pMain)).Fflags&SQLITE_OPEN_MAIN_DB != 0 &&
 48894  			int32(libc.Xstrlen(tls, (*jt_file)(unsafe.Pointer(pMain)).FzName)) == nName &&
 48895  			0 == libc.Xmemcmp(tls, (*jt_file)(unsafe.Pointer(pMain)).FzName, zJournal, uint64(nName)) &&
 48896  			((*jt_file)(unsafe.Pointer(pMain)).FeLock >= SQLITE_LOCK_RESERVED || noLock != 0) {
 48897  			break
 48898  		}
 48899  	}
 48900  	leaveJtMutex(tls)
 48901  	return pMain
 48902  }
 48903  
 48904  func decodeUint32(tls *libc.TLS, z uintptr) u32 {
 48905  	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))))
 48906  }
 48907  
 48908  func genCksum(tls *libc.TLS, z uintptr, n int32) u32 {
 48909  	var i int32
 48910  	var cksum u32 = u32(0)
 48911  	for i = 0; i < n; i++ {
 48912  		cksum = cksum + u32(*(*uint8)(unsafe.Pointer(z + uintptr(i)))) + cksum<<3
 48913  	}
 48914  	return cksum
 48915  }
 48916  
 48917  func decodeJournalHdr(tls *libc.TLS, zBuf uintptr, pnRec uintptr, pnPage uintptr, pnSector uintptr, pnPagesize uintptr) int32 {
 48918  	bp := tls.Alloc(8)
 48919  	defer tls.Free(8)
 48920  
 48921  	*(*[8]uint8)(unsafe.Pointer(bp)) = [8]uint8{uint8(0xd9), uint8(0xd5), uint8(0x05), uint8(0xf9), uint8(0x20), uint8(0xa1), uint8(0x63), uint8(0xd7)}
 48922  	if libc.Xmemcmp(tls, bp, zBuf, uint64(8)) != 0 {
 48923  		return SQLITE_ERROR
 48924  	}
 48925  	if pnRec != 0 {
 48926  		*(*u32)(unsafe.Pointer(pnRec)) = decodeUint32(tls, zBuf+8)
 48927  	}
 48928  	if pnPage != 0 {
 48929  		*(*u32)(unsafe.Pointer(pnPage)) = decodeUint32(tls, zBuf+16)
 48930  	}
 48931  	if pnSector != 0 {
 48932  		*(*u32)(unsafe.Pointer(pnSector)) = decodeUint32(tls, zBuf+20)
 48933  	}
 48934  	if pnPagesize != 0 {
 48935  		*(*u32)(unsafe.Pointer(pnPagesize)) = decodeUint32(tls, zBuf+24)
 48936  	}
 48937  	return SQLITE_OK
 48938  }
 48939  
 48940  func openTransaction(tls *libc.TLS, pMain uintptr, pJournal uintptr) int32 {
 48941  	bp := tls.Alloc(8)
 48942  	defer tls.Free(8)
 48943  
 48944  	var aData uintptr
 48945  	var p uintptr = (*jt_file)(unsafe.Pointer(pMain)).FpReal
 48946  	var rc int32 = SQLITE_OK
 48947  
 48948  	closeTransaction(tls, pMain)
 48949  	aData = sqlite3.Xsqlite3_malloc(tls, int32((*jt_file)(unsafe.Pointer(pMain)).FnPagesize))
 48950  	(*jt_file)(unsafe.Pointer(pMain)).FpWritable = sqlite3.Xsqlite3BitvecCreate(tls, (*jt_file)(unsafe.Pointer(pMain)).FnPage)
 48951  	(*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))))
 48952  	(*jt_file)(unsafe.Pointer(pJournal)).FiMaxOff = int64(0)
 48953  
 48954  	if !(int32((*jt_file)(unsafe.Pointer(pMain)).FpWritable) != 0) || !(int32((*jt_file)(unsafe.Pointer(pMain)).FaCksum) != 0) || !(aData != 0) {
 48955  		rc = SQLITE_IOERR | int32(12)<<8
 48956  	} else if (*jt_file)(unsafe.Pointer(pMain)).FnPage > u32(0) {
 48957  		var iTrunk u32
 48958  
 48959  		stop_ioerr_simulation(tls, bp, bp+4)
 48960  
 48961  		rc = sqlite3.Xsqlite3OsRead(tls, p, aData, int32((*jt_file)(unsafe.Pointer(pMain)).FnPagesize), int64(0))
 48962  		if rc == SQLITE_OK {
 48963  			var nDbsize u32 = decodeUint32(tls, aData+28)
 48964  			if nDbsize > u32(0) && libc.Xmemcmp(tls, aData+24, aData+92, uint64(4)) == 0 {
 48965  				var iPg u32
 48966  				for iPg = nDbsize + u32(1); iPg <= (*jt_file)(unsafe.Pointer(pMain)).FnPage; iPg++ {
 48967  					sqlite3.Xsqlite3BitvecSet(tls, (*jt_file)(unsafe.Pointer(pMain)).FpWritable, iPg)
 48968  				}
 48969  			}
 48970  		}
 48971  		iTrunk = decodeUint32(tls, aData+32)
 48972  		for rc == SQLITE_OK && iTrunk > u32(0) {
 48973  			var nLeaf u32
 48974  			var iLeaf u32
 48975  			var iOff sqlite3_int64 = i64(iTrunk-u32(1)) * i64((*jt_file)(unsafe.Pointer(pMain)).FnPagesize)
 48976  			rc = sqlite3.Xsqlite3OsRead(tls, p, aData, int32((*jt_file)(unsafe.Pointer(pMain)).FnPagesize), iOff)
 48977  			nLeaf = decodeUint32(tls, aData+4)
 48978  			for iLeaf = u32(0); rc == SQLITE_OK && iLeaf < nLeaf; iLeaf++ {
 48979  				var pgno u32 = decodeUint32(tls, aData+uintptr(u32(8)+u32(4)*iLeaf))
 48980  				sqlite3.Xsqlite3BitvecSet(tls, (*jt_file)(unsafe.Pointer(pMain)).FpWritable, pgno)
 48981  			}
 48982  			iTrunk = decodeUint32(tls, aData)
 48983  		}
 48984  
 48985  		if rc == SQLITE_OK {
 48986  			var ii int32
 48987  			for ii = 0; rc == SQLITE_OK && ii < int32((*jt_file)(unsafe.Pointer(pMain)).FnPage); ii++ {
 48988  				var iOff i64 = i64((*jt_file)(unsafe.Pointer(pMain)).FnPagesize) * i64(ii)
 48989  				if iOff == i64(sqlite3.Xsqlite3PendingByte) {
 48990  					continue
 48991  				}
 48992  				rc = sqlite3.Xsqlite3OsRead(tls, (*jt_file)(unsafe.Pointer(pMain)).FpReal, aData, int32((*jt_file)(unsafe.Pointer(pMain)).FnPagesize), iOff)
 48993  				*(*u32)(unsafe.Pointer((*jt_file)(unsafe.Pointer(pMain)).FaCksum + uintptr(ii)*4)) = genCksum(tls, aData, int32((*jt_file)(unsafe.Pointer(pMain)).FnPagesize))
 48994  				if ii+1 == int32((*jt_file)(unsafe.Pointer(pMain)).FnPage) && rc == SQLITE_IOERR|int32(2)<<8 {
 48995  					rc = SQLITE_OK
 48996  				}
 48997  			}
 48998  		}
 48999  
 49000  		start_ioerr_simulation(tls, *(*int32)(unsafe.Pointer(bp)), *(*int32)(unsafe.Pointer(bp + 4)))
 49001  	}
 49002  
 49003  	sqlite3.Xsqlite3_free(tls, aData)
 49004  	return rc
 49005  }
 49006  
 49007  func readJournalFile(tls *libc.TLS, p uintptr, pMain uintptr) int32 {
 49008  	bp := tls.Alloc(52)
 49009  	defer tls.Free(52)
 49010  
 49011  	var rc int32
 49012  
 49013  	var pReal uintptr
 49014  	var iOff sqlite3_int64
 49015  	var iSize sqlite3_int64
 49016  	var aPage uintptr
 49017  
 49018  	var cksum u32
 49019  	_ = cksum
 49020  	var pgno u32
 49021  
 49022  	var ii u32
 49023  	rc = SQLITE_OK
 49024  	pReal = (*jt_file)(unsafe.Pointer(p)).FpReal
 49025  	iOff = int64(0)
 49026  	iSize = (*jt_file)(unsafe.Pointer(p)).FiMaxOff
 49027  
 49028  	aPage = sqlite3.Xsqlite3_malloc(tls, int32((*jt_file)(unsafe.Pointer(pMain)).FnPagesize))
 49029  	if !!(aPage != 0) {
 49030  		goto __1
 49031  	}
 49032  	return SQLITE_IOERR | int32(12)<<8
 49033  __1:
 49034  	;
 49035  	stop_ioerr_simulation(tls, bp, bp+4)
 49036  
 49037  __2:
 49038  	if !(rc == SQLITE_OK && iOff < iSize) {
 49039  		goto __3
 49040  	}
 49041  
 49042  	rc = sqlite3.Xsqlite3OsRead(tls, pReal, bp+8, 28, iOff)
 49043  	if !(rc != SQLITE_OK ||
 49044  		decodeJournalHdr(tls, bp+8, bp+36, bp+40, bp+44, bp+48) != 0) {
 49045  		goto __4
 49046  	}
 49047  	goto finish_rjf
 49048  __4:
 49049  	;
 49050  	iOff = iOff + sqlite3_int64(*(*u32)(unsafe.Pointer(bp + 44)))
 49051  
 49052  	if !(*(*u32)(unsafe.Pointer(bp + 36)) == u32(0)) {
 49053  		goto __5
 49054  	}
 49055  
 49056  	if !(iSize >= iOff+sqlite3_int64(*(*u32)(unsafe.Pointer(bp + 44)))) {
 49057  		goto __6
 49058  	}
 49059  	rc = sqlite3.Xsqlite3OsRead(tls, pReal, bp+8, 28, iOff)
 49060  	if !(rc != SQLITE_OK || 0 == decodeJournalHdr(tls, bp+8, uintptr(0), uintptr(0), uintptr(0), uintptr(0))) {
 49061  		goto __7
 49062  	}
 49063  	goto __2
 49064  __7:
 49065  	;
 49066  __6:
 49067  	;
 49068  	*(*u32)(unsafe.Pointer(bp + 36)) = u32((iSize - iOff) / sqlite3_int64((*jt_file)(unsafe.Pointer(pMain)).FnPagesize+u32(8)))
 49069  __5:
 49070  	;
 49071  	ii = u32(0)
 49072  __8:
 49073  	if !(rc == SQLITE_OK && ii < *(*u32)(unsafe.Pointer(bp + 36)) && iOff < iSize) {
 49074  		goto __10
 49075  	}
 49076  	rc = sqlite3.Xsqlite3OsRead(tls, pReal, bp+8, 4, iOff)
 49077  	if !(rc == SQLITE_OK) {
 49078  		goto __11
 49079  	}
 49080  	pgno = decodeUint32(tls, bp+8)
 49081  	if !(pgno > u32(0) && pgno <= (*jt_file)(unsafe.Pointer(pMain)).FnPage) {
 49082  		goto __12
 49083  	}
 49084  	if !(0 == sqlite3.Xsqlite3BitvecTest(tls, (*jt_file)(unsafe.Pointer(pMain)).FpWritable, pgno)) {
 49085  		goto __13
 49086  	}
 49087  	rc = sqlite3.Xsqlite3OsRead(tls, pReal, aPage, int32((*jt_file)(unsafe.Pointer(pMain)).FnPagesize), iOff+int64(4))
 49088  	if !(rc == SQLITE_OK) {
 49089  		goto __14
 49090  	}
 49091  	cksum = genCksum(tls, aPage, int32((*jt_file)(unsafe.Pointer(pMain)).FnPagesize))
 49092  
 49093  __14:
 49094  	;
 49095  __13:
 49096  	;
 49097  	sqlite3.Xsqlite3BitvecSet(tls, (*jt_file)(unsafe.Pointer(pMain)).FpWritable, pgno)
 49098  __12:
 49099  	;
 49100  	iOff = iOff + sqlite3_int64(u32(8)+(*jt_file)(unsafe.Pointer(pMain)).FnPagesize)
 49101  __11:
 49102  	;
 49103  	goto __9
 49104  __9:
 49105  	ii++
 49106  	goto __8
 49107  	goto __10
 49108  __10:
 49109  	;
 49110  	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)))
 49111  	goto __2
 49112  __3:
 49113  	;
 49114  finish_rjf:
 49115  	start_ioerr_simulation(tls, *(*int32)(unsafe.Pointer(bp)), *(*int32)(unsafe.Pointer(bp + 4)))
 49116  	sqlite3.Xsqlite3_free(tls, aPage)
 49117  	if !(rc == SQLITE_IOERR|int32(2)<<8) {
 49118  		goto __15
 49119  	}
 49120  	rc = SQLITE_OK
 49121  __15:
 49122  	;
 49123  	return rc
 49124  }
 49125  
 49126  func jtWrite(tls *libc.TLS, pFile uintptr, zBuf uintptr, iAmt int32, iOfst sqlite_int64) int32 {
 49127  	var rc int32
 49128  	var p uintptr = pFile
 49129  	if (*jt_file)(unsafe.Pointer(p)).Fflags&SQLITE_OPEN_MAIN_JOURNAL != 0 {
 49130  		if iOfst == int64(0) {
 49131  			var pMain uintptr = locateDatabaseHandle(tls, (*jt_file)(unsafe.Pointer(p)).FzName, 0)
 49132  
 49133  			if iAmt == 28 {
 49134  				closeTransaction(tls, pMain)
 49135  			} else if iAmt != 12 {
 49136  				var z uintptr = zBuf
 49137  				(*jt_file)(unsafe.Pointer(pMain)).FnPage = decodeUint32(tls, z+16)
 49138  				(*jt_file)(unsafe.Pointer(pMain)).FnPagesize = decodeUint32(tls, z+24)
 49139  				if SQLITE_OK != libc.AssignInt32(&rc, openTransaction(tls, pMain, p)) {
 49140  					return rc
 49141  				}
 49142  			}
 49143  		}
 49144  		if (*jt_file)(unsafe.Pointer(p)).FiMaxOff < iOfst+sqlite_int64(iAmt) {
 49145  			(*jt_file)(unsafe.Pointer(p)).FiMaxOff = iOfst + sqlite_int64(iAmt)
 49146  		}
 49147  	}
 49148  
 49149  	if (*jt_file)(unsafe.Pointer(p)).Fflags&SQLITE_OPEN_MAIN_DB != 0 && (*jt_file)(unsafe.Pointer(p)).FpWritable != 0 {
 49150  		if iAmt < int32((*jt_file)(unsafe.Pointer(p)).FnPagesize) &&
 49151  			(*jt_file)(unsafe.Pointer(p)).FnPagesize%u32(iAmt) == u32(0) &&
 49152  			iOfst >= sqlite_int64(sqlite3.Xsqlite3PendingByte+512) &&
 49153  			iOfst+sqlite_int64(iAmt) <= sqlite_int64(u32(sqlite3.Xsqlite3PendingByte)+(*jt_file)(unsafe.Pointer(p)).FnPagesize) {
 49154  		} else {
 49155  			var pgno u32 = u32(iOfst/sqlite_int64((*jt_file)(unsafe.Pointer(p)).FnPagesize) + int64(1))
 49156  			_ = pgno
 49157  
 49158  		}
 49159  	}
 49160  
 49161  	rc = sqlite3.Xsqlite3OsWrite(tls, (*jt_file)(unsafe.Pointer(p)).FpReal, zBuf, iAmt, iOfst)
 49162  	if (*jt_file)(unsafe.Pointer(p)).Fflags&SQLITE_OPEN_MAIN_JOURNAL != 0 && iAmt == 12 {
 49163  		var pMain uintptr = locateDatabaseHandle(tls, (*jt_file)(unsafe.Pointer(p)).FzName, 0)
 49164  		var rc2 int32 = readJournalFile(tls, p, pMain)
 49165  		if rc == SQLITE_OK {
 49166  			rc = rc2
 49167  		}
 49168  	}
 49169  	return rc
 49170  }
 49171  
 49172  func jtTruncate(tls *libc.TLS, pFile uintptr, size sqlite_int64) int32 {
 49173  	var p uintptr = pFile
 49174  	if (*jt_file)(unsafe.Pointer(p)).Fflags&SQLITE_OPEN_MAIN_JOURNAL != 0 && size == int64(0) {
 49175  		var pMain uintptr = locateDatabaseHandle(tls, (*jt_file)(unsafe.Pointer(p)).FzName, 0)
 49176  		closeTransaction(tls, pMain)
 49177  	}
 49178  	if (*jt_file)(unsafe.Pointer(p)).Fflags&SQLITE_OPEN_MAIN_DB != 0 && (*jt_file)(unsafe.Pointer(p)).FpWritable != 0 {
 49179  		var pgno u32
 49180  		var locking_page u32 = u32(sqlite3.Xsqlite3PendingByte)/(*jt_file)(unsafe.Pointer(p)).FnPagesize + u32(1)
 49181  		_ = locking_page
 49182  		for pgno = u32(size/sqlite_int64((*jt_file)(unsafe.Pointer(p)).FnPagesize) + int64(1)); pgno <= (*jt_file)(unsafe.Pointer(p)).FnPage; pgno++ {
 49183  		}
 49184  	}
 49185  	return sqlite3.Xsqlite3OsTruncate(tls, (*jt_file)(unsafe.Pointer(p)).FpReal, size)
 49186  }
 49187  
 49188  func jtSync(tls *libc.TLS, pFile uintptr, flags int32) int32 {
 49189  	var p uintptr = pFile
 49190  
 49191  	if (*jt_file)(unsafe.Pointer(p)).Fflags&SQLITE_OPEN_MAIN_JOURNAL != 0 {
 49192  		var rc int32
 49193  		var pMain uintptr
 49194  
 49195  		pMain = locateDatabaseHandle(tls, (*jt_file)(unsafe.Pointer(p)).FzName, 0)
 49196  
 49197  		if pMain != 0 && (*jt_file)(unsafe.Pointer(pMain)).FpWritable != 0 {
 49198  			(*jt_file)(unsafe.Pointer(pMain)).FnSync++
 49199  			rc = readJournalFile(tls, p, pMain)
 49200  			if rc != SQLITE_OK {
 49201  				return rc
 49202  			}
 49203  		}
 49204  	}
 49205  
 49206  	return sqlite3.Xsqlite3OsSync(tls, (*jt_file)(unsafe.Pointer(p)).FpReal, flags)
 49207  }
 49208  
 49209  func jtFileSize(tls *libc.TLS, pFile uintptr, pSize uintptr) int32 {
 49210  	var p uintptr = pFile
 49211  	return sqlite3.Xsqlite3OsFileSize(tls, (*jt_file)(unsafe.Pointer(p)).FpReal, pSize)
 49212  }
 49213  
 49214  func jtLock(tls *libc.TLS, pFile uintptr, eLock int32) int32 {
 49215  	var rc int32
 49216  	var p uintptr = pFile
 49217  	rc = sqlite3.Xsqlite3OsLock(tls, (*jt_file)(unsafe.Pointer(p)).FpReal, eLock)
 49218  	if rc == SQLITE_OK && eLock > (*jt_file)(unsafe.Pointer(p)).FeLock {
 49219  		(*jt_file)(unsafe.Pointer(p)).FeLock = eLock
 49220  	}
 49221  	return rc
 49222  }
 49223  
 49224  func jtUnlock(tls *libc.TLS, pFile uintptr, eLock int32) int32 {
 49225  	var rc int32
 49226  	var p uintptr = pFile
 49227  	rc = sqlite3.Xsqlite3OsUnlock(tls, (*jt_file)(unsafe.Pointer(p)).FpReal, eLock)
 49228  	if rc == SQLITE_OK && eLock < (*jt_file)(unsafe.Pointer(p)).FeLock {
 49229  		(*jt_file)(unsafe.Pointer(p)).FeLock = eLock
 49230  	}
 49231  	return rc
 49232  }
 49233  
 49234  func jtCheckReservedLock(tls *libc.TLS, pFile uintptr, pResOut uintptr) int32 {
 49235  	var p uintptr = pFile
 49236  	return sqlite3.Xsqlite3OsCheckReservedLock(tls, (*jt_file)(unsafe.Pointer(p)).FpReal, pResOut)
 49237  }
 49238  
 49239  func jtFileControl(tls *libc.TLS, pFile uintptr, op int32, pArg uintptr) int32 {
 49240  	var p uintptr = pFile
 49241  	return (*struct {
 49242  		f func(*libc.TLS, uintptr, int32, uintptr) int32
 49243  	})(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)
 49244  }
 49245  
 49246  func jtSectorSize(tls *libc.TLS, pFile uintptr) int32 {
 49247  	var p uintptr = pFile
 49248  	return sqlite3.Xsqlite3OsSectorSize(tls, (*jt_file)(unsafe.Pointer(p)).FpReal)
 49249  }
 49250  
 49251  func jtDeviceCharacteristics(tls *libc.TLS, pFile uintptr) int32 {
 49252  	var p uintptr = pFile
 49253  	return sqlite3.Xsqlite3OsDeviceCharacteristics(tls, (*jt_file)(unsafe.Pointer(p)).FpReal)
 49254  }
 49255  
 49256  func jtOpen(tls *libc.TLS, pVfs uintptr, zName uintptr, pFile uintptr, flags int32, pOutFlags uintptr) int32 {
 49257  	var rc int32
 49258  	var p uintptr = pFile
 49259  	(*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods = uintptr(0)
 49260  	(*jt_file)(unsafe.Pointer(p)).FpReal = p + 1*80
 49261  	(*sqlite3_file)(unsafe.Pointer((*jt_file)(unsafe.Pointer(p)).FpReal)).FpMethods = uintptr(0)
 49262  	rc = sqlite3.Xsqlite3OsOpen(tls, g2.FpVfs, zName, (*jt_file)(unsafe.Pointer(p)).FpReal, flags, pOutFlags)
 49263  
 49264  	if rc == SQLITE_OK {
 49265  		(*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods = uintptr(unsafe.Pointer(&jt_io_methods))
 49266  		(*jt_file)(unsafe.Pointer(p)).FeLock = 0
 49267  		(*jt_file)(unsafe.Pointer(p)).FzName = zName
 49268  		(*jt_file)(unsafe.Pointer(p)).Fflags = flags
 49269  		(*jt_file)(unsafe.Pointer(p)).FpNext = uintptr(0)
 49270  		(*jt_file)(unsafe.Pointer(p)).FpWritable = uintptr(0)
 49271  		(*jt_file)(unsafe.Pointer(p)).FaCksum = uintptr(0)
 49272  		enterJtMutex(tls)
 49273  		if zName != 0 {
 49274  			(*jt_file)(unsafe.Pointer(p)).FpNext = g2.FpList
 49275  			g2.FpList = p
 49276  		}
 49277  		leaveJtMutex(tls)
 49278  	}
 49279  	return rc
 49280  }
 49281  
 49282  func jtDelete(tls *libc.TLS, pVfs uintptr, zPath uintptr, dirSync int32) int32 {
 49283  	var nPath int32 = int32(libc.Xstrlen(tls, zPath))
 49284  	if nPath > 8 && 0 == libc.Xstrcmp(tls, ts+32808, zPath+uintptr(nPath-8)) {
 49285  		var pMain uintptr = locateDatabaseHandle(tls, zPath, 0)
 49286  		if pMain != 0 {
 49287  			closeTransaction(tls, pMain)
 49288  		}
 49289  	}
 49290  
 49291  	return sqlite3.Xsqlite3OsDelete(tls, g2.FpVfs, zPath, dirSync)
 49292  }
 49293  
 49294  func jtAccess(tls *libc.TLS, pVfs uintptr, zPath uintptr, flags int32, pResOut uintptr) int32 {
 49295  	return sqlite3.Xsqlite3OsAccess(tls, g2.FpVfs, zPath, flags, pResOut)
 49296  }
 49297  
 49298  func jtFullPathname(tls *libc.TLS, pVfs uintptr, zPath uintptr, nOut int32, zOut uintptr) int32 {
 49299  	return sqlite3.Xsqlite3OsFullPathname(tls, g2.FpVfs, zPath, nOut, zOut)
 49300  }
 49301  
 49302  func jtDlOpen(tls *libc.TLS, pVfs uintptr, zPath uintptr) uintptr {
 49303  	return (*struct {
 49304  		f func(*libc.TLS, uintptr, uintptr) uintptr
 49305  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(g2.FpVfs)).FxDlOpen})).f(tls, g2.FpVfs, zPath)
 49306  }
 49307  
 49308  func jtDlError(tls *libc.TLS, pVfs uintptr, nByte int32, zErrMsg uintptr) {
 49309  	(*struct {
 49310  		f func(*libc.TLS, uintptr, int32, uintptr)
 49311  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(g2.FpVfs)).FxDlError})).f(tls, g2.FpVfs, nByte, zErrMsg)
 49312  }
 49313  
 49314  func jtDlSym(tls *libc.TLS, pVfs uintptr, p uintptr, zSym uintptr) uintptr {
 49315  	return (*struct {
 49316  		f func(*libc.TLS, uintptr, uintptr, uintptr) uintptr
 49317  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(g2.FpVfs)).FxDlSym})).f(tls, g2.FpVfs, p, zSym)
 49318  }
 49319  
 49320  func jtDlClose(tls *libc.TLS, pVfs uintptr, pHandle uintptr) {
 49321  	(*struct {
 49322  		f func(*libc.TLS, uintptr, uintptr)
 49323  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(g2.FpVfs)).FxDlClose})).f(tls, g2.FpVfs, pHandle)
 49324  }
 49325  
 49326  func jtRandomness(tls *libc.TLS, pVfs uintptr, nByte int32, zBufOut uintptr) int32 {
 49327  	return sqlite3.Xsqlite3OsRandomness(tls, g2.FpVfs, nByte, zBufOut)
 49328  }
 49329  
 49330  func jtSleep(tls *libc.TLS, pVfs uintptr, nMicro int32) int32 {
 49331  	return sqlite3.Xsqlite3OsSleep(tls, g2.FpVfs, nMicro)
 49332  }
 49333  
 49334  func jtCurrentTime(tls *libc.TLS, pVfs uintptr, pTimeOut uintptr) int32 {
 49335  	return (*struct {
 49336  		f func(*libc.TLS, uintptr, uintptr) int32
 49337  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(g2.FpVfs)).FxCurrentTime})).f(tls, g2.FpVfs, pTimeOut)
 49338  }
 49339  
 49340  func jtCurrentTimeInt64(tls *libc.TLS, pVfs uintptr, pTimeOut uintptr) int32 {
 49341  	return (*struct {
 49342  		f func(*libc.TLS, uintptr, uintptr) int32
 49343  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(g2.FpVfs)).FxCurrentTimeInt64})).f(tls, g2.FpVfs, pTimeOut)
 49344  }
 49345  
 49346  func jtGetLastError(tls *libc.TLS, pVfs uintptr, n int32, z uintptr) int32 {
 49347  	return (*struct {
 49348  		f func(*libc.TLS, uintptr, int32, uintptr) int32
 49349  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(g2.FpVfs)).FxGetLastError})).f(tls, g2.FpVfs, n, z)
 49350  }
 49351  
 49352  func jt_register(tls *libc.TLS, zWrap uintptr, isDefault int32) int32 {
 49353  	g2.FpVfs = sqlite3.Xsqlite3_vfs_find(tls, zWrap)
 49354  	if g2.FpVfs == uintptr(0) {
 49355  		return SQLITE_ERROR
 49356  	}
 49357  	jt_vfs.FszOsFile = int32(uint64(unsafe.Sizeof(jt_file{})) + uint64((*sqlite3_vfs)(unsafe.Pointer(g2.FpVfs)).FszOsFile))
 49358  	if (*sqlite3_vfs)(unsafe.Pointer(g2.FpVfs)).FiVersion == 1 {
 49359  		jt_vfs.FiVersion = 1
 49360  	} else if (*sqlite3_vfs)(unsafe.Pointer(g2.FpVfs)).FxCurrentTimeInt64 == uintptr(0) {
 49361  		jt_vfs.FxCurrentTimeInt64 = uintptr(0)
 49362  	}
 49363  	sqlite3.Xsqlite3_vfs_register(tls, uintptr(unsafe.Pointer(&jt_vfs)), isDefault)
 49364  	return SQLITE_OK
 49365  }
 49366  
 49367  func jt_unregister(tls *libc.TLS) {
 49368  	sqlite3.Xsqlite3_vfs_unregister(tls, uintptr(unsafe.Pointer(&jt_vfs)))
 49369  }
 49370  
 49371  type MemFault = struct {
 49372  	FiCountdown   int32
 49373  	FnRepeat      int32
 49374  	FnBenign      int32
 49375  	FnFail        int32
 49376  	FnOkBefore    int32
 49377  	FnOkAfter     int32
 49378  	Fenable       u8
 49379  	F__ccgo_pad1  [3]byte
 49380  	FisInstalled  int32
 49381  	FisBenignMode int32
 49382  	F__ccgo_pad2  [4]byte
 49383  	Fm            sqlite3_mem_methods
 49384  }
 49385  
 49386  var memfault MemFault
 49387  
 49388  func sqlite3Fault(tls *libc.TLS) {
 49389  	cnt1++
 49390  }
 49391  
 49392  var cnt1 int32 = 0
 49393  
 49394  func sqlite3FirstFault(tls *libc.TLS) {
 49395  	cnt2++
 49396  }
 49397  
 49398  var cnt2 int32 = 0
 49399  
 49400  func faultsimStep(tls *libc.TLS) int32 {
 49401  	if !(int32(memfault.Fenable) != 0) {
 49402  		memfault.FnOkAfter++
 49403  		return 0
 49404  	}
 49405  	if memfault.FiCountdown > 0 {
 49406  		memfault.FiCountdown--
 49407  		memfault.FnOkBefore++
 49408  		return 0
 49409  	}
 49410  	if memfault.FnFail == 0 {
 49411  		sqlite3FirstFault(tls)
 49412  	}
 49413  	sqlite3Fault(tls)
 49414  	memfault.FnFail++
 49415  	if memfault.FisBenignMode > 0 {
 49416  		memfault.FnBenign++
 49417  	}
 49418  	memfault.FnRepeat--
 49419  	if memfault.FnRepeat <= 0 {
 49420  		memfault.Fenable = u8(0)
 49421  	}
 49422  	return 1
 49423  }
 49424  
 49425  func faultsimMalloc(tls *libc.TLS, n int32) uintptr {
 49426  	var p uintptr = uintptr(0)
 49427  	if !(faultsimStep(tls) != 0) {
 49428  		p = (*struct {
 49429  			f func(*libc.TLS, int32) uintptr
 49430  		})(unsafe.Pointer(&struct{ uintptr }{memfault.Fm.FxMalloc})).f(tls, n)
 49431  	}
 49432  	return p
 49433  }
 49434  
 49435  func faultsimRealloc(tls *libc.TLS, pOld uintptr, n int32) uintptr {
 49436  	var p uintptr = uintptr(0)
 49437  	if !(faultsimStep(tls) != 0) {
 49438  		p = (*struct {
 49439  			f func(*libc.TLS, uintptr, int32) uintptr
 49440  		})(unsafe.Pointer(&struct{ uintptr }{memfault.Fm.FxRealloc})).f(tls, pOld, n)
 49441  	}
 49442  	return p
 49443  }
 49444  
 49445  func faultsimConfig(tls *libc.TLS, nDelay int32, nRepeat int32) {
 49446  	memfault.FiCountdown = nDelay
 49447  	memfault.FnRepeat = nRepeat
 49448  	memfault.FnBenign = 0
 49449  	memfault.FnFail = 0
 49450  	memfault.FnOkBefore = 0
 49451  	memfault.FnOkAfter = 0
 49452  	memfault.Fenable = u8(libc.Bool32(nDelay >= 0))
 49453  
 49454  	memfault.FisBenignMode = 0
 49455  }
 49456  
 49457  func faultsimFailures(tls *libc.TLS) int32 {
 49458  	return memfault.FnFail
 49459  }
 49460  
 49461  func faultsimBenignFailures(tls *libc.TLS) int32 {
 49462  	return memfault.FnBenign
 49463  }
 49464  
 49465  func faultsimPending(tls *libc.TLS) int32 {
 49466  	if memfault.Fenable != 0 {
 49467  		return memfault.FiCountdown
 49468  	} else {
 49469  		return -1
 49470  	}
 49471  	return int32(0)
 49472  }
 49473  
 49474  func faultsimBeginBenign(tls *libc.TLS) {
 49475  	memfault.FisBenignMode++
 49476  }
 49477  
 49478  func faultsimEndBenign(tls *libc.TLS) {
 49479  	memfault.FisBenignMode--
 49480  }
 49481  
 49482  func faultsimInstall(tls *libc.TLS, install int32) int32 {
 49483  	bp := tls.Alloc(200)
 49484  	defer tls.Free(200)
 49485  
 49486  	var rc int32
 49487  
 49488  	install = func() int32 {
 49489  		if install != 0 {
 49490  			return 1
 49491  		}
 49492  		return 0
 49493  	}()
 49494  
 49495  	if install == memfault.FisInstalled {
 49496  		return SQLITE_ERROR
 49497  	}
 49498  
 49499  	if install != 0 {
 49500  		rc = sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_GETMALLOC, libc.VaList(bp, uintptr(unsafe.Pointer(&memfault))+40))
 49501  
 49502  		if rc == SQLITE_OK {
 49503  			*(*sqlite3_mem_methods)(unsafe.Pointer(bp + 72)) = memfault.Fm
 49504  			(*sqlite3_mem_methods)(unsafe.Pointer(bp + 72)).FxMalloc = *(*uintptr)(unsafe.Pointer(&struct {
 49505  				f func(*libc.TLS, int32) uintptr
 49506  			}{faultsimMalloc}))
 49507  			(*sqlite3_mem_methods)(unsafe.Pointer(bp + 72)).FxRealloc = *(*uintptr)(unsafe.Pointer(&struct {
 49508  				f func(*libc.TLS, uintptr, int32) uintptr
 49509  			}{faultsimRealloc}))
 49510  			rc = sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_MALLOC, libc.VaList(bp+8, bp+72))
 49511  		}
 49512  		sqlite3.Xsqlite3_test_control(tls, SQLITE_TESTCTRL_BENIGN_MALLOC_HOOKS,
 49513  			libc.VaList(bp+16, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS) }{faultsimBeginBenign})), *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS) }{faultsimEndBenign}))))
 49514  	} else {
 49515  		libc.Xmemset(tls, bp+136, 0, uint64(unsafe.Sizeof(sqlite3_mem_methods{})))
 49516  		sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_MALLOC, libc.VaList(bp+32, bp+136))
 49517  		sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_GETMALLOC, libc.VaList(bp+40, bp+136))
 49518  
 49519  		rc = sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_MALLOC, libc.VaList(bp+48, uintptr(unsafe.Pointer(&memfault))+40))
 49520  		sqlite3.Xsqlite3_test_control(tls, SQLITE_TESTCTRL_BENIGN_MALLOC_HOOKS,
 49521  			libc.VaList(bp+56, uintptr(0), uintptr(0)))
 49522  	}
 49523  
 49524  	if rc == SQLITE_OK {
 49525  		memfault.FisInstalled = 1
 49526  	}
 49527  	return rc
 49528  }
 49529  
 49530  func pointerToText(tls *libc.TLS, p uintptr, z uintptr) {
 49531  	bp := tls.Alloc(20)
 49532  	defer tls.Free(20)
 49533  	*(*uintptr)(unsafe.Pointer(bp + 8)) = p
 49534  
 49535  	var i int32
 49536  	var k int32
 49537  
 49538  	if *(*uintptr)(unsafe.Pointer(bp + 8)) == uintptr(0) {
 49539  		libc.Xstrcpy(tls, z, ts+14193)
 49540  		return
 49541  	}
 49542  	if uint64(unsafe.Sizeof(sqlite3_uint64(0))) == uint64(unsafe.Sizeof(uintptr(0))) {
 49543  		libc.Xmemcpy(tls, bp, bp+8, uint64(unsafe.Sizeof(uintptr(0))))
 49544  	} else if uint64(unsafe.Sizeof(uint32(0))) == uint64(unsafe.Sizeof(uintptr(0))) {
 49545  		libc.Xmemcpy(tls, bp+16, bp+8, uint64(unsafe.Sizeof(uint32(0))))
 49546  		*(*sqlite3_uint64)(unsafe.Pointer(bp)) = sqlite3_uint64(*(*uint32)(unsafe.Pointer(bp + 16)))
 49547  	} else {
 49548  	}
 49549  	i = 0
 49550  	k = int32(uint64(unsafe.Sizeof(uintptr(0)))*uint64(2) - uint64(1))
 49551  __1:
 49552  	if !(uint64(i) < uint64(unsafe.Sizeof(uintptr(0)))*uint64(2)) {
 49553  		goto __3
 49554  	}
 49555  	{
 49556  		*(*uint8)(unsafe.Pointer(z + uintptr(k))) = zHex[*(*sqlite3_uint64)(unsafe.Pointer(bp))&uint64(0xf)]
 49557  		*(*sqlite3_uint64)(unsafe.Pointer(bp)) >>= 4
 49558  
 49559  	}
 49560  	goto __2
 49561  __2:
 49562  	i++
 49563  	k--
 49564  	goto __1
 49565  	goto __3
 49566  __3:
 49567  	;
 49568  	*(*uint8)(unsafe.Pointer(z + 16)) = uint8(0)
 49569  }
 49570  
 49571  var zHex = *(*[17]uint8)(unsafe.Pointer(ts + 31194))
 49572  
 49573  func hexToInt(tls *libc.TLS, h int32) int32 {
 49574  	if h >= '0' && h <= '9' {
 49575  		return h - '0'
 49576  	} else if h >= 'a' && h <= 'f' {
 49577  		return h - 'a' + 10
 49578  	} else {
 49579  		return -1
 49580  	}
 49581  	return int32(0)
 49582  }
 49583  
 49584  func textToPointer(tls *libc.TLS, z uintptr, pp uintptr) int32 {
 49585  	bp := tls.Alloc(12)
 49586  	defer tls.Free(12)
 49587  
 49588  	*(*sqlite3_uint64)(unsafe.Pointer(bp)) = uint64(0)
 49589  	var i int32
 49590  
 49591  	for i = 0; uint64(i) < uint64(unsafe.Sizeof(uintptr(0)))*uint64(2) && *(*uint8)(unsafe.Pointer(z)) != 0; i++ {
 49592  		var v int32
 49593  		v = hexToInt(tls, int32(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&z, 1)))))
 49594  		if v < 0 {
 49595  			return TCL_ERROR
 49596  		}
 49597  		*(*sqlite3_uint64)(unsafe.Pointer(bp)) = *(*sqlite3_uint64)(unsafe.Pointer(bp))*uint64(16) + sqlite3_uint64(v)
 49598  	}
 49599  	if int32(*(*uint8)(unsafe.Pointer(z))) != 0 {
 49600  		return TCL_ERROR
 49601  	}
 49602  	if uint64(unsafe.Sizeof(sqlite3_uint64(0))) == uint64(unsafe.Sizeof(uintptr(0))) {
 49603  		libc.Xmemcpy(tls, pp, bp, uint64(unsafe.Sizeof(sqlite3_uint64(0))))
 49604  	} else if uint64(unsafe.Sizeof(uint32(0))) == uint64(unsafe.Sizeof(uintptr(0))) {
 49605  		*(*uint32)(unsafe.Pointer(bp + 8)) = uint32(*(*sqlite3_uint64)(unsafe.Pointer(bp)))
 49606  		libc.Xmemcpy(tls, pp, bp+8, uint64(unsafe.Sizeof(uint32(0))))
 49607  	} else {
 49608  	}
 49609  	return TCL_OK
 49610  }
 49611  
 49612  func test_malloc(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 49613  	bp := tls.Alloc(120)
 49614  	defer tls.Free(120)
 49615  
 49616  	var p uintptr
 49617  
 49618  	if objc != 2 {
 49619  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+32817)
 49620  		return TCL_ERROR
 49621  	}
 49622  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp+16) != 0 {
 49623  		return TCL_ERROR
 49624  	}
 49625  	p = sqlite3.Xsqlite3_malloc(tls, int32(uint32(*(*int32)(unsafe.Pointer(bp + 16)))))
 49626  	pointerToText(tls, p, bp+20)
 49627  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, bp+20, uintptr(0)))
 49628  	return TCL_OK
 49629  }
 49630  
 49631  func test_realloc(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 49632  	bp := tls.Alloc(156)
 49633  	defer tls.Free(156)
 49634  
 49635  	var p uintptr
 49636  
 49637  	if objc != 3 {
 49638  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+32824)
 49639  		return TCL_ERROR
 49640  	}
 49641  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+40) != 0 {
 49642  		return TCL_ERROR
 49643  	}
 49644  	if textToPointer(tls, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+48) != 0 {
 49645  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+32837, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), uintptr(0)))
 49646  		return TCL_ERROR
 49647  	}
 49648  	p = sqlite3.Xsqlite3_realloc(tls, *(*uintptr)(unsafe.Pointer(bp + 48)), int32(uint32(*(*int32)(unsafe.Pointer(bp + 40)))))
 49649  	pointerToText(tls, p, bp+56)
 49650  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+24, bp+56, uintptr(0)))
 49651  	return TCL_OK
 49652  }
 49653  
 49654  func test_free(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 49655  	bp := tls.Alloc(32)
 49656  	defer tls.Free(32)
 49657  
 49658  	if objc != 2 {
 49659  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+32851)
 49660  		return TCL_ERROR
 49661  	}
 49662  	if textToPointer(tls, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+24) != 0 {
 49663  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+32837, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), uintptr(0)))
 49664  		return TCL_ERROR
 49665  	}
 49666  	sqlite3.Xsqlite3_free(tls, *(*uintptr)(unsafe.Pointer(bp + 24)))
 49667  	return TCL_OK
 49668  }
 49669  
 49670  func test_memset(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 49671  	bp := tls.Alloc(172)
 49672  	defer tls.Free(172)
 49673  
 49674  	var i int32
 49675  	var zHex uintptr
 49676  	var zOut uintptr
 49677  
 49678  	if objc != 4 {
 49679  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+32857)
 49680  		return TCL_ERROR
 49681  	}
 49682  	if textToPointer(tls, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+56) != 0 {
 49683  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+32837, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), uintptr(0)))
 49684  		return TCL_ERROR
 49685  	}
 49686  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+64) != 0 {
 49687  		return TCL_ERROR
 49688  	}
 49689  	if *(*int32)(unsafe.Pointer(bp + 64)) <= 0 {
 49690  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+24, ts+32874, uintptr(0)))
 49691  		return TCL_ERROR
 49692  	}
 49693  	zHex = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+68)
 49694  	if uint64(*(*int32)(unsafe.Pointer(bp + 68))) > uint64(unsafe.Sizeof([100]uint8{}))*uint64(2) {
 49695  		*(*int32)(unsafe.Pointer(bp + 68)) = int32(uint64(unsafe.Sizeof([100]uint8{})) * uint64(2))
 49696  	}
 49697  	*(*int32)(unsafe.Pointer(bp + 68)) = sqlite3TestHexToBin(tls, zHex, *(*int32)(unsafe.Pointer(bp + 68)), bp+72)
 49698  	if *(*int32)(unsafe.Pointer(bp + 68)) == 0 {
 49699  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+40, ts+32896, uintptr(0)))
 49700  		return TCL_ERROR
 49701  	}
 49702  	zOut = *(*uintptr)(unsafe.Pointer(bp + 56))
 49703  	for i = 0; i < *(*int32)(unsafe.Pointer(bp + 64)); i++ {
 49704  		*(*uint8)(unsafe.Pointer(zOut + uintptr(i))) = *(*uint8)(unsafe.Pointer(bp + 72 + uintptr(i%*(*int32)(unsafe.Pointer(bp + 68)))))
 49705  	}
 49706  	return TCL_OK
 49707  }
 49708  
 49709  func test_memget(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 49710  	bp := tls.Alloc(168)
 49711  	defer tls.Free(168)
 49712  
 49713  	var n int32
 49714  	var zBin uintptr
 49715  
 49716  	if objc != 3 {
 49717  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+32904)
 49718  		return TCL_ERROR
 49719  	}
 49720  	if textToPointer(tls, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+56) != 0 {
 49721  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+32837, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), uintptr(0)))
 49722  		return TCL_ERROR
 49723  	}
 49724  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+64) != 0 {
 49725  		return TCL_ERROR
 49726  	}
 49727  	if *(*int32)(unsafe.Pointer(bp + 64)) <= 0 {
 49728  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+24, ts+32874, uintptr(0)))
 49729  		return TCL_ERROR
 49730  	}
 49731  	zBin = *(*uintptr)(unsafe.Pointer(bp + 56))
 49732  	for *(*int32)(unsafe.Pointer(bp + 64)) > 0 {
 49733  		if uint64(*(*int32)(unsafe.Pointer(bp + 64))) > (uint64(unsafe.Sizeof([100]uint8{}))-uint64(1))/uint64(2) {
 49734  			n = int32((uint64(unsafe.Sizeof([100]uint8{})) - uint64(1)) / uint64(2))
 49735  		} else {
 49736  			n = *(*int32)(unsafe.Pointer(bp + 64))
 49737  		}
 49738  		libc.Xmemcpy(tls, bp+68, zBin, uint64(n))
 49739  		zBin += uintptr(n)
 49740  		*(*int32)(unsafe.Pointer(bp + 64)) -= n
 49741  		sqlite3TestBinToHex(tls, bp+68, n)
 49742  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+40, bp+68, uintptr(0)))
 49743  	}
 49744  	return TCL_OK
 49745  }
 49746  
 49747  func test_memory_used(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 49748  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewWideIntObj(tls, sqlite3.Xsqlite3_memory_used(tls)))
 49749  	return TCL_OK
 49750  }
 49751  
 49752  func test_memory_highwater(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 49753  	bp := tls.Alloc(4)
 49754  	defer tls.Free(4)
 49755  
 49756  	*(*int32)(unsafe.Pointer(bp)) = 0
 49757  	if objc != 1 && objc != 2 {
 49758  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+32917)
 49759  		return TCL_ERROR
 49760  	}
 49761  	if objc == 2 {
 49762  		if tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp) != 0 {
 49763  			return TCL_ERROR
 49764  		}
 49765  	}
 49766  	tcl.XTcl_SetObjResult(tls, interp,
 49767  		tcl.XTcl_NewWideIntObj(tls, sqlite3.Xsqlite3_memory_highwater(tls, *(*int32)(unsafe.Pointer(bp)))))
 49768  	return TCL_OK
 49769  }
 49770  
 49771  func test_memdebug_backtrace(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 49772  	bp := tls.Alloc(4)
 49773  	defer tls.Free(4)
 49774  
 49775  	if objc != 2 {
 49776  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+32925)
 49777  		return TCL_ERROR
 49778  	}
 49779  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp) != 0 {
 49780  		return TCL_ERROR
 49781  	}
 49782  	return TCL_OK
 49783  }
 49784  
 49785  func test_memdebug_dump(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 49786  	if objc != 2 {
 49787  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+32930)
 49788  		return TCL_ERROR
 49789  	}
 49790  	return TCL_OK
 49791  }
 49792  
 49793  func test_memdebug_malloc_count(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 49794  	var nMalloc int32 = -1
 49795  	if objc != 1 {
 49796  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+584)
 49797  		return TCL_ERROR
 49798  	}
 49799  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, nMalloc))
 49800  	return TCL_OK
 49801  }
 49802  
 49803  func test_memdebug_fail(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 49804  	bp := tls.Alloc(36)
 49805  	defer tls.Free(36)
 49806  
 49807  	var ii int32
 49808  
 49809  	*(*int32)(unsafe.Pointer(bp + 32)) = 1
 49810  	var pBenignCnt uintptr = uintptr(0)
 49811  	var nBenign int32
 49812  	var nFail int32 = 0
 49813  
 49814  	if objc < 2 {
 49815  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+32939)
 49816  		return TCL_ERROR
 49817  	}
 49818  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp+24) != 0 {
 49819  		return TCL_ERROR
 49820  	}
 49821  
 49822  	for ii = 2; ii < objc; ii = ii + 2 {
 49823  		var zOption uintptr = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(ii)*8)), bp+28)
 49824  		var zErr uintptr = uintptr(0)
 49825  
 49826  		if *(*int32)(unsafe.Pointer(bp + 28)) > 1 && libc.Xstrncmp(tls, zOption, ts+32957, uint64(*(*int32)(unsafe.Pointer(bp + 28)))) == 0 {
 49827  			if ii == objc-1 {
 49828  				zErr = ts + 12638
 49829  			} else {
 49830  				if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(ii+1)*8)), bp+32) != 0 {
 49831  					return TCL_ERROR
 49832  				}
 49833  			}
 49834  		} else if *(*int32)(unsafe.Pointer(bp + 28)) > 1 && libc.Xstrncmp(tls, zOption, ts+32965, uint64(*(*int32)(unsafe.Pointer(bp + 28)))) == 0 {
 49835  			if ii == objc-1 {
 49836  				zErr = ts + 12638
 49837  			} else {
 49838  				pBenignCnt = *(*uintptr)(unsafe.Pointer(objv + uintptr(ii+1)*8))
 49839  			}
 49840  		} else {
 49841  			zErr = ts + 12444
 49842  		}
 49843  
 49844  		if zErr != 0 {
 49845  			tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, zErr, zOption, 0))
 49846  			return TCL_ERROR
 49847  		}
 49848  	}
 49849  
 49850  	nBenign = faultsimBenignFailures(tls)
 49851  	nFail = faultsimFailures(tls)
 49852  	faultsimConfig(tls, *(*int32)(unsafe.Pointer(bp + 24)), *(*int32)(unsafe.Pointer(bp + 32)))
 49853  
 49854  	if pBenignCnt != 0 {
 49855  		tcl.XTcl_ObjSetVar2(tls, interp, pBenignCnt, uintptr(0), tcl.XTcl_NewIntObj(tls, nBenign), 0)
 49856  	}
 49857  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, nFail))
 49858  	return TCL_OK
 49859  }
 49860  
 49861  func test_memdebug_pending(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 49862  	var nPending int32
 49863  	if objc != 1 {
 49864  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+584)
 49865  		return TCL_ERROR
 49866  	}
 49867  	nPending = faultsimPending(tls)
 49868  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, nPending))
 49869  	return TCL_OK
 49870  }
 49871  
 49872  var sqlite3_memdebug_title_count int32 = 0
 49873  
 49874  func test_memdebug_settitle(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 49875  	sqlite3_memdebug_title_count++
 49876  	if objc != 2 {
 49877  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+32976)
 49878  		return TCL_ERROR
 49879  	}
 49880  	return TCL_OK
 49881  }
 49882  
 49883  var aMallocLog Tcl_HashTable
 49884  var mallocLogEnabled int32 = 0
 49885  
 49886  type MallocLog1 = struct {
 49887  	FnCall int32
 49888  	FnByte int32
 49889  }
 49890  
 49891  type MallocLog = MallocLog1
 49892  
 49893  func test_memdebug_log_clear(tls *libc.TLS) {
 49894  	bp := tls.Alloc(24)
 49895  	defer tls.Free(24)
 49896  
 49897  	var pEntry uintptr
 49898  	for pEntry = tcl.XTcl_FirstHashEntry(tls, uintptr(unsafe.Pointer(&aMallocLog)), bp); pEntry != 0; pEntry = tcl.XTcl_NextHashEntry(tls, bp) {
 49899  		var pLog uintptr = (*Tcl_HashEntry)(unsafe.Pointer(pEntry)).FclientData
 49900  		tcl.XTcl_Free(tls, pLog)
 49901  	}
 49902  	tcl.XTcl_DeleteHashTable(tls, uintptr(unsafe.Pointer(&aMallocLog)))
 49903  	tcl.XTcl_InitHashTable(tls, uintptr(unsafe.Pointer(&aMallocLog)), int32(uint64(10)*func() uint64 {
 49904  		if uint64(unsafe.Sizeof(int32(0))) >= uint64(unsafe.Sizeof(uintptr(0))) {
 49905  			return uint64(1)
 49906  		}
 49907  		return uint64(unsafe.Sizeof(uintptr(0))) / uint64(unsafe.Sizeof(int32(0)))
 49908  	}()))
 49909  }
 49910  
 49911  func test_memdebug_log(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 49912  	bp := tls.Alloc(128)
 49913  	defer tls.Free(128)
 49914  
 49915  	if !(isInit != 0) {
 49916  		tcl.XTcl_InitHashTable(tls, uintptr(unsafe.Pointer(&aMallocLog)), int32(uint64(10)*func() uint64 {
 49917  			if uint64(unsafe.Sizeof(int32(0))) >= uint64(unsafe.Sizeof(uintptr(0))) {
 49918  				return uint64(1)
 49919  			}
 49920  			return uint64(unsafe.Sizeof(uintptr(0))) / uint64(unsafe.Sizeof(int32(0)))
 49921  		}()))
 49922  		isInit = 1
 49923  	}
 49924  
 49925  	if objc < 2 {
 49926  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+32982)
 49927  	}
 49928  	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 {
 49929  		return TCL_ERROR
 49930  	}
 49931  
 49932  	switch uint32(*(*int32)(unsafe.Pointer(bp))) {
 49933  	case uint32(0):
 49934  		mallocLogEnabled = 1
 49935  		break
 49936  	case uint32(1):
 49937  		mallocLogEnabled = 0
 49938  		break
 49939  	case uint32(2):
 49940  		{
 49941  			var pEntry uintptr
 49942  			var pRet uintptr = tcl.XTcl_NewObj(tls)
 49943  
 49944  			for pEntry = tcl.XTcl_FirstHashEntry(tls, uintptr(unsafe.Pointer(&aMallocLog)), bp+8); pEntry != 0; pEntry = tcl.XTcl_NextHashEntry(tls, bp+8) {
 49945  				var pLog uintptr = (*Tcl_HashEntry)(unsafe.Pointer(pEntry)).FclientData
 49946  				var aKey uintptr = func() uintptr {
 49947  					if (*Tcl_HashTable)(unsafe.Pointer(uintptr(unsafe.Pointer(&aMallocLog)))).FkeyType == 1 || (*Tcl_HashTable)(unsafe.Pointer(uintptr(unsafe.Pointer(&aMallocLog)))).FkeyType == -1 {
 49948  						return *(*uintptr)(unsafe.Pointer(pEntry + 32))
 49949  					}
 49950  					return pEntry + 32
 49951  				}()
 49952  				var ii int32
 49953  
 49954  				*(*uintptr)(unsafe.Pointer(bp + 32)) = tcl.XTcl_NewIntObj(tls, (*MallocLog)(unsafe.Pointer(pLog)).FnCall)
 49955  				*(*uintptr)(unsafe.Pointer(bp + 32 + 1*8)) = tcl.XTcl_NewIntObj(tls, (*MallocLog)(unsafe.Pointer(pLog)).FnByte)
 49956  				for ii = 0; ii < MALLOC_LOG_FRAMES; ii++ {
 49957  					*(*uintptr)(unsafe.Pointer(bp + 32 + uintptr(ii+2)*8)) = tcl.XTcl_NewWideIntObj(tls, *(*Tcl_WideInt)(unsafe.Pointer(aKey + uintptr(ii)*8)))
 49958  				}
 49959  
 49960  				tcl.XTcl_ListObjAppendElement(tls, interp, pRet,
 49961  					tcl.XTcl_NewListObj(tls, MALLOC_LOG_FRAMES+2, bp+32))
 49962  			}
 49963  
 49964  			tcl.XTcl_SetObjResult(tls, interp, pRet)
 49965  			break
 49966  
 49967  		}
 49968  	case uint32(3):
 49969  		{
 49970  			test_memdebug_log_clear(tls)
 49971  			break
 49972  
 49973  		}
 49974  
 49975  	case uint32(4):
 49976  		{
 49977  			break
 49978  
 49979  		}
 49980  	}
 49981  
 49982  	return TCL_OK
 49983  }
 49984  
 49985  var isInit int32 = 0
 49986  var MB_strs = [5]uintptr{ts + 32998, ts + 33004, ts + 33009, ts + 33014, ts + 33020}
 49987  
 49988  func test_config_pagecache(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 49989  	bp := tls.Alloc(56)
 49990  	defer tls.Free(56)
 49991  
 49992  	var pRes uintptr
 49993  	if objc != 3 {
 49994  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+33025)
 49995  		return TCL_ERROR
 49996  	}
 49997  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp+48) != 0 {
 49998  		return TCL_ERROR
 49999  	}
 50000  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+52) != 0 {
 50001  		return TCL_ERROR
 50002  	}
 50003  	libc.Xfree(tls, buf1)
 50004  	buf1 = uintptr(0)
 50005  
 50006  	pRes = tcl.XTcl_NewObj(tls)
 50007  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pRes, tcl.XTcl_NewIntObj(tls, sqlite3.Xsqlite3Config.FszPage))
 50008  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pRes, tcl.XTcl_NewIntObj(tls, sqlite3.Xsqlite3Config.FnPage))
 50009  	tcl.XTcl_SetObjResult(tls, interp, pRes)
 50010  
 50011  	if *(*int32)(unsafe.Pointer(bp + 48)) < 0 {
 50012  		sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_PAGECACHE, libc.VaList(bp, uintptr(0), 0, 0))
 50013  	} else {
 50014  		buf1 = libc.Xmalloc(tls, uint64(*(*int32)(unsafe.Pointer(bp + 48))**(*int32)(unsafe.Pointer(bp + 52))))
 50015  		sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_PAGECACHE, libc.VaList(bp+24, buf1, *(*int32)(unsafe.Pointer(bp + 48)), *(*int32)(unsafe.Pointer(bp + 52))))
 50016  	}
 50017  	return TCL_OK
 50018  }
 50019  
 50020  var buf1 uintptr = uintptr(0)
 50021  
 50022  func test_alt_pcache(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 50023  	bp := tls.Alloc(32)
 50024  	defer tls.Free(32)
 50025  
 50026  	*(*int32)(unsafe.Pointer(bp + 20)) = 0
 50027  	*(*int32)(unsafe.Pointer(bp + 24)) = 0
 50028  	*(*int32)(unsafe.Pointer(bp + 28)) = 0
 50029  	if objc < 2 || objc > 5 {
 50030  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv,
 50031  			ts+33032)
 50032  		return TCL_ERROR
 50033  	}
 50034  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp+16) != 0 {
 50035  		return TCL_ERROR
 50036  	}
 50037  	if objc >= 3 && tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+20) != 0 {
 50038  		return TCL_ERROR
 50039  	}
 50040  	if objc >= 4 && tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+24) != 0 {
 50041  		return TCL_ERROR
 50042  	}
 50043  	if objc >= 5 && tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 4*8)), bp+28) != 0 {
 50044  		return TCL_ERROR
 50045  	}
 50046  	if *(*int32)(unsafe.Pointer(bp + 20)) < 0 || *(*int32)(unsafe.Pointer(bp + 20)) > 100 {
 50047  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+33079,
 50048  			uintptr(0)))
 50049  		return TCL_ERROR
 50050  	}
 50051  	installTestPCache(tls, *(*int32)(unsafe.Pointer(bp + 16)), uint32(*(*int32)(unsafe.Pointer(bp + 20))), uint32(*(*int32)(unsafe.Pointer(bp + 24))),
 50052  		uint32(*(*int32)(unsafe.Pointer(bp + 28))))
 50053  	return TCL_OK
 50054  }
 50055  
 50056  func test_config_memstatus(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 50057  	bp := tls.Alloc(12)
 50058  	defer tls.Free(12)
 50059  
 50060  	var rc int32
 50061  	if objc != 2 {
 50062  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+18238)
 50063  		return TCL_ERROR
 50064  	}
 50065  	if tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp+8) != 0 {
 50066  		return TCL_ERROR
 50067  	}
 50068  	rc = sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_MEMSTATUS, libc.VaList(bp, *(*int32)(unsafe.Pointer(bp + 8))))
 50069  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, rc))
 50070  	return TCL_OK
 50071  }
 50072  
 50073  func test_config_lookaside(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 50074  	bp := tls.Alloc(24)
 50075  	defer tls.Free(24)
 50076  
 50077  	var pRet uintptr
 50078  	if objc != 3 {
 50079  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+33122)
 50080  		return TCL_ERROR
 50081  	}
 50082  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp+16) != 0 {
 50083  		return TCL_ERROR
 50084  	}
 50085  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+20) != 0 {
 50086  		return TCL_ERROR
 50087  	}
 50088  	pRet = tcl.XTcl_NewObj(tls)
 50089  	tcl.XTcl_ListObjAppendElement(tls,
 50090  		interp, pRet, tcl.XTcl_NewIntObj(tls, sqlite3.Xsqlite3Config.FszLookaside))
 50091  	tcl.XTcl_ListObjAppendElement(tls,
 50092  		interp, pRet, tcl.XTcl_NewIntObj(tls, sqlite3.Xsqlite3Config.FnLookaside))
 50093  	sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_LOOKASIDE, libc.VaList(bp, *(*int32)(unsafe.Pointer(bp + 16)), *(*int32)(unsafe.Pointer(bp + 20))))
 50094  	tcl.XTcl_SetObjResult(tls, interp, pRet)
 50095  	return TCL_OK
 50096  }
 50097  
 50098  func test_db_config_lookaside(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 50099  	bp := tls.Alloc(84)
 50100  	defer tls.Free(84)
 50101  
 50102  	var rc int32
 50103  
 50104  	if objc != 5 {
 50105  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+33133)
 50106  		return TCL_ERROR
 50107  	}
 50108  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+64) != 0 {
 50109  		return TCL_ERROR
 50110  	}
 50111  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+72) != 0 {
 50112  		return TCL_ERROR
 50113  	}
 50114  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+76) != 0 {
 50115  		return TCL_ERROR
 50116  	}
 50117  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 4*8)), bp+80) != 0 {
 50118  		return TCL_ERROR
 50119  	}
 50120  	if *(*int32)(unsafe.Pointer(bp + 72)) == 0 {
 50121  		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))))
 50122  	} 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{})) {
 50123  		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))))
 50124  	} else {
 50125  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+48, ts+33150, uintptr(0)))
 50126  		return TCL_ERROR
 50127  	}
 50128  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, rc))
 50129  	return TCL_OK
 50130  }
 50131  
 50132  var azBuf [2][10000]uint8
 50133  
 50134  func test_config_heap(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 50135  	bp := tls.Alloc(56)
 50136  	defer tls.Free(56)
 50137  
 50138  	var rc int32
 50139  
 50140  	var aArg uintptr = objv + 1*8
 50141  	var nArg int32 = objc - 1
 50142  
 50143  	if nArg != 2 {
 50144  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+33188)
 50145  		return TCL_ERROR
 50146  	}
 50147  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(aArg)), bp+48) != 0 {
 50148  		return TCL_ERROR
 50149  	}
 50150  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(aArg + 1*8)), bp+52) != 0 {
 50151  		return TCL_ERROR
 50152  	}
 50153  
 50154  	if *(*int32)(unsafe.Pointer(bp + 48)) == 0 {
 50155  		libc.Xfree(tls, zBuf)
 50156  		zBuf = uintptr(0)
 50157  		rc = sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_HEAP, libc.VaList(bp, uintptr(0), 0, 0))
 50158  	} else {
 50159  		zBuf = libc.Xrealloc(tls, zBuf, uint64(*(*int32)(unsafe.Pointer(bp + 48))))
 50160  		rc = sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_HEAP, libc.VaList(bp+24, zBuf, *(*int32)(unsafe.Pointer(bp + 48)), *(*int32)(unsafe.Pointer(bp + 52))))
 50161  	}
 50162  
 50163  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(1))
 50164  	return TCL_OK
 50165  }
 50166  
 50167  var zBuf uintptr
 50168  
 50169  func test_config_heap_size(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 50170  	bp := tls.Alloc(12)
 50171  	defer tls.Free(12)
 50172  
 50173  	var rc int32
 50174  
 50175  	var aArg uintptr = objv + 1*8
 50176  	var nArg int32 = objc - 1
 50177  
 50178  	if nArg != 1 {
 50179  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+16219)
 50180  		return TCL_ERROR
 50181  	}
 50182  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(aArg)), bp+8) != 0 {
 50183  		return TCL_ERROR
 50184  	}
 50185  
 50186  	rc = sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_WIN32_HEAPSIZE, libc.VaList(bp, *(*int32)(unsafe.Pointer(bp + 8))))
 50187  
 50188  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(1))
 50189  	return TCL_OK
 50190  }
 50191  
 50192  func test_config_error(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 50193  	bp := tls.Alloc(40)
 50194  	defer tls.Free(40)
 50195  
 50196  	if objc != 2 && objc != 1 {
 50197  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+33204)
 50198  		return TCL_ERROR
 50199  	}
 50200  	if objc == 2 {
 50201  		if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0 {
 50202  			return TCL_ERROR
 50203  		}
 50204  		if sqlite3.Xsqlite3_db_config(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), 99999, 0) != SQLITE_ERROR {
 50205  			tcl.XTcl_AppendResult(tls, interp,
 50206  				libc.VaList(bp, ts+33209,
 50207  					uintptr(0)))
 50208  			return TCL_ERROR
 50209  		}
 50210  	} else {
 50211  		if sqlite3.Xsqlite3_config(tls, 99999, 0) != SQLITE_ERROR {
 50212  			tcl.XTcl_AppendResult(tls, interp,
 50213  				libc.VaList(bp+16, ts+33267,
 50214  					uintptr(0)))
 50215  			return TCL_ERROR
 50216  		}
 50217  	}
 50218  	return TCL_OK
 50219  }
 50220  
 50221  func test_config_uri(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 50222  	bp := tls.Alloc(12)
 50223  	defer tls.Free(12)
 50224  
 50225  	var rc int32
 50226  
 50227  	if objc != 2 {
 50228  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+10152)
 50229  		return TCL_ERROR
 50230  	}
 50231  	if tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp+8) != 0 {
 50232  		return TCL_ERROR
 50233  	}
 50234  
 50235  	rc = sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_URI, libc.VaList(bp, *(*int32)(unsafe.Pointer(bp + 8))))
 50236  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(1))
 50237  
 50238  	return TCL_OK
 50239  }
 50240  
 50241  func test_config_cis(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 50242  	bp := tls.Alloc(12)
 50243  	defer tls.Free(12)
 50244  
 50245  	var rc int32
 50246  
 50247  	if objc != 2 {
 50248  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+10152)
 50249  		return TCL_ERROR
 50250  	}
 50251  	if tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp+8) != 0 {
 50252  		return TCL_ERROR
 50253  	}
 50254  
 50255  	rc = sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_COVERING_INDEX_SCAN, libc.VaList(bp, *(*int32)(unsafe.Pointer(bp + 8))))
 50256  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(1))
 50257  
 50258  	return TCL_OK
 50259  }
 50260  
 50261  func test_config_pmasz(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 50262  	bp := tls.Alloc(12)
 50263  	defer tls.Free(12)
 50264  
 50265  	var rc int32
 50266  
 50267  	if objc != 2 {
 50268  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+10152)
 50269  		return TCL_ERROR
 50270  	}
 50271  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp+8) != 0 {
 50272  		return TCL_ERROR
 50273  	}
 50274  
 50275  	rc = sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_PMASZ, libc.VaList(bp, *(*int32)(unsafe.Pointer(bp + 8))))
 50276  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(1))
 50277  
 50278  	return TCL_OK
 50279  }
 50280  
 50281  func test_dump_memsys3(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 50282  	if objc != 2 {
 50283  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+32930)
 50284  		return TCL_ERROR
 50285  	}
 50286  
 50287  	switch int32(clientData) {
 50288  	case 3:
 50289  		{
 50290  		}
 50291  		fallthrough
 50292  	case 5:
 50293  		{
 50294  		}
 50295  	}
 50296  	return TCL_OK
 50297  }
 50298  
 50299  func test_status(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 50300  	bp := tls.Alloc(16)
 50301  	defer tls.Free(16)
 50302  
 50303  	var rc int32
 50304  
 50305  	var i int32
 50306  	*(*int32)(unsafe.Pointer(bp)) = 0
 50307  
 50308  	var zOpName uintptr
 50309  	var pResult uintptr
 50310  	if objc != 3 {
 50311  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+33318)
 50312  		return TCL_ERROR
 50313  	}
 50314  	zOpName = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 50315  	for i = 0; i < int32(uint64(unsafe.Sizeof(aOp1))/uint64(unsafe.Sizeof(struct {
 50316  		FzName       uintptr
 50317  		Fop          int32
 50318  		F__ccgo_pad1 [4]byte
 50319  	}{}))); i++ {
 50320  		if libc.Xstrcmp(tls, aOp1[i].FzName, zOpName) == 0 {
 50321  			*(*int32)(unsafe.Pointer(bp)) = aOp1[i].Fop
 50322  			break
 50323  		}
 50324  	}
 50325  	if i >= int32(uint64(unsafe.Sizeof(aOp1))/uint64(unsafe.Sizeof(struct {
 50326  		FzName       uintptr
 50327  		Fop          int32
 50328  		F__ccgo_pad1 [4]byte
 50329  	}{}))) {
 50330  		if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp) != 0 {
 50331  			return TCL_ERROR
 50332  		}
 50333  	}
 50334  	if tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+4) != 0 {
 50335  		return TCL_ERROR
 50336  	}
 50337  	*(*int32)(unsafe.Pointer(bp + 8)) = 0
 50338  	*(*int32)(unsafe.Pointer(bp + 12)) = 0
 50339  	rc = sqlite3.Xsqlite3_status(tls, *(*int32)(unsafe.Pointer(bp)), bp+8, bp+12, *(*int32)(unsafe.Pointer(bp + 4)))
 50340  	pResult = tcl.XTcl_NewObj(tls)
 50341  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pResult, tcl.XTcl_NewIntObj(tls, rc))
 50342  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pResult, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 8))))
 50343  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pResult, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 12))))
 50344  	tcl.XTcl_SetObjResult(tls, interp, pResult)
 50345  	return TCL_OK
 50346  }
 50347  
 50348  var aOp1 = [10]struct {
 50349  	FzName       uintptr
 50350  	Fop          int32
 50351  	F__ccgo_pad1 [4]byte
 50352  }{
 50353  	{FzName: ts + 33338},
 50354  	{FzName: ts + 33364, Fop: SQLITE_STATUS_MALLOC_SIZE},
 50355  	{FzName: ts + 33390, Fop: SQLITE_STATUS_PAGECACHE_USED},
 50356  	{FzName: ts + 33419, Fop: SQLITE_STATUS_PAGECACHE_OVERFLOW},
 50357  	{FzName: ts + 33452, Fop: SQLITE_STATUS_PAGECACHE_SIZE},
 50358  	{FzName: ts + 33481, Fop: SQLITE_STATUS_SCRATCH_USED},
 50359  	{FzName: ts + 33508, Fop: SQLITE_STATUS_SCRATCH_OVERFLOW},
 50360  	{FzName: ts + 33539, Fop: SQLITE_STATUS_SCRATCH_SIZE},
 50361  	{FzName: ts + 33566, Fop: SQLITE_STATUS_PARSER_STACK},
 50362  	{FzName: ts + 33593, Fop: SQLITE_STATUS_MALLOC_COUNT},
 50363  }
 50364  
 50365  func test_db_status(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 50366  	bp := tls.Alloc(24)
 50367  	defer tls.Free(24)
 50368  
 50369  	var rc int32
 50370  
 50371  	var i int32
 50372  	*(*int32)(unsafe.Pointer(bp + 8)) = 0
 50373  
 50374  	var zOpName uintptr
 50375  
 50376  	var pResult uintptr
 50377  	if objc != 4 {
 50378  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+33620)
 50379  		return TCL_ERROR
 50380  	}
 50381  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 50382  		return TCL_ERROR
 50383  	}
 50384  	zOpName = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 50385  	if libc.Xmemcmp(tls, zOpName, ts+33643, uint64(7)) == 0 {
 50386  		zOpName += uintptr(7)
 50387  	}
 50388  	if libc.Xmemcmp(tls, zOpName, ts+33651, uint64(9)) == 0 {
 50389  		zOpName += uintptr(9)
 50390  	}
 50391  	for i = 0; i < int32(uint64(unsafe.Sizeof(aOp2))/uint64(unsafe.Sizeof(struct {
 50392  		FzName       uintptr
 50393  		Fop          int32
 50394  		F__ccgo_pad1 [4]byte
 50395  	}{}))); i++ {
 50396  		if libc.Xstrcmp(tls, aOp2[i].FzName, zOpName) == 0 {
 50397  			*(*int32)(unsafe.Pointer(bp + 8)) = aOp2[i].Fop
 50398  			break
 50399  		}
 50400  	}
 50401  	if i >= int32(uint64(unsafe.Sizeof(aOp2))/uint64(unsafe.Sizeof(struct {
 50402  		FzName       uintptr
 50403  		Fop          int32
 50404  		F__ccgo_pad1 [4]byte
 50405  	}{}))) {
 50406  		if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+8) != 0 {
 50407  			return TCL_ERROR
 50408  		}
 50409  	}
 50410  	if tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+12) != 0 {
 50411  		return TCL_ERROR
 50412  	}
 50413  	*(*int32)(unsafe.Pointer(bp + 16)) = 0
 50414  	*(*int32)(unsafe.Pointer(bp + 20)) = 0
 50415  	rc = sqlite3.Xsqlite3_db_status(tls, *(*uintptr)(unsafe.Pointer(bp)), *(*int32)(unsafe.Pointer(bp + 8)), bp+16, bp+20, *(*int32)(unsafe.Pointer(bp + 12)))
 50416  	pResult = tcl.XTcl_NewObj(tls)
 50417  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pResult, tcl.XTcl_NewIntObj(tls, rc))
 50418  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pResult, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 16))))
 50419  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pResult, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 20))))
 50420  	tcl.XTcl_SetObjResult(tls, interp, pResult)
 50421  	return TCL_OK
 50422  }
 50423  
 50424  var aOp2 = [13]struct {
 50425  	FzName       uintptr
 50426  	Fop          int32
 50427  	F__ccgo_pad1 [4]byte
 50428  }{
 50429  	{FzName: ts + 33661},
 50430  	{FzName: ts + 33676, Fop: SQLITE_DBSTATUS_CACHE_USED},
 50431  	{FzName: ts + 33687, Fop: SQLITE_DBSTATUS_SCHEMA_USED},
 50432  	{FzName: ts + 33699, Fop: SQLITE_DBSTATUS_STMT_USED},
 50433  	{FzName: ts + 33709, Fop: SQLITE_DBSTATUS_LOOKASIDE_HIT},
 50434  	{FzName: ts + 33723, Fop: SQLITE_DBSTATUS_LOOKASIDE_MISS_SIZE},
 50435  	{FzName: ts + 33743, Fop: SQLITE_DBSTATUS_LOOKASIDE_MISS_FULL},
 50436  	{FzName: ts + 33763, Fop: SQLITE_DBSTATUS_CACHE_HIT},
 50437  	{FzName: ts + 33773, Fop: SQLITE_DBSTATUS_CACHE_MISS},
 50438  	{FzName: ts + 33784, Fop: SQLITE_DBSTATUS_CACHE_WRITE},
 50439  	{FzName: ts + 33796, Fop: SQLITE_DBSTATUS_DEFERRED_FKS},
 50440  	{FzName: ts + 33809, Fop: SQLITE_DBSTATUS_CACHE_USED_SHARED},
 50441  	{FzName: ts + 33827, Fop: SQLITE_DBSTATUS_CACHE_SPILL},
 50442  }
 50443  
 50444  func test_install_malloc_faultsim(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 50445  	bp := tls.Alloc(4)
 50446  	defer tls.Free(4)
 50447  
 50448  	var rc int32
 50449  
 50450  	if objc != 2 {
 50451  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+18238)
 50452  		return TCL_ERROR
 50453  	}
 50454  	if TCL_OK != tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp) {
 50455  		return TCL_ERROR
 50456  	}
 50457  	rc = faultsimInstall(tls, *(*int32)(unsafe.Pointer(bp)))
 50458  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(1))
 50459  	return TCL_OK
 50460  }
 50461  
 50462  func test_install_memsys3(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 50463  	var rc int32 = SQLITE_MISUSE
 50464  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(1))
 50465  	return TCL_OK
 50466  }
 50467  
 50468  func test_vfs_oom_test(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 50469  	bp := tls.Alloc(4)
 50470  	defer tls.Free(4)
 50471  
 50472  	if objc > 2 {
 50473  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+33839)
 50474  		return TCL_ERROR
 50475  	} else if objc == 2 {
 50476  		if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp) != 0 {
 50477  			return TCL_ERROR
 50478  		}
 50479  		sqlite3.Xsqlite3_memdebug_vfs_oom_test = *(*int32)(unsafe.Pointer(bp))
 50480  	}
 50481  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, sqlite3.Xsqlite3_memdebug_vfs_oom_test))
 50482  	return TCL_OK
 50483  }
 50484  
 50485  func Sqlitetest_malloc_Init(tls *libc.TLS, interp uintptr) int32 {
 50486  	var i int32
 50487  	for i = 0; uint64(i) < uint64(unsafe.Sizeof(aObjCmd11))/uint64(unsafe.Sizeof(struct {
 50488  		FzName       uintptr
 50489  		FxProc       uintptr
 50490  		FclientData  int32
 50491  		F__ccgo_pad1 [4]byte
 50492  	}{})); i++ {
 50493  		var c ClientData = uintptr(intptr_t(aObjCmd11[i].FclientData))
 50494  		tcl.XTcl_CreateObjCommand(tls, interp, aObjCmd11[i].FzName, aObjCmd11[i].FxProc, c, uintptr(0))
 50495  	}
 50496  	return TCL_OK
 50497  }
 50498  
 50499  var aObjCmd11 = [32]struct {
 50500  	FzName       uintptr
 50501  	FxProc       uintptr
 50502  	FclientData  int32
 50503  	F__ccgo_pad1 [4]byte
 50504  }{
 50505  	{FzName: ts + 28095, FxProc: 0},
 50506  	{FzName: ts + 28110, FxProc: 0},
 50507  	{FzName: ts + 33849, FxProc: 0},
 50508  	{FzName: ts + 33862, FxProc: 0},
 50509  	{FzName: ts + 33869, FxProc: 0},
 50510  	{FzName: ts + 33876, FxProc: 0},
 50511  	{FzName: ts + 33896, FxProc: 0},
 50512  	{FzName: ts + 33921, FxProc: 0},
 50513  	{FzName: ts + 33948, FxProc: 0},
 50514  	{FzName: ts + 33970, FxProc: 0},
 50515  	{FzName: ts + 33992, FxProc: 0},
 50516  	{FzName: ts + 34017, FxProc: 0},
 50517  	{FzName: ts + 34043, FxProc: 0},
 50518  	{FzName: ts + 34073, FxProc: 0},
 50519  	{FzName: ts + 34094, FxProc: 0},
 50520  	{FzName: ts + 34119, FxProc: 0},
 50521  	{FzName: ts + 34145, FxProc: 0},
 50522  	{FzName: ts + 34160, FxProc: 0},
 50523  	{FzName: ts + 34178, FxProc: 0},
 50524  	{FzName: ts + 34202, FxProc: 0},
 50525  	{FzName: ts + 34222, FxProc: 0},
 50526  	{FzName: ts + 34247, FxProc: 0},
 50527  	{FzName: ts + 34272, FxProc: 0},
 50528  	{FzName: ts + 34297, FxProc: 0},
 50529  	{FzName: ts + 34318, FxProc: 0},
 50530  	{FzName: ts + 34337, FxProc: 0},
 50531  	{FzName: ts + 34356, FxProc: 0},
 50532  	{FzName: ts + 34377, FxProc: 0},
 50533  	{FzName: ts + 34405, FxProc: 0, FclientData: 3},
 50534  	{FzName: ts + 34426, FxProc: 0, FclientData: 5},
 50535  	{FzName: ts + 34447, FxProc: 0},
 50536  	{FzName: ts + 34471, FxProc: 0},
 50537  }
 50538  
 50539  type fd_set4 = struct{ F__fds_bits [16]int64 }
 50540  
 50541  type MD5Context1 = struct {
 50542  	FisInit int32
 50543  	Fbuf    [4]uint32
 50544  	Fbits   [2]uint32
 50545  	Fin     [64]uint8
 50546  }
 50547  
 50548  type MD5Context = MD5Context1
 50549  
 50550  func byteReverse(tls *libc.TLS, buf uintptr, longs uint32) {
 50551  	var t uint32
 50552  	for __ccgo := true; __ccgo; __ccgo = libc.PreDecUint32(&longs, 1) != 0 {
 50553  		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))))
 50554  		*(*uint32)(unsafe.Pointer(buf)) = t
 50555  		buf += uintptr(4)
 50556  	}
 50557  }
 50558  
 50559  func MD5Transform(tls *libc.TLS, buf uintptr, in uintptr) {
 50560  	var a uint32
 50561  	var b uint32
 50562  	var c uint32
 50563  	var d uint32
 50564  
 50565  	a = *(*uint32)(unsafe.Pointer(buf))
 50566  	b = *(*uint32)(unsafe.Pointer(buf + 1*4))
 50567  	c = *(*uint32)(unsafe.Pointer(buf + 2*4))
 50568  	d = *(*uint32)(unsafe.Pointer(buf + 3*4))
 50569  
 50570  	a = a + (d ^ b&(c^d) + *(*uint32)(unsafe.Pointer(in)) + 0xd76aa478)
 50571  	a = a<<7 | a>>(32-7)
 50572  	a = a + b
 50573  	d = d + (c ^ a&(b^c) + *(*uint32)(unsafe.Pointer(in + 1*4)) + 0xe8c7b756)
 50574  	d = d<<12 | d>>(32-12)
 50575  	d = d + a
 50576  	c = c + (b ^ d&(a^b) + *(*uint32)(unsafe.Pointer(in + 2*4)) + uint32(0x242070db))
 50577  	c = c<<17 | c>>(32-17)
 50578  	c = c + d
 50579  	b = b + (a ^ c&(d^a) + *(*uint32)(unsafe.Pointer(in + 3*4)) + 0xc1bdceee)
 50580  	b = b<<22 | b>>(32-22)
 50581  	b = b + c
 50582  	a = a + (d ^ b&(c^d) + *(*uint32)(unsafe.Pointer(in + 4*4)) + 0xf57c0faf)
 50583  	a = a<<7 | a>>(32-7)
 50584  	a = a + b
 50585  	d = d + (c ^ a&(b^c) + *(*uint32)(unsafe.Pointer(in + 5*4)) + uint32(0x4787c62a))
 50586  	d = d<<12 | d>>(32-12)
 50587  	d = d + a
 50588  	c = c + (b ^ d&(a^b) + *(*uint32)(unsafe.Pointer(in + 6*4)) + 0xa8304613)
 50589  	c = c<<17 | c>>(32-17)
 50590  	c = c + d
 50591  	b = b + (a ^ c&(d^a) + *(*uint32)(unsafe.Pointer(in + 7*4)) + 0xfd469501)
 50592  	b = b<<22 | b>>(32-22)
 50593  	b = b + c
 50594  	a = a + (d ^ b&(c^d) + *(*uint32)(unsafe.Pointer(in + 8*4)) + uint32(0x698098d8))
 50595  	a = a<<7 | a>>(32-7)
 50596  	a = a + b
 50597  	d = d + (c ^ a&(b^c) + *(*uint32)(unsafe.Pointer(in + 9*4)) + 0x8b44f7af)
 50598  	d = d<<12 | d>>(32-12)
 50599  	d = d + a
 50600  	c = c + (b ^ d&(a^b) + *(*uint32)(unsafe.Pointer(in + 10*4)) + 0xffff5bb1)
 50601  	c = c<<17 | c>>(32-17)
 50602  	c = c + d
 50603  	b = b + (a ^ c&(d^a) + *(*uint32)(unsafe.Pointer(in + 11*4)) + 0x895cd7be)
 50604  	b = b<<22 | b>>(32-22)
 50605  	b = b + c
 50606  	a = a + (d ^ b&(c^d) + *(*uint32)(unsafe.Pointer(in + 12*4)) + uint32(0x6b901122))
 50607  	a = a<<7 | a>>(32-7)
 50608  	a = a + b
 50609  	d = d + (c ^ a&(b^c) + *(*uint32)(unsafe.Pointer(in + 13*4)) + 0xfd987193)
 50610  	d = d<<12 | d>>(32-12)
 50611  	d = d + a
 50612  	c = c + (b ^ d&(a^b) + *(*uint32)(unsafe.Pointer(in + 14*4)) + 0xa679438e)
 50613  	c = c<<17 | c>>(32-17)
 50614  	c = c + d
 50615  	b = b + (a ^ c&(d^a) + *(*uint32)(unsafe.Pointer(in + 15*4)) + uint32(0x49b40821))
 50616  	b = b<<22 | b>>(32-22)
 50617  	b = b + c
 50618  
 50619  	a = a + (c ^ d&(b^c) + *(*uint32)(unsafe.Pointer(in + 1*4)) + 0xf61e2562)
 50620  	a = a<<5 | a>>(32-5)
 50621  	a = a + b
 50622  	d = d + (b ^ c&(a^b) + *(*uint32)(unsafe.Pointer(in + 6*4)) + 0xc040b340)
 50623  	d = d<<9 | d>>(32-9)
 50624  	d = d + a
 50625  	c = c + (a ^ b&(d^a) + *(*uint32)(unsafe.Pointer(in + 11*4)) + uint32(0x265e5a51))
 50626  	c = c<<14 | c>>(32-14)
 50627  	c = c + d
 50628  	b = b + (d ^ a&(c^d) + *(*uint32)(unsafe.Pointer(in)) + 0xe9b6c7aa)
 50629  	b = b<<20 | b>>(32-20)
 50630  	b = b + c
 50631  	a = a + (c ^ d&(b^c) + *(*uint32)(unsafe.Pointer(in + 5*4)) + 0xd62f105d)
 50632  	a = a<<5 | a>>(32-5)
 50633  	a = a + b
 50634  	d = d + (b ^ c&(a^b) + *(*uint32)(unsafe.Pointer(in + 10*4)) + uint32(0x02441453))
 50635  	d = d<<9 | d>>(32-9)
 50636  	d = d + a
 50637  	c = c + (a ^ b&(d^a) + *(*uint32)(unsafe.Pointer(in + 15*4)) + 0xd8a1e681)
 50638  	c = c<<14 | c>>(32-14)
 50639  	c = c + d
 50640  	b = b + (d ^ a&(c^d) + *(*uint32)(unsafe.Pointer(in + 4*4)) + 0xe7d3fbc8)
 50641  	b = b<<20 | b>>(32-20)
 50642  	b = b + c
 50643  	a = a + (c ^ d&(b^c) + *(*uint32)(unsafe.Pointer(in + 9*4)) + uint32(0x21e1cde6))
 50644  	a = a<<5 | a>>(32-5)
 50645  	a = a + b
 50646  	d = d + (b ^ c&(a^b) + *(*uint32)(unsafe.Pointer(in + 14*4)) + 0xc33707d6)
 50647  	d = d<<9 | d>>(32-9)
 50648  	d = d + a
 50649  	c = c + (a ^ b&(d^a) + *(*uint32)(unsafe.Pointer(in + 3*4)) + 0xf4d50d87)
 50650  	c = c<<14 | c>>(32-14)
 50651  	c = c + d
 50652  	b = b + (d ^ a&(c^d) + *(*uint32)(unsafe.Pointer(in + 8*4)) + uint32(0x455a14ed))
 50653  	b = b<<20 | b>>(32-20)
 50654  	b = b + c
 50655  	a = a + (c ^ d&(b^c) + *(*uint32)(unsafe.Pointer(in + 13*4)) + 0xa9e3e905)
 50656  	a = a<<5 | a>>(32-5)
 50657  	a = a + b
 50658  	d = d + (b ^ c&(a^b) + *(*uint32)(unsafe.Pointer(in + 2*4)) + 0xfcefa3f8)
 50659  	d = d<<9 | d>>(32-9)
 50660  	d = d + a
 50661  	c = c + (a ^ b&(d^a) + *(*uint32)(unsafe.Pointer(in + 7*4)) + uint32(0x676f02d9))
 50662  	c = c<<14 | c>>(32-14)
 50663  	c = c + d
 50664  	b = b + (d ^ a&(c^d) + *(*uint32)(unsafe.Pointer(in + 12*4)) + 0x8d2a4c8a)
 50665  	b = b<<20 | b>>(32-20)
 50666  	b = b + c
 50667  
 50668  	a = a + (b ^ c ^ d + *(*uint32)(unsafe.Pointer(in + 5*4)) + 0xfffa3942)
 50669  	a = a<<4 | a>>(32-4)
 50670  	a = a + b
 50671  	d = d + (a ^ b ^ c + *(*uint32)(unsafe.Pointer(in + 8*4)) + 0x8771f681)
 50672  	d = d<<11 | d>>(32-11)
 50673  	d = d + a
 50674  	c = c + (d ^ a ^ b + *(*uint32)(unsafe.Pointer(in + 11*4)) + uint32(0x6d9d6122))
 50675  	c = c<<16 | c>>(32-16)
 50676  	c = c + d
 50677  	b = b + (c ^ d ^ a + *(*uint32)(unsafe.Pointer(in + 14*4)) + 0xfde5380c)
 50678  	b = b<<23 | b>>(32-23)
 50679  	b = b + c
 50680  	a = a + (b ^ c ^ d + *(*uint32)(unsafe.Pointer(in + 1*4)) + 0xa4beea44)
 50681  	a = a<<4 | a>>(32-4)
 50682  	a = a + b
 50683  	d = d + (a ^ b ^ c + *(*uint32)(unsafe.Pointer(in + 4*4)) + uint32(0x4bdecfa9))
 50684  	d = d<<11 | d>>(32-11)
 50685  	d = d + a
 50686  	c = c + (d ^ a ^ b + *(*uint32)(unsafe.Pointer(in + 7*4)) + 0xf6bb4b60)
 50687  	c = c<<16 | c>>(32-16)
 50688  	c = c + d
 50689  	b = b + (c ^ d ^ a + *(*uint32)(unsafe.Pointer(in + 10*4)) + 0xbebfbc70)
 50690  	b = b<<23 | b>>(32-23)
 50691  	b = b + c
 50692  	a = a + (b ^ c ^ d + *(*uint32)(unsafe.Pointer(in + 13*4)) + uint32(0x289b7ec6))
 50693  	a = a<<4 | a>>(32-4)
 50694  	a = a + b
 50695  	d = d + (a ^ b ^ c + *(*uint32)(unsafe.Pointer(in)) + 0xeaa127fa)
 50696  	d = d<<11 | d>>(32-11)
 50697  	d = d + a
 50698  	c = c + (d ^ a ^ b + *(*uint32)(unsafe.Pointer(in + 3*4)) + 0xd4ef3085)
 50699  	c = c<<16 | c>>(32-16)
 50700  	c = c + d
 50701  	b = b + (c ^ d ^ a + *(*uint32)(unsafe.Pointer(in + 6*4)) + uint32(0x04881d05))
 50702  	b = b<<23 | b>>(32-23)
 50703  	b = b + c
 50704  	a = a + (b ^ c ^ d + *(*uint32)(unsafe.Pointer(in + 9*4)) + 0xd9d4d039)
 50705  	a = a<<4 | a>>(32-4)
 50706  	a = a + b
 50707  	d = d + (a ^ b ^ c + *(*uint32)(unsafe.Pointer(in + 12*4)) + 0xe6db99e5)
 50708  	d = d<<11 | d>>(32-11)
 50709  	d = d + a
 50710  	c = c + (d ^ a ^ b + *(*uint32)(unsafe.Pointer(in + 15*4)) + uint32(0x1fa27cf8))
 50711  	c = c<<16 | c>>(32-16)
 50712  	c = c + d
 50713  	b = b + (c ^ d ^ a + *(*uint32)(unsafe.Pointer(in + 2*4)) + 0xc4ac5665)
 50714  	b = b<<23 | b>>(32-23)
 50715  	b = b + c
 50716  
 50717  	a = a + (c ^ (b | ^d) + *(*uint32)(unsafe.Pointer(in)) + 0xf4292244)
 50718  	a = a<<6 | a>>(32-6)
 50719  	a = a + b
 50720  	d = d + (b ^ (a | ^c) + *(*uint32)(unsafe.Pointer(in + 7*4)) + uint32(0x432aff97))
 50721  	d = d<<10 | d>>(32-10)
 50722  	d = d + a
 50723  	c = c + (a ^ (d | ^b) + *(*uint32)(unsafe.Pointer(in + 14*4)) + 0xab9423a7)
 50724  	c = c<<15 | c>>(32-15)
 50725  	c = c + d
 50726  	b = b + (d ^ (c | ^a) + *(*uint32)(unsafe.Pointer(in + 5*4)) + 0xfc93a039)
 50727  	b = b<<21 | b>>(32-21)
 50728  	b = b + c
 50729  	a = a + (c ^ (b | ^d) + *(*uint32)(unsafe.Pointer(in + 12*4)) + uint32(0x655b59c3))
 50730  	a = a<<6 | a>>(32-6)
 50731  	a = a + b
 50732  	d = d + (b ^ (a | ^c) + *(*uint32)(unsafe.Pointer(in + 3*4)) + 0x8f0ccc92)
 50733  	d = d<<10 | d>>(32-10)
 50734  	d = d + a
 50735  	c = c + (a ^ (d | ^b) + *(*uint32)(unsafe.Pointer(in + 10*4)) + 0xffeff47d)
 50736  	c = c<<15 | c>>(32-15)
 50737  	c = c + d
 50738  	b = b + (d ^ (c | ^a) + *(*uint32)(unsafe.Pointer(in + 1*4)) + 0x85845dd1)
 50739  	b = b<<21 | b>>(32-21)
 50740  	b = b + c
 50741  	a = a + (c ^ (b | ^d) + *(*uint32)(unsafe.Pointer(in + 8*4)) + uint32(0x6fa87e4f))
 50742  	a = a<<6 | a>>(32-6)
 50743  	a = a + b
 50744  	d = d + (b ^ (a | ^c) + *(*uint32)(unsafe.Pointer(in + 15*4)) + 0xfe2ce6e0)
 50745  	d = d<<10 | d>>(32-10)
 50746  	d = d + a
 50747  	c = c + (a ^ (d | ^b) + *(*uint32)(unsafe.Pointer(in + 6*4)) + 0xa3014314)
 50748  	c = c<<15 | c>>(32-15)
 50749  	c = c + d
 50750  	b = b + (d ^ (c | ^a) + *(*uint32)(unsafe.Pointer(in + 13*4)) + uint32(0x4e0811a1))
 50751  	b = b<<21 | b>>(32-21)
 50752  	b = b + c
 50753  	a = a + (c ^ (b | ^d) + *(*uint32)(unsafe.Pointer(in + 4*4)) + 0xf7537e82)
 50754  	a = a<<6 | a>>(32-6)
 50755  	a = a + b
 50756  	d = d + (b ^ (a | ^c) + *(*uint32)(unsafe.Pointer(in + 11*4)) + 0xbd3af235)
 50757  	d = d<<10 | d>>(32-10)
 50758  	d = d + a
 50759  	c = c + (a ^ (d | ^b) + *(*uint32)(unsafe.Pointer(in + 2*4)) + uint32(0x2ad7d2bb))
 50760  	c = c<<15 | c>>(32-15)
 50761  	c = c + d
 50762  	b = b + (d ^ (c | ^a) + *(*uint32)(unsafe.Pointer(in + 9*4)) + 0xeb86d391)
 50763  	b = b<<21 | b>>(32-21)
 50764  	b = b + c
 50765  
 50766  	*(*uint32)(unsafe.Pointer(buf)) += a
 50767  	*(*uint32)(unsafe.Pointer(buf + 1*4)) += b
 50768  	*(*uint32)(unsafe.Pointer(buf + 2*4)) += c
 50769  	*(*uint32)(unsafe.Pointer(buf + 3*4)) += d
 50770  }
 50771  
 50772  func MD5Init(tls *libc.TLS, ctx uintptr) {
 50773  	(*MD5Context)(unsafe.Pointer(ctx)).FisInit = 1
 50774  	*(*uint32)(unsafe.Pointer(ctx + 4)) = uint32(0x67452301)
 50775  	*(*uint32)(unsafe.Pointer(ctx + 4 + 1*4)) = 0xefcdab89
 50776  	*(*uint32)(unsafe.Pointer(ctx + 4 + 2*4)) = 0x98badcfe
 50777  	*(*uint32)(unsafe.Pointer(ctx + 4 + 3*4)) = uint32(0x10325476)
 50778  	*(*uint32)(unsafe.Pointer(ctx + 20)) = uint32(0)
 50779  	*(*uint32)(unsafe.Pointer(ctx + 20 + 1*4)) = uint32(0)
 50780  }
 50781  
 50782  func MD5Update(tls *libc.TLS, ctx uintptr, buf uintptr, len uint32) {
 50783  	var t uint32
 50784  
 50785  	t = *(*uint32)(unsafe.Pointer(ctx + 20))
 50786  	if libc.AssignPtrUint32(ctx+20, t+len<<3) < t {
 50787  		*(*uint32)(unsafe.Pointer(ctx + 20 + 1*4))++
 50788  	}
 50789  	*(*uint32)(unsafe.Pointer(ctx + 20 + 1*4)) += len >> 29
 50790  
 50791  	t = t >> 3 & uint32(0x3f)
 50792  
 50793  	if t != 0 {
 50794  		var p uintptr = ctx + 28 + uintptr(t)
 50795  
 50796  		t = uint32(64) - t
 50797  		if len < t {
 50798  			libc.Xmemcpy(tls, p, buf, uint64(len))
 50799  			return
 50800  		}
 50801  		libc.Xmemcpy(tls, p, buf, uint64(t))
 50802  		byteReverse(tls, ctx+28, uint32(16))
 50803  		MD5Transform(tls, ctx+4, ctx+28)
 50804  		buf += uintptr(t)
 50805  		len = len - t
 50806  	}
 50807  
 50808  	for len >= uint32(64) {
 50809  		libc.Xmemcpy(tls, ctx+28, buf, uint64(64))
 50810  		byteReverse(tls, ctx+28, uint32(16))
 50811  		MD5Transform(tls, ctx+4, ctx+28)
 50812  		buf += uintptr(64)
 50813  		len = len - uint32(64)
 50814  	}
 50815  
 50816  	libc.Xmemcpy(tls, ctx+28, buf, uint64(len))
 50817  }
 50818  
 50819  func MD5Final(tls *libc.TLS, digest uintptr, ctx uintptr) {
 50820  	var count uint32
 50821  	var p uintptr
 50822  
 50823  	count = *(*uint32)(unsafe.Pointer(ctx + 20)) >> 3 & uint32(0x3F)
 50824  
 50825  	p = ctx + 28 + uintptr(count)
 50826  	*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&p, 1))) = uint8(0x80)
 50827  
 50828  	count = uint32(64-1) - count
 50829  
 50830  	if count < uint32(8) {
 50831  		libc.Xmemset(tls, p, 0, uint64(count))
 50832  		byteReverse(tls, ctx+28, uint32(16))
 50833  		MD5Transform(tls, ctx+4, ctx+28)
 50834  
 50835  		libc.Xmemset(tls, ctx+28, 0, uint64(56))
 50836  	} else {
 50837  		libc.Xmemset(tls, p, 0, uint64(count-uint32(8)))
 50838  	}
 50839  	byteReverse(tls, ctx+28, uint32(14))
 50840  
 50841  	libc.Xmemcpy(tls, ctx+28+uintptr(14*4), ctx+20, uint64(8))
 50842  
 50843  	MD5Transform(tls, ctx+4, ctx+28)
 50844  	byteReverse(tls, ctx+4, uint32(4))
 50845  	libc.Xmemcpy(tls, digest, ctx+4, uint64(16))
 50846  }
 50847  
 50848  func MD5DigestToBase16(tls *libc.TLS, digest uintptr, zBuf uintptr) {
 50849  	var i int32
 50850  	var j int32
 50851  
 50852  	for j = libc.AssignInt32(&i, 0); i < 16; i++ {
 50853  		var a int32 = int32(*(*uint8)(unsafe.Pointer(digest + uintptr(i))))
 50854  		*(*uint8)(unsafe.Pointer(zBuf + uintptr(libc.PostIncInt32(&j, 1)))) = zEncode[a>>4&0xf]
 50855  		*(*uint8)(unsafe.Pointer(zBuf + uintptr(libc.PostIncInt32(&j, 1)))) = zEncode[a&0xf]
 50856  	}
 50857  	*(*uint8)(unsafe.Pointer(zBuf + uintptr(j))) = uint8(0)
 50858  }
 50859  
 50860  var zEncode = *(*[17]uint8)(unsafe.Pointer(ts + 31194))
 50861  
 50862  func MD5DigestToBase10x8(tls *libc.TLS, digest uintptr, zDigest uintptr) {
 50863  	bp := tls.Alloc(8)
 50864  	defer tls.Free(8)
 50865  
 50866  	var i int32
 50867  	var j int32
 50868  	var x uint32
 50869  	for i = libc.AssignInt32(&j, 0); i < 16; i = i + 2 {
 50870  		x = uint32(int32(*(*uint8)(unsafe.Pointer(digest + uintptr(i))))*256 + int32(*(*uint8)(unsafe.Pointer(digest + uintptr(i+1)))))
 50871  		if i > 0 {
 50872  			*(*uint8)(unsafe.Pointer(zDigest + uintptr(libc.PostIncInt32(&j, 1)))) = uint8('-')
 50873  		}
 50874  		sqlite3.Xsqlite3_snprintf(tls, 50-j, zDigest+uintptr(j), ts+34501, libc.VaList(bp, x))
 50875  		j = j + 5
 50876  	}
 50877  	*(*uint8)(unsafe.Pointer(zDigest + uintptr(j))) = uint8(0)
 50878  }
 50879  
 50880  func md5_cmd(tls *libc.TLS, cd uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 50881  	bp := tls.Alloc(206)
 50882  	defer tls.Free(206)
 50883  
 50884  	var converter uintptr
 50885  
 50886  	if argc != 2 {
 50887  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 50888  			ts+15307, uintptr(0)))
 50889  		return TCL_ERROR
 50890  	}
 50891  	MD5Init(tls, bp+48)
 50892  	MD5Update(tls, bp+48, *(*uintptr)(unsafe.Pointer(argv + 1*8)), uint32(libc.Xstrlen(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))))
 50893  	MD5Final(tls, bp+140, bp+48)
 50894  	converter = cd
 50895  	(*struct {
 50896  		f func(*libc.TLS, uintptr, uintptr)
 50897  	})(unsafe.Pointer(&struct{ uintptr }{converter})).f(tls, bp+140, bp+156)
 50898  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, bp+156, uintptr(0)))
 50899  	return TCL_OK
 50900  }
 50901  
 50902  func md5file_cmd(tls *libc.TLS, cd uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 50903  	bp := tls.Alloc(10428)
 50904  	defer tls.Free(10428)
 50905  
 50906  	var in uintptr
 50907  	var ofst int32
 50908  	var amt int32
 50909  
 50910  	var converter uintptr
 50911  
 50912  	if argc != 2 && argc != 4 {
 50913  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 50914  			ts+34506, uintptr(0)))
 50915  		return TCL_ERROR
 50916  	}
 50917  	if argc == 4 {
 50918  		ofst = libc.Xatoi(tls, *(*uintptr)(unsafe.Pointer(argv + 2*8)))
 50919  		amt = libc.Xatoi(tls, *(*uintptr)(unsafe.Pointer(argv + 3*8)))
 50920  	} else {
 50921  		ofst = 0
 50922  		amt = 2147483647
 50923  	}
 50924  	in = libc.Xfopen(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)), ts+4402)
 50925  	if in == uintptr(0) {
 50926  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+34530, *(*uintptr)(unsafe.Pointer(argv + 1*8)),
 50927  			ts+34552, uintptr(0)))
 50928  		return TCL_ERROR
 50929  	}
 50930  	libc.Xfseek(tls, in, int64(ofst), SEEK_SET)
 50931  	MD5Init(tls, bp+80)
 50932  	for amt > 0 {
 50933  		var n int32
 50934  		n = int32(libc.Xfread(tls, bp+172, uint64(1), func() uint64 {
 50935  			if uint64(unsafe.Sizeof([10240]uint8{})) <= uint64(amt) {
 50936  				return uint64(unsafe.Sizeof([10240]uint8{}))
 50937  			}
 50938  			return uint64(amt)
 50939  		}(), in))
 50940  		if n <= 0 {
 50941  			break
 50942  		}
 50943  		MD5Update(tls, bp+80, bp+172, uint32(n))
 50944  		amt = amt - n
 50945  	}
 50946  	libc.Xfclose(tls, in)
 50947  	MD5Final(tls, bp+10412, bp+80)
 50948  	converter = cd
 50949  	(*struct {
 50950  		f func(*libc.TLS, uintptr, uintptr)
 50951  	})(unsafe.Pointer(&struct{ uintptr }{converter})).f(tls, bp+10412, bp+172)
 50952  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+64, bp+172, uintptr(0)))
 50953  	return TCL_OK
 50954  }
 50955  
 50956  func Md5_Init(tls *libc.TLS, interp uintptr) int32 {
 50957  	tcl.XTcl_CreateCommand(tls, interp, ts+34566, *(*uintptr)(unsafe.Pointer(&struct {
 50958  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 50959  	}{md5_cmd})),
 50960  		*(*uintptr)(unsafe.Pointer(&struct {
 50961  			f func(*libc.TLS, uintptr, uintptr)
 50962  		}{MD5DigestToBase16})), uintptr(0))
 50963  	tcl.XTcl_CreateCommand(tls, interp, ts+34570, *(*uintptr)(unsafe.Pointer(&struct {
 50964  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 50965  	}{md5_cmd})),
 50966  		*(*uintptr)(unsafe.Pointer(&struct {
 50967  			f func(*libc.TLS, uintptr, uintptr)
 50968  		}{MD5DigestToBase10x8})), uintptr(0))
 50969  	tcl.XTcl_CreateCommand(tls, interp, ts+34579, *(*uintptr)(unsafe.Pointer(&struct {
 50970  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 50971  	}{md5file_cmd})),
 50972  		*(*uintptr)(unsafe.Pointer(&struct {
 50973  			f func(*libc.TLS, uintptr, uintptr)
 50974  		}{MD5DigestToBase16})), uintptr(0))
 50975  	tcl.XTcl_CreateCommand(tls, interp, ts+34587, *(*uintptr)(unsafe.Pointer(&struct {
 50976  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 50977  	}{md5file_cmd})),
 50978  		*(*uintptr)(unsafe.Pointer(&struct {
 50979  			f func(*libc.TLS, uintptr, uintptr)
 50980  		}{MD5DigestToBase10x8})), uintptr(0))
 50981  	return TCL_OK
 50982  }
 50983  
 50984  func md5step(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 50985  	var p uintptr
 50986  	var i int32
 50987  	if argc < 1 {
 50988  		return
 50989  	}
 50990  	p = sqlite3.Xsqlite3_aggregate_context(tls, context, int32(unsafe.Sizeof(MD5Context{})))
 50991  	if p == uintptr(0) {
 50992  		return
 50993  	}
 50994  	if !((*MD5Context)(unsafe.Pointer(p)).FisInit != 0) {
 50995  		MD5Init(tls, p)
 50996  	}
 50997  	for i = 0; i < argc; i++ {
 50998  		var zData uintptr = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8)))
 50999  		if zData != 0 {
 51000  			MD5Update(tls, p, zData, uint32(int32(libc.Xstrlen(tls, zData))))
 51001  		}
 51002  	}
 51003  }
 51004  
 51005  func md5finalize(tls *libc.TLS, context uintptr) {
 51006  	bp := tls.Alloc(49)
 51007  	defer tls.Free(49)
 51008  
 51009  	var p uintptr
 51010  
 51011  	p = sqlite3.Xsqlite3_aggregate_context(tls, context, int32(unsafe.Sizeof(MD5Context{})))
 51012  	MD5Final(tls, bp, p)
 51013  	MD5DigestToBase16(tls, bp, bp+16)
 51014  	sqlite3.Xsqlite3_result_text(tls, context, bp+16, -1, libc.UintptrFromInt32(-1))
 51015  }
 51016  
 51017  func Md5_Register(tls *libc.TLS, db uintptr, pzErrMsg uintptr, pThunk uintptr) int32 {
 51018  	var rc int32 = sqlite3.Xsqlite3_create_function(tls, db, ts+34600, -1, SQLITE_UTF8, uintptr(0), uintptr(0),
 51019  		*(*uintptr)(unsafe.Pointer(&struct {
 51020  			f func(*libc.TLS, uintptr, int32, uintptr)
 51021  		}{md5step})), *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{md5finalize})))
 51022  	sqlite3.Xsqlite3_overload_function(tls, db, ts+34600, -1)
 51023  	return rc
 51024  }
 51025  
 51026  type multiplexGroup1 = struct {
 51027  	FaReal       uintptr
 51028  	FnReal       int32
 51029  	F__ccgo_pad1 [4]byte
 51030  	FzName       uintptr
 51031  	FnName       int32
 51032  	Fflags       int32
 51033  	FszChunk     uint32
 51034  	FbEnabled    uint8
 51035  	FbTruncate   uint8
 51036  	F__ccgo_pad2 [2]byte
 51037  }
 51038  
 51039  type multiplexGroup = multiplexGroup1
 51040  type multiplexConn1 = struct {
 51041  	Fbase   sqlite3_file
 51042  	FpGroup uintptr
 51043  }
 51044  
 51045  type multiplexConn = multiplexConn1
 51046  
 51047  type multiplexReal = struct {
 51048  	Fp uintptr
 51049  	Fz uintptr
 51050  }
 51051  
 51052  var gMultiplex struct {
 51053  	FpOrigVfs      uintptr
 51054  	FsThisVfs      sqlite3_vfs
 51055  	FsIoMethodsV1  sqlite3_io_methods
 51056  	FsIoMethodsV2  sqlite3_io_methods
 51057  	FisInitialized int32
 51058  	F__ccgo_pad1   [4]byte
 51059  }
 51060  
 51061  func multiplexStrlen30(tls *libc.TLS, z uintptr) int32 {
 51062  	var z2 uintptr = z
 51063  	if z == uintptr(0) {
 51064  		return 0
 51065  	}
 51066  	for *(*uint8)(unsafe.Pointer(z2)) != 0 {
 51067  		z2++
 51068  	}
 51069  	return 0x3fffffff & int32((int64(z2)-int64(z))/1)
 51070  }
 51071  
 51072  func multiplexFilename(tls *libc.TLS, zBase uintptr, nBase int32, flags int32, iChunk int32, zOut uintptr) {
 51073  	bp := tls.Alloc(8)
 51074  	defer tls.Free(8)
 51075  
 51076  	var n int32 = nBase
 51077  	libc.Xmemcpy(tls, zOut, zBase, uint64(n+1))
 51078  	if iChunk != 0 && iChunk <= MX_CHUNK_NUMBER {
 51079  		sqlite3.Xsqlite3_snprintf(tls, 4, zOut+uintptr(n), ts+34607, libc.VaList(bp, iChunk))
 51080  		n = n + 3
 51081  	}
 51082  
 51083  	*(*uint8)(unsafe.Pointer(zOut + uintptr(n+1))) = uint8(0)
 51084  }
 51085  
 51086  func multiplexSubFilename(tls *libc.TLS, pGroup uintptr, iChunk int32) int32 {
 51087  	if iChunk >= (*multiplexGroup)(unsafe.Pointer(pGroup)).FnReal {
 51088  		var p uintptr
 51089  		p = sqlite3.Xsqlite3_realloc64(tls, (*multiplexGroup)(unsafe.Pointer(pGroup)).FaReal, uint64(iChunk+1)*uint64(unsafe.Sizeof(multiplexReal{})))
 51090  		if p == uintptr(0) {
 51091  			return SQLITE_NOMEM
 51092  		}
 51093  		libc.Xmemset(tls, p+uintptr((*multiplexGroup)(unsafe.Pointer(pGroup)).FnReal)*16, 0, uint64(unsafe.Sizeof(multiplexReal{}))*uint64(iChunk+1-(*multiplexGroup)(unsafe.Pointer(pGroup)).FnReal))
 51094  		(*multiplexGroup)(unsafe.Pointer(pGroup)).FaReal = p
 51095  		(*multiplexGroup)(unsafe.Pointer(pGroup)).FnReal = iChunk + 1
 51096  	}
 51097  	if (*multiplexGroup)(unsafe.Pointer(pGroup)).FzName != 0 && (*multiplexReal)(unsafe.Pointer((*multiplexGroup)(unsafe.Pointer(pGroup)).FaReal+uintptr(iChunk)*16)).Fz == uintptr(0) {
 51098  		var z uintptr
 51099  		var n int32 = (*multiplexGroup)(unsafe.Pointer(pGroup)).FnName
 51100  		z = sqlite3.Xsqlite3_malloc64(tls, uint64(n+5))
 51101  		if z == uintptr(0) {
 51102  			return SQLITE_NOMEM
 51103  		}
 51104  		multiplexFilename(tls, (*multiplexGroup)(unsafe.Pointer(pGroup)).FzName, (*multiplexGroup)(unsafe.Pointer(pGroup)).FnName, (*multiplexGroup)(unsafe.Pointer(pGroup)).Fflags, iChunk, z)
 51105  		(*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))
 51106  		sqlite3.Xsqlite3_free(tls, z)
 51107  		if (*multiplexReal)(unsafe.Pointer((*multiplexGroup)(unsafe.Pointer(pGroup)).FaReal+uintptr(iChunk)*16)).Fz == uintptr(0) {
 51108  			return SQLITE_NOMEM
 51109  		}
 51110  	}
 51111  	return SQLITE_OK
 51112  }
 51113  
 51114  func multiplexSubOpen(tls *libc.TLS, pGroup uintptr, iChunk int32, rc uintptr, pOutFlags uintptr, createFlag int32) uintptr {
 51115  	bp := tls.Alloc(20)
 51116  	defer tls.Free(20)
 51117  
 51118  	var pSubOpen uintptr = uintptr(0)
 51119  	var pOrigVfs uintptr = gMultiplex.FpOrigVfs
 51120  
 51121  	*(*int32)(unsafe.Pointer(rc)) = multiplexSubFilename(tls, pGroup, iChunk)
 51122  	if *(*int32)(unsafe.Pointer(rc)) == SQLITE_OK && libc.AssignUintptr(&pSubOpen, (*multiplexReal)(unsafe.Pointer((*multiplexGroup)(unsafe.Pointer(pGroup)).FaReal+uintptr(iChunk)*16)).Fp) == uintptr(0) {
 51123  		var flags int32
 51124  
 51125  		flags = (*multiplexGroup)(unsafe.Pointer(pGroup)).Fflags
 51126  		if createFlag != 0 {
 51127  			flags = flags | SQLITE_OPEN_CREATE
 51128  		} else if iChunk == 0 {
 51129  		} else if (*multiplexReal)(unsafe.Pointer((*multiplexGroup)(unsafe.Pointer(pGroup)).FaReal+uintptr(iChunk)*16)).Fz == uintptr(0) {
 51130  			return uintptr(0)
 51131  		} else {
 51132  			*(*int32)(unsafe.Pointer(rc)) = (*struct {
 51133  				f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 51134  			})(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,
 51135  				SQLITE_ACCESS_EXISTS, bp+16)
 51136  			if *(*int32)(unsafe.Pointer(rc)) != 0 || !(*(*int32)(unsafe.Pointer(bp + 16)) != 0) {
 51137  				if *(*int32)(unsafe.Pointer(rc)) != 0 {
 51138  					sqlite3.Xsqlite3_log(tls, *(*int32)(unsafe.Pointer(rc)), ts+34612,
 51139  						libc.VaList(bp, (*multiplexReal)(unsafe.Pointer((*multiplexGroup)(unsafe.Pointer(pGroup)).FaReal+uintptr(iChunk)*16)).Fz))
 51140  				}
 51141  				return uintptr(0)
 51142  			}
 51143  			flags = flags & libc.CplInt32(SQLITE_OPEN_CREATE)
 51144  		}
 51145  		pSubOpen = sqlite3.Xsqlite3_malloc64(tls, uint64((*sqlite3_vfs)(unsafe.Pointer(pOrigVfs)).FszOsFile))
 51146  		if pSubOpen == uintptr(0) {
 51147  			*(*int32)(unsafe.Pointer(rc)) = SQLITE_IOERR | int32(12)<<8
 51148  			return uintptr(0)
 51149  		}
 51150  		(*multiplexReal)(unsafe.Pointer((*multiplexGroup)(unsafe.Pointer(pGroup)).FaReal + uintptr(iChunk)*16)).Fp = pSubOpen
 51151  		*(*int32)(unsafe.Pointer(rc)) = (*struct {
 51152  			f func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr) int32
 51153  		})(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,
 51154  			flags, pOutFlags)
 51155  		if *(*int32)(unsafe.Pointer(rc)) != SQLITE_OK {
 51156  			sqlite3.Xsqlite3_log(tls, *(*int32)(unsafe.Pointer(rc)), ts+34646,
 51157  				libc.VaList(bp+8, (*multiplexReal)(unsafe.Pointer((*multiplexGroup)(unsafe.Pointer(pGroup)).FaReal+uintptr(iChunk)*16)).Fz))
 51158  			sqlite3.Xsqlite3_free(tls, pSubOpen)
 51159  			(*multiplexReal)(unsafe.Pointer((*multiplexGroup)(unsafe.Pointer(pGroup)).FaReal + uintptr(iChunk)*16)).Fp = uintptr(0)
 51160  			return uintptr(0)
 51161  		}
 51162  	}
 51163  	return pSubOpen
 51164  }
 51165  
 51166  func multiplexSubSize(tls *libc.TLS, pGroup uintptr, iChunk int32, rc uintptr) sqlite3_int64 {
 51167  	bp := tls.Alloc(8)
 51168  	defer tls.Free(8)
 51169  
 51170  	var pSub uintptr
 51171  	*(*sqlite3_int64)(unsafe.Pointer(bp)) = int64(0)
 51172  
 51173  	if *(*int32)(unsafe.Pointer(rc)) != 0 {
 51174  		return int64(0)
 51175  	}
 51176  	pSub = multiplexSubOpen(tls, pGroup, iChunk, rc, uintptr(0), 0)
 51177  	if pSub == uintptr(0) {
 51178  		return int64(0)
 51179  	}
 51180  	*(*int32)(unsafe.Pointer(rc)) = (*struct {
 51181  		f func(*libc.TLS, uintptr, uintptr) int32
 51182  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSub)).FpMethods)).FxFileSize})).f(tls, pSub, bp)
 51183  	return *(*sqlite3_int64)(unsafe.Pointer(bp))
 51184  }
 51185  
 51186  func multiplexControlFunc(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 51187  	bp := tls.Alloc(4)
 51188  	defer tls.Free(4)
 51189  
 51190  	var rc int32 = SQLITE_OK
 51191  	var db uintptr = sqlite3.Xsqlite3_context_db_handle(tls, context)
 51192  	var op int32 = 0
 51193  
 51194  	if !(db != 0) || argc != 2 {
 51195  		rc = SQLITE_ERROR
 51196  	} else {
 51197  		op = sqlite3.Xsqlite3_value_int(tls, *(*uintptr)(unsafe.Pointer(argv)))
 51198  		*(*int32)(unsafe.Pointer(bp)) = sqlite3.Xsqlite3_value_int(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 51199  
 51200  		switch op {
 51201  		case 1:
 51202  			op = MULTIPLEX_CTRL_ENABLE
 51203  			break
 51204  			fallthrough
 51205  		case 2:
 51206  			op = MULTIPLEX_CTRL_SET_CHUNK_SIZE
 51207  			break
 51208  			fallthrough
 51209  		case 3:
 51210  			op = MULTIPLEX_CTRL_SET_MAX_CHUNKS
 51211  			break
 51212  			fallthrough
 51213  		default:
 51214  			rc = SQLITE_NOTFOUND
 51215  			break
 51216  		}
 51217  	}
 51218  	if rc == SQLITE_OK {
 51219  		rc = sqlite3.Xsqlite3_file_control(tls, db, uintptr(0), op, bp)
 51220  	}
 51221  	sqlite3.Xsqlite3_result_error_code(tls, context, rc)
 51222  }
 51223  
 51224  func multiplexFuncInit(tls *libc.TLS, db uintptr, pzErrMsg uintptr, pApi uintptr) int32 {
 51225  	var rc int32
 51226  	rc = sqlite3.Xsqlite3_create_function(tls, db, ts+34678, 2, SQLITE_ANY,
 51227  		uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 51228  			f func(*libc.TLS, uintptr, int32, uintptr)
 51229  		}{multiplexControlFunc})), uintptr(0), uintptr(0))
 51230  	return rc
 51231  }
 51232  
 51233  func multiplexSubClose(tls *libc.TLS, pGroup uintptr, iChunk int32, pOrigVfs uintptr) {
 51234  	var pSubOpen uintptr = (*multiplexReal)(unsafe.Pointer((*multiplexGroup)(unsafe.Pointer(pGroup)).FaReal + uintptr(iChunk)*16)).Fp
 51235  	if pSubOpen != 0 {
 51236  		(*struct {
 51237  			f func(*libc.TLS, uintptr) int32
 51238  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxClose})).f(tls, pSubOpen)
 51239  		if pOrigVfs != 0 && (*multiplexReal)(unsafe.Pointer((*multiplexGroup)(unsafe.Pointer(pGroup)).FaReal+uintptr(iChunk)*16)).Fz != 0 {
 51240  			(*struct {
 51241  				f func(*libc.TLS, uintptr, uintptr, int32) int32
 51242  			})(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)
 51243  		}
 51244  		sqlite3.Xsqlite3_free(tls, (*multiplexReal)(unsafe.Pointer((*multiplexGroup)(unsafe.Pointer(pGroup)).FaReal+uintptr(iChunk)*16)).Fp)
 51245  	}
 51246  	sqlite3.Xsqlite3_free_filename(tls, (*multiplexReal)(unsafe.Pointer((*multiplexGroup)(unsafe.Pointer(pGroup)).FaReal+uintptr(iChunk)*16)).Fz)
 51247  	libc.Xmemset(tls, (*multiplexGroup)(unsafe.Pointer(pGroup)).FaReal+uintptr(iChunk)*16, 0, uint64(unsafe.Sizeof(multiplexReal{})))
 51248  }
 51249  
 51250  func multiplexFreeComponents(tls *libc.TLS, pGroup uintptr) {
 51251  	var i int32
 51252  	for i = 0; i < (*multiplexGroup)(unsafe.Pointer(pGroup)).FnReal; i++ {
 51253  		multiplexSubClose(tls, pGroup, i, uintptr(0))
 51254  	}
 51255  	sqlite3.Xsqlite3_free(tls, (*multiplexGroup)(unsafe.Pointer(pGroup)).FaReal)
 51256  	(*multiplexGroup)(unsafe.Pointer(pGroup)).FaReal = uintptr(0)
 51257  	(*multiplexGroup)(unsafe.Pointer(pGroup)).FnReal = 0
 51258  }
 51259  
 51260  func multiplexOpen(tls *libc.TLS, pVfs uintptr, zName uintptr, pConn uintptr, flags int32, pOutFlags uintptr) int32 {
 51261  	bp := tls.Alloc(20)
 51262  	defer tls.Free(20)
 51263  
 51264  	*(*int32)(unsafe.Pointer(bp)) = SQLITE_OK
 51265  	var pMultiplexOpen uintptr
 51266  	var pGroup uintptr = uintptr(0)
 51267  	var pSubOpen uintptr = uintptr(0)
 51268  	var pOrigVfs uintptr = gMultiplex.FpOrigVfs
 51269  	var nName int32 = 0
 51270  	var sz int32 = 0
 51271  	var zToFree uintptr = uintptr(0)
 51272  
 51273  	_ = pVfs
 51274  	libc.Xmemset(tls, pConn, 0, uint64((*sqlite3_vfs)(unsafe.Pointer(pVfs)).FszOsFile))
 51275  
 51276  	pMultiplexOpen = pConn
 51277  
 51278  	if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK {
 51279  		if zName != 0 {
 51280  			nName = multiplexStrlen30(tls, zName)
 51281  		} else {
 51282  			nName = 0
 51283  		}
 51284  		sz = int32(uint64(unsafe.Sizeof(multiplexGroup{})) +
 51285  			uint64(nName) + uint64(1))
 51286  		pGroup = sqlite3.Xsqlite3_malloc64(tls, uint64(sz))
 51287  		if pGroup == uintptr(0) {
 51288  			*(*int32)(unsafe.Pointer(bp)) = SQLITE_NOMEM
 51289  		}
 51290  	}
 51291  
 51292  	if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK {
 51293  		var zUri uintptr
 51294  		if flags&SQLITE_OPEN_URI != 0 {
 51295  			zUri = zName
 51296  		} else {
 51297  			zUri = uintptr(0)
 51298  		}
 51299  
 51300  		libc.Xmemset(tls, pGroup, 0, uint64(sz))
 51301  		(*multiplexConn)(unsafe.Pointer(pMultiplexOpen)).FpGroup = pGroup
 51302  		(*multiplexGroup)(unsafe.Pointer(pGroup)).FbEnabled = libc.Uint8(libc.Uint8FromInt32(-1))
 51303  		(*multiplexGroup)(unsafe.Pointer(pGroup)).FbTruncate = uint8(sqlite3.Xsqlite3_uri_boolean(tls, zUri, ts+18304,
 51304  			libc.Bool32(flags&SQLITE_OPEN_MAIN_DB == 0)))
 51305  		(*multiplexGroup)(unsafe.Pointer(pGroup)).FszChunk = uint32(int32(sqlite3.Xsqlite3_uri_int64(tls, zUri, ts+34696,
 51306  			int64(SQLITE_MULTIPLEX_CHUNK_SIZE))))
 51307  		(*multiplexGroup)(unsafe.Pointer(pGroup)).FszChunk = ((*multiplexGroup)(unsafe.Pointer(pGroup)).FszChunk + uint32(0xffff)) & libc.Uint32FromInt32(libc.CplInt32(0xffff))
 51308  		if zName != 0 {
 51309  			var p uintptr = pGroup + 1*40
 51310  			(*multiplexGroup)(unsafe.Pointer(pGroup)).FzName = p
 51311  			libc.Xmemcpy(tls, (*multiplexGroup)(unsafe.Pointer(pGroup)).FzName, zName, uint64(nName+1))
 51312  			(*multiplexGroup)(unsafe.Pointer(pGroup)).FnName = nName
 51313  		}
 51314  		if (*multiplexGroup)(unsafe.Pointer(pGroup)).FbEnabled != 0 {
 51315  			for uint32(sqlite3.Xsqlite3PendingByte)%(*multiplexGroup)(unsafe.Pointer(pGroup)).FszChunk >= (*multiplexGroup)(unsafe.Pointer(pGroup)).FszChunk-uint32(65536) {
 51316  				*(*uint32)(unsafe.Pointer(pGroup + 32)) += uint32(65536)
 51317  			}
 51318  		}
 51319  		(*multiplexGroup)(unsafe.Pointer(pGroup)).Fflags = flags & libc.CplInt32(SQLITE_OPEN_URI)
 51320  		*(*int32)(unsafe.Pointer(bp)) = multiplexSubFilename(tls, pGroup, 1)
 51321  		if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK {
 51322  			pSubOpen = multiplexSubOpen(tls, pGroup, 0, bp, pOutFlags, 0)
 51323  			if pSubOpen == uintptr(0) && *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK {
 51324  				*(*int32)(unsafe.Pointer(bp)) = SQLITE_CANTOPEN
 51325  			}
 51326  		}
 51327  		if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK {
 51328  			*(*int32)(unsafe.Pointer(bp)) = (*struct {
 51329  				f func(*libc.TLS, uintptr, uintptr) int32
 51330  			})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxFileSize})).f(tls, pSubOpen, bp+8)
 51331  			if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK && zName != 0 {
 51332  				if flags&SQLITE_OPEN_SUPER_JOURNAL != 0 {
 51333  					(*multiplexGroup)(unsafe.Pointer(pGroup)).FbEnabled = uint8(0)
 51334  				} else if *(*sqlite3_int64)(unsafe.Pointer(bp + 8)) == int64(0) {
 51335  					if flags&SQLITE_OPEN_MAIN_JOURNAL != 0 {
 51336  						var iChunk int32 = 1
 51337  						for __ccgo := true; __ccgo; __ccgo = *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK && *(*int32)(unsafe.Pointer(bp + 16)) != 0 {
 51338  							*(*int32)(unsafe.Pointer(bp)) = (*struct {
 51339  								f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 51340  							})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pOrigVfs)).FxAccess})).f(tls, pOrigVfs,
 51341  								(*multiplexReal)(unsafe.Pointer((*multiplexGroup)(unsafe.Pointer(pGroup)).FaReal+uintptr(iChunk)*16)).Fz, SQLITE_ACCESS_EXISTS, bp+16)
 51342  							if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK && *(*int32)(unsafe.Pointer(bp + 16)) != 0 {
 51343  								*(*int32)(unsafe.Pointer(bp)) = (*struct {
 51344  									f func(*libc.TLS, uintptr, uintptr, int32) int32
 51345  								})(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)
 51346  								if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK {
 51347  									*(*int32)(unsafe.Pointer(bp)) = multiplexSubFilename(tls, pGroup, libc.PreIncInt32(&iChunk, 1))
 51348  								}
 51349  							}
 51350  						}
 51351  					}
 51352  				} else {
 51353  					*(*int32)(unsafe.Pointer(bp)) = (*struct {
 51354  						f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 51355  					})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pOrigVfs)).FxAccess})).f(tls, pOrigVfs, (*multiplexReal)(unsafe.Pointer((*multiplexGroup)(unsafe.Pointer(pGroup)).FaReal+1*16)).Fz,
 51356  						SQLITE_ACCESS_EXISTS, bp+16)
 51357  					*(*int32)(unsafe.Pointer(bp + 16)) = libc.Bool32(multiplexSubSize(tls, pGroup, 1, bp) > int64(0))
 51358  					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) &&
 51359  						*(*sqlite3_int64)(unsafe.Pointer(bp + 8)) != sqlite3_int64((*multiplexGroup)(unsafe.Pointer(pGroup)).FszChunk) {
 51360  						(*multiplexGroup)(unsafe.Pointer(pGroup)).FszChunk = uint32(int32(*(*sqlite3_int64)(unsafe.Pointer(bp + 8))))
 51361  					} 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) {
 51362  						(*multiplexGroup)(unsafe.Pointer(pGroup)).FbEnabled = uint8(0)
 51363  					}
 51364  				}
 51365  			}
 51366  		}
 51367  
 51368  		if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK {
 51369  			if (*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FiVersion == 1 {
 51370  				(*sqlite3_file)(unsafe.Pointer(pConn)).FpMethods = uintptr(unsafe.Pointer(&gMultiplex)) + 176
 51371  			} else {
 51372  				(*sqlite3_file)(unsafe.Pointer(pConn)).FpMethods = uintptr(unsafe.Pointer(&gMultiplex)) + 328
 51373  			}
 51374  		} else {
 51375  			multiplexFreeComponents(tls, pGroup)
 51376  			sqlite3.Xsqlite3_free(tls, pGroup)
 51377  		}
 51378  	}
 51379  	sqlite3.Xsqlite3_free(tls, zToFree)
 51380  	return *(*int32)(unsafe.Pointer(bp))
 51381  }
 51382  
 51383  func multiplexDelete(tls *libc.TLS, pVfs uintptr, zName uintptr, syncDir int32) int32 {
 51384  	bp := tls.Alloc(4)
 51385  	defer tls.Free(4)
 51386  
 51387  	var rc int32
 51388  	var pOrigVfs uintptr = gMultiplex.FpOrigVfs
 51389  	rc = (*struct {
 51390  		f func(*libc.TLS, uintptr, uintptr, int32) int32
 51391  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pOrigVfs)).FxDelete})).f(tls, pOrigVfs, zName, syncDir)
 51392  	if rc == SQLITE_OK {
 51393  		var nName int32 = int32(libc.Xstrlen(tls, zName))
 51394  		var z uintptr
 51395  		z = sqlite3.Xsqlite3_malloc64(tls, uint64(nName+5))
 51396  		if z == uintptr(0) {
 51397  			rc = SQLITE_IOERR | int32(12)<<8
 51398  		} else {
 51399  			var iChunk int32 = 0
 51400  
 51401  			for __ccgo := true; __ccgo; __ccgo = rc == SQLITE_OK && *(*int32)(unsafe.Pointer(bp)) != 0 {
 51402  				multiplexFilename(tls, zName, nName, SQLITE_OPEN_MAIN_JOURNAL, libc.PreIncInt32(&iChunk, 1), z)
 51403  				rc = (*struct {
 51404  					f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 51405  				})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pOrigVfs)).FxAccess})).f(tls, pOrigVfs, z, SQLITE_ACCESS_EXISTS, bp)
 51406  			}
 51407  			for rc == SQLITE_OK && iChunk > 1 {
 51408  				multiplexFilename(tls, zName, nName, SQLITE_OPEN_MAIN_JOURNAL, libc.PreDecInt32(&iChunk, 1), z)
 51409  				rc = (*struct {
 51410  					f func(*libc.TLS, uintptr, uintptr, int32) int32
 51411  				})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pOrigVfs)).FxDelete})).f(tls, pOrigVfs, z, syncDir)
 51412  			}
 51413  			if rc == SQLITE_OK {
 51414  				iChunk = 0
 51415  				for __ccgo1 := true; __ccgo1; __ccgo1 = rc == SQLITE_OK && *(*int32)(unsafe.Pointer(bp)) != 0 {
 51416  					multiplexFilename(tls, zName, nName, SQLITE_OPEN_WAL, libc.PreIncInt32(&iChunk, 1), z)
 51417  					rc = (*struct {
 51418  						f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 51419  					})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pOrigVfs)).FxAccess})).f(tls, pOrigVfs, z, SQLITE_ACCESS_EXISTS, bp)
 51420  				}
 51421  				for rc == SQLITE_OK && iChunk > 1 {
 51422  					multiplexFilename(tls, zName, nName, SQLITE_OPEN_WAL, libc.PreDecInt32(&iChunk, 1), z)
 51423  					rc = (*struct {
 51424  						f func(*libc.TLS, uintptr, uintptr, int32) int32
 51425  					})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pOrigVfs)).FxDelete})).f(tls, pOrigVfs, z, syncDir)
 51426  				}
 51427  			}
 51428  		}
 51429  		sqlite3.Xsqlite3_free(tls, z)
 51430  	}
 51431  	return rc
 51432  }
 51433  
 51434  func multiplexAccess(tls *libc.TLS, a uintptr, b uintptr, c int32, d uintptr) int32 {
 51435  	return (*struct {
 51436  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 51437  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(gMultiplex.FpOrigVfs)).FxAccess})).f(tls, gMultiplex.FpOrigVfs, b, c, d)
 51438  }
 51439  
 51440  func multiplexFullPathname(tls *libc.TLS, a uintptr, b uintptr, c int32, d uintptr) int32 {
 51441  	return (*struct {
 51442  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 51443  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(gMultiplex.FpOrigVfs)).FxFullPathname})).f(tls, gMultiplex.FpOrigVfs, b, c, d)
 51444  }
 51445  
 51446  func multiplexDlOpen(tls *libc.TLS, a uintptr, b uintptr) uintptr {
 51447  	return (*struct {
 51448  		f func(*libc.TLS, uintptr, uintptr) uintptr
 51449  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(gMultiplex.FpOrigVfs)).FxDlOpen})).f(tls, gMultiplex.FpOrigVfs, b)
 51450  }
 51451  
 51452  func multiplexDlError(tls *libc.TLS, a uintptr, b int32, c uintptr) {
 51453  	(*struct {
 51454  		f func(*libc.TLS, uintptr, int32, uintptr)
 51455  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(gMultiplex.FpOrigVfs)).FxDlError})).f(tls, gMultiplex.FpOrigVfs, b, c)
 51456  }
 51457  
 51458  func multiplexDlSym(tls *libc.TLS, a uintptr, b uintptr, c uintptr) uintptr {
 51459  	return (*struct {
 51460  		f func(*libc.TLS, uintptr, uintptr, uintptr) uintptr
 51461  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(gMultiplex.FpOrigVfs)).FxDlSym})).f(tls, gMultiplex.FpOrigVfs, b, c)
 51462  }
 51463  
 51464  func multiplexDlClose(tls *libc.TLS, a uintptr, b uintptr) {
 51465  	(*struct {
 51466  		f func(*libc.TLS, uintptr, uintptr)
 51467  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(gMultiplex.FpOrigVfs)).FxDlClose})).f(tls, gMultiplex.FpOrigVfs, b)
 51468  }
 51469  
 51470  func multiplexRandomness(tls *libc.TLS, a uintptr, b int32, c uintptr) int32 {
 51471  	return (*struct {
 51472  		f func(*libc.TLS, uintptr, int32, uintptr) int32
 51473  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(gMultiplex.FpOrigVfs)).FxRandomness})).f(tls, gMultiplex.FpOrigVfs, b, c)
 51474  }
 51475  
 51476  func multiplexSleep(tls *libc.TLS, a uintptr, b int32) int32 {
 51477  	return (*struct {
 51478  		f func(*libc.TLS, uintptr, int32) int32
 51479  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(gMultiplex.FpOrigVfs)).FxSleep})).f(tls, gMultiplex.FpOrigVfs, b)
 51480  }
 51481  
 51482  func multiplexCurrentTime(tls *libc.TLS, a uintptr, b uintptr) int32 {
 51483  	return (*struct {
 51484  		f func(*libc.TLS, uintptr, uintptr) int32
 51485  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(gMultiplex.FpOrigVfs)).FxCurrentTime})).f(tls, gMultiplex.FpOrigVfs, b)
 51486  }
 51487  
 51488  func multiplexGetLastError(tls *libc.TLS, a uintptr, b int32, c uintptr) int32 {
 51489  	if (*sqlite3_vfs)(unsafe.Pointer(gMultiplex.FpOrigVfs)).FxGetLastError != 0 {
 51490  		return (*struct {
 51491  			f func(*libc.TLS, uintptr, int32, uintptr) int32
 51492  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(gMultiplex.FpOrigVfs)).FxGetLastError})).f(tls, gMultiplex.FpOrigVfs, b, c)
 51493  	} else {
 51494  		return 0
 51495  	}
 51496  	return int32(0)
 51497  }
 51498  
 51499  func multiplexCurrentTimeInt64(tls *libc.TLS, a uintptr, b uintptr) int32 {
 51500  	return (*struct {
 51501  		f func(*libc.TLS, uintptr, uintptr) int32
 51502  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(gMultiplex.FpOrigVfs)).FxCurrentTimeInt64})).f(tls, gMultiplex.FpOrigVfs, b)
 51503  }
 51504  
 51505  func multiplexClose(tls *libc.TLS, pConn uintptr) int32 {
 51506  	var p uintptr = pConn
 51507  	var pGroup uintptr = (*multiplexConn)(unsafe.Pointer(p)).FpGroup
 51508  	var rc int32 = SQLITE_OK
 51509  	multiplexFreeComponents(tls, pGroup)
 51510  	sqlite3.Xsqlite3_free(tls, pGroup)
 51511  	return rc
 51512  }
 51513  
 51514  func multiplexRead(tls *libc.TLS, pConn uintptr, pBuf uintptr, iAmt int32, iOfst sqlite3_int64) int32 {
 51515  	bp := tls.Alloc(4)
 51516  	defer tls.Free(4)
 51517  
 51518  	var p uintptr = pConn
 51519  	var pGroup uintptr = (*multiplexConn)(unsafe.Pointer(p)).FpGroup
 51520  	*(*int32)(unsafe.Pointer(bp)) = SQLITE_OK
 51521  	if !(int32((*multiplexGroup)(unsafe.Pointer(pGroup)).FbEnabled) != 0) {
 51522  		var pSubOpen uintptr = multiplexSubOpen(tls, pGroup, 0, bp, uintptr(0), 0)
 51523  		if pSubOpen == uintptr(0) {
 51524  			*(*int32)(unsafe.Pointer(bp)) = SQLITE_IOERR | int32(1)<<8
 51525  		} else {
 51526  			*(*int32)(unsafe.Pointer(bp)) = (*struct {
 51527  				f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 51528  			})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxRead})).f(tls, pSubOpen, pBuf, iAmt, iOfst)
 51529  		}
 51530  	} else {
 51531  		for iAmt > 0 {
 51532  			var i int32 = int32(iOfst / sqlite3_int64((*multiplexGroup)(unsafe.Pointer(pGroup)).FszChunk))
 51533  			var pSubOpen uintptr
 51534  			pSubOpen = multiplexSubOpen(tls, pGroup, i, bp, uintptr(0), 1)
 51535  			if pSubOpen != 0 {
 51536  				var extra int32 = int32(uint32(int32(iOfst%sqlite3_int64((*multiplexGroup)(unsafe.Pointer(pGroup)).FszChunk))+iAmt) - (*multiplexGroup)(unsafe.Pointer(pGroup)).FszChunk)
 51537  				if extra < 0 {
 51538  					extra = 0
 51539  				}
 51540  				iAmt = iAmt - extra
 51541  				*(*int32)(unsafe.Pointer(bp)) = (*struct {
 51542  					f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 51543  				})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxRead})).f(tls, pSubOpen, pBuf, iAmt,
 51544  					iOfst%sqlite3_int64((*multiplexGroup)(unsafe.Pointer(pGroup)).FszChunk))
 51545  				if *(*int32)(unsafe.Pointer(bp)) != SQLITE_OK {
 51546  					break
 51547  				}
 51548  				pBuf = pBuf + uintptr(iAmt)
 51549  				iOfst = iOfst + sqlite3_int64(iAmt)
 51550  				iAmt = extra
 51551  			} else {
 51552  				*(*int32)(unsafe.Pointer(bp)) = SQLITE_IOERR | int32(1)<<8
 51553  				break
 51554  			}
 51555  		}
 51556  	}
 51557  
 51558  	return *(*int32)(unsafe.Pointer(bp))
 51559  }
 51560  
 51561  func multiplexWrite(tls *libc.TLS, pConn uintptr, pBuf uintptr, iAmt int32, iOfst sqlite3_int64) int32 {
 51562  	bp := tls.Alloc(4)
 51563  	defer tls.Free(4)
 51564  
 51565  	var p uintptr = pConn
 51566  	var pGroup uintptr = (*multiplexConn)(unsafe.Pointer(p)).FpGroup
 51567  	*(*int32)(unsafe.Pointer(bp)) = SQLITE_OK
 51568  	if !(int32((*multiplexGroup)(unsafe.Pointer(pGroup)).FbEnabled) != 0) {
 51569  		var pSubOpen uintptr = multiplexSubOpen(tls, pGroup, 0, bp, uintptr(0), 0)
 51570  		if pSubOpen == uintptr(0) {
 51571  			*(*int32)(unsafe.Pointer(bp)) = SQLITE_IOERR | int32(3)<<8
 51572  		} else {
 51573  			*(*int32)(unsafe.Pointer(bp)) = (*struct {
 51574  				f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 51575  			})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxWrite})).f(tls, pSubOpen, pBuf, iAmt, iOfst)
 51576  		}
 51577  	} else {
 51578  		for *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK && iAmt > 0 {
 51579  			var i int32 = int32(iOfst / sqlite3_int64((*multiplexGroup)(unsafe.Pointer(pGroup)).FszChunk))
 51580  			var pSubOpen uintptr = multiplexSubOpen(tls, pGroup, i, bp, uintptr(0), 1)
 51581  			if pSubOpen != 0 {
 51582  				var extra int32 = int32(uint32(int32(iOfst%sqlite3_int64((*multiplexGroup)(unsafe.Pointer(pGroup)).FszChunk))+iAmt) - (*multiplexGroup)(unsafe.Pointer(pGroup)).FszChunk)
 51583  				if extra < 0 {
 51584  					extra = 0
 51585  				}
 51586  				iAmt = iAmt - extra
 51587  				*(*int32)(unsafe.Pointer(bp)) = (*struct {
 51588  					f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 51589  				})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxWrite})).f(tls, pSubOpen, pBuf, iAmt,
 51590  					iOfst%sqlite3_int64((*multiplexGroup)(unsafe.Pointer(pGroup)).FszChunk))
 51591  				pBuf = pBuf + uintptr(iAmt)
 51592  				iOfst = iOfst + sqlite3_int64(iAmt)
 51593  				iAmt = extra
 51594  			}
 51595  		}
 51596  	}
 51597  	return *(*int32)(unsafe.Pointer(bp))
 51598  }
 51599  
 51600  func multiplexTruncate(tls *libc.TLS, pConn uintptr, size sqlite3_int64) int32 {
 51601  	bp := tls.Alloc(4)
 51602  	defer tls.Free(4)
 51603  
 51604  	var p uintptr = pConn
 51605  	var pGroup uintptr = (*multiplexConn)(unsafe.Pointer(p)).FpGroup
 51606  	*(*int32)(unsafe.Pointer(bp)) = SQLITE_OK
 51607  	if !(int32((*multiplexGroup)(unsafe.Pointer(pGroup)).FbEnabled) != 0) {
 51608  		var pSubOpen uintptr = multiplexSubOpen(tls, pGroup, 0, bp, uintptr(0), 0)
 51609  		if pSubOpen == uintptr(0) {
 51610  			*(*int32)(unsafe.Pointer(bp)) = SQLITE_IOERR | int32(6)<<8
 51611  		} else {
 51612  			*(*int32)(unsafe.Pointer(bp)) = (*struct {
 51613  				f func(*libc.TLS, uintptr, sqlite3_int64) int32
 51614  			})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxTruncate})).f(tls, pSubOpen, size)
 51615  		}
 51616  	} else {
 51617  		var i int32
 51618  		var iBaseGroup int32 = int32(size / sqlite3_int64((*multiplexGroup)(unsafe.Pointer(pGroup)).FszChunk))
 51619  		var pSubOpen uintptr
 51620  		var pOrigVfs uintptr = gMultiplex.FpOrigVfs
 51621  
 51622  		for i = (*multiplexGroup)(unsafe.Pointer(pGroup)).FnReal - 1; i > iBaseGroup && *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK; i-- {
 51623  			if (*multiplexGroup)(unsafe.Pointer(pGroup)).FbTruncate != 0 {
 51624  				multiplexSubClose(tls, pGroup, i, pOrigVfs)
 51625  			} else {
 51626  				pSubOpen = multiplexSubOpen(tls, pGroup, i, bp, uintptr(0), 0)
 51627  				if pSubOpen != 0 {
 51628  					*(*int32)(unsafe.Pointer(bp)) = (*struct {
 51629  						f func(*libc.TLS, uintptr, sqlite3_int64) int32
 51630  					})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxTruncate})).f(tls, pSubOpen, int64(0))
 51631  				}
 51632  			}
 51633  		}
 51634  		if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK {
 51635  			pSubOpen = multiplexSubOpen(tls, pGroup, iBaseGroup, bp, uintptr(0), 0)
 51636  			if pSubOpen != 0 {
 51637  				*(*int32)(unsafe.Pointer(bp)) = (*struct {
 51638  					f func(*libc.TLS, uintptr, sqlite3_int64) int32
 51639  				})(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))
 51640  			}
 51641  		}
 51642  		if *(*int32)(unsafe.Pointer(bp)) != 0 {
 51643  			*(*int32)(unsafe.Pointer(bp)) = SQLITE_IOERR | int32(6)<<8
 51644  		}
 51645  	}
 51646  	return *(*int32)(unsafe.Pointer(bp))
 51647  }
 51648  
 51649  func multiplexSync(tls *libc.TLS, pConn uintptr, flags int32) int32 {
 51650  	var p uintptr = pConn
 51651  	var pGroup uintptr = (*multiplexConn)(unsafe.Pointer(p)).FpGroup
 51652  	var rc int32 = SQLITE_OK
 51653  	var i int32
 51654  	for i = 0; i < (*multiplexGroup)(unsafe.Pointer(pGroup)).FnReal; i++ {
 51655  		var pSubOpen uintptr = (*multiplexReal)(unsafe.Pointer((*multiplexGroup)(unsafe.Pointer(pGroup)).FaReal + uintptr(i)*16)).Fp
 51656  		if pSubOpen != 0 {
 51657  			var rc2 int32 = (*struct {
 51658  				f func(*libc.TLS, uintptr, int32) int32
 51659  			})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxSync})).f(tls, pSubOpen, flags)
 51660  			if rc2 != SQLITE_OK {
 51661  				rc = rc2
 51662  			}
 51663  		}
 51664  	}
 51665  	return rc
 51666  }
 51667  
 51668  func multiplexFileSize(tls *libc.TLS, pConn uintptr, pSize uintptr) int32 {
 51669  	bp := tls.Alloc(4)
 51670  	defer tls.Free(4)
 51671  
 51672  	var p uintptr = pConn
 51673  	var pGroup uintptr = (*multiplexConn)(unsafe.Pointer(p)).FpGroup
 51674  	*(*int32)(unsafe.Pointer(bp)) = SQLITE_OK
 51675  	var i int32
 51676  	if !(int32((*multiplexGroup)(unsafe.Pointer(pGroup)).FbEnabled) != 0) {
 51677  		var pSubOpen uintptr = multiplexSubOpen(tls, pGroup, 0, bp, uintptr(0), 0)
 51678  		if pSubOpen == uintptr(0) {
 51679  			*(*int32)(unsafe.Pointer(bp)) = SQLITE_IOERR | int32(7)<<8
 51680  		} else {
 51681  			*(*int32)(unsafe.Pointer(bp)) = (*struct {
 51682  				f func(*libc.TLS, uintptr, uintptr) int32
 51683  			})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxFileSize})).f(tls, pSubOpen, pSize)
 51684  		}
 51685  	} else {
 51686  		*(*sqlite3_int64)(unsafe.Pointer(pSize)) = int64(0)
 51687  		for i = 0; *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK; i++ {
 51688  			var sz sqlite3_int64 = multiplexSubSize(tls, pGroup, i, bp)
 51689  			if sz == int64(0) {
 51690  				break
 51691  			}
 51692  			*(*sqlite3_int64)(unsafe.Pointer(pSize)) = sqlite3_int64(i)*sqlite3_int64((*multiplexGroup)(unsafe.Pointer(pGroup)).FszChunk) + sz
 51693  		}
 51694  	}
 51695  	return *(*int32)(unsafe.Pointer(bp))
 51696  }
 51697  
 51698  func multiplexLock(tls *libc.TLS, pConn uintptr, lock int32) int32 {
 51699  	bp := tls.Alloc(4)
 51700  	defer tls.Free(4)
 51701  
 51702  	var p uintptr = pConn
 51703  
 51704  	var pSubOpen uintptr = multiplexSubOpen(tls, (*multiplexConn)(unsafe.Pointer(p)).FpGroup, 0, bp, uintptr(0), 0)
 51705  	if pSubOpen != 0 {
 51706  		return (*struct {
 51707  			f func(*libc.TLS, uintptr, int32) int32
 51708  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxLock})).f(tls, pSubOpen, lock)
 51709  	}
 51710  	return SQLITE_BUSY
 51711  }
 51712  
 51713  func multiplexUnlock(tls *libc.TLS, pConn uintptr, lock int32) int32 {
 51714  	bp := tls.Alloc(4)
 51715  	defer tls.Free(4)
 51716  
 51717  	var p uintptr = pConn
 51718  
 51719  	var pSubOpen uintptr = multiplexSubOpen(tls, (*multiplexConn)(unsafe.Pointer(p)).FpGroup, 0, bp, uintptr(0), 0)
 51720  	if pSubOpen != 0 {
 51721  		return (*struct {
 51722  			f func(*libc.TLS, uintptr, int32) int32
 51723  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxUnlock})).f(tls, pSubOpen, lock)
 51724  	}
 51725  	return SQLITE_IOERR | int32(8)<<8
 51726  }
 51727  
 51728  func multiplexCheckReservedLock(tls *libc.TLS, pConn uintptr, pResOut uintptr) int32 {
 51729  	bp := tls.Alloc(4)
 51730  	defer tls.Free(4)
 51731  
 51732  	var p uintptr = pConn
 51733  
 51734  	var pSubOpen uintptr = multiplexSubOpen(tls, (*multiplexConn)(unsafe.Pointer(p)).FpGroup, 0, bp, uintptr(0), 0)
 51735  	if pSubOpen != 0 {
 51736  		return (*struct {
 51737  			f func(*libc.TLS, uintptr, uintptr) int32
 51738  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxCheckReservedLock})).f(tls, pSubOpen, pResOut)
 51739  	}
 51740  	return SQLITE_IOERR | int32(14)<<8
 51741  }
 51742  
 51743  func multiplexFileControl(tls *libc.TLS, pConn uintptr, op int32, pArg uintptr) int32 {
 51744  	bp := tls.Alloc(44)
 51745  	defer tls.Free(44)
 51746  
 51747  	var p uintptr = pConn
 51748  	var pGroup uintptr = (*multiplexConn)(unsafe.Pointer(p)).FpGroup
 51749  	*(*int32)(unsafe.Pointer(bp + 40)) = SQLITE_ERROR
 51750  	var pSubOpen uintptr
 51751  
 51752  	if !(gMultiplex.FisInitialized != 0) {
 51753  		return SQLITE_MISUSE
 51754  	}
 51755  	switch op {
 51756  	case MULTIPLEX_CTRL_ENABLE:
 51757  		if pArg != 0 {
 51758  			var bEnabled int32 = *(*int32)(unsafe.Pointer(pArg))
 51759  			(*multiplexGroup)(unsafe.Pointer(pGroup)).FbEnabled = uint8(bEnabled)
 51760  			*(*int32)(unsafe.Pointer(bp + 40)) = SQLITE_OK
 51761  		}
 51762  		break
 51763  	case MULTIPLEX_CTRL_SET_CHUNK_SIZE:
 51764  		if pArg != 0 {
 51765  			var szChunk uint32 = *(*uint32)(unsafe.Pointer(pArg))
 51766  			if szChunk < uint32(1) {
 51767  				*(*int32)(unsafe.Pointer(bp + 40)) = SQLITE_MISUSE
 51768  			} else {
 51769  				szChunk = szChunk + uint32(MAX_PAGE_SIZE-1)
 51770  				szChunk = szChunk & libc.Uint32FromInt32(libc.CplInt32(MAX_PAGE_SIZE-1))
 51771  				(*multiplexGroup)(unsafe.Pointer(pGroup)).FszChunk = szChunk
 51772  				*(*int32)(unsafe.Pointer(bp + 40)) = SQLITE_OK
 51773  			}
 51774  		}
 51775  		break
 51776  	case MULTIPLEX_CTRL_SET_MAX_CHUNKS:
 51777  		*(*int32)(unsafe.Pointer(bp + 40)) = SQLITE_OK
 51778  		break
 51779  	case SQLITE_FCNTL_SIZE_HINT:
 51780  		fallthrough
 51781  	case SQLITE_FCNTL_CHUNK_SIZE:
 51782  		*(*int32)(unsafe.Pointer(bp + 40)) = SQLITE_OK
 51783  		break
 51784  	case SQLITE_FCNTL_PRAGMA:
 51785  		{
 51786  			var aFcntl uintptr = pArg
 51787  
 51788  			if *(*uintptr)(unsafe.Pointer(aFcntl + 1*8)) != 0 && sqlite3.Xsqlite3_strnicmp(tls, *(*uintptr)(unsafe.Pointer(aFcntl + 1*8)), ts+34706, 10) == 0 {
 51789  				*(*sqlite3_int64)(unsafe.Pointer(bp + 32)) = int64(0)
 51790  				multiplexFileSize(tls, pConn, bp+32)
 51791  
 51792  				if sqlite3.Xsqlite3_stricmp(tls, *(*uintptr)(unsafe.Pointer(aFcntl + 1*8)), ts+34717) == 0 {
 51793  					if *(*uintptr)(unsafe.Pointer(aFcntl + 2*8)) != 0 && *(*uint8)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(aFcntl + 2*8)))) != 0 {
 51794  						if sqlite3.Xsqlite3_stricmp(tls, *(*uintptr)(unsafe.Pointer(aFcntl + 2*8)), ts+4178) == 0 ||
 51795  							sqlite3.Xsqlite3_stricmp(tls, *(*uintptr)(unsafe.Pointer(aFcntl + 2*8)), ts+28899) == 0 {
 51796  							(*multiplexGroup)(unsafe.Pointer(pGroup)).FbTruncate = uint8(1)
 51797  						} else if sqlite3.Xsqlite3_stricmp(tls, *(*uintptr)(unsafe.Pointer(aFcntl + 2*8)), ts+4542) == 0 ||
 51798  							sqlite3.Xsqlite3_stricmp(tls, *(*uintptr)(unsafe.Pointer(aFcntl + 2*8)), ts+14193) == 0 {
 51799  							(*multiplexGroup)(unsafe.Pointer(pGroup)).FbTruncate = uint8(0)
 51800  						}
 51801  					}
 51802  
 51803  					*(*uintptr)(unsafe.Pointer(aFcntl)) = sqlite3.Xsqlite3_mprintf(tls, func() uintptr {
 51804  						if (*multiplexGroup)(unsafe.Pointer(pGroup)).FbTruncate != 0 {
 51805  							return ts + 4178
 51806  						}
 51807  						return ts + 4542
 51808  					}(), 0)
 51809  					*(*int32)(unsafe.Pointer(bp + 40)) = SQLITE_OK
 51810  					break
 51811  				}
 51812  
 51813  				if sqlite3.Xsqlite3_stricmp(tls, *(*uintptr)(unsafe.Pointer(aFcntl + 1*8)), ts+34736) == 0 {
 51814  					*(*uintptr)(unsafe.Pointer(aFcntl)) = sqlite3.Xsqlite3_mprintf(tls, ts+1333, libc.VaList(bp, libc.Bool32(int32((*multiplexGroup)(unsafe.Pointer(pGroup)).FbEnabled) != 0)))
 51815  					*(*int32)(unsafe.Pointer(bp + 40)) = SQLITE_OK
 51816  					break
 51817  				}
 51818  
 51819  				if sqlite3.Xsqlite3_stricmp(tls, *(*uintptr)(unsafe.Pointer(aFcntl + 1*8)), ts+34754) == 0 &&
 51820  					(*multiplexGroup)(unsafe.Pointer(pGroup)).FbEnabled != 0 {
 51821  					*(*uintptr)(unsafe.Pointer(aFcntl)) = sqlite3.Xsqlite3_mprintf(tls, ts+17791, libc.VaList(bp+8, (*multiplexGroup)(unsafe.Pointer(pGroup)).FszChunk))
 51822  					*(*int32)(unsafe.Pointer(bp + 40)) = SQLITE_OK
 51823  					break
 51824  				}
 51825  
 51826  				if sqlite3.Xsqlite3_stricmp(tls, *(*uintptr)(unsafe.Pointer(aFcntl + 1*8)), ts+34774) == 0 {
 51827  					var n int32 = 0
 51828  					var ii int32
 51829  					for ii = 0; ii < (*multiplexGroup)(unsafe.Pointer(pGroup)).FnReal; ii++ {
 51830  						if (*multiplexReal)(unsafe.Pointer((*multiplexGroup)(unsafe.Pointer(pGroup)).FaReal+uintptr(ii)*16)).Fp != uintptr(0) {
 51831  							n++
 51832  						}
 51833  					}
 51834  					*(*uintptr)(unsafe.Pointer(aFcntl)) = sqlite3.Xsqlite3_mprintf(tls, ts+1333, libc.VaList(bp+16, n))
 51835  					*(*int32)(unsafe.Pointer(bp + 40)) = SQLITE_OK
 51836  					break
 51837  				}
 51838  			}
 51839  
 51840  		}
 51841  		fallthrough
 51842  	default:
 51843  		pSubOpen = multiplexSubOpen(tls, pGroup, 0, bp+40, uintptr(0), 0)
 51844  		if pSubOpen != 0 {
 51845  			*(*int32)(unsafe.Pointer(bp + 40)) = (*struct {
 51846  				f func(*libc.TLS, uintptr, int32, uintptr) int32
 51847  			})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxFileControl})).f(tls, pSubOpen, op, pArg)
 51848  			if op == SQLITE_FCNTL_VFSNAME && *(*int32)(unsafe.Pointer(bp + 40)) == SQLITE_OK {
 51849  				*(*uintptr)(unsafe.Pointer(pArg)) = sqlite3.Xsqlite3_mprintf(tls, ts+34794, libc.VaList(bp+24, *(*uintptr)(unsafe.Pointer(pArg))))
 51850  			}
 51851  		}
 51852  		break
 51853  	}
 51854  	return *(*int32)(unsafe.Pointer(bp + 40))
 51855  }
 51856  
 51857  func multiplexSectorSize(tls *libc.TLS, pConn uintptr) int32 {
 51858  	bp := tls.Alloc(4)
 51859  	defer tls.Free(4)
 51860  
 51861  	var p uintptr = pConn
 51862  
 51863  	var pSubOpen uintptr = multiplexSubOpen(tls, (*multiplexConn)(unsafe.Pointer(p)).FpGroup, 0, bp, uintptr(0), 0)
 51864  	if pSubOpen != 0 && (*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxSectorSize != 0 {
 51865  		return (*struct {
 51866  			f func(*libc.TLS, uintptr) int32
 51867  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxSectorSize})).f(tls, pSubOpen)
 51868  	}
 51869  	return DEFAULT_SECTOR_SIZE
 51870  }
 51871  
 51872  func multiplexDeviceCharacteristics(tls *libc.TLS, pConn uintptr) int32 {
 51873  	bp := tls.Alloc(4)
 51874  	defer tls.Free(4)
 51875  
 51876  	var p uintptr = pConn
 51877  
 51878  	var pSubOpen uintptr = multiplexSubOpen(tls, (*multiplexConn)(unsafe.Pointer(p)).FpGroup, 0, bp, uintptr(0), 0)
 51879  	if pSubOpen != 0 {
 51880  		return (*struct {
 51881  			f func(*libc.TLS, uintptr) int32
 51882  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxDeviceCharacteristics})).f(tls, pSubOpen)
 51883  	}
 51884  	return 0
 51885  }
 51886  
 51887  func multiplexShmMap(tls *libc.TLS, pConn uintptr, iRegion int32, szRegion int32, bExtend int32, pp uintptr) int32 {
 51888  	bp := tls.Alloc(4)
 51889  	defer tls.Free(4)
 51890  
 51891  	var p uintptr = pConn
 51892  
 51893  	var pSubOpen uintptr = multiplexSubOpen(tls, (*multiplexConn)(unsafe.Pointer(p)).FpGroup, 0, bp, uintptr(0), 0)
 51894  	if pSubOpen != 0 {
 51895  		return (*struct {
 51896  			f func(*libc.TLS, uintptr, int32, int32, int32, uintptr) int32
 51897  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxShmMap})).f(tls, pSubOpen, iRegion, szRegion, bExtend, pp)
 51898  	}
 51899  	return SQLITE_IOERR
 51900  }
 51901  
 51902  func multiplexShmLock(tls *libc.TLS, pConn uintptr, ofst int32, n int32, flags int32) int32 {
 51903  	bp := tls.Alloc(4)
 51904  	defer tls.Free(4)
 51905  
 51906  	var p uintptr = pConn
 51907  
 51908  	var pSubOpen uintptr = multiplexSubOpen(tls, (*multiplexConn)(unsafe.Pointer(p)).FpGroup, 0, bp, uintptr(0), 0)
 51909  	if pSubOpen != 0 {
 51910  		return (*struct {
 51911  			f func(*libc.TLS, uintptr, int32, int32, int32) int32
 51912  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxShmLock})).f(tls, pSubOpen, ofst, n, flags)
 51913  	}
 51914  	return SQLITE_BUSY
 51915  }
 51916  
 51917  func multiplexShmBarrier(tls *libc.TLS, pConn uintptr) {
 51918  	bp := tls.Alloc(4)
 51919  	defer tls.Free(4)
 51920  
 51921  	var p uintptr = pConn
 51922  
 51923  	var pSubOpen uintptr = multiplexSubOpen(tls, (*multiplexConn)(unsafe.Pointer(p)).FpGroup, 0, bp, uintptr(0), 0)
 51924  	if pSubOpen != 0 {
 51925  		(*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)
 51926  	}
 51927  }
 51928  
 51929  func multiplexShmUnmap(tls *libc.TLS, pConn uintptr, deleteFlag int32) int32 {
 51930  	bp := tls.Alloc(4)
 51931  	defer tls.Free(4)
 51932  
 51933  	var p uintptr = pConn
 51934  
 51935  	var pSubOpen uintptr = multiplexSubOpen(tls, (*multiplexConn)(unsafe.Pointer(p)).FpGroup, 0, bp, uintptr(0), 0)
 51936  	if pSubOpen != 0 {
 51937  		return (*struct {
 51938  			f func(*libc.TLS, uintptr, int32) int32
 51939  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxShmUnmap})).f(tls, pSubOpen, deleteFlag)
 51940  	}
 51941  	return SQLITE_OK
 51942  }
 51943  
 51944  func sqlite3_multiplex_initialize(tls *libc.TLS, zOrigVfsName uintptr, makeDefault int32) int32 {
 51945  	var pOrigVfs uintptr
 51946  	if gMultiplex.FisInitialized != 0 {
 51947  		return SQLITE_MISUSE
 51948  	}
 51949  	pOrigVfs = sqlite3.Xsqlite3_vfs_find(tls, zOrigVfsName)
 51950  	if pOrigVfs == uintptr(0) {
 51951  		return SQLITE_ERROR
 51952  	}
 51953  
 51954  	gMultiplex.FisInitialized = 1
 51955  	gMultiplex.FpOrigVfs = pOrigVfs
 51956  	gMultiplex.FsThisVfs = *(*sqlite3_vfs)(unsafe.Pointer(pOrigVfs))
 51957  	*(*int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&gMultiplex)) + 8 + 4)) += int32(uint64(unsafe.Sizeof(multiplexConn{})))
 51958  	gMultiplex.FsThisVfs.FzName = ts + 34807
 51959  	gMultiplex.FsThisVfs.FxOpen = *(*uintptr)(unsafe.Pointer(&struct {
 51960  		f func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr) int32
 51961  	}{multiplexOpen}))
 51962  	gMultiplex.FsThisVfs.FxDelete = *(*uintptr)(unsafe.Pointer(&struct {
 51963  		f func(*libc.TLS, uintptr, uintptr, int32) int32
 51964  	}{multiplexDelete}))
 51965  	gMultiplex.FsThisVfs.FxAccess = *(*uintptr)(unsafe.Pointer(&struct {
 51966  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 51967  	}{multiplexAccess}))
 51968  	gMultiplex.FsThisVfs.FxFullPathname = *(*uintptr)(unsafe.Pointer(&struct {
 51969  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 51970  	}{multiplexFullPathname}))
 51971  	gMultiplex.FsThisVfs.FxDlOpen = *(*uintptr)(unsafe.Pointer(&struct {
 51972  		f func(*libc.TLS, uintptr, uintptr) uintptr
 51973  	}{multiplexDlOpen}))
 51974  	gMultiplex.FsThisVfs.FxDlError = *(*uintptr)(unsafe.Pointer(&struct {
 51975  		f func(*libc.TLS, uintptr, int32, uintptr)
 51976  	}{multiplexDlError}))
 51977  	gMultiplex.FsThisVfs.FxDlSym = *(*uintptr)(unsafe.Pointer(&struct {
 51978  		f func(*libc.TLS, uintptr, uintptr, uintptr) uintptr
 51979  	}{multiplexDlSym}))
 51980  	gMultiplex.FsThisVfs.FxDlClose = *(*uintptr)(unsafe.Pointer(&struct {
 51981  		f func(*libc.TLS, uintptr, uintptr)
 51982  	}{multiplexDlClose}))
 51983  	gMultiplex.FsThisVfs.FxRandomness = *(*uintptr)(unsafe.Pointer(&struct {
 51984  		f func(*libc.TLS, uintptr, int32, uintptr) int32
 51985  	}{multiplexRandomness}))
 51986  	gMultiplex.FsThisVfs.FxSleep = *(*uintptr)(unsafe.Pointer(&struct {
 51987  		f func(*libc.TLS, uintptr, int32) int32
 51988  	}{multiplexSleep}))
 51989  	gMultiplex.FsThisVfs.FxCurrentTime = *(*uintptr)(unsafe.Pointer(&struct {
 51990  		f func(*libc.TLS, uintptr, uintptr) int32
 51991  	}{multiplexCurrentTime}))
 51992  	gMultiplex.FsThisVfs.FxGetLastError = *(*uintptr)(unsafe.Pointer(&struct {
 51993  		f func(*libc.TLS, uintptr, int32, uintptr) int32
 51994  	}{multiplexGetLastError}))
 51995  	gMultiplex.FsThisVfs.FxCurrentTimeInt64 = *(*uintptr)(unsafe.Pointer(&struct {
 51996  		f func(*libc.TLS, uintptr, uintptr) int32
 51997  	}{multiplexCurrentTimeInt64}))
 51998  
 51999  	gMultiplex.FsIoMethodsV1.FiVersion = 1
 52000  	gMultiplex.FsIoMethodsV1.FxClose = *(*uintptr)(unsafe.Pointer(&struct {
 52001  		f func(*libc.TLS, uintptr) int32
 52002  	}{multiplexClose}))
 52003  	gMultiplex.FsIoMethodsV1.FxRead = *(*uintptr)(unsafe.Pointer(&struct {
 52004  		f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 52005  	}{multiplexRead}))
 52006  	gMultiplex.FsIoMethodsV1.FxWrite = *(*uintptr)(unsafe.Pointer(&struct {
 52007  		f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 52008  	}{multiplexWrite}))
 52009  	gMultiplex.FsIoMethodsV1.FxTruncate = *(*uintptr)(unsafe.Pointer(&struct {
 52010  		f func(*libc.TLS, uintptr, sqlite3_int64) int32
 52011  	}{multiplexTruncate}))
 52012  	gMultiplex.FsIoMethodsV1.FxSync = *(*uintptr)(unsafe.Pointer(&struct {
 52013  		f func(*libc.TLS, uintptr, int32) int32
 52014  	}{multiplexSync}))
 52015  	gMultiplex.FsIoMethodsV1.FxFileSize = *(*uintptr)(unsafe.Pointer(&struct {
 52016  		f func(*libc.TLS, uintptr, uintptr) int32
 52017  	}{multiplexFileSize}))
 52018  	gMultiplex.FsIoMethodsV1.FxLock = *(*uintptr)(unsafe.Pointer(&struct {
 52019  		f func(*libc.TLS, uintptr, int32) int32
 52020  	}{multiplexLock}))
 52021  	gMultiplex.FsIoMethodsV1.FxUnlock = *(*uintptr)(unsafe.Pointer(&struct {
 52022  		f func(*libc.TLS, uintptr, int32) int32
 52023  	}{multiplexUnlock}))
 52024  	gMultiplex.FsIoMethodsV1.FxCheckReservedLock = *(*uintptr)(unsafe.Pointer(&struct {
 52025  		f func(*libc.TLS, uintptr, uintptr) int32
 52026  	}{multiplexCheckReservedLock}))
 52027  	gMultiplex.FsIoMethodsV1.FxFileControl = *(*uintptr)(unsafe.Pointer(&struct {
 52028  		f func(*libc.TLS, uintptr, int32, uintptr) int32
 52029  	}{multiplexFileControl}))
 52030  	gMultiplex.FsIoMethodsV1.FxSectorSize = *(*uintptr)(unsafe.Pointer(&struct {
 52031  		f func(*libc.TLS, uintptr) int32
 52032  	}{multiplexSectorSize}))
 52033  	gMultiplex.FsIoMethodsV1.FxDeviceCharacteristics = *(*uintptr)(unsafe.Pointer(&struct {
 52034  		f func(*libc.TLS, uintptr) int32
 52035  	}{multiplexDeviceCharacteristics}))
 52036  	gMultiplex.FsIoMethodsV2 = gMultiplex.FsIoMethodsV1
 52037  	gMultiplex.FsIoMethodsV2.FiVersion = 2
 52038  	gMultiplex.FsIoMethodsV2.FxShmMap = *(*uintptr)(unsafe.Pointer(&struct {
 52039  		f func(*libc.TLS, uintptr, int32, int32, int32, uintptr) int32
 52040  	}{multiplexShmMap}))
 52041  	gMultiplex.FsIoMethodsV2.FxShmLock = *(*uintptr)(unsafe.Pointer(&struct {
 52042  		f func(*libc.TLS, uintptr, int32, int32, int32) int32
 52043  	}{multiplexShmLock}))
 52044  	gMultiplex.FsIoMethodsV2.FxShmBarrier = *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{multiplexShmBarrier}))
 52045  	gMultiplex.FsIoMethodsV2.FxShmUnmap = *(*uintptr)(unsafe.Pointer(&struct {
 52046  		f func(*libc.TLS, uintptr, int32) int32
 52047  	}{multiplexShmUnmap}))
 52048  	sqlite3.Xsqlite3_vfs_register(tls, uintptr(unsafe.Pointer(&gMultiplex))+8, makeDefault)
 52049  
 52050  	sqlite3.Xsqlite3_auto_extension(tls, *(*uintptr)(unsafe.Pointer(&struct {
 52051  		f func(*libc.TLS, uintptr, uintptr, uintptr) int32
 52052  	}{multiplexFuncInit})))
 52053  
 52054  	return SQLITE_OK
 52055  }
 52056  
 52057  func sqlite3_multiplex_shutdown(tls *libc.TLS, eForce int32) int32 {
 52058  	var rc int32 = SQLITE_OK
 52059  	if gMultiplex.FisInitialized == 0 {
 52060  		return SQLITE_MISUSE
 52061  	}
 52062  	gMultiplex.FisInitialized = 0
 52063  	sqlite3.Xsqlite3_vfs_unregister(tls, uintptr(unsafe.Pointer(&gMultiplex))+8)
 52064  	libc.Xmemset(tls, uintptr(unsafe.Pointer(&gMultiplex)), 0, uint64(unsafe.Sizeof(gMultiplex)))
 52065  	return rc
 52066  }
 52067  
 52068  func test_multiplex_initialize(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 52069  	bp := tls.Alloc(4)
 52070  	defer tls.Free(4)
 52071  
 52072  	var zName uintptr
 52073  
 52074  	var rc int32
 52075  
 52076  	_ = clientData
 52077  
 52078  	if objc != 3 {
 52079  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+34817)
 52080  		return TCL_ERROR
 52081  	}
 52082  	zName = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 52083  	if tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp) != 0 {
 52084  		return TCL_ERROR
 52085  	}
 52086  	if int32(*(*uint8)(unsafe.Pointer(zName))) == 0 {
 52087  		zName = uintptr(0)
 52088  	}
 52089  
 52090  	rc = sqlite3_multiplex_initialize(tls, zName, *(*int32)(unsafe.Pointer(bp)))
 52091  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 52092  
 52093  	return TCL_OK
 52094  }
 52095  
 52096  func test_multiplex_shutdown(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 52097  	var rc int32
 52098  
 52099  	_ = clientData
 52100  
 52101  	if objc == 2 && libc.Xstrcmp(tls, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), ts+34834) != 0 {
 52102  		objc = 3
 52103  	}
 52104  	if objc != 1 && objc != 2 {
 52105  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+34841)
 52106  		return TCL_ERROR
 52107  	}
 52108  
 52109  	rc = sqlite3_multiplex_shutdown(tls, libc.Bool32(objc == 2))
 52110  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 52111  
 52112  	return TCL_OK
 52113  }
 52114  
 52115  func test_multiplex_control(tls *libc.TLS, cd ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 52116  	bp := tls.Alloc(176)
 52117  	defer tls.Free(176)
 52118  
 52119  	var rc int32
 52120  
 52121  	var db uintptr
 52122  	*(*int32)(unsafe.Pointer(bp + 172)) = 0
 52123  	var pArg uintptr = uintptr(0)
 52124  
 52125  	*(*[4]struct {
 52126  		FzName   uintptr
 52127  		Fop      int32
 52128  		Fargtype int32
 52129  	})(unsafe.Pointer(bp + 104)) = [4]struct {
 52130  		FzName   uintptr
 52131  		Fop      int32
 52132  		Fargtype int32
 52133  	}{
 52134  		{FzName: ts + 10145, Fop: MULTIPLEX_CTRL_ENABLE, Fargtype: 1},
 52135  		{FzName: ts + 34850, Fop: MULTIPLEX_CTRL_SET_CHUNK_SIZE, Fargtype: 1},
 52136  		{FzName: ts + 34861, Fop: MULTIPLEX_CTRL_SET_MAX_CHUNKS, Fargtype: 1},
 52137  		{},
 52138  	}
 52139  
 52140  	if objc != 5 {
 52141  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+34872)
 52142  		return TCL_ERROR
 52143  	}
 52144  
 52145  	if 0 == tcl.XTcl_GetCommandInfo(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+40) {
 52146  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+34908, 0))
 52147  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+16, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), ts+11945, 0))
 52148  		return TCL_ERROR
 52149  	} else {
 52150  		db = *(*uintptr)(unsafe.Pointer((*Tcl_CmdInfo)(unsafe.Pointer(bp + 40)).FobjClientData))
 52151  	}
 52152  
 52153  	rc = tcl.XTcl_GetIndexFromObjStruct(tls,
 52154  		interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+104, int32(unsafe.Sizeof(struct {
 52155  			FzName   uintptr
 52156  			Fop      int32
 52157  			Fargtype int32
 52158  		}{})), ts+2014, 0, bp+168)
 52159  	if rc != TCL_OK {
 52160  		return rc
 52161  	}
 52162  
 52163  	switch (*struct {
 52164  		FzName   uintptr
 52165  		Fop      int32
 52166  		Fargtype int32
 52167  	})(unsafe.Pointer(bp + 104 + uintptr(*(*int32)(unsafe.Pointer(bp + 168)))*16)).Fargtype {
 52168  	case 1:
 52169  		if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 4*8)), bp+172) != 0 {
 52170  			return TCL_ERROR
 52171  		}
 52172  		pArg = bp + 172
 52173  		break
 52174  	default:
 52175  		tcl.XTcl_WrongNumArgs(tls, interp, 4, objv, ts+2523)
 52176  		return TCL_ERROR
 52177  	}
 52178  
 52179  	rc = sqlite3.Xsqlite3_file_control(tls, db, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8))), (*struct {
 52180  		FzName   uintptr
 52181  		Fop      int32
 52182  		Fargtype int32
 52183  	})(unsafe.Pointer(bp+104+uintptr(*(*int32)(unsafe.Pointer(bp + 168)))*16)).Fop, pArg)
 52184  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 52185  	if rc == SQLITE_OK {
 52186  		return TCL_OK
 52187  	}
 52188  	return TCL_ERROR
 52189  }
 52190  
 52191  func Sqlitemultiplex_Init(tls *libc.TLS, interp uintptr) int32 {
 52192  	var i int32
 52193  
 52194  	for i = 0; uint64(i) < uint64(unsafe.Sizeof(aCmd7))/uint64(unsafe.Sizeof(struct {
 52195  		FzName uintptr
 52196  		FxProc uintptr
 52197  	}{})); i++ {
 52198  		tcl.XTcl_CreateObjCommand(tls, interp, aCmd7[i].FzName, aCmd7[i].FxProc, uintptr(0), uintptr(0))
 52199  	}
 52200  
 52201  	return TCL_OK
 52202  }
 52203  
 52204  var aCmd7 = [3]struct {
 52205  	FzName uintptr
 52206  	FxProc uintptr
 52207  }{
 52208  	{FzName: ts + 34940, FxProc: 0},
 52209  	{FzName: ts + 34969, FxProc: 0},
 52210  	{FzName: ts + 34996, FxProc: 0},
 52211  }
 52212  
 52213  type sqlite3_mutex = sqlite3_mutex1
 52214  
 52215  var aName = [15]uintptr{
 52216  	ts + 35022, ts + 35027, ts + 35037, ts + 35049,
 52217  	ts + 35060, ts + 35072, ts + 35084, ts + 35095,
 52218  	ts + 35107, ts + 35119, ts + 35131, ts + 35143,
 52219  	ts + 35155, ts + 35167, uintptr(0),
 52220  }
 52221  
 52222  type test_mutex_globals = struct {
 52223  	FisInstalled int32
 52224  	FdisableInit int32
 52225  	FdisableTry  int32
 52226  	FisInit      int32
 52227  	Fm           sqlite3_mutex_methods
 52228  	FaCounter    [14]int32
 52229  	FaStatic     [12]sqlite3_mutex
 52230  }
 52231  
 52232  var g3 = test_mutex_globals{}
 52233  
 52234  func counterMutexHeld(tls *libc.TLS, p uintptr) int32 {
 52235  	return (*struct {
 52236  		f func(*libc.TLS, uintptr) int32
 52237  	})(unsafe.Pointer(&struct{ uintptr }{g3.Fm.FxMutexHeld})).f(tls, (*sqlite3_mutex)(unsafe.Pointer(p)).FpReal)
 52238  }
 52239  
 52240  func counterMutexNotheld(tls *libc.TLS, p uintptr) int32 {
 52241  	return (*struct {
 52242  		f func(*libc.TLS, uintptr) int32
 52243  	})(unsafe.Pointer(&struct{ uintptr }{g3.Fm.FxMutexNotheld})).f(tls, (*sqlite3_mutex)(unsafe.Pointer(p)).FpReal)
 52244  }
 52245  
 52246  func counterMutexInit(tls *libc.TLS) int32 {
 52247  	var rc int32
 52248  	if g3.FdisableInit != 0 {
 52249  		return g3.FdisableInit
 52250  	}
 52251  	rc = (*struct{ f func(*libc.TLS) int32 })(unsafe.Pointer(&struct{ uintptr }{g3.Fm.FxMutexInit})).f(tls)
 52252  	g3.FisInit = 1
 52253  	return rc
 52254  }
 52255  
 52256  func counterMutexEnd(tls *libc.TLS) int32 {
 52257  	g3.FisInit = 0
 52258  	return (*struct{ f func(*libc.TLS) int32 })(unsafe.Pointer(&struct{ uintptr }{g3.Fm.FxMutexEnd})).f(tls)
 52259  }
 52260  
 52261  func counterMutexAlloc(tls *libc.TLS, eType int32) uintptr {
 52262  	var pReal uintptr
 52263  	var pRet uintptr = uintptr(0)
 52264  
 52265  	pReal = (*struct {
 52266  		f func(*libc.TLS, int32) uintptr
 52267  	})(unsafe.Pointer(&struct{ uintptr }{g3.Fm.FxMutexAlloc})).f(tls, eType)
 52268  	if !(pReal != 0) {
 52269  		return uintptr(0)
 52270  	}
 52271  
 52272  	if eType == SQLITE_MUTEX_FAST || eType == SQLITE_MUTEX_RECURSIVE {
 52273  		pRet = libc.Xmalloc(tls, uint64(unsafe.Sizeof(sqlite3_mutex{})))
 52274  	} else {
 52275  		var eStaticType int32 = eType - (SQLITE_MUTEX_STATIC_VFS3 + 1 - (SQLITE_MUTEX_STATIC_VFS3 + 1 - (SQLITE_MUTEX_RECURSIVE + 1)))
 52276  
 52277  		pRet = uintptr(unsafe.Pointer(&g3)) + 144 + uintptr(eStaticType)*16
 52278  	}
 52279  
 52280  	(*sqlite3_mutex)(unsafe.Pointer(pRet)).FeType = eType
 52281  	(*sqlite3_mutex)(unsafe.Pointer(pRet)).FpReal = pReal
 52282  	return pRet
 52283  }
 52284  
 52285  func counterMutexFree(tls *libc.TLS, p uintptr) {
 52286  	(*struct{ f func(*libc.TLS, uintptr) })(unsafe.Pointer(&struct{ uintptr }{g3.Fm.FxMutexFree})).f(tls, (*sqlite3_mutex)(unsafe.Pointer(p)).FpReal)
 52287  	if (*sqlite3_mutex)(unsafe.Pointer(p)).FeType == SQLITE_MUTEX_FAST || (*sqlite3_mutex)(unsafe.Pointer(p)).FeType == SQLITE_MUTEX_RECURSIVE {
 52288  		libc.Xfree(tls, p)
 52289  	}
 52290  }
 52291  
 52292  func counterMutexEnter(tls *libc.TLS, p uintptr) {
 52293  	*(*int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&g3)) + 88 + uintptr((*sqlite3_mutex)(unsafe.Pointer(p)).FeType)*4))++
 52294  	(*struct{ f func(*libc.TLS, uintptr) })(unsafe.Pointer(&struct{ uintptr }{g3.Fm.FxMutexEnter})).f(tls, (*sqlite3_mutex)(unsafe.Pointer(p)).FpReal)
 52295  }
 52296  
 52297  func counterMutexTry(tls *libc.TLS, p uintptr) int32 {
 52298  	*(*int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&g3)) + 88 + uintptr((*sqlite3_mutex)(unsafe.Pointer(p)).FeType)*4))++
 52299  	if g3.FdisableTry != 0 {
 52300  		return SQLITE_BUSY
 52301  	}
 52302  	return (*struct {
 52303  		f func(*libc.TLS, uintptr) int32
 52304  	})(unsafe.Pointer(&struct{ uintptr }{g3.Fm.FxMutexTry})).f(tls, (*sqlite3_mutex)(unsafe.Pointer(p)).FpReal)
 52305  }
 52306  
 52307  func counterMutexLeave(tls *libc.TLS, p uintptr) {
 52308  	(*struct{ f func(*libc.TLS, uintptr) })(unsafe.Pointer(&struct{ uintptr }{g3.Fm.FxMutexLeave})).f(tls, (*sqlite3_mutex)(unsafe.Pointer(p)).FpReal)
 52309  }
 52310  
 52311  func test_shutdown(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 52312  	var rc int32
 52313  
 52314  	if objc != 1 {
 52315  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+584)
 52316  		return TCL_ERROR
 52317  	}
 52318  
 52319  	rc = sqlite3.Xsqlite3_shutdown(tls)
 52320  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(1))
 52321  	return TCL_OK
 52322  }
 52323  
 52324  func test_initialize(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 52325  	var rc int32
 52326  
 52327  	if objc != 1 {
 52328  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+584)
 52329  		return TCL_ERROR
 52330  	}
 52331  
 52332  	rc = sqlite3.Xsqlite3_initialize(tls)
 52333  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(1))
 52334  	return TCL_OK
 52335  }
 52336  
 52337  func test_install_mutex_counters(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 52338  	bp := tls.Alloc(136)
 52339  	defer tls.Free(136)
 52340  
 52341  	var rc int32 = SQLITE_OK
 52342  
 52343  	*(*sqlite3_mutex_methods)(unsafe.Pointer(bp + 64)) = sqlite3_mutex_methods{
 52344  		FxMutexInit: *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS) int32 }{counterMutexInit})),
 52345  		FxMutexEnd:  *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS) int32 }{counterMutexEnd})),
 52346  		FxMutexAlloc: *(*uintptr)(unsafe.Pointer(&struct {
 52347  			f func(*libc.TLS, int32) uintptr
 52348  		}{counterMutexAlloc})),
 52349  		FxMutexFree:  *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{counterMutexFree})),
 52350  		FxMutexEnter: *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{counterMutexEnter})),
 52351  		FxMutexTry: *(*uintptr)(unsafe.Pointer(&struct {
 52352  			f func(*libc.TLS, uintptr) int32
 52353  		}{counterMutexTry})),
 52354  		FxMutexLeave: *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{counterMutexLeave})),
 52355  		FxMutexHeld: *(*uintptr)(unsafe.Pointer(&struct {
 52356  			f func(*libc.TLS, uintptr) int32
 52357  		}{counterMutexHeld})),
 52358  		FxMutexNotheld: *(*uintptr)(unsafe.Pointer(&struct {
 52359  			f func(*libc.TLS, uintptr) int32
 52360  		}{counterMutexNotheld})),
 52361  	}
 52362  
 52363  	if objc != 2 {
 52364  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+18238)
 52365  		return TCL_ERROR
 52366  	}
 52367  	if TCL_OK != tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp+56) {
 52368  		return TCL_ERROR
 52369  	}
 52370  
 52371  	if *(*int32)(unsafe.Pointer(bp + 56)) == g3.FisInstalled {
 52372  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+35179, 0))
 52373  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+16, func() uintptr {
 52374  			if *(*int32)(unsafe.Pointer(bp + 56)) != 0 {
 52375  				return ts + 35199
 52376  			}
 52377  			return ts + 35217
 52378  		}(), 0))
 52379  		return TCL_ERROR
 52380  	}
 52381  
 52382  	if *(*int32)(unsafe.Pointer(bp + 56)) != 0 {
 52383  		rc = sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_GETMUTEX, libc.VaList(bp+32, uintptr(unsafe.Pointer(&g3))+16))
 52384  		if rc == SQLITE_OK {
 52385  			sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_MUTEX, libc.VaList(bp+40, bp+64))
 52386  		}
 52387  		g3.FdisableTry = 0
 52388  	} else {
 52389  		rc = sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_MUTEX, libc.VaList(bp+48, uintptr(unsafe.Pointer(&g3))+16))
 52390  		libc.Xmemset(tls, uintptr(unsafe.Pointer(&g3))+16, 0, uint64(unsafe.Sizeof(sqlite3_mutex_methods{})))
 52391  	}
 52392  
 52393  	if rc == SQLITE_OK {
 52394  		g3.FisInstalled = *(*int32)(unsafe.Pointer(bp + 56))
 52395  	}
 52396  
 52397  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(1))
 52398  	return TCL_OK
 52399  }
 52400  
 52401  func test_read_mutex_counters(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 52402  	var pRet uintptr
 52403  	var ii int32
 52404  
 52405  	if objc != 1 {
 52406  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+584)
 52407  		return TCL_ERROR
 52408  	}
 52409  
 52410  	pRet = tcl.XTcl_NewObj(tls)
 52411  	(*Tcl_Obj)(unsafe.Pointer(pRet)).FrefCount++
 52412  	for ii = 0; ii < SQLITE_MUTEX_STATIC_VFS3+1; ii++ {
 52413  		tcl.XTcl_ListObjAppendElement(tls, interp, pRet, tcl.XTcl_NewStringObj(tls, aName[ii], -1))
 52414  		tcl.XTcl_ListObjAppendElement(tls, interp, pRet, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&g3)) + 88 + uintptr(ii)*4))))
 52415  	}
 52416  	tcl.XTcl_SetObjResult(tls, interp, pRet)
 52417  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 52418  		var _objPtr uintptr = pRet
 52419  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 52420  			tcl.XTclFreeObj(tls, _objPtr)
 52421  		}
 52422  	}
 52423  
 52424  	return TCL_OK
 52425  }
 52426  
 52427  func test_clear_mutex_counters(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 52428  	var ii int32
 52429  
 52430  	if objc != 1 {
 52431  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+584)
 52432  		return TCL_ERROR
 52433  	}
 52434  
 52435  	for ii = 0; ii < SQLITE_MUTEX_STATIC_VFS3+1; ii++ {
 52436  		*(*int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&g3)) + 88 + uintptr(ii)*4)) = 0
 52437  	}
 52438  	return TCL_OK
 52439  }
 52440  
 52441  func test_alloc_mutex(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 52442  	bp := tls.Alloc(124)
 52443  	defer tls.Free(124)
 52444  
 52445  	var p uintptr = sqlite3.Xsqlite3_mutex_alloc(tls, SQLITE_MUTEX_FAST)
 52446  
 52447  	sqlite3.Xsqlite3_mutex_free(tls, p)
 52448  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([100]uint8{})), bp+24, ts+9889, libc.VaList(bp, p))
 52449  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+8, bp+24, uintptr(0)))
 52450  	return TCL_OK
 52451  }
 52452  
 52453  func test_config(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 52454  	bp := tls.Alloc(68)
 52455  	defer tls.Free(68)
 52456  
 52457  	*(*[4]ConfigOption)(unsafe.Pointer(bp)) = [4]ConfigOption{
 52458  		{FzName: ts + 35231, FiValue: SQLITE_CONFIG_SINGLETHREAD},
 52459  		{FzName: ts + 35244, FiValue: SQLITE_CONFIG_MULTITHREAD},
 52460  		{FzName: ts + 35256, FiValue: SQLITE_CONFIG_SERIALIZED},
 52461  		{},
 52462  	}
 52463  	var s int32 = int32(unsafe.Sizeof(ConfigOption{}))
 52464  
 52465  	var rc int32
 52466  
 52467  	if objc != 2 {
 52468  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+584)
 52469  		return TCL_ERROR
 52470  	}
 52471  
 52472  	if tcl.XTcl_GetIndexFromObjStruct(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp, s, ts+17631, 0, bp+64) != 0 {
 52473  		if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp+64) != 0 {
 52474  			return TCL_ERROR
 52475  		}
 52476  	} else {
 52477  		*(*int32)(unsafe.Pointer(bp + 64)) = (*ConfigOption)(unsafe.Pointer(bp + uintptr(*(*int32)(unsafe.Pointer(bp + 64)))*16)).FiValue
 52478  	}
 52479  
 52480  	rc = sqlite3.Xsqlite3_config(tls, *(*int32)(unsafe.Pointer(bp + 64)), 0)
 52481  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(1))
 52482  	return TCL_OK
 52483  }
 52484  
 52485  type ConfigOption = struct {
 52486  	FzName       uintptr
 52487  	FiValue      int32
 52488  	F__ccgo_pad1 [4]byte
 52489  }
 52490  
 52491  func getDbPointer1(tls *libc.TLS, pInterp uintptr, pObj uintptr) uintptr {
 52492  	bp := tls.Alloc(64)
 52493  	defer tls.Free(64)
 52494  
 52495  	var db uintptr
 52496  
 52497  	var zCmd uintptr = tcl.XTcl_GetString(tls, pObj)
 52498  	if tcl.XTcl_GetCommandInfo(tls, pInterp, zCmd, bp) != 0 {
 52499  		db = *(*uintptr)(unsafe.Pointer((*Tcl_CmdInfo)(unsafe.Pointer(bp)).FobjClientData))
 52500  	} else {
 52501  		db = sqlite3TestTextToPtr(tls, zCmd)
 52502  	}
 52503  
 52504  	return db
 52505  }
 52506  
 52507  func getStaticMutexPointer(tls *libc.TLS, pInterp uintptr, pObj uintptr) uintptr {
 52508  	bp := tls.Alloc(4)
 52509  	defer tls.Free(4)
 52510  
 52511  	if tcl.XTcl_GetIndexFromObjStruct(tls, pInterp, pObj, uintptr(unsafe.Pointer(&aName)), int32(unsafe.Sizeof(uintptr(0))), ts+35267, 0, bp) != 0 {
 52512  		return uintptr(0)
 52513  	}
 52514  
 52515  	return counterMutexAlloc(tls, *(*int32)(unsafe.Pointer(bp)))
 52516  }
 52517  
 52518  func test_enter_static_mutex(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 52519  	var pMutex uintptr
 52520  	if objc != 2 {
 52521  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+9762)
 52522  		return TCL_ERROR
 52523  	}
 52524  	pMutex = getStaticMutexPointer(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 52525  	if !(pMutex != 0) {
 52526  		return TCL_ERROR
 52527  	}
 52528  	sqlite3.Xsqlite3_mutex_enter(tls, pMutex)
 52529  	return TCL_OK
 52530  }
 52531  
 52532  func test_leave_static_mutex(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 52533  	var pMutex uintptr
 52534  	if objc != 2 {
 52535  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+9762)
 52536  		return TCL_ERROR
 52537  	}
 52538  	pMutex = getStaticMutexPointer(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 52539  	if !(pMutex != 0) {
 52540  		return TCL_ERROR
 52541  	}
 52542  	sqlite3.Xsqlite3_mutex_leave(tls, pMutex)
 52543  	return TCL_OK
 52544  }
 52545  
 52546  func test_enter_db_mutex(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 52547  	var db uintptr
 52548  	if objc != 2 {
 52549  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2050)
 52550  		return TCL_ERROR
 52551  	}
 52552  	db = getDbPointer1(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 52553  	if !(db != 0) {
 52554  		return TCL_ERROR
 52555  	}
 52556  	sqlite3.Xsqlite3_mutex_enter(tls, sqlite3.Xsqlite3_db_mutex(tls, db))
 52557  	return TCL_OK
 52558  }
 52559  
 52560  func test_leave_db_mutex(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 52561  	var db uintptr
 52562  	if objc != 2 {
 52563  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2050)
 52564  		return TCL_ERROR
 52565  	}
 52566  	db = getDbPointer1(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 52567  	if !(db != 0) {
 52568  		return TCL_ERROR
 52569  	}
 52570  	sqlite3.Xsqlite3_mutex_leave(tls, sqlite3.Xsqlite3_db_mutex(tls, db))
 52571  	return TCL_OK
 52572  }
 52573  
 52574  func Sqlitetest_mutex_Init(tls *libc.TLS, interp uintptr) int32 {
 52575  	var i int32
 52576  	for i = 0; uint64(i) < uint64(unsafe.Sizeof(aCmd8))/uint64(unsafe.Sizeof(struct {
 52577  		FzName uintptr
 52578  		FxProc uintptr
 52579  	}{})); i++ {
 52580  		tcl.XTcl_CreateObjCommand(tls, interp, aCmd8[i].FzName, aCmd8[i].FxProc, uintptr(0), uintptr(0))
 52581  	}
 52582  
 52583  	tcl.XTcl_LinkVar(tls, interp, ts+35278,
 52584  		uintptr(unsafe.Pointer(&g3))+4, TCL_LINK_INT)
 52585  	tcl.XTcl_LinkVar(tls, interp, ts+35297,
 52586  		uintptr(unsafe.Pointer(&g3))+8, TCL_LINK_INT)
 52587  	return SQLITE_OK
 52588  }
 52589  
 52590  var aCmd8 = [11]struct {
 52591  	FzName uintptr
 52592  	FxProc uintptr
 52593  }{
 52594  	{FzName: ts + 35315, FxProc: 0},
 52595  	{FzName: ts + 35332, FxProc: 0},
 52596  	{FzName: ts + 35351, FxProc: 0},
 52597  	{FzName: ts + 35366, FxProc: 0},
 52598  	{FzName: ts + 35385, FxProc: 0},
 52599  	{FzName: ts + 35404, FxProc: 0},
 52600  	{FzName: ts + 35419, FxProc: 0},
 52601  	{FzName: ts + 35434, FxProc: 0},
 52602  	{FzName: ts + 35454, FxProc: 0},
 52603  	{FzName: ts + 35477, FxProc: 0},
 52604  	{FzName: ts + 35497, FxProc: 0},
 52605  }
 52606  
 52607  type fs_real_file1 = struct {
 52608  	FpFile     uintptr
 52609  	FzName     uintptr
 52610  	FnDatabase int32
 52611  	FnJournal  int32
 52612  	FnBlob     int32
 52613  	FnRef      int32
 52614  	FpNext     uintptr
 52615  	FppThis    uintptr
 52616  }
 52617  
 52618  type fs_real_file = fs_real_file1
 52619  
 52620  type fs_file1 = struct {
 52621  	Fbase        sqlite3_file
 52622  	FeType       int32
 52623  	F__ccgo_pad1 [4]byte
 52624  	FpReal       uintptr
 52625  }
 52626  
 52627  type fs_file = fs_file1
 52628  
 52629  type tmp_file1 = struct {
 52630  	Fbase   sqlite3_file
 52631  	FnSize  int32
 52632  	FnAlloc int32
 52633  	FzAlloc uintptr
 52634  }
 52635  
 52636  type tmp_file = tmp_file1
 52637  
 52638  type fs_vfs_t1 = struct {
 52639  	Fbase      sqlite3_vfs
 52640  	FpFileList uintptr
 52641  	FpParent   uintptr
 52642  }
 52643  
 52644  type fs_vfs_t = fs_vfs_t1
 52645  
 52646  var fs_vfs = fs_vfs_t{
 52647  	Fbase: sqlite3_vfs{
 52648  		FiVersion:      1,
 52649  		FzName:         ts + 31055,
 52650  		FxOpen:         0,
 52651  		FxDelete:       0,
 52652  		FxAccess:       0,
 52653  		FxFullPathname: 0,
 52654  		FxDlOpen:       0,
 52655  		FxDlError:      0,
 52656  		FxDlSym:        0,
 52657  		FxDlClose:      0,
 52658  		FxRandomness:   0,
 52659  		FxSleep:        0,
 52660  		FxCurrentTime:  0,
 52661  	},
 52662  }
 52663  
 52664  var fs_io_methods = sqlite3_io_methods{
 52665  	FiVersion:               1,
 52666  	FxClose:                 0,
 52667  	FxRead:                  0,
 52668  	FxWrite:                 0,
 52669  	FxTruncate:              0,
 52670  	FxSync:                  0,
 52671  	FxFileSize:              0,
 52672  	FxLock:                  0,
 52673  	FxUnlock:                0,
 52674  	FxCheckReservedLock:     0,
 52675  	FxFileControl:           0,
 52676  	FxSectorSize:            0,
 52677  	FxDeviceCharacteristics: 0,
 52678  }
 52679  
 52680  var tmp_io_methods = sqlite3_io_methods{
 52681  	FiVersion:               1,
 52682  	FxClose:                 0,
 52683  	FxRead:                  0,
 52684  	FxWrite:                 0,
 52685  	FxTruncate:              0,
 52686  	FxSync:                  0,
 52687  	FxFileSize:              0,
 52688  	FxLock:                  0,
 52689  	FxUnlock:                0,
 52690  	FxCheckReservedLock:     0,
 52691  	FxFileControl:           0,
 52692  	FxSectorSize:            0,
 52693  	FxDeviceCharacteristics: 0,
 52694  }
 52695  
 52696  func tmpClose(tls *libc.TLS, pFile uintptr) int32 {
 52697  	var pTmp uintptr = pFile
 52698  	sqlite3.Xsqlite3_free(tls, (*tmp_file)(unsafe.Pointer(pTmp)).FzAlloc)
 52699  	return SQLITE_OK
 52700  }
 52701  
 52702  func tmpRead(tls *libc.TLS, pFile uintptr, zBuf uintptr, iAmt int32, iOfst sqlite_int64) int32 {
 52703  	var pTmp uintptr = pFile
 52704  	if sqlite_int64(iAmt)+iOfst > sqlite_int64((*tmp_file)(unsafe.Pointer(pTmp)).FnSize) {
 52705  		return SQLITE_IOERR | int32(2)<<8
 52706  	}
 52707  	libc.Xmemcpy(tls, zBuf, (*tmp_file)(unsafe.Pointer(pTmp)).FzAlloc+uintptr(iOfst), uint64(iAmt))
 52708  	return SQLITE_OK
 52709  }
 52710  
 52711  func tmpWrite(tls *libc.TLS, pFile uintptr, zBuf uintptr, iAmt int32, iOfst sqlite_int64) int32 {
 52712  	var pTmp uintptr = pFile
 52713  	if sqlite_int64(iAmt)+iOfst > sqlite_int64((*tmp_file)(unsafe.Pointer(pTmp)).FnAlloc) {
 52714  		var nNew int32 = int32(int64(2) * (sqlite_int64(iAmt) + iOfst + sqlite_int64((*tmp_file)(unsafe.Pointer(pTmp)).FnAlloc)))
 52715  		var zNew uintptr = sqlite3.Xsqlite3_realloc(tls, (*tmp_file)(unsafe.Pointer(pTmp)).FzAlloc, nNew)
 52716  		if !(zNew != 0) {
 52717  			return SQLITE_NOMEM
 52718  		}
 52719  		(*tmp_file)(unsafe.Pointer(pTmp)).FzAlloc = zNew
 52720  		(*tmp_file)(unsafe.Pointer(pTmp)).FnAlloc = nNew
 52721  	}
 52722  	libc.Xmemcpy(tls, (*tmp_file)(unsafe.Pointer(pTmp)).FzAlloc+uintptr(iOfst), zBuf, uint64(iAmt))
 52723  	(*tmp_file)(unsafe.Pointer(pTmp)).FnSize = func() int32 {
 52724  		if sqlite_int64((*tmp_file)(unsafe.Pointer(pTmp)).FnSize) > iOfst+sqlite_int64(iAmt) {
 52725  			return (*tmp_file)(unsafe.Pointer(pTmp)).FnSize
 52726  		}
 52727  		return int32(iOfst + sqlite_int64(iAmt))
 52728  	}()
 52729  	return SQLITE_OK
 52730  }
 52731  
 52732  func tmpTruncate(tls *libc.TLS, pFile uintptr, size sqlite_int64) int32 {
 52733  	var pTmp uintptr = pFile
 52734  	(*tmp_file)(unsafe.Pointer(pTmp)).FnSize = func() int32 {
 52735  		if sqlite_int64((*tmp_file)(unsafe.Pointer(pTmp)).FnSize) < size {
 52736  			return (*tmp_file)(unsafe.Pointer(pTmp)).FnSize
 52737  		}
 52738  		return int32(size)
 52739  	}()
 52740  	return SQLITE_OK
 52741  }
 52742  
 52743  func tmpSync(tls *libc.TLS, pFile uintptr, flags int32) int32 {
 52744  	return SQLITE_OK
 52745  }
 52746  
 52747  func tmpFileSize(tls *libc.TLS, pFile uintptr, pSize uintptr) int32 {
 52748  	var pTmp uintptr = pFile
 52749  	*(*sqlite_int64)(unsafe.Pointer(pSize)) = sqlite_int64((*tmp_file)(unsafe.Pointer(pTmp)).FnSize)
 52750  	return SQLITE_OK
 52751  }
 52752  
 52753  func tmpLock(tls *libc.TLS, pFile uintptr, eLock int32) int32 {
 52754  	return SQLITE_OK
 52755  }
 52756  
 52757  func tmpUnlock(tls *libc.TLS, pFile uintptr, eLock int32) int32 {
 52758  	return SQLITE_OK
 52759  }
 52760  
 52761  func tmpCheckReservedLock(tls *libc.TLS, pFile uintptr, pResOut uintptr) int32 {
 52762  	*(*int32)(unsafe.Pointer(pResOut)) = 0
 52763  	return SQLITE_OK
 52764  }
 52765  
 52766  func tmpFileControl(tls *libc.TLS, pFile uintptr, op int32, pArg uintptr) int32 {
 52767  	return SQLITE_OK
 52768  }
 52769  
 52770  func tmpSectorSize(tls *libc.TLS, pFile uintptr) int32 {
 52771  	return 0
 52772  }
 52773  
 52774  func tmpDeviceCharacteristics(tls *libc.TLS, pFile uintptr) int32 {
 52775  	return 0
 52776  }
 52777  
 52778  func fsClose1(tls *libc.TLS, pFile uintptr) int32 {
 52779  	var rc int32 = SQLITE_OK
 52780  	var p uintptr = pFile
 52781  	var pReal uintptr = (*fs_file)(unsafe.Pointer(p)).FpReal
 52782  
 52783  	(*fs_real_file)(unsafe.Pointer(pReal)).FnRef--
 52784  
 52785  	if (*fs_real_file)(unsafe.Pointer(pReal)).FnRef == 0 {
 52786  		*(*uintptr)(unsafe.Pointer((*fs_real_file)(unsafe.Pointer(pReal)).FppThis)) = (*fs_real_file)(unsafe.Pointer(pReal)).FpNext
 52787  		if (*fs_real_file)(unsafe.Pointer(pReal)).FpNext != 0 {
 52788  			(*fs_real_file)(unsafe.Pointer((*fs_real_file)(unsafe.Pointer(pReal)).FpNext)).FppThis = (*fs_real_file)(unsafe.Pointer(pReal)).FppThis
 52789  		}
 52790  		rc = (*struct {
 52791  			f func(*libc.TLS, uintptr) int32
 52792  		})(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)
 52793  		sqlite3.Xsqlite3_free(tls, pReal)
 52794  	}
 52795  
 52796  	return rc
 52797  }
 52798  
 52799  func fsRead(tls *libc.TLS, pFile uintptr, zBuf uintptr, iAmt int32, iOfst sqlite_int64) int32 {
 52800  	var rc int32 = SQLITE_OK
 52801  	var p uintptr = pFile
 52802  	var pReal uintptr = (*fs_file)(unsafe.Pointer(p)).FpReal
 52803  	var pF uintptr = (*fs_real_file)(unsafe.Pointer(pReal)).FpFile
 52804  
 52805  	if (*fs_file)(unsafe.Pointer(p)).FeType == DATABASE_FILE && sqlite_int64(iAmt)+iOfst > sqlite_int64((*fs_real_file)(unsafe.Pointer(pReal)).FnDatabase) ||
 52806  		(*fs_file)(unsafe.Pointer(p)).FeType == JOURNAL_FILE && sqlite_int64(iAmt)+iOfst > sqlite_int64((*fs_real_file)(unsafe.Pointer(pReal)).FnJournal) {
 52807  		rc = SQLITE_IOERR | int32(2)<<8
 52808  	} else if (*fs_file)(unsafe.Pointer(p)).FeType == DATABASE_FILE {
 52809  		rc = (*struct {
 52810  			f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 52811  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pF)).FpMethods)).FxRead})).f(tls, pF, zBuf, iAmt, iOfst+int64(BLOCKSIZE))
 52812  	} else {
 52813  		var iRem int32 = iAmt
 52814  		var iBuf int32 = 0
 52815  		var ii int32 = int32(iOfst)
 52816  		for iRem > 0 && rc == SQLITE_OK {
 52817  			var iRealOff int32 = (*fs_real_file)(unsafe.Pointer(pReal)).FnBlob - BLOCKSIZE*(ii/BLOCKSIZE+1) + ii%BLOCKSIZE
 52818  			var iRealAmt int32 = func() int32 {
 52819  				if iRem < BLOCKSIZE-iRealOff%BLOCKSIZE {
 52820  					return iRem
 52821  				}
 52822  				return BLOCKSIZE - iRealOff%BLOCKSIZE
 52823  			}()
 52824  
 52825  			rc = (*struct {
 52826  				f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 52827  			})(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))
 52828  			ii = ii + iRealAmt
 52829  			iBuf = iBuf + iRealAmt
 52830  			iRem = iRem - iRealAmt
 52831  		}
 52832  	}
 52833  
 52834  	return rc
 52835  }
 52836  
 52837  func fsWrite(tls *libc.TLS, pFile uintptr, zBuf uintptr, iAmt int32, iOfst sqlite_int64) int32 {
 52838  	var rc int32 = SQLITE_OK
 52839  	var p uintptr = pFile
 52840  	var pReal uintptr = (*fs_file)(unsafe.Pointer(p)).FpReal
 52841  	var pF uintptr = (*fs_real_file)(unsafe.Pointer(pReal)).FpFile
 52842  
 52843  	if (*fs_file)(unsafe.Pointer(p)).FeType == DATABASE_FILE {
 52844  		if sqlite_int64(iAmt)+iOfst+int64(BLOCKSIZE) > sqlite_int64((*fs_real_file)(unsafe.Pointer(pReal)).FnBlob-(*fs_real_file)(unsafe.Pointer(pReal)).FnJournal) {
 52845  			rc = SQLITE_FULL
 52846  		} else {
 52847  			rc = (*struct {
 52848  				f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 52849  			})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pF)).FpMethods)).FxWrite})).f(tls, pF, zBuf, iAmt, iOfst+int64(BLOCKSIZE))
 52850  			if rc == SQLITE_OK {
 52851  				(*fs_real_file)(unsafe.Pointer(pReal)).FnDatabase = func() int32 {
 52852  					if sqlite_int64((*fs_real_file)(unsafe.Pointer(pReal)).FnDatabase) > sqlite_int64(iAmt)+iOfst {
 52853  						return (*fs_real_file)(unsafe.Pointer(pReal)).FnDatabase
 52854  					}
 52855  					return int32(sqlite_int64(iAmt) + iOfst)
 52856  				}()
 52857  			}
 52858  		}
 52859  	} else {
 52860  		var iRem int32 = iAmt
 52861  		var iBuf int32 = 0
 52862  		var ii int32 = int32(iOfst)
 52863  		for iRem > 0 && rc == SQLITE_OK {
 52864  			var iRealOff int32 = (*fs_real_file)(unsafe.Pointer(pReal)).FnBlob - BLOCKSIZE*(ii/BLOCKSIZE+1) + ii%BLOCKSIZE
 52865  			var iRealAmt int32 = func() int32 {
 52866  				if iRem < BLOCKSIZE-iRealOff%BLOCKSIZE {
 52867  					return iRem
 52868  				}
 52869  				return BLOCKSIZE - iRealOff%BLOCKSIZE
 52870  			}()
 52871  
 52872  			if iRealOff < (*fs_real_file)(unsafe.Pointer(pReal)).FnDatabase+BLOCKSIZE {
 52873  				rc = SQLITE_FULL
 52874  			} else {
 52875  				rc = (*struct {
 52876  					f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 52877  				})(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))
 52878  				ii = ii + iRealAmt
 52879  				iBuf = iBuf + iRealAmt
 52880  				iRem = iRem - iRealAmt
 52881  			}
 52882  		}
 52883  		if rc == SQLITE_OK {
 52884  			(*fs_real_file)(unsafe.Pointer(pReal)).FnJournal = func() int32 {
 52885  				if sqlite_int64((*fs_real_file)(unsafe.Pointer(pReal)).FnJournal) > sqlite_int64(iAmt)+iOfst {
 52886  					return (*fs_real_file)(unsafe.Pointer(pReal)).FnJournal
 52887  				}
 52888  				return int32(sqlite_int64(iAmt) + iOfst)
 52889  			}()
 52890  		}
 52891  	}
 52892  
 52893  	return rc
 52894  }
 52895  
 52896  func fsTruncate(tls *libc.TLS, pFile uintptr, size sqlite_int64) int32 {
 52897  	var p uintptr = pFile
 52898  	var pReal uintptr = (*fs_file)(unsafe.Pointer(p)).FpReal
 52899  	if (*fs_file)(unsafe.Pointer(p)).FeType == DATABASE_FILE {
 52900  		(*fs_real_file)(unsafe.Pointer(pReal)).FnDatabase = func() int32 {
 52901  			if sqlite_int64((*fs_real_file)(unsafe.Pointer(pReal)).FnDatabase) < size {
 52902  				return (*fs_real_file)(unsafe.Pointer(pReal)).FnDatabase
 52903  			}
 52904  			return int32(size)
 52905  		}()
 52906  	} else {
 52907  		(*fs_real_file)(unsafe.Pointer(pReal)).FnJournal = func() int32 {
 52908  			if sqlite_int64((*fs_real_file)(unsafe.Pointer(pReal)).FnJournal) < size {
 52909  				return (*fs_real_file)(unsafe.Pointer(pReal)).FnJournal
 52910  			}
 52911  			return int32(size)
 52912  		}()
 52913  	}
 52914  	return SQLITE_OK
 52915  }
 52916  
 52917  func fsSync(tls *libc.TLS, pFile uintptr, flags int32) int32 {
 52918  	bp := tls.Alloc(4)
 52919  	defer tls.Free(4)
 52920  
 52921  	var p uintptr = pFile
 52922  	var pReal uintptr = (*fs_file)(unsafe.Pointer(p)).FpReal
 52923  	var pRealFile uintptr = (*fs_real_file)(unsafe.Pointer(pReal)).FpFile
 52924  	var rc int32 = SQLITE_OK
 52925  
 52926  	if (*fs_file)(unsafe.Pointer(p)).FeType == DATABASE_FILE {
 52927  		*(*uint8)(unsafe.Pointer(bp)) = uint8(uint32((*fs_real_file)(unsafe.Pointer(pReal)).FnDatabase) & 0xFF000000 >> 24)
 52928  		*(*uint8)(unsafe.Pointer(bp + 1)) = uint8((*fs_real_file)(unsafe.Pointer(pReal)).FnDatabase & 0x00FF0000 >> 16)
 52929  		*(*uint8)(unsafe.Pointer(bp + 2)) = uint8((*fs_real_file)(unsafe.Pointer(pReal)).FnDatabase & 0x0000FF00 >> 8)
 52930  		*(*uint8)(unsafe.Pointer(bp + 3)) = uint8((*fs_real_file)(unsafe.Pointer(pReal)).FnDatabase & 0x000000FF)
 52931  		rc = (*struct {
 52932  			f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 52933  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pRealFile)).FpMethods)).FxWrite})).f(tls, pRealFile, bp, 4, int64(0))
 52934  	}
 52935  	if rc == SQLITE_OK {
 52936  		rc = (*struct {
 52937  			f func(*libc.TLS, uintptr, int32) int32
 52938  		})(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))
 52939  	}
 52940  
 52941  	return rc
 52942  }
 52943  
 52944  func fsFileSize(tls *libc.TLS, pFile uintptr, pSize uintptr) int32 {
 52945  	var p uintptr = pFile
 52946  	var pReal uintptr = (*fs_file)(unsafe.Pointer(p)).FpReal
 52947  	if (*fs_file)(unsafe.Pointer(p)).FeType == DATABASE_FILE {
 52948  		*(*sqlite_int64)(unsafe.Pointer(pSize)) = sqlite_int64((*fs_real_file)(unsafe.Pointer(pReal)).FnDatabase)
 52949  	} else {
 52950  		*(*sqlite_int64)(unsafe.Pointer(pSize)) = sqlite_int64((*fs_real_file)(unsafe.Pointer(pReal)).FnJournal)
 52951  	}
 52952  	return SQLITE_OK
 52953  }
 52954  
 52955  func fsLock(tls *libc.TLS, pFile uintptr, eLock int32) int32 {
 52956  	return SQLITE_OK
 52957  }
 52958  
 52959  func fsUnlock(tls *libc.TLS, pFile uintptr, eLock int32) int32 {
 52960  	return SQLITE_OK
 52961  }
 52962  
 52963  func fsCheckReservedLock(tls *libc.TLS, pFile uintptr, pResOut uintptr) int32 {
 52964  	*(*int32)(unsafe.Pointer(pResOut)) = 0
 52965  	return SQLITE_OK
 52966  }
 52967  
 52968  func fsFileControl(tls *libc.TLS, pFile uintptr, op int32, pArg uintptr) int32 {
 52969  	if op == SQLITE_FCNTL_PRAGMA {
 52970  		return SQLITE_NOTFOUND
 52971  	}
 52972  	return SQLITE_OK
 52973  }
 52974  
 52975  func fsSectorSize(tls *libc.TLS, pFile uintptr) int32 {
 52976  	return BLOCKSIZE
 52977  }
 52978  
 52979  func fsDeviceCharacteristics(tls *libc.TLS, pFile uintptr) int32 {
 52980  	return 0
 52981  }
 52982  
 52983  func fsOpen1(tls *libc.TLS, pVfs uintptr, zName uintptr, pFile uintptr, flags int32, pOutFlags uintptr) int32 {
 52984  	bp := tls.Alloc(12)
 52985  	defer tls.Free(12)
 52986  
 52987  	var pFsVfs uintptr
 52988  	var p uintptr
 52989  	var pReal uintptr
 52990  	var eType int32
 52991  	var nName int32
 52992  	var rc int32
 52993  	var p2 uintptr
 52994  
 52995  	var real_flags int32
 52996  
 52997  	var pRealFile uintptr
 52998  	var pParent uintptr
 52999  	pFsVfs = pVfs
 53000  	p = pFile
 53001  	pReal = uintptr(0)
 53002  	rc = SQLITE_OK
 53003  
 53004  	if !(0 == flags&(SQLITE_OPEN_MAIN_DB|SQLITE_OPEN_MAIN_JOURNAL)) {
 53005  		goto __1
 53006  	}
 53007  	p2 = pFile
 53008  	libc.Xmemset(tls, p2, 0, uint64(unsafe.Sizeof(tmp_file{})))
 53009  	(*tmp_file)(unsafe.Pointer(p2)).Fbase.FpMethods = uintptr(unsafe.Pointer(&tmp_io_methods))
 53010  	return SQLITE_OK
 53011  __1:
 53012  	;
 53013  	eType = func() int32 {
 53014  		if flags&SQLITE_OPEN_MAIN_DB != 0 {
 53015  			return DATABASE_FILE
 53016  		}
 53017  		return JOURNAL_FILE
 53018  	}()
 53019  	(*fs_file)(unsafe.Pointer(p)).Fbase.FpMethods = uintptr(unsafe.Pointer(&fs_io_methods))
 53020  	(*fs_file)(unsafe.Pointer(p)).FeType = eType
 53021  
 53022  	nName = int32(libc.Xstrlen(tls, zName)) - func() int32 {
 53023  		if eType == JOURNAL_FILE {
 53024  			return 8
 53025  		}
 53026  		return 0
 53027  	}()
 53028  	pReal = (*fs_vfs_t)(unsafe.Pointer(pFsVfs)).FpFileList
 53029  __2:
 53030  	if !(pReal != 0 && libc.Xstrncmp(tls, (*fs_real_file)(unsafe.Pointer(pReal)).FzName, zName, uint64(nName)) != 0) {
 53031  		goto __4
 53032  	}
 53033  	goto __3
 53034  __3:
 53035  	pReal = (*fs_real_file)(unsafe.Pointer(pReal)).FpNext
 53036  	goto __2
 53037  	goto __4
 53038  __4:
 53039  	;
 53040  	if !!(pReal != 0) {
 53041  		goto __5
 53042  	}
 53043  	real_flags = flags&libc.CplInt32(SQLITE_OPEN_MAIN_DB) | SQLITE_OPEN_TEMP_DB
 53044  	pParent = (*fs_vfs_t)(unsafe.Pointer(pFsVfs)).FpParent
 53045  
 53046  	pReal = sqlite3.Xsqlite3_malloc(tls, int32(uint64(unsafe.Sizeof(fs_real_file{}))+uint64((*sqlite3_vfs)(unsafe.Pointer(pParent)).FszOsFile)))
 53047  	if !!(pReal != 0) {
 53048  		goto __6
 53049  	}
 53050  	rc = SQLITE_NOMEM
 53051  	goto open_out
 53052  __6:
 53053  	;
 53054  	libc.Xmemset(tls, pReal, 0, uint64(unsafe.Sizeof(fs_real_file{}))+uint64((*sqlite3_vfs)(unsafe.Pointer(pParent)).FszOsFile))
 53055  	(*fs_real_file)(unsafe.Pointer(pReal)).FzName = zName
 53056  	(*fs_real_file)(unsafe.Pointer(pReal)).FpFile = pReal + 1*48
 53057  
 53058  	rc = (*struct {
 53059  		f func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr) int32
 53060  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pParent)).FxOpen})).f(tls, pParent, zName, (*fs_real_file)(unsafe.Pointer(pReal)).FpFile, real_flags, pOutFlags)
 53061  	if !(rc != SQLITE_OK) {
 53062  		goto __7
 53063  	}
 53064  	goto open_out
 53065  __7:
 53066  	;
 53067  	pRealFile = (*fs_real_file)(unsafe.Pointer(pReal)).FpFile
 53068  
 53069  	rc = (*struct {
 53070  		f func(*libc.TLS, uintptr, uintptr) int32
 53071  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pRealFile)).FpMethods)).FxFileSize})).f(tls, pRealFile, bp)
 53072  	if !(rc != SQLITE_OK) {
 53073  		goto __8
 53074  	}
 53075  	goto open_out
 53076  __8:
 53077  	;
 53078  	if !(*(*sqlite3_int64)(unsafe.Pointer(bp)) == int64(0)) {
 53079  		goto __9
 53080  	}
 53081  	rc = (*struct {
 53082  		f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 53083  	})(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))
 53084  	(*fs_real_file)(unsafe.Pointer(pReal)).FnBlob = BLOBSIZE
 53085  	goto __10
 53086  __9:
 53087  	(*fs_real_file)(unsafe.Pointer(pReal)).FnBlob = int32(*(*sqlite3_int64)(unsafe.Pointer(bp)))
 53088  	rc = (*struct {
 53089  		f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 53090  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pRealFile)).FpMethods)).FxRead})).f(tls, pRealFile, bp+8, 4, int64(0))
 53091  	(*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)))
 53092  	if !(rc == SQLITE_OK) {
 53093  		goto __11
 53094  	}
 53095  	rc = (*struct {
 53096  		f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 53097  	})(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))
 53098  	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) {
 53099  		goto __12
 53100  	}
 53101  	(*fs_real_file)(unsafe.Pointer(pReal)).FnJournal = (*fs_real_file)(unsafe.Pointer(pReal)).FnBlob
 53102  __12:
 53103  	;
 53104  __11:
 53105  	;
 53106  __10:
 53107  	;
 53108  	if !(rc == SQLITE_OK) {
 53109  		goto __13
 53110  	}
 53111  	(*fs_real_file)(unsafe.Pointer(pReal)).FpNext = (*fs_vfs_t)(unsafe.Pointer(pFsVfs)).FpFileList
 53112  	if !((*fs_real_file)(unsafe.Pointer(pReal)).FpNext != 0) {
 53113  		goto __14
 53114  	}
 53115  	(*fs_real_file)(unsafe.Pointer((*fs_real_file)(unsafe.Pointer(pReal)).FpNext)).FppThis = pReal + 32
 53116  __14:
 53117  	;
 53118  	(*fs_real_file)(unsafe.Pointer(pReal)).FppThis = pFsVfs + 168
 53119  	(*fs_vfs_t)(unsafe.Pointer(pFsVfs)).FpFileList = pReal
 53120  __13:
 53121  	;
 53122  __5:
 53123  	;
 53124  open_out:
 53125  	if !(pReal != 0) {
 53126  		goto __15
 53127  	}
 53128  	if !(rc == SQLITE_OK) {
 53129  		goto __16
 53130  	}
 53131  	(*fs_file)(unsafe.Pointer(p)).FpReal = pReal
 53132  	(*fs_real_file)(unsafe.Pointer(pReal)).FnRef++
 53133  	goto __17
 53134  __16:
 53135  	if !((*sqlite3_file)(unsafe.Pointer((*fs_real_file)(unsafe.Pointer(pReal)).FpFile)).FpMethods != 0) {
 53136  		goto __18
 53137  	}
 53138  	(*struct {
 53139  		f func(*libc.TLS, uintptr) int32
 53140  	})(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)
 53141  __18:
 53142  	;
 53143  	sqlite3.Xsqlite3_free(tls, pReal)
 53144  __17:
 53145  	;
 53146  __15:
 53147  	;
 53148  	return rc
 53149  }
 53150  
 53151  func fsDelete(tls *libc.TLS, pVfs uintptr, zPath uintptr, dirSync int32) int32 {
 53152  	var rc int32 = SQLITE_OK
 53153  	var pFsVfs uintptr = pVfs
 53154  	var pReal uintptr
 53155  	var pF uintptr
 53156  	var nName int32 = int32(libc.Xstrlen(tls, zPath)) - 8
 53157  
 53158  	pReal = (*fs_vfs_t)(unsafe.Pointer(pFsVfs)).FpFileList
 53159  	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 {
 53160  	}
 53161  	if pReal != 0 {
 53162  		pF = (*fs_real_file)(unsafe.Pointer(pReal)).FpFile
 53163  		rc = (*struct {
 53164  			f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 53165  		})(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))
 53166  		if rc == SQLITE_OK {
 53167  			(*fs_real_file)(unsafe.Pointer(pReal)).FnJournal = 0
 53168  		}
 53169  	}
 53170  	return rc
 53171  }
 53172  
 53173  func fsAccess(tls *libc.TLS, pVfs uintptr, zPath uintptr, flags int32, pResOut uintptr) int32 {
 53174  	var pFsVfs uintptr = pVfs
 53175  	var pReal uintptr
 53176  	var isJournal int32 = 0
 53177  	var nName int32 = int32(libc.Xstrlen(tls, zPath))
 53178  
 53179  	if flags != SQLITE_ACCESS_EXISTS {
 53180  		var pParent uintptr = (*fs_vfs_t)(unsafe.Pointer(pVfs)).FpParent
 53181  		return (*struct {
 53182  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 53183  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pParent)).FxAccess})).f(tls, pParent, zPath, flags, pResOut)
 53184  	}
 53185  
 53186  	if nName > 8 && libc.Xstrcmp(tls, ts+32808, zPath+uintptr(nName-8)) == 0 {
 53187  		nName = nName - 8
 53188  		isJournal = 1
 53189  	}
 53190  
 53191  	pReal = (*fs_vfs_t)(unsafe.Pointer(pFsVfs)).FpFileList
 53192  	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 {
 53193  	}
 53194  
 53195  	*(*int32)(unsafe.Pointer(pResOut)) = libc.Bool32(pReal != 0 && (!(isJournal != 0) || (*fs_real_file)(unsafe.Pointer(pReal)).FnJournal > 0))
 53196  	return SQLITE_OK
 53197  }
 53198  
 53199  func fsFullPathname(tls *libc.TLS, pVfs uintptr, zPath uintptr, nOut int32, zOut uintptr) int32 {
 53200  	var pParent uintptr = (*fs_vfs_t)(unsafe.Pointer(pVfs)).FpParent
 53201  	return (*struct {
 53202  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 53203  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pParent)).FxFullPathname})).f(tls, pParent, zPath, nOut, zOut)
 53204  }
 53205  
 53206  func fsDlOpen(tls *libc.TLS, pVfs uintptr, zPath uintptr) uintptr {
 53207  	var pParent uintptr = (*fs_vfs_t)(unsafe.Pointer(pVfs)).FpParent
 53208  	return (*struct {
 53209  		f func(*libc.TLS, uintptr, uintptr) uintptr
 53210  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pParent)).FxDlOpen})).f(tls, pParent, zPath)
 53211  }
 53212  
 53213  func fsDlError(tls *libc.TLS, pVfs uintptr, nByte int32, zErrMsg uintptr) {
 53214  	var pParent uintptr = (*fs_vfs_t)(unsafe.Pointer(pVfs)).FpParent
 53215  	(*struct {
 53216  		f func(*libc.TLS, uintptr, int32, uintptr)
 53217  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pParent)).FxDlError})).f(tls, pParent, nByte, zErrMsg)
 53218  }
 53219  
 53220  func fsDlSym(tls *libc.TLS, pVfs uintptr, pH uintptr, zSym uintptr) uintptr {
 53221  	var pParent uintptr = (*fs_vfs_t)(unsafe.Pointer(pVfs)).FpParent
 53222  	return (*struct {
 53223  		f func(*libc.TLS, uintptr, uintptr, uintptr) uintptr
 53224  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pParent)).FxDlSym})).f(tls, pParent, pH, zSym)
 53225  }
 53226  
 53227  func fsDlClose(tls *libc.TLS, pVfs uintptr, pHandle uintptr) {
 53228  	var pParent uintptr = (*fs_vfs_t)(unsafe.Pointer(pVfs)).FpParent
 53229  	(*struct {
 53230  		f func(*libc.TLS, uintptr, uintptr)
 53231  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pParent)).FxDlClose})).f(tls, pParent, pHandle)
 53232  }
 53233  
 53234  func fsRandomness(tls *libc.TLS, pVfs uintptr, nByte int32, zBufOut uintptr) int32 {
 53235  	var pParent uintptr = (*fs_vfs_t)(unsafe.Pointer(pVfs)).FpParent
 53236  	return (*struct {
 53237  		f func(*libc.TLS, uintptr, int32, uintptr) int32
 53238  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pParent)).FxRandomness})).f(tls, pParent, nByte, zBufOut)
 53239  }
 53240  
 53241  func fsSleep(tls *libc.TLS, pVfs uintptr, nMicro int32) int32 {
 53242  	var pParent uintptr = (*fs_vfs_t)(unsafe.Pointer(pVfs)).FpParent
 53243  	return (*struct {
 53244  		f func(*libc.TLS, uintptr, int32) int32
 53245  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pParent)).FxSleep})).f(tls, pParent, nMicro)
 53246  }
 53247  
 53248  func fsCurrentTime(tls *libc.TLS, pVfs uintptr, pTimeOut uintptr) int32 {
 53249  	var pParent uintptr = (*fs_vfs_t)(unsafe.Pointer(pVfs)).FpParent
 53250  	return (*struct {
 53251  		f func(*libc.TLS, uintptr, uintptr) int32
 53252  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pParent)).FxCurrentTime})).f(tls, pParent, pTimeOut)
 53253  }
 53254  
 53255  func fs_register(tls *libc.TLS) int32 {
 53256  	if fs_vfs.FpParent != 0 {
 53257  		return SQLITE_OK
 53258  	}
 53259  	fs_vfs.FpParent = sqlite3.Xsqlite3_vfs_find(tls, uintptr(0))
 53260  	fs_vfs.Fbase.FmxPathname = (*sqlite3_vfs)(unsafe.Pointer(fs_vfs.FpParent)).FmxPathname
 53261  	fs_vfs.Fbase.FszOsFile = func() int32 {
 53262  		if uint64(unsafe.Sizeof(tmp_file{})) > uint64(unsafe.Sizeof(fs_file{})) {
 53263  			return int32(unsafe.Sizeof(tmp_file{}))
 53264  		}
 53265  		return int32(unsafe.Sizeof(fs_file{}))
 53266  	}()
 53267  	return sqlite3.Xsqlite3_vfs_register(tls, uintptr(unsafe.Pointer(&fs_vfs)), 0)
 53268  }
 53269  
 53270  func SqlitetestOnefile_Init(tls *libc.TLS) int32 {
 53271  	return fs_register(tls)
 53272  }
 53273  
 53274  type VfslogVfs1 = struct {
 53275  	Fbase        sqlite3_vfs
 53276  	FpVfs        uintptr
 53277  	FiNextFileId int32
 53278  	F__ccgo_pad1 [4]byte
 53279  	FpLog        uintptr
 53280  	FiOffset     sqlite3_int64
 53281  	FnBuf        int32
 53282  	FaBuf        [8192]uint8
 53283  	F__ccgo_pad2 [4]byte
 53284  }
 53285  
 53286  type VfslogVfs = VfslogVfs1
 53287  type VfslogFile1 = struct {
 53288  	Fbase        sqlite3_file
 53289  	FpReal       uintptr
 53290  	FpVfslog     uintptr
 53291  	FiFileId     int32
 53292  	F__ccgo_pad1 [4]byte
 53293  }
 53294  
 53295  type VfslogFile = VfslogFile1
 53296  
 53297  var vfslog_vfs = sqlite3_vfs{
 53298  	FiVersion:          1,
 53299  	FszOsFile:          int32(unsafe.Sizeof(VfslogFile{})),
 53300  	FmxPathname:        INST_MAX_PATHNAME,
 53301  	FxOpen:             0,
 53302  	FxDelete:           0,
 53303  	FxAccess:           0,
 53304  	FxFullPathname:     0,
 53305  	FxDlOpen:           0,
 53306  	FxDlError:          0,
 53307  	FxDlSym:            0,
 53308  	FxDlClose:          0,
 53309  	FxRandomness:       0,
 53310  	FxSleep:            0,
 53311  	FxCurrentTime:      0,
 53312  	FxGetLastError:     0,
 53313  	FxCurrentTimeInt64: 0,
 53314  }
 53315  
 53316  var vfslog_io_methods = sqlite3_io_methods{
 53317  	FiVersion:               2,
 53318  	FxClose:                 0,
 53319  	FxRead:                  0,
 53320  	FxWrite:                 0,
 53321  	FxTruncate:              0,
 53322  	FxSync:                  0,
 53323  	FxFileSize:              0,
 53324  	FxLock:                  0,
 53325  	FxUnlock:                0,
 53326  	FxCheckReservedLock:     0,
 53327  	FxFileControl:           0,
 53328  	FxSectorSize:            0,
 53329  	FxDeviceCharacteristics: 0,
 53330  	FxShmMap:                0,
 53331  	FxShmLock:               0,
 53332  	FxShmBarrier:            0,
 53333  	FxShmUnmap:              0,
 53334  }
 53335  
 53336  func vfslog_time(tls *libc.TLS) sqlite3_uint64 {
 53337  	bp := tls.Alloc(16)
 53338  	defer tls.Free(16)
 53339  
 53340  	libc.Xgettimeofday(tls, bp, uintptr(0))
 53341  	return sqlite3_uint64((*timeval)(unsafe.Pointer(bp)).Ftv_usec) + sqlite3_uint64((*timeval)(unsafe.Pointer(bp)).Ftv_sec)*uint64(1000000)
 53342  }
 53343  
 53344  func vfslogClose(tls *libc.TLS, pFile uintptr) int32 {
 53345  	var t sqlite3_uint64
 53346  	var rc int32 = SQLITE_OK
 53347  	var p uintptr = pFile
 53348  
 53349  	t = vfslog_time(tls)
 53350  	if (*sqlite3_file)(unsafe.Pointer((*VfslogFile)(unsafe.Pointer(p)).FpReal)).FpMethods != 0 {
 53351  		rc = (*struct {
 53352  			f func(*libc.TLS, uintptr) int32
 53353  		})(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)
 53354  	}
 53355  	t = vfslog_time(tls) - t
 53356  	vfslog_call(tls, (*VfslogFile)(unsafe.Pointer(p)).FpVfslog, OS_CLOSE, (*VfslogFile)(unsafe.Pointer(p)).FiFileId, int64(t), rc, 0, 0)
 53357  	return rc
 53358  }
 53359  
 53360  func vfslogRead(tls *libc.TLS, pFile uintptr, zBuf uintptr, iAmt int32, iOfst sqlite_int64) int32 {
 53361  	var rc int32
 53362  	var t sqlite3_uint64
 53363  	var p uintptr = pFile
 53364  	t = vfslog_time(tls)
 53365  	rc = (*struct {
 53366  		f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 53367  	})(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)
 53368  	t = vfslog_time(tls) - t
 53369  	vfslog_call(tls, (*VfslogFile)(unsafe.Pointer(p)).FpVfslog, OS_READ, (*VfslogFile)(unsafe.Pointer(p)).FiFileId, int64(t), rc, iAmt, int32(iOfst))
 53370  	return rc
 53371  }
 53372  
 53373  func vfslogWrite(tls *libc.TLS, pFile uintptr, z uintptr, iAmt int32, iOfst sqlite_int64) int32 {
 53374  	var rc int32
 53375  	var t sqlite3_uint64
 53376  	var p uintptr = pFile
 53377  	t = vfslog_time(tls)
 53378  	rc = (*struct {
 53379  		f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 53380  	})(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)
 53381  	t = vfslog_time(tls) - t
 53382  	vfslog_call(tls, (*VfslogFile)(unsafe.Pointer(p)).FpVfslog, OS_WRITE, (*VfslogFile)(unsafe.Pointer(p)).FiFileId, int64(t), rc, iAmt, int32(iOfst))
 53383  	return rc
 53384  }
 53385  
 53386  func vfslogTruncate(tls *libc.TLS, pFile uintptr, size sqlite_int64) int32 {
 53387  	var rc int32
 53388  	var t sqlite3_uint64
 53389  	var p uintptr = pFile
 53390  	t = vfslog_time(tls)
 53391  	rc = (*struct {
 53392  		f func(*libc.TLS, uintptr, sqlite3_int64) int32
 53393  	})(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)
 53394  	t = vfslog_time(tls) - t
 53395  	vfslog_call(tls, (*VfslogFile)(unsafe.Pointer(p)).FpVfslog, OS_TRUNCATE, (*VfslogFile)(unsafe.Pointer(p)).FiFileId, int64(t), rc, 0, int32(size))
 53396  	return rc
 53397  }
 53398  
 53399  func vfslogSync(tls *libc.TLS, pFile uintptr, flags int32) int32 {
 53400  	var rc int32
 53401  	var t sqlite3_uint64
 53402  	var p uintptr = pFile
 53403  	t = vfslog_time(tls)
 53404  	rc = (*struct {
 53405  		f func(*libc.TLS, uintptr, int32) int32
 53406  	})(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)
 53407  	t = vfslog_time(tls) - t
 53408  	vfslog_call(tls, (*VfslogFile)(unsafe.Pointer(p)).FpVfslog, OS_SYNC, (*VfslogFile)(unsafe.Pointer(p)).FiFileId, int64(t), rc, flags, 0)
 53409  	return rc
 53410  }
 53411  
 53412  func vfslogFileSize(tls *libc.TLS, pFile uintptr, pSize uintptr) int32 {
 53413  	var rc int32
 53414  	var t sqlite3_uint64
 53415  	var p uintptr = pFile
 53416  	t = vfslog_time(tls)
 53417  	rc = (*struct {
 53418  		f func(*libc.TLS, uintptr, uintptr) int32
 53419  	})(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)
 53420  	t = vfslog_time(tls) - t
 53421  	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))))
 53422  	return rc
 53423  }
 53424  
 53425  func vfslogLock(tls *libc.TLS, pFile uintptr, eLock int32) int32 {
 53426  	var rc int32
 53427  	var t sqlite3_uint64
 53428  	var p uintptr = pFile
 53429  	t = vfslog_time(tls)
 53430  	rc = (*struct {
 53431  		f func(*libc.TLS, uintptr, int32) int32
 53432  	})(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)
 53433  	t = vfslog_time(tls) - t
 53434  	vfslog_call(tls, (*VfslogFile)(unsafe.Pointer(p)).FpVfslog, OS_LOCK, (*VfslogFile)(unsafe.Pointer(p)).FiFileId, int64(t), rc, eLock, 0)
 53435  	return rc
 53436  }
 53437  
 53438  func vfslogUnlock(tls *libc.TLS, pFile uintptr, eLock int32) int32 {
 53439  	var rc int32
 53440  	var t sqlite3_uint64
 53441  	var p uintptr = pFile
 53442  	t = vfslog_time(tls)
 53443  	rc = (*struct {
 53444  		f func(*libc.TLS, uintptr, int32) int32
 53445  	})(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)
 53446  	t = vfslog_time(tls) - t
 53447  	vfslog_call(tls, (*VfslogFile)(unsafe.Pointer(p)).FpVfslog, OS_UNLOCK, (*VfslogFile)(unsafe.Pointer(p)).FiFileId, int64(t), rc, eLock, 0)
 53448  	return rc
 53449  }
 53450  
 53451  func vfslogCheckReservedLock(tls *libc.TLS, pFile uintptr, pResOut uintptr) int32 {
 53452  	var rc int32
 53453  	var t sqlite3_uint64
 53454  	var p uintptr = pFile
 53455  	t = vfslog_time(tls)
 53456  	rc = (*struct {
 53457  		f func(*libc.TLS, uintptr, uintptr) int32
 53458  	})(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)
 53459  	t = vfslog_time(tls) - t
 53460  	vfslog_call(tls, (*VfslogFile)(unsafe.Pointer(p)).FpVfslog, OS_CHECKRESERVEDLOCK, (*VfslogFile)(unsafe.Pointer(p)).FiFileId, int64(t), rc, *(*int32)(unsafe.Pointer(pResOut)), 0)
 53461  	return rc
 53462  }
 53463  
 53464  func vfslogFileControl(tls *libc.TLS, pFile uintptr, op int32, pArg uintptr) int32 {
 53465  	bp := tls.Alloc(8)
 53466  	defer tls.Free(8)
 53467  
 53468  	var p uintptr = pFile
 53469  	var rc int32 = (*struct {
 53470  		f func(*libc.TLS, uintptr, int32, uintptr) int32
 53471  	})(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)
 53472  	if op == SQLITE_FCNTL_VFSNAME && rc == SQLITE_OK {
 53473  		*(*uintptr)(unsafe.Pointer(pArg)) = sqlite3.Xsqlite3_mprintf(tls, ts+35525, libc.VaList(bp, *(*uintptr)(unsafe.Pointer(pArg))))
 53474  	}
 53475  	return rc
 53476  }
 53477  
 53478  func vfslogSectorSize(tls *libc.TLS, pFile uintptr) int32 {
 53479  	var rc int32
 53480  	var t sqlite3_uint64
 53481  	var p uintptr = pFile
 53482  	t = vfslog_time(tls)
 53483  	rc = (*struct {
 53484  		f func(*libc.TLS, uintptr) int32
 53485  	})(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)
 53486  	t = vfslog_time(tls) - t
 53487  	vfslog_call(tls, (*VfslogFile)(unsafe.Pointer(p)).FpVfslog, OS_SECTORSIZE, (*VfslogFile)(unsafe.Pointer(p)).FiFileId, int64(t), rc, 0, 0)
 53488  	return rc
 53489  }
 53490  
 53491  func vfslogDeviceCharacteristics(tls *libc.TLS, pFile uintptr) int32 {
 53492  	var rc int32
 53493  	var t sqlite3_uint64
 53494  	var p uintptr = pFile
 53495  	t = vfslog_time(tls)
 53496  	rc = (*struct {
 53497  		f func(*libc.TLS, uintptr) int32
 53498  	})(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)
 53499  	t = vfslog_time(tls) - t
 53500  	vfslog_call(tls, (*VfslogFile)(unsafe.Pointer(p)).FpVfslog, OS_DEVCHAR, (*VfslogFile)(unsafe.Pointer(p)).FiFileId, int64(t), rc, 0, 0)
 53501  	return rc
 53502  }
 53503  
 53504  func vfslogShmLock(tls *libc.TLS, pFile uintptr, ofst int32, n int32, flags int32) int32 {
 53505  	var rc int32
 53506  	var t sqlite3_uint64
 53507  	var p uintptr = pFile
 53508  	t = vfslog_time(tls)
 53509  	rc = (*struct {
 53510  		f func(*libc.TLS, uintptr, int32, int32, int32) int32
 53511  	})(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)
 53512  	t = vfslog_time(tls) - t
 53513  	vfslog_call(tls, (*VfslogFile)(unsafe.Pointer(p)).FpVfslog, OS_SHMLOCK, (*VfslogFile)(unsafe.Pointer(p)).FiFileId, int64(t), rc, 0, 0)
 53514  	return rc
 53515  }
 53516  
 53517  func vfslogShmMap(tls *libc.TLS, pFile uintptr, iRegion int32, szRegion int32, isWrite int32, pp uintptr) int32 {
 53518  	var rc int32
 53519  	var t sqlite3_uint64
 53520  	var p uintptr = pFile
 53521  	t = vfslog_time(tls)
 53522  	rc = (*struct {
 53523  		f func(*libc.TLS, uintptr, int32, int32, int32, uintptr) int32
 53524  	})(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)
 53525  	t = vfslog_time(tls) - t
 53526  	vfslog_call(tls, (*VfslogFile)(unsafe.Pointer(p)).FpVfslog, OS_SHMMAP, (*VfslogFile)(unsafe.Pointer(p)).FiFileId, int64(t), rc, 0, 0)
 53527  	return rc
 53528  }
 53529  
 53530  func vfslogShmBarrier(tls *libc.TLS, pFile uintptr) {
 53531  	var t sqlite3_uint64
 53532  	var p uintptr = pFile
 53533  	t = vfslog_time(tls)
 53534  	(*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)
 53535  	t = vfslog_time(tls) - t
 53536  	vfslog_call(tls, (*VfslogFile)(unsafe.Pointer(p)).FpVfslog, OS_SHMBARRIER, (*VfslogFile)(unsafe.Pointer(p)).FiFileId, int64(t), SQLITE_OK, 0, 0)
 53537  }
 53538  
 53539  func vfslogShmUnmap(tls *libc.TLS, pFile uintptr, deleteFlag int32) int32 {
 53540  	var rc int32
 53541  	var t sqlite3_uint64
 53542  	var p uintptr = pFile
 53543  	t = vfslog_time(tls)
 53544  	rc = (*struct {
 53545  		f func(*libc.TLS, uintptr, int32) int32
 53546  	})(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)
 53547  	t = vfslog_time(tls) - t
 53548  	vfslog_call(tls, (*VfslogFile)(unsafe.Pointer(p)).FpVfslog, OS_SHMUNMAP, (*VfslogFile)(unsafe.Pointer(p)).FiFileId, int64(t), rc, 0, 0)
 53549  	return rc
 53550  }
 53551  
 53552  func vfslogOpen(tls *libc.TLS, pVfs uintptr, zName uintptr, pFile uintptr, flags int32, pOutFlags uintptr) int32 {
 53553  	var rc int32
 53554  	var t sqlite3_uint64
 53555  	var p uintptr = pFile
 53556  	var pLog uintptr = pVfs
 53557  
 53558  	(*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods = uintptr(unsafe.Pointer(&vfslog_io_methods))
 53559  	(*VfslogFile)(unsafe.Pointer(p)).FpReal = p + 1*32
 53560  	(*VfslogFile)(unsafe.Pointer(p)).FpVfslog = pVfs
 53561  	(*VfslogFile)(unsafe.Pointer(p)).FiFileId = libc.PreIncInt32(&(*VfslogVfs)(unsafe.Pointer(pLog)).FiNextFileId, 1)
 53562  
 53563  	t = vfslog_time(tls)
 53564  	rc = (*struct {
 53565  		f func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr) int32
 53566  	})(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)
 53567  	t = vfslog_time(tls) - t
 53568  
 53569  	vfslog_call(tls, pVfs, OS_OPEN, (*VfslogFile)(unsafe.Pointer(p)).FiFileId, int64(t), rc, 0, 0)
 53570  	vfslog_string(tls, pVfs, zName)
 53571  	return rc
 53572  }
 53573  
 53574  func vfslogDelete(tls *libc.TLS, pVfs uintptr, zPath uintptr, dirSync int32) int32 {
 53575  	var rc int32
 53576  	var t sqlite3_uint64
 53577  	t = vfslog_time(tls)
 53578  	rc = (*struct {
 53579  		f func(*libc.TLS, uintptr, uintptr, int32) int32
 53580  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*VfslogVfs)(unsafe.Pointer(pVfs)).FpVfs)).FxDelete})).f(tls, (*VfslogVfs)(unsafe.Pointer(pVfs)).FpVfs, zPath, dirSync)
 53581  	t = vfslog_time(tls) - t
 53582  	vfslog_call(tls, pVfs, OS_DELETE, 0, int64(t), rc, dirSync, 0)
 53583  	vfslog_string(tls, pVfs, zPath)
 53584  	return rc
 53585  }
 53586  
 53587  func vfslogAccess(tls *libc.TLS, pVfs uintptr, zPath uintptr, flags int32, pResOut uintptr) int32 {
 53588  	var rc int32
 53589  	var t sqlite3_uint64
 53590  	t = vfslog_time(tls)
 53591  	rc = (*struct {
 53592  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 53593  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*VfslogVfs)(unsafe.Pointer(pVfs)).FpVfs)).FxAccess})).f(tls, (*VfslogVfs)(unsafe.Pointer(pVfs)).FpVfs, zPath, flags, pResOut)
 53594  	t = vfslog_time(tls) - t
 53595  	vfslog_call(tls, pVfs, OS_ACCESS, 0, int64(t), rc, flags, *(*int32)(unsafe.Pointer(pResOut)))
 53596  	vfslog_string(tls, pVfs, zPath)
 53597  	return rc
 53598  }
 53599  
 53600  func vfslogFullPathname(tls *libc.TLS, pVfs uintptr, zPath uintptr, nOut int32, zOut uintptr) int32 {
 53601  	return (*struct {
 53602  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 53603  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*VfslogVfs)(unsafe.Pointer(pVfs)).FpVfs)).FxFullPathname})).f(tls, (*VfslogVfs)(unsafe.Pointer(pVfs)).FpVfs, zPath, nOut, zOut)
 53604  }
 53605  
 53606  func vfslogDlOpen(tls *libc.TLS, pVfs uintptr, zPath uintptr) uintptr {
 53607  	return (*struct {
 53608  		f func(*libc.TLS, uintptr, uintptr) uintptr
 53609  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*VfslogVfs)(unsafe.Pointer(pVfs)).FpVfs)).FxDlOpen})).f(tls, (*VfslogVfs)(unsafe.Pointer(pVfs)).FpVfs, zPath)
 53610  }
 53611  
 53612  func vfslogDlError(tls *libc.TLS, pVfs uintptr, nByte int32, zErrMsg uintptr) {
 53613  	(*struct {
 53614  		f func(*libc.TLS, uintptr, int32, uintptr)
 53615  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*VfslogVfs)(unsafe.Pointer(pVfs)).FpVfs)).FxDlError})).f(tls, (*VfslogVfs)(unsafe.Pointer(pVfs)).FpVfs, nByte, zErrMsg)
 53616  }
 53617  
 53618  func vfslogDlSym(tls *libc.TLS, pVfs uintptr, p uintptr, zSym uintptr) uintptr {
 53619  	return (*struct {
 53620  		f func(*libc.TLS, uintptr, uintptr, uintptr) uintptr
 53621  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*VfslogVfs)(unsafe.Pointer(pVfs)).FpVfs)).FxDlSym})).f(tls, (*VfslogVfs)(unsafe.Pointer(pVfs)).FpVfs, p, zSym)
 53622  }
 53623  
 53624  func vfslogDlClose(tls *libc.TLS, pVfs uintptr, pHandle uintptr) {
 53625  	(*struct {
 53626  		f func(*libc.TLS, uintptr, uintptr)
 53627  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*VfslogVfs)(unsafe.Pointer(pVfs)).FpVfs)).FxDlClose})).f(tls, (*VfslogVfs)(unsafe.Pointer(pVfs)).FpVfs, pHandle)
 53628  }
 53629  
 53630  func vfslogRandomness(tls *libc.TLS, pVfs uintptr, nByte int32, zBufOut uintptr) int32 {
 53631  	return (*struct {
 53632  		f func(*libc.TLS, uintptr, int32, uintptr) int32
 53633  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*VfslogVfs)(unsafe.Pointer(pVfs)).FpVfs)).FxRandomness})).f(tls, (*VfslogVfs)(unsafe.Pointer(pVfs)).FpVfs, nByte, zBufOut)
 53634  }
 53635  
 53636  func vfslogSleep(tls *libc.TLS, pVfs uintptr, nMicro int32) int32 {
 53637  	return (*struct {
 53638  		f func(*libc.TLS, uintptr, int32) int32
 53639  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*VfslogVfs)(unsafe.Pointer(pVfs)).FpVfs)).FxSleep})).f(tls, (*VfslogVfs)(unsafe.Pointer(pVfs)).FpVfs, nMicro)
 53640  }
 53641  
 53642  func vfslogCurrentTime(tls *libc.TLS, pVfs uintptr, pTimeOut uintptr) int32 {
 53643  	return (*struct {
 53644  		f func(*libc.TLS, uintptr, uintptr) int32
 53645  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*VfslogVfs)(unsafe.Pointer(pVfs)).FpVfs)).FxCurrentTime})).f(tls, (*VfslogVfs)(unsafe.Pointer(pVfs)).FpVfs, pTimeOut)
 53646  }
 53647  
 53648  func vfslogGetLastError(tls *libc.TLS, pVfs uintptr, a int32, b uintptr) int32 {
 53649  	return (*struct {
 53650  		f func(*libc.TLS, uintptr, int32, uintptr) int32
 53651  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*VfslogVfs)(unsafe.Pointer(pVfs)).FpVfs)).FxGetLastError})).f(tls, (*VfslogVfs)(unsafe.Pointer(pVfs)).FpVfs, a, b)
 53652  }
 53653  
 53654  func vfslogCurrentTimeInt64(tls *libc.TLS, pVfs uintptr, p uintptr) int32 {
 53655  	return (*struct {
 53656  		f func(*libc.TLS, uintptr, uintptr) int32
 53657  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*VfslogVfs)(unsafe.Pointer(pVfs)).FpVfs)).FxCurrentTimeInt64})).f(tls, (*VfslogVfs)(unsafe.Pointer(pVfs)).FpVfs, p)
 53658  }
 53659  
 53660  func vfslog_flush(tls *libc.TLS, p uintptr) {
 53661  	var pending int32 = libc.AtomicLoadInt32(&sqlite3.Xsqlite3_io_error_pending)
 53662  	var persist int32 = sqlite3.Xsqlite3_io_error_persist
 53663  	var diskfull int32 = sqlite3.Xsqlite3_diskfull_pending
 53664  
 53665  	libc.AtomicStoreInt32(&sqlite3.Xsqlite3_io_error_pending, int32(0))
 53666  	sqlite3.Xsqlite3_io_error_persist = 0
 53667  	sqlite3.Xsqlite3_diskfull_pending = 0
 53668  
 53669  	if (*VfslogVfs)(unsafe.Pointer(p)).FnBuf != 0 {
 53670  		(*struct {
 53671  			f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 53672  		})(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)
 53673  		*(*sqlite3_int64)(unsafe.Pointer(p + 192)) += sqlite3_int64((*VfslogVfs)(unsafe.Pointer(p)).FnBuf)
 53674  		(*VfslogVfs)(unsafe.Pointer(p)).FnBuf = 0
 53675  	}
 53676  
 53677  	libc.AtomicStoreInt32(&sqlite3.Xsqlite3_io_error_pending, pending)
 53678  	sqlite3.Xsqlite3_io_error_persist = persist
 53679  	sqlite3.Xsqlite3_diskfull_pending = diskfull
 53680  }
 53681  
 53682  func put32bits(tls *libc.TLS, p uintptr, v uint32) {
 53683  	*(*uint8)(unsafe.Pointer(p)) = uint8(v >> 24)
 53684  	*(*uint8)(unsafe.Pointer(p + 1)) = uint8(v >> 16)
 53685  	*(*uint8)(unsafe.Pointer(p + 2)) = uint8(v >> 8)
 53686  	*(*uint8)(unsafe.Pointer(p + 3)) = uint8(v)
 53687  }
 53688  
 53689  func vfslog_call(tls *libc.TLS, pVfs uintptr, eEvent int32, iFileid int32, nClick sqlite3_int64, return_code int32, size int32, offset int32) {
 53690  	var p uintptr = pVfs
 53691  	var zRec uintptr
 53692  	if uint64(24+(*VfslogVfs)(unsafe.Pointer(p)).FnBuf) > uint64(unsafe.Sizeof([8192]uint8{})) {
 53693  		vfslog_flush(tls, p)
 53694  	}
 53695  	zRec = p + 204 + uintptr((*VfslogVfs)(unsafe.Pointer(p)).FnBuf)
 53696  	put32bits(tls, zRec, uint32(eEvent))
 53697  	put32bits(tls, zRec+4, uint32(iFileid))
 53698  	put32bits(tls, zRec+8, uint32(nClick&int64(0xffff)))
 53699  	put32bits(tls, zRec+12, uint32(return_code))
 53700  	put32bits(tls, zRec+16, uint32(size))
 53701  	put32bits(tls, zRec+20, uint32(offset))
 53702  	*(*int32)(unsafe.Pointer(p + 200)) += 24
 53703  }
 53704  
 53705  func vfslog_string(tls *libc.TLS, pVfs uintptr, zStr uintptr) {
 53706  	var p uintptr = pVfs
 53707  	var zRec uintptr
 53708  	var nStr int32
 53709  	if zStr != 0 {
 53710  		nStr = int32(libc.Xstrlen(tls, zStr))
 53711  	} else {
 53712  		nStr = 0
 53713  	}
 53714  	if uint64(4+nStr+(*VfslogVfs)(unsafe.Pointer(p)).FnBuf) > uint64(unsafe.Sizeof([8192]uint8{})) {
 53715  		vfslog_flush(tls, p)
 53716  	}
 53717  	zRec = p + 204 + uintptr((*VfslogVfs)(unsafe.Pointer(p)).FnBuf)
 53718  	put32bits(tls, zRec, uint32(nStr))
 53719  	if zStr != 0 {
 53720  		libc.Xmemcpy(tls, zRec+4, zStr, uint64(nStr))
 53721  	}
 53722  	*(*int32)(unsafe.Pointer(p + 200)) += 4 + nStr
 53723  }
 53724  
 53725  func vfslog_finalize(tls *libc.TLS, p uintptr) {
 53726  	if (*sqlite3_file)(unsafe.Pointer((*VfslogVfs)(unsafe.Pointer(p)).FpLog)).FpMethods != 0 {
 53727  		vfslog_flush(tls, p)
 53728  		(*struct {
 53729  			f func(*libc.TLS, uintptr) int32
 53730  		})(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)
 53731  	}
 53732  	sqlite3.Xsqlite3_free(tls, p)
 53733  }
 53734  
 53735  func sqlite3_vfslog_finalize(tls *libc.TLS, zVfs uintptr) int32 {
 53736  	var pVfs uintptr
 53737  	pVfs = sqlite3.Xsqlite3_vfs_find(tls, zVfs)
 53738  	if !(pVfs != 0) || (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FxOpen != *(*uintptr)(unsafe.Pointer(&struct {
 53739  		f func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr) int32
 53740  	}{vfslogOpen})) {
 53741  		return SQLITE_ERROR
 53742  	}
 53743  	sqlite3.Xsqlite3_vfs_unregister(tls, pVfs)
 53744  	vfslog_finalize(tls, pVfs)
 53745  	return SQLITE_OK
 53746  }
 53747  
 53748  func sqlite3_vfslog_new(tls *libc.TLS, zVfs uintptr, zParentVfs uintptr, zLog uintptr) int32 {
 53749  	bp := tls.Alloc(4)
 53750  	defer tls.Free(4)
 53751  
 53752  	var p uintptr
 53753  	var pParent uintptr
 53754  	var nByte int32
 53755  
 53756  	var rc int32
 53757  	var zFile uintptr
 53758  	var nVfs int32
 53759  
 53760  	pParent = sqlite3.Xsqlite3_vfs_find(tls, zParentVfs)
 53761  	if !(pParent != 0) {
 53762  		return SQLITE_ERROR
 53763  	}
 53764  
 53765  	nVfs = int32(libc.Xstrlen(tls, zVfs))
 53766  	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))
 53767  	p = sqlite3.Xsqlite3_malloc(tls, nByte)
 53768  	libc.Xmemset(tls, p, 0, uint64(nByte))
 53769  
 53770  	(*VfslogVfs)(unsafe.Pointer(p)).FpVfs = pParent
 53771  	(*VfslogVfs)(unsafe.Pointer(p)).FpLog = p + 1*8400
 53772  	libc.Xmemcpy(tls, p, uintptr(unsafe.Pointer(&vfslog_vfs)), uint64(unsafe.Sizeof(sqlite3_vfs{})))
 53773  	(*VfslogVfs)(unsafe.Pointer(p)).Fbase.FzName = (*VfslogVfs)(unsafe.Pointer(p)).FpLog + uintptr((*sqlite3_vfs)(unsafe.Pointer(pParent)).FszOsFile)
 53774  	*(*int32)(unsafe.Pointer(p + 4)) += (*sqlite3_vfs)(unsafe.Pointer(pParent)).FszOsFile
 53775  	libc.Xmemcpy(tls, (*VfslogVfs)(unsafe.Pointer(p)).Fbase.FzName, zVfs, uint64(nVfs))
 53776  
 53777  	zFile = (*VfslogVfs)(unsafe.Pointer(p)).Fbase.FzName + uintptr(nVfs+1)
 53778  	(*struct {
 53779  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 53780  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pParent)).FxFullPathname})).f(tls, pParent, zLog, (*sqlite3_vfs)(unsafe.Pointer(pParent)).FmxPathname, zFile)
 53781  
 53782  	*(*int32)(unsafe.Pointer(bp)) = SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE | SQLITE_OPEN_SUPER_JOURNAL
 53783  	(*struct {
 53784  		f func(*libc.TLS, uintptr, uintptr, int32) int32
 53785  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pParent)).FxDelete})).f(tls, pParent, zFile, 0)
 53786  	rc = (*struct {
 53787  		f func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr) int32
 53788  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pParent)).FxOpen})).f(tls, pParent, zFile, (*VfslogVfs)(unsafe.Pointer(p)).FpLog, *(*int32)(unsafe.Pointer(bp)), bp)
 53789  	if rc == SQLITE_OK {
 53790  		libc.Xmemcpy(tls, p+204, ts+35535, uint64(20))
 53791  		(*VfslogVfs)(unsafe.Pointer(p)).FiOffset = int64(0)
 53792  		(*VfslogVfs)(unsafe.Pointer(p)).FnBuf = 20
 53793  		rc = sqlite3.Xsqlite3_vfs_register(tls, p, 1)
 53794  	}
 53795  	if rc != 0 {
 53796  		vfslog_finalize(tls, p)
 53797  	}
 53798  	return rc
 53799  }
 53800  
 53801  func sqlite3_vfslog_annotate(tls *libc.TLS, zVfs uintptr, zMsg uintptr) int32 {
 53802  	var pVfs uintptr
 53803  	pVfs = sqlite3.Xsqlite3_vfs_find(tls, zVfs)
 53804  	if !(pVfs != 0) || (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FxOpen != *(*uintptr)(unsafe.Pointer(&struct {
 53805  		f func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr) int32
 53806  	}{vfslogOpen})) {
 53807  		return SQLITE_ERROR
 53808  	}
 53809  	vfslog_call(tls, pVfs, OS_ANNOTATE, 0, int64(0), 0, 0, 0)
 53810  	vfslog_string(tls, pVfs, zMsg)
 53811  	return SQLITE_OK
 53812  }
 53813  
 53814  func vfslog_eventname(tls *libc.TLS, eEvent int32) uintptr {
 53815  	var zEvent uintptr = uintptr(0)
 53816  
 53817  	switch eEvent {
 53818  	case OS_CLOSE:
 53819  		zEvent = ts + 35556
 53820  		break
 53821  	case OS_READ:
 53822  		zEvent = ts + 35563
 53823  		break
 53824  	case OS_WRITE:
 53825  		zEvent = ts + 35569
 53826  		break
 53827  	case OS_TRUNCATE:
 53828  		zEvent = ts + 35576
 53829  		break
 53830  	case OS_SYNC:
 53831  		zEvent = ts + 27843
 53832  		break
 53833  	case OS_FILESIZE:
 53834  		zEvent = ts + 35586
 53835  		break
 53836  	case OS_LOCK:
 53837  		zEvent = ts + 35596
 53838  		break
 53839  	case OS_UNLOCK:
 53840  		zEvent = ts + 35602
 53841  		break
 53842  	case OS_CHECKRESERVEDLOCK:
 53843  		zEvent = ts + 35610
 53844  		break
 53845  	case OS_FILECONTROL:
 53846  		zEvent = ts + 35624
 53847  		break
 53848  	case OS_SECTORSIZE:
 53849  		zEvent = ts + 35637
 53850  		break
 53851  	case OS_DEVCHAR:
 53852  		zEvent = ts + 35649
 53853  		break
 53854  	case OS_OPEN:
 53855  		zEvent = ts + 27421
 53856  		break
 53857  	case OS_DELETE:
 53858  		zEvent = ts + 35661
 53859  		break
 53860  	case OS_ACCESS:
 53861  		zEvent = ts + 35669
 53862  		break
 53863  	case OS_FULLPATHNAME:
 53864  		zEvent = ts + 35677
 53865  		break
 53866  	case OS_RANDOMNESS:
 53867  		zEvent = ts + 35691
 53868  		break
 53869  	case OS_SLEEP:
 53870  		zEvent = ts + 35703
 53871  		break
 53872  	case OS_CURRENTTIME:
 53873  		zEvent = ts + 35710
 53874  		break
 53875  
 53876  	case OS_SHMUNMAP:
 53877  		zEvent = ts + 35723
 53878  		break
 53879  	case OS_SHMLOCK:
 53880  		zEvent = ts + 35733
 53881  		break
 53882  	case OS_SHMBARRIER:
 53883  		zEvent = ts + 35742
 53884  		break
 53885  	case OS_SHMMAP:
 53886  		zEvent = ts + 35754
 53887  		break
 53888  
 53889  	case OS_ANNOTATE:
 53890  		zEvent = ts + 35762
 53891  		break
 53892  	}
 53893  
 53894  	return zEvent
 53895  }
 53896  
 53897  type VfslogVtab1 = struct {
 53898  	Fbase  sqlite3_vtab
 53899  	FpFd   uintptr
 53900  	FnByte sqlite3_int64
 53901  	FzFile uintptr
 53902  }
 53903  
 53904  type VfslogVtab = VfslogVtab1
 53905  type VfslogCsr1 = struct {
 53906  	Fbase        sqlite3_vtab_cursor
 53907  	FiRowid      sqlite3_int64
 53908  	FiOffset     sqlite3_int64
 53909  	FzTransient  uintptr
 53910  	FnFile       int32
 53911  	F__ccgo_pad1 [4]byte
 53912  	FazFile      uintptr
 53913  	FaBuf        [1024]uint8
 53914  }
 53915  
 53916  type VfslogCsr = VfslogCsr1
 53917  
 53918  func get32bits(tls *libc.TLS, p uintptr) uint32 {
 53919  	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))))
 53920  }
 53921  
 53922  func dequote(tls *libc.TLS, z uintptr) {
 53923  	var quote uint8
 53924  	quote = *(*uint8)(unsafe.Pointer(z))
 53925  	if int32(quote) == '[' || int32(quote) == '\'' || int32(quote) == '"' || int32(quote) == '`' {
 53926  		var iIn int32 = 1
 53927  		var iOut int32 = 0
 53928  		if int32(quote) == '[' {
 53929  			quote = uint8(']')
 53930  		}
 53931  		for *(*uint8)(unsafe.Pointer(z + uintptr(iIn))) != 0 {
 53932  			if int32(*(*uint8)(unsafe.Pointer(z + uintptr(iIn)))) == int32(quote) {
 53933  				if int32(*(*uint8)(unsafe.Pointer(z + uintptr(iIn+1)))) != int32(quote) {
 53934  					break
 53935  				}
 53936  				*(*uint8)(unsafe.Pointer(z + uintptr(libc.PostIncInt32(&iOut, 1)))) = quote
 53937  				iIn = iIn + 2
 53938  			} else {
 53939  				*(*uint8)(unsafe.Pointer(z + uintptr(libc.PostIncInt32(&iOut, 1)))) = *(*uint8)(unsafe.Pointer(z + uintptr(libc.PostIncInt32(&iIn, 1))))
 53940  			}
 53941  		}
 53942  		*(*uint8)(unsafe.Pointer(z + uintptr(iOut))) = uint8(0)
 53943  	}
 53944  }
 53945  
 53946  func vlogConnect(tls *libc.TLS, db uintptr, pAux uintptr, argc int32, argv uintptr, ppVtab uintptr, pzErr uintptr) int32 {
 53947  	bp := tls.Alloc(12)
 53948  	defer tls.Free(12)
 53949  
 53950  	var pVfs uintptr
 53951  
 53952  	var p uintptr
 53953  	var rc int32
 53954  	var nByte int32
 53955  	var zFile uintptr
 53956  
 53957  	*(*uintptr)(unsafe.Pointer(ppVtab)) = uintptr(0)
 53958  	pVfs = sqlite3.Xsqlite3_vfs_find(tls, uintptr(0))
 53959  	nByte = int32(uint64(unsafe.Sizeof(VfslogVtab{})) + uint64((*sqlite3_vfs)(unsafe.Pointer(pVfs)).FszOsFile) + uint64((*sqlite3_vfs)(unsafe.Pointer(pVfs)).FmxPathname))
 53960  	p = sqlite3.Xsqlite3_malloc(tls, nByte)
 53961  	if p == uintptr(0) {
 53962  		return SQLITE_NOMEM
 53963  	}
 53964  	libc.Xmemset(tls, p, 0, uint64(nByte))
 53965  
 53966  	(*VfslogVtab)(unsafe.Pointer(p)).FpFd = p + 1*48
 53967  	(*VfslogVtab)(unsafe.Pointer(p)).FzFile = (*VfslogVtab)(unsafe.Pointer(p)).FpFd + uintptr((*sqlite3_vfs)(unsafe.Pointer(pVfs)).FszOsFile)
 53968  
 53969  	zFile = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp, *(*uintptr)(unsafe.Pointer(argv + 3*8))))
 53970  	if !(zFile != 0) {
 53971  		sqlite3.Xsqlite3_free(tls, p)
 53972  		return SQLITE_NOMEM
 53973  	}
 53974  	dequote(tls, zFile)
 53975  	(*struct {
 53976  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 53977  	})(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)
 53978  	sqlite3.Xsqlite3_free(tls, zFile)
 53979  
 53980  	*(*int32)(unsafe.Pointer(bp + 8)) = SQLITE_OPEN_READWRITE | SQLITE_OPEN_SUPER_JOURNAL
 53981  	rc = (*struct {
 53982  		f func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr) int32
 53983  	})(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)
 53984  
 53985  	if rc == SQLITE_OK {
 53986  		(*struct {
 53987  			f func(*libc.TLS, uintptr, uintptr) int32
 53988  		})(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)
 53989  		sqlite3.Xsqlite3_declare_vtab(tls, db,
 53990  			ts+35773)
 53991  		*(*uintptr)(unsafe.Pointer(ppVtab)) = p
 53992  	} else {
 53993  		sqlite3.Xsqlite3_free(tls, p)
 53994  	}
 53995  
 53996  	return rc
 53997  }
 53998  
 53999  func vlogBestIndex(tls *libc.TLS, tab uintptr, pIdxInfo uintptr) int32 {
 54000  	(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = 10.0
 54001  	return SQLITE_OK
 54002  }
 54003  
 54004  func vlogDisconnect(tls *libc.TLS, pVtab uintptr) int32 {
 54005  	var p uintptr = pVtab
 54006  	if (*sqlite3_file)(unsafe.Pointer((*VfslogVtab)(unsafe.Pointer(p)).FpFd)).FpMethods != 0 {
 54007  		(*struct {
 54008  			f func(*libc.TLS, uintptr) int32
 54009  		})(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)
 54010  		(*sqlite3_file)(unsafe.Pointer((*VfslogVtab)(unsafe.Pointer(p)).FpFd)).FpMethods = uintptr(0)
 54011  	}
 54012  	sqlite3.Xsqlite3_free(tls, p)
 54013  	return SQLITE_OK
 54014  }
 54015  
 54016  func vlogOpen(tls *libc.TLS, pVTab uintptr, ppCursor uintptr) int32 {
 54017  	var pCsr uintptr
 54018  
 54019  	pCsr = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(VfslogCsr{})))
 54020  	if !(pCsr != 0) {
 54021  		return SQLITE_NOMEM
 54022  	}
 54023  	libc.Xmemset(tls, pCsr, 0, uint64(unsafe.Sizeof(VfslogCsr{})))
 54024  	*(*uintptr)(unsafe.Pointer(ppCursor)) = pCsr
 54025  	return SQLITE_OK
 54026  }
 54027  
 54028  func vlogClose(tls *libc.TLS, pCursor uintptr) int32 {
 54029  	var p uintptr = pCursor
 54030  	var i int32
 54031  	for i = 0; i < (*VfslogCsr)(unsafe.Pointer(p)).FnFile; i++ {
 54032  		sqlite3.Xsqlite3_free(tls, *(*uintptr)(unsafe.Pointer((*VfslogCsr)(unsafe.Pointer(p)).FazFile + uintptr(i)*8)))
 54033  	}
 54034  	sqlite3.Xsqlite3_free(tls, (*VfslogCsr)(unsafe.Pointer(p)).FazFile)
 54035  	sqlite3.Xsqlite3_free(tls, (*VfslogCsr)(unsafe.Pointer(p)).FzTransient)
 54036  	sqlite3.Xsqlite3_free(tls, p)
 54037  	return SQLITE_OK
 54038  }
 54039  
 54040  func vlogNext(tls *libc.TLS, pCursor uintptr) int32 {
 54041  	bp := tls.Alloc(4)
 54042  	defer tls.Free(4)
 54043  
 54044  	var pCsr uintptr = pCursor
 54045  	var p uintptr = (*sqlite3_vtab_cursor)(unsafe.Pointer(pCursor)).FpVtab
 54046  	var rc int32 = SQLITE_OK
 54047  	var nRead int32
 54048  
 54049  	sqlite3.Xsqlite3_free(tls, (*VfslogCsr)(unsafe.Pointer(pCsr)).FzTransient)
 54050  	(*VfslogCsr)(unsafe.Pointer(pCsr)).FzTransient = uintptr(0)
 54051  
 54052  	nRead = 24
 54053  	if (*VfslogCsr)(unsafe.Pointer(pCsr)).FiOffset+sqlite3_int64(nRead) <= (*VfslogVtab)(unsafe.Pointer(p)).FnByte {
 54054  		var eEvent int32
 54055  		rc = (*struct {
 54056  			f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 54057  		})(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)
 54058  
 54059  		eEvent = int32(get32bits(tls, pCsr+48))
 54060  		if rc == SQLITE_OK &&
 54061  			(eEvent == OS_OPEN || eEvent == OS_DELETE || eEvent == OS_ACCESS) {
 54062  			rc = (*struct {
 54063  				f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 54064  			})(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))
 54065  			nRead = nRead + 4
 54066  			if rc == SQLITE_OK {
 54067  				var nStr int32 = int32(get32bits(tls, bp))
 54068  				var zStr uintptr = sqlite3.Xsqlite3_malloc(tls, nStr+1)
 54069  				rc = (*struct {
 54070  					f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 54071  				})(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))
 54072  				*(*uint8)(unsafe.Pointer(zStr + uintptr(nStr))) = uint8(0)
 54073  				nRead = nRead + nStr
 54074  
 54075  				if eEvent == OS_OPEN {
 54076  					var iFileid int32 = int32(get32bits(tls, pCsr+48+4))
 54077  					if iFileid >= (*VfslogCsr)(unsafe.Pointer(pCsr)).FnFile {
 54078  						var nNew int32 = int32(uint64(unsafe.Sizeof(uintptr(0))) * uint64(iFileid+1))
 54079  						(*VfslogCsr)(unsafe.Pointer(pCsr)).FazFile = sqlite3.Xsqlite3_realloc(tls, (*VfslogCsr)(unsafe.Pointer(pCsr)).FazFile, nNew)
 54080  						nNew = int32(uint64(nNew) - uint64(unsafe.Sizeof(uintptr(0)))*uint64((*VfslogCsr)(unsafe.Pointer(pCsr)).FnFile))
 54081  						libc.Xmemset(tls, (*VfslogCsr)(unsafe.Pointer(pCsr)).FazFile+uintptr((*VfslogCsr)(unsafe.Pointer(pCsr)).FnFile)*8, 0, uint64(nNew))
 54082  						(*VfslogCsr)(unsafe.Pointer(pCsr)).FnFile = iFileid + 1
 54083  					}
 54084  					sqlite3.Xsqlite3_free(tls, *(*uintptr)(unsafe.Pointer((*VfslogCsr)(unsafe.Pointer(pCsr)).FazFile + uintptr(iFileid)*8)))
 54085  					*(*uintptr)(unsafe.Pointer((*VfslogCsr)(unsafe.Pointer(pCsr)).FazFile + uintptr(iFileid)*8)) = zStr
 54086  				} else {
 54087  					(*VfslogCsr)(unsafe.Pointer(pCsr)).FzTransient = zStr
 54088  				}
 54089  			}
 54090  		}
 54091  	}
 54092  
 54093  	*(*sqlite3_int64)(unsafe.Pointer(pCsr + 8)) += int64(1)
 54094  	*(*sqlite3_int64)(unsafe.Pointer(pCsr + 16)) += sqlite3_int64(nRead)
 54095  	return rc
 54096  }
 54097  
 54098  func vlogEof(tls *libc.TLS, pCursor uintptr) int32 {
 54099  	var pCsr uintptr = pCursor
 54100  	var p uintptr = (*sqlite3_vtab_cursor)(unsafe.Pointer(pCursor)).FpVtab
 54101  	return libc.Bool32((*VfslogCsr)(unsafe.Pointer(pCsr)).FiOffset >= (*VfslogVtab)(unsafe.Pointer(p)).FnByte)
 54102  }
 54103  
 54104  func vlogFilter(tls *libc.TLS, pCursor uintptr, idxNum int32, idxStr uintptr, argc int32, argv uintptr) int32 {
 54105  	var pCsr uintptr = pCursor
 54106  	(*VfslogCsr)(unsafe.Pointer(pCsr)).FiRowid = int64(0)
 54107  	(*VfslogCsr)(unsafe.Pointer(pCsr)).FiOffset = int64(20)
 54108  	return vlogNext(tls, pCursor)
 54109  }
 54110  
 54111  func vlogColumn(tls *libc.TLS, pCursor uintptr, ctx uintptr, i int32) int32 {
 54112  	var val uint32
 54113  	var pCsr uintptr = pCursor
 54114  
 54115  	val = get32bits(tls, pCsr+48+uintptr(4*i))
 54116  
 54117  	switch i {
 54118  	case 0:
 54119  		{
 54120  			sqlite3.Xsqlite3_result_text(tls, ctx, vfslog_eventname(tls, int32(val)), -1, uintptr(0))
 54121  			break
 54122  
 54123  		}
 54124  	case 1:
 54125  		{
 54126  			var zStr uintptr = (*VfslogCsr)(unsafe.Pointer(pCsr)).FzTransient
 54127  			if val != uint32(0) && val < uint32((*VfslogCsr)(unsafe.Pointer(pCsr)).FnFile) {
 54128  				zStr = *(*uintptr)(unsafe.Pointer((*VfslogCsr)(unsafe.Pointer(pCsr)).FazFile + uintptr(val)*8))
 54129  			}
 54130  			sqlite3.Xsqlite3_result_text(tls, ctx, zStr, -1, libc.UintptrFromInt32(-1))
 54131  			break
 54132  
 54133  		}
 54134  	default:
 54135  		sqlite3.Xsqlite3_result_int(tls, ctx, int32(val))
 54136  		break
 54137  	}
 54138  
 54139  	return SQLITE_OK
 54140  }
 54141  
 54142  func vlogRowid(tls *libc.TLS, pCursor uintptr, pRowid uintptr) int32 {
 54143  	var pCsr uintptr = pCursor
 54144  	*(*sqlite_int64)(unsafe.Pointer(pRowid)) = (*VfslogCsr)(unsafe.Pointer(pCsr)).FiRowid
 54145  	return SQLITE_OK
 54146  }
 54147  
 54148  func sqlite3_vfslog_register(tls *libc.TLS, db uintptr) int32 {
 54149  	sqlite3.Xsqlite3_create_module(tls, db, ts+35828, uintptr(unsafe.Pointer(&vfslog_module)), uintptr(0))
 54150  	return SQLITE_OK
 54151  }
 54152  
 54153  var vfslog_module = sqlite3_module{
 54154  	FxCreate:     0,
 54155  	FxConnect:    0,
 54156  	FxBestIndex:  0,
 54157  	FxDisconnect: 0,
 54158  	FxDestroy:    0,
 54159  	FxOpen:       0,
 54160  	FxClose:      0,
 54161  	FxFilter:     0,
 54162  	FxNext:       0,
 54163  	FxEof:        0,
 54164  	FxColumn:     0,
 54165  	FxRowid:      0,
 54166  }
 54167  
 54168  func test_vfslog(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 54169  	bp := tls.Alloc(144)
 54170  	defer tls.Free(144)
 54171  
 54172  	var db uintptr
 54173  
 54174  	var rc int32 = SQLITE_ERROR
 54175  
 54176  	if objc < 2 {
 54177  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+32982)
 54178  		return TCL_ERROR
 54179  	}
 54180  	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 {
 54181  		return TCL_ERROR
 54182  	}
 54183  
 54184  	switch uint32(*(*int32)(unsafe.Pointer(bp + 72))) {
 54185  	case uint32(0):
 54186  		{
 54187  			var zVfs uintptr
 54188  			var zMsg uintptr
 54189  			if objc != 4 {
 54190  				tcl.XTcl_WrongNumArgs(tls, interp, 3, objv, ts+35835)
 54191  				return TCL_ERROR
 54192  			}
 54193  			zVfs = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 54194  			zMsg = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)))
 54195  			rc = sqlite3_vfslog_annotate(tls, zVfs, zMsg)
 54196  			if rc != SQLITE_OK {
 54197  				tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+35839, 0))
 54198  				return TCL_ERROR
 54199  			}
 54200  			break
 54201  
 54202  		}
 54203  	case uint32(1):
 54204  		{
 54205  			var zVfs uintptr
 54206  			if objc != 3 {
 54207  				tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+35835)
 54208  				return TCL_ERROR
 54209  			}
 54210  			zVfs = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 54211  			rc = sqlite3_vfslog_finalize(tls, zVfs)
 54212  			if rc != SQLITE_OK {
 54213  				tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+16, ts+35839, 0))
 54214  				return TCL_ERROR
 54215  			}
 54216  			break
 54217  
 54218  		}
 54219  
 54220  	case uint32(2):
 54221  		{
 54222  			var zVfs uintptr
 54223  			var zParent uintptr
 54224  			var zLog uintptr
 54225  			if objc != 5 {
 54226  				tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+35846)
 54227  				return TCL_ERROR
 54228  			}
 54229  			zVfs = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 54230  			zParent = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)))
 54231  			zLog = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 4*8)))
 54232  			if int32(*(*uint8)(unsafe.Pointer(zParent))) == 0 {
 54233  				zParent = uintptr(0)
 54234  			}
 54235  			rc = sqlite3_vfslog_new(tls, zVfs, zParent, zLog)
 54236  			if rc != SQLITE_OK {
 54237  				tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+35839, 0))
 54238  				return TCL_ERROR
 54239  			}
 54240  			break
 54241  
 54242  		}
 54243  
 54244  	case uint32(3):
 54245  		{
 54246  			var zDb uintptr
 54247  			if objc != 3 {
 54248  				tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+2050)
 54249  				return TCL_ERROR
 54250  			}
 54251  			zDb = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 54252  			if tcl.XTcl_GetCommandInfo(tls, interp, zDb, bp+80) != 0 {
 54253  				db = (*struct{ Fdb uintptr })(unsafe.Pointer((*Tcl_CmdInfo)(unsafe.Pointer(bp + 80)).FobjClientData)).Fdb
 54254  				rc = sqlite3_vfslog_register(tls, db)
 54255  			}
 54256  			if rc != SQLITE_OK {
 54257  				tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+48, ts+35865, zDb, uintptr(0)))
 54258  				return TCL_ERROR
 54259  			}
 54260  			break
 54261  
 54262  		}
 54263  	}
 54264  
 54265  	return TCL_OK
 54266  }
 54267  
 54268  var strs = [5]uintptr{ts + 35886, ts + 35895, ts + 14009, ts + 35904, uintptr(0)}
 54269  
 54270  func SqlitetestOsinst_Init(tls *libc.TLS, interp uintptr) int32 {
 54271  	tcl.XTcl_CreateObjCommand(tls, interp, ts+35828, *(*uintptr)(unsafe.Pointer(&struct {
 54272  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 54273  	}{test_vfslog})), uintptr(0), uintptr(0))
 54274  	return TCL_OK
 54275  }
 54276  
 54277  type testpcacheGlobalType1 = struct {
 54278  	FpDummy        uintptr
 54279  	FnInstance     int32
 54280  	FdiscardChance uint32
 54281  	FprngSeed      uint32
 54282  	FhighStress    uint32
 54283  }
 54284  
 54285  type testpcacheGlobalType = testpcacheGlobalType1
 54286  
 54287  var testpcacheGlobal testpcacheGlobalType
 54288  
 54289  func testpcacheInit(tls *libc.TLS, pArg uintptr) int32 {
 54290  	testpcacheGlobal.FpDummy = sqlite3.Xsqlite3_malloc(tls, 10)
 54291  	if testpcacheGlobal.FpDummy == uintptr(0) {
 54292  		return SQLITE_NOMEM
 54293  	}
 54294  	return SQLITE_OK
 54295  }
 54296  
 54297  func testpcacheShutdown(tls *libc.TLS, pArg uintptr) {
 54298  	sqlite3.Xsqlite3_free(tls, testpcacheGlobal.FpDummy)
 54299  	testpcacheGlobal.FpDummy = uintptr(0)
 54300  }
 54301  
 54302  type testpcache1 = struct {
 54303  	FszPage      int32
 54304  	FszExtra     int32
 54305  	FbPurgeable  int32
 54306  	FnFree       int32
 54307  	FnPinned     int32
 54308  	FiRand       uint32
 54309  	FiMagic      uint32
 54310  	F__ccgo_pad1 [4]byte
 54311  	Fa           [217]struct {
 54312  		Fpage     sqlite3_pcache_page
 54313  		Fkey      uint32
 54314  		FisPinned int32
 54315  	}
 54316  }
 54317  
 54318  type testpcache = testpcache1
 54319  type testpcachePage = struct {
 54320  	Fpage     sqlite3_pcache_page
 54321  	Fkey      uint32
 54322  	FisPinned int32
 54323  }
 54324  
 54325  func testpcacheRandom(tls *libc.TLS, p uintptr) uint32 {
 54326  	var x uint32 = uint32(0)
 54327  	var i int32
 54328  	for i = 0; i < 4; i++ {
 54329  		(*testpcache)(unsafe.Pointer(p)).FiRand = (*testpcache)(unsafe.Pointer(p)).FiRand*uint32(69069) + uint32(5)
 54330  		x = x<<8 | (*testpcache)(unsafe.Pointer(p)).FiRand>>16&uint32(0xff)
 54331  	}
 54332  	return x
 54333  }
 54334  
 54335  func testpcacheCreate(tls *libc.TLS, szPage int32, szExtra int32, bPurgeable int32) uintptr {
 54336  	var nMem int32
 54337  	var x uintptr
 54338  	var p uintptr
 54339  	var i int32
 54340  
 54341  	szPage = (szPage + 7) & libc.CplInt32(7)
 54342  	nMem = int32(uint64(unsafe.Sizeof(testpcache{})) + uint64(TESTPCACHE_NPAGE*(szPage+szExtra)))
 54343  	p = sqlite3.Xsqlite3_malloc(tls, nMem)
 54344  	if p == uintptr(0) {
 54345  		return uintptr(0)
 54346  	}
 54347  	x = p + 1*5240
 54348  	(*testpcache)(unsafe.Pointer(p)).FszPage = szPage
 54349  	(*testpcache)(unsafe.Pointer(p)).FszExtra = szExtra
 54350  	(*testpcache)(unsafe.Pointer(p)).FnFree = TESTPCACHE_NPAGE
 54351  	(*testpcache)(unsafe.Pointer(p)).FnPinned = 0
 54352  	(*testpcache)(unsafe.Pointer(p)).FiRand = testpcacheGlobal.FprngSeed
 54353  	(*testpcache)(unsafe.Pointer(p)).FbPurgeable = bPurgeable
 54354  	(*testpcache)(unsafe.Pointer(p)).FiMagic = uint32(TESTPCACHE_VALID)
 54355  	i = 0
 54356  __1:
 54357  	if !(i < TESTPCACHE_NPAGE) {
 54358  		goto __3
 54359  	}
 54360  	{
 54361  		(*testpcachePage)(unsafe.Pointer(p + 32 + uintptr(i)*24)).Fkey = uint32(0)
 54362  		(*testpcachePage)(unsafe.Pointer(p + 32 + uintptr(i)*24)).FisPinned = 0
 54363  		(*testpcachePage)(unsafe.Pointer(p + 32 + uintptr(i)*24)).Fpage.FpBuf = x
 54364  		(*testpcachePage)(unsafe.Pointer(p + 32 + uintptr(i)*24)).Fpage.FpExtra = x + uintptr(szPage)
 54365  
 54366  	}
 54367  	goto __2
 54368  __2:
 54369  	i++
 54370  	x += uintptr(szPage + szExtra)
 54371  	goto __1
 54372  	goto __3
 54373  __3:
 54374  	;
 54375  	testpcacheGlobal.FnInstance++
 54376  	return p
 54377  }
 54378  
 54379  func testpcacheCachesize(tls *libc.TLS, pCache uintptr, newSize int32) {
 54380  	var p uintptr = pCache
 54381  	_ = p
 54382  
 54383  }
 54384  
 54385  func testpcachePagecount(tls *libc.TLS, pCache uintptr) int32 {
 54386  	var p uintptr = pCache
 54387  
 54388  	return TESTPCACHE_NPAGE - (*testpcache)(unsafe.Pointer(p)).FnFree
 54389  }
 54390  
 54391  func testpcacheFetch(tls *libc.TLS, pCache uintptr, key uint32, createFlag int32) uintptr {
 54392  	var p uintptr = pCache
 54393  	var i int32
 54394  	var j int32
 54395  
 54396  	for i = 0; i < TESTPCACHE_NPAGE; i++ {
 54397  		if (*testpcachePage)(unsafe.Pointer(p+32+uintptr(i)*24)).Fkey == key {
 54398  			if !((*testpcachePage)(unsafe.Pointer(p+32+uintptr(i)*24)).FisPinned != 0) {
 54399  				(*testpcache)(unsafe.Pointer(p)).FnPinned++
 54400  
 54401  				(*testpcachePage)(unsafe.Pointer(p + 32 + uintptr(i)*24)).FisPinned = 1
 54402  			}
 54403  			return p + 32 + uintptr(i)*24
 54404  		}
 54405  	}
 54406  
 54407  	if createFlag == 0 {
 54408  		return uintptr(0)
 54409  	}
 54410  
 54411  	if (*testpcache)(unsafe.Pointer(p)).FnPinned == TESTPCACHE_NPAGE {
 54412  		return uintptr(0)
 54413  	}
 54414  
 54415  	if (*testpcache)(unsafe.Pointer(p)).FnPinned >= TESTPCACHE_NPAGE-TESTPCACHE_RESERVE && createFlag < 2 {
 54416  		return uintptr(0)
 54417  	}
 54418  
 54419  	if testpcacheGlobal.FhighStress != 0 && createFlag < 2 {
 54420  		return uintptr(0)
 54421  	}
 54422  
 54423  	if (*testpcache)(unsafe.Pointer(p)).FnFree > TESTPCACHE_RESERVE || createFlag == 2 && (*testpcache)(unsafe.Pointer(p)).FnFree > 0 {
 54424  		j = int32(testpcacheRandom(tls, p) % uint32(TESTPCACHE_NPAGE))
 54425  		i = 0
 54426  	__1:
 54427  		if !(i < TESTPCACHE_NPAGE) {
 54428  			goto __3
 54429  		}
 54430  		{
 54431  			if (*testpcachePage)(unsafe.Pointer(p+32+uintptr(j)*24)).Fkey == uint32(0) {
 54432  				(*testpcachePage)(unsafe.Pointer(p + 32 + uintptr(j)*24)).Fkey = key
 54433  				(*testpcachePage)(unsafe.Pointer(p + 32 + uintptr(j)*24)).FisPinned = 1
 54434  				libc.Xmemset(tls, (*testpcachePage)(unsafe.Pointer(p+32+uintptr(j)*24)).Fpage.FpBuf, 0, uint64((*testpcache)(unsafe.Pointer(p)).FszPage))
 54435  				libc.Xmemset(tls, (*testpcachePage)(unsafe.Pointer(p+32+uintptr(j)*24)).Fpage.FpExtra, 0, uint64((*testpcache)(unsafe.Pointer(p)).FszExtra))
 54436  				(*testpcache)(unsafe.Pointer(p)).FnPinned++
 54437  				(*testpcache)(unsafe.Pointer(p)).FnFree--
 54438  
 54439  				return p + 32 + uintptr(j)*24
 54440  			}
 54441  
 54442  		}
 54443  		goto __2
 54444  	__2:
 54445  		i++
 54446  		j = (j + 1) % TESTPCACHE_NPAGE
 54447  		goto __1
 54448  		goto __3
 54449  	__3:
 54450  	}
 54451  
 54452  	if (*testpcache)(unsafe.Pointer(p)).FbPurgeable == 0 {
 54453  		return uintptr(0)
 54454  	}
 54455  
 54456  	j = int32(testpcacheRandom(tls, p) % uint32(TESTPCACHE_NPAGE))
 54457  	i = 0
 54458  __4:
 54459  	if !(i < TESTPCACHE_NPAGE) {
 54460  		goto __6
 54461  	}
 54462  	{
 54463  		if (*testpcachePage)(unsafe.Pointer(p+32+uintptr(j)*24)).Fkey > uint32(0) && (*testpcachePage)(unsafe.Pointer(p+32+uintptr(j)*24)).FisPinned == 0 {
 54464  			(*testpcachePage)(unsafe.Pointer(p + 32 + uintptr(j)*24)).Fkey = key
 54465  			(*testpcachePage)(unsafe.Pointer(p + 32 + uintptr(j)*24)).FisPinned = 1
 54466  			libc.Xmemset(tls, (*testpcachePage)(unsafe.Pointer(p+32+uintptr(j)*24)).Fpage.FpBuf, 0, uint64((*testpcache)(unsafe.Pointer(p)).FszPage))
 54467  			libc.Xmemset(tls, (*testpcachePage)(unsafe.Pointer(p+32+uintptr(j)*24)).Fpage.FpExtra, 0, uint64((*testpcache)(unsafe.Pointer(p)).FszExtra))
 54468  			(*testpcache)(unsafe.Pointer(p)).FnPinned++
 54469  
 54470  			return p + 32 + uintptr(j)*24
 54471  		}
 54472  
 54473  	}
 54474  	goto __5
 54475  __5:
 54476  	i++
 54477  	j = (j + 1) % TESTPCACHE_NPAGE
 54478  	goto __4
 54479  	goto __6
 54480  __6:
 54481  	;
 54482  	return uintptr(0)
 54483  }
 54484  
 54485  func testpcacheUnpin(tls *libc.TLS, pCache uintptr, pOldPage uintptr, discard int32) {
 54486  	var p uintptr = pCache
 54487  	var i int32
 54488  
 54489  	if (*testpcache)(unsafe.Pointer(p)).FbPurgeable != 0 &&
 54490  		uint32(100)-testpcacheGlobal.FdiscardChance <= testpcacheRandom(tls, p)%uint32(100) {
 54491  		discard = 1
 54492  	}
 54493  
 54494  	for i = 0; i < TESTPCACHE_NPAGE; i++ {
 54495  		if p+32+uintptr(i)*24 == pOldPage {
 54496  			(*testpcachePage)(unsafe.Pointer(p + 32 + uintptr(i)*24)).FisPinned = 0
 54497  			(*testpcache)(unsafe.Pointer(p)).FnPinned--
 54498  
 54499  			if discard != 0 {
 54500  				(*testpcachePage)(unsafe.Pointer(p + 32 + uintptr(i)*24)).Fkey = uint32(0)
 54501  				(*testpcache)(unsafe.Pointer(p)).FnFree++
 54502  
 54503  			}
 54504  			return
 54505  		}
 54506  	}
 54507  
 54508  }
 54509  
 54510  func testpcacheRekey(tls *libc.TLS, pCache uintptr, pOldPage uintptr, oldKey uint32, newKey uint32) {
 54511  	var p uintptr = pCache
 54512  	var i int32
 54513  
 54514  	for i = 0; i < TESTPCACHE_NPAGE; i++ {
 54515  		if (*testpcachePage)(unsafe.Pointer(p+32+uintptr(i)*24)).Fkey == newKey {
 54516  			(*testpcachePage)(unsafe.Pointer(p + 32 + uintptr(i)*24)).Fkey = uint32(0)
 54517  			(*testpcache)(unsafe.Pointer(p)).FnFree++
 54518  
 54519  			break
 54520  		}
 54521  	}
 54522  
 54523  	for i = 0; i < TESTPCACHE_NPAGE; i++ {
 54524  		if (*testpcachePage)(unsafe.Pointer(p+32+uintptr(i)*24)).Fkey == oldKey {
 54525  			(*testpcachePage)(unsafe.Pointer(p + 32 + uintptr(i)*24)).Fkey = newKey
 54526  			return
 54527  		}
 54528  	}
 54529  
 54530  }
 54531  
 54532  func testpcacheTruncate(tls *libc.TLS, pCache uintptr, iLimit uint32) {
 54533  	var p uintptr = pCache
 54534  	var i uint32
 54535  
 54536  	for i = uint32(0); i < uint32(TESTPCACHE_NPAGE); i++ {
 54537  		if (*testpcachePage)(unsafe.Pointer(p+32+uintptr(i)*24)).Fkey >= iLimit {
 54538  			(*testpcachePage)(unsafe.Pointer(p + 32 + uintptr(i)*24)).Fkey = uint32(0)
 54539  			if (*testpcachePage)(unsafe.Pointer(p+32+uintptr(i)*24)).FisPinned != 0 {
 54540  				(*testpcache)(unsafe.Pointer(p)).FnPinned--
 54541  
 54542  			}
 54543  			(*testpcache)(unsafe.Pointer(p)).FnFree++
 54544  
 54545  		}
 54546  	}
 54547  }
 54548  
 54549  func testpcacheDestroy(tls *libc.TLS, pCache uintptr) {
 54550  	var p uintptr = pCache
 54551  
 54552  	(*testpcache)(unsafe.Pointer(p)).FiMagic = TESTPCACHE_CLEAR
 54553  	sqlite3.Xsqlite3_free(tls, p)
 54554  	testpcacheGlobal.FnInstance--
 54555  }
 54556  
 54557  func installTestPCache(tls *libc.TLS, installFlag int32, discardChance uint32, prngSeed uint32, highStress uint32) {
 54558  	bp := tls.Alloc(24)
 54559  	defer tls.Free(24)
 54560  
 54561  	testpcacheGlobal.FdiscardChance = discardChance
 54562  	testpcacheGlobal.FprngSeed = prngSeed ^ prngSeed<<16
 54563  	testpcacheGlobal.FhighStress = highStress
 54564  	if installFlag != isInstalled {
 54565  		if installFlag != 0 {
 54566  			sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_GETPCACHE2, libc.VaList(bp, uintptr(unsafe.Pointer(&defaultPcache))))
 54567  
 54568  			sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_PCACHE2, libc.VaList(bp+8, uintptr(unsafe.Pointer(&testPcache))))
 54569  		} else {
 54570  			sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_PCACHE2, libc.VaList(bp+16, uintptr(unsafe.Pointer(&defaultPcache))))
 54571  		}
 54572  		isInstalled = installFlag
 54573  	}
 54574  }
 54575  
 54576  var testPcache = sqlite3_pcache_methods2{
 54577  	FiVersion:   1,
 54578  	FpArg:       0,
 54579  	FxInit:      0,
 54580  	FxShutdown:  0,
 54581  	FxCreate:    0,
 54582  	FxCachesize: 0,
 54583  	FxPagecount: 0,
 54584  	FxFetch:     0,
 54585  	FxUnpin:     0,
 54586  	FxRekey:     0,
 54587  	FxTruncate:  0,
 54588  	FxDestroy:   0,
 54589  }
 54590  var defaultPcache sqlite3_pcache_methods2
 54591  var isInstalled int32 = 0
 54592  
 54593  type quota_FILE1 = struct {
 54594  	Ff     uintptr
 54595  	FiOfst sqlite3_int64
 54596  	FpFile uintptr
 54597  }
 54598  
 54599  type quota_FILE = quota_FILE1
 54600  
 54601  type quotaGroup1 = struct {
 54602  	FzPattern  uintptr
 54603  	FiLimit    sqlite3_int64
 54604  	FiSize     sqlite3_int64
 54605  	FxCallback uintptr
 54606  	FpArg      uintptr
 54607  	FxDestroy  uintptr
 54608  	FpNext     uintptr
 54609  	FppPrev    uintptr
 54610  	FpFiles    uintptr
 54611  }
 54612  
 54613  type quotaGroup = quotaGroup1
 54614  type quotaConn1 = struct {
 54615  	Fbase  sqlite3_file
 54616  	FpFile uintptr
 54617  }
 54618  
 54619  type quotaConn = quotaConn1
 54620  type quotaFile1 = struct {
 54621  	FzFilename     uintptr
 54622  	FpGroup        uintptr
 54623  	FiSize         sqlite3_int64
 54624  	FnRef          int32
 54625  	FdeleteOnClose int32
 54626  	FpNext         uintptr
 54627  	FppPrev        uintptr
 54628  }
 54629  
 54630  type quotaFile = quotaFile1
 54631  
 54632  var gQuota struct {
 54633  	FpOrigVfs      uintptr
 54634  	FsThisVfs      sqlite3_vfs
 54635  	FsIoMethodsV1  sqlite3_io_methods
 54636  	FsIoMethodsV2  sqlite3_io_methods
 54637  	FisInitialized int32
 54638  	F__ccgo_pad1   [4]byte
 54639  	FpMutex        uintptr
 54640  	FpGroup        uintptr
 54641  }
 54642  
 54643  func quotaEnter(tls *libc.TLS) {
 54644  	sqlite3.Xsqlite3_mutex_enter(tls, gQuota.FpMutex)
 54645  }
 54646  
 54647  func quotaLeave(tls *libc.TLS) {
 54648  	sqlite3.Xsqlite3_mutex_leave(tls, gQuota.FpMutex)
 54649  }
 54650  
 54651  func quotaGroupOpenFileCount(tls *libc.TLS, pGroup uintptr) int32 {
 54652  	var N int32 = 0
 54653  	var pFile uintptr = (*quotaGroup)(unsafe.Pointer(pGroup)).FpFiles
 54654  	for pFile != 0 {
 54655  		if (*quotaFile)(unsafe.Pointer(pFile)).FnRef != 0 {
 54656  			N++
 54657  		}
 54658  		pFile = (*quotaFile)(unsafe.Pointer(pFile)).FpNext
 54659  	}
 54660  	return N
 54661  }
 54662  
 54663  func quotaRemoveFile(tls *libc.TLS, pFile uintptr) {
 54664  	var pGroup uintptr = (*quotaFile)(unsafe.Pointer(pFile)).FpGroup
 54665  	*(*sqlite3_int64)(unsafe.Pointer(pGroup + 16)) -= (*quotaFile)(unsafe.Pointer(pFile)).FiSize
 54666  	*(*uintptr)(unsafe.Pointer((*quotaFile)(unsafe.Pointer(pFile)).FppPrev)) = (*quotaFile)(unsafe.Pointer(pFile)).FpNext
 54667  	if (*quotaFile)(unsafe.Pointer(pFile)).FpNext != 0 {
 54668  		(*quotaFile)(unsafe.Pointer((*quotaFile)(unsafe.Pointer(pFile)).FpNext)).FppPrev = (*quotaFile)(unsafe.Pointer(pFile)).FppPrev
 54669  	}
 54670  	sqlite3.Xsqlite3_free(tls, pFile)
 54671  }
 54672  
 54673  func quotaRemoveAllFiles(tls *libc.TLS, pGroup uintptr) {
 54674  	for (*quotaGroup)(unsafe.Pointer(pGroup)).FpFiles != 0 {
 54675  		quotaRemoveFile(tls, (*quotaGroup)(unsafe.Pointer(pGroup)).FpFiles)
 54676  	}
 54677  }
 54678  
 54679  func quotaGroupDeref(tls *libc.TLS, pGroup uintptr) {
 54680  	if (*quotaGroup)(unsafe.Pointer(pGroup)).FiLimit == int64(0) && quotaGroupOpenFileCount(tls, pGroup) == 0 {
 54681  		quotaRemoveAllFiles(tls, pGroup)
 54682  		*(*uintptr)(unsafe.Pointer((*quotaGroup)(unsafe.Pointer(pGroup)).FppPrev)) = (*quotaGroup)(unsafe.Pointer(pGroup)).FpNext
 54683  		if (*quotaGroup)(unsafe.Pointer(pGroup)).FpNext != 0 {
 54684  			(*quotaGroup)(unsafe.Pointer((*quotaGroup)(unsafe.Pointer(pGroup)).FpNext)).FppPrev = (*quotaGroup)(unsafe.Pointer(pGroup)).FppPrev
 54685  		}
 54686  		if (*quotaGroup)(unsafe.Pointer(pGroup)).FxDestroy != 0 {
 54687  			(*struct{ f func(*libc.TLS, uintptr) })(unsafe.Pointer(&struct{ uintptr }{(*quotaGroup)(unsafe.Pointer(pGroup)).FxDestroy})).f(tls, (*quotaGroup)(unsafe.Pointer(pGroup)).FpArg)
 54688  		}
 54689  		sqlite3.Xsqlite3_free(tls, pGroup)
 54690  	}
 54691  }
 54692  
 54693  func quotaStrglob(tls *libc.TLS, zGlob uintptr, z uintptr) int32 {
 54694  	var c int32
 54695  	var c2 int32
 54696  	var cx int32
 54697  	var invert int32
 54698  	var seen int32
 54699  
 54700  	for libc.AssignInt32(&c, int32(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&zGlob, 1))))) != 0 {
 54701  		if c == '*' {
 54702  			for libc.AssignInt32(&c, int32(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&zGlob, 1))))) == '*' || c == '?' {
 54703  				if c == '?' && int32(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&z, 1)))) == 0 {
 54704  					return 0
 54705  				}
 54706  			}
 54707  			if c == 0 {
 54708  				return 1
 54709  			} else if c == '[' {
 54710  				for *(*uint8)(unsafe.Pointer(z)) != 0 && quotaStrglob(tls, zGlob-uintptr(1), z) == 0 {
 54711  					z++
 54712  				}
 54713  				return libc.Bool32(int32(*(*uint8)(unsafe.Pointer(z))) != 0)
 54714  			}
 54715  			if c == '/' {
 54716  				cx = '\\'
 54717  			} else {
 54718  				cx = c
 54719  			}
 54720  			for libc.AssignInt32(&c2, int32(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&z, 1))))) != 0 {
 54721  				for c2 != c && c2 != cx {
 54722  					c2 = int32(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&z, 1))))
 54723  					if c2 == 0 {
 54724  						return 0
 54725  					}
 54726  				}
 54727  				if quotaStrglob(tls, zGlob, z) != 0 {
 54728  					return 1
 54729  				}
 54730  			}
 54731  			return 0
 54732  		} else if c == '?' {
 54733  			if int32(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&z, 1)))) == 0 {
 54734  				return 0
 54735  			}
 54736  		} else if c == '[' {
 54737  			var prior_c int32 = 0
 54738  			seen = 0
 54739  			invert = 0
 54740  			c = int32(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&z, 1))))
 54741  			if c == 0 {
 54742  				return 0
 54743  			}
 54744  			c2 = int32(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&zGlob, 1))))
 54745  			if c2 == '^' {
 54746  				invert = 1
 54747  				c2 = int32(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&zGlob, 1))))
 54748  			}
 54749  			if c2 == ']' {
 54750  				if c == ']' {
 54751  					seen = 1
 54752  				}
 54753  				c2 = int32(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&zGlob, 1))))
 54754  			}
 54755  			for c2 != 0 && c2 != ']' {
 54756  				if c2 == '-' && int32(*(*uint8)(unsafe.Pointer(zGlob))) != ']' && int32(*(*uint8)(unsafe.Pointer(zGlob))) != 0 && prior_c > 0 {
 54757  					c2 = int32(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&zGlob, 1))))
 54758  					if c >= prior_c && c <= c2 {
 54759  						seen = 1
 54760  					}
 54761  					prior_c = 0
 54762  				} else {
 54763  					if c == c2 {
 54764  						seen = 1
 54765  					}
 54766  					prior_c = c2
 54767  				}
 54768  				c2 = int32(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&zGlob, 1))))
 54769  			}
 54770  			if c2 == 0 || seen^invert == 0 {
 54771  				return 0
 54772  			}
 54773  		} else if c == '/' {
 54774  			if int32(*(*uint8)(unsafe.Pointer(z))) != '/' && int32(*(*uint8)(unsafe.Pointer(z))) != '\\' {
 54775  				return 0
 54776  			}
 54777  			z++
 54778  		} else {
 54779  			if c != int32(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&z, 1)))) {
 54780  				return 0
 54781  			}
 54782  		}
 54783  	}
 54784  	return libc.Bool32(int32(*(*uint8)(unsafe.Pointer(z))) == 0)
 54785  }
 54786  
 54787  func quotaGroupFind(tls *libc.TLS, zFilename uintptr) uintptr {
 54788  	var p uintptr
 54789  	for p = gQuota.FpGroup; p != 0 && quotaStrglob(tls, (*quotaGroup)(unsafe.Pointer(p)).FzPattern, zFilename) == 0; p = (*quotaGroup)(unsafe.Pointer(p)).FpNext {
 54790  	}
 54791  	return p
 54792  }
 54793  
 54794  func quotaSubOpen(tls *libc.TLS, pConn uintptr) uintptr {
 54795  	var p uintptr = pConn
 54796  	return p + 1*16
 54797  }
 54798  
 54799  func quotaFindFile(tls *libc.TLS, pGroup uintptr, zName uintptr, createFlag int32) uintptr {
 54800  	var pFile uintptr = (*quotaGroup)(unsafe.Pointer(pGroup)).FpFiles
 54801  	for pFile != 0 && libc.Xstrcmp(tls, (*quotaFile)(unsafe.Pointer(pFile)).FzFilename, zName) != 0 {
 54802  		pFile = (*quotaFile)(unsafe.Pointer(pFile)).FpNext
 54803  	}
 54804  	if pFile == uintptr(0) && createFlag != 0 {
 54805  		var nName int32 = int32(libc.Xstrlen(tls, zName) & uint64(0x3fffffff))
 54806  		pFile = sqlite3.Xsqlite3_malloc(tls, int32(uint64(unsafe.Sizeof(quotaFile{}))+uint64(nName)+uint64(1)))
 54807  		if pFile != 0 {
 54808  			libc.Xmemset(tls, pFile, 0, uint64(unsafe.Sizeof(quotaFile{})))
 54809  			(*quotaFile)(unsafe.Pointer(pFile)).FzFilename = pFile + 1*48
 54810  			libc.Xmemcpy(tls, (*quotaFile)(unsafe.Pointer(pFile)).FzFilename, zName, uint64(nName+1))
 54811  			(*quotaFile)(unsafe.Pointer(pFile)).FpNext = (*quotaGroup)(unsafe.Pointer(pGroup)).FpFiles
 54812  			if (*quotaGroup)(unsafe.Pointer(pGroup)).FpFiles != 0 {
 54813  				(*quotaFile)(unsafe.Pointer((*quotaGroup)(unsafe.Pointer(pGroup)).FpFiles)).FppPrev = pFile + 32
 54814  			}
 54815  			(*quotaFile)(unsafe.Pointer(pFile)).FppPrev = pGroup + 64
 54816  			(*quotaGroup)(unsafe.Pointer(pGroup)).FpFiles = pFile
 54817  			(*quotaFile)(unsafe.Pointer(pFile)).FpGroup = pGroup
 54818  		}
 54819  	}
 54820  	return pFile
 54821  }
 54822  
 54823  func quota_utf8_to_mbcs(tls *libc.TLS, zUtf8 uintptr) uintptr {
 54824  	return zUtf8
 54825  }
 54826  
 54827  func quota_mbcs_free(tls *libc.TLS, zOld uintptr) {
 54828  }
 54829  
 54830  func quotaOpen(tls *libc.TLS, pVfs uintptr, zName uintptr, pConn uintptr, flags int32, pOutFlags uintptr) int32 {
 54831  	var rc int32
 54832  	var pQuotaOpen uintptr
 54833  	var pFile uintptr
 54834  	var pGroup uintptr
 54835  	var pSubOpen uintptr
 54836  	var pOrigVfs uintptr = gQuota.FpOrigVfs
 54837  
 54838  	if flags&(SQLITE_OPEN_MAIN_DB|SQLITE_OPEN_WAL) == 0 {
 54839  		return (*struct {
 54840  			f func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr) int32
 54841  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pOrigVfs)).FxOpen})).f(tls, pOrigVfs, zName, pConn, flags, pOutFlags)
 54842  	}
 54843  
 54844  	quotaEnter(tls)
 54845  	pGroup = quotaGroupFind(tls, zName)
 54846  	if pGroup == uintptr(0) {
 54847  		rc = (*struct {
 54848  			f func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr) int32
 54849  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pOrigVfs)).FxOpen})).f(tls, pOrigVfs, zName, pConn, flags, pOutFlags)
 54850  	} else {
 54851  		pQuotaOpen = pConn
 54852  		pSubOpen = quotaSubOpen(tls, pConn)
 54853  		rc = (*struct {
 54854  			f func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr) int32
 54855  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pOrigVfs)).FxOpen})).f(tls, pOrigVfs, zName, pSubOpen, flags, pOutFlags)
 54856  		if rc == SQLITE_OK {
 54857  			pFile = quotaFindFile(tls, pGroup, zName, 1)
 54858  			if pFile == uintptr(0) {
 54859  				quotaLeave(tls)
 54860  				(*struct {
 54861  					f func(*libc.TLS, uintptr) int32
 54862  				})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxClose})).f(tls, pSubOpen)
 54863  				return SQLITE_NOMEM
 54864  			}
 54865  			(*quotaFile)(unsafe.Pointer(pFile)).FdeleteOnClose = libc.Bool32(flags&SQLITE_OPEN_DELETEONCLOSE != 0)
 54866  			(*quotaFile)(unsafe.Pointer(pFile)).FnRef++
 54867  			(*quotaConn)(unsafe.Pointer(pQuotaOpen)).FpFile = pFile
 54868  			if (*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FiVersion == 1 {
 54869  				(*quotaConn)(unsafe.Pointer(pQuotaOpen)).Fbase.FpMethods = uintptr(unsafe.Pointer(&gQuota)) + 176
 54870  			} else {
 54871  				(*quotaConn)(unsafe.Pointer(pQuotaOpen)).Fbase.FpMethods = uintptr(unsafe.Pointer(&gQuota)) + 328
 54872  			}
 54873  		}
 54874  	}
 54875  	quotaLeave(tls)
 54876  	return rc
 54877  }
 54878  
 54879  func quotaDelete(tls *libc.TLS, pVfs uintptr, zName uintptr, syncDir int32) int32 {
 54880  	var rc int32
 54881  	var pFile uintptr
 54882  	var pGroup uintptr
 54883  	var pOrigVfs uintptr = gQuota.FpOrigVfs
 54884  
 54885  	rc = (*struct {
 54886  		f func(*libc.TLS, uintptr, uintptr, int32) int32
 54887  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pOrigVfs)).FxDelete})).f(tls, pOrigVfs, zName, syncDir)
 54888  
 54889  	if rc == SQLITE_OK {
 54890  		quotaEnter(tls)
 54891  		pGroup = quotaGroupFind(tls, zName)
 54892  		if pGroup != 0 {
 54893  			pFile = quotaFindFile(tls, pGroup, zName, 0)
 54894  			if pFile != 0 {
 54895  				if (*quotaFile)(unsafe.Pointer(pFile)).FnRef != 0 {
 54896  					(*quotaFile)(unsafe.Pointer(pFile)).FdeleteOnClose = 1
 54897  				} else {
 54898  					quotaRemoveFile(tls, pFile)
 54899  					quotaGroupDeref(tls, pGroup)
 54900  				}
 54901  			}
 54902  		}
 54903  		quotaLeave(tls)
 54904  	}
 54905  	return rc
 54906  }
 54907  
 54908  func quotaClose(tls *libc.TLS, pConn uintptr) int32 {
 54909  	var p uintptr = pConn
 54910  	var pFile uintptr = (*quotaConn)(unsafe.Pointer(p)).FpFile
 54911  	var pSubOpen uintptr = quotaSubOpen(tls, pConn)
 54912  	var rc int32
 54913  	rc = (*struct {
 54914  		f func(*libc.TLS, uintptr) int32
 54915  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxClose})).f(tls, pSubOpen)
 54916  	quotaEnter(tls)
 54917  	(*quotaFile)(unsafe.Pointer(pFile)).FnRef--
 54918  	if (*quotaFile)(unsafe.Pointer(pFile)).FnRef == 0 {
 54919  		var pGroup uintptr = (*quotaFile)(unsafe.Pointer(pFile)).FpGroup
 54920  		if (*quotaFile)(unsafe.Pointer(pFile)).FdeleteOnClose != 0 {
 54921  			(*struct {
 54922  				f func(*libc.TLS, uintptr, uintptr, int32) int32
 54923  			})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(gQuota.FpOrigVfs)).FxDelete})).f(tls, gQuota.FpOrigVfs, (*quotaFile)(unsafe.Pointer(pFile)).FzFilename, 0)
 54924  			quotaRemoveFile(tls, pFile)
 54925  		}
 54926  		quotaGroupDeref(tls, pGroup)
 54927  	}
 54928  	quotaLeave(tls)
 54929  	return rc
 54930  }
 54931  
 54932  func quotaRead(tls *libc.TLS, pConn uintptr, pBuf uintptr, iAmt int32, iOfst sqlite3_int64) int32 {
 54933  	var pSubOpen uintptr = quotaSubOpen(tls, pConn)
 54934  	return (*struct {
 54935  		f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 54936  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxRead})).f(tls, pSubOpen, pBuf, iAmt, iOfst)
 54937  }
 54938  
 54939  func quotaWrite(tls *libc.TLS, pConn uintptr, pBuf uintptr, iAmt int32, iOfst sqlite3_int64) int32 {
 54940  	var p uintptr = pConn
 54941  	var pSubOpen uintptr = quotaSubOpen(tls, pConn)
 54942  	var iEnd sqlite3_int64 = iOfst + sqlite3_int64(iAmt)
 54943  	var pGroup uintptr
 54944  	var pFile uintptr = (*quotaConn)(unsafe.Pointer(p)).FpFile
 54945  	var szNew sqlite3_int64
 54946  
 54947  	if (*quotaFile)(unsafe.Pointer(pFile)).FiSize < iEnd {
 54948  		pGroup = (*quotaFile)(unsafe.Pointer(pFile)).FpGroup
 54949  		quotaEnter(tls)
 54950  		szNew = (*quotaGroup)(unsafe.Pointer(pGroup)).FiSize - (*quotaFile)(unsafe.Pointer(pFile)).FiSize + iEnd
 54951  		if szNew > (*quotaGroup)(unsafe.Pointer(pGroup)).FiLimit && (*quotaGroup)(unsafe.Pointer(pGroup)).FiLimit > int64(0) {
 54952  			if (*quotaGroup)(unsafe.Pointer(pGroup)).FxCallback != 0 {
 54953  				(*struct {
 54954  					f func(*libc.TLS, uintptr, uintptr, sqlite3_int64, uintptr)
 54955  				})(unsafe.Pointer(&struct{ uintptr }{(*quotaGroup)(unsafe.Pointer(pGroup)).FxCallback})).f(tls, (*quotaFile)(unsafe.Pointer(pFile)).FzFilename, pGroup+8, szNew,
 54956  					(*quotaGroup)(unsafe.Pointer(pGroup)).FpArg)
 54957  			}
 54958  			if szNew > (*quotaGroup)(unsafe.Pointer(pGroup)).FiLimit && (*quotaGroup)(unsafe.Pointer(pGroup)).FiLimit > int64(0) {
 54959  				quotaLeave(tls)
 54960  				return SQLITE_FULL
 54961  			}
 54962  		}
 54963  		(*quotaGroup)(unsafe.Pointer(pGroup)).FiSize = szNew
 54964  		(*quotaFile)(unsafe.Pointer(pFile)).FiSize = iEnd
 54965  		quotaLeave(tls)
 54966  	}
 54967  	return (*struct {
 54968  		f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 54969  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxWrite})).f(tls, pSubOpen, pBuf, iAmt, iOfst)
 54970  }
 54971  
 54972  func quotaTruncate(tls *libc.TLS, pConn uintptr, size sqlite3_int64) int32 {
 54973  	var p uintptr = pConn
 54974  	var pSubOpen uintptr = quotaSubOpen(tls, pConn)
 54975  	var rc int32 = (*struct {
 54976  		f func(*libc.TLS, uintptr, sqlite3_int64) int32
 54977  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxTruncate})).f(tls, pSubOpen, size)
 54978  	var pFile uintptr = (*quotaConn)(unsafe.Pointer(p)).FpFile
 54979  	var pGroup uintptr
 54980  	if rc == SQLITE_OK {
 54981  		quotaEnter(tls)
 54982  		pGroup = (*quotaFile)(unsafe.Pointer(pFile)).FpGroup
 54983  		*(*sqlite3_int64)(unsafe.Pointer(pGroup + 16)) -= (*quotaFile)(unsafe.Pointer(pFile)).FiSize
 54984  		(*quotaFile)(unsafe.Pointer(pFile)).FiSize = size
 54985  		*(*sqlite3_int64)(unsafe.Pointer(pGroup + 16)) += size
 54986  		quotaLeave(tls)
 54987  	}
 54988  	return rc
 54989  }
 54990  
 54991  func quotaSync(tls *libc.TLS, pConn uintptr, flags int32) int32 {
 54992  	var pSubOpen uintptr = quotaSubOpen(tls, pConn)
 54993  	return (*struct {
 54994  		f func(*libc.TLS, uintptr, int32) int32
 54995  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxSync})).f(tls, pSubOpen, flags)
 54996  }
 54997  
 54998  func quotaFileSize(tls *libc.TLS, pConn uintptr, pSize uintptr) int32 {
 54999  	bp := tls.Alloc(8)
 55000  	defer tls.Free(8)
 55001  
 55002  	var p uintptr = pConn
 55003  	var pSubOpen uintptr = quotaSubOpen(tls, pConn)
 55004  	var pFile uintptr = (*quotaConn)(unsafe.Pointer(p)).FpFile
 55005  	var pGroup uintptr
 55006  
 55007  	var rc int32
 55008  
 55009  	rc = (*struct {
 55010  		f func(*libc.TLS, uintptr, uintptr) int32
 55011  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxFileSize})).f(tls, pSubOpen, bp)
 55012  	if rc == SQLITE_OK {
 55013  		quotaEnter(tls)
 55014  		pGroup = (*quotaFile)(unsafe.Pointer(pFile)).FpGroup
 55015  		*(*sqlite3_int64)(unsafe.Pointer(pGroup + 16)) -= (*quotaFile)(unsafe.Pointer(pFile)).FiSize
 55016  		(*quotaFile)(unsafe.Pointer(pFile)).FiSize = *(*sqlite3_int64)(unsafe.Pointer(bp))
 55017  		*(*sqlite3_int64)(unsafe.Pointer(pGroup + 16)) += *(*sqlite3_int64)(unsafe.Pointer(bp))
 55018  		quotaLeave(tls)
 55019  		*(*sqlite3_int64)(unsafe.Pointer(pSize)) = *(*sqlite3_int64)(unsafe.Pointer(bp))
 55020  	}
 55021  	return rc
 55022  }
 55023  
 55024  func quotaLock(tls *libc.TLS, pConn uintptr, lock int32) int32 {
 55025  	var pSubOpen uintptr = quotaSubOpen(tls, pConn)
 55026  	return (*struct {
 55027  		f func(*libc.TLS, uintptr, int32) int32
 55028  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxLock})).f(tls, pSubOpen, lock)
 55029  }
 55030  
 55031  func quotaUnlock(tls *libc.TLS, pConn uintptr, lock int32) int32 {
 55032  	var pSubOpen uintptr = quotaSubOpen(tls, pConn)
 55033  	return (*struct {
 55034  		f func(*libc.TLS, uintptr, int32) int32
 55035  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxUnlock})).f(tls, pSubOpen, lock)
 55036  }
 55037  
 55038  func quotaCheckReservedLock(tls *libc.TLS, pConn uintptr, pResOut uintptr) int32 {
 55039  	var pSubOpen uintptr = quotaSubOpen(tls, pConn)
 55040  	return (*struct {
 55041  		f func(*libc.TLS, uintptr, uintptr) int32
 55042  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxCheckReservedLock})).f(tls, pSubOpen, pResOut)
 55043  }
 55044  
 55045  func quotaFileControl(tls *libc.TLS, pConn uintptr, op int32, pArg uintptr) int32 {
 55046  	bp := tls.Alloc(8)
 55047  	defer tls.Free(8)
 55048  
 55049  	var pSubOpen uintptr = quotaSubOpen(tls, pConn)
 55050  	var rc int32 = (*struct {
 55051  		f func(*libc.TLS, uintptr, int32, uintptr) int32
 55052  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxFileControl})).f(tls, pSubOpen, op, pArg)
 55053  	if op == SQLITE_FCNTL_VFSNAME && rc == SQLITE_OK {
 55054  		*(*uintptr)(unsafe.Pointer(pArg)) = sqlite3.Xsqlite3_mprintf(tls, ts+35913, libc.VaList(bp, *(*uintptr)(unsafe.Pointer(pArg))))
 55055  	}
 55056  	return rc
 55057  }
 55058  
 55059  func quotaSectorSize(tls *libc.TLS, pConn uintptr) int32 {
 55060  	var pSubOpen uintptr = quotaSubOpen(tls, pConn)
 55061  	return (*struct {
 55062  		f func(*libc.TLS, uintptr) int32
 55063  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxSectorSize})).f(tls, pSubOpen)
 55064  }
 55065  
 55066  func quotaDeviceCharacteristics(tls *libc.TLS, pConn uintptr) int32 {
 55067  	var pSubOpen uintptr = quotaSubOpen(tls, pConn)
 55068  	return (*struct {
 55069  		f func(*libc.TLS, uintptr) int32
 55070  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxDeviceCharacteristics})).f(tls, pSubOpen)
 55071  }
 55072  
 55073  func quotaShmMap(tls *libc.TLS, pConn uintptr, iRegion int32, szRegion int32, bExtend int32, pp uintptr) int32 {
 55074  	var pSubOpen uintptr = quotaSubOpen(tls, pConn)
 55075  	return (*struct {
 55076  		f func(*libc.TLS, uintptr, int32, int32, int32, uintptr) int32
 55077  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxShmMap})).f(tls, pSubOpen, iRegion, szRegion, bExtend, pp)
 55078  }
 55079  
 55080  func quotaShmLock(tls *libc.TLS, pConn uintptr, ofst int32, n int32, flags int32) int32 {
 55081  	var pSubOpen uintptr = quotaSubOpen(tls, pConn)
 55082  	return (*struct {
 55083  		f func(*libc.TLS, uintptr, int32, int32, int32) int32
 55084  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxShmLock})).f(tls, pSubOpen, ofst, n, flags)
 55085  }
 55086  
 55087  func quotaShmBarrier(tls *libc.TLS, pConn uintptr) {
 55088  	var pSubOpen uintptr = quotaSubOpen(tls, pConn)
 55089  	(*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)
 55090  }
 55091  
 55092  func quotaShmUnmap(tls *libc.TLS, pConn uintptr, deleteFlag int32) int32 {
 55093  	var pSubOpen uintptr = quotaSubOpen(tls, pConn)
 55094  	return (*struct {
 55095  		f func(*libc.TLS, uintptr, int32) int32
 55096  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxShmUnmap})).f(tls, pSubOpen, deleteFlag)
 55097  }
 55098  
 55099  func sqlite3_quota_initialize(tls *libc.TLS, zOrigVfsName uintptr, makeDefault int32) int32 {
 55100  	var pOrigVfs uintptr
 55101  	if gQuota.FisInitialized != 0 {
 55102  		return SQLITE_MISUSE
 55103  	}
 55104  	pOrigVfs = sqlite3.Xsqlite3_vfs_find(tls, zOrigVfsName)
 55105  	if pOrigVfs == uintptr(0) {
 55106  		return SQLITE_ERROR
 55107  	}
 55108  
 55109  	gQuota.FpMutex = sqlite3.Xsqlite3_mutex_alloc(tls, SQLITE_MUTEX_FAST)
 55110  	if !(int32(gQuota.FpMutex) != 0) {
 55111  		return SQLITE_NOMEM
 55112  	}
 55113  	gQuota.FisInitialized = 1
 55114  	gQuota.FpOrigVfs = pOrigVfs
 55115  	gQuota.FsThisVfs = *(*sqlite3_vfs)(unsafe.Pointer(pOrigVfs))
 55116  	gQuota.FsThisVfs.FxOpen = *(*uintptr)(unsafe.Pointer(&struct {
 55117  		f func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr) int32
 55118  	}{quotaOpen}))
 55119  	gQuota.FsThisVfs.FxDelete = *(*uintptr)(unsafe.Pointer(&struct {
 55120  		f func(*libc.TLS, uintptr, uintptr, int32) int32
 55121  	}{quotaDelete}))
 55122  	*(*int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&gQuota)) + 8 + 4)) += int32(uint64(unsafe.Sizeof(quotaConn{})))
 55123  	gQuota.FsThisVfs.FzName = ts + 35922
 55124  	gQuota.FsIoMethodsV1.FiVersion = 1
 55125  	gQuota.FsIoMethodsV1.FxClose = *(*uintptr)(unsafe.Pointer(&struct {
 55126  		f func(*libc.TLS, uintptr) int32
 55127  	}{quotaClose}))
 55128  	gQuota.FsIoMethodsV1.FxRead = *(*uintptr)(unsafe.Pointer(&struct {
 55129  		f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 55130  	}{quotaRead}))
 55131  	gQuota.FsIoMethodsV1.FxWrite = *(*uintptr)(unsafe.Pointer(&struct {
 55132  		f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 55133  	}{quotaWrite}))
 55134  	gQuota.FsIoMethodsV1.FxTruncate = *(*uintptr)(unsafe.Pointer(&struct {
 55135  		f func(*libc.TLS, uintptr, sqlite3_int64) int32
 55136  	}{quotaTruncate}))
 55137  	gQuota.FsIoMethodsV1.FxSync = *(*uintptr)(unsafe.Pointer(&struct {
 55138  		f func(*libc.TLS, uintptr, int32) int32
 55139  	}{quotaSync}))
 55140  	gQuota.FsIoMethodsV1.FxFileSize = *(*uintptr)(unsafe.Pointer(&struct {
 55141  		f func(*libc.TLS, uintptr, uintptr) int32
 55142  	}{quotaFileSize}))
 55143  	gQuota.FsIoMethodsV1.FxLock = *(*uintptr)(unsafe.Pointer(&struct {
 55144  		f func(*libc.TLS, uintptr, int32) int32
 55145  	}{quotaLock}))
 55146  	gQuota.FsIoMethodsV1.FxUnlock = *(*uintptr)(unsafe.Pointer(&struct {
 55147  		f func(*libc.TLS, uintptr, int32) int32
 55148  	}{quotaUnlock}))
 55149  	gQuota.FsIoMethodsV1.FxCheckReservedLock = *(*uintptr)(unsafe.Pointer(&struct {
 55150  		f func(*libc.TLS, uintptr, uintptr) int32
 55151  	}{quotaCheckReservedLock}))
 55152  	gQuota.FsIoMethodsV1.FxFileControl = *(*uintptr)(unsafe.Pointer(&struct {
 55153  		f func(*libc.TLS, uintptr, int32, uintptr) int32
 55154  	}{quotaFileControl}))
 55155  	gQuota.FsIoMethodsV1.FxSectorSize = *(*uintptr)(unsafe.Pointer(&struct {
 55156  		f func(*libc.TLS, uintptr) int32
 55157  	}{quotaSectorSize}))
 55158  	gQuota.FsIoMethodsV1.FxDeviceCharacteristics = *(*uintptr)(unsafe.Pointer(&struct {
 55159  		f func(*libc.TLS, uintptr) int32
 55160  	}{quotaDeviceCharacteristics}))
 55161  	gQuota.FsIoMethodsV2 = gQuota.FsIoMethodsV1
 55162  	gQuota.FsIoMethodsV2.FiVersion = 2
 55163  	gQuota.FsIoMethodsV2.FxShmMap = *(*uintptr)(unsafe.Pointer(&struct {
 55164  		f func(*libc.TLS, uintptr, int32, int32, int32, uintptr) int32
 55165  	}{quotaShmMap}))
 55166  	gQuota.FsIoMethodsV2.FxShmLock = *(*uintptr)(unsafe.Pointer(&struct {
 55167  		f func(*libc.TLS, uintptr, int32, int32, int32) int32
 55168  	}{quotaShmLock}))
 55169  	gQuota.FsIoMethodsV2.FxShmBarrier = *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{quotaShmBarrier}))
 55170  	gQuota.FsIoMethodsV2.FxShmUnmap = *(*uintptr)(unsafe.Pointer(&struct {
 55171  		f func(*libc.TLS, uintptr, int32) int32
 55172  	}{quotaShmUnmap}))
 55173  	sqlite3.Xsqlite3_vfs_register(tls, uintptr(unsafe.Pointer(&gQuota))+8, makeDefault)
 55174  	return SQLITE_OK
 55175  }
 55176  
 55177  func sqlite3_quota_shutdown(tls *libc.TLS) int32 {
 55178  	var pGroup uintptr
 55179  	if gQuota.FisInitialized == 0 {
 55180  		return SQLITE_MISUSE
 55181  	}
 55182  	for pGroup = gQuota.FpGroup; pGroup != 0; pGroup = (*quotaGroup)(unsafe.Pointer(pGroup)).FpNext {
 55183  		if quotaGroupOpenFileCount(tls, pGroup) > 0 {
 55184  			return SQLITE_MISUSE
 55185  		}
 55186  	}
 55187  	for gQuota.FpGroup != 0 {
 55188  		pGroup = gQuota.FpGroup
 55189  		gQuota.FpGroup = (*quotaGroup)(unsafe.Pointer(pGroup)).FpNext
 55190  		(*quotaGroup)(unsafe.Pointer(pGroup)).FiLimit = int64(0)
 55191  
 55192  		quotaGroupDeref(tls, pGroup)
 55193  	}
 55194  	gQuota.FisInitialized = 0
 55195  	sqlite3.Xsqlite3_mutex_free(tls, gQuota.FpMutex)
 55196  	sqlite3.Xsqlite3_vfs_unregister(tls, uintptr(unsafe.Pointer(&gQuota))+8)
 55197  	libc.Xmemset(tls, uintptr(unsafe.Pointer(&gQuota)), 0, uint64(unsafe.Sizeof(gQuota)))
 55198  	return SQLITE_OK
 55199  }
 55200  
 55201  func sqlite3_quota_set(tls *libc.TLS, zPattern uintptr, iLimit sqlite3_int64, xCallback uintptr, pArg uintptr, xDestroy uintptr) int32 {
 55202  	var pGroup uintptr
 55203  	quotaEnter(tls)
 55204  	pGroup = gQuota.FpGroup
 55205  	for pGroup != 0 && libc.Xstrcmp(tls, (*quotaGroup)(unsafe.Pointer(pGroup)).FzPattern, zPattern) != 0 {
 55206  		pGroup = (*quotaGroup)(unsafe.Pointer(pGroup)).FpNext
 55207  	}
 55208  	if pGroup == uintptr(0) {
 55209  		var nPattern int32 = int32(libc.Xstrlen(tls, zPattern) & uint64(0x3fffffff))
 55210  		if iLimit <= int64(0) {
 55211  			quotaLeave(tls)
 55212  			return SQLITE_OK
 55213  		}
 55214  		pGroup = sqlite3.Xsqlite3_malloc(tls, int32(uint64(unsafe.Sizeof(quotaGroup{}))+uint64(nPattern)+uint64(1)))
 55215  		if pGroup == uintptr(0) {
 55216  			quotaLeave(tls)
 55217  			return SQLITE_NOMEM
 55218  		}
 55219  		libc.Xmemset(tls, pGroup, 0, uint64(unsafe.Sizeof(quotaGroup{})))
 55220  		(*quotaGroup)(unsafe.Pointer(pGroup)).FzPattern = pGroup + 1*72
 55221  		libc.Xmemcpy(tls, (*quotaGroup)(unsafe.Pointer(pGroup)).FzPattern, zPattern, uint64(nPattern+1))
 55222  		if gQuota.FpGroup != 0 {
 55223  			(*quotaGroup)(unsafe.Pointer(gQuota.FpGroup)).FppPrev = pGroup + 48
 55224  		}
 55225  		(*quotaGroup)(unsafe.Pointer(pGroup)).FpNext = gQuota.FpGroup
 55226  		(*quotaGroup)(unsafe.Pointer(pGroup)).FppPrev = uintptr(unsafe.Pointer(&gQuota)) + 496
 55227  		gQuota.FpGroup = pGroup
 55228  	}
 55229  	(*quotaGroup)(unsafe.Pointer(pGroup)).FiLimit = iLimit
 55230  	(*quotaGroup)(unsafe.Pointer(pGroup)).FxCallback = xCallback
 55231  	if (*quotaGroup)(unsafe.Pointer(pGroup)).FxDestroy != 0 && (*quotaGroup)(unsafe.Pointer(pGroup)).FpArg != pArg {
 55232  		(*struct{ f func(*libc.TLS, uintptr) })(unsafe.Pointer(&struct{ uintptr }{(*quotaGroup)(unsafe.Pointer(pGroup)).FxDestroy})).f(tls, (*quotaGroup)(unsafe.Pointer(pGroup)).FpArg)
 55233  	}
 55234  	(*quotaGroup)(unsafe.Pointer(pGroup)).FpArg = pArg
 55235  	(*quotaGroup)(unsafe.Pointer(pGroup)).FxDestroy = xDestroy
 55236  	quotaGroupDeref(tls, pGroup)
 55237  	quotaLeave(tls)
 55238  	return SQLITE_OK
 55239  }
 55240  
 55241  func sqlite3_quota_file(tls *libc.TLS, zFilename uintptr) int32 {
 55242  	bp := tls.Alloc(16)
 55243  	defer tls.Free(16)
 55244  
 55245  	var zFull uintptr = uintptr(0)
 55246  	var fd uintptr
 55247  	var rc int32
 55248  	*(*int32)(unsafe.Pointer(bp)) = 0
 55249  
 55250  	var nAlloc int32 = gQuota.FsThisVfs.FszOsFile + gQuota.FsThisVfs.FmxPathname + 2
 55251  
 55252  	fd = sqlite3.Xsqlite3_malloc(tls, nAlloc)
 55253  	if fd == uintptr(0) {
 55254  		rc = SQLITE_NOMEM
 55255  	} else {
 55256  		zFull = fd + uintptr(gQuota.FsThisVfs.FszOsFile)
 55257  		rc = (*struct {
 55258  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 55259  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(gQuota.FpOrigVfs)).FxFullPathname})).f(tls, gQuota.FpOrigVfs, zFilename,
 55260  			gQuota.FsThisVfs.FmxPathname+1, zFull)
 55261  	}
 55262  
 55263  	if rc == SQLITE_OK {
 55264  		*(*uint8)(unsafe.Pointer(zFull + uintptr(libc.Xstrlen(tls, zFull)+uint64(1)))) = uint8(0)
 55265  		rc = quotaOpen(tls, uintptr(unsafe.Pointer(&gQuota))+8, zFull, fd,
 55266  			SQLITE_OPEN_READONLY|SQLITE_OPEN_MAIN_DB, bp)
 55267  		if rc == SQLITE_OK {
 55268  			(*struct {
 55269  				f func(*libc.TLS, uintptr, uintptr) int32
 55270  			})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(fd)).FpMethods)).FxFileSize})).f(tls, fd, bp+8)
 55271  			(*struct {
 55272  				f func(*libc.TLS, uintptr) int32
 55273  			})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(fd)).FpMethods)).FxClose})).f(tls, fd)
 55274  		} else if rc == SQLITE_CANTOPEN {
 55275  			var pGroup uintptr
 55276  			var pFile uintptr
 55277  			quotaEnter(tls)
 55278  			pGroup = quotaGroupFind(tls, zFull)
 55279  			if pGroup != 0 {
 55280  				pFile = quotaFindFile(tls, pGroup, zFull, 0)
 55281  				if pFile != 0 {
 55282  					quotaRemoveFile(tls, pFile)
 55283  				}
 55284  			}
 55285  			quotaLeave(tls)
 55286  		}
 55287  	}
 55288  
 55289  	sqlite3.Xsqlite3_free(tls, fd)
 55290  	return rc
 55291  }
 55292  
 55293  func sqlite3_quota_fopen(tls *libc.TLS, zFilename uintptr, zMode uintptr) uintptr {
 55294  	var p uintptr
 55295  	var zFull uintptr
 55296  	var zFullTranslated uintptr
 55297  	var rc int32
 55298  	var pGroup uintptr
 55299  	var pFile uintptr
 55300  	p = uintptr(0)
 55301  	zFull = uintptr(0)
 55302  	zFullTranslated = uintptr(0)
 55303  
 55304  	zFull = sqlite3.Xsqlite3_malloc(tls, gQuota.FsThisVfs.FmxPathname+1)
 55305  	if !(zFull == uintptr(0)) {
 55306  		goto __1
 55307  	}
 55308  	return uintptr(0)
 55309  __1:
 55310  	;
 55311  	rc = (*struct {
 55312  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 55313  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(gQuota.FpOrigVfs)).FxFullPathname})).f(tls, gQuota.FpOrigVfs, zFilename,
 55314  		gQuota.FsThisVfs.FmxPathname+1, zFull)
 55315  	if !(rc != 0) {
 55316  		goto __2
 55317  	}
 55318  	goto quota_fopen_error
 55319  __2:
 55320  	;
 55321  	p = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(quota_FILE{})))
 55322  	if !(p == uintptr(0)) {
 55323  		goto __3
 55324  	}
 55325  	goto quota_fopen_error
 55326  __3:
 55327  	;
 55328  	libc.Xmemset(tls, p, 0, uint64(unsafe.Sizeof(quota_FILE{})))
 55329  	zFullTranslated = quota_utf8_to_mbcs(tls, zFull)
 55330  	if !(zFullTranslated == uintptr(0)) {
 55331  		goto __4
 55332  	}
 55333  	goto quota_fopen_error
 55334  __4:
 55335  	;
 55336  	(*quota_FILE)(unsafe.Pointer(p)).Ff = libc.Xfopen(tls, zFullTranslated, zMode)
 55337  	if !((*quota_FILE)(unsafe.Pointer(p)).Ff == uintptr(0)) {
 55338  		goto __5
 55339  	}
 55340  	goto quota_fopen_error
 55341  __5:
 55342  	;
 55343  	quotaEnter(tls)
 55344  	pGroup = quotaGroupFind(tls, zFull)
 55345  	if !(pGroup != 0) {
 55346  		goto __6
 55347  	}
 55348  	pFile = quotaFindFile(tls, pGroup, zFull, 1)
 55349  	if !(pFile == uintptr(0)) {
 55350  		goto __7
 55351  	}
 55352  	quotaLeave(tls)
 55353  	goto quota_fopen_error
 55354  __7:
 55355  	;
 55356  	(*quotaFile)(unsafe.Pointer(pFile)).FnRef++
 55357  	(*quota_FILE)(unsafe.Pointer(p)).FpFile = pFile
 55358  __6:
 55359  	;
 55360  	quotaLeave(tls)
 55361  	sqlite3.Xsqlite3_free(tls, zFull)
 55362  	return p
 55363  
 55364  quota_fopen_error:
 55365  	quota_mbcs_free(tls, zFullTranslated)
 55366  	sqlite3.Xsqlite3_free(tls, zFull)
 55367  	if !(p != 0 && (*quota_FILE)(unsafe.Pointer(p)).Ff != 0) {
 55368  		goto __8
 55369  	}
 55370  	libc.Xfclose(tls, (*quota_FILE)(unsafe.Pointer(p)).Ff)
 55371  __8:
 55372  	;
 55373  	sqlite3.Xsqlite3_free(tls, p)
 55374  	return uintptr(0)
 55375  }
 55376  
 55377  func sqlite3_quota_fread(tls *libc.TLS, pBuf uintptr, size size_t, nmemb size_t, p uintptr) size_t {
 55378  	return libc.Xfread(tls, pBuf, size, nmemb, (*quota_FILE)(unsafe.Pointer(p)).Ff)
 55379  }
 55380  
 55381  func sqlite3_quota_fwrite(tls *libc.TLS, pBuf uintptr, size size_t, nmemb size_t, p uintptr) size_t {
 55382  	var iOfst sqlite3_int64
 55383  	var iEnd sqlite3_int64
 55384  	var szNew sqlite3_int64
 55385  	var pFile uintptr
 55386  	var rc size_t
 55387  
 55388  	iOfst = libc.Xftell(tls, (*quota_FILE)(unsafe.Pointer(p)).Ff)
 55389  	iEnd = sqlite3_int64(uint64(iOfst) + size*nmemb)
 55390  	pFile = (*quota_FILE)(unsafe.Pointer(p)).FpFile
 55391  	if pFile != 0 && (*quotaFile)(unsafe.Pointer(pFile)).FiSize < iEnd {
 55392  		var pGroup uintptr = (*quotaFile)(unsafe.Pointer(pFile)).FpGroup
 55393  		quotaEnter(tls)
 55394  		szNew = (*quotaGroup)(unsafe.Pointer(pGroup)).FiSize - (*quotaFile)(unsafe.Pointer(pFile)).FiSize + iEnd
 55395  		if szNew > (*quotaGroup)(unsafe.Pointer(pGroup)).FiLimit && (*quotaGroup)(unsafe.Pointer(pGroup)).FiLimit > int64(0) {
 55396  			if (*quotaGroup)(unsafe.Pointer(pGroup)).FxCallback != 0 {
 55397  				(*struct {
 55398  					f func(*libc.TLS, uintptr, uintptr, sqlite3_int64, uintptr)
 55399  				})(unsafe.Pointer(&struct{ uintptr }{(*quotaGroup)(unsafe.Pointer(pGroup)).FxCallback})).f(tls, (*quotaFile)(unsafe.Pointer(pFile)).FzFilename, pGroup+8, szNew,
 55400  					(*quotaGroup)(unsafe.Pointer(pGroup)).FpArg)
 55401  			}
 55402  			if szNew > (*quotaGroup)(unsafe.Pointer(pGroup)).FiLimit && (*quotaGroup)(unsafe.Pointer(pGroup)).FiLimit > int64(0) {
 55403  				iEnd = (*quotaGroup)(unsafe.Pointer(pGroup)).FiLimit - (*quotaGroup)(unsafe.Pointer(pGroup)).FiSize + (*quotaFile)(unsafe.Pointer(pFile)).FiSize
 55404  				nmemb = uint64(iEnd-iOfst) / size
 55405  				iEnd = sqlite3_int64(uint64(iOfst) + size*nmemb)
 55406  				szNew = (*quotaGroup)(unsafe.Pointer(pGroup)).FiSize - (*quotaFile)(unsafe.Pointer(pFile)).FiSize + iEnd
 55407  			}
 55408  		}
 55409  		(*quotaGroup)(unsafe.Pointer(pGroup)).FiSize = szNew
 55410  		(*quotaFile)(unsafe.Pointer(pFile)).FiSize = iEnd
 55411  		quotaLeave(tls)
 55412  	} else {
 55413  		pFile = uintptr(0)
 55414  	}
 55415  	rc = libc.Xfwrite(tls, pBuf, size, nmemb, (*quota_FILE)(unsafe.Pointer(p)).Ff)
 55416  
 55417  	if rc < nmemb && pFile != 0 {
 55418  		var nWritten size_t = rc
 55419  		var iNewEnd sqlite3_int64 = sqlite3_int64(uint64(iOfst) + size*nWritten)
 55420  		if iNewEnd < iEnd {
 55421  			iNewEnd = iEnd
 55422  		}
 55423  		quotaEnter(tls)
 55424  		*(*sqlite3_int64)(unsafe.Pointer((*quotaFile)(unsafe.Pointer(pFile)).FpGroup + 16)) += iNewEnd - (*quotaFile)(unsafe.Pointer(pFile)).FiSize
 55425  		(*quotaFile)(unsafe.Pointer(pFile)).FiSize = iNewEnd
 55426  		quotaLeave(tls)
 55427  	}
 55428  	return rc
 55429  }
 55430  
 55431  func sqlite3_quota_fclose(tls *libc.TLS, p uintptr) int32 {
 55432  	var rc int32
 55433  	var pFile uintptr
 55434  	rc = libc.Xfclose(tls, (*quota_FILE)(unsafe.Pointer(p)).Ff)
 55435  	pFile = (*quota_FILE)(unsafe.Pointer(p)).FpFile
 55436  	if pFile != 0 {
 55437  		quotaEnter(tls)
 55438  		(*quotaFile)(unsafe.Pointer(pFile)).FnRef--
 55439  		if (*quotaFile)(unsafe.Pointer(pFile)).FnRef == 0 {
 55440  			var pGroup uintptr = (*quotaFile)(unsafe.Pointer(pFile)).FpGroup
 55441  			if (*quotaFile)(unsafe.Pointer(pFile)).FdeleteOnClose != 0 {
 55442  				(*struct {
 55443  					f func(*libc.TLS, uintptr, uintptr, int32) int32
 55444  				})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(gQuota.FpOrigVfs)).FxDelete})).f(tls, gQuota.FpOrigVfs, (*quotaFile)(unsafe.Pointer(pFile)).FzFilename, 0)
 55445  				quotaRemoveFile(tls, pFile)
 55446  			}
 55447  			quotaGroupDeref(tls, pGroup)
 55448  		}
 55449  		quotaLeave(tls)
 55450  	}
 55451  	sqlite3.Xsqlite3_free(tls, p)
 55452  	return rc
 55453  }
 55454  
 55455  func sqlite3_quota_fflush(tls *libc.TLS, p uintptr, doFsync int32) int32 {
 55456  	var rc int32
 55457  	rc = libc.Xfflush(tls, (*quota_FILE)(unsafe.Pointer(p)).Ff)
 55458  	if rc == 0 && doFsync != 0 {
 55459  		rc = libc.Xfsync(tls, libc.Xfileno(tls, (*quota_FILE)(unsafe.Pointer(p)).Ff))
 55460  	}
 55461  	return libc.Bool32(rc != 0)
 55462  }
 55463  
 55464  func sqlite3_quota_fseek(tls *libc.TLS, p uintptr, offset int64, whence int32) int32 {
 55465  	return libc.Xfseek(tls, (*quota_FILE)(unsafe.Pointer(p)).Ff, offset, whence)
 55466  }
 55467  
 55468  func sqlite3_quota_rewind(tls *libc.TLS, p uintptr) {
 55469  	libc.Xrewind(tls, (*quota_FILE)(unsafe.Pointer(p)).Ff)
 55470  }
 55471  
 55472  func sqlite3_quota_ftell(tls *libc.TLS, p uintptr) int64 {
 55473  	return libc.Xftell(tls, (*quota_FILE)(unsafe.Pointer(p)).Ff)
 55474  }
 55475  
 55476  func sqlite3_quota_ferror(tls *libc.TLS, p uintptr) int32 {
 55477  	return libc.Xferror(tls, (*quota_FILE)(unsafe.Pointer(p)).Ff)
 55478  }
 55479  
 55480  func sqlite3_quota_ftruncate(tls *libc.TLS, p uintptr, szNew sqlite3_int64) int32 {
 55481  	var pFile uintptr = (*quota_FILE)(unsafe.Pointer(p)).FpFile
 55482  	var rc int32
 55483  	if libc.AssignUintptr(&pFile, (*quota_FILE)(unsafe.Pointer(p)).FpFile) != uintptr(0) && (*quotaFile)(unsafe.Pointer(pFile)).FiSize < szNew {
 55484  		var pGroup uintptr
 55485  		if (*quotaFile)(unsafe.Pointer(pFile)).FiSize < szNew {
 55486  			return -1
 55487  		}
 55488  		pGroup = (*quotaFile)(unsafe.Pointer(pFile)).FpGroup
 55489  		quotaEnter(tls)
 55490  		*(*sqlite3_int64)(unsafe.Pointer(pGroup + 16)) += szNew - (*quotaFile)(unsafe.Pointer(pFile)).FiSize
 55491  		quotaLeave(tls)
 55492  	}
 55493  	rc = libc.Xftruncate(tls, libc.Xfileno(tls, (*quota_FILE)(unsafe.Pointer(p)).Ff), szNew)
 55494  	if pFile != 0 && rc == 0 {
 55495  		var pGroup uintptr = (*quotaFile)(unsafe.Pointer(pFile)).FpGroup
 55496  		quotaEnter(tls)
 55497  		*(*sqlite3_int64)(unsafe.Pointer(pGroup + 16)) += szNew - (*quotaFile)(unsafe.Pointer(pFile)).FiSize
 55498  		(*quotaFile)(unsafe.Pointer(pFile)).FiSize = szNew
 55499  		quotaLeave(tls)
 55500  	}
 55501  	return rc
 55502  }
 55503  
 55504  func sqlite3_quota_file_mtime(tls *libc.TLS, p uintptr, pTime uintptr) int32 {
 55505  	bp := tls.Alloc(144)
 55506  	defer tls.Free(144)
 55507  
 55508  	var rc int32
 55509  
 55510  	rc = libc.Xfstat(tls, libc.Xfileno(tls, (*quota_FILE)(unsafe.Pointer(p)).Ff), bp)
 55511  	if rc == 0 {
 55512  		*(*time_t)(unsafe.Pointer(pTime)) = (*stat)(unsafe.Pointer(bp)).Fst_mtim.Ftv_sec
 55513  	}
 55514  	return rc
 55515  }
 55516  
 55517  func sqlite3_quota_file_truesize(tls *libc.TLS, p uintptr) sqlite3_int64 {
 55518  	bp := tls.Alloc(144)
 55519  	defer tls.Free(144)
 55520  
 55521  	var rc int32
 55522  
 55523  	rc = libc.Xfstat(tls, libc.Xfileno(tls, (*quota_FILE)(unsafe.Pointer(p)).Ff), bp)
 55524  	if rc == 0 {
 55525  		return (*stat)(unsafe.Pointer(bp)).Fst_size
 55526  	}
 55527  	return int64(-1)
 55528  }
 55529  
 55530  func sqlite3_quota_file_size(tls *libc.TLS, p uintptr) sqlite3_int64 {
 55531  	if (*quota_FILE)(unsafe.Pointer(p)).FpFile != 0 {
 55532  		return (*quotaFile)(unsafe.Pointer((*quota_FILE)(unsafe.Pointer(p)).FpFile)).FiSize
 55533  	}
 55534  	return int64(-1)
 55535  }
 55536  
 55537  func sqlite3_quota_file_available(tls *libc.TLS, p uintptr) int64 {
 55538  	var f uintptr = (*quota_FILE)(unsafe.Pointer(p)).Ff
 55539  	var pos1 int64
 55540  	var pos2 int64
 55541  	var rc int32
 55542  	pos1 = libc.Xftell(tls, f)
 55543  	if pos1 < int64(0) {
 55544  		return int64(-1)
 55545  	}
 55546  	rc = libc.Xfseek(tls, f, int64(0), SEEK_END)
 55547  	if rc != 0 {
 55548  		return int64(-1)
 55549  	}
 55550  	pos2 = libc.Xftell(tls, f)
 55551  	if pos2 < int64(0) {
 55552  		return int64(-1)
 55553  	}
 55554  	rc = libc.Xfseek(tls, f, pos1, SEEK_SET)
 55555  	if rc != 0 {
 55556  		return int64(-1)
 55557  	}
 55558  	return pos2 - pos1
 55559  }
 55560  
 55561  func sqlite3_quota_remove(tls *libc.TLS, zFilename uintptr) int32 {
 55562  	var zFull uintptr
 55563  	var nFull size_t
 55564  	var rc int32
 55565  	var pGroup uintptr
 55566  	var pFile uintptr
 55567  	var pNextFile uintptr
 55568  	var diff int32
 55569  	var c uint8
 55570  
 55571  	zFull = sqlite3.Xsqlite3_malloc(tls, gQuota.FsThisVfs.FmxPathname+1)
 55572  	if zFull == uintptr(0) {
 55573  		return SQLITE_NOMEM
 55574  	}
 55575  	rc = (*struct {
 55576  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 55577  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(gQuota.FpOrigVfs)).FxFullPathname})).f(tls, gQuota.FpOrigVfs, zFilename,
 55578  		gQuota.FsThisVfs.FmxPathname+1, zFull)
 55579  	if rc != 0 {
 55580  		sqlite3.Xsqlite3_free(tls, zFull)
 55581  		return rc
 55582  	}
 55583  
 55584  	nFull = libc.Xstrlen(tls, zFull)
 55585  	if nFull > uint64(0) && (int32(*(*uint8)(unsafe.Pointer(zFull + uintptr(nFull-uint64(1))))) == '/' || int32(*(*uint8)(unsafe.Pointer(zFull + uintptr(nFull-uint64(1))))) == '\\') {
 55586  		nFull--
 55587  		*(*uint8)(unsafe.Pointer(zFull + uintptr(nFull))) = uint8(0)
 55588  	}
 55589  
 55590  	quotaEnter(tls)
 55591  	pGroup = quotaGroupFind(tls, zFull)
 55592  	if pGroup != 0 {
 55593  		for pFile = (*quotaGroup)(unsafe.Pointer(pGroup)).FpFiles; pFile != 0 && rc == SQLITE_OK; pFile = pNextFile {
 55594  			pNextFile = (*quotaFile)(unsafe.Pointer(pFile)).FpNext
 55595  			diff = libc.Xstrncmp(tls, zFull, (*quotaFile)(unsafe.Pointer(pFile)).FzFilename, nFull)
 55596  			if diff == 0 && (int32(libc.AssignUint8(&c, *(*uint8)(unsafe.Pointer((*quotaFile)(unsafe.Pointer(pFile)).FzFilename + uintptr(nFull))))) == 0 || int32(c) == '/' || int32(c) == '\\') {
 55597  				if (*quotaFile)(unsafe.Pointer(pFile)).FnRef != 0 {
 55598  					(*quotaFile)(unsafe.Pointer(pFile)).FdeleteOnClose = 1
 55599  				} else {
 55600  					rc = (*struct {
 55601  						f func(*libc.TLS, uintptr, uintptr, int32) int32
 55602  					})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(gQuota.FpOrigVfs)).FxDelete})).f(tls, gQuota.FpOrigVfs, (*quotaFile)(unsafe.Pointer(pFile)).FzFilename, 0)
 55603  					quotaRemoveFile(tls, pFile)
 55604  					quotaGroupDeref(tls, pGroup)
 55605  				}
 55606  			}
 55607  		}
 55608  	}
 55609  	quotaLeave(tls)
 55610  	sqlite3.Xsqlite3_free(tls, zFull)
 55611  	return rc
 55612  }
 55613  
 55614  type TclQuotaCallback1 = struct {
 55615  	Finterp  uintptr
 55616  	FpScript uintptr
 55617  }
 55618  
 55619  type TclQuotaCallback = TclQuotaCallback1
 55620  
 55621  func tclQuotaCallback(tls *libc.TLS, zFilename uintptr, piLimit uintptr, iSize sqlite3_int64, pArg uintptr) {
 55622  	bp := tls.Alloc(16)
 55623  	defer tls.Free(16)
 55624  
 55625  	var p uintptr
 55626  	var pEval uintptr
 55627  	var pVarname uintptr
 55628  
 55629  	var rc int32
 55630  
 55631  	p = pArg
 55632  	if p == uintptr(0) {
 55633  		return
 55634  	}
 55635  
 55636  	pVarname = tcl.XTcl_NewStringObj(tls, ts+35928, -1)
 55637  	(*Tcl_Obj)(unsafe.Pointer(pVarname)).FrefCount++
 55638  	sqlite3.Xsqlite3_randomness(tls, int32(unsafe.Sizeof(uint32(0))), bp)
 55639  	tcl.XTcl_AppendObjToObj(tls, pVarname, tcl.XTcl_NewIntObj(tls, int32(*(*uint32)(unsafe.Pointer(bp))&uint32(0x7FFFFFFF))))
 55640  	tcl.XTcl_ObjSetVar2(tls, (*TclQuotaCallback)(unsafe.Pointer(p)).Finterp, pVarname, uintptr(0), tcl.XTcl_NewWideIntObj(tls, *(*sqlite3_int64)(unsafe.Pointer(piLimit))), 0)
 55641  
 55642  	pEval = tcl.XTcl_DuplicateObj(tls, (*TclQuotaCallback)(unsafe.Pointer(p)).FpScript)
 55643  	(*Tcl_Obj)(unsafe.Pointer(pEval)).FrefCount++
 55644  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pEval, tcl.XTcl_NewStringObj(tls, zFilename, -1))
 55645  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pEval, pVarname)
 55646  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pEval, tcl.XTcl_NewWideIntObj(tls, iSize))
 55647  	rc = tcl.XTcl_EvalObjEx(tls, (*TclQuotaCallback)(unsafe.Pointer(p)).Finterp, pEval, TCL_EVAL_GLOBAL)
 55648  
 55649  	if rc == TCL_OK {
 55650  		var pLimit uintptr = tcl.XTcl_ObjGetVar2(tls, (*TclQuotaCallback)(unsafe.Pointer(p)).Finterp, pVarname, uintptr(0), 0)
 55651  		rc = tcl.XTcl_GetWideIntFromObj(tls, (*TclQuotaCallback)(unsafe.Pointer(p)).Finterp, pLimit, bp+8)
 55652  		*(*sqlite3_int64)(unsafe.Pointer(piLimit)) = *(*Tcl_WideInt)(unsafe.Pointer(bp + 8))
 55653  		tcl.XTcl_UnsetVar2(tls, (*TclQuotaCallback)(unsafe.Pointer(p)).Finterp, tcl.XTcl_GetString(tls, pVarname), uintptr(0), 0)
 55654  	}
 55655  
 55656  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 55657  		var _objPtr uintptr = pEval
 55658  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 55659  			tcl.XTclFreeObj(tls, _objPtr)
 55660  		}
 55661  	}
 55662  	for __ccgo1 := true; __ccgo1; __ccgo1 = 0 != 0 {
 55663  		var _objPtr uintptr = pVarname
 55664  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 55665  			tcl.XTclFreeObj(tls, _objPtr)
 55666  		}
 55667  	}
 55668  	if rc != TCL_OK {
 55669  		tcl.XTcl_BackgroundError(tls, (*TclQuotaCallback)(unsafe.Pointer(p)).Finterp)
 55670  	}
 55671  }
 55672  
 55673  func tclCallbackDestructor(tls *libc.TLS, pObj uintptr) {
 55674  	var p uintptr = pObj
 55675  	if p != 0 {
 55676  		for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 55677  			var _objPtr uintptr = (*TclQuotaCallback)(unsafe.Pointer(p)).FpScript
 55678  			if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 55679  				tcl.XTclFreeObj(tls, _objPtr)
 55680  			}
 55681  		}
 55682  		sqlite3.Xsqlite3_free(tls, p)
 55683  	}
 55684  }
 55685  
 55686  func test_quota_initialize(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 55687  	bp := tls.Alloc(4)
 55688  	defer tls.Free(4)
 55689  
 55690  	var zName uintptr
 55691  
 55692  	var rc int32
 55693  
 55694  	if objc != 3 {
 55695  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+34817)
 55696  		return TCL_ERROR
 55697  	}
 55698  	zName = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 55699  	if tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp) != 0 {
 55700  		return TCL_ERROR
 55701  	}
 55702  	if int32(*(*uint8)(unsafe.Pointer(zName))) == 0 {
 55703  		zName = uintptr(0)
 55704  	}
 55705  
 55706  	rc = sqlite3_quota_initialize(tls, zName, *(*int32)(unsafe.Pointer(bp)))
 55707  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 55708  
 55709  	return TCL_OK
 55710  }
 55711  
 55712  func test_quota_shutdown(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 55713  	var rc int32
 55714  
 55715  	if objc != 1 {
 55716  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+584)
 55717  		return TCL_ERROR
 55718  	}
 55719  
 55720  	rc = sqlite3_quota_shutdown(tls)
 55721  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 55722  
 55723  	return TCL_OK
 55724  }
 55725  
 55726  func test_quota_set(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 55727  	bp := tls.Alloc(12)
 55728  	defer tls.Free(12)
 55729  
 55730  	var zPattern uintptr
 55731  
 55732  	var pScript uintptr
 55733  	var rc int32
 55734  	var p uintptr
 55735  
 55736  	var xDestroy uintptr
 55737  	var xCallback uintptr
 55738  
 55739  	if objc != 4 {
 55740  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+35939)
 55741  		return TCL_ERROR
 55742  	}
 55743  	zPattern = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 55744  	if tcl.XTcl_GetWideIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp) != 0 {
 55745  		return TCL_ERROR
 55746  	}
 55747  	pScript = *(*uintptr)(unsafe.Pointer(objv + 3*8))
 55748  	tcl.XTcl_GetStringFromObj(tls, pScript, bp+8)
 55749  
 55750  	if *(*int32)(unsafe.Pointer(bp + 8)) > 0 {
 55751  		p = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(TclQuotaCallback{})))
 55752  		if !(p != 0) {
 55753  			tcl.XTcl_SetResult(tls, interp, ts+32746, uintptr(0))
 55754  			return TCL_OK
 55755  		}
 55756  		libc.Xmemset(tls, p, 0, uint64(unsafe.Sizeof(TclQuotaCallback{})))
 55757  		(*TclQuotaCallback)(unsafe.Pointer(p)).Finterp = interp
 55758  		(*Tcl_Obj)(unsafe.Pointer(pScript)).FrefCount++
 55759  		(*TclQuotaCallback)(unsafe.Pointer(p)).FpScript = pScript
 55760  		xDestroy = *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{tclCallbackDestructor}))
 55761  		xCallback = *(*uintptr)(unsafe.Pointer(&struct {
 55762  			f func(*libc.TLS, uintptr, uintptr, sqlite3_int64, uintptr)
 55763  		}{tclQuotaCallback}))
 55764  	} else {
 55765  		p = uintptr(0)
 55766  		xDestroy = uintptr(0)
 55767  		xCallback = uintptr(0)
 55768  	}
 55769  
 55770  	rc = sqlite3_quota_set(tls, zPattern, *(*Tcl_WideInt)(unsafe.Pointer(bp)), xCallback, p, xDestroy)
 55771  
 55772  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 55773  	return TCL_OK
 55774  }
 55775  
 55776  func test_quota_file(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 55777  	var zFilename uintptr
 55778  	var rc int32
 55779  
 55780  	if objc != 2 {
 55781  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+32930)
 55782  		return TCL_ERROR
 55783  	}
 55784  	zFilename = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 55785  
 55786  	rc = sqlite3_quota_file(tls, zFilename)
 55787  
 55788  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 55789  	return TCL_OK
 55790  }
 55791  
 55792  func test_quota_dump(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 55793  	bp := tls.Alloc(1008)
 55794  	defer tls.Free(1008)
 55795  
 55796  	var pResult uintptr
 55797  	var pGroupTerm uintptr
 55798  	var pFileTerm uintptr
 55799  	var pGroup uintptr
 55800  	var pFile uintptr
 55801  
 55802  	pResult = tcl.XTcl_NewObj(tls)
 55803  	quotaEnter(tls)
 55804  	for pGroup = gQuota.FpGroup; pGroup != 0; pGroup = (*quotaGroup)(unsafe.Pointer(pGroup)).FpNext {
 55805  		pGroupTerm = tcl.XTcl_NewObj(tls)
 55806  		tcl.XTcl_ListObjAppendElement(tls, interp, pGroupTerm,
 55807  			tcl.XTcl_NewStringObj(tls, (*quotaGroup)(unsafe.Pointer(pGroup)).FzPattern, -1))
 55808  		tcl.XTcl_ListObjAppendElement(tls, interp, pGroupTerm,
 55809  			tcl.XTcl_NewWideIntObj(tls, (*quotaGroup)(unsafe.Pointer(pGroup)).FiLimit))
 55810  		tcl.XTcl_ListObjAppendElement(tls, interp, pGroupTerm,
 55811  			tcl.XTcl_NewWideIntObj(tls, (*quotaGroup)(unsafe.Pointer(pGroup)).FiSize))
 55812  		for pFile = (*quotaGroup)(unsafe.Pointer(pGroup)).FpFiles; pFile != 0; pFile = (*quotaFile)(unsafe.Pointer(pFile)).FpNext {
 55813  			var i int32
 55814  
 55815  			pFileTerm = tcl.XTcl_NewObj(tls)
 55816  			sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([1000]uint8{})), bp+8, ts, libc.VaList(bp, (*quotaFile)(unsafe.Pointer(pFile)).FzFilename))
 55817  			for i = 0; *(*uint8)(unsafe.Pointer(bp + 8 + uintptr(i))) != 0; i++ {
 55818  				if int32(*(*uint8)(unsafe.Pointer(bp + 8 + uintptr(i)))) == '\\' {
 55819  					*(*uint8)(unsafe.Pointer(bp + 8 + uintptr(i))) = uint8('/')
 55820  				}
 55821  			}
 55822  			tcl.XTcl_ListObjAppendElement(tls, interp, pFileTerm,
 55823  				tcl.XTcl_NewStringObj(tls, bp+8, -1))
 55824  			tcl.XTcl_ListObjAppendElement(tls, interp, pFileTerm,
 55825  				tcl.XTcl_NewWideIntObj(tls, (*quotaFile)(unsafe.Pointer(pFile)).FiSize))
 55826  			tcl.XTcl_ListObjAppendElement(tls, interp, pFileTerm,
 55827  				tcl.XTcl_NewWideIntObj(tls, int64((*quotaFile)(unsafe.Pointer(pFile)).FnRef)))
 55828  			tcl.XTcl_ListObjAppendElement(tls, interp, pFileTerm,
 55829  				tcl.XTcl_NewWideIntObj(tls, int64((*quotaFile)(unsafe.Pointer(pFile)).FdeleteOnClose)))
 55830  			tcl.XTcl_ListObjAppendElement(tls, interp, pGroupTerm, pFileTerm)
 55831  		}
 55832  		tcl.XTcl_ListObjAppendElement(tls, interp, pResult, pGroupTerm)
 55833  	}
 55834  	quotaLeave(tls)
 55835  	tcl.XTcl_SetObjResult(tls, interp, pResult)
 55836  	return TCL_OK
 55837  }
 55838  
 55839  func test_quota_fopen(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 55840  	bp := tls.Alloc(58)
 55841  	defer tls.Free(58)
 55842  
 55843  	var zFilename uintptr
 55844  	var zMode uintptr
 55845  	var p uintptr
 55846  
 55847  	if objc != 3 {
 55848  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+35960)
 55849  		return TCL_ERROR
 55850  	}
 55851  	zFilename = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 55852  	zMode = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 55853  	p = sqlite3_quota_fopen(tls, zFilename, zMode)
 55854  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([50]uint8{})), bp+8, ts+9889, libc.VaList(bp, p))
 55855  	tcl.XTcl_SetResult(tls, interp, bp+8, uintptr(1))
 55856  	return TCL_OK
 55857  }
 55858  
 55859  func test_quota_fread(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 55860  	bp := tls.Alloc(8)
 55861  	defer tls.Free(8)
 55862  
 55863  	var p uintptr
 55864  	var zBuf uintptr
 55865  
 55866  	var got size_t
 55867  
 55868  	if objc != 4 {
 55869  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+35974)
 55870  		return TCL_ERROR
 55871  	}
 55872  	p = sqlite3TestTextToPtr(tls, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))))
 55873  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp) != 0 {
 55874  		return TCL_ERROR
 55875  	}
 55876  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+4) != 0 {
 55877  		return TCL_ERROR
 55878  	}
 55879  	zBuf = sqlite3.Xsqlite3_malloc(tls, *(*int32)(unsafe.Pointer(bp))**(*int32)(unsafe.Pointer(bp + 4))+1)
 55880  	if zBuf == uintptr(0) {
 55881  		tcl.XTcl_SetResult(tls, interp, ts+2069, uintptr(0))
 55882  		return TCL_ERROR
 55883  	}
 55884  	got = sqlite3_quota_fread(tls, zBuf, uint64(*(*int32)(unsafe.Pointer(bp))), uint64(*(*int32)(unsafe.Pointer(bp + 4))), p)
 55885  	*(*uint8)(unsafe.Pointer(zBuf + uintptr(got*size_t(*(*int32)(unsafe.Pointer(bp)))))) = uint8(0)
 55886  	tcl.XTcl_SetResult(tls, interp, zBuf, uintptr(1))
 55887  	sqlite3.Xsqlite3_free(tls, zBuf)
 55888  	return TCL_OK
 55889  }
 55890  
 55891  func test_quota_fwrite(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 55892  	bp := tls.Alloc(8)
 55893  	defer tls.Free(8)
 55894  
 55895  	var p uintptr
 55896  	var zBuf uintptr
 55897  
 55898  	var got size_t
 55899  
 55900  	if objc != 5 {
 55901  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+35992)
 55902  		return TCL_ERROR
 55903  	}
 55904  	p = sqlite3TestTextToPtr(tls, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))))
 55905  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp) != 0 {
 55906  		return TCL_ERROR
 55907  	}
 55908  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+4) != 0 {
 55909  		return TCL_ERROR
 55910  	}
 55911  	zBuf = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 4*8)))
 55912  	got = sqlite3_quota_fwrite(tls, zBuf, uint64(*(*int32)(unsafe.Pointer(bp))), uint64(*(*int32)(unsafe.Pointer(bp + 4))), p)
 55913  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewWideIntObj(tls, int64(got)))
 55914  	return TCL_OK
 55915  }
 55916  
 55917  func test_quota_fclose(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 55918  	var p uintptr
 55919  	var rc int32
 55920  
 55921  	if objc != 2 {
 55922  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+28660)
 55923  		return TCL_ERROR
 55924  	}
 55925  	p = sqlite3TestTextToPtr(tls, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))))
 55926  	rc = sqlite3_quota_fclose(tls, p)
 55927  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, rc))
 55928  	return TCL_OK
 55929  }
 55930  
 55931  func test_quota_fflush(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 55932  	bp := tls.Alloc(4)
 55933  	defer tls.Free(4)
 55934  
 55935  	var p uintptr
 55936  	var rc int32
 55937  	*(*int32)(unsafe.Pointer(bp)) = 0
 55938  
 55939  	if objc != 2 && objc != 3 {
 55940  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+36018)
 55941  		return TCL_ERROR
 55942  	}
 55943  	p = sqlite3TestTextToPtr(tls, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))))
 55944  	if objc == 3 {
 55945  		if tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp) != 0 {
 55946  			return TCL_ERROR
 55947  		}
 55948  	}
 55949  	rc = sqlite3_quota_fflush(tls, p, *(*int32)(unsafe.Pointer(bp)))
 55950  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, rc))
 55951  	return TCL_OK
 55952  }
 55953  
 55954  func test_quota_fseek(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 55955  	bp := tls.Alloc(20)
 55956  	defer tls.Free(20)
 55957  
 55958  	var p uintptr
 55959  
 55960  	var zWhence uintptr
 55961  	var whence int32
 55962  	var rc int32
 55963  
 55964  	if objc != 4 {
 55965  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+36036)
 55966  		return TCL_ERROR
 55967  	}
 55968  	p = sqlite3TestTextToPtr(tls, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))))
 55969  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+16) != 0 {
 55970  		return TCL_ERROR
 55971  	}
 55972  	zWhence = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)))
 55973  	if libc.Xstrcmp(tls, zWhence, ts+36057) == 0 {
 55974  		whence = SEEK_SET
 55975  	} else if libc.Xstrcmp(tls, zWhence, ts+36066) == 0 {
 55976  		whence = SEEK_CUR
 55977  	} else if libc.Xstrcmp(tls, zWhence, ts+36075) == 0 {
 55978  		whence = SEEK_END
 55979  	} else {
 55980  		tcl.XTcl_AppendResult(tls, interp,
 55981  			libc.VaList(bp, ts+36084, uintptr(0)))
 55982  		return TCL_ERROR
 55983  	}
 55984  	rc = sqlite3_quota_fseek(tls, p, int64(*(*int32)(unsafe.Pointer(bp + 16))), whence)
 55985  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, rc))
 55986  	return TCL_OK
 55987  }
 55988  
 55989  func test_quota_rewind(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 55990  	var p uintptr
 55991  	if objc != 2 {
 55992  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+28660)
 55993  		return TCL_ERROR
 55994  	}
 55995  	p = sqlite3TestTextToPtr(tls, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))))
 55996  	sqlite3_quota_rewind(tls, p)
 55997  	return TCL_OK
 55998  }
 55999  
 56000  func test_quota_ftell(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 56001  	var p uintptr
 56002  	var x sqlite3_int64
 56003  	if objc != 2 {
 56004  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+28660)
 56005  		return TCL_ERROR
 56006  	}
 56007  	p = sqlite3TestTextToPtr(tls, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))))
 56008  	x = sqlite3_quota_ftell(tls, p)
 56009  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewWideIntObj(tls, x))
 56010  	return TCL_OK
 56011  }
 56012  
 56013  func test_quota_ftruncate(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 56014  	bp := tls.Alloc(8)
 56015  	defer tls.Free(8)
 56016  
 56017  	var p uintptr
 56018  	var x sqlite3_int64
 56019  
 56020  	var rc int32
 56021  	if objc != 3 {
 56022  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+36133)
 56023  		return TCL_ERROR
 56024  	}
 56025  	p = sqlite3TestTextToPtr(tls, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))))
 56026  	if tcl.XTcl_GetWideIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp) != 0 {
 56027  		return TCL_ERROR
 56028  	}
 56029  	x = *(*Tcl_WideInt)(unsafe.Pointer(bp))
 56030  	rc = sqlite3_quota_ftruncate(tls, p, x)
 56031  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, rc))
 56032  	return TCL_OK
 56033  }
 56034  
 56035  func test_quota_file_size(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 56036  	var p uintptr
 56037  	var x sqlite3_int64
 56038  	if objc != 2 {
 56039  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+28660)
 56040  		return TCL_ERROR
 56041  	}
 56042  	p = sqlite3TestTextToPtr(tls, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))))
 56043  	x = sqlite3_quota_file_size(tls, p)
 56044  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewWideIntObj(tls, x))
 56045  	return TCL_OK
 56046  }
 56047  
 56048  func test_quota_file_truesize(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 56049  	var p uintptr
 56050  	var x sqlite3_int64
 56051  	if objc != 2 {
 56052  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+28660)
 56053  		return TCL_ERROR
 56054  	}
 56055  	p = sqlite3TestTextToPtr(tls, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))))
 56056  	x = sqlite3_quota_file_truesize(tls, p)
 56057  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewWideIntObj(tls, x))
 56058  	return TCL_OK
 56059  }
 56060  
 56061  func test_quota_file_mtime(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 56062  	bp := tls.Alloc(8)
 56063  	defer tls.Free(8)
 56064  
 56065  	var p uintptr
 56066  
 56067  	if objc != 2 {
 56068  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+28660)
 56069  		return TCL_ERROR
 56070  	}
 56071  	p = sqlite3TestTextToPtr(tls, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))))
 56072  	*(*time_t)(unsafe.Pointer(bp)) = int64(0)
 56073  	sqlite3_quota_file_mtime(tls, p, bp)
 56074  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewWideIntObj(tls, *(*time_t)(unsafe.Pointer(bp))))
 56075  	return TCL_OK
 56076  }
 56077  
 56078  func test_quota_remove(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 56079  	var zFilename uintptr
 56080  	var rc int32
 56081  	if objc != 2 {
 56082  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+32930)
 56083  		return TCL_ERROR
 56084  	}
 56085  	zFilename = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 56086  	rc = sqlite3_quota_remove(tls, zFilename)
 56087  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, rc))
 56088  	return TCL_OK
 56089  }
 56090  
 56091  func test_quota_glob(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 56092  	var zPattern uintptr
 56093  	var zText uintptr
 56094  	var rc int32
 56095  	if objc != 3 {
 56096  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+36145)
 56097  		return TCL_ERROR
 56098  	}
 56099  	zPattern = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 56100  	zText = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 56101  	rc = quotaStrglob(tls, zPattern, zText)
 56102  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, rc))
 56103  	return TCL_OK
 56104  }
 56105  
 56106  func test_quota_file_available(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 56107  	var p uintptr
 56108  	var x sqlite3_int64
 56109  	if objc != 2 {
 56110  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+28660)
 56111  		return TCL_ERROR
 56112  	}
 56113  	p = sqlite3TestTextToPtr(tls, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))))
 56114  	x = sqlite3_quota_file_available(tls, p)
 56115  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewWideIntObj(tls, x))
 56116  	return TCL_OK
 56117  }
 56118  
 56119  func test_quota_ferror(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 56120  	var p uintptr
 56121  	var x int32
 56122  	if objc != 2 {
 56123  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+28660)
 56124  		return TCL_ERROR
 56125  	}
 56126  	p = sqlite3TestTextToPtr(tls, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))))
 56127  	x = sqlite3_quota_ferror(tls, p)
 56128  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, x))
 56129  	return TCL_OK
 56130  }
 56131  
 56132  func Sqlitequota_Init(tls *libc.TLS, interp uintptr) int32 {
 56133  	var i int32
 56134  
 56135  	for i = 0; uint64(i) < uint64(unsafe.Sizeof(aCmd9))/uint64(unsafe.Sizeof(struct {
 56136  		FzName uintptr
 56137  		FxProc uintptr
 56138  	}{})); i++ {
 56139  		tcl.XTcl_CreateObjCommand(tls, interp, aCmd9[i].FzName, aCmd9[i].FxProc, uintptr(0), uintptr(0))
 56140  	}
 56141  
 56142  	return TCL_OK
 56143  }
 56144  
 56145  var aCmd9 = [21]struct {
 56146  	FzName uintptr
 56147  	FxProc uintptr
 56148  }{
 56149  	{FzName: ts + 36158, FxProc: 0},
 56150  	{FzName: ts + 36183, FxProc: 0},
 56151  	{FzName: ts + 36206, FxProc: 0},
 56152  	{FzName: ts + 36224, FxProc: 0},
 56153  	{FzName: ts + 36243, FxProc: 0},
 56154  	{FzName: ts + 36262, FxProc: 0},
 56155  	{FzName: ts + 36282, FxProc: 0},
 56156  	{FzName: ts + 36302, FxProc: 0},
 56157  	{FzName: ts + 36323, FxProc: 0},
 56158  	{FzName: ts + 36344, FxProc: 0},
 56159  	{FzName: ts + 36365, FxProc: 0},
 56160  	{FzName: ts + 36385, FxProc: 0},
 56161  	{FzName: ts + 36406, FxProc: 0},
 56162  	{FzName: ts + 36426, FxProc: 0},
 56163  	{FzName: ts + 36450, FxProc: 0},
 56164  	{FzName: ts + 36474, FxProc: 0},
 56165  	{FzName: ts + 36502, FxProc: 0},
 56166  	{FzName: ts + 36527, FxProc: 0},
 56167  	{FzName: ts + 36548, FxProc: 0},
 56168  	{FzName: ts + 36567, FxProc: 0},
 56169  	{FzName: ts + 36596, FxProc: 0},
 56170  }
 56171  
 56172  type Circle1 = struct {
 56173  	FaBox [2]struct {
 56174  		Fxmin float64
 56175  		Fxmax float64
 56176  		Fymin float64
 56177  		Fymax float64
 56178  	}
 56179  	Fcenterx     float64
 56180  	Fcentery     float64
 56181  	Fradius      float64
 56182  	FmxArea      float64
 56183  	FeScoreType  int32
 56184  	F__ccgo_pad1 [4]byte
 56185  }
 56186  
 56187  type Circle = Circle1
 56188  type Box = struct {
 56189  	Fxmin float64
 56190  	Fxmax float64
 56191  	Fymin float64
 56192  	Fymax float64
 56193  }
 56194  
 56195  func circle_del(tls *libc.TLS, p uintptr) {
 56196  	sqlite3.Xsqlite3_free(tls, p)
 56197  }
 56198  
 56199  func circle_geom(tls *libc.TLS, p uintptr, nCoord int32, aCoord uintptr, pRes uintptr) int32 {
 56200  	var i int32
 56201  	var pCircle uintptr
 56202  	var xmin float64
 56203  	var xmax float64
 56204  	var ymin float64
 56205  	var ymax float64
 56206  
 56207  	xmin = *(*sqlite3_rtree_dbl)(unsafe.Pointer(aCoord))
 56208  	xmax = *(*sqlite3_rtree_dbl)(unsafe.Pointer(aCoord + 1*8))
 56209  	ymin = *(*sqlite3_rtree_dbl)(unsafe.Pointer(aCoord + 2*8))
 56210  	ymax = *(*sqlite3_rtree_dbl)(unsafe.Pointer(aCoord + 3*8))
 56211  	pCircle = (*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FpUser
 56212  	if pCircle == uintptr(0) {
 56213  		if nCoord != 4 {
 56214  			return SQLITE_ERROR
 56215  		}
 56216  
 56217  		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 {
 56218  			return SQLITE_ERROR
 56219  		}
 56220  
 56221  		pCircle = libc.AssignPtrUintptr(p+24, sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(Circle{}))))
 56222  		if !(pCircle != 0) {
 56223  			return SQLITE_NOMEM
 56224  		}
 56225  		(*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FxDelUser = *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{circle_del}))
 56226  
 56227  		(*Circle)(unsafe.Pointer(pCircle)).Fcenterx = *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FaParam))
 56228  		(*Circle)(unsafe.Pointer(pCircle)).Fcentery = *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FaParam + 1*8))
 56229  		(*Circle)(unsafe.Pointer(pCircle)).Fradius = *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FaParam + 2*8))
 56230  
 56231  		(*Box)(unsafe.Pointer(pCircle)).Fxmin = (*Circle)(unsafe.Pointer(pCircle)).Fcenterx
 56232  		(*Box)(unsafe.Pointer(pCircle)).Fxmax = (*Circle)(unsafe.Pointer(pCircle)).Fcenterx
 56233  		(*Box)(unsafe.Pointer(pCircle)).Fymin = (*Circle)(unsafe.Pointer(pCircle)).Fcentery + (*Circle)(unsafe.Pointer(pCircle)).Fradius
 56234  		(*Box)(unsafe.Pointer(pCircle)).Fymax = (*Circle)(unsafe.Pointer(pCircle)).Fcentery - (*Circle)(unsafe.Pointer(pCircle)).Fradius
 56235  		(*Box)(unsafe.Pointer(pCircle + 1*32)).Fxmin = (*Circle)(unsafe.Pointer(pCircle)).Fcenterx + (*Circle)(unsafe.Pointer(pCircle)).Fradius
 56236  		(*Box)(unsafe.Pointer(pCircle + 1*32)).Fxmax = (*Circle)(unsafe.Pointer(pCircle)).Fcenterx - (*Circle)(unsafe.Pointer(pCircle)).Fradius
 56237  		(*Box)(unsafe.Pointer(pCircle + 1*32)).Fymin = (*Circle)(unsafe.Pointer(pCircle)).Fcentery
 56238  		(*Box)(unsafe.Pointer(pCircle + 1*32)).Fymax = (*Circle)(unsafe.Pointer(pCircle)).Fcentery
 56239  		(*Circle)(unsafe.Pointer(pCircle)).FmxArea = (xmax-xmin)*(ymax-ymin) + 1.0
 56240  	}
 56241  
 56242  	for i = 0; i < 4; i++ {
 56243  		var x float64
 56244  		if i&0x01 != 0 {
 56245  			x = xmax
 56246  		} else {
 56247  			x = xmin
 56248  		}
 56249  		var y float64
 56250  		if i&0x02 != 0 {
 56251  			y = ymax
 56252  		} else {
 56253  			y = ymin
 56254  		}
 56255  		var d2 float64
 56256  
 56257  		d2 = (x - (*Circle)(unsafe.Pointer(pCircle)).Fcenterx) * (x - (*Circle)(unsafe.Pointer(pCircle)).Fcenterx)
 56258  		d2 = d2 + (y-(*Circle)(unsafe.Pointer(pCircle)).Fcentery)*(y-(*Circle)(unsafe.Pointer(pCircle)).Fcentery)
 56259  		if d2 < (*Circle)(unsafe.Pointer(pCircle)).Fradius*(*Circle)(unsafe.Pointer(pCircle)).Fradius {
 56260  			*(*int32)(unsafe.Pointer(pRes)) = 1
 56261  			return SQLITE_OK
 56262  		}
 56263  	}
 56264  
 56265  	for i = 0; i < 2; i++ {
 56266  		if xmin <= (*Box)(unsafe.Pointer(pCircle+uintptr(i)*32)).Fxmin &&
 56267  			xmax >= (*Box)(unsafe.Pointer(pCircle+uintptr(i)*32)).Fxmax &&
 56268  			ymin <= (*Box)(unsafe.Pointer(pCircle+uintptr(i)*32)).Fymin &&
 56269  			ymax >= (*Box)(unsafe.Pointer(pCircle+uintptr(i)*32)).Fymax {
 56270  			*(*int32)(unsafe.Pointer(pRes)) = 1
 56271  			return SQLITE_OK
 56272  		}
 56273  	}
 56274  
 56275  	*(*int32)(unsafe.Pointer(pRes)) = 0
 56276  	return SQLITE_OK
 56277  }
 56278  
 56279  func circle_query_func(tls *libc.TLS, p uintptr) int32 {
 56280  	var i int32
 56281  	var pCircle uintptr
 56282  	var xmin float64
 56283  	var xmax float64
 56284  	var ymin float64
 56285  	var ymax float64
 56286  	var nWithin int32 = 0
 56287  
 56288  	xmin = *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FaCoord))
 56289  	xmax = *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FaCoord + 1*8))
 56290  	ymin = *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FaCoord + 2*8))
 56291  	ymax = *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FaCoord + 3*8))
 56292  	pCircle = (*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FpUser
 56293  	if pCircle == uintptr(0) {
 56294  		if (*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FnCoord != 4 {
 56295  			return SQLITE_ERROR
 56296  		}
 56297  
 56298  		if (*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FnParam != 4 && (*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FnParam != 1 {
 56299  			return SQLITE_ERROR
 56300  		}
 56301  
 56302  		pCircle = libc.AssignPtrUintptr(p+24, sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(Circle{}))))
 56303  		if !(pCircle != 0) {
 56304  			return SQLITE_NOMEM
 56305  		}
 56306  		(*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FxDelUser = *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{circle_del}))
 56307  
 56308  		if (*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FnParam == 4 {
 56309  			(*Circle)(unsafe.Pointer(pCircle)).Fcenterx = *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FaParam))
 56310  			(*Circle)(unsafe.Pointer(pCircle)).Fcentery = *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FaParam + 1*8))
 56311  			(*Circle)(unsafe.Pointer(pCircle)).Fradius = *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FaParam + 2*8))
 56312  			(*Circle)(unsafe.Pointer(pCircle)).FeScoreType = libc.Int32FromFloat64(*(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FaParam + 3*8)))
 56313  		} else {
 56314  			var z uintptr = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer((*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FapSqlParam)))
 56315  			(*Circle)(unsafe.Pointer(pCircle)).Fcenterx = 0.0
 56316  			(*Circle)(unsafe.Pointer(pCircle)).Fcentery = 0.0
 56317  			(*Circle)(unsafe.Pointer(pCircle)).Fradius = 0.0
 56318  			(*Circle)(unsafe.Pointer(pCircle)).FeScoreType = 0
 56319  			for z != 0 && *(*uint8)(unsafe.Pointer(z)) != 0 {
 56320  				if int32(*(*uint8)(unsafe.Pointer(z))) == 'r' && int32(*(*uint8)(unsafe.Pointer(z + 1))) == ':' {
 56321  					(*Circle)(unsafe.Pointer(pCircle)).Fradius = libc.Xatof(tls, z+2)
 56322  				} else if int32(*(*uint8)(unsafe.Pointer(z))) == 'x' && int32(*(*uint8)(unsafe.Pointer(z + 1))) == ':' {
 56323  					(*Circle)(unsafe.Pointer(pCircle)).Fcenterx = libc.Xatof(tls, z+2)
 56324  				} else if int32(*(*uint8)(unsafe.Pointer(z))) == 'y' && int32(*(*uint8)(unsafe.Pointer(z + 1))) == ':' {
 56325  					(*Circle)(unsafe.Pointer(pCircle)).Fcentery = libc.Xatof(tls, z+2)
 56326  				} else if int32(*(*uint8)(unsafe.Pointer(z))) == 'e' && int32(*(*uint8)(unsafe.Pointer(z + 1))) == ':' {
 56327  					(*Circle)(unsafe.Pointer(pCircle)).FeScoreType = libc.Int32FromFloat64(libc.Xatof(tls, z+2))
 56328  				} else if int32(*(*uint8)(unsafe.Pointer(z))) == ' ' {
 56329  					z++
 56330  					continue
 56331  				}
 56332  				for int32(*(*uint8)(unsafe.Pointer(z))) != 0 && int32(*(*uint8)(unsafe.Pointer(z))) != ' ' {
 56333  					z++
 56334  				}
 56335  				for int32(*(*uint8)(unsafe.Pointer(z))) == ' ' {
 56336  					z++
 56337  				}
 56338  			}
 56339  		}
 56340  		if (*Circle)(unsafe.Pointer(pCircle)).Fradius < 0.0 {
 56341  			sqlite3.Xsqlite3_free(tls, pCircle)
 56342  			return SQLITE_NOMEM
 56343  		}
 56344  
 56345  		(*Box)(unsafe.Pointer(pCircle)).Fxmin = (*Circle)(unsafe.Pointer(pCircle)).Fcenterx
 56346  		(*Box)(unsafe.Pointer(pCircle)).Fxmax = (*Circle)(unsafe.Pointer(pCircle)).Fcenterx
 56347  		(*Box)(unsafe.Pointer(pCircle)).Fymin = (*Circle)(unsafe.Pointer(pCircle)).Fcentery + (*Circle)(unsafe.Pointer(pCircle)).Fradius
 56348  		(*Box)(unsafe.Pointer(pCircle)).Fymax = (*Circle)(unsafe.Pointer(pCircle)).Fcentery - (*Circle)(unsafe.Pointer(pCircle)).Fradius
 56349  		(*Box)(unsafe.Pointer(pCircle + 1*32)).Fxmin = (*Circle)(unsafe.Pointer(pCircle)).Fcenterx + (*Circle)(unsafe.Pointer(pCircle)).Fradius
 56350  		(*Box)(unsafe.Pointer(pCircle + 1*32)).Fxmax = (*Circle)(unsafe.Pointer(pCircle)).Fcenterx - (*Circle)(unsafe.Pointer(pCircle)).Fradius
 56351  		(*Box)(unsafe.Pointer(pCircle + 1*32)).Fymin = (*Circle)(unsafe.Pointer(pCircle)).Fcentery
 56352  		(*Box)(unsafe.Pointer(pCircle + 1*32)).Fymax = (*Circle)(unsafe.Pointer(pCircle)).Fcentery
 56353  		(*Circle)(unsafe.Pointer(pCircle)).FmxArea = float64(200.0) * 200.0
 56354  	}
 56355  
 56356  	for i = 0; i < 4; i++ {
 56357  		var x float64
 56358  		if i&0x01 != 0 {
 56359  			x = xmax
 56360  		} else {
 56361  			x = xmin
 56362  		}
 56363  		var y float64
 56364  		if i&0x02 != 0 {
 56365  			y = ymax
 56366  		} else {
 56367  			y = ymin
 56368  		}
 56369  		var d2 float64
 56370  
 56371  		d2 = (x - (*Circle)(unsafe.Pointer(pCircle)).Fcenterx) * (x - (*Circle)(unsafe.Pointer(pCircle)).Fcenterx)
 56372  		d2 = d2 + (y-(*Circle)(unsafe.Pointer(pCircle)).Fcentery)*(y-(*Circle)(unsafe.Pointer(pCircle)).Fcentery)
 56373  		if d2 < (*Circle)(unsafe.Pointer(pCircle)).Fradius*(*Circle)(unsafe.Pointer(pCircle)).Fradius {
 56374  			nWithin++
 56375  		}
 56376  	}
 56377  
 56378  	if nWithin == 0 {
 56379  		for i = 0; i < 2; i++ {
 56380  			if xmin <= (*Box)(unsafe.Pointer(pCircle+uintptr(i)*32)).Fxmin &&
 56381  				xmax >= (*Box)(unsafe.Pointer(pCircle+uintptr(i)*32)).Fxmax &&
 56382  				ymin <= (*Box)(unsafe.Pointer(pCircle+uintptr(i)*32)).Fymin &&
 56383  				ymax >= (*Box)(unsafe.Pointer(pCircle+uintptr(i)*32)).Fymax {
 56384  				nWithin = 1
 56385  				break
 56386  			}
 56387  		}
 56388  	}
 56389  
 56390  	if (*Circle)(unsafe.Pointer(pCircle)).FeScoreType == 1 {
 56391  		(*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FrScore = sqlite3_rtree_dbl((*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FiLevel)
 56392  	} else if (*Circle)(unsafe.Pointer(pCircle)).FeScoreType == 2 {
 56393  		(*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FrScore = sqlite3_rtree_dbl(100 - (*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FiLevel)
 56394  	} else if (*Circle)(unsafe.Pointer(pCircle)).FeScoreType == 3 {
 56395  		if (*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FiLevel == 1 {
 56396  			(*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FrScore = 1.0 - (xmax-xmin)*(ymax-ymin)/(*Circle)(unsafe.Pointer(pCircle)).FmxArea
 56397  			if (*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FrScore < 0.01 {
 56398  				(*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FrScore = 0.01
 56399  			}
 56400  		} else {
 56401  			(*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FrScore = 0.0
 56402  		}
 56403  	} else if (*Circle)(unsafe.Pointer(pCircle)).FeScoreType == 4 {
 56404  		(*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FrScore = sqlite3_rtree_dbl((*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FiLevel)
 56405  		if (*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FiRowid&int64(1) != 0 {
 56406  			nWithin = 0
 56407  		}
 56408  	} else {
 56409  		(*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FrScore = sqlite3_rtree_dbl(100 - (*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FiLevel)
 56410  		if (*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FiRowid&int64(1) != 0 {
 56411  			nWithin = 0
 56412  		}
 56413  	}
 56414  	if nWithin == 0 {
 56415  		(*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FeWithin = NOT_WITHIN
 56416  	} else if nWithin >= 4 {
 56417  		(*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FeWithin = FULLY_WITHIN
 56418  	} else {
 56419  		(*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FeWithin = PARTLY_WITHIN
 56420  	}
 56421  	return SQLITE_OK
 56422  }
 56423  
 56424  func bfs_query_func(tls *libc.TLS, p uintptr) int32 {
 56425  	var x0 float64
 56426  	var x1 float64
 56427  	var y0 float64
 56428  	var y1 float64
 56429  	var bx0 float64
 56430  	var bx1 float64
 56431  	var by0 float64
 56432  	var by1 float64
 56433  
 56434  	if (*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FnParam != 4 {
 56435  		return SQLITE_ERROR
 56436  	}
 56437  	x0 = *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FaCoord))
 56438  	x1 = *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FaCoord + 1*8))
 56439  	y0 = *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FaCoord + 2*8))
 56440  	y1 = *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FaCoord + 3*8))
 56441  	bx0 = *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FaParam))
 56442  	bx1 = *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FaParam + 1*8))
 56443  	by0 = *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FaParam + 2*8))
 56444  	by1 = *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FaParam + 3*8))
 56445  	(*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FrScore = sqlite3_rtree_dbl(100 - (*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FiLevel)
 56446  	if (*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FeParentWithin == FULLY_WITHIN {
 56447  		(*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FeWithin = FULLY_WITHIN
 56448  	} else if x0 >= bx0 && x1 <= bx1 && y0 >= by0 && y1 <= by1 {
 56449  		(*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FeWithin = FULLY_WITHIN
 56450  	} else if x1 >= bx0 && x0 <= bx1 && y1 >= by0 && y0 <= by1 {
 56451  		(*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FeWithin = PARTLY_WITHIN
 56452  	} else {
 56453  		(*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FeWithin = NOT_WITHIN
 56454  	}
 56455  	return SQLITE_OK
 56456  }
 56457  
 56458  type Cube1 = struct {
 56459  	Fx      float64
 56460  	Fy      float64
 56461  	Fz      float64
 56462  	Fwidth  float64
 56463  	Fheight float64
 56464  	Fdepth  float64
 56465  }
 56466  
 56467  type Cube = Cube1
 56468  
 56469  func cube_context_free(tls *libc.TLS, p uintptr) {
 56470  	sqlite3.Xsqlite3_free(tls, p)
 56471  }
 56472  
 56473  var gHere int32 = 42
 56474  
 56475  func cube_geom(tls *libc.TLS, p uintptr, nCoord int32, aCoord uintptr, piRes uintptr) int32 {
 56476  	var pCube uintptr = (*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FpUser
 56477  
 56478  	if pCube == uintptr(0) {
 56479  		if (*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FnParam != 6 || nCoord != 6 ||
 56480  			*(*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 {
 56481  			return SQLITE_ERROR
 56482  		}
 56483  		pCube = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(Cube{})))
 56484  		if !(pCube != 0) {
 56485  			return SQLITE_NOMEM
 56486  		}
 56487  		(*Cube)(unsafe.Pointer(pCube)).Fx = *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FaParam))
 56488  		(*Cube)(unsafe.Pointer(pCube)).Fy = *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FaParam + 1*8))
 56489  		(*Cube)(unsafe.Pointer(pCube)).Fz = *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FaParam + 2*8))
 56490  		(*Cube)(unsafe.Pointer(pCube)).Fwidth = *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FaParam + 3*8))
 56491  		(*Cube)(unsafe.Pointer(pCube)).Fheight = *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FaParam + 4*8))
 56492  		(*Cube)(unsafe.Pointer(pCube)).Fdepth = *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FaParam + 5*8))
 56493  
 56494  		(*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FpUser = pCube
 56495  		(*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FxDelUser = *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{cube_context_free}))
 56496  	}
 56497  
 56498  	*(*int32)(unsafe.Pointer(piRes)) = 0
 56499  	if *(*sqlite3_rtree_dbl)(unsafe.Pointer(aCoord)) <= (*Cube)(unsafe.Pointer(pCube)).Fx+(*Cube)(unsafe.Pointer(pCube)).Fwidth &&
 56500  		*(*sqlite3_rtree_dbl)(unsafe.Pointer(aCoord + 1*8)) >= (*Cube)(unsafe.Pointer(pCube)).Fx &&
 56501  		*(*sqlite3_rtree_dbl)(unsafe.Pointer(aCoord + 2*8)) <= (*Cube)(unsafe.Pointer(pCube)).Fy+(*Cube)(unsafe.Pointer(pCube)).Fheight &&
 56502  		*(*sqlite3_rtree_dbl)(unsafe.Pointer(aCoord + 3*8)) >= (*Cube)(unsafe.Pointer(pCube)).Fy &&
 56503  		*(*sqlite3_rtree_dbl)(unsafe.Pointer(aCoord + 4*8)) <= (*Cube)(unsafe.Pointer(pCube)).Fz+(*Cube)(unsafe.Pointer(pCube)).Fdepth &&
 56504  		*(*sqlite3_rtree_dbl)(unsafe.Pointer(aCoord + 5*8)) >= (*Cube)(unsafe.Pointer(pCube)).Fz {
 56505  		*(*int32)(unsafe.Pointer(piRes)) = 1
 56506  	}
 56507  
 56508  	return SQLITE_OK
 56509  }
 56510  
 56511  func register_cube_geom(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 56512  	bp := tls.Alloc(8)
 56513  	defer tls.Free(8)
 56514  
 56515  	var rc int32
 56516  
 56517  	if objc != 2 {
 56518  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2050)
 56519  		return TCL_ERROR
 56520  	}
 56521  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 56522  		return TCL_ERROR
 56523  	}
 56524  	rc = sqlite3.Xsqlite3_rtree_geometry_callback(tls, *(*uintptr)(unsafe.Pointer(bp)), ts+36617, *(*uintptr)(unsafe.Pointer(&struct {
 56525  		f func(*libc.TLS, uintptr, int32, uintptr, uintptr) int32
 56526  	}{cube_geom})), uintptr(unsafe.Pointer(&gHere)))
 56527  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 56528  	return TCL_OK
 56529  }
 56530  
 56531  func register_circle_geom(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 56532  	bp := tls.Alloc(8)
 56533  	defer tls.Free(8)
 56534  
 56535  	var rc int32
 56536  
 56537  	if objc != 2 {
 56538  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2050)
 56539  		return TCL_ERROR
 56540  	}
 56541  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 56542  		return TCL_ERROR
 56543  	}
 56544  	rc = sqlite3.Xsqlite3_rtree_geometry_callback(tls, *(*uintptr)(unsafe.Pointer(bp)), ts+36622, *(*uintptr)(unsafe.Pointer(&struct {
 56545  		f func(*libc.TLS, uintptr, int32, uintptr, uintptr) int32
 56546  	}{circle_geom})), uintptr(0))
 56547  	if rc == SQLITE_OK {
 56548  		rc = sqlite3.Xsqlite3_rtree_query_callback(tls, *(*uintptr)(unsafe.Pointer(bp)), ts+36629,
 56549  			*(*uintptr)(unsafe.Pointer(&struct {
 56550  				f func(*libc.TLS, uintptr) int32
 56551  			}{circle_query_func})), uintptr(0), uintptr(0))
 56552  	}
 56553  	if rc == SQLITE_OK {
 56554  		rc = sqlite3.Xsqlite3_rtree_query_callback(tls, *(*uintptr)(unsafe.Pointer(bp)), ts+36637,
 56555  			*(*uintptr)(unsafe.Pointer(&struct {
 56556  				f func(*libc.TLS, uintptr) int32
 56557  			}{bfs_query_func})), uintptr(0), uintptr(0))
 56558  	}
 56559  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 56560  	return TCL_OK
 56561  }
 56562  
 56563  func Sqlitetestrtree_Init(tls *libc.TLS, interp uintptr) int32 {
 56564  	tcl.XTcl_CreateObjCommand(tls, interp, ts+36656, *(*uintptr)(unsafe.Pointer(&struct {
 56565  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 56566  	}{register_cube_geom})), uintptr(0), uintptr(0))
 56567  	tcl.XTcl_CreateObjCommand(tls, interp, ts+36675, *(*uintptr)(unsafe.Pointer(&struct {
 56568  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 56569  	}{register_circle_geom})), uintptr(0), uintptr(0))
 56570  	return TCL_OK
 56571  }
 56572  
 56573  type fd_set5 = struct{ Ffds_bits [16]int64 }
 56574  
 56575  type schema_vtab1 = struct {
 56576  	Fbase sqlite3_vtab
 56577  	Fdb   uintptr
 56578  }
 56579  
 56580  type schema_vtab = schema_vtab1
 56581  type schema_cursor1 = struct {
 56582  	Fbase        sqlite3_vtab_cursor
 56583  	FpDbList     uintptr
 56584  	FpTableList  uintptr
 56585  	FpColumnList uintptr
 56586  	Frowid       int32
 56587  	F__ccgo_pad1 [4]byte
 56588  }
 56589  
 56590  type schema_cursor = schema_cursor1
 56591  
 56592  func schemaDestroy(tls *libc.TLS, pVtab uintptr) int32 {
 56593  	sqlite3.Xsqlite3_free(tls, pVtab)
 56594  	return 0
 56595  }
 56596  
 56597  func schemaCreate(tls *libc.TLS, db uintptr, pAux uintptr, argc int32, argv uintptr, ppVtab uintptr, pzErr uintptr) int32 {
 56598  	var rc int32 = SQLITE_NOMEM
 56599  	var pVtab uintptr = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(schema_vtab{})))
 56600  	if pVtab != 0 {
 56601  		libc.Xmemset(tls, pVtab, 0, uint64(unsafe.Sizeof(schema_vtab{})))
 56602  		(*schema_vtab)(unsafe.Pointer(pVtab)).Fdb = db
 56603  		rc = sqlite3.Xsqlite3_declare_vtab(tls, db, ts+36696)
 56604  	}
 56605  	*(*uintptr)(unsafe.Pointer(ppVtab)) = pVtab
 56606  	return rc
 56607  }
 56608  
 56609  func schemaOpen(tls *libc.TLS, pVTab uintptr, ppCursor uintptr) int32 {
 56610  	var rc int32 = SQLITE_NOMEM
 56611  	var pCur uintptr
 56612  	pCur = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(schema_cursor{})))
 56613  	if pCur != 0 {
 56614  		libc.Xmemset(tls, pCur, 0, uint64(unsafe.Sizeof(schema_cursor{})))
 56615  		*(*uintptr)(unsafe.Pointer(ppCursor)) = pCur
 56616  		rc = SQLITE_OK
 56617  	}
 56618  	return rc
 56619  }
 56620  
 56621  func schemaClose(tls *libc.TLS, cur uintptr) int32 {
 56622  	var pCur uintptr = cur
 56623  	sqlite3.Xsqlite3_finalize(tls, (*schema_cursor)(unsafe.Pointer(pCur)).FpDbList)
 56624  	sqlite3.Xsqlite3_finalize(tls, (*schema_cursor)(unsafe.Pointer(pCur)).FpTableList)
 56625  	sqlite3.Xsqlite3_finalize(tls, (*schema_cursor)(unsafe.Pointer(pCur)).FpColumnList)
 56626  	sqlite3.Xsqlite3_free(tls, pCur)
 56627  	return SQLITE_OK
 56628  }
 56629  
 56630  func schemaColumn(tls *libc.TLS, cur uintptr, ctx uintptr, i int32) int32 {
 56631  	var pCur uintptr = cur
 56632  	switch i {
 56633  	case 0:
 56634  		sqlite3.Xsqlite3_result_value(tls, ctx, sqlite3.Xsqlite3_column_value(tls, (*schema_cursor)(unsafe.Pointer(pCur)).FpDbList, 1))
 56635  		break
 56636  	case 1:
 56637  		sqlite3.Xsqlite3_result_value(tls, ctx, sqlite3.Xsqlite3_column_value(tls, (*schema_cursor)(unsafe.Pointer(pCur)).FpTableList, 0))
 56638  		break
 56639  	default:
 56640  		sqlite3.Xsqlite3_result_value(tls, ctx, sqlite3.Xsqlite3_column_value(tls, (*schema_cursor)(unsafe.Pointer(pCur)).FpColumnList, i-2))
 56641  		break
 56642  	}
 56643  	return SQLITE_OK
 56644  }
 56645  
 56646  func schemaRowid(tls *libc.TLS, cur uintptr, pRowid uintptr) int32 {
 56647  	var pCur uintptr = cur
 56648  	*(*sqlite_int64)(unsafe.Pointer(pRowid)) = sqlite_int64((*schema_cursor)(unsafe.Pointer(pCur)).Frowid)
 56649  	return SQLITE_OK
 56650  }
 56651  
 56652  func finalize(tls *libc.TLS, ppStmt uintptr) int32 {
 56653  	var rc int32 = sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(ppStmt)))
 56654  	*(*uintptr)(unsafe.Pointer(ppStmt)) = uintptr(0)
 56655  	return rc
 56656  }
 56657  
 56658  func schemaEof(tls *libc.TLS, cur uintptr) int32 {
 56659  	var pCur uintptr = cur
 56660  	return func() int32 {
 56661  		if (*schema_cursor)(unsafe.Pointer(pCur)).FpDbList != 0 {
 56662  			return 0
 56663  		}
 56664  		return 1
 56665  	}()
 56666  }
 56667  
 56668  func schemaNext(tls *libc.TLS, cur uintptr) int32 {
 56669  	bp := tls.Alloc(24)
 56670  	defer tls.Free(24)
 56671  
 56672  	var rc int32
 56673  	var pCur uintptr
 56674  	var pVtab uintptr
 56675  	var zSql uintptr
 56676  	var pDbList uintptr
 56677  	rc = SQLITE_OK
 56678  	pCur = cur
 56679  	pVtab = (*sqlite3_vtab_cursor)(unsafe.Pointer(cur)).FpVtab
 56680  	zSql = uintptr(0)
 56681  
 56682  __1:
 56683  	if !(!(int32((*schema_cursor)(unsafe.Pointer(pCur)).FpColumnList) != 0) || SQLITE_ROW != sqlite3.Xsqlite3_step(tls, (*schema_cursor)(unsafe.Pointer(pCur)).FpColumnList)) {
 56684  		goto __2
 56685  	}
 56686  	if !(SQLITE_OK != libc.AssignInt32(&rc, finalize(tls, pCur+24))) {
 56687  		goto __3
 56688  	}
 56689  	goto next_exit
 56690  __3:
 56691  	;
 56692  __4:
 56693  	if !(!(int32((*schema_cursor)(unsafe.Pointer(pCur)).FpTableList) != 0) || SQLITE_ROW != sqlite3.Xsqlite3_step(tls, (*schema_cursor)(unsafe.Pointer(pCur)).FpTableList)) {
 56694  		goto __5
 56695  	}
 56696  	if !(SQLITE_OK != libc.AssignInt32(&rc, finalize(tls, pCur+16))) {
 56697  		goto __6
 56698  	}
 56699  	goto next_exit
 56700  __6:
 56701  	;
 56702  __7:
 56703  	if !(SQLITE_ROW != sqlite3.Xsqlite3_step(tls, (*schema_cursor)(unsafe.Pointer(pCur)).FpDbList)) {
 56704  		goto __8
 56705  	}
 56706  	rc = finalize(tls, pCur+8)
 56707  	goto next_exit
 56708  	goto __7
 56709  __8:
 56710  	;
 56711  	if !(sqlite3.Xsqlite3_column_int(tls, (*schema_cursor)(unsafe.Pointer(pCur)).FpDbList, 0) == 1) {
 56712  		goto __9
 56713  	}
 56714  	zSql = sqlite3.Xsqlite3_mprintf(tls,
 56715  		ts+36768, 0)
 56716  	goto __10
 56717  __9:
 56718  	pDbList = (*schema_cursor)(unsafe.Pointer(pCur)).FpDbList
 56719  	zSql = sqlite3.Xsqlite3_mprintf(tls,
 56720  		ts+36823,
 56721  		libc.VaList(bp, sqlite3.Xsqlite3_column_text(tls, pDbList, 1)))
 56722  __10:
 56723  	;
 56724  	if !!(zSql != 0) {
 56725  		goto __11
 56726  	}
 56727  	rc = SQLITE_NOMEM
 56728  	goto next_exit
 56729  __11:
 56730  	;
 56731  	rc = sqlite3.Xsqlite3_prepare(tls, (*schema_vtab)(unsafe.Pointer(pVtab)).Fdb, zSql, -1, pCur+16, uintptr(0))
 56732  	sqlite3.Xsqlite3_free(tls, zSql)
 56733  	if !(rc != SQLITE_OK) {
 56734  		goto __12
 56735  	}
 56736  	goto next_exit
 56737  __12:
 56738  	;
 56739  	goto __4
 56740  __5:
 56741  	;
 56742  	zSql = sqlite3.Xsqlite3_mprintf(tls, ts+36876,
 56743  		libc.VaList(bp+8, sqlite3.Xsqlite3_column_text(tls, (*schema_cursor)(unsafe.Pointer(pCur)).FpDbList, 1),
 56744  			sqlite3.Xsqlite3_column_text(tls, (*schema_cursor)(unsafe.Pointer(pCur)).FpTableList, 0)))
 56745  
 56746  	if !!(zSql != 0) {
 56747  		goto __13
 56748  	}
 56749  	rc = SQLITE_NOMEM
 56750  	goto next_exit
 56751  __13:
 56752  	;
 56753  	rc = sqlite3.Xsqlite3_prepare(tls, (*schema_vtab)(unsafe.Pointer(pVtab)).Fdb, zSql, -1, pCur+24, uintptr(0))
 56754  	sqlite3.Xsqlite3_free(tls, zSql)
 56755  	if !(rc != SQLITE_OK) {
 56756  		goto __14
 56757  	}
 56758  	goto next_exit
 56759  __14:
 56760  	;
 56761  	goto __1
 56762  __2:
 56763  	;
 56764  	(*schema_cursor)(unsafe.Pointer(pCur)).Frowid++
 56765  
 56766  next_exit:
 56767  	return rc
 56768  }
 56769  
 56770  func schemaFilter(tls *libc.TLS, pVtabCursor uintptr, idxNum int32, idxStr uintptr, argc int32, argv uintptr) int32 {
 56771  	var rc int32
 56772  	var pVtab uintptr = (*sqlite3_vtab_cursor)(unsafe.Pointer(pVtabCursor)).FpVtab
 56773  	var pCur uintptr = pVtabCursor
 56774  	(*schema_cursor)(unsafe.Pointer(pCur)).Frowid = 0
 56775  	finalize(tls, pCur+16)
 56776  	finalize(tls, pCur+24)
 56777  	finalize(tls, pCur+8)
 56778  	rc = sqlite3.Xsqlite3_prepare(tls, (*schema_vtab)(unsafe.Pointer(pVtab)).Fdb, ts+36901, -1, pCur+8, uintptr(0))
 56779  	return func() int32 {
 56780  		if rc == SQLITE_OK {
 56781  			return schemaNext(tls, pVtabCursor)
 56782  		}
 56783  		return rc
 56784  	}()
 56785  }
 56786  
 56787  func schemaBestIndex(tls *libc.TLS, tab uintptr, pIdxInfo uintptr) int32 {
 56788  	return SQLITE_OK
 56789  }
 56790  
 56791  var schemaModule = sqlite3_module{
 56792  	FxCreate:     0,
 56793  	FxConnect:    0,
 56794  	FxBestIndex:  0,
 56795  	FxDisconnect: 0,
 56796  	FxDestroy:    0,
 56797  	FxOpen:       0,
 56798  	FxClose:      0,
 56799  	FxFilter:     0,
 56800  	FxNext:       0,
 56801  	FxEof:        0,
 56802  	FxColumn:     0,
 56803  	FxRowid:      0,
 56804  }
 56805  
 56806  func register_schema_module(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 56807  	bp := tls.Alloc(8)
 56808  	defer tls.Free(8)
 56809  
 56810  	if objc != 2 {
 56811  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2050)
 56812  		return TCL_ERROR
 56813  	}
 56814  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 56815  		return TCL_ERROR
 56816  	}
 56817  	sqlite3.Xsqlite3_create_module(tls, *(*uintptr)(unsafe.Pointer(bp)), ts+4808, uintptr(unsafe.Pointer(&schemaModule)), uintptr(0))
 56818  	return TCL_OK
 56819  }
 56820  
 56821  func Sqlitetestschema_Init(tls *libc.TLS, interp uintptr) int32 {
 56822  	var i int32
 56823  	for i = 0; uint64(i) < uint64(unsafe.Sizeof(aObjCmd12))/uint64(unsafe.Sizeof(struct {
 56824  		FzName      uintptr
 56825  		FxProc      uintptr
 56826  		FclientData uintptr
 56827  	}{})); i++ {
 56828  		tcl.XTcl_CreateObjCommand(tls, interp, aObjCmd12[i].FzName,
 56829  			aObjCmd12[i].FxProc, aObjCmd12[i].FclientData, uintptr(0))
 56830  	}
 56831  	return TCL_OK
 56832  }
 56833  
 56834  var aObjCmd12 = [1]struct {
 56835  	FzName      uintptr
 56836  	FxProc      uintptr
 56837  	FclientData uintptr
 56838  }{
 56839  	{FzName: ts + 36922, FxProc: 0},
 56840  }
 56841  
 56842  type SqlMessage1 = struct {
 56843  	Fop           int32
 56844  	F__ccgo_pad1  [4]byte
 56845  	FpDb          uintptr
 56846  	FpStmt        uintptr
 56847  	FerrCode      int32
 56848  	F__ccgo_pad2  [4]byte
 56849  	FzIn          uintptr
 56850  	FnByte        int32
 56851  	F__ccgo_pad3  [4]byte
 56852  	FzOut         uintptr
 56853  	FpNext        uintptr
 56854  	FpPrev        uintptr
 56855  	FclientMutex  pthread_mutex_t
 56856  	FclientWakeup pthread_cond_t
 56857  }
 56858  
 56859  type SqlMessage = SqlMessage1
 56860  
 56861  type ServerState = struct {
 56862  	FqueueMutex   pthread_mutex_t
 56863  	FserverMutex  pthread_mutex_t
 56864  	FserverWakeup pthread_cond_t
 56865  	FserverHalt   int32
 56866  	F__ccgo_pad1  [4]byte
 56867  	FpQueueHead   uintptr
 56868  	FpQueueTail   uintptr
 56869  }
 56870  
 56871  var g4 = ServerState{}
 56872  
 56873  func sendToServer(tls *libc.TLS, pMsg uintptr) {
 56874  	libc.Xpthread_mutex_init(tls, pMsg+72, uintptr(0))
 56875  	libc.Xpthread_cond_init(tls, pMsg+112, uintptr(0))
 56876  
 56877  	libc.Xpthread_mutex_lock(tls, uintptr(unsafe.Pointer(&g4)))
 56878  	(*SqlMessage)(unsafe.Pointer(pMsg)).FpNext = g4.FpQueueHead
 56879  	if g4.FpQueueHead == uintptr(0) {
 56880  		g4.FpQueueTail = pMsg
 56881  	} else {
 56882  		(*SqlMessage)(unsafe.Pointer(g4.FpQueueHead)).FpPrev = pMsg
 56883  	}
 56884  	(*SqlMessage)(unsafe.Pointer(pMsg)).FpPrev = uintptr(0)
 56885  	g4.FpQueueHead = pMsg
 56886  	libc.Xpthread_mutex_unlock(tls, uintptr(unsafe.Pointer(&g4)))
 56887  
 56888  	libc.Xpthread_mutex_lock(tls, pMsg+72)
 56889  	libc.Xpthread_cond_signal(tls, uintptr(unsafe.Pointer(&g4))+80)
 56890  	for (*SqlMessage)(unsafe.Pointer(pMsg)).Fop != MSG_Done {
 56891  		libc.Xpthread_cond_wait(tls, pMsg+112, pMsg+72)
 56892  	}
 56893  	libc.Xpthread_mutex_unlock(tls, pMsg+72)
 56894  
 56895  	libc.Xpthread_mutex_destroy(tls, pMsg+72)
 56896  	libc.Xpthread_cond_destroy(tls, pMsg+112)
 56897  }
 56898  
 56899  func sqlite3_client_open(tls *libc.TLS, zDatabaseName uintptr, ppDb uintptr) int32 {
 56900  	bp := tls.Alloc(160)
 56901  	defer tls.Free(160)
 56902  
 56903  	(*SqlMessage)(unsafe.Pointer(bp)).Fop = MSG_Open
 56904  	(*SqlMessage)(unsafe.Pointer(bp)).FzIn = zDatabaseName
 56905  	sendToServer(tls, bp)
 56906  	*(*uintptr)(unsafe.Pointer(ppDb)) = (*SqlMessage)(unsafe.Pointer(bp)).FpDb
 56907  	return (*SqlMessage)(unsafe.Pointer(bp)).FerrCode
 56908  }
 56909  
 56910  func sqlite3_client_prepare(tls *libc.TLS, pDb uintptr, zSql uintptr, nByte int32, ppStmt uintptr, pzTail uintptr) int32 {
 56911  	bp := tls.Alloc(160)
 56912  	defer tls.Free(160)
 56913  
 56914  	(*SqlMessage)(unsafe.Pointer(bp)).Fop = MSG_Prepare
 56915  	(*SqlMessage)(unsafe.Pointer(bp)).FpDb = pDb
 56916  	(*SqlMessage)(unsafe.Pointer(bp)).FzIn = zSql
 56917  	(*SqlMessage)(unsafe.Pointer(bp)).FnByte = nByte
 56918  	sendToServer(tls, bp)
 56919  	*(*uintptr)(unsafe.Pointer(ppStmt)) = (*SqlMessage)(unsafe.Pointer(bp)).FpStmt
 56920  	if pzTail != 0 {
 56921  		*(*uintptr)(unsafe.Pointer(pzTail)) = (*SqlMessage)(unsafe.Pointer(bp)).FzOut
 56922  	}
 56923  	return (*SqlMessage)(unsafe.Pointer(bp)).FerrCode
 56924  }
 56925  
 56926  func sqlite3_client_step(tls *libc.TLS, pStmt uintptr) int32 {
 56927  	bp := tls.Alloc(160)
 56928  	defer tls.Free(160)
 56929  
 56930  	(*SqlMessage)(unsafe.Pointer(bp)).Fop = MSG_Step
 56931  	(*SqlMessage)(unsafe.Pointer(bp)).FpStmt = pStmt
 56932  	sendToServer(tls, bp)
 56933  	return (*SqlMessage)(unsafe.Pointer(bp)).FerrCode
 56934  }
 56935  
 56936  func sqlite3_client_reset(tls *libc.TLS, pStmt uintptr) int32 {
 56937  	bp := tls.Alloc(160)
 56938  	defer tls.Free(160)
 56939  
 56940  	(*SqlMessage)(unsafe.Pointer(bp)).Fop = MSG_Reset
 56941  	(*SqlMessage)(unsafe.Pointer(bp)).FpStmt = pStmt
 56942  	sendToServer(tls, bp)
 56943  	return (*SqlMessage)(unsafe.Pointer(bp)).FerrCode
 56944  }
 56945  
 56946  func sqlite3_client_finalize(tls *libc.TLS, pStmt uintptr) int32 {
 56947  	bp := tls.Alloc(160)
 56948  	defer tls.Free(160)
 56949  
 56950  	(*SqlMessage)(unsafe.Pointer(bp)).Fop = MSG_Finalize
 56951  	(*SqlMessage)(unsafe.Pointer(bp)).FpStmt = pStmt
 56952  	sendToServer(tls, bp)
 56953  	return (*SqlMessage)(unsafe.Pointer(bp)).FerrCode
 56954  }
 56955  
 56956  func sqlite3_client_close(tls *libc.TLS, pDb uintptr) int32 {
 56957  	bp := tls.Alloc(160)
 56958  	defer tls.Free(160)
 56959  
 56960  	(*SqlMessage)(unsafe.Pointer(bp)).Fop = MSG_Close
 56961  	(*SqlMessage)(unsafe.Pointer(bp)).FpDb = pDb
 56962  	sendToServer(tls, bp)
 56963  	return (*SqlMessage)(unsafe.Pointer(bp)).FerrCode
 56964  }
 56965  
 56966  func sqlite3_server(tls *libc.TLS, NotUsed uintptr) uintptr {
 56967  	if libc.Xpthread_mutex_trylock(tls, uintptr(unsafe.Pointer(&g4))+40) != 0 {
 56968  		return uintptr(0)
 56969  	}
 56970  	sqlite3.Xsqlite3_enable_shared_cache(tls, 1)
 56971  	for !(g4.FserverHalt != 0) {
 56972  		var pMsg uintptr
 56973  
 56974  		libc.Xpthread_mutex_lock(tls, uintptr(unsafe.Pointer(&g4)))
 56975  		for g4.FpQueueTail == uintptr(0) && g4.FserverHalt == 0 {
 56976  			libc.Xpthread_cond_wait(tls, uintptr(unsafe.Pointer(&g4))+80, uintptr(unsafe.Pointer(&g4)))
 56977  		}
 56978  		pMsg = g4.FpQueueTail
 56979  		if pMsg != 0 {
 56980  			if (*SqlMessage)(unsafe.Pointer(pMsg)).FpPrev != 0 {
 56981  				(*SqlMessage)(unsafe.Pointer((*SqlMessage)(unsafe.Pointer(pMsg)).FpPrev)).FpNext = uintptr(0)
 56982  			} else {
 56983  				g4.FpQueueHead = uintptr(0)
 56984  			}
 56985  			g4.FpQueueTail = (*SqlMessage)(unsafe.Pointer(pMsg)).FpPrev
 56986  		}
 56987  		libc.Xpthread_mutex_unlock(tls, uintptr(unsafe.Pointer(&g4)))
 56988  		if pMsg == uintptr(0) {
 56989  			break
 56990  		}
 56991  
 56992  		libc.Xpthread_mutex_lock(tls, pMsg+72)
 56993  		switch (*SqlMessage)(unsafe.Pointer(pMsg)).Fop {
 56994  		case MSG_Open:
 56995  			{
 56996  				(*SqlMessage)(unsafe.Pointer(pMsg)).FerrCode = sqlite3.Xsqlite3_open(tls, (*SqlMessage)(unsafe.Pointer(pMsg)).FzIn, pMsg+8)
 56997  				break
 56998  
 56999  			}
 57000  		case MSG_Prepare:
 57001  			{
 57002  				(*SqlMessage)(unsafe.Pointer(pMsg)).FerrCode = sqlite3.Xsqlite3_prepare(tls, (*SqlMessage)(unsafe.Pointer(pMsg)).FpDb, (*SqlMessage)(unsafe.Pointer(pMsg)).FzIn, (*SqlMessage)(unsafe.Pointer(pMsg)).FnByte,
 57003  					pMsg+16, pMsg+48)
 57004  				break
 57005  
 57006  			}
 57007  		case MSG_Step:
 57008  			{
 57009  				(*SqlMessage)(unsafe.Pointer(pMsg)).FerrCode = sqlite3.Xsqlite3_step(tls, (*SqlMessage)(unsafe.Pointer(pMsg)).FpStmt)
 57010  				break
 57011  
 57012  			}
 57013  		case MSG_Reset:
 57014  			{
 57015  				(*SqlMessage)(unsafe.Pointer(pMsg)).FerrCode = sqlite3.Xsqlite3_reset(tls, (*SqlMessage)(unsafe.Pointer(pMsg)).FpStmt)
 57016  				break
 57017  
 57018  			}
 57019  		case MSG_Finalize:
 57020  			{
 57021  				(*SqlMessage)(unsafe.Pointer(pMsg)).FerrCode = sqlite3.Xsqlite3_finalize(tls, (*SqlMessage)(unsafe.Pointer(pMsg)).FpStmt)
 57022  				break
 57023  
 57024  			}
 57025  		case MSG_Close:
 57026  			{
 57027  				(*SqlMessage)(unsafe.Pointer(pMsg)).FerrCode = sqlite3.Xsqlite3_close(tls, (*SqlMessage)(unsafe.Pointer(pMsg)).FpDb)
 57028  				break
 57029  
 57030  			}
 57031  		}
 57032  
 57033  		(*SqlMessage)(unsafe.Pointer(pMsg)).Fop = MSG_Done
 57034  		libc.Xpthread_mutex_unlock(tls, pMsg+72)
 57035  		libc.Xpthread_cond_signal(tls, pMsg+112)
 57036  	}
 57037  	libc.Xpthread_mutex_unlock(tls, uintptr(unsafe.Pointer(&g4))+40)
 57038  	return uintptr(0)
 57039  }
 57040  
 57041  func sqlite3_server_start(tls *libc.TLS) {
 57042  	bp := tls.Alloc(8)
 57043  	defer tls.Free(8)
 57044  
 57045  	var rc int32
 57046  	g4.FserverHalt = 0
 57047  	rc = libc.Xpthread_create(tls, bp, uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 57048  		f func(*libc.TLS, uintptr) uintptr
 57049  	}{sqlite3_server})), uintptr(0))
 57050  	if rc == 0 {
 57051  		libc.Xpthread_detach(tls, *(*pthread_t)(unsafe.Pointer(bp)))
 57052  	}
 57053  }
 57054  
 57055  func serverWrapper(tls *libc.TLS, pnDecr uintptr) uintptr {
 57056  	var p uintptr = sqlite3_server(tls, uintptr(0))
 57057  	*(*int32)(unsafe.Pointer(pnDecr))--
 57058  	return p
 57059  }
 57060  
 57061  func sqlite3_server_start2(tls *libc.TLS, pnDecr uintptr) {
 57062  	bp := tls.Alloc(8)
 57063  	defer tls.Free(8)
 57064  
 57065  	var rc int32
 57066  	g4.FserverHalt = 0
 57067  	rc = libc.Xpthread_create(tls, bp, uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 57068  		f func(*libc.TLS, uintptr) uintptr
 57069  	}{serverWrapper})), pnDecr)
 57070  	if rc == 0 {
 57071  		libc.Xpthread_detach(tls, *(*pthread_t)(unsafe.Pointer(bp)))
 57072  	}
 57073  }
 57074  
 57075  func sqlite3_server_stop(tls *libc.TLS) {
 57076  	g4.FserverHalt = 1
 57077  	libc.Xpthread_cond_broadcast(tls, uintptr(unsafe.Pointer(&g4))+80)
 57078  	libc.Xpthread_mutex_lock(tls, uintptr(unsafe.Pointer(&g4))+40)
 57079  	libc.Xpthread_mutex_unlock(tls, uintptr(unsafe.Pointer(&g4))+40)
 57080  }
 57081  
 57082  type SuperlockBusy1 = struct {
 57083  	FxBusy       uintptr
 57084  	FpBusyArg    uintptr
 57085  	FnBusy       int32
 57086  	F__ccgo_pad1 [4]byte
 57087  }
 57088  
 57089  type SuperlockBusy = SuperlockBusy1
 57090  
 57091  type Superlock1 = struct {
 57092  	Fdb          uintptr
 57093  	FbWal        int32
 57094  	F__ccgo_pad1 [4]byte
 57095  }
 57096  
 57097  type Superlock = Superlock1
 57098  
 57099  func superlockBusyHandler(tls *libc.TLS, pCtx uintptr, UNUSED int32) int32 {
 57100  	var pBusy uintptr = pCtx
 57101  	if (*SuperlockBusy)(unsafe.Pointer(pBusy)).FxBusy == uintptr(0) {
 57102  		return 0
 57103  	}
 57104  	return (*struct {
 57105  		f func(*libc.TLS, uintptr, int32) int32
 57106  	})(unsafe.Pointer(&struct{ uintptr }{(*SuperlockBusy)(unsafe.Pointer(pBusy)).FxBusy})).f(tls, (*SuperlockBusy)(unsafe.Pointer(pBusy)).FpBusyArg, libc.PostIncInt32(&(*SuperlockBusy)(unsafe.Pointer(pBusy)).FnBusy, 1))
 57107  }
 57108  
 57109  func superlockIsWal(tls *libc.TLS, pLock uintptr) int32 {
 57110  	bp := tls.Alloc(8)
 57111  	defer tls.Free(8)
 57112  
 57113  	var rc int32
 57114  
 57115  	rc = sqlite3.Xsqlite3_prepare(tls, (*Superlock)(unsafe.Pointer(pLock)).Fdb, ts+36945, -1, bp, uintptr(0))
 57116  	if rc != SQLITE_OK {
 57117  		return rc
 57118  	}
 57119  
 57120  	(*Superlock)(unsafe.Pointer(pLock)).FbWal = 0
 57121  	if SQLITE_ROW == sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp))) {
 57122  		var zMode uintptr = sqlite3.Xsqlite3_column_text(tls, *(*uintptr)(unsafe.Pointer(bp)), 0)
 57123  		if zMode != 0 && libc.Xstrlen(tls, zMode) == uint64(3) && sqlite3.Xsqlite3_strnicmp(tls, ts+29946, zMode, 3) == 0 {
 57124  			(*Superlock)(unsafe.Pointer(pLock)).FbWal = 1
 57125  		}
 57126  	}
 57127  
 57128  	return sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp)))
 57129  }
 57130  
 57131  func superlockShmLock(tls *libc.TLS, fd uintptr, idx int32, nByte int32, pBusy uintptr) int32 {
 57132  	var rc int32
 57133  	var xShmLock uintptr = (*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(fd)).FpMethods)).FxShmLock
 57134  	for __ccgo := true; __ccgo; __ccgo = rc == SQLITE_BUSY && superlockBusyHandler(tls, pBusy, 0) != 0 {
 57135  		rc = (*struct {
 57136  			f func(*libc.TLS, uintptr, int32, int32, int32) int32
 57137  		})(unsafe.Pointer(&struct{ uintptr }{xShmLock})).f(tls, fd, idx, nByte, SQLITE_SHM_LOCK|SQLITE_SHM_EXCLUSIVE)
 57138  	}
 57139  	return rc
 57140  }
 57141  
 57142  func superlockWalLock(tls *libc.TLS, db uintptr, pBusy uintptr) int32 {
 57143  	bp := tls.Alloc(16)
 57144  	defer tls.Free(16)
 57145  
 57146  	var rc int32
 57147  	*(*uintptr)(unsafe.Pointer(bp)) = uintptr(0)
 57148  	*(*uintptr)(unsafe.Pointer(bp + 8)) = uintptr(0)
 57149  
 57150  	rc = sqlite3.Xsqlite3_file_control(tls, db, ts+85, SQLITE_FCNTL_FILE_POINTER, bp)
 57151  	if rc != SQLITE_OK {
 57152  		return rc
 57153  	}
 57154  
 57155  	rc = superlockShmLock(tls, *(*uintptr)(unsafe.Pointer(bp)), 2, 1, pBusy)
 57156  	if rc != SQLITE_OK {
 57157  		return rc
 57158  	}
 57159  
 57160  	rc = (*struct {
 57161  		f func(*libc.TLS, uintptr, int32, int32, int32, uintptr) int32
 57162  	})(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)
 57163  	if rc != SQLITE_OK {
 57164  		return rc
 57165  	}
 57166  	libc.Xmemset(tls, *(*uintptr)(unsafe.Pointer(bp + 8)), 0, uint64(32))
 57167  
 57168  	rc = superlockShmLock(tls, *(*uintptr)(unsafe.Pointer(bp)), 3, SQLITE_SHM_NLOCK-3, pBusy)
 57169  	return rc
 57170  }
 57171  
 57172  func sqlite3demo_superunlock(tls *libc.TLS, pLock uintptr) {
 57173  	bp := tls.Alloc(8)
 57174  	defer tls.Free(8)
 57175  
 57176  	var p uintptr = pLock
 57177  	if (*Superlock)(unsafe.Pointer(p)).FbWal != 0 {
 57178  		var rc int32
 57179  		var flags int32 = SQLITE_SHM_UNLOCK | SQLITE_SHM_EXCLUSIVE
 57180  		*(*uintptr)(unsafe.Pointer(bp)) = uintptr(0)
 57181  		rc = sqlite3.Xsqlite3_file_control(tls, (*Superlock)(unsafe.Pointer(p)).Fdb, ts+85, SQLITE_FCNTL_FILE_POINTER, bp)
 57182  		if rc == SQLITE_OK {
 57183  			(*struct {
 57184  				f func(*libc.TLS, uintptr, int32, int32, int32) int32
 57185  			})(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)
 57186  			(*struct {
 57187  				f func(*libc.TLS, uintptr, int32, int32, int32) int32
 57188  			})(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)
 57189  		}
 57190  	}
 57191  	sqlite3.Xsqlite3_close(tls, (*Superlock)(unsafe.Pointer(p)).Fdb)
 57192  	sqlite3.Xsqlite3_free(tls, p)
 57193  }
 57194  
 57195  func sqlite3demo_superlock(tls *libc.TLS, zPath uintptr, zVfs uintptr, xBusy uintptr, pBusyArg uintptr, ppLock uintptr) int32 {
 57196  	bp := tls.Alloc(24)
 57197  	defer tls.Free(24)
 57198  
 57199  	*(*SuperlockBusy)(unsafe.Pointer(bp)) = SuperlockBusy{}
 57200  	var rc int32
 57201  	var pLock uintptr
 57202  
 57203  	pLock = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(Superlock{})))
 57204  	if !(pLock != 0) {
 57205  		return SQLITE_NOMEM
 57206  	}
 57207  	libc.Xmemset(tls, pLock, 0, uint64(unsafe.Sizeof(Superlock{})))
 57208  
 57209  	rc = sqlite3.Xsqlite3_open_v2(tls,
 57210  		zPath, pLock, SQLITE_OPEN_READWRITE|SQLITE_OPEN_CREATE, zVfs)
 57211  
 57212  	if rc == SQLITE_OK {
 57213  		(*SuperlockBusy)(unsafe.Pointer(bp)).FxBusy = xBusy
 57214  		(*SuperlockBusy)(unsafe.Pointer(bp)).FpBusyArg = pBusyArg
 57215  		sqlite3.Xsqlite3_busy_handler(tls, (*Superlock)(unsafe.Pointer(pLock)).Fdb, *(*uintptr)(unsafe.Pointer(&struct {
 57216  			f func(*libc.TLS, uintptr, int32) int32
 57217  		}{superlockBusyHandler})), bp)
 57218  		rc = sqlite3.Xsqlite3_exec(tls, (*Superlock)(unsafe.Pointer(pLock)).Fdb, ts+13217, uintptr(0), uintptr(0), uintptr(0))
 57219  	}
 57220  
 57221  	if rc == SQLITE_OK {
 57222  		if SQLITE_OK == libc.AssignInt32(&rc, superlockIsWal(tls, pLock)) && (*Superlock)(unsafe.Pointer(pLock)).FbWal != 0 {
 57223  			rc = sqlite3.Xsqlite3_exec(tls, (*Superlock)(unsafe.Pointer(pLock)).Fdb, ts+11628, uintptr(0), uintptr(0), uintptr(0))
 57224  			if rc == SQLITE_OK {
 57225  				rc = superlockWalLock(tls, (*Superlock)(unsafe.Pointer(pLock)).Fdb, bp)
 57226  			}
 57227  		}
 57228  	}
 57229  
 57230  	if rc != SQLITE_OK {
 57231  		sqlite3demo_superunlock(tls, pLock)
 57232  		*(*uintptr)(unsafe.Pointer(ppLock)) = uintptr(0)
 57233  	} else {
 57234  		*(*uintptr)(unsafe.Pointer(ppLock)) = pLock
 57235  	}
 57236  
 57237  	return rc
 57238  }
 57239  
 57240  type InterpAndScript1 = struct {
 57241  	Finterp  uintptr
 57242  	FpScript uintptr
 57243  }
 57244  
 57245  type InterpAndScript = InterpAndScript1
 57246  
 57247  func superunlock_del(tls *libc.TLS, cd ClientData) {
 57248  	sqlite3demo_superunlock(tls, cd)
 57249  }
 57250  
 57251  func superunlock_cmd(tls *libc.TLS, cd ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 57252  	if objc != 1 {
 57253  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+584)
 57254  		return TCL_ERROR
 57255  	}
 57256  	tcl.XTcl_DeleteCommand(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))))
 57257  	return TCL_OK
 57258  }
 57259  
 57260  func superlock_busy(tls *libc.TLS, pCtx uintptr, nBusy int32) int32 {
 57261  	bp := tls.Alloc(4)
 57262  	defer tls.Free(4)
 57263  
 57264  	var p uintptr = pCtx
 57265  	var pEval uintptr
 57266  	*(*int32)(unsafe.Pointer(bp)) = 0
 57267  
 57268  	pEval = tcl.XTcl_DuplicateObj(tls, (*InterpAndScript)(unsafe.Pointer(p)).FpScript)
 57269  	(*Tcl_Obj)(unsafe.Pointer(pEval)).FrefCount++
 57270  	tcl.XTcl_ListObjAppendElement(tls, (*InterpAndScript)(unsafe.Pointer(p)).Finterp, pEval, tcl.XTcl_NewIntObj(tls, nBusy))
 57271  	tcl.XTcl_EvalObjEx(tls, (*InterpAndScript)(unsafe.Pointer(p)).Finterp, pEval, TCL_EVAL_GLOBAL)
 57272  	tcl.XTcl_GetIntFromObj(tls, (*InterpAndScript)(unsafe.Pointer(p)).Finterp, tcl.XTcl_GetObjResult(tls, (*InterpAndScript)(unsafe.Pointer(p)).Finterp), bp)
 57273  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 57274  		var _objPtr uintptr = pEval
 57275  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 57276  			tcl.XTclFreeObj(tls, _objPtr)
 57277  		}
 57278  	}
 57279  
 57280  	return *(*int32)(unsafe.Pointer(bp))
 57281  }
 57282  
 57283  func superlock_cmd(tls *libc.TLS, cd ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 57284  	bp := tls.Alloc(40)
 57285  	defer tls.Free(40)
 57286  
 57287  	var zPath uintptr
 57288  	var zVfs uintptr = uintptr(0)
 57289  	*(*InterpAndScript)(unsafe.Pointer(bp + 16)) = InterpAndScript{}
 57290  	var xBusy uintptr = uintptr(0)
 57291  	var rc int32
 57292  
 57293  	if objc < 3 || objc > 5 {
 57294  		tcl.XTcl_WrongNumArgs(tls,
 57295  			interp, 1, objv, ts+36970)
 57296  		return TCL_ERROR
 57297  	}
 57298  
 57299  	zPath = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 57300  
 57301  	if objc > 3 {
 57302  		zVfs = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)))
 57303  		if libc.Xstrlen(tls, zVfs) == uint64(0) {
 57304  			zVfs = uintptr(0)
 57305  		}
 57306  	}
 57307  	if objc > 4 {
 57308  		(*InterpAndScript)(unsafe.Pointer(bp + 16)).Finterp = interp
 57309  		(*InterpAndScript)(unsafe.Pointer(bp + 16)).FpScript = *(*uintptr)(unsafe.Pointer(objv + 4*8))
 57310  		xBusy = *(*uintptr)(unsafe.Pointer(&struct {
 57311  			f func(*libc.TLS, uintptr, int32) int32
 57312  		}{superlock_busy}))
 57313  	}
 57314  
 57315  	rc = sqlite3demo_superlock(tls, zPath, zVfs, xBusy, bp+16, bp+32)
 57316  
 57317  	if rc != SQLITE_OK {
 57318  		tcl.XTcl_ResetResult(tls, interp)
 57319  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, sqlite3.Xsqlite3ErrStr(tls, rc), 0))
 57320  		return TCL_ERROR
 57321  	}
 57322  
 57323  	tcl.XTcl_CreateObjCommand(tls,
 57324  		interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), *(*uintptr)(unsafe.Pointer(&struct {
 57325  			f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
 57326  		}{superunlock_cmd})), *(*uintptr)(unsafe.Pointer(bp + 32)), *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, ClientData) }{superunlock_del})))
 57327  	tcl.XTcl_SetObjResult(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 57328  	return TCL_OK
 57329  }
 57330  
 57331  func SqliteSuperlock_Init(tls *libc.TLS, interp uintptr) int32 {
 57332  	tcl.XTcl_CreateObjCommand(tls, interp, ts+37011, *(*uintptr)(unsafe.Pointer(&struct {
 57333  		f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
 57334  	}{superlock_cmd})), uintptr(0), uintptr(0))
 57335  	return TCL_OK
 57336  }
 57337  
 57338  type error_t = int32
 57339  
 57340  type TestSyscallGlobal = struct {
 57341  	FbPersist         int32
 57342  	FnCount           int32
 57343  	FnFail            int32
 57344  	Fpgsz             int32
 57345  	Forig_getpagesize sqlite3_syscall_ptr
 57346  }
 57347  
 57348  var gSyscall = TestSyscallGlobal{}
 57349  
 57350  type TestSyscallArray = struct {
 57351  	FzName         uintptr
 57352  	FxTest         sqlite3_syscall_ptr
 57353  	FxOrig         sqlite3_syscall_ptr
 57354  	Fdefault_errno int32
 57355  	Fcustom_errno  int32
 57356  }
 57357  
 57358  var aSyscall = [19]TestSyscallArray{
 57359  	{FzName: ts + 37033, FxTest: 0, Fdefault_errno: EACCES},
 57360  	{FzName: ts + 9490, FxTest: 0},
 57361  	{FzName: ts + 37038, FxTest: 0},
 57362  	{FzName: ts + 37045, FxTest: 0},
 57363  	{FzName: ts + 37052, FxTest: 0},
 57364  	{FzName: ts + 37057, FxTest: 0},
 57365  	{FzName: ts + 37063, FxTest: 0, Fdefault_errno: EIO},
 57366  	{FzName: ts + 37073, FxTest: 0, Fdefault_errno: EACCES},
 57367  	{FzName: ts + 25126, FxTest: 0},
 57368  	{FzName: ts + 37079, FxTest: 0},
 57369  	{FzName: ts + 37085, FxTest: 0},
 57370  	{FzName: ts + 25131, FxTest: 0},
 57371  	{FzName: ts + 37093, FxTest: 0},
 57372  	{FzName: ts + 37100, FxTest: 0},
 57373  	{FzName: ts + 37109, FxTest: 0},
 57374  	{FzName: ts + 37116, FxTest: 0},
 57375  	{FzName: ts + 29040, FxTest: 0},
 57376  	{FzName: ts + 37126, FxTest: 0},
 57377  	{},
 57378  }
 57379  
 57380  func tsIsFail(tls *libc.TLS) int32 {
 57381  	gSyscall.FnCount--
 57382  	if gSyscall.FnCount == 0 || gSyscall.FnFail != 0 && gSyscall.FbPersist != 0 {
 57383  		gSyscall.FnFail++
 57384  		return 1
 57385  	}
 57386  	return 0
 57387  }
 57388  
 57389  func tsErrno(tls *libc.TLS, zFunc uintptr) int32 {
 57390  	var i int32
 57391  	var nFunc int32 = int32(libc.Xstrlen(tls, zFunc))
 57392  	for i = 0; aSyscall[i].FzName != 0; i++ {
 57393  		if libc.Xstrlen(tls, aSyscall[i].FzName) != size_t(nFunc) {
 57394  			continue
 57395  		}
 57396  		if libc.Xmemcmp(tls, aSyscall[i].FzName, zFunc, uint64(nFunc)) != 0 {
 57397  			continue
 57398  		}
 57399  		return aSyscall[i].Fcustom_errno
 57400  	}
 57401  
 57402  	return 0
 57403  }
 57404  
 57405  func tsIsFailErrno(tls *libc.TLS, zFunc uintptr) int32 {
 57406  	if tsIsFail(tls) != 0 {
 57407  		*(*int32)(unsafe.Pointer(libc.X__errno_location(tls))) = tsErrno(tls, zFunc)
 57408  		return 1
 57409  	}
 57410  	return 0
 57411  }
 57412  
 57413  func ts_open(tls *libc.TLS, zFile uintptr, flags int32, mode int32) int32 {
 57414  	if tsIsFailErrno(tls, ts+37033) != 0 {
 57415  		return -1
 57416  	}
 57417  	return (*(*func(*libc.TLS, uintptr, int32, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 16)))(tls, zFile, flags, mode)
 57418  }
 57419  
 57420  func ts_close(tls *libc.TLS, fd int32) int32 {
 57421  	if tsIsFail(tls) != 0 {
 57422  		(*(*func(*libc.TLS, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 1*32 + 16)))(tls, fd)
 57423  		return -1
 57424  	}
 57425  	return (*(*func(*libc.TLS, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 1*32 + 16)))(tls, fd)
 57426  }
 57427  
 57428  func ts_access(tls *libc.TLS, zPath uintptr, mode int32) int32 {
 57429  	if tsIsFail(tls) != 0 {
 57430  		return -1
 57431  	}
 57432  	return (*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 2*32 + 16)))(tls, zPath, mode)
 57433  }
 57434  
 57435  func ts_getcwd(tls *libc.TLS, zPath uintptr, nPath size_t) uintptr {
 57436  	if tsIsFail(tls) != 0 {
 57437  		return uintptr(0)
 57438  	}
 57439  	return (*(*func(*libc.TLS, uintptr, size_t) uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 3*32 + 16)))(tls, zPath, nPath)
 57440  }
 57441  
 57442  func ts_stat(tls *libc.TLS, zPath uintptr, p uintptr) int32 {
 57443  	if tsIsFail(tls) != 0 {
 57444  		return -1
 57445  	}
 57446  	return (*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 4*32 + 16)))(tls, zPath, p)
 57447  }
 57448  
 57449  func ts_fstat(tls *libc.TLS, fd int32, p uintptr) int32 {
 57450  	if tsIsFailErrno(tls, ts+37057) != 0 {
 57451  		return -1
 57452  	}
 57453  	return (*(*func(*libc.TLS, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 5*32 + 16)))(tls, fd, p)
 57454  }
 57455  
 57456  func ts_ftruncate(tls *libc.TLS, fd int32, n off_t) int32 {
 57457  	if tsIsFailErrno(tls, ts+37063) != 0 {
 57458  		return -1
 57459  	}
 57460  	return (*(*func(*libc.TLS, int32, off_t) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 6*32 + 16)))(tls, fd, n)
 57461  }
 57462  
 57463  func ts_fcntl(tls *libc.TLS, fd int32, cmd int32, va uintptr) int32 {
 57464  	bp := tls.Alloc(8)
 57465  	defer tls.Free(8)
 57466  
 57467  	var ap va_list
 57468  	_ = ap
 57469  	var pArg uintptr
 57470  	if tsIsFailErrno(tls, ts+37073) != 0 {
 57471  		return -1
 57472  	}
 57473  	ap = va
 57474  	pArg = libc.VaUintptr(&ap)
 57475  	return (*(*func(*libc.TLS, int32, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 7*32 + 16)))(tls, fd, cmd, libc.VaList(bp, pArg))
 57476  }
 57477  
 57478  func ts_read(tls *libc.TLS, fd int32, aBuf uintptr, nBuf size_t) int32 {
 57479  	if tsIsFailErrno(tls, ts+25126) != 0 {
 57480  		return -1
 57481  	}
 57482  	return int32((*(*func(*libc.TLS, int32, uintptr, size_t) ssize_t)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 8*32 + 16)))(tls, fd, aBuf, nBuf))
 57483  }
 57484  
 57485  func ts_pread(tls *libc.TLS, fd int32, aBuf uintptr, nBuf size_t, off off_t) int32 {
 57486  	if tsIsFailErrno(tls, ts+37079) != 0 {
 57487  		return -1
 57488  	}
 57489  	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))
 57490  }
 57491  
 57492  func ts_pread64(tls *libc.TLS, fd int32, aBuf uintptr, nBuf size_t, off sqlite3_uint64) int32 {
 57493  	if tsIsFailErrno(tls, ts+37085) != 0 {
 57494  		return -1
 57495  	}
 57496  	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))
 57497  }
 57498  
 57499  func ts_write(tls *libc.TLS, fd int32, aBuf uintptr, nBuf size_t) int32 {
 57500  	if tsIsFailErrno(tls, ts+25131) != 0 {
 57501  		if tsErrno(tls, ts+25131) == EINTR {
 57502  			(*(*func(*libc.TLS, int32, uintptr, size_t) ssize_t)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 11*32 + 16)))(tls, fd, aBuf, nBuf/uint64(2))
 57503  		}
 57504  		return -1
 57505  	}
 57506  	return int32((*(*func(*libc.TLS, int32, uintptr, size_t) ssize_t)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 11*32 + 16)))(tls, fd, aBuf, nBuf))
 57507  }
 57508  
 57509  func ts_pwrite(tls *libc.TLS, fd int32, aBuf uintptr, nBuf size_t, off off_t) int32 {
 57510  	if tsIsFailErrno(tls, ts+37093) != 0 {
 57511  		return -1
 57512  	}
 57513  	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))
 57514  }
 57515  
 57516  func ts_pwrite64(tls *libc.TLS, fd int32, aBuf uintptr, nBuf size_t, off sqlite3_uint64) int32 {
 57517  	if tsIsFailErrno(tls, ts+37100) != 0 {
 57518  		return -1
 57519  	}
 57520  	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))
 57521  }
 57522  
 57523  func ts_fchmod(tls *libc.TLS, fd int32, mode mode_t) int32 {
 57524  	if tsIsFail(tls) != 0 {
 57525  		return -1
 57526  	}
 57527  	return (*(*func(*libc.TLS, int32, mode_t) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 14*32 + 16)))(tls, fd, mode)
 57528  }
 57529  
 57530  func ts_fallocate(tls *libc.TLS, fd int32, off off_t, len off_t) int32 {
 57531  	if tsIsFail(tls) != 0 {
 57532  		return tsErrno(tls, ts+37116)
 57533  	}
 57534  	return (*(*func(*libc.TLS, int32, off_t, off_t) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 15*32 + 16)))(tls, fd, off, len)
 57535  }
 57536  
 57537  func ts_mmap(tls *libc.TLS, pAddr uintptr, nByte size_t, prot int32, flags int32, fd int32, iOff off_t) uintptr {
 57538  	if tsIsFailErrno(tls, ts+29040) != 0 {
 57539  		return libc.UintptrFromInt32(-1)
 57540  	}
 57541  	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)
 57542  }
 57543  
 57544  func ts_mremap(tls *libc.TLS, a uintptr, b size_t, c size_t, d int32, va uintptr) uintptr {
 57545  	bp := tls.Alloc(8)
 57546  	defer tls.Free(8)
 57547  
 57548  	var ap va_list
 57549  	_ = ap
 57550  	var pArg uintptr
 57551  	if tsIsFailErrno(tls, ts+37126) != 0 {
 57552  		return libc.UintptrFromInt32(-1)
 57553  	}
 57554  	ap = va
 57555  	pArg = libc.VaUintptr(&ap)
 57556  	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))
 57557  }
 57558  
 57559  func test_syscall_install(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 57560  	bp := tls.Alloc(20)
 57561  	defer tls.Free(20)
 57562  
 57563  	var pVfs uintptr
 57564  
 57565  	var i int32
 57566  
 57567  	if objc != 3 {
 57568  		tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+37133)
 57569  		return TCL_ERROR
 57570  	}
 57571  	if tcl.XTcl_ListObjGetElements(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp, bp+8) != 0 {
 57572  		return TCL_ERROR
 57573  	}
 57574  	pVfs = sqlite3.Xsqlite3_vfs_find(tls, uintptr(0))
 57575  
 57576  	for i = 0; i < *(*int32)(unsafe.Pointer(bp)); i++ {
 57577  		var rc int32 = tcl.XTcl_GetIndexFromObjStruct(tls, interp,
 57578  			*(*uintptr)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 8)) + uintptr(i)*8)), uintptr(unsafe.Pointer(&aSyscall)), int32(unsafe.Sizeof(TestSyscallArray{})), ts+37146, 0, bp+16)
 57579  		if rc != 0 {
 57580  			return rc
 57581  		}
 57582  		if aSyscall[*(*int32)(unsafe.Pointer(bp + 16))].FxOrig == uintptr(0) {
 57583  			aSyscall[*(*int32)(unsafe.Pointer(bp + 16))].FxOrig = (*struct {
 57584  				f func(*libc.TLS, uintptr, uintptr) sqlite3_syscall_ptr
 57585  			})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pVfs)).FxGetSystemCall})).f(tls, pVfs, aSyscall[*(*int32)(unsafe.Pointer(bp + 16))].FzName)
 57586  			(*struct {
 57587  				f func(*libc.TLS, uintptr, uintptr, sqlite3_syscall_ptr) int32
 57588  			})(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)
 57589  		}
 57590  		aSyscall[*(*int32)(unsafe.Pointer(bp + 16))].Fcustom_errno = aSyscall[*(*int32)(unsafe.Pointer(bp + 16))].Fdefault_errno
 57591  	}
 57592  
 57593  	return TCL_OK
 57594  }
 57595  
 57596  func test_syscall_uninstall(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 57597  	var pVfs uintptr
 57598  	var i int32
 57599  
 57600  	if objc != 2 {
 57601  		tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+584)
 57602  		return TCL_ERROR
 57603  	}
 57604  
 57605  	pVfs = sqlite3.Xsqlite3_vfs_find(tls, uintptr(0))
 57606  	for i = 0; aSyscall[i].FzName != 0; i++ {
 57607  		if aSyscall[i].FxOrig != 0 {
 57608  			(*struct {
 57609  				f func(*libc.TLS, uintptr, uintptr, sqlite3_syscall_ptr) int32
 57610  			})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pVfs)).FxSetSystemCall})).f(tls, pVfs, aSyscall[i].FzName, uintptr(0))
 57611  			aSyscall[i].FxOrig = uintptr(0)
 57612  		}
 57613  	}
 57614  	return TCL_OK
 57615  }
 57616  
 57617  func test_syscall_reset(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 57618  	bp := tls.Alloc(4)
 57619  	defer tls.Free(4)
 57620  
 57621  	var pVfs uintptr
 57622  	var i int32
 57623  	var rc int32
 57624  
 57625  	if objc != 2 && objc != 3 {
 57626  		tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+584)
 57627  		return TCL_ERROR
 57628  	}
 57629  
 57630  	pVfs = sqlite3.Xsqlite3_vfs_find(tls, uintptr(0))
 57631  	if objc == 2 {
 57632  		rc = (*struct {
 57633  			f func(*libc.TLS, uintptr, uintptr, sqlite3_syscall_ptr) int32
 57634  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pVfs)).FxSetSystemCall})).f(tls, pVfs, uintptr(0), uintptr(0))
 57635  		for i = 0; aSyscall[i].FzName != 0; i++ {
 57636  			aSyscall[i].FxOrig = uintptr(0)
 57637  		}
 57638  	} else {
 57639  		var zFunc uintptr = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp)
 57640  		rc = (*struct {
 57641  			f func(*libc.TLS, uintptr, uintptr, sqlite3_syscall_ptr) int32
 57642  		})(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))
 57643  		for i = 0; rc == SQLITE_OK && aSyscall[i].FzName != 0; i++ {
 57644  			if libc.Xstrlen(tls, aSyscall[i].FzName) != size_t(*(*int32)(unsafe.Pointer(bp))) {
 57645  				continue
 57646  			}
 57647  			if libc.Xmemcmp(tls, aSyscall[i].FzName, zFunc, uint64(*(*int32)(unsafe.Pointer(bp)))) != 0 {
 57648  				continue
 57649  			}
 57650  			aSyscall[i].FxOrig = uintptr(0)
 57651  		}
 57652  	}
 57653  	if rc != SQLITE_OK {
 57654  		tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3ErrName(tls, rc), -1))
 57655  		return TCL_ERROR
 57656  	}
 57657  
 57658  	tcl.XTcl_ResetResult(tls, interp)
 57659  	return TCL_OK
 57660  }
 57661  
 57662  func test_syscall_exists(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 57663  	var pVfs uintptr
 57664  	var x sqlite3_syscall_ptr
 57665  
 57666  	if objc != 3 {
 57667  		tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+584)
 57668  		return TCL_ERROR
 57669  	}
 57670  
 57671  	pVfs = sqlite3.Xsqlite3_vfs_find(tls, uintptr(0))
 57672  	x = (*struct {
 57673  		f func(*libc.TLS, uintptr, uintptr) sqlite3_syscall_ptr
 57674  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pVfs)).FxGetSystemCall})).f(tls, pVfs, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8))))
 57675  
 57676  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, libc.Bool32(libc.Bool32(x != uintptr(0)) != 0)))
 57677  	return TCL_OK
 57678  }
 57679  
 57680  func test_syscall_fault(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 57681  	bp := tls.Alloc(8)
 57682  	defer tls.Free(8)
 57683  
 57684  	*(*int32)(unsafe.Pointer(bp)) = 0
 57685  	*(*int32)(unsafe.Pointer(bp + 4)) = 0
 57686  
 57687  	if objc != 2 && objc != 4 {
 57688  		tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+37158)
 57689  		return TCL_ERROR
 57690  	}
 57691  
 57692  	if objc == 4 {
 57693  		if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp) != 0 ||
 57694  			tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+4) != 0 {
 57695  			return TCL_ERROR
 57696  		}
 57697  	}
 57698  
 57699  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, gSyscall.FnFail))
 57700  	gSyscall.FnCount = *(*int32)(unsafe.Pointer(bp))
 57701  	gSyscall.FbPersist = *(*int32)(unsafe.Pointer(bp + 4))
 57702  	gSyscall.FnFail = 0
 57703  	return TCL_OK
 57704  }
 57705  
 57706  func test_syscall_errno(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 57707  	bp := tls.Alloc(204)
 57708  	defer tls.Free(204)
 57709  
 57710  	var rc int32
 57711  
 57712  	*(*[12]Errno)(unsafe.Pointer(bp + 8)) = [12]Errno{
 57713  		{Fz: ts + 37174, Fi: EACCES},
 57714  		{Fz: ts + 37181, Fi: EINTR},
 57715  		{Fz: ts + 37187, Fi: EIO},
 57716  		{Fz: ts + 37191, Fi: EOVERFLOW},
 57717  		{Fz: ts + 37201, Fi: ENOMEM},
 57718  		{Fz: ts + 37208, Fi: EAGAIN},
 57719  		{Fz: ts + 37215, Fi: ETIMEDOUT},
 57720  		{Fz: ts + 37225, Fi: EBUSY},
 57721  		{Fz: ts + 37231, Fi: EPERM},
 57722  		{Fz: ts + 37237, Fi: EDEADLK},
 57723  		{Fz: ts + 37245, Fi: ENOLCK},
 57724  		{},
 57725  	}
 57726  
 57727  	if objc != 4 {
 57728  		tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+37252)
 57729  		return TCL_ERROR
 57730  	}
 57731  
 57732  	rc = tcl.XTcl_GetIndexFromObjStruct(tls, interp,
 57733  		*(*uintptr)(unsafe.Pointer(objv + 2*8)), uintptr(unsafe.Pointer(&aSyscall)), int32(unsafe.Sizeof(TestSyscallArray{})), ts+37146, 0, bp)
 57734  	if rc != TCL_OK {
 57735  		return rc
 57736  	}
 57737  	rc = tcl.XTcl_GetIndexFromObjStruct(tls, interp,
 57738  		*(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+8, int32(unsafe.Sizeof(Errno{})), ts+37266, 0, bp+200)
 57739  	if rc != TCL_OK {
 57740  		return rc
 57741  	}
 57742  
 57743  	aSyscall[*(*int32)(unsafe.Pointer(bp))].Fcustom_errno = (*Errno)(unsafe.Pointer(bp + 8 + uintptr(*(*int32)(unsafe.Pointer(bp + 200)))*16)).Fi
 57744  	return TCL_OK
 57745  }
 57746  
 57747  type Errno = struct {
 57748  	Fz           uintptr
 57749  	Fi           int32
 57750  	F__ccgo_pad1 [4]byte
 57751  }
 57752  
 57753  func test_syscall_list(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 57754  	var zSys uintptr
 57755  	var pVfs uintptr
 57756  	var pList uintptr
 57757  
 57758  	if objc != 2 {
 57759  		tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+584)
 57760  		return TCL_ERROR
 57761  	}
 57762  
 57763  	pVfs = sqlite3.Xsqlite3_vfs_find(tls, uintptr(0))
 57764  	pList = tcl.XTcl_NewObj(tls)
 57765  	(*Tcl_Obj)(unsafe.Pointer(pList)).FrefCount++
 57766  	for zSys = (*struct {
 57767  		f func(*libc.TLS, uintptr, uintptr) uintptr
 57768  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pVfs)).FxNextSystemCall})).f(tls, pVfs, uintptr(0)); zSys != uintptr(0); zSys = (*struct {
 57769  		f func(*libc.TLS, uintptr, uintptr) uintptr
 57770  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pVfs)).FxNextSystemCall})).f(tls, pVfs, zSys) {
 57771  		tcl.XTcl_ListObjAppendElement(tls, interp, pList, tcl.XTcl_NewStringObj(tls, zSys, -1))
 57772  	}
 57773  
 57774  	tcl.XTcl_SetObjResult(tls, interp, pList)
 57775  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 57776  		var _objPtr uintptr = pList
 57777  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 57778  			tcl.XTclFreeObj(tls, _objPtr)
 57779  		}
 57780  	}
 57781  	return TCL_OK
 57782  }
 57783  
 57784  func test_syscall_defaultvfs(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 57785  	var pVfs uintptr
 57786  
 57787  	if objc != 2 {
 57788  		tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+584)
 57789  		return TCL_ERROR
 57790  	}
 57791  
 57792  	pVfs = sqlite3.Xsqlite3_vfs_find(tls, uintptr(0))
 57793  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FzName, -1))
 57794  	return TCL_OK
 57795  }
 57796  
 57797  func ts_getpagesize(tls *libc.TLS) int32 {
 57798  	return gSyscall.Fpgsz
 57799  }
 57800  
 57801  func test_syscall_pagesize(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 57802  	bp := tls.Alloc(20)
 57803  	defer tls.Free(20)
 57804  
 57805  	var pVfs uintptr = sqlite3.Xsqlite3_vfs_find(tls, uintptr(0))
 57806  
 57807  	if objc != 3 {
 57808  		tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+37272)
 57809  		return TCL_ERROR
 57810  	}
 57811  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+16) != 0 {
 57812  		return TCL_ERROR
 57813  	}
 57814  
 57815  	if *(*int32)(unsafe.Pointer(bp + 16)) < 0 {
 57816  		if gSyscall.Forig_getpagesize != 0 {
 57817  			(*struct {
 57818  				f func(*libc.TLS, uintptr, uintptr, sqlite3_syscall_ptr) int32
 57819  			})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pVfs)).FxSetSystemCall})).f(tls, pVfs, ts+37277, gSyscall.Forig_getpagesize)
 57820  		}
 57821  	} else {
 57822  		if *(*int32)(unsafe.Pointer(bp + 16)) < 512 || *(*int32)(unsafe.Pointer(bp + 16))&(*(*int32)(unsafe.Pointer(bp + 16))-1) != 0 {
 57823  			tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+37289, 0))
 57824  			return TCL_ERROR
 57825  		}
 57826  		gSyscall.Forig_getpagesize = (*struct {
 57827  			f func(*libc.TLS, uintptr, uintptr) sqlite3_syscall_ptr
 57828  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pVfs)).FxGetSystemCall})).f(tls, pVfs, ts+37277)
 57829  		gSyscall.Fpgsz = *(*int32)(unsafe.Pointer(bp + 16))
 57830  		(*struct {
 57831  			f func(*libc.TLS, uintptr, uintptr, sqlite3_syscall_ptr) int32
 57832  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pVfs)).FxSetSystemCall})).f(tls,
 57833  			pVfs, ts+37277, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS) int32 }{ts_getpagesize})))
 57834  	}
 57835  
 57836  	return TCL_OK
 57837  }
 57838  
 57839  func test_syscall(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 57840  	bp := tls.Alloc(180)
 57841  	defer tls.Free(180)
 57842  
 57843  	*(*[10]SyscallCmd)(unsafe.Pointer(bp + 16)) = [10]SyscallCmd{
 57844  		{FzName: ts + 37307, FxCmd: *(*uintptr)(unsafe.Pointer(&struct {
 57845  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 57846  		}{test_syscall_fault}))},
 57847  		{FzName: ts + 37313, FxCmd: *(*uintptr)(unsafe.Pointer(&struct {
 57848  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 57849  		}{test_syscall_install}))},
 57850  		{FzName: ts + 37321, FxCmd: *(*uintptr)(unsafe.Pointer(&struct {
 57851  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 57852  		}{test_syscall_uninstall}))},
 57853  		{FzName: ts + 7933, FxCmd: *(*uintptr)(unsafe.Pointer(&struct {
 57854  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 57855  		}{test_syscall_reset}))},
 57856  		{FzName: ts + 37266, FxCmd: *(*uintptr)(unsafe.Pointer(&struct {
 57857  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 57858  		}{test_syscall_errno}))},
 57859  		{FzName: ts + 13516, FxCmd: *(*uintptr)(unsafe.Pointer(&struct {
 57860  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 57861  		}{test_syscall_exists}))},
 57862  		{FzName: ts + 37331, FxCmd: *(*uintptr)(unsafe.Pointer(&struct {
 57863  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 57864  		}{test_syscall_list}))},
 57865  		{FzName: ts + 37336, FxCmd: *(*uintptr)(unsafe.Pointer(&struct {
 57866  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 57867  		}{test_syscall_defaultvfs}))},
 57868  		{FzName: ts + 37347, FxCmd: *(*uintptr)(unsafe.Pointer(&struct {
 57869  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 57870  		}{test_syscall_pagesize}))},
 57871  		{},
 57872  	}
 57873  
 57874  	var rc int32
 57875  	var pVfs uintptr = sqlite3.Xsqlite3_vfs_find(tls, uintptr(0))
 57876  
 57877  	if objc < 2 {
 57878  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+32982)
 57879  		return TCL_ERROR
 57880  	}
 57881  	if (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FiVersion < 3 || (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FxSetSystemCall == uintptr(0) {
 57882  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+37356, 0))
 57883  		rc = TCL_ERROR
 57884  	} else {
 57885  		rc = tcl.XTcl_GetIndexFromObjStruct(tls, interp,
 57886  			*(*uintptr)(unsafe.Pointer(objv + 1*8)), bp+16, int32(unsafe.Sizeof(SyscallCmd{})), ts+2014, 0, bp+176)
 57887  	}
 57888  	if rc != TCL_OK {
 57889  		return rc
 57890  	}
 57891  	return (*struct {
 57892  		f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
 57893  	})(unsafe.Pointer(&struct{ uintptr }{(*SyscallCmd)(unsafe.Pointer(bp + 16 + uintptr(*(*int32)(unsafe.Pointer(bp + 176)))*16)).FxCmd})).f(tls, clientData, interp, objc, objv)
 57894  }
 57895  
 57896  type SyscallCmd = struct {
 57897  	FzName uintptr
 57898  	FxCmd  uintptr
 57899  }
 57900  
 57901  func SqlitetestSyscall_Init(tls *libc.TLS, interp uintptr) int32 {
 57902  	bp := tls.Alloc(16)
 57903  	defer tls.Free(16)
 57904  
 57905  	*(*[1]SyscallCmd)(unsafe.Pointer(bp)) = [1]SyscallCmd{
 57906  		{FzName: ts + 37392, FxCmd: *(*uintptr)(unsafe.Pointer(&struct {
 57907  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 57908  		}{test_syscall}))},
 57909  	}
 57910  	var i int32
 57911  
 57912  	for i = 0; uint64(i) < uint64(unsafe.Sizeof([1]SyscallCmd{}))/uint64(unsafe.Sizeof(SyscallCmd{})); i++ {
 57913  		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))
 57914  	}
 57915  	return TCL_OK
 57916  }
 57917  
 57918  func sqlite3TestInit(tls *libc.TLS, interp uintptr) uintptr {
 57919  	bp := tls.Alloc(80)
 57920  	defer tls.Free(80)
 57921  
 57922  	{
 57923  		libc.Xgetrlimit(tls, RLIMIT_CORE, bp)
 57924  		(*rlimit)(unsafe.Pointer(bp)).Frlim_cur = (*rlimit)(unsafe.Pointer(bp)).Frlim_max
 57925  		libc.Xsetrlimit(tls, RLIMIT_CORE, bp)
 57926  
 57927  	}
 57928  
 57929  	if tcl.XTcl_GetCommandInfo(tls, interp, ts+14267, bp+16) == 0 {
 57930  		Sqlite3_Init(tls, interp)
 57931  	}
 57932  	Md5_Init(tls, interp)
 57933  	Sqliteconfig_Init(tls, interp)
 57934  	Sqlitetest1_Init(tls, interp)
 57935  	Sqlitetest2_Init(tls, interp)
 57936  	Sqlitetest3_Init(tls, interp)
 57937  	Sqlitetest4_Init(tls, interp)
 57938  	Sqlitetest5_Init(tls, interp)
 57939  	Sqlitetest6_Init(tls, interp)
 57940  	Sqlitetest7_Init(tls, interp)
 57941  	Sqlitetest8_Init(tls, interp)
 57942  	Sqlitetest9_Init(tls, interp)
 57943  	Sqlitetestasync_Init(tls, interp)
 57944  	Sqlitetest_autoext_Init(tls, interp)
 57945  	Sqlitetest_blob_Init(tls, interp)
 57946  	Sqlitetest_demovfs_Init(tls, interp)
 57947  	Sqlitetest_func_Init(tls, interp)
 57948  	Sqlitetest_hexio_Init(tls, interp)
 57949  	Sqlitetest_init_Init(tls, interp)
 57950  	Sqlitetest_malloc_Init(tls, interp)
 57951  	Sqlitetest_mutex_Init(tls, interp)
 57952  	Sqlitetestschema_Init(tls, interp)
 57953  	Sqlitetesttclvar_Init(tls, interp)
 57954  	Sqlitetestfs_Init(tls, interp)
 57955  	SqlitetestThread_Init(tls, interp)
 57956  	SqlitetestOnefile_Init(tls)
 57957  	SqlitetestOsinst_Init(tls, interp)
 57958  	Sqlitetestbackup_Init(tls, interp)
 57959  	Sqlitetestintarray_Init(tls, interp)
 57960  	Sqlitetestvfs_Init(tls, interp)
 57961  	Sqlitetestrtree_Init(tls, interp)
 57962  	Sqlitetestrtreedoc_Init(tls, interp)
 57963  	Sqlitequota_Init(tls, interp)
 57964  	Sqlitemultiplex_Init(tls, interp)
 57965  	SqliteSuperlock_Init(tls, interp)
 57966  	SqlitetestSyscall_Init(tls, interp)
 57967  	TestSession_Init(tls, interp)
 57968  	Fts5tcl_Init(tls, interp)
 57969  	SqliteRbu_Init(tls, interp)
 57970  	Sqlitetesttcl_Init(tls, interp)
 57971  
 57972  	TestExpert_Init(tls, interp)
 57973  	Sqlitetest_window_Init(tls, interp)
 57974  	Sqlitetestvdbecov_Init(tls, interp)
 57975  
 57976  	tcl.XTcl_CreateObjCommand(tls,
 57977  		interp, ts+37405, *(*uintptr)(unsafe.Pointer(&struct {
 57978  			f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
 57979  		}{load_testfixture_extensions})), uintptr(0), uintptr(0))
 57980  	return uintptr(0)
 57981  }
 57982  
 57983  func load_testfixture_extensions(tls *libc.TLS, cd ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 57984  	var slave uintptr
 57985  	if objc != 2 {
 57986  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+37433)
 57987  		return TCL_ERROR
 57988  	}
 57989  
 57990  	slave = tcl.XTcl_GetSlave(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))))
 57991  	if !(slave != 0) {
 57992  		return TCL_ERROR
 57993  	}
 57994  
 57995  	sqlite3TestInit(tls, slave)
 57996  	return TCL_OK
 57997  }
 57998  
 57999  type tclvar_vtab1 = struct {
 58000  	Fbase   sqlite3_vtab
 58001  	Finterp uintptr
 58002  }
 58003  
 58004  type tclvar_vtab = tclvar_vtab1
 58005  type tclvar_cursor1 = struct {
 58006  	Fbase   sqlite3_vtab_cursor
 58007  	FpList1 uintptr
 58008  	FpList2 uintptr
 58009  	Fi1     int32
 58010  	Fi2     int32
 58011  }
 58012  
 58013  type tclvar_cursor = tclvar_cursor1
 58014  
 58015  func tclvarConnect(tls *libc.TLS, db uintptr, pAux uintptr, argc int32, argv uintptr, ppVtab uintptr, pzErr uintptr) int32 {
 58016  	var pVtab uintptr
 58017  	pVtab = sqlite3.Xsqlite3MallocZero(tls, uint64(unsafe.Sizeof(tclvar_vtab{})))
 58018  	if pVtab == uintptr(0) {
 58019  		return SQLITE_NOMEM
 58020  	}
 58021  	*(*uintptr)(unsafe.Pointer(ppVtab)) = pVtab
 58022  	(*tclvar_vtab)(unsafe.Pointer(pVtab)).Finterp = pAux
 58023  	sqlite3.Xsqlite3_declare_vtab(tls, db, uintptr(unsafe.Pointer(&zSchema)))
 58024  	return SQLITE_OK
 58025  }
 58026  
 58027  var zSchema = *(*[100]uint8)(unsafe.Pointer(ts + 37439))
 58028  
 58029  func tclvarDisconnect(tls *libc.TLS, pVtab uintptr) int32 {
 58030  	sqlite3.Xsqlite3_free(tls, pVtab)
 58031  	return SQLITE_OK
 58032  }
 58033  
 58034  func tclvarOpen(tls *libc.TLS, pVTab uintptr, ppCursor uintptr) int32 {
 58035  	var pCur uintptr
 58036  	pCur = sqlite3.Xsqlite3MallocZero(tls, uint64(unsafe.Sizeof(tclvar_cursor{})))
 58037  	*(*uintptr)(unsafe.Pointer(ppCursor)) = pCur
 58038  	return SQLITE_OK
 58039  }
 58040  
 58041  func tclvarClose(tls *libc.TLS, cur uintptr) int32 {
 58042  	var pCur uintptr = cur
 58043  	if (*tclvar_cursor)(unsafe.Pointer(pCur)).FpList1 != 0 {
 58044  		for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 58045  			var _objPtr uintptr = (*tclvar_cursor)(unsafe.Pointer(pCur)).FpList1
 58046  			if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 58047  				tcl.XTclFreeObj(tls, _objPtr)
 58048  			}
 58049  		}
 58050  	}
 58051  	if (*tclvar_cursor)(unsafe.Pointer(pCur)).FpList2 != 0 {
 58052  		for __ccgo1 := true; __ccgo1; __ccgo1 = 0 != 0 {
 58053  			var _objPtr uintptr = (*tclvar_cursor)(unsafe.Pointer(pCur)).FpList2
 58054  			if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 58055  				tcl.XTclFreeObj(tls, _objPtr)
 58056  			}
 58057  		}
 58058  	}
 58059  	sqlite3.Xsqlite3_free(tls, pCur)
 58060  	return SQLITE_OK
 58061  }
 58062  
 58063  func next2(tls *libc.TLS, interp uintptr, pCur uintptr, pObj uintptr) int32 {
 58064  	bp := tls.Alloc(4)
 58065  	defer tls.Free(4)
 58066  
 58067  	var p uintptr
 58068  
 58069  	if pObj != 0 {
 58070  		if !(int32((*tclvar_cursor)(unsafe.Pointer(pCur)).FpList2) != 0) {
 58071  			p = tcl.XTcl_NewStringObj(tls, ts+37539, -1)
 58072  			(*Tcl_Obj)(unsafe.Pointer(p)).FrefCount++
 58073  			tcl.XTcl_ListObjAppendElement(tls, uintptr(0), p, pObj)
 58074  			tcl.XTcl_EvalObjEx(tls, interp, p, TCL_EVAL_GLOBAL)
 58075  			for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 58076  				var _objPtr uintptr = p
 58077  				if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 58078  					tcl.XTclFreeObj(tls, _objPtr)
 58079  				}
 58080  			}
 58081  			(*tclvar_cursor)(unsafe.Pointer(pCur)).FpList2 = tcl.XTcl_GetObjResult(tls, interp)
 58082  			(*Tcl_Obj)(unsafe.Pointer((*tclvar_cursor)(unsafe.Pointer(pCur)).FpList2)).FrefCount++
 58083  
 58084  		} else {
 58085  			*(*int32)(unsafe.Pointer(bp)) = 0
 58086  			(*tclvar_cursor)(unsafe.Pointer(pCur)).Fi2++
 58087  			tcl.XTcl_ListObjLength(tls, uintptr(0), (*tclvar_cursor)(unsafe.Pointer(pCur)).FpList2, bp)
 58088  			if (*tclvar_cursor)(unsafe.Pointer(pCur)).Fi2 >= *(*int32)(unsafe.Pointer(bp)) {
 58089  				for __ccgo1 := true; __ccgo1; __ccgo1 = 0 != 0 {
 58090  					var _objPtr uintptr = (*tclvar_cursor)(unsafe.Pointer(pCur)).FpList2
 58091  					if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 58092  						tcl.XTclFreeObj(tls, _objPtr)
 58093  					}
 58094  				}
 58095  				(*tclvar_cursor)(unsafe.Pointer(pCur)).FpList2 = uintptr(0)
 58096  				(*tclvar_cursor)(unsafe.Pointer(pCur)).Fi2 = 0
 58097  				return 0
 58098  			}
 58099  		}
 58100  	}
 58101  
 58102  	return 1
 58103  }
 58104  
 58105  func tclvarNext(tls *libc.TLS, cur uintptr) int32 {
 58106  	bp := tls.Alloc(16)
 58107  	defer tls.Free(16)
 58108  
 58109  	*(*int32)(unsafe.Pointer(bp)) = 0
 58110  	var ok int32 = 0
 58111  
 58112  	var pCur uintptr = cur
 58113  	var interp uintptr = (*tclvar_vtab)(unsafe.Pointer((*sqlite3_vtab_cursor)(unsafe.Pointer(cur)).FpVtab)).Finterp
 58114  
 58115  	tcl.XTcl_ListObjLength(tls, uintptr(0), (*tclvar_cursor)(unsafe.Pointer(pCur)).FpList1, bp)
 58116  	for !(ok != 0) && (*tclvar_cursor)(unsafe.Pointer(pCur)).Fi1 < *(*int32)(unsafe.Pointer(bp)) {
 58117  		tcl.XTcl_ListObjIndex(tls, uintptr(0), (*tclvar_cursor)(unsafe.Pointer(pCur)).FpList1, (*tclvar_cursor)(unsafe.Pointer(pCur)).Fi1, bp+8)
 58118  		ok = next2(tls, interp, pCur, *(*uintptr)(unsafe.Pointer(bp + 8)))
 58119  		if !(ok != 0) {
 58120  			(*tclvar_cursor)(unsafe.Pointer(pCur)).Fi1++
 58121  		}
 58122  	}
 58123  
 58124  	return 0
 58125  }
 58126  
 58127  func tclvarFilter(tls *libc.TLS, pVtabCursor uintptr, idxNum int32, idxStr uintptr, argc int32, argv uintptr) int32 {
 58128  	var pCur uintptr = pVtabCursor
 58129  	var interp uintptr = (*tclvar_vtab)(unsafe.Pointer((*sqlite3_vtab_cursor)(unsafe.Pointer(pVtabCursor)).FpVtab)).Finterp
 58130  	var p uintptr = tcl.XTcl_NewStringObj(tls, ts+37551, -1)
 58131  
 58132  	var zEq uintptr = ts + 584
 58133  	var zMatch uintptr = ts + 584
 58134  	var zGlob uintptr = ts + 584
 58135  	var zRegexp uintptr = ts + 584
 58136  	var zLike uintptr = ts + 584
 58137  	var i int32
 58138  
 58139  	for i = 0; *(*uint8)(unsafe.Pointer(idxStr + uintptr(i))) != 0; i++ {
 58140  		switch int32(*(*uint8)(unsafe.Pointer(idxStr + uintptr(i)))) {
 58141  		case 'e':
 58142  			zEq = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8)))
 58143  			break
 58144  		case 'm':
 58145  			zMatch = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8)))
 58146  			break
 58147  		case 'g':
 58148  			zGlob = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8)))
 58149  			break
 58150  		case 'r':
 58151  			zRegexp = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8)))
 58152  			break
 58153  		case 'l':
 58154  			zLike = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8)))
 58155  			break
 58156  		default:
 58157  		}
 58158  	}
 58159  
 58160  	(*Tcl_Obj)(unsafe.Pointer(p)).FrefCount++
 58161  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), p, tcl.XTcl_NewStringObj(tls, zEq, -1))
 58162  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), p, tcl.XTcl_NewStringObj(tls, zMatch, -1))
 58163  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), p, tcl.XTcl_NewStringObj(tls, zGlob, -1))
 58164  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), p, tcl.XTcl_NewStringObj(tls, zRegexp, -1))
 58165  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), p, tcl.XTcl_NewStringObj(tls, zLike, -1))
 58166  
 58167  	tcl.XTcl_EvalObjEx(tls, interp, p, TCL_EVAL_GLOBAL)
 58168  	if (*tclvar_cursor)(unsafe.Pointer(pCur)).FpList1 != 0 {
 58169  		for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 58170  			var _objPtr uintptr = (*tclvar_cursor)(unsafe.Pointer(pCur)).FpList1
 58171  			if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 58172  				tcl.XTclFreeObj(tls, _objPtr)
 58173  			}
 58174  		}
 58175  	}
 58176  	if (*tclvar_cursor)(unsafe.Pointer(pCur)).FpList2 != 0 {
 58177  		for __ccgo1 := true; __ccgo1; __ccgo1 = 0 != 0 {
 58178  			var _objPtr uintptr = (*tclvar_cursor)(unsafe.Pointer(pCur)).FpList2
 58179  			if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 58180  				tcl.XTclFreeObj(tls, _objPtr)
 58181  			}
 58182  		}
 58183  		(*tclvar_cursor)(unsafe.Pointer(pCur)).FpList2 = uintptr(0)
 58184  	}
 58185  	(*tclvar_cursor)(unsafe.Pointer(pCur)).Fi1 = 0
 58186  	(*tclvar_cursor)(unsafe.Pointer(pCur)).Fi2 = 0
 58187  	(*tclvar_cursor)(unsafe.Pointer(pCur)).FpList1 = tcl.XTcl_GetObjResult(tls, interp)
 58188  	(*Tcl_Obj)(unsafe.Pointer((*tclvar_cursor)(unsafe.Pointer(pCur)).FpList1)).FrefCount++
 58189  
 58190  	for __ccgo2 := true; __ccgo2; __ccgo2 = 0 != 0 {
 58191  		var _objPtr uintptr = p
 58192  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 58193  			tcl.XTclFreeObj(tls, _objPtr)
 58194  		}
 58195  	}
 58196  	return tclvarNext(tls, pVtabCursor)
 58197  }
 58198  
 58199  func tclvarColumn(tls *libc.TLS, cur uintptr, ctx uintptr, i int32) int32 {
 58200  	bp := tls.Alloc(32)
 58201  	defer tls.Free(32)
 58202  
 58203  	var z1 uintptr
 58204  	var z2 uintptr = ts + 584
 58205  	var pCur uintptr = cur
 58206  	var interp uintptr = (*tclvar_vtab)(unsafe.Pointer((*sqlite3_vtab_cursor)(unsafe.Pointer(cur)).FpVtab)).Finterp
 58207  
 58208  	tcl.XTcl_ListObjIndex(tls, interp, (*tclvar_cursor)(unsafe.Pointer(pCur)).FpList1, (*tclvar_cursor)(unsafe.Pointer(pCur)).Fi1, bp+16)
 58209  	tcl.XTcl_ListObjIndex(tls, interp, (*tclvar_cursor)(unsafe.Pointer(pCur)).FpList2, (*tclvar_cursor)(unsafe.Pointer(pCur)).Fi2, bp+24)
 58210  	z1 = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(bp + 16)))
 58211  	if *(*uintptr)(unsafe.Pointer(bp + 24)) != 0 {
 58212  		z2 = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(bp + 24)))
 58213  	}
 58214  	switch i {
 58215  	case 0:
 58216  		{
 58217  			sqlite3.Xsqlite3_result_text(tls, ctx, z1, -1, libc.UintptrFromInt32(-1))
 58218  			break
 58219  
 58220  		}
 58221  	case 1:
 58222  		{
 58223  			sqlite3.Xsqlite3_result_text(tls, ctx, z2, -1, libc.UintptrFromInt32(-1))
 58224  			break
 58225  
 58226  		}
 58227  	case 2:
 58228  		{
 58229  			var pVal uintptr = tcl.XTcl_GetVar2Ex(tls, interp, z1, func() uintptr {
 58230  				if *(*uint8)(unsafe.Pointer(z2)) != 0 {
 58231  					return z2
 58232  				}
 58233  				return uintptr(0)
 58234  			}(), TCL_GLOBAL_ONLY)
 58235  			sqlite3.Xsqlite3_result_text(tls, ctx, tcl.XTcl_GetString(tls, pVal), -1, libc.UintptrFromInt32(-1))
 58236  			break
 58237  
 58238  		}
 58239  	case 3:
 58240  		{
 58241  			var z3 uintptr
 58242  			if *(*uintptr)(unsafe.Pointer(bp + 24)) != 0 {
 58243  				z3 = sqlite3.Xsqlite3_mprintf(tls, ts+37569, libc.VaList(bp, z1, z2))
 58244  				sqlite3.Xsqlite3_result_text(tls, ctx, z3, -1, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{sqlite3.Xsqlite3_free})))
 58245  			} else {
 58246  				sqlite3.Xsqlite3_result_text(tls, ctx, z1, -1, libc.UintptrFromInt32(-1))
 58247  			}
 58248  			break
 58249  
 58250  		}
 58251  	}
 58252  	return SQLITE_OK
 58253  }
 58254  
 58255  func tclvarRowid(tls *libc.TLS, cur uintptr, pRowid uintptr) int32 {
 58256  	*(*sqlite_int64)(unsafe.Pointer(pRowid)) = int64(0)
 58257  	return SQLITE_OK
 58258  }
 58259  
 58260  func tclvarEof(tls *libc.TLS, cur uintptr) int32 {
 58261  	var pCur uintptr = cur
 58262  	return func() int32 {
 58263  		if (*tclvar_cursor)(unsafe.Pointer(pCur)).FpList2 != 0 {
 58264  			return 0
 58265  		}
 58266  		return 1
 58267  	}()
 58268  }
 58269  
 58270  func tclvarAddToIdxstr(tls *libc.TLS, zStr uintptr, x uint8) int32 {
 58271  	var i int32
 58272  	for i = 0; *(*uint8)(unsafe.Pointer(zStr + uintptr(i))) != 0; i++ {
 58273  		if int32(*(*uint8)(unsafe.Pointer(zStr + uintptr(i)))) == int32(x) {
 58274  			return 1
 58275  		}
 58276  	}
 58277  	*(*uint8)(unsafe.Pointer(zStr + uintptr(i))) = x
 58278  	*(*uint8)(unsafe.Pointer(zStr + uintptr(i+1))) = uint8(0)
 58279  	return 0
 58280  }
 58281  
 58282  func tclvarSetOmit(tls *libc.TLS, interp uintptr) int32 {
 58283  	bp := tls.Alloc(4)
 58284  	defer tls.Free(4)
 58285  
 58286  	var rc int32
 58287  	*(*int32)(unsafe.Pointer(bp)) = 0
 58288  	var pRes uintptr
 58289  	rc = tcl.XTcl_Eval(tls, interp,
 58290  		ts+37576)
 58291  	if rc == TCL_OK {
 58292  		pRes = tcl.XTcl_GetObjResult(tls, interp)
 58293  		rc = tcl.XTcl_GetBooleanFromObj(tls, uintptr(0), pRes, bp)
 58294  	}
 58295  	return libc.Bool32(rc == TCL_OK && *(*int32)(unsafe.Pointer(bp)) != 0)
 58296  }
 58297  
 58298  func tclvarBestIndex(tls *libc.TLS, tab uintptr, pIdxInfo uintptr) int32 {
 58299  	var pTab uintptr = tab
 58300  	var ii int32
 58301  	var zStr uintptr = sqlite3.Xsqlite3_malloc(tls, 32)
 58302  	var iStr int32 = 0
 58303  
 58304  	if zStr == uintptr(0) {
 58305  		return SQLITE_NOMEM
 58306  	}
 58307  	*(*uint8)(unsafe.Pointer(zStr)) = uint8(0)
 58308  
 58309  	for ii = 0; ii < (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnConstraint; ii++ {
 58310  		var pCons uintptr = (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint + uintptr(ii)*12
 58311  		var pUsage uintptr
 58312  
 58313  		pUsage = (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(ii)*8
 58314  		if (*sqlite3_index_constraint)(unsafe.Pointer(pCons)).Fusable != 0 {
 58315  			if int32((*sqlite3_index_constraint)(unsafe.Pointer(pCons)).Fop) == SQLITE_INDEX_CONSTRAINT_EQ && (*sqlite3_index_constraint)(unsafe.Pointer(pCons)).FiColumn == 0 {
 58316  				if 0 == tclvarAddToIdxstr(tls, zStr, uint8('e')) {
 58317  					(*sqlite3_index_constraint_usage)(unsafe.Pointer(pUsage)).FargvIndex = libc.PreIncInt32(&iStr, 1)
 58318  					(*sqlite3_index_constraint_usage)(unsafe.Pointer(pUsage)).Fomit = uint8(0)
 58319  				}
 58320  			}
 58321  
 58322  			if int32((*sqlite3_index_constraint)(unsafe.Pointer(pCons)).Fop) == SQLITE_INDEX_CONSTRAINT_MATCH && (*sqlite3_index_constraint)(unsafe.Pointer(pCons)).FiColumn == 0 {
 58323  				if 0 == tclvarAddToIdxstr(tls, zStr, uint8('m')) {
 58324  					(*sqlite3_index_constraint_usage)(unsafe.Pointer(pUsage)).FargvIndex = libc.PreIncInt32(&iStr, 1)
 58325  					(*sqlite3_index_constraint_usage)(unsafe.Pointer(pUsage)).Fomit = uint8(1)
 58326  				}
 58327  			}
 58328  
 58329  			if int32((*sqlite3_index_constraint)(unsafe.Pointer(pCons)).Fop) == SQLITE_INDEX_CONSTRAINT_GLOB && (*sqlite3_index_constraint)(unsafe.Pointer(pCons)).FiColumn == 2 {
 58330  				if 0 == tclvarAddToIdxstr(tls, zStr, uint8('g')) {
 58331  					(*sqlite3_index_constraint_usage)(unsafe.Pointer(pUsage)).FargvIndex = libc.PreIncInt32(&iStr, 1)
 58332  					(*sqlite3_index_constraint_usage)(unsafe.Pointer(pUsage)).Fomit = uint8(tclvarSetOmit(tls, (*tclvar_vtab)(unsafe.Pointer(pTab)).Finterp))
 58333  				}
 58334  			}
 58335  
 58336  			if int32((*sqlite3_index_constraint)(unsafe.Pointer(pCons)).Fop) == SQLITE_INDEX_CONSTRAINT_REGEXP && (*sqlite3_index_constraint)(unsafe.Pointer(pCons)).FiColumn == 2 {
 58337  				if 0 == tclvarAddToIdxstr(tls, zStr, uint8('r')) {
 58338  					(*sqlite3_index_constraint_usage)(unsafe.Pointer(pUsage)).FargvIndex = libc.PreIncInt32(&iStr, 1)
 58339  					(*sqlite3_index_constraint_usage)(unsafe.Pointer(pUsage)).Fomit = uint8(tclvarSetOmit(tls, (*tclvar_vtab)(unsafe.Pointer(pTab)).Finterp))
 58340  				}
 58341  			}
 58342  
 58343  			if int32((*sqlite3_index_constraint)(unsafe.Pointer(pCons)).Fop) == SQLITE_INDEX_CONSTRAINT_LIKE && (*sqlite3_index_constraint)(unsafe.Pointer(pCons)).FiColumn == 2 {
 58344  				if 0 == tclvarAddToIdxstr(tls, zStr, uint8('l')) {
 58345  					(*sqlite3_index_constraint_usage)(unsafe.Pointer(pUsage)).FargvIndex = libc.PreIncInt32(&iStr, 1)
 58346  					(*sqlite3_index_constraint_usage)(unsafe.Pointer(pUsage)).Fomit = uint8(tclvarSetOmit(tls, (*tclvar_vtab)(unsafe.Pointer(pTab)).Finterp))
 58347  				}
 58348  			}
 58349  		}
 58350  	}
 58351  	(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxStr = zStr
 58352  	(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FneedToFreeIdxStr = 1
 58353  
 58354  	return SQLITE_OK
 58355  }
 58356  
 58357  func tclvarUpdate(tls *libc.TLS, tab uintptr, argc int32, argv uintptr, pRowid uintptr) int32 {
 58358  	var pTab uintptr = tab
 58359  	if argc == 1 {
 58360  		var zVar uintptr = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 58361  		tcl.XTcl_UnsetVar2(tls, (*tclvar_vtab)(unsafe.Pointer(pTab)).Finterp, zVar, uintptr(0), TCL_GLOBAL_ONLY)
 58362  		return SQLITE_OK
 58363  	}
 58364  	if sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(argv))) == SQLITE_NULL {
 58365  		var zValue uintptr = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + 4*8)))
 58366  		var zName uintptr
 58367  		if sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(argv + 5*8))) != SQLITE_TEXT {
 58368  			(*sqlite3_vtab)(unsafe.Pointer(tab)).FzErrMsg = sqlite3.Xsqlite3_mprintf(tls, ts+37637, 0)
 58369  			return SQLITE_ERROR
 58370  		}
 58371  		zName = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + 5*8)))
 58372  		if zValue != 0 {
 58373  			tcl.XTcl_SetVar2(tls, (*tclvar_vtab)(unsafe.Pointer(pTab)).Finterp, zName, uintptr(0), zValue, TCL_GLOBAL_ONLY)
 58374  		} else {
 58375  			tcl.XTcl_UnsetVar2(tls, (*tclvar_vtab)(unsafe.Pointer(pTab)).Finterp, zName, uintptr(0), TCL_GLOBAL_ONLY)
 58376  		}
 58377  		return SQLITE_OK
 58378  	}
 58379  	if sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(argv))) == SQLITE_TEXT &&
 58380  		sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8))) == SQLITE_TEXT {
 58381  		var zOldName uintptr = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 58382  		var zNewName uintptr = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 58383  		var zValue uintptr = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + 4*8)))
 58384  
 58385  		if libc.Xstrcmp(tls, zOldName, zNewName) != 0 || zValue == uintptr(0) {
 58386  			tcl.XTcl_UnsetVar2(tls, (*tclvar_vtab)(unsafe.Pointer(pTab)).Finterp, zOldName, uintptr(0), TCL_GLOBAL_ONLY)
 58387  		}
 58388  		if zValue != uintptr(0) {
 58389  			tcl.XTcl_SetVar2(tls, (*tclvar_vtab)(unsafe.Pointer(pTab)).Finterp, zNewName, uintptr(0), zValue, TCL_GLOBAL_ONLY)
 58390  		}
 58391  		return SQLITE_OK
 58392  	}
 58393  	(*sqlite3_vtab)(unsafe.Pointer(tab)).FzErrMsg = sqlite3.Xsqlite3_mprintf(tls, ts+37672, 0)
 58394  	return SQLITE_ERROR
 58395  }
 58396  
 58397  var tclvarModule = sqlite3_module{
 58398  	FxCreate:     0,
 58399  	FxConnect:    0,
 58400  	FxBestIndex:  0,
 58401  	FxDisconnect: 0,
 58402  	FxDestroy:    0,
 58403  	FxOpen:       0,
 58404  	FxClose:      0,
 58405  	FxFilter:     0,
 58406  	FxNext:       0,
 58407  	FxEof:        0,
 58408  	FxColumn:     0,
 58409  	FxRowid:      0,
 58410  	FxUpdate:     0,
 58411  }
 58412  
 58413  func register_tclvar_module(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 58414  	bp := tls.Alloc(8)
 58415  	defer tls.Free(8)
 58416  
 58417  	var rc int32 = TCL_OK
 58418  
 58419  	if objc != 2 {
 58420  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2050)
 58421  		return TCL_ERROR
 58422  	}
 58423  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 58424  		return TCL_ERROR
 58425  	}
 58426  	sqlite3.Xsqlite3_create_module(tls, *(*uintptr)(unsafe.Pointer(bp)), ts+29859, uintptr(unsafe.Pointer(&tclvarModule)), interp)
 58427  	rc = tcl.XTcl_Eval(tls, interp,
 58428  		ts+37703)
 58429  	return rc
 58430  }
 58431  
 58432  func Sqlitetesttclvar_Init(tls *libc.TLS, interp uintptr) int32 {
 58433  	var i int32
 58434  	for i = 0; uint64(i) < uint64(unsafe.Sizeof(aObjCmd13))/uint64(unsafe.Sizeof(struct {
 58435  		FzName      uintptr
 58436  		FxProc      uintptr
 58437  		FclientData uintptr
 58438  	}{})); i++ {
 58439  		tcl.XTcl_CreateObjCommand(tls, interp, aObjCmd13[i].FzName,
 58440  			aObjCmd13[i].FxProc, aObjCmd13[i].FclientData, uintptr(0))
 58441  	}
 58442  	return TCL_OK
 58443  }
 58444  
 58445  var aObjCmd13 = [1]struct {
 58446  	FzName      uintptr
 58447  	FxProc      uintptr
 58448  	FclientData uintptr
 58449  }{
 58450  	{FzName: ts + 38239, FxProc: 0},
 58451  }
 58452  
 58453  type SqlThread1 = struct {
 58454  	Fparent   Tcl_ThreadId
 58455  	Finterp   uintptr
 58456  	FzScript  uintptr
 58457  	FzVarname uintptr
 58458  }
 58459  
 58460  type SqlThread = SqlThread1
 58461  
 58462  type EvalEvent1 = struct {
 58463  	Fbase    Tcl_Event
 58464  	FzScript uintptr
 58465  	Finterp  uintptr
 58466  }
 58467  
 58468  type EvalEvent = EvalEvent1
 58469  
 58470  func tclScriptEvent(tls *libc.TLS, evPtr uintptr, flags int32) int32 {
 58471  	var rc int32
 58472  	var p uintptr = evPtr
 58473  	rc = tcl.XTcl_Eval(tls, (*EvalEvent)(unsafe.Pointer(p)).Finterp, (*EvalEvent)(unsafe.Pointer(p)).FzScript)
 58474  	if rc != TCL_OK {
 58475  		tcl.XTcl_BackgroundError(tls, (*EvalEvent)(unsafe.Pointer(p)).Finterp)
 58476  	}
 58477  	_ = flags
 58478  	return 1
 58479  }
 58480  
 58481  func postToParent(tls *libc.TLS, p uintptr, pScript uintptr) {
 58482  	bp := tls.Alloc(4)
 58483  	defer tls.Free(4)
 58484  
 58485  	var pEvent uintptr
 58486  	var zMsg uintptr
 58487  
 58488  	zMsg = tcl.XTcl_GetStringFromObj(tls, pScript, bp)
 58489  	pEvent = tcl.XTcl_Alloc(tls, uint32(uint64(unsafe.Sizeof(EvalEvent{}))+uint64(*(*int32)(unsafe.Pointer(bp)))+uint64(1)))
 58490  	(*EvalEvent)(unsafe.Pointer(pEvent)).Fbase.FnextPtr = uintptr(0)
 58491  	(*EvalEvent)(unsafe.Pointer(pEvent)).Fbase.Fproc = *(*uintptr)(unsafe.Pointer(&struct {
 58492  		f func(*libc.TLS, uintptr, int32) int32
 58493  	}{tclScriptEvent}))
 58494  	(*EvalEvent)(unsafe.Pointer(pEvent)).FzScript = pEvent + 1*32
 58495  	libc.Xmemcpy(tls, (*EvalEvent)(unsafe.Pointer(pEvent)).FzScript, zMsg, uint64(*(*int32)(unsafe.Pointer(bp))+1))
 58496  	(*EvalEvent)(unsafe.Pointer(pEvent)).Finterp = (*SqlThread)(unsafe.Pointer(p)).Finterp
 58497  
 58498  	tcl.XTcl_ThreadQueueEvent(tls, (*SqlThread)(unsafe.Pointer(p)).Fparent, pEvent, TCL_QUEUE_TAIL)
 58499  	tcl.XTcl_ThreadAlert(tls, (*SqlThread)(unsafe.Pointer(p)).Fparent)
 58500  }
 58501  
 58502  func tclScriptThread(tls *libc.TLS, pSqlThread ClientData) {
 58503  	var interp uintptr
 58504  	var pRes uintptr
 58505  	var pList uintptr
 58506  	var rc int32
 58507  	var p uintptr = pSqlThread
 58508  
 58509  	interp = tcl.XTcl_CreateInterp(tls)
 58510  	tcl.XTcl_CreateObjCommand(tls, interp, ts+38262, *(*uintptr)(unsafe.Pointer(&struct {
 58511  		f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
 58512  	}{clock_seconds_proc})), uintptr(0), uintptr(0))
 58513  	tcl.XTcl_CreateObjCommand(tls, interp, ts+38276, *(*uintptr)(unsafe.Pointer(&struct {
 58514  		f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
 58515  	}{sqlthread_proc})), pSqlThread, uintptr(0))
 58516  	tcl.XTcl_CreateObjCommand(tls, interp, ts+38286, *(*uintptr)(unsafe.Pointer(&struct {
 58517  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 58518  	}{blocking_step_proc})), uintptr(0), uintptr(0))
 58519  	tcl.XTcl_CreateObjCommand(tls, interp,
 58520  		ts+38308, *(*uintptr)(unsafe.Pointer(&struct {
 58521  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 58522  		}{blocking_prepare_v2_proc})), uintptr(1), uintptr(0))
 58523  	tcl.XTcl_CreateObjCommand(tls, interp,
 58524  		ts+38336, *(*uintptr)(unsafe.Pointer(&struct {
 58525  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 58526  		}{blocking_prepare_v2_proc})), uintptr(0), uintptr(0))
 58527  	Sqlitetest1_Init(tls, interp)
 58528  	Sqlitetest_mutex_Init(tls, interp)
 58529  	Sqlite3_Init(tls, interp)
 58530  
 58531  	rc = tcl.XTcl_Eval(tls, interp, (*SqlThread)(unsafe.Pointer(p)).FzScript)
 58532  	pRes = tcl.XTcl_GetObjResult(tls, interp)
 58533  	pList = tcl.XTcl_NewObj(tls)
 58534  	(*Tcl_Obj)(unsafe.Pointer(pList)).FrefCount++
 58535  	(*Tcl_Obj)(unsafe.Pointer(pRes)).FrefCount++
 58536  
 58537  	if rc != TCL_OK {
 58538  		tcl.XTcl_ListObjAppendElement(tls, interp, pList, tcl.XTcl_NewStringObj(tls, ts+9674, -1))
 58539  		tcl.XTcl_ListObjAppendElement(tls, interp, pList, pRes)
 58540  		postToParent(tls, p, pList)
 58541  		for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 58542  			var _objPtr uintptr = pList
 58543  			if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 58544  				tcl.XTclFreeObj(tls, _objPtr)
 58545  			}
 58546  		}
 58547  		pList = tcl.XTcl_NewObj(tls)
 58548  	}
 58549  
 58550  	tcl.XTcl_ListObjAppendElement(tls, interp, pList, tcl.XTcl_NewStringObj(tls, ts+38367, -1))
 58551  	tcl.XTcl_ListObjAppendElement(tls, interp, pList, tcl.XTcl_NewStringObj(tls, (*SqlThread)(unsafe.Pointer(p)).FzVarname, -1))
 58552  	tcl.XTcl_ListObjAppendElement(tls, interp, pList, pRes)
 58553  	postToParent(tls, p, pList)
 58554  
 58555  	tcl.XTcl_Free(tls, p)
 58556  	for __ccgo1 := true; __ccgo1; __ccgo1 = 0 != 0 {
 58557  		var _objPtr uintptr = pList
 58558  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 58559  			tcl.XTclFreeObj(tls, _objPtr)
 58560  		}
 58561  	}
 58562  	for __ccgo2 := true; __ccgo2; __ccgo2 = 0 != 0 {
 58563  		var _objPtr uintptr = pRes
 58564  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 58565  			tcl.XTclFreeObj(tls, _objPtr)
 58566  		}
 58567  	}
 58568  	tcl.XTcl_DeleteInterp(tls, interp)
 58569  	for tcl.XTcl_DoOneEvent(tls, libc.CplInt32(int32(1)<<1)|int32(1)<<1) != 0 {
 58570  	}
 58571  	tcl.XTcl_ExitThread(tls, 0)
 58572  
 58573  }
 58574  
 58575  func sqlthread_spawn(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 58576  	bp := tls.Alloc(32)
 58577  	defer tls.Free(32)
 58578  
 58579  	var pNew uintptr
 58580  	var rc int32
 58581  
 58582  	var zVarname uintptr
 58583  
 58584  	var zScript uintptr
 58585  
 58586  	var nStack int32 = 0
 58587  	var flags int32 = 0000
 58588  
 58589  	_ = clientData
 58590  	_ = objc
 58591  
 58592  	zVarname = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+16)
 58593  	zScript = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+20)
 58594  
 58595  	pNew = tcl.XTcl_Alloc(tls, uint32(uint64(unsafe.Sizeof(SqlThread{}))+uint64(*(*int32)(unsafe.Pointer(bp + 16)))+uint64(*(*int32)(unsafe.Pointer(bp + 20)))+uint64(2)))
 58596  	(*SqlThread)(unsafe.Pointer(pNew)).FzVarname = pNew + 1*32
 58597  	(*SqlThread)(unsafe.Pointer(pNew)).FzScript = (*SqlThread)(unsafe.Pointer(pNew)).FzVarname + uintptr(*(*int32)(unsafe.Pointer(bp + 16))+1)
 58598  	libc.Xmemcpy(tls, (*SqlThread)(unsafe.Pointer(pNew)).FzVarname, zVarname, uint64(*(*int32)(unsafe.Pointer(bp + 16))+1))
 58599  	libc.Xmemcpy(tls, (*SqlThread)(unsafe.Pointer(pNew)).FzScript, zScript, uint64(*(*int32)(unsafe.Pointer(bp + 20))+1))
 58600  	(*SqlThread)(unsafe.Pointer(pNew)).Fparent = tcl.XTcl_GetCurrentThread(tls)
 58601  	(*SqlThread)(unsafe.Pointer(pNew)).Finterp = interp
 58602  
 58603  	rc = tcl.XTcl_CreateThread(tls, bp+24, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, ClientData) }{tclScriptThread})), pNew, nStack, flags)
 58604  	if rc != TCL_OK {
 58605  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+38371, 0))
 58606  		tcl.XTcl_Free(tls, pNew)
 58607  		return TCL_ERROR
 58608  	}
 58609  
 58610  	return TCL_OK
 58611  }
 58612  
 58613  func sqlthread_parent(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 58614  	bp := tls.Alloc(20)
 58615  	defer tls.Free(20)
 58616  
 58617  	var pEvent uintptr
 58618  	var zMsg uintptr
 58619  
 58620  	var p uintptr = clientData
 58621  
 58622  	_ = objc
 58623  
 58624  	if p == uintptr(0) {
 58625  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+38399, 0))
 58626  		return TCL_ERROR
 58627  	}
 58628  
 58629  	zMsg = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+16)
 58630  	pEvent = tcl.XTcl_Alloc(tls, uint32(uint64(unsafe.Sizeof(EvalEvent{}))+uint64(*(*int32)(unsafe.Pointer(bp + 16)))+uint64(1)))
 58631  	(*EvalEvent)(unsafe.Pointer(pEvent)).Fbase.FnextPtr = uintptr(0)
 58632  	(*EvalEvent)(unsafe.Pointer(pEvent)).Fbase.Fproc = *(*uintptr)(unsafe.Pointer(&struct {
 58633  		f func(*libc.TLS, uintptr, int32) int32
 58634  	}{tclScriptEvent}))
 58635  	(*EvalEvent)(unsafe.Pointer(pEvent)).FzScript = pEvent + 1*32
 58636  	libc.Xmemcpy(tls, (*EvalEvent)(unsafe.Pointer(pEvent)).FzScript, zMsg, uint64(*(*int32)(unsafe.Pointer(bp + 16))+1))
 58637  	(*EvalEvent)(unsafe.Pointer(pEvent)).Finterp = (*SqlThread)(unsafe.Pointer(p)).Finterp
 58638  	tcl.XTcl_ThreadQueueEvent(tls, (*SqlThread)(unsafe.Pointer(p)).Fparent, pEvent, TCL_QUEUE_TAIL)
 58639  	tcl.XTcl_ThreadAlert(tls, (*SqlThread)(unsafe.Pointer(p)).Fparent)
 58640  
 58641  	return TCL_OK
 58642  }
 58643  
 58644  func xBusy(tls *libc.TLS, pArg uintptr, nBusy int32) int32 {
 58645  	_ = pArg
 58646  	_ = nBusy
 58647  	sqlite3.Xsqlite3_sleep(tls, 50)
 58648  	return 1
 58649  }
 58650  
 58651  func sqlthread_open(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 58652  	bp := tls.Alloc(124)
 58653  	defer tls.Free(124)
 58654  
 58655  	var zFilename uintptr
 58656  
 58657  	_ = clientData
 58658  	_ = objc
 58659  
 58660  	zFilename = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 58661  	sqlite3.Xsqlite3_open(tls, zFilename, bp+16)
 58662  	Md5_Register(tls, *(*uintptr)(unsafe.Pointer(bp + 16)), uintptr(0), uintptr(0))
 58663  	sqlite3.Xsqlite3_busy_handler(tls, *(*uintptr)(unsafe.Pointer(bp + 16)), *(*uintptr)(unsafe.Pointer(&struct {
 58664  		f func(*libc.TLS, uintptr, int32) int32
 58665  	}{xBusy})), uintptr(0))
 58666  
 58667  	if sqlite3TestMakePointerStr(tls, interp, bp+24, *(*uintptr)(unsafe.Pointer(bp + 16))) != 0 {
 58668  		return TCL_ERROR
 58669  	}
 58670  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, bp+24, 0))
 58671  
 58672  	return TCL_OK
 58673  }
 58674  
 58675  func sqlthread_id(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 58676  	var id Tcl_ThreadId = tcl.XTcl_GetCurrentThread(tls)
 58677  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, int32(id)))
 58678  	_ = clientData
 58679  	_ = objc
 58680  	_ = objv
 58681  	return TCL_OK
 58682  }
 58683  
 58684  func sqlthread_proc(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 58685  	bp := tls.Alloc(164)
 58686  	defer tls.Free(164)
 58687  
 58688  	*(*[5]struct {
 58689  		FzName       uintptr
 58690  		FxProc       uintptr
 58691  		FnArg        int32
 58692  		F__ccgo_pad1 [4]byte
 58693  		FzUsage      uintptr
 58694  	})(unsafe.Pointer(bp)) = [5]struct {
 58695  		FzName       uintptr
 58696  		FxProc       uintptr
 58697  		FnArg        int32
 58698  		F__ccgo_pad1 [4]byte
 58699  		FzUsage      uintptr
 58700  	}{
 58701  		{FzName: ts + 38416, FxProc: *(*uintptr)(unsafe.Pointer(&struct {
 58702  			f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
 58703  		}{sqlthread_parent})), FnArg: 1, FzUsage: ts + 10187},
 58704  		{FzName: ts + 38423, FxProc: *(*uintptr)(unsafe.Pointer(&struct {
 58705  			f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
 58706  		}{sqlthread_spawn})), FnArg: 2, FzUsage: ts + 38429},
 58707  		{FzName: ts + 37033, FxProc: *(*uintptr)(unsafe.Pointer(&struct {
 58708  			f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
 58709  		}{sqlthread_open})), FnArg: 1, FzUsage: ts + 38444},
 58710  		{FzName: ts + 38451, FxProc: *(*uintptr)(unsafe.Pointer(&struct {
 58711  			f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
 58712  		}{sqlthread_id})), FzUsage: ts + 584},
 58713  		{},
 58714  	}
 58715  	var pSub uintptr
 58716  	var rc int32
 58717  
 58718  	if objc < 2 {
 58719  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2523)
 58720  		return TCL_ERROR
 58721  	}
 58722  
 58723  	rc = tcl.XTcl_GetIndexFromObjStruct(tls,
 58724  		interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp, int32(unsafe.Sizeof(struct {
 58725  			FzName       uintptr
 58726  			FxProc       uintptr
 58727  			FnArg        int32
 58728  			F__ccgo_pad1 [4]byte
 58729  			FzUsage      uintptr
 58730  		}{})), ts+2014, 0, bp+160)
 58731  	if rc != TCL_OK {
 58732  		return rc
 58733  	}
 58734  	pSub = bp + uintptr(*(*int32)(unsafe.Pointer(bp + 160)))*32
 58735  
 58736  	if objc < (*struct {
 58737  		FzName       uintptr
 58738  		FxProc       uintptr
 58739  		FnArg        int32
 58740  		F__ccgo_pad1 [4]byte
 58741  		FzUsage      uintptr
 58742  	})(unsafe.Pointer(pSub)).FnArg+2 {
 58743  		tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, (*struct {
 58744  			FzName       uintptr
 58745  			FxProc       uintptr
 58746  			FnArg        int32
 58747  			F__ccgo_pad1 [4]byte
 58748  			FzUsage      uintptr
 58749  		})(unsafe.Pointer(pSub)).FzUsage)
 58750  		return TCL_ERROR
 58751  	}
 58752  
 58753  	return (*struct {
 58754  		f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
 58755  	})(unsafe.Pointer(&struct{ uintptr }{(*struct {
 58756  		FzName       uintptr
 58757  		FxProc       uintptr
 58758  		FnArg        int32
 58759  		F__ccgo_pad1 [4]byte
 58760  		FzUsage      uintptr
 58761  	})(unsafe.Pointer(pSub)).FxProc})).f(tls, clientData, interp, objc, objv)
 58762  }
 58763  
 58764  func clock_seconds_proc(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 58765  	bp := tls.Alloc(16)
 58766  	defer tls.Free(16)
 58767  
 58768  	tcl.XTcl_GetTime(tls, bp)
 58769  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, int32((*Tcl_Time)(unsafe.Pointer(bp)).Fsec)))
 58770  	_ = clientData
 58771  	_ = objc
 58772  	_ = objv
 58773  	return TCL_OK
 58774  }
 58775  
 58776  type UnlockNotification1 = struct {
 58777  	Ffired       int32
 58778  	F__ccgo_pad1 [4]byte
 58779  	Fcond        pthread_cond_t
 58780  	Fmutex       pthread_mutex_t
 58781  }
 58782  
 58783  type UnlockNotification = UnlockNotification1
 58784  
 58785  func unlock_notify_cb(tls *libc.TLS, apArg uintptr, nArg int32) {
 58786  	var i int32
 58787  	for i = 0; i < nArg; i++ {
 58788  		var p uintptr = *(*uintptr)(unsafe.Pointer(apArg + uintptr(i)*8))
 58789  		libc.Xpthread_mutex_lock(tls, p+56)
 58790  		(*UnlockNotification)(unsafe.Pointer(p)).Ffired = 1
 58791  		libc.Xpthread_cond_signal(tls, p+8)
 58792  		libc.Xpthread_mutex_unlock(tls, p+56)
 58793  	}
 58794  }
 58795  
 58796  func wait_for_unlock_notify(tls *libc.TLS, db uintptr) int32 {
 58797  	bp := tls.Alloc(96)
 58798  	defer tls.Free(96)
 58799  
 58800  	var rc int32
 58801  
 58802  	(*UnlockNotification)(unsafe.Pointer(bp)).Ffired = 0
 58803  	libc.Xpthread_mutex_init(tls, bp+56, uintptr(0))
 58804  	libc.Xpthread_cond_init(tls, bp+8, uintptr(0))
 58805  
 58806  	rc = sqlite3.Xsqlite3_unlock_notify(tls, db, *(*uintptr)(unsafe.Pointer(&struct {
 58807  		f func(*libc.TLS, uintptr, int32)
 58808  	}{unlock_notify_cb})), bp)
 58809  
 58810  	if rc == SQLITE_OK {
 58811  		libc.Xpthread_mutex_lock(tls, bp+56)
 58812  		if !((*UnlockNotification)(unsafe.Pointer(bp)).Ffired != 0) {
 58813  			libc.Xpthread_cond_wait(tls, bp+8, bp+56)
 58814  		}
 58815  		libc.Xpthread_mutex_unlock(tls, bp+56)
 58816  	}
 58817  
 58818  	libc.Xpthread_cond_destroy(tls, bp+8)
 58819  	libc.Xpthread_mutex_destroy(tls, bp+56)
 58820  
 58821  	return rc
 58822  }
 58823  
 58824  func sqlite3_blocking_step(tls *libc.TLS, pStmt uintptr) int32 {
 58825  	var rc int32
 58826  	for SQLITE_LOCKED == libc.AssignInt32(&rc, sqlite3.Xsqlite3_step(tls, pStmt)) {
 58827  		rc = wait_for_unlock_notify(tls, sqlite3.Xsqlite3_db_handle(tls, pStmt))
 58828  		if rc != SQLITE_OK {
 58829  			break
 58830  		}
 58831  		sqlite3.Xsqlite3_reset(tls, pStmt)
 58832  	}
 58833  	return rc
 58834  }
 58835  
 58836  func sqlite3_blocking_prepare_v2(tls *libc.TLS, db uintptr, zSql uintptr, nSql int32, ppStmt uintptr, pz uintptr) int32 {
 58837  	var rc int32
 58838  	for SQLITE_LOCKED == libc.AssignInt32(&rc, sqlite3.Xsqlite3_prepare_v2(tls, db, zSql, nSql, ppStmt, pz)) {
 58839  		rc = wait_for_unlock_notify(tls, db)
 58840  		if rc != SQLITE_OK {
 58841  			break
 58842  		}
 58843  	}
 58844  	return rc
 58845  }
 58846  
 58847  func blocking_step_proc(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 58848  	var pStmt uintptr
 58849  	var rc int32
 58850  
 58851  	if objc != 2 {
 58852  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+17042)
 58853  		return TCL_ERROR
 58854  	}
 58855  
 58856  	pStmt = sqlite3TestTextToPtr(tls, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))))
 58857  	rc = sqlite3_blocking_step(tls, pStmt)
 58858  
 58859  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 58860  	return TCL_OK
 58861  }
 58862  
 58863  func blocking_prepare_v2_proc(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 58864  	bp := tls.Alloc(162)
 58865  	defer tls.Free(162)
 58866  
 58867  	var zSql uintptr
 58868  
 58869  	*(*uintptr)(unsafe.Pointer(bp + 104)) = uintptr(0)
 58870  	*(*uintptr)(unsafe.Pointer(bp + 96)) = uintptr(0)
 58871  
 58872  	var rc int32
 58873  	var isBlocking int32 = libc.BoolInt32(!(clientData == uintptr(0)))
 58874  
 58875  	if objc != 5 && objc != 4 {
 58876  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 58877  			tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))), ts+17088, 0))
 58878  		return TCL_ERROR
 58879  	}
 58880  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+80) != 0 {
 58881  		return TCL_ERROR
 58882  	}
 58883  	zSql = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 58884  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+88) != 0 {
 58885  		return TCL_ERROR
 58886  	}
 58887  
 58888  	if isBlocking != 0 {
 58889  		rc = sqlite3_blocking_prepare_v2(tls, *(*uintptr)(unsafe.Pointer(bp + 80)), zSql, *(*int32)(unsafe.Pointer(bp + 88)), bp+96, bp+104)
 58890  	} else {
 58891  		rc = sqlite3.Xsqlite3_prepare_v2(tls, *(*uintptr)(unsafe.Pointer(bp + 80)), zSql, *(*int32)(unsafe.Pointer(bp + 88)), bp+96, bp+104)
 58892  	}
 58893  
 58894  	if *(*uintptr)(unsafe.Pointer(bp + 104)) != 0 && objc >= 5 {
 58895  		if *(*int32)(unsafe.Pointer(bp + 88)) >= 0 {
 58896  			*(*int32)(unsafe.Pointer(bp + 88)) = int32(int64(*(*int32)(unsafe.Pointer(bp + 88))) - (int64(*(*uintptr)(unsafe.Pointer(bp + 104)))-int64(zSql))/1)
 58897  		}
 58898  		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)
 58899  	}
 58900  	if rc != SQLITE_OK {
 58901  		sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([50]uint8{})), bp+112, ts+38454, libc.VaList(bp+32, sqlite3.Xsqlite3ErrName(tls, rc)))
 58902  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+40, bp+112, sqlite3.Xsqlite3_errmsg(tls, *(*uintptr)(unsafe.Pointer(bp + 80))), 0))
 58903  		return TCL_ERROR
 58904  	}
 58905  
 58906  	if *(*uintptr)(unsafe.Pointer(bp + 96)) != 0 {
 58907  		if sqlite3TestMakePointerStr(tls, interp, bp+112, *(*uintptr)(unsafe.Pointer(bp + 96))) != 0 {
 58908  			return TCL_ERROR
 58909  		}
 58910  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+64, bp+112, 0))
 58911  	}
 58912  	return TCL_OK
 58913  }
 58914  
 58915  func SqlitetestThread_Init(tls *libc.TLS, interp uintptr) int32 {
 58916  	tcl.XTcl_CreateObjCommand(tls, interp, ts+38276, *(*uintptr)(unsafe.Pointer(&struct {
 58917  		f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
 58918  	}{sqlthread_proc})), uintptr(0), uintptr(0))
 58919  	tcl.XTcl_CreateObjCommand(tls, interp, ts+38262, *(*uintptr)(unsafe.Pointer(&struct {
 58920  		f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
 58921  	}{clock_seconds_proc})), uintptr(0), uintptr(0))
 58922  	tcl.XTcl_CreateObjCommand(tls, interp, ts+38286, *(*uintptr)(unsafe.Pointer(&struct {
 58923  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 58924  	}{blocking_step_proc})), uintptr(0), uintptr(0))
 58925  	tcl.XTcl_CreateObjCommand(tls, interp,
 58926  		ts+38308, *(*uintptr)(unsafe.Pointer(&struct {
 58927  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 58928  		}{blocking_prepare_v2_proc})), uintptr(1), uintptr(0))
 58929  	tcl.XTcl_CreateObjCommand(tls, interp,
 58930  		ts+38336, *(*uintptr)(unsafe.Pointer(&struct {
 58931  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 58932  		}{blocking_prepare_v2_proc})), uintptr(0), uintptr(0))
 58933  	return TCL_OK
 58934  }
 58935  
 58936  func Sqlitetestvdbecov_Init(tls *libc.TLS, interp uintptr) int32 {
 58937  	return TCL_OK
 58938  }
 58939  
 58940  type Testvfs1 = struct {
 58941  	FzName        uintptr
 58942  	FpParent      uintptr
 58943  	FpVfs         uintptr
 58944  	Finterp       uintptr
 58945  	FpScript      uintptr
 58946  	FpBuffer      uintptr
 58947  	FisNoshm      int32
 58948  	FisFullshm    int32
 58949  	Fmask         int32
 58950  	Fioerr_err    TestFaultInject
 58951  	Ffull_err     TestFaultInject
 58952  	Fcantopen_err TestFaultInject
 58953  	FiDevchar     int32
 58954  	FiSectorsize  int32
 58955  }
 58956  
 58957  type Testvfs = Testvfs1
 58958  type TestvfsBuffer1 = struct {
 58959  	FzFile       uintptr
 58960  	Fpgsz        int32
 58961  	F__ccgo_pad1 [4]byte
 58962  	FaPage       [1024]uintptr
 58963  	FpFile       uintptr
 58964  	FpNext       uintptr
 58965  }
 58966  
 58967  type TestvfsBuffer = TestvfsBuffer1
 58968  type TestvfsFile1 = struct {
 58969  	Fbase sqlite3_file
 58970  	FpFd  uintptr
 58971  }
 58972  
 58973  type TestvfsFile = TestvfsFile1
 58974  type TestvfsFd1 = struct {
 58975  	FpVfs       uintptr
 58976  	FzFilename  uintptr
 58977  	FpReal      uintptr
 58978  	FpShmId     uintptr
 58979  	FpShm       uintptr
 58980  	Fexcllock   u32
 58981  	Fsharedlock u32
 58982  	FpNext      uintptr
 58983  }
 58984  
 58985  type TestvfsFd = TestvfsFd1
 58986  
 58987  type TestFaultInject1 = struct {
 58988  	FiCnt   int32
 58989  	FeFault int32
 58990  	FnFail  int32
 58991  }
 58992  
 58993  type TestFaultInject = TestFaultInject1
 58994  
 58995  var tvfs_io_methods = sqlite3_io_methods{
 58996  	FiVersion:               3,
 58997  	FxClose:                 0,
 58998  	FxRead:                  0,
 58999  	FxWrite:                 0,
 59000  	FxTruncate:              0,
 59001  	FxSync:                  0,
 59002  	FxFileSize:              0,
 59003  	FxLock:                  0,
 59004  	FxUnlock:                0,
 59005  	FxCheckReservedLock:     0,
 59006  	FxFileControl:           0,
 59007  	FxSectorSize:            0,
 59008  	FxDeviceCharacteristics: 0,
 59009  	FxShmMap:                0,
 59010  	FxShmLock:               0,
 59011  	FxShmBarrier:            0,
 59012  	FxShmUnmap:              0,
 59013  	FxFetch:                 0,
 59014  	FxUnfetch:               0,
 59015  }
 59016  
 59017  func tvfsResultCode(tls *libc.TLS, p uintptr, pRc uintptr) int32 {
 59018  	bp := tls.Alloc(144)
 59019  	defer tls.Free(144)
 59020  
 59021  	*(*[9]errcode)(unsafe.Pointer(bp)) = [9]errcode{
 59022  		{FzCode: ts + 2127},
 59023  		{FeCode: SQLITE_ERROR, FzCode: ts + 2114},
 59024  		{FeCode: SQLITE_IOERR, FzCode: ts + 38458},
 59025  		{FeCode: SQLITE_LOCKED, FzCode: ts + 38471},
 59026  		{FeCode: SQLITE_BUSY, FzCode: ts + 38485},
 59027  		{FeCode: SQLITE_READONLY, FzCode: ts + 38497},
 59028  		{FeCode: SQLITE_READONLY | int32(5)<<8, FzCode: ts + 38513},
 59029  		{FeCode: SQLITE_NOTFOUND, FzCode: ts + 38538},
 59030  		{FeCode: -1, FzCode: ts + 38554},
 59031  	}
 59032  	var z uintptr
 59033  	var i int32
 59034  
 59035  	z = tcl.XTcl_GetStringResult(tls, (*Testvfs)(unsafe.Pointer(p)).Finterp)
 59036  	for i = 0; i < int32(uint64(unsafe.Sizeof([9]errcode{}))/uint64(unsafe.Sizeof(errcode{}))); i++ {
 59037  		if 0 == libc.Xstrcmp(tls, z, (*errcode)(unsafe.Pointer(bp+uintptr(i)*16)).FzCode) {
 59038  			*(*int32)(unsafe.Pointer(pRc)) = (*errcode)(unsafe.Pointer(bp + uintptr(i)*16)).FeCode
 59039  			return 1
 59040  		}
 59041  	}
 59042  
 59043  	return 0
 59044  }
 59045  
 59046  type errcode = struct {
 59047  	FeCode       int32
 59048  	F__ccgo_pad1 [4]byte
 59049  	FzCode       uintptr
 59050  }
 59051  
 59052  func tvfsInjectFault(tls *libc.TLS, p uintptr) int32 {
 59053  	var ret int32 = 0
 59054  	if (*TestFaultInject)(unsafe.Pointer(p)).FeFault != 0 {
 59055  		(*TestFaultInject)(unsafe.Pointer(p)).FiCnt--
 59056  		if (*TestFaultInject)(unsafe.Pointer(p)).FiCnt == 0 || (*TestFaultInject)(unsafe.Pointer(p)).FiCnt < 0 && (*TestFaultInject)(unsafe.Pointer(p)).FeFault == FAULT_INJECT_PERSISTENT {
 59057  			ret = 1
 59058  			(*TestFaultInject)(unsafe.Pointer(p)).FnFail++
 59059  		}
 59060  	}
 59061  	return ret
 59062  }
 59063  
 59064  func tvfsInjectIoerr(tls *libc.TLS, p uintptr) int32 {
 59065  	return tvfsInjectFault(tls, p+60)
 59066  }
 59067  
 59068  func tvfsInjectFullerr(tls *libc.TLS, p uintptr) int32 {
 59069  	return tvfsInjectFault(tls, p+72)
 59070  }
 59071  
 59072  func tvfsInjectCantopenerr(tls *libc.TLS, p uintptr) int32 {
 59073  	return tvfsInjectFault(tls, p+84)
 59074  }
 59075  
 59076  func tvfsExecTcl(tls *libc.TLS, p uintptr, zMethod uintptr, arg1 uintptr, arg2 uintptr, arg3 uintptr, arg4 uintptr) {
 59077  	var rc int32
 59078  	var pEval uintptr
 59079  
 59080  	pEval = tcl.XTcl_DuplicateObj(tls, (*Testvfs)(unsafe.Pointer(p)).FpScript)
 59081  	(*Tcl_Obj)(unsafe.Pointer((*Testvfs)(unsafe.Pointer(p)).FpScript)).FrefCount++
 59082  	tcl.XTcl_ListObjAppendElement(tls, (*Testvfs)(unsafe.Pointer(p)).Finterp, pEval, tcl.XTcl_NewStringObj(tls, zMethod, -1))
 59083  	if arg1 != 0 {
 59084  		tcl.XTcl_ListObjAppendElement(tls, (*Testvfs)(unsafe.Pointer(p)).Finterp, pEval, arg1)
 59085  	}
 59086  	if arg2 != 0 {
 59087  		tcl.XTcl_ListObjAppendElement(tls, (*Testvfs)(unsafe.Pointer(p)).Finterp, pEval, arg2)
 59088  	}
 59089  	if arg3 != 0 {
 59090  		tcl.XTcl_ListObjAppendElement(tls, (*Testvfs)(unsafe.Pointer(p)).Finterp, pEval, arg3)
 59091  	}
 59092  	if arg4 != 0 {
 59093  		tcl.XTcl_ListObjAppendElement(tls, (*Testvfs)(unsafe.Pointer(p)).Finterp, pEval, arg4)
 59094  	}
 59095  
 59096  	rc = tcl.XTcl_EvalObjEx(tls, (*Testvfs)(unsafe.Pointer(p)).Finterp, pEval, TCL_EVAL_GLOBAL)
 59097  	if rc != TCL_OK {
 59098  		tcl.XTcl_BackgroundError(tls, (*Testvfs)(unsafe.Pointer(p)).Finterp)
 59099  		tcl.XTcl_ResetResult(tls, (*Testvfs)(unsafe.Pointer(p)).Finterp)
 59100  	}
 59101  }
 59102  
 59103  func tvfsClose(tls *libc.TLS, pFile uintptr) int32 {
 59104  	var pTestfile uintptr = pFile
 59105  	var pFd uintptr = (*TestvfsFile)(unsafe.Pointer(pTestfile)).FpFd
 59106  	var p uintptr = (*sqlite3_vfs)(unsafe.Pointer((*TestvfsFd)(unsafe.Pointer(pFd)).FpVfs)).FpAppData
 59107  
 59108  	if (*Testvfs)(unsafe.Pointer(p)).FpScript != 0 && (*Testvfs)(unsafe.Pointer(p)).Fmask&TESTVFS_CLOSE_MASK != 0 {
 59109  		tvfsExecTcl(tls, p, ts+35556,
 59110  			tcl.XTcl_NewStringObj(tls, (*TestvfsFd)(unsafe.Pointer(pFd)).FzFilename, -1), (*TestvfsFd)(unsafe.Pointer(pFd)).FpShmId, uintptr(0), uintptr(0))
 59111  	}
 59112  
 59113  	if (*TestvfsFd)(unsafe.Pointer(pFd)).FpShmId != 0 {
 59114  		for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 59115  			var _objPtr uintptr = (*TestvfsFd)(unsafe.Pointer(pFd)).FpShmId
 59116  			if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 59117  				tcl.XTclFreeObj(tls, _objPtr)
 59118  			}
 59119  		}
 59120  		(*TestvfsFd)(unsafe.Pointer(pFd)).FpShmId = uintptr(0)
 59121  	}
 59122  	if (*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods != 0 {
 59123  		tcl.XTcl_Free(tls, (*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)
 59124  	}
 59125  	sqlite3.Xsqlite3OsClose(tls, (*TestvfsFd)(unsafe.Pointer(pFd)).FpReal)
 59126  	tcl.XTcl_Free(tls, pFd)
 59127  	(*TestvfsFile)(unsafe.Pointer(pTestfile)).FpFd = uintptr(0)
 59128  	return SQLITE_OK
 59129  }
 59130  
 59131  func tvfsRead(tls *libc.TLS, pFile uintptr, zBuf uintptr, iAmt int32, iOfst sqlite_int64) int32 {
 59132  	bp := tls.Alloc(4)
 59133  	defer tls.Free(4)
 59134  
 59135  	*(*int32)(unsafe.Pointer(bp)) = SQLITE_OK
 59136  	var pFd uintptr = (*TestvfsFile)(unsafe.Pointer(pFile)).FpFd
 59137  	var p uintptr = (*sqlite3_vfs)(unsafe.Pointer((*TestvfsFd)(unsafe.Pointer(pFd)).FpVfs)).FpAppData
 59138  	if (*Testvfs)(unsafe.Pointer(p)).FpScript != 0 && (*Testvfs)(unsafe.Pointer(p)).Fmask&TESTVFS_READ_MASK != 0 {
 59139  		tvfsExecTcl(tls, p, ts+35563,
 59140  			tcl.XTcl_NewStringObj(tls, (*TestvfsFd)(unsafe.Pointer(pFd)).FzFilename, -1), (*TestvfsFd)(unsafe.Pointer(pFd)).FpShmId, uintptr(0), uintptr(0))
 59141  		tvfsResultCode(tls, p, bp)
 59142  	}
 59143  	if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK && (*Testvfs)(unsafe.Pointer(p)).Fmask&TESTVFS_READ_MASK != 0 && tvfsInjectIoerr(tls, p) != 0 {
 59144  		*(*int32)(unsafe.Pointer(bp)) = SQLITE_IOERR
 59145  	}
 59146  	if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK {
 59147  		*(*int32)(unsafe.Pointer(bp)) = sqlite3.Xsqlite3OsRead(tls, (*TestvfsFd)(unsafe.Pointer(pFd)).FpReal, zBuf, iAmt, iOfst)
 59148  	}
 59149  	return *(*int32)(unsafe.Pointer(bp))
 59150  }
 59151  
 59152  func tvfsWrite(tls *libc.TLS, pFile uintptr, zBuf uintptr, iAmt int32, iOfst sqlite_int64) int32 {
 59153  	bp := tls.Alloc(4)
 59154  	defer tls.Free(4)
 59155  
 59156  	*(*int32)(unsafe.Pointer(bp)) = SQLITE_OK
 59157  	var pFd uintptr = (*TestvfsFile)(unsafe.Pointer(pFile)).FpFd
 59158  	var p uintptr = (*sqlite3_vfs)(unsafe.Pointer((*TestvfsFd)(unsafe.Pointer(pFd)).FpVfs)).FpAppData
 59159  
 59160  	if (*Testvfs)(unsafe.Pointer(p)).FpScript != 0 && (*Testvfs)(unsafe.Pointer(p)).Fmask&TESTVFS_WRITE_MASK != 0 {
 59161  		tvfsExecTcl(tls, p, ts+35569,
 59162  			tcl.XTcl_NewStringObj(tls, (*TestvfsFd)(unsafe.Pointer(pFd)).FzFilename, -1), (*TestvfsFd)(unsafe.Pointer(pFd)).FpShmId,
 59163  			tcl.XTcl_NewWideIntObj(tls, iOfst), tcl.XTcl_NewIntObj(tls, iAmt))
 59164  		tvfsResultCode(tls, p, bp)
 59165  		if *(*int32)(unsafe.Pointer(bp)) < 0 {
 59166  			return SQLITE_OK
 59167  		}
 59168  	}
 59169  
 59170  	if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK && tvfsInjectFullerr(tls, p) != 0 {
 59171  		*(*int32)(unsafe.Pointer(bp)) = SQLITE_FULL
 59172  	}
 59173  	if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK && (*Testvfs)(unsafe.Pointer(p)).Fmask&TESTVFS_WRITE_MASK != 0 && tvfsInjectIoerr(tls, p) != 0 {
 59174  		*(*int32)(unsafe.Pointer(bp)) = SQLITE_IOERR
 59175  	}
 59176  
 59177  	if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK {
 59178  		*(*int32)(unsafe.Pointer(bp)) = sqlite3.Xsqlite3OsWrite(tls, (*TestvfsFd)(unsafe.Pointer(pFd)).FpReal, zBuf, iAmt, iOfst)
 59179  	}
 59180  	return *(*int32)(unsafe.Pointer(bp))
 59181  }
 59182  
 59183  func tvfsTruncate(tls *libc.TLS, pFile uintptr, size sqlite_int64) int32 {
 59184  	bp := tls.Alloc(4)
 59185  	defer tls.Free(4)
 59186  
 59187  	*(*int32)(unsafe.Pointer(bp)) = SQLITE_OK
 59188  	var pFd uintptr = (*TestvfsFile)(unsafe.Pointer(pFile)).FpFd
 59189  	var p uintptr = (*sqlite3_vfs)(unsafe.Pointer((*TestvfsFd)(unsafe.Pointer(pFd)).FpVfs)).FpAppData
 59190  
 59191  	if (*Testvfs)(unsafe.Pointer(p)).FpScript != 0 && (*Testvfs)(unsafe.Pointer(p)).Fmask&TESTVFS_TRUNCATE_MASK != 0 {
 59192  		tvfsExecTcl(tls, p, ts+35576,
 59193  			tcl.XTcl_NewStringObj(tls, (*TestvfsFd)(unsafe.Pointer(pFd)).FzFilename, -1), (*TestvfsFd)(unsafe.Pointer(pFd)).FpShmId, uintptr(0), uintptr(0))
 59194  		tvfsResultCode(tls, p, bp)
 59195  	}
 59196  
 59197  	if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK {
 59198  		*(*int32)(unsafe.Pointer(bp)) = sqlite3.Xsqlite3OsTruncate(tls, (*TestvfsFd)(unsafe.Pointer(pFd)).FpReal, size)
 59199  	}
 59200  	return *(*int32)(unsafe.Pointer(bp))
 59201  }
 59202  
 59203  func tvfsSync(tls *libc.TLS, pFile uintptr, flags int32) int32 {
 59204  	bp := tls.Alloc(4)
 59205  	defer tls.Free(4)
 59206  
 59207  	*(*int32)(unsafe.Pointer(bp)) = SQLITE_OK
 59208  	var pFd uintptr = (*TestvfsFile)(unsafe.Pointer(pFile)).FpFd
 59209  	var p uintptr = (*sqlite3_vfs)(unsafe.Pointer((*TestvfsFd)(unsafe.Pointer(pFd)).FpVfs)).FpAppData
 59210  
 59211  	if (*Testvfs)(unsafe.Pointer(p)).FpScript != 0 && (*Testvfs)(unsafe.Pointer(p)).Fmask&TESTVFS_SYNC_MASK != 0 {
 59212  		var zFlags uintptr = uintptr(0)
 59213  
 59214  		switch flags {
 59215  		case SQLITE_SYNC_NORMAL:
 59216  			zFlags = ts + 16397
 59217  			break
 59218  			fallthrough
 59219  		case SQLITE_SYNC_FULL:
 59220  			zFlags = ts + 18291
 59221  			break
 59222  			fallthrough
 59223  		case SQLITE_SYNC_NORMAL | SQLITE_SYNC_DATAONLY:
 59224  			zFlags = ts + 38566
 59225  			break
 59226  			fallthrough
 59227  		case SQLITE_SYNC_FULL | SQLITE_SYNC_DATAONLY:
 59228  			zFlags = ts + 38582
 59229  			break
 59230  			fallthrough
 59231  		default:
 59232  		}
 59233  
 59234  		tvfsExecTcl(tls, p, ts+27843,
 59235  			tcl.XTcl_NewStringObj(tls, (*TestvfsFd)(unsafe.Pointer(pFd)).FzFilename, -1), (*TestvfsFd)(unsafe.Pointer(pFd)).FpShmId,
 59236  			tcl.XTcl_NewStringObj(tls, zFlags, -1), uintptr(0))
 59237  		tvfsResultCode(tls, p, bp)
 59238  	}
 59239  
 59240  	if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK && tvfsInjectFullerr(tls, p) != 0 {
 59241  		*(*int32)(unsafe.Pointer(bp)) = SQLITE_FULL
 59242  	}
 59243  
 59244  	if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK {
 59245  		*(*int32)(unsafe.Pointer(bp)) = sqlite3.Xsqlite3OsSync(tls, (*TestvfsFd)(unsafe.Pointer(pFd)).FpReal, flags)
 59246  	}
 59247  
 59248  	return *(*int32)(unsafe.Pointer(bp))
 59249  }
 59250  
 59251  func tvfsFileSize(tls *libc.TLS, pFile uintptr, pSize uintptr) int32 {
 59252  	var p uintptr = (*TestvfsFile)(unsafe.Pointer(pFile)).FpFd
 59253  	return sqlite3.Xsqlite3OsFileSize(tls, (*TestvfsFd)(unsafe.Pointer(p)).FpReal, pSize)
 59254  }
 59255  
 59256  func tvfsLock(tls *libc.TLS, pFile uintptr, eLock int32) int32 {
 59257  	bp := tls.Alloc(38)
 59258  	defer tls.Free(38)
 59259  
 59260  	var pFd uintptr = (*TestvfsFile)(unsafe.Pointer(pFile)).FpFd
 59261  	var p uintptr = (*sqlite3_vfs)(unsafe.Pointer((*TestvfsFd)(unsafe.Pointer(pFd)).FpVfs)).FpAppData
 59262  	if (*Testvfs)(unsafe.Pointer(p)).FpScript != 0 && (*Testvfs)(unsafe.Pointer(p)).Fmask&TESTVFS_LOCK_MASK != 0 {
 59263  		sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([30]uint8{})), bp+8, ts+1333, libc.VaList(bp, eLock))
 59264  		tvfsExecTcl(tls, p, ts+35596, tcl.XTcl_NewStringObj(tls, (*TestvfsFd)(unsafe.Pointer(pFd)).FzFilename, -1),
 59265  			tcl.XTcl_NewStringObj(tls, bp+8, -1), uintptr(0), uintptr(0))
 59266  	}
 59267  	return sqlite3.Xsqlite3OsLock(tls, (*TestvfsFd)(unsafe.Pointer(pFd)).FpReal, eLock)
 59268  }
 59269  
 59270  func tvfsUnlock(tls *libc.TLS, pFile uintptr, eLock int32) int32 {
 59271  	bp := tls.Alloc(38)
 59272  	defer tls.Free(38)
 59273  
 59274  	var pFd uintptr = (*TestvfsFile)(unsafe.Pointer(pFile)).FpFd
 59275  	var p uintptr = (*sqlite3_vfs)(unsafe.Pointer((*TestvfsFd)(unsafe.Pointer(pFd)).FpVfs)).FpAppData
 59276  	if (*Testvfs)(unsafe.Pointer(p)).FpScript != 0 && (*Testvfs)(unsafe.Pointer(p)).Fmask&TESTVFS_UNLOCK_MASK != 0 {
 59277  		sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([30]uint8{})), bp+8, ts+1333, libc.VaList(bp, eLock))
 59278  		tvfsExecTcl(tls, p, ts+35602, tcl.XTcl_NewStringObj(tls, (*TestvfsFd)(unsafe.Pointer(pFd)).FzFilename, -1),
 59279  			tcl.XTcl_NewStringObj(tls, bp+8, -1), uintptr(0), uintptr(0))
 59280  	}
 59281  	if (*Testvfs)(unsafe.Pointer(p)).Fmask&TESTVFS_WRITE_MASK != 0 && tvfsInjectIoerr(tls, p) != 0 {
 59282  		return SQLITE_IOERR | int32(8)<<8
 59283  	}
 59284  	return sqlite3.Xsqlite3OsUnlock(tls, (*TestvfsFd)(unsafe.Pointer(pFd)).FpReal, eLock)
 59285  }
 59286  
 59287  func tvfsCheckReservedLock(tls *libc.TLS, pFile uintptr, pResOut uintptr) int32 {
 59288  	var pFd uintptr = (*TestvfsFile)(unsafe.Pointer(pFile)).FpFd
 59289  	var p uintptr = (*sqlite3_vfs)(unsafe.Pointer((*TestvfsFd)(unsafe.Pointer(pFd)).FpVfs)).FpAppData
 59290  	if (*Testvfs)(unsafe.Pointer(p)).FpScript != 0 && (*Testvfs)(unsafe.Pointer(p)).Fmask&TESTVFS_CKLOCK_MASK != 0 {
 59291  		tvfsExecTcl(tls, p, ts+38596, tcl.XTcl_NewStringObj(tls, (*TestvfsFd)(unsafe.Pointer(pFd)).FzFilename, -1),
 59292  			uintptr(0), uintptr(0), uintptr(0))
 59293  	}
 59294  	return sqlite3.Xsqlite3OsCheckReservedLock(tls, (*TestvfsFd)(unsafe.Pointer(pFd)).FpReal, pResOut)
 59295  }
 59296  
 59297  func tvfsFileControl(tls *libc.TLS, pFile uintptr, op int32, pArg uintptr) int32 {
 59298  	bp := tls.Alloc(68)
 59299  	defer tls.Free(68)
 59300  
 59301  	var pFd uintptr = (*TestvfsFile)(unsafe.Pointer(pFile)).FpFd
 59302  	var p uintptr = (*sqlite3_vfs)(unsafe.Pointer((*TestvfsFd)(unsafe.Pointer(pFd)).FpVfs)).FpAppData
 59303  	if op == SQLITE_FCNTL_PRAGMA {
 59304  		var argv uintptr = pArg
 59305  		if sqlite3.Xsqlite3_stricmp(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)), ts+9674) == 0 {
 59306  			var rc int32 = SQLITE_ERROR
 59307  			if *(*uintptr)(unsafe.Pointer(argv + 2*8)) != 0 {
 59308  				var z uintptr = *(*uintptr)(unsafe.Pointer(argv + 2*8))
 59309  				var x int32 = libc.Xatoi(tls, z)
 59310  				if x != 0 {
 59311  					rc = x
 59312  					for int32(sqlite3.Xsqlite3CtypeMap[*(*uint8)(unsafe.Pointer(z))])&0x04 != 0 {
 59313  						z++
 59314  					}
 59315  					for int32(sqlite3.Xsqlite3CtypeMap[*(*uint8)(unsafe.Pointer(z))])&0x01 != 0 {
 59316  						z++
 59317  					}
 59318  				}
 59319  				if *(*uint8)(unsafe.Pointer(z)) != 0 {
 59320  					*(*uintptr)(unsafe.Pointer(argv)) = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp, z))
 59321  				}
 59322  			}
 59323  			return rc
 59324  		}
 59325  		if sqlite3.Xsqlite3_stricmp(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)), ts+4794) == 0 {
 59326  			*(*uintptr)(unsafe.Pointer(argv)) = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp+8, (*TestvfsFd)(unsafe.Pointer(pFd)).FzFilename))
 59327  			return SQLITE_OK
 59328  		}
 59329  	}
 59330  	if (*Testvfs)(unsafe.Pointer(p)).FpScript != 0 && (*Testvfs)(unsafe.Pointer(p)).Fmask&TESTVFS_FCNTL_MASK != 0 {
 59331  		*(*[3]Fcntl)(unsafe.Pointer(bp + 16)) = [3]Fcntl{
 59332  			{FiFnctl: SQLITE_FCNTL_BEGIN_ATOMIC_WRITE, FzFnctl: ts + 38615},
 59333  			{FiFnctl: SQLITE_FCNTL_COMMIT_ATOMIC_WRITE, FzFnctl: ts + 38634},
 59334  			{FiFnctl: SQLITE_FCNTL_ZIPVFS, FzFnctl: ts + 38654},
 59335  		}
 59336  		var i int32
 59337  		for i = 0; uint64(i) < uint64(unsafe.Sizeof([3]Fcntl{}))/uint64(unsafe.Sizeof(Fcntl{})); i++ {
 59338  			if op == (*Fcntl)(unsafe.Pointer(bp+16+uintptr(i)*16)).FiFnctl {
 59339  				break
 59340  			}
 59341  		}
 59342  		if uint64(i) < uint64(unsafe.Sizeof([3]Fcntl{}))/uint64(unsafe.Sizeof(Fcntl{})) {
 59343  			*(*int32)(unsafe.Pointer(bp + 64)) = 0
 59344  			tvfsExecTcl(tls, p, ts+35624,
 59345  				tcl.XTcl_NewStringObj(tls, (*TestvfsFd)(unsafe.Pointer(pFd)).FzFilename, -1),
 59346  				tcl.XTcl_NewStringObj(tls, (*Fcntl)(unsafe.Pointer(bp+16+uintptr(i)*16)).FzFnctl, -1),
 59347  				uintptr(0), uintptr(0))
 59348  			tvfsResultCode(tls, p, bp+64)
 59349  			if *(*int32)(unsafe.Pointer(bp + 64)) != 0 {
 59350  				return func() int32 {
 59351  					if *(*int32)(unsafe.Pointer(bp + 64)) < 0 {
 59352  						return SQLITE_OK
 59353  					}
 59354  					return *(*int32)(unsafe.Pointer(bp + 64))
 59355  				}()
 59356  			}
 59357  		}
 59358  	}
 59359  	return sqlite3.Xsqlite3OsFileControl(tls, (*TestvfsFd)(unsafe.Pointer(pFd)).FpReal, op, pArg)
 59360  }
 59361  
 59362  type Fcntl = struct {
 59363  	FiFnctl      int32
 59364  	F__ccgo_pad1 [4]byte
 59365  	FzFnctl      uintptr
 59366  }
 59367  
 59368  func tvfsSectorSize(tls *libc.TLS, pFile uintptr) int32 {
 59369  	var pFd uintptr = (*TestvfsFile)(unsafe.Pointer(pFile)).FpFd
 59370  	var p uintptr = (*sqlite3_vfs)(unsafe.Pointer((*TestvfsFd)(unsafe.Pointer(pFd)).FpVfs)).FpAppData
 59371  	if (*Testvfs)(unsafe.Pointer(p)).FiSectorsize >= 0 {
 59372  		return (*Testvfs)(unsafe.Pointer(p)).FiSectorsize
 59373  	}
 59374  	return sqlite3.Xsqlite3OsSectorSize(tls, (*TestvfsFd)(unsafe.Pointer(pFd)).FpReal)
 59375  }
 59376  
 59377  func tvfsDeviceCharacteristics(tls *libc.TLS, pFile uintptr) int32 {
 59378  	var pFd uintptr = (*TestvfsFile)(unsafe.Pointer(pFile)).FpFd
 59379  	var p uintptr = (*sqlite3_vfs)(unsafe.Pointer((*TestvfsFd)(unsafe.Pointer(pFd)).FpVfs)).FpAppData
 59380  	if (*Testvfs)(unsafe.Pointer(p)).FiDevchar >= 0 {
 59381  		return (*Testvfs)(unsafe.Pointer(p)).FiDevchar
 59382  	}
 59383  	return sqlite3.Xsqlite3OsDeviceCharacteristics(tls, (*TestvfsFd)(unsafe.Pointer(pFd)).FpReal)
 59384  }
 59385  
 59386  func tvfsOpen(tls *libc.TLS, pVfs uintptr, zName uintptr, pFile uintptr, flags int32, pOutFlags uintptr) int32 {
 59387  	bp := tls.Alloc(4)
 59388  	defer tls.Free(4)
 59389  
 59390  	var pTestfile uintptr = pFile
 59391  	var pFd uintptr
 59392  	var pId uintptr = uintptr(0)
 59393  	var p uintptr = (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData
 59394  
 59395  	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)))
 59396  	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))
 59397  	(*TestvfsFd)(unsafe.Pointer(pFd)).FpShm = uintptr(0)
 59398  	(*TestvfsFd)(unsafe.Pointer(pFd)).FpShmId = uintptr(0)
 59399  	(*TestvfsFd)(unsafe.Pointer(pFd)).FzFilename = zName
 59400  	(*TestvfsFd)(unsafe.Pointer(pFd)).FpVfs = pVfs
 59401  	(*TestvfsFd)(unsafe.Pointer(pFd)).FpReal = pFd + 1*56
 59402  	libc.Xmemset(tls, pTestfile, 0, uint64(unsafe.Sizeof(TestvfsFile{})))
 59403  	(*TestvfsFile)(unsafe.Pointer(pTestfile)).FpFd = pFd
 59404  
 59405  	tcl.XTcl_ResetResult(tls, (*Testvfs)(unsafe.Pointer(p)).Finterp)
 59406  	if (*Testvfs)(unsafe.Pointer(p)).FpScript != 0 && (*Testvfs)(unsafe.Pointer(p)).Fmask&TESTVFS_OPEN_MASK != 0 {
 59407  		var pArg uintptr = tcl.XTcl_NewObj(tls)
 59408  		(*Tcl_Obj)(unsafe.Pointer(pArg)).FrefCount++
 59409  		if flags&SQLITE_OPEN_MAIN_DB != 0 {
 59410  			var z uintptr = zName + uintptr(libc.Xstrlen(tls, zName)+uint64(1))
 59411  			for *(*uint8)(unsafe.Pointer(z)) != 0 {
 59412  				tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pArg, tcl.XTcl_NewStringObj(tls, z, -1))
 59413  				z += uintptr(libc.Xstrlen(tls, z) + uint64(1))
 59414  				tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pArg, tcl.XTcl_NewStringObj(tls, z, -1))
 59415  				z += uintptr(libc.Xstrlen(tls, z) + uint64(1))
 59416  			}
 59417  		}
 59418  		tvfsExecTcl(tls, p, ts+27421, tcl.XTcl_NewStringObj(tls, (*TestvfsFd)(unsafe.Pointer(pFd)).FzFilename, -1), pArg, uintptr(0), uintptr(0))
 59419  		for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 59420  			var _objPtr uintptr = pArg
 59421  			if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 59422  				tcl.XTclFreeObj(tls, _objPtr)
 59423  			}
 59424  		}
 59425  		if tvfsResultCode(tls, p, bp) != 0 {
 59426  			if *(*int32)(unsafe.Pointer(bp)) != SQLITE_OK {
 59427  				return *(*int32)(unsafe.Pointer(bp))
 59428  			}
 59429  		} else {
 59430  			pId = tcl.XTcl_GetObjResult(tls, (*Testvfs)(unsafe.Pointer(p)).Finterp)
 59431  		}
 59432  	}
 59433  
 59434  	if (*Testvfs)(unsafe.Pointer(p)).Fmask&TESTVFS_OPEN_MASK != 0 && tvfsInjectIoerr(tls, p) != 0 {
 59435  		return SQLITE_IOERR
 59436  	}
 59437  	if tvfsInjectCantopenerr(tls, p) != 0 {
 59438  		return SQLITE_CANTOPEN
 59439  	}
 59440  	if tvfsInjectFullerr(tls, p) != 0 {
 59441  		return SQLITE_FULL
 59442  	}
 59443  
 59444  	if !(pId != 0) {
 59445  		pId = tcl.XTcl_NewStringObj(tls, ts+38661, -1)
 59446  	}
 59447  	(*Tcl_Obj)(unsafe.Pointer(pId)).FrefCount++
 59448  	(*TestvfsFd)(unsafe.Pointer(pFd)).FpShmId = pId
 59449  	tcl.XTcl_ResetResult(tls, (*Testvfs)(unsafe.Pointer(p)).Finterp)
 59450  
 59451  	*(*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)
 59452  	if (*sqlite3_file)(unsafe.Pointer((*TestvfsFd)(unsafe.Pointer(pFd)).FpReal)).FpMethods != 0 {
 59453  		var pMethods uintptr
 59454  		var nByte int32
 59455  
 59456  		if (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FiVersion > 1 {
 59457  			nByte = int32(unsafe.Sizeof(sqlite3_io_methods{}))
 59458  		} else {
 59459  			nByte = int32(uintptr(0) + 104)
 59460  		}
 59461  
 59462  		pMethods = tcl.XTcl_Alloc(tls, uint32(nByte))
 59463  		libc.Xmemcpy(tls, pMethods, uintptr(unsafe.Pointer(&tvfs_io_methods)), uint64(nByte))
 59464  		(*sqlite3_io_methods)(unsafe.Pointer(pMethods)).FiVersion = (*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer((*TestvfsFd)(unsafe.Pointer(pFd)).FpReal)).FpMethods)).FiVersion
 59465  		if (*sqlite3_io_methods)(unsafe.Pointer(pMethods)).FiVersion > (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FiVersion {
 59466  			(*sqlite3_io_methods)(unsafe.Pointer(pMethods)).FiVersion = (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FiVersion
 59467  		}
 59468  		if (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FiVersion > 1 && (*Testvfs)(unsafe.Pointer((*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData)).FisNoshm != 0 {
 59469  			(*sqlite3_io_methods)(unsafe.Pointer(pMethods)).FxShmUnmap = uintptr(0)
 59470  			(*sqlite3_io_methods)(unsafe.Pointer(pMethods)).FxShmLock = uintptr(0)
 59471  			(*sqlite3_io_methods)(unsafe.Pointer(pMethods)).FxShmBarrier = uintptr(0)
 59472  			(*sqlite3_io_methods)(unsafe.Pointer(pMethods)).FxShmMap = uintptr(0)
 59473  		}
 59474  		(*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods = pMethods
 59475  	}
 59476  
 59477  	return *(*int32)(unsafe.Pointer(bp))
 59478  }
 59479  
 59480  func tvfsDelete(tls *libc.TLS, pVfs uintptr, zPath uintptr, dirSync int32) int32 {
 59481  	bp := tls.Alloc(4)
 59482  	defer tls.Free(4)
 59483  
 59484  	*(*int32)(unsafe.Pointer(bp)) = SQLITE_OK
 59485  	var p uintptr = (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData
 59486  
 59487  	if (*Testvfs)(unsafe.Pointer(p)).FpScript != 0 && (*Testvfs)(unsafe.Pointer(p)).Fmask&TESTVFS_DELETE_MASK != 0 {
 59488  		tvfsExecTcl(tls, p, ts+35661,
 59489  			tcl.XTcl_NewStringObj(tls, zPath, -1), tcl.XTcl_NewIntObj(tls, dirSync), uintptr(0), uintptr(0))
 59490  		tvfsResultCode(tls, p, bp)
 59491  	}
 59492  	if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK {
 59493  		*(*int32)(unsafe.Pointer(bp)) = sqlite3.Xsqlite3OsDelete(tls, (*Testvfs)(unsafe.Pointer((*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData)).FpParent, zPath, dirSync)
 59494  	}
 59495  	return *(*int32)(unsafe.Pointer(bp))
 59496  }
 59497  
 59498  func tvfsAccess(tls *libc.TLS, pVfs uintptr, zPath uintptr, flags int32, pResOut uintptr) int32 {
 59499  	bp := tls.Alloc(4)
 59500  	defer tls.Free(4)
 59501  
 59502  	var p uintptr = (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData
 59503  	if (*Testvfs)(unsafe.Pointer(p)).FpScript != 0 && (*Testvfs)(unsafe.Pointer(p)).Fmask&TESTVFS_ACCESS_MASK != 0 {
 59504  		var zArg uintptr = uintptr(0)
 59505  		if flags == SQLITE_ACCESS_EXISTS {
 59506  			zArg = ts + 38666
 59507  		}
 59508  		if flags == SQLITE_ACCESS_READWRITE {
 59509  			zArg = ts + 38687
 59510  		}
 59511  		if flags == SQLITE_ACCESS_READ {
 59512  			zArg = ts + 38711
 59513  		}
 59514  		tvfsExecTcl(tls, p, ts+35669,
 59515  			tcl.XTcl_NewStringObj(tls, zPath, -1), tcl.XTcl_NewStringObj(tls, zArg, -1), uintptr(0), uintptr(0))
 59516  		if tvfsResultCode(tls, p, bp) != 0 {
 59517  			if *(*int32)(unsafe.Pointer(bp)) != SQLITE_OK {
 59518  				return *(*int32)(unsafe.Pointer(bp))
 59519  			}
 59520  		} else {
 59521  			var interp uintptr = (*Testvfs)(unsafe.Pointer(p)).Finterp
 59522  			if TCL_OK == tcl.XTcl_GetBooleanFromObj(tls, uintptr(0), tcl.XTcl_GetObjResult(tls, interp), pResOut) {
 59523  				return SQLITE_OK
 59524  			}
 59525  		}
 59526  	}
 59527  	return sqlite3.Xsqlite3OsAccess(tls, (*Testvfs)(unsafe.Pointer((*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData)).FpParent, zPath, flags, pResOut)
 59528  }
 59529  
 59530  func tvfsFullPathname(tls *libc.TLS, pVfs uintptr, zPath uintptr, nOut int32, zOut uintptr) int32 {
 59531  	bp := tls.Alloc(4)
 59532  	defer tls.Free(4)
 59533  
 59534  	var p uintptr = (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData
 59535  	if (*Testvfs)(unsafe.Pointer(p)).FpScript != 0 && (*Testvfs)(unsafe.Pointer(p)).Fmask&TESTVFS_FULLPATHNAME_MASK != 0 {
 59536  		tvfsExecTcl(tls, p, ts+35677, tcl.XTcl_NewStringObj(tls, zPath, -1), uintptr(0), uintptr(0), uintptr(0))
 59537  		if tvfsResultCode(tls, p, bp) != 0 {
 59538  			if *(*int32)(unsafe.Pointer(bp)) != SQLITE_OK {
 59539  				return *(*int32)(unsafe.Pointer(bp))
 59540  			}
 59541  		}
 59542  	}
 59543  	return sqlite3.Xsqlite3OsFullPathname(tls, (*Testvfs)(unsafe.Pointer((*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData)).FpParent, zPath, nOut, zOut)
 59544  }
 59545  
 59546  func tvfsRandomness(tls *libc.TLS, pVfs uintptr, nByte int32, zBufOut uintptr) int32 {
 59547  	return sqlite3.Xsqlite3OsRandomness(tls, (*Testvfs)(unsafe.Pointer((*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData)).FpParent, nByte, zBufOut)
 59548  }
 59549  
 59550  func tvfsSleep(tls *libc.TLS, pVfs uintptr, nMicro int32) int32 {
 59551  	return sqlite3.Xsqlite3OsSleep(tls, (*Testvfs)(unsafe.Pointer((*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData)).FpParent, nMicro)
 59552  }
 59553  
 59554  func tvfsCurrentTime(tls *libc.TLS, pVfs uintptr, pTimeOut uintptr) int32 {
 59555  	return (*struct {
 59556  		f func(*libc.TLS, uintptr, uintptr) int32
 59557  	})(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)
 59558  }
 59559  
 59560  func tvfsShmOpen(tls *libc.TLS, pFile uintptr) int32 {
 59561  	bp := tls.Alloc(4)
 59562  	defer tls.Free(4)
 59563  
 59564  	var p uintptr
 59565  	*(*int32)(unsafe.Pointer(bp)) = SQLITE_OK
 59566  	var pBuffer uintptr
 59567  	var pFd uintptr
 59568  
 59569  	pFd = (*TestvfsFile)(unsafe.Pointer(pFile)).FpFd
 59570  	p = (*sqlite3_vfs)(unsafe.Pointer((*TestvfsFd)(unsafe.Pointer(pFd)).FpVfs)).FpAppData
 59571  
 59572  	tcl.XTcl_ResetResult(tls, (*Testvfs)(unsafe.Pointer(p)).Finterp)
 59573  	if (*Testvfs)(unsafe.Pointer(p)).FpScript != 0 && (*Testvfs)(unsafe.Pointer(p)).Fmask&TESTVFS_SHMOPEN_MASK != 0 {
 59574  		tvfsExecTcl(tls, p, ts+38730, tcl.XTcl_NewStringObj(tls, (*TestvfsFd)(unsafe.Pointer(pFd)).FzFilename, -1), uintptr(0), uintptr(0), uintptr(0))
 59575  		if tvfsResultCode(tls, p, bp) != 0 {
 59576  			if *(*int32)(unsafe.Pointer(bp)) != SQLITE_OK {
 59577  				return *(*int32)(unsafe.Pointer(bp))
 59578  			}
 59579  		}
 59580  	}
 59581  
 59582  	if (*Testvfs)(unsafe.Pointer(p)).Fmask&TESTVFS_SHMOPEN_MASK != 0 && tvfsInjectIoerr(tls, p) != 0 {
 59583  		return SQLITE_IOERR
 59584  	}
 59585  
 59586  	for pBuffer = (*Testvfs)(unsafe.Pointer(p)).FpBuffer; pBuffer != 0; pBuffer = (*TestvfsBuffer)(unsafe.Pointer(pBuffer)).FpNext {
 59587  		if 0 == libc.Xstrcmp(tls, (*TestvfsFd)(unsafe.Pointer(pFd)).FzFilename, (*TestvfsBuffer)(unsafe.Pointer(pBuffer)).FzFile) {
 59588  			break
 59589  		}
 59590  	}
 59591  	if !(pBuffer != 0) {
 59592  		var szName int32 = int32(libc.Xstrlen(tls, (*TestvfsFd)(unsafe.Pointer(pFd)).FzFilename))
 59593  		var nByte int32 = int32(uint64(unsafe.Sizeof(TestvfsBuffer{})) + uint64(szName) + uint64(1))
 59594  		pBuffer = tcl.XTcl_Alloc(tls, uint32(nByte))
 59595  		libc.Xmemset(tls, pBuffer, 0, uint64(nByte))
 59596  		(*TestvfsBuffer)(unsafe.Pointer(pBuffer)).FzFile = pBuffer + 1*8224
 59597  		libc.Xmemcpy(tls, (*TestvfsBuffer)(unsafe.Pointer(pBuffer)).FzFile, (*TestvfsFd)(unsafe.Pointer(pFd)).FzFilename, uint64(szName+1))
 59598  		(*TestvfsBuffer)(unsafe.Pointer(pBuffer)).FpNext = (*Testvfs)(unsafe.Pointer(p)).FpBuffer
 59599  		(*Testvfs)(unsafe.Pointer(p)).FpBuffer = pBuffer
 59600  	}
 59601  
 59602  	(*TestvfsFd)(unsafe.Pointer(pFd)).FpNext = (*TestvfsBuffer)(unsafe.Pointer(pBuffer)).FpFile
 59603  	(*TestvfsBuffer)(unsafe.Pointer(pBuffer)).FpFile = pFd
 59604  	(*TestvfsFd)(unsafe.Pointer(pFd)).FpShm = pBuffer
 59605  	return *(*int32)(unsafe.Pointer(bp))
 59606  }
 59607  
 59608  func tvfsAllocPage(tls *libc.TLS, p uintptr, iPage int32, pgsz int32) {
 59609  	if *(*uintptr)(unsafe.Pointer(p + 16 + uintptr(iPage)*8)) == uintptr(0) {
 59610  		*(*uintptr)(unsafe.Pointer(p + 16 + uintptr(iPage)*8)) = tcl.XTcl_Alloc(tls, uint32(pgsz))
 59611  		libc.Xmemset(tls, *(*uintptr)(unsafe.Pointer(p + 16 + uintptr(iPage)*8)), 0, uint64(pgsz))
 59612  		(*TestvfsBuffer)(unsafe.Pointer(p)).Fpgsz = pgsz
 59613  	}
 59614  }
 59615  
 59616  func tvfsShmMap(tls *libc.TLS, pFile uintptr, iPage int32, pgsz int32, isWrite int32, pp uintptr) int32 {
 59617  	bp := tls.Alloc(4)
 59618  	defer tls.Free(4)
 59619  
 59620  	*(*int32)(unsafe.Pointer(bp)) = SQLITE_OK
 59621  	var pFd uintptr = (*TestvfsFile)(unsafe.Pointer(pFile)).FpFd
 59622  	var p uintptr = (*sqlite3_vfs)(unsafe.Pointer((*TestvfsFd)(unsafe.Pointer(pFd)).FpVfs)).FpAppData
 59623  
 59624  	if (*Testvfs)(unsafe.Pointer(p)).FisFullshm != 0 {
 59625  		var pReal uintptr = (*TestvfsFd)(unsafe.Pointer(pFd)).FpReal
 59626  		return (*struct {
 59627  			f func(*libc.TLS, uintptr, int32, int32, int32, uintptr) int32
 59628  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pReal)).FpMethods)).FxShmMap})).f(tls, pReal, iPage, pgsz, isWrite, pp)
 59629  	}
 59630  
 59631  	if uintptr(0) == (*TestvfsFd)(unsafe.Pointer(pFd)).FpShm {
 59632  		*(*int32)(unsafe.Pointer(bp)) = tvfsShmOpen(tls, pFile)
 59633  		if *(*int32)(unsafe.Pointer(bp)) != SQLITE_OK {
 59634  			return *(*int32)(unsafe.Pointer(bp))
 59635  		}
 59636  	}
 59637  
 59638  	if (*Testvfs)(unsafe.Pointer(p)).FpScript != 0 && (*Testvfs)(unsafe.Pointer(p)).Fmask&TESTVFS_SHMMAP_MASK != 0 {
 59639  		var pArg uintptr = tcl.XTcl_NewObj(tls)
 59640  		(*Tcl_Obj)(unsafe.Pointer(pArg)).FrefCount++
 59641  		tcl.XTcl_ListObjAppendElement(tls, (*Testvfs)(unsafe.Pointer(p)).Finterp, pArg, tcl.XTcl_NewIntObj(tls, iPage))
 59642  		tcl.XTcl_ListObjAppendElement(tls, (*Testvfs)(unsafe.Pointer(p)).Finterp, pArg, tcl.XTcl_NewIntObj(tls, pgsz))
 59643  		tcl.XTcl_ListObjAppendElement(tls, (*Testvfs)(unsafe.Pointer(p)).Finterp, pArg, tcl.XTcl_NewIntObj(tls, isWrite))
 59644  		tvfsExecTcl(tls, p, ts+35754,
 59645  			tcl.XTcl_NewStringObj(tls, (*TestvfsBuffer)(unsafe.Pointer((*TestvfsFd)(unsafe.Pointer(pFd)).FpShm)).FzFile, -1), (*TestvfsFd)(unsafe.Pointer(pFd)).FpShmId, pArg, uintptr(0))
 59646  		tvfsResultCode(tls, p, bp)
 59647  		for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 59648  			var _objPtr uintptr = pArg
 59649  			if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 59650  				tcl.XTclFreeObj(tls, _objPtr)
 59651  			}
 59652  		}
 59653  	}
 59654  	if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK && (*Testvfs)(unsafe.Pointer(p)).Fmask&TESTVFS_SHMMAP_MASK != 0 && tvfsInjectIoerr(tls, p) != 0 {
 59655  		*(*int32)(unsafe.Pointer(bp)) = SQLITE_IOERR
 59656  	}
 59657  
 59658  	if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK && isWrite != 0 && !(int32(*(*uintptr)(unsafe.Pointer((*TestvfsFd)(unsafe.Pointer(pFd)).FpShm + 16 + uintptr(iPage)*8))) != 0) {
 59659  		tvfsAllocPage(tls, (*TestvfsFd)(unsafe.Pointer(pFd)).FpShm, iPage, pgsz)
 59660  	}
 59661  	if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK || *(*int32)(unsafe.Pointer(bp)) == SQLITE_READONLY {
 59662  		*(*uintptr)(unsafe.Pointer(pp)) = *(*uintptr)(unsafe.Pointer((*TestvfsFd)(unsafe.Pointer(pFd)).FpShm + 16 + uintptr(iPage)*8))
 59663  	}
 59664  
 59665  	return *(*int32)(unsafe.Pointer(bp))
 59666  }
 59667  
 59668  func tvfsShmLock(tls *libc.TLS, pFile uintptr, ofst int32, n int32, flags int32) int32 {
 59669  	bp := tls.Alloc(100)
 59670  	defer tls.Free(100)
 59671  
 59672  	*(*int32)(unsafe.Pointer(bp + 96)) = SQLITE_OK
 59673  	var pFd uintptr = (*TestvfsFile)(unsafe.Pointer(pFile)).FpFd
 59674  	var p uintptr = (*sqlite3_vfs)(unsafe.Pointer((*TestvfsFd)(unsafe.Pointer(pFd)).FpVfs)).FpAppData
 59675  	var nLock int32
 59676  
 59677  	if (*Testvfs)(unsafe.Pointer(p)).FisFullshm != 0 {
 59678  		var pReal uintptr = (*TestvfsFd)(unsafe.Pointer(pFd)).FpReal
 59679  		return (*struct {
 59680  			f func(*libc.TLS, uintptr, int32, int32, int32) int32
 59681  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pReal)).FpMethods)).FxShmLock})).f(tls, pReal, ofst, n, flags)
 59682  	}
 59683  
 59684  	if (*Testvfs)(unsafe.Pointer(p)).FpScript != 0 && (*Testvfs)(unsafe.Pointer(p)).Fmask&TESTVFS_SHMLOCK_MASK != 0 {
 59685  		sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([80]uint8{})), bp+16, ts+17826, libc.VaList(bp, ofst, n))
 59686  		nLock = int32(libc.Xstrlen(tls, bp+16))
 59687  		if flags&SQLITE_SHM_LOCK != 0 {
 59688  			libc.Xstrcpy(tls, bp+16+uintptr(nLock), ts+38739)
 59689  		} else {
 59690  			libc.Xstrcpy(tls, bp+16+uintptr(nLock), ts+38745)
 59691  		}
 59692  		nLock = nLock + int32(libc.Xstrlen(tls, bp+16+uintptr(nLock)))
 59693  		if flags&SQLITE_SHM_SHARED != 0 {
 59694  			libc.Xstrcpy(tls, bp+16+uintptr(nLock), ts+38753)
 59695  		} else {
 59696  			libc.Xstrcpy(tls, bp+16+uintptr(nLock), ts+38761)
 59697  		}
 59698  		tvfsExecTcl(tls, p, ts+35733,
 59699  			tcl.XTcl_NewStringObj(tls, (*TestvfsBuffer)(unsafe.Pointer((*TestvfsFd)(unsafe.Pointer(pFd)).FpShm)).FzFile, -1), (*TestvfsFd)(unsafe.Pointer(pFd)).FpShmId,
 59700  			tcl.XTcl_NewStringObj(tls, bp+16, -1), uintptr(0))
 59701  		tvfsResultCode(tls, p, bp+96)
 59702  	}
 59703  
 59704  	if *(*int32)(unsafe.Pointer(bp + 96)) == SQLITE_OK && (*Testvfs)(unsafe.Pointer(p)).Fmask&TESTVFS_SHMLOCK_MASK != 0 && tvfsInjectIoerr(tls, p) != 0 {
 59705  		*(*int32)(unsafe.Pointer(bp + 96)) = SQLITE_IOERR
 59706  	}
 59707  
 59708  	if *(*int32)(unsafe.Pointer(bp + 96)) == SQLITE_OK {
 59709  		var isLock int32 = flags & SQLITE_SHM_LOCK
 59710  		var isExcl int32 = flags & SQLITE_SHM_EXCLUSIVE
 59711  		var mask u32 = u32((int32(1)<<n - 1) << ofst)
 59712  		if isLock != 0 {
 59713  			var p2 uintptr
 59714  			for p2 = (*TestvfsBuffer)(unsafe.Pointer((*TestvfsFd)(unsafe.Pointer(pFd)).FpShm)).FpFile; p2 != 0; p2 = (*TestvfsFd)(unsafe.Pointer(p2)).FpNext {
 59715  				if p2 == pFd {
 59716  					continue
 59717  				}
 59718  				if (*TestvfsFd)(unsafe.Pointer(p2)).Fexcllock&mask != 0 || isExcl != 0 && (*TestvfsFd)(unsafe.Pointer(p2)).Fsharedlock&mask != 0 {
 59719  					*(*int32)(unsafe.Pointer(bp + 96)) = SQLITE_BUSY
 59720  					break
 59721  				}
 59722  			}
 59723  			if *(*int32)(unsafe.Pointer(bp + 96)) == SQLITE_OK {
 59724  				if isExcl != 0 {
 59725  					*(*u32)(unsafe.Pointer(pFd + 40)) |= mask
 59726  				}
 59727  				if !(isExcl != 0) {
 59728  					*(*u32)(unsafe.Pointer(pFd + 44)) |= mask
 59729  				}
 59730  			}
 59731  		} else {
 59732  			if isExcl != 0 {
 59733  				*(*u32)(unsafe.Pointer(pFd + 40)) &= ^mask
 59734  			}
 59735  			if !(isExcl != 0) {
 59736  				*(*u32)(unsafe.Pointer(pFd + 44)) &= ^mask
 59737  			}
 59738  		}
 59739  	}
 59740  
 59741  	return *(*int32)(unsafe.Pointer(bp + 96))
 59742  }
 59743  
 59744  func tvfsShmBarrier(tls *libc.TLS, pFile uintptr) {
 59745  	var pFd uintptr = (*TestvfsFile)(unsafe.Pointer(pFile)).FpFd
 59746  	var p uintptr = (*sqlite3_vfs)(unsafe.Pointer((*TestvfsFd)(unsafe.Pointer(pFd)).FpVfs)).FpAppData
 59747  
 59748  	if (*Testvfs)(unsafe.Pointer(p)).FpScript != 0 && (*Testvfs)(unsafe.Pointer(p)).Fmask&TESTVFS_SHMBARRIER_MASK != 0 {
 59749  		var z uintptr
 59750  		if (*TestvfsFd)(unsafe.Pointer(pFd)).FpShm != 0 {
 59751  			z = (*TestvfsBuffer)(unsafe.Pointer((*TestvfsFd)(unsafe.Pointer(pFd)).FpShm)).FzFile
 59752  		} else {
 59753  			z = ts + 584
 59754  		}
 59755  		tvfsExecTcl(tls, p, ts+35742, tcl.XTcl_NewStringObj(tls, z, -1), (*TestvfsFd)(unsafe.Pointer(pFd)).FpShmId, uintptr(0), uintptr(0))
 59756  	}
 59757  
 59758  	if (*Testvfs)(unsafe.Pointer(p)).FisFullshm != 0 {
 59759  		var pReal uintptr = (*TestvfsFd)(unsafe.Pointer(pFd)).FpReal
 59760  		(*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)
 59761  		return
 59762  	}
 59763  }
 59764  
 59765  func tvfsShmUnmap(tls *libc.TLS, pFile uintptr, deleteFlag int32) int32 {
 59766  	bp := tls.Alloc(4)
 59767  	defer tls.Free(4)
 59768  
 59769  	*(*int32)(unsafe.Pointer(bp)) = SQLITE_OK
 59770  	var pFd uintptr = (*TestvfsFile)(unsafe.Pointer(pFile)).FpFd
 59771  	var p uintptr = (*sqlite3_vfs)(unsafe.Pointer((*TestvfsFd)(unsafe.Pointer(pFd)).FpVfs)).FpAppData
 59772  	var pBuffer uintptr = (*TestvfsFd)(unsafe.Pointer(pFd)).FpShm
 59773  	var ppFd uintptr
 59774  
 59775  	if (*Testvfs)(unsafe.Pointer(p)).FisFullshm != 0 {
 59776  		var pReal uintptr = (*TestvfsFd)(unsafe.Pointer(pFd)).FpReal
 59777  		return (*struct {
 59778  			f func(*libc.TLS, uintptr, int32) int32
 59779  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pReal)).FpMethods)).FxShmUnmap})).f(tls, pReal, deleteFlag)
 59780  	}
 59781  
 59782  	if !(pBuffer != 0) {
 59783  		return SQLITE_OK
 59784  	}
 59785  
 59786  	if (*Testvfs)(unsafe.Pointer(p)).FpScript != 0 && (*Testvfs)(unsafe.Pointer(p)).Fmask&TESTVFS_SHMCLOSE_MASK != 0 {
 59787  		tvfsExecTcl(tls, p, ts+35723,
 59788  			tcl.XTcl_NewStringObj(tls, (*TestvfsBuffer)(unsafe.Pointer((*TestvfsFd)(unsafe.Pointer(pFd)).FpShm)).FzFile, -1), (*TestvfsFd)(unsafe.Pointer(pFd)).FpShmId, uintptr(0), uintptr(0))
 59789  		tvfsResultCode(tls, p, bp)
 59790  	}
 59791  
 59792  	for ppFd = pBuffer + 8208; *(*uintptr)(unsafe.Pointer(ppFd)) != pFd; ppFd = *(*uintptr)(unsafe.Pointer(ppFd)) + 48 {
 59793  	}
 59794  
 59795  	*(*uintptr)(unsafe.Pointer(ppFd)) = (*TestvfsFd)(unsafe.Pointer(pFd)).FpNext
 59796  	(*TestvfsFd)(unsafe.Pointer(pFd)).FpNext = uintptr(0)
 59797  
 59798  	if (*TestvfsBuffer)(unsafe.Pointer(pBuffer)).FpFile == uintptr(0) {
 59799  		var i int32
 59800  		var pp uintptr
 59801  		for pp = p + 40; *(*uintptr)(unsafe.Pointer(pp)) != pBuffer; pp = *(*uintptr)(unsafe.Pointer(pp)) + 8216 {
 59802  		}
 59803  		*(*uintptr)(unsafe.Pointer(pp)) = (*TestvfsBuffer)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(pp)))).FpNext
 59804  		for i = 0; *(*uintptr)(unsafe.Pointer(pBuffer + 16 + uintptr(i)*8)) != 0; i++ {
 59805  			tcl.XTcl_Free(tls, *(*uintptr)(unsafe.Pointer(pBuffer + 16 + uintptr(i)*8)))
 59806  		}
 59807  		tcl.XTcl_Free(tls, pBuffer)
 59808  	}
 59809  	(*TestvfsFd)(unsafe.Pointer(pFd)).FpShm = uintptr(0)
 59810  
 59811  	return *(*int32)(unsafe.Pointer(bp))
 59812  }
 59813  
 59814  func tvfsFetch(tls *libc.TLS, pFile uintptr, iOfst sqlite3_int64, iAmt int32, pp uintptr) int32 {
 59815  	var pFd uintptr = (*TestvfsFile)(unsafe.Pointer(pFile)).FpFd
 59816  	return sqlite3.Xsqlite3OsFetch(tls, (*TestvfsFd)(unsafe.Pointer(pFd)).FpReal, iOfst, iAmt, pp)
 59817  }
 59818  
 59819  func tvfsUnfetch(tls *libc.TLS, pFile uintptr, iOfst sqlite3_int64, p uintptr) int32 {
 59820  	var pFd uintptr = (*TestvfsFile)(unsafe.Pointer(pFile)).FpFd
 59821  	return sqlite3.Xsqlite3OsUnfetch(tls, (*TestvfsFd)(unsafe.Pointer(pFd)).FpReal, iOfst, p)
 59822  }
 59823  
 59824  func testvfs_obj_cmd(tls *libc.TLS, cd ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 59825  	bp := tls.Alloc(568)
 59826  	defer tls.Free(568)
 59827  
 59828  	var p uintptr = cd
 59829  	*(*[10]TestvfsSubcmd)(unsafe.Pointer(bp + 96)) = [10]TestvfsSubcmd{
 59830  		{FzName: ts + 38772},
 59831  		{FzName: ts + 10138, FeCmd: uint32(1)},
 59832  		{FzName: ts + 38776, FeCmd: uint32(2)},
 59833  		{FzName: ts + 38783, FeCmd: uint32(3)},
 59834  		{FzName: ts + 38789, FeCmd: uint32(7)},
 59835  		{FzName: ts + 38797, FeCmd: uint32(8)},
 59836  		{FzName: ts + 38809, FeCmd: uint32(4)},
 59837  		{FzName: ts + 38816, FeCmd: uint32(5)},
 59838  		{FzName: ts + 38824, FeCmd: uint32(6)},
 59839  		{},
 59840  	}
 59841  
 59842  	if objc < 2 {
 59843  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+1999)
 59844  		return TCL_ERROR
 59845  	}
 59846  	if tcl.XTcl_GetIndexFromObjStruct(tls,
 59847  		interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp+96, int32(unsafe.Sizeof(TestvfsSubcmd{})), ts+38835, 0, bp+256) != 0 {
 59848  		return TCL_ERROR
 59849  	}
 59850  	tcl.XTcl_ResetResult(tls, interp)
 59851  
 59852  	switch (*TestvfsSubcmd)(unsafe.Pointer(bp + 96 + uintptr(*(*int32)(unsafe.Pointer(bp + 256)))*16)).FeCmd {
 59853  	case uint32(0):
 59854  		{
 59855  			var pObj uintptr
 59856  			var rc int32
 59857  			var pBuffer uintptr
 59858  			var zName uintptr
 59859  			if objc != 3 && objc != 4 {
 59860  				tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+38846)
 59861  				return TCL_ERROR
 59862  			}
 59863  			zName = tcl.XTcl_Alloc(tls, uint32((*sqlite3_vfs)(unsafe.Pointer((*Testvfs)(unsafe.Pointer(p)).FpParent)).FmxPathname))
 59864  			rc = (*struct {
 59865  				f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59866  			})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*Testvfs)(unsafe.Pointer(p)).FpParent)).FxFullPathname})).f(tls,
 59867  				(*Testvfs)(unsafe.Pointer(p)).FpParent, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8))),
 59868  				(*sqlite3_vfs)(unsafe.Pointer((*Testvfs)(unsafe.Pointer(p)).FpParent)).FmxPathname, zName)
 59869  			if rc != SQLITE_OK {
 59870  				tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+38859,
 59871  					tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8))), 0))
 59872  				tcl.XTcl_Free(tls, zName)
 59873  				return TCL_ERROR
 59874  			}
 59875  			for pBuffer = (*Testvfs)(unsafe.Pointer(p)).FpBuffer; pBuffer != 0; pBuffer = (*TestvfsBuffer)(unsafe.Pointer(pBuffer)).FpNext {
 59876  				if 0 == libc.Xstrcmp(tls, (*TestvfsBuffer)(unsafe.Pointer(pBuffer)).FzFile, zName) {
 59877  					break
 59878  				}
 59879  			}
 59880  			tcl.XTcl_Free(tls, zName)
 59881  			if !(pBuffer != 0) {
 59882  				tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+24, ts+38885, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8))), 0))
 59883  				return TCL_ERROR
 59884  			}
 59885  			if objc == 4 {
 59886  				var a uintptr = tcl.XTcl_GetByteArrayFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+260)
 59887  				var pgsz int32 = (*TestvfsBuffer)(unsafe.Pointer(pBuffer)).Fpgsz
 59888  				if pgsz == 0 {
 59889  					pgsz = 65536
 59890  				}
 59891  				for *(*int32)(unsafe.Pointer(bp + 256)) = 0; *(*int32)(unsafe.Pointer(bp + 256))*pgsz < *(*int32)(unsafe.Pointer(bp + 260)); *(*int32)(unsafe.Pointer(bp + 256))++ {
 59892  					var nByte int32 = pgsz
 59893  					tvfsAllocPage(tls, pBuffer, *(*int32)(unsafe.Pointer(bp + 256)), pgsz)
 59894  					if *(*int32)(unsafe.Pointer(bp + 260))-*(*int32)(unsafe.Pointer(bp + 256))*pgsz < pgsz {
 59895  						nByte = *(*int32)(unsafe.Pointer(bp + 260))
 59896  					}
 59897  					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))
 59898  				}
 59899  			}
 59900  
 59901  			pObj = tcl.XTcl_NewObj(tls)
 59902  			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))++ {
 59903  				var pgsz int32 = (*TestvfsBuffer)(unsafe.Pointer(pBuffer)).Fpgsz
 59904  				if pgsz == 0 {
 59905  					pgsz = 65536
 59906  				}
 59907  				tcl.XTcl_AppendObjToObj(tls, pObj, tcl.XTcl_NewByteArrayObj(tls, *(*uintptr)(unsafe.Pointer(pBuffer + 16 + uintptr(*(*int32)(unsafe.Pointer(bp + 256)))*8)), pgsz))
 59908  			}
 59909  			tcl.XTcl_SetObjResult(tls, interp, pObj)
 59910  			break
 59911  
 59912  		}
 59913  
 59914  	case uint32(2):
 59915  		{
 59916  			*(*uintptr)(unsafe.Pointer(bp + 272)) = uintptr(0)
 59917  			*(*int32)(unsafe.Pointer(bp + 264)) = 0
 59918  			var mask int32 = 0
 59919  			if objc != 3 {
 59920  				tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+32419)
 59921  				return TCL_ERROR
 59922  			}
 59923  			if tcl.XTcl_ListObjGetElements(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+264, bp+272) != 0 {
 59924  				return TCL_ERROR
 59925  			}
 59926  			tcl.XTcl_ResetResult(tls, interp)
 59927  			for *(*int32)(unsafe.Pointer(bp + 256)) = 0; *(*int32)(unsafe.Pointer(bp + 256)) < *(*int32)(unsafe.Pointer(bp + 264)); *(*int32)(unsafe.Pointer(bp + 256))++ {
 59928  				var iMethod int32
 59929  				var zElem uintptr = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 272)) + uintptr(*(*int32)(unsafe.Pointer(bp + 256)))*8)))
 59930  				for iMethod = 0; iMethod < int32(uint64(unsafe.Sizeof(vfsmethod))/uint64(unsafe.Sizeof(VfsMethod{}))); iMethod++ {
 59931  					if libc.Xstrcmp(tls, zElem, vfsmethod[iMethod].FzName) == 0 {
 59932  						mask = mask | vfsmethod[iMethod].Fmask
 59933  						break
 59934  					}
 59935  				}
 59936  				if iMethod == int32(uint64(unsafe.Sizeof(vfsmethod))/uint64(unsafe.Sizeof(VfsMethod{}))) {
 59937  					tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+48, ts+38900, zElem, 0))
 59938  					return TCL_ERROR
 59939  				}
 59940  			}
 59941  			(*Testvfs)(unsafe.Pointer(p)).Fmask = mask
 59942  			break
 59943  
 59944  		}
 59945  
 59946  	case uint32(4):
 59947  		{
 59948  			if objc == 3 {
 59949  				if (*Testvfs)(unsafe.Pointer(p)).FpScript != 0 {
 59950  					for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 59951  						var _objPtr uintptr = (*Testvfs)(unsafe.Pointer(p)).FpScript
 59952  						if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 59953  							tcl.XTclFreeObj(tls, _objPtr)
 59954  						}
 59955  					}
 59956  					(*Testvfs)(unsafe.Pointer(p)).FpScript = uintptr(0)
 59957  				}
 59958  				tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+280)
 59959  				if *(*int32)(unsafe.Pointer(bp + 280)) > 0 {
 59960  					(*Testvfs)(unsafe.Pointer(p)).FpScript = tcl.XTcl_DuplicateObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 59961  					(*Tcl_Obj)(unsafe.Pointer((*Testvfs)(unsafe.Pointer(p)).FpScript)).FrefCount++
 59962  				}
 59963  			} else if objc != 2 {
 59964  				tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+13249)
 59965  				return TCL_ERROR
 59966  			}
 59967  
 59968  			tcl.XTcl_ResetResult(tls, interp)
 59969  			if (*Testvfs)(unsafe.Pointer(p)).FpScript != 0 {
 59970  				tcl.XTcl_SetObjResult(tls, interp, (*Testvfs)(unsafe.Pointer(p)).FpScript)
 59971  			}
 59972  
 59973  			break
 59974  
 59975  		}
 59976  
 59977  	case uint32(8):
 59978  		fallthrough
 59979  	case uint32(3):
 59980  		fallthrough
 59981  	case uint32(7):
 59982  		{
 59983  			var pTest uintptr = uintptr(0)
 59984  			var iRet int32
 59985  
 59986  			switch (*TestvfsSubcmd)(unsafe.Pointer(bp + 96 + uintptr(*(*int32)(unsafe.Pointer(bp + 256)))*16)).FeCmd {
 59987  			case uint32(3):
 59988  				pTest = p + 60
 59989  				break
 59990  			case uint32(7):
 59991  				pTest = p + 72
 59992  				break
 59993  			case uint32(8):
 59994  				pTest = p + 84
 59995  				break
 59996  			default:
 59997  			}
 59998  			iRet = (*TestFaultInject)(unsafe.Pointer(pTest)).FnFail
 59999  			(*TestFaultInject)(unsafe.Pointer(pTest)).FnFail = 0
 60000  			(*TestFaultInject)(unsafe.Pointer(pTest)).FeFault = 0
 60001  			(*TestFaultInject)(unsafe.Pointer(pTest)).FiCnt = 0
 60002  
 60003  			if objc == 4 {
 60004  				if TCL_OK != tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+284) ||
 60005  					TCL_OK != tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+288) {
 60006  					return TCL_ERROR
 60007  				}
 60008  				(*TestFaultInject)(unsafe.Pointer(pTest)).FeFault = func() int32 {
 60009  					if *(*int32)(unsafe.Pointer(bp + 288)) != 0 {
 60010  						return FAULT_INJECT_PERSISTENT
 60011  					}
 60012  					return FAULT_INJECT_TRANSIENT
 60013  				}()
 60014  				(*TestFaultInject)(unsafe.Pointer(pTest)).FiCnt = *(*int32)(unsafe.Pointer(bp + 284))
 60015  			} else if objc != 2 {
 60016  				tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+38917)
 60017  				return TCL_ERROR
 60018  			}
 60019  			tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, iRet))
 60020  			break
 60021  
 60022  		}
 60023  
 60024  	case uint32(1):
 60025  		{
 60026  			tcl.XTcl_DeleteCommand(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))))
 60027  			break
 60028  
 60029  		}
 60030  
 60031  	case uint32(5):
 60032  		{
 60033  			*(*[16]DeviceFlag)(unsafe.Pointer(bp + 304)) = [16]DeviceFlag{
 60034  				{FzName: ts + 38931, FiValue: -1},
 60035  				{FzName: ts + 26403, FiValue: SQLITE_IOCAP_ATOMIC},
 60036  				{FzName: ts + 26410, FiValue: SQLITE_IOCAP_ATOMIC512},
 60037  				{FzName: ts + 26420, FiValue: SQLITE_IOCAP_ATOMIC1K},
 60038  				{FzName: ts + 26429, FiValue: SQLITE_IOCAP_ATOMIC2K},
 60039  				{FzName: ts + 26438, FiValue: SQLITE_IOCAP_ATOMIC4K},
 60040  				{FzName: ts + 26447, FiValue: SQLITE_IOCAP_ATOMIC8K},
 60041  				{FzName: ts + 26456, FiValue: SQLITE_IOCAP_ATOMIC16K},
 60042  				{FzName: ts + 26466, FiValue: SQLITE_IOCAP_ATOMIC32K},
 60043  				{FzName: ts + 26476, FiValue: SQLITE_IOCAP_ATOMIC64K},
 60044  				{FzName: ts + 26486, FiValue: SQLITE_IOCAP_SEQUENTIAL},
 60045  				{FzName: ts + 26497, FiValue: SQLITE_IOCAP_SAFE_APPEND},
 60046  				{FzName: ts + 38939, FiValue: SQLITE_IOCAP_UNDELETABLE_WHEN_OPEN},
 60047  				{FzName: ts + 26509, FiValue: SQLITE_IOCAP_POWERSAFE_OVERWRITE},
 60048  				{FzName: ts + 38961, FiValue: SQLITE_IOCAP_IMMUTABLE},
 60049  				{},
 60050  			}
 60051  			var pRet uintptr
 60052  			var iFlag int32
 60053  
 60054  			if objc > 3 {
 60055  				tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+38971)
 60056  				return TCL_ERROR
 60057  			}
 60058  			if objc == 3 {
 60059  				var j int32
 60060  				var iNew int32 = 0
 60061  				*(*uintptr)(unsafe.Pointer(bp + 296)) = uintptr(0)
 60062  				*(*int32)(unsafe.Pointer(bp + 292)) = 0
 60063  
 60064  				if tcl.XTcl_ListObjGetElements(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+292, bp+296) != 0 {
 60065  					return TCL_ERROR
 60066  				}
 60067  
 60068  				for j = 0; j < *(*int32)(unsafe.Pointer(bp + 292)); j++ {
 60069  					*(*int32)(unsafe.Pointer(bp + 560)) = 0
 60070  					if tcl.XTcl_GetIndexFromObjStruct(tls, interp, *(*uintptr)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 296)) + uintptr(j)*8)), bp+304,
 60071  						int32(unsafe.Sizeof(DeviceFlag{})), ts+17631, 0, bp+560) != 0 {
 60072  						return TCL_ERROR
 60073  					}
 60074  					if (*DeviceFlag)(unsafe.Pointer(bp+304+uintptr(*(*int32)(unsafe.Pointer(bp + 560)))*16)).FiValue < 0 && *(*int32)(unsafe.Pointer(bp + 292)) > 1 {
 60075  						tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+72, ts+38983, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8))), 0))
 60076  						return TCL_ERROR
 60077  					}
 60078  					iNew = iNew | (*DeviceFlag)(unsafe.Pointer(bp+304+uintptr(*(*int32)(unsafe.Pointer(bp + 560)))*16)).FiValue
 60079  				}
 60080  
 60081  				(*Testvfs)(unsafe.Pointer(p)).FiDevchar = iNew | 0x10000000
 60082  			}
 60083  
 60084  			pRet = tcl.XTcl_NewObj(tls)
 60085  			for iFlag = 0; uint64(iFlag) < uint64(unsafe.Sizeof([16]DeviceFlag{}))/uint64(unsafe.Sizeof(DeviceFlag{})); iFlag++ {
 60086  				if (*Testvfs)(unsafe.Pointer(p)).FiDevchar&(*DeviceFlag)(unsafe.Pointer(bp+304+uintptr(iFlag)*16)).FiValue != 0 {
 60087  					tcl.XTcl_ListObjAppendElement(tls,
 60088  						interp, pRet, tcl.XTcl_NewStringObj(tls, (*DeviceFlag)(unsafe.Pointer(bp+304+uintptr(iFlag)*16)).FzName, -1))
 60089  				}
 60090  			}
 60091  			tcl.XTcl_SetObjResult(tls, interp, pRet)
 60092  
 60093  			break
 60094  
 60095  		}
 60096  
 60097  	case uint32(6):
 60098  		{
 60099  			if objc > 3 {
 60100  				tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+38995)
 60101  				return TCL_ERROR
 60102  			}
 60103  			if objc == 3 {
 60104  				*(*int32)(unsafe.Pointer(bp + 564)) = 0
 60105  				if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+564) != 0 {
 60106  					return TCL_ERROR
 60107  				}
 60108  				(*Testvfs)(unsafe.Pointer(p)).FiSectorsize = *(*int32)(unsafe.Pointer(bp + 564))
 60109  			}
 60110  			tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, (*Testvfs)(unsafe.Pointer(p)).FiSectorsize))
 60111  			break
 60112  
 60113  		}
 60114  	}
 60115  
 60116  	return TCL_OK
 60117  }
 60118  
 60119  type TestvfsSubcmd = struct {
 60120  	FzName       uintptr
 60121  	FeCmd        uint32
 60122  	F__ccgo_pad1 [4]byte
 60123  }
 60124  
 60125  type VfsMethod = struct {
 60126  	FzName       uintptr
 60127  	Fmask        int32
 60128  	F__ccgo_pad1 [4]byte
 60129  }
 60130  
 60131  var vfsmethod = [18]VfsMethod{
 60132  	{FzName: ts + 38730, Fmask: TESTVFS_SHMOPEN_MASK},
 60133  	{FzName: ts + 35733, Fmask: TESTVFS_SHMLOCK_MASK},
 60134  	{FzName: ts + 35742, Fmask: TESTVFS_SHMBARRIER_MASK},
 60135  	{FzName: ts + 35723, Fmask: TESTVFS_SHMCLOSE_MASK},
 60136  	{FzName: ts + 35754, Fmask: TESTVFS_SHMMAP_MASK},
 60137  	{FzName: ts + 27843, Fmask: TESTVFS_SYNC_MASK},
 60138  	{FzName: ts + 35661, Fmask: TESTVFS_DELETE_MASK},
 60139  	{FzName: ts + 35569, Fmask: TESTVFS_WRITE_MASK},
 60140  	{FzName: ts + 35563, Fmask: TESTVFS_READ_MASK},
 60141  	{FzName: ts + 35576, Fmask: TESTVFS_TRUNCATE_MASK},
 60142  	{FzName: ts + 27421, Fmask: TESTVFS_OPEN_MASK},
 60143  	{FzName: ts + 35556, Fmask: TESTVFS_CLOSE_MASK},
 60144  	{FzName: ts + 35669, Fmask: TESTVFS_ACCESS_MASK},
 60145  	{FzName: ts + 35677, Fmask: TESTVFS_FULLPATHNAME_MASK},
 60146  	{FzName: ts + 35602, Fmask: TESTVFS_UNLOCK_MASK},
 60147  	{FzName: ts + 35596, Fmask: TESTVFS_LOCK_MASK},
 60148  	{FzName: ts + 38596, Fmask: TESTVFS_CKLOCK_MASK},
 60149  	{FzName: ts + 35624, Fmask: TESTVFS_FCNTL_MASK},
 60150  }
 60151  
 60152  func testvfs_obj_del(tls *libc.TLS, cd ClientData) {
 60153  	var p uintptr = cd
 60154  	if (*Testvfs)(unsafe.Pointer(p)).FpScript != 0 {
 60155  		for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 60156  			var _objPtr uintptr = (*Testvfs)(unsafe.Pointer(p)).FpScript
 60157  			if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 60158  				tcl.XTclFreeObj(tls, _objPtr)
 60159  			}
 60160  		}
 60161  	}
 60162  	sqlite3.Xsqlite3_vfs_unregister(tls, (*Testvfs)(unsafe.Pointer(p)).FpVfs)
 60163  	libc.Xmemset(tls, (*Testvfs)(unsafe.Pointer(p)).FpVfs, 0, uint64(unsafe.Sizeof(sqlite3_vfs{})))
 60164  	tcl.XTcl_Free(tls, (*Testvfs)(unsafe.Pointer(p)).FpVfs)
 60165  	libc.Xmemset(tls, p, 0, uint64(unsafe.Sizeof(Testvfs{})))
 60166  	tcl.XTcl_Free(tls, p)
 60167  }
 60168  
 60169  func testvfs_cmd(tls *libc.TLS, cd ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 60170  	bp := tls.Alloc(28)
 60171  	defer tls.Free(28)
 60172  
 60173  	var p uintptr
 60174  	var pVfs uintptr
 60175  	var zVfs uintptr
 60176  	var nByte int32
 60177  
 60178  	var i int32
 60179  
 60180  	var zSwitch uintptr
 60181  	*(*int32)(unsafe.Pointer(bp + 4)) = 0
 60182  	*(*int32)(unsafe.Pointer(bp + 24)) = 0
 60183  	*(*int32)(unsafe.Pointer(bp + 8)) = 0
 60184  	*(*int32)(unsafe.Pointer(bp + 12)) = 0
 60185  	*(*int32)(unsafe.Pointer(bp + 16)) = -1
 60186  	*(*int32)(unsafe.Pointer(bp + 20)) = 3
 60187  
 60188  	if !(objc < 2 || 0 != objc%2) {
 60189  		goto __1
 60190  	}
 60191  	goto bad_args
 60192  __1:
 60193  	;
 60194  	i = 2
 60195  __2:
 60196  	if !(i < objc) {
 60197  		goto __4
 60198  	}
 60199  	zSwitch = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(i)*8)), bp)
 60200  
 60201  	if !(*(*int32)(unsafe.Pointer(bp)) > 2 && 0 == libc.Xstrncmp(tls, ts+39003, zSwitch, uint64(*(*int32)(unsafe.Pointer(bp))))) {
 60202  		goto __5
 60203  	}
 60204  	if !(tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(i+1)*8)), bp+4) != 0) {
 60205  		goto __7
 60206  	}
 60207  	return TCL_ERROR
 60208  __7:
 60209  	;
 60210  	if !(*(*int32)(unsafe.Pointer(bp + 4)) != 0) {
 60211  		goto __8
 60212  	}
 60213  	*(*int32)(unsafe.Pointer(bp + 24)) = 0
 60214  __8:
 60215  	;
 60216  	goto __6
 60217  __5:
 60218  	if !(*(*int32)(unsafe.Pointer(bp)) > 2 && 0 == libc.Xstrncmp(tls, ts+26779, zSwitch, uint64(*(*int32)(unsafe.Pointer(bp))))) {
 60219  		goto __9
 60220  	}
 60221  	if !(tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(i+1)*8)), bp+8) != 0) {
 60222  		goto __11
 60223  	}
 60224  	return TCL_ERROR
 60225  __11:
 60226  	;
 60227  	goto __10
 60228  __9:
 60229  	if !(*(*int32)(unsafe.Pointer(bp)) > 2 && 0 == libc.Xstrncmp(tls, ts+39010, zSwitch, uint64(*(*int32)(unsafe.Pointer(bp))))) {
 60230  		goto __12
 60231  	}
 60232  	if !(tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(i+1)*8)), bp+12) != 0) {
 60233  		goto __14
 60234  	}
 60235  	return TCL_ERROR
 60236  __14:
 60237  	;
 60238  	goto __13
 60239  __12:
 60240  	if !(*(*int32)(unsafe.Pointer(bp)) > 2 && 0 == libc.Xstrncmp(tls, ts+39020, zSwitch, uint64(*(*int32)(unsafe.Pointer(bp))))) {
 60241  		goto __15
 60242  	}
 60243  	if !(tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(i+1)*8)), bp+16) != 0) {
 60244  		goto __17
 60245  	}
 60246  	return TCL_ERROR
 60247  __17:
 60248  	;
 60249  	goto __16
 60250  __15:
 60251  	if !(*(*int32)(unsafe.Pointer(bp)) > 2 && 0 == libc.Xstrncmp(tls, ts+39032, zSwitch, uint64(*(*int32)(unsafe.Pointer(bp))))) {
 60252  		goto __18
 60253  	}
 60254  	if !(tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(i+1)*8)), bp+20) != 0) {
 60255  		goto __20
 60256  	}
 60257  	return TCL_ERROR
 60258  __20:
 60259  	;
 60260  	goto __19
 60261  __18:
 60262  	if !(*(*int32)(unsafe.Pointer(bp)) > 2 && 0 == libc.Xstrncmp(tls, ts+39042, zSwitch, uint64(*(*int32)(unsafe.Pointer(bp))))) {
 60263  		goto __21
 60264  	}
 60265  	if !(tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(i+1)*8)), bp+24) != 0) {
 60266  		goto __23
 60267  	}
 60268  	return TCL_ERROR
 60269  __23:
 60270  	;
 60271  	if !(*(*int32)(unsafe.Pointer(bp + 24)) != 0) {
 60272  		goto __24
 60273  	}
 60274  	*(*int32)(unsafe.Pointer(bp + 4)) = 0
 60275  __24:
 60276  	;
 60277  	goto __22
 60278  __21:
 60279  	goto bad_args
 60280  __22:
 60281  	;
 60282  __19:
 60283  	;
 60284  __16:
 60285  	;
 60286  __13:
 60287  	;
 60288  __10:
 60289  	;
 60290  __6:
 60291  	;
 60292  	goto __3
 60293  __3:
 60294  	i = i + 2
 60295  	goto __2
 60296  	goto __4
 60297  __4:
 60298  	;
 60299  	if !(uint64(*(*int32)(unsafe.Pointer(bp + 12))) < uint64(unsafe.Sizeof(TestvfsFile{}))) {
 60300  		goto __25
 60301  	}
 60302  	*(*int32)(unsafe.Pointer(bp + 12)) = int32(unsafe.Sizeof(TestvfsFile{}))
 60303  __25:
 60304  	;
 60305  	zVfs = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 60306  	nByte = int32(uint64(unsafe.Sizeof(Testvfs{})) + uint64(int32(libc.Xstrlen(tls, zVfs))) + uint64(1))
 60307  	p = tcl.XTcl_Alloc(tls, uint32(nByte))
 60308  	libc.Xmemset(tls, p, 0, uint64(nByte))
 60309  	(*Testvfs)(unsafe.Pointer(p)).FiDevchar = -1
 60310  	(*Testvfs)(unsafe.Pointer(p)).FiSectorsize = -1
 60311  
 60312  	tcl.XTcl_CreateObjCommand(tls, interp, zVfs, *(*uintptr)(unsafe.Pointer(&struct {
 60313  		f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
 60314  	}{testvfs_obj_cmd})), p, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, ClientData) }{testvfs_obj_del})))
 60315  	(*Testvfs)(unsafe.Pointer(p)).FpParent = sqlite3.Xsqlite3_vfs_find(tls, uintptr(0))
 60316  	(*Testvfs)(unsafe.Pointer(p)).Finterp = interp
 60317  
 60318  	(*Testvfs)(unsafe.Pointer(p)).FzName = p + 1*104
 60319  	libc.Xmemcpy(tls, (*Testvfs)(unsafe.Pointer(p)).FzName, zVfs, libc.Xstrlen(tls, zVfs)+uint64(1))
 60320  
 60321  	pVfs = tcl.XTcl_Alloc(tls, uint32(unsafe.Sizeof(sqlite3_vfs{})))
 60322  	libc.Xmemcpy(tls, pVfs, uintptr(unsafe.Pointer(&tvfs_vfs)), uint64(unsafe.Sizeof(sqlite3_vfs{})))
 60323  	(*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData = p
 60324  	(*sqlite3_vfs)(unsafe.Pointer(pVfs)).FiVersion = *(*int32)(unsafe.Pointer(bp + 20))
 60325  	(*sqlite3_vfs)(unsafe.Pointer(pVfs)).FzName = (*Testvfs)(unsafe.Pointer(p)).FzName
 60326  	(*sqlite3_vfs)(unsafe.Pointer(pVfs)).FmxPathname = (*sqlite3_vfs)(unsafe.Pointer((*Testvfs)(unsafe.Pointer(p)).FpParent)).FmxPathname
 60327  	if !(*(*int32)(unsafe.Pointer(bp + 16)) >= 0 && *(*int32)(unsafe.Pointer(bp + 16)) < (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FmxPathname) {
 60328  		goto __26
 60329  	}
 60330  	(*sqlite3_vfs)(unsafe.Pointer(pVfs)).FmxPathname = *(*int32)(unsafe.Pointer(bp + 16))
 60331  __26:
 60332  	;
 60333  	(*sqlite3_vfs)(unsafe.Pointer(pVfs)).FszOsFile = *(*int32)(unsafe.Pointer(bp + 12))
 60334  	(*Testvfs)(unsafe.Pointer(p)).FpVfs = pVfs
 60335  	(*Testvfs)(unsafe.Pointer(p)).FisNoshm = *(*int32)(unsafe.Pointer(bp + 4))
 60336  	(*Testvfs)(unsafe.Pointer(p)).FisFullshm = *(*int32)(unsafe.Pointer(bp + 24))
 60337  	(*Testvfs)(unsafe.Pointer(p)).Fmask = TESTVFS_ALL_MASK
 60338  
 60339  	sqlite3.Xsqlite3_vfs_register(tls, pVfs, *(*int32)(unsafe.Pointer(bp + 8)))
 60340  
 60341  	return TCL_OK
 60342  
 60343  bad_args:
 60344  	tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+39051)
 60345  	return TCL_ERROR
 60346  }
 60347  
 60348  var tvfs_vfs = sqlite3_vfs{
 60349  	FiVersion:      3,
 60350  	FxOpen:         0,
 60351  	FxDelete:       0,
 60352  	FxAccess:       0,
 60353  	FxFullPathname: 0,
 60354  	FxRandomness:   0,
 60355  	FxSleep:        0,
 60356  	FxCurrentTime:  0,
 60357  }
 60358  
 60359  func test_vfs_shmlock(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 60360  	bp := tls.Alloc(88)
 60361  	defer tls.Free(88)
 60362  
 60363  	*(*[3]uintptr)(unsafe.Pointer(bp + 8)) = [3]uintptr{ts + 39155, ts + 13978, uintptr(0)}
 60364  	*(*[3]uintptr)(unsafe.Pointer(bp + 40)) = [3]uintptr{ts + 39162, ts + 39167, uintptr(0)}
 60365  	*(*uintptr)(unsafe.Pointer(bp)) = uintptr(0)
 60366  	var rc int32 = SQLITE_OK
 60367  	var zDbname uintptr = uintptr(0)
 60368  	*(*int32)(unsafe.Pointer(bp + 32)) = 0
 60369  	*(*int32)(unsafe.Pointer(bp + 64)) = 0
 60370  	*(*int32)(unsafe.Pointer(bp + 68)) = 0
 60371  	*(*int32)(unsafe.Pointer(bp + 72)) = 0
 60372  
 60373  	if objc != 7 {
 60374  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv,
 60375  			ts+39174)
 60376  		return TCL_ERROR
 60377  	}
 60378  
 60379  	zDbname = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 60380  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 ||
 60381  		tcl.XTcl_GetIndexFromObjStruct(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+8, int32(unsafe.Sizeof(uintptr(0))), ts+39226, 0, bp+32) != 0 ||
 60382  		tcl.XTcl_GetIndexFromObjStruct(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 4*8)), bp+40, int32(unsafe.Sizeof(uintptr(0))), ts+39226, 0, bp+64) != 0 ||
 60383  		tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 5*8)), bp+68) != 0 ||
 60384  		tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 6*8)), bp+72) != 0 {
 60385  		return TCL_ERROR
 60386  	}
 60387  
 60388  	sqlite3.Xsqlite3_file_control(tls, *(*uintptr)(unsafe.Pointer(bp)), zDbname, SQLITE_FCNTL_FILE_POINTER, bp+80)
 60389  	if *(*uintptr)(unsafe.Pointer(bp + 80)) == uintptr(0) {
 60390  		return TCL_ERROR
 60391  	}
 60392  	rc = (*struct {
 60393  		f func(*libc.TLS, uintptr, int32, int32, int32) int32
 60394  	})(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)),
 60395  		func() int32 {
 60396  			if *(*int32)(unsafe.Pointer(bp + 32)) == 0 {
 60397  				return SQLITE_SHM_SHARED
 60398  			}
 60399  			return SQLITE_SHM_EXCLUSIVE
 60400  		}()|
 60401  			func() int32 {
 60402  				if *(*int32)(unsafe.Pointer(bp + 64)) == 0 {
 60403  					return SQLITE_SHM_LOCK
 60404  				}
 60405  				return SQLITE_SHM_UNLOCK
 60406  			}())
 60407  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3ErrName(tls, rc), -1))
 60408  	return TCL_OK
 60409  }
 60410  
 60411  func test_vfs_set_readmark(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 60412  	bp := tls.Alloc(48)
 60413  	defer tls.Free(48)
 60414  
 60415  	*(*uintptr)(unsafe.Pointer(bp + 16)) = uintptr(0)
 60416  	var rc int32 = SQLITE_OK
 60417  	var zDbname uintptr = uintptr(0)
 60418  	*(*int32)(unsafe.Pointer(bp + 24)) = 0
 60419  	*(*int32)(unsafe.Pointer(bp + 28)) = -1
 60420  
 60421  	*(*uintptr)(unsafe.Pointer(bp + 40)) = uintptr(0)
 60422  	var aShm uintptr
 60423  	var iOff int32
 60424  
 60425  	if objc != 4 && objc != 5 {
 60426  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+39230)
 60427  		return TCL_ERROR
 60428  	}
 60429  
 60430  	zDbname = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 60431  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+16) != 0 ||
 60432  		tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+24) != 0 ||
 60433  		objc == 5 && tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 4*8)), bp+28) != 0 {
 60434  		return TCL_ERROR
 60435  	}
 60436  
 60437  	sqlite3.Xsqlite3_file_control(tls, *(*uintptr)(unsafe.Pointer(bp + 16)), zDbname, SQLITE_FCNTL_FILE_POINTER, bp+32)
 60438  	if *(*uintptr)(unsafe.Pointer(bp + 32)) == uintptr(0) {
 60439  		return TCL_ERROR
 60440  	}
 60441  	rc = (*struct {
 60442  		f func(*libc.TLS, uintptr, int32, int32, int32, uintptr) int32
 60443  	})(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)
 60444  	if rc != SQLITE_OK {
 60445  		tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3ErrName(tls, rc), -1))
 60446  		return TCL_ERROR
 60447  	}
 60448  	if *(*uintptr)(unsafe.Pointer(bp + 40)) == uintptr(0) {
 60449  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+39253, 0))
 60450  		return TCL_ERROR
 60451  	}
 60452  	aShm = *(*uintptr)(unsafe.Pointer(bp + 40))
 60453  	iOff = 12*2 + 1 + *(*int32)(unsafe.Pointer(bp + 24))
 60454  
 60455  	if objc == 5 {
 60456  		*(*u32)(unsafe.Pointer(aShm + uintptr(iOff)*4)) = u32(*(*int32)(unsafe.Pointer(bp + 28)))
 60457  	}
 60458  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, int32(*(*u32)(unsafe.Pointer(aShm + uintptr(iOff)*4)))))
 60459  
 60460  	return TCL_OK
 60461  }
 60462  
 60463  func Sqlitetestvfs_Init(tls *libc.TLS, interp uintptr) int32 {
 60464  	tcl.XTcl_CreateObjCommand(tls, interp, ts+39277, *(*uintptr)(unsafe.Pointer(&struct {
 60465  		f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
 60466  	}{testvfs_cmd})), uintptr(0), uintptr(0))
 60467  	tcl.XTcl_CreateObjCommand(tls, interp, ts+39285, *(*uintptr)(unsafe.Pointer(&struct {
 60468  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60469  	}{test_vfs_shmlock})), uintptr(0), uintptr(0))
 60470  	tcl.XTcl_CreateObjCommand(tls, interp, ts+39297, *(*uintptr)(unsafe.Pointer(&struct {
 60471  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60472  	}{test_vfs_set_readmark})), uintptr(0), uintptr(0))
 60473  	return TCL_OK
 60474  }
 60475  
 60476  type TestWindow1 = struct {
 60477  	FxStep    uintptr
 60478  	FxFinal   uintptr
 60479  	FxValue   uintptr
 60480  	FxInverse uintptr
 60481  	Finterp   uintptr
 60482  }
 60483  
 60484  type TestWindow = TestWindow1
 60485  
 60486  type TestWindowCtx1 = struct{ FpVal uintptr }
 60487  
 60488  type TestWindowCtx = TestWindowCtx1
 60489  
 60490  func doTestWindowStep(tls *libc.TLS, bInverse int32, ctx uintptr, nArg int32, apArg uintptr) {
 60491  	var i int32
 60492  	var p uintptr = sqlite3.Xsqlite3_user_data(tls, ctx)
 60493  	var pEval uintptr = tcl.XTcl_DuplicateObj(tls, func() uintptr {
 60494  		if bInverse != 0 {
 60495  			return (*TestWindow)(unsafe.Pointer(p)).FxInverse
 60496  		}
 60497  		return (*TestWindow)(unsafe.Pointer(p)).FxStep
 60498  	}())
 60499  	var pCtx uintptr = sqlite3.Xsqlite3_aggregate_context(tls, ctx, int32(unsafe.Sizeof(TestWindowCtx{})))
 60500  
 60501  	(*Tcl_Obj)(unsafe.Pointer(pEval)).FrefCount++
 60502  	if pCtx != 0 {
 60503  		var zResult uintptr
 60504  		var rc int32
 60505  		if (*TestWindowCtx)(unsafe.Pointer(pCtx)).FpVal != 0 {
 60506  			tcl.XTcl_ListObjAppendElement(tls, (*TestWindow)(unsafe.Pointer(p)).Finterp, pEval, tcl.XTcl_DuplicateObj(tls, (*TestWindowCtx)(unsafe.Pointer(pCtx)).FpVal))
 60507  		} else {
 60508  			tcl.XTcl_ListObjAppendElement(tls, (*TestWindow)(unsafe.Pointer(p)).Finterp, pEval, tcl.XTcl_NewStringObj(tls, ts+584, -1))
 60509  		}
 60510  		for i = 0; i < nArg; i++ {
 60511  			var pArg uintptr
 60512  			pArg = tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(apArg + uintptr(i)*8))), -1)
 60513  			tcl.XTcl_ListObjAppendElement(tls, (*TestWindow)(unsafe.Pointer(p)).Finterp, pEval, pArg)
 60514  		}
 60515  		rc = tcl.XTcl_EvalObjEx(tls, (*TestWindow)(unsafe.Pointer(p)).Finterp, pEval, TCL_EVAL_GLOBAL)
 60516  		if rc != TCL_OK {
 60517  			zResult = tcl.XTcl_GetStringResult(tls, (*TestWindow)(unsafe.Pointer(p)).Finterp)
 60518  			sqlite3.Xsqlite3_result_error(tls, ctx, zResult, -1)
 60519  		} else {
 60520  			if (*TestWindowCtx)(unsafe.Pointer(pCtx)).FpVal != 0 {
 60521  				for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 60522  					var _objPtr uintptr = (*TestWindowCtx)(unsafe.Pointer(pCtx)).FpVal
 60523  					if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 60524  						tcl.XTclFreeObj(tls, _objPtr)
 60525  					}
 60526  				}
 60527  			}
 60528  			(*TestWindowCtx)(unsafe.Pointer(pCtx)).FpVal = tcl.XTcl_DuplicateObj(tls, tcl.XTcl_GetObjResult(tls, (*TestWindow)(unsafe.Pointer(p)).Finterp))
 60529  			(*Tcl_Obj)(unsafe.Pointer((*TestWindowCtx)(unsafe.Pointer(pCtx)).FpVal)).FrefCount++
 60530  		}
 60531  	}
 60532  	for __ccgo1 := true; __ccgo1; __ccgo1 = 0 != 0 {
 60533  		var _objPtr uintptr = pEval
 60534  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 60535  			tcl.XTclFreeObj(tls, _objPtr)
 60536  		}
 60537  	}
 60538  }
 60539  
 60540  func doTestWindowFinalize(tls *libc.TLS, bValue int32, ctx uintptr) {
 60541  	var p uintptr = sqlite3.Xsqlite3_user_data(tls, ctx)
 60542  	var pEval uintptr = tcl.XTcl_DuplicateObj(tls, func() uintptr {
 60543  		if bValue != 0 {
 60544  			return (*TestWindow)(unsafe.Pointer(p)).FxValue
 60545  		}
 60546  		return (*TestWindow)(unsafe.Pointer(p)).FxFinal
 60547  	}())
 60548  	var pCtx uintptr = sqlite3.Xsqlite3_aggregate_context(tls, ctx, int32(unsafe.Sizeof(TestWindowCtx{})))
 60549  
 60550  	(*Tcl_Obj)(unsafe.Pointer(pEval)).FrefCount++
 60551  	if pCtx != 0 {
 60552  		var zResult uintptr
 60553  		var rc int32
 60554  		if (*TestWindowCtx)(unsafe.Pointer(pCtx)).FpVal != 0 {
 60555  			tcl.XTcl_ListObjAppendElement(tls, (*TestWindow)(unsafe.Pointer(p)).Finterp, pEval, tcl.XTcl_DuplicateObj(tls, (*TestWindowCtx)(unsafe.Pointer(pCtx)).FpVal))
 60556  		} else {
 60557  			tcl.XTcl_ListObjAppendElement(tls, (*TestWindow)(unsafe.Pointer(p)).Finterp, pEval, tcl.XTcl_NewStringObj(tls, ts+584, -1))
 60558  		}
 60559  
 60560  		rc = tcl.XTcl_EvalObjEx(tls, (*TestWindow)(unsafe.Pointer(p)).Finterp, pEval, TCL_EVAL_GLOBAL)
 60561  		zResult = tcl.XTcl_GetStringResult(tls, (*TestWindow)(unsafe.Pointer(p)).Finterp)
 60562  		if rc != TCL_OK {
 60563  			sqlite3.Xsqlite3_result_error(tls, ctx, zResult, -1)
 60564  		} else {
 60565  			sqlite3.Xsqlite3_result_text(tls, ctx, zResult, -1, libc.UintptrFromInt32(-1))
 60566  		}
 60567  
 60568  		if bValue == 0 {
 60569  			if (*TestWindowCtx)(unsafe.Pointer(pCtx)).FpVal != 0 {
 60570  				for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 60571  					var _objPtr uintptr = (*TestWindowCtx)(unsafe.Pointer(pCtx)).FpVal
 60572  					if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 60573  						tcl.XTclFreeObj(tls, _objPtr)
 60574  					}
 60575  				}
 60576  			}
 60577  			(*TestWindowCtx)(unsafe.Pointer(pCtx)).FpVal = uintptr(0)
 60578  		}
 60579  	}
 60580  	for __ccgo1 := true; __ccgo1; __ccgo1 = 0 != 0 {
 60581  		var _objPtr uintptr = pEval
 60582  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 60583  			tcl.XTclFreeObj(tls, _objPtr)
 60584  		}
 60585  	}
 60586  }
 60587  
 60588  func testWindowStep(tls *libc.TLS, ctx uintptr, nArg int32, apArg uintptr) {
 60589  	doTestWindowStep(tls, 0, ctx, nArg, apArg)
 60590  }
 60591  
 60592  func testWindowInverse(tls *libc.TLS, ctx uintptr, nArg int32, apArg uintptr) {
 60593  	doTestWindowStep(tls, 1, ctx, nArg, apArg)
 60594  }
 60595  
 60596  func testWindowFinal(tls *libc.TLS, ctx uintptr) {
 60597  	doTestWindowFinalize(tls, 0, ctx)
 60598  }
 60599  
 60600  func testWindowValue(tls *libc.TLS, ctx uintptr) {
 60601  	doTestWindowFinalize(tls, 1, ctx)
 60602  }
 60603  
 60604  func testWindowDestroy(tls *libc.TLS, pCtx uintptr) {
 60605  	tcl.XTcl_Free(tls, pCtx)
 60606  }
 60607  
 60608  func test_create_window(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 60609  	bp := tls.Alloc(8)
 60610  	defer tls.Free(8)
 60611  
 60612  	var pNew uintptr
 60613  
 60614  	var zName uintptr
 60615  	var rc int32
 60616  
 60617  	if objc != 7 {
 60618  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+39314)
 60619  		return TCL_ERROR
 60620  	}
 60621  
 60622  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 60623  		return TCL_ERROR
 60624  	}
 60625  	zName = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 60626  	pNew = tcl.XTcl_Alloc(tls, uint32(unsafe.Sizeof(TestWindow{})))
 60627  	libc.Xmemset(tls, pNew, 0, uint64(unsafe.Sizeof(TestWindow{})))
 60628  	(*TestWindow)(unsafe.Pointer(pNew)).FxStep = tcl.XTcl_DuplicateObj(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)))
 60629  	(*TestWindow)(unsafe.Pointer(pNew)).FxFinal = tcl.XTcl_DuplicateObj(tls, *(*uintptr)(unsafe.Pointer(objv + 4*8)))
 60630  	(*TestWindow)(unsafe.Pointer(pNew)).FxValue = tcl.XTcl_DuplicateObj(tls, *(*uintptr)(unsafe.Pointer(objv + 5*8)))
 60631  	(*TestWindow)(unsafe.Pointer(pNew)).FxInverse = tcl.XTcl_DuplicateObj(tls, *(*uintptr)(unsafe.Pointer(objv + 6*8)))
 60632  	(*TestWindow)(unsafe.Pointer(pNew)).Finterp = interp
 60633  
 60634  	(*Tcl_Obj)(unsafe.Pointer((*TestWindow)(unsafe.Pointer(pNew)).FxStep)).FrefCount++
 60635  	(*Tcl_Obj)(unsafe.Pointer((*TestWindow)(unsafe.Pointer(pNew)).FxFinal)).FrefCount++
 60636  	(*Tcl_Obj)(unsafe.Pointer((*TestWindow)(unsafe.Pointer(pNew)).FxValue)).FrefCount++
 60637  	(*Tcl_Obj)(unsafe.Pointer((*TestWindow)(unsafe.Pointer(pNew)).FxInverse)).FrefCount++
 60638  
 60639  	rc = sqlite3.Xsqlite3_create_window_function(tls, *(*uintptr)(unsafe.Pointer(bp)), zName, -1, SQLITE_UTF8, pNew,
 60640  		*(*uintptr)(unsafe.Pointer(&struct {
 60641  			f func(*libc.TLS, uintptr, int32, uintptr)
 60642  		}{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 {
 60643  			f func(*libc.TLS, uintptr, int32, uintptr)
 60644  		}{testWindowInverse})),
 60645  		*(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{testWindowDestroy})))
 60646  	if rc != SQLITE_OK {
 60647  		tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3ErrName(tls, rc), -1))
 60648  		return TCL_ERROR
 60649  	}
 60650  
 60651  	return TCL_OK
 60652  }
 60653  
 60654  func test_create_window_misuse(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 60655  	bp := tls.Alloc(8)
 60656  	defer tls.Free(8)
 60657  
 60658  	var rc int32
 60659  
 60660  	if !(objc != 2) {
 60661  		goto __1
 60662  	}
 60663  	tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2050)
 60664  	return TCL_ERROR
 60665  __1:
 60666  	;
 60667  	if !(getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0) {
 60668  		goto __2
 60669  	}
 60670  	return TCL_ERROR
 60671  __2:
 60672  	;
 60673  	rc = sqlite3.Xsqlite3_create_window_function(tls, *(*uintptr)(unsafe.Pointer(bp)), ts+39351, -1, SQLITE_UTF8, uintptr(0),
 60674  		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 {
 60675  			f func(*libc.TLS, uintptr, int32, uintptr)
 60676  		}{testWindowInverse})),
 60677  		uintptr(0))
 60678  	if !(rc != SQLITE_MISUSE) {
 60679  		goto __3
 60680  	}
 60681  	goto error
 60682  __3:
 60683  	;
 60684  	rc = sqlite3.Xsqlite3_create_window_function(tls, *(*uintptr)(unsafe.Pointer(bp)), ts+39351, -1, SQLITE_UTF8, uintptr(0),
 60685  		*(*uintptr)(unsafe.Pointer(&struct {
 60686  			f func(*libc.TLS, uintptr, int32, uintptr)
 60687  		}{testWindowStep})), uintptr(0), *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{testWindowValue})), *(*uintptr)(unsafe.Pointer(&struct {
 60688  			f func(*libc.TLS, uintptr, int32, uintptr)
 60689  		}{testWindowInverse})),
 60690  		uintptr(0))
 60691  	if !(rc != SQLITE_MISUSE) {
 60692  		goto __4
 60693  	}
 60694  	goto error
 60695  __4:
 60696  	;
 60697  	rc = sqlite3.Xsqlite3_create_window_function(tls, *(*uintptr)(unsafe.Pointer(bp)), ts+39351, -1, SQLITE_UTF8, uintptr(0),
 60698  		*(*uintptr)(unsafe.Pointer(&struct {
 60699  			f func(*libc.TLS, uintptr, int32, uintptr)
 60700  		}{testWindowStep})), *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{testWindowFinal})), uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 60701  			f func(*libc.TLS, uintptr, int32, uintptr)
 60702  		}{testWindowInverse})),
 60703  		uintptr(0))
 60704  	if !(rc != SQLITE_MISUSE) {
 60705  		goto __5
 60706  	}
 60707  	goto error
 60708  __5:
 60709  	;
 60710  	rc = sqlite3.Xsqlite3_create_window_function(tls, *(*uintptr)(unsafe.Pointer(bp)), ts+39351, -1, SQLITE_UTF8, uintptr(0),
 60711  		*(*uintptr)(unsafe.Pointer(&struct {
 60712  			f func(*libc.TLS, uintptr, int32, uintptr)
 60713  		}{testWindowStep})), *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{testWindowFinal})), *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{testWindowValue})), uintptr(0),
 60714  		uintptr(0))
 60715  	if !(rc != SQLITE_MISUSE) {
 60716  		goto __6
 60717  	}
 60718  	goto error
 60719  __6:
 60720  	;
 60721  	return TCL_OK
 60722  
 60723  error:
 60724  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, ts+39355, -1))
 60725  	return TCL_ERROR
 60726  }
 60727  
 60728  func sumintStep(tls *libc.TLS, ctx uintptr, nArg int32, apArg uintptr) {
 60729  	var pInt uintptr
 60730  
 60731  	if sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(apArg))) != SQLITE_INTEGER {
 60732  		sqlite3.Xsqlite3_result_error(tls, ctx, ts+39373, -1)
 60733  		return
 60734  	}
 60735  	pInt = sqlite3.Xsqlite3_aggregate_context(tls, ctx, int32(unsafe.Sizeof(sqlite3_int64(0))))
 60736  	if pInt != 0 {
 60737  		*(*sqlite3_int64)(unsafe.Pointer(pInt)) += sqlite3.Xsqlite3_value_int64(tls, *(*uintptr)(unsafe.Pointer(apArg)))
 60738  	}
 60739  }
 60740  
 60741  func sumintInverse(tls *libc.TLS, ctx uintptr, nArg int32, apArg uintptr) {
 60742  	var pInt uintptr
 60743  	pInt = sqlite3.Xsqlite3_aggregate_context(tls, ctx, int32(unsafe.Sizeof(sqlite3_int64(0))))
 60744  	*(*sqlite3_int64)(unsafe.Pointer(pInt)) -= sqlite3.Xsqlite3_value_int64(tls, *(*uintptr)(unsafe.Pointer(apArg)))
 60745  }
 60746  
 60747  func sumintFinal(tls *libc.TLS, ctx uintptr) {
 60748  	var res sqlite3_int64 = int64(0)
 60749  	var pInt uintptr
 60750  	pInt = sqlite3.Xsqlite3_aggregate_context(tls, ctx, 0)
 60751  	if pInt != 0 {
 60752  		res = *(*sqlite3_int64)(unsafe.Pointer(pInt))
 60753  	}
 60754  	sqlite3.Xsqlite3_result_int64(tls, ctx, res)
 60755  }
 60756  
 60757  func sumintValue(tls *libc.TLS, ctx uintptr) {
 60758  	var res sqlite3_int64 = int64(0)
 60759  	var pInt uintptr
 60760  	pInt = sqlite3.Xsqlite3_aggregate_context(tls, ctx, 0)
 60761  	if pInt != 0 {
 60762  		res = *(*sqlite3_int64)(unsafe.Pointer(pInt))
 60763  	}
 60764  	sqlite3.Xsqlite3_result_int64(tls, ctx, res)
 60765  }
 60766  
 60767  func test_create_sumint(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 60768  	bp := tls.Alloc(8)
 60769  	defer tls.Free(8)
 60770  
 60771  	var rc int32
 60772  
 60773  	if objc != 2 {
 60774  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2050)
 60775  		return TCL_ERROR
 60776  	}
 60777  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 60778  		return TCL_ERROR
 60779  	}
 60780  
 60781  	rc = sqlite3.Xsqlite3_create_window_function(tls, *(*uintptr)(unsafe.Pointer(bp)), ts+39390, 1, SQLITE_UTF8, uintptr(0),
 60782  		*(*uintptr)(unsafe.Pointer(&struct {
 60783  			f func(*libc.TLS, uintptr, int32, uintptr)
 60784  		}{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 {
 60785  			f func(*libc.TLS, uintptr, int32, uintptr)
 60786  		}{sumintInverse})),
 60787  		uintptr(0))
 60788  
 60789  	if rc != SQLITE_OK {
 60790  		tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3ErrName(tls, rc), -1))
 60791  		return TCL_ERROR
 60792  	}
 60793  	return TCL_OK
 60794  }
 60795  
 60796  func test_override_sum(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 60797  	bp := tls.Alloc(8)
 60798  	defer tls.Free(8)
 60799  
 60800  	var rc int32
 60801  
 60802  	if objc != 2 {
 60803  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2050)
 60804  		return TCL_ERROR
 60805  	}
 60806  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 60807  		return TCL_ERROR
 60808  	}
 60809  
 60810  	rc = sqlite3.Xsqlite3_create_function(tls, *(*uintptr)(unsafe.Pointer(bp)), ts+39397, -1, SQLITE_UTF8, uintptr(0),
 60811  		uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 60812  			f func(*libc.TLS, uintptr, int32, uintptr)
 60813  		}{sumintStep})), *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{sumintFinal})))
 60814  
 60815  	if rc != SQLITE_OK {
 60816  		tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3ErrName(tls, rc), -1))
 60817  		return TCL_ERROR
 60818  	}
 60819  	return TCL_OK
 60820  }
 60821  
 60822  func Sqlitetest_window_Init(tls *libc.TLS, interp uintptr) int32 {
 60823  	var i int32
 60824  	for i = 0; uint64(i) < uint64(unsafe.Sizeof(aObjCmd14))/uint64(unsafe.Sizeof(struct {
 60825  		FzName       uintptr
 60826  		FxProc       uintptr
 60827  		FclientData  int32
 60828  		F__ccgo_pad1 [4]byte
 60829  	}{})); i++ {
 60830  		var c ClientData = uintptr(intptr_t(aObjCmd14[i].FclientData))
 60831  		tcl.XTcl_CreateObjCommand(tls, interp, aObjCmd14[i].FzName, aObjCmd14[i].FxProc, c, uintptr(0))
 60832  	}
 60833  	return TCL_OK
 60834  }
 60835  
 60836  var aObjCmd14 = [4]struct {
 60837  	FzName       uintptr
 60838  	FxProc       uintptr
 60839  	FclientData  int32
 60840  	F__ccgo_pad1 [4]byte
 60841  }{
 60842  	{FzName: ts + 39401, FxProc: 0},
 60843  	{FzName: ts + 39432, FxProc: 0},
 60844  	{FzName: ts + 39467, FxProc: 0},
 60845  	{FzName: ts + 39486, FxProc: 0},
 60846  }
 60847  
 60848  func init() {
 60849  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CrashFileVtab)) + 8)) = cfClose
 60850  	*(*func(*libc.TLS, uintptr, uintptr, int32, sqlite_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CrashFileVtab)) + 16)) = cfRead
 60851  	*(*func(*libc.TLS, uintptr, uintptr, int32, sqlite_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CrashFileVtab)) + 24)) = cfWrite
 60852  	*(*func(*libc.TLS, uintptr, sqlite_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CrashFileVtab)) + 32)) = cfTruncate
 60853  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CrashFileVtab)) + 40)) = cfSync
 60854  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CrashFileVtab)) + 48)) = cfFileSize
 60855  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CrashFileVtab)) + 56)) = cfLock
 60856  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CrashFileVtab)) + 64)) = cfUnlock
 60857  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CrashFileVtab)) + 72)) = cfCheckReservedLock
 60858  	*(*func(*libc.TLS, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CrashFileVtab)) + 80)) = cfFileControl
 60859  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CrashFileVtab)) + 88)) = cfSectorSize
 60860  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CrashFileVtab)) + 96)) = cfDeviceCharacteristics
 60861  	*(*func(*libc.TLS, uintptr, int32, int32, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CrashFileVtab)) + 104)) = cfShmMap
 60862  	*(*func(*libc.TLS, uintptr, int32, int32, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CrashFileVtab)) + 112)) = cfShmLock
 60863  	*(*func(*libc.TLS, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&CrashFileVtab)) + 120)) = cfShmBarrier
 60864  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CrashFileVtab)) + 128)) = cfShmUnmap
 60865  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CsvModule)) + 8)) = csvtabCreate
 60866  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CsvModule)) + 16)) = csvtabConnect
 60867  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CsvModule)) + 24)) = csvtabBestIndex
 60868  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CsvModule)) + 32)) = csvtabDisconnect
 60869  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CsvModule)) + 40)) = csvtabDisconnect
 60870  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CsvModule)) + 48)) = csvtabOpen
 60871  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CsvModule)) + 56)) = csvtabClose
 60872  	*(*func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CsvModule)) + 64)) = csvtabFilter
 60873  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CsvModule)) + 72)) = csvtabNext
 60874  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CsvModule)) + 80)) = csvtabEof
 60875  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CsvModule)) + 88)) = csvtabColumn
 60876  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CsvModule)) + 96)) = csvtabRowid
 60877  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CsvModuleFauxWrite)) + 8)) = csvtabCreate
 60878  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CsvModuleFauxWrite)) + 16)) = csvtabConnect
 60879  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CsvModuleFauxWrite)) + 24)) = csvtabBestIndex
 60880  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CsvModuleFauxWrite)) + 32)) = csvtabDisconnect
 60881  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CsvModuleFauxWrite)) + 40)) = csvtabDisconnect
 60882  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CsvModuleFauxWrite)) + 48)) = csvtabOpen
 60883  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CsvModuleFauxWrite)) + 56)) = csvtabClose
 60884  	*(*func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CsvModuleFauxWrite)) + 64)) = csvtabFilter
 60885  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CsvModuleFauxWrite)) + 72)) = csvtabNext
 60886  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CsvModuleFauxWrite)) + 80)) = csvtabEof
 60887  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CsvModuleFauxWrite)) + 88)) = csvtabColumn
 60888  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CsvModuleFauxWrite)) + 96)) = csvtabRowid
 60889  	*(*func(*libc.TLS, uintptr, int32, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CsvModuleFauxWrite)) + 104)) = csvtabUpdate
 60890  	*(*func(*libc.TLS, ClientData, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&IncrblobChannelType)) + 16)) = incrblobClose
 60891  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&IncrblobChannelType)) + 24)) = incrblobInput
 60892  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&IncrblobChannelType)) + 32)) = incrblobOutput
 60893  	*(*func(*libc.TLS, ClientData, int64, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&IncrblobChannelType)) + 40)) = incrblobSeek
 60894  	*(*func(*libc.TLS, ClientData, int32))(unsafe.Pointer(uintptr(unsafe.Pointer(&IncrblobChannelType)) + 64)) = incrblobWatch
 60895  	*(*func(*libc.TLS, ClientData, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&IncrblobChannelType)) + 72)) = incrblobHandle
 60896  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd)) + 8)) = f5tCreateTokenizer
 60897  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd)) + 32)) = f5tTokenizerReturn
 60898  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd)) + 56)) = f5tTokenize
 60899  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd)) + 80)) = f5tCreateFunction
 60900  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd)) + 104)) = f5tMayBeCorrupt
 60901  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd)) + 128)) = f5tTokenHash
 60902  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd)) + 152)) = f5tRegisterMatchinfo
 60903  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd)) + 176)) = f5tRegisterTok
 60904  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 8)) = *(*uintptr)(unsafe.Pointer(&struct {
 60905  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60906  	}{db_enter}))
 60907  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 24)) = *(*uintptr)(unsafe.Pointer(&struct {
 60908  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60909  	}{db_leave}))
 60910  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 40)) = *(*uintptr)(unsafe.Pointer(&struct {
 60911  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60912  	}{sqlite3_mprintf_int}))
 60913  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 56)) = *(*uintptr)(unsafe.Pointer(&struct {
 60914  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60915  	}{sqlite3_mprintf_int64}))
 60916  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 72)) = *(*uintptr)(unsafe.Pointer(&struct {
 60917  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60918  	}{sqlite3_mprintf_long}))
 60919  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 88)) = *(*uintptr)(unsafe.Pointer(&struct {
 60920  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60921  	}{sqlite3_mprintf_str}))
 60922  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 104)) = *(*uintptr)(unsafe.Pointer(&struct {
 60923  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60924  	}{sqlite3_snprintf_str}))
 60925  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 120)) = *(*uintptr)(unsafe.Pointer(&struct {
 60926  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60927  	}{sqlite3_mprintf_stronly}))
 60928  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 136)) = *(*uintptr)(unsafe.Pointer(&struct {
 60929  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60930  	}{sqlite3_mprintf_double}))
 60931  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 152)) = *(*uintptr)(unsafe.Pointer(&struct {
 60932  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60933  	}{sqlite3_mprintf_scaled}))
 60934  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 168)) = *(*uintptr)(unsafe.Pointer(&struct {
 60935  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60936  	}{sqlite3_mprintf_hexdouble}))
 60937  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 184)) = *(*uintptr)(unsafe.Pointer(&struct {
 60938  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60939  	}{test_mprintf_z}))
 60940  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 200)) = *(*uintptr)(unsafe.Pointer(&struct {
 60941  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60942  	}{test_mprintf_n}))
 60943  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 216)) = *(*uintptr)(unsafe.Pointer(&struct {
 60944  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60945  	}{test_snprintf_int}))
 60946  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 232)) = *(*uintptr)(unsafe.Pointer(&struct {
 60947  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60948  	}{test_last_rowid}))
 60949  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 248)) = *(*uintptr)(unsafe.Pointer(&struct {
 60950  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60951  	}{test_exec_printf}))
 60952  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 264)) = *(*uintptr)(unsafe.Pointer(&struct {
 60953  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60954  	}{test_exec_hex}))
 60955  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 280)) = *(*uintptr)(unsafe.Pointer(&struct {
 60956  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60957  	}{test_exec}))
 60958  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 296)) = *(*uintptr)(unsafe.Pointer(&struct {
 60959  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60960  	}{test_exec_nr}))
 60961  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 312)) = *(*uintptr)(unsafe.Pointer(&struct {
 60962  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60963  	}{test_get_table_printf}))
 60964  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 328)) = *(*uintptr)(unsafe.Pointer(&struct {
 60965  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60966  	}{sqlite_test_close}))
 60967  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 344)) = *(*uintptr)(unsafe.Pointer(&struct {
 60968  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60969  	}{sqlite_test_close_v2}))
 60970  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 360)) = *(*uintptr)(unsafe.Pointer(&struct {
 60971  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60972  	}{test_create_function}))
 60973  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 376)) = *(*uintptr)(unsafe.Pointer(&struct {
 60974  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60975  	}{test_create_aggregate}))
 60976  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 392)) = *(*uintptr)(unsafe.Pointer(&struct {
 60977  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60978  	}{test_drop_modules}))
 60979  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 408)) = *(*uintptr)(unsafe.Pointer(&struct {
 60980  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60981  	}{test_register_func}))
 60982  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 424)) = *(*uintptr)(unsafe.Pointer(&struct {
 60983  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60984  	}{sqlite_abort}))
 60985  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 440)) = *(*uintptr)(unsafe.Pointer(&struct {
 60986  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60987  	}{test_bind}))
 60988  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 456)) = *(*uintptr)(unsafe.Pointer(&struct {
 60989  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60990  	}{test_breakpoint}))
 60991  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 472)) = *(*uintptr)(unsafe.Pointer(&struct {
 60992  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60993  	}{test_key}))
 60994  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 488)) = *(*uintptr)(unsafe.Pointer(&struct {
 60995  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60996  	}{test_rekey}))
 60997  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 504)) = *(*uintptr)(unsafe.Pointer(&struct {
 60998  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60999  	}{test_interrupt}))
 61000  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 520)) = *(*uintptr)(unsafe.Pointer(&struct {
 61001  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 61002  	}{delete_function}))
 61003  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 536)) = *(*uintptr)(unsafe.Pointer(&struct {
 61004  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 61005  	}{delete_collation}))
 61006  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 552)) = *(*uintptr)(unsafe.Pointer(&struct {
 61007  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 61008  	}{get_autocommit}))
 61009  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 568)) = *(*uintptr)(unsafe.Pointer(&struct {
 61010  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 61011  	}{test_busy_timeout}))
 61012  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 584)) = *(*uintptr)(unsafe.Pointer(&struct {
 61013  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 61014  	}{test_printf}))
 61015  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 600)) = *(*uintptr)(unsafe.Pointer(&struct {
 61016  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 61017  	}{test_io_trace}))
 61018  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 616)) = *(*uintptr)(unsafe.Pointer(&struct {
 61019  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 61020  	}{clang_sanitize_address}))
 61021  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd2)) + 8)) = *(*uintptr)(unsafe.Pointer(&struct {
 61022  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 61023  	}{pager_open}))
 61024  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd2)) + 24)) = *(*uintptr)(unsafe.Pointer(&struct {
 61025  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 61026  	}{pager_close}))
 61027  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd2)) + 40)) = *(*uintptr)(unsafe.Pointer(&struct {
 61028  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 61029  	}{pager_commit}))
 61030  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd2)) + 56)) = *(*uintptr)(unsafe.Pointer(&struct {
 61031  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 61032  	}{pager_rollback}))
 61033  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd2)) + 72)) = *(*uintptr)(unsafe.Pointer(&struct {
 61034  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 61035  	}{pager_stmt_begin}))
 61036  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd2)) + 88)) = *(*uintptr)(unsafe.Pointer(&struct {
 61037  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 61038  	}{pager_stmt_commit}))
 61039  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd2)) + 104)) = *(*uintptr)(unsafe.Pointer(&struct {
 61040  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 61041  	}{pager_stmt_rollback}))
 61042  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd2)) + 120)) = *(*uintptr)(unsafe.Pointer(&struct {
 61043  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 61044  	}{pager_stats}))
 61045  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd2)) + 136)) = *(*uintptr)(unsafe.Pointer(&struct {
 61046  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 61047  	}{pager_pagecount}))
 61048  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd2)) + 152)) = *(*uintptr)(unsafe.Pointer(&struct {
 61049  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 61050  	}{page_get}))
 61051  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd2)) + 168)) = *(*uintptr)(unsafe.Pointer(&struct {
 61052  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 61053  	}{page_lookup}))
 61054  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd2)) + 184)) = *(*uintptr)(unsafe.Pointer(&struct {
 61055  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 61056  	}{page_unref}))
 61057  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd2)) + 200)) = *(*uintptr)(unsafe.Pointer(&struct {
 61058  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 61059  	}{page_read}))
 61060  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd2)) + 216)) = *(*uintptr)(unsafe.Pointer(&struct {
 61061  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 61062  	}{page_write}))
 61063  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd2)) + 232)) = *(*uintptr)(unsafe.Pointer(&struct {
 61064  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 61065  	}{page_number}))
 61066  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd2)) + 248)) = *(*uintptr)(unsafe.Pointer(&struct {
 61067  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 61068  	}{pager_truncate}))
 61069  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd2)) + 264)) = *(*uintptr)(unsafe.Pointer(&struct {
 61070  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 61071  	}{fake_big_file}))
 61072  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd2)) + 280)) = *(*uintptr)(unsafe.Pointer(&struct {
 61073  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 61074  	}{testBitvecBuiltinTest}))
 61075  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd2)) + 296)) = *(*uintptr)(unsafe.Pointer(&struct {
 61076  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 61077  	}{testPendingByte}))
 61078  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd2)) + 312)) = *(*uintptr)(unsafe.Pointer(&struct {
 61079  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 61080  	}{faultInstallCmd}))
 61081  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd3)) + 8)) = *(*uintptr)(unsafe.Pointer(&struct {
 61082  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 61083  	}{btree_open}))
 61084  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd3)) + 24)) = *(*uintptr)(unsafe.Pointer(&struct {
 61085  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 61086  	}{btree_close}))
 61087  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd3)) + 40)) = *(*uintptr)(unsafe.Pointer(&struct {
 61088  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 61089  	}{btree_begin_transaction}))
 61090  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd3)) + 56)) = *(*uintptr)(unsafe.Pointer(&struct {
 61091  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 61092  	}{btree_pager_stats}))
 61093  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd3)) + 72)) = *(*uintptr)(unsafe.Pointer(&struct {
 61094  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 61095  	}{btree_cursor}))
 61096  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd3)) + 88)) = *(*uintptr)(unsafe.Pointer(&struct {
 61097  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 61098  	}{btree_close_cursor}))
 61099  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd3)) + 104)) = *(*uintptr)(unsafe.Pointer(&struct {
 61100  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 61101  	}{btree_next}))
 61102  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd3)) + 120)) = *(*uintptr)(unsafe.Pointer(&struct {
 61103  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 61104  	}{btree_eof}))
 61105  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd3)) + 136)) = *(*uintptr)(unsafe.Pointer(&struct {
 61106  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 61107  	}{btree_payload_size}))
 61108  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd3)) + 152)) = *(*uintptr)(unsafe.Pointer(&struct {
 61109  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 61110  	}{btree_first}))
 61111  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd3)) + 168)) = *(*uintptr)(unsafe.Pointer(&struct {
 61112  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 61113  	}{btree_varint_test}))
 61114  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd3)) + 184)) = *(*uintptr)(unsafe.Pointer(&struct {
 61115  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 61116  	}{btree_from_db}))
 61117  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd3)) + 200)) = *(*uintptr)(unsafe.Pointer(&struct {
 61118  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 61119  	}{btree_ismemdb}))
 61120  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd3)) + 216)) = *(*uintptr)(unsafe.Pointer(&struct {
 61121  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 61122  	}{btree_set_cache_size}))
 61123  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd4)) + 8)) = *(*uintptr)(unsafe.Pointer(&struct {
 61124  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 61125  	}{tcl_thread_create}))
 61126  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd4)) + 24)) = *(*uintptr)(unsafe.Pointer(&struct {
 61127  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 61128  	}{tcl_thread_wait}))
 61129  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd4)) + 40)) = *(*uintptr)(unsafe.Pointer(&struct {
 61130  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 61131  	}{tcl_thread_halt}))
 61132  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd4)) + 56)) = *(*uintptr)(unsafe.Pointer(&struct {
 61133  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 61134  	}{tcl_thread_argc}))
 61135  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd4)) + 72)) = *(*uintptr)(unsafe.Pointer(&struct {
 61136  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 61137  	}{tcl_thread_argv}))
 61138  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd4)) + 88)) = *(*uintptr)(unsafe.Pointer(&struct {
 61139  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 61140  	}{tcl_thread_colname}))
 61141  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd4)) + 104)) = *(*uintptr)(unsafe.Pointer(&struct {
 61142  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 61143  	}{tcl_thread_result}))
 61144  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd4)) + 120)) = *(*uintptr)(unsafe.Pointer(&struct {
 61145  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 61146  	}{tcl_thread_error}))
 61147  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd4)) + 136)) = *(*uintptr)(unsafe.Pointer(&struct {
 61148  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 61149  	}{tcl_thread_compile}))
 61150  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd4)) + 152)) = *(*uintptr)(unsafe.Pointer(&struct {
 61151  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 61152  	}{tcl_thread_step}))
 61153  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd4)) + 168)) = *(*uintptr)(unsafe.Pointer(&struct {
 61154  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 61155  	}{tcl_thread_finalize}))
 61156  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd4)) + 184)) = *(*uintptr)(unsafe.Pointer(&struct {
 61157  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 61158  	}{tcl_thread_swap}))
 61159  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd4)) + 200)) = *(*uintptr)(unsafe.Pointer(&struct {
 61160  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 61161  	}{tcl_thread_db_get}))
 61162  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd4)) + 216)) = *(*uintptr)(unsafe.Pointer(&struct {
 61163  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 61164  	}{tcl_thread_db_put}))
 61165  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd4)) + 232)) = *(*uintptr)(unsafe.Pointer(&struct {
 61166  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 61167  	}{tcl_thread_stmt_get}))
 61168  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd5)) + 8)) = *(*uintptr)(unsafe.Pointer(&struct {
 61169  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 61170  	}{binarize}))
 61171  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd5)) + 24)) = *(*uintptr)(unsafe.Pointer(&struct {
 61172  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 61173  	}{test_value_overhead}))
 61174  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd5)) + 40)) = *(*uintptr)(unsafe.Pointer(&struct {
 61175  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 61176  	}{test_translate}))
 61177  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd5)) + 56)) = *(*uintptr)(unsafe.Pointer(&struct {
 61178  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 61179  	}{test_translate_selftest}))
 61180  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd6)) + 8)) = *(*uintptr)(unsafe.Pointer(&struct {
 61181  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 61182  	}{tcl_client_create}))
 61183  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd6)) + 24)) = *(*uintptr)(unsafe.Pointer(&struct {
 61184  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 61185  	}{tcl_client_wait}))
 61186  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd6)) + 40)) = *(*uintptr)(unsafe.Pointer(&struct {
 61187  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 61188  	}{tcl_client_halt}))
 61189  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd6)) + 56)) = *(*uintptr)(unsafe.Pointer(&struct {
 61190  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 61191  	}{tcl_client_argc}))
 61192  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd6)) + 72)) = *(*uintptr)(unsafe.Pointer(&struct {
 61193  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 61194  	}{tcl_client_argv}))
 61195  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd6)) + 88)) = *(*uintptr)(unsafe.Pointer(&struct {
 61196  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 61197  	}{tcl_client_colname}))
 61198  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd6)) + 104)) = *(*uintptr)(unsafe.Pointer(&struct {
 61199  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 61200  	}{tcl_client_result}))
 61201  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd6)) + 120)) = *(*uintptr)(unsafe.Pointer(&struct {
 61202  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 61203  	}{tcl_client_error}))
 61204  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd6)) + 136)) = *(*uintptr)(unsafe.Pointer(&struct {
 61205  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 61206  	}{tcl_client_compile}))
 61207  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd6)) + 152)) = *(*uintptr)(unsafe.Pointer(&struct {
 61208  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 61209  	}{tcl_client_step}))
 61210  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd6)) + 168)) = *(*uintptr)(unsafe.Pointer(&struct {
 61211  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 61212  	}{tcl_client_reset}))
 61213  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd6)) + 184)) = *(*uintptr)(unsafe.Pointer(&struct {
 61214  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 61215  	}{tcl_client_finalize}))
 61216  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd6)) + 200)) = *(*uintptr)(unsafe.Pointer(&struct {
 61217  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 61218  	}{tcl_client_swap}))
 61219  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd7)) + 8)) = test_multiplex_initialize
 61220  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd7)) + 24)) = test_multiplex_shutdown
 61221  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd7)) + 40)) = test_multiplex_control
 61222  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd8)) + 8)) = *(*uintptr)(unsafe.Pointer(&struct {
 61223  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 61224  	}{test_shutdown}))
 61225  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd8)) + 24)) = *(*uintptr)(unsafe.Pointer(&struct {
 61226  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 61227  	}{test_initialize}))
 61228  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd8)) + 40)) = *(*uintptr)(unsafe.Pointer(&struct {
 61229  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 61230  	}{test_config}))
 61231  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd8)) + 56)) = *(*uintptr)(unsafe.Pointer(&struct {
 61232  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 61233  	}{test_enter_static_mutex}))
 61234  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd8)) + 72)) = *(*uintptr)(unsafe.Pointer(&struct {
 61235  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 61236  	}{test_leave_static_mutex}))
 61237  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd8)) + 88)) = *(*uintptr)(unsafe.Pointer(&struct {
 61238  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 61239  	}{test_enter_db_mutex}))
 61240  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd8)) + 104)) = *(*uintptr)(unsafe.Pointer(&struct {
 61241  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 61242  	}{test_leave_db_mutex}))
 61243  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd8)) + 120)) = *(*uintptr)(unsafe.Pointer(&struct {
 61244  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 61245  	}{test_alloc_mutex}))
 61246  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd8)) + 136)) = *(*uintptr)(unsafe.Pointer(&struct {
 61247  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 61248  	}{test_install_mutex_counters}))
 61249  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd8)) + 152)) = *(*uintptr)(unsafe.Pointer(&struct {
 61250  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 61251  	}{test_read_mutex_counters}))
 61252  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd8)) + 168)) = *(*uintptr)(unsafe.Pointer(&struct {
 61253  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 61254  	}{test_clear_mutex_counters}))
 61255  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd9)) + 8)) = test_quota_initialize
 61256  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd9)) + 24)) = test_quota_shutdown
 61257  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd9)) + 40)) = test_quota_set
 61258  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd9)) + 56)) = test_quota_file
 61259  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd9)) + 72)) = test_quota_dump
 61260  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd9)) + 88)) = test_quota_fopen
 61261  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd9)) + 104)) = test_quota_fread
 61262  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd9)) + 120)) = test_quota_fwrite
 61263  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd9)) + 136)) = test_quota_fclose
 61264  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd9)) + 152)) = test_quota_fflush
 61265  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd9)) + 168)) = test_quota_fseek
 61266  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd9)) + 184)) = test_quota_rewind
 61267  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd9)) + 200)) = test_quota_ftell
 61268  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd9)) + 216)) = test_quota_ftruncate
 61269  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd9)) + 232)) = test_quota_file_size
 61270  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd9)) + 248)) = test_quota_file_truesize
 61271  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd9)) + 264)) = test_quota_file_mtime
 61272  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd9)) + 280)) = test_quota_remove
 61273  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd9)) + 296)) = test_quota_glob
 61274  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd9)) + 312)) = test_quota_file_available
 61275  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd9)) + 328)) = test_quota_ferror
 61276  	*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aExtension)) + 8)) = sqlite3_amatch_init
 61277  	*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aExtension)) + 24)) = sqlite3_appendvfs_init
 61278  	*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aExtension)) + 40)) = sqlite3_carray_init
 61279  	*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aExtension)) + 56)) = sqlite3_closure_init
 61280  	*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aExtension)) + 72)) = sqlite3_csv_init
 61281  	*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aExtension)) + 88)) = sqlite3_decimal_init
 61282  	*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aExtension)) + 104)) = sqlite3_eval_init
 61283  	*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aExtension)) + 120)) = sqlite3_explain_init
 61284  	*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aExtension)) + 136)) = sqlite3_fileio_init
 61285  	*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aExtension)) + 152)) = sqlite3_fuzzer_init
 61286  	*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aExtension)) + 168)) = sqlite3_ieee_init
 61287  	*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aExtension)) + 184)) = sqlite3_nextchar_init
 61288  	*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aExtension)) + 200)) = sqlite3_percentile_init
 61289  	*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aExtension)) + 216)) = sqlite3_prefixes_init
 61290  	*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aExtension)) + 232)) = sqlite3_qpvtab_init
 61291  	*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aExtension)) + 248)) = sqlite3_regexp_init
 61292  	*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aExtension)) + 264)) = sqlite3_remember_init
 61293  	*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aExtension)) + 280)) = sqlite3_series_init
 61294  	*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aExtension)) + 296)) = sqlite3_spellfix_init
 61295  	*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aExtension)) + 312)) = sqlite3_totype_init
 61296  	*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aExtension)) + 328)) = sqlite3_unionvtab_init
 61297  	*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aExtension)) + 344)) = sqlite3_wholenumber_init
 61298  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFunc)) + 16)) = decimalFunc
 61299  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFunc)) + 40)) = decimalCmpFunc
 61300  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFunc)) + 64)) = decimalAddFunc
 61301  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFunc)) + 88)) = decimalSubFunc
 61302  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFunc)) + 112)) = decimalMulFunc
 61303  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFunc1)) + 16)) = ieee754func
 61304  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFunc1)) + 40)) = ieee754func
 61305  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFunc1)) + 64)) = ieee754func
 61306  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFunc1)) + 88)) = ieee754func
 61307  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFunc1)) + 112)) = ieee754func_to_blob
 61308  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFunc1)) + 136)) = ieee754func_from_blob
 61309  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFuncs)) + 16)) = randStr
 61310  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFuncs)) + 40)) = test_destructor
 61311  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFuncs)) + 64)) = test_destructor16
 61312  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFuncs)) + 88)) = testHexToUtf16be
 61313  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFuncs)) + 112)) = testHexToUtf16le
 61314  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFuncs)) + 136)) = testHexToUtf8
 61315  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFuncs)) + 160)) = test_destructor_count
 61316  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFuncs)) + 184)) = test_auxdata
 61317  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFuncs)) + 208)) = test_error
 61318  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFuncs)) + 232)) = test_error
 61319  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFuncs)) + 256)) = test_eval
 61320  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFuncs)) + 280)) = test_isolation
 61321  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFuncs)) + 304)) = counterFunc
 61322  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFuncs)) + 328)) = real2hex
 61323  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFuncs)) + 352)) = test_decode
 61324  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFuncs)) + 376)) = test_extract
 61325  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFuncs)) + 400)) = test_zeroblob
 61326  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFuncs)) + 424)) = test_getsubtype
 61327  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFuncs)) + 448)) = test_setsubtype
 61328  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFuncs)) + 472)) = test_frombind
 61329  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd)) + 8)) = test_sqlite3rbu
 61330  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd)) + 24)) = test_sqlite3rbu_vacuum
 61331  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd)) + 40)) = test_sqlite3rbu_create_vfs
 61332  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd)) + 56)) = test_sqlite3rbu_destroy_vfs
 61333  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd)) + 72)) = test_sqlite3rbu_internal_test
 61334  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 8)) = test_sqlite3_db_config
 61335  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 32)) = test_sqlite3_txn_state
 61336  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 56)) = test_bad_behavior
 61337  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 64)) = uintptr(unsafe.Pointer(&iZero))
 61338  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 80)) = test_register_dbstat_vtab
 61339  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 104)) = get_sqlite_pointer
 61340  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 128)) = test_intarray_addr
 61341  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 152)) = test_int64array_addr
 61342  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 176)) = test_doublearray_addr
 61343  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 200)) = test_textarray_addr
 61344  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 224)) = test_bind_int
 61345  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 248)) = test_bind_zeroblob
 61346  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 272)) = test_bind_zeroblob64
 61347  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 296)) = test_bind_int64
 61348  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 320)) = test_bind_double
 61349  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 344)) = test_bind_null
 61350  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 368)) = test_bind_text
 61351  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 392)) = test_bind_text16
 61352  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 416)) = test_bind_blob
 61353  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 440)) = test_bind_value_from_select
 61354  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 464)) = test_bind_value_from_preupdate
 61355  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 488)) = test_carray_bind
 61356  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 512)) = test_bind_parameter_count
 61357  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 536)) = test_bind_parameter_name
 61358  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 560)) = test_bind_parameter_index
 61359  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 584)) = test_clear_bindings
 61360  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 608)) = test_sleep
 61361  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 632)) = test_errcode
 61362  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 656)) = test_ex_errcode
 61363  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 680)) = test_errmsg
 61364  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 704)) = test_error_offset
 61365  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 728)) = test_errmsg16
 61366  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 752)) = test_open
 61367  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 776)) = test_open16
 61368  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 800)) = test_open_v2
 61369  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 824)) = test_complete16
 61370  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 848)) = test_normalize
 61371  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 872)) = test_prepare
 61372  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 896)) = test_prepare16
 61373  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 920)) = test_prepare_v2
 61374  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 944)) = test_prepare_v3
 61375  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 968)) = test_prepare_tkt3134
 61376  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 992)) = test_prepare16_v2
 61377  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1016)) = test_finalize
 61378  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1040)) = test_stmt_status
 61379  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1064)) = test_reset
 61380  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1088)) = test_expired
 61381  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1112)) = test_transfer_bind
 61382  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1136)) = test_changes
 61383  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1160)) = test_step
 61384  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1184)) = test_sql
 61385  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1208)) = test_ex_sql
 61386  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1232)) = test_next_stmt
 61387  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1256)) = test_stmt_readonly
 61388  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1280)) = test_stmt_isexplain
 61389  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1304)) = test_stmt_busy
 61390  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1328)) = uses_stmt_journal
 61391  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1352)) = test_release_memory
 61392  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1376)) = test_db_release_memory
 61393  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1400)) = test_db_cacheflush
 61394  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1424)) = test_system_errno
 61395  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1448)) = test_db_filename
 61396  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1472)) = test_db_readonly
 61397  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1496)) = test_soft_heap_limit
 61398  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1520)) = test_soft_heap_limit
 61399  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1544)) = test_hard_heap_limit
 61400  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1568)) = test_thread_cleanup
 61401  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1592)) = test_pager_refcounts
 61402  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1616)) = test_load_extension
 61403  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1640)) = test_enable_load
 61404  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1664)) = test_extended_result_codes
 61405  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1688)) = test_limit
 61406  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1712)) = test_dbconfig_maindbname_icecube
 61407  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1736)) = save_prng_state
 61408  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1760)) = restore_prng_state
 61409  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1784)) = reset_prng_state
 61410  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1808)) = prng_seed
 61411  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1832)) = extra_schema_checks
 61412  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1856)) = database_never_corrupt
 61413  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1880)) = database_may_be_corrupt
 61414  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1904)) = optimization_control
 61415  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1928)) = runAsObjProc
 61416  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1952)) = test_column_count
 61417  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1976)) = test_data_count
 61418  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2000)) = test_column_type
 61419  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2024)) = test_column_blob
 61420  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2048)) = test_column_double
 61421  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2072)) = test_column_int64
 61422  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2096)) = test_stmt_utf8
 61423  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2104)) = *(*uintptr)(unsafe.Pointer(&struct {
 61424  		f func(*libc.TLS, uintptr, int32) uintptr
 61425  	}{sqlite3.Xsqlite3_column_text}))
 61426  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2120)) = test_stmt_utf8
 61427  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2128)) = *(*uintptr)(unsafe.Pointer(&struct {
 61428  		f func(*libc.TLS, uintptr, int32) uintptr
 61429  	}{sqlite3.Xsqlite3_column_name}))
 61430  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2144)) = test_stmt_int
 61431  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2152)) = *(*uintptr)(unsafe.Pointer(&struct {
 61432  		f func(*libc.TLS, uintptr, int32) int32
 61433  	}{sqlite3.Xsqlite3_column_int}))
 61434  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2168)) = test_stmt_int
 61435  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2176)) = *(*uintptr)(unsafe.Pointer(&struct {
 61436  		f func(*libc.TLS, uintptr, int32) int32
 61437  	}{sqlite3.Xsqlite3_column_bytes}))
 61438  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2192)) = test_stmt_utf8
 61439  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2200)) = *(*uintptr)(unsafe.Pointer(&struct {
 61440  		f func(*libc.TLS, uintptr, int32) uintptr
 61441  	}{sqlite3.Xsqlite3_column_decltype}))
 61442  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2216)) = test_stmt_utf8
 61443  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2224)) = *(*uintptr)(unsafe.Pointer(&struct {
 61444  		f func(*libc.TLS, uintptr, int32) uintptr
 61445  	}{sqlite3.Xsqlite3_column_database_name}))
 61446  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2240)) = test_stmt_utf8
 61447  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2248)) = *(*uintptr)(unsafe.Pointer(&struct {
 61448  		f func(*libc.TLS, uintptr, int32) uintptr
 61449  	}{sqlite3.Xsqlite3_column_table_name}))
 61450  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2264)) = test_stmt_utf8
 61451  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2272)) = *(*uintptr)(unsafe.Pointer(&struct {
 61452  		f func(*libc.TLS, uintptr, int32) uintptr
 61453  	}{sqlite3.Xsqlite3_column_origin_name}))
 61454  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2288)) = test_stmt_int
 61455  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2296)) = *(*uintptr)(unsafe.Pointer(&struct {
 61456  		f func(*libc.TLS, uintptr, int32) int32
 61457  	}{sqlite3.Xsqlite3_column_bytes16}))
 61458  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2312)) = test_stmt_utf16
 61459  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2320)) = *(*uintptr)(unsafe.Pointer(&struct {
 61460  		f func(*libc.TLS, uintptr, int32) uintptr
 61461  	}{sqlite3.Xsqlite3_column_text16}))
 61462  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2336)) = test_stmt_utf16
 61463  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2344)) = *(*uintptr)(unsafe.Pointer(&struct {
 61464  		f func(*libc.TLS, uintptr, int32) uintptr
 61465  	}{sqlite3.Xsqlite3_column_name16}))
 61466  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2360)) = add_alignment_test_collations
 61467  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2384)) = test_stmt_utf16
 61468  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2392)) = *(*uintptr)(unsafe.Pointer(&struct {
 61469  		f func(*libc.TLS, uintptr, int32) uintptr
 61470  	}{sqlite3.Xsqlite3_column_decltype16}))
 61471  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2408)) = test_stmt_utf16
 61472  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2416)) = *(*uintptr)(unsafe.Pointer(&struct {
 61473  		f func(*libc.TLS, uintptr, int32) uintptr
 61474  	}{sqlite3.Xsqlite3_column_database_name16}))
 61475  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2432)) = test_stmt_utf16
 61476  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2440)) = *(*uintptr)(unsafe.Pointer(&struct {
 61477  		f func(*libc.TLS, uintptr, int32) uintptr
 61478  	}{sqlite3.Xsqlite3_column_table_name16}))
 61479  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2456)) = test_stmt_utf16
 61480  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2464)) = *(*uintptr)(unsafe.Pointer(&struct {
 61481  		f func(*libc.TLS, uintptr, int32) uintptr
 61482  	}{sqlite3.Xsqlite3_column_origin_name16}))
 61483  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2480)) = test_create_collation_v2
 61484  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2504)) = test_global_recover
 61485  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2528)) = working_64bit_int
 61486  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2552)) = vfs_unlink_test
 61487  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2576)) = vfs_initfail_test
 61488  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2600)) = vfs_unregister_all
 61489  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2624)) = vfs_reregister_all
 61490  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2648)) = file_control_test
 61491  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2672)) = file_control_lasterrno_test
 61492  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2696)) = file_control_lockproxy_test
 61493  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2720)) = file_control_chunksize_test
 61494  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2744)) = file_control_sizehint_test
 61495  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2768)) = file_control_data_version
 61496  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2792)) = file_control_persist_wal
 61497  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2816)) = file_control_powersafe_overwrite
 61498  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2840)) = file_control_vfsname
 61499  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2864)) = file_control_reservebytes
 61500  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2888)) = file_control_tempfilename
 61501  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2912)) = file_control_external_reader
 61502  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2936)) = vfs_list
 61503  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2960)) = test_create_function_v2
 61504  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2984)) = test_collate
 61505  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3008)) = test_collate_needed
 61506  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3032)) = test_function
 61507  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3056)) = test_utf16bin_collate
 61508  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3080)) = test_errstr
 61509  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3104)) = tcl_variable_type
 61510  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3128)) = test_enable_shared
 61511  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3152)) = sqlite3BtreeSharedCacheReport
 61512  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3176)) = test_libversion_number
 61513  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3200)) = test_table_column_metadata
 61514  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3224)) = test_blob_reopen
 61515  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3248)) = test_pcache_stats
 61516  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3272)) = test_unlock_notify
 61517  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3296)) = test_wal_checkpoint
 61518  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3320)) = test_wal_checkpoint_v2
 61519  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3344)) = test_wal_autocheckpoint
 61520  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3368)) = test_sqlite3_log
 61521  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3392)) = test_print_eqp
 61522  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3416)) = test_test_control
 61523  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3440)) = test_getrusage
 61524  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3464)) = tclLoadStaticExtensionCmd
 61525  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3488)) = sorter_test_fakeheap
 61526  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3512)) = sorter_test_sort4_helper
 61527  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3536)) = vfsCurrentTimeInt64
 61528  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3560)) = test_snapshot_get
 61529  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3584)) = test_snapshot_open
 61530  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3608)) = test_snapshot_free
 61531  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3632)) = test_snapshot_cmp
 61532  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3656)) = test_snapshot_recover
 61533  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3680)) = test_snapshot_get_blob
 61534  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3704)) = test_snapshot_open_blob
 61535  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3728)) = test_snapshot_cmp_blob
 61536  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3752)) = test_delete_database
 61537  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3776)) = test_atomic_batch_write
 61538  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3800)) = test_mmap_warm
 61539  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3824)) = test_config_sorterref
 61540  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3848)) = test_autovacuum_pages
 61541  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3872)) = test_decode_hexdb
 61542  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3896)) = test_write_db
 61543  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3920)) = test_register_cksumvfs
 61544  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3944)) = test_unregister_cksumvfs
 61545  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd10)) + 8)) = test_intarray_create
 61546  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd10)) + 32)) = test_intarray_bind
 61547  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 8)) = test_malloc
 61548  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 32)) = test_realloc
 61549  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 56)) = test_free
 61550  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 80)) = test_memset
 61551  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 104)) = test_memget
 61552  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 128)) = test_memory_used
 61553  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 152)) = test_memory_highwater
 61554  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 176)) = test_memdebug_backtrace
 61555  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 200)) = test_memdebug_dump
 61556  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 224)) = test_memdebug_fail
 61557  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 248)) = test_memdebug_pending
 61558  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 272)) = test_memdebug_settitle
 61559  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 296)) = test_memdebug_malloc_count
 61560  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 320)) = test_memdebug_log
 61561  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 344)) = test_config_pagecache
 61562  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 368)) = test_alt_pcache
 61563  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 392)) = test_status
 61564  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 416)) = test_db_status
 61565  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 440)) = test_install_malloc_faultsim
 61566  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 464)) = test_config_heap
 61567  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 488)) = test_config_heap_size
 61568  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 512)) = test_config_memstatus
 61569  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 536)) = test_config_lookaside
 61570  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 560)) = test_config_error
 61571  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 584)) = test_config_uri
 61572  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 608)) = test_config_cis
 61573  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 632)) = test_config_pmasz
 61574  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 656)) = test_db_config_lookaside
 61575  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 680)) = test_dump_memsys3
 61576  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 704)) = test_dump_memsys3
 61577  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 728)) = test_install_memsys3
 61578  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 752)) = test_vfs_oom_test
 61579  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd12)) + 8)) = register_schema_module
 61580  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd13)) + 8)) = register_tclvar_module
 61581  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd14)) + 8)) = test_create_window
 61582  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd14)) + 32)) = test_create_window_misuse
 61583  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd14)) + 56)) = test_create_sumint
 61584  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd14)) + 80)) = test_override_sum
 61585  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd2)) + 8)) = register_echo_module
 61586  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd2)) + 32)) = declare_vtab
 61587  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd3)) + 8)) = c_misuse_test
 61588  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd3)) + 32)) = c_realloc_test
 61589  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd3)) + 56)) = c_collation_test
 61590  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd4)) + 8)) = register_tcl_module
 61591  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd5)) + 8)) = test_blob_open
 61592  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd5)) + 24)) = test_blob_close
 61593  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd5)) + 40)) = test_blob_bytes
 61594  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd5)) + 56)) = test_blob_read
 61595  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd5)) + 72)) = test_blob_write
 61596  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd6)) + 8)) = register_fs_module
 61597  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd7)) + 8)) = autoinstall_test_funcs
 61598  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd7)) + 24)) = abuse_create_function
 61599  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd7)) + 40)) = install_fts3_rank_function
 61600  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd8)) + 8)) = hexio_read
 61601  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd8)) + 24)) = hexio_write
 61602  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd8)) + 40)) = hexio_get_int
 61603  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd8)) + 56)) = hexio_render_int16
 61604  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd8)) + 72)) = hexio_render_int32
 61605  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd8)) + 88)) = utf8_to_utf8
 61606  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd8)) + 104)) = read_fts3varint
 61607  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd8)) + 120)) = make_fts3record
 61608  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd9)) + 8)) = init_wrapper_install
 61609  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd9)) + 24)) = init_wrapper_query
 61610  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd9)) + 40)) = init_wrapper_uninstall
 61611  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd9)) + 56)) = init_wrapper_clear
 61612  	*(*sqlite3_syscall_ptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 8)) = *(*uintptr)(unsafe.Pointer(&struct {
 61613  		f func(*libc.TLS, uintptr, int32, int32) int32
 61614  	}{ts_open}))
 61615  	*(*sqlite3_syscall_ptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 40)) = *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, int32) int32 }{ts_close}))
 61616  	*(*sqlite3_syscall_ptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 72)) = *(*uintptr)(unsafe.Pointer(&struct {
 61617  		f func(*libc.TLS, uintptr, int32) int32
 61618  	}{ts_access}))
 61619  	*(*sqlite3_syscall_ptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 104)) = *(*uintptr)(unsafe.Pointer(&struct {
 61620  		f func(*libc.TLS, uintptr, size_t) uintptr
 61621  	}{ts_getcwd}))
 61622  	*(*sqlite3_syscall_ptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 136)) = *(*uintptr)(unsafe.Pointer(&struct {
 61623  		f func(*libc.TLS, uintptr, uintptr) int32
 61624  	}{ts_stat}))
 61625  	*(*sqlite3_syscall_ptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 168)) = *(*uintptr)(unsafe.Pointer(&struct {
 61626  		f func(*libc.TLS, int32, uintptr) int32
 61627  	}{ts_fstat}))
 61628  	*(*sqlite3_syscall_ptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 200)) = *(*uintptr)(unsafe.Pointer(&struct {
 61629  		f func(*libc.TLS, int32, off_t) int32
 61630  	}{ts_ftruncate}))
 61631  	*(*sqlite3_syscall_ptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 232)) = *(*uintptr)(unsafe.Pointer(&struct {
 61632  		f func(*libc.TLS, int32, int32, uintptr) int32
 61633  	}{ts_fcntl}))
 61634  	*(*sqlite3_syscall_ptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 264)) = *(*uintptr)(unsafe.Pointer(&struct {
 61635  		f func(*libc.TLS, int32, uintptr, size_t) int32
 61636  	}{ts_read}))
 61637  	*(*sqlite3_syscall_ptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 296)) = *(*uintptr)(unsafe.Pointer(&struct {
 61638  		f func(*libc.TLS, int32, uintptr, size_t, off_t) int32
 61639  	}{ts_pread}))
 61640  	*(*sqlite3_syscall_ptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 328)) = *(*uintptr)(unsafe.Pointer(&struct {
 61641  		f func(*libc.TLS, int32, uintptr, size_t, sqlite3_uint64) int32
 61642  	}{ts_pread64}))
 61643  	*(*sqlite3_syscall_ptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 360)) = *(*uintptr)(unsafe.Pointer(&struct {
 61644  		f func(*libc.TLS, int32, uintptr, size_t) int32
 61645  	}{ts_write}))
 61646  	*(*sqlite3_syscall_ptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 392)) = *(*uintptr)(unsafe.Pointer(&struct {
 61647  		f func(*libc.TLS, int32, uintptr, size_t, off_t) int32
 61648  	}{ts_pwrite}))
 61649  	*(*sqlite3_syscall_ptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 424)) = *(*uintptr)(unsafe.Pointer(&struct {
 61650  		f func(*libc.TLS, int32, uintptr, size_t, sqlite3_uint64) int32
 61651  	}{ts_pwrite64}))
 61652  	*(*sqlite3_syscall_ptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 456)) = *(*uintptr)(unsafe.Pointer(&struct {
 61653  		f func(*libc.TLS, int32, mode_t) int32
 61654  	}{ts_fchmod}))
 61655  	*(*sqlite3_syscall_ptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 488)) = *(*uintptr)(unsafe.Pointer(&struct {
 61656  		f func(*libc.TLS, int32, off_t, off_t) int32
 61657  	}{ts_fallocate}))
 61658  	*(*sqlite3_syscall_ptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 520)) = *(*uintptr)(unsafe.Pointer(&struct {
 61659  		f func(*libc.TLS, uintptr, size_t, int32, int32, int32, off_t) uintptr
 61660  	}{ts_mmap}))
 61661  	*(*sqlite3_syscall_ptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 552)) = *(*uintptr)(unsafe.Pointer(&struct {
 61662  		f func(*libc.TLS, uintptr, size_t, size_t, int32, uintptr) uintptr
 61663  	}{ts_mremap}))
 61664  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&amatchModule)) + 8)) = amatchConnect
 61665  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&amatchModule)) + 16)) = amatchConnect
 61666  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&amatchModule)) + 24)) = amatchBestIndex
 61667  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&amatchModule)) + 32)) = amatchDisconnect
 61668  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&amatchModule)) + 40)) = amatchDisconnect
 61669  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&amatchModule)) + 48)) = amatchOpen
 61670  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&amatchModule)) + 56)) = amatchClose
 61671  	*(*func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&amatchModule)) + 64)) = amatchFilter
 61672  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&amatchModule)) + 72)) = amatchNext
 61673  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&amatchModule)) + 80)) = amatchEof
 61674  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&amatchModule)) + 88)) = amatchColumn
 61675  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&amatchModule)) + 96)) = amatchRowid
 61676  	*(*func(*libc.TLS, uintptr, int32, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&amatchModule)) + 104)) = amatchUpdate
 61677  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_io_methods)) + 8)) = apndClose
 61678  	*(*func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_io_methods)) + 16)) = apndRead
 61679  	*(*func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_io_methods)) + 24)) = apndWrite
 61680  	*(*func(*libc.TLS, uintptr, sqlite3_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_io_methods)) + 32)) = apndTruncate
 61681  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_io_methods)) + 40)) = apndSync
 61682  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_io_methods)) + 48)) = apndFileSize
 61683  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_io_methods)) + 56)) = apndLock
 61684  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_io_methods)) + 64)) = apndUnlock
 61685  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_io_methods)) + 72)) = apndCheckReservedLock
 61686  	*(*func(*libc.TLS, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_io_methods)) + 80)) = apndFileControl
 61687  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_io_methods)) + 88)) = apndSectorSize
 61688  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_io_methods)) + 96)) = apndDeviceCharacteristics
 61689  	*(*func(*libc.TLS, uintptr, int32, int32, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_io_methods)) + 104)) = apndShmMap
 61690  	*(*func(*libc.TLS, uintptr, int32, int32, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_io_methods)) + 112)) = apndShmLock
 61691  	*(*func(*libc.TLS, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_io_methods)) + 120)) = apndShmBarrier
 61692  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_io_methods)) + 128)) = apndShmUnmap
 61693  	*(*func(*libc.TLS, uintptr, sqlite3_int64, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_io_methods)) + 136)) = apndFetch
 61694  	*(*func(*libc.TLS, uintptr, sqlite3_int64, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_io_methods)) + 144)) = apndUnfetch
 61695  	*(*func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_vfs)) + 40)) = apndOpen
 61696  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_vfs)) + 48)) = apndDelete
 61697  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_vfs)) + 56)) = apndAccess
 61698  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_vfs)) + 64)) = apndFullPathname
 61699  	*(*func(*libc.TLS, uintptr, uintptr) uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_vfs)) + 72)) = apndDlOpen
 61700  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_vfs)) + 80)) = apndDlError
 61701  	*(*func(*libc.TLS, uintptr, uintptr, uintptr) uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_vfs)) + 88)) = apndDlSym
 61702  	*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_vfs)) + 96)) = apndDlClose
 61703  	*(*func(*libc.TLS, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_vfs)) + 104)) = apndRandomness
 61704  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_vfs)) + 112)) = apndSleep
 61705  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_vfs)) + 120)) = apndCurrentTime
 61706  	*(*func(*libc.TLS, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_vfs)) + 128)) = apndGetLastError
 61707  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_vfs)) + 136)) = apndCurrentTimeInt64
 61708  	*(*func(*libc.TLS, uintptr, uintptr, sqlite3_syscall_ptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_vfs)) + 144)) = apndSetSystemCall
 61709  	*(*func(*libc.TLS, uintptr, uintptr) sqlite3_syscall_ptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_vfs)) + 152)) = apndGetSystemCall
 61710  	*(*func(*libc.TLS, uintptr, uintptr) uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_vfs)) + 160)) = apndNextSystemCall
 61711  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&carrayModule)) + 16)) = carrayConnect
 61712  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&carrayModule)) + 24)) = carrayBestIndex
 61713  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&carrayModule)) + 32)) = carrayDisconnect
 61714  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&carrayModule)) + 48)) = carrayOpen
 61715  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&carrayModule)) + 56)) = carrayClose
 61716  	*(*func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&carrayModule)) + 64)) = carrayFilter
 61717  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&carrayModule)) + 72)) = carrayNext
 61718  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&carrayModule)) + 80)) = carrayEof
 61719  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&carrayModule)) + 88)) = carrayColumn
 61720  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&carrayModule)) + 96)) = carrayRowid
 61721  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_io_methods)) + 8)) = cksmClose
 61722  	*(*func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_io_methods)) + 16)) = cksmRead
 61723  	*(*func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_io_methods)) + 24)) = cksmWrite
 61724  	*(*func(*libc.TLS, uintptr, sqlite3_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_io_methods)) + 32)) = cksmTruncate
 61725  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_io_methods)) + 40)) = cksmSync
 61726  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_io_methods)) + 48)) = cksmFileSize
 61727  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_io_methods)) + 56)) = cksmLock
 61728  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_io_methods)) + 64)) = cksmUnlock
 61729  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_io_methods)) + 72)) = cksmCheckReservedLock
 61730  	*(*func(*libc.TLS, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_io_methods)) + 80)) = cksmFileControl
 61731  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_io_methods)) + 88)) = cksmSectorSize
 61732  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_io_methods)) + 96)) = cksmDeviceCharacteristics
 61733  	*(*func(*libc.TLS, uintptr, int32, int32, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_io_methods)) + 104)) = cksmShmMap
 61734  	*(*func(*libc.TLS, uintptr, int32, int32, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_io_methods)) + 112)) = cksmShmLock
 61735  	*(*func(*libc.TLS, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_io_methods)) + 120)) = cksmShmBarrier
 61736  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_io_methods)) + 128)) = cksmShmUnmap
 61737  	*(*func(*libc.TLS, uintptr, sqlite3_int64, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_io_methods)) + 136)) = cksmFetch
 61738  	*(*func(*libc.TLS, uintptr, sqlite3_int64, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_io_methods)) + 144)) = cksmUnfetch
 61739  	*(*func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_vfs)) + 40)) = cksmOpen
 61740  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_vfs)) + 48)) = cksmDelete
 61741  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_vfs)) + 56)) = cksmAccess
 61742  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_vfs)) + 64)) = cksmFullPathname
 61743  	*(*func(*libc.TLS, uintptr, uintptr) uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_vfs)) + 72)) = cksmDlOpen
 61744  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_vfs)) + 80)) = cksmDlError
 61745  	*(*func(*libc.TLS, uintptr, uintptr, uintptr) uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_vfs)) + 88)) = cksmDlSym
 61746  	*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_vfs)) + 96)) = cksmDlClose
 61747  	*(*func(*libc.TLS, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_vfs)) + 104)) = cksmRandomness
 61748  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_vfs)) + 112)) = cksmSleep
 61749  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_vfs)) + 120)) = cksmCurrentTime
 61750  	*(*func(*libc.TLS, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_vfs)) + 128)) = cksmGetLastError
 61751  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_vfs)) + 136)) = cksmCurrentTimeInt64
 61752  	*(*func(*libc.TLS, uintptr, uintptr, sqlite3_syscall_ptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_vfs)) + 144)) = cksmSetSystemCall
 61753  	*(*func(*libc.TLS, uintptr, uintptr) sqlite3_syscall_ptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_vfs)) + 152)) = cksmGetSystemCall
 61754  	*(*func(*libc.TLS, uintptr, uintptr) uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_vfs)) + 160)) = cksmNextSystemCall
 61755  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&closureModule)) + 8)) = closureConnect
 61756  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&closureModule)) + 16)) = closureConnect
 61757  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&closureModule)) + 24)) = closureBestIndex
 61758  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&closureModule)) + 32)) = closureDisconnect
 61759  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&closureModule)) + 40)) = closureDisconnect
 61760  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&closureModule)) + 48)) = closureOpen
 61761  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&closureModule)) + 56)) = closureClose
 61762  	*(*func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&closureModule)) + 64)) = closureFilter
 61763  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&closureModule)) + 72)) = closureNext
 61764  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&closureModule)) + 80)) = closureEof
 61765  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&closureModule)) + 88)) = closureColumn
 61766  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&closureModule)) + 96)) = closureRowid
 61767  	*(*func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&crashVfs)) + 40)) = cfOpen
 61768  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&crashVfs)) + 48)) = cfDelete
 61769  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&crashVfs)) + 56)) = cfAccess
 61770  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&crashVfs)) + 64)) = cfFullPathname
 61771  	*(*func(*libc.TLS, uintptr, uintptr) uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&crashVfs)) + 72)) = cfDlOpen
 61772  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&crashVfs)) + 80)) = cfDlError
 61773  	*(*func(*libc.TLS, uintptr, uintptr, uintptr) uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&crashVfs)) + 88)) = cfDlSym
 61774  	*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&crashVfs)) + 96)) = cfDlClose
 61775  	*(*func(*libc.TLS, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&crashVfs)) + 104)) = cfRandomness
 61776  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&crashVfs)) + 112)) = cfSleep
 61777  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&crashVfs)) + 120)) = cfCurrentTime
 61778  	*(*func(*libc.TLS, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&crashVfs)) + 128)) = cfGetLastError
 61779  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&devsym_io_methods)) + 8)) = devsymClose
 61780  	*(*func(*libc.TLS, uintptr, uintptr, int32, sqlite_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&devsym_io_methods)) + 16)) = devsymRead
 61781  	*(*func(*libc.TLS, uintptr, uintptr, int32, sqlite_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&devsym_io_methods)) + 24)) = devsymWrite
 61782  	*(*func(*libc.TLS, uintptr, sqlite_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&devsym_io_methods)) + 32)) = devsymTruncate
 61783  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&devsym_io_methods)) + 40)) = devsymSync
 61784  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&devsym_io_methods)) + 48)) = devsymFileSize
 61785  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&devsym_io_methods)) + 56)) = devsymLock
 61786  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&devsym_io_methods)) + 64)) = devsymUnlock
 61787  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&devsym_io_methods)) + 72)) = devsymCheckReservedLock
 61788  	*(*func(*libc.TLS, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&devsym_io_methods)) + 80)) = devsymFileControl
 61789  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&devsym_io_methods)) + 88)) = devsymSectorSize
 61790  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&devsym_io_methods)) + 96)) = devsymDeviceCharacteristics
 61791  	*(*func(*libc.TLS, uintptr, int32, int32, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&devsym_io_methods)) + 104)) = devsymShmMap
 61792  	*(*func(*libc.TLS, uintptr, int32, int32, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&devsym_io_methods)) + 112)) = devsymShmLock
 61793  	*(*func(*libc.TLS, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&devsym_io_methods)) + 120)) = devsymShmBarrier
 61794  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&devsym_io_methods)) + 128)) = devsymShmUnmap
 61795  	*(*func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&devsym_vfs)) + 40)) = devsymOpen
 61796  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&devsym_vfs)) + 48)) = devsymDelete
 61797  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&devsym_vfs)) + 56)) = devsymAccess
 61798  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&devsym_vfs)) + 64)) = devsymFullPathname
 61799  	*(*func(*libc.TLS, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&devsym_vfs)) + 104)) = devsymRandomness
 61800  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&devsym_vfs)) + 112)) = devsymSleep
 61801  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&devsym_vfs)) + 120)) = devsymCurrentTime
 61802  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModule)) + 8)) = echoCreate
 61803  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModule)) + 16)) = echoConnect
 61804  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModule)) + 24)) = echoBestIndex
 61805  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModule)) + 32)) = echoDisconnect
 61806  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModule)) + 40)) = echoDestroy
 61807  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModule)) + 48)) = echoOpen
 61808  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModule)) + 56)) = echoClose
 61809  	*(*func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModule)) + 64)) = echoFilter
 61810  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModule)) + 72)) = echoNext
 61811  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModule)) + 80)) = echoEof
 61812  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModule)) + 88)) = echoColumn
 61813  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModule)) + 96)) = echoRowid
 61814  	*(*func(*libc.TLS, uintptr, int32, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModule)) + 104)) = echoUpdate
 61815  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModule)) + 112)) = echoBegin
 61816  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModule)) + 120)) = echoSync
 61817  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModule)) + 128)) = echoCommit
 61818  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModule)) + 136)) = echoRollback
 61819  	*(*func(*libc.TLS, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModule)) + 144)) = echoFindFunction
 61820  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModule)) + 152)) = echoRename
 61821  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModuleV2)) + 8)) = echoCreate
 61822  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModuleV2)) + 16)) = echoConnect
 61823  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModuleV2)) + 24)) = echoBestIndex
 61824  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModuleV2)) + 32)) = echoDisconnect
 61825  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModuleV2)) + 40)) = echoDestroy
 61826  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModuleV2)) + 48)) = echoOpen
 61827  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModuleV2)) + 56)) = echoClose
 61828  	*(*func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModuleV2)) + 64)) = echoFilter
 61829  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModuleV2)) + 72)) = echoNext
 61830  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModuleV2)) + 80)) = echoEof
 61831  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModuleV2)) + 88)) = echoColumn
 61832  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModuleV2)) + 96)) = echoRowid
 61833  	*(*func(*libc.TLS, uintptr, int32, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModuleV2)) + 104)) = echoUpdate
 61834  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModuleV2)) + 112)) = echoBegin
 61835  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModuleV2)) + 120)) = echoSync
 61836  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModuleV2)) + 128)) = echoCommit
 61837  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModuleV2)) + 136)) = echoRollback
 61838  	*(*func(*libc.TLS, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModuleV2)) + 144)) = echoFindFunction
 61839  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModuleV2)) + 152)) = echoRename
 61840  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModuleV2)) + 160)) = echoSavepoint
 61841  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModuleV2)) + 168)) = echoRelease
 61842  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModuleV2)) + 176)) = echoRollbackTo
 61843  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&expertModule)) + 8)) = expertConnect
 61844  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&expertModule)) + 16)) = expertConnect
 61845  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&expertModule)) + 24)) = expertBestIndex
 61846  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&expertModule)) + 32)) = expertDisconnect
 61847  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&expertModule)) + 40)) = expertDisconnect
 61848  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&expertModule)) + 48)) = expertOpen
 61849  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&expertModule)) + 56)) = expertClose
 61850  	*(*func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&expertModule)) + 64)) = expertFilter
 61851  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&expertModule)) + 72)) = expertNext
 61852  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&expertModule)) + 80)) = expertEof
 61853  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&expertModule)) + 88)) = expertColumn
 61854  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&expertModule)) + 96)) = expertRowid
 61855  	*(*func(*libc.TLS, uintptr, int32, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&expertModule)) + 104)) = expertUpdate
 61856  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&explainModule)) + 16)) = explainConnect
 61857  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&explainModule)) + 24)) = explainBestIndex
 61858  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&explainModule)) + 32)) = explainDisconnect
 61859  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&explainModule)) + 48)) = explainOpen
 61860  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&explainModule)) + 56)) = explainClose
 61861  	*(*func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&explainModule)) + 64)) = explainFilter
 61862  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&explainModule)) + 72)) = explainNext
 61863  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&explainModule)) + 80)) = explainEof
 61864  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&explainModule)) + 88)) = explainColumn
 61865  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&explainModule)) + 96)) = explainRowid
 61866  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsModule)) + 8)) = fsConnect
 61867  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsModule)) + 16)) = fsConnect
 61868  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsModule)) + 24)) = fsBestIndex
 61869  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsModule)) + 32)) = fsDisconnect
 61870  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsModule)) + 40)) = fsDisconnect
 61871  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsModule)) + 48)) = fsOpen
 61872  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsModule)) + 56)) = fsClose
 61873  	*(*func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsModule)) + 64)) = fsFilter
 61874  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsModule)) + 72)) = fsNext
 61875  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsModule)) + 80)) = fsEof
 61876  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsModule)) + 88)) = fsColumn
 61877  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsModule)) + 96)) = fsRowid
 61878  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fs_io_methods)) + 8)) = fsClose1
 61879  	*(*func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fs_io_methods)) + 16)) = fsRead
 61880  	*(*func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fs_io_methods)) + 24)) = fsWrite
 61881  	*(*func(*libc.TLS, uintptr, sqlite3_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fs_io_methods)) + 32)) = fsTruncate
 61882  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fs_io_methods)) + 40)) = fsSync
 61883  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fs_io_methods)) + 48)) = fsFileSize
 61884  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fs_io_methods)) + 56)) = fsLock
 61885  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fs_io_methods)) + 64)) = fsUnlock
 61886  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fs_io_methods)) + 72)) = fsCheckReservedLock
 61887  	*(*func(*libc.TLS, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fs_io_methods)) + 80)) = fsFileControl
 61888  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fs_io_methods)) + 88)) = fsSectorSize
 61889  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fs_io_methods)) + 96)) = fsDeviceCharacteristics
 61890  	*(*func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fs_vfs)) + 40)) = fsOpen1
 61891  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fs_vfs)) + 48)) = fsDelete
 61892  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fs_vfs)) + 56)) = fsAccess
 61893  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fs_vfs)) + 64)) = fsFullPathname
 61894  	*(*func(*libc.TLS, uintptr, uintptr) uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&fs_vfs)) + 72)) = fsDlOpen
 61895  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&fs_vfs)) + 80)) = fsDlError
 61896  	*(*func(*libc.TLS, uintptr, uintptr, uintptr) uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&fs_vfs)) + 88)) = fsDlSym
 61897  	*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&fs_vfs)) + 96)) = fsDlClose
 61898  	*(*func(*libc.TLS, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fs_vfs)) + 104)) = fsRandomness
 61899  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fs_vfs)) + 112)) = fsSleep
 61900  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fs_vfs)) + 120)) = fsCurrentTime
 61901  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsdirModule)) + 8)) = fsdirConnect1
 61902  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsdirModule)) + 16)) = fsdirConnect1
 61903  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsdirModule)) + 24)) = fsdirBestIndex1
 61904  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsdirModule)) + 32)) = fsdirDisconnect1
 61905  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsdirModule)) + 40)) = fsdirDisconnect1
 61906  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsdirModule)) + 48)) = fsdirOpen1
 61907  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsdirModule)) + 56)) = fsdirClose1
 61908  	*(*func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsdirModule)) + 64)) = fsdirFilter1
 61909  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsdirModule)) + 72)) = fsdirNext1
 61910  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsdirModule)) + 80)) = fsdirEof1
 61911  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsdirModule)) + 88)) = fsdirColumn1
 61912  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsdirModule)) + 96)) = fsdirRowid1
 61913  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsdirModule1)) + 16)) = fsdirConnect
 61914  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsdirModule1)) + 24)) = fsdirBestIndex
 61915  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsdirModule1)) + 32)) = fsdirDisconnect
 61916  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsdirModule1)) + 48)) = fsdirOpen
 61917  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsdirModule1)) + 56)) = fsdirClose
 61918  	*(*func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsdirModule1)) + 64)) = fsdirFilter
 61919  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsdirModule1)) + 72)) = fsdirNext
 61920  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsdirModule1)) + 80)) = fsdirEof
 61921  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsdirModule1)) + 88)) = fsdirColumn
 61922  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsdirModule1)) + 96)) = fsdirRowid
 61923  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fstreeModule)) + 8)) = fstreeConnect
 61924  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fstreeModule)) + 16)) = fstreeConnect
 61925  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fstreeModule)) + 24)) = fstreeBestIndex
 61926  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fstreeModule)) + 32)) = fstreeDisconnect
 61927  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fstreeModule)) + 40)) = fstreeDisconnect
 61928  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fstreeModule)) + 48)) = fstreeOpen
 61929  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fstreeModule)) + 56)) = fstreeClose
 61930  	*(*func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fstreeModule)) + 64)) = fstreeFilter
 61931  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fstreeModule)) + 72)) = fstreeNext
 61932  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fstreeModule)) + 80)) = fstreeEof
 61933  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fstreeModule)) + 88)) = fstreeColumn
 61934  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fstreeModule)) + 96)) = fstreeRowid
 61935  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fts5tok_module)) + 8)) = fts5tokConnectMethod
 61936  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fts5tok_module)) + 16)) = fts5tokConnectMethod
 61937  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fts5tok_module)) + 24)) = fts5tokBestIndexMethod
 61938  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fts5tok_module)) + 32)) = fts5tokDisconnectMethod
 61939  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fts5tok_module)) + 40)) = fts5tokDisconnectMethod
 61940  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fts5tok_module)) + 48)) = fts5tokOpenMethod
 61941  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fts5tok_module)) + 56)) = fts5tokCloseMethod
 61942  	*(*func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fts5tok_module)) + 64)) = fts5tokFilterMethod
 61943  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fts5tok_module)) + 72)) = fts5tokNextMethod
 61944  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fts5tok_module)) + 80)) = fts5tokEofMethod
 61945  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fts5tok_module)) + 88)) = fts5tokColumnMethod
 61946  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fts5tok_module)) + 96)) = fts5tokRowidMethod
 61947  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fuzzerModule)) + 8)) = fuzzerConnect
 61948  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fuzzerModule)) + 16)) = fuzzerConnect
 61949  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fuzzerModule)) + 24)) = fuzzerBestIndex
 61950  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fuzzerModule)) + 32)) = fuzzerDisconnect
 61951  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fuzzerModule)) + 40)) = fuzzerDisconnect
 61952  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fuzzerModule)) + 48)) = fuzzerOpen
 61953  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fuzzerModule)) + 56)) = fuzzerClose
 61954  	*(*func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fuzzerModule)) + 64)) = fuzzerFilter
 61955  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fuzzerModule)) + 72)) = fuzzerNext
 61956  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fuzzerModule)) + 80)) = fuzzerEof
 61957  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fuzzerModule)) + 88)) = fuzzerColumn
 61958  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fuzzerModule)) + 96)) = fuzzerRowid
 61959  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&intarrayModule)) + 8)) = intarrayCreate
 61960  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&intarrayModule)) + 16)) = intarrayCreate
 61961  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&intarrayModule)) + 24)) = intarrayBestIndex
 61962  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&intarrayModule)) + 32)) = intarrayDestroy
 61963  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&intarrayModule)) + 40)) = intarrayDestroy
 61964  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&intarrayModule)) + 48)) = intarrayOpen
 61965  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&intarrayModule)) + 56)) = intarrayClose
 61966  	*(*func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&intarrayModule)) + 64)) = intarrayFilter
 61967  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&intarrayModule)) + 72)) = intarrayNext
 61968  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&intarrayModule)) + 80)) = intarrayEof
 61969  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&intarrayModule)) + 88)) = intarrayColumn
 61970  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&intarrayModule)) + 96)) = intarrayRowid
 61971  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&jt_io_methods)) + 8)) = jtClose
 61972  	*(*func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&jt_io_methods)) + 16)) = jtRead
 61973  	*(*func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&jt_io_methods)) + 24)) = jtWrite
 61974  	*(*func(*libc.TLS, uintptr, sqlite3_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&jt_io_methods)) + 32)) = jtTruncate
 61975  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&jt_io_methods)) + 40)) = jtSync
 61976  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&jt_io_methods)) + 48)) = jtFileSize
 61977  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&jt_io_methods)) + 56)) = jtLock
 61978  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&jt_io_methods)) + 64)) = jtUnlock
 61979  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&jt_io_methods)) + 72)) = jtCheckReservedLock
 61980  	*(*func(*libc.TLS, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&jt_io_methods)) + 80)) = jtFileControl
 61981  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&jt_io_methods)) + 88)) = jtSectorSize
 61982  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&jt_io_methods)) + 96)) = jtDeviceCharacteristics
 61983  	*(*func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&jt_vfs)) + 40)) = jtOpen
 61984  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&jt_vfs)) + 48)) = jtDelete
 61985  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&jt_vfs)) + 56)) = jtAccess
 61986  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&jt_vfs)) + 64)) = jtFullPathname
 61987  	*(*func(*libc.TLS, uintptr, uintptr) uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&jt_vfs)) + 72)) = jtDlOpen
 61988  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&jt_vfs)) + 80)) = jtDlError
 61989  	*(*func(*libc.TLS, uintptr, uintptr, uintptr) uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&jt_vfs)) + 88)) = jtDlSym
 61990  	*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&jt_vfs)) + 96)) = jtDlClose
 61991  	*(*func(*libc.TLS, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&jt_vfs)) + 104)) = jtRandomness
 61992  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&jt_vfs)) + 112)) = jtSleep
 61993  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&jt_vfs)) + 120)) = jtCurrentTime
 61994  	*(*func(*libc.TLS, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&jt_vfs)) + 128)) = jtGetLastError
 61995  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&jt_vfs)) + 136)) = jtCurrentTimeInt64
 61996  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&prefixesModule)) + 16)) = prefixesConnect
 61997  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&prefixesModule)) + 24)) = prefixesBestIndex
 61998  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&prefixesModule)) + 32)) = prefixesDisconnect
 61999  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&prefixesModule)) + 48)) = prefixesOpen
 62000  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&prefixesModule)) + 56)) = prefixesClose
 62001  	*(*func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&prefixesModule)) + 64)) = prefixesFilter
 62002  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&prefixesModule)) + 72)) = prefixesNext
 62003  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&prefixesModule)) + 80)) = prefixesEof
 62004  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&prefixesModule)) + 88)) = prefixesColumn
 62005  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&prefixesModule)) + 96)) = prefixesRowid
 62006  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&pzNeededCollation)) + 0)) = uintptr(unsafe.Pointer(&zNeededCollation))
 62007  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&qpvtabModule)) + 16)) = qpvtabConnect
 62008  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&qpvtabModule)) + 24)) = qpvtabBestIndex
 62009  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&qpvtabModule)) + 32)) = qpvtabDisconnect
 62010  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&qpvtabModule)) + 48)) = qpvtabOpen
 62011  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&qpvtabModule)) + 56)) = qpvtabClose
 62012  	*(*func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&qpvtabModule)) + 64)) = qpvtabFilter
 62013  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&qpvtabModule)) + 72)) = qpvtabNext
 62014  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&qpvtabModule)) + 80)) = qpvtabEof
 62015  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&qpvtabModule)) + 88)) = qpvtabColumn
 62016  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&qpvtabModule)) + 96)) = qpvtabRowid
 62017  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&schemaModule)) + 8)) = schemaCreate
 62018  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&schemaModule)) + 16)) = schemaCreate
 62019  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&schemaModule)) + 24)) = schemaBestIndex
 62020  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&schemaModule)) + 32)) = schemaDestroy
 62021  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&schemaModule)) + 40)) = schemaDestroy
 62022  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&schemaModule)) + 48)) = schemaOpen
 62023  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&schemaModule)) + 56)) = schemaClose
 62024  	*(*func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&schemaModule)) + 64)) = schemaFilter
 62025  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&schemaModule)) + 72)) = schemaNext
 62026  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&schemaModule)) + 80)) = schemaEof
 62027  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&schemaModule)) + 88)) = schemaColumn
 62028  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&schemaModule)) + 96)) = schemaRowid
 62029  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&seriesModule)) + 16)) = seriesConnect
 62030  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&seriesModule)) + 24)) = seriesBestIndex
 62031  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&seriesModule)) + 32)) = seriesDisconnect
 62032  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&seriesModule)) + 48)) = seriesOpen
 62033  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&seriesModule)) + 56)) = seriesClose
 62034  	*(*func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&seriesModule)) + 64)) = seriesFilter
 62035  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&seriesModule)) + 72)) = seriesNext
 62036  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&seriesModule)) + 80)) = seriesEof
 62037  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&seriesModule)) + 88)) = seriesColumn
 62038  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&seriesModule)) + 96)) = seriesRowid
 62039  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&spellfix1Module)) + 8)) = spellfix1Create
 62040  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&spellfix1Module)) + 16)) = spellfix1Connect
 62041  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&spellfix1Module)) + 24)) = spellfix1BestIndex
 62042  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&spellfix1Module)) + 32)) = spellfix1Disconnect
 62043  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&spellfix1Module)) + 40)) = spellfix1Destroy
 62044  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&spellfix1Module)) + 48)) = spellfix1Open
 62045  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&spellfix1Module)) + 56)) = spellfix1Close
 62046  	*(*func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&spellfix1Module)) + 64)) = spellfix1Filter
 62047  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&spellfix1Module)) + 72)) = spellfix1Next
 62048  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&spellfix1Module)) + 80)) = spellfix1Eof
 62049  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&spellfix1Module)) + 88)) = spellfix1Column
 62050  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&spellfix1Module)) + 96)) = spellfix1Rowid
 62051  	*(*func(*libc.TLS, uintptr, int32, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&spellfix1Module)) + 104)) = spellfix1Update
 62052  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&spellfix1Module)) + 152)) = spellfix1Rename
 62053  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tclModule)) + 8)) = tclConnect
 62054  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tclModule)) + 16)) = tclConnect
 62055  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tclModule)) + 24)) = tclBestIndex
 62056  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tclModule)) + 32)) = tclDisconnect
 62057  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tclModule)) + 40)) = tclDisconnect
 62058  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tclModule)) + 48)) = tclOpen
 62059  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tclModule)) + 56)) = tclClose
 62060  	*(*func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tclModule)) + 64)) = tclFilter
 62061  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tclModule)) + 72)) = tclNext
 62062  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tclModule)) + 80)) = tclEof
 62063  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tclModule)) + 88)) = tclColumn
 62064  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tclModule)) + 96)) = tclRowid
 62065  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tclvarModule)) + 8)) = tclvarConnect
 62066  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tclvarModule)) + 16)) = tclvarConnect
 62067  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tclvarModule)) + 24)) = tclvarBestIndex
 62068  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tclvarModule)) + 32)) = tclvarDisconnect
 62069  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tclvarModule)) + 40)) = tclvarDisconnect
 62070  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tclvarModule)) + 48)) = tclvarOpen
 62071  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tclvarModule)) + 56)) = tclvarClose
 62072  	*(*func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tclvarModule)) + 64)) = tclvarFilter
 62073  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tclvarModule)) + 72)) = tclvarNext
 62074  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tclvarModule)) + 80)) = tclvarEof
 62075  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tclvarModule)) + 88)) = tclvarColumn
 62076  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tclvarModule)) + 96)) = tclvarRowid
 62077  	*(*func(*libc.TLS, uintptr, int32, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tclvarModule)) + 104)) = tclvarUpdate
 62078  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&testPcache)) + 8)) = uintptr(unsafe.Pointer(&testpcacheGlobal))
 62079  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&testPcache)) + 16)) = testpcacheInit
 62080  	*(*func(*libc.TLS, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&testPcache)) + 24)) = testpcacheShutdown
 62081  	*(*func(*libc.TLS, int32, int32, int32) uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&testPcache)) + 32)) = testpcacheCreate
 62082  	*(*func(*libc.TLS, uintptr, int32))(unsafe.Pointer(uintptr(unsafe.Pointer(&testPcache)) + 40)) = testpcacheCachesize
 62083  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&testPcache)) + 48)) = testpcachePagecount
 62084  	*(*func(*libc.TLS, uintptr, uint32, int32) uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&testPcache)) + 56)) = testpcacheFetch
 62085  	*(*func(*libc.TLS, uintptr, uintptr, int32))(unsafe.Pointer(uintptr(unsafe.Pointer(&testPcache)) + 64)) = testpcacheUnpin
 62086  	*(*func(*libc.TLS, uintptr, uintptr, uint32, uint32))(unsafe.Pointer(uintptr(unsafe.Pointer(&testPcache)) + 72)) = testpcacheRekey
 62087  	*(*func(*libc.TLS, uintptr, uint32))(unsafe.Pointer(uintptr(unsafe.Pointer(&testPcache)) + 80)) = testpcacheTruncate
 62088  	*(*func(*libc.TLS, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&testPcache)) + 88)) = testpcacheDestroy
 62089  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tmp_io_methods)) + 8)) = tmpClose
 62090  	*(*func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tmp_io_methods)) + 16)) = tmpRead
 62091  	*(*func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tmp_io_methods)) + 24)) = tmpWrite
 62092  	*(*func(*libc.TLS, uintptr, sqlite3_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tmp_io_methods)) + 32)) = tmpTruncate
 62093  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tmp_io_methods)) + 40)) = tmpSync
 62094  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tmp_io_methods)) + 48)) = tmpFileSize
 62095  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tmp_io_methods)) + 56)) = tmpLock
 62096  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tmp_io_methods)) + 64)) = tmpUnlock
 62097  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tmp_io_methods)) + 72)) = tmpCheckReservedLock
 62098  	*(*func(*libc.TLS, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tmp_io_methods)) + 80)) = tmpFileControl
 62099  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tmp_io_methods)) + 88)) = tmpSectorSize
 62100  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tmp_io_methods)) + 96)) = tmpDeviceCharacteristics
 62101  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tvfs_io_methods)) + 8)) = tvfsClose
 62102  	*(*func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tvfs_io_methods)) + 16)) = tvfsRead
 62103  	*(*func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tvfs_io_methods)) + 24)) = tvfsWrite
 62104  	*(*func(*libc.TLS, uintptr, sqlite3_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tvfs_io_methods)) + 32)) = tvfsTruncate
 62105  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tvfs_io_methods)) + 40)) = tvfsSync
 62106  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tvfs_io_methods)) + 48)) = tvfsFileSize
 62107  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tvfs_io_methods)) + 56)) = tvfsLock
 62108  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tvfs_io_methods)) + 64)) = tvfsUnlock
 62109  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tvfs_io_methods)) + 72)) = tvfsCheckReservedLock
 62110  	*(*func(*libc.TLS, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tvfs_io_methods)) + 80)) = tvfsFileControl
 62111  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tvfs_io_methods)) + 88)) = tvfsSectorSize
 62112  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tvfs_io_methods)) + 96)) = tvfsDeviceCharacteristics
 62113  	*(*func(*libc.TLS, uintptr, int32, int32, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tvfs_io_methods)) + 104)) = tvfsShmMap
 62114  	*(*func(*libc.TLS, uintptr, int32, int32, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tvfs_io_methods)) + 112)) = tvfsShmLock
 62115  	*(*func(*libc.TLS, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&tvfs_io_methods)) + 120)) = tvfsShmBarrier
 62116  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tvfs_io_methods)) + 128)) = tvfsShmUnmap
 62117  	*(*func(*libc.TLS, uintptr, sqlite3_int64, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tvfs_io_methods)) + 136)) = tvfsFetch
 62118  	*(*func(*libc.TLS, uintptr, sqlite3_int64, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tvfs_io_methods)) + 144)) = tvfsUnfetch
 62119  	*(*func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tvfs_vfs)) + 40)) = tvfsOpen
 62120  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tvfs_vfs)) + 48)) = tvfsDelete
 62121  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tvfs_vfs)) + 56)) = tvfsAccess
 62122  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tvfs_vfs)) + 64)) = tvfsFullPathname
 62123  	*(*func(*libc.TLS, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tvfs_vfs)) + 104)) = tvfsRandomness
 62124  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tvfs_vfs)) + 112)) = tvfsSleep
 62125  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tvfs_vfs)) + 120)) = tvfsCurrentTime
 62126  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&unionModule)) + 8)) = unionConnect
 62127  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&unionModule)) + 16)) = unionConnect
 62128  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&unionModule)) + 24)) = unionBestIndex
 62129  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&unionModule)) + 32)) = unionDisconnect
 62130  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&unionModule)) + 40)) = unionDisconnect
 62131  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&unionModule)) + 48)) = unionOpen
 62132  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&unionModule)) + 56)) = unionClose
 62133  	*(*func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&unionModule)) + 64)) = unionFilter
 62134  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&unionModule)) + 72)) = unionNext
 62135  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&unionModule)) + 80)) = unionEof
 62136  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&unionModule)) + 88)) = unionColumn
 62137  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&unionModule)) + 96)) = unionRowid
 62138  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_io_methods)) + 8)) = vfslogClose
 62139  	*(*func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_io_methods)) + 16)) = vfslogRead
 62140  	*(*func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_io_methods)) + 24)) = vfslogWrite
 62141  	*(*func(*libc.TLS, uintptr, sqlite3_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_io_methods)) + 32)) = vfslogTruncate
 62142  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_io_methods)) + 40)) = vfslogSync
 62143  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_io_methods)) + 48)) = vfslogFileSize
 62144  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_io_methods)) + 56)) = vfslogLock
 62145  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_io_methods)) + 64)) = vfslogUnlock
 62146  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_io_methods)) + 72)) = vfslogCheckReservedLock
 62147  	*(*func(*libc.TLS, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_io_methods)) + 80)) = vfslogFileControl
 62148  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_io_methods)) + 88)) = vfslogSectorSize
 62149  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_io_methods)) + 96)) = vfslogDeviceCharacteristics
 62150  	*(*func(*libc.TLS, uintptr, int32, int32, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_io_methods)) + 104)) = vfslogShmMap
 62151  	*(*func(*libc.TLS, uintptr, int32, int32, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_io_methods)) + 112)) = vfslogShmLock
 62152  	*(*func(*libc.TLS, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_io_methods)) + 120)) = vfslogShmBarrier
 62153  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_io_methods)) + 128)) = vfslogShmUnmap
 62154  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_module)) + 8)) = vlogConnect
 62155  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_module)) + 16)) = vlogConnect
 62156  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_module)) + 24)) = vlogBestIndex
 62157  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_module)) + 32)) = vlogDisconnect
 62158  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_module)) + 40)) = vlogDisconnect
 62159  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_module)) + 48)) = vlogOpen
 62160  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_module)) + 56)) = vlogClose
 62161  	*(*func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_module)) + 64)) = vlogFilter
 62162  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_module)) + 72)) = vlogNext
 62163  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_module)) + 80)) = vlogEof
 62164  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_module)) + 88)) = vlogColumn
 62165  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_module)) + 96)) = vlogRowid
 62166  	*(*func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_vfs)) + 40)) = vfslogOpen
 62167  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_vfs)) + 48)) = vfslogDelete
 62168  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_vfs)) + 56)) = vfslogAccess
 62169  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_vfs)) + 64)) = vfslogFullPathname
 62170  	*(*func(*libc.TLS, uintptr, uintptr) uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_vfs)) + 72)) = vfslogDlOpen
 62171  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_vfs)) + 80)) = vfslogDlError
 62172  	*(*func(*libc.TLS, uintptr, uintptr, uintptr) uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_vfs)) + 88)) = vfslogDlSym
 62173  	*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_vfs)) + 96)) = vfslogDlClose
 62174  	*(*func(*libc.TLS, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_vfs)) + 104)) = vfslogRandomness
 62175  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_vfs)) + 112)) = vfslogSleep
 62176  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_vfs)) + 120)) = vfslogCurrentTime
 62177  	*(*func(*libc.TLS, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_vfs)) + 128)) = vfslogGetLastError
 62178  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_vfs)) + 136)) = vfslogCurrentTimeInt64
 62179  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&wholenumberModule)) + 8)) = wholenumberConnect
 62180  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&wholenumberModule)) + 16)) = wholenumberConnect
 62181  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&wholenumberModule)) + 24)) = wholenumberBestIndex
 62182  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&wholenumberModule)) + 32)) = wholenumberDisconnect
 62183  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&wholenumberModule)) + 40)) = wholenumberDisconnect
 62184  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&wholenumberModule)) + 48)) = wholenumberOpen
 62185  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&wholenumberModule)) + 56)) = wholenumberClose
 62186  	*(*func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&wholenumberModule)) + 64)) = wholenumberFilter
 62187  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&wholenumberModule)) + 72)) = wholenumberNext
 62188  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&wholenumberModule)) + 80)) = wholenumberEof
 62189  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&wholenumberModule)) + 88)) = wholenumberColumn
 62190  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&wholenumberModule)) + 96)) = wholenumberRowid
 62191  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&writecrash_io_methods)) + 8)) = devsymClose
 62192  	*(*func(*libc.TLS, uintptr, uintptr, int32, sqlite_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&writecrash_io_methods)) + 16)) = devsymRead
 62193  	*(*func(*libc.TLS, uintptr, uintptr, int32, sqlite_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&writecrash_io_methods)) + 24)) = writecrashWrite
 62194  	*(*func(*libc.TLS, uintptr, sqlite_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&writecrash_io_methods)) + 32)) = devsymTruncate
 62195  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&writecrash_io_methods)) + 40)) = devsymSync
 62196  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&writecrash_io_methods)) + 48)) = devsymFileSize
 62197  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&writecrash_io_methods)) + 56)) = devsymLock
 62198  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&writecrash_io_methods)) + 64)) = devsymUnlock
 62199  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&writecrash_io_methods)) + 72)) = devsymCheckReservedLock
 62200  	*(*func(*libc.TLS, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&writecrash_io_methods)) + 80)) = devsymFileControl
 62201  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&writecrash_io_methods)) + 88)) = writecrashSectorSize
 62202  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&writecrash_io_methods)) + 96)) = writecrashDeviceCharacteristics
 62203  	*(*func(*libc.TLS, uintptr, int32, int32, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&writecrash_io_methods)) + 104)) = devsymShmMap
 62204  	*(*func(*libc.TLS, uintptr, int32, int32, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&writecrash_io_methods)) + 112)) = devsymShmLock
 62205  	*(*func(*libc.TLS, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&writecrash_io_methods)) + 120)) = devsymShmBarrier
 62206  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&writecrash_io_methods)) + 128)) = devsymShmUnmap
 62207  	*(*func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&writecrash_vfs)) + 40)) = writecrashOpen
 62208  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&writecrash_vfs)) + 48)) = devsymDelete
 62209  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&writecrash_vfs)) + 56)) = devsymAccess
 62210  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&writecrash_vfs)) + 64)) = devsymFullPathname
 62211  	*(*func(*libc.TLS, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&writecrash_vfs)) + 104)) = devsymRandomness
 62212  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&writecrash_vfs)) + 112)) = devsymSleep
 62213  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&writecrash_vfs)) + 120)) = devsymCurrentTime
 62214  }
 62215  
 62216  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"
 62217  var ts = (*reflect.StringHeader)(unsafe.Pointer(&ts1)).Data