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

     1  // Code generated by 'ccgo -DSQLITE_OMIT_LOAD_EXTENSION -DSQLITE_SERIES_CONSTRAINT_VERIFY=1 -DSQLITE_SERVER=1 -DTCLSH_INIT_PROC=sqlite3TestInit -D_HAVE_SQLITE_CONFIG_H -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_darwin_amd64.go -Itestdata/sqlite-src-3390300/ext/async -Itestdata/sqlite-src-3390300/ext/fts3 -Itestdata/sqlite-src-3390300/ext/icu -Itestdata/sqlite-src-3390300/ext/rtree -Itestdata/sqlite-src-3390300/ext/session -Itestdata/sqlite-src-3390300/ext/userauth -Itestdata/sqlite-src-3390300/src -Itestdata/sqlite-amalgamation-3390300 -Itestdata/sqlite-src-3390300 -full-path-comments testdata/sqlite-src-3390300/ext/expert/sqlite3expert.c testdata/sqlite-src-3390300/ext/expert/test_expert.c testdata/sqlite-src-3390300/ext/fts3/fts3_term.c testdata/sqlite-src-3390300/ext/fts3/fts3_test.c testdata/sqlite-src-3390300/ext/fts5/fts5_tcl.c testdata/sqlite-src-3390300/ext/fts5/fts5_test_mi.c testdata/sqlite-src-3390300/ext/fts5/fts5_test_tok.c testdata/sqlite-src-3390300/ext/misc/appendvfs.c testdata/sqlite-src-3390300/ext/misc/amatch.c testdata/sqlite-src-3390300/ext/misc/carray.c testdata/sqlite-src-3390300/ext/misc/cksumvfs.c testdata/sqlite-src-3390300/ext/misc/closure.c testdata/sqlite-src-3390300/ext/misc/csv.c testdata/sqlite-src-3390300/ext/misc/decimal.c testdata/sqlite-src-3390300/ext/misc/eval.c testdata/sqlite-src-3390300/ext/misc/explain.c testdata/sqlite-src-3390300/ext/misc/fileio.c testdata/sqlite-src-3390300/ext/misc/fuzzer.c testdata/sqlite-src-3390300/ext/misc/ieee754.c testdata/sqlite-src-3390300/ext/misc/mmapwarm.c testdata/sqlite-src-3390300/ext/misc/nextchar.c testdata/sqlite-src-3390300/ext/misc/normalize.c testdata/sqlite-src-3390300/ext/misc/percentile.c testdata/sqlite-src-3390300/ext/misc/prefixes.c testdata/sqlite-src-3390300/ext/misc/qpvtab.c testdata/sqlite-src-3390300/ext/misc/regexp.c testdata/sqlite-src-3390300/ext/misc/remember.c testdata/sqlite-src-3390300/ext/misc/series.c testdata/sqlite-src-3390300/ext/misc/spellfix.c testdata/sqlite-src-3390300/ext/misc/totype.c testdata/sqlite-src-3390300/ext/misc/unionvtab.c testdata/sqlite-src-3390300/ext/misc/wholenumber.c testdata/sqlite-src-3390300/ext/rbu/test_rbu.c testdata/sqlite-src-3390300/ext/rtree/test_rtreedoc.c testdata/sqlite-src-3390300/ext/session/test_session.c testdata/sqlite-src-3390300/ext/userauth/userauth.c testdata/sqlite-src-3390300/src/tclsqlite.c testdata/sqlite-src-3390300/src/test1.c testdata/sqlite-src-3390300/src/test2.c testdata/sqlite-src-3390300/src/test3.c testdata/sqlite-src-3390300/src/test4.c testdata/sqlite-src-3390300/src/test5.c testdata/sqlite-src-3390300/src/test6.c testdata/sqlite-src-3390300/src/test7.c testdata/sqlite-src-3390300/src/test8.c testdata/sqlite-src-3390300/src/test9.c testdata/sqlite-src-3390300/src/test_async.c testdata/sqlite-src-3390300/src/test_autoext.c testdata/sqlite-src-3390300/src/test_backup.c testdata/sqlite-src-3390300/src/test_bestindex.c testdata/sqlite-src-3390300/src/test_blob.c testdata/sqlite-src-3390300/src/test_btree.c testdata/sqlite-src-3390300/src/test_config.c testdata/sqlite-src-3390300/src/test_delete.c testdata/sqlite-src-3390300/src/test_demovfs.c testdata/sqlite-src-3390300/src/test_devsym.c testdata/sqlite-src-3390300/src/test_fs.c testdata/sqlite-src-3390300/src/test_func.c testdata/sqlite-src-3390300/src/test_hexio.c testdata/sqlite-src-3390300/src/test_init.c testdata/sqlite-src-3390300/src/test_intarray.c testdata/sqlite-src-3390300/src/test_journal.c testdata/sqlite-src-3390300/src/test_malloc.c testdata/sqlite-src-3390300/src/test_md5.c testdata/sqlite-src-3390300/src/test_multiplex.c testdata/sqlite-src-3390300/src/test_mutex.c testdata/sqlite-src-3390300/src/test_onefile.c testdata/sqlite-src-3390300/src/test_osinst.c testdata/sqlite-src-3390300/src/test_pcache.c testdata/sqlite-src-3390300/src/test_quota.c testdata/sqlite-src-3390300/src/test_rtree.c testdata/sqlite-src-3390300/src/test_schema.c testdata/sqlite-src-3390300/src/test_server.c testdata/sqlite-src-3390300/src/test_superlock.c testdata/sqlite-src-3390300/src/test_syscall.c testdata/sqlite-src-3390300/src/test_tclsh.c testdata/sqlite-src-3390300/src/test_tclvar.c testdata/sqlite-src-3390300/src/test_thread.c testdata/sqlite-src-3390300/src/test_vdbecov.c testdata/sqlite-src-3390300/src/test_vfs.c testdata/sqlite-src-3390300/src/test_windirent.c testdata/sqlite-src-3390300/src/test_window.c testdata/sqlite-src-3390300/src/test_wsd.c -DNDEBUG -DHAVE_USLEEP -DLONGDOUBLE_TYPE=double -DSQLITE_CKSUMVFS_STATIC -DSQLITE_CORE -DSQLITE_DEFAULT_MEMSTATUS=0 -DSQLITE_DEFAULT_PAGE_SIZE=1024 -DSQLITE_ENABLE_BYTECODE_VTAB -DSQLITE_ENABLE_COLUMN_METADATA -DSQLITE_ENABLE_DBPAGE_VTAB -DSQLITE_ENABLE_DBSTAT_VTAB -DSQLITE_ENABLE_DESERIALIZE -DSQLITE_ENABLE_EXPLAIN_COMMENTS -DSQLITE_ENABLE_FTS5 -DSQLITE_ENABLE_GEOPOLY -DSQLITE_ENABLE_MATH_FUNCTIONS -DSQLITE_ENABLE_MEMORY_MANAGEMENT -DSQLITE_ENABLE_OFFSET_SQL_FUNC -DSQLITE_ENABLE_PREUPDATE_HOOK -DSQLITE_ENABLE_RBU -DSQLITE_ENABLE_RTREE -DSQLITE_ENABLE_SESSION -DSQLITE_ENABLE_SNAPSHOT -DSQLITE_ENABLE_STAT4 -DSQLITE_ENABLE_STMTVTAB -DSQLITE_ENABLE_UNLOCK_NOTIFY -DSQLITE_LIKE_DOESNT_MATCH_BLOBS -DSQLITE_MUTEX_APPDEF=1 -DSQLITE_MUTEX_NOOP -DSQLITE_SOUNDEX -DSQLITE_TEMP_STORE=1 -DSQLITE_TEST -DSQLITE_THREADSAFE=1 -DSQLITE_OS_UNIX=1 -DSQLITE_WITHOUT_ZONEMALLOC', DO NOT EDIT.
     2  
     3  package main
     4  
     5  import (
     6  	"math"
     7  	"reflect"
     8  	"sync/atomic"
     9  	"unsafe"
    10  
    11  	"modernc.org/libc"
    12  	"modernc.org/libc/sys/types"
    13  	"gitlab.com/CoiaPrant/sqlite3/libtest"
    14  	"modernc.org/tcl/lib"
    15  )
    16  
    17  var _ = math.Pi
    18  var _ reflect.Kind
    19  var _ atomic.Value
    20  var _ unsafe.Pointer
    21  var _ *libc.TLS
    22  var _ types.Size_t
    23  
    24  func main() { libc.Start(main1) }
    25  
    26  const (
    27  	BUFSIZ                                          = 1024
    28  	EOF                                             = -1
    29  	EXPERT_CONFIG_SAMPLE                            = 1
    30  	EXPERT_REPORT_CANDIDATES                        = 4
    31  	EXPERT_REPORT_INDEXES                           = 2
    32  	EXPERT_REPORT_PLAN                              = 3
    33  	EXPERT_REPORT_SQL                               = 1
    34  	FILENAME_MAX                                    = 1024
    35  	FOPEN_MAX                                       = 20
    36  	FTS5_TOKENIZE_AUX                               = 0x0008
    37  	FTS5_TOKENIZE_DOCUMENT                          = 0x0004
    38  	FTS5_TOKENIZE_PREFIX                            = 0x0002
    39  	FTS5_TOKENIZE_QUERY                             = 0x0001
    40  	FTS5_TOKEN_COLOCATED                            = 0x0001
    41  	FULLY_WITHIN                                    = 2
    42  	HAVE_USLEEP                                     = 1
    43  	IDX_HASH_SIZE                                   = 1023
    44  	L_ctermid                                       = 1024
    45  	L_tmpnam                                        = 1024
    46  	NDEBUG                                          = 1
    47  	NOT_WITHIN                                      = 0
    48  	PARTLY_WITHIN                                   = 1
    49  	P_tmpdir                                        = "/var/tmp/"
    50  	RENAME_EXCL                                     = 0x00000004
    51  	RENAME_SECLUDE                                  = 0x00000001
    52  	RENAME_SWAP                                     = 0x00000002
    53  	SEEK_CUR                                        = 1
    54  	SEEK_END                                        = 2
    55  	SEEK_SET                                        = 0
    56  	SQLITE3_H                                       = 0
    57  	SQLITE3_TEXT                                    = 3
    58  	SQLITEEXPERT_H                                  = 1
    59  	SQLITE_ABORT                                    = 4
    60  	SQLITE_ABORT_ROLLBACK                           = 516
    61  	SQLITE_ACCESS_EXISTS                            = 0
    62  	SQLITE_ACCESS_READ                              = 2
    63  	SQLITE_ACCESS_READWRITE                         = 1
    64  	SQLITE_ALTER_TABLE                              = 26
    65  	SQLITE_ANALYZE                                  = 28
    66  	SQLITE_ANY                                      = 5
    67  	SQLITE_API                                      = 0
    68  	SQLITE_APICALL                                  = 0
    69  	SQLITE_ATTACH                                   = 24
    70  	SQLITE_AUTH                                     = 23
    71  	SQLITE_AUTH_USER                                = 279
    72  	SQLITE_BLOB                                     = 4
    73  	SQLITE_BUSY                                     = 5
    74  	SQLITE_BUSY_RECOVERY                            = 261
    75  	SQLITE_BUSY_SNAPSHOT                            = 517
    76  	SQLITE_BUSY_TIMEOUT                             = 773
    77  	SQLITE_CALLBACK                                 = 0
    78  	SQLITE_CANTOPEN                                 = 14
    79  	SQLITE_CANTOPEN_CONVPATH                        = 1038
    80  	SQLITE_CANTOPEN_DIRTYWAL                        = 1294
    81  	SQLITE_CANTOPEN_FULLPATH                        = 782
    82  	SQLITE_CANTOPEN_ISDIR                           = 526
    83  	SQLITE_CANTOPEN_NOTEMPDIR                       = 270
    84  	SQLITE_CANTOPEN_SYMLINK                         = 1550
    85  	SQLITE_CDECL                                    = 0
    86  	SQLITE_CHANGESETAPPLY_INVERT                    = 0x0002
    87  	SQLITE_CHANGESETAPPLY_NOSAVEPOINT               = 0x0001
    88  	SQLITE_CHANGESETSTART_INVERT                    = 0x0002
    89  	SQLITE_CHANGESET_ABORT                          = 2
    90  	SQLITE_CHANGESET_CONFLICT                       = 3
    91  	SQLITE_CHANGESET_CONSTRAINT                     = 4
    92  	SQLITE_CHANGESET_DATA                           = 1
    93  	SQLITE_CHANGESET_FOREIGN_KEY                    = 5
    94  	SQLITE_CHANGESET_NOTFOUND                       = 2
    95  	SQLITE_CHANGESET_OMIT                           = 0
    96  	SQLITE_CHANGESET_REPLACE                        = 1
    97  	SQLITE_CHECKPOINT_FULL                          = 1
    98  	SQLITE_CHECKPOINT_PASSIVE                       = 0
    99  	SQLITE_CHECKPOINT_RESTART                       = 2
   100  	SQLITE_CHECKPOINT_TRUNCATE                      = 3
   101  	SQLITE_CKSUMVFS_STATIC                          = 1
   102  	SQLITE_CONFIG_COVERING_INDEX_SCAN               = 20
   103  	SQLITE_CONFIG_GETMALLOC                         = 5
   104  	SQLITE_CONFIG_GETMUTEX                          = 11
   105  	SQLITE_CONFIG_GETPCACHE                         = 15
   106  	SQLITE_CONFIG_GETPCACHE2                        = 19
   107  	SQLITE_CONFIG_HEAP                              = 8
   108  	SQLITE_CONFIG_LOG                               = 16
   109  	SQLITE_CONFIG_LOOKASIDE                         = 13
   110  	SQLITE_CONFIG_MALLOC                            = 4
   111  	SQLITE_CONFIG_MEMDB_MAXSIZE                     = 29
   112  	SQLITE_CONFIG_MEMSTATUS                         = 9
   113  	SQLITE_CONFIG_MMAP_SIZE                         = 22
   114  	SQLITE_CONFIG_MULTITHREAD                       = 2
   115  	SQLITE_CONFIG_MUTEX                             = 10
   116  	SQLITE_CONFIG_PAGECACHE                         = 7
   117  	SQLITE_CONFIG_PCACHE                            = 14
   118  	SQLITE_CONFIG_PCACHE2                           = 18
   119  	SQLITE_CONFIG_PCACHE_HDRSZ                      = 24
   120  	SQLITE_CONFIG_PMASZ                             = 25
   121  	SQLITE_CONFIG_SCRATCH                           = 6
   122  	SQLITE_CONFIG_SERIALIZED                        = 3
   123  	SQLITE_CONFIG_SINGLETHREAD                      = 1
   124  	SQLITE_CONFIG_SMALL_MALLOC                      = 27
   125  	SQLITE_CONFIG_SORTERREF_SIZE                    = 28
   126  	SQLITE_CONFIG_SQLLOG                            = 21
   127  	SQLITE_CONFIG_STMTJRNL_SPILL                    = 26
   128  	SQLITE_CONFIG_URI                               = 17
   129  	SQLITE_CONFIG_WIN32_HEAPSIZE                    = 23
   130  	SQLITE_CONSTRAINT                               = 19
   131  	SQLITE_CONSTRAINT_CHECK                         = 275
   132  	SQLITE_CONSTRAINT_COMMITHOOK                    = 531
   133  	SQLITE_CONSTRAINT_DATATYPE                      = 3091
   134  	SQLITE_CONSTRAINT_FOREIGNKEY                    = 787
   135  	SQLITE_CONSTRAINT_FUNCTION                      = 1043
   136  	SQLITE_CONSTRAINT_NOTNULL                       = 1299
   137  	SQLITE_CONSTRAINT_PINNED                        = 2835
   138  	SQLITE_CONSTRAINT_PRIMARYKEY                    = 1555
   139  	SQLITE_CONSTRAINT_ROWID                         = 2579
   140  	SQLITE_CONSTRAINT_TRIGGER                       = 1811
   141  	SQLITE_CONSTRAINT_UNIQUE                        = 2067
   142  	SQLITE_CONSTRAINT_VTAB                          = 2323
   143  	SQLITE_COPY                                     = 0
   144  	SQLITE_CORE                                     = 1
   145  	SQLITE_CORRUPT                                  = 11
   146  	SQLITE_CORRUPT_INDEX                            = 779
   147  	SQLITE_CORRUPT_SEQUENCE                         = 523
   148  	SQLITE_CORRUPT_VTAB                             = 267
   149  	SQLITE_CREATE_INDEX                             = 1
   150  	SQLITE_CREATE_TABLE                             = 2
   151  	SQLITE_CREATE_TEMP_INDEX                        = 3
   152  	SQLITE_CREATE_TEMP_TABLE                        = 4
   153  	SQLITE_CREATE_TEMP_TRIGGER                      = 5
   154  	SQLITE_CREATE_TEMP_VIEW                         = 6
   155  	SQLITE_CREATE_TRIGGER                           = 7
   156  	SQLITE_CREATE_VIEW                              = 8
   157  	SQLITE_CREATE_VTABLE                            = 29
   158  	SQLITE_DBCONFIG_DEFENSIVE                       = 1010
   159  	SQLITE_DBCONFIG_DQS_DDL                         = 1014
   160  	SQLITE_DBCONFIG_DQS_DML                         = 1013
   161  	SQLITE_DBCONFIG_ENABLE_FKEY                     = 1002
   162  	SQLITE_DBCONFIG_ENABLE_FTS3_TOKENIZER           = 1004
   163  	SQLITE_DBCONFIG_ENABLE_LOAD_EXTENSION           = 1005
   164  	SQLITE_DBCONFIG_ENABLE_QPSG                     = 1007
   165  	SQLITE_DBCONFIG_ENABLE_TRIGGER                  = 1003
   166  	SQLITE_DBCONFIG_ENABLE_VIEW                     = 1015
   167  	SQLITE_DBCONFIG_LEGACY_ALTER_TABLE              = 1012
   168  	SQLITE_DBCONFIG_LEGACY_FILE_FORMAT              = 1016
   169  	SQLITE_DBCONFIG_LOOKASIDE                       = 1001
   170  	SQLITE_DBCONFIG_MAINDBNAME                      = 1000
   171  	SQLITE_DBCONFIG_MAX                             = 1017
   172  	SQLITE_DBCONFIG_NO_CKPT_ON_CLOSE                = 1006
   173  	SQLITE_DBCONFIG_RESET_DATABASE                  = 1009
   174  	SQLITE_DBCONFIG_TRIGGER_EQP                     = 1008
   175  	SQLITE_DBCONFIG_TRUSTED_SCHEMA                  = 1017
   176  	SQLITE_DBCONFIG_WRITABLE_SCHEMA                 = 1011
   177  	SQLITE_DBSTATUS_CACHE_HIT                       = 7
   178  	SQLITE_DBSTATUS_CACHE_MISS                      = 8
   179  	SQLITE_DBSTATUS_CACHE_SPILL                     = 12
   180  	SQLITE_DBSTATUS_CACHE_USED                      = 1
   181  	SQLITE_DBSTATUS_CACHE_USED_SHARED               = 11
   182  	SQLITE_DBSTATUS_CACHE_WRITE                     = 9
   183  	SQLITE_DBSTATUS_DEFERRED_FKS                    = 10
   184  	SQLITE_DBSTATUS_LOOKASIDE_HIT                   = 4
   185  	SQLITE_DBSTATUS_LOOKASIDE_MISS_FULL             = 6
   186  	SQLITE_DBSTATUS_LOOKASIDE_MISS_SIZE             = 5
   187  	SQLITE_DBSTATUS_LOOKASIDE_USED                  = 0
   188  	SQLITE_DBSTATUS_MAX                             = 12
   189  	SQLITE_DBSTATUS_SCHEMA_USED                     = 2
   190  	SQLITE_DBSTATUS_STMT_USED                       = 3
   191  	SQLITE_DEFAULT_MEMSTATUS                        = 0
   192  	SQLITE_DEFAULT_PAGE_SIZE                        = 1024
   193  	SQLITE_DELETE                                   = 9
   194  	SQLITE_DENY                                     = 1
   195  	SQLITE_DEPRECATED                               = 0
   196  	SQLITE_DESERIALIZE_FREEONCLOSE                  = 1
   197  	SQLITE_DESERIALIZE_READONLY                     = 4
   198  	SQLITE_DESERIALIZE_RESIZEABLE                   = 2
   199  	SQLITE_DETACH                                   = 25
   200  	SQLITE_DETERMINISTIC                            = 0x000000800
   201  	SQLITE_DIRECTONLY                               = 0x000080000
   202  	SQLITE_DONE                                     = 101
   203  	SQLITE_DROP_INDEX                               = 10
   204  	SQLITE_DROP_TABLE                               = 11
   205  	SQLITE_DROP_TEMP_INDEX                          = 12
   206  	SQLITE_DROP_TEMP_TABLE                          = 13
   207  	SQLITE_DROP_TEMP_TRIGGER                        = 14
   208  	SQLITE_DROP_TEMP_VIEW                           = 15
   209  	SQLITE_DROP_TRIGGER                             = 16
   210  	SQLITE_DROP_VIEW                                = 17
   211  	SQLITE_DROP_VTABLE                              = 30
   212  	SQLITE_EMPTY                                    = 16
   213  	SQLITE_ENABLE_BYTECODE_VTAB                     = 1
   214  	SQLITE_ENABLE_COLUMN_METADATA                   = 1
   215  	SQLITE_ENABLE_DBPAGE_VTAB                       = 1
   216  	SQLITE_ENABLE_DBSTAT_VTAB                       = 1
   217  	SQLITE_ENABLE_DESERIALIZE                       = 1
   218  	SQLITE_ENABLE_EXPLAIN_COMMENTS                  = 1
   219  	SQLITE_ENABLE_FTS5                              = 1
   220  	SQLITE_ENABLE_GEOPOLY                           = 1
   221  	SQLITE_ENABLE_MATH_FUNCTIONS                    = 1
   222  	SQLITE_ENABLE_MEMORY_MANAGEMENT                 = 1
   223  	SQLITE_ENABLE_OFFSET_SQL_FUNC                   = 1
   224  	SQLITE_ENABLE_PREUPDATE_HOOK                    = 1
   225  	SQLITE_ENABLE_RBU                               = 1
   226  	SQLITE_ENABLE_RTREE                             = 1
   227  	SQLITE_ENABLE_SESSION                           = 1
   228  	SQLITE_ENABLE_SNAPSHOT                          = 1
   229  	SQLITE_ENABLE_STAT4                             = 1
   230  	SQLITE_ENABLE_STMTVTAB                          = 1
   231  	SQLITE_ENABLE_UNLOCK_NOTIFY                     = 1
   232  	SQLITE_ERROR                                    = 1
   233  	SQLITE_ERROR_MISSING_COLLSEQ                    = 257
   234  	SQLITE_ERROR_RETRY                              = 513
   235  	SQLITE_ERROR_SNAPSHOT                           = 769
   236  	SQLITE_EXPERIMENTAL                             = 0
   237  	SQLITE_FAIL                                     = 3
   238  	SQLITE_FCNTL_BEGIN_ATOMIC_WRITE                 = 31
   239  	SQLITE_FCNTL_BUSYHANDLER                        = 15
   240  	SQLITE_FCNTL_CHUNK_SIZE                         = 6
   241  	SQLITE_FCNTL_CKPT_DONE                          = 37
   242  	SQLITE_FCNTL_CKPT_START                         = 39
   243  	SQLITE_FCNTL_CKSM_FILE                          = 41
   244  	SQLITE_FCNTL_COMMIT_ATOMIC_WRITE                = 32
   245  	SQLITE_FCNTL_COMMIT_PHASETWO                    = 22
   246  	SQLITE_FCNTL_DATA_VERSION                       = 35
   247  	SQLITE_FCNTL_EXTERNAL_READER                    = 40
   248  	SQLITE_FCNTL_FILE_POINTER                       = 7
   249  	SQLITE_FCNTL_GET_LOCKPROXYFILE                  = 2
   250  	SQLITE_FCNTL_HAS_MOVED                          = 20
   251  	SQLITE_FCNTL_JOURNAL_POINTER                    = 28
   252  	SQLITE_FCNTL_LAST_ERRNO                         = 4
   253  	SQLITE_FCNTL_LOCKSTATE                          = 1
   254  	SQLITE_FCNTL_LOCK_TIMEOUT                       = 34
   255  	SQLITE_FCNTL_MMAP_SIZE                          = 18
   256  	SQLITE_FCNTL_OVERWRITE                          = 11
   257  	SQLITE_FCNTL_PDB                                = 30
   258  	SQLITE_FCNTL_PERSIST_WAL                        = 10
   259  	SQLITE_FCNTL_POWERSAFE_OVERWRITE                = 13
   260  	SQLITE_FCNTL_PRAGMA                             = 14
   261  	SQLITE_FCNTL_RBU                                = 26
   262  	SQLITE_FCNTL_RESERVE_BYTES                      = 38
   263  	SQLITE_FCNTL_ROLLBACK_ATOMIC_WRITE              = 33
   264  	SQLITE_FCNTL_SET_LOCKPROXYFILE                  = 3
   265  	SQLITE_FCNTL_SIZE_HINT                          = 5
   266  	SQLITE_FCNTL_SIZE_LIMIT                         = 36
   267  	SQLITE_FCNTL_SYNC                               = 21
   268  	SQLITE_FCNTL_SYNC_OMITTED                       = 8
   269  	SQLITE_FCNTL_TEMPFILENAME                       = 16
   270  	SQLITE_FCNTL_TRACE                              = 19
   271  	SQLITE_FCNTL_VFSNAME                            = 12
   272  	SQLITE_FCNTL_VFS_POINTER                        = 27
   273  	SQLITE_FCNTL_WAL_BLOCK                          = 24
   274  	SQLITE_FCNTL_WIN32_AV_RETRY                     = 9
   275  	SQLITE_FCNTL_WIN32_GET_HANDLE                   = 29
   276  	SQLITE_FCNTL_WIN32_SET_HANDLE                   = 23
   277  	SQLITE_FCNTL_ZIPVFS                             = 25
   278  	SQLITE_FLOAT                                    = 2
   279  	SQLITE_FORMAT                                   = 24
   280  	SQLITE_FULL                                     = 13
   281  	SQLITE_FUNCTION                                 = 31
   282  	SQLITE_GET_LOCKPROXYFILE                        = 2
   283  	SQLITE_IGNORE                                   = 2
   284  	SQLITE_INDEX_CONSTRAINT_EQ                      = 2
   285  	SQLITE_INDEX_CONSTRAINT_FUNCTION                = 150
   286  	SQLITE_INDEX_CONSTRAINT_GE                      = 32
   287  	SQLITE_INDEX_CONSTRAINT_GLOB                    = 66
   288  	SQLITE_INDEX_CONSTRAINT_GT                      = 4
   289  	SQLITE_INDEX_CONSTRAINT_IS                      = 72
   290  	SQLITE_INDEX_CONSTRAINT_ISNOT                   = 69
   291  	SQLITE_INDEX_CONSTRAINT_ISNOTNULL               = 70
   292  	SQLITE_INDEX_CONSTRAINT_ISNULL                  = 71
   293  	SQLITE_INDEX_CONSTRAINT_LE                      = 8
   294  	SQLITE_INDEX_CONSTRAINT_LIKE                    = 65
   295  	SQLITE_INDEX_CONSTRAINT_LIMIT                   = 73
   296  	SQLITE_INDEX_CONSTRAINT_LT                      = 16
   297  	SQLITE_INDEX_CONSTRAINT_MATCH                   = 64
   298  	SQLITE_INDEX_CONSTRAINT_NE                      = 68
   299  	SQLITE_INDEX_CONSTRAINT_OFFSET                  = 74
   300  	SQLITE_INDEX_CONSTRAINT_REGEXP                  = 67
   301  	SQLITE_INDEX_SCAN_UNIQUE                        = 1
   302  	SQLITE_INNOCUOUS                                = 0x000200000
   303  	SQLITE_INSERT                                   = 18
   304  	SQLITE_INTEGER                                  = 1
   305  	SQLITE_INTERNAL                                 = 2
   306  	SQLITE_INTERRUPT                                = 9
   307  	SQLITE_IOCAP_ATOMIC                             = 0x00000001
   308  	SQLITE_IOCAP_ATOMIC16K                          = 0x00000040
   309  	SQLITE_IOCAP_ATOMIC1K                           = 0x00000004
   310  	SQLITE_IOCAP_ATOMIC2K                           = 0x00000008
   311  	SQLITE_IOCAP_ATOMIC32K                          = 0x00000080
   312  	SQLITE_IOCAP_ATOMIC4K                           = 0x00000010
   313  	SQLITE_IOCAP_ATOMIC512                          = 0x00000002
   314  	SQLITE_IOCAP_ATOMIC64K                          = 0x00000100
   315  	SQLITE_IOCAP_ATOMIC8K                           = 0x00000020
   316  	SQLITE_IOCAP_BATCH_ATOMIC                       = 0x00004000
   317  	SQLITE_IOCAP_IMMUTABLE                          = 0x00002000
   318  	SQLITE_IOCAP_POWERSAFE_OVERWRITE                = 0x00001000
   319  	SQLITE_IOCAP_SAFE_APPEND                        = 0x00000200
   320  	SQLITE_IOCAP_SEQUENTIAL                         = 0x00000400
   321  	SQLITE_IOCAP_UNDELETABLE_WHEN_OPEN              = 0x00000800
   322  	SQLITE_IOERR                                    = 10
   323  	SQLITE_IOERR_ACCESS                             = 3338
   324  	SQLITE_IOERR_AUTH                               = 7178
   325  	SQLITE_IOERR_BEGIN_ATOMIC                       = 7434
   326  	SQLITE_IOERR_BLOCKED                            = 2826
   327  	SQLITE_IOERR_CHECKRESERVEDLOCK                  = 3594
   328  	SQLITE_IOERR_CLOSE                              = 4106
   329  	SQLITE_IOERR_COMMIT_ATOMIC                      = 7690
   330  	SQLITE_IOERR_CONVPATH                           = 6666
   331  	SQLITE_IOERR_CORRUPTFS                          = 8458
   332  	SQLITE_IOERR_DATA                               = 8202
   333  	SQLITE_IOERR_DELETE                             = 2570
   334  	SQLITE_IOERR_DELETE_NOENT                       = 5898
   335  	SQLITE_IOERR_DIR_CLOSE                          = 4362
   336  	SQLITE_IOERR_DIR_FSYNC                          = 1290
   337  	SQLITE_IOERR_FSTAT                              = 1802
   338  	SQLITE_IOERR_FSYNC                              = 1034
   339  	SQLITE_IOERR_GETTEMPPATH                        = 6410
   340  	SQLITE_IOERR_LOCK                               = 3850
   341  	SQLITE_IOERR_MMAP                               = 6154
   342  	SQLITE_IOERR_NOMEM                              = 3082
   343  	SQLITE_IOERR_RDLOCK                             = 2314
   344  	SQLITE_IOERR_READ                               = 266
   345  	SQLITE_IOERR_ROLLBACK_ATOMIC                    = 7946
   346  	SQLITE_IOERR_SEEK                               = 5642
   347  	SQLITE_IOERR_SHMLOCK                            = 5130
   348  	SQLITE_IOERR_SHMMAP                             = 5386
   349  	SQLITE_IOERR_SHMOPEN                            = 4618
   350  	SQLITE_IOERR_SHMSIZE                            = 4874
   351  	SQLITE_IOERR_SHORT_READ                         = 522
   352  	SQLITE_IOERR_TRUNCATE                           = 1546
   353  	SQLITE_IOERR_UNLOCK                             = 2058
   354  	SQLITE_IOERR_VNODE                              = 6922
   355  	SQLITE_IOERR_WRITE                              = 778
   356  	SQLITE_LAST_ERRNO                               = 4
   357  	SQLITE_LIKE_DOESNT_MATCH_BLOBS                  = 1
   358  	SQLITE_LIMIT_ATTACHED                           = 7
   359  	SQLITE_LIMIT_COLUMN                             = 2
   360  	SQLITE_LIMIT_COMPOUND_SELECT                    = 4
   361  	SQLITE_LIMIT_EXPR_DEPTH                         = 3
   362  	SQLITE_LIMIT_FUNCTION_ARG                       = 6
   363  	SQLITE_LIMIT_LENGTH                             = 0
   364  	SQLITE_LIMIT_LIKE_PATTERN_LENGTH                = 8
   365  	SQLITE_LIMIT_SQL_LENGTH                         = 1
   366  	SQLITE_LIMIT_TRIGGER_DEPTH                      = 10
   367  	SQLITE_LIMIT_VARIABLE_NUMBER                    = 9
   368  	SQLITE_LIMIT_VDBE_OP                            = 5
   369  	SQLITE_LIMIT_WORKER_THREADS                     = 11
   370  	SQLITE_LOCKED                                   = 6
   371  	SQLITE_LOCKED_SHAREDCACHE                       = 262
   372  	SQLITE_LOCKED_VTAB                              = 518
   373  	SQLITE_LOCK_EXCLUSIVE                           = 4
   374  	SQLITE_LOCK_NONE                                = 0
   375  	SQLITE_LOCK_PENDING                             = 3
   376  	SQLITE_LOCK_RESERVED                            = 2
   377  	SQLITE_LOCK_SHARED                              = 1
   378  	SQLITE_MISMATCH                                 = 20
   379  	SQLITE_MISUSE                                   = 21
   380  	SQLITE_MUTEX_APPDEF                             = 1
   381  	SQLITE_MUTEX_FAST                               = 0
   382  	SQLITE_MUTEX_NOOP                               = 1
   383  	SQLITE_MUTEX_RECURSIVE                          = 1
   384  	SQLITE_MUTEX_STATIC_APP1                        = 8
   385  	SQLITE_MUTEX_STATIC_APP2                        = 9
   386  	SQLITE_MUTEX_STATIC_APP3                        = 10
   387  	SQLITE_MUTEX_STATIC_LRU                         = 6
   388  	SQLITE_MUTEX_STATIC_LRU2                        = 7
   389  	SQLITE_MUTEX_STATIC_MAIN                        = 2
   390  	SQLITE_MUTEX_STATIC_MASTER                      = 2
   391  	SQLITE_MUTEX_STATIC_MEM                         = 3
   392  	SQLITE_MUTEX_STATIC_MEM2                        = 4
   393  	SQLITE_MUTEX_STATIC_OPEN                        = 4
   394  	SQLITE_MUTEX_STATIC_PMEM                        = 7
   395  	SQLITE_MUTEX_STATIC_PRNG                        = 5
   396  	SQLITE_MUTEX_STATIC_VFS1                        = 11
   397  	SQLITE_MUTEX_STATIC_VFS2                        = 12
   398  	SQLITE_MUTEX_STATIC_VFS3                        = 13
   399  	SQLITE_NOLFS                                    = 22
   400  	SQLITE_NOMEM                                    = 7
   401  	SQLITE_NOTADB                                   = 26
   402  	SQLITE_NOTFOUND                                 = 12
   403  	SQLITE_NOTICE                                   = 27
   404  	SQLITE_NOTICE_RECOVER_ROLLBACK                  = 539
   405  	SQLITE_NOTICE_RECOVER_WAL                       = 283
   406  	SQLITE_NULL                                     = 5
   407  	SQLITE_OK                                       = 0
   408  	SQLITE_OK_LOAD_PERMANENTLY                      = 256
   409  	SQLITE_OK_SYMLINK                               = 512
   410  	SQLITE_OMIT_LOAD_EXTENSION                      = 1
   411  	SQLITE_OPEN_AUTOPROXY                           = 0x00000020
   412  	SQLITE_OPEN_CREATE                              = 0x00000004
   413  	SQLITE_OPEN_DELETEONCLOSE                       = 0x00000008
   414  	SQLITE_OPEN_EXCLUSIVE                           = 0x00000010
   415  	SQLITE_OPEN_EXRESCODE                           = 0x02000000
   416  	SQLITE_OPEN_FULLMUTEX                           = 0x00010000
   417  	SQLITE_OPEN_MAIN_DB                             = 0x00000100
   418  	SQLITE_OPEN_MAIN_JOURNAL                        = 0x00000800
   419  	SQLITE_OPEN_MASTER_JOURNAL                      = 0x00004000
   420  	SQLITE_OPEN_MEMORY                              = 0x00000080
   421  	SQLITE_OPEN_NOFOLLOW                            = 0x01000000
   422  	SQLITE_OPEN_NOMUTEX                             = 0x00008000
   423  	SQLITE_OPEN_PRIVATECACHE                        = 0x00040000
   424  	SQLITE_OPEN_READONLY                            = 0x00000001
   425  	SQLITE_OPEN_READWRITE                           = 0x00000002
   426  	SQLITE_OPEN_SHAREDCACHE                         = 0x00020000
   427  	SQLITE_OPEN_SUBJOURNAL                          = 0x00002000
   428  	SQLITE_OPEN_SUPER_JOURNAL                       = 0x00004000
   429  	SQLITE_OPEN_TEMP_DB                             = 0x00000200
   430  	SQLITE_OPEN_TEMP_JOURNAL                        = 0x00001000
   431  	SQLITE_OPEN_TRANSIENT_DB                        = 0x00000400
   432  	SQLITE_OPEN_URI                                 = 0x00000040
   433  	SQLITE_OPEN_WAL                                 = 0x00080000
   434  	SQLITE_OS_UNIX                                  = 1
   435  	SQLITE_PERM                                     = 3
   436  	SQLITE_PRAGMA                                   = 19
   437  	SQLITE_PREPARE_NORMALIZE                        = 0x02
   438  	SQLITE_PREPARE_NO_VTAB                          = 0x04
   439  	SQLITE_PREPARE_PERSISTENT                       = 0x01
   440  	SQLITE_PROTOCOL                                 = 15
   441  	SQLITE_RANGE                                    = 25
   442  	SQLITE_READ                                     = 20
   443  	SQLITE_READONLY                                 = 8
   444  	SQLITE_READONLY_CANTINIT                        = 1288
   445  	SQLITE_READONLY_CANTLOCK                        = 520
   446  	SQLITE_READONLY_DBMOVED                         = 1032
   447  	SQLITE_READONLY_DIRECTORY                       = 1544
   448  	SQLITE_READONLY_RECOVERY                        = 264
   449  	SQLITE_READONLY_ROLLBACK                        = 776
   450  	SQLITE_RECURSIVE                                = 33
   451  	SQLITE_REINDEX                                  = 27
   452  	SQLITE_REPLACE                                  = 5
   453  	SQLITE_ROLLBACK                                 = 1
   454  	SQLITE_ROW                                      = 100
   455  	SQLITE_SAVEPOINT                                = 32
   456  	SQLITE_SCANSTAT_EST                             = 2
   457  	SQLITE_SCANSTAT_EXPLAIN                         = 4
   458  	SQLITE_SCANSTAT_NAME                            = 3
   459  	SQLITE_SCANSTAT_NLOOP                           = 0
   460  	SQLITE_SCANSTAT_NVISIT                          = 1
   461  	SQLITE_SCANSTAT_SELECTID                        = 5
   462  	SQLITE_SCHEMA                                   = 17
   463  	SQLITE_SELECT                                   = 21
   464  	SQLITE_SERIALIZE_NOCOPY                         = 0x001
   465  	SQLITE_SERIES_CONSTRAINT_VERIFY                 = 1
   466  	SQLITE_SERVER                                   = 1
   467  	SQLITE_SESSION_CONFIG_STRMSIZE                  = 1
   468  	SQLITE_SESSION_OBJCONFIG_SIZE                   = 1
   469  	SQLITE_SET_LOCKPROXYFILE                        = 3
   470  	SQLITE_SHM_EXCLUSIVE                            = 8
   471  	SQLITE_SHM_LOCK                                 = 2
   472  	SQLITE_SHM_NLOCK                                = 8
   473  	SQLITE_SHM_SHARED                               = 4
   474  	SQLITE_SHM_UNLOCK                               = 1
   475  	SQLITE_SOUNDEX                                  = 1
   476  	SQLITE_SOURCE_ID                                = "2022-09-05 11:02:23 4635f4a69c8c2a8df242b384a992aea71224e39a2ccab42d8c0b0602f1e826e8"
   477  	SQLITE_STATUS_MALLOC_COUNT                      = 9
   478  	SQLITE_STATUS_MALLOC_SIZE                       = 5
   479  	SQLITE_STATUS_MEMORY_USED                       = 0
   480  	SQLITE_STATUS_PAGECACHE_OVERFLOW                = 2
   481  	SQLITE_STATUS_PAGECACHE_SIZE                    = 7
   482  	SQLITE_STATUS_PAGECACHE_USED                    = 1
   483  	SQLITE_STATUS_PARSER_STACK                      = 6
   484  	SQLITE_STATUS_SCRATCH_OVERFLOW                  = 4
   485  	SQLITE_STATUS_SCRATCH_SIZE                      = 8
   486  	SQLITE_STATUS_SCRATCH_USED                      = 3
   487  	SQLITE_STDCALL                                  = 0
   488  	SQLITE_STMTSTATUS_AUTOINDEX                     = 3
   489  	SQLITE_STMTSTATUS_FILTER_HIT                    = 8
   490  	SQLITE_STMTSTATUS_FILTER_MISS                   = 7
   491  	SQLITE_STMTSTATUS_FULLSCAN_STEP                 = 1
   492  	SQLITE_STMTSTATUS_MEMUSED                       = 99
   493  	SQLITE_STMTSTATUS_REPREPARE                     = 5
   494  	SQLITE_STMTSTATUS_RUN                           = 6
   495  	SQLITE_STMTSTATUS_SORT                          = 2
   496  	SQLITE_STMTSTATUS_VM_STEP                       = 4
   497  	SQLITE_SUBTYPE                                  = 0x000100000
   498  	SQLITE_SYNC_DATAONLY                            = 0x00010
   499  	SQLITE_SYNC_FULL                                = 0x00003
   500  	SQLITE_SYNC_NORMAL                              = 0x00002
   501  	SQLITE_SYSAPI                                   = 0
   502  	SQLITE_TEMP_STORE                               = 1
   503  	SQLITE_TEST                                     = 1
   504  	SQLITE_TESTCTRL_ALWAYS                          = 13
   505  	SQLITE_TESTCTRL_ASSERT                          = 12
   506  	SQLITE_TESTCTRL_BENIGN_MALLOC_HOOKS             = 10
   507  	SQLITE_TESTCTRL_BITVEC_TEST                     = 8
   508  	SQLITE_TESTCTRL_BYTEORDER                       = 22
   509  	SQLITE_TESTCTRL_EXPLAIN_STMT                    = 19
   510  	SQLITE_TESTCTRL_EXTRA_SCHEMA_CHECKS             = 29
   511  	SQLITE_TESTCTRL_FAULT_INSTALL                   = 9
   512  	SQLITE_TESTCTRL_FIRST                           = 5
   513  	SQLITE_TESTCTRL_IMPOSTER                        = 25
   514  	SQLITE_TESTCTRL_INTERNAL_FUNCTIONS              = 17
   515  	SQLITE_TESTCTRL_ISINIT                          = 23
   516  	SQLITE_TESTCTRL_ISKEYWORD                       = 16
   517  	SQLITE_TESTCTRL_LAST                            = 33
   518  	SQLITE_TESTCTRL_LOCALTIME_FAULT                 = 18
   519  	SQLITE_TESTCTRL_LOGEST                          = 33
   520  	SQLITE_TESTCTRL_NEVER_CORRUPT                   = 20
   521  	SQLITE_TESTCTRL_ONCE_RESET_THRESHOLD            = 19
   522  	SQLITE_TESTCTRL_OPTIMIZATIONS                   = 15
   523  	SQLITE_TESTCTRL_PARSER_COVERAGE                 = 26
   524  	SQLITE_TESTCTRL_PENDING_BYTE                    = 11
   525  	SQLITE_TESTCTRL_PRNG_RESET                      = 7
   526  	SQLITE_TESTCTRL_PRNG_RESTORE                    = 6
   527  	SQLITE_TESTCTRL_PRNG_SAVE                       = 5
   528  	SQLITE_TESTCTRL_PRNG_SEED                       = 28
   529  	SQLITE_TESTCTRL_RESERVE                         = 14
   530  	SQLITE_TESTCTRL_RESULT_INTREAL                  = 27
   531  	SQLITE_TESTCTRL_SCRATCHMALLOC                   = 17
   532  	SQLITE_TESTCTRL_SEEK_COUNT                      = 30
   533  	SQLITE_TESTCTRL_SORTER_MMAP                     = 24
   534  	SQLITE_TESTCTRL_TRACEFLAGS                      = 31
   535  	SQLITE_TESTCTRL_TUNE                            = 32
   536  	SQLITE_TESTCTRL_VDBE_COVERAGE                   = 21
   537  	SQLITE_TEXT                                     = 3
   538  	SQLITE_THREADSAFE                               = 1
   539  	SQLITE_TOOBIG                                   = 18
   540  	SQLITE_TRACE_CLOSE                              = 0x08
   541  	SQLITE_TRACE_PROFILE                            = 0x02
   542  	SQLITE_TRACE_ROW                                = 0x04
   543  	SQLITE_TRACE_STMT                               = 0x01
   544  	SQLITE_TRANSACTION                              = 22
   545  	SQLITE_TXN_NONE                                 = 0
   546  	SQLITE_TXN_READ                                 = 1
   547  	SQLITE_TXN_WRITE                                = 2
   548  	SQLITE_UPDATE                                   = 23
   549  	SQLITE_UTF16                                    = 4
   550  	SQLITE_UTF16BE                                  = 3
   551  	SQLITE_UTF16LE                                  = 2
   552  	SQLITE_UTF16_ALIGNED                            = 8
   553  	SQLITE_UTF8                                     = 1
   554  	SQLITE_VERSION                                  = "3.39.3"
   555  	SQLITE_VERSION_NUMBER                           = 3039003
   556  	SQLITE_VTAB_CONSTRAINT_SUPPORT                  = 1
   557  	SQLITE_VTAB_DIRECTONLY                          = 3
   558  	SQLITE_VTAB_INNOCUOUS                           = 2
   559  	SQLITE_WARNING                                  = 28
   560  	SQLITE_WARNING_AUTOINDEX                        = 284
   561  	SQLITE_WIN32_DATA_DIRECTORY_TYPE                = 1
   562  	SQLITE_WIN32_TEMP_DIRECTORY_TYPE                = 2
   563  	SQLITE_WITHOUT_ZONEMALLOC                       = 1
   564  	TMP_MAX                                         = 308915776
   565  	UNIQUE_TABLE_NAME                               = "t592690916721053953805701627921227776"
   566  	X_ASSERT_H_                                     = 0
   567  	X_BSD_I386__TYPES_H_                            = 0
   568  	X_BSD_MACHINE_TYPES_H_                          = 0
   569  	X_BSD_MACHINE__TYPES_H_                         = 0
   570  	X_CDEFS_H_                                      = 0
   571  	X_CTERMID_H_                                    = 0
   572  	X_DARWIN_FEATURE_64_BIT_INODE                   = 1
   573  	X_DARWIN_FEATURE_ONLY_UNIX_CONFORMANCE          = 1
   574  	X_DARWIN_FEATURE_UNIX_CONFORMANCE               = 3
   575  	X_ERRNO_T                                       = 0
   576  	X_FILE_OFFSET_BITS                              = 64
   577  	X_FORTIFY_SOURCE                                = 2
   578  	X_FSTDIO                                        = 0
   579  	X_FTS5_H                                        = 0
   580  	X_HAVE_SQLITE_CONFIG_H                          = 1
   581  	X_INT16_T                                       = 0
   582  	X_INT32_T                                       = 0
   583  	X_INT64_T                                       = 0
   584  	X_INT8_T                                        = 0
   585  	X_INTPTR_T                                      = 0
   586  	X_IOFBF                                         = 0
   587  	X_IOLBF                                         = 1
   588  	X_IONBF                                         = 2
   589  	X_LP64                                          = 1
   590  	X_MACHTYPES_H_                                  = 0
   591  	X_Nonnull                                       = 0
   592  	X_Null_unspecified                              = 0
   593  	X_Nullable                                      = 0
   594  	X_OFF_T                                         = 0
   595  	X_RSIZE_T                                       = 0
   596  	X_SECURE__COMMON_H_                             = 0
   597  	X_SECURE__STDIO_H_                              = 0
   598  	X_SECURE__STRINGS_H_                            = 0
   599  	X_SECURE__STRING_H_                             = 0
   600  	X_SIZE_T                                        = 0
   601  	X_SQLITE3RTREE_H_                               = 0
   602  	X_SSIZE_T                                       = 0
   603  	X_STDIO_H_                                      = 0
   604  	X_STRINGS_H_                                    = 0
   605  	X_STRING_H_                                     = 0
   606  	X_SYS_STDIO_H_                                  = 0
   607  	X_SYS__PTHREAD_TYPES_H_                         = 0
   608  	X_SYS__TYPES_H_                                 = 0
   609  	X_UINTPTR_T                                     = 0
   610  	X_USE_FORTIFY_LEVEL                             = 2
   611  	X_U_INT16_T                                     = 0
   612  	X_U_INT32_T                                     = 0
   613  	X_U_INT64_T                                     = 0
   614  	X_U_INT8_T                                      = 0
   615  	X_VA_LIST                                       = 0
   616  	X_VA_LIST_T                                     = 0
   617  	CRTIMPORT                                       = 0
   618  	DLLIMPORT                                       = 0
   619  	INLINE                                          = 0
   620  	MP_DIGIT_DECLARED                               = 0
   621  	MP_INT_DECLARED                                 = 0
   622  	NUM_STATIC_TOKENS                               = 20
   623  	SQLITE_TCLAPI                                   = 0
   624  	TCL_ALLOW_INLINE_COMPILATION                    = 0x20000
   625  	TCL_ALL_EVENTS                                  = -3
   626  	TCL_ALPHA_RELEASE                               = 0
   627  	TCL_APPEND_VALUE                                = 4
   628  	TCL_BETA_RELEASE                                = 1
   629  	TCL_BREAK                                       = 3
   630  	TCL_CFG_DO64BIT                                 = 1
   631  	TCL_CHANNEL_THREAD_INSERT                       = 0
   632  	TCL_CHANNEL_THREAD_REMOVE                       = 1
   633  	TCL_CLOSE_READ                                  = 2
   634  	TCL_CLOSE_WRITE                                 = 4
   635  	TCL_CONTINUE                                    = 4
   636  	TCL_CONVERT_MULTIBYTE                           = -1
   637  	TCL_CONVERT_NOSPACE                             = -4
   638  	TCL_CONVERT_SYNTAX                              = -2
   639  	TCL_CONVERT_UNKNOWN                             = -3
   640  	TCL_CREATE_HARD_LINK                            = 0x02
   641  	TCL_CREATE_SYMBOLIC_LINK                        = 0x01
   642  	TCL_CUSTOM_PTR_KEYS                             = -1
   643  	TCL_CUSTOM_TYPE_KEYS                            = -2
   644  	TCL_DONT_QUOTE_HASH                             = 8
   645  	TCL_DONT_USE_BRACES                             = 1
   646  	TCL_DONT_WAIT                                   = 2
   647  	TCL_DOUBLE_SPACE                                = 27
   648  	TCL_DSTRING_STATIC_SIZE                         = 200
   649  	TCL_ENCODING_END                                = 0x02
   650  	TCL_ENCODING_START                              = 0x01
   651  	TCL_ENCODING_STOPONERROR                        = 0x04
   652  	TCL_ENFORCE_MODE                                = 16
   653  	TCL_ENSEMBLE_PREFIX                             = 0x02
   654  	TCL_ERROR                                       = 1
   655  	TCL_EVAL_DIRECT                                 = 0x40000
   656  	TCL_EVAL_GLOBAL                                 = 0x20000
   657  	TCL_EVAL_INVOKE                                 = 0x80000
   658  	TCL_EXACT                                       = 1
   659  	TCL_EXCEPTION                                   = 8
   660  	TCL_FILE_EVENTS                                 = 8
   661  	TCL_FINAL_RELEASE                               = 2
   662  	TCL_GLOBAL_ONLY                                 = 1
   663  	TCL_GLOB_PERM_HIDDEN                            = 2
   664  	TCL_GLOB_PERM_R                                 = 4
   665  	TCL_GLOB_PERM_RONLY                             = 1
   666  	TCL_GLOB_PERM_W                                 = 8
   667  	TCL_GLOB_PERM_X                                 = 16
   668  	TCL_GLOB_TYPE_BLOCK                             = 1
   669  	TCL_GLOB_TYPE_CHAR                              = 2
   670  	TCL_GLOB_TYPE_DIR                               = 4
   671  	TCL_GLOB_TYPE_FILE                              = 16
   672  	TCL_GLOB_TYPE_LINK                              = 32
   673  	TCL_GLOB_TYPE_MOUNT                             = 128
   674  	TCL_GLOB_TYPE_PIPE                              = 8
   675  	TCL_GLOB_TYPE_SOCK                              = 64
   676  	TCL_HASH_KEY_RANDOMIZE_HASH                     = 0x1
   677  	TCL_HASH_KEY_STORE_HASH                         = 1
   678  	TCL_HASH_KEY_SYSTEM_HASH                        = 0x2
   679  	TCL_HASH_KEY_TYPE_VERSION                       = 1
   680  	TCL_IDLE_EVENTS                                 = 32
   681  	TCL_INTEGER_SPACE                               = 24
   682  	TCL_INTERP_DESTROYED                            = 0x100
   683  	TCL_LEAVE_ERR_MSG                               = 0x200
   684  	TCL_LIMIT_COMMANDS                              = 0x01
   685  	TCL_LIMIT_TIME                                  = 0x02
   686  	TCL_LINK_BOOLEAN                                = 3
   687  	TCL_LINK_CHAR                                   = 6
   688  	TCL_LINK_DOUBLE                                 = 2
   689  	TCL_LINK_FLOAT                                  = 13
   690  	TCL_LINK_INT                                    = 1
   691  	TCL_LINK_LONG                                   = 11
   692  	TCL_LINK_READ_ONLY                              = 0x80
   693  	TCL_LINK_SHORT                                  = 8
   694  	TCL_LINK_STRING                                 = 4
   695  	TCL_LINK_UCHAR                                  = 7
   696  	TCL_LINK_UINT                                   = 10
   697  	TCL_LINK_ULONG                                  = 12
   698  	TCL_LINK_USHORT                                 = 9
   699  	TCL_LINK_WIDE_INT                               = 5
   700  	TCL_LINK_WIDE_UINT                              = 14
   701  	TCL_LIST_ELEMENT                                = 8
   702  	TCL_LL_MODIFIER                                 = "l"
   703  	TCL_MAJOR_VERSION                               = 8
   704  	TCL_MATCH_NOCASE                                = 1
   705  	TCL_MAX_PREC                                    = 17
   706  	TCL_MINOR_VERSION                               = 5
   707  	TCL_MODE_BLOCKING                               = 0
   708  	TCL_MODE_NONBLOCKING                            = 1
   709  	TCL_NAMESPACE_ONLY                              = 2
   710  	TCL_NO_EVAL                                     = 0x10000
   711  	TCL_OK                                          = 0
   712  	TCL_ONE_WORD_KEYS                               = 1
   713  	TCL_PARSE_BAD_NUMBER                            = 9
   714  	TCL_PARSE_BRACE_EXTRA                           = 2
   715  	TCL_PARSE_MISSING_BRACE                         = 3
   716  	TCL_PARSE_MISSING_BRACKET                       = 4
   717  	TCL_PARSE_MISSING_PAREN                         = 5
   718  	TCL_PARSE_MISSING_QUOTE                         = 6
   719  	TCL_PARSE_MISSING_VAR_BRACE                     = 7
   720  	TCL_PARSE_PART1                                 = 0x400
   721  	TCL_PARSE_QUOTE_EXTRA                           = 1
   722  	TCL_PARSE_SUCCESS                               = 0
   723  	TCL_PARSE_SYNTAX                                = 8
   724  	TCL_PATCH_LEVEL                                 = "8.5.9"
   725  	TCL_READABLE                                    = 2
   726  	TCL_REG_ADVANCED                                = 000003
   727  	TCL_REG_ADVF                                    = 000002
   728  	TCL_REG_BASIC                                   = 000000
   729  	TCL_REG_CANMATCH                                = 001000
   730  	TCL_REG_EXPANDED                                = 000040
   731  	TCL_REG_EXTENDED                                = 000001
   732  	TCL_REG_NEWLINE                                 = 000300
   733  	TCL_REG_NLANCH                                  = 000200
   734  	TCL_REG_NLSTOP                                  = 000100
   735  	TCL_REG_NOCASE                                  = 000010
   736  	TCL_REG_NOSUB                                   = 000020
   737  	TCL_REG_NOTBOL                                  = 0001
   738  	TCL_REG_NOTEOL                                  = 0002
   739  	TCL_REG_QUOTE                                   = 000004
   740  	TCL_RELEASE_LEVEL                               = 2
   741  	TCL_RELEASE_SERIAL                              = 9
   742  	TCL_RESULT_SIZE                                 = 200
   743  	TCL_RETURN                                      = 2
   744  	TCL_SERVICE_ALL                                 = 1
   745  	TCL_SERVICE_NONE                                = 0
   746  	TCL_SMALL_HASH_TABLE                            = 4
   747  	TCL_STDERR                                      = 8
   748  	TCL_STDIN                                       = 2
   749  	TCL_STDOUT                                      = 4
   750  	TCL_STORAGE_CLASS                               = 0
   751  	TCL_STRING_KEYS                                 = 0
   752  	TCL_SUBST_ALL                                   = 007
   753  	TCL_SUBST_BACKSLASHES                           = 004
   754  	TCL_SUBST_COMMANDS                              = 001
   755  	TCL_SUBST_VARIABLES                             = 002
   756  	TCL_THREAD_CREATE_RETURN                        = 0
   757  	TCL_THREAD_JOINABLE                             = 1
   758  	TCL_THREAD_NOFLAGS                              = 0
   759  	TCL_THREAD_STACK_DEFAULT                        = 0
   760  	TCL_TIMER_EVENTS                                = 16
   761  	TCL_TOKEN_BS                                    = 8
   762  	TCL_TOKEN_COMMAND                               = 16
   763  	TCL_TOKEN_EXPAND_WORD                           = 256
   764  	TCL_TOKEN_OPERATOR                              = 128
   765  	TCL_TOKEN_SIMPLE_WORD                           = 2
   766  	TCL_TOKEN_SUB_EXPR                              = 64
   767  	TCL_TOKEN_TEXT                                  = 4
   768  	TCL_TOKEN_VARIABLE                              = 32
   769  	TCL_TOKEN_WORD                                  = 1
   770  	TCL_TRACE_ARRAY                                 = 0x800
   771  	TCL_TRACE_DELETE                                = 0x4000
   772  	TCL_TRACE_DESTROYED                             = 0x80
   773  	TCL_TRACE_OLD_STYLE                             = 0x1000
   774  	TCL_TRACE_READS                                 = 0x10
   775  	TCL_TRACE_RENAME                                = 0x2000
   776  	TCL_TRACE_RESULT_DYNAMIC                        = 0x8000
   777  	TCL_TRACE_RESULT_OBJECT                         = 0x10000
   778  	TCL_TRACE_UNSETS                                = 0x40
   779  	TCL_TRACE_WRITES                                = 0x20
   780  	TCL_UNLOAD_DETACH_FROM_INTERPRETER              = 1
   781  	TCL_UNLOAD_DETACH_FROM_PROCESS                  = 2
   782  	TCL_UTF_MAX                                     = 3
   783  	TCL_VERSION                                     = "8.5"
   784  	TCL_WIDE_INT_IS_LONG                            = 1
   785  	TCL_WINDOW_EVENTS                               = 4
   786  	TCL_WRITABLE                                    = 4
   787  	TclFreeObj_TCL_DECLARED                         = 0
   788  	Tcl_Access_TCL_DECLARED                         = 0
   789  	Tcl_AddErrorInfo_TCL_DECLARED                   = 0
   790  	Tcl_AddObjErrorInfo_TCL_DECLARED                = 0
   791  	Tcl_AlertNotifier_TCL_DECLARED                  = 0
   792  	Tcl_AllocStatBuf_TCL_DECLARED                   = 0
   793  	Tcl_Alloc_TCL_DECLARED                          = 0
   794  	Tcl_AllowExceptions_TCL_DECLARED                = 0
   795  	Tcl_AppendAllObjTypes_TCL_DECLARED              = 0
   796  	Tcl_AppendElement_TCL_DECLARED                  = 0
   797  	Tcl_AppendExportList_TCL_DECLARED               = 0
   798  	Tcl_AppendFormatToObj_TCL_DECLARED              = 0
   799  	Tcl_AppendLimitedToObj_TCL_DECLARED             = 0
   800  	Tcl_AppendObjToErrorInfo_TCL_DECLARED           = 0
   801  	Tcl_AppendObjToObj_TCL_DECLARED                 = 0
   802  	Tcl_AppendPrintfToObj_TCL_DECLARED              = 0
   803  	Tcl_AppendResultVA_TCL_DECLARED                 = 0
   804  	Tcl_AppendResult_TCL_DECLARED                   = 0
   805  	Tcl_AppendStringsToObjVA_TCL_DECLARED           = 0
   806  	Tcl_AppendStringsToObj_TCL_DECLARED             = 0
   807  	Tcl_AppendToObj_TCL_DECLARED                    = 0
   808  	Tcl_AppendUnicodeToObj_TCL_DECLARED             = 0
   809  	Tcl_AsyncCreate_TCL_DECLARED                    = 0
   810  	Tcl_AsyncDelete_TCL_DECLARED                    = 0
   811  	Tcl_AsyncInvoke_TCL_DECLARED                    = 0
   812  	Tcl_AsyncMark_TCL_DECLARED                      = 0
   813  	Tcl_AsyncReady_TCL_DECLARED                     = 0
   814  	Tcl_AttemptAlloc_TCL_DECLARED                   = 0
   815  	Tcl_AttemptDbCkalloc_TCL_DECLARED               = 0
   816  	Tcl_AttemptDbCkrealloc_TCL_DECLARED             = 0
   817  	Tcl_AttemptRealloc_TCL_DECLARED                 = 0
   818  	Tcl_AttemptSetObjLength_TCL_DECLARED            = 0
   819  	Tcl_BackgroundError_TCL_DECLARED                = 0
   820  	Tcl_Backslash_TCL_DECLARED                      = 0
   821  	Tcl_BadChannelOption_TCL_DECLARED               = 0
   822  	Tcl_CallWhenDeleted_TCL_DECLARED                = 0
   823  	Tcl_CancelIdleCall_TCL_DECLARED                 = 0
   824  	Tcl_ChannelBlockModeProc_TCL_DECLARED           = 0
   825  	Tcl_ChannelBuffered_TCL_DECLARED                = 0
   826  	Tcl_ChannelClose2Proc_TCL_DECLARED              = 0
   827  	Tcl_ChannelCloseProc_TCL_DECLARED               = 0
   828  	Tcl_ChannelFlushProc_TCL_DECLARED               = 0
   829  	Tcl_ChannelGetHandleProc_TCL_DECLARED           = 0
   830  	Tcl_ChannelGetOptionProc_TCL_DECLARED           = 0
   831  	Tcl_ChannelHandlerProc_TCL_DECLARED             = 0
   832  	Tcl_ChannelInputProc_TCL_DECLARED               = 0
   833  	Tcl_ChannelName_TCL_DECLARED                    = 0
   834  	Tcl_ChannelOutputProc_TCL_DECLARED              = 0
   835  	Tcl_ChannelSeekProc_TCL_DECLARED                = 0
   836  	Tcl_ChannelSetOptionProc_TCL_DECLARED           = 0
   837  	Tcl_ChannelThreadActionProc_TCL_DECLARED        = 0
   838  	Tcl_ChannelTruncateProc_TCL_DECLARED            = 0
   839  	Tcl_ChannelVersion_TCL_DECLARED                 = 0
   840  	Tcl_ChannelWatchProc_TCL_DECLARED               = 0
   841  	Tcl_ChannelWideSeekProc_TCL_DECLARED            = 0
   842  	Tcl_Chdir_TCL_DECLARED                          = 0
   843  	Tcl_ClearChannelHandlers_TCL_DECLARED           = 0
   844  	Tcl_Close_TCL_DECLARED                          = 0
   845  	Tcl_CommandComplete_TCL_DECLARED                = 0
   846  	Tcl_CommandTraceInfo_TCL_DECLARED               = 0
   847  	Tcl_ConcatObj_TCL_DECLARED                      = 0
   848  	Tcl_Concat_TCL_DECLARED                         = 0
   849  	Tcl_ConditionFinalize_TCL_DECLARED              = 0
   850  	Tcl_ConditionNotify_TCL_DECLARED                = 0
   851  	Tcl_ConditionWait_TCL_DECLARED                  = 0
   852  	Tcl_ConvertCountedElement_TCL_DECLARED          = 0
   853  	Tcl_ConvertElement_TCL_DECLARED                 = 0
   854  	Tcl_ConvertToType_TCL_DECLARED                  = 0
   855  	Tcl_CreateAliasObj_TCL_DECLARED                 = 0
   856  	Tcl_CreateAlias_TCL_DECLARED                    = 0
   857  	Tcl_CreateChannelHandler_TCL_DECLARED           = 0
   858  	Tcl_CreateChannel_TCL_DECLARED                  = 0
   859  	Tcl_CreateCloseHandler_TCL_DECLARED             = 0
   860  	Tcl_CreateCommand_TCL_DECLARED                  = 0
   861  	Tcl_CreateEncoding_TCL_DECLARED                 = 0
   862  	Tcl_CreateEnsemble_TCL_DECLARED                 = 0
   863  	Tcl_CreateEventSource_TCL_DECLARED              = 0
   864  	Tcl_CreateExitHandler_TCL_DECLARED              = 0
   865  	Tcl_CreateFileHandler_TCL_DECLARED              = 0
   866  	Tcl_CreateHashEntry_TCL_DECLARED                = 0
   867  	Tcl_CreateInterp_TCL_DECLARED                   = 0
   868  	Tcl_CreateMathFunc_TCL_DECLARED                 = 0
   869  	Tcl_CreateNamespace_TCL_DECLARED                = 0
   870  	Tcl_CreateObjCommand_TCL_DECLARED               = 0
   871  	Tcl_CreateObjTrace_TCL_DECLARED                 = 0
   872  	Tcl_CreateSlave_TCL_DECLARED                    = 0
   873  	Tcl_CreateThreadExitHandler_TCL_DECLARED        = 0
   874  	Tcl_CreateThread_TCL_DECLARED                   = 0
   875  	Tcl_CreateTimerHandler_TCL_DECLARED             = 0
   876  	Tcl_CreateTrace_TCL_DECLARED                    = 0
   877  	Tcl_CutChannel_TCL_DECLARED                     = 0
   878  	Tcl_DStringAppendElement_TCL_DECLARED           = 0
   879  	Tcl_DStringAppend_TCL_DECLARED                  = 0
   880  	Tcl_DStringEndSublist_TCL_DECLARED              = 0
   881  	Tcl_DStringFree_TCL_DECLARED                    = 0
   882  	Tcl_DStringGetResult_TCL_DECLARED               = 0
   883  	Tcl_DStringInit_TCL_DECLARED                    = 0
   884  	Tcl_DStringResult_TCL_DECLARED                  = 0
   885  	Tcl_DStringSetLength_TCL_DECLARED               = 0
   886  	Tcl_DStringStartSublist_TCL_DECLARED            = 0
   887  	Tcl_DbCkalloc_TCL_DECLARED                      = 0
   888  	Tcl_DbCkfree_TCL_DECLARED                       = 0
   889  	Tcl_DbCkrealloc_TCL_DECLARED                    = 0
   890  	Tcl_DbDecrRefCount_TCL_DECLARED                 = 0
   891  	Tcl_DbIncrRefCount_TCL_DECLARED                 = 0
   892  	Tcl_DbIsShared_TCL_DECLARED                     = 0
   893  	Tcl_DbNewBignumObj_TCL_DECLARED                 = 0
   894  	Tcl_DbNewBooleanObj_TCL_DECLARED                = 0
   895  	Tcl_DbNewByteArrayObj_TCL_DECLARED              = 0
   896  	Tcl_DbNewDictObj_TCL_DECLARED                   = 0
   897  	Tcl_DbNewDoubleObj_TCL_DECLARED                 = 0
   898  	Tcl_DbNewListObj_TCL_DECLARED                   = 0
   899  	Tcl_DbNewLongObj_TCL_DECLARED                   = 0
   900  	Tcl_DbNewObj_TCL_DECLARED                       = 0
   901  	Tcl_DbNewStringObj_TCL_DECLARED                 = 0
   902  	Tcl_DbNewWideIntObj_TCL_DECLARED                = 0
   903  	Tcl_DeleteAssocData_TCL_DECLARED                = 0
   904  	Tcl_DeleteChannelHandler_TCL_DECLARED           = 0
   905  	Tcl_DeleteCloseHandler_TCL_DECLARED             = 0
   906  	Tcl_DeleteCommandFromToken_TCL_DECLARED         = 0
   907  	Tcl_DeleteCommand_TCL_DECLARED                  = 0
   908  	Tcl_DeleteEventSource_TCL_DECLARED              = 0
   909  	Tcl_DeleteEvents_TCL_DECLARED                   = 0
   910  	Tcl_DeleteExitHandler_TCL_DECLARED              = 0
   911  	Tcl_DeleteFileHandler_TCL_DECLARED              = 0
   912  	Tcl_DeleteHashEntry_TCL_DECLARED                = 0
   913  	Tcl_DeleteHashTable_TCL_DECLARED                = 0
   914  	Tcl_DeleteInterp_TCL_DECLARED                   = 0
   915  	Tcl_DeleteNamespace_TCL_DECLARED                = 0
   916  	Tcl_DeleteThreadExitHandler_TCL_DECLARED        = 0
   917  	Tcl_DeleteTimerHandler_TCL_DECLARED             = 0
   918  	Tcl_DeleteTrace_TCL_DECLARED                    = 0
   919  	Tcl_DetachChannel_TCL_DECLARED                  = 0
   920  	Tcl_DetachPids_TCL_DECLARED                     = 0
   921  	Tcl_DictObjDone_TCL_DECLARED                    = 0
   922  	Tcl_DictObjFirst_TCL_DECLARED                   = 0
   923  	Tcl_DictObjGet_TCL_DECLARED                     = 0
   924  	Tcl_DictObjNext_TCL_DECLARED                    = 0
   925  	Tcl_DictObjPutKeyList_TCL_DECLARED              = 0
   926  	Tcl_DictObjPut_TCL_DECLARED                     = 0
   927  	Tcl_DictObjRemoveKeyList_TCL_DECLARED           = 0
   928  	Tcl_DictObjRemove_TCL_DECLARED                  = 0
   929  	Tcl_DictObjSize_TCL_DECLARED                    = 0
   930  	Tcl_DiscardInterpState_TCL_DECLARED             = 0
   931  	Tcl_DiscardResult_TCL_DECLARED                  = 0
   932  	Tcl_DoOneEvent_TCL_DECLARED                     = 0
   933  	Tcl_DoWhenIdle_TCL_DECLARED                     = 0
   934  	Tcl_DontCallWhenDeleted_TCL_DECLARED            = 0
   935  	Tcl_DumpActiveMemory_TCL_DECLARED               = 0
   936  	Tcl_DuplicateObj_TCL_DECLARED                   = 0
   937  	Tcl_Eof_TCL_DECLARED                            = 0
   938  	Tcl_ErrnoId_TCL_DECLARED                        = 0
   939  	Tcl_ErrnoMsg_TCL_DECLARED                       = 0
   940  	Tcl_EvalEx_TCL_DECLARED                         = 0
   941  	Tcl_EvalFile_TCL_DECLARED                       = 0
   942  	Tcl_EvalObjEx_TCL_DECLARED                      = 0
   943  	Tcl_EvalObj_TCL_DECLARED                        = 0
   944  	Tcl_EvalObjv_TCL_DECLARED                       = 0
   945  	Tcl_EvalTokensStandard_TCL_DECLARED             = 0
   946  	Tcl_EvalTokens_TCL_DECLARED                     = 0
   947  	Tcl_Eval_TCL_DECLARED                           = 0
   948  	Tcl_EventuallyFree_TCL_DECLARED                 = 0
   949  	Tcl_ExitThread_TCL_DECLARED                     = 0
   950  	Tcl_Exit_TCL_DECLARED                           = 0
   951  	Tcl_Export_TCL_DECLARED                         = 0
   952  	Tcl_ExposeCommand_TCL_DECLARED                  = 0
   953  	Tcl_ExprBooleanObj_TCL_DECLARED                 = 0
   954  	Tcl_ExprBoolean_TCL_DECLARED                    = 0
   955  	Tcl_ExprDoubleObj_TCL_DECLARED                  = 0
   956  	Tcl_ExprDouble_TCL_DECLARED                     = 0
   957  	Tcl_ExprLongObj_TCL_DECLARED                    = 0
   958  	Tcl_ExprLong_TCL_DECLARED                       = 0
   959  	Tcl_ExprObj_TCL_DECLARED                        = 0
   960  	Tcl_ExprString_TCL_DECLARED                     = 0
   961  	Tcl_ExternalToUtfDString_TCL_DECLARED           = 0
   962  	Tcl_ExternalToUtf_TCL_DECLARED                  = 0
   963  	Tcl_FSAccess_TCL_DECLARED                       = 0
   964  	Tcl_FSChdir_TCL_DECLARED                        = 0
   965  	Tcl_FSConvertToPathType_TCL_DECLARED            = 0
   966  	Tcl_FSCopyDirectory_TCL_DECLARED                = 0
   967  	Tcl_FSCopyFile_TCL_DECLARED                     = 0
   968  	Tcl_FSCreateDirectory_TCL_DECLARED              = 0
   969  	Tcl_FSData_TCL_DECLARED                         = 0
   970  	Tcl_FSDeleteFile_TCL_DECLARED                   = 0
   971  	Tcl_FSEqualPaths_TCL_DECLARED                   = 0
   972  	Tcl_FSEvalFileEx_TCL_DECLARED                   = 0
   973  	Tcl_FSEvalFile_TCL_DECLARED                     = 0
   974  	Tcl_FSFileAttrStrings_TCL_DECLARED              = 0
   975  	Tcl_FSFileAttrsGet_TCL_DECLARED                 = 0
   976  	Tcl_FSFileAttrsSet_TCL_DECLARED                 = 0
   977  	Tcl_FSFileSystemInfo_TCL_DECLARED               = 0
   978  	Tcl_FSGetCwd_TCL_DECLARED                       = 0
   979  	Tcl_FSGetFileSystemForPath_TCL_DECLARED         = 0
   980  	Tcl_FSGetInternalRep_TCL_DECLARED               = 0
   981  	Tcl_FSGetNativePath_TCL_DECLARED                = 0
   982  	Tcl_FSGetNormalizedPath_TCL_DECLARED            = 0
   983  	Tcl_FSGetPathType_TCL_DECLARED                  = 0
   984  	Tcl_FSGetTranslatedPath_TCL_DECLARED            = 0
   985  	Tcl_FSGetTranslatedStringPath_TCL_DECLARED      = 0
   986  	Tcl_FSJoinPath_TCL_DECLARED                     = 0
   987  	Tcl_FSJoinToPath_TCL_DECLARED                   = 0
   988  	Tcl_FSLink_TCL_DECLARED                         = 0
   989  	Tcl_FSListVolumes_TCL_DECLARED                  = 0
   990  	Tcl_FSLoadFile_TCL_DECLARED                     = 0
   991  	Tcl_FSLstat_TCL_DECLARED                        = 0
   992  	Tcl_FSMatchInDirectory_TCL_DECLARED             = 0
   993  	Tcl_FSMountsChanged_TCL_DECLARED                = 0
   994  	Tcl_FSNewNativePath_TCL_DECLARED                = 0
   995  	Tcl_FSOpenFileChannel_TCL_DECLARED              = 0
   996  	Tcl_FSPathSeparator_TCL_DECLARED                = 0
   997  	Tcl_FSRegister_TCL_DECLARED                     = 0
   998  	Tcl_FSRemoveDirectory_TCL_DECLARED              = 0
   999  	Tcl_FSRenameFile_TCL_DECLARED                   = 0
  1000  	Tcl_FSSplitPath_TCL_DECLARED                    = 0
  1001  	Tcl_FSStat_TCL_DECLARED                         = 0
  1002  	Tcl_FSUnregister_TCL_DECLARED                   = 0
  1003  	Tcl_FSUtime_TCL_DECLARED                        = 0
  1004  	Tcl_FinalizeNotifier_TCL_DECLARED               = 0
  1005  	Tcl_FinalizeThread_TCL_DECLARED                 = 0
  1006  	Tcl_Finalize_TCL_DECLARED                       = 0
  1007  	Tcl_FindCommand_TCL_DECLARED                    = 0
  1008  	Tcl_FindEnsemble_TCL_DECLARED                   = 0
  1009  	Tcl_FindExecutable_TCL_DECLARED                 = 0
  1010  	Tcl_FindHashEntry_TCL_DECLARED                  = 0
  1011  	Tcl_FindNamespace_TCL_DECLARED                  = 0
  1012  	Tcl_FirstHashEntry_TCL_DECLARED                 = 0
  1013  	Tcl_Flush_TCL_DECLARED                          = 0
  1014  	Tcl_ForgetImport_TCL_DECLARED                   = 0
  1015  	Tcl_Format_TCL_DECLARED                         = 0
  1016  	Tcl_FreeEncoding_TCL_DECLARED                   = 0
  1017  	Tcl_FreeParse_TCL_DECLARED                      = 0
  1018  	Tcl_FreeResult_TCL_DECLARED                     = 0
  1019  	Tcl_Free_TCL_DECLARED                           = 0
  1020  	Tcl_GetAliasObj_TCL_DECLARED                    = 0
  1021  	Tcl_GetAlias_TCL_DECLARED                       = 0
  1022  	Tcl_GetAllocMutex_TCL_DECLARED                  = 0
  1023  	Tcl_GetAssocData_TCL_DECLARED                   = 0
  1024  	Tcl_GetBignumFromObj_TCL_DECLARED               = 0
  1025  	Tcl_GetBooleanFromObj_TCL_DECLARED              = 0
  1026  	Tcl_GetBoolean_TCL_DECLARED                     = 0
  1027  	Tcl_GetByteArrayFromObj_TCL_DECLARED            = 0
  1028  	Tcl_GetChannelBufferSize_TCL_DECLARED           = 0
  1029  	Tcl_GetChannelErrorInterp_TCL_DECLARED          = 0
  1030  	Tcl_GetChannelError_TCL_DECLARED                = 0
  1031  	Tcl_GetChannelHandle_TCL_DECLARED               = 0
  1032  	Tcl_GetChannelInstanceData_TCL_DECLARED         = 0
  1033  	Tcl_GetChannelMode_TCL_DECLARED                 = 0
  1034  	Tcl_GetChannelName_TCL_DECLARED                 = 0
  1035  	Tcl_GetChannelNamesEx_TCL_DECLARED              = 0
  1036  	Tcl_GetChannelNames_TCL_DECLARED                = 0
  1037  	Tcl_GetChannelOption_TCL_DECLARED               = 0
  1038  	Tcl_GetChannelThread_TCL_DECLARED               = 0
  1039  	Tcl_GetChannelType_TCL_DECLARED                 = 0
  1040  	Tcl_GetChannel_TCL_DECLARED                     = 0
  1041  	Tcl_GetCharLength_TCL_DECLARED                  = 0
  1042  	Tcl_GetCommandFromObj_TCL_DECLARED              = 0
  1043  	Tcl_GetCommandFullName_TCL_DECLARED             = 0
  1044  	Tcl_GetCommandInfoFromToken_TCL_DECLARED        = 0
  1045  	Tcl_GetCommandInfo_TCL_DECLARED                 = 0
  1046  	Tcl_GetCommandName_TCL_DECLARED                 = 0
  1047  	Tcl_GetCurrentNamespace_TCL_DECLARED            = 0
  1048  	Tcl_GetCurrentThread_TCL_DECLARED               = 0
  1049  	Tcl_GetCwd_TCL_DECLARED                         = 0
  1050  	Tcl_GetDefaultEncodingDir_TCL_DECLARED          = 0
  1051  	Tcl_GetDoubleFromObj_TCL_DECLARED               = 0
  1052  	Tcl_GetDouble_TCL_DECLARED                      = 0
  1053  	Tcl_GetEncodingFromObj_TCL_DECLARED             = 0
  1054  	Tcl_GetEncodingNameFromEnvironment_TCL_DECLARED = 0
  1055  	Tcl_GetEncodingName_TCL_DECLARED                = 0
  1056  	Tcl_GetEncodingNames_TCL_DECLARED               = 0
  1057  	Tcl_GetEncodingSearchPath_TCL_DECLARED          = 0
  1058  	Tcl_GetEncoding_TCL_DECLARED                    = 0
  1059  	Tcl_GetEnsembleFlags_TCL_DECLARED               = 0
  1060  	Tcl_GetEnsembleMappingDict_TCL_DECLARED         = 0
  1061  	Tcl_GetEnsembleNamespace_TCL_DECLARED           = 0
  1062  	Tcl_GetEnsembleSubcommandList_TCL_DECLARED      = 0
  1063  	Tcl_GetEnsembleUnknownHandler_TCL_DECLARED      = 0
  1064  	Tcl_GetErrno_TCL_DECLARED                       = 0
  1065  	Tcl_GetGlobalNamespace_TCL_DECLARED             = 0
  1066  	Tcl_GetHostName_TCL_DECLARED                    = 0
  1067  	Tcl_GetIndexFromObjStruct_TCL_DECLARED          = 0
  1068  	Tcl_GetIndexFromObj_TCL_DECLARED                = 0
  1069  	Tcl_GetIntFromObj_TCL_DECLARED                  = 0
  1070  	Tcl_GetInt_TCL_DECLARED                         = 0
  1071  	Tcl_GetInterpPath_TCL_DECLARED                  = 0
  1072  	Tcl_GetLongFromObj_TCL_DECLARED                 = 0
  1073  	Tcl_GetMaster_TCL_DECLARED                      = 0
  1074  	Tcl_GetMathFuncInfo_TCL_DECLARED                = 0
  1075  	Tcl_GetNameOfExecutable_TCL_DECLARED            = 0
  1076  	Tcl_GetNamespaceUnknownHandler_TCL_DECLARED     = 0
  1077  	Tcl_GetObjResult_TCL_DECLARED                   = 0
  1078  	Tcl_GetObjType_TCL_DECLARED                     = 0
  1079  	Tcl_GetOpenFile_TCL_DECLARED                    = 0
  1080  	Tcl_GetPathType_TCL_DECLARED                    = 0
  1081  	Tcl_GetRange_TCL_DECLARED                       = 0
  1082  	Tcl_GetRegExpFromObj_TCL_DECLARED               = 0
  1083  	Tcl_GetReturnOptions_TCL_DECLARED               = 0
  1084  	Tcl_GetServiceMode_TCL_DECLARED                 = 0
  1085  	Tcl_GetSlave_TCL_DECLARED                       = 0
  1086  	Tcl_GetStackedChannel_TCL_DECLARED              = 0
  1087  	Tcl_GetStdChannel_TCL_DECLARED                  = 0
  1088  	Tcl_GetStringFromObj_TCL_DECLARED               = 0
  1089  	Tcl_GetStringResult_TCL_DECLARED                = 0
  1090  	Tcl_GetString_TCL_DECLARED                      = 0
  1091  	Tcl_GetThreadData_TCL_DECLARED                  = 0
  1092  	Tcl_GetTime_TCL_DECLARED                        = 0
  1093  	Tcl_GetTopChannel_TCL_DECLARED                  = 0
  1094  	Tcl_GetUniChar_TCL_DECLARED                     = 0
  1095  	Tcl_GetUnicodeFromObj_TCL_DECLARED              = 0
  1096  	Tcl_GetUnicode_TCL_DECLARED                     = 0
  1097  	Tcl_GetVar2Ex_TCL_DECLARED                      = 0
  1098  	Tcl_GetVar2_TCL_DECLARED                        = 0
  1099  	Tcl_GetVar_TCL_DECLARED                         = 0
  1100  	Tcl_GetVersion_TCL_DECLARED                     = 0
  1101  	Tcl_GetWideIntFromObj_TCL_DECLARED              = 0
  1102  	Tcl_GetsObj_TCL_DECLARED                        = 0
  1103  	Tcl_Gets_TCL_DECLARED                           = 0
  1104  	Tcl_GlobalEvalObj_TCL_DECLARED                  = 0
  1105  	Tcl_GlobalEval_TCL_DECLARED                     = 0
  1106  	Tcl_HashStats_TCL_DECLARED                      = 0
  1107  	Tcl_HideCommand_TCL_DECLARED                    = 0
  1108  	Tcl_Import_TCL_DECLARED                         = 0
  1109  	Tcl_InitBignumFromDouble_TCL_DECLARED           = 0
  1110  	Tcl_InitCustomHashTable_TCL_DECLARED            = 0
  1111  	Tcl_InitHashTable_TCL_DECLARED                  = 0
  1112  	Tcl_InitMemory_TCL_DECLARED                     = 0
  1113  	Tcl_InitNotifier_TCL_DECLARED                   = 0
  1114  	Tcl_InitObjHashTable_TCL_DECLARED               = 0
  1115  	Tcl_Init_TCL_DECLARED                           = 0
  1116  	Tcl_InputBlocked_TCL_DECLARED                   = 0
  1117  	Tcl_InputBuffered_TCL_DECLARED                  = 0
  1118  	Tcl_InterpDeleted_TCL_DECLARED                  = 0
  1119  	Tcl_InvalidateStringRep_TCL_DECLARED            = 0
  1120  	Tcl_IsChannelExisting_TCL_DECLARED              = 0
  1121  	Tcl_IsChannelRegistered_TCL_DECLARED            = 0
  1122  	Tcl_IsChannelShared_TCL_DECLARED                = 0
  1123  	Tcl_IsEnsemble_TCL_DECLARED                     = 0
  1124  	Tcl_IsSafe_TCL_DECLARED                         = 0
  1125  	Tcl_IsStandardChannel_TCL_DECLARED              = 0
  1126  	Tcl_JoinPath_TCL_DECLARED                       = 0
  1127  	Tcl_JoinThread_TCL_DECLARED                     = 0
  1128  	Tcl_LimitAddHandler_TCL_DECLARED                = 0
  1129  	Tcl_LimitCheck_TCL_DECLARED                     = 0
  1130  	Tcl_LimitExceeded_TCL_DECLARED                  = 0
  1131  	Tcl_LimitGetCommands_TCL_DECLARED               = 0
  1132  	Tcl_LimitGetGranularity_TCL_DECLARED            = 0
  1133  	Tcl_LimitGetTime_TCL_DECLARED                   = 0
  1134  	Tcl_LimitReady_TCL_DECLARED                     = 0
  1135  	Tcl_LimitRemoveHandler_TCL_DECLARED             = 0
  1136  	Tcl_LimitSetCommands_TCL_DECLARED               = 0
  1137  	Tcl_LimitSetGranularity_TCL_DECLARED            = 0
  1138  	Tcl_LimitSetTime_TCL_DECLARED                   = 0
  1139  	Tcl_LimitTypeEnabled_TCL_DECLARED               = 0
  1140  	Tcl_LimitTypeExceeded_TCL_DECLARED              = 0
  1141  	Tcl_LimitTypeReset_TCL_DECLARED                 = 0
  1142  	Tcl_LimitTypeSet_TCL_DECLARED                   = 0
  1143  	Tcl_LinkVar_TCL_DECLARED                        = 0
  1144  	Tcl_ListMathFuncs_TCL_DECLARED                  = 0
  1145  	Tcl_ListObjAppendElement_TCL_DECLARED           = 0
  1146  	Tcl_ListObjAppendList_TCL_DECLARED              = 0
  1147  	Tcl_ListObjGetElements_TCL_DECLARED             = 0
  1148  	Tcl_ListObjIndex_TCL_DECLARED                   = 0
  1149  	Tcl_ListObjLength_TCL_DECLARED                  = 0
  1150  	Tcl_ListObjReplace_TCL_DECLARED                 = 0
  1151  	Tcl_LogCommandInfo_TCL_DECLARED                 = 0
  1152  	Tcl_MakeFileChannel_TCL_DECLARED                = 0
  1153  	Tcl_MakeSafe_TCL_DECLARED                       = 0
  1154  	Tcl_MakeTcpClientChannel_TCL_DECLARED           = 0
  1155  	Tcl_Merge_TCL_DECLARED                          = 0
  1156  	Tcl_MutexFinalize_TCL_DECLARED                  = 0
  1157  	Tcl_MutexLock_TCL_DECLARED                      = 0
  1158  	Tcl_MutexUnlock_TCL_DECLARED                    = 0
  1159  	Tcl_NewBignumObj_TCL_DECLARED                   = 0
  1160  	Tcl_NewBooleanObj_TCL_DECLARED                  = 0
  1161  	Tcl_NewByteArrayObj_TCL_DECLARED                = 0
  1162  	Tcl_NewDictObj_TCL_DECLARED                     = 0
  1163  	Tcl_NewDoubleObj_TCL_DECLARED                   = 0
  1164  	Tcl_NewIntObj_TCL_DECLARED                      = 0
  1165  	Tcl_NewListObj_TCL_DECLARED                     = 0
  1166  	Tcl_NewLongObj_TCL_DECLARED                     = 0
  1167  	Tcl_NewObj_TCL_DECLARED                         = 0
  1168  	Tcl_NewStringObj_TCL_DECLARED                   = 0
  1169  	Tcl_NewUnicodeObj_TCL_DECLARED                  = 0
  1170  	Tcl_NewWideIntObj_TCL_DECLARED                  = 0
  1171  	Tcl_NextHashEntry_TCL_DECLARED                  = 0
  1172  	Tcl_NotifyChannel_TCL_DECLARED                  = 0
  1173  	Tcl_NumUtfChars_TCL_DECLARED                    = 0
  1174  	Tcl_ObjGetVar2_TCL_DECLARED                     = 0
  1175  	Tcl_ObjPrintf_TCL_DECLARED                      = 0
  1176  	Tcl_ObjSetVar2_TCL_DECLARED                     = 0
  1177  	Tcl_OpenCommandChannel_TCL_DECLARED             = 0
  1178  	Tcl_OpenFileChannel_TCL_DECLARED                = 0
  1179  	Tcl_OpenTcpClient_TCL_DECLARED                  = 0
  1180  	Tcl_OpenTcpServer_TCL_DECLARED                  = 0
  1181  	Tcl_OutputBuffered_TCL_DECLARED                 = 0
  1182  	Tcl_PanicVA_TCL_DECLARED                        = 0
  1183  	Tcl_Panic_TCL_DECLARED                          = 0
  1184  	Tcl_ParseBraces_TCL_DECLARED                    = 0
  1185  	Tcl_ParseCommand_TCL_DECLARED                   = 0
  1186  	Tcl_ParseExpr_TCL_DECLARED                      = 0
  1187  	Tcl_ParseQuotedString_TCL_DECLARED              = 0
  1188  	Tcl_ParseVarName_TCL_DECLARED                   = 0
  1189  	Tcl_ParseVar_TCL_DECLARED                       = 0
  1190  	Tcl_PkgPresentEx_TCL_DECLARED                   = 0
  1191  	Tcl_PkgPresent_TCL_DECLARED                     = 0
  1192  	Tcl_PkgProvideEx_TCL_DECLARED                   = 0
  1193  	Tcl_PkgProvide_TCL_DECLARED                     = 0
  1194  	Tcl_PkgRequireEx_TCL_DECLARED                   = 0
  1195  	Tcl_PkgRequireProc_TCL_DECLARED                 = 0
  1196  	Tcl_PkgRequire_TCL_DECLARED                     = 0
  1197  	Tcl_PosixError_TCL_DECLARED                     = 0
  1198  	Tcl_Preserve_TCL_DECLARED                       = 0
  1199  	Tcl_PrintDouble_TCL_DECLARED                    = 0
  1200  	Tcl_ProcObjCmd_TCL_DECLARED                     = 0
  1201  	Tcl_PutEnv_TCL_DECLARED                         = 0
  1202  	Tcl_QueryTimeProc_TCL_DECLARED                  = 0
  1203  	Tcl_QueueEvent_TCL_DECLARED                     = 0
  1204  	Tcl_ReadChars_TCL_DECLARED                      = 0
  1205  	Tcl_ReadRaw_TCL_DECLARED                        = 0
  1206  	Tcl_Read_TCL_DECLARED                           = 0
  1207  	Tcl_Realloc_TCL_DECLARED                        = 0
  1208  	Tcl_ReapDetachedProcs_TCL_DECLARED              = 0
  1209  	Tcl_RecordAndEvalObj_TCL_DECLARED               = 0
  1210  	Tcl_RecordAndEval_TCL_DECLARED                  = 0
  1211  	Tcl_RegExpCompile_TCL_DECLARED                  = 0
  1212  	Tcl_RegExpExecObj_TCL_DECLARED                  = 0
  1213  	Tcl_RegExpExec_TCL_DECLARED                     = 0
  1214  	Tcl_RegExpGetInfo_TCL_DECLARED                  = 0
  1215  	Tcl_RegExpMatchObj_TCL_DECLARED                 = 0
  1216  	Tcl_RegExpMatch_TCL_DECLARED                    = 0
  1217  	Tcl_RegExpRange_TCL_DECLARED                    = 0
  1218  	Tcl_RegisterChannel_TCL_DECLARED                = 0
  1219  	Tcl_RegisterConfig_TCL_DECLARED                 = 0
  1220  	Tcl_RegisterObjType_TCL_DECLARED                = 0
  1221  	Tcl_Release_TCL_DECLARED                        = 0
  1222  	Tcl_ResetResult_TCL_DECLARED                    = 0
  1223  	Tcl_RestoreInterpState_TCL_DECLARED             = 0
  1224  	Tcl_RestoreResult_TCL_DECLARED                  = 0
  1225  	Tcl_SaveInterpState_TCL_DECLARED                = 0
  1226  	Tcl_SaveResult_TCL_DECLARED                     = 0
  1227  	Tcl_ScanCountedElement_TCL_DECLARED             = 0
  1228  	Tcl_ScanElement_TCL_DECLARED                    = 0
  1229  	Tcl_SeekOld_TCL_DECLARED                        = 0
  1230  	Tcl_Seek_TCL_DECLARED                           = 0
  1231  	Tcl_ServiceAll_TCL_DECLARED                     = 0
  1232  	Tcl_ServiceEvent_TCL_DECLARED                   = 0
  1233  	Tcl_ServiceModeHook_TCL_DECLARED                = 0
  1234  	Tcl_SetAssocData_TCL_DECLARED                   = 0
  1235  	Tcl_SetBignumObj_TCL_DECLARED                   = 0
  1236  	Tcl_SetBooleanObj_TCL_DECLARED                  = 0
  1237  	Tcl_SetByteArrayLength_TCL_DECLARED             = 0
  1238  	Tcl_SetByteArrayObj_TCL_DECLARED                = 0
  1239  	Tcl_SetChannelBufferSize_TCL_DECLARED           = 0
  1240  	Tcl_SetChannelErrorInterp_TCL_DECLARED          = 0
  1241  	Tcl_SetChannelError_TCL_DECLARED                = 0
  1242  	Tcl_SetChannelOption_TCL_DECLARED               = 0
  1243  	Tcl_SetCommandInfoFromToken_TCL_DECLARED        = 0
  1244  	Tcl_SetCommandInfo_TCL_DECLARED                 = 0
  1245  	Tcl_SetDefaultEncodingDir_TCL_DECLARED          = 0
  1246  	Tcl_SetDoubleObj_TCL_DECLARED                   = 0
  1247  	Tcl_SetEncodingSearchPath_TCL_DECLARED          = 0
  1248  	Tcl_SetEnsembleFlags_TCL_DECLARED               = 0
  1249  	Tcl_SetEnsembleMappingDict_TCL_DECLARED         = 0
  1250  	Tcl_SetEnsembleSubcommandList_TCL_DECLARED      = 0
  1251  	Tcl_SetEnsembleUnknownHandler_TCL_DECLARED      = 0
  1252  	Tcl_SetErrno_TCL_DECLARED                       = 0
  1253  	Tcl_SetErrorCodeVA_TCL_DECLARED                 = 0
  1254  	Tcl_SetErrorCode_TCL_DECLARED                   = 0
  1255  	Tcl_SetExitProc_TCL_DECLARED                    = 0
  1256  	Tcl_SetIntObj_TCL_DECLARED                      = 0
  1257  	Tcl_SetListObj_TCL_DECLARED                     = 0
  1258  	Tcl_SetLongObj_TCL_DECLARED                     = 0
  1259  	Tcl_SetMainLoop_TCL_DECLARED                    = 0
  1260  	Tcl_SetMaxBlockTime_TCL_DECLARED                = 0
  1261  	Tcl_SetNamespaceUnknownHandler_TCL_DECLARED     = 0
  1262  	Tcl_SetNotifier_TCL_DECLARED                    = 0
  1263  	Tcl_SetObjErrorCode_TCL_DECLARED                = 0
  1264  	Tcl_SetObjLength_TCL_DECLARED                   = 0
  1265  	Tcl_SetObjResult_TCL_DECLARED                   = 0
  1266  	Tcl_SetPanicProc_TCL_DECLARED                   = 0
  1267  	Tcl_SetRecursionLimit_TCL_DECLARED              = 0
  1268  	Tcl_SetResult_TCL_DECLARED                      = 0
  1269  	Tcl_SetReturnOptions_TCL_DECLARED               = 0
  1270  	Tcl_SetServiceMode_TCL_DECLARED                 = 0
  1271  	Tcl_SetStdChannel_TCL_DECLARED                  = 0
  1272  	Tcl_SetStringObj_TCL_DECLARED                   = 0
  1273  	Tcl_SetSystemEncoding_TCL_DECLARED              = 0
  1274  	Tcl_SetTimeProc_TCL_DECLARED                    = 0
  1275  	Tcl_SetTimer_TCL_DECLARED                       = 0
  1276  	Tcl_SetUnicodeObj_TCL_DECLARED                  = 0
  1277  	Tcl_SetVar2Ex_TCL_DECLARED                      = 0
  1278  	Tcl_SetVar2_TCL_DECLARED                        = 0
  1279  	Tcl_SetVar_TCL_DECLARED                         = 0
  1280  	Tcl_SetWideIntObj_TCL_DECLARED                  = 0
  1281  	Tcl_SignalId_TCL_DECLARED                       = 0
  1282  	Tcl_SignalMsg_TCL_DECLARED                      = 0
  1283  	Tcl_Sleep_TCL_DECLARED                          = 0
  1284  	Tcl_SourceRCFile_TCL_DECLARED                   = 0
  1285  	Tcl_SpliceChannel_TCL_DECLARED                  = 0
  1286  	Tcl_SplitList_TCL_DECLARED                      = 0
  1287  	Tcl_SplitPath_TCL_DECLARED                      = 0
  1288  	Tcl_StackChannel_TCL_DECLARED                   = 0
  1289  	Tcl_Stat_TCL_DECLARED                           = 0
  1290  	Tcl_StaticPackage_TCL_DECLARED                  = 0
  1291  	Tcl_StringCaseMatch_TCL_DECLARED                = 0
  1292  	Tcl_StringMatch_TCL_DECLARED                    = 0
  1293  	Tcl_SubstObj_TCL_DECLARED                       = 0
  1294  	Tcl_TakeBignumFromObj_TCL_DECLARED              = 0
  1295  	Tcl_TellOld_TCL_DECLARED                        = 0
  1296  	Tcl_Tell_TCL_DECLARED                           = 0
  1297  	Tcl_ThreadAlert_TCL_DECLARED                    = 0
  1298  	Tcl_ThreadQueueEvent_TCL_DECLARED               = 0
  1299  	Tcl_TraceCommand_TCL_DECLARED                   = 0
  1300  	Tcl_TraceVar2_TCL_DECLARED                      = 0
  1301  	Tcl_TraceVar_TCL_DECLARED                       = 0
  1302  	Tcl_TranslateFileName_TCL_DECLARED              = 0
  1303  	Tcl_TruncateChannel_TCL_DECLARED                = 0
  1304  	Tcl_Ungets_TCL_DECLARED                         = 0
  1305  	Tcl_UniCharAtIndex_TCL_DECLARED                 = 0
  1306  	Tcl_UniCharCaseMatch_TCL_DECLARED               = 0
  1307  	Tcl_UniCharIsAlnum_TCL_DECLARED                 = 0
  1308  	Tcl_UniCharIsAlpha_TCL_DECLARED                 = 0
  1309  	Tcl_UniCharIsControl_TCL_DECLARED               = 0
  1310  	Tcl_UniCharIsDigit_TCL_DECLARED                 = 0
  1311  	Tcl_UniCharIsGraph_TCL_DECLARED                 = 0
  1312  	Tcl_UniCharIsLower_TCL_DECLARED                 = 0
  1313  	Tcl_UniCharIsPrint_TCL_DECLARED                 = 0
  1314  	Tcl_UniCharIsPunct_TCL_DECLARED                 = 0
  1315  	Tcl_UniCharIsSpace_TCL_DECLARED                 = 0
  1316  	Tcl_UniCharIsUpper_TCL_DECLARED                 = 0
  1317  	Tcl_UniCharIsWordChar_TCL_DECLARED              = 0
  1318  	Tcl_UniCharLen_TCL_DECLARED                     = 0
  1319  	Tcl_UniCharNcasecmp_TCL_DECLARED                = 0
  1320  	Tcl_UniCharNcmp_TCL_DECLARED                    = 0
  1321  	Tcl_UniCharToLower_TCL_DECLARED                 = 0
  1322  	Tcl_UniCharToTitle_TCL_DECLARED                 = 0
  1323  	Tcl_UniCharToUpper_TCL_DECLARED                 = 0
  1324  	Tcl_UniCharToUtfDString_TCL_DECLARED            = 0
  1325  	Tcl_UniCharToUtf_TCL_DECLARED                   = 0
  1326  	Tcl_UnlinkVar_TCL_DECLARED                      = 0
  1327  	Tcl_UnregisterChannel_TCL_DECLARED              = 0
  1328  	Tcl_UnsetVar2_TCL_DECLARED                      = 0
  1329  	Tcl_UnsetVar_TCL_DECLARED                       = 0
  1330  	Tcl_UnstackChannel_TCL_DECLARED                 = 0
  1331  	Tcl_UntraceCommand_TCL_DECLARED                 = 0
  1332  	Tcl_UntraceVar2_TCL_DECLARED                    = 0
  1333  	Tcl_UntraceVar_TCL_DECLARED                     = 0
  1334  	Tcl_UpVar2_TCL_DECLARED                         = 0
  1335  	Tcl_UpVar_TCL_DECLARED                          = 0
  1336  	Tcl_UpdateLinkedVar_TCL_DECLARED                = 0
  1337  	Tcl_UtfAtIndex_TCL_DECLARED                     = 0
  1338  	Tcl_UtfBackslash_TCL_DECLARED                   = 0
  1339  	Tcl_UtfCharComplete_TCL_DECLARED                = 0
  1340  	Tcl_UtfFindFirst_TCL_DECLARED                   = 0
  1341  	Tcl_UtfFindLast_TCL_DECLARED                    = 0
  1342  	Tcl_UtfNcasecmp_TCL_DECLARED                    = 0
  1343  	Tcl_UtfNcmp_TCL_DECLARED                        = 0
  1344  	Tcl_UtfNext_TCL_DECLARED                        = 0
  1345  	Tcl_UtfPrev_TCL_DECLARED                        = 0
  1346  	Tcl_UtfToExternalDString_TCL_DECLARED           = 0
  1347  	Tcl_UtfToExternal_TCL_DECLARED                  = 0
  1348  	Tcl_UtfToLower_TCL_DECLARED                     = 0
  1349  	Tcl_UtfToTitle_TCL_DECLARED                     = 0
  1350  	Tcl_UtfToUniCharDString_TCL_DECLARED            = 0
  1351  	Tcl_UtfToUniChar_TCL_DECLARED                   = 0
  1352  	Tcl_UtfToUpper_TCL_DECLARED                     = 0
  1353  	Tcl_ValidateAllMemory_TCL_DECLARED              = 0
  1354  	Tcl_VarEvalVA_TCL_DECLARED                      = 0
  1355  	Tcl_VarEval_TCL_DECLARED                        = 0
  1356  	Tcl_VarTraceInfo2_TCL_DECLARED                  = 0
  1357  	Tcl_VarTraceInfo_TCL_DECLARED                   = 0
  1358  	Tcl_WaitForEvent_TCL_DECLARED                   = 0
  1359  	Tcl_WaitPid_TCL_DECLARED                        = 0
  1360  	Tcl_WriteChars_TCL_DECLARED                     = 0
  1361  	Tcl_WriteObj_TCL_DECLARED                       = 0
  1362  	Tcl_WriteRaw_TCL_DECLARED                       = 0
  1363  	Tcl_Write_TCL_DECLARED                          = 0
  1364  	Tcl_WrongNumArgs_TCL_DECLARED                   = 0
  1365  	X_CLIENTDATA                                    = 0
  1366  	X_TCL                                           = 0
  1367  	X_TCLDECLS                                      = 0
  1368  	X_TCLPLATDECLS                                  = 0
  1369  	X_FTSINT_H                                      = 0
  1370  	FTS3_TOK_SCHEMA                                 = "CREATE TABLE x(input HIDDEN, token, start, end, position)"
  1371  	APND_MARK_FOS_SZ                                = 8
  1372  	APND_MARK_PREFIX                                = "Start-Of-SQLite3-"
  1373  	APND_MARK_PREFIX_SZ                             = 17
  1374  	APND_MARK_SIZE                                  = 25
  1375  	APND_MAX_SIZE                                   = 1073741824
  1376  	APND_ROUNDUP                                    = 4096
  1377  	SQLITE3EXT_H                                    = 0
  1378  	SQLITE_EXTENSION_INIT1                          = 0
  1379  	SQLITE_EXTENSION_INIT3                          = 0
  1380  	AMATCH_COL_COMMAND                              = 3
  1381  	AMATCH_COL_DISTANCE                             = 1
  1382  	AMATCH_COL_LANGUAGE                             = 2
  1383  	AMATCH_COL_NWORD                                = 4
  1384  	AMATCH_COL_WORD                                 = 0
  1385  	AMATCH_MX_COST                                  = 1000
  1386  	AMATCH_MX_LANGID                                = 2147483647
  1387  	AMATCH_MX_LENGTH                                = 50
  1388  	BIG_ENDIAN                                      = 4321
  1389  	BUS_ADRALN                                      = 1
  1390  	BUS_ADRERR                                      = 2
  1391  	BUS_NOOP                                        = 0
  1392  	BUS_OBJERR                                      = 3
  1393  	BYTE_ORDER                                      = 1234
  1394  	CLD_CONTINUED                                   = 6
  1395  	CLD_DUMPED                                      = 3
  1396  	CLD_EXITED                                      = 1
  1397  	CLD_KILLED                                      = 2
  1398  	CLD_NOOP                                        = 0
  1399  	CLD_STOPPED                                     = 5
  1400  	CLD_TRAPPED                                     = 4
  1401  	CPUMON_MAKE_FATAL                               = 0x1000
  1402  	EXIT_FAILURE                                    = 1
  1403  	EXIT_SUCCESS                                    = 0
  1404  	FOOTPRINT_INTERVAL_RESET                        = 0x1
  1405  	FPE_FLTDIV                                      = 1
  1406  	FPE_FLTINV                                      = 5
  1407  	FPE_FLTOVF                                      = 2
  1408  	FPE_FLTRES                                      = 4
  1409  	FPE_FLTSUB                                      = 6
  1410  	FPE_FLTUND                                      = 3
  1411  	FPE_INTDIV                                      = 7
  1412  	FPE_INTOVF                                      = 8
  1413  	FPE_NOOP                                        = 0
  1414  	FP_CHOP                                         = 3
  1415  	FP_PREC_24B                                     = 0
  1416  	FP_PREC_53B                                     = 2
  1417  	FP_PREC_64B                                     = 3
  1418  	FP_RND_DOWN                                     = 1
  1419  	FP_RND_NEAR                                     = 0
  1420  	FP_RND_UP                                       = 2
  1421  	FP_STATE_BYTES                                  = 512
  1422  	ILL_BADSTK                                      = 8
  1423  	ILL_COPROC                                      = 7
  1424  	ILL_ILLADR                                      = 5
  1425  	ILL_ILLOPC                                      = 1
  1426  	ILL_ILLOPN                                      = 4
  1427  	ILL_ILLTRP                                      = 2
  1428  	ILL_NOOP                                        = 0
  1429  	ILL_PRVOPC                                      = 3
  1430  	ILL_PRVREG                                      = 6
  1431  	INT16_MAX                                       = 32767
  1432  	INT16_MIN                                       = -32768
  1433  	INT32_MAX                                       = 2147483647
  1434  	INT32_MIN                                       = -2147483648
  1435  	INT64_MAX                                       = 9223372036854775807
  1436  	INT64_MIN                                       = -9223372036854775808
  1437  	INT8_MAX                                        = 127
  1438  	INT8_MIN                                        = -128
  1439  	INTMAX_MAX                                      = 9223372036854775807
  1440  	INTMAX_MIN                                      = -9223372036854775808
  1441  	INTPTR_MAX                                      = 9223372036854775807
  1442  	INTPTR_MIN                                      = -9223372036854775808
  1443  	INT_FAST16_MAX                                  = 32767
  1444  	INT_FAST16_MIN                                  = -32768
  1445  	INT_FAST32_MAX                                  = 2147483647
  1446  	INT_FAST32_MIN                                  = -2147483648
  1447  	INT_FAST64_MAX                                  = 9223372036854775807
  1448  	INT_FAST64_MIN                                  = -9223372036854775808
  1449  	INT_FAST8_MAX                                   = 127
  1450  	INT_FAST8_MIN                                   = -128
  1451  	INT_LEAST16_MAX                                 = 32767
  1452  	INT_LEAST16_MIN                                 = -32768
  1453  	INT_LEAST32_MAX                                 = 2147483647
  1454  	INT_LEAST32_MIN                                 = -2147483648
  1455  	INT_LEAST64_MAX                                 = 9223372036854775807
  1456  	INT_LEAST64_MIN                                 = -9223372036854775808
  1457  	INT_LEAST8_MAX                                  = 127
  1458  	INT_LEAST8_MIN                                  = -128
  1459  	IOPOL_APPLICATION                               = 5
  1460  	IOPOL_ATIME_UPDATES_DEFAULT                     = 0
  1461  	IOPOL_ATIME_UPDATES_OFF                         = 1
  1462  	IOPOL_DEFAULT                                   = 0
  1463  	IOPOL_IMPORTANT                                 = 1
  1464  	IOPOL_MATERIALIZE_DATALESS_FILES_DEFAULT        = 0
  1465  	IOPOL_MATERIALIZE_DATALESS_FILES_OFF            = 1
  1466  	IOPOL_MATERIALIZE_DATALESS_FILES_ON             = 2
  1467  	IOPOL_NORMAL                                    = 1
  1468  	IOPOL_PASSIVE                                   = 2
  1469  	IOPOL_SCOPE_DARWIN_BG                           = 2
  1470  	IOPOL_SCOPE_PROCESS                             = 0
  1471  	IOPOL_SCOPE_THREAD                              = 1
  1472  	IOPOL_STANDARD                                  = 5
  1473  	IOPOL_THROTTLE                                  = 3
  1474  	IOPOL_TYPE_DISK                                 = 0
  1475  	IOPOL_TYPE_VFS_ATIME_UPDATES                    = 2
  1476  	IOPOL_TYPE_VFS_MATERIALIZE_DATALESS_FILES       = 3
  1477  	IOPOL_TYPE_VFS_STATFS_NO_DATA_VOLUME            = 4
  1478  	IOPOL_UTILITY                                   = 4
  1479  	IOPOL_VFS_STATFS_FORCE_NO_DATA_VOLUME           = 1
  1480  	IOPOL_VFS_STATFS_NO_DATA_VOLUME_DEFAULT         = 0
  1481  	LITTLE_ENDIAN                                   = 1234
  1482  	MINSIGSTKSZ                                     = 32768
  1483  	NSIG                                            = 32
  1484  	PDP_ENDIAN                                      = 3412
  1485  	POLL_ERR                                        = 4
  1486  	POLL_HUP                                        = 6
  1487  	POLL_IN                                         = 1
  1488  	POLL_MSG                                        = 3
  1489  	POLL_OUT                                        = 2
  1490  	POLL_PRI                                        = 5
  1491  	PRIO_DARWIN_BG                                  = 0x1000
  1492  	PRIO_DARWIN_NONUI                               = 0x1001
  1493  	PRIO_DARWIN_PROCESS                             = 4
  1494  	PRIO_DARWIN_THREAD                              = 3
  1495  	PRIO_MAX                                        = 20
  1496  	PRIO_MIN                                        = -20
  1497  	PRIO_PGRP                                       = 1
  1498  	PRIO_PROCESS                                    = 0
  1499  	PRIO_USER                                       = 2
  1500  	PTRDIFF_MAX                                     = 9223372036854775807
  1501  	PTRDIFF_MIN                                     = -9223372036854775808
  1502  	RAND_MAX                                        = 0x7fffffff
  1503  	RLIMIT_AS                                       = 5
  1504  	RLIMIT_CORE                                     = 4
  1505  	RLIMIT_CPU                                      = 0
  1506  	RLIMIT_CPU_USAGE_MONITOR                        = 0x2
  1507  	RLIMIT_DATA                                     = 2
  1508  	RLIMIT_FOOTPRINT_INTERVAL                       = 0x4
  1509  	RLIMIT_FSIZE                                    = 1
  1510  	RLIMIT_MEMLOCK                                  = 6
  1511  	RLIMIT_NOFILE                                   = 8
  1512  	RLIMIT_NPROC                                    = 7
  1513  	RLIMIT_RSS                                      = 5
  1514  	RLIMIT_STACK                                    = 3
  1515  	RLIMIT_THREAD_CPULIMITS                         = 0x3
  1516  	RLIMIT_WAKEUPS_MONITOR                          = 0x1
  1517  	RLIM_NLIMITS                                    = 9
  1518  	RSIZE_MAX                                       = 9223372036854775807
  1519  	RUSAGE_CHILDREN                                 = -1
  1520  	RUSAGE_INFO_CURRENT                             = 4
  1521  	RUSAGE_INFO_V0                                  = 0
  1522  	RUSAGE_INFO_V1                                  = 1
  1523  	RUSAGE_INFO_V2                                  = 2
  1524  	RUSAGE_INFO_V3                                  = 3
  1525  	RUSAGE_INFO_V4                                  = 4
  1526  	RUSAGE_SELF                                     = 0
  1527  	SA_64REGSET                                     = 0x0200
  1528  	SA_NOCLDSTOP                                    = 0x0008
  1529  	SA_NOCLDWAIT                                    = 0x0020
  1530  	SA_NODEFER                                      = 0x0010
  1531  	SA_ONSTACK                                      = 0x0001
  1532  	SA_RESETHAND                                    = 0x0004
  1533  	SA_RESTART                                      = 0x0002
  1534  	SA_SIGINFO                                      = 0x0040
  1535  	SA_USERSPACE_MASK                               = 127
  1536  	SA_USERTRAMP                                    = 0x0100
  1537  	SEGV_ACCERR                                     = 2
  1538  	SEGV_MAPERR                                     = 1
  1539  	SEGV_NOOP                                       = 0
  1540  	SIGABRT                                         = 6
  1541  	SIGALRM                                         = 14
  1542  	SIGBUS                                          = 10
  1543  	SIGCHLD                                         = 20
  1544  	SIGCONT                                         = 19
  1545  	SIGEMT                                          = 7
  1546  	SIGEV_NONE                                      = 0
  1547  	SIGEV_SIGNAL                                    = 1
  1548  	SIGEV_THREAD                                    = 3
  1549  	SIGFPE                                          = 8
  1550  	SIGHUP                                          = 1
  1551  	SIGILL                                          = 4
  1552  	SIGINFO                                         = 29
  1553  	SIGINT                                          = 2
  1554  	SIGIO                                           = 23
  1555  	SIGIOT                                          = 6
  1556  	SIGKILL                                         = 9
  1557  	SIGPIPE                                         = 13
  1558  	SIGPROF                                         = 27
  1559  	SIGQUIT                                         = 3
  1560  	SIGSEGV                                         = 11
  1561  	SIGSTKSZ                                        = 131072
  1562  	SIGSTOP                                         = 17
  1563  	SIGSYS                                          = 12
  1564  	SIGTERM                                         = 15
  1565  	SIGTRAP                                         = 5
  1566  	SIGTSTP                                         = 18
  1567  	SIGTTIN                                         = 21
  1568  	SIGTTOU                                         = 22
  1569  	SIGURG                                          = 16
  1570  	SIGUSR1                                         = 30
  1571  	SIGUSR2                                         = 31
  1572  	SIGVTALRM                                       = 26
  1573  	SIGWINCH                                        = 28
  1574  	SIGXCPU                                         = 24
  1575  	SIGXFSZ                                         = 25
  1576  	SIG_ATOMIC_MAX                                  = 2147483647
  1577  	SIG_ATOMIC_MIN                                  = -2147483648
  1578  	SIG_BLOCK                                       = 1
  1579  	SIG_SETMASK                                     = 3
  1580  	SIG_UNBLOCK                                     = 2
  1581  	SIZE_MAX                                        = 18446744073709551615
  1582  	SI_ASYNCIO                                      = 0x10004
  1583  	SI_MESGQ                                        = 0x10005
  1584  	SI_QUEUE                                        = 0x10002
  1585  	SI_TIMER                                        = 0x10003
  1586  	SI_USER                                         = 0x10001
  1587  	SS_DISABLE                                      = 0x0004
  1588  	SS_ONSTACK                                      = 0x0001
  1589  	SV_INTERRUPT                                    = 2
  1590  	SV_NOCLDSTOP                                    = 8
  1591  	SV_NODEFER                                      = 16
  1592  	SV_ONSTACK                                      = 1
  1593  	SV_RESETHAND                                    = 4
  1594  	SV_SIGINFO                                      = 64
  1595  	TRAP_BRKPT                                      = 1
  1596  	TRAP_TRACE                                      = 2
  1597  	UINT16_MAX                                      = 65535
  1598  	UINT32_MAX                                      = 4294967295
  1599  	UINT64_MAX                                      = 18446744073709551615
  1600  	UINT8_MAX                                       = 255
  1601  	UINTMAX_MAX                                     = 18446744073709551615
  1602  	UINTPTR_MAX                                     = 18446744073709551615
  1603  	UINT_FAST16_MAX                                 = 65535
  1604  	UINT_FAST32_MAX                                 = 4294967295
  1605  	UINT_FAST64_MAX                                 = 18446744073709551615
  1606  	UINT_FAST8_MAX                                  = 255
  1607  	UINT_LEAST16_MAX                                = 65535
  1608  	UINT_LEAST32_MAX                                = 4294967295
  1609  	UINT_LEAST64_MAX                                = 18446744073709551615
  1610  	UINT_LEAST8_MAX                                 = 255
  1611  	WAIT_ANY                                        = -1
  1612  	WAIT_MYPGRP                                     = 0
  1613  	WAKEMON_DISABLE                                 = 0x02
  1614  	WAKEMON_ENABLE                                  = 0x01
  1615  	WAKEMON_GET_PARAMS                              = 0x04
  1616  	WAKEMON_MAKE_FATAL                              = 0x10
  1617  	WAKEMON_SET_DEFAULTS                            = 0x08
  1618  	WCHAR_MAX                                       = 2147483647
  1619  	WCHAR_MIN                                       = -2147483648
  1620  	WCONTINUED                                      = 0x00000010
  1621  	WCOREFLAG                                       = 0200
  1622  	WEXITED                                         = 0x00000004
  1623  	WINT_MAX                                        = 2147483647
  1624  	WINT_MIN                                        = -2147483648
  1625  	WNOHANG                                         = 0x00000001
  1626  	WNOWAIT                                         = 0x00000020
  1627  	WSTOPPED                                        = 0x00000008
  1628  	WUNTRACED                                       = 0x00000002
  1629  	X_ALLOCA_H_                                     = 0
  1630  	X_BSD_MACHINE_ENDIAN_H_                         = 0
  1631  	X_BSD_MACHINE_SIGNAL_H_                         = 0
  1632  	X_CACHED_RUNES                                  = 256
  1633  	X_CRMASK                                        = -256
  1634  	X_CTYPE_A                                       = 0x00000100
  1635  	X_CTYPE_B                                       = 0x00020000
  1636  	X_CTYPE_C                                       = 0x00000200
  1637  	X_CTYPE_D                                       = 0x00000400
  1638  	X_CTYPE_G                                       = 0x00000800
  1639  	X_CTYPE_H_                                      = 0
  1640  	X_CTYPE_I                                       = 0x00080000
  1641  	X_CTYPE_L                                       = 0x00001000
  1642  	X_CTYPE_P                                       = 0x00002000
  1643  	X_CTYPE_Q                                       = 0x00200000
  1644  	X_CTYPE_R                                       = 0x00040000
  1645  	X_CTYPE_S                                       = 0x00004000
  1646  	X_CTYPE_SW0                                     = 0x20000000
  1647  	X_CTYPE_SW1                                     = 0x40000000
  1648  	X_CTYPE_SW2                                     = 0x80000000
  1649  	X_CTYPE_SW3                                     = 0xc0000000
  1650  	X_CTYPE_SWM                                     = 0xe0000000
  1651  	X_CTYPE_SWS                                     = 30
  1652  	X_CTYPE_T                                       = 0x00100000
  1653  	X_CTYPE_U                                       = 0x00008000
  1654  	X_CTYPE_X                                       = 0x00010000
  1655  	X_CT_RUNE_T                                     = 0
  1656  	X_DEV_T                                         = 0
  1657  	X_I386_SIGNAL_H_                                = 1
  1658  	X_I386__ENDIAN_H_                               = 0
  1659  	X_ID_T                                          = 0
  1660  	X_MACH_I386__STRUCTS_H_                         = 0
  1661  	X_MACH_MACHINE__STRUCTS_H_                      = 0
  1662  	X_MALLOC_UNDERSCORE_MALLOC_H_                   = 0
  1663  	X_MCONTEXT_T                                    = 0
  1664  	X_MODE_T                                        = 0
  1665  	X_OS__OSBYTEORDERI386_H                         = 0
  1666  	X_OS__OSBYTEORDER_H                             = 0
  1667  	X_PID_T                                         = 0
  1668  	X_PTHREAD_ATTR_T                                = 0
  1669  	X_QUAD_HIGHWORD                                 = 1
  1670  	X_QUAD_LOWWORD                                  = 0
  1671  	X_RLIMIT_POSIX_FLAG                             = 0x1000
  1672  	X_RUNETYPE_H_                                   = 0
  1673  	X_RUNE_MAGIC_A                                  = "RuneMagA"
  1674  	X_RUNE_T                                        = 0
  1675  	X_SIGSET_T                                      = 0
  1676  	X_STDLIB_H_                                     = 0
  1677  	X_SYS_RESOURCE_H_                               = 0
  1678  	X_SYS_SIGNAL_H_                                 = 0
  1679  	X_SYS_WAIT_H_                                   = 0
  1680  	X_SYS__ENDIAN_H_                                = 0
  1681  	X_UID_T                                         = 0
  1682  	X_UINT32_T                                      = 0
  1683  	X_WCHAR_T                                       = 0
  1684  	X_WINT_T                                        = 0
  1685  	X_WSTOPPED                                      = 0177
  1686  	CARRAY_COLUMN_COUNT                             = 2
  1687  	CARRAY_COLUMN_CTYPE                             = 3
  1688  	CARRAY_COLUMN_POINTER                           = 1
  1689  	CARRAY_COLUMN_VALUE                             = 0
  1690  	CARRAY_DOUBLE                                   = 2
  1691  	CARRAY_INT32                                    = 0
  1692  	CARRAY_INT64                                    = 1
  1693  	CARRAY_TEXT                                     = 3
  1694  	CLOSURE_COL_DEPTH                               = 1
  1695  	CLOSURE_COL_ID                                  = 0
  1696  	CLOSURE_COL_IDCOLUMN                            = 4
  1697  	CLOSURE_COL_PARENTCOLUMN                        = 5
  1698  	CLOSURE_COL_ROOT                                = 2
  1699  	CLOSURE_COL_TABLENAME                           = 3
  1700  	CSVTEST_FIDX                                    = 0x0001
  1701  	CSV_INBUFSZ                                     = 1024
  1702  	CSV_MXERR                                       = 200
  1703  	EXPLN_COLUMN_ADDR                               = 0
  1704  	EXPLN_COLUMN_COMMENT                            = 7
  1705  	EXPLN_COLUMN_OPCODE                             = 1
  1706  	EXPLN_COLUMN_P1                                 = 2
  1707  	EXPLN_COLUMN_P2                                 = 3
  1708  	EXPLN_COLUMN_P3                                 = 4
  1709  	EXPLN_COLUMN_P4                                 = 5
  1710  	EXPLN_COLUMN_P5                                 = 6
  1711  	EXPLN_COLUMN_SQL                                = 8
  1712  	ACCESSPERMS                                     = 511
  1713  	ACCESSX_MAX_DESCRIPTORS                         = 100
  1714  	ACCESSX_MAX_TABLESIZE                           = 16384
  1715  	ALLPERMS                                        = 4095
  1716  	AT_EACCESS                                      = 0x0010
  1717  	AT_FDCWD                                        = -2
  1718  	AT_FDONLY                                       = 0x0400
  1719  	AT_REALDEV                                      = 0x0200
  1720  	AT_REMOVEDIR                                    = 0x0080
  1721  	AT_SYMLINK_FOLLOW                               = 0x0040
  1722  	AT_SYMLINK_NOFOLLOW                             = 0x0020
  1723  	CLOCKS_PER_SEC                                  = 1000000
  1724  	CPF_IGNORE_MODE                                 = 0x0002
  1725  	CPF_MASK                                        = 3
  1726  	CPF_OVERWRITE                                   = 0x0001
  1727  	DEFFILEMODE                                     = 438
  1728  	DIRBLKSIZ                                       = 1024
  1729  	DST_AUST                                        = 2
  1730  	DST_CAN                                         = 6
  1731  	DST_EET                                         = 5
  1732  	DST_MET                                         = 4
  1733  	DST_NONE                                        = 0
  1734  	DST_USA                                         = 1
  1735  	DST_WET                                         = 3
  1736  	DTF_HIDEW                                       = 0x0001
  1737  	DTF_NODUP                                       = 0x0002
  1738  	DTF_REWIND                                      = 0x0004
  1739  	DT_BLK                                          = 6
  1740  	DT_CHR                                          = 2
  1741  	DT_DIR                                          = 4
  1742  	DT_FIFO                                         = 1
  1743  	DT_LNK                                          = 10
  1744  	DT_REG                                          = 8
  1745  	DT_SOCK                                         = 12
  1746  	DT_UNKNOWN                                      = 0
  1747  	DT_WHT                                          = 14
  1748  	E2BIG                                           = 7
  1749  	EACCES                                          = 13
  1750  	EADDRINUSE                                      = 48
  1751  	EADDRNOTAVAIL                                   = 49
  1752  	EAFNOSUPPORT                                    = 47
  1753  	EAGAIN                                          = 35
  1754  	EALREADY                                        = 37
  1755  	EAUTH                                           = 80
  1756  	EBADARCH                                        = 86
  1757  	EBADEXEC                                        = 85
  1758  	EBADF                                           = 9
  1759  	EBADMACHO                                       = 88
  1760  	EBADMSG                                         = 94
  1761  	EBADRPC                                         = 72
  1762  	EBUSY                                           = 16
  1763  	ECANCELED                                       = 89
  1764  	ECHILD                                          = 10
  1765  	ECONNABORTED                                    = 53
  1766  	ECONNREFUSED                                    = 61
  1767  	ECONNRESET                                      = 54
  1768  	EDEADLK                                         = 11
  1769  	EDESTADDRREQ                                    = 39
  1770  	EDEVERR                                         = 83
  1771  	EDOM                                            = 33
  1772  	EDQUOT                                          = 69
  1773  	EEXIST                                          = 17
  1774  	EFAULT                                          = 14
  1775  	EFBIG                                           = 27
  1776  	EFTYPE                                          = 79
  1777  	EF_IS_PURGEABLE                                 = 0x00000008
  1778  	EF_IS_SPARSE                                    = 0x00000010
  1779  	EF_IS_SYNC_ROOT                                 = 0x00000004
  1780  	EF_MAY_SHARE_BLOCKS                             = 0x00000001
  1781  	EF_NO_XATTRS                                    = 0x00000002
  1782  	EHOSTDOWN                                       = 64
  1783  	EHOSTUNREACH                                    = 65
  1784  	EIDRM                                           = 90
  1785  	EILSEQ                                          = 92
  1786  	EINPROGRESS                                     = 36
  1787  	EINTR                                           = 4
  1788  	EINVAL                                          = 22
  1789  	EIO                                             = 5
  1790  	EISCONN                                         = 56
  1791  	EISDIR                                          = 21
  1792  	ELAST                                           = 106
  1793  	ELOOP                                           = 62
  1794  	EMFILE                                          = 24
  1795  	EMLINK                                          = 31
  1796  	EMSGSIZE                                        = 40
  1797  	EMULTIHOP                                       = 95
  1798  	ENAMETOOLONG                                    = 63
  1799  	ENEEDAUTH                                       = 81
  1800  	ENETDOWN                                        = 50
  1801  	ENETRESET                                       = 52
  1802  	ENETUNREACH                                     = 51
  1803  	ENFILE                                          = 23
  1804  	ENOATTR                                         = 93
  1805  	ENOBUFS                                         = 55
  1806  	ENODATA                                         = 96
  1807  	ENODEV                                          = 19
  1808  	ENOENT                                          = 2
  1809  	ENOEXEC                                         = 8
  1810  	ENOLCK                                          = 77
  1811  	ENOLINK                                         = 97
  1812  	ENOMEM                                          = 12
  1813  	ENOMSG                                          = 91
  1814  	ENOPOLICY                                       = 103
  1815  	ENOPROTOOPT                                     = 42
  1816  	ENOSPC                                          = 28
  1817  	ENOSR                                           = 98
  1818  	ENOSTR                                          = 99
  1819  	ENOSYS                                          = 78
  1820  	ENOTBLK                                         = 15
  1821  	ENOTCONN                                        = 57
  1822  	ENOTDIR                                         = 20
  1823  	ENOTEMPTY                                       = 66
  1824  	ENOTRECOVERABLE                                 = 104
  1825  	ENOTSOCK                                        = 38
  1826  	ENOTSUP                                         = 45
  1827  	ENOTTY                                          = 25
  1828  	ENXIO                                           = 6
  1829  	EOPNOTSUPP                                      = 102
  1830  	EOVERFLOW                                       = 84
  1831  	EOWNERDEAD                                      = 105
  1832  	EPERM                                           = 1
  1833  	EPFNOSUPPORT                                    = 46
  1834  	EPIPE                                           = 32
  1835  	EPROCLIM                                        = 67
  1836  	EPROCUNAVAIL                                    = 76
  1837  	EPROGMISMATCH                                   = 75
  1838  	EPROGUNAVAIL                                    = 74
  1839  	EPROTO                                          = 100
  1840  	EPROTONOSUPPORT                                 = 43
  1841  	EPROTOTYPE                                      = 41
  1842  	EPWROFF                                         = 82
  1843  	EQFULL                                          = 106
  1844  	ERANGE                                          = 34
  1845  	EREMOTE                                         = 71
  1846  	EROFS                                           = 30
  1847  	ERPCMISMATCH                                    = 73
  1848  	ESHLIBVERS                                      = 87
  1849  	ESHUTDOWN                                       = 58
  1850  	ESOCKTNOSUPPORT                                 = 44
  1851  	ESPIPE                                          = 29
  1852  	ESRCH                                           = 3
  1853  	ESTALE                                          = 70
  1854  	ETIME                                           = 101
  1855  	ETIMEDOUT                                       = 60
  1856  	ETOOMANYREFS                                    = 59
  1857  	ETXTBSY                                         = 26
  1858  	EUSERS                                          = 68
  1859  	EWOULDBLOCK                                     = 35
  1860  	EXDEV                                           = 18
  1861  	FAPPEND                                         = 8
  1862  	FASYNC                                          = 64
  1863  	FCNTL_FS_SPECIFIC_BASE                          = 0x00010000
  1864  	FD_CLOEXEC                                      = 1
  1865  	FD_SETSIZE                                      = 1024
  1866  	FFDSYNC                                         = 4194304
  1867  	FFSYNC                                          = 128
  1868  	FNDELAY                                         = 4
  1869  	FNONBLOCK                                       = 4
  1870  	FREAD                                           = 0x0001
  1871  	FSDIR_COLUMN_DATA                               = 3
  1872  	FSDIR_COLUMN_DIR                                = 5
  1873  	FSDIR_COLUMN_MODE                               = 1
  1874  	FSDIR_COLUMN_MTIME                              = 2
  1875  	FSDIR_COLUMN_NAME                               = 0
  1876  	FSDIR_COLUMN_PATH                               = 4
  1877  	FSDIR_SCHEMA                                    = "(name,mode,mtime,data,path HIDDEN,dir HIDDEN)"
  1878  	FWRITE                                          = 0x0002
  1879  	F_ADDFILESIGS                                   = 61
  1880  	F_ADDFILESIGS_FOR_DYLD_SIM                      = 83
  1881  	F_ADDFILESIGS_RETURN                            = 97
  1882  	F_ADDSIGS                                       = 59
  1883  	F_ALLOCATEALL                                   = 0x00000004
  1884  	F_ALLOCATECONTIG                                = 0x00000002
  1885  	F_BARRIERFSYNC                                  = 85
  1886  	F_CHECK_LV                                      = 98
  1887  	F_CHKCLEAN                                      = 41
  1888  	F_DUPFD                                         = 0
  1889  	F_DUPFD_CLOEXEC                                 = 67
  1890  	F_FINDSIGS                                      = 78
  1891  	F_FLUSH_DATA                                    = 40
  1892  	F_FREEZE_FS                                     = 53
  1893  	F_FULLFSYNC                                     = 51
  1894  	F_GETCODEDIR                                    = 72
  1895  	F_GETFD                                         = 1
  1896  	F_GETFL                                         = 3
  1897  	F_GETLK                                         = 7
  1898  	F_GETLKPID                                      = 66
  1899  	F_GETNOSIGPIPE                                  = 74
  1900  	F_GETOWN                                        = 5
  1901  	F_GETPATH                                       = 50
  1902  	F_GETPATH_MTMINFO                               = 71
  1903  	F_GETPATH_NOFIRMLINK                            = 102
  1904  	F_GETPROTECTIONCLASS                            = 63
  1905  	F_GETPROTECTIONLEVEL                            = 77
  1906  	F_GLOBAL_NOCACHE                                = 55
  1907  	F_LOCK                                          = 1
  1908  	F_LOG2PHYS                                      = 49
  1909  	F_LOG2PHYS_EXT                                  = 65
  1910  	F_NOCACHE                                       = 48
  1911  	F_NODIRECT                                      = 62
  1912  	F_OK                                            = 0
  1913  	F_PATHPKG_CHECK                                 = 52
  1914  	F_PEOFPOSMODE                                   = 3
  1915  	F_PREALLOCATE                                   = 42
  1916  	F_PUNCHHOLE                                     = 99
  1917  	F_RDADVISE                                      = 44
  1918  	F_RDAHEAD                                       = 45
  1919  	F_RDLCK                                         = 1
  1920  	F_SETBACKINGSTORE                               = 70
  1921  	F_SETFD                                         = 2
  1922  	F_SETFL                                         = 4
  1923  	F_SETLK                                         = 8
  1924  	F_SETLKW                                        = 9
  1925  	F_SETLKWTIMEOUT                                 = 10
  1926  	F_SETNOSIGPIPE                                  = 73
  1927  	F_SETOWN                                        = 6
  1928  	F_SETPROTECTIONCLASS                            = 64
  1929  	F_SETSIZE                                       = 43
  1930  	F_SINGLE_WRITER                                 = 76
  1931  	F_SPECULATIVE_READ                              = 101
  1932  	F_TEST                                          = 3
  1933  	F_THAW_FS                                       = 54
  1934  	F_TLOCK                                         = 2
  1935  	F_TRANSCODEKEY                                  = 75
  1936  	F_TRIM_ACTIVE_FILE                              = 100
  1937  	F_ULOCK                                         = 0
  1938  	F_UNLCK                                         = 2
  1939  	F_VOLPOSMODE                                    = 4
  1940  	F_WRLCK                                         = 3
  1941  	ITIMER_PROF                                     = 2
  1942  	ITIMER_REAL                                     = 0
  1943  	ITIMER_VIRTUAL                                  = 1
  1944  	LOCK_EX                                         = 0x02
  1945  	LOCK_NB                                         = 0x04
  1946  	LOCK_SH                                         = 0x01
  1947  	LOCK_UN                                         = 0x08
  1948  	L_INCR                                          = 1
  1949  	L_SET                                           = 0
  1950  	L_XTND                                          = 2
  1951  	MAXNAMLEN                                       = 255
  1952  	NBBY                                            = 8
  1953  	O_ACCMODE                                       = 0x0003
  1954  	O_ALERT                                         = 0x20000000
  1955  	O_APPEND                                        = 0x0008
  1956  	O_ASYNC                                         = 0x0040
  1957  	O_CLOEXEC                                       = 0x1000000
  1958  	O_CREAT                                         = 0x0200
  1959  	O_DIRECTORY                                     = 0x100000
  1960  	O_DP_GETRAWENCRYPTED                            = 0x0001
  1961  	O_DP_GETRAWUNENCRYPTED                          = 0x0002
  1962  	O_DSYNC                                         = 0x400000
  1963  	O_EVTONLY                                       = 0x8000
  1964  	O_EXCL                                          = 0x0800
  1965  	O_EXLOCK                                        = 0x0020
  1966  	O_FSYNC                                         = 128
  1967  	O_NDELAY                                        = 4
  1968  	O_NOCTTY                                        = 0x20000
  1969  	O_NOFOLLOW                                      = 0x0100
  1970  	O_NONBLOCK                                      = 0x0004
  1971  	O_POPUP                                         = 0x80000000
  1972  	O_RDONLY                                        = 0x0000
  1973  	O_RDWR                                          = 0x0002
  1974  	O_SHLOCK                                        = 0x0010
  1975  	O_SYMLINK                                       = 0x200000
  1976  	O_SYNC                                          = 0x0080
  1977  	O_TRUNC                                         = 0x0400
  1978  	O_WRONLY                                        = 0x0001
  1979  	R_OK                                            = 4
  1980  	SEEK_DATA                                       = 4
  1981  	SEEK_HOLE                                       = 3
  1982  	SF_APPEND                                       = 0x00040000
  1983  	SF_ARCHIVED                                     = 0x00010000
  1984  	SF_DATALESS                                     = 0x40000000
  1985  	SF_FIRMLINK                                     = 0x00800000
  1986  	SF_IMMUTABLE                                    = 0x00020000
  1987  	SF_NOUNLINK                                     = 0x00100000
  1988  	SF_RESTRICTED                                   = 0x00080000
  1989  	SF_SETTABLE                                     = 0x3fff0000
  1990  	SF_SUPPORTED                                    = 0x009f0000
  1991  	SF_SYNTHETIC                                    = 0xc0000000
  1992  	STDERR_FILENO                                   = 2
  1993  	STDIN_FILENO                                    = 0
  1994  	STDOUT_FILENO                                   = 1
  1995  	SYNC_VOLUME_FULLSYNC                            = 0x01
  1996  	SYNC_VOLUME_WAIT                                = 0x02
  1997  	S_BLKSIZE                                       = 512
  1998  	S_IEXEC                                         = 64
  1999  	S_IFBLK                                         = 0060000
  2000  	S_IFCHR                                         = 0020000
  2001  	S_IFDIR                                         = 0040000
  2002  	S_IFIFO                                         = 0010000
  2003  	S_IFLNK                                         = 0120000
  2004  	S_IFMT                                          = 0170000
  2005  	S_IFREG                                         = 0100000
  2006  	S_IFSOCK                                        = 0140000
  2007  	S_IFWHT                                         = 0160000
  2008  	S_IREAD                                         = 256
  2009  	S_IRGRP                                         = 0000040
  2010  	S_IROTH                                         = 0000004
  2011  	S_IRUSR                                         = 0000400
  2012  	S_IRWXG                                         = 0000070
  2013  	S_IRWXO                                         = 0000007
  2014  	S_IRWXU                                         = 0000700
  2015  	S_ISGID                                         = 0002000
  2016  	S_ISTXT                                         = 512
  2017  	S_ISUID                                         = 0004000
  2018  	S_ISVTX                                         = 0001000
  2019  	S_IWGRP                                         = 0000020
  2020  	S_IWOTH                                         = 0000002
  2021  	S_IWRITE                                        = 128
  2022  	S_IWUSR                                         = 0000200
  2023  	S_IXGRP                                         = 0000010
  2024  	S_IXOTH                                         = 0000001
  2025  	S_IXUSR                                         = 0000100
  2026  	TIME_UTC                                        = 1
  2027  	UF_APPEND                                       = 0x00000004
  2028  	UF_COMPRESSED                                   = 0x00000020
  2029  	UF_DATAVAULT                                    = 0x00000080
  2030  	UF_HIDDEN                                       = 0x00008000
  2031  	UF_IMMUTABLE                                    = 0x00000002
  2032  	UF_NODUMP                                       = 0x00000001
  2033  	UF_OPAQUE                                       = 0x00000008
  2034  	UF_SETTABLE                                     = 0x0000ffff
  2035  	UF_TRACKED                                      = 0x00000040
  2036  	UTIME_NOW                                       = -1
  2037  	UTIME_OMIT                                      = -2
  2038  	W_OK                                            = 2
  2039  	X_OK                                            = 1
  2040  	X_ACCESS_EXTENDED_MASK                          = 4193792
  2041  	X_APPEND_OK                                     = 8192
  2042  	X_BLKCNT_T                                      = 0
  2043  	X_BLKSIZE_T                                     = 0
  2044  	X_CADDR_T                                       = 0
  2045  	X_CHOWN_OK                                      = 2097152
  2046  	X_CLOCK_T                                       = 0
  2047  	X_CS_DARWIN_USER_CACHE_DIR                      = 65538
  2048  	X_CS_DARWIN_USER_DIR                            = 65536
  2049  	X_CS_DARWIN_USER_TEMP_DIR                       = 65537
  2050  	X_CS_PATH                                       = 1
  2051  	X_CS_POSIX_V6_ILP32_OFF32_CFLAGS                = 2
  2052  	X_CS_POSIX_V6_ILP32_OFF32_LDFLAGS               = 3
  2053  	X_CS_POSIX_V6_ILP32_OFF32_LIBS                  = 4
  2054  	X_CS_POSIX_V6_ILP32_OFFBIG_CFLAGS               = 5
  2055  	X_CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS              = 6
  2056  	X_CS_POSIX_V6_ILP32_OFFBIG_LIBS                 = 7
  2057  	X_CS_POSIX_V6_LP64_OFF64_CFLAGS                 = 8
  2058  	X_CS_POSIX_V6_LP64_OFF64_LDFLAGS                = 9
  2059  	X_CS_POSIX_V6_LP64_OFF64_LIBS                   = 10
  2060  	X_CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS               = 11
  2061  	X_CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS              = 12
  2062  	X_CS_POSIX_V6_LPBIG_OFFBIG_LIBS                 = 13
  2063  	X_CS_POSIX_V6_WIDTH_RESTRICTED_ENVS             = 14
  2064  	X_CS_XBS5_ILP32_OFF32_CFLAGS                    = 20
  2065  	X_CS_XBS5_ILP32_OFF32_LDFLAGS                   = 21
  2066  	X_CS_XBS5_ILP32_OFF32_LIBS                      = 22
  2067  	X_CS_XBS5_ILP32_OFF32_LINTFLAGS                 = 23
  2068  	X_CS_XBS5_ILP32_OFFBIG_CFLAGS                   = 24
  2069  	X_CS_XBS5_ILP32_OFFBIG_LDFLAGS                  = 25
  2070  	X_CS_XBS5_ILP32_OFFBIG_LIBS                     = 26
  2071  	X_CS_XBS5_ILP32_OFFBIG_LINTFLAGS                = 27
  2072  	X_CS_XBS5_LP64_OFF64_CFLAGS                     = 28
  2073  	X_CS_XBS5_LP64_OFF64_LDFLAGS                    = 29
  2074  	X_CS_XBS5_LP64_OFF64_LIBS                       = 30
  2075  	X_CS_XBS5_LP64_OFF64_LINTFLAGS                  = 31
  2076  	X_CS_XBS5_LPBIG_OFFBIG_CFLAGS                   = 32
  2077  	X_CS_XBS5_LPBIG_OFFBIG_LDFLAGS                  = 33
  2078  	X_CS_XBS5_LPBIG_OFFBIG_LIBS                     = 34
  2079  	X_CS_XBS5_LPBIG_OFFBIG_LINTFLAGS                = 35
  2080  	X_DELETE_OK                                     = 4096
  2081  	X_DIRENT_H_                                     = 0
  2082  	X_EXECUTE_OK                                    = 2048
  2083  	X_FD_SET                                        = 0
  2084  	X_FILESEC_T                                     = 0
  2085  	X_FSBLKCNT_T                                    = 0
  2086  	X_FSFILCNT_T                                    = 0
  2087  	X_GID_T                                         = 0
  2088  	X_INO64_T                                       = 0
  2089  	X_INO_T                                         = 0
  2090  	X_IN_ADDR_T                                     = 0
  2091  	X_IN_PORT_T                                     = 0
  2092  	X_KEY_T                                         = 0
  2093  	X_NLINK_T                                       = 0
  2094  	X_PC_2_SYMLINKS                                 = 15
  2095  	X_PC_ALLOC_SIZE_MIN                             = 16
  2096  	X_PC_ASYNC_IO                                   = 17
  2097  	X_PC_AUTH_OPAQUE_NP                             = 14
  2098  	X_PC_CASE_PRESERVING                            = 12
  2099  	X_PC_CASE_SENSITIVE                             = 11
  2100  	X_PC_CHOWN_RESTRICTED                           = 7
  2101  	X_PC_EXTENDED_SECURITY_NP                       = 13
  2102  	X_PC_FILESIZEBITS                               = 18
  2103  	X_PC_LINK_MAX                                   = 1
  2104  	X_PC_MAX_CANON                                  = 2
  2105  	X_PC_MAX_INPUT                                  = 3
  2106  	X_PC_MIN_HOLE_SIZE                              = 27
  2107  	X_PC_NAME_CHARS_MAX                             = 10
  2108  	X_PC_NAME_MAX                                   = 4
  2109  	X_PC_NO_TRUNC                                   = 8
  2110  	X_PC_PATH_MAX                                   = 5
  2111  	X_PC_PIPE_BUF                                   = 6
  2112  	X_PC_PRIO_IO                                    = 19
  2113  	X_PC_REC_INCR_XFER_SIZE                         = 20
  2114  	X_PC_REC_MAX_XFER_SIZE                          = 21
  2115  	X_PC_REC_MIN_XFER_SIZE                          = 22
  2116  	X_PC_REC_XFER_ALIGN                             = 23
  2117  	X_PC_SYMLINK_MAX                                = 24
  2118  	X_PC_SYNC_IO                                    = 25
  2119  	X_PC_VDISABLE                                   = 9
  2120  	X_PC_XATTR_SIZE_BITS                            = 26
  2121  	X_POSIX2_CHAR_TERM                              = 200112
  2122  	X_POSIX2_C_BIND                                 = 200112
  2123  	X_POSIX2_C_DEV                                  = 200112
  2124  	X_POSIX2_FORT_DEV                               = -1
  2125  	X_POSIX2_FORT_RUN                               = 200112
  2126  	X_POSIX2_LOCALEDEF                              = 200112
  2127  	X_POSIX2_PBS                                    = -1
  2128  	X_POSIX2_PBS_ACCOUNTING                         = -1
  2129  	X_POSIX2_PBS_CHECKPOINT                         = -1
  2130  	X_POSIX2_PBS_LOCATE                             = -1
  2131  	X_POSIX2_PBS_MESSAGE                            = -1
  2132  	X_POSIX2_PBS_TRACK                              = -1
  2133  	X_POSIX2_SW_DEV                                 = 200112
  2134  	X_POSIX2_UPE                                    = 200112
  2135  	X_POSIX2_VERSION                                = 200112
  2136  	X_POSIX_ADVISORY_INFO                           = -1
  2137  	X_POSIX_ASYNCHRONOUS_IO                         = -1
  2138  	X_POSIX_BARRIERS                                = -1
  2139  	X_POSIX_CHOWN_RESTRICTED                        = 200112
  2140  	X_POSIX_CLOCK_SELECTION                         = -1
  2141  	X_POSIX_CPUTIME                                 = -1
  2142  	X_POSIX_FSYNC                                   = 200112
  2143  	X_POSIX_IPV6                                    = 200112
  2144  	X_POSIX_JOB_CONTROL                             = 200112
  2145  	X_POSIX_MAPPED_FILES                            = 200112
  2146  	X_POSIX_MEMLOCK                                 = -1
  2147  	X_POSIX_MEMLOCK_RANGE                           = -1
  2148  	X_POSIX_MEMORY_PROTECTION                       = 200112
  2149  	X_POSIX_MESSAGE_PASSING                         = -1
  2150  	X_POSIX_MONOTONIC_CLOCK                         = -1
  2151  	X_POSIX_NO_TRUNC                                = 200112
  2152  	X_POSIX_PRIORITIZED_IO                          = -1
  2153  	X_POSIX_PRIORITY_SCHEDULING                     = -1
  2154  	X_POSIX_RAW_SOCKETS                             = -1
  2155  	X_POSIX_READER_WRITER_LOCKS                     = 200112
  2156  	X_POSIX_REALTIME_SIGNALS                        = -1
  2157  	X_POSIX_REGEXP                                  = 200112
  2158  	X_POSIX_SAVED_IDS                               = 200112
  2159  	X_POSIX_SEMAPHORES                              = -1
  2160  	X_POSIX_SHARED_MEMORY_OBJECTS                   = -1
  2161  	X_POSIX_SHELL                                   = 200112
  2162  	X_POSIX_SPAWN                                   = -1
  2163  	X_POSIX_SPIN_LOCKS                              = -1
  2164  	X_POSIX_SPORADIC_SERVER                         = -1
  2165  	X_POSIX_SYNCHRONIZED_IO                         = -1
  2166  	X_POSIX_THREADS                                 = 200112
  2167  	X_POSIX_THREAD_ATTR_STACKADDR                   = 200112
  2168  	X_POSIX_THREAD_ATTR_STACKSIZE                   = 200112
  2169  	X_POSIX_THREAD_CPUTIME                          = -1
  2170  	X_POSIX_THREAD_KEYS_MAX                         = 128
  2171  	X_POSIX_THREAD_PRIORITY_SCHEDULING              = -1
  2172  	X_POSIX_THREAD_PRIO_INHERIT                     = -1
  2173  	X_POSIX_THREAD_PRIO_PROTECT                     = -1
  2174  	X_POSIX_THREAD_PROCESS_SHARED                   = 200112
  2175  	X_POSIX_THREAD_SAFE_FUNCTIONS                   = 200112
  2176  	X_POSIX_THREAD_SPORADIC_SERVER                  = -1
  2177  	X_POSIX_TIMEOUTS                                = -1
  2178  	X_POSIX_TIMERS                                  = -1
  2179  	X_POSIX_TRACE                                   = -1
  2180  	X_POSIX_TRACE_EVENT_FILTER                      = -1
  2181  	X_POSIX_TRACE_INHERIT                           = -1
  2182  	X_POSIX_TRACE_LOG                               = -1
  2183  	X_POSIX_TYPED_MEMORY_OBJECTS                    = -1
  2184  	X_POSIX_V6_ILP32_OFF32                          = -1
  2185  	X_POSIX_V6_ILP32_OFFBIG                         = -1
  2186  	X_POSIX_V6_LP64_OFF64                           = 1
  2187  	X_POSIX_V6_LPBIG_OFFBIG                         = 1
  2188  	X_POSIX_V7_ILP32_OFF32                          = -1
  2189  	X_POSIX_V7_ILP32_OFFBIG                         = -1
  2190  	X_POSIX_V7_LP64_OFF64                           = 1
  2191  	X_POSIX_V7_LPBIG_OFFBIG                         = 1
  2192  	X_POSIX_VERSION                                 = 200112
  2193  	X_PTHREAD_CONDATTR_T                            = 0
  2194  	X_PTHREAD_COND_T                                = 0
  2195  	X_PTHREAD_KEY_T                                 = 0
  2196  	X_PTHREAD_MUTEXATTR_T                           = 0
  2197  	X_PTHREAD_MUTEX_T                               = 0
  2198  	X_PTHREAD_ONCE_T                                = 0
  2199  	X_PTHREAD_RWLOCKATTR_T                          = 0
  2200  	X_PTHREAD_RWLOCK_T                              = 0
  2201  	X_PTHREAD_T                                     = 0
  2202  	X_RATTR_OK                                      = 32768
  2203  	X_READ_OK                                       = 512
  2204  	X_REXT_OK                                       = 131072
  2205  	X_RMFILE_OK                                     = 16384
  2206  	X_RPERM_OK                                      = 524288
  2207  	X_SC_2_CHAR_TERM                                = 20
  2208  	X_SC_2_C_BIND                                   = 18
  2209  	X_SC_2_C_DEV                                    = 19
  2210  	X_SC_2_FORT_DEV                                 = 21
  2211  	X_SC_2_FORT_RUN                                 = 22
  2212  	X_SC_2_LOCALEDEF                                = 23
  2213  	X_SC_2_PBS                                      = 59
  2214  	X_SC_2_PBS_ACCOUNTING                           = 60
  2215  	X_SC_2_PBS_CHECKPOINT                           = 61
  2216  	X_SC_2_PBS_LOCATE                               = 62
  2217  	X_SC_2_PBS_MESSAGE                              = 63
  2218  	X_SC_2_PBS_TRACK                                = 64
  2219  	X_SC_2_SW_DEV                                   = 24
  2220  	X_SC_2_UPE                                      = 25
  2221  	X_SC_2_VERSION                                  = 17
  2222  	X_SC_ADVISORY_INFO                              = 65
  2223  	X_SC_AIO_LISTIO_MAX                             = 42
  2224  	X_SC_AIO_MAX                                    = 43
  2225  	X_SC_AIO_PRIO_DELTA_MAX                         = 44
  2226  	X_SC_ARG_MAX                                    = 1
  2227  	X_SC_ASYNCHRONOUS_IO                            = 28
  2228  	X_SC_ATEXIT_MAX                                 = 107
  2229  	X_SC_BARRIERS                                   = 66
  2230  	X_SC_BC_BASE_MAX                                = 9
  2231  	X_SC_BC_DIM_MAX                                 = 10
  2232  	X_SC_BC_SCALE_MAX                               = 11
  2233  	X_SC_BC_STRING_MAX                              = 12
  2234  	X_SC_CHILD_MAX                                  = 2
  2235  	X_SC_CLK_TCK                                    = 3
  2236  	X_SC_CLOCK_SELECTION                            = 67
  2237  	X_SC_COLL_WEIGHTS_MAX                           = 13
  2238  	X_SC_CPUTIME                                    = 68
  2239  	X_SC_DELAYTIMER_MAX                             = 45
  2240  	X_SC_EXPR_NEST_MAX                              = 14
  2241  	X_SC_FILE_LOCKING                               = 69
  2242  	X_SC_FSYNC                                      = 38
  2243  	X_SC_GETGR_R_SIZE_MAX                           = 70
  2244  	X_SC_GETPW_R_SIZE_MAX                           = 71
  2245  	X_SC_HOST_NAME_MAX                              = 72
  2246  	X_SC_IOV_MAX                                    = 56
  2247  	X_SC_IPV6                                       = 118
  2248  	X_SC_JOB_CONTROL                                = 6
  2249  	X_SC_LINE_MAX                                   = 15
  2250  	X_SC_LOGIN_NAME_MAX                             = 73
  2251  	X_SC_MAPPED_FILES                               = 47
  2252  	X_SC_MEMLOCK                                    = 30
  2253  	X_SC_MEMLOCK_RANGE                              = 31
  2254  	X_SC_MEMORY_PROTECTION                          = 32
  2255  	X_SC_MESSAGE_PASSING                            = 33
  2256  	X_SC_MONOTONIC_CLOCK                            = 74
  2257  	X_SC_MQ_OPEN_MAX                                = 46
  2258  	X_SC_MQ_PRIO_MAX                                = 75
  2259  	X_SC_NGROUPS_MAX                                = 4
  2260  	X_SC_NPROCESSORS_CONF                           = 57
  2261  	X_SC_NPROCESSORS_ONLN                           = 58
  2262  	X_SC_OPEN_MAX                                   = 5
  2263  	X_SC_PAGESIZE                                   = 29
  2264  	X_SC_PAGE_SIZE                                  = 29
  2265  	X_SC_PASS_MAX                                   = 131
  2266  	X_SC_PHYS_PAGES                                 = 200
  2267  	X_SC_PRIORITIZED_IO                             = 34
  2268  	X_SC_PRIORITY_SCHEDULING                        = 35
  2269  	X_SC_RAW_SOCKETS                                = 119
  2270  	X_SC_READER_WRITER_LOCKS                        = 76
  2271  	X_SC_REALTIME_SIGNALS                           = 36
  2272  	X_SC_REGEXP                                     = 77
  2273  	X_SC_RE_DUP_MAX                                 = 16
  2274  	X_SC_RTSIG_MAX                                  = 48
  2275  	X_SC_SAVED_IDS                                  = 7
  2276  	X_SC_SEMAPHORES                                 = 37
  2277  	X_SC_SEM_NSEMS_MAX                              = 49
  2278  	X_SC_SEM_VALUE_MAX                              = 50
  2279  	X_SC_SHARED_MEMORY_OBJECTS                      = 39
  2280  	X_SC_SHELL                                      = 78
  2281  	X_SC_SIGQUEUE_MAX                               = 51
  2282  	X_SC_SPAWN                                      = 79
  2283  	X_SC_SPIN_LOCKS                                 = 80
  2284  	X_SC_SPORADIC_SERVER                            = 81
  2285  	X_SC_SS_REPL_MAX                                = 126
  2286  	X_SC_STREAM_MAX                                 = 26
  2287  	X_SC_SYMLOOP_MAX                                = 120
  2288  	X_SC_SYNCHRONIZED_IO                            = 40
  2289  	X_SC_THREADS                                    = 96
  2290  	X_SC_THREAD_ATTR_STACKADDR                      = 82
  2291  	X_SC_THREAD_ATTR_STACKSIZE                      = 83
  2292  	X_SC_THREAD_CPUTIME                             = 84
  2293  	X_SC_THREAD_DESTRUCTOR_ITERATIONS               = 85
  2294  	X_SC_THREAD_KEYS_MAX                            = 86
  2295  	X_SC_THREAD_PRIORITY_SCHEDULING                 = 89
  2296  	X_SC_THREAD_PRIO_INHERIT                        = 87
  2297  	X_SC_THREAD_PRIO_PROTECT                        = 88
  2298  	X_SC_THREAD_PROCESS_SHARED                      = 90
  2299  	X_SC_THREAD_SAFE_FUNCTIONS                      = 91
  2300  	X_SC_THREAD_SPORADIC_SERVER                     = 92
  2301  	X_SC_THREAD_STACK_MIN                           = 93
  2302  	X_SC_THREAD_THREADS_MAX                         = 94
  2303  	X_SC_TIMEOUTS                                   = 95
  2304  	X_SC_TIMERS                                     = 41
  2305  	X_SC_TIMER_MAX                                  = 52
  2306  	X_SC_TRACE                                      = 97
  2307  	X_SC_TRACE_EVENT_FILTER                         = 98
  2308  	X_SC_TRACE_EVENT_NAME_MAX                       = 127
  2309  	X_SC_TRACE_INHERIT                              = 99
  2310  	X_SC_TRACE_LOG                                  = 100
  2311  	X_SC_TRACE_NAME_MAX                             = 128
  2312  	X_SC_TRACE_SYS_MAX                              = 129
  2313  	X_SC_TRACE_USER_EVENT_MAX                       = 130
  2314  	X_SC_TTY_NAME_MAX                               = 101
  2315  	X_SC_TYPED_MEMORY_OBJECTS                       = 102
  2316  	X_SC_TZNAME_MAX                                 = 27
  2317  	X_SC_V6_ILP32_OFF32                             = 103
  2318  	X_SC_V6_ILP32_OFFBIG                            = 104
  2319  	X_SC_V6_LP64_OFF64                              = 105
  2320  	X_SC_V6_LPBIG_OFFBIG                            = 106
  2321  	X_SC_VERSION                                    = 8
  2322  	X_SC_XBS5_ILP32_OFF32                           = 122
  2323  	X_SC_XBS5_ILP32_OFFBIG                          = 123
  2324  	X_SC_XBS5_LP64_OFF64                            = 124
  2325  	X_SC_XBS5_LPBIG_OFFBIG                          = 125
  2326  	X_SC_XOPEN_CRYPT                                = 108
  2327  	X_SC_XOPEN_ENH_I18N                             = 109
  2328  	X_SC_XOPEN_LEGACY                               = 110
  2329  	X_SC_XOPEN_REALTIME                             = 111
  2330  	X_SC_XOPEN_REALTIME_THREADS                     = 112
  2331  	X_SC_XOPEN_SHM                                  = 113
  2332  	X_SC_XOPEN_STREAMS                              = 114
  2333  	X_SC_XOPEN_UNIX                                 = 115
  2334  	X_SC_XOPEN_VERSION                              = 116
  2335  	X_SC_XOPEN_XCU_VERSION                          = 121
  2336  	X_STRUCT_TIMEVAL64                              = 0
  2337  	X_SUSECONDS_T                                   = 0
  2338  	X_SYS_DIRENT_H                                  = 0
  2339  	X_SYS_ERRNO_H_                                  = 0
  2340  	X_SYS_FCNTL_H_                                  = 0
  2341  	X_SYS_SELECT_H_                                 = 0
  2342  	X_SYS_STAT_H_                                   = 0
  2343  	X_SYS_TIME_H_                                   = 0
  2344  	X_SYS_TYPES_H_                                  = 0
  2345  	X_SYS_UNISTD_H_                                 = 0
  2346  	X_SYS__SELECT_H_                                = 0
  2347  	X_TIME_H_                                       = 0
  2348  	X_TIME_T                                        = 0
  2349  	X_UINT64_T                                      = 0
  2350  	X_UNISTD_H_                                     = 0
  2351  	X_USECONDS_T                                    = 0
  2352  	X_UTIME_H_                                      = 0
  2353  	X_UUID_T                                        = 0
  2354  	X_U_CHAR                                        = 0
  2355  	X_U_INT                                         = 0
  2356  	X_U_LONG                                        = 0
  2357  	X_U_SHORT                                       = 0
  2358  	X_V6_ILP32_OFF32                                = -1
  2359  	X_V6_ILP32_OFFBIG                               = -1
  2360  	X_V6_LP64_OFF64                                 = 1
  2361  	X_V6_LPBIG_OFFBIG                               = 1
  2362  	X_WATTR_OK                                      = 65536
  2363  	X_WEXT_OK                                       = 262144
  2364  	X_WPERM_OK                                      = 1048576
  2365  	X_WRITE_OK                                      = 1024
  2366  	X_XBS5_ILP32_OFF32                              = -1
  2367  	X_XBS5_ILP32_OFFBIG                             = -1
  2368  	X_XBS5_LP64_OFF64                               = 1
  2369  	X_XBS5_LPBIG_OFFBIG                             = 1
  2370  	X_XOPEN_CRYPT                                   = 1
  2371  	X_XOPEN_ENH_I18N                                = 1
  2372  	X_XOPEN_LEGACY                                  = -1
  2373  	X_XOPEN_REALTIME                                = -1
  2374  	X_XOPEN_REALTIME_THREADS                        = -1
  2375  	X_XOPEN_SHM                                     = 1
  2376  	X_XOPEN_STREAMS                                 = -1
  2377  	X_XOPEN_UNIX                                    = 1
  2378  	X_XOPEN_VERSION                                 = 600
  2379  	X_XOPEN_XCU_VERSION                             = 4
  2380  	FUZZER_HASH                                     = 4001
  2381  	FUZZER_MX_COST                                  = 1000
  2382  	FUZZER_MX_LENGTH                                = 50
  2383  	FUZZER_MX_OUTPUT_LENGTH                         = 100
  2384  	FUZZER_MX_RULEID                                = 2147483647
  2385  	FUZZER_NQUEUE                                   = 20
  2386  	CC_AND                                          = 24
  2387  	CC_BANG                                         = 15
  2388  	CC_COMMA                                        = 23
  2389  	CC_DIGIT                                        = 3
  2390  	CC_DOLLAR                                       = 4
  2391  	CC_DOT                                          = 26
  2392  	CC_EQ                                           = 14
  2393  	CC_GT                                           = 13
  2394  	CC_ID                                           = 2
  2395  	CC_ILLEGAL                                      = 27
  2396  	CC_KYWD                                         = 1
  2397  	CC_LP                                           = 17
  2398  	CC_LT                                           = 12
  2399  	CC_MINUS                                        = 11
  2400  	CC_PERCENT                                      = 22
  2401  	CC_PIPE                                         = 10
  2402  	CC_PLUS                                         = 20
  2403  	CC_QUOTE                                        = 8
  2404  	CC_QUOTE2                                       = 9
  2405  	CC_RP                                           = 18
  2406  	CC_SEMI                                         = 19
  2407  	CC_SLASH                                        = 16
  2408  	CC_SPACE                                        = 7
  2409  	CC_STAR                                         = 21
  2410  	CC_TILDA                                        = 25
  2411  	CC_VARALPHA                                     = 5
  2412  	CC_VARNUM                                       = 6
  2413  	CC_X                                            = 0
  2414  	TK_BITAND                                       = 3
  2415  	TK_BITNOT                                       = 3
  2416  	TK_BITOR                                        = 3
  2417  	TK_BLOB                                         = 2
  2418  	TK_COMMA                                        = 3
  2419  	TK_CONCAT                                       = 3
  2420  	TK_DOT                                          = 3
  2421  	TK_EQ                                           = 3
  2422  	TK_ERROR                                        = 4
  2423  	TK_FLOAT                                        = 2
  2424  	TK_GE                                           = 3
  2425  	TK_GT                                           = 3
  2426  	TK_ID                                           = 1
  2427  	TK_ILLEGAL                                      = 4
  2428  	TK_INTEGER                                      = 2
  2429  	TK_LE                                           = 3
  2430  	TK_LITERAL                                      = 2
  2431  	TK_LP                                           = 3
  2432  	TK_LSHIFT                                       = 3
  2433  	TK_LT                                           = 3
  2434  	TK_MINUS                                        = 3
  2435  	TK_NAME                                         = 1
  2436  	TK_NE                                           = 3
  2437  	TK_PLUS                                         = 3
  2438  	TK_PUNCT                                        = 3
  2439  	TK_REM                                          = 3
  2440  	TK_RP                                           = 3
  2441  	TK_RSHIFT                                       = 3
  2442  	TK_SEMI                                         = 3
  2443  	TK_SLASH                                        = 3
  2444  	TK_SPACE                                        = 0
  2445  	TK_STAR                                         = 3
  2446  	TK_STRING                                       = 2
  2447  	TK_VARIABLE                                     = 2
  2448  	Deliberate_fall_through                         = 0
  2449  	QPVTAB_A                                        = 6
  2450  	QPVTAB_B                                        = 7
  2451  	QPVTAB_C                                        = 8
  2452  	QPVTAB_CN                                       = 2
  2453  	QPVTAB_D                                        = 9
  2454  	QPVTAB_E                                        = 10
  2455  	QPVTAB_FLAGS                                    = 11
  2456  	QPVTAB_IX                                       = 1
  2457  	QPVTAB_NONE                                     = 12
  2458  	QPVTAB_OP                                       = 3
  2459  	QPVTAB_RHS                                      = 5
  2460  	QPVTAB_UX                                       = 4
  2461  	QPVTAB_VN                                       = 0
  2462  	RE_EOF                                          = 0
  2463  	RE_OP_ACCEPT                                    = 6
  2464  	RE_OP_ANY                                       = 2
  2465  	RE_OP_ANYSTAR                                   = 3
  2466  	RE_OP_BOUNDARY                                  = 17
  2467  	RE_OP_CC_EXC                                    = 8
  2468  	RE_OP_CC_INC                                    = 7
  2469  	RE_OP_CC_RANGE                                  = 10
  2470  	RE_OP_CC_VALUE                                  = 9
  2471  	RE_OP_DIGIT                                     = 13
  2472  	RE_OP_FORK                                      = 4
  2473  	RE_OP_GOTO                                      = 5
  2474  	RE_OP_MATCH                                     = 1
  2475  	RE_OP_NOTDIGIT                                  = 14
  2476  	RE_OP_NOTSPACE                                  = 16
  2477  	RE_OP_NOTWORD                                   = 12
  2478  	RE_OP_SPACE                                     = 15
  2479  	RE_OP_WORD                                      = 11
  2480  	SERIES_COLUMN_START                             = 1
  2481  	SERIES_COLUMN_STEP                              = 3
  2482  	SERIES_COLUMN_STOP                              = 2
  2483  	SERIES_COLUMN_VALUE                             = 0
  2484  	CCLASS_B                                        = 2
  2485  	CCLASS_C                                        = 3
  2486  	CCLASS_D                                        = 4
  2487  	CCLASS_DIGIT                                    = 10
  2488  	CCLASS_H                                        = 5
  2489  	CCLASS_L                                        = 6
  2490  	CCLASS_M                                        = 8
  2491  	CCLASS_OTHER                                    = 12
  2492  	CCLASS_R                                        = 7
  2493  	CCLASS_SILENT                                   = 0
  2494  	CCLASS_SPACE                                    = 11
  2495  	CCLASS_VOWEL                                    = 1
  2496  	CCLASS_Y                                        = 9
  2497  	FINAL_INS_COST_DIV                              = 4
  2498  	SCRIPT_ARABIC                                   = 0x0010
  2499  	SCRIPT_CYRILLIC                                 = 0x0002
  2500  	SCRIPT_GREEK                                    = 0x0004
  2501  	SCRIPT_HEBREW                                   = 0x0008
  2502  	SCRIPT_LATIN                                    = 0x0001
  2503  	SPELLFIX_COL_COMMAND                            = 11
  2504  	SPELLFIX_COL_DISTANCE                           = 2
  2505  	SPELLFIX_COL_LANGID                             = 3
  2506  	SPELLFIX_COL_MATCHLEN                           = 5
  2507  	SPELLFIX_COL_PHONEHASH                          = 6
  2508  	SPELLFIX_COL_RANK                               = 1
  2509  	SPELLFIX_COL_SCOPE                              = 8
  2510  	SPELLFIX_COL_SCORE                              = 4
  2511  	SPELLFIX_COL_SOUNDSLIKE                         = 10
  2512  	SPELLFIX_COL_SRCHCNT                            = 9
  2513  	SPELLFIX_COL_TOP                                = 7
  2514  	SPELLFIX_COL_WORD                               = 0
  2515  	SPELLFIX_IDXNUM_DIST                            = 48
  2516  	SPELLFIX_IDXNUM_DISTLE                          = 0x20
  2517  	SPELLFIX_IDXNUM_DISTLT                          = 0x10
  2518  	SPELLFIX_IDXNUM_LANGID                          = 0x02
  2519  	SPELLFIX_IDXNUM_MATCH                           = 0x01
  2520  	SPELLFIX_IDXNUM_ROWID                           = 0x40
  2521  	SPELLFIX_IDXNUM_SCOPE                           = 0x08
  2522  	SPELLFIX_IDXNUM_TOP                             = 0x04
  2523  	SPELLFIX_MX_HASH                                = 32
  2524  	SPELLFIX_MX_RUN                                 = 1
  2525  	SQLITE_SPELLFIX_STACKALLOC_SZ                   = 1024
  2526  	TOTYPE_BIGENDIAN                                = 0
  2527  	TOTYPE_LITTLEENDIAN                             = 1
  2528  	SWARMVTAB_MAX_OPEN                              = 9
  2529  	SQLITE_RBU_STATE_CHECKPOINT                     = 3
  2530  	SQLITE_RBU_STATE_DONE                           = 4
  2531  	SQLITE_RBU_STATE_ERROR                          = 5
  2532  	SQLITE_RBU_STATE_MOVE                           = 2
  2533  	SQLITE_RBU_STATE_OAL                            = 1
  2534  	X_SQLITE3RBU_H                                  = 0
  2535  	BTREE_APPEND                                    = 0x08
  2536  	BTREE_APPLICATION_ID                            = 8
  2537  	BTREE_AUTOVACUUM_FULL                           = 1
  2538  	BTREE_AUTOVACUUM_INCR                           = 2
  2539  	BTREE_AUTOVACUUM_NONE                           = 0
  2540  	BTREE_AUXDELETE                                 = 0x04
  2541  	BTREE_BLOBKEY                                   = 2
  2542  	BTREE_BULKLOAD                                  = 0x00000001
  2543  	BTREE_DATA_VERSION                              = 15
  2544  	BTREE_DEFAULT_CACHE_SIZE                        = 3
  2545  	BTREE_FILE_FORMAT                               = 2
  2546  	BTREE_FORDELETE                                 = 0x00000008
  2547  	BTREE_FREE_PAGE_COUNT                           = 0
  2548  	BTREE_HINT_RANGE                                = 0
  2549  	BTREE_INCR_VACUUM                               = 7
  2550  	BTREE_INTKEY                                    = 1
  2551  	BTREE_LARGEST_ROOT_PAGE                         = 4
  2552  	BTREE_MEMORY                                    = 2
  2553  	BTREE_OMIT_JOURNAL                              = 1
  2554  	BTREE_PREFORMAT                                 = 0x80
  2555  	BTREE_SAVEPOSITION                              = 0x02
  2556  	BTREE_SCHEMA_VERSION                            = 1
  2557  	BTREE_SEEK_EQ                                   = 0x00000002
  2558  	BTREE_SINGLE                                    = 4
  2559  	BTREE_TEXT_ENCODING                             = 5
  2560  	BTREE_UNORDERED                                 = 8
  2561  	BTREE_USER_VERSION                              = 6
  2562  	BTREE_WRCSR                                     = 0x00000004
  2563  	COLFLAG_BUSY                                    = 0x0100
  2564  	COLFLAG_GENERATED                               = 0x0060
  2565  	COLFLAG_HASCOLL                                 = 0x0200
  2566  	COLFLAG_HASTYPE                                 = 0x0004
  2567  	COLFLAG_HIDDEN                                  = 0x0002
  2568  	COLFLAG_NOEXPAND                                = 0x0400
  2569  	COLFLAG_NOINSERT                                = 0x0062
  2570  	COLFLAG_NOTAVAIL                                = 0x0080
  2571  	COLFLAG_PRIMKEY                                 = 0x0001
  2572  	COLFLAG_SORTERREF                               = 0x0010
  2573  	COLFLAG_STORED                                  = 0x0040
  2574  	COLFLAG_UNIQUE                                  = 0x0008
  2575  	COLFLAG_VIRTUAL                                 = 0x0020
  2576  	COLNAME_COLUMN                                  = 4
  2577  	COLNAME_DATABASE                                = 2
  2578  	COLNAME_DECLTYPE                                = 1
  2579  	COLNAME_N                                       = 5
  2580  	COLNAME_NAME                                    = 0
  2581  	COLNAME_TABLE                                   = 3
  2582  	COLTYPE_ANY                                     = 1
  2583  	COLTYPE_BLOB                                    = 2
  2584  	COLTYPE_CUSTOM                                  = 0
  2585  	COLTYPE_INT                                     = 3
  2586  	COLTYPE_INTEGER                                 = 4
  2587  	COLTYPE_REAL                                    = 5
  2588  	COLTYPE_TEXT                                    = 6
  2589  	DBFLAG_EncodingFixed                            = 0x0040
  2590  	DBFLAG_InternalFunc                             = 0x0020
  2591  	DBFLAG_PreferBuiltin                            = 0x0002
  2592  	DBFLAG_SchemaChange                             = 0x0001
  2593  	DBFLAG_SchemaKnownOk                            = 0x0010
  2594  	DBFLAG_Vacuum                                   = 0x0004
  2595  	DBFLAG_VacuumInto                               = 0x0008
  2596  	DB_ResetWanted                                  = 0x0008
  2597  	DB_SchemaLoaded                                 = 0x0001
  2598  	DB_UnresetViews                                 = 0x0002
  2599  	DYNAMIC_TARGETS_ENABLED                         = 0
  2600  	ENAME_NAME                                      = 0
  2601  	ENAME_SPAN                                      = 1
  2602  	ENAME_TAB                                       = 2
  2603  	EP_Agg                                          = 0x000010
  2604  	EP_CanBeNull                                    = 0x200000
  2605  	EP_Collate                                      = 0x000200
  2606  	EP_Commuted                                     = 0x000400
  2607  	EP_ConstFunc                                    = 0x100000
  2608  	EP_DblQuoted                                    = 0x000080
  2609  	EP_Distinct                                     = 0x000004
  2610  	EP_FixedCol                                     = 0x000020
  2611  	EP_FromDDL                                      = 0x40000000
  2612  	EP_HasFunc                                      = 0x000008
  2613  	EP_IfNullRow                                    = 0x040000
  2614  	EP_Immutable                                    = 0x02
  2615  	EP_InfixFunc                                    = 0x000100
  2616  	EP_InnerON                                      = 0x000002
  2617  	EP_IntValue                                     = 0x000800
  2618  	EP_IsFalse                                      = 0x20000000
  2619  	EP_IsTrue                                       = 0x10000000
  2620  	EP_Leaf                                         = 0x800000
  2621  	EP_MemToken                                     = 0x020000
  2622  	EP_NoReduce                                     = 0x01
  2623  	EP_OuterON                                      = 0x000001
  2624  	EP_Propagate                                    = 4194824
  2625  	EP_Quoted                                       = 0x4000000
  2626  	EP_Reduced                                      = 0x004000
  2627  	EP_Skip                                         = 0x002000
  2628  	EP_Static                                       = 0x8000000
  2629  	EP_Subquery                                     = 0x400000
  2630  	EP_Subrtn                                       = 0x2000000
  2631  	EP_TokenOnly                                    = 0x010000
  2632  	EP_Unlikely                                     = 0x080000
  2633  	EP_VarSelect                                    = 0x000040
  2634  	EP_Win                                          = 0x008000
  2635  	EP_WinFunc                                      = 0x1000000
  2636  	EP_xIsSelect                                    = 0x001000
  2637  	EU4_EXPR                                        = 2
  2638  	EU4_IDX                                         = 1
  2639  	EU4_NONE                                        = 0
  2640  	EXCLUSIVE_LOCK                                  = 4
  2641  	EXPRDUP_REDUCE                                  = 0x0001
  2642  	GCC_VERSION                                     = 4002001
  2643  	HAVE_DLFCN_H                                    = 1
  2644  	HAVE_FCHOWN                                     = 1
  2645  	HAVE_FDATASYNC                                  = 1
  2646  	HAVE_GMTIME_R                                   = 1
  2647  	HAVE_INT16_T                                    = 1
  2648  	HAVE_INT32_T                                    = 1
  2649  	HAVE_INT64_T                                    = 1
  2650  	HAVE_INT8_T                                     = 1
  2651  	HAVE_INTPTR_T                                   = 1
  2652  	HAVE_INTTYPES_H                                 = 1
  2653  	HAVE_ISNAN                                      = 1
  2654  	HAVE_LOCALTIME_R                                = 1
  2655  	HAVE_LSTAT                                      = 1
  2656  	HAVE_MEMORY_H                                   = 1
  2657  	HAVE_PREAD                                      = 1
  2658  	HAVE_PWRITE                                     = 1
  2659  	HAVE_READLINK                                   = 1
  2660  	HAVE_STDINT_H                                   = 1
  2661  	HAVE_STDLIB_H                                   = 1
  2662  	HAVE_STRINGS_H                                  = 1
  2663  	HAVE_STRING_H                                   = 1
  2664  	HAVE_SYS_STAT_H                                 = 1
  2665  	HAVE_SYS_TYPES_H                                = 1
  2666  	HAVE_UINT16_T                                   = 1
  2667  	HAVE_UINT32_T                                   = 1
  2668  	HAVE_UINT64_T                                   = 1
  2669  	HAVE_UINT8_T                                    = 1
  2670  	HAVE_UINTPTR_T                                  = 1
  2671  	HAVE_UNISTD_H                                   = 1
  2672  	HAVE_UTIME                                      = 1
  2673  	INITFLAG_AlterAdd                               = 0x0003
  2674  	INITFLAG_AlterDrop                              = 0x0002
  2675  	INITFLAG_AlterMask                              = 0x0003
  2676  	INITFLAG_AlterRename                            = 0x0001
  2677  	INLINEFUNC_affinity                             = 4
  2678  	INLINEFUNC_coalesce                             = 0
  2679  	INLINEFUNC_expr_compare                         = 3
  2680  	INLINEFUNC_expr_implies_expr                    = 2
  2681  	INLINEFUNC_iif                                  = 5
  2682  	INLINEFUNC_implies_nonnull_row                  = 1
  2683  	INLINEFUNC_sqlite_offset                        = 6
  2684  	INLINEFUNC_unlikely                             = 99
  2685  	IN_INDEX_EPH                                    = 2
  2686  	IN_INDEX_INDEX_ASC                              = 3
  2687  	IN_INDEX_INDEX_DESC                             = 4
  2688  	IN_INDEX_LOOP                                   = 0x0004
  2689  	IN_INDEX_MEMBERSHIP                             = 0x0002
  2690  	IN_INDEX_NOOP                                   = 5
  2691  	IN_INDEX_NOOP_OK                                = 0x0001
  2692  	IN_INDEX_ROWID                                  = 1
  2693  	JT_CROSS                                        = 0x02
  2694  	JT_ERROR                                        = 0x80
  2695  	JT_INNER                                        = 0x01
  2696  	JT_LEFT                                         = 0x08
  2697  	JT_LTORJ                                        = 0x40
  2698  	JT_NATURAL                                      = 0x04
  2699  	JT_OUTER                                        = 0x20
  2700  	JT_RIGHT                                        = 0x10
  2701  	KEYINFO_ORDER_BIGNULL                           = 0x02
  2702  	KEYINFO_ORDER_DESC                              = 0x01
  2703  	LEGACY_SCHEMA_TABLE                             = "sqlite_master"
  2704  	LEGACY_TEMP_SCHEMA_TABLE                        = "sqlite_temp_master"
  2705  	LOCATE_NOERR                                    = 0x02
  2706  	LOCATE_VIEW                                     = 0x01
  2707  	LOOKASIDE_SMALL                                 = 128
  2708  	LT_OBJDIR                                       = ".libs/"
  2709  	M10d_Any                                        = 1
  2710  	M10d_No                                         = 2
  2711  	M10d_Yes                                        = 0
  2712  	MEMTYPE_HEAP                                    = 0x01
  2713  	MEMTYPE_LOOKASIDE                               = 0x02
  2714  	MEMTYPE_PCACHE                                  = 0x04
  2715  	MSVC_VERSION                                    = 0
  2716  	NC_AllowAgg                                     = 0x000001
  2717  	NC_AllowWin                                     = 0x004000
  2718  	NC_Complex                                      = 0x002000
  2719  	NC_FromDDL                                      = 0x040000
  2720  	NC_GenCol                                       = 0x000008
  2721  	NC_HasAgg                                       = 0x000010
  2722  	NC_HasWin                                       = 0x008000
  2723  	NC_IdxExpr                                      = 0x000020
  2724  	NC_InAggFunc                                    = 0x020000
  2725  	NC_IsCheck                                      = 0x000004
  2726  	NC_IsDDL                                        = 0x010000
  2727  	NC_MinMaxAgg                                    = 0x001000
  2728  	NC_NoSelect                                     = 0x080000
  2729  	NC_OrderAgg                                     = 0x8000000
  2730  	NC_PartIdx                                      = 0x000002
  2731  	NC_SelfRef                                      = 0x00002e
  2732  	NC_UAggInfo                                     = 0x000100
  2733  	NC_UBaseReg                                     = 0x000400
  2734  	NC_UEList                                       = 0x000080
  2735  	NC_UUpsert                                      = 0x000200
  2736  	NC_VarSelect                                    = 0x000040
  2737  	NO_LOCK                                         = 0
  2738  	OE_Abort                                        = 2
  2739  	OE_Cascade                                      = 10
  2740  	OE_Default                                      = 11
  2741  	OE_Fail                                         = 3
  2742  	OE_Ignore                                       = 4
  2743  	OE_None                                         = 0
  2744  	OE_Replace                                      = 5
  2745  	OE_Restrict                                     = 7
  2746  	OE_Rollback                                     = 1
  2747  	OE_SetDflt                                      = 9
  2748  	OE_SetNull                                      = 8
  2749  	OE_Update                                       = 6
  2750  	OMIT_TEMPDB                                     = 0
  2751  	ONEPASS_MULTI                                   = 2
  2752  	ONEPASS_OFF                                     = 0
  2753  	ONEPASS_SINGLE                                  = 1
  2754  	OPFLAG_APPEND                                   = 0x08
  2755  	OPFLAG_AUXDELETE                                = 0x04
  2756  	OPFLAG_BULKCSR                                  = 0x01
  2757  	OPFLAG_EPHEM                                    = 0x01
  2758  	OPFLAG_FORDELETE                                = 0x08
  2759  	OPFLAG_ISNOOP                                   = 0x40
  2760  	OPFLAG_ISUPDATE                                 = 0x04
  2761  	OPFLAG_LASTROWID                                = 0x20
  2762  	OPFLAG_LENGTHARG                                = 0x40
  2763  	OPFLAG_NCHANGE                                  = 0x01
  2764  	OPFLAG_NOCHNG                                   = 0x01
  2765  	OPFLAG_NOCHNG_MAGIC                             = 0x6d
  2766  	OPFLAG_P2ISREG                                  = 0x10
  2767  	OPFLAG_PERMUTE                                  = 0x01
  2768  	OPFLAG_PREFORMAT                                = 0x80
  2769  	OPFLAG_SAVEPOSITION                             = 0x02
  2770  	OPFLAG_SEEKEQ                                   = 0x02
  2771  	OPFLAG_TYPEOFARG                                = 0x80
  2772  	OPFLAG_USESEEKRESULT                            = 0x10
  2773  	OPFLG_IN1                                       = 0x02
  2774  	OPFLG_IN2                                       = 0x04
  2775  	OPFLG_IN3                                       = 0x08
  2776  	OPFLG_JUMP                                      = 0x01
  2777  	OPFLG_OUT2                                      = 0x10
  2778  	OPFLG_OUT3                                      = 0x20
  2779  	OP_Abortable                                    = 186
  2780  	OP_Add                                          = 106
  2781  	OP_AddImm                                       = 86
  2782  	OP_Affinity                                     = 96
  2783  	OP_AggFinal                                     = 165
  2784  	OP_AggInverse                                   = 161
  2785  	OP_AggStep                                      = 162
  2786  	OP_AggStep1                                     = 163
  2787  	OP_AggValue                                     = 164
  2788  	OP_And                                          = 44
  2789  	OP_AutoCommit                                   = 1
  2790  	OP_BeginSubrtn                                  = 74
  2791  	OP_BitAnd                                       = 102
  2792  	OP_BitNot                                       = 114
  2793  	OP_BitOr                                        = 103
  2794  	OP_Blob                                         = 77
  2795  	OP_Cast                                         = 88
  2796  	OP_Checkpoint                                   = 3
  2797  	OP_Clear                                        = 145
  2798  	OP_Close                                        = 122
  2799  	OP_ClrSubtype                                   = 179
  2800  	OP_CollSeq                                      = 85
  2801  	OP_Column                                       = 94
  2802  	OP_ColumnsUsed                                  = 123
  2803  	OP_Compare                                      = 90
  2804  	OP_Concat                                       = 111
  2805  	OP_Copy                                         = 80
  2806  	OP_Count                                        = 98
  2807  	OP_CreateBtree                                  = 147
  2808  	OP_CursorHint                                   = 182
  2809  	OP_CursorLock                                   = 167
  2810  	OP_CursorUnlock                                 = 168
  2811  	OP_DecrJumpZero                                 = 60
  2812  	OP_DeferredSeek                                 = 141
  2813  	OP_Delete                                       = 130
  2814  	OP_Destroy                                      = 144
  2815  	OP_Divide                                       = 109
  2816  	OP_DropIndex                                    = 152
  2817  	OP_DropTable                                    = 151
  2818  	OP_DropTrigger                                  = 154
  2819  	OP_ElseEq                                       = 58
  2820  	OP_EndCoroutine                                 = 68
  2821  	OP_Eq                                           = 53
  2822  	OP_Expire                                       = 166
  2823  	OP_Explain                                      = 185
  2824  	OP_Filter                                       = 63
  2825  	OP_FilterAdd                                    = 180
  2826  	OP_FinishSeek                                   = 143
  2827  	OP_FkCheck                                      = 83
  2828  	OP_FkCounter                                    = 158
  2829  	OP_FkIfZero                                     = 48
  2830  	OP_Found                                        = 28
  2831  	OP_Function                                     = 66
  2832  	OP_Ge                                           = 57
  2833  	OP_Gosub                                        = 9
  2834  	OP_Goto                                         = 8
  2835  	OP_Gt                                           = 54
  2836  	OP_Halt                                         = 70
  2837  	OP_HaltIfNull                                   = 69
  2838  	OP_IdxDelete                                    = 140
  2839  	OP_IdxGE                                        = 42
  2840  	OP_IdxGT                                        = 40
  2841  	OP_IdxInsert                                    = 138
  2842  	OP_IdxLE                                        = 39
  2843  	OP_IdxLT                                        = 41
  2844  	OP_IdxRowid                                     = 142
  2845  	OP_If                                           = 15
  2846  	OP_IfNoHope                                     = 25
  2847  	OP_IfNot                                        = 16
  2848  	OP_IfNotOpen                                    = 24
  2849  	OP_IfNotZero                                    = 59
  2850  	OP_IfNullRow                                    = 18
  2851  	OP_IfPos                                        = 49
  2852  	OP_IfSmaller                                    = 32
  2853  	OP_IncrVacuum                                   = 61
  2854  	OP_Init                                         = 64
  2855  	OP_InitCoroutine                                = 10
  2856  	OP_Insert                                       = 128
  2857  	OP_Int64                                        = 72
  2858  	OP_IntCopy                                      = 82
  2859  	OP_Integer                                      = 71
  2860  	OP_IntegrityCk                                  = 155
  2861  	OP_IsNull                                       = 50
  2862  	OP_IsNullOrType                                 = 17
  2863  	OP_IsTrue                                       = 91
  2864  	OP_JournalMode                                  = 4
  2865  	OP_Jump                                         = 13
  2866  	OP_Last                                         = 31
  2867  	OP_Le                                           = 55
  2868  	OP_LoadAnalysis                                 = 150
  2869  	OP_Lt                                           = 56
  2870  	OP_MakeRecord                                   = 97
  2871  	OP_MaxPgcnt                                     = 178
  2872  	OP_MemMax                                       = 159
  2873  	OP_Move                                         = 79
  2874  	OP_Multiply                                     = 108
  2875  	OP_MustBeInt                                    = 12
  2876  	OP_Ne                                           = 52
  2877  	OP_NewRowid                                     = 127
  2878  	OP_Next                                         = 38
  2879  	OP_NoConflict                                   = 26
  2880  	OP_Noop                                         = 184
  2881  	OP_Not                                          = 19
  2882  	OP_NotExists                                    = 30
  2883  	OP_NotFound                                     = 27
  2884  	OP_NotNull                                      = 51
  2885  	OP_Null                                         = 75
  2886  	OP_NullRow                                      = 136
  2887  	OP_Offset                                       = 93
  2888  	OP_OffsetLimit                                  = 160
  2889  	OP_Once                                         = 14
  2890  	OP_OpenAutoindex                                = 116
  2891  	OP_OpenDup                                      = 115
  2892  	OP_OpenEphemeral                                = 118
  2893  	OP_OpenPseudo                                   = 121
  2894  	OP_OpenRead                                     = 112
  2895  	OP_OpenWrite                                    = 113
  2896  	OP_Or                                           = 43
  2897  	OP_Pagecount                                    = 177
  2898  	OP_Param                                        = 157
  2899  	OP_ParseSchema                                  = 149
  2900  	OP_Permutation                                  = 89
  2901  	OP_Prev                                         = 37
  2902  	OP_Program                                      = 47
  2903  	OP_PureFunc                                     = 65
  2904  	OP_ReadCookie                                   = 99
  2905  	OP_Real                                         = 153
  2906  	OP_RealAffinity                                 = 87
  2907  	OP_ReleaseReg                                   = 183
  2908  	OP_Remainder                                    = 110
  2909  	OP_ReopenIdx                                    = 101
  2910  	OP_ResetCount                                   = 131
  2911  	OP_ResetSorter                                  = 146
  2912  	OP_ResultRow                                    = 84
  2913  	OP_Return                                       = 67
  2914  	OP_Rewind                                       = 35
  2915  	OP_RowCell                                      = 129
  2916  	OP_RowData                                      = 134
  2917  	OP_RowSetAdd                                    = 156
  2918  	OP_RowSetRead                                   = 45
  2919  	OP_RowSetTest                                   = 46
  2920  	OP_Rowid                                        = 135
  2921  	OP_SCopy                                        = 81
  2922  	OP_Savepoint                                    = 0
  2923  	OP_SeekEnd                                      = 137
  2924  	OP_SeekGE                                       = 22
  2925  	OP_SeekGT                                       = 23
  2926  	OP_SeekHit                                      = 125
  2927  	OP_SeekLE                                       = 21
  2928  	OP_SeekLT                                       = 20
  2929  	OP_SeekRowid                                    = 29
  2930  	OP_SeekScan                                     = 124
  2931  	OP_Sequence                                     = 126
  2932  	OP_SequenceTest                                 = 120
  2933  	OP_SetCookie                                    = 100
  2934  	OP_ShiftLeft                                    = 104
  2935  	OP_ShiftRight                                   = 105
  2936  	OP_SoftNull                                     = 76
  2937  	OP_Sort                                         = 34
  2938  	OP_SorterCompare                                = 132
  2939  	OP_SorterData                                   = 133
  2940  	OP_SorterInsert                                 = 139
  2941  	OP_SorterNext                                   = 36
  2942  	OP_SorterOpen                                   = 119
  2943  	OP_SorterSort                                   = 33
  2944  	OP_SqlExec                                      = 148
  2945  	OP_String                                       = 73
  2946  	OP_String8                                      = 117
  2947  	OP_Subtract                                     = 107
  2948  	OP_TableLock                                    = 169
  2949  	OP_Trace                                        = 181
  2950  	OP_Transaction                                  = 2
  2951  	OP_TypeCheck                                    = 95
  2952  	OP_VBegin                                       = 170
  2953  	OP_VColumn                                      = 175
  2954  	OP_VCreate                                      = 171
  2955  	OP_VDestroy                                     = 172
  2956  	OP_VFilter                                      = 6
  2957  	OP_VInitIn                                      = 174
  2958  	OP_VNext                                        = 62
  2959  	OP_VOpen                                        = 173
  2960  	OP_VRename                                      = 176
  2961  	OP_VUpdate                                      = 7
  2962  	OP_Vacuum                                       = 5
  2963  	OP_Variable                                     = 78
  2964  	OP_Yield                                        = 11
  2965  	OP_ZeroOrNull                                   = 92
  2966  	OS_VXWORKS                                      = 0
  2967  	P4_COLLSEQ                                      = -2
  2968  	P4_DYNAMIC                                      = -6
  2969  	P4_EXPR                                         = -9
  2970  	P4_FREE_IF_LE                                   = -6
  2971  	P4_FUNCCTX                                      = -15
  2972  	P4_FUNCDEF                                      = -7
  2973  	P4_INT32                                        = -3
  2974  	P4_INT64                                        = -13
  2975  	P4_INTARRAY                                     = -14
  2976  	P4_KEYINFO                                      = -8
  2977  	P4_MEM                                          = -10
  2978  	P4_NOTUSED                                      = 0
  2979  	P4_REAL                                         = -12
  2980  	P4_STATIC                                       = -1
  2981  	P4_SUBPROGRAM                                   = -4
  2982  	P4_TABLE                                        = -5
  2983  	P4_TRANSIENT                                    = 0
  2984  	P4_VTAB                                         = -11
  2985  	P5_ConstraintCheck                              = 3
  2986  	P5_ConstraintFK                                 = 4
  2987  	P5_ConstraintNotNull                            = 1
  2988  	P5_ConstraintUnique                             = 2
  2989  	PACKAGE_BUGREPORT                               = ""
  2990  	PACKAGE_NAME                                    = "sqlite"
  2991  	PACKAGE_STRING                                  = "sqlite 3.39.3"
  2992  	PACKAGE_TARNAME                                 = "sqlite"
  2993  	PACKAGE_VERSION                                 = "3.39.3"
  2994  	PAGER_CACHESPILL                                = 0x20
  2995  	PAGER_CKPT_FULLFSYNC                            = 0x10
  2996  	PAGER_FLAGS_MASK                                = 0x38
  2997  	PAGER_FULLFSYNC                                 = 0x08
  2998  	PAGER_GET_NOCONTENT                             = 0x01
  2999  	PAGER_GET_READONLY                              = 0x02
  3000  	PAGER_JOURNALMODE_DELETE                        = 0
  3001  	PAGER_JOURNALMODE_MEMORY                        = 4
  3002  	PAGER_JOURNALMODE_OFF                           = 2
  3003  	PAGER_JOURNALMODE_PERSIST                       = 1
  3004  	PAGER_JOURNALMODE_QUERY                         = -1
  3005  	PAGER_JOURNALMODE_TRUNCATE                      = 3
  3006  	PAGER_JOURNALMODE_WAL                           = 5
  3007  	PAGER_LOCKINGMODE_EXCLUSIVE                     = 1
  3008  	PAGER_LOCKINGMODE_NORMAL                        = 0
  3009  	PAGER_LOCKINGMODE_QUERY                         = -1
  3010  	PAGER_MEMORY                                    = 0x0002
  3011  	PAGER_OMIT_JOURNAL                              = 0x0001
  3012  	PAGER_SYNCHRONOUS_EXTRA                         = 0x04
  3013  	PAGER_SYNCHRONOUS_FULL                          = 0x03
  3014  	PAGER_SYNCHRONOUS_MASK                          = 0x07
  3015  	PAGER_SYNCHRONOUS_NORMAL                        = 0x02
  3016  	PAGER_SYNCHRONOUS_OFF                           = 0x01
  3017  	PARSE_MODE_DECLARE_VTAB                         = 1
  3018  	PARSE_MODE_NORMAL                               = 0
  3019  	PARSE_MODE_RENAME                               = 2
  3020  	PARSE_MODE_UNMAP                                = 3
  3021  	PENDING_LOCK                                    = 3
  3022  	PGHDR_CLEAN                                     = 0x001
  3023  	PGHDR_DIRTY                                     = 0x002
  3024  	PGHDR_DONT_WRITE                                = 0x010
  3025  	PGHDR_MMAP                                      = 0x020
  3026  	PGHDR_NEED_SYNC                                 = 0x008
  3027  	PGHDR_WAL_APPEND                                = 0x040
  3028  	PGHDR_WRITEABLE                                 = 0x004
  3029  	PREFERRED_SCHEMA_TABLE                          = "sqlite_schema"
  3030  	PREFERRED_TEMP_SCHEMA_TABLE                     = "sqlite_temp_schema"
  3031  	PRIX16                                          = "hX"
  3032  	PRIX32                                          = "X"
  3033  	PRIXPTR                                         = "lX"
  3034  	PRId16                                          = "hd"
  3035  	PRId32                                          = "d"
  3036  	PRIdPTR                                         = "ld"
  3037  	PRIi16                                          = "hi"
  3038  	PRIi32                                          = "i"
  3039  	PRIiPTR                                         = "li"
  3040  	PRIo16                                          = "ho"
  3041  	PRIo32                                          = "o"
  3042  	PRIoPTR                                         = "lo"
  3043  	PRIu16                                          = "hu"
  3044  	PRIu32                                          = "u"
  3045  	PRIuPTR                                         = "lu"
  3046  	PRIx16                                          = "hx"
  3047  	PRIx32                                          = "x"
  3048  	PRIxPTR                                         = "lx"
  3049  	RESERVED_LOCK                                   = 2
  3050  	SAVEPOINT_BEGIN                                 = 0
  3051  	SAVEPOINT_RELEASE                               = 1
  3052  	SAVEPOINT_ROLLBACK                              = 2
  3053  	SCHEMA_ROOT                                     = 1
  3054  	SCNd16                                          = "hd"
  3055  	SCNd32                                          = "d"
  3056  	SCNdPTR                                         = "ld"
  3057  	SCNi16                                          = "hi"
  3058  	SCNi32                                          = "i"
  3059  	SCNiPTR                                         = "li"
  3060  	SCNo16                                          = "ho"
  3061  	SCNo32                                          = "o"
  3062  	SCNoPTR                                         = "lo"
  3063  	SCNu16                                          = "hu"
  3064  	SCNu32                                          = "u"
  3065  	SCNuPTR                                         = "lu"
  3066  	SCNx16                                          = "hx"
  3067  	SCNx32                                          = "x"
  3068  	SCNxPTR                                         = "lx"
  3069  	SF_Aggregate                                    = 0x0000008
  3070  	SF_All                                          = 0x0000002
  3071  	SF_ComplexResult                                = 0x0040000
  3072  	SF_Compound                                     = 0x0000100
  3073  	SF_Converted                                    = 0x0010000
  3074  	SF_CopyCte                                      = 0x4000000
  3075  	SF_Distinct                                     = 0x0000001
  3076  	SF_Expanded                                     = 0x0000040
  3077  	SF_FixedLimit                                   = 0x0004000
  3078  	SF_HasAgg                                       = 0x0000010
  3079  	SF_HasTypeInfo                                  = 0x0000080
  3080  	SF_IncludeHidden                                = 0x0020000
  3081  	SF_MaybeConvert                                 = 0x0008000
  3082  	SF_MinMaxAgg                                    = 0x0001000
  3083  	SF_MultiPart                                    = 0x2000000
  3084  	SF_MultiValue                                   = 0x0000400
  3085  	SF_NestedFrom                                   = 0x0000800
  3086  	SF_NoopOrderBy                                  = 0x0400000
  3087  	SF_OrderByReqd                                  = 0x8000000
  3088  	SF_PushDown                                     = 0x1000000
  3089  	SF_Recursive                                    = 0x0002000
  3090  	SF_Resolved                                     = 0x0000004
  3091  	SF_UFSrcCheck                                   = 0x0800000
  3092  	SF_UsesEphemeral                                = 0x0000020
  3093  	SF_Values                                       = 0x0000200
  3094  	SF_View                                         = 0x0200000
  3095  	SF_WhereBegin                                   = 0x0080000
  3096  	SF_WinRewrite                                   = 0x0100000
  3097  	SHARED_LOCK                                     = 1
  3098  	SHARED_SIZE                                     = 510
  3099  	SQLITECONFIG_H                                  = 1
  3100  	SQLITEINT_H                                     = 0
  3101  	SQLITE_AFF_BLOB                                 = 0x41
  3102  	SQLITE_AFF_INTEGER                              = 0x44
  3103  	SQLITE_AFF_MASK                                 = 0x47
  3104  	SQLITE_AFF_NONE                                 = 0x40
  3105  	SQLITE_AFF_NUMERIC                              = 0x43
  3106  	SQLITE_AFF_REAL                                 = 0x45
  3107  	SQLITE_AFF_TEXT                                 = 0x42
  3108  	SQLITE_ASCII                                    = 1
  3109  	SQLITE_ATOMIC_INTRINSICS                        = 0
  3110  	SQLITE_AllOpts                                  = 0xffffffff
  3111  	SQLITE_AutoIndex                                = 0x00008000
  3112  	SQLITE_BIGENDIAN                                = 0
  3113  	SQLITE_BTREE_H                                  = 0
  3114  	SQLITE_BYTEORDER                                = 1234
  3115  	SQLITE_BalancedMerge                            = 0x00200000
  3116  	SQLITE_BloomFilter                              = 0x00080000
  3117  	SQLITE_BloomPulldown                            = 0x00100000
  3118  	SQLITE_CacheSpill                               = 0x00000020
  3119  	SQLITE_CellSizeCk                               = 0x00200000
  3120  	SQLITE_CkptFullFSync                            = 0x00000010
  3121  	SQLITE_CountOfView                              = 0x00000200
  3122  	SQLITE_CoverIdxScan                             = 0x00000020
  3123  	SQLITE_CursorHints                              = 0x00000400
  3124  	SQLITE_DEFAULT_AUTOVACUUM                       = 0
  3125  	SQLITE_DEFAULT_CACHE_SIZE                       = -2000
  3126  	SQLITE_DEFAULT_FILE_FORMAT                      = 4
  3127  	SQLITE_DEFAULT_JOURNAL_SIZE_LIMIT               = -1
  3128  	SQLITE_DEFAULT_MMAP_SIZE                        = 0
  3129  	SQLITE_DEFAULT_PCACHE_INITSZ                    = 20
  3130  	SQLITE_DEFAULT_RECURSIVE_TRIGGERS               = 0
  3131  	SQLITE_DEFAULT_SECTOR_SIZE                      = 4096
  3132  	SQLITE_DEFAULT_SORTERREF_SIZE                   = 0x7fffffff
  3133  	SQLITE_DEFAULT_SYNCHRONOUS                      = 2
  3134  	SQLITE_DEFAULT_WAL_AUTOCHECKPOINT               = 1000
  3135  	SQLITE_DEFAULT_WAL_SYNCHRONOUS                  = 2
  3136  	SQLITE_DEFAULT_WORKER_THREADS                   = 0
  3137  	SQLITE_Defensive                                = 0x10000000
  3138  	SQLITE_DeferFKs                                 = 0x00080000
  3139  	SQLITE_DistinctOpt                              = 0x00000010
  3140  	SQLITE_DqsDDL                                   = 0x20000000
  3141  	SQLITE_DqsDML                                   = 0x40000000
  3142  	SQLITE_ECEL_DUP                                 = 0x01
  3143  	SQLITE_ECEL_FACTOR                              = 0x02
  3144  	SQLITE_ECEL_OMITREF                             = 0x08
  3145  	SQLITE_ECEL_REF                                 = 0x04
  3146  	SQLITE_EnableQPSG                               = 0x00800000
  3147  	SQLITE_EnableTrigger                            = 0x00040000
  3148  	SQLITE_EnableView                               = 0x80000000
  3149  	SQLITE_FAULTINJECTOR_COUNT                      = 1
  3150  	SQLITE_FAULTINJECTOR_MALLOC                     = 0
  3151  	SQLITE_FCNTL_DB_UNCHANGED                       = 0xca093fa0
  3152  	SQLITE_FUNC_ANYORDER                            = 0x08000000
  3153  	SQLITE_FUNC_BUILTIN                             = 0x00800000
  3154  	SQLITE_FUNC_CASE                                = 0x0008
  3155  	SQLITE_FUNC_CONSTANT                            = 0x0800
  3156  	SQLITE_FUNC_COUNT                               = 0x0100
  3157  	SQLITE_FUNC_DIRECT                              = 0x00080000
  3158  	SQLITE_FUNC_ENCMASK                             = 0x0003
  3159  	SQLITE_FUNC_EPHEM                               = 0x0010
  3160  	SQLITE_FUNC_HASH_SZ                             = 23
  3161  	SQLITE_FUNC_INLINE                              = 0x00400000
  3162  	SQLITE_FUNC_INTERNAL                            = 0x00040000
  3163  	SQLITE_FUNC_LENGTH                              = 0x0040
  3164  	SQLITE_FUNC_LIKE                                = 0x0004
  3165  	SQLITE_FUNC_MINMAX                              = 0x1000
  3166  	SQLITE_FUNC_NEEDCOLL                            = 0x0020
  3167  	SQLITE_FUNC_SLOCHNG                             = 0x2000
  3168  	SQLITE_FUNC_SUBTYPE                             = 0x00100000
  3169  	SQLITE_FUNC_TEST                                = 0x4000
  3170  	SQLITE_FUNC_TYPEOF                              = 0x0080
  3171  	SQLITE_FUNC_UNLIKELY                            = 0x0400
  3172  	SQLITE_FUNC_UNSAFE                              = 0x00200000
  3173  	SQLITE_FUNC_WINDOW                              = 0x00010000
  3174  	SQLITE_FactorOutConst                           = 0x00000008
  3175  	SQLITE_FlttnUnionAll                            = 0x00800000
  3176  	SQLITE_ForeignKeys                              = 0x00004000
  3177  	SQLITE_Fts3Tokenizer                            = 0x00400000
  3178  	SQLITE_FullColNames                             = 0x00000004
  3179  	SQLITE_FullFSync                                = 0x00000008
  3180  	SQLITE_GroupByOrder                             = 0x00000004
  3181  	SQLITE_HASH_H                                   = 0
  3182  	SQLITE_HAVE_C99_MATH_FUNCS                      = 1
  3183  	SQLITE_HAVE_OS_TRACE                            = 0
  3184  	SQLITE_IDXTYPE_APPDEF                           = 0
  3185  	SQLITE_IDXTYPE_IPK                              = 3
  3186  	SQLITE_IDXTYPE_PRIMARYKEY                       = 2
  3187  	SQLITE_IDXTYPE_UNIQUE                           = 1
  3188  	SQLITE_IOERR_NOMEM_BKPT                         = 3082
  3189  	SQLITE_IgnoreChecks                             = 0x00000200
  3190  	SQLITE_JUMPIFNULL                               = 0x10
  3191  	SQLITE_LITTLEENDIAN                             = 1
  3192  	SQLITE_LegacyAlter                              = 0x04000000
  3193  	SQLITE_LegacyFileFmt                            = 0x00000002
  3194  	SQLITE_LoadExtFunc                              = 0x00020000
  3195  	SQLITE_LoadExtension                            = 0x00010000
  3196  	SQLITE_MALLOC_SOFT_LIMIT                        = 1024
  3197  	SQLITE_MAX_ATTACHED                             = 10
  3198  	SQLITE_MAX_COLUMN                               = 2000
  3199  	SQLITE_MAX_COMPOUND_SELECT                      = 500
  3200  	SQLITE_MAX_DB                                   = 12
  3201  	SQLITE_MAX_DEFAULT_PAGE_SIZE                    = 8192
  3202  	SQLITE_MAX_EXPR_DEPTH                           = 1000
  3203  	SQLITE_MAX_FILE_FORMAT                          = 4
  3204  	SQLITE_MAX_FUNCTION_ARG                         = 127
  3205  	SQLITE_MAX_LENGTH                               = 1000000000
  3206  	SQLITE_MAX_LIKE_PATTERN_LENGTH                  = 50000
  3207  	SQLITE_MAX_MMAP_SIZE                            = 0x7fff0000
  3208  	SQLITE_MAX_PAGE_COUNT                           = 1073741823
  3209  	SQLITE_MAX_PAGE_SIZE                            = 65536
  3210  	SQLITE_MAX_PATHLEN                              = 1024
  3211  	SQLITE_MAX_SQL_LENGTH                           = 1000000000
  3212  	SQLITE_MAX_SYMLINK                              = 200
  3213  	SQLITE_MAX_TRIGGER_DEPTH                        = 1000
  3214  	SQLITE_MAX_VARIABLE_NUMBER                      = 32766
  3215  	SQLITE_MAX_VDBE_OP                              = 250000000
  3216  	SQLITE_MAX_WORKER_THREADS                       = 8
  3217  	SQLITE_MSVC_H                                   = 0
  3218  	SQLITE_MUTEX_STATIC_TEMPDIR                     = 11
  3219  	SQLITE_MX_JUMP_OPCODE                           = 64
  3220  	SQLITE_MinMaxOpt                                = 0x00010000
  3221  	SQLITE_NEED_ERR_NAME                            = 0
  3222  	SQLITE_NOMEM_BKPT                               = 7
  3223  	SQLITE_NOTNULL                                  = 0x90
  3224  	SQLITE_NTUNE                                    = 6
  3225  	SQLITE_NULLEQ                                   = 0x80
  3226  	SQLITE_N_BTREE_META                             = 16
  3227  	SQLITE_N_LIMIT                                  = 12
  3228  	SQLITE_N_STDTYPE                                = 6
  3229  	SQLITE_NoCkptOnClose                            = 0x00000800
  3230  	SQLITE_NoSchemaError                            = 0x08000000
  3231  	SQLITE_NullCallback                             = 0x00000100
  3232  	SQLITE_OS_SETUP_H                               = 0
  3233  	SQLITE_OS_WIN                                   = 0
  3234  	SQLITE_OmitNoopJoin                             = 0x00000100
  3235  	SQLITE_OmitOrderBy                              = 0x00040000
  3236  	SQLITE_OrderByIdxJoin                           = 0x00000040
  3237  	SQLITE_PAGER_H                                  = 0
  3238  	SQLITE_POWERSAFE_OVERWRITE                      = 1
  3239  	SQLITE_PREPARE_MASK                             = 0x0f
  3240  	SQLITE_PREPARE_SAVESQL                          = 0x80
  3241  	SQLITE_PRINTF_INTERNAL                          = 0x01
  3242  	SQLITE_PRINTF_MALLOCED                          = 0x04
  3243  	SQLITE_PRINTF_SQLFUNC                           = 0x02
  3244  	SQLITE_PTRSIZE                                  = 8
  3245  	SQLITE_PropagateConst                           = 0x00008000
  3246  	SQLITE_PushDown                                 = 0x00001000
  3247  	SQLITE_QueryFlattener                           = 0x00000001
  3248  	SQLITE_QueryOnly                                = 0x00100000
  3249  	SQLITE_ReadUncommit                             = 0x00000400
  3250  	SQLITE_RecTriggers                              = 0x00002000
  3251  	SQLITE_ReleaseReg                               = 0x00400000
  3252  	SQLITE_ResetDatabase                            = 0x02000000
  3253  	SQLITE_ReverseOrder                             = 0x00001000
  3254  	SQLITE_SO_ASC                                   = 0
  3255  	SQLITE_SO_DESC                                  = 1
  3256  	SQLITE_SO_UNDEFINED                             = -1
  3257  	SQLITE_STATE_BUSY                               = 0x6d
  3258  	SQLITE_STATE_CLOSED                             = 0xce
  3259  	SQLITE_STATE_ERROR                              = 0xd5
  3260  	SQLITE_STATE_OPEN                               = 0x76
  3261  	SQLITE_STATE_SICK                               = 0xba
  3262  	SQLITE_STATE_ZOMBIE                             = 0xa7
  3263  	SQLITE_SYSTEM_MALLOC                            = 1
  3264  	SQLITE_SeekScan                                 = 0x00020000
  3265  	SQLITE_ShortColNames                            = 0x00000040
  3266  	SQLITE_SimplifyJoin                             = 0x00002000
  3267  	SQLITE_SkipScan                                 = 0x00004000
  3268  	SQLITE_Stat4                                    = 0x00000800
  3269  	SQLITE_TEMP_FILE_PREFIX                         = "etilqs_"
  3270  	SQLITE_TOKEN_KEYWORD                            = 0x2
  3271  	SQLITE_TOKEN_QUOTED                             = 0x1
  3272  	SQLITE_TRACE_LEGACY                             = 0x40
  3273  	SQLITE_TRACE_NONLEGACY_MASK                     = 0x0f
  3274  	SQLITE_TRACE_XPROFILE                           = 0x80
  3275  	SQLITE_Transitive                               = 0x00000080
  3276  	SQLITE_TriggerEQP                               = 0x01000000
  3277  	SQLITE_TrustedSchema                            = 0x00000080
  3278  	SQLITE_UTF16NATIVE                              = 2
  3279  	SQLITE_VDBE_H                                   = 0
  3280  	SQLITE_VTABRISK_High                            = 2
  3281  	SQLITE_VTABRISK_Low                             = 0
  3282  	SQLITE_VTABRISK_Normal                          = 1
  3283  	SQLITE_WSD                                      = 0
  3284  	SQLITE_WindowFunc                               = 0x00000002
  3285  	SQLITE_WriteSchema                              = 0x00000001
  3286  	SRT_Coroutine                                   = 13
  3287  	SRT_Discard                                     = 4
  3288  	SRT_DistFifo                                    = 5
  3289  	SRT_DistQueue                                   = 6
  3290  	SRT_EphemTab                                    = 12
  3291  	SRT_Except                                      = 2
  3292  	SRT_Exists                                      = 3
  3293  	SRT_Fifo                                        = 8
  3294  	SRT_Mem                                         = 10
  3295  	SRT_Output                                      = 9
  3296  	SRT_Queue                                       = 7
  3297  	SRT_Set                                         = 11
  3298  	SRT_Table                                       = 14
  3299  	SRT_Union                                       = 1
  3300  	SRT_Upfrom                                      = 15
  3301  	STDC_HEADERS                                    = 1
  3302  	TABTYP_NORM                                     = 0
  3303  	TABTYP_VIEW                                     = 2
  3304  	TABTYP_VTAB                                     = 1
  3305  	TARGET_ABI_USES_IOS_VALUES                      = 0
  3306  	TARGET_CPU_68K                                  = 0
  3307  	TARGET_CPU_ALPHA                                = 0
  3308  	TARGET_CPU_ARM                                  = 0
  3309  	TARGET_CPU_ARM64                                = 0
  3310  	TARGET_CPU_MIPS                                 = 0
  3311  	TARGET_CPU_PPC                                  = 0
  3312  	TARGET_CPU_PPC64                                = 0
  3313  	TARGET_CPU_SPARC                                = 0
  3314  	TARGET_CPU_X86                                  = 0
  3315  	TARGET_CPU_X86_64                               = 1
  3316  	TARGET_IPHONE_SIMULATOR                         = 0
  3317  	TARGET_OS_DRIVERKIT                             = 0
  3318  	TARGET_OS_EMBEDDED                              = 0
  3319  	TARGET_OS_IOS                                   = 0
  3320  	TARGET_OS_IPHONE                                = 0
  3321  	TARGET_OS_MAC                                   = 1
  3322  	TARGET_OS_MACCATALYST                           = 0
  3323  	TARGET_OS_NANO                                  = 0
  3324  	TARGET_OS_OSX                                   = 1
  3325  	TARGET_OS_RTKIT                                 = 0
  3326  	TARGET_OS_SIMULATOR                             = 0
  3327  	TARGET_OS_TV                                    = 0
  3328  	TARGET_OS_UIKITFORMAC                           = 0
  3329  	TARGET_OS_UNIX                                  = 0
  3330  	TARGET_OS_WATCH                                 = 0
  3331  	TARGET_OS_WIN32                                 = 0
  3332  	TARGET_RT_64_BIT                                = 1
  3333  	TARGET_RT_BIG_ENDIAN                            = 0
  3334  	TARGET_RT_LITTLE_ENDIAN                         = 1
  3335  	TARGET_RT_MAC_CFM                               = 0
  3336  	TARGET_RT_MAC_MACHO                             = 1
  3337  	TF_Autoincrement                                = 0x00000008
  3338  	TF_Ephemeral                                    = 0x00004000
  3339  	TF_Eponymous                                    = 0x00008000
  3340  	TF_HasGenerated                                 = 0x00000060
  3341  	TF_HasHidden                                    = 0x00000002
  3342  	TF_HasNotNull                                   = 0x00000800
  3343  	TF_HasPrimaryKey                                = 0x00000004
  3344  	TF_HasStat1                                     = 0x00000010
  3345  	TF_HasStat4                                     = 0x00002000
  3346  	TF_HasStored                                    = 0x00000040
  3347  	TF_HasVirtual                                   = 0x00000020
  3348  	TF_NoVisibleRowid                               = 0x00000200
  3349  	TF_OOOHidden                                    = 0x00000400
  3350  	TF_Readonly                                     = 0x00000001
  3351  	TF_Shadow                                       = 0x00001000
  3352  	TF_StatsUsed                                    = 0x00000100
  3353  	TF_Strict                                       = 0x00010000
  3354  	TF_WithoutRowid                                 = 0x00000080
  3355  	TK_ABORT                                        = 27
  3356  	TK_ACTION                                       = 28
  3357  	TK_ADD                                          = 163
  3358  	TK_AFTER                                        = 29
  3359  	TK_AGG_COLUMN                                   = 169
  3360  	TK_AGG_FUNCTION                                 = 168
  3361  	TK_ALL                                          = 135
  3362  	TK_ALTER                                        = 162
  3363  	TK_ALWAYS                                       = 96
  3364  	TK_ANALYZE                                      = 30
  3365  	TK_AND                                          = 44
  3366  	TK_ANY                                          = 101
  3367  	TK_AS                                           = 24
  3368  	TK_ASC                                          = 31
  3369  	TK_ASTERISK                                     = 180
  3370  	TK_ATTACH                                       = 32
  3371  	TK_AUTOINCR                                     = 126
  3372  	TK_BEFORE                                       = 33
  3373  	TK_BEGIN                                        = 5
  3374  	TK_BETWEEN                                      = 48
  3375  	TK_BY                                           = 34
  3376  	TK_CASCADE                                      = 35
  3377  	TK_CASE                                         = 157
  3378  	TK_CAST                                         = 36
  3379  	TK_CHECK                                        = 124
  3380  	TK_COLLATE                                      = 113
  3381  	TK_COLUMN                                       = 167
  3382  	TK_COLUMNKW                                     = 60
  3383  	TK_COMMIT                                       = 10
  3384  	TK_CONFLICT                                     = 37
  3385  	TK_CONSTRAINT                                   = 119
  3386  	TK_CREATE                                       = 17
  3387  	TK_CTIME_KW                                     = 100
  3388  	TK_CURRENT                                      = 85
  3389  	TK_DATABASE                                     = 38
  3390  	TK_DEFAULT                                      = 120
  3391  	TK_DEFERRABLE                                   = 131
  3392  	TK_DEFERRED                                     = 7
  3393  	TK_DELETE                                       = 128
  3394  	TK_DESC                                         = 39
  3395  	TK_DETACH                                       = 40
  3396  	TK_DISTINCT                                     = 140
  3397  	TK_DO                                           = 61
  3398  	TK_DROP                                         = 133
  3399  	TK_EACH                                         = 41
  3400  	TK_ELSE                                         = 160
  3401  	TK_END                                          = 11
  3402  	TK_ESCAPE                                       = 58
  3403  	TK_EXCEPT                                       = 136
  3404  	TK_EXCLUDE                                      = 91
  3405  	TK_EXCLUSIVE                                    = 9
  3406  	TK_EXISTS                                       = 20
  3407  	TK_EXPLAIN                                      = 2
  3408  	TK_FAIL                                         = 42
  3409  	TK_FILTER                                       = 166
  3410  	TK_FIRST                                        = 83
  3411  	TK_FOLLOWING                                    = 86
  3412  	TK_FOR                                          = 62
  3413  	TK_FOREIGN                                      = 132
  3414  	TK_FROM                                         = 142
  3415  	TK_FUNCTION                                     = 172
  3416  	TK_GENERATED                                    = 95
  3417  	TK_GROUP                                        = 146
  3418  	TK_GROUPS                                       = 92
  3419  	TK_HAVING                                       = 147
  3420  	TK_IF                                           = 18
  3421  	TK_IF_NULL_ROW                                  = 179
  3422  	TK_IGNORE                                       = 63
  3423  	TK_IMMEDIATE                                    = 8
  3424  	TK_IN                                           = 49
  3425  	TK_INDEX                                        = 161
  3426  	TK_INDEXED                                      = 116
  3427  	TK_INITIALLY                                    = 64
  3428  	TK_INSERT                                       = 127
  3429  	TK_INSTEAD                                      = 65
  3430  	TK_INTERSECT                                    = 137
  3431  	TK_INTO                                         = 151
  3432  	TK_IS                                           = 45
  3433  	TK_ISNOT                                        = 171
  3434  	TK_ISNULL                                       = 50
  3435  	TK_JOIN                                         = 143
  3436  	TK_JOIN_KW                                      = 118
  3437  	TK_KEY                                          = 67
  3438  	TK_LAST                                         = 84
  3439  	TK_LIKE_KW                                      = 47
  3440  	TK_LIMIT                                        = 148
  3441  	TK_MATCH                                        = 46
  3442  	TK_MATERIALIZED                                 = 97
  3443  	TK_NO                                           = 66
  3444  	TK_NOT                                          = 19
  3445  	TK_NOTHING                                      = 152
  3446  	TK_NOTNULL                                      = 51
  3447  	TK_NULL                                         = 121
  3448  	TK_NULLS                                        = 82
  3449  	TK_OF                                           = 68
  3450  	TK_OFFSET                                       = 69
  3451  	TK_ON                                           = 115
  3452  	TK_OR                                           = 43
  3453  	TK_ORDER                                        = 145
  3454  	TK_OTHERS                                       = 93
  3455  	TK_OVER                                         = 165
  3456  	TK_PARTITION                                    = 87
  3457  	TK_PLAN                                         = 4
  3458  	TK_PRAGMA                                       = 70
  3459  	TK_PRECEDING                                    = 88
  3460  	TK_PRIMARY                                      = 122
  3461  	TK_PTR                                          = 112
  3462  	TK_QUERY                                        = 3
  3463  	TK_RAISE                                        = 71
  3464  	TK_RANGE                                        = 89
  3465  	TK_RECURSIVE                                    = 72
  3466  	TK_REFERENCES                                   = 125
  3467  	TK_REGISTER                                     = 176
  3468  	TK_REINDEX                                      = 98
  3469  	TK_RELEASE                                      = 14
  3470  	TK_RENAME                                       = 99
  3471  	TK_REPLACE                                      = 73
  3472  	TK_RESTRICT                                     = 74
  3473  	TK_RETURNING                                    = 150
  3474  	TK_ROLLBACK                                     = 12
  3475  	TK_ROW                                          = 75
  3476  	TK_ROWS                                         = 76
  3477  	TK_SAVEPOINT                                    = 13
  3478  	TK_SELECT                                       = 138
  3479  	TK_SELECT_COLUMN                                = 178
  3480  	TK_SET                                          = 130
  3481  	TK_SPAN                                         = 181
  3482  	TK_TABLE                                        = 16
  3483  	TK_TEMP                                         = 21
  3484  	TK_THEN                                         = 159
  3485  	TK_TIES                                         = 94
  3486  	TK_TO                                           = 15
  3487  	TK_TRANSACTION                                  = 6
  3488  	TK_TRIGGER                                      = 77
  3489  	TK_TRUEFALSE                                    = 170
  3490  	TK_TRUTH                                        = 175
  3491  	TK_UMINUS                                       = 173
  3492  	TK_UNBOUNDED                                    = 90
  3493  	TK_UNION                                        = 134
  3494  	TK_UNIQUE                                       = 123
  3495  	TK_UPDATE                                       = 129
  3496  	TK_UPLUS                                        = 174
  3497  	TK_USING                                        = 144
  3498  	TK_VACUUM                                       = 78
  3499  	TK_VALUES                                       = 139
  3500  	TK_VECTOR                                       = 177
  3501  	TK_VIEW                                         = 79
  3502  	TK_VIRTUAL                                      = 80
  3503  	TK_WHEN                                         = 158
  3504  	TK_WHERE                                        = 149
  3505  	TK_WINDOW                                       = 164
  3506  	TK_WITH                                         = 81
  3507  	TK_WITHOUT                                      = 26
  3508  	TREETRACE_ENABLED                               = 0
  3509  	TRIGGER_AFTER                                   = 2
  3510  	TRIGGER_BEFORE                                  = 1
  3511  	WHERE_AGG_DISTINCT                              = 0x0400
  3512  	WHERE_DISTINCTBY                                = 0x0080
  3513  	WHERE_DISTINCT_NOOP                             = 0
  3514  	WHERE_DISTINCT_ORDERED                          = 2
  3515  	WHERE_DISTINCT_UNIQUE                           = 1
  3516  	WHERE_DISTINCT_UNORDERED                        = 3
  3517  	WHERE_DUPLICATES_OK                             = 0x0010
  3518  	WHERE_GROUPBY                                   = 0x0040
  3519  	WHERE_ONEPASS_DESIRED                           = 0x0004
  3520  	WHERE_ONEPASS_MULTIROW                          = 0x0008
  3521  	WHERE_ORDERBY_LIMIT                             = 0x0800
  3522  	WHERE_ORDERBY_MAX                               = 0x0002
  3523  	WHERE_ORDERBY_MIN                               = 0x0001
  3524  	WHERE_ORDERBY_NORMAL                            = 0x0000
  3525  	WHERE_OR_SUBCLAUSE                              = 0x0020
  3526  	WHERE_RIGHT_JOIN                                = 0x1000
  3527  	WHERE_SORTBYGROUP                               = 0x0200
  3528  	WHERE_USE_LIMIT                                 = 0x4000
  3529  	WHERE_WANT_DISTINCT                             = 0x0100
  3530  	WRC_Abort                                       = 2
  3531  	WRC_Continue                                    = 0
  3532  	WRC_Prune                                       = 1
  3533  	XN_EXPR                                         = -2
  3534  	XN_ROWID                                        = -1
  3535  	X_GNU_SOURCE                                    = 0
  3536  	X_INTTYPES_H_                                   = 0
  3537  	X_LARGEFILE_SOURCE                              = 1
  3538  	X_LARGE_FILE                                    = 1
  3539  	X_PTRDIFF_T                                     = 0
  3540  	X_SQLITE_OS_H_                                  = 0
  3541  	SESSION_STREAM_TCL_VAR                          = "sqlite3session_streams"
  3542  	MAX_PREPARED_STMTS                              = 100
  3543  	NUM_PREPARED_STMTS                              = 10
  3544  	SQLITE_EVAL_WITHOUTNULLS                        = 0x00001
  3545  	SQLITE_TCL_NRE                                  = 0
  3546  	TCLSH                                           = 1
  3547  	X_USER_SIGNAL_H                                 = 0
  3548  	CACHE_STALE                                     = 0
  3549  	CURTYPE_BTREE                                   = 0
  3550  	CURTYPE_PSEUDO                                  = 3
  3551  	CURTYPE_SORTER                                  = 1
  3552  	CURTYPE_VTAB                                    = 2
  3553  	MEM_AffMask                                     = 0x003f
  3554  	MEM_Agg                                         = 0x8000
  3555  	MEM_Blob                                        = 0x0010
  3556  	MEM_Cleared                                     = 0x0100
  3557  	MEM_Dyn                                         = 0x1000
  3558  	MEM_Ephem                                       = 0x4000
  3559  	MEM_FromBind                                    = 0x0040
  3560  	MEM_Int                                         = 0x0004
  3561  	MEM_IntReal                                     = 0x0020
  3562  	MEM_Null                                        = 0x0001
  3563  	MEM_Real                                        = 0x0008
  3564  	MEM_Static                                      = 0x2000
  3565  	MEM_Str                                         = 0x0002
  3566  	MEM_Subtype                                     = 0x0800
  3567  	MEM_Term                                        = 0x0200
  3568  	MEM_TypeMask                                    = 0x0dbf
  3569  	MEM_Undefined                                   = 0x0000
  3570  	MEM_Zero                                        = 0x0400
  3571  	SQLITE_ENABLE_LOCKING_STYLE                     = 1
  3572  	SQLITE_FRAME_MAGIC                              = 0x879fb71e
  3573  	SQLITE_MAX_SCHEMA_RETRY                         = 50
  3574  	SQLITE_VDBEINT_H                                = 0
  3575  	VDBE_DISPLAY_P4                                 = 1
  3576  	VDBE_HALT_STATE                                 = 3
  3577  	VDBE_INIT_STATE                                 = 0
  3578  	VDBE_READY_STATE                                = 1
  3579  	VDBE_RUN_STATE                                  = 2
  3580  	BTCF_AtLast                                     = 0x08
  3581  	BTCF_Incrblob                                   = 0x10
  3582  	BTCF_Multiple                                   = 0x20
  3583  	BTCF_Pinned                                     = 0x40
  3584  	BTCF_ValidNKey                                  = 0x02
  3585  	BTCF_ValidOvfl                                  = 0x04
  3586  	BTCF_WriteFlag                                  = 0x01
  3587  	BTCURSOR_MAX_DEPTH                              = 20
  3588  	BTS_EXCLUSIVE                                   = 0x0040
  3589  	BTS_FAST_SECURE                                 = 0x000c
  3590  	BTS_INITIALLY_EMPTY                             = 0x0010
  3591  	BTS_NO_WAL                                      = 0x0020
  3592  	BTS_OVERWRITE                                   = 0x0008
  3593  	BTS_PAGESIZE_FIXED                              = 0x0002
  3594  	BTS_PENDING                                     = 0x0080
  3595  	BTS_READ_ONLY                                   = 0x0001
  3596  	BTS_SECURE_DELETE                               = 0x0004
  3597  	CURSOR_FAULT                                    = 4
  3598  	CURSOR_INVALID                                  = 1
  3599  	CURSOR_REQUIRESEEK                              = 3
  3600  	CURSOR_SKIPNEXT                                 = 2
  3601  	CURSOR_VALID                                    = 0
  3602  	PTF_INTKEY                                      = 0x01
  3603  	PTF_LEAF                                        = 0x08
  3604  	PTF_LEAFDATA                                    = 0x04
  3605  	PTF_ZERODATA                                    = 0x02
  3606  	PTRMAP_BTREE                                    = 5
  3607  	PTRMAP_FREEPAGE                                 = 2
  3608  	PTRMAP_OVERFLOW1                                = 3
  3609  	PTRMAP_OVERFLOW2                                = 4
  3610  	PTRMAP_ROOTPAGE                                 = 1
  3611  	READ_LOCK                                       = 1
  3612  	SQLITE_FILE_HEADER                              = "SQLite format 3"
  3613  	TRANS_NONE                                      = 0
  3614  	TRANS_READ                                      = 1
  3615  	TRANS_WRITE                                     = 2
  3616  	WRITE_LOCK                                      = 2
  3617  	N_THREAD                                        = 26
  3618  	PTHREAD_CANCEL_ASYNCHRONOUS                     = 0x00
  3619  	PTHREAD_CANCEL_DEFERRED                         = 0x02
  3620  	PTHREAD_CANCEL_DISABLE                          = 0x00
  3621  	PTHREAD_CANCEL_ENABLE                           = 0x01
  3622  	PTHREAD_CREATE_DETACHED                         = 2
  3623  	PTHREAD_CREATE_JOINABLE                         = 1
  3624  	PTHREAD_EXPLICIT_SCHED                          = 2
  3625  	PTHREAD_INHERIT_SCHED                           = 1
  3626  	PTHREAD_MUTEX_DEFAULT                           = 0
  3627  	PTHREAD_MUTEX_ERRORCHECK                        = 1
  3628  	PTHREAD_MUTEX_NORMAL                            = 0
  3629  	PTHREAD_MUTEX_POLICY_FAIRSHARE_NP               = 1
  3630  	PTHREAD_MUTEX_POLICY_FIRSTFIT_NP                = 3
  3631  	PTHREAD_MUTEX_RECURSIVE                         = 2
  3632  	PTHREAD_PRIO_INHERIT                            = 1
  3633  	PTHREAD_PRIO_NONE                               = 0
  3634  	PTHREAD_PRIO_PROTECT                            = 2
  3635  	PTHREAD_PROCESS_PRIVATE                         = 2
  3636  	PTHREAD_PROCESS_SHARED                          = 1
  3637  	PTHREAD_SCOPE_PROCESS                           = 2
  3638  	PTHREAD_SCOPE_SYSTEM                            = 1
  3639  	QOS_MIN_RELATIVE_PRIORITY                       = -15
  3640  	SCHED_FIFO                                      = 4
  3641  	SCHED_OTHER                                     = 1
  3642  	SCHED_RR                                        = 2
  3643  	X_MACH_PORT_T                                   = 0
  3644  	X_PTHREAD_COND_SIG_init                         = 0x3CB0B1BB
  3645  	X_PTHREAD_ERRORCHECK_MUTEX_SIG_init             = 0x32AAABA1
  3646  	X_PTHREAD_FIRSTFIT_MUTEX_SIG_init               = 0x32AAABA3
  3647  	X_PTHREAD_H                                     = 0
  3648  	X_PTHREAD_IMPL_H_                               = 0
  3649  	X_PTHREAD_MUTEX_SIG_init                        = 0x32AAABA7
  3650  	X_PTHREAD_ONCE_SIG_init                         = 0x30B1BCBA
  3651  	X_PTHREAD_QOS_H                                 = 0
  3652  	X_PTHREAD_RECURSIVE_MUTEX_SIG_init              = 0x32AAABA2
  3653  	X_PTHREAD_RWLOCK_SIG_init                       = 0x2DA8B3B4
  3654  	X_SCHED_H_                                      = 0
  3655  	X_SYS_QOS_H                                     = 0
  3656  	TCL_THREADS                                     = 0
  3657  	MX_CHUNK_NUMBER                                 = 299
  3658  	SQLITE_MULTIPLEX_JOURNAL_8_3_OFFSET             = 400
  3659  	SQLITE_MULTIPLEX_WAL_8_3_OFFSET                 = 700
  3660  	ARG_MAX                                         = 262144
  3661  	BC_BASE_MAX                                     = 99
  3662  	BC_DIM_MAX                                      = 2048
  3663  	BC_SCALE_MAX                                    = 99
  3664  	BC_STRING_MAX                                   = 1000
  3665  	BLKDEV_IOSIZE                                   = 2048
  3666  	BSD                                             = 199506
  3667  	BSD4_3                                          = 1
  3668  	BSD4_4                                          = 1
  3669  	CBLOCK                                          = 64
  3670  	CBQSIZE                                         = 8
  3671  	CHARCLASS_NAME_MAX                              = 14
  3672  	CHAR_BIT                                        = 8
  3673  	CHAR_MAX                                        = 127
  3674  	CHAR_MIN                                        = -128
  3675  	CHILD_MAX                                       = 266
  3676  	CLBYTES                                         = 4096
  3677  	CLOFF                                           = 4095
  3678  	CLOFSET                                         = 4095
  3679  	CLSHIFT                                         = 12
  3680  	CLSIZE                                          = 1
  3681  	CLSIZELOG2                                      = 0
  3682  	CMASK                                           = 022
  3683  	COLL_WEIGHTS_MAX                                = 2
  3684  	CROUND                                          = 63
  3685  	DEV_BSHIFT                                      = 9
  3686  	DEV_BSIZE                                       = 512
  3687  	EQUIV_CLASS_MAX                                 = 2
  3688  	EXPR_NEST_MAX                                   = 32
  3689  	FSCALE                                          = 2048
  3690  	FSHIFT                                          = 11
  3691  	GID_MAX                                         = 2147483647
  3692  	INT_MAX                                         = 2147483647
  3693  	INT_MIN                                         = -2147483648
  3694  	LINE_MAX                                        = 2048
  3695  	LINK_MAX                                        = 32767
  3696  	LLONG_MAX                                       = 9223372036854775807
  3697  	LLONG_MIN                                       = -9223372036854775808
  3698  	LONG_LONG_MAX                                   = 9223372036854775807
  3699  	LONG_LONG_MIN                                   = -9223372036854775808
  3700  	LONG_MAX                                        = 9223372036854775807
  3701  	LONG_MIN                                        = -9223372036854775808
  3702  	M16KCLBYTES                                     = 16384
  3703  	M16KCLSHIFT                                     = 14
  3704  	MAXALLOCSAVE                                    = 8192
  3705  	MAXBSIZE                                        = 1048576
  3706  	MAXCOMLEN                                       = 16
  3707  	MAXDOMNAMELEN                                   = 256
  3708  	MAXFRAG                                         = 8
  3709  	MAXHOSTNAMELEN                                  = 256
  3710  	MAXINTERP                                       = 64
  3711  	MAXLOGNAME                                      = 255
  3712  	MAXPATHLEN                                      = 1024
  3713  	MAXPATHNAME                                     = 512
  3714  	MAXPHYS                                         = 131072
  3715  	MAXPHYSIO                                       = 131072
  3716  	MAXPHYSIO_WIRED                                 = 16777216
  3717  	MAXPRI                                          = 127
  3718  	MAXSYMLINKS                                     = 32
  3719  	MAXUPRC                                         = 266
  3720  	MAX_CANON                                       = 1024
  3721  	MAX_INPUT                                       = 1024
  3722  	MBIGCLBYTES                                     = 4096
  3723  	MBIGCLSHIFT                                     = 12
  3724  	MB_LEN_MAX                                      = 1
  3725  	MCLBYTES                                        = 2048
  3726  	MCLOFSET                                        = 2047
  3727  	MCLSHIFT                                        = 11
  3728  	MINBUCKET                                       = 4
  3729  	MSIZE                                           = 256
  3730  	MSIZESHIFT                                      = 8
  3731  	NAME_MAX                                        = 255
  3732  	NBPG                                            = 4096
  3733  	NCARGS                                          = 262144
  3734  	NGROUPS                                         = 16
  3735  	NGROUPS_MAX                                     = 16
  3736  	NMBCLUSTERS                                     = 512
  3737  	NOFILE                                          = 256
  3738  	NOGROUP                                         = 65535
  3739  	NZERO                                           = 20
  3740  	NeXTBSD                                         = 1995064
  3741  	NeXTBSD4_0                                      = 0
  3742  	OPEN_MAX                                        = 10240
  3743  	PATH_MAX                                        = 1024
  3744  	PCATCH                                          = 0x100
  3745  	PDROP                                           = 0x400
  3746  	PGOFSET                                         = 4095
  3747  	PGSHIFT                                         = 12
  3748  	PINOD                                           = 8
  3749  	PIPE_BUF                                        = 512
  3750  	PLOCK                                           = 36
  3751  	PPAUSE                                          = 40
  3752  	PRIBIO                                          = 16
  3753  	PRIMASK                                         = 0x0ff
  3754  	PSOCK                                           = 24
  3755  	PSPIN                                           = 0x800
  3756  	PSWP                                            = 0
  3757  	PTTYBLOCK                                       = 0x200
  3758  	PUSER                                           = 50
  3759  	PVFS                                            = 20
  3760  	PVM                                             = 4
  3761  	PWAIT                                           = 32
  3762  	PZERO                                           = 22
  3763  	RE_DUP_MAX                                      = 255
  3764  	SCHAR_MAX                                       = 127
  3765  	SCHAR_MIN                                       = -128
  3766  	SHRT_MAX                                        = 32767
  3767  	SHRT_MIN                                        = -32768
  3768  	SQLITE_DEMOVFS_BUFFERSZ                         = 8192
  3769  	TRACEBUF                                        = 0
  3770  	UCHAR_MAX                                       = 255
  3771  	UID_MAX                                         = 2147483647
  3772  	UINT_MAX                                        = 4294967295
  3773  	ULLONG_MAX                                      = 18446744073709551615
  3774  	ULONG_LONG_MAX                                  = 18446744073709551615
  3775  	ULONG_MAX                                       = 18446744073709551615
  3776  	USHRT_MAX                                       = 65535
  3777  	X_BSD_MACHINE_PARAM_H_                          = 0
  3778  	X_GCC_LIMITS_H_                                 = 0
  3779  	X_I386_PARAM_H_                                 = 0
  3780  	X_I386__PARAM_H_                                = 0
  3781  	X_KAUTH_CRED_T                                  = 0
  3782  	X_SYS_FILE_H_                                   = 0
  3783  	X_SYS_PARAM_H_                                  = 0
  3784  	X_SYS_QUEUE_H_                                  = 0
  3785  	X_SYS_SYSLIMITS_H_                              = 0
  3786  	DEVSYM_MAX_PATHNAME                             = 512
  3787  	DEVSYM_VFS_NAME                                 = "devsym"
  3788  	WRITECRASH_NAME                                 = "writecrash"
  3789  	SQLITE_INTARRAY_H                               = 0
  3790  	JT_MAX_PATHNAME                                 = 512
  3791  	JT_VFS_NAME                                     = "jt"
  3792  	MALLOC_LOG_FRAMES                               = 10
  3793  	DEFAULT_SECTOR_SIZE                             = 0x1000
  3794  	MAX_PAGE_SIZE                                   = 0x10000
  3795  	MULTIPLEX_CTRL_ENABLE                           = 214014
  3796  	MULTIPLEX_CTRL_SET_CHUNK_SIZE                   = 214015
  3797  	MULTIPLEX_CTRL_SET_MAX_CHUNKS                   = 214016
  3798  	SQLITE_MULTIPLEX_CHUNK_SIZE                     = 2147418112
  3799  	SQLITE_MULTIPLEX_MAX_CHUNKS                     = 12
  3800  	SQLITE_MULTIPLEX_VFS_NAME                       = "multiplex"
  3801  	SQLITE_TEST_MULTIPLEX_H                         = 0
  3802  	MAX_MUTEXES                                     = 14
  3803  	STATIC_MUTEXES                                  = 12
  3804  	BLOBSIZE                                        = 10485760
  3805  	BLOCKSIZE                                       = 512
  3806  	DATABASE_FILE                                   = 1
  3807  	FS_VFS_NAME                                     = "fs"
  3808  	JOURNAL_FILE                                    = 2
  3809  	INST_MAX_PATHNAME                               = 512
  3810  	OS_ACCESS                                       = 1
  3811  	OS_ANNOTATE                                     = 28
  3812  	OS_CHECKRESERVEDLOCK                            = 2
  3813  	OS_CLOSE                                        = 3
  3814  	OS_CURRENTTIME                                  = 4
  3815  	OS_DELETE                                       = 5
  3816  	OS_DEVCHAR                                      = 6
  3817  	OS_FILECONTROL                                  = 7
  3818  	OS_FILESIZE                                     = 8
  3819  	OS_FULLPATHNAME                                 = 9
  3820  	OS_LOCK                                         = 11
  3821  	OS_NUMEVENTS                                    = 29
  3822  	OS_OPEN                                         = 12
  3823  	OS_RANDOMNESS                                   = 13
  3824  	OS_READ                                         = 14
  3825  	OS_SECTORSIZE                                   = 15
  3826  	OS_SHMBARRIER                                   = 26
  3827  	OS_SHMLOCK                                      = 25
  3828  	OS_SHMMAP                                       = 23
  3829  	OS_SHMUNMAP                                     = 22
  3830  	OS_SLEEP                                        = 16
  3831  	OS_SYNC                                         = 17
  3832  	OS_TRUNCATE                                     = 18
  3833  	OS_UNLOCK                                       = 19
  3834  	OS_WRITE                                        = 20
  3835  	VFSLOG_BUFFERSIZE                               = 8192
  3836  	TESTPCACHE_CLEAR                                = 0xd42670d4
  3837  	TESTPCACHE_NPAGE                                = 217
  3838  	TESTPCACHE_RESERVE                              = 17
  3839  	TESTPCACHE_VALID                                = 0x364585fd
  3840  	MSG_Close                                       = 6
  3841  	MSG_Done                                        = 7
  3842  	MSG_Finalize                                    = 5
  3843  	MSG_Open                                        = 1
  3844  	MSG_Prepare                                     = 2
  3845  	MSG_Reset                                       = 4
  3846  	MSG_Step                                        = 3
  3847  	MADV_CAN_REUSE                                  = 9
  3848  	MADV_DONTNEED                                   = 4
  3849  	MADV_FREE                                       = 5
  3850  	MADV_FREE_REUSABLE                              = 7
  3851  	MADV_FREE_REUSE                                 = 8
  3852  	MADV_NORMAL                                     = 0
  3853  	MADV_PAGEOUT                                    = 10
  3854  	MADV_RANDOM                                     = 1
  3855  	MADV_SEQUENTIAL                                 = 2
  3856  	MADV_WILLNEED                                   = 3
  3857  	MADV_ZERO_WIRED_PAGES                           = 6
  3858  	MAP_32BIT                                       = 0x8000
  3859  	MAP_ANON                                        = 0x1000
  3860  	MAP_ANONYMOUS                                   = 4096
  3861  	MAP_COPY                                        = 2
  3862  	MAP_FILE                                        = 0x0000
  3863  	MAP_FIXED                                       = 0x0010
  3864  	MAP_HASSEMAPHORE                                = 0x0200
  3865  	MAP_JIT                                         = 0x0800
  3866  	MAP_NOCACHE                                     = 0x0400
  3867  	MAP_NOEXTEND                                    = 0x0100
  3868  	MAP_NORESERVE                                   = 0x0040
  3869  	MAP_PRIVATE                                     = 0x0002
  3870  	MAP_RENAME                                      = 0x0020
  3871  	MAP_RESERVED0080                                = 0x0080
  3872  	MAP_RESILIENT_CODESIGN                          = 0x2000
  3873  	MAP_RESILIENT_MEDIA                             = 0x4000
  3874  	MAP_SHARED                                      = 0x0001
  3875  	MCL_CURRENT                                     = 0x0001
  3876  	MCL_FUTURE                                      = 0x0002
  3877  	MINCORE_ANONYMOUS                               = 0x80
  3878  	MINCORE_COPIED                                  = 0x40
  3879  	MINCORE_INCORE                                  = 0x1
  3880  	MINCORE_MODIFIED                                = 0x4
  3881  	MINCORE_MODIFIED_OTHER                          = 0x10
  3882  	MINCORE_PAGED_OUT                               = 0x20
  3883  	MINCORE_REFERENCED                              = 0x2
  3884  	MINCORE_REFERENCED_OTHER                        = 0x8
  3885  	MS_ASYNC                                        = 0x0001
  3886  	MS_DEACTIVATE                                   = 0x0008
  3887  	MS_INVALIDATE                                   = 0x0002
  3888  	MS_KILLPAGES                                    = 0x0004
  3889  	MS_SYNC                                         = 0x0010
  3890  	POSIX_MADV_DONTNEED                             = 4
  3891  	POSIX_MADV_NORMAL                               = 0
  3892  	POSIX_MADV_RANDOM                               = 1
  3893  	POSIX_MADV_SEQUENTIAL                           = 2
  3894  	POSIX_MADV_WILLNEED                             = 3
  3895  	PROT_EXEC                                       = 0x04
  3896  	PROT_NONE                                       = 0x00
  3897  	PROT_READ                                       = 0x01
  3898  	PROT_WRITE                                      = 0x02
  3899  	X_MMAP                                          = 0
  3900  	X_SYS_MMAN_H_                                   = 0
  3901  	TCLVAR_NAME_EQ                                  = 101
  3902  	TCLVAR_NAME_MATCH                               = 109
  3903  	TCLVAR_VALUE_GLOB                               = 103
  3904  	TCLVAR_VALUE_LIKE                               = 108
  3905  	TCLVAR_VALUE_REGEXP                             = 114
  3906  	FAULT_INJECT_NONE                               = 0
  3907  	FAULT_INJECT_PERSISTENT                         = 2
  3908  	FAULT_INJECT_TRANSIENT                          = 1
  3909  	TESTVFS_ACCESS_MASK                             = 0x00004000
  3910  	TESTVFS_ALL_MASK                                = 0x001FFFFF
  3911  	TESTVFS_CKLOCK_MASK                             = 0x00080000
  3912  	TESTVFS_CLOSE_MASK                              = 0x00000800
  3913  	TESTVFS_DELETE_MASK                             = 0x00000400
  3914  	TESTVFS_FCNTL_MASK                              = 0x00100000
  3915  	TESTVFS_FULLPATHNAME_MASK                       = 0x00008000
  3916  	TESTVFS_LOCK_MASK                               = 0x00040000
  3917  	TESTVFS_MAX_ARGS                                = 12
  3918  	TESTVFS_MAX_PAGES                               = 1024
  3919  	TESTVFS_OPEN_MASK                               = 0x00000100
  3920  	TESTVFS_READ_MASK                               = 0x00010000
  3921  	TESTVFS_SHMBARRIER_MASK                         = 0x00000040
  3922  	TESTVFS_SHMCLOSE_MASK                           = 0x00000080
  3923  	TESTVFS_SHMLOCK_MASK                            = 0x00000010
  3924  	TESTVFS_SHMMAP_MASK                             = 0x00000020
  3925  	TESTVFS_SHMOPEN_MASK                            = 0x00000001
  3926  	TESTVFS_SYNC_MASK                               = 0x00000200
  3927  	TESTVFS_TRUNCATE_MASK                           = 0x00002000
  3928  	TESTVFS_UNLOCK_MASK                             = 0x00020000
  3929  	TESTVFS_WRITE_MASK                              = 0x00001000
  3930  )
  3931  
  3932  const (
  3933  	FILESEC_OWNER   = 1
  3934  	FILESEC_GROUP   = 2
  3935  	FILESEC_UUID    = 3
  3936  	FILESEC_MODE    = 4
  3937  	FILESEC_ACL     = 5
  3938  	FILESEC_GRPUUID = 6
  3939  
  3940  	FILESEC_ACL_RAW       = 100
  3941  	FILESEC_ACL_ALLOCSIZE = 101
  3942  )
  3943  
  3944  const (
  3945  	QOS_CLASS_USER_INTERACTIVE = 33
  3946  	QOS_CLASS_USER_INITIATED   = 25
  3947  	QOS_CLASS_DEFAULT          = 21
  3948  	QOS_CLASS_UTILITY          = 17
  3949  	QOS_CLASS_BACKGROUND       = 9
  3950  	QOS_CLASS_UNSPECIFIED      = 0
  3951  )
  3952  
  3953  const (
  3954  	P_ALL  = 0
  3955  	P_PID  = 1
  3956  	P_PGID = 2
  3957  )
  3958  
  3959  const (
  3960  	TCL_QUEUE_TAIL = 0
  3961  	TCL_QUEUE_HEAD = 1
  3962  	TCL_QUEUE_MARK = 2
  3963  )
  3964  
  3965  const (
  3966  	TCL_PATH_ABSOLUTE        = 0
  3967  	TCL_PATH_RELATIVE        = 1
  3968  	TCL_PATH_VOLUME_RELATIVE = 2
  3969  )
  3970  
  3971  const (
  3972  	TCL_INT      = 0
  3973  	TCL_DOUBLE   = 1
  3974  	TCL_EITHER   = 2
  3975  	TCL_WIDE_INT = 3
  3976  )
  3977  
  3978  const (
  3979  	_CLOCK_REALTIME             = 0
  3980  	_CLOCK_MONOTONIC            = 6
  3981  	_CLOCK_MONOTONIC_RAW        = 4
  3982  	_CLOCK_MONOTONIC_RAW_APPROX = 5
  3983  	_CLOCK_UPTIME_RAW           = 8
  3984  	_CLOCK_UPTIME_RAW_APPROX    = 9
  3985  	_CLOCK_PROCESS_CPUTIME_ID   = 12
  3986  	_CLOCK_THREAD_CPUTIME_ID    = 16
  3987  )
  3988  
  3989  type ptrdiff_t = int64
  3990  
  3991  type size_t = uint64
  3992  
  3993  type wchar_t = int32
  3994  
  3995  var __darwin_check_fd_set_overflow uintptr
  3996  
  3997  type va_list = uintptr
  3998  
  3999  type sqlite32 = struct {
  4000  	FpVfs                   uintptr
  4001  	FpVdbe                  uintptr
  4002  	FpDfltColl              uintptr
  4003  	Fmutex                  uintptr
  4004  	FaDb                    uintptr
  4005  	FnDb                    int32
  4006  	FmDbFlags               u32
  4007  	Fflags                  u64
  4008  	FlastRowid              i64
  4009  	FszMmap                 i64
  4010  	FnSchemaLock            u32
  4011  	FopenFlags              uint32
  4012  	FerrCode                int32
  4013  	FerrByteOffset          int32
  4014  	FerrMask                int32
  4015  	FiSysErrno              int32
  4016  	FdbOptFlags             u32
  4017  	Fenc                    u8
  4018  	FautoCommit             u8
  4019  	Ftemp_store             u8
  4020  	FmallocFailed           u8
  4021  	FbBenignMalloc          u8
  4022  	FdfltLockMode           u8
  4023  	FnextAutovac            int8
  4024  	FsuppressErr            u8
  4025  	FvtabOnConflict         u8
  4026  	FisTransactionSavepoint u8
  4027  	FmTrace                 u8
  4028  	FnoSharedCache          u8
  4029  	FnSqlExec               u8
  4030  	FeOpenState             u8
  4031  	F__ccgo_pad1            [2]byte
  4032  	FnextPagesize           int32
  4033  	FnChange                i64
  4034  	FnTotalChange           i64
  4035  	FaLimit                 [12]int32
  4036  	FnMaxSorterMmap         int32
  4037  	F__ccgo_pad2            [4]byte
  4038  	Finit                   struct {
  4039  		FnewTnum       Pgno
  4040  		FiDb           u8
  4041  		Fbusy          u8
  4042  		F__ccgo_pad1   [2]byte
  4043  		ForphanTrigger uint8
  4044  		F__ccgo_pad2   [7]byte
  4045  		FazInit        uintptr
  4046  	}
  4047  	FnVdbeActive        int32
  4048  	FnVdbeRead          int32
  4049  	FnVdbeWrite         int32
  4050  	FnVdbeExec          int32
  4051  	FnVDestroy          int32
  4052  	FnExtension         int32
  4053  	FaExtension         uintptr
  4054  	Ftrace              struct{ FxLegacy uintptr }
  4055  	FpTraceArg          uintptr
  4056  	FxProfile           uintptr
  4057  	FpProfileArg        uintptr
  4058  	FpCommitArg         uintptr
  4059  	FxCommitCallback    uintptr
  4060  	FpRollbackArg       uintptr
  4061  	FxRollbackCallback  uintptr
  4062  	FpUpdateArg         uintptr
  4063  	FxUpdateCallback    uintptr
  4064  	FpAutovacPagesArg   uintptr
  4065  	FxAutovacDestr      uintptr
  4066  	FxAutovacPages      uintptr
  4067  	FpParse             uintptr
  4068  	FpPreUpdateArg      uintptr
  4069  	FxPreUpdateCallback uintptr
  4070  	FpPreUpdate         uintptr
  4071  	FxWalCallback       uintptr
  4072  	FpWalArg            uintptr
  4073  	FxCollNeeded        uintptr
  4074  	FxCollNeeded16      uintptr
  4075  	FpCollNeededArg     uintptr
  4076  	FpErr               uintptr
  4077  	Fu1                 struct {
  4078  		F__ccgo_pad1   [0]uint64
  4079  		FisInterrupted int32
  4080  		F__ccgo_pad2   [4]byte
  4081  	}
  4082  	Flookaside           Lookaside
  4083  	FxAuth               sqlite3_xauth
  4084  	FpAuthArg            uintptr
  4085  	FxProgress           uintptr
  4086  	FpProgressArg        uintptr
  4087  	FnProgressOps        uint32
  4088  	FnVTrans             int32
  4089  	FaModule             Hash
  4090  	FpVtabCtx            uintptr
  4091  	FaVTrans             uintptr
  4092  	FpDisconnect         uintptr
  4093  	FaFunc               Hash
  4094  	FaCollSeq            Hash
  4095  	FbusyHandler         BusyHandler
  4096  	FaDbStatic           [2]Db
  4097  	FpSavepoint          uintptr
  4098  	FnAnalysisLimit      int32
  4099  	FbusyTimeout         int32
  4100  	FnSavepoint          int32
  4101  	FnStatement          int32
  4102  	FnDeferredCons       i64
  4103  	FnDeferredImmCons    i64
  4104  	FpnBytesFreed        uintptr
  4105  	FpBlockingConnection uintptr
  4106  	FpUnlockConnection   uintptr
  4107  	FpUnlockArg          uintptr
  4108  	FxUnlockNotify       uintptr
  4109  	FpNextBlocked        uintptr
  4110  }
  4111  
  4112  type sqlite_int64 = int64
  4113  type sqlite_uint64 = uint64
  4114  type sqlite3_int64 = sqlite_int64
  4115  type sqlite3_uint64 = sqlite_uint64
  4116  
  4117  type sqlite3_callback = uintptr
  4118  
  4119  type sqlite3_file1 = struct{ FpMethods uintptr }
  4120  
  4121  type sqlite3_file = sqlite3_file1
  4122  type sqlite3_io_methods1 = struct {
  4123  	FiVersion               int32
  4124  	F__ccgo_pad1            [4]byte
  4125  	FxClose                 uintptr
  4126  	FxRead                  uintptr
  4127  	FxWrite                 uintptr
  4128  	FxTruncate              uintptr
  4129  	FxSync                  uintptr
  4130  	FxFileSize              uintptr
  4131  	FxLock                  uintptr
  4132  	FxUnlock                uintptr
  4133  	FxCheckReservedLock     uintptr
  4134  	FxFileControl           uintptr
  4135  	FxSectorSize            uintptr
  4136  	FxDeviceCharacteristics uintptr
  4137  	FxShmMap                uintptr
  4138  	FxShmLock               uintptr
  4139  	FxShmBarrier            uintptr
  4140  	FxShmUnmap              uintptr
  4141  	FxFetch                 uintptr
  4142  	FxUnfetch               uintptr
  4143  }
  4144  
  4145  type sqlite3_io_methods = sqlite3_io_methods1
  4146  
  4147  type sqlite3_mutex1 = struct {
  4148  	FpReal       uintptr
  4149  	FeType       int32
  4150  	F__ccgo_pad1 [4]byte
  4151  }
  4152  
  4153  type sqlite3_api_routines1 = struct {
  4154  	Faggregate_context      uintptr
  4155  	Faggregate_count        uintptr
  4156  	Fbind_blob              uintptr
  4157  	Fbind_double            uintptr
  4158  	Fbind_int               uintptr
  4159  	Fbind_int64             uintptr
  4160  	Fbind_null              uintptr
  4161  	Fbind_parameter_count   uintptr
  4162  	Fbind_parameter_index   uintptr
  4163  	Fbind_parameter_name    uintptr
  4164  	Fbind_text              uintptr
  4165  	Fbind_text16            uintptr
  4166  	Fbind_value             uintptr
  4167  	Fbusy_handler           uintptr
  4168  	Fbusy_timeout           uintptr
  4169  	Fchanges                uintptr
  4170  	Fclose                  uintptr
  4171  	Fcollation_needed       uintptr
  4172  	Fcollation_needed16     uintptr
  4173  	Fcolumn_blob            uintptr
  4174  	Fcolumn_bytes           uintptr
  4175  	Fcolumn_bytes16         uintptr
  4176  	Fcolumn_count           uintptr
  4177  	Fcolumn_database_name   uintptr
  4178  	Fcolumn_database_name16 uintptr
  4179  	Fcolumn_decltype        uintptr
  4180  	Fcolumn_decltype16      uintptr
  4181  	Fcolumn_double          uintptr
  4182  	Fcolumn_int             uintptr
  4183  	Fcolumn_int64           uintptr
  4184  	Fcolumn_name            uintptr
  4185  	Fcolumn_name16          uintptr
  4186  	Fcolumn_origin_name     uintptr
  4187  	Fcolumn_origin_name16   uintptr
  4188  	Fcolumn_table_name      uintptr
  4189  	Fcolumn_table_name16    uintptr
  4190  	Fcolumn_text            uintptr
  4191  	Fcolumn_text16          uintptr
  4192  	Fcolumn_type            uintptr
  4193  	Fcolumn_value           uintptr
  4194  	Fcommit_hook            uintptr
  4195  	Fcomplete               uintptr
  4196  	Fcomplete16             uintptr
  4197  	Fcreate_collation       uintptr
  4198  	Fcreate_collation16     uintptr
  4199  	Fcreate_function        uintptr
  4200  	Fcreate_function16      uintptr
  4201  	Fcreate_module          uintptr
  4202  	Fdata_count             uintptr
  4203  	Fdb_handle              uintptr
  4204  	Fdeclare_vtab           uintptr
  4205  	Fenable_shared_cache    uintptr
  4206  	Ferrcode                uintptr
  4207  	Ferrmsg                 uintptr
  4208  	Ferrmsg16               uintptr
  4209  	Fexec                   uintptr
  4210  	Fexpired                uintptr
  4211  	Ffinalize               uintptr
  4212  	Ffree                   uintptr
  4213  	Ffree_table             uintptr
  4214  	Fget_autocommit         uintptr
  4215  	Fget_auxdata            uintptr
  4216  	Fget_table              uintptr
  4217  	Fglobal_recover         uintptr
  4218  	Finterruptx             uintptr
  4219  	Flast_insert_rowid      uintptr
  4220  	Flibversion             uintptr
  4221  	Flibversion_number      uintptr
  4222  	Fmalloc                 uintptr
  4223  	Fmprintf                uintptr
  4224  	Fopen                   uintptr
  4225  	Fopen16                 uintptr
  4226  	Fprepare                uintptr
  4227  	Fprepare16              uintptr
  4228  	Fprofile                uintptr
  4229  	Fprogress_handler       uintptr
  4230  	Frealloc                uintptr
  4231  	Freset                  uintptr
  4232  	Fresult_blob            uintptr
  4233  	Fresult_double          uintptr
  4234  	Fresult_error           uintptr
  4235  	Fresult_error16         uintptr
  4236  	Fresult_int             uintptr
  4237  	Fresult_int64           uintptr
  4238  	Fresult_null            uintptr
  4239  	Fresult_text            uintptr
  4240  	Fresult_text16          uintptr
  4241  	Fresult_text16be        uintptr
  4242  	Fresult_text16le        uintptr
  4243  	Fresult_value           uintptr
  4244  	Frollback_hook          uintptr
  4245  	Fset_authorizer         uintptr
  4246  	Fset_auxdata            uintptr
  4247  	Fxsnprintf              uintptr
  4248  	Fstep                   uintptr
  4249  	Ftable_column_metadata  uintptr
  4250  	Fthread_cleanup         uintptr
  4251  	Ftotal_changes          uintptr
  4252  	Ftrace                  uintptr
  4253  	Ftransfer_bindings      uintptr
  4254  	Fupdate_hook            uintptr
  4255  	Fuser_data              uintptr
  4256  	Fvalue_blob             uintptr
  4257  	Fvalue_bytes            uintptr
  4258  	Fvalue_bytes16          uintptr
  4259  	Fvalue_double           uintptr
  4260  	Fvalue_int              uintptr
  4261  	Fvalue_int64            uintptr
  4262  	Fvalue_numeric_type     uintptr
  4263  	Fvalue_text             uintptr
  4264  	Fvalue_text16           uintptr
  4265  	Fvalue_text16be         uintptr
  4266  	Fvalue_text16le         uintptr
  4267  	Fvalue_type             uintptr
  4268  	Fvmprintf               uintptr
  4269  	Foverload_function      uintptr
  4270  	Fprepare_v2             uintptr
  4271  	Fprepare16_v2           uintptr
  4272  	Fclear_bindings         uintptr
  4273  	Fcreate_module_v2       uintptr
  4274  	Fbind_zeroblob          uintptr
  4275  	Fblob_bytes             uintptr
  4276  	Fblob_close             uintptr
  4277  	Fblob_open              uintptr
  4278  	Fblob_read              uintptr
  4279  	Fblob_write             uintptr
  4280  	Fcreate_collation_v2    uintptr
  4281  	Ffile_control           uintptr
  4282  	Fmemory_highwater       uintptr
  4283  	Fmemory_used            uintptr
  4284  	Fmutex_alloc            uintptr
  4285  	Fmutex_enter            uintptr
  4286  	Fmutex_free             uintptr
  4287  	Fmutex_leave            uintptr
  4288  	Fmutex_try              uintptr
  4289  	Fopen_v2                uintptr
  4290  	Frelease_memory         uintptr
  4291  	Fresult_error_nomem     uintptr
  4292  	Fresult_error_toobig    uintptr
  4293  	Fsleep                  uintptr
  4294  	Fsoft_heap_limit        uintptr
  4295  	Fvfs_find               uintptr
  4296  	Fvfs_register           uintptr
  4297  	Fvfs_unregister         uintptr
  4298  	Fxthreadsafe            uintptr
  4299  	Fresult_zeroblob        uintptr
  4300  	Fresult_error_code      uintptr
  4301  	Ftest_control           uintptr
  4302  	Frandomness             uintptr
  4303  	Fcontext_db_handle      uintptr
  4304  	Fextended_result_codes  uintptr
  4305  	Flimit                  uintptr
  4306  	Fnext_stmt              uintptr
  4307  	Fsql                    uintptr
  4308  	Fstatus                 uintptr
  4309  	Fbackup_finish          uintptr
  4310  	Fbackup_init            uintptr
  4311  	Fbackup_pagecount       uintptr
  4312  	Fbackup_remaining       uintptr
  4313  	Fbackup_step            uintptr
  4314  	Fcompileoption_get      uintptr
  4315  	Fcompileoption_used     uintptr
  4316  	Fcreate_function_v2     uintptr
  4317  	Fdb_config              uintptr
  4318  	Fdb_mutex               uintptr
  4319  	Fdb_status              uintptr
  4320  	Fextended_errcode       uintptr
  4321  	Flog                    uintptr
  4322  	Fsoft_heap_limit64      uintptr
  4323  	Fsourceid               uintptr
  4324  	Fstmt_status            uintptr
  4325  	Fstrnicmp               uintptr
  4326  	Funlock_notify          uintptr
  4327  	Fwal_autocheckpoint     uintptr
  4328  	Fwal_checkpoint         uintptr
  4329  	Fwal_hook               uintptr
  4330  	Fblob_reopen            uintptr
  4331  	Fvtab_config            uintptr
  4332  	Fvtab_on_conflict       uintptr
  4333  	Fclose_v2               uintptr
  4334  	Fdb_filename            uintptr
  4335  	Fdb_readonly            uintptr
  4336  	Fdb_release_memory      uintptr
  4337  	Ferrstr                 uintptr
  4338  	Fstmt_busy              uintptr
  4339  	Fstmt_readonly          uintptr
  4340  	Fstricmp                uintptr
  4341  	Furi_boolean            uintptr
  4342  	Furi_int64              uintptr
  4343  	Furi_parameter          uintptr
  4344  	Fxvsnprintf             uintptr
  4345  	Fwal_checkpoint_v2      uintptr
  4346  	Fauto_extension         uintptr
  4347  	Fbind_blob64            uintptr
  4348  	Fbind_text64            uintptr
  4349  	Fcancel_auto_extension  uintptr
  4350  	Fload_extension         uintptr
  4351  	Fmalloc64               uintptr
  4352  	Fmsize                  uintptr
  4353  	Frealloc64              uintptr
  4354  	Freset_auto_extension   uintptr
  4355  	Fresult_blob64          uintptr
  4356  	Fresult_text64          uintptr
  4357  	Fstrglob                uintptr
  4358  	Fvalue_dup              uintptr
  4359  	Fvalue_free             uintptr
  4360  	Fresult_zeroblob64      uintptr
  4361  	Fbind_zeroblob64        uintptr
  4362  	Fvalue_subtype          uintptr
  4363  	Fresult_subtype         uintptr
  4364  	Fstatus64               uintptr
  4365  	Fstrlike                uintptr
  4366  	Fdb_cacheflush          uintptr
  4367  	Fsystem_errno           uintptr
  4368  	Ftrace_v2               uintptr
  4369  	Fexpanded_sql           uintptr
  4370  	Fset_last_insert_rowid  uintptr
  4371  	Fprepare_v3             uintptr
  4372  	Fprepare16_v3           uintptr
  4373  	Fbind_pointer           uintptr
  4374  	Fresult_pointer         uintptr
  4375  	Fvalue_pointer          uintptr
  4376  	Fvtab_nochange          uintptr
  4377  	Fvalue_nochange         uintptr
  4378  	Fvtab_collation         uintptr
  4379  	Fkeyword_count          uintptr
  4380  	Fkeyword_name           uintptr
  4381  	Fkeyword_check          uintptr
  4382  	Fstr_new                uintptr
  4383  	Fstr_finish             uintptr
  4384  	Fstr_appendf            uintptr
  4385  	Fstr_vappendf           uintptr
  4386  	Fstr_append             uintptr
  4387  	Fstr_appendall          uintptr
  4388  	Fstr_appendchar         uintptr
  4389  	Fstr_reset              uintptr
  4390  	Fstr_errcode            uintptr
  4391  	Fstr_length             uintptr
  4392  	Fstr_value              uintptr
  4393  	Fcreate_window_function uintptr
  4394  	Fnormalized_sql         uintptr
  4395  	Fstmt_isexplain         uintptr
  4396  	Fvalue_frombind         uintptr
  4397  	Fdrop_modules           uintptr
  4398  	Fhard_heap_limit64      uintptr
  4399  	Furi_key                uintptr
  4400  	Ffilename_database      uintptr
  4401  	Ffilename_journal       uintptr
  4402  	Ffilename_wal           uintptr
  4403  	Fcreate_filename        uintptr
  4404  	Ffree_filename          uintptr
  4405  	Fdatabase_file_object   uintptr
  4406  	Ftxn_state              uintptr
  4407  	Fchanges64              uintptr
  4408  	Ftotal_changes64        uintptr
  4409  	Fautovacuum_pages       uintptr
  4410  	Ferror_offset           uintptr
  4411  	Fvtab_rhs_value         uintptr
  4412  	Fvtab_distinct          uintptr
  4413  	Fvtab_in                uintptr
  4414  	Fvtab_in_first          uintptr
  4415  	Fvtab_in_next           uintptr
  4416  	Fdeserialize            uintptr
  4417  	Fserialize              uintptr
  4418  	Fdb_name                uintptr
  4419  }
  4420  
  4421  type sqlite3_vfs1 = struct {
  4422  	FiVersion          int32
  4423  	FszOsFile          int32
  4424  	FmxPathname        int32
  4425  	F__ccgo_pad1       [4]byte
  4426  	FpNext             uintptr
  4427  	FzName             uintptr
  4428  	FpAppData          uintptr
  4429  	FxOpen             uintptr
  4430  	FxDelete           uintptr
  4431  	FxAccess           uintptr
  4432  	FxFullPathname     uintptr
  4433  	FxDlOpen           uintptr
  4434  	FxDlError          uintptr
  4435  	FxDlSym            uintptr
  4436  	FxDlClose          uintptr
  4437  	FxRandomness       uintptr
  4438  	FxSleep            uintptr
  4439  	FxCurrentTime      uintptr
  4440  	FxGetLastError     uintptr
  4441  	FxCurrentTimeInt64 uintptr
  4442  	FxSetSystemCall    uintptr
  4443  	FxGetSystemCall    uintptr
  4444  	FxNextSystemCall   uintptr
  4445  }
  4446  
  4447  type sqlite3_vfs = sqlite3_vfs1
  4448  type sqlite3_syscall_ptr = uintptr
  4449  
  4450  type sqlite3_mem_methods1 = struct {
  4451  	FxMalloc   uintptr
  4452  	FxFree     uintptr
  4453  	FxRealloc  uintptr
  4454  	FxSize     uintptr
  4455  	FxRoundup  uintptr
  4456  	FxInit     uintptr
  4457  	FxShutdown uintptr
  4458  	FpAppData  uintptr
  4459  }
  4460  
  4461  type sqlite3_mem_methods = sqlite3_mem_methods1
  4462  
  4463  type sqlite3_value1 = struct {
  4464  	Fu        struct{ Fr float64 }
  4465  	Fz        uintptr
  4466  	Fn        int32
  4467  	Fflags    u16
  4468  	Fenc      u8
  4469  	FeSubtype u8
  4470  	Fdb       uintptr
  4471  	FszMalloc int32
  4472  	FuTemp    u32
  4473  	FzMalloc  uintptr
  4474  	FxDel     uintptr
  4475  }
  4476  
  4477  type sqlite3_context1 = struct {
  4478  	FpOut        uintptr
  4479  	FpFunc       uintptr
  4480  	FpMem        uintptr
  4481  	FpVdbe       uintptr
  4482  	FiOp         int32
  4483  	FisError     int32
  4484  	Fenc         u8
  4485  	FskipFlag    u8
  4486  	Fargc        u8
  4487  	F__ccgo_pad1 [5]byte
  4488  	Fargv        [1]uintptr
  4489  }
  4490  
  4491  type sqlite3_destructor_type = uintptr
  4492  
  4493  type sqlite3_vtab1 = struct {
  4494  	FpModule     uintptr
  4495  	FnRef        int32
  4496  	F__ccgo_pad1 [4]byte
  4497  	FzErrMsg     uintptr
  4498  }
  4499  
  4500  type sqlite3_vtab = sqlite3_vtab1
  4501  type sqlite3_index_info1 = struct {
  4502  	FnConstraint      int32
  4503  	F__ccgo_pad1      [4]byte
  4504  	FaConstraint      uintptr
  4505  	FnOrderBy         int32
  4506  	F__ccgo_pad2      [4]byte
  4507  	FaOrderBy         uintptr
  4508  	FaConstraintUsage uintptr
  4509  	FidxNum           int32
  4510  	F__ccgo_pad3      [4]byte
  4511  	FidxStr           uintptr
  4512  	FneedToFreeIdxStr int32
  4513  	ForderByConsumed  int32
  4514  	FestimatedCost    float64
  4515  	FestimatedRows    sqlite3_int64
  4516  	FidxFlags         int32
  4517  	F__ccgo_pad4      [4]byte
  4518  	FcolUsed          sqlite3_uint64
  4519  }
  4520  
  4521  type sqlite3_index_info = sqlite3_index_info1
  4522  type sqlite3_vtab_cursor1 = struct{ FpVtab uintptr }
  4523  
  4524  type sqlite3_vtab_cursor = sqlite3_vtab_cursor1
  4525  type sqlite3_module1 = struct {
  4526  	FiVersion      int32
  4527  	F__ccgo_pad1   [4]byte
  4528  	FxCreate       uintptr
  4529  	FxConnect      uintptr
  4530  	FxBestIndex    uintptr
  4531  	FxDisconnect   uintptr
  4532  	FxDestroy      uintptr
  4533  	FxOpen         uintptr
  4534  	FxClose        uintptr
  4535  	FxFilter       uintptr
  4536  	FxNext         uintptr
  4537  	FxEof          uintptr
  4538  	FxColumn       uintptr
  4539  	FxRowid        uintptr
  4540  	FxUpdate       uintptr
  4541  	FxBegin        uintptr
  4542  	FxSync         uintptr
  4543  	FxCommit       uintptr
  4544  	FxRollback     uintptr
  4545  	FxFindFunction uintptr
  4546  	FxRename       uintptr
  4547  	FxSavepoint    uintptr
  4548  	FxRelease      uintptr
  4549  	FxRollbackTo   uintptr
  4550  	FxShadowName   uintptr
  4551  }
  4552  
  4553  type sqlite3_module = sqlite3_module1
  4554  
  4555  type sqlite3_index_constraint = struct {
  4556  	FiColumn     int32
  4557  	Fop          uint8
  4558  	Fusable      uint8
  4559  	F__ccgo_pad1 [2]byte
  4560  	FiTermOffset int32
  4561  }
  4562  
  4563  type sqlite3_index_orderby = struct {
  4564  	FiColumn     int32
  4565  	Fdesc        uint8
  4566  	F__ccgo_pad1 [3]byte
  4567  }
  4568  
  4569  type sqlite3_index_constraint_usage = struct {
  4570  	FargvIndex   int32
  4571  	Fomit        uint8
  4572  	F__ccgo_pad1 [3]byte
  4573  }
  4574  
  4575  type sqlite3_mutex_methods1 = struct {
  4576  	FxMutexInit    uintptr
  4577  	FxMutexEnd     uintptr
  4578  	FxMutexAlloc   uintptr
  4579  	FxMutexFree    uintptr
  4580  	FxMutexEnter   uintptr
  4581  	FxMutexTry     uintptr
  4582  	FxMutexLeave   uintptr
  4583  	FxMutexHeld    uintptr
  4584  	FxMutexNotheld uintptr
  4585  }
  4586  
  4587  type sqlite3_mutex_methods = sqlite3_mutex_methods1
  4588  
  4589  type sqlite3_str1 = struct {
  4590  	Fdb          uintptr
  4591  	FzText       uintptr
  4592  	FnAlloc      u32
  4593  	FmxAlloc     u32
  4594  	FnChar       u32
  4595  	FaccError    u8
  4596  	FprintfFlags u8
  4597  	F__ccgo_pad1 [2]byte
  4598  }
  4599  
  4600  type sqlite3_pcache_page1 = struct {
  4601  	FpBuf   uintptr
  4602  	FpExtra uintptr
  4603  }
  4604  
  4605  type sqlite3_pcache_page = sqlite3_pcache_page1
  4606  
  4607  type sqlite3_pcache_methods21 = struct {
  4608  	FiVersion    int32
  4609  	F__ccgo_pad1 [4]byte
  4610  	FpArg        uintptr
  4611  	FxInit       uintptr
  4612  	FxShutdown   uintptr
  4613  	FxCreate     uintptr
  4614  	FxCachesize  uintptr
  4615  	FxPagecount  uintptr
  4616  	FxFetch      uintptr
  4617  	FxUnpin      uintptr
  4618  	FxRekey      uintptr
  4619  	FxTruncate   uintptr
  4620  	FxDestroy    uintptr
  4621  	FxShrink     uintptr
  4622  }
  4623  
  4624  type sqlite3_pcache_methods2 = sqlite3_pcache_methods21
  4625  
  4626  type sqlite3_pcache_methods1 = struct {
  4627  	FpArg       uintptr
  4628  	FxInit      uintptr
  4629  	FxShutdown  uintptr
  4630  	FxCreate    uintptr
  4631  	FxCachesize uintptr
  4632  	FxPagecount uintptr
  4633  	FxFetch     uintptr
  4634  	FxUnpin     uintptr
  4635  	FxRekey     uintptr
  4636  	FxTruncate  uintptr
  4637  	FxDestroy   uintptr
  4638  }
  4639  
  4640  type sqlite3_pcache_methods = sqlite3_pcache_methods1
  4641  
  4642  type sqlite3_snapshot1 = struct{ Fhidden [48]uint8 }
  4643  
  4644  type sqlite3_snapshot = sqlite3_snapshot1
  4645  
  4646  type sqlite3_rtree_geometry1 = struct {
  4647  	FpContext    uintptr
  4648  	FnParam      int32
  4649  	F__ccgo_pad1 [4]byte
  4650  	FaParam      uintptr
  4651  	FpUser       uintptr
  4652  	FxDelUser    uintptr
  4653  }
  4654  
  4655  type sqlite3_rtree_geometry = sqlite3_rtree_geometry1
  4656  type sqlite3_rtree_query_info1 = struct {
  4657  	FpContext      uintptr
  4658  	FnParam        int32
  4659  	F__ccgo_pad1   [4]byte
  4660  	FaParam        uintptr
  4661  	FpUser         uintptr
  4662  	FxDelUser      uintptr
  4663  	FaCoord        uintptr
  4664  	FanQueue       uintptr
  4665  	FnCoord        int32
  4666  	FiLevel        int32
  4667  	FmxLevel       int32
  4668  	F__ccgo_pad2   [4]byte
  4669  	FiRowid        sqlite3_int64
  4670  	FrParentScore  sqlite3_rtree_dbl
  4671  	FeParentWithin int32
  4672  	FeWithin       int32
  4673  	FrScore        sqlite3_rtree_dbl
  4674  	FapSqlParam    uintptr
  4675  }
  4676  
  4677  type sqlite3_rtree_query_info = sqlite3_rtree_query_info1
  4678  
  4679  type sqlite3_rtree_dbl = float64
  4680  
  4681  type Fts5ExtensionApi1 = struct {
  4682  	FiVersion           int32
  4683  	F__ccgo_pad1        [4]byte
  4684  	FxUserData          uintptr
  4685  	FxColumnCount       uintptr
  4686  	FxRowCount          uintptr
  4687  	FxColumnTotalSize   uintptr
  4688  	FxTokenize          uintptr
  4689  	FxPhraseCount       uintptr
  4690  	FxPhraseSize        uintptr
  4691  	FxInstCount         uintptr
  4692  	FxInst              uintptr
  4693  	FxRowid             uintptr
  4694  	FxColumnText        uintptr
  4695  	FxColumnSize        uintptr
  4696  	FxQueryPhrase       uintptr
  4697  	FxSetAuxdata        uintptr
  4698  	FxGetAuxdata        uintptr
  4699  	FxPhraseFirst       uintptr
  4700  	FxPhraseNext        uintptr
  4701  	FxPhraseFirstColumn uintptr
  4702  	FxPhraseNextColumn  uintptr
  4703  }
  4704  
  4705  type Fts5ExtensionApi = Fts5ExtensionApi1
  4706  type Fts5PhraseIter1 = struct {
  4707  	Fa uintptr
  4708  	Fb uintptr
  4709  }
  4710  
  4711  type Fts5PhraseIter = Fts5PhraseIter1
  4712  
  4713  type fts5_extension_function = uintptr
  4714  type fts5_tokenizer1 = struct {
  4715  	FxCreate   uintptr
  4716  	FxDelete   uintptr
  4717  	FxTokenize uintptr
  4718  }
  4719  
  4720  type fts5_tokenizer = fts5_tokenizer1
  4721  
  4722  type fts5_api1 = struct {
  4723  	FiVersion         int32
  4724  	F__ccgo_pad1      [4]byte
  4725  	FxCreateTokenizer uintptr
  4726  	FxFindTokenizer   uintptr
  4727  	FxCreateFunction  uintptr
  4728  }
  4729  
  4730  type fts5_api = fts5_api1
  4731  
  4732  type sqlite3expert1 = struct {
  4733  	FiSample     int32
  4734  	F__ccgo_pad1 [4]byte
  4735  	Fdb          uintptr
  4736  	Fdbm         uintptr
  4737  	Fdbv         uintptr
  4738  	FpTable      uintptr
  4739  	FpScan       uintptr
  4740  	FpWrite      uintptr
  4741  	FpStatement  uintptr
  4742  	FbRun        int32
  4743  	F__ccgo_pad2 [4]byte
  4744  	FpzErrmsg    uintptr
  4745  	Frc          int32
  4746  	F__ccgo_pad3 [4]byte
  4747  	FhIdx        IdxHash
  4748  	FzCandidates uintptr
  4749  }
  4750  
  4751  type sqlite3expert = sqlite3expert1
  4752  
  4753  type __darwin_pthread_handler_rec = struct {
  4754  	F__routine uintptr
  4755  	F__arg     uintptr
  4756  	F__next    uintptr
  4757  }
  4758  
  4759  type _opaque_pthread_attr_t = struct {
  4760  	F__sig    int64
  4761  	F__opaque [56]int8
  4762  }
  4763  
  4764  type _opaque_pthread_cond_t = struct {
  4765  	F__sig    int64
  4766  	F__opaque [40]int8
  4767  }
  4768  
  4769  type _opaque_pthread_condattr_t = struct {
  4770  	F__sig    int64
  4771  	F__opaque [8]int8
  4772  }
  4773  
  4774  type _opaque_pthread_mutex_t = struct {
  4775  	F__sig    int64
  4776  	F__opaque [56]int8
  4777  }
  4778  
  4779  type _opaque_pthread_mutexattr_t = struct {
  4780  	F__sig    int64
  4781  	F__opaque [8]int8
  4782  }
  4783  
  4784  type _opaque_pthread_once_t = struct {
  4785  	F__sig    int64
  4786  	F__opaque [8]int8
  4787  }
  4788  
  4789  type _opaque_pthread_rwlock_t = struct {
  4790  	F__sig    int64
  4791  	F__opaque [192]int8
  4792  }
  4793  
  4794  type _opaque_pthread_rwlockattr_t = struct {
  4795  	F__sig    int64
  4796  	F__opaque [16]int8
  4797  }
  4798  
  4799  type _opaque_pthread_t = struct {
  4800  	F__sig           int64
  4801  	F__cleanup_stack uintptr
  4802  	F__opaque        [8176]int8
  4803  }
  4804  
  4805  type int8_t = int8
  4806  
  4807  type int16_t = int16
  4808  
  4809  type int32_t = int32
  4810  
  4811  type int64_t = int64
  4812  
  4813  type u_int8_t = uint8
  4814  
  4815  type u_int16_t = uint16
  4816  
  4817  type u_int32_t = uint32
  4818  
  4819  type u_int64_t = uint64
  4820  
  4821  type register_t = int64_t
  4822  
  4823  type intptr_t = int64
  4824  
  4825  type uintptr_t = uint64
  4826  
  4827  type user_addr_t = u_int64_t
  4828  type user_size_t = u_int64_t
  4829  type user_ssize_t = int64_t
  4830  type user_long_t = int64_t
  4831  type user_ulong_t = u_int64_t
  4832  type user_time_t = int64_t
  4833  type user_off_t = int64_t
  4834  
  4835  type syscall_arg_t = u_int64_t
  4836  
  4837  type rsize_t = uint64
  4838  
  4839  type errno_t = int32
  4840  
  4841  type ssize_t = int64
  4842  
  4843  type fpos_t = int64
  4844  
  4845  type __sbuf = struct {
  4846  	F_base       uintptr
  4847  	F_size       int32
  4848  	F__ccgo_pad1 [4]byte
  4849  }
  4850  
  4851  type __sFILE = struct {
  4852  	F_p          uintptr
  4853  	F_r          int32
  4854  	F_w          int32
  4855  	F_flags      int16
  4856  	F_file       int16
  4857  	F__ccgo_pad1 [4]byte
  4858  	F_bf         struct {
  4859  		F_base       uintptr
  4860  		F_size       int32
  4861  		F__ccgo_pad1 [4]byte
  4862  	}
  4863  	F_lbfsize    int32
  4864  	F__ccgo_pad2 [4]byte
  4865  	F_cookie     uintptr
  4866  	F_close      uintptr
  4867  	F_read       uintptr
  4868  	F_seek       uintptr
  4869  	F_write      uintptr
  4870  	F_ub         struct {
  4871  		F_base       uintptr
  4872  		F_size       int32
  4873  		F__ccgo_pad1 [4]byte
  4874  	}
  4875  	F_extra uintptr
  4876  	F_ur    int32
  4877  	F_ubuf  [3]uint8
  4878  	F_nbuf  [1]uint8
  4879  	F_lb    struct {
  4880  		F_base       uintptr
  4881  		F_size       int32
  4882  		F__ccgo_pad1 [4]byte
  4883  	}
  4884  	F_blksize    int32
  4885  	F__ccgo_pad3 [4]byte
  4886  	F_offset     fpos_t
  4887  }
  4888  
  4889  type FILE = __sFILE
  4890  
  4891  type off_t = int64
  4892  
  4893  type i64 = sqlite3_int64
  4894  type u64 = sqlite3_uint64
  4895  
  4896  type IdxColumn1 = struct {
  4897  	FzName       uintptr
  4898  	FzColl       uintptr
  4899  	FiPk         int32
  4900  	F__ccgo_pad1 [4]byte
  4901  }
  4902  
  4903  type IdxColumn = IdxColumn1
  4904  type IdxConstraint1 = struct {
  4905  	FzColl  uintptr
  4906  	FbRange int32
  4907  	FiCol   int32
  4908  	FbFlag  int32
  4909  	FbDesc  int32
  4910  	FpNext  uintptr
  4911  	FpLink  uintptr
  4912  }
  4913  
  4914  type IdxConstraint = IdxConstraint1
  4915  type IdxScan1 = struct {
  4916  	FpTab        uintptr
  4917  	FiDb         int32
  4918  	F__ccgo_pad1 [4]byte
  4919  	Fcovering    i64
  4920  	FpOrder      uintptr
  4921  	FpEq         uintptr
  4922  	FpRange      uintptr
  4923  	FpNextScan   uintptr
  4924  }
  4925  
  4926  type IdxScan = IdxScan1
  4927  type IdxStatement1 = struct {
  4928  	FiId         int32
  4929  	F__ccgo_pad1 [4]byte
  4930  	FzSql        uintptr
  4931  	FzIdx        uintptr
  4932  	FzEQP        uintptr
  4933  	FpNext       uintptr
  4934  }
  4935  
  4936  type IdxStatement = IdxStatement1
  4937  type IdxTable1 = struct {
  4938  	FnCol        int32
  4939  	F__ccgo_pad1 [4]byte
  4940  	FzName       uintptr
  4941  	FaCol        uintptr
  4942  	FpNext       uintptr
  4943  }
  4944  
  4945  type IdxTable = IdxTable1
  4946  type IdxWrite1 = struct {
  4947  	FpTab        uintptr
  4948  	FeOp         int32
  4949  	F__ccgo_pad1 [4]byte
  4950  	FpNext       uintptr
  4951  }
  4952  
  4953  type IdxWrite = IdxWrite1
  4954  
  4955  type IdxHashEntry1 = struct {
  4956  	FzKey      uintptr
  4957  	FzVal      uintptr
  4958  	FzVal2     uintptr
  4959  	FpHashNext uintptr
  4960  	FpNext     uintptr
  4961  }
  4962  
  4963  type IdxHashEntry = IdxHashEntry1
  4964  type IdxHash1 = struct {
  4965  	FpFirst uintptr
  4966  	FaHash  [1023]uintptr
  4967  }
  4968  
  4969  type IdxHash = IdxHash1
  4970  
  4971  func idxMalloc(tls *libc.TLS, pRc uintptr, nByte int32) uintptr {
  4972  	var pRet uintptr
  4973  
  4974  	pRet = sqlite3.Xsqlite3_malloc(tls, nByte)
  4975  	if pRet != 0 {
  4976  		libc.X__builtin___memset_chk(tls, pRet, 0, uint64(nByte), libc.X__builtin_object_size(tls, pRet, 0))
  4977  	} else {
  4978  		*(*int32)(unsafe.Pointer(pRc)) = SQLITE_NOMEM
  4979  	}
  4980  	return pRet
  4981  }
  4982  
  4983  func idxHashInit(tls *libc.TLS, pHash uintptr) {
  4984  	libc.X__builtin___memset_chk(tls, pHash, 0, uint64(unsafe.Sizeof(IdxHash{})), libc.X__builtin_object_size(tls, pHash, 0))
  4985  }
  4986  
  4987  func idxHashClear(tls *libc.TLS, pHash uintptr) {
  4988  	var i int32
  4989  	for i = 0; i < IDX_HASH_SIZE; i++ {
  4990  		var pEntry uintptr
  4991  		var pNext uintptr
  4992  		for pEntry = *(*uintptr)(unsafe.Pointer(pHash + 8 + uintptr(i)*8)); pEntry != 0; pEntry = pNext {
  4993  			pNext = (*IdxHashEntry)(unsafe.Pointer(pEntry)).FpHashNext
  4994  			sqlite3.Xsqlite3_free(tls, (*IdxHashEntry)(unsafe.Pointer(pEntry)).FzVal2)
  4995  			sqlite3.Xsqlite3_free(tls, pEntry)
  4996  		}
  4997  	}
  4998  	libc.X__builtin___memset_chk(tls, pHash, 0, uint64(unsafe.Sizeof(IdxHash{})), libc.X__builtin_object_size(tls, pHash, 0))
  4999  }
  5000  
  5001  func idxHashString(tls *libc.TLS, z uintptr, n int32) int32 {
  5002  	var ret uint32 = uint32(0)
  5003  	var i int32
  5004  	for i = 0; i < n; i++ {
  5005  		ret = ret + (ret<<3 + uint32(uint8(*(*int8)(unsafe.Pointer(z + uintptr(i))))))
  5006  	}
  5007  	return int32(ret % uint32(IDX_HASH_SIZE))
  5008  }
  5009  
  5010  func idxHashAdd(tls *libc.TLS, pRc uintptr, pHash uintptr, zKey uintptr, zVal uintptr) int32 {
  5011  	var nKey int32 = int32(libc.Xstrlen(tls, zKey))
  5012  	var iHash int32 = idxHashString(tls, zKey, nKey)
  5013  	var nVal int32 = func() int32 {
  5014  		if zVal != 0 {
  5015  			return int32(libc.Xstrlen(tls, zVal))
  5016  		}
  5017  		return 0
  5018  	}()
  5019  	var pEntry uintptr
  5020  
  5021  	for pEntry = *(*uintptr)(unsafe.Pointer(pHash + 8 + uintptr(iHash)*8)); pEntry != 0; pEntry = (*IdxHashEntry)(unsafe.Pointer(pEntry)).FpHashNext {
  5022  		if int32(libc.Xstrlen(tls, (*IdxHashEntry)(unsafe.Pointer(pEntry)).FzKey)) == nKey && 0 == libc.Xmemcmp(tls, (*IdxHashEntry)(unsafe.Pointer(pEntry)).FzKey, zKey, uint64(nKey)) {
  5023  			return 1
  5024  		}
  5025  	}
  5026  	pEntry = idxMalloc(tls, pRc, int32(uint64(unsafe.Sizeof(IdxHashEntry{}))+uint64(nKey)+uint64(1)+uint64(nVal)+uint64(1)))
  5027  	if pEntry != 0 {
  5028  		(*IdxHashEntry)(unsafe.Pointer(pEntry)).FzKey = pEntry + 1*40
  5029  		libc.X__builtin___memcpy_chk(tls, (*IdxHashEntry)(unsafe.Pointer(pEntry)).FzKey, zKey, uint64(nKey), libc.X__builtin_object_size(tls, (*IdxHashEntry)(unsafe.Pointer(pEntry)).FzKey, 0))
  5030  		if zVal != 0 {
  5031  			(*IdxHashEntry)(unsafe.Pointer(pEntry)).FzVal = (*IdxHashEntry)(unsafe.Pointer(pEntry)).FzKey + uintptr(nKey+1)
  5032  			libc.X__builtin___memcpy_chk(tls, (*IdxHashEntry)(unsafe.Pointer(pEntry)).FzVal, zVal, uint64(nVal), libc.X__builtin_object_size(tls, (*IdxHashEntry)(unsafe.Pointer(pEntry)).FzVal, 0))
  5033  		}
  5034  		(*IdxHashEntry)(unsafe.Pointer(pEntry)).FpHashNext = *(*uintptr)(unsafe.Pointer(pHash + 8 + uintptr(iHash)*8))
  5035  		*(*uintptr)(unsafe.Pointer(pHash + 8 + uintptr(iHash)*8)) = pEntry
  5036  
  5037  		(*IdxHashEntry)(unsafe.Pointer(pEntry)).FpNext = (*IdxHash)(unsafe.Pointer(pHash)).FpFirst
  5038  		(*IdxHash)(unsafe.Pointer(pHash)).FpFirst = pEntry
  5039  	}
  5040  	return 0
  5041  }
  5042  
  5043  func idxHashFind(tls *libc.TLS, pHash uintptr, zKey uintptr, nKey int32) uintptr {
  5044  	var iHash int32
  5045  	var pEntry uintptr
  5046  	if nKey < 0 {
  5047  		nKey = int32(libc.Xstrlen(tls, zKey))
  5048  	}
  5049  	iHash = idxHashString(tls, zKey, nKey)
  5050  
  5051  	for pEntry = *(*uintptr)(unsafe.Pointer(pHash + 8 + uintptr(iHash)*8)); pEntry != 0; pEntry = (*IdxHashEntry)(unsafe.Pointer(pEntry)).FpHashNext {
  5052  		if int32(libc.Xstrlen(tls, (*IdxHashEntry)(unsafe.Pointer(pEntry)).FzKey)) == nKey && 0 == libc.Xmemcmp(tls, (*IdxHashEntry)(unsafe.Pointer(pEntry)).FzKey, zKey, uint64(nKey)) {
  5053  			return pEntry
  5054  		}
  5055  	}
  5056  	return uintptr(0)
  5057  }
  5058  
  5059  func idxHashSearch(tls *libc.TLS, pHash uintptr, zKey uintptr, nKey int32) uintptr {
  5060  	var pEntry uintptr = idxHashFind(tls, pHash, zKey, nKey)
  5061  	if pEntry != 0 {
  5062  		return (*IdxHashEntry)(unsafe.Pointer(pEntry)).FzVal
  5063  	}
  5064  	return uintptr(0)
  5065  }
  5066  
  5067  func idxNewConstraint(tls *libc.TLS, pRc uintptr, zColl uintptr) uintptr {
  5068  	var pNew uintptr
  5069  	var nColl int32 = int32(libc.Xstrlen(tls, zColl))
  5070  
  5071  	pNew = idxMalloc(tls, pRc, int32(uint64(unsafe.Sizeof(IdxConstraint{}))*uint64(nColl)+uint64(1)))
  5072  	if pNew != 0 {
  5073  		(*IdxConstraint)(unsafe.Pointer(pNew)).FzColl = pNew + 1*40
  5074  		libc.X__builtin___memcpy_chk(tls, (*IdxConstraint)(unsafe.Pointer(pNew)).FzColl, zColl, uint64(nColl+1), libc.X__builtin_object_size(tls, (*IdxConstraint)(unsafe.Pointer(pNew)).FzColl, 0))
  5075  	}
  5076  	return pNew
  5077  }
  5078  
  5079  func idxDatabaseError(tls *libc.TLS, db uintptr, pzErrmsg uintptr) {
  5080  	bp := tls.Alloc(8)
  5081  	defer tls.Free(8)
  5082  
  5083  	*(*uintptr)(unsafe.Pointer(pzErrmsg)) = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp, sqlite3.Xsqlite3_errmsg(tls, db)))
  5084  }
  5085  
  5086  func idxPrepareStmt(tls *libc.TLS, db uintptr, ppStmt uintptr, pzErrmsg uintptr, zSql uintptr) int32 {
  5087  	var rc int32 = sqlite3.Xsqlite3_prepare_v2(tls, db, zSql, -1, ppStmt, uintptr(0))
  5088  	if rc != SQLITE_OK {
  5089  		*(*uintptr)(unsafe.Pointer(ppStmt)) = uintptr(0)
  5090  		idxDatabaseError(tls, db, pzErrmsg)
  5091  	}
  5092  	return rc
  5093  }
  5094  
  5095  func idxPrintfPrepareStmt(tls *libc.TLS, db uintptr, ppStmt uintptr, pzErrmsg uintptr, zFmt uintptr, va uintptr) int32 {
  5096  	var ap va_list
  5097  	_ = ap
  5098  	var rc int32
  5099  	var zSql uintptr
  5100  	ap = va
  5101  	zSql = sqlite3.Xsqlite3_vmprintf(tls, zFmt, ap)
  5102  	if zSql == uintptr(0) {
  5103  		rc = SQLITE_NOMEM
  5104  	} else {
  5105  		rc = idxPrepareStmt(tls, db, ppStmt, pzErrmsg, zSql)
  5106  		sqlite3.Xsqlite3_free(tls, zSql)
  5107  	}
  5108  	_ = ap
  5109  	return rc
  5110  }
  5111  
  5112  type ExpertVtab1 = struct {
  5113  	Fbase    sqlite3_vtab
  5114  	FpTab    uintptr
  5115  	FpExpert uintptr
  5116  }
  5117  
  5118  type ExpertVtab = ExpertVtab1
  5119  
  5120  type ExpertCsr1 = struct {
  5121  	Fbase  sqlite3_vtab_cursor
  5122  	FpData uintptr
  5123  }
  5124  
  5125  type ExpertCsr = ExpertCsr1
  5126  
  5127  func expertDequote(tls *libc.TLS, zIn uintptr) uintptr {
  5128  	var n int32 = int32(libc.Xstrlen(tls, zIn))
  5129  	var zRet uintptr = sqlite3.Xsqlite3_malloc(tls, n)
  5130  
  5131  	if zRet != 0 {
  5132  		var iOut int32 = 0
  5133  		var iIn int32 = 0
  5134  		for iIn = 1; iIn < n-1; iIn++ {
  5135  			if int32(*(*int8)(unsafe.Pointer(zIn + uintptr(iIn)))) == '\'' {
  5136  				iIn++
  5137  			}
  5138  			*(*int8)(unsafe.Pointer(zRet + uintptr(libc.PostIncInt32(&iOut, 1)))) = *(*int8)(unsafe.Pointer(zIn + uintptr(iIn)))
  5139  		}
  5140  		*(*int8)(unsafe.Pointer(zRet + uintptr(iOut))) = int8(0)
  5141  	}
  5142  
  5143  	return zRet
  5144  }
  5145  
  5146  func expertConnect(tls *libc.TLS, db uintptr, pAux uintptr, argc int32, argv uintptr, ppVtab uintptr, pzErr uintptr) int32 {
  5147  	bp := tls.Alloc(4)
  5148  	defer tls.Free(4)
  5149  
  5150  	var pExpert uintptr = pAux
  5151  	var p uintptr = uintptr(0)
  5152  
  5153  	if argc != 4 {
  5154  		*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+3, 0)
  5155  		*(*int32)(unsafe.Pointer(bp)) = SQLITE_ERROR
  5156  	} else {
  5157  		var zCreateTable uintptr = expertDequote(tls, *(*uintptr)(unsafe.Pointer(argv + 3*8)))
  5158  		if zCreateTable != 0 {
  5159  			*(*int32)(unsafe.Pointer(bp)) = sqlite3.Xsqlite3_declare_vtab(tls, db, zCreateTable)
  5160  			if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK {
  5161  				p = idxMalloc(tls, bp, int32(unsafe.Sizeof(ExpertVtab{})))
  5162  			}
  5163  			if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK {
  5164  				(*ExpertVtab)(unsafe.Pointer(p)).FpExpert = pExpert
  5165  				(*ExpertVtab)(unsafe.Pointer(p)).FpTab = (*sqlite3expert)(unsafe.Pointer(pExpert)).FpTable
  5166  
  5167  			}
  5168  			sqlite3.Xsqlite3_free(tls, zCreateTable)
  5169  		} else {
  5170  			*(*int32)(unsafe.Pointer(bp)) = SQLITE_NOMEM
  5171  		}
  5172  	}
  5173  
  5174  	*(*uintptr)(unsafe.Pointer(ppVtab)) = p
  5175  	return *(*int32)(unsafe.Pointer(bp))
  5176  }
  5177  
  5178  func expertDisconnect(tls *libc.TLS, pVtab uintptr) int32 {
  5179  	var p uintptr = pVtab
  5180  	sqlite3.Xsqlite3_free(tls, p)
  5181  	return SQLITE_OK
  5182  }
  5183  
  5184  func expertBestIndex(tls *libc.TLS, pVtab uintptr, pIdxInfo uintptr) int32 {
  5185  	bp := tls.Alloc(4)
  5186  	defer tls.Free(4)
  5187  
  5188  	var p uintptr = pVtab
  5189  	*(*int32)(unsafe.Pointer(bp)) = SQLITE_OK
  5190  	var n int32 = 0
  5191  	var pScan uintptr
  5192  	var opmask int32 = SQLITE_INDEX_CONSTRAINT_EQ | SQLITE_INDEX_CONSTRAINT_GT | SQLITE_INDEX_CONSTRAINT_LT | SQLITE_INDEX_CONSTRAINT_GE | SQLITE_INDEX_CONSTRAINT_LE
  5193  
  5194  	pScan = idxMalloc(tls, bp, int32(unsafe.Sizeof(IdxScan{})))
  5195  	if pScan != 0 {
  5196  		var i int32
  5197  
  5198  		(*IdxScan)(unsafe.Pointer(pScan)).FpTab = (*ExpertVtab)(unsafe.Pointer(p)).FpTab
  5199  		(*IdxScan)(unsafe.Pointer(pScan)).FpNextScan = (*sqlite3expert)(unsafe.Pointer((*ExpertVtab)(unsafe.Pointer(p)).FpExpert)).FpScan
  5200  		(*sqlite3expert)(unsafe.Pointer((*ExpertVtab)(unsafe.Pointer(p)).FpExpert)).FpScan = pScan
  5201  
  5202  		for i = 0; i < (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnConstraint; i++ {
  5203  			var pCons uintptr = (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint + uintptr(i)*12
  5204  			if (*sqlite3_index_constraint)(unsafe.Pointer(pCons)).Fusable != 0 &&
  5205  				(*sqlite3_index_constraint)(unsafe.Pointer(pCons)).FiColumn >= 0 &&
  5206  				(*IdxColumn)(unsafe.Pointer((*IdxTable)(unsafe.Pointer((*ExpertVtab)(unsafe.Pointer(p)).FpTab)).FaCol+uintptr((*sqlite3_index_constraint)(unsafe.Pointer(pCons)).FiColumn)*24)).FiPk == 0 &&
  5207  				int32((*sqlite3_index_constraint)(unsafe.Pointer(pCons)).Fop)&opmask != 0 {
  5208  				var pNew uintptr
  5209  				var zColl uintptr = sqlite3.Xsqlite3_vtab_collation(tls, pIdxInfo, i)
  5210  				pNew = idxNewConstraint(tls, bp, zColl)
  5211  				if pNew != 0 {
  5212  					(*IdxConstraint)(unsafe.Pointer(pNew)).FiCol = (*sqlite3_index_constraint)(unsafe.Pointer(pCons)).FiColumn
  5213  					if int32((*sqlite3_index_constraint)(unsafe.Pointer(pCons)).Fop) == SQLITE_INDEX_CONSTRAINT_EQ {
  5214  						(*IdxConstraint)(unsafe.Pointer(pNew)).FpNext = (*IdxScan)(unsafe.Pointer(pScan)).FpEq
  5215  						(*IdxScan)(unsafe.Pointer(pScan)).FpEq = pNew
  5216  					} else {
  5217  						(*IdxConstraint)(unsafe.Pointer(pNew)).FbRange = 1
  5218  						(*IdxConstraint)(unsafe.Pointer(pNew)).FpNext = (*IdxScan)(unsafe.Pointer(pScan)).FpRange
  5219  						(*IdxScan)(unsafe.Pointer(pScan)).FpRange = pNew
  5220  					}
  5221  				}
  5222  				n++
  5223  				(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(i)*8)).FargvIndex = n
  5224  			}
  5225  		}
  5226  
  5227  		for i = (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnOrderBy - 1; i >= 0; i-- {
  5228  			var iCol int32 = (*sqlite3_index_orderby)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaOrderBy + uintptr(i)*8)).FiColumn
  5229  			if iCol >= 0 {
  5230  				var pNew uintptr = idxNewConstraint(tls, bp, (*IdxColumn)(unsafe.Pointer((*IdxTable)(unsafe.Pointer((*ExpertVtab)(unsafe.Pointer(p)).FpTab)).FaCol+uintptr(iCol)*24)).FzColl)
  5231  				if pNew != 0 {
  5232  					(*IdxConstraint)(unsafe.Pointer(pNew)).FiCol = iCol
  5233  					(*IdxConstraint)(unsafe.Pointer(pNew)).FbDesc = int32((*sqlite3_index_orderby)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaOrderBy + uintptr(i)*8)).Fdesc)
  5234  					(*IdxConstraint)(unsafe.Pointer(pNew)).FpNext = (*IdxScan)(unsafe.Pointer(pScan)).FpOrder
  5235  					(*IdxConstraint)(unsafe.Pointer(pNew)).FpLink = (*IdxScan)(unsafe.Pointer(pScan)).FpOrder
  5236  					(*IdxScan)(unsafe.Pointer(pScan)).FpOrder = pNew
  5237  					n++
  5238  				}
  5239  			}
  5240  		}
  5241  	}
  5242  
  5243  	(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = 1000000.0 / float64(n+1)
  5244  	return *(*int32)(unsafe.Pointer(bp))
  5245  }
  5246  
  5247  func expertUpdate(tls *libc.TLS, pVtab uintptr, nData int32, azData uintptr, pRowid uintptr) int32 {
  5248  	_ = pVtab
  5249  	_ = nData
  5250  	_ = azData
  5251  	_ = pRowid
  5252  	return SQLITE_OK
  5253  }
  5254  
  5255  func expertOpen(tls *libc.TLS, pVTab uintptr, ppCursor uintptr) int32 {
  5256  	bp := tls.Alloc(4)
  5257  	defer tls.Free(4)
  5258  
  5259  	*(*int32)(unsafe.Pointer(bp)) = SQLITE_OK
  5260  	var pCsr uintptr
  5261  	_ = pVTab
  5262  	pCsr = idxMalloc(tls, bp, int32(unsafe.Sizeof(ExpertCsr{})))
  5263  	*(*uintptr)(unsafe.Pointer(ppCursor)) = pCsr
  5264  	return *(*int32)(unsafe.Pointer(bp))
  5265  }
  5266  
  5267  func expertClose(tls *libc.TLS, cur uintptr) int32 {
  5268  	var pCsr uintptr = cur
  5269  	sqlite3.Xsqlite3_finalize(tls, (*ExpertCsr)(unsafe.Pointer(pCsr)).FpData)
  5270  	sqlite3.Xsqlite3_free(tls, pCsr)
  5271  	return SQLITE_OK
  5272  }
  5273  
  5274  func expertEof(tls *libc.TLS, cur uintptr) int32 {
  5275  	var pCsr uintptr = cur
  5276  	return libc.Bool32((*ExpertCsr)(unsafe.Pointer(pCsr)).FpData == uintptr(0))
  5277  }
  5278  
  5279  func expertNext(tls *libc.TLS, cur uintptr) int32 {
  5280  	var pCsr uintptr = cur
  5281  	var rc int32 = SQLITE_OK
  5282  
  5283  	rc = sqlite3.Xsqlite3_step(tls, (*ExpertCsr)(unsafe.Pointer(pCsr)).FpData)
  5284  	if rc != SQLITE_ROW {
  5285  		rc = sqlite3.Xsqlite3_finalize(tls, (*ExpertCsr)(unsafe.Pointer(pCsr)).FpData)
  5286  		(*ExpertCsr)(unsafe.Pointer(pCsr)).FpData = uintptr(0)
  5287  	} else {
  5288  		rc = SQLITE_OK
  5289  	}
  5290  
  5291  	return rc
  5292  }
  5293  
  5294  func expertRowid(tls *libc.TLS, cur uintptr, pRowid uintptr) int32 {
  5295  	_ = cur
  5296  	*(*sqlite_int64)(unsafe.Pointer(pRowid)) = int64(0)
  5297  	return SQLITE_OK
  5298  }
  5299  
  5300  func expertColumn(tls *libc.TLS, cur uintptr, ctx uintptr, i int32) int32 {
  5301  	var pCsr uintptr = cur
  5302  	var pVal uintptr
  5303  	pVal = sqlite3.Xsqlite3_column_value(tls, (*ExpertCsr)(unsafe.Pointer(pCsr)).FpData, i)
  5304  	if pVal != 0 {
  5305  		sqlite3.Xsqlite3_result_value(tls, ctx, pVal)
  5306  	}
  5307  	return SQLITE_OK
  5308  }
  5309  
  5310  func expertFilter(tls *libc.TLS, cur uintptr, idxNum int32, idxStr uintptr, argc int32, argv uintptr) int32 {
  5311  	bp := tls.Alloc(8)
  5312  	defer tls.Free(8)
  5313  
  5314  	var pCsr uintptr = cur
  5315  	var pVtab uintptr = (*sqlite3_vtab_cursor)(unsafe.Pointer(cur)).FpVtab
  5316  	var pExpert uintptr = (*ExpertVtab)(unsafe.Pointer(pVtab)).FpExpert
  5317  	var rc int32
  5318  
  5319  	_ = idxNum
  5320  	_ = idxStr
  5321  	_ = argc
  5322  	_ = argv
  5323  	rc = sqlite3.Xsqlite3_finalize(tls, (*ExpertCsr)(unsafe.Pointer(pCsr)).FpData)
  5324  	(*ExpertCsr)(unsafe.Pointer(pCsr)).FpData = uintptr(0)
  5325  	if rc == SQLITE_OK {
  5326  		rc = idxPrintfPrepareStmt(tls, (*sqlite3expert)(unsafe.Pointer(pExpert)).Fdb, pCsr+8, pVtab+16,
  5327  			ts+19, libc.VaList(bp, (*IdxTable)(unsafe.Pointer((*ExpertVtab)(unsafe.Pointer(pVtab)).FpTab)).FzName))
  5328  	}
  5329  
  5330  	if rc == SQLITE_OK {
  5331  		rc = expertNext(tls, cur)
  5332  	}
  5333  	return rc
  5334  }
  5335  
  5336  func idxRegisterVtab(tls *libc.TLS, p uintptr) int32 {
  5337  	return sqlite3.Xsqlite3_create_module(tls, (*sqlite3expert)(unsafe.Pointer(p)).Fdbv, ts+56, uintptr(unsafe.Pointer(&expertModule)), p)
  5338  }
  5339  
  5340  var expertModule = sqlite3_module{
  5341  	FiVersion:    2,
  5342  	FxCreate:     0,
  5343  	FxConnect:    0,
  5344  	FxBestIndex:  0,
  5345  	FxDisconnect: 0,
  5346  	FxDestroy:    0,
  5347  	FxOpen:       0,
  5348  	FxClose:      0,
  5349  	FxFilter:     0,
  5350  	FxNext:       0,
  5351  	FxEof:        0,
  5352  	FxColumn:     0,
  5353  	FxRowid:      0,
  5354  	FxUpdate:     0,
  5355  }
  5356  
  5357  func idxFinalize(tls *libc.TLS, pRc uintptr, pStmt uintptr) {
  5358  	var rc int32 = sqlite3.Xsqlite3_finalize(tls, pStmt)
  5359  	if *(*int32)(unsafe.Pointer(pRc)) == SQLITE_OK {
  5360  		*(*int32)(unsafe.Pointer(pRc)) = rc
  5361  	}
  5362  }
  5363  
  5364  func idxGetTableInfo(tls *libc.TLS, db uintptr, zTab uintptr, ppOut uintptr, pzErrmsg uintptr) int32 {
  5365  	bp := tls.Alloc(40)
  5366  	defer tls.Free(40)
  5367  
  5368  	*(*uintptr)(unsafe.Pointer(bp + 8)) = uintptr(0)
  5369  	var nCol int32 = 0
  5370  	var nTab int32
  5371  	var nByte int32
  5372  	var pNew uintptr = uintptr(0)
  5373  
  5374  	var rc2 int32
  5375  	var pCsr uintptr = uintptr(0)
  5376  	var nPk int32 = 0
  5377  
  5378  	*(*uintptr)(unsafe.Pointer(ppOut)) = uintptr(0)
  5379  	if zTab == uintptr(0) {
  5380  		return SQLITE_ERROR
  5381  	}
  5382  	nTab = int32(libc.Xstrlen(tls, zTab))
  5383  	nByte = int32(uint64(unsafe.Sizeof(IdxTable{})) + uint64(nTab) + uint64(1))
  5384  	*(*int32)(unsafe.Pointer(bp + 24)) = idxPrintfPrepareStmt(tls, db, bp+8, pzErrmsg, ts+63, libc.VaList(bp, zTab))
  5385  	for *(*int32)(unsafe.Pointer(bp + 24)) == SQLITE_OK && SQLITE_ROW == sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp + 8))) {
  5386  		var zCol uintptr = sqlite3.Xsqlite3_column_text(tls, *(*uintptr)(unsafe.Pointer(bp + 8)), 1)
  5387  		*(*uintptr)(unsafe.Pointer(bp + 16)) = uintptr(0)
  5388  		if zCol == uintptr(0) {
  5389  			*(*int32)(unsafe.Pointer(bp + 24)) = SQLITE_ERROR
  5390  			break
  5391  		}
  5392  		nByte = nByte + (1 + int32(libc.Xstrlen(tls, zCol)))
  5393  		*(*int32)(unsafe.Pointer(bp + 24)) = sqlite3.Xsqlite3_table_column_metadata(tls,
  5394  			db, ts+85, zTab, zCol, uintptr(0), bp+16, uintptr(0), uintptr(0), uintptr(0))
  5395  		if *(*uintptr)(unsafe.Pointer(bp + 16)) == uintptr(0) {
  5396  			*(*uintptr)(unsafe.Pointer(bp + 16)) = ts + 90
  5397  		}
  5398  		nByte = nByte + (1 + int32(libc.Xstrlen(tls, *(*uintptr)(unsafe.Pointer(bp + 16)))))
  5399  		nCol++
  5400  		nPk = nPk + libc.Bool32(sqlite3.Xsqlite3_column_int(tls, *(*uintptr)(unsafe.Pointer(bp + 8)), 5) > 0)
  5401  	}
  5402  	rc2 = sqlite3.Xsqlite3_reset(tls, *(*uintptr)(unsafe.Pointer(bp + 8)))
  5403  	if *(*int32)(unsafe.Pointer(bp + 24)) == SQLITE_OK {
  5404  		*(*int32)(unsafe.Pointer(bp + 24)) = rc2
  5405  	}
  5406  
  5407  	nByte = int32(uint64(nByte) + uint64(unsafe.Sizeof(IdxColumn{}))*uint64(nCol))
  5408  	if *(*int32)(unsafe.Pointer(bp + 24)) == SQLITE_OK {
  5409  		pNew = idxMalloc(tls, bp+24, nByte)
  5410  	}
  5411  	if *(*int32)(unsafe.Pointer(bp + 24)) == SQLITE_OK {
  5412  		(*IdxTable)(unsafe.Pointer(pNew)).FaCol = pNew + 1*32
  5413  		(*IdxTable)(unsafe.Pointer(pNew)).FnCol = nCol
  5414  		pCsr = (*IdxTable)(unsafe.Pointer(pNew)).FaCol + uintptr(nCol)*24
  5415  	}
  5416  
  5417  	nCol = 0
  5418  	for *(*int32)(unsafe.Pointer(bp + 24)) == SQLITE_OK && SQLITE_ROW == sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp + 8))) {
  5419  		var zCol uintptr = sqlite3.Xsqlite3_column_text(tls, *(*uintptr)(unsafe.Pointer(bp + 8)), 1)
  5420  		*(*uintptr)(unsafe.Pointer(bp + 32)) = uintptr(0)
  5421  		var nCopy int32
  5422  		if zCol == uintptr(0) {
  5423  			continue
  5424  		}
  5425  		nCopy = int32(libc.Xstrlen(tls, zCol)) + 1
  5426  		(*IdxColumn)(unsafe.Pointer((*IdxTable)(unsafe.Pointer(pNew)).FaCol + uintptr(nCol)*24)).FzName = pCsr
  5427  		(*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)
  5428  		libc.X__builtin___memcpy_chk(tls, pCsr, zCol, uint64(nCopy), libc.X__builtin_object_size(tls, pCsr, 0))
  5429  		pCsr += uintptr(nCopy)
  5430  
  5431  		*(*int32)(unsafe.Pointer(bp + 24)) = sqlite3.Xsqlite3_table_column_metadata(tls,
  5432  			db, ts+85, zTab, zCol, uintptr(0), bp+32, uintptr(0), uintptr(0), uintptr(0))
  5433  		if *(*int32)(unsafe.Pointer(bp + 24)) == SQLITE_OK {
  5434  			if *(*uintptr)(unsafe.Pointer(bp + 32)) == uintptr(0) {
  5435  				*(*uintptr)(unsafe.Pointer(bp + 32)) = ts + 90
  5436  			}
  5437  			nCopy = int32(libc.Xstrlen(tls, *(*uintptr)(unsafe.Pointer(bp + 32)))) + 1
  5438  			(*IdxColumn)(unsafe.Pointer((*IdxTable)(unsafe.Pointer(pNew)).FaCol + uintptr(nCol)*24)).FzColl = pCsr
  5439  			libc.X__builtin___memcpy_chk(tls, pCsr, *(*uintptr)(unsafe.Pointer(bp + 32)), uint64(nCopy), libc.X__builtin_object_size(tls, pCsr, 0))
  5440  			pCsr += uintptr(nCopy)
  5441  		}
  5442  
  5443  		nCol++
  5444  	}
  5445  	idxFinalize(tls, bp+24, *(*uintptr)(unsafe.Pointer(bp + 8)))
  5446  
  5447  	if *(*int32)(unsafe.Pointer(bp + 24)) != SQLITE_OK {
  5448  		sqlite3.Xsqlite3_free(tls, pNew)
  5449  		pNew = uintptr(0)
  5450  	} else if pNew != uintptr(0) {
  5451  		(*IdxTable)(unsafe.Pointer(pNew)).FzName = pCsr
  5452  		if (*IdxTable)(unsafe.Pointer(pNew)).FzName != uintptr(0) {
  5453  			libc.X__builtin___memcpy_chk(tls, (*IdxTable)(unsafe.Pointer(pNew)).FzName, zTab, uint64(nTab+1), libc.X__builtin_object_size(tls, (*IdxTable)(unsafe.Pointer(pNew)).FzName, 0))
  5454  		}
  5455  	}
  5456  
  5457  	*(*uintptr)(unsafe.Pointer(ppOut)) = pNew
  5458  	return *(*int32)(unsafe.Pointer(bp + 24))
  5459  }
  5460  
  5461  func idxAppendText(tls *libc.TLS, pRc uintptr, zIn uintptr, zFmt uintptr, va uintptr) uintptr {
  5462  	var ap va_list
  5463  	_ = ap
  5464  	var zAppend uintptr = uintptr(0)
  5465  	var zRet uintptr = uintptr(0)
  5466  	var nIn int32
  5467  	if zIn != 0 {
  5468  		nIn = int32(libc.Xstrlen(tls, zIn))
  5469  	} else {
  5470  		nIn = 0
  5471  	}
  5472  	var nAppend int32 = 0
  5473  	ap = va
  5474  	if *(*int32)(unsafe.Pointer(pRc)) == SQLITE_OK {
  5475  		zAppend = sqlite3.Xsqlite3_vmprintf(tls, zFmt, ap)
  5476  		if zAppend != 0 {
  5477  			nAppend = int32(libc.Xstrlen(tls, zAppend))
  5478  			zRet = sqlite3.Xsqlite3_malloc(tls, nIn+nAppend+1)
  5479  		}
  5480  		if zAppend != 0 && zRet != 0 {
  5481  			if nIn != 0 {
  5482  				libc.X__builtin___memcpy_chk(tls, zRet, zIn, uint64(nIn), libc.X__builtin_object_size(tls, zRet, 0))
  5483  			}
  5484  			libc.X__builtin___memcpy_chk(tls, zRet+uintptr(nIn), zAppend, uint64(nAppend+1), libc.X__builtin_object_size(tls, zRet+uintptr(nIn), 0))
  5485  		} else {
  5486  			sqlite3.Xsqlite3_free(tls, zRet)
  5487  			zRet = uintptr(0)
  5488  			*(*int32)(unsafe.Pointer(pRc)) = SQLITE_NOMEM
  5489  		}
  5490  		sqlite3.Xsqlite3_free(tls, zAppend)
  5491  		sqlite3.Xsqlite3_free(tls, zIn)
  5492  	}
  5493  	_ = ap
  5494  	return zRet
  5495  }
  5496  
  5497  func idxIdentifierRequiresQuotes(tls *libc.TLS, zId uintptr) int32 {
  5498  	var i int32
  5499  	for i = 0; *(*int8)(unsafe.Pointer(zId + uintptr(i))) != 0; i++ {
  5500  		if !(int32(*(*int8)(unsafe.Pointer(zId + uintptr(i)))) == '_') &&
  5501  			!(int32(*(*int8)(unsafe.Pointer(zId + uintptr(i)))) >= '0' && int32(*(*int8)(unsafe.Pointer(zId + uintptr(i)))) <= '9') &&
  5502  			!(int32(*(*int8)(unsafe.Pointer(zId + uintptr(i)))) >= 'a' && int32(*(*int8)(unsafe.Pointer(zId + uintptr(i)))) <= 'z') &&
  5503  			!(int32(*(*int8)(unsafe.Pointer(zId + uintptr(i)))) >= 'A' && int32(*(*int8)(unsafe.Pointer(zId + uintptr(i)))) <= 'Z') {
  5504  			return 1
  5505  		}
  5506  	}
  5507  	return 0
  5508  }
  5509  
  5510  func idxAppendColDefn(tls *libc.TLS, pRc uintptr, zIn uintptr, pTab uintptr, pCons uintptr) uintptr {
  5511  	bp := tls.Alloc(32)
  5512  	defer tls.Free(32)
  5513  
  5514  	var zRet uintptr = zIn
  5515  	var p uintptr = (*IdxTable)(unsafe.Pointer(pTab)).FaCol + uintptr((*IdxConstraint)(unsafe.Pointer(pCons)).FiCol)*24
  5516  	if zRet != 0 {
  5517  		zRet = idxAppendText(tls, pRc, zRet, ts+97, 0)
  5518  	}
  5519  
  5520  	if idxIdentifierRequiresQuotes(tls, (*IdxColumn)(unsafe.Pointer(p)).FzName) != 0 {
  5521  		zRet = idxAppendText(tls, pRc, zRet, ts+100, libc.VaList(bp, (*IdxColumn)(unsafe.Pointer(p)).FzName))
  5522  	} else {
  5523  		zRet = idxAppendText(tls, pRc, zRet, ts, libc.VaList(bp+8, (*IdxColumn)(unsafe.Pointer(p)).FzName))
  5524  	}
  5525  
  5526  	if sqlite3.Xsqlite3_stricmp(tls, (*IdxColumn)(unsafe.Pointer(p)).FzColl, (*IdxConstraint)(unsafe.Pointer(pCons)).FzColl) != 0 {
  5527  		if idxIdentifierRequiresQuotes(tls, (*IdxConstraint)(unsafe.Pointer(pCons)).FzColl) != 0 {
  5528  			zRet = idxAppendText(tls, pRc, zRet, ts+103, libc.VaList(bp+16, (*IdxConstraint)(unsafe.Pointer(pCons)).FzColl))
  5529  		} else {
  5530  			zRet = idxAppendText(tls, pRc, zRet, ts+115, libc.VaList(bp+24, (*IdxConstraint)(unsafe.Pointer(pCons)).FzColl))
  5531  		}
  5532  	}
  5533  
  5534  	if (*IdxConstraint)(unsafe.Pointer(pCons)).FbDesc != 0 {
  5535  		zRet = idxAppendText(tls, pRc, zRet, ts+127, 0)
  5536  	}
  5537  	return zRet
  5538  }
  5539  
  5540  func idxFindCompatible(tls *libc.TLS, pRc uintptr, dbm uintptr, pScan uintptr, pEq uintptr, pTail uintptr) int32 {
  5541  	bp := tls.Alloc(36)
  5542  	defer tls.Free(36)
  5543  
  5544  	var zTbl uintptr = (*IdxTable)(unsafe.Pointer((*IdxScan)(unsafe.Pointer(pScan)).FpTab)).FzName
  5545  	*(*uintptr)(unsafe.Pointer(bp + 16)) = uintptr(0)
  5546  	var pIter uintptr
  5547  	var nEq int32 = 0
  5548  
  5549  	for pIter = pEq; pIter != 0; pIter = (*IdxConstraint)(unsafe.Pointer(pIter)).FpLink {
  5550  		nEq++
  5551  	}
  5552  
  5553  	*(*int32)(unsafe.Pointer(bp + 32)) = idxPrintfPrepareStmt(tls, dbm, bp+16, uintptr(0), ts+133, libc.VaList(bp, zTbl))
  5554  	for *(*int32)(unsafe.Pointer(bp + 32)) == SQLITE_OK && sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp + 16))) == SQLITE_ROW {
  5555  		var bMatch int32 = 1
  5556  		var pT uintptr = pTail
  5557  		*(*uintptr)(unsafe.Pointer(bp + 24)) = uintptr(0)
  5558  		var zIdx uintptr = sqlite3.Xsqlite3_column_text(tls, *(*uintptr)(unsafe.Pointer(bp + 16)), 1)
  5559  		if zIdx == uintptr(0) {
  5560  			continue
  5561  		}
  5562  
  5563  		for pIter = pEq; pIter != 0; pIter = (*IdxConstraint)(unsafe.Pointer(pIter)).FpLink {
  5564  			(*IdxConstraint)(unsafe.Pointer(pIter)).FbFlag = 0
  5565  		}
  5566  
  5567  		*(*int32)(unsafe.Pointer(bp + 32)) = idxPrintfPrepareStmt(tls, dbm, bp+24, uintptr(0), ts+154, libc.VaList(bp+8, zIdx))
  5568  		for *(*int32)(unsafe.Pointer(bp + 32)) == SQLITE_OK && sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp + 24))) == SQLITE_ROW {
  5569  			var iIdx int32 = sqlite3.Xsqlite3_column_int(tls, *(*uintptr)(unsafe.Pointer(bp + 24)), 0)
  5570  			var iCol int32 = sqlite3.Xsqlite3_column_int(tls, *(*uintptr)(unsafe.Pointer(bp + 24)), 1)
  5571  			var zColl uintptr = sqlite3.Xsqlite3_column_text(tls, *(*uintptr)(unsafe.Pointer(bp + 24)), 4)
  5572  
  5573  			if iIdx < nEq {
  5574  				for pIter = pEq; pIter != 0; pIter = (*IdxConstraint)(unsafe.Pointer(pIter)).FpLink {
  5575  					if (*IdxConstraint)(unsafe.Pointer(pIter)).FbFlag != 0 {
  5576  						continue
  5577  					}
  5578  					if (*IdxConstraint)(unsafe.Pointer(pIter)).FiCol != iCol {
  5579  						continue
  5580  					}
  5581  					if sqlite3.Xsqlite3_stricmp(tls, (*IdxConstraint)(unsafe.Pointer(pIter)).FzColl, zColl) != 0 {
  5582  						continue
  5583  					}
  5584  					(*IdxConstraint)(unsafe.Pointer(pIter)).FbFlag = 1
  5585  					break
  5586  				}
  5587  				if pIter == uintptr(0) {
  5588  					bMatch = 0
  5589  					break
  5590  				}
  5591  			} else {
  5592  				if pT != 0 {
  5593  					if (*IdxConstraint)(unsafe.Pointer(pT)).FiCol != iCol || sqlite3.Xsqlite3_stricmp(tls, (*IdxConstraint)(unsafe.Pointer(pT)).FzColl, zColl) != 0 {
  5594  						bMatch = 0
  5595  						break
  5596  					}
  5597  					pT = (*IdxConstraint)(unsafe.Pointer(pT)).FpLink
  5598  				}
  5599  			}
  5600  		}
  5601  		idxFinalize(tls, bp+32, *(*uintptr)(unsafe.Pointer(bp + 24)))
  5602  
  5603  		if *(*int32)(unsafe.Pointer(bp + 32)) == SQLITE_OK && bMatch != 0 {
  5604  			sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 16)))
  5605  			return 1
  5606  		}
  5607  	}
  5608  	idxFinalize(tls, bp+32, *(*uintptr)(unsafe.Pointer(bp + 16)))
  5609  
  5610  	*(*int32)(unsafe.Pointer(pRc)) = *(*int32)(unsafe.Pointer(bp + 32))
  5611  	return 0
  5612  }
  5613  
  5614  func countNonzeros(tls *libc.TLS, pCount uintptr, nc int32, azResults uintptr, azColumns uintptr) int32 {
  5615  	_ = azColumns
  5616  	if nc > 0 && (int32(*(*int8)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(azResults))))) != '0' || int32(*(*int8)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(azResults)) + 1))) != 0) {
  5617  		*(*int32)(unsafe.Pointer(pCount)) += 1
  5618  	}
  5619  	return 0
  5620  }
  5621  
  5622  func idxCreateFromCons(tls *libc.TLS, p uintptr, pScan uintptr, pEq uintptr, pTail uintptr) int32 {
  5623  	bp := tls.Alloc(56)
  5624  	defer tls.Free(56)
  5625  
  5626  	var dbm uintptr = (*sqlite3expert)(unsafe.Pointer(p)).Fdbm
  5627  	*(*int32)(unsafe.Pointer(bp + 48)) = SQLITE_OK
  5628  	if (pEq != 0 || pTail != 0) && 0 == idxFindCompatible(tls, bp+48, dbm, pScan, pEq, pTail) {
  5629  		var pTab uintptr = (*IdxScan)(unsafe.Pointer(pScan)).FpTab
  5630  		var zCols uintptr = uintptr(0)
  5631  		var zIdx uintptr = uintptr(0)
  5632  		var pCons uintptr
  5633  		var h uint32 = uint32(0)
  5634  		var zFmt uintptr
  5635  
  5636  		for pCons = pEq; pCons != 0; pCons = (*IdxConstraint)(unsafe.Pointer(pCons)).FpLink {
  5637  			zCols = idxAppendColDefn(tls, bp+48, zCols, pTab, pCons)
  5638  		}
  5639  		for pCons = pTail; pCons != 0; pCons = (*IdxConstraint)(unsafe.Pointer(pCons)).FpLink {
  5640  			zCols = idxAppendColDefn(tls, bp+48, zCols, pTab, pCons)
  5641  		}
  5642  
  5643  		if *(*int32)(unsafe.Pointer(bp + 48)) == SQLITE_OK {
  5644  			var zTable uintptr = (*IdxTable)(unsafe.Pointer((*IdxScan)(unsafe.Pointer(pScan)).FpTab)).FzName
  5645  			var quoteTable int32 = idxIdentifierRequiresQuotes(tls, zTable)
  5646  			var zName uintptr = uintptr(0)
  5647  			var collisions int32 = 0
  5648  			for __ccgo := true; __ccgo; __ccgo = collisions < 50 && zName != uintptr(0) {
  5649  				var zFind uintptr
  5650  				for *(*int32)(unsafe.Pointer(bp + 52)) = 0; *(*int8)(unsafe.Pointer(zCols + uintptr(*(*int32)(unsafe.Pointer(bp + 52))))) != 0; *(*int32)(unsafe.Pointer(bp + 52))++ {
  5651  					h = h + (h<<3 + uint32(*(*int8)(unsafe.Pointer(zCols + uintptr(*(*int32)(unsafe.Pointer(bp + 52)))))))
  5652  				}
  5653  				sqlite3.Xsqlite3_free(tls, zName)
  5654  				zName = sqlite3.Xsqlite3_mprintf(tls, ts+176, libc.VaList(bp, zTable, h))
  5655  				if zName == uintptr(0) {
  5656  					break
  5657  				}
  5658  
  5659  				zFmt = ts + 188
  5660  				zFind = sqlite3.Xsqlite3_mprintf(tls, zFmt, libc.VaList(bp+16, zName))
  5661  				*(*int32)(unsafe.Pointer(bp + 52)) = 0
  5662  				*(*int32)(unsafe.Pointer(bp + 48)) = sqlite3.Xsqlite3_exec(tls, dbm, zFind, *(*uintptr)(unsafe.Pointer(&struct {
  5663  					f func(*libc.TLS, uintptr, int32, uintptr, uintptr) int32
  5664  				}{countNonzeros})), bp+52, uintptr(0))
  5665  
  5666  				sqlite3.Xsqlite3_free(tls, zFind)
  5667  				if *(*int32)(unsafe.Pointer(bp + 52)) == 0 {
  5668  					collisions = 0
  5669  					break
  5670  				}
  5671  				collisions++
  5672  			}
  5673  			if collisions != 0 {
  5674  				*(*int32)(unsafe.Pointer(bp + 48)) = SQLITE_BUSY | int32(3)<<8
  5675  			} else if zName == uintptr(0) {
  5676  				*(*int32)(unsafe.Pointer(bp + 48)) = SQLITE_NOMEM
  5677  			} else {
  5678  				if quoteTable != 0 {
  5679  					zFmt = ts + 274
  5680  				} else {
  5681  					zFmt = ts + 304
  5682  				}
  5683  				zIdx = sqlite3.Xsqlite3_mprintf(tls, zFmt, libc.VaList(bp+24, zName, zTable, zCols))
  5684  				if !(zIdx != 0) {
  5685  					*(*int32)(unsafe.Pointer(bp + 48)) = SQLITE_NOMEM
  5686  				} else {
  5687  					*(*int32)(unsafe.Pointer(bp + 48)) = sqlite3.Xsqlite3_exec(tls, dbm, zIdx, uintptr(0), uintptr(0), (*sqlite3expert)(unsafe.Pointer(p)).FpzErrmsg)
  5688  					if *(*int32)(unsafe.Pointer(bp + 48)) != SQLITE_OK {
  5689  						*(*int32)(unsafe.Pointer(bp + 48)) = SQLITE_BUSY | int32(3)<<8
  5690  					} else {
  5691  						idxHashAdd(tls, bp+48, p+88, zName, zIdx)
  5692  					}
  5693  				}
  5694  				sqlite3.Xsqlite3_free(tls, zName)
  5695  				sqlite3.Xsqlite3_free(tls, zIdx)
  5696  			}
  5697  		}
  5698  
  5699  		sqlite3.Xsqlite3_free(tls, zCols)
  5700  	}
  5701  	return *(*int32)(unsafe.Pointer(bp + 48))
  5702  }
  5703  
  5704  func idxFindConstraint(tls *libc.TLS, pList uintptr, p uintptr) int32 {
  5705  	var pCmp uintptr
  5706  	for pCmp = pList; pCmp != 0; pCmp = (*IdxConstraint)(unsafe.Pointer(pCmp)).FpLink {
  5707  		if (*IdxConstraint)(unsafe.Pointer(p)).FiCol == (*IdxConstraint)(unsafe.Pointer(pCmp)).FiCol {
  5708  			return 1
  5709  		}
  5710  	}
  5711  	return 0
  5712  }
  5713  
  5714  func idxCreateFromWhere(tls *libc.TLS, p uintptr, pScan uintptr, pTail uintptr) int32 {
  5715  	var p1 uintptr = uintptr(0)
  5716  	var pCon uintptr
  5717  	var rc int32
  5718  
  5719  	for pCon = (*IdxScan)(unsafe.Pointer(pScan)).FpEq; pCon != 0; pCon = (*IdxConstraint)(unsafe.Pointer(pCon)).FpNext {
  5720  		if !(idxFindConstraint(tls, p1, pCon) != 0) && !(idxFindConstraint(tls, pTail, pCon) != 0) {
  5721  			(*IdxConstraint)(unsafe.Pointer(pCon)).FpLink = p1
  5722  			p1 = pCon
  5723  		}
  5724  	}
  5725  
  5726  	rc = idxCreateFromCons(tls, p, pScan, p1, pTail)
  5727  
  5728  	if pTail == uintptr(0) {
  5729  		for pCon = (*IdxScan)(unsafe.Pointer(pScan)).FpRange; rc == SQLITE_OK && pCon != 0; pCon = (*IdxConstraint)(unsafe.Pointer(pCon)).FpNext {
  5730  			if !(idxFindConstraint(tls, p1, pCon) != 0) && !(idxFindConstraint(tls, pTail, pCon) != 0) {
  5731  				rc = idxCreateFromCons(tls, p, pScan, p1, pCon)
  5732  			}
  5733  		}
  5734  	}
  5735  
  5736  	return rc
  5737  }
  5738  
  5739  func idxCreateCandidates(tls *libc.TLS, p uintptr) int32 {
  5740  	var rc int32 = SQLITE_OK
  5741  	var pIter uintptr
  5742  
  5743  	for pIter = (*sqlite3expert)(unsafe.Pointer(p)).FpScan; pIter != 0 && rc == SQLITE_OK; pIter = (*IdxScan)(unsafe.Pointer(pIter)).FpNextScan {
  5744  		rc = idxCreateFromWhere(tls, p, pIter, uintptr(0))
  5745  		if rc == SQLITE_OK && (*IdxScan)(unsafe.Pointer(pIter)).FpOrder != 0 {
  5746  			rc = idxCreateFromWhere(tls, p, pIter, (*IdxScan)(unsafe.Pointer(pIter)).FpOrder)
  5747  		}
  5748  	}
  5749  
  5750  	return rc
  5751  }
  5752  
  5753  func idxConstraintFree(tls *libc.TLS, pConstraint uintptr) {
  5754  	var pNext uintptr
  5755  	var p uintptr
  5756  
  5757  	for p = pConstraint; p != 0; p = pNext {
  5758  		pNext = (*IdxConstraint)(unsafe.Pointer(p)).FpNext
  5759  		sqlite3.Xsqlite3_free(tls, p)
  5760  	}
  5761  }
  5762  
  5763  func idxScanFree(tls *libc.TLS, pScan uintptr, pLast uintptr) {
  5764  	var p uintptr
  5765  	var pNext uintptr
  5766  	for p = pScan; p != pLast; p = pNext {
  5767  		pNext = (*IdxScan)(unsafe.Pointer(p)).FpNextScan
  5768  		idxConstraintFree(tls, (*IdxScan)(unsafe.Pointer(p)).FpOrder)
  5769  		idxConstraintFree(tls, (*IdxScan)(unsafe.Pointer(p)).FpEq)
  5770  		idxConstraintFree(tls, (*IdxScan)(unsafe.Pointer(p)).FpRange)
  5771  		sqlite3.Xsqlite3_free(tls, p)
  5772  	}
  5773  }
  5774  
  5775  func idxStatementFree(tls *libc.TLS, pStatement uintptr, pLast uintptr) {
  5776  	var p uintptr
  5777  	var pNext uintptr
  5778  	for p = pStatement; p != pLast; p = pNext {
  5779  		pNext = (*IdxStatement)(unsafe.Pointer(p)).FpNext
  5780  		sqlite3.Xsqlite3_free(tls, (*IdxStatement)(unsafe.Pointer(p)).FzEQP)
  5781  		sqlite3.Xsqlite3_free(tls, (*IdxStatement)(unsafe.Pointer(p)).FzIdx)
  5782  		sqlite3.Xsqlite3_free(tls, p)
  5783  	}
  5784  }
  5785  
  5786  func idxTableFree(tls *libc.TLS, pTab uintptr) {
  5787  	var pIter uintptr
  5788  	var pNext uintptr
  5789  	for pIter = pTab; pIter != 0; pIter = pNext {
  5790  		pNext = (*IdxTable)(unsafe.Pointer(pIter)).FpNext
  5791  		sqlite3.Xsqlite3_free(tls, pIter)
  5792  	}
  5793  }
  5794  
  5795  func idxWriteFree(tls *libc.TLS, pTab uintptr) {
  5796  	var pIter uintptr
  5797  	var pNext uintptr
  5798  	for pIter = pTab; pIter != 0; pIter = pNext {
  5799  		pNext = (*IdxWrite)(unsafe.Pointer(pIter)).FpNext
  5800  		sqlite3.Xsqlite3_free(tls, pIter)
  5801  	}
  5802  }
  5803  
  5804  func idxFindIndexes(tls *libc.TLS, p uintptr, pzErr uintptr) int32 {
  5805  	bp := tls.Alloc(8228)
  5806  	defer tls.Free(8228)
  5807  
  5808  	var pStmt uintptr
  5809  	var dbm uintptr
  5810  
  5811  	var zSql uintptr
  5812  	var nIdx int32
  5813  	var zIdx uintptr
  5814  
  5815  	var zDetail uintptr
  5816  	var nDetail int32
  5817  	var i int32
  5818  	var pEntry uintptr
  5819  
  5820  	dbm = (*sqlite3expert)(unsafe.Pointer(p)).Fdbm
  5821  	*(*int32)(unsafe.Pointer(bp + 8224)) = SQLITE_OK
  5822  	idxHashInit(tls, bp+24)
  5823  
  5824  	pStmt = (*sqlite3expert)(unsafe.Pointer(p)).FpStatement
  5825  __1:
  5826  	if !(*(*int32)(unsafe.Pointer(bp + 8224)) == SQLITE_OK && pStmt != 0) {
  5827  		goto __3
  5828  	}
  5829  	*(*uintptr)(unsafe.Pointer(bp + 8216)) = uintptr(0)
  5830  	idxHashClear(tls, bp+24)
  5831  	*(*int32)(unsafe.Pointer(bp + 8224)) = idxPrintfPrepareStmt(tls, dbm, bp+8216, pzErr,
  5832  		ts+330, libc.VaList(bp, (*IdxStatement)(unsafe.Pointer(pStmt)).FzSql))
  5833  __4:
  5834  	if !(*(*int32)(unsafe.Pointer(bp + 8224)) == SQLITE_OK && sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp + 8216))) == SQLITE_ROW) {
  5835  		goto __5
  5836  	}
  5837  
  5838  	zDetail = sqlite3.Xsqlite3_column_text(tls, *(*uintptr)(unsafe.Pointer(bp + 8216)), 3)
  5839  
  5840  	if !!(zDetail != 0) {
  5841  		goto __6
  5842  	}
  5843  	goto __4
  5844  __6:
  5845  	;
  5846  	nDetail = int32(libc.Xstrlen(tls, zDetail))
  5847  
  5848  	i = 0
  5849  __7:
  5850  	if !(i < nDetail) {
  5851  		goto __9
  5852  	}
  5853  	zIdx = uintptr(0)
  5854  	if !(i+13 < nDetail && libc.Xmemcmp(tls, zDetail+uintptr(i), ts+352, uint64(13)) == 0) {
  5855  		goto __10
  5856  	}
  5857  	zIdx = zDetail + uintptr(i+13)
  5858  	goto __11
  5859  __10:
  5860  	if !(i+22 < nDetail &&
  5861  		libc.Xmemcmp(tls, zDetail+uintptr(i), ts+366, uint64(22)) == 0) {
  5862  		goto __12
  5863  	}
  5864  	zIdx = zDetail + uintptr(i+22)
  5865  __12:
  5866  	;
  5867  __11:
  5868  	;
  5869  	if !(zIdx != 0) {
  5870  		goto __13
  5871  	}
  5872  	nIdx = 0
  5873  __14:
  5874  	if !(int32(*(*int8)(unsafe.Pointer(zIdx + uintptr(nIdx)))) != 0 && (int32(*(*int8)(unsafe.Pointer(zIdx + uintptr(nIdx)))) != ' ' || int32(*(*int8)(unsafe.Pointer(zIdx + uintptr(nIdx+1)))) != '(')) {
  5875  		goto __15
  5876  	}
  5877  	nIdx++
  5878  	goto __14
  5879  __15:
  5880  	;
  5881  	zSql = idxHashSearch(tls, p+88, zIdx, nIdx)
  5882  	if !(zSql != 0) {
  5883  		goto __16
  5884  	}
  5885  	idxHashAdd(tls, bp+8224, bp+24, zSql, uintptr(0))
  5886  	if !(*(*int32)(unsafe.Pointer(bp + 8224)) != 0) {
  5887  		goto __17
  5888  	}
  5889  	goto find_indexes_out
  5890  __17:
  5891  	;
  5892  __16:
  5893  	;
  5894  	goto __9
  5895  __13:
  5896  	;
  5897  	goto __8
  5898  __8:
  5899  	i++
  5900  	goto __7
  5901  	goto __9
  5902  __9:
  5903  	;
  5904  	if !(int32(*(*int8)(unsafe.Pointer(zDetail))) != '-') {
  5905  		goto __18
  5906  	}
  5907  	(*IdxStatement)(unsafe.Pointer(pStmt)).FzEQP = idxAppendText(tls, bp+8224, (*IdxStatement)(unsafe.Pointer(pStmt)).FzEQP, ts+389, libc.VaList(bp+8, zDetail))
  5908  __18:
  5909  	;
  5910  	goto __4
  5911  __5:
  5912  	;
  5913  	pEntry = (*IdxHash)(unsafe.Pointer(bp + 24)).FpFirst
  5914  __19:
  5915  	if !(pEntry != 0) {
  5916  		goto __21
  5917  	}
  5918  	(*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))
  5919  	goto __20
  5920  __20:
  5921  	pEntry = (*IdxHashEntry)(unsafe.Pointer(pEntry)).FpNext
  5922  	goto __19
  5923  	goto __21
  5924  __21:
  5925  	;
  5926  	idxFinalize(tls, bp+8224, *(*uintptr)(unsafe.Pointer(bp + 8216)))
  5927  	goto __2
  5928  __2:
  5929  	pStmt = (*IdxStatement)(unsafe.Pointer(pStmt)).FpNext
  5930  	goto __1
  5931  	goto __3
  5932  __3:
  5933  	;
  5934  find_indexes_out:
  5935  	idxHashClear(tls, bp+24)
  5936  	return *(*int32)(unsafe.Pointer(bp + 8224))
  5937  }
  5938  
  5939  func idxAuthCallback(tls *libc.TLS, pCtx uintptr, eOp int32, z3 uintptr, z4 uintptr, zDb uintptr, zTrigger uintptr) int32 {
  5940  	bp := tls.Alloc(4)
  5941  	defer tls.Free(4)
  5942  
  5943  	*(*int32)(unsafe.Pointer(bp)) = SQLITE_OK
  5944  	_ = z4
  5945  	_ = zTrigger
  5946  	if eOp == SQLITE_INSERT || eOp == SQLITE_UPDATE || eOp == SQLITE_DELETE {
  5947  		if sqlite3.Xsqlite3_stricmp(tls, zDb, ts+85) == 0 {
  5948  			var p uintptr = pCtx
  5949  			var pTab uintptr
  5950  			for pTab = (*sqlite3expert)(unsafe.Pointer(p)).FpTable; pTab != 0; pTab = (*IdxTable)(unsafe.Pointer(pTab)).FpNext {
  5951  				if 0 == sqlite3.Xsqlite3_stricmp(tls, z3, (*IdxTable)(unsafe.Pointer(pTab)).FzName) {
  5952  					break
  5953  				}
  5954  			}
  5955  			if pTab != 0 {
  5956  				var pWrite uintptr
  5957  				for pWrite = (*sqlite3expert)(unsafe.Pointer(p)).FpWrite; pWrite != 0; pWrite = (*IdxWrite)(unsafe.Pointer(pWrite)).FpNext {
  5958  					if (*IdxWrite)(unsafe.Pointer(pWrite)).FpTab == pTab && (*IdxWrite)(unsafe.Pointer(pWrite)).FeOp == eOp {
  5959  						break
  5960  					}
  5961  				}
  5962  				if pWrite == uintptr(0) {
  5963  					pWrite = idxMalloc(tls, bp, int32(unsafe.Sizeof(IdxWrite{})))
  5964  					if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK {
  5965  						(*IdxWrite)(unsafe.Pointer(pWrite)).FpTab = pTab
  5966  						(*IdxWrite)(unsafe.Pointer(pWrite)).FeOp = eOp
  5967  						(*IdxWrite)(unsafe.Pointer(pWrite)).FpNext = (*sqlite3expert)(unsafe.Pointer(p)).FpWrite
  5968  						(*sqlite3expert)(unsafe.Pointer(p)).FpWrite = pWrite
  5969  					}
  5970  				}
  5971  			}
  5972  		}
  5973  	}
  5974  	return *(*int32)(unsafe.Pointer(bp))
  5975  }
  5976  
  5977  func idxProcessOneTrigger(tls *libc.TLS, p uintptr, pWrite uintptr, pzErr uintptr) int32 {
  5978  	bp := tls.Alloc(104)
  5979  	defer tls.Free(104)
  5980  
  5981  	var pTab uintptr = (*IdxWrite)(unsafe.Pointer(pWrite)).FpTab
  5982  	var zTab uintptr = (*IdxTable)(unsafe.Pointer(pTab)).FzName
  5983  	var zSql uintptr = ts + 398
  5984  	*(*uintptr)(unsafe.Pointer(bp + 80)) = uintptr(0)
  5985  	*(*int32)(unsafe.Pointer(bp + 88)) = SQLITE_OK
  5986  	var zWrite uintptr = uintptr(0)
  5987  
  5988  	*(*int32)(unsafe.Pointer(bp + 88)) = idxPrintfPrepareStmt(tls, (*sqlite3expert)(unsafe.Pointer(p)).Fdb, bp+80, pzErr, zSql, libc.VaList(bp, zTab, zTab))
  5989  	for *(*int32)(unsafe.Pointer(bp + 88)) == SQLITE_OK && SQLITE_ROW == sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp + 80))) {
  5990  		var zCreate uintptr = sqlite3.Xsqlite3_column_text(tls, *(*uintptr)(unsafe.Pointer(bp + 80)), 0)
  5991  		if zCreate == uintptr(0) {
  5992  			continue
  5993  		}
  5994  		*(*int32)(unsafe.Pointer(bp + 88)) = sqlite3.Xsqlite3_exec(tls, (*sqlite3expert)(unsafe.Pointer(p)).Fdbv, zCreate, uintptr(0), uintptr(0), pzErr)
  5995  	}
  5996  	idxFinalize(tls, bp+88, *(*uintptr)(unsafe.Pointer(bp + 80)))
  5997  
  5998  	if *(*int32)(unsafe.Pointer(bp + 88)) == SQLITE_OK {
  5999  		var z uintptr = sqlite3.Xsqlite3_mprintf(tls, ts+524, libc.VaList(bp+16, zTab, zInt))
  6000  		if z == uintptr(0) {
  6001  			*(*int32)(unsafe.Pointer(bp + 88)) = SQLITE_NOMEM
  6002  		} else {
  6003  			*(*int32)(unsafe.Pointer(bp + 88)) = sqlite3.Xsqlite3_exec(tls, (*sqlite3expert)(unsafe.Pointer(p)).Fdbv, z, uintptr(0), uintptr(0), pzErr)
  6004  			sqlite3.Xsqlite3_free(tls, z)
  6005  		}
  6006  	}
  6007  
  6008  	switch (*IdxWrite)(unsafe.Pointer(pWrite)).FeOp {
  6009  	case SQLITE_INSERT:
  6010  		{
  6011  			var i int32
  6012  			zWrite = idxAppendText(tls, bp+88, zWrite, ts+557, libc.VaList(bp+32, zInt))
  6013  			for i = 0; i < (*IdxTable)(unsafe.Pointer(pTab)).FnCol; i++ {
  6014  				zWrite = idxAppendText(tls, bp+88, zWrite, ts+580, libc.VaList(bp+40, func() uintptr {
  6015  					if i == 0 {
  6016  						return ts + 584
  6017  					}
  6018  					return ts + 97
  6019  				}()))
  6020  			}
  6021  			zWrite = idxAppendText(tls, bp+88, zWrite, ts+585, 0)
  6022  			break
  6023  
  6024  		}
  6025  	case SQLITE_UPDATE:
  6026  		{
  6027  			var i int32
  6028  			zWrite = idxAppendText(tls, bp+88, zWrite, ts+587, libc.VaList(bp+48, zInt))
  6029  			for i = 0; i < (*IdxTable)(unsafe.Pointer(pTab)).FnCol; i++ {
  6030  				zWrite = idxAppendText(tls, bp+88, zWrite, ts+602, libc.VaList(bp+56, func() uintptr {
  6031  					if i == 0 {
  6032  						return ts + 584
  6033  					}
  6034  					return ts + 97
  6035  				}(),
  6036  					(*IdxColumn)(unsafe.Pointer((*IdxTable)(unsafe.Pointer(pTab)).FaCol+uintptr(i)*24)).FzName))
  6037  			}
  6038  			break
  6039  
  6040  		}
  6041  	default:
  6042  		{
  6043  			if *(*int32)(unsafe.Pointer(bp + 88)) == SQLITE_OK {
  6044  				zWrite = sqlite3.Xsqlite3_mprintf(tls, ts+609, libc.VaList(bp+72, zInt))
  6045  				if zWrite == uintptr(0) {
  6046  					*(*int32)(unsafe.Pointer(bp + 88)) = SQLITE_NOMEM
  6047  				}
  6048  			}
  6049  
  6050  		}
  6051  	}
  6052  
  6053  	if *(*int32)(unsafe.Pointer(bp + 88)) == SQLITE_OK {
  6054  		*(*uintptr)(unsafe.Pointer(bp + 96)) = uintptr(0)
  6055  		*(*int32)(unsafe.Pointer(bp + 88)) = sqlite3.Xsqlite3_prepare_v2(tls, (*sqlite3expert)(unsafe.Pointer(p)).Fdbv, zWrite, -1, bp+96, uintptr(0))
  6056  		idxFinalize(tls, bp+88, *(*uintptr)(unsafe.Pointer(bp + 96)))
  6057  		if *(*int32)(unsafe.Pointer(bp + 88)) != SQLITE_OK {
  6058  			idxDatabaseError(tls, (*sqlite3expert)(unsafe.Pointer(p)).Fdbv, pzErr)
  6059  		}
  6060  	}
  6061  	sqlite3.Xsqlite3_free(tls, zWrite)
  6062  
  6063  	if *(*int32)(unsafe.Pointer(bp + 88)) == SQLITE_OK {
  6064  		*(*int32)(unsafe.Pointer(bp + 88)) = sqlite3.Xsqlite3_exec(tls, (*sqlite3expert)(unsafe.Pointer(p)).Fdbv, zDrop, uintptr(0), uintptr(0), pzErr)
  6065  	}
  6066  
  6067  	return *(*int32)(unsafe.Pointer(bp + 88))
  6068  }
  6069  
  6070  var zInt uintptr = ts + 624
  6071  var zDrop uintptr = ts + 662
  6072  
  6073  func idxProcessTriggers(tls *libc.TLS, p uintptr, pzErr uintptr) int32 {
  6074  	var rc int32 = SQLITE_OK
  6075  	var pEnd uintptr = uintptr(0)
  6076  	var pFirst uintptr = (*sqlite3expert)(unsafe.Pointer(p)).FpWrite
  6077  
  6078  	for rc == SQLITE_OK && pFirst != pEnd {
  6079  		var pIter uintptr
  6080  		for pIter = pFirst; rc == SQLITE_OK && pIter != pEnd; pIter = (*IdxWrite)(unsafe.Pointer(pIter)).FpNext {
  6081  			rc = idxProcessOneTrigger(tls, p, pIter, pzErr)
  6082  		}
  6083  		pEnd = pFirst
  6084  		pFirst = (*sqlite3expert)(unsafe.Pointer(p)).FpWrite
  6085  	}
  6086  
  6087  	return rc
  6088  }
  6089  
  6090  func idxCreateVtabSchema(tls *libc.TLS, p uintptr, pzErrmsg uintptr) int32 {
  6091  	bp := tls.Alloc(60)
  6092  	defer tls.Free(60)
  6093  
  6094  	*(*int32)(unsafe.Pointer(bp + 56)) = idxRegisterVtab(tls, p)
  6095  	*(*uintptr)(unsafe.Pointer(bp + 40)) = uintptr(0)
  6096  
  6097  	*(*int32)(unsafe.Pointer(bp + 56)) = idxPrepareStmt(tls, (*sqlite3expert)(unsafe.Pointer(p)).Fdb, bp+40, pzErrmsg,
  6098  		ts+711)
  6099  	for *(*int32)(unsafe.Pointer(bp + 56)) == SQLITE_OK && SQLITE_ROW == sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp + 40))) {
  6100  		var zType uintptr = sqlite3.Xsqlite3_column_text(tls, *(*uintptr)(unsafe.Pointer(bp + 40)), 0)
  6101  		var zName uintptr = sqlite3.Xsqlite3_column_text(tls, *(*uintptr)(unsafe.Pointer(bp + 40)), 1)
  6102  		var zSql uintptr = sqlite3.Xsqlite3_column_text(tls, *(*uintptr)(unsafe.Pointer(bp + 40)), 2)
  6103  
  6104  		if zType == uintptr(0) || zName == uintptr(0) {
  6105  			continue
  6106  		}
  6107  		if int32(*(*int8)(unsafe.Pointer(zType))) == 'v' || int32(*(*int8)(unsafe.Pointer(zType + 1))) == 'r' {
  6108  			if zSql != 0 {
  6109  				*(*int32)(unsafe.Pointer(bp + 56)) = sqlite3.Xsqlite3_exec(tls, (*sqlite3expert)(unsafe.Pointer(p)).Fdbv, zSql, uintptr(0), uintptr(0), pzErrmsg)
  6110  			}
  6111  		} else {
  6112  			*(*int32)(unsafe.Pointer(bp + 56)) = idxGetTableInfo(tls, (*sqlite3expert)(unsafe.Pointer(p)).Fdb, zName, bp+48, pzErrmsg)
  6113  			if *(*int32)(unsafe.Pointer(bp + 56)) == SQLITE_OK {
  6114  				var i int32
  6115  				var zInner uintptr = uintptr(0)
  6116  				var zOuter uintptr = uintptr(0)
  6117  				(*IdxTable)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 48)))).FpNext = (*sqlite3expert)(unsafe.Pointer(p)).FpTable
  6118  				(*sqlite3expert)(unsafe.Pointer(p)).FpTable = *(*uintptr)(unsafe.Pointer(bp + 48))
  6119  
  6120  				zInner = idxAppendText(tls, bp+56, uintptr(0), ts+979, 0)
  6121  				for i = 0; i < (*IdxTable)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 48)))).FnCol; i++ {
  6122  					zInner = idxAppendText(tls, bp+56, zInner, ts+995,
  6123  						libc.VaList(bp, func() uintptr {
  6124  							if i == 0 {
  6125  								return ts + 584
  6126  							}
  6127  							return ts + 97
  6128  						}(), (*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))
  6129  				}
  6130  				zInner = idxAppendText(tls, bp+56, zInner, ts+585, 0)
  6131  
  6132  				zOuter = idxAppendText(tls, bp+56, uintptr(0),
  6133  					ts+1011, libc.VaList(bp+24, zName, zInner))
  6134  				if *(*int32)(unsafe.Pointer(bp + 56)) == SQLITE_OK {
  6135  					*(*int32)(unsafe.Pointer(bp + 56)) = sqlite3.Xsqlite3_exec(tls, (*sqlite3expert)(unsafe.Pointer(p)).Fdbv, zOuter, uintptr(0), uintptr(0), pzErrmsg)
  6136  				}
  6137  				sqlite3.Xsqlite3_free(tls, zInner)
  6138  				sqlite3.Xsqlite3_free(tls, zOuter)
  6139  			}
  6140  		}
  6141  	}
  6142  	idxFinalize(tls, bp+56, *(*uintptr)(unsafe.Pointer(bp + 40)))
  6143  	return *(*int32)(unsafe.Pointer(bp + 56))
  6144  }
  6145  
  6146  type IdxSampleCtx = struct {
  6147  	FiTarget     int32
  6148  	F__ccgo_pad1 [4]byte
  6149  	Ftarget      float64
  6150  	FnRow        float64
  6151  	FnRet        float64
  6152  }
  6153  
  6154  func idxSampleFunc(tls *libc.TLS, pCtx uintptr, argc int32, argv uintptr) {
  6155  	bp := tls.Alloc(2)
  6156  	defer tls.Free(2)
  6157  
  6158  	var p uintptr = sqlite3.Xsqlite3_user_data(tls, pCtx)
  6159  	var bRet int32
  6160  
  6161  	_ = argv
  6162  
  6163  	if (*IdxSampleCtx)(unsafe.Pointer(p)).FnRow == 0.0 {
  6164  		bRet = 1
  6165  	} else {
  6166  		bRet = libc.Bool32((*IdxSampleCtx)(unsafe.Pointer(p)).FnRet/(*IdxSampleCtx)(unsafe.Pointer(p)).FnRow <= (*IdxSampleCtx)(unsafe.Pointer(p)).Ftarget)
  6167  		if bRet == 0 {
  6168  			sqlite3.Xsqlite3_randomness(tls, 2, bp)
  6169  			bRet = libc.Bool32(int32(*(*uint16)(unsafe.Pointer(bp)))%100 <= (*IdxSampleCtx)(unsafe.Pointer(p)).FiTarget)
  6170  		}
  6171  	}
  6172  
  6173  	sqlite3.Xsqlite3_result_int(tls, pCtx, bRet)
  6174  	*(*float64)(unsafe.Pointer(p + 16)) += 1.0
  6175  	*(*float64)(unsafe.Pointer(p + 24)) += float64(bRet)
  6176  }
  6177  
  6178  type IdxRemCtx = struct {
  6179  	FnSlot       int32
  6180  	F__ccgo_pad1 [4]byte
  6181  	FaSlot       [1]struct {
  6182  		FeType       int32
  6183  		F__ccgo_pad1 [4]byte
  6184  		FiVal        i64
  6185  		FrVal        float64
  6186  		FnByte       int32
  6187  		Fn           int32
  6188  		Fz           uintptr
  6189  	}
  6190  }
  6191  
  6192  type IdxRemSlot = struct {
  6193  	FeType       int32
  6194  	F__ccgo_pad1 [4]byte
  6195  	FiVal        i64
  6196  	FrVal        float64
  6197  	FnByte       int32
  6198  	Fn           int32
  6199  	Fz           uintptr
  6200  }
  6201  
  6202  func idxRemFunc(tls *libc.TLS, pCtx uintptr, argc int32, argv uintptr) {
  6203  	var p uintptr = sqlite3.Xsqlite3_user_data(tls, pCtx)
  6204  	var pSlot uintptr
  6205  	var iSlot int32
  6206  
  6207  	iSlot = sqlite3.Xsqlite3_value_int(tls, *(*uintptr)(unsafe.Pointer(argv)))
  6208  
  6209  	pSlot = p + 8 + uintptr(iSlot)*40
  6210  
  6211  	switch (*IdxRemSlot)(unsafe.Pointer(pSlot)).FeType {
  6212  	case SQLITE_NULL:
  6213  		break
  6214  
  6215  	case SQLITE_INTEGER:
  6216  		sqlite3.Xsqlite3_result_int64(tls, pCtx, (*IdxRemSlot)(unsafe.Pointer(pSlot)).FiVal)
  6217  		break
  6218  
  6219  	case SQLITE_FLOAT:
  6220  		sqlite3.Xsqlite3_result_double(tls, pCtx, (*IdxRemSlot)(unsafe.Pointer(pSlot)).FrVal)
  6221  		break
  6222  
  6223  	case SQLITE_BLOB:
  6224  		sqlite3.Xsqlite3_result_blob(tls, pCtx, (*IdxRemSlot)(unsafe.Pointer(pSlot)).Fz, (*IdxRemSlot)(unsafe.Pointer(pSlot)).Fn, libc.UintptrFromInt32(-1))
  6225  		break
  6226  
  6227  	case SQLITE_TEXT:
  6228  		sqlite3.Xsqlite3_result_text(tls, pCtx, (*IdxRemSlot)(unsafe.Pointer(pSlot)).Fz, (*IdxRemSlot)(unsafe.Pointer(pSlot)).Fn, libc.UintptrFromInt32(-1))
  6229  		break
  6230  	}
  6231  
  6232  	(*IdxRemSlot)(unsafe.Pointer(pSlot)).FeType = sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
  6233  	switch (*IdxRemSlot)(unsafe.Pointer(pSlot)).FeType {
  6234  	case SQLITE_NULL:
  6235  		break
  6236  
  6237  	case SQLITE_INTEGER:
  6238  		(*IdxRemSlot)(unsafe.Pointer(pSlot)).FiVal = sqlite3.Xsqlite3_value_int64(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
  6239  		break
  6240  
  6241  	case SQLITE_FLOAT:
  6242  		(*IdxRemSlot)(unsafe.Pointer(pSlot)).FrVal = sqlite3.Xsqlite3_value_double(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
  6243  		break
  6244  
  6245  	case SQLITE_BLOB:
  6246  		fallthrough
  6247  	case SQLITE_TEXT:
  6248  		{
  6249  			var nByte int32 = sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
  6250  			var pData uintptr = uintptr(0)
  6251  			if nByte > (*IdxRemSlot)(unsafe.Pointer(pSlot)).FnByte {
  6252  				var zNew uintptr = sqlite3.Xsqlite3_realloc(tls, (*IdxRemSlot)(unsafe.Pointer(pSlot)).Fz, nByte*2)
  6253  				if zNew == uintptr(0) {
  6254  					sqlite3.Xsqlite3_result_error_nomem(tls, pCtx)
  6255  					return
  6256  				}
  6257  				(*IdxRemSlot)(unsafe.Pointer(pSlot)).FnByte = nByte * 2
  6258  				(*IdxRemSlot)(unsafe.Pointer(pSlot)).Fz = zNew
  6259  			}
  6260  			(*IdxRemSlot)(unsafe.Pointer(pSlot)).Fn = nByte
  6261  			if (*IdxRemSlot)(unsafe.Pointer(pSlot)).FeType == SQLITE_BLOB {
  6262  				pData = sqlite3.Xsqlite3_value_blob(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
  6263  				if pData != 0 {
  6264  					libc.X__builtin___memcpy_chk(tls, (*IdxRemSlot)(unsafe.Pointer(pSlot)).Fz, pData, uint64(nByte), libc.X__builtin_object_size(tls, (*IdxRemSlot)(unsafe.Pointer(pSlot)).Fz, 0))
  6265  				}
  6266  			} else {
  6267  				pData = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
  6268  				libc.X__builtin___memcpy_chk(tls, (*IdxRemSlot)(unsafe.Pointer(pSlot)).Fz, pData, uint64(nByte), libc.X__builtin_object_size(tls, (*IdxRemSlot)(unsafe.Pointer(pSlot)).Fz, 0))
  6269  			}
  6270  			break
  6271  
  6272  		}
  6273  	}
  6274  }
  6275  
  6276  func idxLargestIndex(tls *libc.TLS, db uintptr, pnMax uintptr, pzErr uintptr) int32 {
  6277  	bp := tls.Alloc(12)
  6278  	defer tls.Free(12)
  6279  
  6280  	*(*int32)(unsafe.Pointer(bp + 8)) = SQLITE_OK
  6281  	var zMax uintptr = ts + 1052
  6282  	*(*uintptr)(unsafe.Pointer(bp)) = uintptr(0)
  6283  
  6284  	*(*int32)(unsafe.Pointer(pnMax)) = 0
  6285  	*(*int32)(unsafe.Pointer(bp + 8)) = idxPrepareStmt(tls, db, bp, pzErr, zMax)
  6286  	if *(*int32)(unsafe.Pointer(bp + 8)) == SQLITE_OK && SQLITE_ROW == sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp))) {
  6287  		*(*int32)(unsafe.Pointer(pnMax)) = sqlite3.Xsqlite3_column_int(tls, *(*uintptr)(unsafe.Pointer(bp)), 0) + 1
  6288  	}
  6289  	idxFinalize(tls, bp+8, *(*uintptr)(unsafe.Pointer(bp)))
  6290  
  6291  	return *(*int32)(unsafe.Pointer(bp + 8))
  6292  }
  6293  
  6294  func idxPopulateOneStat1(tls *libc.TLS, p uintptr, pIndexXInfo uintptr, pWriteStat uintptr, zTab uintptr, zIdx uintptr, pzErr uintptr) int32 {
  6295  	bp := tls.Alloc(128)
  6296  	defer tls.Free(128)
  6297  
  6298  	var zCols uintptr = uintptr(0)
  6299  	var zOrder uintptr = uintptr(0)
  6300  	var zQuery uintptr = uintptr(0)
  6301  	var nCol int32 = 0
  6302  	var i int32
  6303  	*(*uintptr)(unsafe.Pointer(bp + 120)) = uintptr(0)
  6304  	var aStat uintptr = uintptr(0)
  6305  	*(*int32)(unsafe.Pointer(bp + 112)) = SQLITE_OK
  6306  
  6307  	sqlite3.Xsqlite3_bind_text(tls, pIndexXInfo, 1, zIdx, -1, uintptr(0))
  6308  	for SQLITE_OK == *(*int32)(unsafe.Pointer(bp + 112)) && SQLITE_ROW == sqlite3.Xsqlite3_step(tls, pIndexXInfo) {
  6309  		var zComma uintptr
  6310  		if zCols == uintptr(0) {
  6311  			zComma = ts + 584
  6312  		} else {
  6313  			zComma = ts + 97
  6314  		}
  6315  		var zName uintptr = sqlite3.Xsqlite3_column_text(tls, pIndexXInfo, 0)
  6316  		var zColl uintptr = sqlite3.Xsqlite3_column_text(tls, pIndexXInfo, 1)
  6317  		zCols = idxAppendText(tls, bp+112, zCols,
  6318  			ts+1189, libc.VaList(bp, zComma, zName, nCol, zName, zColl))
  6319  		zOrder = idxAppendText(tls, bp+112, zOrder, ts+1224, libc.VaList(bp+40, zComma, libc.PreIncInt32(&nCol, 1)))
  6320  	}
  6321  	sqlite3.Xsqlite3_reset(tls, pIndexXInfo)
  6322  	if *(*int32)(unsafe.Pointer(bp + 112)) == SQLITE_OK {
  6323  		if (*sqlite3expert)(unsafe.Pointer(p)).FiSample == 100 {
  6324  			zQuery = sqlite3.Xsqlite3_mprintf(tls,
  6325  				ts+1229, libc.VaList(bp+56, zCols, zTab, zOrder))
  6326  		} else {
  6327  			zQuery = sqlite3.Xsqlite3_mprintf(tls,
  6328  				ts+1261, libc.VaList(bp+80, zCols, zOrder))
  6329  		}
  6330  	}
  6331  	sqlite3.Xsqlite3_free(tls, zCols)
  6332  	sqlite3.Xsqlite3_free(tls, zOrder)
  6333  
  6334  	if *(*int32)(unsafe.Pointer(bp + 112)) == SQLITE_OK {
  6335  		var dbrem uintptr = func() uintptr {
  6336  			if (*sqlite3expert)(unsafe.Pointer(p)).FiSample == 100 {
  6337  				return (*sqlite3expert)(unsafe.Pointer(p)).Fdb
  6338  			}
  6339  			return (*sqlite3expert)(unsafe.Pointer(p)).Fdbv
  6340  		}()
  6341  		*(*int32)(unsafe.Pointer(bp + 112)) = idxPrepareStmt(tls, dbrem, bp+120, pzErr, zQuery)
  6342  	}
  6343  	sqlite3.Xsqlite3_free(tls, zQuery)
  6344  
  6345  	if *(*int32)(unsafe.Pointer(bp + 112)) == SQLITE_OK {
  6346  		aStat = idxMalloc(tls, bp+112, int32(uint64(unsafe.Sizeof(int32(0)))*uint64(nCol+1)))
  6347  	}
  6348  	if *(*int32)(unsafe.Pointer(bp + 112)) == SQLITE_OK && SQLITE_ROW == sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp + 120))) {
  6349  		var pEntry uintptr
  6350  		var zStat uintptr = uintptr(0)
  6351  		for i = 0; i <= nCol; i++ {
  6352  			*(*int32)(unsafe.Pointer(aStat + uintptr(i)*4)) = 1
  6353  		}
  6354  		for *(*int32)(unsafe.Pointer(bp + 112)) == SQLITE_OK && SQLITE_ROW == sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp + 120))) {
  6355  			*(*int32)(unsafe.Pointer(aStat))++
  6356  			for i = 0; i < nCol; i++ {
  6357  				if sqlite3.Xsqlite3_column_int(tls, *(*uintptr)(unsafe.Pointer(bp + 120)), i) == 0 {
  6358  					break
  6359  				}
  6360  			}
  6361  			for ; i < nCol; i++ {
  6362  				*(*int32)(unsafe.Pointer(aStat + uintptr(i+1)*4))++
  6363  			}
  6364  		}
  6365  
  6366  		if *(*int32)(unsafe.Pointer(bp + 112)) == SQLITE_OK {
  6367  			var s0 int32 = *(*int32)(unsafe.Pointer(aStat))
  6368  			zStat = sqlite3.Xsqlite3_mprintf(tls, ts+1333, libc.VaList(bp+96, s0))
  6369  			if zStat == uintptr(0) {
  6370  				*(*int32)(unsafe.Pointer(bp + 112)) = SQLITE_NOMEM
  6371  			}
  6372  			for i = 1; *(*int32)(unsafe.Pointer(bp + 112)) == SQLITE_OK && i <= nCol; i++ {
  6373  				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))))
  6374  			}
  6375  		}
  6376  
  6377  		if *(*int32)(unsafe.Pointer(bp + 112)) == SQLITE_OK {
  6378  			sqlite3.Xsqlite3_bind_text(tls, pWriteStat, 1, zTab, -1, uintptr(0))
  6379  			sqlite3.Xsqlite3_bind_text(tls, pWriteStat, 2, zIdx, -1, uintptr(0))
  6380  			sqlite3.Xsqlite3_bind_text(tls, pWriteStat, 3, zStat, -1, uintptr(0))
  6381  			sqlite3.Xsqlite3_step(tls, pWriteStat)
  6382  			*(*int32)(unsafe.Pointer(bp + 112)) = sqlite3.Xsqlite3_reset(tls, pWriteStat)
  6383  		}
  6384  
  6385  		pEntry = idxHashFind(tls, p+88, zIdx, int32(libc.Xstrlen(tls, zIdx)))
  6386  		if pEntry != 0 {
  6387  			(*IdxHashEntry)(unsafe.Pointer(pEntry)).FzVal2 = zStat
  6388  		} else {
  6389  			sqlite3.Xsqlite3_free(tls, zStat)
  6390  		}
  6391  	}
  6392  	sqlite3.Xsqlite3_free(tls, aStat)
  6393  	idxFinalize(tls, bp+112, *(*uintptr)(unsafe.Pointer(bp + 120)))
  6394  
  6395  	return *(*int32)(unsafe.Pointer(bp + 112))
  6396  }
  6397  
  6398  func idxBuildSampleTable(tls *libc.TLS, p uintptr, zTab uintptr) int32 {
  6399  	bp := tls.Alloc(8)
  6400  	defer tls.Free(8)
  6401  
  6402  	var rc int32
  6403  	var zSql uintptr
  6404  
  6405  	rc = sqlite3.Xsqlite3_exec(tls, (*sqlite3expert)(unsafe.Pointer(p)).Fdbv, ts+1340, uintptr(0), uintptr(0), uintptr(0))
  6406  	if rc != SQLITE_OK {
  6407  		return rc
  6408  	}
  6409  
  6410  	zSql = sqlite3.Xsqlite3_mprintf(tls,
  6411  		ts+1404, libc.VaList(bp, zTab))
  6412  	if zSql == uintptr(0) {
  6413  		return SQLITE_NOMEM
  6414  	}
  6415  	rc = sqlite3.Xsqlite3_exec(tls, (*sqlite3expert)(unsafe.Pointer(p)).Fdbv, zSql, uintptr(0), uintptr(0), uintptr(0))
  6416  	sqlite3.Xsqlite3_free(tls, zSql)
  6417  
  6418  	return rc
  6419  }
  6420  
  6421  func idxPopulateStat1(tls *libc.TLS, p uintptr, pzErr uintptr) int32 {
  6422  	bp := tls.Alloc(64)
  6423  	defer tls.Free(64)
  6424  
  6425  	*(*int32)(unsafe.Pointer(bp + 4)) = SQLITE_OK
  6426  	*(*int32)(unsafe.Pointer(bp)) = 0
  6427  	var pCtx uintptr = uintptr(0)
  6428  
  6429  	var i int32
  6430  	var iPrev i64 = int64(-100000)
  6431  	*(*uintptr)(unsafe.Pointer(bp + 40)) = uintptr(0)
  6432  	*(*uintptr)(unsafe.Pointer(bp + 48)) = uintptr(0)
  6433  	*(*uintptr)(unsafe.Pointer(bp + 56)) = uintptr(0)
  6434  
  6435  	var zAllIndex uintptr = ts + 1480
  6436  	var zIndexXInfo uintptr = ts + 1594
  6437  	var zWrite uintptr = ts + 1649
  6438  
  6439  	if (*sqlite3expert)(unsafe.Pointer(p)).FiSample == 0 {
  6440  		return SQLITE_OK
  6441  	}
  6442  
  6443  	*(*int32)(unsafe.Pointer(bp + 4)) = idxLargestIndex(tls, (*sqlite3expert)(unsafe.Pointer(p)).Fdbm, bp, pzErr)
  6444  	if *(*int32)(unsafe.Pointer(bp)) <= 0 || *(*int32)(unsafe.Pointer(bp + 4)) != SQLITE_OK {
  6445  		return *(*int32)(unsafe.Pointer(bp + 4))
  6446  	}
  6447  
  6448  	*(*int32)(unsafe.Pointer(bp + 4)) = sqlite3.Xsqlite3_exec(tls, (*sqlite3expert)(unsafe.Pointer(p)).Fdbm, ts+1690, uintptr(0), uintptr(0), uintptr(0))
  6449  
  6450  	if *(*int32)(unsafe.Pointer(bp + 4)) == SQLITE_OK {
  6451  		var nByte int32 = int32(uint64(unsafe.Sizeof(IdxRemCtx{})) + uint64(unsafe.Sizeof(IdxRemSlot{}))*uint64(*(*int32)(unsafe.Pointer(bp))))
  6452  		pCtx = idxMalloc(tls, bp+4, nByte)
  6453  	}
  6454  
  6455  	if *(*int32)(unsafe.Pointer(bp + 4)) == SQLITE_OK {
  6456  		var dbrem uintptr = func() uintptr {
  6457  			if (*sqlite3expert)(unsafe.Pointer(p)).FiSample == 100 {
  6458  				return (*sqlite3expert)(unsafe.Pointer(p)).Fdb
  6459  			}
  6460  			return (*sqlite3expert)(unsafe.Pointer(p)).Fdbv
  6461  		}()
  6462  		*(*int32)(unsafe.Pointer(bp + 4)) = sqlite3.Xsqlite3_create_function(tls,
  6463  			dbrem, ts+1724, 2, SQLITE_UTF8, pCtx, *(*uintptr)(unsafe.Pointer(&struct {
  6464  				f func(*libc.TLS, uintptr, int32, uintptr)
  6465  			}{idxRemFunc})), uintptr(0), uintptr(0))
  6466  	}
  6467  	if *(*int32)(unsafe.Pointer(bp + 4)) == SQLITE_OK {
  6468  		*(*int32)(unsafe.Pointer(bp + 4)) = sqlite3.Xsqlite3_create_function(tls,
  6469  			(*sqlite3expert)(unsafe.Pointer(p)).Fdb, ts+1728, 0, SQLITE_UTF8, bp+8, *(*uintptr)(unsafe.Pointer(&struct {
  6470  				f func(*libc.TLS, uintptr, int32, uintptr)
  6471  			}{idxSampleFunc})), uintptr(0), uintptr(0))
  6472  	}
  6473  
  6474  	if *(*int32)(unsafe.Pointer(bp + 4)) == SQLITE_OK {
  6475  		(*IdxRemCtx)(unsafe.Pointer(pCtx)).FnSlot = *(*int32)(unsafe.Pointer(bp)) + 1
  6476  		*(*int32)(unsafe.Pointer(bp + 4)) = idxPrepareStmt(tls, (*sqlite3expert)(unsafe.Pointer(p)).Fdbm, bp+40, pzErr, zAllIndex)
  6477  	}
  6478  	if *(*int32)(unsafe.Pointer(bp + 4)) == SQLITE_OK {
  6479  		*(*int32)(unsafe.Pointer(bp + 4)) = idxPrepareStmt(tls, (*sqlite3expert)(unsafe.Pointer(p)).Fdbm, bp+48, pzErr, zIndexXInfo)
  6480  	}
  6481  	if *(*int32)(unsafe.Pointer(bp + 4)) == SQLITE_OK {
  6482  		*(*int32)(unsafe.Pointer(bp + 4)) = idxPrepareStmt(tls, (*sqlite3expert)(unsafe.Pointer(p)).Fdbm, bp+56, pzErr, zWrite)
  6483  	}
  6484  
  6485  	for *(*int32)(unsafe.Pointer(bp + 4)) == SQLITE_OK && SQLITE_ROW == sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp + 40))) {
  6486  		var iRowid i64 = sqlite3.Xsqlite3_column_int64(tls, *(*uintptr)(unsafe.Pointer(bp + 40)), 0)
  6487  		var zTab uintptr = sqlite3.Xsqlite3_column_text(tls, *(*uintptr)(unsafe.Pointer(bp + 40)), 1)
  6488  		var zIdx uintptr = sqlite3.Xsqlite3_column_text(tls, *(*uintptr)(unsafe.Pointer(bp + 40)), 2)
  6489  		if zTab == uintptr(0) || zIdx == uintptr(0) {
  6490  			continue
  6491  		}
  6492  		if (*sqlite3expert)(unsafe.Pointer(p)).FiSample < 100 && iPrev != iRowid {
  6493  			(*IdxSampleCtx)(unsafe.Pointer(bp + 8)).Ftarget = float64((*sqlite3expert)(unsafe.Pointer(p)).FiSample) / 100.0
  6494  			(*IdxSampleCtx)(unsafe.Pointer(bp + 8)).FiTarget = (*sqlite3expert)(unsafe.Pointer(p)).FiSample
  6495  			(*IdxSampleCtx)(unsafe.Pointer(bp + 8)).FnRow = 0.0
  6496  			(*IdxSampleCtx)(unsafe.Pointer(bp + 8)).FnRet = 0.0
  6497  			*(*int32)(unsafe.Pointer(bp + 4)) = idxBuildSampleTable(tls, p, zTab)
  6498  			if *(*int32)(unsafe.Pointer(bp + 4)) != SQLITE_OK {
  6499  				break
  6500  			}
  6501  		}
  6502  		*(*int32)(unsafe.Pointer(bp + 4)) = idxPopulateOneStat1(tls, p, *(*uintptr)(unsafe.Pointer(bp + 48)), *(*uintptr)(unsafe.Pointer(bp + 56)), zTab, zIdx, pzErr)
  6503  		iPrev = iRowid
  6504  	}
  6505  	if *(*int32)(unsafe.Pointer(bp + 4)) == SQLITE_OK && (*sqlite3expert)(unsafe.Pointer(p)).FiSample < 100 {
  6506  		*(*int32)(unsafe.Pointer(bp + 4)) = sqlite3.Xsqlite3_exec(tls, (*sqlite3expert)(unsafe.Pointer(p)).Fdbv,
  6507  			ts+1340, uintptr(0), uintptr(0), uintptr(0))
  6508  	}
  6509  
  6510  	idxFinalize(tls, bp+4, *(*uintptr)(unsafe.Pointer(bp + 40)))
  6511  	idxFinalize(tls, bp+4, *(*uintptr)(unsafe.Pointer(bp + 48)))
  6512  	idxFinalize(tls, bp+4, *(*uintptr)(unsafe.Pointer(bp + 56)))
  6513  
  6514  	if pCtx != 0 {
  6515  		for i = 0; i < (*IdxRemCtx)(unsafe.Pointer(pCtx)).FnSlot; i++ {
  6516  			sqlite3.Xsqlite3_free(tls, (*IdxRemSlot)(unsafe.Pointer(pCtx+8+uintptr(i)*40)).Fz)
  6517  		}
  6518  		sqlite3.Xsqlite3_free(tls, pCtx)
  6519  	}
  6520  
  6521  	if *(*int32)(unsafe.Pointer(bp + 4)) == SQLITE_OK {
  6522  		*(*int32)(unsafe.Pointer(bp + 4)) = sqlite3.Xsqlite3_exec(tls, (*sqlite3expert)(unsafe.Pointer(p)).Fdbm, ts+1735, uintptr(0), uintptr(0), uintptr(0))
  6523  	}
  6524  
  6525  	sqlite3.Xsqlite3_exec(tls, (*sqlite3expert)(unsafe.Pointer(p)).Fdb, ts+1340, uintptr(0), uintptr(0), uintptr(0))
  6526  	return *(*int32)(unsafe.Pointer(bp + 4))
  6527  }
  6528  
  6529  func sqlite3_expert_new(tls *libc.TLS, db uintptr, pzErrmsg uintptr) uintptr {
  6530  	bp := tls.Alloc(32)
  6531  	defer tls.Free(32)
  6532  
  6533  	*(*int32)(unsafe.Pointer(bp + 16)) = SQLITE_OK
  6534  	var pNew uintptr
  6535  
  6536  	pNew = idxMalloc(tls, bp+16, int32(unsafe.Sizeof(sqlite3expert{})))
  6537  
  6538  	if *(*int32)(unsafe.Pointer(bp + 16)) == SQLITE_OK {
  6539  		(*sqlite3expert)(unsafe.Pointer(pNew)).Fdb = db
  6540  		(*sqlite3expert)(unsafe.Pointer(pNew)).FiSample = 100
  6541  		*(*int32)(unsafe.Pointer(bp + 16)) = sqlite3.Xsqlite3_open(tls, ts+1757, pNew+24)
  6542  	}
  6543  	if *(*int32)(unsafe.Pointer(bp + 16)) == SQLITE_OK {
  6544  		*(*int32)(unsafe.Pointer(bp + 16)) = sqlite3.Xsqlite3_open(tls, ts+1757, pNew+16)
  6545  		if *(*int32)(unsafe.Pointer(bp + 16)) == SQLITE_OK {
  6546  			sqlite3.Xsqlite3_db_config(tls, (*sqlite3expert)(unsafe.Pointer(pNew)).Fdbm, SQLITE_DBCONFIG_TRIGGER_EQP, libc.VaList(bp, 1, uintptr(0)))
  6547  		}
  6548  	}
  6549  
  6550  	if *(*int32)(unsafe.Pointer(bp + 16)) == SQLITE_OK {
  6551  		*(*uintptr)(unsafe.Pointer(bp + 24)) = uintptr(0)
  6552  		*(*int32)(unsafe.Pointer(bp + 16)) = idxPrintfPrepareStmt(tls, (*sqlite3expert)(unsafe.Pointer(pNew)).Fdb, bp+24, pzErrmsg,
  6553  			ts+1766, 0)
  6554  		for *(*int32)(unsafe.Pointer(bp + 16)) == SQLITE_OK && SQLITE_ROW == sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp + 24))) {
  6555  			var zSql uintptr = sqlite3.Xsqlite3_column_text(tls, *(*uintptr)(unsafe.Pointer(bp + 24)), 0)
  6556  			if zSql != 0 {
  6557  				*(*int32)(unsafe.Pointer(bp + 16)) = sqlite3.Xsqlite3_exec(tls, (*sqlite3expert)(unsafe.Pointer(pNew)).Fdbm, zSql, uintptr(0), uintptr(0), pzErrmsg)
  6558  			}
  6559  		}
  6560  		idxFinalize(tls, bp+16, *(*uintptr)(unsafe.Pointer(bp + 24)))
  6561  	}
  6562  
  6563  	if *(*int32)(unsafe.Pointer(bp + 16)) == SQLITE_OK {
  6564  		*(*int32)(unsafe.Pointer(bp + 16)) = idxCreateVtabSchema(tls, pNew, pzErrmsg)
  6565  	}
  6566  
  6567  	if *(*int32)(unsafe.Pointer(bp + 16)) == SQLITE_OK {
  6568  		sqlite3.Xsqlite3_set_authorizer(tls, (*sqlite3expert)(unsafe.Pointer(pNew)).Fdbv, *(*uintptr)(unsafe.Pointer(&struct {
  6569  			f func(*libc.TLS, uintptr, int32, uintptr, uintptr, uintptr, uintptr) int32
  6570  		}{idxAuthCallback})), pNew)
  6571  	}
  6572  
  6573  	if *(*int32)(unsafe.Pointer(bp + 16)) != SQLITE_OK {
  6574  		sqlite3_expert_destroy(tls, pNew)
  6575  		pNew = uintptr(0)
  6576  	}
  6577  	return pNew
  6578  }
  6579  
  6580  func sqlite3_expert_config(tls *libc.TLS, p uintptr, op int32, va uintptr) int32 {
  6581  	var rc int32 = SQLITE_OK
  6582  	var ap va_list
  6583  	_ = ap
  6584  	ap = va
  6585  	switch op {
  6586  	case EXPERT_CONFIG_SAMPLE:
  6587  		{
  6588  			var iVal int32 = libc.VaInt32(&ap)
  6589  			if iVal < 0 {
  6590  				iVal = 0
  6591  			}
  6592  			if iVal > 100 {
  6593  				iVal = 100
  6594  			}
  6595  			(*sqlite3expert)(unsafe.Pointer(p)).FiSample = iVal
  6596  			break
  6597  
  6598  		}
  6599  	default:
  6600  		rc = SQLITE_NOTFOUND
  6601  		break
  6602  	}
  6603  
  6604  	_ = ap
  6605  	return rc
  6606  }
  6607  
  6608  func sqlite3_expert_sql(tls *libc.TLS, p uintptr, zSql uintptr, pzErr uintptr) int32 {
  6609  	bp := tls.Alloc(20)
  6610  	defer tls.Free(20)
  6611  
  6612  	var pScanOrig uintptr = (*sqlite3expert)(unsafe.Pointer(p)).FpScan
  6613  	var pStmtOrig uintptr = (*sqlite3expert)(unsafe.Pointer(p)).FpStatement
  6614  	*(*int32)(unsafe.Pointer(bp + 16)) = SQLITE_OK
  6615  	*(*uintptr)(unsafe.Pointer(bp + 8)) = zSql
  6616  
  6617  	if (*sqlite3expert)(unsafe.Pointer(p)).FbRun != 0 {
  6618  		return SQLITE_MISUSE
  6619  	}
  6620  
  6621  	for *(*int32)(unsafe.Pointer(bp + 16)) == SQLITE_OK && *(*uintptr)(unsafe.Pointer(bp + 8)) != 0 && *(*int8)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 8)))) != 0 {
  6622  		*(*uintptr)(unsafe.Pointer(bp)) = uintptr(0)
  6623  		*(*int32)(unsafe.Pointer(bp + 16)) = sqlite3.Xsqlite3_prepare_v2(tls, (*sqlite3expert)(unsafe.Pointer(p)).Fdbv, *(*uintptr)(unsafe.Pointer(bp + 8)), -1, bp, bp+8)
  6624  		if *(*int32)(unsafe.Pointer(bp + 16)) == SQLITE_OK {
  6625  			if *(*uintptr)(unsafe.Pointer(bp)) != 0 {
  6626  				var pNew uintptr
  6627  				var z uintptr = sqlite3.Xsqlite3_sql(tls, *(*uintptr)(unsafe.Pointer(bp)))
  6628  				var n int32 = int32(libc.Xstrlen(tls, z))
  6629  				pNew = idxMalloc(tls, bp+16, int32(uint64(unsafe.Sizeof(IdxStatement{}))+uint64(n)+uint64(1)))
  6630  				if *(*int32)(unsafe.Pointer(bp + 16)) == SQLITE_OK {
  6631  					(*IdxStatement)(unsafe.Pointer(pNew)).FzSql = pNew + 1*40
  6632  					libc.X__builtin___memcpy_chk(tls, (*IdxStatement)(unsafe.Pointer(pNew)).FzSql, z, uint64(n+1), libc.X__builtin_object_size(tls, (*IdxStatement)(unsafe.Pointer(pNew)).FzSql, 0))
  6633  					(*IdxStatement)(unsafe.Pointer(pNew)).FpNext = (*sqlite3expert)(unsafe.Pointer(p)).FpStatement
  6634  					if (*sqlite3expert)(unsafe.Pointer(p)).FpStatement != 0 {
  6635  						(*IdxStatement)(unsafe.Pointer(pNew)).FiId = (*IdxStatement)(unsafe.Pointer((*sqlite3expert)(unsafe.Pointer(p)).FpStatement)).FiId + 1
  6636  					}
  6637  					(*sqlite3expert)(unsafe.Pointer(p)).FpStatement = pNew
  6638  				}
  6639  				sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp)))
  6640  			}
  6641  		} else {
  6642  			idxDatabaseError(tls, (*sqlite3expert)(unsafe.Pointer(p)).Fdbv, pzErr)
  6643  		}
  6644  	}
  6645  
  6646  	if *(*int32)(unsafe.Pointer(bp + 16)) != SQLITE_OK {
  6647  		idxScanFree(tls, (*sqlite3expert)(unsafe.Pointer(p)).FpScan, pScanOrig)
  6648  		idxStatementFree(tls, (*sqlite3expert)(unsafe.Pointer(p)).FpStatement, pStmtOrig)
  6649  		(*sqlite3expert)(unsafe.Pointer(p)).FpScan = pScanOrig
  6650  		(*sqlite3expert)(unsafe.Pointer(p)).FpStatement = pStmtOrig
  6651  	}
  6652  
  6653  	return *(*int32)(unsafe.Pointer(bp + 16))
  6654  }
  6655  
  6656  func sqlite3_expert_analyze(tls *libc.TLS, p uintptr, pzErr uintptr) int32 {
  6657  	bp := tls.Alloc(28)
  6658  	defer tls.Free(28)
  6659  
  6660  	var pEntry uintptr
  6661  
  6662  	*(*int32)(unsafe.Pointer(bp + 24)) = idxProcessTriggers(tls, p, pzErr)
  6663  
  6664  	if *(*int32)(unsafe.Pointer(bp + 24)) == SQLITE_OK {
  6665  		*(*int32)(unsafe.Pointer(bp + 24)) = idxCreateCandidates(tls, p)
  6666  	} else if *(*int32)(unsafe.Pointer(bp + 24)) == SQLITE_BUSY|int32(3)<<8 {
  6667  		if pzErr != 0 {
  6668  			*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+1865, 0)
  6669  		}
  6670  		return *(*int32)(unsafe.Pointer(bp + 24))
  6671  	}
  6672  
  6673  	if *(*int32)(unsafe.Pointer(bp + 24)) == SQLITE_OK {
  6674  		*(*int32)(unsafe.Pointer(bp + 24)) = idxPopulateStat1(tls, p, pzErr)
  6675  	}
  6676  
  6677  	for pEntry = (*sqlite3expert)(unsafe.Pointer(p)).FhIdx.FpFirst; pEntry != 0; pEntry = (*IdxHashEntry)(unsafe.Pointer(pEntry)).FpNext {
  6678  		(*sqlite3expert)(unsafe.Pointer(p)).FzCandidates = idxAppendText(tls, bp+24, (*sqlite3expert)(unsafe.Pointer(p)).FzCandidates,
  6679  			ts+1909, libc.VaList(bp, (*IdxHashEntry)(unsafe.Pointer(pEntry)).FzVal,
  6680  				func() uintptr {
  6681  					if (*IdxHashEntry)(unsafe.Pointer(pEntry)).FzVal2 != 0 {
  6682  						return ts + 1918
  6683  					}
  6684  					return ts + 584
  6685  				}(), (*IdxHashEntry)(unsafe.Pointer(pEntry)).FzVal2))
  6686  	}
  6687  
  6688  	if *(*int32)(unsafe.Pointer(bp + 24)) == SQLITE_OK {
  6689  		*(*int32)(unsafe.Pointer(bp + 24)) = idxFindIndexes(tls, p, pzErr)
  6690  	}
  6691  
  6692  	if *(*int32)(unsafe.Pointer(bp + 24)) == SQLITE_OK {
  6693  		(*sqlite3expert)(unsafe.Pointer(p)).FbRun = 1
  6694  	}
  6695  	return *(*int32)(unsafe.Pointer(bp + 24))
  6696  }
  6697  
  6698  func sqlite3_expert_count(tls *libc.TLS, p uintptr) int32 {
  6699  	var nRet int32 = 0
  6700  	if (*sqlite3expert)(unsafe.Pointer(p)).FpStatement != 0 {
  6701  		nRet = (*IdxStatement)(unsafe.Pointer((*sqlite3expert)(unsafe.Pointer(p)).FpStatement)).FiId + 1
  6702  	}
  6703  	return nRet
  6704  }
  6705  
  6706  func sqlite3_expert_report(tls *libc.TLS, p uintptr, iStmt int32, eReport int32) uintptr {
  6707  	var zRet uintptr = uintptr(0)
  6708  	var pStmt uintptr
  6709  
  6710  	if (*sqlite3expert)(unsafe.Pointer(p)).FbRun == 0 {
  6711  		return uintptr(0)
  6712  	}
  6713  	for pStmt = (*sqlite3expert)(unsafe.Pointer(p)).FpStatement; pStmt != 0 && (*IdxStatement)(unsafe.Pointer(pStmt)).FiId != iStmt; pStmt = (*IdxStatement)(unsafe.Pointer(pStmt)).FpNext {
  6714  	}
  6715  	switch eReport {
  6716  	case EXPERT_REPORT_SQL:
  6717  		if pStmt != 0 {
  6718  			zRet = (*IdxStatement)(unsafe.Pointer(pStmt)).FzSql
  6719  		}
  6720  		break
  6721  	case EXPERT_REPORT_INDEXES:
  6722  		if pStmt != 0 {
  6723  			zRet = (*IdxStatement)(unsafe.Pointer(pStmt)).FzIdx
  6724  		}
  6725  		break
  6726  	case EXPERT_REPORT_PLAN:
  6727  		if pStmt != 0 {
  6728  			zRet = (*IdxStatement)(unsafe.Pointer(pStmt)).FzEQP
  6729  		}
  6730  		break
  6731  	case EXPERT_REPORT_CANDIDATES:
  6732  		zRet = (*sqlite3expert)(unsafe.Pointer(p)).FzCandidates
  6733  		break
  6734  	}
  6735  	return zRet
  6736  }
  6737  
  6738  func sqlite3_expert_destroy(tls *libc.TLS, p uintptr) {
  6739  	if p != 0 {
  6740  		sqlite3.Xsqlite3_close(tls, (*sqlite3expert)(unsafe.Pointer(p)).Fdbm)
  6741  		sqlite3.Xsqlite3_close(tls, (*sqlite3expert)(unsafe.Pointer(p)).Fdbv)
  6742  		idxScanFree(tls, (*sqlite3expert)(unsafe.Pointer(p)).FpScan, uintptr(0))
  6743  		idxStatementFree(tls, (*sqlite3expert)(unsafe.Pointer(p)).FpStatement, uintptr(0))
  6744  		idxTableFree(tls, (*sqlite3expert)(unsafe.Pointer(p)).FpTable)
  6745  		idxWriteFree(tls, (*sqlite3expert)(unsafe.Pointer(p)).FpWrite)
  6746  		idxHashClear(tls, p+88)
  6747  		sqlite3.Xsqlite3_free(tls, (*sqlite3expert)(unsafe.Pointer(p)).FzCandidates)
  6748  		sqlite3.Xsqlite3_free(tls, p)
  6749  	}
  6750  }
  6751  
  6752  type ClientData = uintptr
  6753  
  6754  type Tcl_WideInt = int64
  6755  type Tcl_WideUInt = uint64
  6756  
  6757  type stat = struct {
  6758  	Fst_dev       dev_t
  6759  	Fst_mode      mode_t
  6760  	Fst_nlink     nlink_t
  6761  	Fst_ino       uint64
  6762  	Fst_uid       uid_t
  6763  	Fst_gid       gid_t
  6764  	Fst_rdev      dev_t
  6765  	F__ccgo_pad1  [4]byte
  6766  	Fst_atimespec struct {
  6767  		Ftv_sec  int64
  6768  		Ftv_nsec int64
  6769  	}
  6770  	Fst_mtimespec struct {
  6771  		Ftv_sec  int64
  6772  		Ftv_nsec int64
  6773  	}
  6774  	Fst_ctimespec struct {
  6775  		Ftv_sec  int64
  6776  		Ftv_nsec int64
  6777  	}
  6778  	Fst_birthtimespec struct {
  6779  		Ftv_sec  int64
  6780  		Ftv_nsec int64
  6781  	}
  6782  	Fst_size    off_t
  6783  	Fst_blocks  blkcnt_t
  6784  	Fst_blksize blksize_t
  6785  	Fst_flags   uint32
  6786  	Fst_gen     uint32
  6787  	Fst_lspare  int32
  6788  	Fst_qspare  [2]int64
  6789  }
  6790  
  6791  type Tcl_Interp1 = struct {
  6792  	Fresult      uintptr
  6793  	FfreeProc    uintptr
  6794  	FerrorLine   int32
  6795  	F__ccgo_pad1 [4]byte
  6796  }
  6797  
  6798  type Tcl_Interp = Tcl_Interp1
  6799  
  6800  type Tcl_AsyncHandler = uintptr
  6801  type Tcl_Channel = uintptr
  6802  type Tcl_ChannelTypeVersion = uintptr
  6803  type Tcl_Command = uintptr
  6804  type Tcl_Condition = uintptr
  6805  type Tcl_Dict = uintptr
  6806  type Tcl_EncodingState = uintptr
  6807  type Tcl_Encoding = uintptr
  6808  type Tcl_Event1 = struct {
  6809  	Fproc    uintptr
  6810  	FnextPtr uintptr
  6811  }
  6812  
  6813  type Tcl_Event = Tcl_Event1
  6814  type Tcl_InterpState = uintptr
  6815  type Tcl_LoadHandle = uintptr
  6816  type Tcl_Mutex = uintptr
  6817  type Tcl_Pid = uintptr
  6818  type Tcl_RegExp = uintptr
  6819  type Tcl_ThreadDataKey = uintptr
  6820  type Tcl_ThreadId = uintptr
  6821  type Tcl_TimerToken = uintptr
  6822  type Tcl_Trace = uintptr
  6823  type Tcl_Var = uintptr
  6824  
  6825  type Tcl_RegExpIndices1 = struct {
  6826  	Fstart int64
  6827  	Fend   int64
  6828  }
  6829  
  6830  type Tcl_RegExpIndices = Tcl_RegExpIndices1
  6831  
  6832  type Tcl_RegExpInfo1 = struct {
  6833  	Fnsubs       int32
  6834  	F__ccgo_pad1 [4]byte
  6835  	Fmatches     uintptr
  6836  	FextendStart int64
  6837  	Freserved    int64
  6838  }
  6839  
  6840  type Tcl_RegExpInfo = Tcl_RegExpInfo1
  6841  
  6842  type Tcl_Stat_ = uintptr
  6843  type Tcl_OldStat_ = uintptr
  6844  
  6845  type Tcl_ValueType = uint32
  6846  
  6847  type Tcl_Value1 = struct {
  6848  	Ftype        Tcl_ValueType
  6849  	F__ccgo_pad1 [4]byte
  6850  	FintValue    int64
  6851  	FdoubleValue float64
  6852  	FwideValue   Tcl_WideInt
  6853  }
  6854  
  6855  type Tcl_Value = Tcl_Value1
  6856  
  6857  type Tcl_Obj1 = struct {
  6858  	FrefCount    int32
  6859  	F__ccgo_pad1 [4]byte
  6860  	Fbytes       uintptr
  6861  	Flength      int32
  6862  	F__ccgo_pad2 [4]byte
  6863  	FtypePtr     uintptr
  6864  	FinternalRep struct {
  6865  		FlongValue   int64
  6866  		F__ccgo_pad1 [8]byte
  6867  	}
  6868  }
  6869  
  6870  type Tcl_ObjType1 = struct {
  6871  	Fname             uintptr
  6872  	FfreeIntRepProc   uintptr
  6873  	FdupIntRepProc    uintptr
  6874  	FupdateStringProc uintptr
  6875  	FsetFromAnyProc   uintptr
  6876  }
  6877  
  6878  type Tcl_ObjType = Tcl_ObjType1
  6879  
  6880  type Tcl_Obj = Tcl_Obj1
  6881  
  6882  type Tcl_SavedResult1 = struct {
  6883  	Fresult       uintptr
  6884  	FfreeProc     uintptr
  6885  	FobjResultPtr uintptr
  6886  	FappendResult uintptr
  6887  	FappendAvl    int32
  6888  	FappendUsed   int32
  6889  	FresultSpace  [201]int8
  6890  	F__ccgo_pad1  [7]byte
  6891  }
  6892  
  6893  type Tcl_SavedResult = Tcl_SavedResult1
  6894  
  6895  type Tcl_Namespace1 = struct {
  6896  	Fname       uintptr
  6897  	FfullName   uintptr
  6898  	FclientData ClientData
  6899  	FdeleteProc uintptr
  6900  	FparentPtr  uintptr
  6901  }
  6902  
  6903  type Tcl_Namespace = Tcl_Namespace1
  6904  
  6905  type Tcl_CallFrame1 = struct {
  6906  	FnsPtr       uintptr
  6907  	Fdummy1      int32
  6908  	Fdummy2      int32
  6909  	Fdummy3      uintptr
  6910  	Fdummy4      uintptr
  6911  	Fdummy5      uintptr
  6912  	Fdummy6      int32
  6913  	F__ccgo_pad1 [4]byte
  6914  	Fdummy7      uintptr
  6915  	Fdummy8      uintptr
  6916  	Fdummy9      int32
  6917  	F__ccgo_pad2 [4]byte
  6918  	Fdummy10     uintptr
  6919  	Fdummy11     uintptr
  6920  	Fdummy12     uintptr
  6921  	Fdummy13     uintptr
  6922  }
  6923  
  6924  type Tcl_CallFrame = Tcl_CallFrame1
  6925  
  6926  type Tcl_CmdInfo1 = struct {
  6927  	FisNativeObjectProc int32
  6928  	F__ccgo_pad1        [4]byte
  6929  	FobjProc            uintptr
  6930  	FobjClientData      ClientData
  6931  	Fproc               uintptr
  6932  	FclientData         ClientData
  6933  	FdeleteProc         uintptr
  6934  	FdeleteData         ClientData
  6935  	FnamespacePtr       uintptr
  6936  }
  6937  
  6938  type Tcl_CmdInfo = Tcl_CmdInfo1
  6939  
  6940  type Tcl_DString1 = struct {
  6941  	Fstring      uintptr
  6942  	Flength      int32
  6943  	FspaceAvl    int32
  6944  	FstaticSpace [200]int8
  6945  }
  6946  
  6947  type Tcl_DString = Tcl_DString1
  6948  
  6949  type Tcl_HashKeyType1 = struct {
  6950  	Fversion         int32
  6951  	Fflags           int32
  6952  	FhashKeyProc     uintptr
  6953  	FcompareKeysProc uintptr
  6954  	FallocEntryProc  uintptr
  6955  	FfreeEntryProc   uintptr
  6956  }
  6957  
  6958  type Tcl_HashKeyType = Tcl_HashKeyType1
  6959  type Tcl_HashTable1 = struct {
  6960  	Fbuckets       uintptr
  6961  	FstaticBuckets [4]uintptr
  6962  	FnumBuckets    int32
  6963  	FnumEntries    int32
  6964  	FrebuildSize   int32
  6965  	FdownShift     int32
  6966  	Fmask          int32
  6967  	FkeyType       int32
  6968  	FfindProc      uintptr
  6969  	FcreateProc    uintptr
  6970  	FtypePtr       uintptr
  6971  }
  6972  
  6973  type Tcl_HashTable = Tcl_HashTable1
  6974  type Tcl_HashEntry1 = struct {
  6975  	FnextPtr    uintptr
  6976  	FtablePtr   uintptr
  6977  	Fhash       uintptr
  6978  	FclientData ClientData
  6979  	Fkey        struct{ FoneWordValue uintptr }
  6980  }
  6981  
  6982  type Tcl_HashEntry = Tcl_HashEntry1
  6983  
  6984  type Tcl_HashSearch1 = struct {
  6985  	FtablePtr     uintptr
  6986  	FnextIndex    int32
  6987  	F__ccgo_pad1  [4]byte
  6988  	FnextEntryPtr uintptr
  6989  }
  6990  
  6991  type Tcl_HashSearch = Tcl_HashSearch1
  6992  
  6993  type Tcl_DictSearch = struct {
  6994  	Fnext          uintptr
  6995  	Fepoch         int32
  6996  	F__ccgo_pad1   [4]byte
  6997  	FdictionaryPtr Tcl_Dict
  6998  }
  6999  
  7000  type Tcl_QueuePosition = uint32
  7001  
  7002  type Tcl_Time1 = struct {
  7003  	Fsec  int64
  7004  	Fusec int64
  7005  }
  7006  
  7007  type Tcl_Time = Tcl_Time1
  7008  
  7009  type Tcl_ChannelType1 = struct {
  7010  	FtypeName         uintptr
  7011  	Fversion          Tcl_ChannelTypeVersion
  7012  	FcloseProc        uintptr
  7013  	FinputProc        uintptr
  7014  	FoutputProc       uintptr
  7015  	FseekProc         uintptr
  7016  	FsetOptionProc    uintptr
  7017  	FgetOptionProc    uintptr
  7018  	FwatchProc        uintptr
  7019  	FgetHandleProc    uintptr
  7020  	Fclose2Proc       uintptr
  7021  	FblockModeProc    uintptr
  7022  	FflushProc        uintptr
  7023  	FhandlerProc      uintptr
  7024  	FwideSeekProc     uintptr
  7025  	FthreadActionProc uintptr
  7026  	FtruncateProc     uintptr
  7027  }
  7028  
  7029  type Tcl_ChannelType = Tcl_ChannelType1
  7030  
  7031  type Tcl_PathType = uint32
  7032  
  7033  type Tcl_GlobTypeData1 = struct {
  7034  	Ftype       int32
  7035  	Fperm       int32
  7036  	FmacType    uintptr
  7037  	FmacCreator uintptr
  7038  }
  7039  
  7040  type Tcl_GlobTypeData = Tcl_GlobTypeData1
  7041  
  7042  type utimbuf = struct {
  7043  	Factime  time_t
  7044  	Fmodtime time_t
  7045  }
  7046  
  7047  type Tcl_FSVersion = uintptr
  7048  
  7049  type Tcl_Filesystem1 = struct {
  7050  	FtypeName                 uintptr
  7051  	FstructureLength          int32
  7052  	F__ccgo_pad1              [4]byte
  7053  	Fversion                  Tcl_FSVersion
  7054  	FpathInFilesystemProc     uintptr
  7055  	FdupInternalRepProc       uintptr
  7056  	FfreeInternalRepProc      uintptr
  7057  	FinternalToNormalizedProc uintptr
  7058  	FcreateInternalRepProc    uintptr
  7059  	FnormalizePathProc        uintptr
  7060  	FfilesystemPathTypeProc   uintptr
  7061  	FfilesystemSeparatorProc  uintptr
  7062  	FstatProc                 uintptr
  7063  	FaccessProc               uintptr
  7064  	FopenFileChannelProc      uintptr
  7065  	FmatchInDirectoryProc     uintptr
  7066  	FutimeProc                uintptr
  7067  	FlinkProc                 uintptr
  7068  	FlistVolumesProc          uintptr
  7069  	FfileAttrStringsProc      uintptr
  7070  	FfileAttrsGetProc         uintptr
  7071  	FfileAttrsSetProc         uintptr
  7072  	FcreateDirectoryProc      uintptr
  7073  	FremoveDirectoryProc      uintptr
  7074  	FdeleteFileProc           uintptr
  7075  	FcopyFileProc             uintptr
  7076  	FrenameFileProc           uintptr
  7077  	FcopyDirectoryProc        uintptr
  7078  	FlstatProc                uintptr
  7079  	FloadFileProc             uintptr
  7080  	FgetCwdProc               uintptr
  7081  	FchdirProc                uintptr
  7082  }
  7083  
  7084  type Tcl_Filesystem = Tcl_Filesystem1
  7085  
  7086  type Tcl_NotifierProcs1 = struct {
  7087  	FsetTimerProc          uintptr
  7088  	FwaitForEventProc      uintptr
  7089  	FcreateFileHandlerProc uintptr
  7090  	FdeleteFileHandlerProc uintptr
  7091  	FinitNotifierProc      uintptr
  7092  	FfinalizeNotifierProc  uintptr
  7093  	FalertNotifierProc     uintptr
  7094  	FserviceModeHookProc   uintptr
  7095  }
  7096  
  7097  type Tcl_NotifierProcs = Tcl_NotifierProcs1
  7098  
  7099  type Tcl_EncodingType1 = struct {
  7100  	FencodingName uintptr
  7101  	FtoUtfProc    uintptr
  7102  	FfromUtfProc  uintptr
  7103  	FfreeProc     uintptr
  7104  	FclientData   ClientData
  7105  	FnullSize     int32
  7106  	F__ccgo_pad1  [4]byte
  7107  }
  7108  
  7109  type Tcl_EncodingType = Tcl_EncodingType1
  7110  
  7111  type Tcl_Token1 = struct {
  7112  	Ftype          int32
  7113  	F__ccgo_pad1   [4]byte
  7114  	Fstart         uintptr
  7115  	Fsize          int32
  7116  	FnumComponents int32
  7117  }
  7118  
  7119  type Tcl_Token = Tcl_Token1
  7120  
  7121  type Tcl_Parse1 = struct {
  7122  	FcommentStart    uintptr
  7123  	FcommentSize     int32
  7124  	F__ccgo_pad1     [4]byte
  7125  	FcommandStart    uintptr
  7126  	FcommandSize     int32
  7127  	FnumWords        int32
  7128  	FtokenPtr        uintptr
  7129  	FnumTokens       int32
  7130  	FtokensAvailable int32
  7131  	FerrorType       int32
  7132  	F__ccgo_pad2     [4]byte
  7133  	Fstring          uintptr
  7134  	Fend             uintptr
  7135  	Finterp          uintptr
  7136  	Fterm            uintptr
  7137  	Fincomplete      int32
  7138  	F__ccgo_pad3     [4]byte
  7139  	FstaticTokens    [20]Tcl_Token
  7140  }
  7141  
  7142  type Tcl_Parse = Tcl_Parse1
  7143  
  7144  type Tcl_UniChar = uint16
  7145  
  7146  type Tcl_Config1 = struct {
  7147  	Fkey   uintptr
  7148  	Fvalue uintptr
  7149  }
  7150  
  7151  type Tcl_Config = Tcl_Config1
  7152  type mp_digit = uint32
  7153  
  7154  type TclStubHooks1 = struct {
  7155  	FtclPlatStubs    uintptr
  7156  	FtclIntStubs     uintptr
  7157  	FtclIntPlatStubs uintptr
  7158  }
  7159  
  7160  type TclPlatStubs1 = struct {
  7161  	Fmagic       int32
  7162  	F__ccgo_pad1 [4]byte
  7163  	Fhooks       uintptr
  7164  }
  7165  
  7166  type TclStubHooks = TclStubHooks1
  7167  
  7168  type TclStubs1 = struct {
  7169  	Fmagic                              int32
  7170  	F__ccgo_pad1                        [4]byte
  7171  	Fhooks                              uintptr
  7172  	Ftcl_PkgProvideEx                   uintptr
  7173  	Ftcl_PkgRequireEx                   uintptr
  7174  	Ftcl_Panic                          uintptr
  7175  	Ftcl_Alloc                          uintptr
  7176  	Ftcl_Free                           uintptr
  7177  	Ftcl_Realloc                        uintptr
  7178  	Ftcl_DbCkalloc                      uintptr
  7179  	Ftcl_DbCkfree                       uintptr
  7180  	Ftcl_DbCkrealloc                    uintptr
  7181  	Ftcl_CreateFileHandler              uintptr
  7182  	Ftcl_DeleteFileHandler              uintptr
  7183  	Ftcl_SetTimer                       uintptr
  7184  	Ftcl_Sleep                          uintptr
  7185  	Ftcl_WaitForEvent                   uintptr
  7186  	Ftcl_AppendAllObjTypes              uintptr
  7187  	Ftcl_AppendStringsToObj             uintptr
  7188  	Ftcl_AppendToObj                    uintptr
  7189  	Ftcl_ConcatObj                      uintptr
  7190  	Ftcl_ConvertToType                  uintptr
  7191  	Ftcl_DbDecrRefCount                 uintptr
  7192  	Ftcl_DbIncrRefCount                 uintptr
  7193  	Ftcl_DbIsShared                     uintptr
  7194  	Ftcl_DbNewBooleanObj                uintptr
  7195  	Ftcl_DbNewByteArrayObj              uintptr
  7196  	Ftcl_DbNewDoubleObj                 uintptr
  7197  	Ftcl_DbNewListObj                   uintptr
  7198  	Ftcl_DbNewLongObj                   uintptr
  7199  	Ftcl_DbNewObj                       uintptr
  7200  	Ftcl_DbNewStringObj                 uintptr
  7201  	Ftcl_DuplicateObj                   uintptr
  7202  	FtclFreeObj                         uintptr
  7203  	Ftcl_GetBoolean                     uintptr
  7204  	Ftcl_GetBooleanFromObj              uintptr
  7205  	Ftcl_GetByteArrayFromObj            uintptr
  7206  	Ftcl_GetDouble                      uintptr
  7207  	Ftcl_GetDoubleFromObj               uintptr
  7208  	Ftcl_GetIndexFromObj                uintptr
  7209  	Ftcl_GetInt                         uintptr
  7210  	Ftcl_GetIntFromObj                  uintptr
  7211  	Ftcl_GetLongFromObj                 uintptr
  7212  	Ftcl_GetObjType                     uintptr
  7213  	Ftcl_GetStringFromObj               uintptr
  7214  	Ftcl_InvalidateStringRep            uintptr
  7215  	Ftcl_ListObjAppendList              uintptr
  7216  	Ftcl_ListObjAppendElement           uintptr
  7217  	Ftcl_ListObjGetElements             uintptr
  7218  	Ftcl_ListObjIndex                   uintptr
  7219  	Ftcl_ListObjLength                  uintptr
  7220  	Ftcl_ListObjReplace                 uintptr
  7221  	Ftcl_NewBooleanObj                  uintptr
  7222  	Ftcl_NewByteArrayObj                uintptr
  7223  	Ftcl_NewDoubleObj                   uintptr
  7224  	Ftcl_NewIntObj                      uintptr
  7225  	Ftcl_NewListObj                     uintptr
  7226  	Ftcl_NewLongObj                     uintptr
  7227  	Ftcl_NewObj                         uintptr
  7228  	Ftcl_NewStringObj                   uintptr
  7229  	Ftcl_SetBooleanObj                  uintptr
  7230  	Ftcl_SetByteArrayLength             uintptr
  7231  	Ftcl_SetByteArrayObj                uintptr
  7232  	Ftcl_SetDoubleObj                   uintptr
  7233  	Ftcl_SetIntObj                      uintptr
  7234  	Ftcl_SetListObj                     uintptr
  7235  	Ftcl_SetLongObj                     uintptr
  7236  	Ftcl_SetObjLength                   uintptr
  7237  	Ftcl_SetStringObj                   uintptr
  7238  	Ftcl_AddErrorInfo                   uintptr
  7239  	Ftcl_AddObjErrorInfo                uintptr
  7240  	Ftcl_AllowExceptions                uintptr
  7241  	Ftcl_AppendElement                  uintptr
  7242  	Ftcl_AppendResult                   uintptr
  7243  	Ftcl_AsyncCreate                    uintptr
  7244  	Ftcl_AsyncDelete                    uintptr
  7245  	Ftcl_AsyncInvoke                    uintptr
  7246  	Ftcl_AsyncMark                      uintptr
  7247  	Ftcl_AsyncReady                     uintptr
  7248  	Ftcl_BackgroundError                uintptr
  7249  	Ftcl_Backslash                      uintptr
  7250  	Ftcl_BadChannelOption               uintptr
  7251  	Ftcl_CallWhenDeleted                uintptr
  7252  	Ftcl_CancelIdleCall                 uintptr
  7253  	Ftcl_Close                          uintptr
  7254  	Ftcl_CommandComplete                uintptr
  7255  	Ftcl_Concat                         uintptr
  7256  	Ftcl_ConvertElement                 uintptr
  7257  	Ftcl_ConvertCountedElement          uintptr
  7258  	Ftcl_CreateAlias                    uintptr
  7259  	Ftcl_CreateAliasObj                 uintptr
  7260  	Ftcl_CreateChannel                  uintptr
  7261  	Ftcl_CreateChannelHandler           uintptr
  7262  	Ftcl_CreateCloseHandler             uintptr
  7263  	Ftcl_CreateCommand                  uintptr
  7264  	Ftcl_CreateEventSource              uintptr
  7265  	Ftcl_CreateExitHandler              uintptr
  7266  	Ftcl_CreateInterp                   uintptr
  7267  	Ftcl_CreateMathFunc                 uintptr
  7268  	Ftcl_CreateObjCommand               uintptr
  7269  	Ftcl_CreateSlave                    uintptr
  7270  	Ftcl_CreateTimerHandler             uintptr
  7271  	Ftcl_CreateTrace                    uintptr
  7272  	Ftcl_DeleteAssocData                uintptr
  7273  	Ftcl_DeleteChannelHandler           uintptr
  7274  	Ftcl_DeleteCloseHandler             uintptr
  7275  	Ftcl_DeleteCommand                  uintptr
  7276  	Ftcl_DeleteCommandFromToken         uintptr
  7277  	Ftcl_DeleteEvents                   uintptr
  7278  	Ftcl_DeleteEventSource              uintptr
  7279  	Ftcl_DeleteExitHandler              uintptr
  7280  	Ftcl_DeleteHashEntry                uintptr
  7281  	Ftcl_DeleteHashTable                uintptr
  7282  	Ftcl_DeleteInterp                   uintptr
  7283  	Ftcl_DetachPids                     uintptr
  7284  	Ftcl_DeleteTimerHandler             uintptr
  7285  	Ftcl_DeleteTrace                    uintptr
  7286  	Ftcl_DontCallWhenDeleted            uintptr
  7287  	Ftcl_DoOneEvent                     uintptr
  7288  	Ftcl_DoWhenIdle                     uintptr
  7289  	Ftcl_DStringAppend                  uintptr
  7290  	Ftcl_DStringAppendElement           uintptr
  7291  	Ftcl_DStringEndSublist              uintptr
  7292  	Ftcl_DStringFree                    uintptr
  7293  	Ftcl_DStringGetResult               uintptr
  7294  	Ftcl_DStringInit                    uintptr
  7295  	Ftcl_DStringResult                  uintptr
  7296  	Ftcl_DStringSetLength               uintptr
  7297  	Ftcl_DStringStartSublist            uintptr
  7298  	Ftcl_Eof                            uintptr
  7299  	Ftcl_ErrnoId                        uintptr
  7300  	Ftcl_ErrnoMsg                       uintptr
  7301  	Ftcl_Eval                           uintptr
  7302  	Ftcl_EvalFile                       uintptr
  7303  	Ftcl_EvalObj                        uintptr
  7304  	Ftcl_EventuallyFree                 uintptr
  7305  	Ftcl_Exit                           uintptr
  7306  	Ftcl_ExposeCommand                  uintptr
  7307  	Ftcl_ExprBoolean                    uintptr
  7308  	Ftcl_ExprBooleanObj                 uintptr
  7309  	Ftcl_ExprDouble                     uintptr
  7310  	Ftcl_ExprDoubleObj                  uintptr
  7311  	Ftcl_ExprLong                       uintptr
  7312  	Ftcl_ExprLongObj                    uintptr
  7313  	Ftcl_ExprObj                        uintptr
  7314  	Ftcl_ExprString                     uintptr
  7315  	Ftcl_Finalize                       uintptr
  7316  	Ftcl_FindExecutable                 uintptr
  7317  	Ftcl_FirstHashEntry                 uintptr
  7318  	Ftcl_Flush                          uintptr
  7319  	Ftcl_FreeResult                     uintptr
  7320  	Ftcl_GetAlias                       uintptr
  7321  	Ftcl_GetAliasObj                    uintptr
  7322  	Ftcl_GetAssocData                   uintptr
  7323  	Ftcl_GetChannel                     uintptr
  7324  	Ftcl_GetChannelBufferSize           uintptr
  7325  	Ftcl_GetChannelHandle               uintptr
  7326  	Ftcl_GetChannelInstanceData         uintptr
  7327  	Ftcl_GetChannelMode                 uintptr
  7328  	Ftcl_GetChannelName                 uintptr
  7329  	Ftcl_GetChannelOption               uintptr
  7330  	Ftcl_GetChannelType                 uintptr
  7331  	Ftcl_GetCommandInfo                 uintptr
  7332  	Ftcl_GetCommandName                 uintptr
  7333  	Ftcl_GetErrno                       uintptr
  7334  	Ftcl_GetHostName                    uintptr
  7335  	Ftcl_GetInterpPath                  uintptr
  7336  	Ftcl_GetMaster                      uintptr
  7337  	Ftcl_GetNameOfExecutable            uintptr
  7338  	Ftcl_GetObjResult                   uintptr
  7339  	Ftcl_GetOpenFile                    uintptr
  7340  	Ftcl_GetPathType                    uintptr
  7341  	Ftcl_Gets                           uintptr
  7342  	Ftcl_GetsObj                        uintptr
  7343  	Ftcl_GetServiceMode                 uintptr
  7344  	Ftcl_GetSlave                       uintptr
  7345  	Ftcl_GetStdChannel                  uintptr
  7346  	Ftcl_GetStringResult                uintptr
  7347  	Ftcl_GetVar                         uintptr
  7348  	Ftcl_GetVar2                        uintptr
  7349  	Ftcl_GlobalEval                     uintptr
  7350  	Ftcl_GlobalEvalObj                  uintptr
  7351  	Ftcl_HideCommand                    uintptr
  7352  	Ftcl_Init                           uintptr
  7353  	Ftcl_InitHashTable                  uintptr
  7354  	Ftcl_InputBlocked                   uintptr
  7355  	Ftcl_InputBuffered                  uintptr
  7356  	Ftcl_InterpDeleted                  uintptr
  7357  	Ftcl_IsSafe                         uintptr
  7358  	Ftcl_JoinPath                       uintptr
  7359  	Ftcl_LinkVar                        uintptr
  7360  	Freserved188                        uintptr
  7361  	Ftcl_MakeFileChannel                uintptr
  7362  	Ftcl_MakeSafe                       uintptr
  7363  	Ftcl_MakeTcpClientChannel           uintptr
  7364  	Ftcl_Merge                          uintptr
  7365  	Ftcl_NextHashEntry                  uintptr
  7366  	Ftcl_NotifyChannel                  uintptr
  7367  	Ftcl_ObjGetVar2                     uintptr
  7368  	Ftcl_ObjSetVar2                     uintptr
  7369  	Ftcl_OpenCommandChannel             uintptr
  7370  	Ftcl_OpenFileChannel                uintptr
  7371  	Ftcl_OpenTcpClient                  uintptr
  7372  	Ftcl_OpenTcpServer                  uintptr
  7373  	Ftcl_Preserve                       uintptr
  7374  	Ftcl_PrintDouble                    uintptr
  7375  	Ftcl_PutEnv                         uintptr
  7376  	Ftcl_PosixError                     uintptr
  7377  	Ftcl_QueueEvent                     uintptr
  7378  	Ftcl_Read                           uintptr
  7379  	Ftcl_ReapDetachedProcs              uintptr
  7380  	Ftcl_RecordAndEval                  uintptr
  7381  	Ftcl_RecordAndEvalObj               uintptr
  7382  	Ftcl_RegisterChannel                uintptr
  7383  	Ftcl_RegisterObjType                uintptr
  7384  	Ftcl_RegExpCompile                  uintptr
  7385  	Ftcl_RegExpExec                     uintptr
  7386  	Ftcl_RegExpMatch                    uintptr
  7387  	Ftcl_RegExpRange                    uintptr
  7388  	Ftcl_Release                        uintptr
  7389  	Ftcl_ResetResult                    uintptr
  7390  	Ftcl_ScanElement                    uintptr
  7391  	Ftcl_ScanCountedElement             uintptr
  7392  	Ftcl_SeekOld                        uintptr
  7393  	Ftcl_ServiceAll                     uintptr
  7394  	Ftcl_ServiceEvent                   uintptr
  7395  	Ftcl_SetAssocData                   uintptr
  7396  	Ftcl_SetChannelBufferSize           uintptr
  7397  	Ftcl_SetChannelOption               uintptr
  7398  	Ftcl_SetCommandInfo                 uintptr
  7399  	Ftcl_SetErrno                       uintptr
  7400  	Ftcl_SetErrorCode                   uintptr
  7401  	Ftcl_SetMaxBlockTime                uintptr
  7402  	Ftcl_SetPanicProc                   uintptr
  7403  	Ftcl_SetRecursionLimit              uintptr
  7404  	Ftcl_SetResult                      uintptr
  7405  	Ftcl_SetServiceMode                 uintptr
  7406  	Ftcl_SetObjErrorCode                uintptr
  7407  	Ftcl_SetObjResult                   uintptr
  7408  	Ftcl_SetStdChannel                  uintptr
  7409  	Ftcl_SetVar                         uintptr
  7410  	Ftcl_SetVar2                        uintptr
  7411  	Ftcl_SignalId                       uintptr
  7412  	Ftcl_SignalMsg                      uintptr
  7413  	Ftcl_SourceRCFile                   uintptr
  7414  	Ftcl_SplitList                      uintptr
  7415  	Ftcl_SplitPath                      uintptr
  7416  	Ftcl_StaticPackage                  uintptr
  7417  	Ftcl_StringMatch                    uintptr
  7418  	Ftcl_TellOld                        uintptr
  7419  	Ftcl_TraceVar                       uintptr
  7420  	Ftcl_TraceVar2                      uintptr
  7421  	Ftcl_TranslateFileName              uintptr
  7422  	Ftcl_Ungets                         uintptr
  7423  	Ftcl_UnlinkVar                      uintptr
  7424  	Ftcl_UnregisterChannel              uintptr
  7425  	Ftcl_UnsetVar                       uintptr
  7426  	Ftcl_UnsetVar2                      uintptr
  7427  	Ftcl_UntraceVar                     uintptr
  7428  	Ftcl_UntraceVar2                    uintptr
  7429  	Ftcl_UpdateLinkedVar                uintptr
  7430  	Ftcl_UpVar                          uintptr
  7431  	Ftcl_UpVar2                         uintptr
  7432  	Ftcl_VarEval                        uintptr
  7433  	Ftcl_VarTraceInfo                   uintptr
  7434  	Ftcl_VarTraceInfo2                  uintptr
  7435  	Ftcl_Write                          uintptr
  7436  	Ftcl_WrongNumArgs                   uintptr
  7437  	Ftcl_DumpActiveMemory               uintptr
  7438  	Ftcl_ValidateAllMemory              uintptr
  7439  	Ftcl_AppendResultVA                 uintptr
  7440  	Ftcl_AppendStringsToObjVA           uintptr
  7441  	Ftcl_HashStats                      uintptr
  7442  	Ftcl_ParseVar                       uintptr
  7443  	Ftcl_PkgPresent                     uintptr
  7444  	Ftcl_PkgPresentEx                   uintptr
  7445  	Ftcl_PkgProvide                     uintptr
  7446  	Ftcl_PkgRequire                     uintptr
  7447  	Ftcl_SetErrorCodeVA                 uintptr
  7448  	Ftcl_VarEvalVA                      uintptr
  7449  	Ftcl_WaitPid                        uintptr
  7450  	Ftcl_PanicVA                        uintptr
  7451  	Ftcl_GetVersion                     uintptr
  7452  	Ftcl_InitMemory                     uintptr
  7453  	Ftcl_StackChannel                   uintptr
  7454  	Ftcl_UnstackChannel                 uintptr
  7455  	Ftcl_GetStackedChannel              uintptr
  7456  	Ftcl_SetMainLoop                    uintptr
  7457  	Freserved285                        uintptr
  7458  	Ftcl_AppendObjToObj                 uintptr
  7459  	Ftcl_CreateEncoding                 uintptr
  7460  	Ftcl_CreateThreadExitHandler        uintptr
  7461  	Ftcl_DeleteThreadExitHandler        uintptr
  7462  	Ftcl_DiscardResult                  uintptr
  7463  	Ftcl_EvalEx                         uintptr
  7464  	Ftcl_EvalObjv                       uintptr
  7465  	Ftcl_EvalObjEx                      uintptr
  7466  	Ftcl_ExitThread                     uintptr
  7467  	Ftcl_ExternalToUtf                  uintptr
  7468  	Ftcl_ExternalToUtfDString           uintptr
  7469  	Ftcl_FinalizeThread                 uintptr
  7470  	Ftcl_FinalizeNotifier               uintptr
  7471  	Ftcl_FreeEncoding                   uintptr
  7472  	Ftcl_GetCurrentThread               uintptr
  7473  	Ftcl_GetEncoding                    uintptr
  7474  	Ftcl_GetEncodingName                uintptr
  7475  	Ftcl_GetEncodingNames               uintptr
  7476  	Ftcl_GetIndexFromObjStruct          uintptr
  7477  	Ftcl_GetThreadData                  uintptr
  7478  	Ftcl_GetVar2Ex                      uintptr
  7479  	Ftcl_InitNotifier                   uintptr
  7480  	Ftcl_MutexLock                      uintptr
  7481  	Ftcl_MutexUnlock                    uintptr
  7482  	Ftcl_ConditionNotify                uintptr
  7483  	Ftcl_ConditionWait                  uintptr
  7484  	Ftcl_NumUtfChars                    uintptr
  7485  	Ftcl_ReadChars                      uintptr
  7486  	Ftcl_RestoreResult                  uintptr
  7487  	Ftcl_SaveResult                     uintptr
  7488  	Ftcl_SetSystemEncoding              uintptr
  7489  	Ftcl_SetVar2Ex                      uintptr
  7490  	Ftcl_ThreadAlert                    uintptr
  7491  	Ftcl_ThreadQueueEvent               uintptr
  7492  	Ftcl_UniCharAtIndex                 uintptr
  7493  	Ftcl_UniCharToLower                 uintptr
  7494  	Ftcl_UniCharToTitle                 uintptr
  7495  	Ftcl_UniCharToUpper                 uintptr
  7496  	Ftcl_UniCharToUtf                   uintptr
  7497  	Ftcl_UtfAtIndex                     uintptr
  7498  	Ftcl_UtfCharComplete                uintptr
  7499  	Ftcl_UtfBackslash                   uintptr
  7500  	Ftcl_UtfFindFirst                   uintptr
  7501  	Ftcl_UtfFindLast                    uintptr
  7502  	Ftcl_UtfNext                        uintptr
  7503  	Ftcl_UtfPrev                        uintptr
  7504  	Ftcl_UtfToExternal                  uintptr
  7505  	Ftcl_UtfToExternalDString           uintptr
  7506  	Ftcl_UtfToLower                     uintptr
  7507  	Ftcl_UtfToTitle                     uintptr
  7508  	Ftcl_UtfToUniChar                   uintptr
  7509  	Ftcl_UtfToUpper                     uintptr
  7510  	Ftcl_WriteChars                     uintptr
  7511  	Ftcl_WriteObj                       uintptr
  7512  	Ftcl_GetString                      uintptr
  7513  	Ftcl_GetDefaultEncodingDir          uintptr
  7514  	Ftcl_SetDefaultEncodingDir          uintptr
  7515  	Ftcl_AlertNotifier                  uintptr
  7516  	Ftcl_ServiceModeHook                uintptr
  7517  	Ftcl_UniCharIsAlnum                 uintptr
  7518  	Ftcl_UniCharIsAlpha                 uintptr
  7519  	Ftcl_UniCharIsDigit                 uintptr
  7520  	Ftcl_UniCharIsLower                 uintptr
  7521  	Ftcl_UniCharIsSpace                 uintptr
  7522  	Ftcl_UniCharIsUpper                 uintptr
  7523  	Ftcl_UniCharIsWordChar              uintptr
  7524  	Ftcl_UniCharLen                     uintptr
  7525  	Ftcl_UniCharNcmp                    uintptr
  7526  	Ftcl_UniCharToUtfDString            uintptr
  7527  	Ftcl_UtfToUniCharDString            uintptr
  7528  	Ftcl_GetRegExpFromObj               uintptr
  7529  	Ftcl_EvalTokens                     uintptr
  7530  	Ftcl_FreeParse                      uintptr
  7531  	Ftcl_LogCommandInfo                 uintptr
  7532  	Ftcl_ParseBraces                    uintptr
  7533  	Ftcl_ParseCommand                   uintptr
  7534  	Ftcl_ParseExpr                      uintptr
  7535  	Ftcl_ParseQuotedString              uintptr
  7536  	Ftcl_ParseVarName                   uintptr
  7537  	Ftcl_GetCwd                         uintptr
  7538  	Ftcl_Chdir                          uintptr
  7539  	Ftcl_Access                         uintptr
  7540  	Ftcl_Stat                           uintptr
  7541  	Ftcl_UtfNcmp                        uintptr
  7542  	Ftcl_UtfNcasecmp                    uintptr
  7543  	Ftcl_StringCaseMatch                uintptr
  7544  	Ftcl_UniCharIsControl               uintptr
  7545  	Ftcl_UniCharIsGraph                 uintptr
  7546  	Ftcl_UniCharIsPrint                 uintptr
  7547  	Ftcl_UniCharIsPunct                 uintptr
  7548  	Ftcl_RegExpExecObj                  uintptr
  7549  	Ftcl_RegExpGetInfo                  uintptr
  7550  	Ftcl_NewUnicodeObj                  uintptr
  7551  	Ftcl_SetUnicodeObj                  uintptr
  7552  	Ftcl_GetCharLength                  uintptr
  7553  	Ftcl_GetUniChar                     uintptr
  7554  	Ftcl_GetUnicode                     uintptr
  7555  	Ftcl_GetRange                       uintptr
  7556  	Ftcl_AppendUnicodeToObj             uintptr
  7557  	Ftcl_RegExpMatchObj                 uintptr
  7558  	Ftcl_SetNotifier                    uintptr
  7559  	Ftcl_GetAllocMutex                  uintptr
  7560  	Ftcl_GetChannelNames                uintptr
  7561  	Ftcl_GetChannelNamesEx              uintptr
  7562  	Ftcl_ProcObjCmd                     uintptr
  7563  	Ftcl_ConditionFinalize              uintptr
  7564  	Ftcl_MutexFinalize                  uintptr
  7565  	Ftcl_CreateThread                   uintptr
  7566  	Ftcl_ReadRaw                        uintptr
  7567  	Ftcl_WriteRaw                       uintptr
  7568  	Ftcl_GetTopChannel                  uintptr
  7569  	Ftcl_ChannelBuffered                uintptr
  7570  	Ftcl_ChannelName                    uintptr
  7571  	Ftcl_ChannelVersion                 uintptr
  7572  	Ftcl_ChannelBlockModeProc           uintptr
  7573  	Ftcl_ChannelCloseProc               uintptr
  7574  	Ftcl_ChannelClose2Proc              uintptr
  7575  	Ftcl_ChannelInputProc               uintptr
  7576  	Ftcl_ChannelOutputProc              uintptr
  7577  	Ftcl_ChannelSeekProc                uintptr
  7578  	Ftcl_ChannelSetOptionProc           uintptr
  7579  	Ftcl_ChannelGetOptionProc           uintptr
  7580  	Ftcl_ChannelWatchProc               uintptr
  7581  	Ftcl_ChannelGetHandleProc           uintptr
  7582  	Ftcl_ChannelFlushProc               uintptr
  7583  	Ftcl_ChannelHandlerProc             uintptr
  7584  	Ftcl_JoinThread                     uintptr
  7585  	Ftcl_IsChannelShared                uintptr
  7586  	Ftcl_IsChannelRegistered            uintptr
  7587  	Ftcl_CutChannel                     uintptr
  7588  	Ftcl_SpliceChannel                  uintptr
  7589  	Ftcl_ClearChannelHandlers           uintptr
  7590  	Ftcl_IsChannelExisting              uintptr
  7591  	Ftcl_UniCharNcasecmp                uintptr
  7592  	Ftcl_UniCharCaseMatch               uintptr
  7593  	Ftcl_FindHashEntry                  uintptr
  7594  	Ftcl_CreateHashEntry                uintptr
  7595  	Ftcl_InitCustomHashTable            uintptr
  7596  	Ftcl_InitObjHashTable               uintptr
  7597  	Ftcl_CommandTraceInfo               uintptr
  7598  	Ftcl_TraceCommand                   uintptr
  7599  	Ftcl_UntraceCommand                 uintptr
  7600  	Ftcl_AttemptAlloc                   uintptr
  7601  	Ftcl_AttemptDbCkalloc               uintptr
  7602  	Ftcl_AttemptRealloc                 uintptr
  7603  	Ftcl_AttemptDbCkrealloc             uintptr
  7604  	Ftcl_AttemptSetObjLength            uintptr
  7605  	Ftcl_GetChannelThread               uintptr
  7606  	Ftcl_GetUnicodeFromObj              uintptr
  7607  	Ftcl_GetMathFuncInfo                uintptr
  7608  	Ftcl_ListMathFuncs                  uintptr
  7609  	Ftcl_SubstObj                       uintptr
  7610  	Ftcl_DetachChannel                  uintptr
  7611  	Ftcl_IsStandardChannel              uintptr
  7612  	Ftcl_FSCopyFile                     uintptr
  7613  	Ftcl_FSCopyDirectory                uintptr
  7614  	Ftcl_FSCreateDirectory              uintptr
  7615  	Ftcl_FSDeleteFile                   uintptr
  7616  	Ftcl_FSLoadFile                     uintptr
  7617  	Ftcl_FSMatchInDirectory             uintptr
  7618  	Ftcl_FSLink                         uintptr
  7619  	Ftcl_FSRemoveDirectory              uintptr
  7620  	Ftcl_FSRenameFile                   uintptr
  7621  	Ftcl_FSLstat                        uintptr
  7622  	Ftcl_FSUtime                        uintptr
  7623  	Ftcl_FSFileAttrsGet                 uintptr
  7624  	Ftcl_FSFileAttrsSet                 uintptr
  7625  	Ftcl_FSFileAttrStrings              uintptr
  7626  	Ftcl_FSStat                         uintptr
  7627  	Ftcl_FSAccess                       uintptr
  7628  	Ftcl_FSOpenFileChannel              uintptr
  7629  	Ftcl_FSGetCwd                       uintptr
  7630  	Ftcl_FSChdir                        uintptr
  7631  	Ftcl_FSConvertToPathType            uintptr
  7632  	Ftcl_FSJoinPath                     uintptr
  7633  	Ftcl_FSSplitPath                    uintptr
  7634  	Ftcl_FSEqualPaths                   uintptr
  7635  	Ftcl_FSGetNormalizedPath            uintptr
  7636  	Ftcl_FSJoinToPath                   uintptr
  7637  	Ftcl_FSGetInternalRep               uintptr
  7638  	Ftcl_FSGetTranslatedPath            uintptr
  7639  	Ftcl_FSEvalFile                     uintptr
  7640  	Ftcl_FSNewNativePath                uintptr
  7641  	Ftcl_FSGetNativePath                uintptr
  7642  	Ftcl_FSFileSystemInfo               uintptr
  7643  	Ftcl_FSPathSeparator                uintptr
  7644  	Ftcl_FSListVolumes                  uintptr
  7645  	Ftcl_FSRegister                     uintptr
  7646  	Ftcl_FSUnregister                   uintptr
  7647  	Ftcl_FSData                         uintptr
  7648  	Ftcl_FSGetTranslatedStringPath      uintptr
  7649  	Ftcl_FSGetFileSystemForPath         uintptr
  7650  	Ftcl_FSGetPathType                  uintptr
  7651  	Ftcl_OutputBuffered                 uintptr
  7652  	Ftcl_FSMountsChanged                uintptr
  7653  	Ftcl_EvalTokensStandard             uintptr
  7654  	Ftcl_GetTime                        uintptr
  7655  	Ftcl_CreateObjTrace                 uintptr
  7656  	Ftcl_GetCommandInfoFromToken        uintptr
  7657  	Ftcl_SetCommandInfoFromToken        uintptr
  7658  	Ftcl_DbNewWideIntObj                uintptr
  7659  	Ftcl_GetWideIntFromObj              uintptr
  7660  	Ftcl_NewWideIntObj                  uintptr
  7661  	Ftcl_SetWideIntObj                  uintptr
  7662  	Ftcl_AllocStatBuf                   uintptr
  7663  	Ftcl_Seek                           uintptr
  7664  	Ftcl_Tell                           uintptr
  7665  	Ftcl_ChannelWideSeekProc            uintptr
  7666  	Ftcl_DictObjPut                     uintptr
  7667  	Ftcl_DictObjGet                     uintptr
  7668  	Ftcl_DictObjRemove                  uintptr
  7669  	Ftcl_DictObjSize                    uintptr
  7670  	Ftcl_DictObjFirst                   uintptr
  7671  	Ftcl_DictObjNext                    uintptr
  7672  	Ftcl_DictObjDone                    uintptr
  7673  	Ftcl_DictObjPutKeyList              uintptr
  7674  	Ftcl_DictObjRemoveKeyList           uintptr
  7675  	Ftcl_NewDictObj                     uintptr
  7676  	Ftcl_DbNewDictObj                   uintptr
  7677  	Ftcl_RegisterConfig                 uintptr
  7678  	Ftcl_CreateNamespace                uintptr
  7679  	Ftcl_DeleteNamespace                uintptr
  7680  	Ftcl_AppendExportList               uintptr
  7681  	Ftcl_Export                         uintptr
  7682  	Ftcl_Import                         uintptr
  7683  	Ftcl_ForgetImport                   uintptr
  7684  	Ftcl_GetCurrentNamespace            uintptr
  7685  	Ftcl_GetGlobalNamespace             uintptr
  7686  	Ftcl_FindNamespace                  uintptr
  7687  	Ftcl_FindCommand                    uintptr
  7688  	Ftcl_GetCommandFromObj              uintptr
  7689  	Ftcl_GetCommandFullName             uintptr
  7690  	Ftcl_FSEvalFileEx                   uintptr
  7691  	Ftcl_SetExitProc                    uintptr
  7692  	Ftcl_LimitAddHandler                uintptr
  7693  	Ftcl_LimitRemoveHandler             uintptr
  7694  	Ftcl_LimitReady                     uintptr
  7695  	Ftcl_LimitCheck                     uintptr
  7696  	Ftcl_LimitExceeded                  uintptr
  7697  	Ftcl_LimitSetCommands               uintptr
  7698  	Ftcl_LimitSetTime                   uintptr
  7699  	Ftcl_LimitSetGranularity            uintptr
  7700  	Ftcl_LimitTypeEnabled               uintptr
  7701  	Ftcl_LimitTypeExceeded              uintptr
  7702  	Ftcl_LimitTypeSet                   uintptr
  7703  	Ftcl_LimitTypeReset                 uintptr
  7704  	Ftcl_LimitGetCommands               uintptr
  7705  	Ftcl_LimitGetTime                   uintptr
  7706  	Ftcl_LimitGetGranularity            uintptr
  7707  	Ftcl_SaveInterpState                uintptr
  7708  	Ftcl_RestoreInterpState             uintptr
  7709  	Ftcl_DiscardInterpState             uintptr
  7710  	Ftcl_SetReturnOptions               uintptr
  7711  	Ftcl_GetReturnOptions               uintptr
  7712  	Ftcl_IsEnsemble                     uintptr
  7713  	Ftcl_CreateEnsemble                 uintptr
  7714  	Ftcl_FindEnsemble                   uintptr
  7715  	Ftcl_SetEnsembleSubcommandList      uintptr
  7716  	Ftcl_SetEnsembleMappingDict         uintptr
  7717  	Ftcl_SetEnsembleUnknownHandler      uintptr
  7718  	Ftcl_SetEnsembleFlags               uintptr
  7719  	Ftcl_GetEnsembleSubcommandList      uintptr
  7720  	Ftcl_GetEnsembleMappingDict         uintptr
  7721  	Ftcl_GetEnsembleUnknownHandler      uintptr
  7722  	Ftcl_GetEnsembleFlags               uintptr
  7723  	Ftcl_GetEnsembleNamespace           uintptr
  7724  	Ftcl_SetTimeProc                    uintptr
  7725  	Ftcl_QueryTimeProc                  uintptr
  7726  	Ftcl_ChannelThreadActionProc        uintptr
  7727  	Ftcl_NewBignumObj                   uintptr
  7728  	Ftcl_DbNewBignumObj                 uintptr
  7729  	Ftcl_SetBignumObj                   uintptr
  7730  	Ftcl_GetBignumFromObj               uintptr
  7731  	Ftcl_TakeBignumFromObj              uintptr
  7732  	Ftcl_TruncateChannel                uintptr
  7733  	Ftcl_ChannelTruncateProc            uintptr
  7734  	Ftcl_SetChannelErrorInterp          uintptr
  7735  	Ftcl_GetChannelErrorInterp          uintptr
  7736  	Ftcl_SetChannelError                uintptr
  7737  	Ftcl_GetChannelError                uintptr
  7738  	Ftcl_InitBignumFromDouble           uintptr
  7739  	Ftcl_GetNamespaceUnknownHandler     uintptr
  7740  	Ftcl_SetNamespaceUnknownHandler     uintptr
  7741  	Ftcl_GetEncodingFromObj             uintptr
  7742  	Ftcl_GetEncodingSearchPath          uintptr
  7743  	Ftcl_SetEncodingSearchPath          uintptr
  7744  	Ftcl_GetEncodingNameFromEnvironment uintptr
  7745  	Ftcl_PkgRequireProc                 uintptr
  7746  	Ftcl_AppendObjToErrorInfo           uintptr
  7747  	Ftcl_AppendLimitedToObj             uintptr
  7748  	Ftcl_Format                         uintptr
  7749  	Ftcl_AppendFormatToObj              uintptr
  7750  	Ftcl_ObjPrintf                      uintptr
  7751  	Ftcl_AppendPrintfToObj              uintptr
  7752  }
  7753  
  7754  type TclStubs = TclStubs1
  7755  
  7756  type TclPlatStubs = TclPlatStubs1
  7757  
  7758  func dbHandleFromObj(tls *libc.TLS, interp uintptr, pObj uintptr, pDb uintptr) int32 {
  7759  	bp := tls.Alloc(88)
  7760  	defer tls.Free(88)
  7761  
  7762  	if 0 == tcl.XTcl_GetCommandInfo(tls, interp, tcl.XTcl_GetString(tls, pObj), bp+24) {
  7763  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+1930, tcl.XTcl_GetString(tls, pObj), 0))
  7764  		return TCL_ERROR
  7765  	}
  7766  
  7767  	*(*uintptr)(unsafe.Pointer(pDb)) = *(*uintptr)(unsafe.Pointer((*Tcl_CmdInfo)(unsafe.Pointer(bp + 24)).FobjClientData))
  7768  	return TCL_OK
  7769  }
  7770  
  7771  func testExpertCmd(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
  7772  	bp := tls.Alloc(212)
  7773  	defer tls.Free(212)
  7774  
  7775  	var pExpert uintptr = clientData
  7776  	*(*[6]Subcmd)(unsafe.Pointer(bp)) = [6]Subcmd{
  7777  		{FzSub: ts + 1947, FnArg: 1, FzMsg: ts + 1951},
  7778  		{FzSub: ts + 1957, FzMsg: ts + 584},
  7779  		{FzSub: ts + 1965, FzMsg: ts + 584},
  7780  		{FzSub: ts + 1971, FnArg: 2, FzMsg: ts + 1978},
  7781  		{FzSub: ts + 1991, FzMsg: ts + 584},
  7782  		{},
  7783  	}
  7784  
  7785  	var rc int32 = TCL_OK
  7786  	*(*uintptr)(unsafe.Pointer(bp + 152)) = uintptr(0)
  7787  
  7788  	if objc < 2 {
  7789  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+1999)
  7790  		return TCL_ERROR
  7791  	}
  7792  	rc = tcl.XTcl_GetIndexFromObjStruct(tls, interp,
  7793  		*(*uintptr)(unsafe.Pointer(objv + 1*8)), bp, int32(unsafe.Sizeof(Subcmd{})), ts+2014, 0, bp+144)
  7794  	if rc != TCL_OK {
  7795  		return rc
  7796  	}
  7797  	if objc != 2+(*Subcmd)(unsafe.Pointer(bp+uintptr(*(*int32)(unsafe.Pointer(bp + 144)))*24)).FnArg {
  7798  		tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, (*Subcmd)(unsafe.Pointer(bp+uintptr(*(*int32)(unsafe.Pointer(bp + 144)))*24)).FzMsg)
  7799  		return TCL_ERROR
  7800  	}
  7801  
  7802  	switch *(*int32)(unsafe.Pointer(bp + 144)) {
  7803  	case 0:
  7804  		{
  7805  			var zArg uintptr = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
  7806  			rc = sqlite3_expert_sql(tls, pExpert, zArg, bp+152)
  7807  			break
  7808  
  7809  		}
  7810  
  7811  	case 1:
  7812  		{
  7813  			rc = sqlite3_expert_analyze(tls, pExpert, bp+152)
  7814  			break
  7815  
  7816  		}
  7817  
  7818  	case 2:
  7819  		{
  7820  			var n int32 = sqlite3_expert_count(tls, pExpert)
  7821  			tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, n))
  7822  			break
  7823  
  7824  		}
  7825  
  7826  	case 3:
  7827  		{
  7828  			*(*[5]uintptr)(unsafe.Pointer(bp + 168)) = [5]uintptr{
  7829  				ts + 1947, ts + 2026, ts + 2034, ts + 2039, uintptr(0),
  7830  			}
  7831  
  7832  			var zReport uintptr
  7833  
  7834  			if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+160) != 0 ||
  7835  				tcl.XTcl_GetIndexFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+168, ts+1971, 0, bp+208) != 0 {
  7836  				return TCL_ERROR
  7837  			}
  7838  
  7839  			zReport = sqlite3_expert_report(tls, pExpert, *(*int32)(unsafe.Pointer(bp + 160)), 1+*(*int32)(unsafe.Pointer(bp + 208)))
  7840  			tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, zReport, -1))
  7841  			break
  7842  
  7843  		}
  7844  
  7845  	default:
  7846  		tcl.XTcl_DeleteCommand(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))))
  7847  		break
  7848  	}
  7849  
  7850  	if rc != TCL_OK {
  7851  		if *(*uintptr)(unsafe.Pointer(bp + 152)) != 0 {
  7852  			tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, *(*uintptr)(unsafe.Pointer(bp + 152)), -1))
  7853  		} else {
  7854  			tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3ErrName(tls, rc), -1))
  7855  		}
  7856  	}
  7857  	sqlite3.Xsqlite3_free(tls, *(*uintptr)(unsafe.Pointer(bp + 152)))
  7858  	return rc
  7859  }
  7860  
  7861  type Subcmd = struct {
  7862  	FzSub        uintptr
  7863  	FnArg        int32
  7864  	F__ccgo_pad1 [4]byte
  7865  	FzMsg        uintptr
  7866  }
  7867  
  7868  func testExpertDel(tls *libc.TLS, clientData uintptr) {
  7869  	var pExpert uintptr = clientData
  7870  	sqlite3_expert_destroy(tls, pExpert)
  7871  }
  7872  
  7873  func test_sqlite3_expert_new(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
  7874  	bp := tls.Alloc(56)
  7875  	defer tls.Free(56)
  7876  
  7877  	var zCmd uintptr = uintptr(0)
  7878  	*(*uintptr)(unsafe.Pointer(bp + 48)) = uintptr(0)
  7879  	var pExpert uintptr
  7880  	var rc int32 = TCL_OK
  7881  
  7882  	if objc != 2 {
  7883  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2050)
  7884  		return TCL_ERROR
  7885  	}
  7886  	if dbHandleFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp+40) != 0 {
  7887  		return TCL_ERROR
  7888  	}
  7889  
  7890  	zCmd = sqlite3.Xsqlite3_mprintf(tls, ts+2053, libc.VaList(bp, libc.PreIncInt32(&iCmd, 1)))
  7891  	if zCmd == uintptr(0) {
  7892  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+8, ts+2069, uintptr(0)))
  7893  		return TCL_ERROR
  7894  	}
  7895  
  7896  	pExpert = sqlite3_expert_new(tls, *(*uintptr)(unsafe.Pointer(bp + 40)), bp+48)
  7897  	if pExpert == uintptr(0) {
  7898  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+24, *(*uintptr)(unsafe.Pointer(bp + 48)), uintptr(0)))
  7899  		rc = TCL_ERROR
  7900  	} else {
  7901  		var p uintptr = pExpert
  7902  		tcl.XTcl_CreateObjCommand(tls, interp, zCmd, *(*uintptr)(unsafe.Pointer(&struct {
  7903  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
  7904  		}{testExpertCmd})), p, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{testExpertDel})))
  7905  		tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, zCmd, -1))
  7906  	}
  7907  
  7908  	sqlite3.Xsqlite3_free(tls, zCmd)
  7909  	sqlite3.Xsqlite3_free(tls, *(*uintptr)(unsafe.Pointer(bp + 48)))
  7910  	return rc
  7911  }
  7912  
  7913  var iCmd int32 = 0
  7914  
  7915  func TestExpert_Init(tls *libc.TLS, interp uintptr) int32 {
  7916  	bp := tls.Alloc(16)
  7917  	defer tls.Free(16)
  7918  
  7919  	*(*[1]struct {
  7920  		FzCmd  uintptr
  7921  		FxProc uintptr
  7922  	})(unsafe.Pointer(bp)) = [1]struct {
  7923  		FzCmd  uintptr
  7924  		FxProc uintptr
  7925  	}{
  7926  		{FzCmd: ts + 2083, FxProc: *(*uintptr)(unsafe.Pointer(&struct {
  7927  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
  7928  		}{test_sqlite3_expert_new}))},
  7929  	}
  7930  	var i int32
  7931  
  7932  	for i = 0; uint64(i) < uint64(unsafe.Sizeof([1]struct {
  7933  		FzCmd  uintptr
  7934  		FxProc uintptr
  7935  	}{}))/uint64(unsafe.Sizeof(struct {
  7936  		FzCmd  uintptr
  7937  		FxProc uintptr
  7938  	}{})); i++ {
  7939  		var p uintptr = bp + uintptr(i)*16
  7940  		tcl.XTcl_CreateObjCommand(tls, interp, (*struct {
  7941  			FzCmd  uintptr
  7942  			FxProc uintptr
  7943  		})(unsafe.Pointer(p)).FzCmd, (*struct {
  7944  			FzCmd  uintptr
  7945  			FxProc uintptr
  7946  		})(unsafe.Pointer(p)).FxProc, uintptr(0), uintptr(0))
  7947  	}
  7948  	return TCL_OK
  7949  }
  7950  
  7951  func f5tDbPointer(tls *libc.TLS, interp uintptr, pObj uintptr, ppDb uintptr) int32 {
  7952  	bp := tls.Alloc(64)
  7953  	defer tls.Free(64)
  7954  
  7955  	var p uintptr
  7956  
  7957  	var z uintptr = tcl.XTcl_GetString(tls, pObj)
  7958  	if tcl.XTcl_GetCommandInfo(tls, interp, z, bp) != 0 {
  7959  		p = (*Tcl_CmdInfo)(unsafe.Pointer(bp)).FobjClientData
  7960  		*(*uintptr)(unsafe.Pointer(ppDb)) = (*struct{ Fdb uintptr })(unsafe.Pointer(p)).Fdb
  7961  		return TCL_OK
  7962  	}
  7963  	return TCL_ERROR
  7964  }
  7965  
  7966  func f5tResultToErrorCode(tls *libc.TLS, zRes uintptr) int32 {
  7967  	bp := tls.Alloc(64)
  7968  	defer tls.Free(64)
  7969  
  7970  	*(*[4]ErrorCode)(unsafe.Pointer(bp)) = [4]ErrorCode{
  7971  		{Frc: SQLITE_DONE, FzError: ts + 2102},
  7972  		{Frc: SQLITE_ERROR, FzError: ts + 2114},
  7973  		{FzError: ts + 2127},
  7974  		{FzError: ts + 584},
  7975  	}
  7976  	var i int32
  7977  
  7978  	for i = 0; uint64(i) < uint64(unsafe.Sizeof([4]ErrorCode{}))/uint64(unsafe.Sizeof(ErrorCode{})); i++ {
  7979  		if 0 == sqlite3.Xsqlite3_stricmp(tls, zRes, (*ErrorCode)(unsafe.Pointer(bp+uintptr(i)*16)).FzError) {
  7980  			return (*ErrorCode)(unsafe.Pointer(bp + uintptr(i)*16)).Frc
  7981  		}
  7982  	}
  7983  
  7984  	return SQLITE_ERROR
  7985  }
  7986  
  7987  type ErrorCode = struct {
  7988  	Frc          int32
  7989  	F__ccgo_pad1 [4]byte
  7990  	FzError      uintptr
  7991  }
  7992  
  7993  func f5tDbAndApi(tls *libc.TLS, interp uintptr, pObj uintptr, ppDb uintptr, ppApi uintptr) int32 {
  7994  	bp := tls.Alloc(72)
  7995  	defer tls.Free(72)
  7996  
  7997  	*(*uintptr)(unsafe.Pointer(bp + 48)) = uintptr(0)
  7998  	var rc int32 = f5tDbPointer(tls, interp, pObj, bp+48)
  7999  	if rc != TCL_OK {
  8000  		return TCL_ERROR
  8001  	} else {
  8002  		*(*uintptr)(unsafe.Pointer(bp + 56)) = uintptr(0)
  8003  		*(*uintptr)(unsafe.Pointer(bp + 64)) = uintptr(0)
  8004  
  8005  		rc = sqlite3.Xsqlite3_prepare_v2(tls, *(*uintptr)(unsafe.Pointer(bp + 48)), ts+2137, -1, bp+56, uintptr(0))
  8006  		if rc != SQLITE_OK {
  8007  			tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+2153, sqlite3.Xsqlite3_errmsg(tls, *(*uintptr)(unsafe.Pointer(bp + 48))), 0))
  8008  			return TCL_ERROR
  8009  		}
  8010  		sqlite3.Xsqlite3_bind_pointer(tls, *(*uintptr)(unsafe.Pointer(bp + 56)), 1, bp+64, ts+2161, uintptr(0))
  8011  		sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp + 56)))
  8012  
  8013  		if sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 56))) != SQLITE_OK {
  8014  			tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+24, ts+2153, sqlite3.Xsqlite3_errmsg(tls, *(*uintptr)(unsafe.Pointer(bp + 48))), 0))
  8015  			return TCL_ERROR
  8016  		}
  8017  
  8018  		*(*uintptr)(unsafe.Pointer(ppDb)) = *(*uintptr)(unsafe.Pointer(bp + 48))
  8019  		*(*uintptr)(unsafe.Pointer(ppApi)) = *(*uintptr)(unsafe.Pointer(bp + 64))
  8020  	}
  8021  
  8022  	return TCL_OK
  8023  }
  8024  
  8025  type F5tFunction1 = struct {
  8026  	Finterp  uintptr
  8027  	FpScript uintptr
  8028  }
  8029  
  8030  type F5tFunction = F5tFunction1
  8031  
  8032  type F5tApi1 = struct {
  8033  	FpApi uintptr
  8034  	FpFts uintptr
  8035  }
  8036  
  8037  type F5tApi = F5tApi1
  8038  
  8039  type F5tAuxData1 = struct{ FpObj uintptr }
  8040  
  8041  type F5tAuxData = F5tAuxData1
  8042  
  8043  func xTokenizeCb(tls *libc.TLS, pCtx uintptr, tflags int32, zToken uintptr, nToken int32, iStart int32, iEnd int32) int32 {
  8044  	var p uintptr = pCtx
  8045  	var pEval uintptr = tcl.XTcl_DuplicateObj(tls, (*F5tFunction)(unsafe.Pointer(p)).FpScript)
  8046  	var rc int32
  8047  
  8048  	(*Tcl_Obj)(unsafe.Pointer(pEval)).FrefCount++
  8049  	tcl.XTcl_ListObjAppendElement(tls, (*F5tFunction)(unsafe.Pointer(p)).Finterp, pEval, tcl.XTcl_NewStringObj(tls, zToken, nToken))
  8050  	tcl.XTcl_ListObjAppendElement(tls, (*F5tFunction)(unsafe.Pointer(p)).Finterp, pEval, tcl.XTcl_NewIntObj(tls, iStart))
  8051  	tcl.XTcl_ListObjAppendElement(tls, (*F5tFunction)(unsafe.Pointer(p)).Finterp, pEval, tcl.XTcl_NewIntObj(tls, iEnd))
  8052  
  8053  	rc = tcl.XTcl_EvalObjEx(tls, (*F5tFunction)(unsafe.Pointer(p)).Finterp, pEval, 0)
  8054  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
  8055  		if libc.PreDecInt32(&(*Tcl_Obj)(unsafe.Pointer(pEval)).FrefCount, 1) <= 0 {
  8056  			tcl.XTclFreeObj(tls, pEval)
  8057  		}
  8058  	}
  8059  	if rc == TCL_OK {
  8060  		rc = f5tResultToErrorCode(tls, tcl.XTcl_GetStringResult(tls, (*F5tFunction)(unsafe.Pointer(p)).Finterp))
  8061  	}
  8062  
  8063  	return rc
  8064  }
  8065  
  8066  func xQueryPhraseCb(tls *libc.TLS, pApi uintptr, pFts uintptr, pCtx uintptr) int32 {
  8067  	bp := tls.Alloc(88)
  8068  	defer tls.Free(88)
  8069  
  8070  	var p uintptr = pCtx
  8071  	var pEval uintptr
  8072  	var rc int32
  8073  
  8074  	(*F5tApi)(unsafe.Pointer(bp + 72)).FpApi = pApi
  8075  	(*F5tApi)(unsafe.Pointer(bp + 72)).FpFts = pFts
  8076  	libc.X__builtin___sprintf_chk(tls, bp+8, 0, libc.X__builtin_object_size(tls, bp+8, func() int32 {
  8077  		if X_USE_FORTIFY_LEVEL > 1 {
  8078  			return 1
  8079  		}
  8080  		return 0
  8081  	}()), ts+2174, libc.VaList(bp, libc.PostIncInt64(&iCmd1, 1)))
  8082  	tcl.XTcl_CreateObjCommand(tls, (*F5tFunction)(unsafe.Pointer(p)).Finterp, bp+8, *(*uintptr)(unsafe.Pointer(&struct {
  8083  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
  8084  	}{xF5tApi})), bp+72, uintptr(0))
  8085  
  8086  	pEval = tcl.XTcl_DuplicateObj(tls, (*F5tFunction)(unsafe.Pointer(p)).FpScript)
  8087  	(*Tcl_Obj)(unsafe.Pointer(pEval)).FrefCount++
  8088  	tcl.XTcl_ListObjAppendElement(tls, (*F5tFunction)(unsafe.Pointer(p)).Finterp, pEval, tcl.XTcl_NewStringObj(tls, bp+8, -1))
  8089  	rc = tcl.XTcl_EvalObjEx(tls, (*F5tFunction)(unsafe.Pointer(p)).Finterp, pEval, 0)
  8090  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
  8091  		if libc.PreDecInt32(&(*Tcl_Obj)(unsafe.Pointer(pEval)).FrefCount, 1) <= 0 {
  8092  			tcl.XTclFreeObj(tls, pEval)
  8093  		}
  8094  	}
  8095  	tcl.XTcl_DeleteCommand(tls, (*F5tFunction)(unsafe.Pointer(p)).Finterp, bp+8)
  8096  
  8097  	if rc == TCL_OK {
  8098  		rc = f5tResultToErrorCode(tls, tcl.XTcl_GetStringResult(tls, (*F5tFunction)(unsafe.Pointer(p)).Finterp))
  8099  	}
  8100  
  8101  	return rc
  8102  }
  8103  
  8104  var iCmd1 sqlite3_int64 = int64(0)
  8105  
  8106  func xSetAuxdataDestructor(tls *libc.TLS, p uintptr) {
  8107  	var pData uintptr = p
  8108  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
  8109  		if libc.PreDecInt32(&(*Tcl_Obj)(unsafe.Pointer((*F5tAuxData)(unsafe.Pointer(pData)).FpObj)).FrefCount, 1) <= 0 {
  8110  			tcl.XTclFreeObj(tls, (*F5tAuxData)(unsafe.Pointer(pData)).FpObj)
  8111  		}
  8112  	}
  8113  	sqlite3.Xsqlite3_free(tls, pData)
  8114  }
  8115  
  8116  func xF5tApi(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
  8117  	bp := tls.Alloc(684)
  8118  	defer tls.Free(684)
  8119  
  8120  	*(*[19]Sub)(unsafe.Pointer(bp + 32)) = [19]Sub{
  8121  		{FzName: ts + 2185, FzMsg: ts + 584},
  8122  		{FzName: ts + 2198, FzMsg: ts + 584},
  8123  		{FzName: ts + 2208, FnArg: 1, FzMsg: ts + 2225},
  8124  		{FzName: ts + 2229, FnArg: 2, FzMsg: ts + 2239},
  8125  		{FzName: ts + 2251, FzMsg: ts + 584},
  8126  		{FzName: ts + 2264, FnArg: 1, FzMsg: ts + 2276},
  8127  		{FzName: ts + 2283, FzMsg: ts + 584},
  8128  		{FzName: ts + 2294, FnArg: 1, FzMsg: ts + 2300},
  8129  		{FzName: ts + 2304, FzMsg: ts + 584},
  8130  		{FzName: ts + 2311, FnArg: 1, FzMsg: ts + 2225},
  8131  		{FzName: ts + 2323, FnArg: 1, FzMsg: ts + 2225},
  8132  		{FzName: ts + 2335, FnArg: 2, FzMsg: ts + 2348},
  8133  		{FzName: ts + 2362, FnArg: 1, FzMsg: ts + 2374},
  8134  		{FzName: ts + 2380, FnArg: 1, FzMsg: ts + 2392},
  8135  		{FzName: ts + 2398, FnArg: 1, FzMsg: ts + 2413},
  8136  		{FzName: ts + 2421, FnArg: 1, FzMsg: ts + 2392},
  8137  		{FzName: ts + 2436, FnArg: 4, FzMsg: ts + 2451},
  8138  		{FzName: ts + 2480, FnArg: 3, FzMsg: ts + 2501},
  8139  		{},
  8140  	}
  8141  	var rc int32
  8142  	*(*int32)(unsafe.Pointer(bp + 488)) = 0
  8143  	var p uintptr = clientData
  8144  
  8145  	if objc < 2 {
  8146  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2523)
  8147  		return TCL_ERROR
  8148  	}
  8149  
  8150  	rc = tcl.XTcl_GetIndexFromObjStruct(tls,
  8151  		interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp+32, int32(unsafe.Sizeof(Sub{})), ts+2523, 0, bp+488)
  8152  	if rc != TCL_OK {
  8153  		return rc
  8154  	}
  8155  	if (*Sub)(unsafe.Pointer(bp+32+uintptr(*(*int32)(unsafe.Pointer(bp + 488)))*24)).FnArg != objc-2 {
  8156  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, (*Sub)(unsafe.Pointer(bp+32+uintptr(*(*int32)(unsafe.Pointer(bp + 488)))*24)).FzMsg)
  8157  		return TCL_ERROR
  8158  	}
  8159  
  8160  	switch *(*int32)(unsafe.Pointer(bp + 488)) {
  8161  	case 0:
  8162  		{
  8163  			var nCol int32
  8164  			nCol = (*struct {
  8165  				f func(*libc.TLS, uintptr) int32
  8166  			})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer((*F5tApi)(unsafe.Pointer(p)).FpApi)).FxColumnCount})).f(tls, (*F5tApi)(unsafe.Pointer(p)).FpFts)
  8167  			if rc == SQLITE_OK {
  8168  				tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, nCol))
  8169  			}
  8170  			break
  8171  
  8172  		}
  8173  	case 1:
  8174  		{
  8175  			rc = (*struct {
  8176  				f func(*libc.TLS, uintptr, uintptr) int32
  8177  			})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer((*F5tApi)(unsafe.Pointer(p)).FpApi)).FxRowCount})).f(tls, (*F5tApi)(unsafe.Pointer(p)).FpFts, bp+496)
  8178  			if rc == SQLITE_OK {
  8179  				tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewWideIntObj(tls, *(*sqlite3_int64)(unsafe.Pointer(bp + 496))))
  8180  			}
  8181  			break
  8182  
  8183  		}
  8184  	case 2:
  8185  		{
  8186  			if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+504) != 0 {
  8187  				return TCL_ERROR
  8188  			}
  8189  			rc = (*struct {
  8190  				f func(*libc.TLS, uintptr, int32, uintptr) int32
  8191  			})(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)
  8192  			if rc == SQLITE_OK {
  8193  				tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewWideIntObj(tls, *(*sqlite3_int64)(unsafe.Pointer(bp + 512))))
  8194  			}
  8195  			break
  8196  
  8197  		}
  8198  	case 3:
  8199  		{
  8200  			var zText uintptr = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+520)
  8201  
  8202  			(*F5tFunction)(unsafe.Pointer(bp + 528)).Finterp = interp
  8203  			(*F5tFunction)(unsafe.Pointer(bp + 528)).FpScript = *(*uintptr)(unsafe.Pointer(objv + 3*8))
  8204  			rc = (*struct {
  8205  				f func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr) int32
  8206  			})(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 {
  8207  				f func(*libc.TLS, uintptr, int32, uintptr, int32, int32, int32) int32
  8208  			}{xTokenizeCb})))
  8209  			if rc == SQLITE_OK {
  8210  				tcl.XTcl_ResetResult(tls, interp)
  8211  			}
  8212  			return rc
  8213  
  8214  		}
  8215  	case 4:
  8216  		{
  8217  			var nPhrase int32
  8218  			nPhrase = (*struct {
  8219  				f func(*libc.TLS, uintptr) int32
  8220  			})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer((*F5tApi)(unsafe.Pointer(p)).FpApi)).FxPhraseCount})).f(tls, (*F5tApi)(unsafe.Pointer(p)).FpFts)
  8221  			if rc == SQLITE_OK {
  8222  				tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, nPhrase))
  8223  			}
  8224  			break
  8225  
  8226  		}
  8227  	case 5:
  8228  		{
  8229  			var sz int32
  8230  			if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+544) != 0 {
  8231  				return TCL_ERROR
  8232  			}
  8233  			sz = (*struct {
  8234  				f func(*libc.TLS, uintptr, int32) int32
  8235  			})(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)))
  8236  			if rc == SQLITE_OK {
  8237  				tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, sz))
  8238  			}
  8239  			break
  8240  
  8241  		}
  8242  	case 6:
  8243  		{
  8244  			rc = (*struct {
  8245  				f func(*libc.TLS, uintptr, uintptr) int32
  8246  			})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer((*F5tApi)(unsafe.Pointer(p)).FpApi)).FxInstCount})).f(tls, (*F5tApi)(unsafe.Pointer(p)).FpFts, bp+548)
  8247  			if rc == SQLITE_OK {
  8248  				tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 548))))
  8249  			}
  8250  			break
  8251  
  8252  		}
  8253  	case 7:
  8254  		{
  8255  			if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+552) != 0 {
  8256  				return TCL_ERROR
  8257  			}
  8258  			rc = (*struct {
  8259  				f func(*libc.TLS, uintptr, int32, uintptr, uintptr, uintptr) int32
  8260  			})(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)
  8261  			if rc == SQLITE_OK {
  8262  				var pList uintptr = tcl.XTcl_NewObj(tls)
  8263  				tcl.XTcl_ListObjAppendElement(tls, interp, pList, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 556))))
  8264  				tcl.XTcl_ListObjAppendElement(tls, interp, pList, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 560))))
  8265  				tcl.XTcl_ListObjAppendElement(tls, interp, pList, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 564))))
  8266  				tcl.XTcl_SetObjResult(tls, interp, pList)
  8267  			}
  8268  			break
  8269  
  8270  		}
  8271  	case 8:
  8272  		{
  8273  			var iRowid sqlite3_int64 = (*struct {
  8274  				f func(*libc.TLS, uintptr) sqlite3_int64
  8275  			})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer((*F5tApi)(unsafe.Pointer(p)).FpApi)).FxRowid})).f(tls, (*F5tApi)(unsafe.Pointer(p)).FpFts)
  8276  			tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewWideIntObj(tls, iRowid))
  8277  			break
  8278  
  8279  		}
  8280  	case 9:
  8281  		{
  8282  			*(*uintptr)(unsafe.Pointer(bp + 576)) = uintptr(0)
  8283  			*(*int32)(unsafe.Pointer(bp + 584)) = 0
  8284  
  8285  			if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+568) != 0 {
  8286  				return TCL_ERROR
  8287  			}
  8288  			rc = (*struct {
  8289  				f func(*libc.TLS, uintptr, int32, uintptr, uintptr) int32
  8290  			})(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)
  8291  			if rc == SQLITE_OK {
  8292  				tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, *(*uintptr)(unsafe.Pointer(bp + 576)), *(*int32)(unsafe.Pointer(bp + 584))))
  8293  			}
  8294  			break
  8295  
  8296  		}
  8297  	case 10:
  8298  		{
  8299  			*(*int32)(unsafe.Pointer(bp + 592)) = 0
  8300  
  8301  			if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+588) != 0 {
  8302  				return TCL_ERROR
  8303  			}
  8304  			rc = (*struct {
  8305  				f func(*libc.TLS, uintptr, int32, uintptr) int32
  8306  			})(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)
  8307  			if rc == SQLITE_OK {
  8308  				tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 592))))
  8309  			}
  8310  			break
  8311  
  8312  		}
  8313  	case 11:
  8314  		{
  8315  			if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+596) != 0 {
  8316  				return TCL_ERROR
  8317  			}
  8318  			(*F5tFunction)(unsafe.Pointer(bp + 600)).Finterp = interp
  8319  			(*F5tFunction)(unsafe.Pointer(bp + 600)).FpScript = *(*uintptr)(unsafe.Pointer(objv + 3*8))
  8320  			rc = (*struct {
  8321  				f func(*libc.TLS, uintptr, int32, uintptr, uintptr) int32
  8322  			})(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 {
  8323  				f func(*libc.TLS, uintptr, uintptr, uintptr) int32
  8324  			}{xQueryPhraseCb})))
  8325  			if rc == SQLITE_OK {
  8326  				tcl.XTcl_ResetResult(tls, interp)
  8327  			}
  8328  			break
  8329  
  8330  		}
  8331  	case 12:
  8332  		{
  8333  			var pData uintptr = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(F5tAuxData{})))
  8334  			if pData == uintptr(0) {
  8335  				tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+2069, 0))
  8336  				return TCL_ERROR
  8337  			}
  8338  			(*F5tAuxData)(unsafe.Pointer(pData)).FpObj = *(*uintptr)(unsafe.Pointer(objv + 2*8))
  8339  			(*Tcl_Obj)(unsafe.Pointer((*F5tAuxData)(unsafe.Pointer(pData)).FpObj)).FrefCount++
  8340  			rc = (*struct {
  8341  				f func(*libc.TLS, uintptr, uintptr, uintptr) int32
  8342  			})(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})))
  8343  			break
  8344  
  8345  		}
  8346  	case 13:
  8347  		{
  8348  			var pData uintptr
  8349  
  8350  			if tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+616) != 0 {
  8351  				return TCL_ERROR
  8352  			}
  8353  			pData = (*struct {
  8354  				f func(*libc.TLS, uintptr, int32) uintptr
  8355  			})(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)))
  8356  			if pData == uintptr(0) {
  8357  				tcl.XTcl_ResetResult(tls, interp)
  8358  			} else {
  8359  				tcl.XTcl_SetObjResult(tls, interp, (*F5tAuxData)(unsafe.Pointer(pData)).FpObj)
  8360  				if *(*int32)(unsafe.Pointer(bp + 616)) != 0 {
  8361  					xSetAuxdataDestructor(tls, pData)
  8362  				}
  8363  			}
  8364  			break
  8365  
  8366  		}
  8367  
  8368  	case 14:
  8369  		{
  8370  			if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+620) != 0 {
  8371  				return TCL_ERROR
  8372  			}
  8373  			rc = (*struct {
  8374  				f func(*libc.TLS, uintptr, uintptr, uintptr) int32
  8375  			})(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))
  8376  			break
  8377  
  8378  		}
  8379  	case 15:
  8380  		{
  8381  			var iVal int32
  8382  
  8383  			if tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+624) != 0 {
  8384  				return TCL_ERROR
  8385  			}
  8386  			iVal = int32((int64((*struct {
  8387  				f func(*libc.TLS, uintptr, int32) uintptr
  8388  			})(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)
  8389  			tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, iVal))
  8390  			break
  8391  
  8392  		}
  8393  
  8394  	case 16:
  8395  		{
  8396  			var zColvar uintptr
  8397  			var zOffvar uintptr
  8398  			var pScript uintptr = *(*uintptr)(unsafe.Pointer(objv + 5*8))
  8399  
  8400  			if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+628) != 0 {
  8401  				return TCL_ERROR
  8402  			}
  8403  			zColvar = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)))
  8404  			zOffvar = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 4*8)))
  8405  
  8406  			rc = (*struct {
  8407  				f func(*libc.TLS, uintptr, int32, uintptr, uintptr, uintptr) int32
  8408  			})(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)
  8409  			if rc != SQLITE_OK {
  8410  				tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+16, sqlite3.Xsqlite3ErrName(tls, rc), 0))
  8411  				return TCL_ERROR
  8412  			}
  8413  			for ; *(*int32)(unsafe.Pointer(bp + 648)) >= 0; (*struct {
  8414  				f func(*libc.TLS, uintptr, uintptr, uintptr, uintptr)
  8415  			})(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) {
  8416  				tcl.XTcl_SetVar2Ex(tls, interp, zColvar, uintptr(0), tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 648))), 0)
  8417  				tcl.XTcl_SetVar2Ex(tls, interp, zOffvar, uintptr(0), tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 652))), 0)
  8418  				rc = tcl.XTcl_EvalObjEx(tls, interp, pScript, 0)
  8419  				if rc == TCL_CONTINUE {
  8420  					rc = TCL_OK
  8421  				}
  8422  				if rc != TCL_OK {
  8423  					if rc == TCL_BREAK {
  8424  						rc = TCL_OK
  8425  					}
  8426  					break
  8427  				}
  8428  			}
  8429  
  8430  			break
  8431  
  8432  		}
  8433  
  8434  	case 17:
  8435  		{
  8436  			var zColvar uintptr
  8437  			var pScript uintptr = *(*uintptr)(unsafe.Pointer(objv + 4*8))
  8438  
  8439  			if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+656) != 0 {
  8440  				return TCL_ERROR
  8441  			}
  8442  			zColvar = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)))
  8443  
  8444  			rc = (*struct {
  8445  				f func(*libc.TLS, uintptr, int32, uintptr, uintptr) int32
  8446  			})(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)
  8447  			if rc != SQLITE_OK {
  8448  				tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(1))
  8449  				return TCL_ERROR
  8450  			}
  8451  			for ; *(*int32)(unsafe.Pointer(bp + 680)) >= 0; (*struct {
  8452  				f func(*libc.TLS, uintptr, uintptr, uintptr)
  8453  			})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer((*F5tApi)(unsafe.Pointer(p)).FpApi)).FxPhraseNextColumn})).f(tls, (*F5tApi)(unsafe.Pointer(p)).FpFts, bp+664, bp+680) {
  8454  				tcl.XTcl_SetVar2Ex(tls, interp, zColvar, uintptr(0), tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 680))), 0)
  8455  				rc = tcl.XTcl_EvalObjEx(tls, interp, pScript, 0)
  8456  				if rc == TCL_CONTINUE {
  8457  					rc = TCL_OK
  8458  				}
  8459  				if rc != TCL_OK {
  8460  					if rc == TCL_BREAK {
  8461  						rc = TCL_OK
  8462  					}
  8463  					break
  8464  				}
  8465  			}
  8466  
  8467  			break
  8468  
  8469  		}
  8470  
  8471  	default:
  8472  		break
  8473  	}
  8474  
  8475  	if rc != SQLITE_OK {
  8476  		tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(1))
  8477  		return TCL_ERROR
  8478  	}
  8479  
  8480  	return TCL_OK
  8481  }
  8482  
  8483  type Sub = struct {
  8484  	FzName       uintptr
  8485  	FnArg        int32
  8486  	F__ccgo_pad1 [4]byte
  8487  	FzMsg        uintptr
  8488  }
  8489  
  8490  func xF5tFunction(tls *libc.TLS, pApi uintptr, pFts uintptr, pCtx uintptr, nVal int32, apVal uintptr) {
  8491  	bp := tls.Alloc(112)
  8492  	defer tls.Free(112)
  8493  
  8494  	var p uintptr = (*struct {
  8495  		f func(*libc.TLS, uintptr) uintptr
  8496  	})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer(pApi)).FxUserData})).f(tls, pFts)
  8497  	var pEval uintptr
  8498  	var i int32
  8499  	var rc int32
  8500  
  8501  	(*F5tApi)(unsafe.Pointer(bp + 72)).FpApi = pApi
  8502  	(*F5tApi)(unsafe.Pointer(bp + 72)).FpFts = pFts
  8503  
  8504  	libc.X__builtin___sprintf_chk(tls, bp+8, 0, libc.X__builtin_object_size(tls, bp+8, func() int32 {
  8505  		if X_USE_FORTIFY_LEVEL > 1 {
  8506  			return 1
  8507  		}
  8508  		return 0
  8509  	}()), ts+2535, libc.VaList(bp, libc.PostIncInt64(&iCmd2, 1)))
  8510  	tcl.XTcl_CreateObjCommand(tls, (*F5tFunction)(unsafe.Pointer(p)).Finterp, bp+8, *(*uintptr)(unsafe.Pointer(&struct {
  8511  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
  8512  	}{xF5tApi})), bp+72, uintptr(0))
  8513  	pEval = tcl.XTcl_DuplicateObj(tls, (*F5tFunction)(unsafe.Pointer(p)).FpScript)
  8514  	(*Tcl_Obj)(unsafe.Pointer(pEval)).FrefCount++
  8515  	tcl.XTcl_ListObjAppendElement(tls, (*F5tFunction)(unsafe.Pointer(p)).Finterp, pEval, tcl.XTcl_NewStringObj(tls, bp+8, -1))
  8516  
  8517  	for i = 0; i < nVal; i++ {
  8518  		var pObj uintptr = uintptr(0)
  8519  		switch sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(apVal + uintptr(i)*8))) {
  8520  		case SQLITE_TEXT:
  8521  			pObj = tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(apVal + uintptr(i)*8))), -1)
  8522  			break
  8523  		case SQLITE_BLOB:
  8524  			pObj = tcl.XTcl_NewByteArrayObj(tls,
  8525  				sqlite3.Xsqlite3_value_blob(tls, *(*uintptr)(unsafe.Pointer(apVal + uintptr(i)*8))), sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(apVal + uintptr(i)*8))))
  8526  			break
  8527  		case SQLITE_INTEGER:
  8528  			pObj = tcl.XTcl_NewWideIntObj(tls, sqlite3.Xsqlite3_value_int64(tls, *(*uintptr)(unsafe.Pointer(apVal + uintptr(i)*8))))
  8529  			break
  8530  		case SQLITE_FLOAT:
  8531  			pObj = tcl.XTcl_NewDoubleObj(tls, sqlite3.Xsqlite3_value_double(tls, *(*uintptr)(unsafe.Pointer(apVal + uintptr(i)*8))))
  8532  			break
  8533  		default:
  8534  			pObj = tcl.XTcl_NewObj(tls)
  8535  			break
  8536  		}
  8537  		tcl.XTcl_ListObjAppendElement(tls, (*F5tFunction)(unsafe.Pointer(p)).Finterp, pEval, pObj)
  8538  	}
  8539  
  8540  	rc = tcl.XTcl_EvalObjEx(tls, (*F5tFunction)(unsafe.Pointer(p)).Finterp, pEval, TCL_GLOBAL_ONLY)
  8541  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
  8542  		if libc.PreDecInt32(&(*Tcl_Obj)(unsafe.Pointer(pEval)).FrefCount, 1) <= 0 {
  8543  			tcl.XTclFreeObj(tls, pEval)
  8544  		}
  8545  	}
  8546  	tcl.XTcl_DeleteCommand(tls, (*F5tFunction)(unsafe.Pointer(p)).Finterp, bp+8)
  8547  
  8548  	if rc != TCL_OK {
  8549  		sqlite3.Xsqlite3_result_error(tls, pCtx, tcl.XTcl_GetStringResult(tls, (*F5tFunction)(unsafe.Pointer(p)).Finterp), -1)
  8550  	} else {
  8551  		var pVar uintptr = tcl.XTcl_GetObjResult(tls, (*F5tFunction)(unsafe.Pointer(p)).Finterp)
  8552  
  8553  		var zType uintptr = func() uintptr {
  8554  			if (*Tcl_Obj)(unsafe.Pointer(pVar)).FtypePtr != 0 {
  8555  				return (*Tcl_ObjType)(unsafe.Pointer((*Tcl_Obj)(unsafe.Pointer(pVar)).FtypePtr)).Fname
  8556  			}
  8557  			return ts + 584
  8558  		}()
  8559  		var c int8 = *(*int8)(unsafe.Pointer(zType))
  8560  		if int32(c) == 'b' && libc.Xstrcmp(tls, zType, ts+2544) == 0 && (*Tcl_Obj)(unsafe.Pointer(pVar)).Fbytes == uintptr(0) {
  8561  			var data uintptr = tcl.XTcl_GetByteArrayFromObj(tls, pVar, bp+88)
  8562  			sqlite3.Xsqlite3_result_blob(tls, pCtx, data, *(*int32)(unsafe.Pointer(bp + 88)), libc.UintptrFromInt32(-1))
  8563  		} else if int32(c) == 'b' && libc.Xstrcmp(tls, zType, ts+2554) == 0 {
  8564  			tcl.XTcl_GetIntFromObj(tls, uintptr(0), pVar, bp+88)
  8565  			sqlite3.Xsqlite3_result_int(tls, pCtx, *(*int32)(unsafe.Pointer(bp + 88)))
  8566  		} else if int32(c) == 'd' && libc.Xstrcmp(tls, zType, ts+2562) == 0 {
  8567  			tcl.XTcl_GetDoubleFromObj(tls, uintptr(0), pVar, bp+96)
  8568  			sqlite3.Xsqlite3_result_double(tls, pCtx, *(*float64)(unsafe.Pointer(bp + 96)))
  8569  		} else if int32(c) == 'w' && libc.Xstrcmp(tls, zType, ts+2569) == 0 || int32(c) == 'i' && libc.Xstrcmp(tls, zType, ts+2577) == 0 {
  8570  			tcl.XTcl_GetWideIntFromObj(tls, uintptr(0), pVar, bp+104)
  8571  			sqlite3.Xsqlite3_result_int64(tls, pCtx, *(*Tcl_WideInt)(unsafe.Pointer(bp + 104)))
  8572  		} else {
  8573  			var data uintptr = tcl.XTcl_GetStringFromObj(tls, pVar, bp+88)
  8574  			sqlite3.Xsqlite3_result_text(tls, pCtx, data, *(*int32)(unsafe.Pointer(bp + 88)), libc.UintptrFromInt32(-1))
  8575  		}
  8576  	}
  8577  }
  8578  
  8579  var iCmd2 sqlite3_int64 = int64(0)
  8580  
  8581  func xF5tDestroy(tls *libc.TLS, pCtx uintptr) {
  8582  	var p uintptr = pCtx
  8583  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
  8584  		if libc.PreDecInt32(&(*Tcl_Obj)(unsafe.Pointer((*F5tFunction)(unsafe.Pointer(p)).FpScript)).FrefCount, 1) <= 0 {
  8585  			tcl.XTclFreeObj(tls, (*F5tFunction)(unsafe.Pointer(p)).FpScript)
  8586  		}
  8587  	}
  8588  	tcl.XTcl_Free(tls, p)
  8589  }
  8590  
  8591  func f5tCreateFunction(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
  8592  	bp := tls.Alloc(40)
  8593  	defer tls.Free(40)
  8594  
  8595  	var zName uintptr
  8596  	var pScript uintptr
  8597  	*(*uintptr)(unsafe.Pointer(bp + 24)) = uintptr(0)
  8598  	*(*uintptr)(unsafe.Pointer(bp + 32)) = uintptr(0)
  8599  	var pCtx uintptr = uintptr(0)
  8600  	var rc int32
  8601  
  8602  	if objc != 4 {
  8603  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2581)
  8604  		return TCL_ERROR
  8605  	}
  8606  	if f5tDbAndApi(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp+24, bp+32) != 0 {
  8607  		return TCL_ERROR
  8608  	}
  8609  
  8610  	zName = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
  8611  	pScript = *(*uintptr)(unsafe.Pointer(objv + 3*8))
  8612  	pCtx = tcl.XTcl_Alloc(tls, uint32(unsafe.Sizeof(F5tFunction{})))
  8613  	(*F5tFunction)(unsafe.Pointer(pCtx)).Finterp = interp
  8614  	(*F5tFunction)(unsafe.Pointer(pCtx)).FpScript = pScript
  8615  	(*Tcl_Obj)(unsafe.Pointer(pScript)).FrefCount++
  8616  
  8617  	rc = (*struct {
  8618  		f func(*libc.TLS, uintptr, uintptr, uintptr, fts5_extension_function, uintptr) int32
  8619  	})(unsafe.Pointer(&struct{ uintptr }{(*fts5_api)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 32)))).FxCreateFunction})).f(tls,
  8620  		*(*uintptr)(unsafe.Pointer(bp + 32)), zName, pCtx, *(*uintptr)(unsafe.Pointer(&struct {
  8621  			f func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr)
  8622  		}{xF5tFunction})), *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{xF5tDestroy})))
  8623  	if rc != SQLITE_OK {
  8624  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+2153, sqlite3.Xsqlite3_errmsg(tls, *(*uintptr)(unsafe.Pointer(bp + 24))), 0))
  8625  		return TCL_ERROR
  8626  	}
  8627  
  8628  	return TCL_OK
  8629  }
  8630  
  8631  type F5tTokenizeCtx1 = struct {
  8632  	FpRet        uintptr
  8633  	FbSubst      int32
  8634  	F__ccgo_pad1 [4]byte
  8635  	FzInput      uintptr
  8636  }
  8637  
  8638  type F5tTokenizeCtx = F5tTokenizeCtx1
  8639  
  8640  func xTokenizeCb2(tls *libc.TLS, pCtx uintptr, tflags int32, zToken uintptr, nToken int32, iStart int32, iEnd int32) int32 {
  8641  	var p uintptr = pCtx
  8642  	if (*F5tTokenizeCtx)(unsafe.Pointer(p)).FbSubst != 0 {
  8643  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), (*F5tTokenizeCtx)(unsafe.Pointer(p)).FpRet, tcl.XTcl_NewStringObj(tls, zToken, nToken))
  8644  		tcl.XTcl_ListObjAppendElement(tls,
  8645  			uintptr(0), (*F5tTokenizeCtx)(unsafe.Pointer(p)).FpRet, tcl.XTcl_NewStringObj(tls, (*F5tTokenizeCtx)(unsafe.Pointer(p)).FzInput+uintptr(iStart), iEnd-iStart))
  8646  	} else {
  8647  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), (*F5tTokenizeCtx)(unsafe.Pointer(p)).FpRet, tcl.XTcl_NewStringObj(tls, zToken, nToken))
  8648  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), (*F5tTokenizeCtx)(unsafe.Pointer(p)).FpRet, tcl.XTcl_NewIntObj(tls, iStart))
  8649  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), (*F5tTokenizeCtx)(unsafe.Pointer(p)).FpRet, tcl.XTcl_NewIntObj(tls, iEnd))
  8650  	}
  8651  	return SQLITE_OK
  8652  }
  8653  
  8654  func f5tTokenize(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
  8655  	bp := tls.Alloc(200)
  8656  	defer tls.Free(200)
  8657  
  8658  	var zText uintptr
  8659  
  8660  	*(*uintptr)(unsafe.Pointer(bp + 96)) = uintptr(0)
  8661  	*(*uintptr)(unsafe.Pointer(bp + 104)) = uintptr(0)
  8662  	*(*uintptr)(unsafe.Pointer(bp + 168)) = uintptr(0)
  8663  
  8664  	var pRet uintptr = uintptr(0)
  8665  
  8666  	var rc int32
  8667  
  8668  	if objc != 4 && objc != 5 {
  8669  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2596)
  8670  		return TCL_ERROR
  8671  	}
  8672  	if objc == 5 {
  8673  		var zOpt uintptr = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
  8674  		if libc.Xstrcmp(tls, ts+2618, zOpt) != 0 {
  8675  			tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+2625, zOpt, 0))
  8676  			return TCL_ERROR
  8677  		}
  8678  	}
  8679  	if f5tDbAndApi(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(objc-3)*8)), bp+96, bp+104) != 0 {
  8680  		return TCL_ERROR
  8681  	}
  8682  	if tcl.XTcl_SplitList(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(objc-2)*8))), bp+112, bp+120) != 0 {
  8683  		return TCL_ERROR
  8684  	}
  8685  	if *(*int32)(unsafe.Pointer(bp + 112)) == 0 {
  8686  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+24, ts+2647, 0))
  8687  		tcl.XTcl_Free(tls, *(*uintptr)(unsafe.Pointer(bp + 120)))
  8688  		return TCL_ERROR
  8689  	}
  8690  	zText = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(objc-1)*8)), bp+128)
  8691  
  8692  	rc = (*struct {
  8693  		f func(*libc.TLS, uintptr, uintptr, uintptr, uintptr) int32
  8694  	})(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)
  8695  	if rc != SQLITE_OK {
  8696  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+40, ts+2647, *(*uintptr)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 120)))), 0))
  8697  		return TCL_ERROR
  8698  	}
  8699  
  8700  	rc = (*struct {
  8701  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
  8702  	})(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)
  8703  	if rc != SQLITE_OK {
  8704  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+64, ts+2667, 0))
  8705  		return TCL_ERROR
  8706  	}
  8707  
  8708  	pRet = tcl.XTcl_NewObj(tls)
  8709  	(*Tcl_Obj)(unsafe.Pointer(pRet)).FrefCount++
  8710  	(*F5tTokenizeCtx)(unsafe.Pointer(bp + 176)).FbSubst = libc.Bool32(objc == 5)
  8711  	(*F5tTokenizeCtx)(unsafe.Pointer(bp + 176)).FpRet = pRet
  8712  	(*F5tTokenizeCtx)(unsafe.Pointer(bp + 176)).FzInput = zText
  8713  	rc = (*struct {
  8714  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr, int32, uintptr) int32
  8715  	})(unsafe.Pointer(&struct{ uintptr }{(*fts5_tokenizer)(unsafe.Pointer(bp + 144)).FxTokenize})).f(tls,
  8716  		*(*uintptr)(unsafe.Pointer(bp + 168)), bp+176, FTS5_TOKENIZE_DOCUMENT, zText, *(*int32)(unsafe.Pointer(bp + 128)), *(*uintptr)(unsafe.Pointer(&struct {
  8717  			f func(*libc.TLS, uintptr, int32, uintptr, int32, int32, int32) int32
  8718  		}{xTokenizeCb2})))
  8719  	(*struct{ f func(*libc.TLS, uintptr) })(unsafe.Pointer(&struct{ uintptr }{(*fts5_tokenizer)(unsafe.Pointer(bp + 144)).FxDelete})).f(tls, *(*uintptr)(unsafe.Pointer(bp + 168)))
  8720  	if rc != SQLITE_OK {
  8721  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+80, ts+2696, 0))
  8722  		for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
  8723  			if libc.PreDecInt32(&(*Tcl_Obj)(unsafe.Pointer(pRet)).FrefCount, 1) <= 0 {
  8724  				tcl.XTclFreeObj(tls, pRet)
  8725  			}
  8726  		}
  8727  		return TCL_ERROR
  8728  	}
  8729  
  8730  	tcl.XTcl_Free(tls, *(*uintptr)(unsafe.Pointer(bp + 120)))
  8731  	tcl.XTcl_SetObjResult(tls, interp, pRet)
  8732  	for __ccgo1 := true; __ccgo1; __ccgo1 = 0 != 0 {
  8733  		if libc.PreDecInt32(&(*Tcl_Obj)(unsafe.Pointer(pRet)).FrefCount, 1) <= 0 {
  8734  			tcl.XTclFreeObj(tls, pRet)
  8735  		}
  8736  	}
  8737  	return TCL_OK
  8738  }
  8739  
  8740  type F5tTokenizerContext1 = struct {
  8741  	FpCtx   uintptr
  8742  	FxToken uintptr
  8743  }
  8744  
  8745  type F5tTokenizerContext = F5tTokenizerContext1
  8746  type F5tTokenizerModule1 = struct {
  8747  	Finterp   uintptr
  8748  	FpScript  uintptr
  8749  	FpContext uintptr
  8750  }
  8751  
  8752  type F5tTokenizerModule = F5tTokenizerModule1
  8753  type F5tTokenizerInstance1 = struct {
  8754  	Finterp   uintptr
  8755  	FpScript  uintptr
  8756  	FpContext uintptr
  8757  }
  8758  
  8759  type F5tTokenizerInstance = F5tTokenizerInstance1
  8760  
  8761  func f5tTokenizerCreate(tls *libc.TLS, pCtx uintptr, azArg uintptr, nArg int32, ppOut uintptr) int32 {
  8762  	var pMod uintptr = pCtx
  8763  	var pEval uintptr
  8764  	var rc int32 = TCL_OK
  8765  	var i int32
  8766  
  8767  	pEval = tcl.XTcl_DuplicateObj(tls, (*F5tTokenizerModule)(unsafe.Pointer(pMod)).FpScript)
  8768  	(*Tcl_Obj)(unsafe.Pointer(pEval)).FrefCount++
  8769  	for i = 0; rc == TCL_OK && i < nArg; i++ {
  8770  		var pObj uintptr = tcl.XTcl_NewStringObj(tls, *(*uintptr)(unsafe.Pointer(azArg + uintptr(i)*8)), -1)
  8771  		rc = tcl.XTcl_ListObjAppendElement(tls, (*F5tTokenizerModule)(unsafe.Pointer(pMod)).Finterp, pEval, pObj)
  8772  	}
  8773  
  8774  	if rc == TCL_OK {
  8775  		rc = tcl.XTcl_EvalObjEx(tls, (*F5tTokenizerModule)(unsafe.Pointer(pMod)).Finterp, pEval, TCL_GLOBAL_ONLY)
  8776  	}
  8777  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
  8778  		if libc.PreDecInt32(&(*Tcl_Obj)(unsafe.Pointer(pEval)).FrefCount, 1) <= 0 {
  8779  			tcl.XTclFreeObj(tls, pEval)
  8780  		}
  8781  	}
  8782  
  8783  	if rc == TCL_OK {
  8784  		var pInst uintptr
  8785  		pInst = tcl.XTcl_Alloc(tls, uint32(unsafe.Sizeof(F5tTokenizerInstance{})))
  8786  		libc.X__builtin___memset_chk(tls, pInst, 0, uint64(unsafe.Sizeof(F5tTokenizerInstance{})), libc.X__builtin_object_size(tls, pInst, 0))
  8787  		(*F5tTokenizerInstance)(unsafe.Pointer(pInst)).Finterp = (*F5tTokenizerModule)(unsafe.Pointer(pMod)).Finterp
  8788  		(*F5tTokenizerInstance)(unsafe.Pointer(pInst)).FpScript = tcl.XTcl_GetObjResult(tls, (*F5tTokenizerModule)(unsafe.Pointer(pMod)).Finterp)
  8789  		(*F5tTokenizerInstance)(unsafe.Pointer(pInst)).FpContext = (*F5tTokenizerModule)(unsafe.Pointer(pMod)).FpContext
  8790  		(*Tcl_Obj)(unsafe.Pointer((*F5tTokenizerInstance)(unsafe.Pointer(pInst)).FpScript)).FrefCount++
  8791  		*(*uintptr)(unsafe.Pointer(ppOut)) = pInst
  8792  	}
  8793  
  8794  	return rc
  8795  }
  8796  
  8797  func f5tTokenizerDelete(tls *libc.TLS, p uintptr) {
  8798  	var pInst uintptr = p
  8799  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
  8800  		if libc.PreDecInt32(&(*Tcl_Obj)(unsafe.Pointer((*F5tTokenizerInstance)(unsafe.Pointer(pInst)).FpScript)).FrefCount, 1) <= 0 {
  8801  			tcl.XTclFreeObj(tls, (*F5tTokenizerInstance)(unsafe.Pointer(pInst)).FpScript)
  8802  		}
  8803  	}
  8804  	tcl.XTcl_Free(tls, pInst)
  8805  }
  8806  
  8807  func f5tTokenizerTokenize(tls *libc.TLS, p uintptr, pCtx uintptr, flags int32, pText uintptr, nText int32, xToken uintptr) int32 {
  8808  	var pInst uintptr = p
  8809  	var pOldCtx uintptr
  8810  	var xOldToken uintptr
  8811  	var pEval uintptr
  8812  	var rc int32
  8813  	var zFlags uintptr
  8814  
  8815  	pOldCtx = (*F5tTokenizerContext)(unsafe.Pointer((*F5tTokenizerInstance)(unsafe.Pointer(pInst)).FpContext)).FpCtx
  8816  	xOldToken = (*F5tTokenizerContext)(unsafe.Pointer((*F5tTokenizerInstance)(unsafe.Pointer(pInst)).FpContext)).FxToken
  8817  
  8818  	(*F5tTokenizerContext)(unsafe.Pointer((*F5tTokenizerInstance)(unsafe.Pointer(pInst)).FpContext)).FpCtx = pCtx
  8819  	(*F5tTokenizerContext)(unsafe.Pointer((*F5tTokenizerInstance)(unsafe.Pointer(pInst)).FpContext)).FxToken = xToken
  8820  
  8821  	pEval = tcl.XTcl_DuplicateObj(tls, (*F5tTokenizerInstance)(unsafe.Pointer(pInst)).FpScript)
  8822  	(*Tcl_Obj)(unsafe.Pointer(pEval)).FrefCount++
  8823  	switch flags {
  8824  	case FTS5_TOKENIZE_DOCUMENT:
  8825  		zFlags = ts + 2727
  8826  		break
  8827  	case FTS5_TOKENIZE_AUX:
  8828  		zFlags = ts + 2736
  8829  		break
  8830  	case FTS5_TOKENIZE_QUERY:
  8831  		zFlags = ts + 2740
  8832  		break
  8833  	case FTS5_TOKENIZE_PREFIX | FTS5_TOKENIZE_QUERY:
  8834  		zFlags = ts + 2746
  8835  		break
  8836  	default:
  8837  		zFlags = ts + 2758
  8838  		break
  8839  	}
  8840  
  8841  	tcl.XTcl_ListObjAppendElement(tls, (*F5tTokenizerInstance)(unsafe.Pointer(pInst)).Finterp, pEval, tcl.XTcl_NewStringObj(tls, zFlags, -1))
  8842  	tcl.XTcl_ListObjAppendElement(tls, (*F5tTokenizerInstance)(unsafe.Pointer(pInst)).Finterp, pEval, tcl.XTcl_NewStringObj(tls, pText, nText))
  8843  	rc = tcl.XTcl_EvalObjEx(tls, (*F5tTokenizerInstance)(unsafe.Pointer(pInst)).Finterp, pEval, TCL_GLOBAL_ONLY)
  8844  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
  8845  		if libc.PreDecInt32(&(*Tcl_Obj)(unsafe.Pointer(pEval)).FrefCount, 1) <= 0 {
  8846  			tcl.XTclFreeObj(tls, pEval)
  8847  		}
  8848  	}
  8849  
  8850  	(*F5tTokenizerContext)(unsafe.Pointer((*F5tTokenizerInstance)(unsafe.Pointer(pInst)).FpContext)).FpCtx = pOldCtx
  8851  	(*F5tTokenizerContext)(unsafe.Pointer((*F5tTokenizerInstance)(unsafe.Pointer(pInst)).FpContext)).FxToken = xOldToken
  8852  	return rc
  8853  }
  8854  
  8855  func f5tTokenizerReturn(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
  8856  	bp := tls.Alloc(32)
  8857  	defer tls.Free(32)
  8858  
  8859  	var p uintptr
  8860  
  8861  	var tflags int32
  8862  	var zToken uintptr
  8863  	var rc int32
  8864  
  8865  	var zArg uintptr
  8866  	p = clientData
  8867  	tflags = 0
  8868  
  8869  	if !(objc == 5) {
  8870  		goto __1
  8871  	}
  8872  	zArg = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp+16)
  8873  	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) {
  8874  		goto __3
  8875  	}
  8876  	tflags = tflags | FTS5_TOKEN_COLOCATED
  8877  	goto __4
  8878  __3:
  8879  	goto usage
  8880  __4:
  8881  	;
  8882  	goto __2
  8883  __1:
  8884  	if !(objc != 4) {
  8885  		goto __5
  8886  	}
  8887  	goto usage
  8888  __5:
  8889  	;
  8890  __2:
  8891  	;
  8892  	zToken = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(objc-3)*8)), bp+20)
  8893  	if !(tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(objc-2)*8)), bp+24) != 0 ||
  8894  		tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(objc-1)*8)), bp+28) != 0) {
  8895  		goto __6
  8896  	}
  8897  	return TCL_ERROR
  8898  __6:
  8899  	;
  8900  	if !((*F5tTokenizerContext)(unsafe.Pointer(p)).FxToken == uintptr(0)) {
  8901  		goto __7
  8902  	}
  8903  	tcl.XTcl_AppendResult(tls, interp,
  8904  		libc.VaList(bp, ts+2777, 0))
  8905  	return TCL_ERROR
  8906  __7:
  8907  	;
  8908  	rc = (*struct {
  8909  		f func(*libc.TLS, uintptr, int32, uintptr, int32, int32, int32) int32
  8910  	})(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)))
  8911  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(1))
  8912  	if rc == SQLITE_OK {
  8913  		return TCL_OK
  8914  	}
  8915  	return TCL_ERROR
  8916  
  8917  usage:
  8918  	tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2835)
  8919  	return TCL_ERROR
  8920  }
  8921  
  8922  func f5tDelTokenizer(tls *libc.TLS, pCtx uintptr) {
  8923  	var pMod uintptr = pCtx
  8924  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
  8925  		if libc.PreDecInt32(&(*Tcl_Obj)(unsafe.Pointer((*F5tTokenizerModule)(unsafe.Pointer(pMod)).FpScript)).FrefCount, 1) <= 0 {
  8926  			tcl.XTclFreeObj(tls, (*F5tTokenizerModule)(unsafe.Pointer(pMod)).FpScript)
  8927  		}
  8928  	}
  8929  	tcl.XTcl_Free(tls, pMod)
  8930  }
  8931  
  8932  func f5tCreateTokenizer(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
  8933  	bp := tls.Alloc(56)
  8934  	defer tls.Free(56)
  8935  
  8936  	var pContext uintptr = clientData
  8937  
  8938  	var zName uintptr
  8939  	var pScript uintptr
  8940  
  8941  	var pMod uintptr
  8942  	var rc int32
  8943  
  8944  	if objc != 4 {
  8945  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2581)
  8946  		return TCL_ERROR
  8947  	}
  8948  	if f5tDbAndApi(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp+16, bp+24) != 0 {
  8949  		return TCL_ERROR
  8950  	}
  8951  	zName = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
  8952  	pScript = *(*uintptr)(unsafe.Pointer(objv + 3*8))
  8953  
  8954  	(*fts5_tokenizer)(unsafe.Pointer(bp + 32)).FxCreate = *(*uintptr)(unsafe.Pointer(&struct {
  8955  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
  8956  	}{f5tTokenizerCreate}))
  8957  	(*fts5_tokenizer)(unsafe.Pointer(bp + 32)).FxTokenize = *(*uintptr)(unsafe.Pointer(&struct {
  8958  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr, int32, uintptr) int32
  8959  	}{f5tTokenizerTokenize}))
  8960  	(*fts5_tokenizer)(unsafe.Pointer(bp + 32)).FxDelete = *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{f5tTokenizerDelete}))
  8961  
  8962  	pMod = tcl.XTcl_Alloc(tls, uint32(unsafe.Sizeof(F5tTokenizerModule{})))
  8963  	(*F5tTokenizerModule)(unsafe.Pointer(pMod)).Finterp = interp
  8964  	(*F5tTokenizerModule)(unsafe.Pointer(pMod)).FpScript = pScript
  8965  	(*F5tTokenizerModule)(unsafe.Pointer(pMod)).FpContext = pContext
  8966  	(*Tcl_Obj)(unsafe.Pointer(pScript)).FrefCount++
  8967  	rc = (*struct {
  8968  		f func(*libc.TLS, uintptr, uintptr, uintptr, uintptr, uintptr) int32
  8969  	})(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})))
  8970  	if rc != SQLITE_OK {
  8971  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+2863, 0))
  8972  		return TCL_ERROR
  8973  	}
  8974  
  8975  	return TCL_OK
  8976  }
  8977  
  8978  func xF5tFree(tls *libc.TLS, clientData ClientData) {
  8979  	tcl.XTcl_Free(tls, clientData)
  8980  }
  8981  
  8982  func f5tMayBeCorrupt(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
  8983  	return TCL_OK
  8984  }
  8985  
  8986  func f5t_fts5HashKey(tls *libc.TLS, nSlot int32, p uintptr, n int32) uint32 {
  8987  	var i int32
  8988  	var h uint32 = uint32(13)
  8989  	for i = n - 1; i >= 0; i-- {
  8990  		h = h<<3 ^ h ^ uint32(*(*int8)(unsafe.Pointer(p + uintptr(i))))
  8991  	}
  8992  	return h % uint32(nSlot)
  8993  }
  8994  
  8995  func f5tTokenHash(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
  8996  	bp := tls.Alloc(8)
  8997  	defer tls.Free(8)
  8998  
  8999  	var z uintptr
  9000  
  9001  	var iVal uint32
  9002  
  9003  	if objc != 3 {
  9004  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2900)
  9005  		return TCL_ERROR
  9006  	}
  9007  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp) != 0 {
  9008  		return TCL_ERROR
  9009  	}
  9010  	z = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+4)
  9011  
  9012  	iVal = f5t_fts5HashKey(tls, *(*int32)(unsafe.Pointer(bp)), z, *(*int32)(unsafe.Pointer(bp + 4)))
  9013  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, int32(iVal)))
  9014  	return TCL_OK
  9015  }
  9016  
  9017  func f5tRegisterMatchinfo(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
  9018  	bp := tls.Alloc(8)
  9019  	defer tls.Free(8)
  9020  
  9021  	var rc int32
  9022  	*(*uintptr)(unsafe.Pointer(bp)) = uintptr(0)
  9023  
  9024  	if objc != 2 {
  9025  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2050)
  9026  		return TCL_ERROR
  9027  	}
  9028  	if f5tDbPointer(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp) != 0 {
  9029  		return TCL_ERROR
  9030  	}
  9031  
  9032  	rc = sqlite3Fts5TestRegisterMatchinfo(tls, *(*uintptr)(unsafe.Pointer(bp)))
  9033  	if rc != SQLITE_OK {
  9034  		tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(1))
  9035  		return TCL_ERROR
  9036  	}
  9037  	return TCL_OK
  9038  }
  9039  
  9040  func f5tRegisterTok(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
  9041  	bp := tls.Alloc(16)
  9042  	defer tls.Free(16)
  9043  
  9044  	var rc int32
  9045  	*(*uintptr)(unsafe.Pointer(bp)) = uintptr(0)
  9046  	*(*uintptr)(unsafe.Pointer(bp + 8)) = uintptr(0)
  9047  
  9048  	if objc != 2 {
  9049  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2050)
  9050  		return TCL_ERROR
  9051  	}
  9052  	if f5tDbAndApi(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp, bp+8) != 0 {
  9053  		return TCL_ERROR
  9054  	}
  9055  
  9056  	rc = sqlite3Fts5TestRegisterTok(tls, *(*uintptr)(unsafe.Pointer(bp)), *(*uintptr)(unsafe.Pointer(bp + 8)))
  9057  	if rc != SQLITE_OK {
  9058  		tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(1))
  9059  		return TCL_ERROR
  9060  	}
  9061  	return TCL_OK
  9062  }
  9063  
  9064  func Fts5tcl_Init(tls *libc.TLS, interp uintptr) int32 {
  9065  	var i int32
  9066  	var pContext uintptr
  9067  
  9068  	pContext = tcl.XTcl_Alloc(tls, uint32(unsafe.Sizeof(F5tTokenizerContext{})))
  9069  	libc.X__builtin___memset_chk(tls, pContext, 0, uint64(unsafe.Sizeof(F5tTokenizerContext{})), libc.X__builtin_object_size(tls, pContext, 0))
  9070  
  9071  	for i = 0; uint64(i) < uint64(unsafe.Sizeof(aCmd))/uint64(unsafe.Sizeof(struct {
  9072  		FzName        uintptr
  9073  		FxProc        uintptr
  9074  		FbTokenizeCtx int32
  9075  		F__ccgo_pad1  [4]byte
  9076  	}{})); i++ {
  9077  		var p uintptr = uintptr(unsafe.Pointer(&aCmd)) + uintptr(i)*24
  9078  		var pCtx uintptr = uintptr(0)
  9079  		if (*struct {
  9080  			FzName        uintptr
  9081  			FxProc        uintptr
  9082  			FbTokenizeCtx int32
  9083  			F__ccgo_pad1  [4]byte
  9084  		})(unsafe.Pointer(p)).FbTokenizeCtx != 0 {
  9085  			pCtx = pContext
  9086  		}
  9087  		tcl.XTcl_CreateObjCommand(tls, interp, (*struct {
  9088  			FzName        uintptr
  9089  			FxProc        uintptr
  9090  			FbTokenizeCtx int32
  9091  			F__ccgo_pad1  [4]byte
  9092  		})(unsafe.Pointer(p)).FzName, (*struct {
  9093  			FzName        uintptr
  9094  			FxProc        uintptr
  9095  			FbTokenizeCtx int32
  9096  			F__ccgo_pad1  [4]byte
  9097  		})(unsafe.Pointer(p)).FxProc, pCtx, func() uintptr {
  9098  			if i != 0 {
  9099  				return uintptr(0)
  9100  			}
  9101  			return *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, ClientData) }{xF5tFree}))
  9102  		}())
  9103  	}
  9104  
  9105  	return TCL_OK
  9106  }
  9107  
  9108  var aCmd = [8]struct {
  9109  	FzName        uintptr
  9110  	FxProc        uintptr
  9111  	FbTokenizeCtx int32
  9112  	F__ccgo_pad1  [4]byte
  9113  }{
  9114  	{FzName: ts + 2912, FxProc: 0, FbTokenizeCtx: 1},
  9115  	{FzName: ts + 2942, FxProc: 0, FbTokenizeCtx: 1},
  9116  	{FzName: ts + 2961, FxProc: 0},
  9117  	{FzName: ts + 2983, FxProc: 0},
  9118  	{FzName: ts + 3012, FxProc: 0},
  9119  	{FzName: ts + 3040, FxProc: 0},
  9120  	{FzName: ts + 3064, FxProc: 0},
  9121  	{FzName: ts + 3096, FxProc: 0},
  9122  }
  9123  
  9124  type Fts5MatchinfoCtx1 = struct {
  9125  	FnCol        int32
  9126  	FnPhrase     int32
  9127  	FzArg        uintptr
  9128  	FnRet        int32
  9129  	F__ccgo_pad1 [4]byte
  9130  	FaRet        uintptr
  9131  }
  9132  
  9133  type Fts5MatchinfoCtx = Fts5MatchinfoCtx1
  9134  
  9135  type u32 = uint32
  9136  
  9137  func fts5_api_from_db(tls *libc.TLS, db uintptr, ppApi uintptr) int32 {
  9138  	bp := tls.Alloc(8)
  9139  	defer tls.Free(8)
  9140  
  9141  	*(*uintptr)(unsafe.Pointer(bp)) = uintptr(0)
  9142  	var rc int32
  9143  
  9144  	*(*uintptr)(unsafe.Pointer(ppApi)) = uintptr(0)
  9145  	rc = sqlite3.Xsqlite3_prepare(tls, db, ts+2137, -1, bp, uintptr(0))
  9146  	if rc == SQLITE_OK {
  9147  		sqlite3.Xsqlite3_bind_pointer(tls, *(*uintptr)(unsafe.Pointer(bp)), 1, ppApi, ts+2161, uintptr(0))
  9148  		sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp)))
  9149  		rc = sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp)))
  9150  	}
  9151  
  9152  	return rc
  9153  }
  9154  
  9155  func fts5MatchinfoFlagsize(tls *libc.TLS, nCol int32, nPhrase int32, f int8) int32 {
  9156  	var ret int32 = -1
  9157  	switch int32(f) {
  9158  	case 'p':
  9159  		ret = 1
  9160  		break
  9161  	case 'c':
  9162  		ret = 1
  9163  		break
  9164  	case 'x':
  9165  		ret = 3 * nCol * nPhrase
  9166  		break
  9167  	case 'y':
  9168  		ret = nCol * nPhrase
  9169  		break
  9170  	case 'b':
  9171  		ret = (nCol + 31) / 32 * nPhrase
  9172  		break
  9173  	case 'n':
  9174  		ret = 1
  9175  		break
  9176  	case 'a':
  9177  		ret = nCol
  9178  		break
  9179  	case 'l':
  9180  		ret = nCol
  9181  		break
  9182  	case 's':
  9183  		ret = nCol
  9184  		break
  9185  	}
  9186  	return ret
  9187  }
  9188  
  9189  func fts5MatchinfoIter(tls *libc.TLS, pApi uintptr, pFts uintptr, p uintptr, x uintptr) int32 {
  9190  	var i int32
  9191  	var n int32 = 0
  9192  	var rc int32 = SQLITE_OK
  9193  	var f int8
  9194  	for i = 0; libc.AssignInt8(&f, *(*int8)(unsafe.Pointer((*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FzArg + uintptr(i)))) != 0; i++ {
  9195  		rc = (*struct {
  9196  			f func(*libc.TLS, uintptr, uintptr, uintptr, int8, uintptr) int32
  9197  		})(unsafe.Pointer(&struct{ uintptr }{x})).f(tls, pApi, pFts, p, f, (*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FaRet+uintptr(n)*4)
  9198  		if rc != SQLITE_OK {
  9199  			break
  9200  		}
  9201  		n = n + fts5MatchinfoFlagsize(tls, (*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FnCol, (*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FnPhrase, f)
  9202  	}
  9203  	return rc
  9204  }
  9205  
  9206  func fts5MatchinfoXCb(tls *libc.TLS, pApi uintptr, pFts uintptr, pUserData uintptr) int32 {
  9207  	bp := tls.Alloc(24)
  9208  	defer tls.Free(24)
  9209  
  9210  	var aOut uintptr = pUserData
  9211  	var iPrev int32 = -1
  9212  
  9213  	for (*struct {
  9214  		f func(*libc.TLS, uintptr, int32, uintptr, uintptr, uintptr) int32
  9215  	})(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 {
  9216  		f func(*libc.TLS, uintptr, uintptr, uintptr, uintptr)
  9217  	})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer(pApi)).FxPhraseNext})).f(tls, pFts, bp, bp+16, bp+20) {
  9218  		*(*u32)(unsafe.Pointer(aOut + uintptr(*(*int32)(unsafe.Pointer(bp + 16))*3+1)*4))++
  9219  		if *(*int32)(unsafe.Pointer(bp + 16)) != iPrev {
  9220  			*(*u32)(unsafe.Pointer(aOut + uintptr(*(*int32)(unsafe.Pointer(bp + 16))*3+2)*4))++
  9221  		}
  9222  		iPrev = *(*int32)(unsafe.Pointer(bp + 16))
  9223  	}
  9224  
  9225  	return SQLITE_OK
  9226  }
  9227  
  9228  func fts5MatchinfoGlobalCb(tls *libc.TLS, pApi uintptr, pFts uintptr, p uintptr, f int8, aOut uintptr) int32 {
  9229  	bp := tls.Alloc(24)
  9230  	defer tls.Free(24)
  9231  
  9232  	var rc int32 = SQLITE_OK
  9233  	switch int32(f) {
  9234  	case 'p':
  9235  		*(*u32)(unsafe.Pointer(aOut)) = u32((*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FnPhrase)
  9236  		break
  9237  
  9238  	case 'c':
  9239  		*(*u32)(unsafe.Pointer(aOut)) = u32((*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FnCol)
  9240  		break
  9241  
  9242  	case 'x':
  9243  		{
  9244  			var i int32
  9245  			for i = 0; i < (*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FnPhrase && rc == SQLITE_OK; i++ {
  9246  				var pPtr uintptr = aOut + uintptr(i*(*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FnCol*3)*4
  9247  				rc = (*struct {
  9248  					f func(*libc.TLS, uintptr, int32, uintptr, uintptr) int32
  9249  				})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer(pApi)).FxQueryPhrase})).f(tls, pFts, i, pPtr, *(*uintptr)(unsafe.Pointer(&struct {
  9250  					f func(*libc.TLS, uintptr, uintptr, uintptr) int32
  9251  				}{fts5MatchinfoXCb})))
  9252  			}
  9253  			break
  9254  
  9255  		}
  9256  
  9257  	case 'n':
  9258  		{
  9259  			rc = (*struct {
  9260  				f func(*libc.TLS, uintptr, uintptr) int32
  9261  			})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer(pApi)).FxRowCount})).f(tls, pFts, bp)
  9262  			*(*u32)(unsafe.Pointer(aOut)) = u32(*(*sqlite3_int64)(unsafe.Pointer(bp)))
  9263  			break
  9264  
  9265  		}
  9266  
  9267  	case 'a':
  9268  		{
  9269  			*(*sqlite3_int64)(unsafe.Pointer(bp + 8)) = int64(0)
  9270  			rc = (*struct {
  9271  				f func(*libc.TLS, uintptr, uintptr) int32
  9272  			})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer(pApi)).FxRowCount})).f(tls, pFts, bp+8)
  9273  			if *(*sqlite3_int64)(unsafe.Pointer(bp + 8)) == int64(0) {
  9274  				libc.X__builtin___memset_chk(tls, aOut, 0, uint64(unsafe.Sizeof(u32(0)))*uint64((*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FnCol), libc.X__builtin_object_size(tls, aOut, 0))
  9275  			} else {
  9276  				var i int32
  9277  				for i = 0; rc == SQLITE_OK && i < (*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FnCol; i++ {
  9278  					rc = (*struct {
  9279  						f func(*libc.TLS, uintptr, int32, uintptr) int32
  9280  					})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer(pApi)).FxColumnTotalSize})).f(tls, pFts, i, bp+16)
  9281  					if rc == SQLITE_OK {
  9282  						*(*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))))
  9283  					}
  9284  				}
  9285  			}
  9286  			break
  9287  
  9288  		}
  9289  
  9290  	}
  9291  	return rc
  9292  }
  9293  
  9294  func fts5MatchinfoLocalCb(tls *libc.TLS, pApi uintptr, pFts uintptr, p uintptr, f int8, aOut uintptr) int32 {
  9295  	bp := tls.Alloc(80)
  9296  	defer tls.Free(80)
  9297  
  9298  	var i int32
  9299  	var rc int32 = SQLITE_OK
  9300  
  9301  	switch int32(f) {
  9302  	case 'b':
  9303  		{
  9304  			var iPhrase int32
  9305  			var nInt int32 = ((*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FnCol + 31) / 32 * (*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FnPhrase
  9306  			for i = 0; i < nInt; i++ {
  9307  				*(*u32)(unsafe.Pointer(aOut + uintptr(i)*4)) = u32(0)
  9308  			}
  9309  
  9310  			for iPhrase = 0; iPhrase < (*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FnPhrase; iPhrase++ {
  9311  				for (*struct {
  9312  					f func(*libc.TLS, uintptr, int32, uintptr, uintptr) int32
  9313  				})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer(pApi)).FxPhraseFirstColumn})).f(tls, pFts, iPhrase, bp, bp+16); *(*int32)(unsafe.Pointer(bp + 16)) >= 0; (*struct {
  9314  					f func(*libc.TLS, uintptr, uintptr, uintptr)
  9315  				})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer(pApi)).FxPhraseNextColumn})).f(tls, pFts, bp, bp+16) {
  9316  					*(*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)
  9317  				}
  9318  			}
  9319  
  9320  			break
  9321  
  9322  		}
  9323  
  9324  	case 'x':
  9325  		fallthrough
  9326  	case 'y':
  9327  		{
  9328  			var nMul int32 = func() int32 {
  9329  				if int32(f) == 'x' {
  9330  					return 3
  9331  				}
  9332  				return 1
  9333  			}()
  9334  			var iPhrase int32
  9335  
  9336  			for i = 0; i < (*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FnCol*(*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FnPhrase; i++ {
  9337  				*(*u32)(unsafe.Pointer(aOut + uintptr(i*nMul)*4)) = u32(0)
  9338  			}
  9339  
  9340  			for iPhrase = 0; iPhrase < (*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FnPhrase; iPhrase++ {
  9341  				for (*struct {
  9342  					f func(*libc.TLS, uintptr, int32, uintptr, uintptr, uintptr) int32
  9343  				})(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 {
  9344  					f func(*libc.TLS, uintptr, uintptr, uintptr, uintptr)
  9345  				})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer(pApi)).FxPhraseNext})).f(tls, pFts, bp+24, bp+40, bp+44) {
  9346  					*(*u32)(unsafe.Pointer(aOut + uintptr(nMul*(*(*int32)(unsafe.Pointer(bp + 40))+iPhrase*(*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FnCol))*4))++
  9347  				}
  9348  			}
  9349  
  9350  			break
  9351  
  9352  		}
  9353  
  9354  	case 'l':
  9355  		{
  9356  			for i = 0; rc == SQLITE_OK && i < (*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FnCol; i++ {
  9357  				rc = (*struct {
  9358  					f func(*libc.TLS, uintptr, int32, uintptr) int32
  9359  				})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer(pApi)).FxColumnSize})).f(tls, pFts, i, bp+48)
  9360  				*(*u32)(unsafe.Pointer(aOut + uintptr(i)*4)) = u32(*(*int32)(unsafe.Pointer(bp + 48)))
  9361  			}
  9362  			break
  9363  
  9364  		}
  9365  
  9366  	case 's':
  9367  		{
  9368  			libc.X__builtin___memset_chk(tls, aOut, 0, uint64(unsafe.Sizeof(u32(0)))*uint64((*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FnCol), libc.X__builtin_object_size(tls, aOut, 0))
  9369  
  9370  			rc = (*struct {
  9371  				f func(*libc.TLS, uintptr, uintptr) int32
  9372  			})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer(pApi)).FxInstCount})).f(tls, pFts, bp+52)
  9373  			for i = 0; rc == SQLITE_OK && i < *(*int32)(unsafe.Pointer(bp + 52)); i++ {
  9374  				*(*int32)(unsafe.Pointer(bp + 60)) = 0
  9375  				var iNextPhrase int32
  9376  				var iNextOff int32
  9377  				var nSeq u32 = u32(1)
  9378  				var j int32
  9379  
  9380  				rc = (*struct {
  9381  					f func(*libc.TLS, uintptr, int32, uintptr, uintptr, uintptr) int32
  9382  				})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer(pApi)).FxInst})).f(tls, pFts, i, bp+56, bp+60, bp+64)
  9383  				iNextPhrase = *(*int32)(unsafe.Pointer(bp + 56)) + 1
  9384  				iNextOff = *(*int32)(unsafe.Pointer(bp + 64)) + (*struct {
  9385  					f func(*libc.TLS, uintptr, int32) int32
  9386  				})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer(pApi)).FxPhraseSize})).f(tls, pFts, 0)
  9387  				for j = i + 1; rc == SQLITE_OK && j < *(*int32)(unsafe.Pointer(bp + 52)); j++ {
  9388  					rc = (*struct {
  9389  						f func(*libc.TLS, uintptr, int32, uintptr, uintptr, uintptr) int32
  9390  					})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer(pApi)).FxInst})).f(tls, pFts, j, bp+68, bp+72, bp+76)
  9391  					if *(*int32)(unsafe.Pointer(bp + 72)) != *(*int32)(unsafe.Pointer(bp + 60)) || *(*int32)(unsafe.Pointer(bp + 76)) > iNextOff {
  9392  						break
  9393  					}
  9394  					if *(*int32)(unsafe.Pointer(bp + 68)) == iNextPhrase && *(*int32)(unsafe.Pointer(bp + 76)) == iNextOff {
  9395  						nSeq++
  9396  						iNextPhrase = *(*int32)(unsafe.Pointer(bp + 68)) + 1
  9397  						iNextOff = *(*int32)(unsafe.Pointer(bp + 76)) + (*struct {
  9398  							f func(*libc.TLS, uintptr, int32) int32
  9399  						})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer(pApi)).FxPhraseSize})).f(tls, pFts, *(*int32)(unsafe.Pointer(bp + 68)))
  9400  					}
  9401  				}
  9402  
  9403  				if nSeq > *(*u32)(unsafe.Pointer(aOut + uintptr(*(*int32)(unsafe.Pointer(bp + 60)))*4)) {
  9404  					*(*u32)(unsafe.Pointer(aOut + uintptr(*(*int32)(unsafe.Pointer(bp + 60)))*4)) = nSeq
  9405  				}
  9406  			}
  9407  
  9408  			break
  9409  
  9410  		}
  9411  	}
  9412  	return rc
  9413  }
  9414  
  9415  func fts5MatchinfoNew(tls *libc.TLS, pApi uintptr, pFts uintptr, pCtx uintptr, zArg uintptr) uintptr {
  9416  	bp := tls.Alloc(8)
  9417  	defer tls.Free(8)
  9418  
  9419  	var p uintptr
  9420  	var nCol int32
  9421  	var nPhrase int32
  9422  	var i int32
  9423  	var nInt int32
  9424  	var nByte sqlite3_int64
  9425  	var rc int32
  9426  
  9427  	nCol = (*struct {
  9428  		f func(*libc.TLS, uintptr) int32
  9429  	})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer(pApi)).FxColumnCount})).f(tls, pFts)
  9430  	nPhrase = (*struct {
  9431  		f func(*libc.TLS, uintptr) int32
  9432  	})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer(pApi)).FxPhraseCount})).f(tls, pFts)
  9433  
  9434  	nInt = 0
  9435  	for i = 0; *(*int8)(unsafe.Pointer(zArg + uintptr(i))) != 0; i++ {
  9436  		var n int32 = fts5MatchinfoFlagsize(tls, nCol, nPhrase, *(*int8)(unsafe.Pointer(zArg + uintptr(i))))
  9437  		if n < 0 {
  9438  			var zErr uintptr = sqlite3.Xsqlite3_mprintf(tls, ts+3131, libc.VaList(bp, int32(*(*int8)(unsafe.Pointer(zArg + uintptr(i))))))
  9439  			sqlite3.Xsqlite3_result_error(tls, pCtx, zErr, -1)
  9440  			sqlite3.Xsqlite3_free(tls, zErr)
  9441  			return uintptr(0)
  9442  		}
  9443  		nInt = nInt + n
  9444  	}
  9445  
  9446  	nByte = sqlite3_int64(uint64(unsafe.Sizeof(Fts5MatchinfoCtx{})) +
  9447  		uint64(unsafe.Sizeof(u32(0)))*uint64(nInt) +
  9448  		uint64(i+1))
  9449  	p = sqlite3.Xsqlite3_malloc64(tls, uint64(nByte))
  9450  	if p == uintptr(0) {
  9451  		sqlite3.Xsqlite3_result_error_nomem(tls, pCtx)
  9452  		return uintptr(0)
  9453  	}
  9454  	libc.X__builtin___memset_chk(tls, p, 0, uint64(nByte), libc.X__builtin_object_size(tls, p, 0))
  9455  
  9456  	(*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FnCol = nCol
  9457  	(*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FnPhrase = nPhrase
  9458  	(*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FaRet = p + 1*32
  9459  	(*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FnRet = nInt
  9460  	(*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FzArg = (*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FaRet + uintptr(nInt)*4
  9461  	libc.X__builtin___memcpy_chk(tls, (*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FzArg, zArg, uint64(i), libc.X__builtin_object_size(tls, (*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FzArg, 0))
  9462  
  9463  	rc = fts5MatchinfoIter(tls, pApi, pFts, p, *(*uintptr)(unsafe.Pointer(&struct {
  9464  		f func(*libc.TLS, uintptr, uintptr, uintptr, int8, uintptr) int32
  9465  	}{fts5MatchinfoGlobalCb})))
  9466  	if rc != SQLITE_OK {
  9467  		sqlite3.Xsqlite3_result_error_code(tls, pCtx, rc)
  9468  		sqlite3.Xsqlite3_free(tls, p)
  9469  		p = uintptr(0)
  9470  	}
  9471  
  9472  	return p
  9473  }
  9474  
  9475  func fts5MatchinfoFunc(tls *libc.TLS, pApi uintptr, pFts uintptr, pCtx uintptr, nVal int32, apVal uintptr) {
  9476  	var zArg uintptr
  9477  	var p uintptr
  9478  	var rc int32 = SQLITE_OK
  9479  
  9480  	if nVal > 0 {
  9481  		zArg = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(apVal)))
  9482  	} else {
  9483  		zArg = ts + 3163
  9484  	}
  9485  
  9486  	p = (*struct {
  9487  		f func(*libc.TLS, uintptr, int32) uintptr
  9488  	})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer(pApi)).FxGetAuxdata})).f(tls, pFts, 0)
  9489  	if p == uintptr(0) || sqlite3.Xsqlite3_stricmp(tls, zArg, (*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FzArg) != 0 {
  9490  		p = fts5MatchinfoNew(tls, pApi, pFts, pCtx, zArg)
  9491  		if p == uintptr(0) {
  9492  			rc = SQLITE_NOMEM
  9493  		} else {
  9494  			rc = (*struct {
  9495  				f func(*libc.TLS, uintptr, uintptr, uintptr) int32
  9496  			})(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})))
  9497  		}
  9498  	}
  9499  
  9500  	if rc == SQLITE_OK {
  9501  		rc = fts5MatchinfoIter(tls, pApi, pFts, p, *(*uintptr)(unsafe.Pointer(&struct {
  9502  			f func(*libc.TLS, uintptr, uintptr, uintptr, int8, uintptr) int32
  9503  		}{fts5MatchinfoLocalCb})))
  9504  	}
  9505  	if rc != SQLITE_OK {
  9506  		sqlite3.Xsqlite3_result_error_code(tls, pCtx, rc)
  9507  	} else {
  9508  		var nByte int32 = int32(uint64((*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FnRet) * uint64(unsafe.Sizeof(u32(0))))
  9509  		sqlite3.Xsqlite3_result_blob(tls, pCtx, (*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FaRet, nByte, libc.UintptrFromInt32(-1))
  9510  	}
  9511  }
  9512  
  9513  func sqlite3Fts5TestRegisterMatchinfo(tls *libc.TLS, db uintptr) int32 {
  9514  	bp := tls.Alloc(8)
  9515  	defer tls.Free(8)
  9516  
  9517  	var rc int32
  9518  
  9519  	rc = fts5_api_from_db(tls, db, bp)
  9520  	if rc != SQLITE_OK {
  9521  		return rc
  9522  	}
  9523  
  9524  	if *(*uintptr)(unsafe.Pointer(bp)) == uintptr(0) || (*fts5_api)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp)))).FiVersion < 2 {
  9525  		return SQLITE_ERROR
  9526  	}
  9527  
  9528  	rc = (*struct {
  9529  		f func(*libc.TLS, uintptr, uintptr, uintptr, fts5_extension_function, uintptr) int32
  9530  	})(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 {
  9531  		f func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr)
  9532  	}{fts5MatchinfoFunc})), uintptr(0))
  9533  
  9534  	return rc
  9535  }
  9536  
  9537  type Fts5tokTable1 = struct {
  9538  	Fbase sqlite3_vtab
  9539  	Ftok  fts5_tokenizer
  9540  	FpTok uintptr
  9541  }
  9542  
  9543  type Fts5tokTable = Fts5tokTable1
  9544  type Fts5tokCursor1 = struct {
  9545  	Fbase        sqlite3_vtab_cursor
  9546  	FiRowid      int32
  9547  	F__ccgo_pad1 [4]byte
  9548  	FzInput      uintptr
  9549  	FnRow        int32
  9550  	F__ccgo_pad2 [4]byte
  9551  	FaRow        uintptr
  9552  }
  9553  
  9554  type Fts5tokCursor = Fts5tokCursor1
  9555  type Fts5tokRow1 = struct {
  9556  	FzToken      uintptr
  9557  	FiStart      int32
  9558  	FiEnd        int32
  9559  	FiPos        int32
  9560  	F__ccgo_pad1 [4]byte
  9561  }
  9562  
  9563  type Fts5tokRow = Fts5tokRow1
  9564  
  9565  func fts5tokDequote(tls *libc.TLS, z uintptr) {
  9566  	var q int8 = *(*int8)(unsafe.Pointer(z))
  9567  
  9568  	if int32(q) == '[' || int32(q) == '\'' || int32(q) == '"' || int32(q) == '`' {
  9569  		var iIn int32 = 1
  9570  		var iOut int32 = 0
  9571  		if int32(q) == '[' {
  9572  			q = int8(']')
  9573  		}
  9574  
  9575  		for *(*int8)(unsafe.Pointer(z + uintptr(iIn))) != 0 {
  9576  			if int32(*(*int8)(unsafe.Pointer(z + uintptr(iIn)))) == int32(q) {
  9577  				if int32(*(*int8)(unsafe.Pointer(z + uintptr(iIn+1)))) != int32(q) {
  9578  					iIn++
  9579  					break
  9580  				} else {
  9581  					iIn = iIn + 2
  9582  					*(*int8)(unsafe.Pointer(z + uintptr(libc.PostIncInt32(&iOut, 1)))) = q
  9583  				}
  9584  			} else {
  9585  				*(*int8)(unsafe.Pointer(z + uintptr(libc.PostIncInt32(&iOut, 1)))) = *(*int8)(unsafe.Pointer(z + uintptr(libc.PostIncInt32(&iIn, 1))))
  9586  			}
  9587  		}
  9588  
  9589  		*(*int8)(unsafe.Pointer(z + uintptr(iOut))) = int8(0)
  9590  	}
  9591  }
  9592  
  9593  func fts5tokDequoteArray(tls *libc.TLS, argc int32, argv uintptr, pazDequote uintptr) int32 {
  9594  	var rc int32 = SQLITE_OK
  9595  	if argc == 0 {
  9596  		*(*uintptr)(unsafe.Pointer(pazDequote)) = uintptr(0)
  9597  	} else {
  9598  		var i int32
  9599  		var nByte int32 = 0
  9600  		var azDequote uintptr
  9601  
  9602  		for i = 0; i < argc; i++ {
  9603  			nByte = nByte + int32(libc.Xstrlen(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8)))+uint64(1))
  9604  		}
  9605  
  9606  		*(*uintptr)(unsafe.Pointer(pazDequote)) = libc.AssignUintptr(&azDequote, sqlite3.Xsqlite3_malloc64(tls, uint64(unsafe.Sizeof(uintptr(0)))*uint64(argc)+uint64(nByte)))
  9607  		if azDequote == uintptr(0) {
  9608  			rc = SQLITE_NOMEM
  9609  		} else {
  9610  			var pSpace uintptr = azDequote + uintptr(argc)*8
  9611  			for i = 0; i < argc; i++ {
  9612  				var n int32 = int32(libc.Xstrlen(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8))))
  9613  				*(*uintptr)(unsafe.Pointer(azDequote + uintptr(i)*8)) = pSpace
  9614  				libc.X__builtin___memcpy_chk(tls, pSpace, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8)), uint64(n+1), libc.X__builtin_object_size(tls, pSpace, 0))
  9615  				fts5tokDequote(tls, pSpace)
  9616  				pSpace += uintptr(n + 1)
  9617  			}
  9618  		}
  9619  	}
  9620  
  9621  	return rc
  9622  }
  9623  
  9624  func fts5tokConnectMethod(tls *libc.TLS, db uintptr, pCtx uintptr, argc int32, argv uintptr, ppVtab uintptr, pzErr uintptr) int32 {
  9625  	bp := tls.Alloc(16)
  9626  	defer tls.Free(16)
  9627  
  9628  	var pApi uintptr = pCtx
  9629  	var pTab uintptr = uintptr(0)
  9630  	var rc int32
  9631  	*(*uintptr)(unsafe.Pointer(bp)) = uintptr(0)
  9632  	var nDequote int32 = 0
  9633  
  9634  	rc = sqlite3.Xsqlite3_declare_vtab(tls, db,
  9635  		ts+3177)
  9636  
  9637  	if rc == SQLITE_OK {
  9638  		nDequote = argc - 3
  9639  		rc = fts5tokDequoteArray(tls, nDequote, argv+3*8, bp)
  9640  	}
  9641  
  9642  	if rc == SQLITE_OK {
  9643  		pTab = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(Fts5tokTable{})))
  9644  		if pTab == uintptr(0) {
  9645  			rc = SQLITE_NOMEM
  9646  		} else {
  9647  			libc.X__builtin___memset_chk(tls, pTab, 0, uint64(unsafe.Sizeof(Fts5tokTable{})), libc.X__builtin_object_size(tls, pTab, 0))
  9648  		}
  9649  	}
  9650  
  9651  	if rc == SQLITE_OK {
  9652  		*(*uintptr)(unsafe.Pointer(bp + 8)) = uintptr(0)
  9653  		var zModule uintptr = uintptr(0)
  9654  		if nDequote > 0 {
  9655  			zModule = *(*uintptr)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp))))
  9656  		}
  9657  
  9658  		rc = (*struct {
  9659  			f func(*libc.TLS, uintptr, uintptr, uintptr, uintptr) int32
  9660  		})(unsafe.Pointer(&struct{ uintptr }{(*fts5_api)(unsafe.Pointer(pApi)).FxFindTokenizer})).f(tls, pApi, zModule, bp+8, pTab+24)
  9661  		if rc == SQLITE_OK {
  9662  			var azArg uintptr = func() uintptr {
  9663  				if nDequote > 1 {
  9664  					return *(*uintptr)(unsafe.Pointer(bp)) + 1*8
  9665  				}
  9666  				return uintptr(0)
  9667  			}()
  9668  			var nArg int32
  9669  			if nDequote > 0 {
  9670  				nArg = nDequote - 1
  9671  			} else {
  9672  				nArg = 0
  9673  			}
  9674  			rc = (*struct {
  9675  				f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
  9676  			})(unsafe.Pointer(&struct{ uintptr }{(*Fts5tokTable)(unsafe.Pointer(pTab)).Ftok.FxCreate})).f(tls, *(*uintptr)(unsafe.Pointer(bp + 8)), azArg, nArg, pTab+48)
  9677  		}
  9678  	}
  9679  
  9680  	if rc != SQLITE_OK {
  9681  		sqlite3.Xsqlite3_free(tls, pTab)
  9682  		pTab = uintptr(0)
  9683  	}
  9684  
  9685  	*(*uintptr)(unsafe.Pointer(ppVtab)) = pTab
  9686  	sqlite3.Xsqlite3_free(tls, *(*uintptr)(unsafe.Pointer(bp)))
  9687  	return rc
  9688  }
  9689  
  9690  func fts5tokDisconnectMethod(tls *libc.TLS, pVtab uintptr) int32 {
  9691  	var pTab uintptr = pVtab
  9692  	if (*Fts5tokTable)(unsafe.Pointer(pTab)).FpTok != 0 {
  9693  		(*struct{ f func(*libc.TLS, uintptr) })(unsafe.Pointer(&struct{ uintptr }{(*Fts5tokTable)(unsafe.Pointer(pTab)).Ftok.FxDelete})).f(tls, (*Fts5tokTable)(unsafe.Pointer(pTab)).FpTok)
  9694  	}
  9695  	sqlite3.Xsqlite3_free(tls, pTab)
  9696  	return SQLITE_OK
  9697  }
  9698  
  9699  func fts5tokBestIndexMethod(tls *libc.TLS, pVTab uintptr, pInfo uintptr) int32 {
  9700  	var i int32
  9701  
  9702  	for i = 0; i < (*sqlite3_index_info)(unsafe.Pointer(pInfo)).FnConstraint; i++ {
  9703  		if (*sqlite3_index_constraint)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pInfo)).FaConstraint+uintptr(i)*12)).Fusable != 0 &&
  9704  			(*sqlite3_index_constraint)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pInfo)).FaConstraint+uintptr(i)*12)).FiColumn == 0 &&
  9705  			int32((*sqlite3_index_constraint)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pInfo)).FaConstraint+uintptr(i)*12)).Fop) == SQLITE_INDEX_CONSTRAINT_EQ {
  9706  			(*sqlite3_index_info)(unsafe.Pointer(pInfo)).FidxNum = 1
  9707  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pInfo)).FaConstraintUsage + uintptr(i)*8)).FargvIndex = 1
  9708  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pInfo)).FaConstraintUsage + uintptr(i)*8)).Fomit = uint8(1)
  9709  			(*sqlite3_index_info)(unsafe.Pointer(pInfo)).FestimatedCost = float64(1)
  9710  			return SQLITE_OK
  9711  		}
  9712  	}
  9713  
  9714  	(*sqlite3_index_info)(unsafe.Pointer(pInfo)).FidxNum = 0
  9715  
  9716  	return SQLITE_OK
  9717  }
  9718  
  9719  func fts5tokOpenMethod(tls *libc.TLS, pVTab uintptr, ppCsr uintptr) int32 {
  9720  	var pCsr uintptr
  9721  
  9722  	pCsr = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(Fts5tokCursor{})))
  9723  	if pCsr == uintptr(0) {
  9724  		return SQLITE_NOMEM
  9725  	}
  9726  	libc.X__builtin___memset_chk(tls, pCsr, 0, uint64(unsafe.Sizeof(Fts5tokCursor{})), libc.X__builtin_object_size(tls, pCsr, 0))
  9727  
  9728  	*(*uintptr)(unsafe.Pointer(ppCsr)) = pCsr
  9729  	return SQLITE_OK
  9730  }
  9731  
  9732  func fts5tokResetCursor(tls *libc.TLS, pCsr uintptr) {
  9733  	var i int32
  9734  	for i = 0; i < (*Fts5tokCursor)(unsafe.Pointer(pCsr)).FnRow; i++ {
  9735  		sqlite3.Xsqlite3_free(tls, (*Fts5tokRow)(unsafe.Pointer((*Fts5tokCursor)(unsafe.Pointer(pCsr)).FaRow+uintptr(i)*24)).FzToken)
  9736  	}
  9737  	sqlite3.Xsqlite3_free(tls, (*Fts5tokCursor)(unsafe.Pointer(pCsr)).FzInput)
  9738  	sqlite3.Xsqlite3_free(tls, (*Fts5tokCursor)(unsafe.Pointer(pCsr)).FaRow)
  9739  	(*Fts5tokCursor)(unsafe.Pointer(pCsr)).FzInput = uintptr(0)
  9740  	(*Fts5tokCursor)(unsafe.Pointer(pCsr)).FaRow = uintptr(0)
  9741  	(*Fts5tokCursor)(unsafe.Pointer(pCsr)).FnRow = 0
  9742  	(*Fts5tokCursor)(unsafe.Pointer(pCsr)).FiRowid = 0
  9743  }
  9744  
  9745  func fts5tokCloseMethod(tls *libc.TLS, pCursor uintptr) int32 {
  9746  	var pCsr uintptr = pCursor
  9747  	fts5tokResetCursor(tls, pCsr)
  9748  	sqlite3.Xsqlite3_free(tls, pCsr)
  9749  	return SQLITE_OK
  9750  }
  9751  
  9752  func fts5tokNextMethod(tls *libc.TLS, pCursor uintptr) int32 {
  9753  	var pCsr uintptr = pCursor
  9754  	(*Fts5tokCursor)(unsafe.Pointer(pCsr)).FiRowid++
  9755  	return SQLITE_OK
  9756  }
  9757  
  9758  func fts5tokCb(tls *libc.TLS, pCtx uintptr, tflags int32, pToken uintptr, nToken int32, iStart int32, iEnd int32) int32 {
  9759  	var pCsr uintptr = pCtx
  9760  	var pRow uintptr
  9761  
  9762  	if (*Fts5tokCursor)(unsafe.Pointer(pCsr)).FnRow&((*Fts5tokCursor)(unsafe.Pointer(pCsr)).FnRow-1) == 0 {
  9763  		var nNew int32
  9764  		if (*Fts5tokCursor)(unsafe.Pointer(pCsr)).FnRow != 0 {
  9765  			nNew = (*Fts5tokCursor)(unsafe.Pointer(pCsr)).FnRow * 2
  9766  		} else {
  9767  			nNew = 32
  9768  		}
  9769  		var aNew uintptr
  9770  		aNew = sqlite3.Xsqlite3_realloc64(tls, (*Fts5tokCursor)(unsafe.Pointer(pCsr)).FaRow, uint64(nNew)*uint64(unsafe.Sizeof(Fts5tokRow{})))
  9771  		if aNew == uintptr(0) {
  9772  			return SQLITE_NOMEM
  9773  		}
  9774  		libc.X__builtin___memset_chk(tls, aNew+uintptr((*Fts5tokCursor)(unsafe.Pointer(pCsr)).FnRow)*24, 0, uint64(unsafe.Sizeof(Fts5tokRow{}))*uint64(nNew-(*Fts5tokCursor)(unsafe.Pointer(pCsr)).FnRow), libc.X__builtin_object_size(tls, aNew+uintptr((*Fts5tokCursor)(unsafe.Pointer(pCsr)).FnRow)*24, 0))
  9775  		(*Fts5tokCursor)(unsafe.Pointer(pCsr)).FaRow = aNew
  9776  	}
  9777  
  9778  	pRow = (*Fts5tokCursor)(unsafe.Pointer(pCsr)).FaRow + uintptr((*Fts5tokCursor)(unsafe.Pointer(pCsr)).FnRow)*24
  9779  	(*Fts5tokRow)(unsafe.Pointer(pRow)).FiStart = iStart
  9780  	(*Fts5tokRow)(unsafe.Pointer(pRow)).FiEnd = iEnd
  9781  	if (*Fts5tokCursor)(unsafe.Pointer(pCsr)).FnRow != 0 {
  9782  		(*Fts5tokRow)(unsafe.Pointer(pRow)).FiPos = (*Fts5tokRow)(unsafe.Pointer(pRow+libc.UintptrFromInt32(-1)*24)).FiPos + func() int32 {
  9783  			if tflags&FTS5_TOKEN_COLOCATED != 0 {
  9784  				return 0
  9785  			}
  9786  			return 1
  9787  		}()
  9788  	}
  9789  	(*Fts5tokRow)(unsafe.Pointer(pRow)).FzToken = sqlite3.Xsqlite3_malloc(tls, nToken+1)
  9790  	if (*Fts5tokRow)(unsafe.Pointer(pRow)).FzToken == uintptr(0) {
  9791  		return SQLITE_NOMEM
  9792  	}
  9793  	libc.X__builtin___memcpy_chk(tls, (*Fts5tokRow)(unsafe.Pointer(pRow)).FzToken, pToken, uint64(nToken), libc.X__builtin_object_size(tls, (*Fts5tokRow)(unsafe.Pointer(pRow)).FzToken, 0))
  9794  	*(*int8)(unsafe.Pointer((*Fts5tokRow)(unsafe.Pointer(pRow)).FzToken + uintptr(nToken))) = int8(0)
  9795  	(*Fts5tokCursor)(unsafe.Pointer(pCsr)).FnRow++
  9796  
  9797  	return SQLITE_OK
  9798  }
  9799  
  9800  func fts5tokFilterMethod(tls *libc.TLS, pCursor uintptr, idxNum int32, idxStr uintptr, nVal int32, apVal uintptr) int32 {
  9801  	var rc int32 = SQLITE_ERROR
  9802  	var pCsr uintptr = pCursor
  9803  	var pTab uintptr = (*sqlite3_vtab_cursor)(unsafe.Pointer(pCursor)).FpVtab
  9804  
  9805  	fts5tokResetCursor(tls, pCsr)
  9806  	if idxNum == 1 {
  9807  		var zByte uintptr = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(apVal)))
  9808  		var nByte int32 = sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(apVal)))
  9809  		(*Fts5tokCursor)(unsafe.Pointer(pCsr)).FzInput = sqlite3.Xsqlite3_malloc(tls, nByte+1)
  9810  		if (*Fts5tokCursor)(unsafe.Pointer(pCsr)).FzInput == uintptr(0) {
  9811  			rc = SQLITE_NOMEM
  9812  		} else {
  9813  			if nByte > 0 {
  9814  				libc.X__builtin___memcpy_chk(tls, (*Fts5tokCursor)(unsafe.Pointer(pCsr)).FzInput, zByte, uint64(nByte), libc.X__builtin_object_size(tls, (*Fts5tokCursor)(unsafe.Pointer(pCsr)).FzInput, 0))
  9815  			}
  9816  			*(*int8)(unsafe.Pointer((*Fts5tokCursor)(unsafe.Pointer(pCsr)).FzInput + uintptr(nByte))) = int8(0)
  9817  			rc = (*struct {
  9818  				f func(*libc.TLS, uintptr, uintptr, int32, uintptr, int32, uintptr) int32
  9819  			})(unsafe.Pointer(&struct{ uintptr }{(*Fts5tokTable)(unsafe.Pointer(pTab)).Ftok.FxTokenize})).f(tls,
  9820  				(*Fts5tokTable)(unsafe.Pointer(pTab)).FpTok, pCsr, 0, zByte, nByte, *(*uintptr)(unsafe.Pointer(&struct {
  9821  					f func(*libc.TLS, uintptr, int32, uintptr, int32, int32, int32) int32
  9822  				}{fts5tokCb})))
  9823  		}
  9824  	}
  9825  
  9826  	if rc != SQLITE_OK {
  9827  		return rc
  9828  	}
  9829  	return fts5tokNextMethod(tls, pCursor)
  9830  }
  9831  
  9832  func fts5tokEofMethod(tls *libc.TLS, pCursor uintptr) int32 {
  9833  	var pCsr uintptr = pCursor
  9834  	return libc.Bool32((*Fts5tokCursor)(unsafe.Pointer(pCsr)).FiRowid > (*Fts5tokCursor)(unsafe.Pointer(pCsr)).FnRow)
  9835  }
  9836  
  9837  func fts5tokColumnMethod(tls *libc.TLS, pCursor uintptr, pCtx uintptr, iCol int32) int32 {
  9838  	var pCsr uintptr = pCursor
  9839  	var pRow uintptr = (*Fts5tokCursor)(unsafe.Pointer(pCsr)).FaRow + uintptr((*Fts5tokCursor)(unsafe.Pointer(pCsr)).FiRowid-1)*24
  9840  
  9841  	switch iCol {
  9842  	case 0:
  9843  		sqlite3.Xsqlite3_result_text(tls, pCtx, (*Fts5tokCursor)(unsafe.Pointer(pCsr)).FzInput, -1, libc.UintptrFromInt32(-1))
  9844  		break
  9845  	case 1:
  9846  		sqlite3.Xsqlite3_result_text(tls, pCtx, (*Fts5tokRow)(unsafe.Pointer(pRow)).FzToken, -1, libc.UintptrFromInt32(-1))
  9847  		break
  9848  	case 2:
  9849  		sqlite3.Xsqlite3_result_int(tls, pCtx, (*Fts5tokRow)(unsafe.Pointer(pRow)).FiStart)
  9850  		break
  9851  	case 3:
  9852  		sqlite3.Xsqlite3_result_int(tls, pCtx, (*Fts5tokRow)(unsafe.Pointer(pRow)).FiEnd)
  9853  		break
  9854  	default:
  9855  		sqlite3.Xsqlite3_result_int(tls, pCtx, (*Fts5tokRow)(unsafe.Pointer(pRow)).FiPos)
  9856  		break
  9857  	}
  9858  	return SQLITE_OK
  9859  }
  9860  
  9861  func fts5tokRowidMethod(tls *libc.TLS, pCursor uintptr, pRowid uintptr) int32 {
  9862  	var pCsr uintptr = pCursor
  9863  	*(*sqlite_int64)(unsafe.Pointer(pRowid)) = sqlite3_int64((*Fts5tokCursor)(unsafe.Pointer(pCsr)).FiRowid)
  9864  	return SQLITE_OK
  9865  }
  9866  
  9867  func sqlite3Fts5TestRegisterTok(tls *libc.TLS, db uintptr, pApi uintptr) int32 {
  9868  	var rc int32
  9869  
  9870  	rc = sqlite3.Xsqlite3_create_module(tls, db, ts+3235, uintptr(unsafe.Pointer(&fts5tok_module)), pApi)
  9871  	return rc
  9872  }
  9873  
  9874  var fts5tok_module = sqlite3_module{
  9875  	FxCreate:     0,
  9876  	FxConnect:    0,
  9877  	FxBestIndex:  0,
  9878  	FxDisconnect: 0,
  9879  	FxDestroy:    0,
  9880  	FxOpen:       0,
  9881  	FxClose:      0,
  9882  	FxFilter:     0,
  9883  	FxNext:       0,
  9884  	FxEof:        0,
  9885  	FxColumn:     0,
  9886  	FxRowid:      0,
  9887  }
  9888  
  9889  type sqlite3_api_routines = sqlite3_api_routines1
  9890  
  9891  type sqlite3_loadext_entry = uintptr
  9892  
  9893  type ApndVfs = sqlite3_vfs1
  9894  type ApndFile1 = struct {
  9895  	Fbase   sqlite3_file
  9896  	FiPgOne sqlite3_int64
  9897  	FiMark  sqlite3_int64
  9898  }
  9899  
  9900  type ApndFile = ApndFile1
  9901  
  9902  var apnd_vfs = sqlite3_vfs{
  9903  	FiVersion:          3,
  9904  	FmxPathname:        1024,
  9905  	FzName:             ts + 3248,
  9906  	FxOpen:             0,
  9907  	FxDelete:           0,
  9908  	FxAccess:           0,
  9909  	FxFullPathname:     0,
  9910  	FxDlOpen:           0,
  9911  	FxDlError:          0,
  9912  	FxDlSym:            0,
  9913  	FxDlClose:          0,
  9914  	FxRandomness:       0,
  9915  	FxSleep:            0,
  9916  	FxCurrentTime:      0,
  9917  	FxGetLastError:     0,
  9918  	FxCurrentTimeInt64: 0,
  9919  	FxSetSystemCall:    0,
  9920  	FxGetSystemCall:    0,
  9921  	FxNextSystemCall:   0,
  9922  }
  9923  
  9924  var apnd_io_methods = sqlite3_io_methods{
  9925  	FiVersion:               3,
  9926  	FxClose:                 0,
  9927  	FxRead:                  0,
  9928  	FxWrite:                 0,
  9929  	FxTruncate:              0,
  9930  	FxSync:                  0,
  9931  	FxFileSize:              0,
  9932  	FxLock:                  0,
  9933  	FxUnlock:                0,
  9934  	FxCheckReservedLock:     0,
  9935  	FxFileControl:           0,
  9936  	FxSectorSize:            0,
  9937  	FxDeviceCharacteristics: 0,
  9938  	FxShmMap:                0,
  9939  	FxShmLock:               0,
  9940  	FxShmBarrier:            0,
  9941  	FxShmUnmap:              0,
  9942  	FxFetch:                 0,
  9943  	FxUnfetch:               0,
  9944  }
  9945  
  9946  func apndClose(tls *libc.TLS, pFile uintptr) int32 {
  9947  	pFile = pFile + uintptr(1)*24
  9948  	return (*struct {
  9949  		f func(*libc.TLS, uintptr) int32
  9950  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxClose})).f(tls, pFile)
  9951  }
  9952  
  9953  func apndRead(tls *libc.TLS, pFile uintptr, zBuf uintptr, iAmt int32, iOfst sqlite_int64) int32 {
  9954  	var paf uintptr = pFile
  9955  	pFile = pFile + uintptr(1)*24
  9956  	return (*struct {
  9957  		f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
  9958  	})(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)
  9959  }
  9960  
  9961  func apndWriteMark(tls *libc.TLS, paf uintptr, pFile uintptr, iWriteEnd sqlite_int64) int32 {
  9962  	bp := tls.Alloc(25)
  9963  	defer tls.Free(25)
  9964  
  9965  	var iPgOne sqlite_int64 = (*ApndFile)(unsafe.Pointer(paf)).FiPgOne
  9966  
  9967  	var i int32 = APND_MARK_FOS_SZ
  9968  	var rc int32
  9969  
  9970  	libc.X__builtin___memcpy_chk(tls, bp, ts+3256, uint64(APND_MARK_PREFIX_SZ), libc.X__builtin_object_size(tls, bp, 0))
  9971  	for libc.PreDecInt32(&i, 1) >= 0 {
  9972  		*(*uint8)(unsafe.Pointer(bp + uintptr(APND_MARK_PREFIX_SZ+i))) = uint8(iPgOne & int64(0xff))
  9973  		iPgOne >>= 8
  9974  	}
  9975  	iWriteEnd = iWriteEnd + (*ApndFile)(unsafe.Pointer(paf)).FiPgOne
  9976  	if SQLITE_OK == libc.AssignInt32(&rc, (*struct {
  9977  		f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
  9978  	})(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)) {
  9979  		(*ApndFile)(unsafe.Pointer(paf)).FiMark = iWriteEnd
  9980  	}
  9981  	return rc
  9982  }
  9983  
  9984  func apndWrite(tls *libc.TLS, pFile uintptr, zBuf uintptr, iAmt int32, iOfst sqlite_int64) int32 {
  9985  	var paf uintptr = pFile
  9986  	var iWriteEnd sqlite_int64 = iOfst + sqlite_int64(iAmt)
  9987  	if iWriteEnd >= int64(0x40000000) {
  9988  		return SQLITE_FULL
  9989  	}
  9990  	pFile = pFile + uintptr(1)*24
  9991  
  9992  	if (*ApndFile)(unsafe.Pointer(paf)).FiMark < int64(0) || (*ApndFile)(unsafe.Pointer(paf)).FiPgOne+iWriteEnd > (*ApndFile)(unsafe.Pointer(paf)).FiMark {
  9993  		var rc int32 = apndWriteMark(tls, paf, pFile, iWriteEnd)
  9994  		if SQLITE_OK != rc {
  9995  			return rc
  9996  		}
  9997  	}
  9998  	return (*struct {
  9999  		f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 10000  	})(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)
 10001  }
 10002  
 10003  func apndTruncate(tls *libc.TLS, pFile uintptr, size sqlite_int64) int32 {
 10004  	var paf uintptr = pFile
 10005  	pFile = pFile + uintptr(1)*24
 10006  
 10007  	if SQLITE_OK != apndWriteMark(tls, paf, pFile, size) {
 10008  		return SQLITE_IOERR
 10009  	}
 10010  
 10011  	return (*struct {
 10012  		f func(*libc.TLS, uintptr, sqlite3_int64) int32
 10013  	})(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))
 10014  }
 10015  
 10016  func apndSync(tls *libc.TLS, pFile uintptr, flags int32) int32 {
 10017  	pFile = pFile + uintptr(1)*24
 10018  	return (*struct {
 10019  		f func(*libc.TLS, uintptr, int32) int32
 10020  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxSync})).f(tls, pFile, flags)
 10021  }
 10022  
 10023  func apndFileSize(tls *libc.TLS, pFile uintptr, pSize uintptr) int32 {
 10024  	var paf uintptr = pFile
 10025  	*(*sqlite_int64)(unsafe.Pointer(pSize)) = func() int64 {
 10026  		if (*ApndFile)(unsafe.Pointer(paf)).FiMark >= int64(0) {
 10027  			return (*ApndFile)(unsafe.Pointer(paf)).FiMark - (*ApndFile)(unsafe.Pointer(paf)).FiPgOne
 10028  		}
 10029  		return int64(0)
 10030  	}()
 10031  	return SQLITE_OK
 10032  }
 10033  
 10034  func apndLock(tls *libc.TLS, pFile uintptr, eLock int32) int32 {
 10035  	pFile = pFile + uintptr(1)*24
 10036  	return (*struct {
 10037  		f func(*libc.TLS, uintptr, int32) int32
 10038  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxLock})).f(tls, pFile, eLock)
 10039  }
 10040  
 10041  func apndUnlock(tls *libc.TLS, pFile uintptr, eLock int32) int32 {
 10042  	pFile = pFile + uintptr(1)*24
 10043  	return (*struct {
 10044  		f func(*libc.TLS, uintptr, int32) int32
 10045  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxUnlock})).f(tls, pFile, eLock)
 10046  }
 10047  
 10048  func apndCheckReservedLock(tls *libc.TLS, pFile uintptr, pResOut uintptr) int32 {
 10049  	pFile = pFile + uintptr(1)*24
 10050  	return (*struct {
 10051  		f func(*libc.TLS, uintptr, uintptr) int32
 10052  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxCheckReservedLock})).f(tls, pFile, pResOut)
 10053  }
 10054  
 10055  func apndFileControl(tls *libc.TLS, pFile uintptr, op int32, pArg uintptr) int32 {
 10056  	bp := tls.Alloc(16)
 10057  	defer tls.Free(16)
 10058  
 10059  	var paf uintptr = pFile
 10060  	var rc int32
 10061  	pFile = pFile + uintptr(1)*24
 10062  	if op == SQLITE_FCNTL_SIZE_HINT {
 10063  		*(*sqlite3_int64)(unsafe.Pointer(pArg)) += (*ApndFile)(unsafe.Pointer(paf)).FiPgOne
 10064  	}
 10065  	rc = (*struct {
 10066  		f func(*libc.TLS, uintptr, int32, uintptr) int32
 10067  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxFileControl})).f(tls, pFile, op, pArg)
 10068  	if rc == SQLITE_OK && op == SQLITE_FCNTL_VFSNAME {
 10069  		*(*uintptr)(unsafe.Pointer(pArg)) = sqlite3.Xsqlite3_mprintf(tls, ts+3274, libc.VaList(bp, (*ApndFile)(unsafe.Pointer(paf)).FiPgOne, *(*uintptr)(unsafe.Pointer(pArg))))
 10070  	}
 10071  	return rc
 10072  }
 10073  
 10074  func apndSectorSize(tls *libc.TLS, pFile uintptr) int32 {
 10075  	pFile = pFile + uintptr(1)*24
 10076  	return (*struct {
 10077  		f func(*libc.TLS, uintptr) int32
 10078  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxSectorSize})).f(tls, pFile)
 10079  }
 10080  
 10081  func apndDeviceCharacteristics(tls *libc.TLS, pFile uintptr) int32 {
 10082  	pFile = pFile + uintptr(1)*24
 10083  	return (*struct {
 10084  		f func(*libc.TLS, uintptr) int32
 10085  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxDeviceCharacteristics})).f(tls, pFile)
 10086  }
 10087  
 10088  func apndShmMap(tls *libc.TLS, pFile uintptr, iPg int32, pgsz int32, bExtend int32, pp uintptr) int32 {
 10089  	pFile = pFile + uintptr(1)*24
 10090  	return (*struct {
 10091  		f func(*libc.TLS, uintptr, int32, int32, int32, uintptr) int32
 10092  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxShmMap})).f(tls, pFile, iPg, pgsz, bExtend, pp)
 10093  }
 10094  
 10095  func apndShmLock(tls *libc.TLS, pFile uintptr, offset int32, n int32, flags int32) int32 {
 10096  	pFile = pFile + uintptr(1)*24
 10097  	return (*struct {
 10098  		f func(*libc.TLS, uintptr, int32, int32, int32) int32
 10099  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxShmLock})).f(tls, pFile, offset, n, flags)
 10100  }
 10101  
 10102  func apndShmBarrier(tls *libc.TLS, pFile uintptr) {
 10103  	pFile = pFile + uintptr(1)*24
 10104  	(*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)
 10105  }
 10106  
 10107  func apndShmUnmap(tls *libc.TLS, pFile uintptr, deleteFlag int32) int32 {
 10108  	pFile = pFile + uintptr(1)*24
 10109  	return (*struct {
 10110  		f func(*libc.TLS, uintptr, int32) int32
 10111  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxShmUnmap})).f(tls, pFile, deleteFlag)
 10112  }
 10113  
 10114  func apndFetch(tls *libc.TLS, pFile uintptr, iOfst sqlite3_int64, iAmt int32, pp uintptr) int32 {
 10115  	var p uintptr = pFile
 10116  	if (*ApndFile)(unsafe.Pointer(p)).FiMark < int64(0) || iOfst+sqlite3_int64(iAmt) > (*ApndFile)(unsafe.Pointer(p)).FiMark {
 10117  		return SQLITE_IOERR
 10118  	}
 10119  	pFile = pFile + uintptr(1)*24
 10120  	return (*struct {
 10121  		f func(*libc.TLS, uintptr, sqlite3_int64, int32, uintptr) int32
 10122  	})(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)
 10123  }
 10124  
 10125  func apndUnfetch(tls *libc.TLS, pFile uintptr, iOfst sqlite3_int64, pPage uintptr) int32 {
 10126  	var p uintptr = pFile
 10127  	pFile = pFile + uintptr(1)*24
 10128  	return (*struct {
 10129  		f func(*libc.TLS, uintptr, sqlite3_int64, uintptr) int32
 10130  	})(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)
 10131  }
 10132  
 10133  func apndReadMark(tls *libc.TLS, sz sqlite3_int64, pFile uintptr) sqlite3_int64 {
 10134  	bp := tls.Alloc(25)
 10135  	defer tls.Free(25)
 10136  
 10137  	var rc int32
 10138  	var i int32
 10139  	var iMark sqlite3_int64
 10140  	var msbs int32 = 8 * (APND_MARK_FOS_SZ - 1)
 10141  
 10142  	if int64(APND_MARK_PREFIX_SZ+APND_MARK_FOS_SZ) != sz&int64(0x1ff) {
 10143  		return int64(-1)
 10144  	}
 10145  	rc = (*struct {
 10146  		f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 10147  	})(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))
 10148  	if rc != 0 {
 10149  		return int64(-1)
 10150  	}
 10151  	if libc.Xmemcmp(tls, bp, ts+3256, uint64(APND_MARK_PREFIX_SZ)) != 0 {
 10152  		return int64(-1)
 10153  	}
 10154  	iMark = sqlite3_int64(int32(*(*uint8)(unsafe.Pointer(bp + 17)))&0x7f) << msbs
 10155  	for i = 1; i < 8; i++ {
 10156  		msbs = msbs - 8
 10157  		iMark = iMark | sqlite3_int64(*(*uint8)(unsafe.Pointer(bp + uintptr(APND_MARK_PREFIX_SZ+i))))<<msbs
 10158  	}
 10159  	if iMark > sz-int64(APND_MARK_PREFIX_SZ+APND_MARK_FOS_SZ)-int64(512) {
 10160  		return int64(-1)
 10161  	}
 10162  	if iMark&int64(0x1ff) != 0 {
 10163  		return int64(-1)
 10164  	}
 10165  	return iMark
 10166  }
 10167  
 10168  var apvfsSqliteHdr = *(*[16]int8)(unsafe.Pointer(ts + 3288))
 10169  
 10170  func apndIsAppendvfsDatabase(tls *libc.TLS, sz sqlite3_int64, pFile uintptr) int32 {
 10171  	bp := tls.Alloc(16)
 10172  	defer tls.Free(16)
 10173  
 10174  	var rc int32
 10175  
 10176  	var iMark sqlite3_int64 = apndReadMark(tls, sz, pFile)
 10177  	if iMark >= int64(0) {
 10178  		rc = (*struct {
 10179  			f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 10180  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxRead})).f(tls, pFile, bp, int32(unsafe.Sizeof([16]int8{})), iMark)
 10181  		if SQLITE_OK == rc &&
 10182  			libc.Xmemcmp(tls, bp, uintptr(unsafe.Pointer(&apvfsSqliteHdr)), uint64(unsafe.Sizeof([16]int8{}))) == 0 &&
 10183  			sz&int64(0x1ff) == int64(APND_MARK_PREFIX_SZ+APND_MARK_FOS_SZ) &&
 10184  			sz >= int64(512+(APND_MARK_PREFIX_SZ+APND_MARK_FOS_SZ)) {
 10185  			return 1
 10186  		}
 10187  	}
 10188  	return 0
 10189  }
 10190  
 10191  func apndIsOrdinaryDatabaseFile(tls *libc.TLS, sz sqlite3_int64, pFile uintptr) int32 {
 10192  	bp := tls.Alloc(16)
 10193  	defer tls.Free(16)
 10194  
 10195  	if apndIsAppendvfsDatabase(tls, sz, pFile) != 0 ||
 10196  		sz&int64(0x1ff) != int64(0) ||
 10197  		SQLITE_OK != (*struct {
 10198  			f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 10199  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxRead})).f(tls, pFile, bp, int32(unsafe.Sizeof([16]int8{})), int64(0)) ||
 10200  		libc.Xmemcmp(tls, bp, uintptr(unsafe.Pointer(&apvfsSqliteHdr)), uint64(unsafe.Sizeof([16]int8{}))) != 0 {
 10201  		return 0
 10202  	} else {
 10203  		return 1
 10204  	}
 10205  	return int32(0)
 10206  }
 10207  
 10208  func apndOpen(tls *libc.TLS, pApndVfs uintptr, zName uintptr, pFile uintptr, flags int32, pOutFlags uintptr) int32 {
 10209  	bp := tls.Alloc(8)
 10210  	defer tls.Free(8)
 10211  
 10212  	var pApndFile uintptr = pFile
 10213  	var pBaseFile uintptr = pFile + uintptr(1)*24
 10214  	var pBaseVfs uintptr = (*sqlite3_vfs)(unsafe.Pointer(pApndVfs)).FpAppData
 10215  	var rc int32
 10216  	*(*sqlite3_int64)(unsafe.Pointer(bp)) = int64(0)
 10217  	if flags&SQLITE_OPEN_MAIN_DB == 0 {
 10218  		return (*struct {
 10219  			f func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr) int32
 10220  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pBaseVfs)).FxOpen})).f(tls, pBaseVfs, zName, pFile, flags, pOutFlags)
 10221  	}
 10222  	libc.X__builtin___memset_chk(tls, pApndFile, 0, uint64(unsafe.Sizeof(ApndFile{})), libc.X__builtin_object_size(tls, pApndFile, 0))
 10223  	(*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods = uintptr(unsafe.Pointer(&apnd_io_methods))
 10224  	(*ApndFile)(unsafe.Pointer(pApndFile)).FiMark = int64(-1)
 10225  
 10226  	rc = (*struct {
 10227  		f func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr) int32
 10228  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pBaseVfs)).FxOpen})).f(tls, pBaseVfs, zName, pBaseFile, flags, pOutFlags)
 10229  	if rc == SQLITE_OK {
 10230  		rc = (*struct {
 10231  			f func(*libc.TLS, uintptr, uintptr) int32
 10232  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pBaseFile)).FpMethods)).FxFileSize})).f(tls, pBaseFile, bp)
 10233  		if rc != 0 {
 10234  			(*struct {
 10235  				f func(*libc.TLS, uintptr) int32
 10236  			})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pBaseFile)).FpMethods)).FxClose})).f(tls, pBaseFile)
 10237  		}
 10238  	}
 10239  	if rc != 0 {
 10240  		(*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods = uintptr(0)
 10241  		return rc
 10242  	}
 10243  	if apndIsOrdinaryDatabaseFile(tls, *(*sqlite3_int64)(unsafe.Pointer(bp)), pBaseFile) != 0 {
 10244  		libc.X__builtin___memmove_chk(tls, pApndFile, pBaseFile, uint64((*sqlite3_vfs)(unsafe.Pointer(pBaseVfs)).FszOsFile), libc.X__builtin_object_size(tls, pApndFile, 0))
 10245  		return SQLITE_OK
 10246  	}
 10247  	(*ApndFile)(unsafe.Pointer(pApndFile)).FiPgOne = apndReadMark(tls, *(*sqlite3_int64)(unsafe.Pointer(bp)), pFile)
 10248  	if (*ApndFile)(unsafe.Pointer(pApndFile)).FiPgOne >= int64(0) {
 10249  		(*ApndFile)(unsafe.Pointer(pApndFile)).FiMark = *(*sqlite3_int64)(unsafe.Pointer(bp)) - int64(APND_MARK_PREFIX_SZ+APND_MARK_FOS_SZ)
 10250  		return SQLITE_OK
 10251  	}
 10252  	if flags&SQLITE_OPEN_CREATE == 0 {
 10253  		(*struct {
 10254  			f func(*libc.TLS, uintptr) int32
 10255  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pBaseFile)).FpMethods)).FxClose})).f(tls, pBaseFile)
 10256  		rc = SQLITE_CANTOPEN
 10257  		(*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods = uintptr(0)
 10258  	} else {
 10259  		(*ApndFile)(unsafe.Pointer(pApndFile)).FiPgOne = (*(*sqlite3_int64)(unsafe.Pointer(bp)) + int64(APND_ROUNDUP-1)) & libc.CplInt64(int64(APND_ROUNDUP-1))
 10260  	}
 10261  	return rc
 10262  }
 10263  
 10264  func apndDelete(tls *libc.TLS, pVfs uintptr, zPath uintptr, dirSync int32) int32 {
 10265  	return (*struct {
 10266  		f func(*libc.TLS, uintptr, uintptr, int32) int32
 10267  	})(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)
 10268  }
 10269  
 10270  func apndAccess(tls *libc.TLS, pVfs uintptr, zPath uintptr, flags int32, pResOut uintptr) int32 {
 10271  	return (*struct {
 10272  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 10273  	})(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)
 10274  }
 10275  
 10276  func apndFullPathname(tls *libc.TLS, pVfs uintptr, zPath uintptr, nOut int32, zOut uintptr) int32 {
 10277  	return (*struct {
 10278  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 10279  	})(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)
 10280  }
 10281  
 10282  func apndDlOpen(tls *libc.TLS, pVfs uintptr, zPath uintptr) uintptr {
 10283  	return (*struct {
 10284  		f func(*libc.TLS, uintptr, uintptr) uintptr
 10285  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData)).FxDlOpen})).f(tls, (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData, zPath)
 10286  }
 10287  
 10288  func apndDlError(tls *libc.TLS, pVfs uintptr, nByte int32, zErrMsg uintptr) {
 10289  	(*struct {
 10290  		f func(*libc.TLS, uintptr, int32, uintptr)
 10291  	})(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)
 10292  }
 10293  
 10294  func apndDlSym(tls *libc.TLS, pVfs uintptr, p uintptr, zSym uintptr) uintptr {
 10295  	return (*struct {
 10296  		f func(*libc.TLS, uintptr, uintptr, uintptr) uintptr
 10297  	})(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)
 10298  }
 10299  
 10300  func apndDlClose(tls *libc.TLS, pVfs uintptr, pHandle uintptr) {
 10301  	(*struct {
 10302  		f func(*libc.TLS, uintptr, uintptr)
 10303  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData)).FxDlClose})).f(tls, (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData, pHandle)
 10304  }
 10305  
 10306  func apndRandomness(tls *libc.TLS, pVfs uintptr, nByte int32, zBufOut uintptr) int32 {
 10307  	return (*struct {
 10308  		f func(*libc.TLS, uintptr, int32, uintptr) int32
 10309  	})(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)
 10310  }
 10311  
 10312  func apndSleep(tls *libc.TLS, pVfs uintptr, nMicro int32) int32 {
 10313  	return (*struct {
 10314  		f func(*libc.TLS, uintptr, int32) int32
 10315  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData)).FxSleep})).f(tls, (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData, nMicro)
 10316  }
 10317  
 10318  func apndCurrentTime(tls *libc.TLS, pVfs uintptr, pTimeOut uintptr) int32 {
 10319  	return (*struct {
 10320  		f func(*libc.TLS, uintptr, uintptr) int32
 10321  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData)).FxCurrentTime})).f(tls, (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData, pTimeOut)
 10322  }
 10323  
 10324  func apndGetLastError(tls *libc.TLS, pVfs uintptr, a int32, b uintptr) int32 {
 10325  	return (*struct {
 10326  		f func(*libc.TLS, uintptr, int32, uintptr) int32
 10327  	})(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)
 10328  }
 10329  
 10330  func apndCurrentTimeInt64(tls *libc.TLS, pVfs uintptr, p uintptr) int32 {
 10331  	return (*struct {
 10332  		f func(*libc.TLS, uintptr, uintptr) int32
 10333  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData)).FxCurrentTimeInt64})).f(tls, (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData, p)
 10334  }
 10335  
 10336  func apndSetSystemCall(tls *libc.TLS, pVfs uintptr, zName uintptr, pCall sqlite3_syscall_ptr) int32 {
 10337  	return (*struct {
 10338  		f func(*libc.TLS, uintptr, uintptr, sqlite3_syscall_ptr) int32
 10339  	})(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)
 10340  }
 10341  
 10342  func apndGetSystemCall(tls *libc.TLS, pVfs uintptr, zName uintptr) sqlite3_syscall_ptr {
 10343  	return (*struct {
 10344  		f func(*libc.TLS, uintptr, uintptr) sqlite3_syscall_ptr
 10345  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData)).FxGetSystemCall})).f(tls, (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData, zName)
 10346  }
 10347  
 10348  func apndNextSystemCall(tls *libc.TLS, pVfs uintptr, zName uintptr) uintptr {
 10349  	return (*struct {
 10350  		f func(*libc.TLS, uintptr, uintptr) uintptr
 10351  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData)).FxNextSystemCall})).f(tls, (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData, zName)
 10352  }
 10353  
 10354  func sqlite3_appendvfs_init(tls *libc.TLS, db uintptr, pzErrMsg uintptr, pApi uintptr) int32 {
 10355  	var rc int32 = SQLITE_OK
 10356  	var pOrig uintptr
 10357  	_ = pApi
 10358  
 10359  	_ = pzErrMsg
 10360  	_ = db
 10361  	pOrig = sqlite3.Xsqlite3_vfs_find(tls, uintptr(0))
 10362  	if pOrig == uintptr(0) {
 10363  		return SQLITE_ERROR
 10364  	}
 10365  	apnd_vfs.FiVersion = (*sqlite3_vfs)(unsafe.Pointer(pOrig)).FiVersion
 10366  	apnd_vfs.FpAppData = pOrig
 10367  	apnd_vfs.FszOsFile = int32(uint64((*sqlite3_vfs)(unsafe.Pointer(pOrig)).FszOsFile) + uint64(unsafe.Sizeof(ApndFile{})))
 10368  	rc = sqlite3.Xsqlite3_vfs_register(tls, uintptr(unsafe.Pointer(&apnd_vfs)), 0)
 10369  	if rc == SQLITE_OK {
 10370  		rc = SQLITE_OK | int32(1)<<8
 10371  	}
 10372  	return rc
 10373  }
 10374  
 10375  type idtype_t = uint32
 10376  
 10377  type pid_t = int32
 10378  
 10379  type id_t = uint32
 10380  
 10381  type sig_atomic_t = int32
 10382  
 10383  type __darwin_i386_thread_state = struct {
 10384  	F__eax    uint32
 10385  	F__ebx    uint32
 10386  	F__ecx    uint32
 10387  	F__edx    uint32
 10388  	F__edi    uint32
 10389  	F__esi    uint32
 10390  	F__ebp    uint32
 10391  	F__esp    uint32
 10392  	F__ss     uint32
 10393  	F__eflags uint32
 10394  	F__eip    uint32
 10395  	F__cs     uint32
 10396  	F__ds     uint32
 10397  	F__es     uint32
 10398  	F__fs     uint32
 10399  	F__gs     uint32
 10400  }
 10401  
 10402  type __darwin_fp_control = struct {
 10403  	F__ccgo_pad1 [0]uint16
 10404  	F__invalid   uint16
 10405  }
 10406  
 10407  type __darwin_fp_status = struct {
 10408  	F__ccgo_pad1 [0]uint16
 10409  	F__invalid   uint16
 10410  }
 10411  
 10412  type __darwin_mmst_reg = struct {
 10413  	F__mmst_reg  [10]int8
 10414  	F__mmst_rsrv [6]int8
 10415  }
 10416  
 10417  type __darwin_xmm_reg = struct{ F__xmm_reg [16]int8 }
 10418  
 10419  type __darwin_ymm_reg = struct{ F__ymm_reg [32]int8 }
 10420  
 10421  type __darwin_zmm_reg = struct{ F__zmm_reg [64]int8 }
 10422  
 10423  type __darwin_opmask_reg = struct{ F__opmask_reg [8]int8 }
 10424  
 10425  type __darwin_i386_float_state = struct {
 10426  	F__fpu_reserved [2]int32
 10427  	F__fpu_fcw      struct {
 10428  		F__ccgo_pad1 [0]uint16
 10429  		F__invalid   uint16
 10430  	}
 10431  	F__fpu_fsw struct {
 10432  		F__ccgo_pad1 [0]uint16
 10433  		F__invalid   uint16
 10434  	}
 10435  	F__fpu_ftw       uint8
 10436  	F__fpu_rsrv1     uint8
 10437  	F__fpu_fop       uint16
 10438  	F__fpu_ip        uint32
 10439  	F__fpu_cs        uint16
 10440  	F__fpu_rsrv2     uint16
 10441  	F__fpu_dp        uint32
 10442  	F__fpu_ds        uint16
 10443  	F__fpu_rsrv3     uint16
 10444  	F__fpu_mxcsr     uint32
 10445  	F__fpu_mxcsrmask uint32
 10446  	F__fpu_stmm0     struct {
 10447  		F__mmst_reg  [10]int8
 10448  		F__mmst_rsrv [6]int8
 10449  	}
 10450  	F__fpu_stmm1 struct {
 10451  		F__mmst_reg  [10]int8
 10452  		F__mmst_rsrv [6]int8
 10453  	}
 10454  	F__fpu_stmm2 struct {
 10455  		F__mmst_reg  [10]int8
 10456  		F__mmst_rsrv [6]int8
 10457  	}
 10458  	F__fpu_stmm3 struct {
 10459  		F__mmst_reg  [10]int8
 10460  		F__mmst_rsrv [6]int8
 10461  	}
 10462  	F__fpu_stmm4 struct {
 10463  		F__mmst_reg  [10]int8
 10464  		F__mmst_rsrv [6]int8
 10465  	}
 10466  	F__fpu_stmm5 struct {
 10467  		F__mmst_reg  [10]int8
 10468  		F__mmst_rsrv [6]int8
 10469  	}
 10470  	F__fpu_stmm6 struct {
 10471  		F__mmst_reg  [10]int8
 10472  		F__mmst_rsrv [6]int8
 10473  	}
 10474  	F__fpu_stmm7 struct {
 10475  		F__mmst_reg  [10]int8
 10476  		F__mmst_rsrv [6]int8
 10477  	}
 10478  	F__fpu_xmm0      struct{ F__xmm_reg [16]int8 }
 10479  	F__fpu_xmm1      struct{ F__xmm_reg [16]int8 }
 10480  	F__fpu_xmm2      struct{ F__xmm_reg [16]int8 }
 10481  	F__fpu_xmm3      struct{ F__xmm_reg [16]int8 }
 10482  	F__fpu_xmm4      struct{ F__xmm_reg [16]int8 }
 10483  	F__fpu_xmm5      struct{ F__xmm_reg [16]int8 }
 10484  	F__fpu_xmm6      struct{ F__xmm_reg [16]int8 }
 10485  	F__fpu_xmm7      struct{ F__xmm_reg [16]int8 }
 10486  	F__fpu_rsrv4     [224]int8
 10487  	F__fpu_reserved1 int32
 10488  }
 10489  
 10490  type __darwin_i386_avx_state = struct {
 10491  	F__fpu_reserved [2]int32
 10492  	F__fpu_fcw      struct {
 10493  		F__ccgo_pad1 [0]uint16
 10494  		F__invalid   uint16
 10495  	}
 10496  	F__fpu_fsw struct {
 10497  		F__ccgo_pad1 [0]uint16
 10498  		F__invalid   uint16
 10499  	}
 10500  	F__fpu_ftw       uint8
 10501  	F__fpu_rsrv1     uint8
 10502  	F__fpu_fop       uint16
 10503  	F__fpu_ip        uint32
 10504  	F__fpu_cs        uint16
 10505  	F__fpu_rsrv2     uint16
 10506  	F__fpu_dp        uint32
 10507  	F__fpu_ds        uint16
 10508  	F__fpu_rsrv3     uint16
 10509  	F__fpu_mxcsr     uint32
 10510  	F__fpu_mxcsrmask uint32
 10511  	F__fpu_stmm0     struct {
 10512  		F__mmst_reg  [10]int8
 10513  		F__mmst_rsrv [6]int8
 10514  	}
 10515  	F__fpu_stmm1 struct {
 10516  		F__mmst_reg  [10]int8
 10517  		F__mmst_rsrv [6]int8
 10518  	}
 10519  	F__fpu_stmm2 struct {
 10520  		F__mmst_reg  [10]int8
 10521  		F__mmst_rsrv [6]int8
 10522  	}
 10523  	F__fpu_stmm3 struct {
 10524  		F__mmst_reg  [10]int8
 10525  		F__mmst_rsrv [6]int8
 10526  	}
 10527  	F__fpu_stmm4 struct {
 10528  		F__mmst_reg  [10]int8
 10529  		F__mmst_rsrv [6]int8
 10530  	}
 10531  	F__fpu_stmm5 struct {
 10532  		F__mmst_reg  [10]int8
 10533  		F__mmst_rsrv [6]int8
 10534  	}
 10535  	F__fpu_stmm6 struct {
 10536  		F__mmst_reg  [10]int8
 10537  		F__mmst_rsrv [6]int8
 10538  	}
 10539  	F__fpu_stmm7 struct {
 10540  		F__mmst_reg  [10]int8
 10541  		F__mmst_rsrv [6]int8
 10542  	}
 10543  	F__fpu_xmm0      struct{ F__xmm_reg [16]int8 }
 10544  	F__fpu_xmm1      struct{ F__xmm_reg [16]int8 }
 10545  	F__fpu_xmm2      struct{ F__xmm_reg [16]int8 }
 10546  	F__fpu_xmm3      struct{ F__xmm_reg [16]int8 }
 10547  	F__fpu_xmm4      struct{ F__xmm_reg [16]int8 }
 10548  	F__fpu_xmm5      struct{ F__xmm_reg [16]int8 }
 10549  	F__fpu_xmm6      struct{ F__xmm_reg [16]int8 }
 10550  	F__fpu_xmm7      struct{ F__xmm_reg [16]int8 }
 10551  	F__fpu_rsrv4     [224]int8
 10552  	F__fpu_reserved1 int32
 10553  	F__avx_reserved1 [64]int8
 10554  	F__fpu_ymmh0     struct{ F__xmm_reg [16]int8 }
 10555  	F__fpu_ymmh1     struct{ F__xmm_reg [16]int8 }
 10556  	F__fpu_ymmh2     struct{ F__xmm_reg [16]int8 }
 10557  	F__fpu_ymmh3     struct{ F__xmm_reg [16]int8 }
 10558  	F__fpu_ymmh4     struct{ F__xmm_reg [16]int8 }
 10559  	F__fpu_ymmh5     struct{ F__xmm_reg [16]int8 }
 10560  	F__fpu_ymmh6     struct{ F__xmm_reg [16]int8 }
 10561  	F__fpu_ymmh7     struct{ F__xmm_reg [16]int8 }
 10562  }
 10563  
 10564  type __darwin_i386_avx512_state = struct {
 10565  	F__fpu_reserved [2]int32
 10566  	F__fpu_fcw      struct {
 10567  		F__ccgo_pad1 [0]uint16
 10568  		F__invalid   uint16
 10569  	}
 10570  	F__fpu_fsw struct {
 10571  		F__ccgo_pad1 [0]uint16
 10572  		F__invalid   uint16
 10573  	}
 10574  	F__fpu_ftw       uint8
 10575  	F__fpu_rsrv1     uint8
 10576  	F__fpu_fop       uint16
 10577  	F__fpu_ip        uint32
 10578  	F__fpu_cs        uint16
 10579  	F__fpu_rsrv2     uint16
 10580  	F__fpu_dp        uint32
 10581  	F__fpu_ds        uint16
 10582  	F__fpu_rsrv3     uint16
 10583  	F__fpu_mxcsr     uint32
 10584  	F__fpu_mxcsrmask uint32
 10585  	F__fpu_stmm0     struct {
 10586  		F__mmst_reg  [10]int8
 10587  		F__mmst_rsrv [6]int8
 10588  	}
 10589  	F__fpu_stmm1 struct {
 10590  		F__mmst_reg  [10]int8
 10591  		F__mmst_rsrv [6]int8
 10592  	}
 10593  	F__fpu_stmm2 struct {
 10594  		F__mmst_reg  [10]int8
 10595  		F__mmst_rsrv [6]int8
 10596  	}
 10597  	F__fpu_stmm3 struct {
 10598  		F__mmst_reg  [10]int8
 10599  		F__mmst_rsrv [6]int8
 10600  	}
 10601  	F__fpu_stmm4 struct {
 10602  		F__mmst_reg  [10]int8
 10603  		F__mmst_rsrv [6]int8
 10604  	}
 10605  	F__fpu_stmm5 struct {
 10606  		F__mmst_reg  [10]int8
 10607  		F__mmst_rsrv [6]int8
 10608  	}
 10609  	F__fpu_stmm6 struct {
 10610  		F__mmst_reg  [10]int8
 10611  		F__mmst_rsrv [6]int8
 10612  	}
 10613  	F__fpu_stmm7 struct {
 10614  		F__mmst_reg  [10]int8
 10615  		F__mmst_rsrv [6]int8
 10616  	}
 10617  	F__fpu_xmm0      struct{ F__xmm_reg [16]int8 }
 10618  	F__fpu_xmm1      struct{ F__xmm_reg [16]int8 }
 10619  	F__fpu_xmm2      struct{ F__xmm_reg [16]int8 }
 10620  	F__fpu_xmm3      struct{ F__xmm_reg [16]int8 }
 10621  	F__fpu_xmm4      struct{ F__xmm_reg [16]int8 }
 10622  	F__fpu_xmm5      struct{ F__xmm_reg [16]int8 }
 10623  	F__fpu_xmm6      struct{ F__xmm_reg [16]int8 }
 10624  	F__fpu_xmm7      struct{ F__xmm_reg [16]int8 }
 10625  	F__fpu_rsrv4     [224]int8
 10626  	F__fpu_reserved1 int32
 10627  	F__avx_reserved1 [64]int8
 10628  	F__fpu_ymmh0     struct{ F__xmm_reg [16]int8 }
 10629  	F__fpu_ymmh1     struct{ F__xmm_reg [16]int8 }
 10630  	F__fpu_ymmh2     struct{ F__xmm_reg [16]int8 }
 10631  	F__fpu_ymmh3     struct{ F__xmm_reg [16]int8 }
 10632  	F__fpu_ymmh4     struct{ F__xmm_reg [16]int8 }
 10633  	F__fpu_ymmh5     struct{ F__xmm_reg [16]int8 }
 10634  	F__fpu_ymmh6     struct{ F__xmm_reg [16]int8 }
 10635  	F__fpu_ymmh7     struct{ F__xmm_reg [16]int8 }
 10636  	F__fpu_k0        struct{ F__opmask_reg [8]int8 }
 10637  	F__fpu_k1        struct{ F__opmask_reg [8]int8 }
 10638  	F__fpu_k2        struct{ F__opmask_reg [8]int8 }
 10639  	F__fpu_k3        struct{ F__opmask_reg [8]int8 }
 10640  	F__fpu_k4        struct{ F__opmask_reg [8]int8 }
 10641  	F__fpu_k5        struct{ F__opmask_reg [8]int8 }
 10642  	F__fpu_k6        struct{ F__opmask_reg [8]int8 }
 10643  	F__fpu_k7        struct{ F__opmask_reg [8]int8 }
 10644  	F__fpu_zmmh0     struct{ F__ymm_reg [32]int8 }
 10645  	F__fpu_zmmh1     struct{ F__ymm_reg [32]int8 }
 10646  	F__fpu_zmmh2     struct{ F__ymm_reg [32]int8 }
 10647  	F__fpu_zmmh3     struct{ F__ymm_reg [32]int8 }
 10648  	F__fpu_zmmh4     struct{ F__ymm_reg [32]int8 }
 10649  	F__fpu_zmmh5     struct{ F__ymm_reg [32]int8 }
 10650  	F__fpu_zmmh6     struct{ F__ymm_reg [32]int8 }
 10651  	F__fpu_zmmh7     struct{ F__ymm_reg [32]int8 }
 10652  }
 10653  
 10654  type __darwin_i386_exception_state = struct {
 10655  	F__trapno     uint16
 10656  	F__cpu        uint16
 10657  	F__err        uint32
 10658  	F__faultvaddr uint32
 10659  }
 10660  
 10661  type __darwin_x86_debug_state32 = struct {
 10662  	F__dr0 uint32
 10663  	F__dr1 uint32
 10664  	F__dr2 uint32
 10665  	F__dr3 uint32
 10666  	F__dr4 uint32
 10667  	F__dr5 uint32
 10668  	F__dr6 uint32
 10669  	F__dr7 uint32
 10670  }
 10671  
 10672  type __x86_pagein_state = struct{ F__pagein_error int32 }
 10673  
 10674  type __darwin_x86_thread_state64 = struct {
 10675  	F__rax    uint64
 10676  	F__rbx    uint64
 10677  	F__rcx    uint64
 10678  	F__rdx    uint64
 10679  	F__rdi    uint64
 10680  	F__rsi    uint64
 10681  	F__rbp    uint64
 10682  	F__rsp    uint64
 10683  	F__r8     uint64
 10684  	F__r9     uint64
 10685  	F__r10    uint64
 10686  	F__r11    uint64
 10687  	F__r12    uint64
 10688  	F__r13    uint64
 10689  	F__r14    uint64
 10690  	F__r15    uint64
 10691  	F__rip    uint64
 10692  	F__rflags uint64
 10693  	F__cs     uint64
 10694  	F__fs     uint64
 10695  	F__gs     uint64
 10696  }
 10697  
 10698  type __darwin_x86_thread_full_state64 = struct {
 10699  	F__ss64 struct {
 10700  		F__rax    uint64
 10701  		F__rbx    uint64
 10702  		F__rcx    uint64
 10703  		F__rdx    uint64
 10704  		F__rdi    uint64
 10705  		F__rsi    uint64
 10706  		F__rbp    uint64
 10707  		F__rsp    uint64
 10708  		F__r8     uint64
 10709  		F__r9     uint64
 10710  		F__r10    uint64
 10711  		F__r11    uint64
 10712  		F__r12    uint64
 10713  		F__r13    uint64
 10714  		F__r14    uint64
 10715  		F__r15    uint64
 10716  		F__rip    uint64
 10717  		F__rflags uint64
 10718  		F__cs     uint64
 10719  		F__fs     uint64
 10720  		F__gs     uint64
 10721  	}
 10722  	F__ds     uint64
 10723  	F__es     uint64
 10724  	F__ss     uint64
 10725  	F__gsbase uint64
 10726  }
 10727  
 10728  type __darwin_x86_float_state64 = struct {
 10729  	F__fpu_reserved [2]int32
 10730  	F__fpu_fcw      struct {
 10731  		F__ccgo_pad1 [0]uint16
 10732  		F__invalid   uint16
 10733  	}
 10734  	F__fpu_fsw struct {
 10735  		F__ccgo_pad1 [0]uint16
 10736  		F__invalid   uint16
 10737  	}
 10738  	F__fpu_ftw       uint8
 10739  	F__fpu_rsrv1     uint8
 10740  	F__fpu_fop       uint16
 10741  	F__fpu_ip        uint32
 10742  	F__fpu_cs        uint16
 10743  	F__fpu_rsrv2     uint16
 10744  	F__fpu_dp        uint32
 10745  	F__fpu_ds        uint16
 10746  	F__fpu_rsrv3     uint16
 10747  	F__fpu_mxcsr     uint32
 10748  	F__fpu_mxcsrmask uint32
 10749  	F__fpu_stmm0     struct {
 10750  		F__mmst_reg  [10]int8
 10751  		F__mmst_rsrv [6]int8
 10752  	}
 10753  	F__fpu_stmm1 struct {
 10754  		F__mmst_reg  [10]int8
 10755  		F__mmst_rsrv [6]int8
 10756  	}
 10757  	F__fpu_stmm2 struct {
 10758  		F__mmst_reg  [10]int8
 10759  		F__mmst_rsrv [6]int8
 10760  	}
 10761  	F__fpu_stmm3 struct {
 10762  		F__mmst_reg  [10]int8
 10763  		F__mmst_rsrv [6]int8
 10764  	}
 10765  	F__fpu_stmm4 struct {
 10766  		F__mmst_reg  [10]int8
 10767  		F__mmst_rsrv [6]int8
 10768  	}
 10769  	F__fpu_stmm5 struct {
 10770  		F__mmst_reg  [10]int8
 10771  		F__mmst_rsrv [6]int8
 10772  	}
 10773  	F__fpu_stmm6 struct {
 10774  		F__mmst_reg  [10]int8
 10775  		F__mmst_rsrv [6]int8
 10776  	}
 10777  	F__fpu_stmm7 struct {
 10778  		F__mmst_reg  [10]int8
 10779  		F__mmst_rsrv [6]int8
 10780  	}
 10781  	F__fpu_xmm0      struct{ F__xmm_reg [16]int8 }
 10782  	F__fpu_xmm1      struct{ F__xmm_reg [16]int8 }
 10783  	F__fpu_xmm2      struct{ F__xmm_reg [16]int8 }
 10784  	F__fpu_xmm3      struct{ F__xmm_reg [16]int8 }
 10785  	F__fpu_xmm4      struct{ F__xmm_reg [16]int8 }
 10786  	F__fpu_xmm5      struct{ F__xmm_reg [16]int8 }
 10787  	F__fpu_xmm6      struct{ F__xmm_reg [16]int8 }
 10788  	F__fpu_xmm7      struct{ F__xmm_reg [16]int8 }
 10789  	F__fpu_xmm8      struct{ F__xmm_reg [16]int8 }
 10790  	F__fpu_xmm9      struct{ F__xmm_reg [16]int8 }
 10791  	F__fpu_xmm10     struct{ F__xmm_reg [16]int8 }
 10792  	F__fpu_xmm11     struct{ F__xmm_reg [16]int8 }
 10793  	F__fpu_xmm12     struct{ F__xmm_reg [16]int8 }
 10794  	F__fpu_xmm13     struct{ F__xmm_reg [16]int8 }
 10795  	F__fpu_xmm14     struct{ F__xmm_reg [16]int8 }
 10796  	F__fpu_xmm15     struct{ F__xmm_reg [16]int8 }
 10797  	F__fpu_rsrv4     [96]int8
 10798  	F__fpu_reserved1 int32
 10799  }
 10800  
 10801  type __darwin_x86_avx_state64 = struct {
 10802  	F__fpu_reserved [2]int32
 10803  	F__fpu_fcw      struct {
 10804  		F__ccgo_pad1 [0]uint16
 10805  		F__invalid   uint16
 10806  	}
 10807  	F__fpu_fsw struct {
 10808  		F__ccgo_pad1 [0]uint16
 10809  		F__invalid   uint16
 10810  	}
 10811  	F__fpu_ftw       uint8
 10812  	F__fpu_rsrv1     uint8
 10813  	F__fpu_fop       uint16
 10814  	F__fpu_ip        uint32
 10815  	F__fpu_cs        uint16
 10816  	F__fpu_rsrv2     uint16
 10817  	F__fpu_dp        uint32
 10818  	F__fpu_ds        uint16
 10819  	F__fpu_rsrv3     uint16
 10820  	F__fpu_mxcsr     uint32
 10821  	F__fpu_mxcsrmask uint32
 10822  	F__fpu_stmm0     struct {
 10823  		F__mmst_reg  [10]int8
 10824  		F__mmst_rsrv [6]int8
 10825  	}
 10826  	F__fpu_stmm1 struct {
 10827  		F__mmst_reg  [10]int8
 10828  		F__mmst_rsrv [6]int8
 10829  	}
 10830  	F__fpu_stmm2 struct {
 10831  		F__mmst_reg  [10]int8
 10832  		F__mmst_rsrv [6]int8
 10833  	}
 10834  	F__fpu_stmm3 struct {
 10835  		F__mmst_reg  [10]int8
 10836  		F__mmst_rsrv [6]int8
 10837  	}
 10838  	F__fpu_stmm4 struct {
 10839  		F__mmst_reg  [10]int8
 10840  		F__mmst_rsrv [6]int8
 10841  	}
 10842  	F__fpu_stmm5 struct {
 10843  		F__mmst_reg  [10]int8
 10844  		F__mmst_rsrv [6]int8
 10845  	}
 10846  	F__fpu_stmm6 struct {
 10847  		F__mmst_reg  [10]int8
 10848  		F__mmst_rsrv [6]int8
 10849  	}
 10850  	F__fpu_stmm7 struct {
 10851  		F__mmst_reg  [10]int8
 10852  		F__mmst_rsrv [6]int8
 10853  	}
 10854  	F__fpu_xmm0      struct{ F__xmm_reg [16]int8 }
 10855  	F__fpu_xmm1      struct{ F__xmm_reg [16]int8 }
 10856  	F__fpu_xmm2      struct{ F__xmm_reg [16]int8 }
 10857  	F__fpu_xmm3      struct{ F__xmm_reg [16]int8 }
 10858  	F__fpu_xmm4      struct{ F__xmm_reg [16]int8 }
 10859  	F__fpu_xmm5      struct{ F__xmm_reg [16]int8 }
 10860  	F__fpu_xmm6      struct{ F__xmm_reg [16]int8 }
 10861  	F__fpu_xmm7      struct{ F__xmm_reg [16]int8 }
 10862  	F__fpu_xmm8      struct{ F__xmm_reg [16]int8 }
 10863  	F__fpu_xmm9      struct{ F__xmm_reg [16]int8 }
 10864  	F__fpu_xmm10     struct{ F__xmm_reg [16]int8 }
 10865  	F__fpu_xmm11     struct{ F__xmm_reg [16]int8 }
 10866  	F__fpu_xmm12     struct{ F__xmm_reg [16]int8 }
 10867  	F__fpu_xmm13     struct{ F__xmm_reg [16]int8 }
 10868  	F__fpu_xmm14     struct{ F__xmm_reg [16]int8 }
 10869  	F__fpu_xmm15     struct{ F__xmm_reg [16]int8 }
 10870  	F__fpu_rsrv4     [96]int8
 10871  	F__fpu_reserved1 int32
 10872  	F__avx_reserved1 [64]int8
 10873  	F__fpu_ymmh0     struct{ F__xmm_reg [16]int8 }
 10874  	F__fpu_ymmh1     struct{ F__xmm_reg [16]int8 }
 10875  	F__fpu_ymmh2     struct{ F__xmm_reg [16]int8 }
 10876  	F__fpu_ymmh3     struct{ F__xmm_reg [16]int8 }
 10877  	F__fpu_ymmh4     struct{ F__xmm_reg [16]int8 }
 10878  	F__fpu_ymmh5     struct{ F__xmm_reg [16]int8 }
 10879  	F__fpu_ymmh6     struct{ F__xmm_reg [16]int8 }
 10880  	F__fpu_ymmh7     struct{ F__xmm_reg [16]int8 }
 10881  	F__fpu_ymmh8     struct{ F__xmm_reg [16]int8 }
 10882  	F__fpu_ymmh9     struct{ F__xmm_reg [16]int8 }
 10883  	F__fpu_ymmh10    struct{ F__xmm_reg [16]int8 }
 10884  	F__fpu_ymmh11    struct{ F__xmm_reg [16]int8 }
 10885  	F__fpu_ymmh12    struct{ F__xmm_reg [16]int8 }
 10886  	F__fpu_ymmh13    struct{ F__xmm_reg [16]int8 }
 10887  	F__fpu_ymmh14    struct{ F__xmm_reg [16]int8 }
 10888  	F__fpu_ymmh15    struct{ F__xmm_reg [16]int8 }
 10889  }
 10890  
 10891  type __darwin_x86_avx512_state64 = struct {
 10892  	F__fpu_reserved [2]int32
 10893  	F__fpu_fcw      struct {
 10894  		F__ccgo_pad1 [0]uint16
 10895  		F__invalid   uint16
 10896  	}
 10897  	F__fpu_fsw struct {
 10898  		F__ccgo_pad1 [0]uint16
 10899  		F__invalid   uint16
 10900  	}
 10901  	F__fpu_ftw       uint8
 10902  	F__fpu_rsrv1     uint8
 10903  	F__fpu_fop       uint16
 10904  	F__fpu_ip        uint32
 10905  	F__fpu_cs        uint16
 10906  	F__fpu_rsrv2     uint16
 10907  	F__fpu_dp        uint32
 10908  	F__fpu_ds        uint16
 10909  	F__fpu_rsrv3     uint16
 10910  	F__fpu_mxcsr     uint32
 10911  	F__fpu_mxcsrmask uint32
 10912  	F__fpu_stmm0     struct {
 10913  		F__mmst_reg  [10]int8
 10914  		F__mmst_rsrv [6]int8
 10915  	}
 10916  	F__fpu_stmm1 struct {
 10917  		F__mmst_reg  [10]int8
 10918  		F__mmst_rsrv [6]int8
 10919  	}
 10920  	F__fpu_stmm2 struct {
 10921  		F__mmst_reg  [10]int8
 10922  		F__mmst_rsrv [6]int8
 10923  	}
 10924  	F__fpu_stmm3 struct {
 10925  		F__mmst_reg  [10]int8
 10926  		F__mmst_rsrv [6]int8
 10927  	}
 10928  	F__fpu_stmm4 struct {
 10929  		F__mmst_reg  [10]int8
 10930  		F__mmst_rsrv [6]int8
 10931  	}
 10932  	F__fpu_stmm5 struct {
 10933  		F__mmst_reg  [10]int8
 10934  		F__mmst_rsrv [6]int8
 10935  	}
 10936  	F__fpu_stmm6 struct {
 10937  		F__mmst_reg  [10]int8
 10938  		F__mmst_rsrv [6]int8
 10939  	}
 10940  	F__fpu_stmm7 struct {
 10941  		F__mmst_reg  [10]int8
 10942  		F__mmst_rsrv [6]int8
 10943  	}
 10944  	F__fpu_xmm0      struct{ F__xmm_reg [16]int8 }
 10945  	F__fpu_xmm1      struct{ F__xmm_reg [16]int8 }
 10946  	F__fpu_xmm2      struct{ F__xmm_reg [16]int8 }
 10947  	F__fpu_xmm3      struct{ F__xmm_reg [16]int8 }
 10948  	F__fpu_xmm4      struct{ F__xmm_reg [16]int8 }
 10949  	F__fpu_xmm5      struct{ F__xmm_reg [16]int8 }
 10950  	F__fpu_xmm6      struct{ F__xmm_reg [16]int8 }
 10951  	F__fpu_xmm7      struct{ F__xmm_reg [16]int8 }
 10952  	F__fpu_xmm8      struct{ F__xmm_reg [16]int8 }
 10953  	F__fpu_xmm9      struct{ F__xmm_reg [16]int8 }
 10954  	F__fpu_xmm10     struct{ F__xmm_reg [16]int8 }
 10955  	F__fpu_xmm11     struct{ F__xmm_reg [16]int8 }
 10956  	F__fpu_xmm12     struct{ F__xmm_reg [16]int8 }
 10957  	F__fpu_xmm13     struct{ F__xmm_reg [16]int8 }
 10958  	F__fpu_xmm14     struct{ F__xmm_reg [16]int8 }
 10959  	F__fpu_xmm15     struct{ F__xmm_reg [16]int8 }
 10960  	F__fpu_rsrv4     [96]int8
 10961  	F__fpu_reserved1 int32
 10962  	F__avx_reserved1 [64]int8
 10963  	F__fpu_ymmh0     struct{ F__xmm_reg [16]int8 }
 10964  	F__fpu_ymmh1     struct{ F__xmm_reg [16]int8 }
 10965  	F__fpu_ymmh2     struct{ F__xmm_reg [16]int8 }
 10966  	F__fpu_ymmh3     struct{ F__xmm_reg [16]int8 }
 10967  	F__fpu_ymmh4     struct{ F__xmm_reg [16]int8 }
 10968  	F__fpu_ymmh5     struct{ F__xmm_reg [16]int8 }
 10969  	F__fpu_ymmh6     struct{ F__xmm_reg [16]int8 }
 10970  	F__fpu_ymmh7     struct{ F__xmm_reg [16]int8 }
 10971  	F__fpu_ymmh8     struct{ F__xmm_reg [16]int8 }
 10972  	F__fpu_ymmh9     struct{ F__xmm_reg [16]int8 }
 10973  	F__fpu_ymmh10    struct{ F__xmm_reg [16]int8 }
 10974  	F__fpu_ymmh11    struct{ F__xmm_reg [16]int8 }
 10975  	F__fpu_ymmh12    struct{ F__xmm_reg [16]int8 }
 10976  	F__fpu_ymmh13    struct{ F__xmm_reg [16]int8 }
 10977  	F__fpu_ymmh14    struct{ F__xmm_reg [16]int8 }
 10978  	F__fpu_ymmh15    struct{ F__xmm_reg [16]int8 }
 10979  	F__fpu_k0        struct{ F__opmask_reg [8]int8 }
 10980  	F__fpu_k1        struct{ F__opmask_reg [8]int8 }
 10981  	F__fpu_k2        struct{ F__opmask_reg [8]int8 }
 10982  	F__fpu_k3        struct{ F__opmask_reg [8]int8 }
 10983  	F__fpu_k4        struct{ F__opmask_reg [8]int8 }
 10984  	F__fpu_k5        struct{ F__opmask_reg [8]int8 }
 10985  	F__fpu_k6        struct{ F__opmask_reg [8]int8 }
 10986  	F__fpu_k7        struct{ F__opmask_reg [8]int8 }
 10987  	F__fpu_zmmh0     struct{ F__ymm_reg [32]int8 }
 10988  	F__fpu_zmmh1     struct{ F__ymm_reg [32]int8 }
 10989  	F__fpu_zmmh2     struct{ F__ymm_reg [32]int8 }
 10990  	F__fpu_zmmh3     struct{ F__ymm_reg [32]int8 }
 10991  	F__fpu_zmmh4     struct{ F__ymm_reg [32]int8 }
 10992  	F__fpu_zmmh5     struct{ F__ymm_reg [32]int8 }
 10993  	F__fpu_zmmh6     struct{ F__ymm_reg [32]int8 }
 10994  	F__fpu_zmmh7     struct{ F__ymm_reg [32]int8 }
 10995  	F__fpu_zmmh8     struct{ F__ymm_reg [32]int8 }
 10996  	F__fpu_zmmh9     struct{ F__ymm_reg [32]int8 }
 10997  	F__fpu_zmmh10    struct{ F__ymm_reg [32]int8 }
 10998  	F__fpu_zmmh11    struct{ F__ymm_reg [32]int8 }
 10999  	F__fpu_zmmh12    struct{ F__ymm_reg [32]int8 }
 11000  	F__fpu_zmmh13    struct{ F__ymm_reg [32]int8 }
 11001  	F__fpu_zmmh14    struct{ F__ymm_reg [32]int8 }
 11002  	F__fpu_zmmh15    struct{ F__ymm_reg [32]int8 }
 11003  	F__fpu_zmm16     struct{ F__zmm_reg [64]int8 }
 11004  	F__fpu_zmm17     struct{ F__zmm_reg [64]int8 }
 11005  	F__fpu_zmm18     struct{ F__zmm_reg [64]int8 }
 11006  	F__fpu_zmm19     struct{ F__zmm_reg [64]int8 }
 11007  	F__fpu_zmm20     struct{ F__zmm_reg [64]int8 }
 11008  	F__fpu_zmm21     struct{ F__zmm_reg [64]int8 }
 11009  	F__fpu_zmm22     struct{ F__zmm_reg [64]int8 }
 11010  	F__fpu_zmm23     struct{ F__zmm_reg [64]int8 }
 11011  	F__fpu_zmm24     struct{ F__zmm_reg [64]int8 }
 11012  	F__fpu_zmm25     struct{ F__zmm_reg [64]int8 }
 11013  	F__fpu_zmm26     struct{ F__zmm_reg [64]int8 }
 11014  	F__fpu_zmm27     struct{ F__zmm_reg [64]int8 }
 11015  	F__fpu_zmm28     struct{ F__zmm_reg [64]int8 }
 11016  	F__fpu_zmm29     struct{ F__zmm_reg [64]int8 }
 11017  	F__fpu_zmm30     struct{ F__zmm_reg [64]int8 }
 11018  	F__fpu_zmm31     struct{ F__zmm_reg [64]int8 }
 11019  }
 11020  
 11021  type __darwin_x86_exception_state64 = struct {
 11022  	F__trapno     uint16
 11023  	F__cpu        uint16
 11024  	F__err        uint32
 11025  	F__faultvaddr uint64
 11026  }
 11027  
 11028  type __darwin_x86_debug_state64 = struct {
 11029  	F__dr0 uint64
 11030  	F__dr1 uint64
 11031  	F__dr2 uint64
 11032  	F__dr3 uint64
 11033  	F__dr4 uint64
 11034  	F__dr5 uint64
 11035  	F__dr6 uint64
 11036  	F__dr7 uint64
 11037  }
 11038  
 11039  type __darwin_x86_cpmu_state64 = struct{ F__ctrs [16]uint64 }
 11040  
 11041  type __darwin_mcontext32 = struct {
 11042  	F__es struct {
 11043  		F__trapno     uint16
 11044  		F__cpu        uint16
 11045  		F__err        uint32
 11046  		F__faultvaddr uint32
 11047  	}
 11048  	F__ss struct {
 11049  		F__eax    uint32
 11050  		F__ebx    uint32
 11051  		F__ecx    uint32
 11052  		F__edx    uint32
 11053  		F__edi    uint32
 11054  		F__esi    uint32
 11055  		F__ebp    uint32
 11056  		F__esp    uint32
 11057  		F__ss     uint32
 11058  		F__eflags uint32
 11059  		F__eip    uint32
 11060  		F__cs     uint32
 11061  		F__ds     uint32
 11062  		F__es     uint32
 11063  		F__fs     uint32
 11064  		F__gs     uint32
 11065  	}
 11066  	F__fs struct {
 11067  		F__fpu_reserved [2]int32
 11068  		F__fpu_fcw      struct {
 11069  			F__ccgo_pad1 [0]uint16
 11070  			F__invalid   uint16
 11071  		}
 11072  		F__fpu_fsw struct {
 11073  			F__ccgo_pad1 [0]uint16
 11074  			F__invalid   uint16
 11075  		}
 11076  		F__fpu_ftw       uint8
 11077  		F__fpu_rsrv1     uint8
 11078  		F__fpu_fop       uint16
 11079  		F__fpu_ip        uint32
 11080  		F__fpu_cs        uint16
 11081  		F__fpu_rsrv2     uint16
 11082  		F__fpu_dp        uint32
 11083  		F__fpu_ds        uint16
 11084  		F__fpu_rsrv3     uint16
 11085  		F__fpu_mxcsr     uint32
 11086  		F__fpu_mxcsrmask uint32
 11087  		F__fpu_stmm0     struct {
 11088  			F__mmst_reg  [10]int8
 11089  			F__mmst_rsrv [6]int8
 11090  		}
 11091  		F__fpu_stmm1 struct {
 11092  			F__mmst_reg  [10]int8
 11093  			F__mmst_rsrv [6]int8
 11094  		}
 11095  		F__fpu_stmm2 struct {
 11096  			F__mmst_reg  [10]int8
 11097  			F__mmst_rsrv [6]int8
 11098  		}
 11099  		F__fpu_stmm3 struct {
 11100  			F__mmst_reg  [10]int8
 11101  			F__mmst_rsrv [6]int8
 11102  		}
 11103  		F__fpu_stmm4 struct {
 11104  			F__mmst_reg  [10]int8
 11105  			F__mmst_rsrv [6]int8
 11106  		}
 11107  		F__fpu_stmm5 struct {
 11108  			F__mmst_reg  [10]int8
 11109  			F__mmst_rsrv [6]int8
 11110  		}
 11111  		F__fpu_stmm6 struct {
 11112  			F__mmst_reg  [10]int8
 11113  			F__mmst_rsrv [6]int8
 11114  		}
 11115  		F__fpu_stmm7 struct {
 11116  			F__mmst_reg  [10]int8
 11117  			F__mmst_rsrv [6]int8
 11118  		}
 11119  		F__fpu_xmm0      struct{ F__xmm_reg [16]int8 }
 11120  		F__fpu_xmm1      struct{ F__xmm_reg [16]int8 }
 11121  		F__fpu_xmm2      struct{ F__xmm_reg [16]int8 }
 11122  		F__fpu_xmm3      struct{ F__xmm_reg [16]int8 }
 11123  		F__fpu_xmm4      struct{ F__xmm_reg [16]int8 }
 11124  		F__fpu_xmm5      struct{ F__xmm_reg [16]int8 }
 11125  		F__fpu_xmm6      struct{ F__xmm_reg [16]int8 }
 11126  		F__fpu_xmm7      struct{ F__xmm_reg [16]int8 }
 11127  		F__fpu_rsrv4     [224]int8
 11128  		F__fpu_reserved1 int32
 11129  	}
 11130  }
 11131  
 11132  type __darwin_mcontext_avx32 = struct {
 11133  	F__es struct {
 11134  		F__trapno     uint16
 11135  		F__cpu        uint16
 11136  		F__err        uint32
 11137  		F__faultvaddr uint32
 11138  	}
 11139  	F__ss struct {
 11140  		F__eax    uint32
 11141  		F__ebx    uint32
 11142  		F__ecx    uint32
 11143  		F__edx    uint32
 11144  		F__edi    uint32
 11145  		F__esi    uint32
 11146  		F__ebp    uint32
 11147  		F__esp    uint32
 11148  		F__ss     uint32
 11149  		F__eflags uint32
 11150  		F__eip    uint32
 11151  		F__cs     uint32
 11152  		F__ds     uint32
 11153  		F__es     uint32
 11154  		F__fs     uint32
 11155  		F__gs     uint32
 11156  	}
 11157  	F__fs struct {
 11158  		F__fpu_reserved [2]int32
 11159  		F__fpu_fcw      struct {
 11160  			F__ccgo_pad1 [0]uint16
 11161  			F__invalid   uint16
 11162  		}
 11163  		F__fpu_fsw struct {
 11164  			F__ccgo_pad1 [0]uint16
 11165  			F__invalid   uint16
 11166  		}
 11167  		F__fpu_ftw       uint8
 11168  		F__fpu_rsrv1     uint8
 11169  		F__fpu_fop       uint16
 11170  		F__fpu_ip        uint32
 11171  		F__fpu_cs        uint16
 11172  		F__fpu_rsrv2     uint16
 11173  		F__fpu_dp        uint32
 11174  		F__fpu_ds        uint16
 11175  		F__fpu_rsrv3     uint16
 11176  		F__fpu_mxcsr     uint32
 11177  		F__fpu_mxcsrmask uint32
 11178  		F__fpu_stmm0     struct {
 11179  			F__mmst_reg  [10]int8
 11180  			F__mmst_rsrv [6]int8
 11181  		}
 11182  		F__fpu_stmm1 struct {
 11183  			F__mmst_reg  [10]int8
 11184  			F__mmst_rsrv [6]int8
 11185  		}
 11186  		F__fpu_stmm2 struct {
 11187  			F__mmst_reg  [10]int8
 11188  			F__mmst_rsrv [6]int8
 11189  		}
 11190  		F__fpu_stmm3 struct {
 11191  			F__mmst_reg  [10]int8
 11192  			F__mmst_rsrv [6]int8
 11193  		}
 11194  		F__fpu_stmm4 struct {
 11195  			F__mmst_reg  [10]int8
 11196  			F__mmst_rsrv [6]int8
 11197  		}
 11198  		F__fpu_stmm5 struct {
 11199  			F__mmst_reg  [10]int8
 11200  			F__mmst_rsrv [6]int8
 11201  		}
 11202  		F__fpu_stmm6 struct {
 11203  			F__mmst_reg  [10]int8
 11204  			F__mmst_rsrv [6]int8
 11205  		}
 11206  		F__fpu_stmm7 struct {
 11207  			F__mmst_reg  [10]int8
 11208  			F__mmst_rsrv [6]int8
 11209  		}
 11210  		F__fpu_xmm0      struct{ F__xmm_reg [16]int8 }
 11211  		F__fpu_xmm1      struct{ F__xmm_reg [16]int8 }
 11212  		F__fpu_xmm2      struct{ F__xmm_reg [16]int8 }
 11213  		F__fpu_xmm3      struct{ F__xmm_reg [16]int8 }
 11214  		F__fpu_xmm4      struct{ F__xmm_reg [16]int8 }
 11215  		F__fpu_xmm5      struct{ F__xmm_reg [16]int8 }
 11216  		F__fpu_xmm6      struct{ F__xmm_reg [16]int8 }
 11217  		F__fpu_xmm7      struct{ F__xmm_reg [16]int8 }
 11218  		F__fpu_rsrv4     [224]int8
 11219  		F__fpu_reserved1 int32
 11220  		F__avx_reserved1 [64]int8
 11221  		F__fpu_ymmh0     struct{ F__xmm_reg [16]int8 }
 11222  		F__fpu_ymmh1     struct{ F__xmm_reg [16]int8 }
 11223  		F__fpu_ymmh2     struct{ F__xmm_reg [16]int8 }
 11224  		F__fpu_ymmh3     struct{ F__xmm_reg [16]int8 }
 11225  		F__fpu_ymmh4     struct{ F__xmm_reg [16]int8 }
 11226  		F__fpu_ymmh5     struct{ F__xmm_reg [16]int8 }
 11227  		F__fpu_ymmh6     struct{ F__xmm_reg [16]int8 }
 11228  		F__fpu_ymmh7     struct{ F__xmm_reg [16]int8 }
 11229  	}
 11230  }
 11231  
 11232  type __darwin_mcontext_avx512_32 = struct {
 11233  	F__es struct {
 11234  		F__trapno     uint16
 11235  		F__cpu        uint16
 11236  		F__err        uint32
 11237  		F__faultvaddr uint32
 11238  	}
 11239  	F__ss struct {
 11240  		F__eax    uint32
 11241  		F__ebx    uint32
 11242  		F__ecx    uint32
 11243  		F__edx    uint32
 11244  		F__edi    uint32
 11245  		F__esi    uint32
 11246  		F__ebp    uint32
 11247  		F__esp    uint32
 11248  		F__ss     uint32
 11249  		F__eflags uint32
 11250  		F__eip    uint32
 11251  		F__cs     uint32
 11252  		F__ds     uint32
 11253  		F__es     uint32
 11254  		F__fs     uint32
 11255  		F__gs     uint32
 11256  	}
 11257  	F__fs struct {
 11258  		F__fpu_reserved [2]int32
 11259  		F__fpu_fcw      struct {
 11260  			F__ccgo_pad1 [0]uint16
 11261  			F__invalid   uint16
 11262  		}
 11263  		F__fpu_fsw struct {
 11264  			F__ccgo_pad1 [0]uint16
 11265  			F__invalid   uint16
 11266  		}
 11267  		F__fpu_ftw       uint8
 11268  		F__fpu_rsrv1     uint8
 11269  		F__fpu_fop       uint16
 11270  		F__fpu_ip        uint32
 11271  		F__fpu_cs        uint16
 11272  		F__fpu_rsrv2     uint16
 11273  		F__fpu_dp        uint32
 11274  		F__fpu_ds        uint16
 11275  		F__fpu_rsrv3     uint16
 11276  		F__fpu_mxcsr     uint32
 11277  		F__fpu_mxcsrmask uint32
 11278  		F__fpu_stmm0     struct {
 11279  			F__mmst_reg  [10]int8
 11280  			F__mmst_rsrv [6]int8
 11281  		}
 11282  		F__fpu_stmm1 struct {
 11283  			F__mmst_reg  [10]int8
 11284  			F__mmst_rsrv [6]int8
 11285  		}
 11286  		F__fpu_stmm2 struct {
 11287  			F__mmst_reg  [10]int8
 11288  			F__mmst_rsrv [6]int8
 11289  		}
 11290  		F__fpu_stmm3 struct {
 11291  			F__mmst_reg  [10]int8
 11292  			F__mmst_rsrv [6]int8
 11293  		}
 11294  		F__fpu_stmm4 struct {
 11295  			F__mmst_reg  [10]int8
 11296  			F__mmst_rsrv [6]int8
 11297  		}
 11298  		F__fpu_stmm5 struct {
 11299  			F__mmst_reg  [10]int8
 11300  			F__mmst_rsrv [6]int8
 11301  		}
 11302  		F__fpu_stmm6 struct {
 11303  			F__mmst_reg  [10]int8
 11304  			F__mmst_rsrv [6]int8
 11305  		}
 11306  		F__fpu_stmm7 struct {
 11307  			F__mmst_reg  [10]int8
 11308  			F__mmst_rsrv [6]int8
 11309  		}
 11310  		F__fpu_xmm0      struct{ F__xmm_reg [16]int8 }
 11311  		F__fpu_xmm1      struct{ F__xmm_reg [16]int8 }
 11312  		F__fpu_xmm2      struct{ F__xmm_reg [16]int8 }
 11313  		F__fpu_xmm3      struct{ F__xmm_reg [16]int8 }
 11314  		F__fpu_xmm4      struct{ F__xmm_reg [16]int8 }
 11315  		F__fpu_xmm5      struct{ F__xmm_reg [16]int8 }
 11316  		F__fpu_xmm6      struct{ F__xmm_reg [16]int8 }
 11317  		F__fpu_xmm7      struct{ F__xmm_reg [16]int8 }
 11318  		F__fpu_rsrv4     [224]int8
 11319  		F__fpu_reserved1 int32
 11320  		F__avx_reserved1 [64]int8
 11321  		F__fpu_ymmh0     struct{ F__xmm_reg [16]int8 }
 11322  		F__fpu_ymmh1     struct{ F__xmm_reg [16]int8 }
 11323  		F__fpu_ymmh2     struct{ F__xmm_reg [16]int8 }
 11324  		F__fpu_ymmh3     struct{ F__xmm_reg [16]int8 }
 11325  		F__fpu_ymmh4     struct{ F__xmm_reg [16]int8 }
 11326  		F__fpu_ymmh5     struct{ F__xmm_reg [16]int8 }
 11327  		F__fpu_ymmh6     struct{ F__xmm_reg [16]int8 }
 11328  		F__fpu_ymmh7     struct{ F__xmm_reg [16]int8 }
 11329  		F__fpu_k0        struct{ F__opmask_reg [8]int8 }
 11330  		F__fpu_k1        struct{ F__opmask_reg [8]int8 }
 11331  		F__fpu_k2        struct{ F__opmask_reg [8]int8 }
 11332  		F__fpu_k3        struct{ F__opmask_reg [8]int8 }
 11333  		F__fpu_k4        struct{ F__opmask_reg [8]int8 }
 11334  		F__fpu_k5        struct{ F__opmask_reg [8]int8 }
 11335  		F__fpu_k6        struct{ F__opmask_reg [8]int8 }
 11336  		F__fpu_k7        struct{ F__opmask_reg [8]int8 }
 11337  		F__fpu_zmmh0     struct{ F__ymm_reg [32]int8 }
 11338  		F__fpu_zmmh1     struct{ F__ymm_reg [32]int8 }
 11339  		F__fpu_zmmh2     struct{ F__ymm_reg [32]int8 }
 11340  		F__fpu_zmmh3     struct{ F__ymm_reg [32]int8 }
 11341  		F__fpu_zmmh4     struct{ F__ymm_reg [32]int8 }
 11342  		F__fpu_zmmh5     struct{ F__ymm_reg [32]int8 }
 11343  		F__fpu_zmmh6     struct{ F__ymm_reg [32]int8 }
 11344  		F__fpu_zmmh7     struct{ F__ymm_reg [32]int8 }
 11345  	}
 11346  }
 11347  
 11348  type __darwin_mcontext64 = struct {
 11349  	F__es struct {
 11350  		F__trapno     uint16
 11351  		F__cpu        uint16
 11352  		F__err        uint32
 11353  		F__faultvaddr uint64
 11354  	}
 11355  	F__ss struct {
 11356  		F__rax    uint64
 11357  		F__rbx    uint64
 11358  		F__rcx    uint64
 11359  		F__rdx    uint64
 11360  		F__rdi    uint64
 11361  		F__rsi    uint64
 11362  		F__rbp    uint64
 11363  		F__rsp    uint64
 11364  		F__r8     uint64
 11365  		F__r9     uint64
 11366  		F__r10    uint64
 11367  		F__r11    uint64
 11368  		F__r12    uint64
 11369  		F__r13    uint64
 11370  		F__r14    uint64
 11371  		F__r15    uint64
 11372  		F__rip    uint64
 11373  		F__rflags uint64
 11374  		F__cs     uint64
 11375  		F__fs     uint64
 11376  		F__gs     uint64
 11377  	}
 11378  	F__fs struct {
 11379  		F__fpu_reserved [2]int32
 11380  		F__fpu_fcw      struct {
 11381  			F__ccgo_pad1 [0]uint16
 11382  			F__invalid   uint16
 11383  		}
 11384  		F__fpu_fsw struct {
 11385  			F__ccgo_pad1 [0]uint16
 11386  			F__invalid   uint16
 11387  		}
 11388  		F__fpu_ftw       uint8
 11389  		F__fpu_rsrv1     uint8
 11390  		F__fpu_fop       uint16
 11391  		F__fpu_ip        uint32
 11392  		F__fpu_cs        uint16
 11393  		F__fpu_rsrv2     uint16
 11394  		F__fpu_dp        uint32
 11395  		F__fpu_ds        uint16
 11396  		F__fpu_rsrv3     uint16
 11397  		F__fpu_mxcsr     uint32
 11398  		F__fpu_mxcsrmask uint32
 11399  		F__fpu_stmm0     struct {
 11400  			F__mmst_reg  [10]int8
 11401  			F__mmst_rsrv [6]int8
 11402  		}
 11403  		F__fpu_stmm1 struct {
 11404  			F__mmst_reg  [10]int8
 11405  			F__mmst_rsrv [6]int8
 11406  		}
 11407  		F__fpu_stmm2 struct {
 11408  			F__mmst_reg  [10]int8
 11409  			F__mmst_rsrv [6]int8
 11410  		}
 11411  		F__fpu_stmm3 struct {
 11412  			F__mmst_reg  [10]int8
 11413  			F__mmst_rsrv [6]int8
 11414  		}
 11415  		F__fpu_stmm4 struct {
 11416  			F__mmst_reg  [10]int8
 11417  			F__mmst_rsrv [6]int8
 11418  		}
 11419  		F__fpu_stmm5 struct {
 11420  			F__mmst_reg  [10]int8
 11421  			F__mmst_rsrv [6]int8
 11422  		}
 11423  		F__fpu_stmm6 struct {
 11424  			F__mmst_reg  [10]int8
 11425  			F__mmst_rsrv [6]int8
 11426  		}
 11427  		F__fpu_stmm7 struct {
 11428  			F__mmst_reg  [10]int8
 11429  			F__mmst_rsrv [6]int8
 11430  		}
 11431  		F__fpu_xmm0      struct{ F__xmm_reg [16]int8 }
 11432  		F__fpu_xmm1      struct{ F__xmm_reg [16]int8 }
 11433  		F__fpu_xmm2      struct{ F__xmm_reg [16]int8 }
 11434  		F__fpu_xmm3      struct{ F__xmm_reg [16]int8 }
 11435  		F__fpu_xmm4      struct{ F__xmm_reg [16]int8 }
 11436  		F__fpu_xmm5      struct{ F__xmm_reg [16]int8 }
 11437  		F__fpu_xmm6      struct{ F__xmm_reg [16]int8 }
 11438  		F__fpu_xmm7      struct{ F__xmm_reg [16]int8 }
 11439  		F__fpu_xmm8      struct{ F__xmm_reg [16]int8 }
 11440  		F__fpu_xmm9      struct{ F__xmm_reg [16]int8 }
 11441  		F__fpu_xmm10     struct{ F__xmm_reg [16]int8 }
 11442  		F__fpu_xmm11     struct{ F__xmm_reg [16]int8 }
 11443  		F__fpu_xmm12     struct{ F__xmm_reg [16]int8 }
 11444  		F__fpu_xmm13     struct{ F__xmm_reg [16]int8 }
 11445  		F__fpu_xmm14     struct{ F__xmm_reg [16]int8 }
 11446  		F__fpu_xmm15     struct{ F__xmm_reg [16]int8 }
 11447  		F__fpu_rsrv4     [96]int8
 11448  		F__fpu_reserved1 int32
 11449  	}
 11450  	F__ccgo_pad1 [4]byte
 11451  }
 11452  
 11453  type __darwin_mcontext64_full = struct {
 11454  	F__es struct {
 11455  		F__trapno     uint16
 11456  		F__cpu        uint16
 11457  		F__err        uint32
 11458  		F__faultvaddr uint64
 11459  	}
 11460  	F__ss struct {
 11461  		F__ss64 struct {
 11462  			F__rax    uint64
 11463  			F__rbx    uint64
 11464  			F__rcx    uint64
 11465  			F__rdx    uint64
 11466  			F__rdi    uint64
 11467  			F__rsi    uint64
 11468  			F__rbp    uint64
 11469  			F__rsp    uint64
 11470  			F__r8     uint64
 11471  			F__r9     uint64
 11472  			F__r10    uint64
 11473  			F__r11    uint64
 11474  			F__r12    uint64
 11475  			F__r13    uint64
 11476  			F__r14    uint64
 11477  			F__r15    uint64
 11478  			F__rip    uint64
 11479  			F__rflags uint64
 11480  			F__cs     uint64
 11481  			F__fs     uint64
 11482  			F__gs     uint64
 11483  		}
 11484  		F__ds     uint64
 11485  		F__es     uint64
 11486  		F__ss     uint64
 11487  		F__gsbase uint64
 11488  	}
 11489  	F__fs struct {
 11490  		F__fpu_reserved [2]int32
 11491  		F__fpu_fcw      struct {
 11492  			F__ccgo_pad1 [0]uint16
 11493  			F__invalid   uint16
 11494  		}
 11495  		F__fpu_fsw struct {
 11496  			F__ccgo_pad1 [0]uint16
 11497  			F__invalid   uint16
 11498  		}
 11499  		F__fpu_ftw       uint8
 11500  		F__fpu_rsrv1     uint8
 11501  		F__fpu_fop       uint16
 11502  		F__fpu_ip        uint32
 11503  		F__fpu_cs        uint16
 11504  		F__fpu_rsrv2     uint16
 11505  		F__fpu_dp        uint32
 11506  		F__fpu_ds        uint16
 11507  		F__fpu_rsrv3     uint16
 11508  		F__fpu_mxcsr     uint32
 11509  		F__fpu_mxcsrmask uint32
 11510  		F__fpu_stmm0     struct {
 11511  			F__mmst_reg  [10]int8
 11512  			F__mmst_rsrv [6]int8
 11513  		}
 11514  		F__fpu_stmm1 struct {
 11515  			F__mmst_reg  [10]int8
 11516  			F__mmst_rsrv [6]int8
 11517  		}
 11518  		F__fpu_stmm2 struct {
 11519  			F__mmst_reg  [10]int8
 11520  			F__mmst_rsrv [6]int8
 11521  		}
 11522  		F__fpu_stmm3 struct {
 11523  			F__mmst_reg  [10]int8
 11524  			F__mmst_rsrv [6]int8
 11525  		}
 11526  		F__fpu_stmm4 struct {
 11527  			F__mmst_reg  [10]int8
 11528  			F__mmst_rsrv [6]int8
 11529  		}
 11530  		F__fpu_stmm5 struct {
 11531  			F__mmst_reg  [10]int8
 11532  			F__mmst_rsrv [6]int8
 11533  		}
 11534  		F__fpu_stmm6 struct {
 11535  			F__mmst_reg  [10]int8
 11536  			F__mmst_rsrv [6]int8
 11537  		}
 11538  		F__fpu_stmm7 struct {
 11539  			F__mmst_reg  [10]int8
 11540  			F__mmst_rsrv [6]int8
 11541  		}
 11542  		F__fpu_xmm0      struct{ F__xmm_reg [16]int8 }
 11543  		F__fpu_xmm1      struct{ F__xmm_reg [16]int8 }
 11544  		F__fpu_xmm2      struct{ F__xmm_reg [16]int8 }
 11545  		F__fpu_xmm3      struct{ F__xmm_reg [16]int8 }
 11546  		F__fpu_xmm4      struct{ F__xmm_reg [16]int8 }
 11547  		F__fpu_xmm5      struct{ F__xmm_reg [16]int8 }
 11548  		F__fpu_xmm6      struct{ F__xmm_reg [16]int8 }
 11549  		F__fpu_xmm7      struct{ F__xmm_reg [16]int8 }
 11550  		F__fpu_xmm8      struct{ F__xmm_reg [16]int8 }
 11551  		F__fpu_xmm9      struct{ F__xmm_reg [16]int8 }
 11552  		F__fpu_xmm10     struct{ F__xmm_reg [16]int8 }
 11553  		F__fpu_xmm11     struct{ F__xmm_reg [16]int8 }
 11554  		F__fpu_xmm12     struct{ F__xmm_reg [16]int8 }
 11555  		F__fpu_xmm13     struct{ F__xmm_reg [16]int8 }
 11556  		F__fpu_xmm14     struct{ F__xmm_reg [16]int8 }
 11557  		F__fpu_xmm15     struct{ F__xmm_reg [16]int8 }
 11558  		F__fpu_rsrv4     [96]int8
 11559  		F__fpu_reserved1 int32
 11560  	}
 11561  	F__ccgo_pad1 [4]byte
 11562  }
 11563  
 11564  type __darwin_mcontext_avx64 = struct {
 11565  	F__es struct {
 11566  		F__trapno     uint16
 11567  		F__cpu        uint16
 11568  		F__err        uint32
 11569  		F__faultvaddr uint64
 11570  	}
 11571  	F__ss struct {
 11572  		F__rax    uint64
 11573  		F__rbx    uint64
 11574  		F__rcx    uint64
 11575  		F__rdx    uint64
 11576  		F__rdi    uint64
 11577  		F__rsi    uint64
 11578  		F__rbp    uint64
 11579  		F__rsp    uint64
 11580  		F__r8     uint64
 11581  		F__r9     uint64
 11582  		F__r10    uint64
 11583  		F__r11    uint64
 11584  		F__r12    uint64
 11585  		F__r13    uint64
 11586  		F__r14    uint64
 11587  		F__r15    uint64
 11588  		F__rip    uint64
 11589  		F__rflags uint64
 11590  		F__cs     uint64
 11591  		F__fs     uint64
 11592  		F__gs     uint64
 11593  	}
 11594  	F__fs struct {
 11595  		F__fpu_reserved [2]int32
 11596  		F__fpu_fcw      struct {
 11597  			F__ccgo_pad1 [0]uint16
 11598  			F__invalid   uint16
 11599  		}
 11600  		F__fpu_fsw struct {
 11601  			F__ccgo_pad1 [0]uint16
 11602  			F__invalid   uint16
 11603  		}
 11604  		F__fpu_ftw       uint8
 11605  		F__fpu_rsrv1     uint8
 11606  		F__fpu_fop       uint16
 11607  		F__fpu_ip        uint32
 11608  		F__fpu_cs        uint16
 11609  		F__fpu_rsrv2     uint16
 11610  		F__fpu_dp        uint32
 11611  		F__fpu_ds        uint16
 11612  		F__fpu_rsrv3     uint16
 11613  		F__fpu_mxcsr     uint32
 11614  		F__fpu_mxcsrmask uint32
 11615  		F__fpu_stmm0     struct {
 11616  			F__mmst_reg  [10]int8
 11617  			F__mmst_rsrv [6]int8
 11618  		}
 11619  		F__fpu_stmm1 struct {
 11620  			F__mmst_reg  [10]int8
 11621  			F__mmst_rsrv [6]int8
 11622  		}
 11623  		F__fpu_stmm2 struct {
 11624  			F__mmst_reg  [10]int8
 11625  			F__mmst_rsrv [6]int8
 11626  		}
 11627  		F__fpu_stmm3 struct {
 11628  			F__mmst_reg  [10]int8
 11629  			F__mmst_rsrv [6]int8
 11630  		}
 11631  		F__fpu_stmm4 struct {
 11632  			F__mmst_reg  [10]int8
 11633  			F__mmst_rsrv [6]int8
 11634  		}
 11635  		F__fpu_stmm5 struct {
 11636  			F__mmst_reg  [10]int8
 11637  			F__mmst_rsrv [6]int8
 11638  		}
 11639  		F__fpu_stmm6 struct {
 11640  			F__mmst_reg  [10]int8
 11641  			F__mmst_rsrv [6]int8
 11642  		}
 11643  		F__fpu_stmm7 struct {
 11644  			F__mmst_reg  [10]int8
 11645  			F__mmst_rsrv [6]int8
 11646  		}
 11647  		F__fpu_xmm0      struct{ F__xmm_reg [16]int8 }
 11648  		F__fpu_xmm1      struct{ F__xmm_reg [16]int8 }
 11649  		F__fpu_xmm2      struct{ F__xmm_reg [16]int8 }
 11650  		F__fpu_xmm3      struct{ F__xmm_reg [16]int8 }
 11651  		F__fpu_xmm4      struct{ F__xmm_reg [16]int8 }
 11652  		F__fpu_xmm5      struct{ F__xmm_reg [16]int8 }
 11653  		F__fpu_xmm6      struct{ F__xmm_reg [16]int8 }
 11654  		F__fpu_xmm7      struct{ F__xmm_reg [16]int8 }
 11655  		F__fpu_xmm8      struct{ F__xmm_reg [16]int8 }
 11656  		F__fpu_xmm9      struct{ F__xmm_reg [16]int8 }
 11657  		F__fpu_xmm10     struct{ F__xmm_reg [16]int8 }
 11658  		F__fpu_xmm11     struct{ F__xmm_reg [16]int8 }
 11659  		F__fpu_xmm12     struct{ F__xmm_reg [16]int8 }
 11660  		F__fpu_xmm13     struct{ F__xmm_reg [16]int8 }
 11661  		F__fpu_xmm14     struct{ F__xmm_reg [16]int8 }
 11662  		F__fpu_xmm15     struct{ F__xmm_reg [16]int8 }
 11663  		F__fpu_rsrv4     [96]int8
 11664  		F__fpu_reserved1 int32
 11665  		F__avx_reserved1 [64]int8
 11666  		F__fpu_ymmh0     struct{ F__xmm_reg [16]int8 }
 11667  		F__fpu_ymmh1     struct{ F__xmm_reg [16]int8 }
 11668  		F__fpu_ymmh2     struct{ F__xmm_reg [16]int8 }
 11669  		F__fpu_ymmh3     struct{ F__xmm_reg [16]int8 }
 11670  		F__fpu_ymmh4     struct{ F__xmm_reg [16]int8 }
 11671  		F__fpu_ymmh5     struct{ F__xmm_reg [16]int8 }
 11672  		F__fpu_ymmh6     struct{ F__xmm_reg [16]int8 }
 11673  		F__fpu_ymmh7     struct{ F__xmm_reg [16]int8 }
 11674  		F__fpu_ymmh8     struct{ F__xmm_reg [16]int8 }
 11675  		F__fpu_ymmh9     struct{ F__xmm_reg [16]int8 }
 11676  		F__fpu_ymmh10    struct{ F__xmm_reg [16]int8 }
 11677  		F__fpu_ymmh11    struct{ F__xmm_reg [16]int8 }
 11678  		F__fpu_ymmh12    struct{ F__xmm_reg [16]int8 }
 11679  		F__fpu_ymmh13    struct{ F__xmm_reg [16]int8 }
 11680  		F__fpu_ymmh14    struct{ F__xmm_reg [16]int8 }
 11681  		F__fpu_ymmh15    struct{ F__xmm_reg [16]int8 }
 11682  	}
 11683  	F__ccgo_pad1 [4]byte
 11684  }
 11685  
 11686  type __darwin_mcontext_avx64_full = struct {
 11687  	F__es struct {
 11688  		F__trapno     uint16
 11689  		F__cpu        uint16
 11690  		F__err        uint32
 11691  		F__faultvaddr uint64
 11692  	}
 11693  	F__ss struct {
 11694  		F__ss64 struct {
 11695  			F__rax    uint64
 11696  			F__rbx    uint64
 11697  			F__rcx    uint64
 11698  			F__rdx    uint64
 11699  			F__rdi    uint64
 11700  			F__rsi    uint64
 11701  			F__rbp    uint64
 11702  			F__rsp    uint64
 11703  			F__r8     uint64
 11704  			F__r9     uint64
 11705  			F__r10    uint64
 11706  			F__r11    uint64
 11707  			F__r12    uint64
 11708  			F__r13    uint64
 11709  			F__r14    uint64
 11710  			F__r15    uint64
 11711  			F__rip    uint64
 11712  			F__rflags uint64
 11713  			F__cs     uint64
 11714  			F__fs     uint64
 11715  			F__gs     uint64
 11716  		}
 11717  		F__ds     uint64
 11718  		F__es     uint64
 11719  		F__ss     uint64
 11720  		F__gsbase uint64
 11721  	}
 11722  	F__fs struct {
 11723  		F__fpu_reserved [2]int32
 11724  		F__fpu_fcw      struct {
 11725  			F__ccgo_pad1 [0]uint16
 11726  			F__invalid   uint16
 11727  		}
 11728  		F__fpu_fsw struct {
 11729  			F__ccgo_pad1 [0]uint16
 11730  			F__invalid   uint16
 11731  		}
 11732  		F__fpu_ftw       uint8
 11733  		F__fpu_rsrv1     uint8
 11734  		F__fpu_fop       uint16
 11735  		F__fpu_ip        uint32
 11736  		F__fpu_cs        uint16
 11737  		F__fpu_rsrv2     uint16
 11738  		F__fpu_dp        uint32
 11739  		F__fpu_ds        uint16
 11740  		F__fpu_rsrv3     uint16
 11741  		F__fpu_mxcsr     uint32
 11742  		F__fpu_mxcsrmask uint32
 11743  		F__fpu_stmm0     struct {
 11744  			F__mmst_reg  [10]int8
 11745  			F__mmst_rsrv [6]int8
 11746  		}
 11747  		F__fpu_stmm1 struct {
 11748  			F__mmst_reg  [10]int8
 11749  			F__mmst_rsrv [6]int8
 11750  		}
 11751  		F__fpu_stmm2 struct {
 11752  			F__mmst_reg  [10]int8
 11753  			F__mmst_rsrv [6]int8
 11754  		}
 11755  		F__fpu_stmm3 struct {
 11756  			F__mmst_reg  [10]int8
 11757  			F__mmst_rsrv [6]int8
 11758  		}
 11759  		F__fpu_stmm4 struct {
 11760  			F__mmst_reg  [10]int8
 11761  			F__mmst_rsrv [6]int8
 11762  		}
 11763  		F__fpu_stmm5 struct {
 11764  			F__mmst_reg  [10]int8
 11765  			F__mmst_rsrv [6]int8
 11766  		}
 11767  		F__fpu_stmm6 struct {
 11768  			F__mmst_reg  [10]int8
 11769  			F__mmst_rsrv [6]int8
 11770  		}
 11771  		F__fpu_stmm7 struct {
 11772  			F__mmst_reg  [10]int8
 11773  			F__mmst_rsrv [6]int8
 11774  		}
 11775  		F__fpu_xmm0      struct{ F__xmm_reg [16]int8 }
 11776  		F__fpu_xmm1      struct{ F__xmm_reg [16]int8 }
 11777  		F__fpu_xmm2      struct{ F__xmm_reg [16]int8 }
 11778  		F__fpu_xmm3      struct{ F__xmm_reg [16]int8 }
 11779  		F__fpu_xmm4      struct{ F__xmm_reg [16]int8 }
 11780  		F__fpu_xmm5      struct{ F__xmm_reg [16]int8 }
 11781  		F__fpu_xmm6      struct{ F__xmm_reg [16]int8 }
 11782  		F__fpu_xmm7      struct{ F__xmm_reg [16]int8 }
 11783  		F__fpu_xmm8      struct{ F__xmm_reg [16]int8 }
 11784  		F__fpu_xmm9      struct{ F__xmm_reg [16]int8 }
 11785  		F__fpu_xmm10     struct{ F__xmm_reg [16]int8 }
 11786  		F__fpu_xmm11     struct{ F__xmm_reg [16]int8 }
 11787  		F__fpu_xmm12     struct{ F__xmm_reg [16]int8 }
 11788  		F__fpu_xmm13     struct{ F__xmm_reg [16]int8 }
 11789  		F__fpu_xmm14     struct{ F__xmm_reg [16]int8 }
 11790  		F__fpu_xmm15     struct{ F__xmm_reg [16]int8 }
 11791  		F__fpu_rsrv4     [96]int8
 11792  		F__fpu_reserved1 int32
 11793  		F__avx_reserved1 [64]int8
 11794  		F__fpu_ymmh0     struct{ F__xmm_reg [16]int8 }
 11795  		F__fpu_ymmh1     struct{ F__xmm_reg [16]int8 }
 11796  		F__fpu_ymmh2     struct{ F__xmm_reg [16]int8 }
 11797  		F__fpu_ymmh3     struct{ F__xmm_reg [16]int8 }
 11798  		F__fpu_ymmh4     struct{ F__xmm_reg [16]int8 }
 11799  		F__fpu_ymmh5     struct{ F__xmm_reg [16]int8 }
 11800  		F__fpu_ymmh6     struct{ F__xmm_reg [16]int8 }
 11801  		F__fpu_ymmh7     struct{ F__xmm_reg [16]int8 }
 11802  		F__fpu_ymmh8     struct{ F__xmm_reg [16]int8 }
 11803  		F__fpu_ymmh9     struct{ F__xmm_reg [16]int8 }
 11804  		F__fpu_ymmh10    struct{ F__xmm_reg [16]int8 }
 11805  		F__fpu_ymmh11    struct{ F__xmm_reg [16]int8 }
 11806  		F__fpu_ymmh12    struct{ F__xmm_reg [16]int8 }
 11807  		F__fpu_ymmh13    struct{ F__xmm_reg [16]int8 }
 11808  		F__fpu_ymmh14    struct{ F__xmm_reg [16]int8 }
 11809  		F__fpu_ymmh15    struct{ F__xmm_reg [16]int8 }
 11810  	}
 11811  	F__ccgo_pad1 [4]byte
 11812  }
 11813  
 11814  type __darwin_mcontext_avx512_64 = struct {
 11815  	F__es struct {
 11816  		F__trapno     uint16
 11817  		F__cpu        uint16
 11818  		F__err        uint32
 11819  		F__faultvaddr uint64
 11820  	}
 11821  	F__ss struct {
 11822  		F__rax    uint64
 11823  		F__rbx    uint64
 11824  		F__rcx    uint64
 11825  		F__rdx    uint64
 11826  		F__rdi    uint64
 11827  		F__rsi    uint64
 11828  		F__rbp    uint64
 11829  		F__rsp    uint64
 11830  		F__r8     uint64
 11831  		F__r9     uint64
 11832  		F__r10    uint64
 11833  		F__r11    uint64
 11834  		F__r12    uint64
 11835  		F__r13    uint64
 11836  		F__r14    uint64
 11837  		F__r15    uint64
 11838  		F__rip    uint64
 11839  		F__rflags uint64
 11840  		F__cs     uint64
 11841  		F__fs     uint64
 11842  		F__gs     uint64
 11843  	}
 11844  	F__fs struct {
 11845  		F__fpu_reserved [2]int32
 11846  		F__fpu_fcw      struct {
 11847  			F__ccgo_pad1 [0]uint16
 11848  			F__invalid   uint16
 11849  		}
 11850  		F__fpu_fsw struct {
 11851  			F__ccgo_pad1 [0]uint16
 11852  			F__invalid   uint16
 11853  		}
 11854  		F__fpu_ftw       uint8
 11855  		F__fpu_rsrv1     uint8
 11856  		F__fpu_fop       uint16
 11857  		F__fpu_ip        uint32
 11858  		F__fpu_cs        uint16
 11859  		F__fpu_rsrv2     uint16
 11860  		F__fpu_dp        uint32
 11861  		F__fpu_ds        uint16
 11862  		F__fpu_rsrv3     uint16
 11863  		F__fpu_mxcsr     uint32
 11864  		F__fpu_mxcsrmask uint32
 11865  		F__fpu_stmm0     struct {
 11866  			F__mmst_reg  [10]int8
 11867  			F__mmst_rsrv [6]int8
 11868  		}
 11869  		F__fpu_stmm1 struct {
 11870  			F__mmst_reg  [10]int8
 11871  			F__mmst_rsrv [6]int8
 11872  		}
 11873  		F__fpu_stmm2 struct {
 11874  			F__mmst_reg  [10]int8
 11875  			F__mmst_rsrv [6]int8
 11876  		}
 11877  		F__fpu_stmm3 struct {
 11878  			F__mmst_reg  [10]int8
 11879  			F__mmst_rsrv [6]int8
 11880  		}
 11881  		F__fpu_stmm4 struct {
 11882  			F__mmst_reg  [10]int8
 11883  			F__mmst_rsrv [6]int8
 11884  		}
 11885  		F__fpu_stmm5 struct {
 11886  			F__mmst_reg  [10]int8
 11887  			F__mmst_rsrv [6]int8
 11888  		}
 11889  		F__fpu_stmm6 struct {
 11890  			F__mmst_reg  [10]int8
 11891  			F__mmst_rsrv [6]int8
 11892  		}
 11893  		F__fpu_stmm7 struct {
 11894  			F__mmst_reg  [10]int8
 11895  			F__mmst_rsrv [6]int8
 11896  		}
 11897  		F__fpu_xmm0      struct{ F__xmm_reg [16]int8 }
 11898  		F__fpu_xmm1      struct{ F__xmm_reg [16]int8 }
 11899  		F__fpu_xmm2      struct{ F__xmm_reg [16]int8 }
 11900  		F__fpu_xmm3      struct{ F__xmm_reg [16]int8 }
 11901  		F__fpu_xmm4      struct{ F__xmm_reg [16]int8 }
 11902  		F__fpu_xmm5      struct{ F__xmm_reg [16]int8 }
 11903  		F__fpu_xmm6      struct{ F__xmm_reg [16]int8 }
 11904  		F__fpu_xmm7      struct{ F__xmm_reg [16]int8 }
 11905  		F__fpu_xmm8      struct{ F__xmm_reg [16]int8 }
 11906  		F__fpu_xmm9      struct{ F__xmm_reg [16]int8 }
 11907  		F__fpu_xmm10     struct{ F__xmm_reg [16]int8 }
 11908  		F__fpu_xmm11     struct{ F__xmm_reg [16]int8 }
 11909  		F__fpu_xmm12     struct{ F__xmm_reg [16]int8 }
 11910  		F__fpu_xmm13     struct{ F__xmm_reg [16]int8 }
 11911  		F__fpu_xmm14     struct{ F__xmm_reg [16]int8 }
 11912  		F__fpu_xmm15     struct{ F__xmm_reg [16]int8 }
 11913  		F__fpu_rsrv4     [96]int8
 11914  		F__fpu_reserved1 int32
 11915  		F__avx_reserved1 [64]int8
 11916  		F__fpu_ymmh0     struct{ F__xmm_reg [16]int8 }
 11917  		F__fpu_ymmh1     struct{ F__xmm_reg [16]int8 }
 11918  		F__fpu_ymmh2     struct{ F__xmm_reg [16]int8 }
 11919  		F__fpu_ymmh3     struct{ F__xmm_reg [16]int8 }
 11920  		F__fpu_ymmh4     struct{ F__xmm_reg [16]int8 }
 11921  		F__fpu_ymmh5     struct{ F__xmm_reg [16]int8 }
 11922  		F__fpu_ymmh6     struct{ F__xmm_reg [16]int8 }
 11923  		F__fpu_ymmh7     struct{ F__xmm_reg [16]int8 }
 11924  		F__fpu_ymmh8     struct{ F__xmm_reg [16]int8 }
 11925  		F__fpu_ymmh9     struct{ F__xmm_reg [16]int8 }
 11926  		F__fpu_ymmh10    struct{ F__xmm_reg [16]int8 }
 11927  		F__fpu_ymmh11    struct{ F__xmm_reg [16]int8 }
 11928  		F__fpu_ymmh12    struct{ F__xmm_reg [16]int8 }
 11929  		F__fpu_ymmh13    struct{ F__xmm_reg [16]int8 }
 11930  		F__fpu_ymmh14    struct{ F__xmm_reg [16]int8 }
 11931  		F__fpu_ymmh15    struct{ F__xmm_reg [16]int8 }
 11932  		F__fpu_k0        struct{ F__opmask_reg [8]int8 }
 11933  		F__fpu_k1        struct{ F__opmask_reg [8]int8 }
 11934  		F__fpu_k2        struct{ F__opmask_reg [8]int8 }
 11935  		F__fpu_k3        struct{ F__opmask_reg [8]int8 }
 11936  		F__fpu_k4        struct{ F__opmask_reg [8]int8 }
 11937  		F__fpu_k5        struct{ F__opmask_reg [8]int8 }
 11938  		F__fpu_k6        struct{ F__opmask_reg [8]int8 }
 11939  		F__fpu_k7        struct{ F__opmask_reg [8]int8 }
 11940  		F__fpu_zmmh0     struct{ F__ymm_reg [32]int8 }
 11941  		F__fpu_zmmh1     struct{ F__ymm_reg [32]int8 }
 11942  		F__fpu_zmmh2     struct{ F__ymm_reg [32]int8 }
 11943  		F__fpu_zmmh3     struct{ F__ymm_reg [32]int8 }
 11944  		F__fpu_zmmh4     struct{ F__ymm_reg [32]int8 }
 11945  		F__fpu_zmmh5     struct{ F__ymm_reg [32]int8 }
 11946  		F__fpu_zmmh6     struct{ F__ymm_reg [32]int8 }
 11947  		F__fpu_zmmh7     struct{ F__ymm_reg [32]int8 }
 11948  		F__fpu_zmmh8     struct{ F__ymm_reg [32]int8 }
 11949  		F__fpu_zmmh9     struct{ F__ymm_reg [32]int8 }
 11950  		F__fpu_zmmh10    struct{ F__ymm_reg [32]int8 }
 11951  		F__fpu_zmmh11    struct{ F__ymm_reg [32]int8 }
 11952  		F__fpu_zmmh12    struct{ F__ymm_reg [32]int8 }
 11953  		F__fpu_zmmh13    struct{ F__ymm_reg [32]int8 }
 11954  		F__fpu_zmmh14    struct{ F__ymm_reg [32]int8 }
 11955  		F__fpu_zmmh15    struct{ F__ymm_reg [32]int8 }
 11956  		F__fpu_zmm16     struct{ F__zmm_reg [64]int8 }
 11957  		F__fpu_zmm17     struct{ F__zmm_reg [64]int8 }
 11958  		F__fpu_zmm18     struct{ F__zmm_reg [64]int8 }
 11959  		F__fpu_zmm19     struct{ F__zmm_reg [64]int8 }
 11960  		F__fpu_zmm20     struct{ F__zmm_reg [64]int8 }
 11961  		F__fpu_zmm21     struct{ F__zmm_reg [64]int8 }
 11962  		F__fpu_zmm22     struct{ F__zmm_reg [64]int8 }
 11963  		F__fpu_zmm23     struct{ F__zmm_reg [64]int8 }
 11964  		F__fpu_zmm24     struct{ F__zmm_reg [64]int8 }
 11965  		F__fpu_zmm25     struct{ F__zmm_reg [64]int8 }
 11966  		F__fpu_zmm26     struct{ F__zmm_reg [64]int8 }
 11967  		F__fpu_zmm27     struct{ F__zmm_reg [64]int8 }
 11968  		F__fpu_zmm28     struct{ F__zmm_reg [64]int8 }
 11969  		F__fpu_zmm29     struct{ F__zmm_reg [64]int8 }
 11970  		F__fpu_zmm30     struct{ F__zmm_reg [64]int8 }
 11971  		F__fpu_zmm31     struct{ F__zmm_reg [64]int8 }
 11972  	}
 11973  	F__ccgo_pad1 [4]byte
 11974  }
 11975  
 11976  type __darwin_mcontext_avx512_64_full = struct {
 11977  	F__es struct {
 11978  		F__trapno     uint16
 11979  		F__cpu        uint16
 11980  		F__err        uint32
 11981  		F__faultvaddr uint64
 11982  	}
 11983  	F__ss struct {
 11984  		F__ss64 struct {
 11985  			F__rax    uint64
 11986  			F__rbx    uint64
 11987  			F__rcx    uint64
 11988  			F__rdx    uint64
 11989  			F__rdi    uint64
 11990  			F__rsi    uint64
 11991  			F__rbp    uint64
 11992  			F__rsp    uint64
 11993  			F__r8     uint64
 11994  			F__r9     uint64
 11995  			F__r10    uint64
 11996  			F__r11    uint64
 11997  			F__r12    uint64
 11998  			F__r13    uint64
 11999  			F__r14    uint64
 12000  			F__r15    uint64
 12001  			F__rip    uint64
 12002  			F__rflags uint64
 12003  			F__cs     uint64
 12004  			F__fs     uint64
 12005  			F__gs     uint64
 12006  		}
 12007  		F__ds     uint64
 12008  		F__es     uint64
 12009  		F__ss     uint64
 12010  		F__gsbase uint64
 12011  	}
 12012  	F__fs struct {
 12013  		F__fpu_reserved [2]int32
 12014  		F__fpu_fcw      struct {
 12015  			F__ccgo_pad1 [0]uint16
 12016  			F__invalid   uint16
 12017  		}
 12018  		F__fpu_fsw struct {
 12019  			F__ccgo_pad1 [0]uint16
 12020  			F__invalid   uint16
 12021  		}
 12022  		F__fpu_ftw       uint8
 12023  		F__fpu_rsrv1     uint8
 12024  		F__fpu_fop       uint16
 12025  		F__fpu_ip        uint32
 12026  		F__fpu_cs        uint16
 12027  		F__fpu_rsrv2     uint16
 12028  		F__fpu_dp        uint32
 12029  		F__fpu_ds        uint16
 12030  		F__fpu_rsrv3     uint16
 12031  		F__fpu_mxcsr     uint32
 12032  		F__fpu_mxcsrmask uint32
 12033  		F__fpu_stmm0     struct {
 12034  			F__mmst_reg  [10]int8
 12035  			F__mmst_rsrv [6]int8
 12036  		}
 12037  		F__fpu_stmm1 struct {
 12038  			F__mmst_reg  [10]int8
 12039  			F__mmst_rsrv [6]int8
 12040  		}
 12041  		F__fpu_stmm2 struct {
 12042  			F__mmst_reg  [10]int8
 12043  			F__mmst_rsrv [6]int8
 12044  		}
 12045  		F__fpu_stmm3 struct {
 12046  			F__mmst_reg  [10]int8
 12047  			F__mmst_rsrv [6]int8
 12048  		}
 12049  		F__fpu_stmm4 struct {
 12050  			F__mmst_reg  [10]int8
 12051  			F__mmst_rsrv [6]int8
 12052  		}
 12053  		F__fpu_stmm5 struct {
 12054  			F__mmst_reg  [10]int8
 12055  			F__mmst_rsrv [6]int8
 12056  		}
 12057  		F__fpu_stmm6 struct {
 12058  			F__mmst_reg  [10]int8
 12059  			F__mmst_rsrv [6]int8
 12060  		}
 12061  		F__fpu_stmm7 struct {
 12062  			F__mmst_reg  [10]int8
 12063  			F__mmst_rsrv [6]int8
 12064  		}
 12065  		F__fpu_xmm0      struct{ F__xmm_reg [16]int8 }
 12066  		F__fpu_xmm1      struct{ F__xmm_reg [16]int8 }
 12067  		F__fpu_xmm2      struct{ F__xmm_reg [16]int8 }
 12068  		F__fpu_xmm3      struct{ F__xmm_reg [16]int8 }
 12069  		F__fpu_xmm4      struct{ F__xmm_reg [16]int8 }
 12070  		F__fpu_xmm5      struct{ F__xmm_reg [16]int8 }
 12071  		F__fpu_xmm6      struct{ F__xmm_reg [16]int8 }
 12072  		F__fpu_xmm7      struct{ F__xmm_reg [16]int8 }
 12073  		F__fpu_xmm8      struct{ F__xmm_reg [16]int8 }
 12074  		F__fpu_xmm9      struct{ F__xmm_reg [16]int8 }
 12075  		F__fpu_xmm10     struct{ F__xmm_reg [16]int8 }
 12076  		F__fpu_xmm11     struct{ F__xmm_reg [16]int8 }
 12077  		F__fpu_xmm12     struct{ F__xmm_reg [16]int8 }
 12078  		F__fpu_xmm13     struct{ F__xmm_reg [16]int8 }
 12079  		F__fpu_xmm14     struct{ F__xmm_reg [16]int8 }
 12080  		F__fpu_xmm15     struct{ F__xmm_reg [16]int8 }
 12081  		F__fpu_rsrv4     [96]int8
 12082  		F__fpu_reserved1 int32
 12083  		F__avx_reserved1 [64]int8
 12084  		F__fpu_ymmh0     struct{ F__xmm_reg [16]int8 }
 12085  		F__fpu_ymmh1     struct{ F__xmm_reg [16]int8 }
 12086  		F__fpu_ymmh2     struct{ F__xmm_reg [16]int8 }
 12087  		F__fpu_ymmh3     struct{ F__xmm_reg [16]int8 }
 12088  		F__fpu_ymmh4     struct{ F__xmm_reg [16]int8 }
 12089  		F__fpu_ymmh5     struct{ F__xmm_reg [16]int8 }
 12090  		F__fpu_ymmh6     struct{ F__xmm_reg [16]int8 }
 12091  		F__fpu_ymmh7     struct{ F__xmm_reg [16]int8 }
 12092  		F__fpu_ymmh8     struct{ F__xmm_reg [16]int8 }
 12093  		F__fpu_ymmh9     struct{ F__xmm_reg [16]int8 }
 12094  		F__fpu_ymmh10    struct{ F__xmm_reg [16]int8 }
 12095  		F__fpu_ymmh11    struct{ F__xmm_reg [16]int8 }
 12096  		F__fpu_ymmh12    struct{ F__xmm_reg [16]int8 }
 12097  		F__fpu_ymmh13    struct{ F__xmm_reg [16]int8 }
 12098  		F__fpu_ymmh14    struct{ F__xmm_reg [16]int8 }
 12099  		F__fpu_ymmh15    struct{ F__xmm_reg [16]int8 }
 12100  		F__fpu_k0        struct{ F__opmask_reg [8]int8 }
 12101  		F__fpu_k1        struct{ F__opmask_reg [8]int8 }
 12102  		F__fpu_k2        struct{ F__opmask_reg [8]int8 }
 12103  		F__fpu_k3        struct{ F__opmask_reg [8]int8 }
 12104  		F__fpu_k4        struct{ F__opmask_reg [8]int8 }
 12105  		F__fpu_k5        struct{ F__opmask_reg [8]int8 }
 12106  		F__fpu_k6        struct{ F__opmask_reg [8]int8 }
 12107  		F__fpu_k7        struct{ F__opmask_reg [8]int8 }
 12108  		F__fpu_zmmh0     struct{ F__ymm_reg [32]int8 }
 12109  		F__fpu_zmmh1     struct{ F__ymm_reg [32]int8 }
 12110  		F__fpu_zmmh2     struct{ F__ymm_reg [32]int8 }
 12111  		F__fpu_zmmh3     struct{ F__ymm_reg [32]int8 }
 12112  		F__fpu_zmmh4     struct{ F__ymm_reg [32]int8 }
 12113  		F__fpu_zmmh5     struct{ F__ymm_reg [32]int8 }
 12114  		F__fpu_zmmh6     struct{ F__ymm_reg [32]int8 }
 12115  		F__fpu_zmmh7     struct{ F__ymm_reg [32]int8 }
 12116  		F__fpu_zmmh8     struct{ F__ymm_reg [32]int8 }
 12117  		F__fpu_zmmh9     struct{ F__ymm_reg [32]int8 }
 12118  		F__fpu_zmmh10    struct{ F__ymm_reg [32]int8 }
 12119  		F__fpu_zmmh11    struct{ F__ymm_reg [32]int8 }
 12120  		F__fpu_zmmh12    struct{ F__ymm_reg [32]int8 }
 12121  		F__fpu_zmmh13    struct{ F__ymm_reg [32]int8 }
 12122  		F__fpu_zmmh14    struct{ F__ymm_reg [32]int8 }
 12123  		F__fpu_zmmh15    struct{ F__ymm_reg [32]int8 }
 12124  		F__fpu_zmm16     struct{ F__zmm_reg [64]int8 }
 12125  		F__fpu_zmm17     struct{ F__zmm_reg [64]int8 }
 12126  		F__fpu_zmm18     struct{ F__zmm_reg [64]int8 }
 12127  		F__fpu_zmm19     struct{ F__zmm_reg [64]int8 }
 12128  		F__fpu_zmm20     struct{ F__zmm_reg [64]int8 }
 12129  		F__fpu_zmm21     struct{ F__zmm_reg [64]int8 }
 12130  		F__fpu_zmm22     struct{ F__zmm_reg [64]int8 }
 12131  		F__fpu_zmm23     struct{ F__zmm_reg [64]int8 }
 12132  		F__fpu_zmm24     struct{ F__zmm_reg [64]int8 }
 12133  		F__fpu_zmm25     struct{ F__zmm_reg [64]int8 }
 12134  		F__fpu_zmm26     struct{ F__zmm_reg [64]int8 }
 12135  		F__fpu_zmm27     struct{ F__zmm_reg [64]int8 }
 12136  		F__fpu_zmm28     struct{ F__zmm_reg [64]int8 }
 12137  		F__fpu_zmm29     struct{ F__zmm_reg [64]int8 }
 12138  		F__fpu_zmm30     struct{ F__zmm_reg [64]int8 }
 12139  		F__fpu_zmm31     struct{ F__zmm_reg [64]int8 }
 12140  	}
 12141  	F__ccgo_pad1 [4]byte
 12142  }
 12143  
 12144  type mcontext_t = uintptr
 12145  
 12146  type pthread_attr_t = _opaque_pthread_attr_t
 12147  
 12148  type __darwin_sigaltstack = struct {
 12149  	Fss_sp       uintptr
 12150  	Fss_size     uint64
 12151  	Fss_flags    int32
 12152  	F__ccgo_pad1 [4]byte
 12153  }
 12154  
 12155  type stack_t = __darwin_sigaltstack
 12156  
 12157  type __darwin_ucontext = struct {
 12158  	Fuc_onstack int32
 12159  	Fuc_sigmask uint32
 12160  	Fuc_stack   struct {
 12161  		Fss_sp       uintptr
 12162  		Fss_size     uint64
 12163  		Fss_flags    int32
 12164  		F__ccgo_pad1 [4]byte
 12165  	}
 12166  	Fuc_link     uintptr
 12167  	Fuc_mcsize   uint64
 12168  	Fuc_mcontext uintptr
 12169  }
 12170  
 12171  type ucontext_t = __darwin_ucontext
 12172  
 12173  type sigset_t = uint32
 12174  
 12175  type uid_t = uint32
 12176  
 12177  type sigval = struct {
 12178  	F__ccgo_pad1 [0]uint64
 12179  	Fsival_int   int32
 12180  	F__ccgo_pad2 [4]byte
 12181  }
 12182  
 12183  type sigevent = struct {
 12184  	Fsigev_notify int32
 12185  	Fsigev_signo  int32
 12186  	Fsigev_value  struct {
 12187  		F__ccgo_pad1 [0]uint64
 12188  		Fsival_int   int32
 12189  		F__ccgo_pad2 [4]byte
 12190  	}
 12191  	Fsigev_notify_function   uintptr
 12192  	Fsigev_notify_attributes uintptr
 12193  }
 12194  
 12195  type __siginfo = struct {
 12196  	Fsi_signo  int32
 12197  	Fsi_errno  int32
 12198  	Fsi_code   int32
 12199  	Fsi_pid    pid_t
 12200  	Fsi_uid    uid_t
 12201  	Fsi_status int32
 12202  	Fsi_addr   uintptr
 12203  	Fsi_value  struct {
 12204  		F__ccgo_pad1 [0]uint64
 12205  		Fsival_int   int32
 12206  		F__ccgo_pad2 [4]byte
 12207  	}
 12208  	Fsi_band int64
 12209  	F__pad   [7]uint64
 12210  }
 12211  
 12212  type siginfo_t = __siginfo
 12213  
 12214  type __sigaction_u = struct{ F__sa_handler uintptr }
 12215  
 12216  type __sigaction = struct {
 12217  	F__sigaction_u struct{ F__sa_handler uintptr }
 12218  	Fsa_tramp      uintptr
 12219  	Fsa_mask       sigset_t
 12220  	Fsa_flags      int32
 12221  }
 12222  
 12223  type sigaction = struct {
 12224  	F__sigaction_u struct{ F__sa_handler uintptr }
 12225  	Fsa_mask       sigset_t
 12226  	Fsa_flags      int32
 12227  }
 12228  
 12229  type sig_t = uintptr
 12230  
 12231  type sigvec = struct {
 12232  	Fsv_handler uintptr
 12233  	Fsv_mask    int32
 12234  	Fsv_flags   int32
 12235  }
 12236  
 12237  type sigstack = struct {
 12238  	Fss_sp       uintptr
 12239  	Fss_onstack  int32
 12240  	F__ccgo_pad1 [4]byte
 12241  }
 12242  
 12243  type uint64_t = uint64
 12244  
 12245  type int_least64_t = int64_t
 12246  type uint_least64_t = uint64_t
 12247  type int_fast64_t = int64_t
 12248  type uint_fast64_t = uint64_t
 12249  
 12250  type uint32_t = uint32
 12251  
 12252  type int_least32_t = int32_t
 12253  type uint_least32_t = uint32_t
 12254  type int_fast32_t = int32_t
 12255  type uint_fast32_t = uint32_t
 12256  type uint16_t = uint16
 12257  
 12258  type int_least16_t = int16_t
 12259  type uint_least16_t = uint16_t
 12260  type int_fast16_t = int16_t
 12261  type uint_fast16_t = uint16_t
 12262  type uint8_t = uint8
 12263  
 12264  type int_least8_t = int8_t
 12265  type uint_least8_t = uint8_t
 12266  type int_fast8_t = int8_t
 12267  type uint_fast8_t = uint8_t
 12268  
 12269  type intmax_t = int64
 12270  type uintmax_t = uint64
 12271  
 12272  type timeval = struct {
 12273  	Ftv_sec      int64
 12274  	Ftv_usec     int32
 12275  	F__ccgo_pad1 [4]byte
 12276  }
 12277  
 12278  type rlim_t = uint64
 12279  
 12280  type rusage = struct {
 12281  	Fru_utime struct {
 12282  		Ftv_sec      int64
 12283  		Ftv_usec     int32
 12284  		F__ccgo_pad1 [4]byte
 12285  	}
 12286  	Fru_stime struct {
 12287  		Ftv_sec      int64
 12288  		Ftv_usec     int32
 12289  		F__ccgo_pad1 [4]byte
 12290  	}
 12291  	Fru_maxrss   int64
 12292  	Fru_ixrss    int64
 12293  	Fru_idrss    int64
 12294  	Fru_isrss    int64
 12295  	Fru_minflt   int64
 12296  	Fru_majflt   int64
 12297  	Fru_nswap    int64
 12298  	Fru_inblock  int64
 12299  	Fru_oublock  int64
 12300  	Fru_msgsnd   int64
 12301  	Fru_msgrcv   int64
 12302  	Fru_nsignals int64
 12303  	Fru_nvcsw    int64
 12304  	Fru_nivcsw   int64
 12305  }
 12306  
 12307  type rusage_info_t = uintptr
 12308  
 12309  type rusage_info_v0 = struct {
 12310  	Fri_uuid               [16]uint8_t
 12311  	Fri_user_time          uint64_t
 12312  	Fri_system_time        uint64_t
 12313  	Fri_pkg_idle_wkups     uint64_t
 12314  	Fri_interrupt_wkups    uint64_t
 12315  	Fri_pageins            uint64_t
 12316  	Fri_wired_size         uint64_t
 12317  	Fri_resident_size      uint64_t
 12318  	Fri_phys_footprint     uint64_t
 12319  	Fri_proc_start_abstime uint64_t
 12320  	Fri_proc_exit_abstime  uint64_t
 12321  }
 12322  
 12323  type rusage_info_v1 = struct {
 12324  	Fri_uuid                  [16]uint8_t
 12325  	Fri_user_time             uint64_t
 12326  	Fri_system_time           uint64_t
 12327  	Fri_pkg_idle_wkups        uint64_t
 12328  	Fri_interrupt_wkups       uint64_t
 12329  	Fri_pageins               uint64_t
 12330  	Fri_wired_size            uint64_t
 12331  	Fri_resident_size         uint64_t
 12332  	Fri_phys_footprint        uint64_t
 12333  	Fri_proc_start_abstime    uint64_t
 12334  	Fri_proc_exit_abstime     uint64_t
 12335  	Fri_child_user_time       uint64_t
 12336  	Fri_child_system_time     uint64_t
 12337  	Fri_child_pkg_idle_wkups  uint64_t
 12338  	Fri_child_interrupt_wkups uint64_t
 12339  	Fri_child_pageins         uint64_t
 12340  	Fri_child_elapsed_abstime uint64_t
 12341  }
 12342  
 12343  type rusage_info_v2 = struct {
 12344  	Fri_uuid                  [16]uint8_t
 12345  	Fri_user_time             uint64_t
 12346  	Fri_system_time           uint64_t
 12347  	Fri_pkg_idle_wkups        uint64_t
 12348  	Fri_interrupt_wkups       uint64_t
 12349  	Fri_pageins               uint64_t
 12350  	Fri_wired_size            uint64_t
 12351  	Fri_resident_size         uint64_t
 12352  	Fri_phys_footprint        uint64_t
 12353  	Fri_proc_start_abstime    uint64_t
 12354  	Fri_proc_exit_abstime     uint64_t
 12355  	Fri_child_user_time       uint64_t
 12356  	Fri_child_system_time     uint64_t
 12357  	Fri_child_pkg_idle_wkups  uint64_t
 12358  	Fri_child_interrupt_wkups uint64_t
 12359  	Fri_child_pageins         uint64_t
 12360  	Fri_child_elapsed_abstime uint64_t
 12361  	Fri_diskio_bytesread      uint64_t
 12362  	Fri_diskio_byteswritten   uint64_t
 12363  }
 12364  
 12365  type rusage_info_v3 = struct {
 12366  	Fri_uuid                          [16]uint8_t
 12367  	Fri_user_time                     uint64_t
 12368  	Fri_system_time                   uint64_t
 12369  	Fri_pkg_idle_wkups                uint64_t
 12370  	Fri_interrupt_wkups               uint64_t
 12371  	Fri_pageins                       uint64_t
 12372  	Fri_wired_size                    uint64_t
 12373  	Fri_resident_size                 uint64_t
 12374  	Fri_phys_footprint                uint64_t
 12375  	Fri_proc_start_abstime            uint64_t
 12376  	Fri_proc_exit_abstime             uint64_t
 12377  	Fri_child_user_time               uint64_t
 12378  	Fri_child_system_time             uint64_t
 12379  	Fri_child_pkg_idle_wkups          uint64_t
 12380  	Fri_child_interrupt_wkups         uint64_t
 12381  	Fri_child_pageins                 uint64_t
 12382  	Fri_child_elapsed_abstime         uint64_t
 12383  	Fri_diskio_bytesread              uint64_t
 12384  	Fri_diskio_byteswritten           uint64_t
 12385  	Fri_cpu_time_qos_default          uint64_t
 12386  	Fri_cpu_time_qos_maintenance      uint64_t
 12387  	Fri_cpu_time_qos_background       uint64_t
 12388  	Fri_cpu_time_qos_utility          uint64_t
 12389  	Fri_cpu_time_qos_legacy           uint64_t
 12390  	Fri_cpu_time_qos_user_initiated   uint64_t
 12391  	Fri_cpu_time_qos_user_interactive uint64_t
 12392  	Fri_billed_system_time            uint64_t
 12393  	Fri_serviced_system_time          uint64_t
 12394  }
 12395  
 12396  type rusage_info_v4 = struct {
 12397  	Fri_uuid                          [16]uint8_t
 12398  	Fri_user_time                     uint64_t
 12399  	Fri_system_time                   uint64_t
 12400  	Fri_pkg_idle_wkups                uint64_t
 12401  	Fri_interrupt_wkups               uint64_t
 12402  	Fri_pageins                       uint64_t
 12403  	Fri_wired_size                    uint64_t
 12404  	Fri_resident_size                 uint64_t
 12405  	Fri_phys_footprint                uint64_t
 12406  	Fri_proc_start_abstime            uint64_t
 12407  	Fri_proc_exit_abstime             uint64_t
 12408  	Fri_child_user_time               uint64_t
 12409  	Fri_child_system_time             uint64_t
 12410  	Fri_child_pkg_idle_wkups          uint64_t
 12411  	Fri_child_interrupt_wkups         uint64_t
 12412  	Fri_child_pageins                 uint64_t
 12413  	Fri_child_elapsed_abstime         uint64_t
 12414  	Fri_diskio_bytesread              uint64_t
 12415  	Fri_diskio_byteswritten           uint64_t
 12416  	Fri_cpu_time_qos_default          uint64_t
 12417  	Fri_cpu_time_qos_maintenance      uint64_t
 12418  	Fri_cpu_time_qos_background       uint64_t
 12419  	Fri_cpu_time_qos_utility          uint64_t
 12420  	Fri_cpu_time_qos_legacy           uint64_t
 12421  	Fri_cpu_time_qos_user_initiated   uint64_t
 12422  	Fri_cpu_time_qos_user_interactive uint64_t
 12423  	Fri_billed_system_time            uint64_t
 12424  	Fri_serviced_system_time          uint64_t
 12425  	Fri_logical_writes                uint64_t
 12426  	Fri_lifetime_max_phys_footprint   uint64_t
 12427  	Fri_instructions                  uint64_t
 12428  	Fri_cycles                        uint64_t
 12429  	Fri_billed_energy                 uint64_t
 12430  	Fri_serviced_energy               uint64_t
 12431  	Fri_interval_max_phys_footprint   uint64_t
 12432  	Fri_runnable_time                 uint64_t
 12433  }
 12434  
 12435  type rusage_info_current = rusage_info_v4
 12436  
 12437  type rlimit = struct {
 12438  	Frlim_cur rlim_t
 12439  	Frlim_max rlim_t
 12440  }
 12441  
 12442  type proc_rlimit_control_wakeupmon = struct {
 12443  	Fwm_flags uint32_t
 12444  	Fwm_rate  int32_t
 12445  }
 12446  
 12447  type wait = struct{ Fw_status int32 }
 12448  
 12449  type ct_rune_t = int32
 12450  
 12451  type rune_t = int32
 12452  
 12453  type div_t = struct {
 12454  	Fquot int32
 12455  	Frem  int32
 12456  }
 12457  
 12458  type ldiv_t = struct {
 12459  	Fquot int64
 12460  	Frem  int64
 12461  }
 12462  
 12463  type lldiv_t = struct {
 12464  	Fquot int64
 12465  	Frem  int64
 12466  }
 12467  
 12468  type dev_t = int32
 12469  
 12470  type mode_t = uint16
 12471  
 12472  type wint_t = int32
 12473  
 12474  type _RuneEntry = struct {
 12475  	F__min       int32
 12476  	F__max       int32
 12477  	F__map       int32
 12478  	F__ccgo_pad1 [4]byte
 12479  	F__types     uintptr
 12480  }
 12481  
 12482  type _RuneRange = struct {
 12483  	F__nranges   int32
 12484  	F__ccgo_pad1 [4]byte
 12485  	F__ranges    uintptr
 12486  }
 12487  
 12488  type _RuneCharClass = struct {
 12489  	F__name      [14]int8
 12490  	F__ccgo_pad1 [2]byte
 12491  	F__mask      uint32
 12492  }
 12493  
 12494  type _RuneLocale = struct {
 12495  	F__magic        [8]int8
 12496  	F__encoding     [32]int8
 12497  	F__sgetrune     uintptr
 12498  	F__sputrune     uintptr
 12499  	F__invalid_rune int32
 12500  	F__runetype     [256]uint32
 12501  	F__maplower     [256]int32
 12502  	F__mapupper     [256]int32
 12503  	F__ccgo_pad1    [4]byte
 12504  	F__runetype_ext _RuneRange
 12505  	F__maplower_ext _RuneRange
 12506  	F__mapupper_ext _RuneRange
 12507  	F__variable     uintptr
 12508  	F__variable_len int32
 12509  	F__ncharclasses int32
 12510  	F__charclasses  uintptr
 12511  }
 12512  
 12513  func isascii(tls *libc.TLS, _c int32) int32 {
 12514  	return libc.Bool32(_c&libc.CplInt32(0x7F) == 0)
 12515  }
 12516  
 12517  func __istype(tls *libc.TLS, _c int32, _f uint64) int32 {
 12518  	return func() int32 {
 12519  		if isascii(tls, _c) != 0 {
 12520  			return libc.BoolInt32(!!(uint64(*(*uint32)(unsafe.Pointer(uintptr(unsafe.Pointer(&libc.X_DefaultRuneLocale)) + 60 + uintptr(_c)*4)))&_f != 0))
 12521  		}
 12522  		return libc.BoolInt32(!!(libc.X__maskrune(tls, _c, _f) != 0))
 12523  	}()
 12524  }
 12525  
 12526  func __isctype(tls *libc.TLS, _c int32, _f uint64) int32 {
 12527  	if _c < 0 || _c >= int32(1)<<8 {
 12528  		return 0
 12529  	}
 12530  	return libc.BoolInt32(!!(uint64(*(*uint32)(unsafe.Pointer(uintptr(unsafe.Pointer(&libc.X_DefaultRuneLocale)) + 60 + uintptr(_c)*4)))&_f != 0))
 12531  }
 12532  
 12533  func __wcwidth(tls *libc.TLS, _c int32) int32 {
 12534  	var _x uint32
 12535  
 12536  	if _c == 0 {
 12537  		return 0
 12538  	}
 12539  	_x = uint32(libc.X__maskrune(tls, _c, uint64(X_CTYPE_SWM|X_CTYPE_R)))
 12540  	if int64(_x)&X_CTYPE_SWM != int64(0) {
 12541  		return int32(int64(_x) & X_CTYPE_SWM >> X_CTYPE_SWS)
 12542  	}
 12543  	return func() int32 {
 12544  		if int64(_x)&X_CTYPE_R != int64(0) {
 12545  			return 1
 12546  		}
 12547  		return -1
 12548  	}()
 12549  }
 12550  
 12551  func isalnum(tls *libc.TLS, _c int32) int32 {
 12552  	return __istype(tls, _c, uint64(X_CTYPE_A|X_CTYPE_D))
 12553  }
 12554  
 12555  func isalpha(tls *libc.TLS, _c int32) int32 {
 12556  	return __istype(tls, _c, uint64(X_CTYPE_A))
 12557  }
 12558  
 12559  func isblank(tls *libc.TLS, _c int32) int32 {
 12560  	return __istype(tls, _c, uint64(X_CTYPE_B))
 12561  }
 12562  
 12563  func iscntrl(tls *libc.TLS, _c int32) int32 {
 12564  	return __istype(tls, _c, uint64(X_CTYPE_C))
 12565  }
 12566  
 12567  func isdigit(tls *libc.TLS, _c int32) int32 {
 12568  	return __isctype(tls, _c, uint64(X_CTYPE_D))
 12569  }
 12570  
 12571  func isgraph(tls *libc.TLS, _c int32) int32 {
 12572  	return __istype(tls, _c, uint64(X_CTYPE_G))
 12573  }
 12574  
 12575  func islower(tls *libc.TLS, _c int32) int32 {
 12576  	return __istype(tls, _c, uint64(X_CTYPE_L))
 12577  }
 12578  
 12579  func isprint(tls *libc.TLS, _c int32) int32 {
 12580  	return __istype(tls, _c, uint64(X_CTYPE_R))
 12581  }
 12582  
 12583  func ispunct(tls *libc.TLS, _c int32) int32 {
 12584  	return __istype(tls, _c, uint64(X_CTYPE_P))
 12585  }
 12586  
 12587  func isspace(tls *libc.TLS, _c int32) int32 {
 12588  	return __istype(tls, _c, uint64(X_CTYPE_S))
 12589  }
 12590  
 12591  func isupper(tls *libc.TLS, _c int32) int32 {
 12592  	return __istype(tls, _c, uint64(X_CTYPE_U))
 12593  }
 12594  
 12595  func isxdigit(tls *libc.TLS, _c int32) int32 {
 12596  	return __isctype(tls, _c, uint64(X_CTYPE_X))
 12597  }
 12598  
 12599  func toascii(tls *libc.TLS, _c int32) int32 {
 12600  	return _c & 0x7F
 12601  }
 12602  
 12603  func tolower(tls *libc.TLS, _c int32) int32 {
 12604  	return libc.X__tolower(tls, _c)
 12605  }
 12606  
 12607  func toupper(tls *libc.TLS, _c int32) int32 {
 12608  	return libc.X__toupper(tls, _c)
 12609  }
 12610  
 12611  func digittoint(tls *libc.TLS, _c int32) int32 {
 12612  	return libc.X__maskrune(tls, _c, uint64(0x0F))
 12613  }
 12614  
 12615  func ishexnumber(tls *libc.TLS, _c int32) int32 {
 12616  	return __istype(tls, _c, uint64(X_CTYPE_X))
 12617  }
 12618  
 12619  func isideogram(tls *libc.TLS, _c int32) int32 {
 12620  	return __istype(tls, _c, uint64(X_CTYPE_I))
 12621  }
 12622  
 12623  func isnumber(tls *libc.TLS, _c int32) int32 {
 12624  	return __istype(tls, _c, uint64(X_CTYPE_D))
 12625  }
 12626  
 12627  func isphonogram(tls *libc.TLS, _c int32) int32 {
 12628  	return __istype(tls, _c, uint64(X_CTYPE_Q))
 12629  }
 12630  
 12631  func isrune(tls *libc.TLS, _c int32) int32 {
 12632  	return __istype(tls, _c, uint64(0xFFFFFFF0))
 12633  }
 12634  
 12635  func isspecial(tls *libc.TLS, _c int32) int32 {
 12636  	return __istype(tls, _c, uint64(X_CTYPE_T))
 12637  }
 12638  
 12639  type amatch_vtab1 = struct {
 12640  	Fbase        sqlite3_vtab
 12641  	FzClassName  uintptr
 12642  	FzDb         uintptr
 12643  	FzSelf       uintptr
 12644  	FzCostTab    uintptr
 12645  	FzVocabTab   uintptr
 12646  	FzVocabWord  uintptr
 12647  	FzVocabLang  uintptr
 12648  	FpRule       uintptr
 12649  	FrIns        amatch_cost
 12650  	FrDel        amatch_cost
 12651  	FrSub        amatch_cost
 12652  	F__ccgo_pad1 [4]byte
 12653  	Fdb          uintptr
 12654  	FpVCheck     uintptr
 12655  	FnCursor     int32
 12656  	F__ccgo_pad2 [4]byte
 12657  }
 12658  
 12659  type amatch_vtab = amatch_vtab1
 12660  type amatch_cursor1 = struct {
 12661  	Fbase        sqlite3_vtab_cursor
 12662  	FiRowid      sqlite3_int64
 12663  	FiLang       amatch_langid
 12664  	FrLimit      amatch_cost
 12665  	FnBuf        int32
 12666  	FoomErr      int32
 12667  	FnWord       int32
 12668  	F__ccgo_pad1 [4]byte
 12669  	FzBuf        uintptr
 12670  	FzInput      uintptr
 12671  	FpVtab       uintptr
 12672  	FpAllWords   uintptr
 12673  	FpCurrent    uintptr
 12674  	FpCost       uintptr
 12675  	FpWord       uintptr
 12676  }
 12677  
 12678  type amatch_cursor = amatch_cursor1
 12679  type amatch_rule1 = struct {
 12680  	FpNext       uintptr
 12681  	FzFrom       uintptr
 12682  	FrCost       amatch_cost
 12683  	FiLang       amatch_langid
 12684  	FnFrom       amatch_len
 12685  	FnTo         amatch_len
 12686  	FzTo         [4]int8
 12687  	F__ccgo_pad1 [2]byte
 12688  }
 12689  
 12690  type amatch_rule = amatch_rule1
 12691  type amatch_word1 = struct {
 12692  	FpNext  uintptr
 12693  	FsCost  amatch_avl
 12694  	FsWord  amatch_avl
 12695  	FrCost  amatch_cost
 12696  	FiSeq   int32
 12697  	FzCost  [10]int8
 12698  	FnMatch int16
 12699  	FzWord  [4]int8
 12700  }
 12701  
 12702  type amatch_word = amatch_word1
 12703  type amatch_avl1 = struct {
 12704  	FpWord       uintptr
 12705  	FzKey        uintptr
 12706  	FpBefore     uintptr
 12707  	FpAfter      uintptr
 12708  	FpUp         uintptr
 12709  	Fheight      int16
 12710  	Fimbalance   int16
 12711  	F__ccgo_pad1 [4]byte
 12712  }
 12713  
 12714  type amatch_avl = amatch_avl1
 12715  
 12716  func amatchAvlRecomputeHeight(tls *libc.TLS, p uintptr) {
 12717  	var hBefore int16
 12718  	if (*amatch_avl)(unsafe.Pointer(p)).FpBefore != 0 {
 12719  		hBefore = (*amatch_avl)(unsafe.Pointer((*amatch_avl)(unsafe.Pointer(p)).FpBefore)).Fheight
 12720  	} else {
 12721  		hBefore = int16(0)
 12722  	}
 12723  	var hAfter int16
 12724  	if (*amatch_avl)(unsafe.Pointer(p)).FpAfter != 0 {
 12725  		hAfter = (*amatch_avl)(unsafe.Pointer((*amatch_avl)(unsafe.Pointer(p)).FpAfter)).Fheight
 12726  	} else {
 12727  		hAfter = int16(0)
 12728  	}
 12729  	(*amatch_avl)(unsafe.Pointer(p)).Fimbalance = int16(int32(hBefore) - int32(hAfter))
 12730  	(*amatch_avl)(unsafe.Pointer(p)).Fheight = int16(func() int32 {
 12731  		if int32(hBefore) > int32(hAfter) {
 12732  			return int32(hBefore)
 12733  		}
 12734  		return int32(hAfter)
 12735  	}() + 1)
 12736  }
 12737  
 12738  func amatchAvlRotateBefore(tls *libc.TLS, pP uintptr) uintptr {
 12739  	var pB uintptr = (*amatch_avl)(unsafe.Pointer(pP)).FpBefore
 12740  	var pY uintptr = (*amatch_avl)(unsafe.Pointer(pB)).FpAfter
 12741  	(*amatch_avl)(unsafe.Pointer(pB)).FpUp = (*amatch_avl)(unsafe.Pointer(pP)).FpUp
 12742  	(*amatch_avl)(unsafe.Pointer(pB)).FpAfter = pP
 12743  	(*amatch_avl)(unsafe.Pointer(pP)).FpUp = pB
 12744  	(*amatch_avl)(unsafe.Pointer(pP)).FpBefore = pY
 12745  	if pY != 0 {
 12746  		(*amatch_avl)(unsafe.Pointer(pY)).FpUp = pP
 12747  	}
 12748  	amatchAvlRecomputeHeight(tls, pP)
 12749  	amatchAvlRecomputeHeight(tls, pB)
 12750  	return pB
 12751  }
 12752  
 12753  func amatchAvlRotateAfter(tls *libc.TLS, pP uintptr) uintptr {
 12754  	var pA uintptr = (*amatch_avl)(unsafe.Pointer(pP)).FpAfter
 12755  	var pY uintptr = (*amatch_avl)(unsafe.Pointer(pA)).FpBefore
 12756  	(*amatch_avl)(unsafe.Pointer(pA)).FpUp = (*amatch_avl)(unsafe.Pointer(pP)).FpUp
 12757  	(*amatch_avl)(unsafe.Pointer(pA)).FpBefore = pP
 12758  	(*amatch_avl)(unsafe.Pointer(pP)).FpUp = pA
 12759  	(*amatch_avl)(unsafe.Pointer(pP)).FpAfter = pY
 12760  	if pY != 0 {
 12761  		(*amatch_avl)(unsafe.Pointer(pY)).FpUp = pP
 12762  	}
 12763  	amatchAvlRecomputeHeight(tls, pP)
 12764  	amatchAvlRecomputeHeight(tls, pA)
 12765  	return pA
 12766  }
 12767  
 12768  func amatchAvlFromPtr(tls *libc.TLS, p uintptr, pp uintptr) uintptr {
 12769  	var pUp uintptr = (*amatch_avl)(unsafe.Pointer(p)).FpUp
 12770  	if pUp == uintptr(0) {
 12771  		return pp
 12772  	}
 12773  	if (*amatch_avl)(unsafe.Pointer(pUp)).FpAfter == p {
 12774  		return pUp + 24
 12775  	}
 12776  	return pUp + 16
 12777  }
 12778  
 12779  func amatchAvlBalance(tls *libc.TLS, p uintptr) uintptr {
 12780  	bp := tls.Alloc(8)
 12781  	defer tls.Free(8)
 12782  	*(*uintptr)(unsafe.Pointer(bp)) = p
 12783  
 12784  	var pTop uintptr = *(*uintptr)(unsafe.Pointer(bp))
 12785  	var pp uintptr
 12786  	for *(*uintptr)(unsafe.Pointer(bp)) != 0 {
 12787  		amatchAvlRecomputeHeight(tls, *(*uintptr)(unsafe.Pointer(bp)))
 12788  		if int32((*amatch_avl)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp)))).Fimbalance) >= 2 {
 12789  			var pB uintptr = (*amatch_avl)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp)))).FpBefore
 12790  			if int32((*amatch_avl)(unsafe.Pointer(pB)).Fimbalance) < 0 {
 12791  				(*amatch_avl)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp)))).FpBefore = amatchAvlRotateAfter(tls, pB)
 12792  			}
 12793  			pp = amatchAvlFromPtr(tls, *(*uintptr)(unsafe.Pointer(bp)), bp)
 12794  			*(*uintptr)(unsafe.Pointer(bp)) = libc.AssignPtrUintptr(pp, amatchAvlRotateBefore(tls, *(*uintptr)(unsafe.Pointer(bp))))
 12795  		} else if int32((*amatch_avl)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp)))).Fimbalance) <= -2 {
 12796  			var pA uintptr = (*amatch_avl)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp)))).FpAfter
 12797  			if int32((*amatch_avl)(unsafe.Pointer(pA)).Fimbalance) > 0 {
 12798  				(*amatch_avl)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp)))).FpAfter = amatchAvlRotateBefore(tls, pA)
 12799  			}
 12800  			pp = amatchAvlFromPtr(tls, *(*uintptr)(unsafe.Pointer(bp)), bp)
 12801  			*(*uintptr)(unsafe.Pointer(bp)) = libc.AssignPtrUintptr(pp, amatchAvlRotateAfter(tls, *(*uintptr)(unsafe.Pointer(bp))))
 12802  		}
 12803  		pTop = *(*uintptr)(unsafe.Pointer(bp))
 12804  		*(*uintptr)(unsafe.Pointer(bp)) = (*amatch_avl)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp)))).FpUp
 12805  	}
 12806  	return pTop
 12807  }
 12808  
 12809  func amatchAvlSearch(tls *libc.TLS, p uintptr, zKey uintptr) uintptr {
 12810  	var c int32
 12811  	for p != 0 && libc.AssignInt32(&c, libc.Xstrcmp(tls, zKey, (*amatch_avl)(unsafe.Pointer(p)).FzKey)) != 0 {
 12812  		if c < 0 {
 12813  			p = (*amatch_avl)(unsafe.Pointer(p)).FpBefore
 12814  		} else {
 12815  			p = (*amatch_avl)(unsafe.Pointer(p)).FpAfter
 12816  		}
 12817  	}
 12818  	return p
 12819  }
 12820  
 12821  func amatchAvlFirst(tls *libc.TLS, p uintptr) uintptr {
 12822  	if p != 0 {
 12823  		for (*amatch_avl)(unsafe.Pointer(p)).FpBefore != 0 {
 12824  			p = (*amatch_avl)(unsafe.Pointer(p)).FpBefore
 12825  		}
 12826  	}
 12827  	return p
 12828  }
 12829  
 12830  func amatchAvlInsert(tls *libc.TLS, ppHead uintptr, pNew uintptr) uintptr {
 12831  	var c int32
 12832  	var p uintptr = *(*uintptr)(unsafe.Pointer(ppHead))
 12833  	if p == uintptr(0) {
 12834  		p = pNew
 12835  		(*amatch_avl)(unsafe.Pointer(pNew)).FpUp = uintptr(0)
 12836  	} else {
 12837  		for p != 0 {
 12838  			c = libc.Xstrcmp(tls, (*amatch_avl)(unsafe.Pointer(pNew)).FzKey, (*amatch_avl)(unsafe.Pointer(p)).FzKey)
 12839  			if c < 0 {
 12840  				if (*amatch_avl)(unsafe.Pointer(p)).FpBefore != 0 {
 12841  					p = (*amatch_avl)(unsafe.Pointer(p)).FpBefore
 12842  				} else {
 12843  					(*amatch_avl)(unsafe.Pointer(p)).FpBefore = pNew
 12844  					(*amatch_avl)(unsafe.Pointer(pNew)).FpUp = p
 12845  					break
 12846  				}
 12847  			} else if c > 0 {
 12848  				if (*amatch_avl)(unsafe.Pointer(p)).FpAfter != 0 {
 12849  					p = (*amatch_avl)(unsafe.Pointer(p)).FpAfter
 12850  				} else {
 12851  					(*amatch_avl)(unsafe.Pointer(p)).FpAfter = pNew
 12852  					(*amatch_avl)(unsafe.Pointer(pNew)).FpUp = p
 12853  					break
 12854  				}
 12855  			} else {
 12856  				return p
 12857  			}
 12858  		}
 12859  	}
 12860  	(*amatch_avl)(unsafe.Pointer(pNew)).FpBefore = uintptr(0)
 12861  	(*amatch_avl)(unsafe.Pointer(pNew)).FpAfter = uintptr(0)
 12862  	(*amatch_avl)(unsafe.Pointer(pNew)).Fheight = int16(1)
 12863  	(*amatch_avl)(unsafe.Pointer(pNew)).Fimbalance = int16(0)
 12864  	*(*uintptr)(unsafe.Pointer(ppHead)) = amatchAvlBalance(tls, p)
 12865  
 12866  	return uintptr(0)
 12867  }
 12868  
 12869  func amatchAvlRemove(tls *libc.TLS, ppHead uintptr, pOld uintptr) {
 12870  	var ppParent uintptr
 12871  	var pBalance uintptr = uintptr(0)
 12872  
 12873  	ppParent = amatchAvlFromPtr(tls, pOld, ppHead)
 12874  	if (*amatch_avl)(unsafe.Pointer(pOld)).FpBefore == uintptr(0) && (*amatch_avl)(unsafe.Pointer(pOld)).FpAfter == uintptr(0) {
 12875  		*(*uintptr)(unsafe.Pointer(ppParent)) = uintptr(0)
 12876  		pBalance = (*amatch_avl)(unsafe.Pointer(pOld)).FpUp
 12877  	} else if (*amatch_avl)(unsafe.Pointer(pOld)).FpBefore != 0 && (*amatch_avl)(unsafe.Pointer(pOld)).FpAfter != 0 {
 12878  		var pX uintptr
 12879  		var pY uintptr
 12880  		pX = amatchAvlFirst(tls, (*amatch_avl)(unsafe.Pointer(pOld)).FpAfter)
 12881  		*(*uintptr)(unsafe.Pointer(amatchAvlFromPtr(tls, pX, uintptr(0)))) = (*amatch_avl)(unsafe.Pointer(pX)).FpAfter
 12882  		if (*amatch_avl)(unsafe.Pointer(pX)).FpAfter != 0 {
 12883  			(*amatch_avl)(unsafe.Pointer((*amatch_avl)(unsafe.Pointer(pX)).FpAfter)).FpUp = (*amatch_avl)(unsafe.Pointer(pX)).FpUp
 12884  		}
 12885  		pBalance = (*amatch_avl)(unsafe.Pointer(pX)).FpUp
 12886  		(*amatch_avl)(unsafe.Pointer(pX)).FpAfter = (*amatch_avl)(unsafe.Pointer(pOld)).FpAfter
 12887  		if (*amatch_avl)(unsafe.Pointer(pX)).FpAfter != 0 {
 12888  			(*amatch_avl)(unsafe.Pointer((*amatch_avl)(unsafe.Pointer(pX)).FpAfter)).FpUp = pX
 12889  		} else {
 12890  			pBalance = pX
 12891  		}
 12892  		(*amatch_avl)(unsafe.Pointer(pX)).FpBefore = libc.AssignUintptr(&pY, (*amatch_avl)(unsafe.Pointer(pOld)).FpBefore)
 12893  		if pY != 0 {
 12894  			(*amatch_avl)(unsafe.Pointer(pY)).FpUp = pX
 12895  		}
 12896  		(*amatch_avl)(unsafe.Pointer(pX)).FpUp = (*amatch_avl)(unsafe.Pointer(pOld)).FpUp
 12897  		*(*uintptr)(unsafe.Pointer(ppParent)) = pX
 12898  	} else if (*amatch_avl)(unsafe.Pointer(pOld)).FpBefore == uintptr(0) {
 12899  		*(*uintptr)(unsafe.Pointer(ppParent)) = libc.AssignUintptr(&pBalance, (*amatch_avl)(unsafe.Pointer(pOld)).FpAfter)
 12900  		(*amatch_avl)(unsafe.Pointer(pBalance)).FpUp = (*amatch_avl)(unsafe.Pointer(pOld)).FpUp
 12901  	} else if (*amatch_avl)(unsafe.Pointer(pOld)).FpAfter == uintptr(0) {
 12902  		*(*uintptr)(unsafe.Pointer(ppParent)) = libc.AssignUintptr(&pBalance, (*amatch_avl)(unsafe.Pointer(pOld)).FpBefore)
 12903  		(*amatch_avl)(unsafe.Pointer(pBalance)).FpUp = (*amatch_avl)(unsafe.Pointer(pOld)).FpUp
 12904  	}
 12905  	*(*uintptr)(unsafe.Pointer(ppHead)) = amatchAvlBalance(tls, pBalance)
 12906  	(*amatch_avl)(unsafe.Pointer(pOld)).FpUp = uintptr(0)
 12907  	(*amatch_avl)(unsafe.Pointer(pOld)).FpBefore = uintptr(0)
 12908  	(*amatch_avl)(unsafe.Pointer(pOld)).FpAfter = uintptr(0)
 12909  
 12910  }
 12911  
 12912  type amatch_cost = int32
 12913  type amatch_len = int8
 12914  type amatch_langid = int32
 12915  
 12916  func amatchMergeRules(tls *libc.TLS, pA uintptr, pB uintptr) uintptr {
 12917  	bp := tls.Alloc(32)
 12918  	defer tls.Free(32)
 12919  
 12920  	var pTail uintptr
 12921  
 12922  	pTail = bp
 12923  	for pA != 0 && pB != 0 {
 12924  		if (*amatch_rule)(unsafe.Pointer(pA)).FrCost <= (*amatch_rule)(unsafe.Pointer(pB)).FrCost {
 12925  			(*amatch_rule)(unsafe.Pointer(pTail)).FpNext = pA
 12926  			pTail = pA
 12927  			pA = (*amatch_rule)(unsafe.Pointer(pA)).FpNext
 12928  		} else {
 12929  			(*amatch_rule)(unsafe.Pointer(pTail)).FpNext = pB
 12930  			pTail = pB
 12931  			pB = (*amatch_rule)(unsafe.Pointer(pB)).FpNext
 12932  		}
 12933  	}
 12934  	if pA == uintptr(0) {
 12935  		(*amatch_rule)(unsafe.Pointer(pTail)).FpNext = pB
 12936  	} else {
 12937  		(*amatch_rule)(unsafe.Pointer(pTail)).FpNext = pA
 12938  	}
 12939  	return (*amatch_rule)(unsafe.Pointer(bp)).FpNext
 12940  }
 12941  
 12942  func amatchLoadOneRule(tls *libc.TLS, p uintptr, pStmt uintptr, ppRule uintptr, pzErr uintptr) int32 {
 12943  	bp := tls.Alloc(48)
 12944  	defer tls.Free(48)
 12945  
 12946  	var iLang sqlite3_int64 = sqlite3.Xsqlite3_column_int64(tls, pStmt, 0)
 12947  	var zFrom uintptr = sqlite3.Xsqlite3_column_text(tls, pStmt, 1)
 12948  	var zTo uintptr = sqlite3.Xsqlite3_column_text(tls, pStmt, 2)
 12949  	var rCost amatch_cost = sqlite3.Xsqlite3_column_int(tls, pStmt, 3)
 12950  
 12951  	var rc int32 = SQLITE_OK
 12952  	var nFrom int32
 12953  	var nTo int32
 12954  	var pRule uintptr = uintptr(0)
 12955  
 12956  	if zFrom == uintptr(0) {
 12957  		zFrom = ts + 584
 12958  	}
 12959  	if zTo == uintptr(0) {
 12960  		zTo = ts + 584
 12961  	}
 12962  	nFrom = int32(libc.Xstrlen(tls, zFrom))
 12963  	nTo = int32(libc.Xstrlen(tls, zTo))
 12964  
 12965  	if libc.Xstrcmp(tls, zFrom, zTo) == 0 {
 12966  		if int32(*(*int8)(unsafe.Pointer(zFrom))) == '?' && int32(*(*int8)(unsafe.Pointer(zFrom + 1))) == 0 {
 12967  			if (*amatch_vtab)(unsafe.Pointer(p)).FrSub == 0 || (*amatch_vtab)(unsafe.Pointer(p)).FrSub > rCost {
 12968  				(*amatch_vtab)(unsafe.Pointer(p)).FrSub = rCost
 12969  			}
 12970  		}
 12971  		*(*uintptr)(unsafe.Pointer(ppRule)) = uintptr(0)
 12972  		return SQLITE_OK
 12973  	}
 12974  
 12975  	if rCost <= 0 || rCost > AMATCH_MX_COST {
 12976  		*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+3304,
 12977  			libc.VaList(bp, (*amatch_vtab)(unsafe.Pointer(p)).FzClassName, AMATCH_MX_COST))
 12978  		rc = SQLITE_ERROR
 12979  	} else if nFrom > AMATCH_MX_LENGTH || nTo > AMATCH_MX_LENGTH {
 12980  		*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+3338,
 12981  			libc.VaList(bp+16, (*amatch_vtab)(unsafe.Pointer(p)).FzClassName, AMATCH_MX_LENGTH))
 12982  		rc = SQLITE_ERROR
 12983  	} else if iLang < int64(0) || iLang > int64(AMATCH_MX_LANGID) {
 12984  		*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+3370,
 12985  			libc.VaList(bp+32, (*amatch_vtab)(unsafe.Pointer(p)).FzClassName, AMATCH_MX_LANGID))
 12986  		rc = SQLITE_ERROR
 12987  	} else if libc.Xstrcmp(tls, zFrom, ts+584) == 0 && libc.Xstrcmp(tls, zTo, ts+3405) == 0 {
 12988  		if (*amatch_vtab)(unsafe.Pointer(p)).FrIns == 0 || (*amatch_vtab)(unsafe.Pointer(p)).FrIns > rCost {
 12989  			(*amatch_vtab)(unsafe.Pointer(p)).FrIns = rCost
 12990  		}
 12991  	} else if libc.Xstrcmp(tls, zFrom, ts+3405) == 0 && libc.Xstrcmp(tls, zTo, ts+584) == 0 {
 12992  		if (*amatch_vtab)(unsafe.Pointer(p)).FrDel == 0 || (*amatch_vtab)(unsafe.Pointer(p)).FrDel > rCost {
 12993  			(*amatch_vtab)(unsafe.Pointer(p)).FrDel = rCost
 12994  		}
 12995  	} else {
 12996  		pRule = sqlite3.Xsqlite3_malloc64(tls, uint64(unsafe.Sizeof(amatch_rule{}))+uint64(nFrom)+uint64(nTo))
 12997  		if pRule == uintptr(0) {
 12998  			rc = SQLITE_NOMEM
 12999  		} else {
 13000  			libc.X__builtin___memset_chk(tls, pRule, 0, uint64(unsafe.Sizeof(amatch_rule{})), libc.X__builtin_object_size(tls, pRule, 0))
 13001  			(*amatch_rule)(unsafe.Pointer(pRule)).FzFrom = pRule + 26 + uintptr(nTo+1)
 13002  			(*amatch_rule)(unsafe.Pointer(pRule)).FnFrom = amatch_len(nFrom)
 13003  			libc.X__builtin___memcpy_chk(tls, (*amatch_rule)(unsafe.Pointer(pRule)).FzFrom, zFrom, uint64(nFrom+1), libc.X__builtin_object_size(tls, (*amatch_rule)(unsafe.Pointer(pRule)).FzFrom, 0))
 13004  			libc.X__builtin___memcpy_chk(tls, pRule+26, zTo, uint64(nTo+1), libc.X__builtin_object_size(tls, pRule+26, 0))
 13005  			(*amatch_rule)(unsafe.Pointer(pRule)).FnTo = amatch_len(nTo)
 13006  			(*amatch_rule)(unsafe.Pointer(pRule)).FrCost = rCost
 13007  			(*amatch_rule)(unsafe.Pointer(pRule)).FiLang = int32(iLang)
 13008  		}
 13009  	}
 13010  
 13011  	*(*uintptr)(unsafe.Pointer(ppRule)) = pRule
 13012  	return rc
 13013  }
 13014  
 13015  func amatchFreeRules(tls *libc.TLS, p uintptr) {
 13016  	for (*amatch_vtab)(unsafe.Pointer(p)).FpRule != 0 {
 13017  		var pRule uintptr = (*amatch_vtab)(unsafe.Pointer(p)).FpRule
 13018  		(*amatch_vtab)(unsafe.Pointer(p)).FpRule = (*amatch_rule)(unsafe.Pointer(pRule)).FpNext
 13019  		sqlite3.Xsqlite3_free(tls, pRule)
 13020  	}
 13021  	(*amatch_vtab)(unsafe.Pointer(p)).FpRule = uintptr(0)
 13022  }
 13023  
 13024  func amatchLoadRules(tls *libc.TLS, db uintptr, p uintptr, pzErr uintptr) int32 {
 13025  	bp := tls.Alloc(192)
 13026  	defer tls.Free(192)
 13027  
 13028  	var rc int32 = SQLITE_OK
 13029  	var zSql uintptr
 13030  	var pHead uintptr = uintptr(0)
 13031  
 13032  	zSql = sqlite3.Xsqlite3_mprintf(tls, ts+3407, libc.VaList(bp, (*amatch_vtab)(unsafe.Pointer(p)).FzDb, (*amatch_vtab)(unsafe.Pointer(p)).FzCostTab))
 13033  	if zSql == uintptr(0) {
 13034  		rc = SQLITE_NOMEM
 13035  	} else {
 13036  		var rc2 int32
 13037  		*(*uintptr)(unsafe.Pointer(bp + 56)) = uintptr(0)
 13038  		rc = sqlite3.Xsqlite3_prepare_v2(tls, db, zSql, -1, bp+56, uintptr(0))
 13039  		if rc != SQLITE_OK {
 13040  			*(*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)))
 13041  		} else if sqlite3.Xsqlite3_column_count(tls, *(*uintptr)(unsafe.Pointer(bp + 56))) != 4 {
 13042  			*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+3434,
 13043  				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)))))
 13044  			rc = SQLITE_ERROR
 13045  		} else {
 13046  			for rc == SQLITE_OK && SQLITE_ROW == sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp + 56))) {
 13047  				*(*uintptr)(unsafe.Pointer(bp + 64)) = uintptr(0)
 13048  				rc = amatchLoadOneRule(tls, p, *(*uintptr)(unsafe.Pointer(bp + 56)), bp+64, pzErr)
 13049  				if *(*uintptr)(unsafe.Pointer(bp + 64)) != 0 {
 13050  					(*amatch_rule)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 64)))).FpNext = pHead
 13051  					pHead = *(*uintptr)(unsafe.Pointer(bp + 64))
 13052  				}
 13053  			}
 13054  		}
 13055  		rc2 = sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 56)))
 13056  		if rc == SQLITE_OK {
 13057  			rc = rc2
 13058  		}
 13059  	}
 13060  	sqlite3.Xsqlite3_free(tls, zSql)
 13061  
 13062  	if rc == SQLITE_OK {
 13063  		var i uint32
 13064  		var pX uintptr
 13065  
 13066  		for i = uint32(0); uint64(i) < uint64(unsafe.Sizeof([15]uintptr{}))/uint64(unsafe.Sizeof(uintptr(0))); i++ {
 13067  			*(*uintptr)(unsafe.Pointer(bp + 72 + uintptr(i)*8)) = uintptr(0)
 13068  		}
 13069  		for libc.AssignUintptr(&pX, pHead) != uintptr(0) {
 13070  			pHead = (*amatch_rule)(unsafe.Pointer(pX)).FpNext
 13071  			(*amatch_rule)(unsafe.Pointer(pX)).FpNext = uintptr(0)
 13072  			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++ {
 13073  				pX = amatchMergeRules(tls, *(*uintptr)(unsafe.Pointer(bp + 72 + uintptr(i)*8)), pX)
 13074  				*(*uintptr)(unsafe.Pointer(bp + 72 + uintptr(i)*8)) = uintptr(0)
 13075  			}
 13076  			*(*uintptr)(unsafe.Pointer(bp + 72 + uintptr(i)*8)) = amatchMergeRules(tls, *(*uintptr)(unsafe.Pointer(bp + 72 + uintptr(i)*8)), pX)
 13077  		}
 13078  		pX = *(*uintptr)(unsafe.Pointer(bp + 72))
 13079  		i = uint32(1)
 13080  		for ; uint64(i) < uint64(unsafe.Sizeof([15]uintptr{}))/uint64(unsafe.Sizeof(uintptr(0))); i++ {
 13081  			pX = amatchMergeRules(tls, *(*uintptr)(unsafe.Pointer(bp + 72 + uintptr(i)*8)), pX)
 13082  		}
 13083  		(*amatch_vtab)(unsafe.Pointer(p)).FpRule = amatchMergeRules(tls, (*amatch_vtab)(unsafe.Pointer(p)).FpRule, pX)
 13084  	} else {
 13085  		(*amatch_vtab)(unsafe.Pointer(p)).FpRule = pHead
 13086  	}
 13087  
 13088  	return rc
 13089  }
 13090  
 13091  func amatchDequote(tls *libc.TLS, zIn uintptr) uintptr {
 13092  	var nIn sqlite3_int64
 13093  	var zOut uintptr
 13094  
 13095  	nIn = sqlite3_int64(libc.Xstrlen(tls, zIn))
 13096  	zOut = sqlite3.Xsqlite3_malloc64(tls, uint64(nIn+int64(1)))
 13097  	if zOut != 0 {
 13098  		var q int8 = *(*int8)(unsafe.Pointer(zIn))
 13099  
 13100  		if int32(q) != '[' && int32(q) != '\'' && int32(q) != '"' && int32(q) != '`' {
 13101  			libc.X__builtin___memcpy_chk(tls, zOut, zIn, size_t(nIn+int64(1)), libc.X__builtin_object_size(tls, zOut, 0))
 13102  		} else {
 13103  			var iOut int32 = 0
 13104  			var iIn int32
 13105  
 13106  			if int32(q) == '[' {
 13107  				q = int8(']')
 13108  			}
 13109  			for iIn = 1; sqlite3_int64(iIn) < nIn; iIn++ {
 13110  				if int32(*(*int8)(unsafe.Pointer(zIn + uintptr(iIn)))) == int32(q) {
 13111  					iIn++
 13112  				}
 13113  				*(*int8)(unsafe.Pointer(zOut + uintptr(libc.PostIncInt32(&iOut, 1)))) = *(*int8)(unsafe.Pointer(zIn + uintptr(iIn)))
 13114  			}
 13115  		}
 13116  
 13117  	}
 13118  	return zOut
 13119  }
 13120  
 13121  func amatchVCheckClear(tls *libc.TLS, p uintptr) {
 13122  	if (*amatch_vtab)(unsafe.Pointer(p)).FpVCheck != 0 {
 13123  		sqlite3.Xsqlite3_finalize(tls, (*amatch_vtab)(unsafe.Pointer(p)).FpVCheck)
 13124  		(*amatch_vtab)(unsafe.Pointer(p)).FpVCheck = uintptr(0)
 13125  	}
 13126  }
 13127  
 13128  func amatchFree(tls *libc.TLS, p uintptr) {
 13129  	if p != 0 {
 13130  		amatchFreeRules(tls, p)
 13131  		amatchVCheckClear(tls, p)
 13132  		sqlite3.Xsqlite3_free(tls, (*amatch_vtab)(unsafe.Pointer(p)).FzClassName)
 13133  		sqlite3.Xsqlite3_free(tls, (*amatch_vtab)(unsafe.Pointer(p)).FzDb)
 13134  		sqlite3.Xsqlite3_free(tls, (*amatch_vtab)(unsafe.Pointer(p)).FzCostTab)
 13135  		sqlite3.Xsqlite3_free(tls, (*amatch_vtab)(unsafe.Pointer(p)).FzVocabTab)
 13136  		sqlite3.Xsqlite3_free(tls, (*amatch_vtab)(unsafe.Pointer(p)).FzVocabWord)
 13137  		sqlite3.Xsqlite3_free(tls, (*amatch_vtab)(unsafe.Pointer(p)).FzVocabLang)
 13138  		sqlite3.Xsqlite3_free(tls, (*amatch_vtab)(unsafe.Pointer(p)).FzSelf)
 13139  		libc.X__builtin___memset_chk(tls, p, 0, uint64(unsafe.Sizeof(amatch_vtab{})), libc.X__builtin_object_size(tls, p, 0))
 13140  		sqlite3.Xsqlite3_free(tls, p)
 13141  	}
 13142  }
 13143  
 13144  func amatchDisconnect(tls *libc.TLS, pVtab uintptr) int32 {
 13145  	var p uintptr = pVtab
 13146  
 13147  	amatchFree(tls, p)
 13148  	return SQLITE_OK
 13149  }
 13150  
 13151  func amatchValueOfKey(tls *libc.TLS, zKey uintptr, zStr uintptr) uintptr {
 13152  	var nKey int32 = int32(libc.Xstrlen(tls, zKey))
 13153  	var nStr int32 = int32(libc.Xstrlen(tls, zStr))
 13154  	var i int32
 13155  	if nStr < nKey+1 {
 13156  		return uintptr(0)
 13157  	}
 13158  	if libc.Xmemcmp(tls, zStr, zKey, uint64(nKey)) != 0 {
 13159  		return uintptr(0)
 13160  	}
 13161  	for i = nKey; isspace(tls, int32(uint8(*(*int8)(unsafe.Pointer(zStr + uintptr(i)))))) != 0; i++ {
 13162  	}
 13163  	if int32(*(*int8)(unsafe.Pointer(zStr + uintptr(i)))) != '=' {
 13164  		return uintptr(0)
 13165  	}
 13166  	i++
 13167  	for isspace(tls, int32(uint8(*(*int8)(unsafe.Pointer(zStr + uintptr(i)))))) != 0 {
 13168  		i++
 13169  	}
 13170  	return zStr + uintptr(i)
 13171  }
 13172  
 13173  func amatchConnect(tls *libc.TLS, db uintptr, pAux uintptr, argc int32, argv uintptr, ppVtab uintptr, pzErr uintptr) int32 {
 13174  	bp := tls.Alloc(32)
 13175  	defer tls.Free(32)
 13176  
 13177  	var rc int32
 13178  	var pNew uintptr
 13179  	var zModule uintptr
 13180  	var zDb uintptr
 13181  	var zVal uintptr
 13182  	var i int32
 13183  	rc = SQLITE_OK
 13184  	pNew = uintptr(0)
 13185  	zModule = *(*uintptr)(unsafe.Pointer(argv))
 13186  	zDb = *(*uintptr)(unsafe.Pointer(argv + 1*8))
 13187  
 13188  	_ = pAux
 13189  	*(*uintptr)(unsafe.Pointer(ppVtab)) = uintptr(0)
 13190  	pNew = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(amatch_vtab{})))
 13191  	if !(pNew == uintptr(0)) {
 13192  		goto __1
 13193  	}
 13194  	return SQLITE_NOMEM
 13195  __1:
 13196  	;
 13197  	rc = SQLITE_NOMEM
 13198  	libc.X__builtin___memset_chk(tls, pNew, 0, uint64(unsafe.Sizeof(amatch_vtab{})), libc.X__builtin_object_size(tls, pNew, 0))
 13199  	(*amatch_vtab)(unsafe.Pointer(pNew)).Fdb = db
 13200  	(*amatch_vtab)(unsafe.Pointer(pNew)).FzClassName = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp, zModule))
 13201  	if !((*amatch_vtab)(unsafe.Pointer(pNew)).FzClassName == uintptr(0)) {
 13202  		goto __2
 13203  	}
 13204  	goto amatchConnectError
 13205  __2:
 13206  	;
 13207  	(*amatch_vtab)(unsafe.Pointer(pNew)).FzDb = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp+8, zDb))
 13208  	if !((*amatch_vtab)(unsafe.Pointer(pNew)).FzDb == uintptr(0)) {
 13209  		goto __3
 13210  	}
 13211  	goto amatchConnectError
 13212  __3:
 13213  	;
 13214  	(*amatch_vtab)(unsafe.Pointer(pNew)).FzSelf = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp+16, *(*uintptr)(unsafe.Pointer(argv + 2*8))))
 13215  	if !((*amatch_vtab)(unsafe.Pointer(pNew)).FzSelf == uintptr(0)) {
 13216  		goto __4
 13217  	}
 13218  	goto amatchConnectError
 13219  __4:
 13220  	;
 13221  	i = 3
 13222  __5:
 13223  	if !(i < argc) {
 13224  		goto __7
 13225  	}
 13226  	zVal = amatchValueOfKey(tls, ts+3468, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8)))
 13227  	if !(zVal != 0) {
 13228  		goto __8
 13229  	}
 13230  	sqlite3.Xsqlite3_free(tls, (*amatch_vtab)(unsafe.Pointer(pNew)).FzVocabTab)
 13231  	(*amatch_vtab)(unsafe.Pointer(pNew)).FzVocabTab = amatchDequote(tls, zVal)
 13232  	if !((*amatch_vtab)(unsafe.Pointer(pNew)).FzVocabTab == uintptr(0)) {
 13233  		goto __9
 13234  	}
 13235  	goto amatchConnectError
 13236  __9:
 13237  	;
 13238  	goto __6
 13239  __8:
 13240  	;
 13241  	zVal = amatchValueOfKey(tls, ts+3485, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8)))
 13242  	if !(zVal != 0) {
 13243  		goto __10
 13244  	}
 13245  	sqlite3.Xsqlite3_free(tls, (*amatch_vtab)(unsafe.Pointer(pNew)).FzVocabWord)
 13246  	(*amatch_vtab)(unsafe.Pointer(pNew)).FzVocabWord = amatchDequote(tls, zVal)
 13247  	if !((*amatch_vtab)(unsafe.Pointer(pNew)).FzVocabWord == uintptr(0)) {
 13248  		goto __11
 13249  	}
 13250  	goto amatchConnectError
 13251  __11:
 13252  	;
 13253  	goto __6
 13254  __10:
 13255  	;
 13256  	zVal = amatchValueOfKey(tls, ts+3501, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8)))
 13257  	if !(zVal != 0) {
 13258  		goto __12
 13259  	}
 13260  	sqlite3.Xsqlite3_free(tls, (*amatch_vtab)(unsafe.Pointer(pNew)).FzVocabLang)
 13261  	(*amatch_vtab)(unsafe.Pointer(pNew)).FzVocabLang = amatchDequote(tls, zVal)
 13262  	if !((*amatch_vtab)(unsafe.Pointer(pNew)).FzVocabLang == uintptr(0)) {
 13263  		goto __13
 13264  	}
 13265  	goto amatchConnectError
 13266  __13:
 13267  	;
 13268  	goto __6
 13269  __12:
 13270  	;
 13271  	zVal = amatchValueOfKey(tls, ts+3521, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8)))
 13272  	if !(zVal != 0) {
 13273  		goto __14
 13274  	}
 13275  	sqlite3.Xsqlite3_free(tls, (*amatch_vtab)(unsafe.Pointer(pNew)).FzCostTab)
 13276  	(*amatch_vtab)(unsafe.Pointer(pNew)).FzCostTab = amatchDequote(tls, zVal)
 13277  	if !((*amatch_vtab)(unsafe.Pointer(pNew)).FzCostTab == uintptr(0)) {
 13278  		goto __15
 13279  	}
 13280  	goto amatchConnectError
 13281  __15:
 13282  	;
 13283  	goto __6
 13284  __14:
 13285  	;
 13286  	*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+3536, libc.VaList(bp+24, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8))))
 13287  	amatchFree(tls, pNew)
 13288  	*(*uintptr)(unsafe.Pointer(ppVtab)) = uintptr(0)
 13289  	return SQLITE_ERROR
 13290  	goto __6
 13291  __6:
 13292  	i++
 13293  	goto __5
 13294  	goto __7
 13295  __7:
 13296  	;
 13297  	rc = SQLITE_OK
 13298  	if !((*amatch_vtab)(unsafe.Pointer(pNew)).FzCostTab == uintptr(0)) {
 13299  		goto __16
 13300  	}
 13301  	*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+3565, 0)
 13302  	rc = SQLITE_ERROR
 13303  	goto __17
 13304  __16:
 13305  	rc = amatchLoadRules(tls, db, pNew, pzErr)
 13306  __17:
 13307  	;
 13308  	if !(rc == SQLITE_OK) {
 13309  		goto __18
 13310  	}
 13311  	sqlite3.Xsqlite3_vtab_config(tls, db, SQLITE_VTAB_INNOCUOUS, 0)
 13312  	rc = sqlite3.Xsqlite3_declare_vtab(tls, db,
 13313  		ts+3599)
 13314  __18:
 13315  	;
 13316  	if !(rc != SQLITE_OK) {
 13317  		goto __19
 13318  	}
 13319  	amatchFree(tls, pNew)
 13320  __19:
 13321  	;
 13322  	*(*uintptr)(unsafe.Pointer(ppVtab)) = pNew
 13323  	return rc
 13324  
 13325  amatchConnectError:
 13326  	amatchFree(tls, pNew)
 13327  	return rc
 13328  }
 13329  
 13330  func amatchOpen(tls *libc.TLS, pVTab uintptr, ppCursor uintptr) int32 {
 13331  	var p uintptr = pVTab
 13332  	var pCur uintptr
 13333  	pCur = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(amatch_cursor{})))
 13334  	if pCur == uintptr(0) {
 13335  		return SQLITE_NOMEM
 13336  	}
 13337  	libc.X__builtin___memset_chk(tls, pCur, 0, uint64(unsafe.Sizeof(amatch_cursor{})), libc.X__builtin_object_size(tls, pCur, 0))
 13338  	(*amatch_cursor)(unsafe.Pointer(pCur)).FpVtab = p
 13339  	*(*uintptr)(unsafe.Pointer(ppCursor)) = pCur
 13340  	(*amatch_vtab)(unsafe.Pointer(p)).FnCursor++
 13341  	return SQLITE_OK
 13342  }
 13343  
 13344  func amatchClearCursor(tls *libc.TLS, pCur uintptr) {
 13345  	var pWord uintptr
 13346  	var pNextWord uintptr
 13347  	for pWord = (*amatch_cursor)(unsafe.Pointer(pCur)).FpAllWords; pWord != 0; pWord = pNextWord {
 13348  		pNextWord = (*amatch_word)(unsafe.Pointer(pWord)).FpNext
 13349  		sqlite3.Xsqlite3_free(tls, pWord)
 13350  	}
 13351  	(*amatch_cursor)(unsafe.Pointer(pCur)).FpAllWords = uintptr(0)
 13352  	sqlite3.Xsqlite3_free(tls, (*amatch_cursor)(unsafe.Pointer(pCur)).FzInput)
 13353  	(*amatch_cursor)(unsafe.Pointer(pCur)).FzInput = uintptr(0)
 13354  	sqlite3.Xsqlite3_free(tls, (*amatch_cursor)(unsafe.Pointer(pCur)).FzBuf)
 13355  	(*amatch_cursor)(unsafe.Pointer(pCur)).FzBuf = uintptr(0)
 13356  	(*amatch_cursor)(unsafe.Pointer(pCur)).FnBuf = 0
 13357  	(*amatch_cursor)(unsafe.Pointer(pCur)).FpCost = uintptr(0)
 13358  	(*amatch_cursor)(unsafe.Pointer(pCur)).FpWord = uintptr(0)
 13359  	(*amatch_cursor)(unsafe.Pointer(pCur)).FpCurrent = uintptr(0)
 13360  	(*amatch_cursor)(unsafe.Pointer(pCur)).FrLimit = 1000000
 13361  	(*amatch_cursor)(unsafe.Pointer(pCur)).FiLang = 0
 13362  	(*amatch_cursor)(unsafe.Pointer(pCur)).FnWord = 0
 13363  }
 13364  
 13365  func amatchClose(tls *libc.TLS, cur uintptr) int32 {
 13366  	var pCur uintptr = cur
 13367  	amatchClearCursor(tls, pCur)
 13368  	(*amatch_vtab)(unsafe.Pointer((*amatch_cursor)(unsafe.Pointer(pCur)).FpVtab)).FnCursor--
 13369  	sqlite3.Xsqlite3_free(tls, pCur)
 13370  	return SQLITE_OK
 13371  }
 13372  
 13373  func amatchEncodeInt(tls *libc.TLS, x int32, z uintptr) {
 13374  	*(*int8)(unsafe.Pointer(z)) = a[x>>18&0x3f]
 13375  	*(*int8)(unsafe.Pointer(z + 1)) = a[x>>12&0x3f]
 13376  	*(*int8)(unsafe.Pointer(z + 2)) = a[x>>6&0x3f]
 13377  	*(*int8)(unsafe.Pointer(z + 3)) = a[x&0x3f]
 13378  }
 13379  
 13380  var a = *(*[65]int8)(unsafe.Pointer(ts + 3666))
 13381  
 13382  func amatchWriteCost(tls *libc.TLS, pWord uintptr) {
 13383  	amatchEncodeInt(tls, (*amatch_word)(unsafe.Pointer(pWord)).FrCost, pWord+112)
 13384  	amatchEncodeInt(tls, (*amatch_word)(unsafe.Pointer(pWord)).FiSeq, pWord+112+uintptr(4))
 13385  	*(*int8)(unsafe.Pointer(pWord + 112 + 8)) = int8(0)
 13386  }
 13387  
 13388  func amatchStrcpy(tls *libc.TLS, dest uintptr, src uintptr) {
 13389  	for int32(libc.AssignPtrInt8(libc.PostIncUintptr(&dest, 1), *(*int8)(unsafe.Pointer(libc.PostIncUintptr(&src, 1))))) != 0 {
 13390  	}
 13391  }
 13392  
 13393  func amatchStrcat(tls *libc.TLS, dest uintptr, src uintptr) {
 13394  	for *(*int8)(unsafe.Pointer(dest)) != 0 {
 13395  		dest++
 13396  	}
 13397  	amatchStrcpy(tls, dest, src)
 13398  }
 13399  
 13400  func amatchAddWord(tls *libc.TLS, pCur uintptr, rCost amatch_cost, nMatch int32, zWordBase uintptr, zWordTail uintptr) {
 13401  	bp := tls.Alloc(4)
 13402  	defer tls.Free(4)
 13403  
 13404  	var pWord uintptr
 13405  	var pNode uintptr
 13406  	var pOther uintptr
 13407  	_ = pOther
 13408  	var nBase int32
 13409  	var nTail int32
 13410  
 13411  	if rCost > (*amatch_cursor)(unsafe.Pointer(pCur)).FrLimit {
 13412  		return
 13413  	}
 13414  	nBase = int32(libc.Xstrlen(tls, zWordBase))
 13415  	nTail = int32(libc.Xstrlen(tls, zWordTail))
 13416  	if nBase+nTail+3 > (*amatch_cursor)(unsafe.Pointer(pCur)).FnBuf {
 13417  		(*amatch_cursor)(unsafe.Pointer(pCur)).FnBuf = nBase + nTail + 100
 13418  		(*amatch_cursor)(unsafe.Pointer(pCur)).FzBuf = sqlite3.Xsqlite3_realloc(tls, (*amatch_cursor)(unsafe.Pointer(pCur)).FzBuf, (*amatch_cursor)(unsafe.Pointer(pCur)).FnBuf)
 13419  		if (*amatch_cursor)(unsafe.Pointer(pCur)).FzBuf == uintptr(0) {
 13420  			(*amatch_cursor)(unsafe.Pointer(pCur)).FnBuf = 0
 13421  			return
 13422  		}
 13423  	}
 13424  	amatchEncodeInt(tls, nMatch, bp)
 13425  	libc.X__builtin___memcpy_chk(tls, (*amatch_cursor)(unsafe.Pointer(pCur)).FzBuf, bp+uintptr(2), uint64(2), libc.X__builtin_object_size(tls, (*amatch_cursor)(unsafe.Pointer(pCur)).FzBuf, 0))
 13426  	libc.X__builtin___memcpy_chk(tls, (*amatch_cursor)(unsafe.Pointer(pCur)).FzBuf+uintptr(2), zWordBase, uint64(nBase), libc.X__builtin_object_size(tls, (*amatch_cursor)(unsafe.Pointer(pCur)).FzBuf+uintptr(2), 0))
 13427  	libc.X__builtin___memcpy_chk(tls, (*amatch_cursor)(unsafe.Pointer(pCur)).FzBuf+uintptr(2)+uintptr(nBase), zWordTail, uint64(nTail+1), libc.X__builtin_object_size(tls, (*amatch_cursor)(unsafe.Pointer(pCur)).FzBuf+uintptr(2)+uintptr(nBase), 0))
 13428  	pNode = amatchAvlSearch(tls, (*amatch_cursor)(unsafe.Pointer(pCur)).FpWord, (*amatch_cursor)(unsafe.Pointer(pCur)).FzBuf)
 13429  	if pNode != 0 {
 13430  		pWord = (*amatch_avl)(unsafe.Pointer(pNode)).FpWord
 13431  		if (*amatch_word)(unsafe.Pointer(pWord)).FrCost > rCost {
 13432  			amatchAvlRemove(tls, pCur+80, pWord+8)
 13433  			(*amatch_word)(unsafe.Pointer(pWord)).FrCost = rCost
 13434  			amatchWriteCost(tls, pWord)
 13435  			pOther = amatchAvlInsert(tls, pCur+80, pWord+8)
 13436  			_ = pOther
 13437  		}
 13438  		return
 13439  	}
 13440  	pWord = sqlite3.Xsqlite3_malloc64(tls, uint64(unsafe.Sizeof(amatch_word{}))+uint64(nBase)+uint64(nTail)-uint64(1))
 13441  	if pWord == uintptr(0) {
 13442  		return
 13443  	}
 13444  	libc.X__builtin___memset_chk(tls, pWord, 0, uint64(unsafe.Sizeof(amatch_word{})), libc.X__builtin_object_size(tls, pWord, 0))
 13445  	(*amatch_word)(unsafe.Pointer(pWord)).FrCost = rCost
 13446  	(*amatch_word)(unsafe.Pointer(pWord)).FiSeq = libc.PostIncInt32(&(*amatch_cursor)(unsafe.Pointer(pCur)).FnWord, 1)
 13447  	amatchWriteCost(tls, pWord)
 13448  	(*amatch_word)(unsafe.Pointer(pWord)).FnMatch = int16(nMatch)
 13449  	(*amatch_word)(unsafe.Pointer(pWord)).FpNext = (*amatch_cursor)(unsafe.Pointer(pCur)).FpAllWords
 13450  	(*amatch_cursor)(unsafe.Pointer(pCur)).FpAllWords = pWord
 13451  	(*amatch_word)(unsafe.Pointer(pWord)).FsCost.FzKey = pWord + 112
 13452  	(*amatch_word)(unsafe.Pointer(pWord)).FsCost.FpWord = pWord
 13453  	pOther = amatchAvlInsert(tls, pCur+80, pWord+8)
 13454  	_ = pOther
 13455  	(*amatch_word)(unsafe.Pointer(pWord)).FsWord.FzKey = pWord + 124
 13456  	(*amatch_word)(unsafe.Pointer(pWord)).FsWord.FpWord = pWord
 13457  	amatchStrcpy(tls, pWord+124, (*amatch_cursor)(unsafe.Pointer(pCur)).FzBuf)
 13458  	pOther = amatchAvlInsert(tls, pCur+88, pWord+56)
 13459  	_ = pOther
 13460  }
 13461  
 13462  func amatchNext(tls *libc.TLS, cur uintptr) int32 {
 13463  	bp := tls.Alloc(80)
 13464  	defer tls.Free(80)
 13465  
 13466  	var pCur uintptr = cur
 13467  	var pWord uintptr = uintptr(0)
 13468  	var pNode uintptr
 13469  	var isMatch int32 = 0
 13470  	var p uintptr = (*amatch_cursor)(unsafe.Pointer(pCur)).FpVtab
 13471  	var nWord int32
 13472  	var rc int32
 13473  	var i int32
 13474  	var zW uintptr
 13475  	var pRule uintptr
 13476  	var zBuf uintptr = uintptr(0)
 13477  	var nBuf int8 = int8(0)
 13478  
 13479  	var nNextIn int32
 13480  
 13481  	if (*amatch_vtab)(unsafe.Pointer(p)).FpVCheck == uintptr(0) {
 13482  		var zSql uintptr
 13483  		if (*amatch_vtab)(unsafe.Pointer(p)).FzVocabLang != 0 && *(*int8)(unsafe.Pointer((*amatch_vtab)(unsafe.Pointer(p)).FzVocabLang)) != 0 {
 13484  			zSql = sqlite3.Xsqlite3_mprintf(tls,
 13485  				ts+3731,
 13486  				libc.VaList(bp, ts+3753,
 13487  					(*amatch_vtab)(unsafe.Pointer(p)).FzVocabWord, (*amatch_vtab)(unsafe.Pointer(p)).FzVocabTab,
 13488  					(*amatch_vtab)(unsafe.Pointer(p)).FzVocabWord, (*amatch_vtab)(unsafe.Pointer(p)).FzVocabLang))
 13489  		} else {
 13490  			zSql = sqlite3.Xsqlite3_mprintf(tls,
 13491  				ts+3792,
 13492  				libc.VaList(bp+40, (*amatch_vtab)(unsafe.Pointer(p)).FzVocabWord, (*amatch_vtab)(unsafe.Pointer(p)).FzVocabTab,
 13493  					(*amatch_vtab)(unsafe.Pointer(p)).FzVocabWord))
 13494  		}
 13495  		rc = sqlite3.Xsqlite3_prepare_v2(tls, (*amatch_vtab)(unsafe.Pointer(p)).Fdb, zSql, -1, p+112, uintptr(0))
 13496  		sqlite3.Xsqlite3_free(tls, zSql)
 13497  		if rc != 0 {
 13498  			return rc
 13499  		}
 13500  	}
 13501  	sqlite3.Xsqlite3_bind_int(tls, (*amatch_vtab)(unsafe.Pointer(p)).FpVCheck, 2, (*amatch_cursor)(unsafe.Pointer(pCur)).FiLang)
 13502  
 13503  	for __ccgo := true; __ccgo; __ccgo = !(isMatch != 0) {
 13504  		pNode = amatchAvlFirst(tls, (*amatch_cursor)(unsafe.Pointer(pCur)).FpCost)
 13505  		if pNode == uintptr(0) {
 13506  			pWord = uintptr(0)
 13507  			break
 13508  		}
 13509  		pWord = (*amatch_avl)(unsafe.Pointer(pNode)).FpWord
 13510  		amatchAvlRemove(tls, pCur+80, pWord+8)
 13511  
 13512  		nWord = int32(libc.Xstrlen(tls, pWord+124+uintptr(2)))
 13513  		if nWord+20 > int32(nBuf) {
 13514  			nBuf = int8(nWord + 100)
 13515  			zBuf = sqlite3.Xsqlite3_realloc(tls, zBuf, int32(nBuf))
 13516  			if zBuf == uintptr(0) {
 13517  				return SQLITE_NOMEM
 13518  			}
 13519  		}
 13520  		amatchStrcpy(tls, zBuf, pWord+124+uintptr(2))
 13521  		*(*int8)(unsafe.Pointer(bp + 64)) = int8(0)
 13522  		*(*int8)(unsafe.Pointer(bp + 72)) = *(*int8)(unsafe.Pointer((*amatch_cursor)(unsafe.Pointer(pCur)).FzInput + uintptr((*amatch_word)(unsafe.Pointer(pWord)).FnMatch)))
 13523  		if *(*int8)(unsafe.Pointer(bp + 72)) != 0 {
 13524  			for i = 1; i <= 4 && int32(*(*int8)(unsafe.Pointer((*amatch_cursor)(unsafe.Pointer(pCur)).FzInput + uintptr(int32((*amatch_word)(unsafe.Pointer(pWord)).FnMatch)+i))))&0xc0 == 0x80; i++ {
 13525  				*(*int8)(unsafe.Pointer(bp + 72 + uintptr(i))) = *(*int8)(unsafe.Pointer((*amatch_cursor)(unsafe.Pointer(pCur)).FzInput + uintptr(int32((*amatch_word)(unsafe.Pointer(pWord)).FnMatch)+i)))
 13526  			}
 13527  			*(*int8)(unsafe.Pointer(bp + 72 + uintptr(i))) = int8(0)
 13528  			nNextIn = i
 13529  		} else {
 13530  			nNextIn = 0
 13531  		}
 13532  
 13533  		if *(*int8)(unsafe.Pointer(bp + 72)) != 0 && int32(*(*int8)(unsafe.Pointer(bp + 72))) != '*' {
 13534  			sqlite3.Xsqlite3_reset(tls, (*amatch_vtab)(unsafe.Pointer(p)).FpVCheck)
 13535  			amatchStrcat(tls, zBuf, bp+72)
 13536  			sqlite3.Xsqlite3_bind_text(tls, (*amatch_vtab)(unsafe.Pointer(p)).FpVCheck, 1, zBuf, nWord+nNextIn, uintptr(0))
 13537  			rc = sqlite3.Xsqlite3_step(tls, (*amatch_vtab)(unsafe.Pointer(p)).FpVCheck)
 13538  			if rc == SQLITE_ROW {
 13539  				zW = sqlite3.Xsqlite3_column_text(tls, (*amatch_vtab)(unsafe.Pointer(p)).FpVCheck, 0)
 13540  				if libc.Xstrncmp(tls, zBuf, zW, uint64(nWord+nNextIn)) == 0 {
 13541  					amatchAddWord(tls, pCur, (*amatch_word)(unsafe.Pointer(pWord)).FrCost, int32((*amatch_word)(unsafe.Pointer(pWord)).FnMatch)+nNextIn, zBuf, ts+584)
 13542  				}
 13543  			}
 13544  			*(*int8)(unsafe.Pointer(zBuf + uintptr(nWord))) = int8(0)
 13545  		}
 13546  
 13547  		for 1 != 0 {
 13548  			amatchStrcpy(tls, zBuf+uintptr(nWord), bp+64)
 13549  			sqlite3.Xsqlite3_reset(tls, (*amatch_vtab)(unsafe.Pointer(p)).FpVCheck)
 13550  			sqlite3.Xsqlite3_bind_text(tls, (*amatch_vtab)(unsafe.Pointer(p)).FpVCheck, 1, zBuf, -1, libc.UintptrFromInt32(-1))
 13551  			rc = sqlite3.Xsqlite3_step(tls, (*amatch_vtab)(unsafe.Pointer(p)).FpVCheck)
 13552  			if rc != SQLITE_ROW {
 13553  				break
 13554  			}
 13555  			zW = sqlite3.Xsqlite3_column_text(tls, (*amatch_vtab)(unsafe.Pointer(p)).FpVCheck, 0)
 13556  			amatchStrcpy(tls, zBuf+uintptr(nWord), bp+64)
 13557  			if libc.Xstrncmp(tls, zW, zBuf, uint64(nWord)) != 0 {
 13558  				break
 13559  			}
 13560  			if int32(*(*int8)(unsafe.Pointer(bp + 72))) == '*' && int32(*(*int8)(unsafe.Pointer(bp + 72 + 1))) == 0 ||
 13561  				int32(*(*int8)(unsafe.Pointer(bp + 72))) == 0 && int32(*(*int8)(unsafe.Pointer(zW + uintptr(nWord)))) == 0 {
 13562  				isMatch = 1
 13563  				*(*int8)(unsafe.Pointer(bp + 72)) = int8(0)
 13564  				nNextIn = 0
 13565  				break
 13566  			}
 13567  			*(*int8)(unsafe.Pointer(bp + 64)) = *(*int8)(unsafe.Pointer(zW + uintptr(nWord)))
 13568  			for i = 1; i <= 4 && int32(*(*int8)(unsafe.Pointer(zW + uintptr(nWord+i))))&0xc0 == 0x80; i++ {
 13569  				*(*int8)(unsafe.Pointer(bp + 64 + uintptr(i))) = *(*int8)(unsafe.Pointer(zW + uintptr(nWord+i)))
 13570  			}
 13571  			*(*int8)(unsafe.Pointer(bp + 64 + uintptr(i))) = int8(0)
 13572  			*(*int8)(unsafe.Pointer(zBuf + uintptr(nWord))) = int8(0)
 13573  			if (*amatch_vtab)(unsafe.Pointer(p)).FrIns > 0 {
 13574  				amatchAddWord(tls, pCur, (*amatch_word)(unsafe.Pointer(pWord)).FrCost+(*amatch_vtab)(unsafe.Pointer(p)).FrIns, int32((*amatch_word)(unsafe.Pointer(pWord)).FnMatch),
 13575  					zBuf, bp+64)
 13576  			}
 13577  			if (*amatch_vtab)(unsafe.Pointer(p)).FrSub > 0 {
 13578  				amatchAddWord(tls, pCur, (*amatch_word)(unsafe.Pointer(pWord)).FrCost+(*amatch_vtab)(unsafe.Pointer(p)).FrSub, int32((*amatch_word)(unsafe.Pointer(pWord)).FnMatch)+nNextIn,
 13579  					zBuf, bp+64)
 13580  			}
 13581  			if (*amatch_vtab)(unsafe.Pointer(p)).FrIns < 0 && (*amatch_vtab)(unsafe.Pointer(p)).FrSub < 0 {
 13582  				break
 13583  			}
 13584  			*(*int8)(unsafe.Pointer(bp + 64 + uintptr(i-1)))++
 13585  		}
 13586  		sqlite3.Xsqlite3_reset(tls, (*amatch_vtab)(unsafe.Pointer(p)).FpVCheck)
 13587  
 13588  		if (*amatch_vtab)(unsafe.Pointer(p)).FrDel > 0 {
 13589  			*(*int8)(unsafe.Pointer(zBuf + uintptr(nWord))) = int8(0)
 13590  			amatchAddWord(tls, pCur, (*amatch_word)(unsafe.Pointer(pWord)).FrCost+(*amatch_vtab)(unsafe.Pointer(p)).FrDel, int32((*amatch_word)(unsafe.Pointer(pWord)).FnMatch)+nNextIn,
 13591  				zBuf, ts+584)
 13592  		}
 13593  
 13594  		for pRule = (*amatch_vtab)(unsafe.Pointer(p)).FpRule; pRule != 0; pRule = (*amatch_rule)(unsafe.Pointer(pRule)).FpNext {
 13595  			if (*amatch_rule)(unsafe.Pointer(pRule)).FiLang != (*amatch_cursor)(unsafe.Pointer(pCur)).FiLang {
 13596  				continue
 13597  			}
 13598  			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 {
 13599  				amatchAddWord(tls, pCur, (*amatch_word)(unsafe.Pointer(pWord)).FrCost+(*amatch_rule)(unsafe.Pointer(pRule)).FrCost,
 13600  					int32((*amatch_word)(unsafe.Pointer(pWord)).FnMatch)+int32((*amatch_rule)(unsafe.Pointer(pRule)).FnFrom), pWord+124+uintptr(2), pRule+26)
 13601  			}
 13602  		}
 13603  	}
 13604  	(*amatch_cursor)(unsafe.Pointer(pCur)).FpCurrent = pWord
 13605  	sqlite3.Xsqlite3_free(tls, zBuf)
 13606  	return SQLITE_OK
 13607  }
 13608  
 13609  func amatchFilter(tls *libc.TLS, pVtabCursor uintptr, idxNum int32, idxStr uintptr, argc int32, argv uintptr) int32 {
 13610  	bp := tls.Alloc(8)
 13611  	defer tls.Free(8)
 13612  
 13613  	var pCur uintptr = pVtabCursor
 13614  	var zWord uintptr = ts + 3840
 13615  	var idx int32
 13616  
 13617  	amatchClearCursor(tls, pCur)
 13618  	idx = 0
 13619  	if idxNum&1 != 0 {
 13620  		zWord = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 13621  		idx++
 13622  	}
 13623  	if idxNum&2 != 0 {
 13624  		(*amatch_cursor)(unsafe.Pointer(pCur)).FrLimit = sqlite3.Xsqlite3_value_int(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(idx)*8)))
 13625  		idx++
 13626  	}
 13627  	if idxNum&4 != 0 {
 13628  		(*amatch_cursor)(unsafe.Pointer(pCur)).FiLang = sqlite3.Xsqlite3_value_int(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(idx)*8)))
 13629  		idx++
 13630  	}
 13631  	(*amatch_cursor)(unsafe.Pointer(pCur)).FzInput = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp, zWord))
 13632  	if (*amatch_cursor)(unsafe.Pointer(pCur)).FzInput == uintptr(0) {
 13633  		return SQLITE_NOMEM
 13634  	}
 13635  	amatchAddWord(tls, pCur, 0, 0, ts+584, ts+584)
 13636  	amatchNext(tls, pVtabCursor)
 13637  
 13638  	return SQLITE_OK
 13639  }
 13640  
 13641  func amatchColumn(tls *libc.TLS, cur uintptr, ctx uintptr, i int32) int32 {
 13642  	var pCur uintptr = cur
 13643  	switch i {
 13644  	case AMATCH_COL_WORD:
 13645  		{
 13646  			sqlite3.Xsqlite3_result_text(tls, ctx, (*amatch_cursor)(unsafe.Pointer(pCur)).FpCurrent+124+uintptr(2), -1, uintptr(0))
 13647  			break
 13648  
 13649  		}
 13650  	case AMATCH_COL_DISTANCE:
 13651  		{
 13652  			sqlite3.Xsqlite3_result_int(tls, ctx, (*amatch_word)(unsafe.Pointer((*amatch_cursor)(unsafe.Pointer(pCur)).FpCurrent)).FrCost)
 13653  			break
 13654  
 13655  		}
 13656  	case AMATCH_COL_LANGUAGE:
 13657  		{
 13658  			sqlite3.Xsqlite3_result_int(tls, ctx, (*amatch_cursor)(unsafe.Pointer(pCur)).FiLang)
 13659  			break
 13660  
 13661  		}
 13662  	case AMATCH_COL_NWORD:
 13663  		{
 13664  			sqlite3.Xsqlite3_result_int(tls, ctx, (*amatch_cursor)(unsafe.Pointer(pCur)).FnWord)
 13665  			break
 13666  
 13667  		}
 13668  	default:
 13669  		{
 13670  			sqlite3.Xsqlite3_result_null(tls, ctx)
 13671  			break
 13672  
 13673  		}
 13674  	}
 13675  	return SQLITE_OK
 13676  }
 13677  
 13678  func amatchRowid(tls *libc.TLS, cur uintptr, pRowid uintptr) int32 {
 13679  	var pCur uintptr = cur
 13680  	*(*sqlite_int64)(unsafe.Pointer(pRowid)) = (*amatch_cursor)(unsafe.Pointer(pCur)).FiRowid
 13681  	return SQLITE_OK
 13682  }
 13683  
 13684  func amatchEof(tls *libc.TLS, cur uintptr) int32 {
 13685  	var pCur uintptr = cur
 13686  	return libc.Bool32((*amatch_cursor)(unsafe.Pointer(pCur)).FpCurrent == uintptr(0))
 13687  }
 13688  
 13689  func amatchBestIndex(tls *libc.TLS, tab uintptr, pIdxInfo uintptr) int32 {
 13690  	var iPlan int32 = 0
 13691  	var iDistTerm int32 = -1
 13692  	var iLangTerm int32 = -1
 13693  	var i int32
 13694  	var pConstraint uintptr
 13695  
 13696  	_ = tab
 13697  	pConstraint = (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint
 13698  	i = 0
 13699  __1:
 13700  	if !(i < (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnConstraint) {
 13701  		goto __3
 13702  	}
 13703  	{
 13704  		if int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fusable) == 0 {
 13705  			goto __2
 13706  		}
 13707  		if iPlan&1 == 0 &&
 13708  			(*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).FiColumn == 0 &&
 13709  			int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_MATCH {
 13710  			iPlan = iPlan | 1
 13711  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(i)*8)).FargvIndex = 1
 13712  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(i)*8)).Fomit = uint8(1)
 13713  		}
 13714  		if iPlan&2 == 0 &&
 13715  			(*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).FiColumn == 1 &&
 13716  			(int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_LT ||
 13717  				int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_LE) {
 13718  			iPlan = iPlan | 2
 13719  			iDistTerm = i
 13720  		}
 13721  		if iPlan&4 == 0 &&
 13722  			(*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).FiColumn == 2 &&
 13723  			int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_EQ {
 13724  			iPlan = iPlan | 4
 13725  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(i)*8)).Fomit = uint8(1)
 13726  			iLangTerm = i
 13727  		}
 13728  
 13729  	}
 13730  	goto __2
 13731  __2:
 13732  	i++
 13733  	pConstraint += 12
 13734  	goto __1
 13735  	goto __3
 13736  __3:
 13737  	;
 13738  	if iPlan&2 != 0 {
 13739  		(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(iDistTerm)*8)).FargvIndex = 1 + libc.Bool32(iPlan&1 != 0)
 13740  	}
 13741  	if iPlan&4 != 0 {
 13742  		var idx int32 = 1
 13743  		if iPlan&1 != 0 {
 13744  			idx++
 13745  		}
 13746  		if iPlan&2 != 0 {
 13747  			idx++
 13748  		}
 13749  		(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(iLangTerm)*8)).FargvIndex = idx
 13750  	}
 13751  	(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxNum = iPlan
 13752  	if (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnOrderBy == 1 &&
 13753  		(*sqlite3_index_orderby)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaOrderBy)).FiColumn == 1 &&
 13754  		int32((*sqlite3_index_orderby)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaOrderBy)).Fdesc) == 0 {
 13755  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).ForderByConsumed = 1
 13756  	}
 13757  	(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = float64(10000)
 13758  
 13759  	return SQLITE_OK
 13760  }
 13761  
 13762  func amatchUpdate(tls *libc.TLS, pVTab uintptr, argc int32, argv uintptr, pRowid uintptr) int32 {
 13763  	bp := tls.Alloc(24)
 13764  	defer tls.Free(24)
 13765  
 13766  	var p uintptr = pVTab
 13767  	var zCmd uintptr
 13768  	_ = pRowid
 13769  	if argc == 1 {
 13770  		(*sqlite3_vtab)(unsafe.Pointer(pVTab)).FzErrMsg = sqlite3.Xsqlite3_mprintf(tls, ts+3842,
 13771  			libc.VaList(bp, (*amatch_vtab)(unsafe.Pointer(p)).FzSelf))
 13772  		return SQLITE_ERROR
 13773  	}
 13774  	if sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(argv))) != SQLITE_NULL {
 13775  		(*sqlite3_vtab)(unsafe.Pointer(pVTab)).FzErrMsg = sqlite3.Xsqlite3_mprintf(tls, ts+3872,
 13776  			libc.VaList(bp+8, (*amatch_vtab)(unsafe.Pointer(p)).FzSelf))
 13777  		return SQLITE_ERROR
 13778  	}
 13779  	if sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(argv + 2*8))) != SQLITE_NULL ||
 13780  		sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(argv + 3*8))) != SQLITE_NULL ||
 13781  		sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(argv + 4*8))) != SQLITE_NULL {
 13782  		(*sqlite3_vtab)(unsafe.Pointer(pVTab)).FzErrMsg = sqlite3.Xsqlite3_mprintf(tls,
 13783  			ts+3900, libc.VaList(bp+16, (*amatch_vtab)(unsafe.Pointer(p)).FzSelf))
 13784  		return SQLITE_ERROR
 13785  	}
 13786  	zCmd = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + 5*8)))
 13787  	if zCmd == uintptr(0) {
 13788  		return SQLITE_OK
 13789  	}
 13790  
 13791  	return SQLITE_OK
 13792  }
 13793  
 13794  var amatchModule = sqlite3_module{
 13795  	FxCreate:     0,
 13796  	FxConnect:    0,
 13797  	FxBestIndex:  0,
 13798  	FxDisconnect: 0,
 13799  	FxDestroy:    0,
 13800  	FxOpen:       0,
 13801  	FxClose:      0,
 13802  	FxFilter:     0,
 13803  	FxNext:       0,
 13804  	FxEof:        0,
 13805  	FxColumn:     0,
 13806  	FxRowid:      0,
 13807  	FxUpdate:     0,
 13808  }
 13809  
 13810  func sqlite3_amatch_init(tls *libc.TLS, db uintptr, pzErrMsg uintptr, pApi uintptr) int32 {
 13811  	var rc int32 = SQLITE_OK
 13812  	_ = pApi
 13813  
 13814  	_ = pzErrMsg
 13815  	rc = sqlite3.Xsqlite3_create_module(tls, db, ts+3949, uintptr(unsafe.Pointer(&amatchModule)), uintptr(0))
 13816  	return rc
 13817  }
 13818  
 13819  var azType = [4]uintptr{ts + 3967, ts + 3973, ts + 2562, ts + 3979}
 13820  
 13821  type carray_bind1 = struct {
 13822  	FaData  uintptr
 13823  	FnData  int32
 13824  	FmFlags int32
 13825  	FxDel   uintptr
 13826  }
 13827  
 13828  type carray_bind = carray_bind1
 13829  
 13830  type carray_cursor1 = struct {
 13831  	Fbase        sqlite3_vtab_cursor
 13832  	FiRowid      sqlite3_int64
 13833  	FpPtr        uintptr
 13834  	FiCnt        sqlite3_int64
 13835  	FeType       uint8
 13836  	F__ccgo_pad1 [7]byte
 13837  }
 13838  
 13839  type carray_cursor = carray_cursor1
 13840  
 13841  func carrayConnect(tls *libc.TLS, db uintptr, pAux uintptr, argc int32, argv uintptr, ppVtab uintptr, pzErr uintptr) int32 {
 13842  	var pNew uintptr
 13843  	var rc int32
 13844  
 13845  	rc = sqlite3.Xsqlite3_declare_vtab(tls, db,
 13846  		ts+3985)
 13847  	if rc == SQLITE_OK {
 13848  		pNew = libc.AssignPtrUintptr(ppVtab, sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(sqlite3_vtab{}))))
 13849  		if pNew == uintptr(0) {
 13850  			return SQLITE_NOMEM
 13851  		}
 13852  		libc.X__builtin___memset_chk(tls, pNew, 0, uint64(unsafe.Sizeof(sqlite3_vtab{})), libc.X__builtin_object_size(tls, pNew, 0))
 13853  	}
 13854  	return rc
 13855  }
 13856  
 13857  func carrayDisconnect(tls *libc.TLS, pVtab uintptr) int32 {
 13858  	sqlite3.Xsqlite3_free(tls, pVtab)
 13859  	return SQLITE_OK
 13860  }
 13861  
 13862  func carrayOpen(tls *libc.TLS, p uintptr, ppCursor uintptr) int32 {
 13863  	var pCur uintptr
 13864  	pCur = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(carray_cursor{})))
 13865  	if pCur == uintptr(0) {
 13866  		return SQLITE_NOMEM
 13867  	}
 13868  	libc.X__builtin___memset_chk(tls, pCur, 0, uint64(unsafe.Sizeof(carray_cursor{})), libc.X__builtin_object_size(tls, pCur, 0))
 13869  	*(*uintptr)(unsafe.Pointer(ppCursor)) = pCur
 13870  	return SQLITE_OK
 13871  }
 13872  
 13873  func carrayClose(tls *libc.TLS, cur uintptr) int32 {
 13874  	sqlite3.Xsqlite3_free(tls, cur)
 13875  	return SQLITE_OK
 13876  }
 13877  
 13878  func carrayNext(tls *libc.TLS, cur uintptr) int32 {
 13879  	var pCur uintptr = cur
 13880  	(*carray_cursor)(unsafe.Pointer(pCur)).FiRowid++
 13881  	return SQLITE_OK
 13882  }
 13883  
 13884  func carrayColumn(tls *libc.TLS, cur uintptr, ctx uintptr, i int32) int32 {
 13885  	var pCur uintptr = cur
 13886  	var x sqlite3_int64 = int64(0)
 13887  	switch i {
 13888  	case CARRAY_COLUMN_POINTER:
 13889  		return SQLITE_OK
 13890  	case CARRAY_COLUMN_COUNT:
 13891  		x = (*carray_cursor)(unsafe.Pointer(pCur)).FiCnt
 13892  		break
 13893  	case CARRAY_COLUMN_CTYPE:
 13894  		{
 13895  			sqlite3.Xsqlite3_result_text(tls, ctx, azType[(*carray_cursor)(unsafe.Pointer(pCur)).FeType], -1, uintptr(0))
 13896  			return SQLITE_OK
 13897  
 13898  		}
 13899  	default:
 13900  		{
 13901  			switch int32((*carray_cursor)(unsafe.Pointer(pCur)).FeType) {
 13902  			case CARRAY_INT32:
 13903  				{
 13904  					var p uintptr = (*carray_cursor)(unsafe.Pointer(pCur)).FpPtr
 13905  					sqlite3.Xsqlite3_result_int(tls, ctx, *(*int32)(unsafe.Pointer(p + uintptr((*carray_cursor)(unsafe.Pointer(pCur)).FiRowid-int64(1))*4)))
 13906  					return SQLITE_OK
 13907  
 13908  				}
 13909  			case CARRAY_INT64:
 13910  				{
 13911  					var p uintptr = (*carray_cursor)(unsafe.Pointer(pCur)).FpPtr
 13912  					sqlite3.Xsqlite3_result_int64(tls, ctx, *(*sqlite3_int64)(unsafe.Pointer(p + uintptr((*carray_cursor)(unsafe.Pointer(pCur)).FiRowid-int64(1))*8)))
 13913  					return SQLITE_OK
 13914  
 13915  				}
 13916  			case CARRAY_DOUBLE:
 13917  				{
 13918  					var p uintptr = (*carray_cursor)(unsafe.Pointer(pCur)).FpPtr
 13919  					sqlite3.Xsqlite3_result_double(tls, ctx, *(*float64)(unsafe.Pointer(p + uintptr((*carray_cursor)(unsafe.Pointer(pCur)).FiRowid-int64(1))*8)))
 13920  					return SQLITE_OK
 13921  
 13922  				}
 13923  			case CARRAY_TEXT:
 13924  				{
 13925  					var p uintptr = (*carray_cursor)(unsafe.Pointer(pCur)).FpPtr
 13926  					sqlite3.Xsqlite3_result_text(tls, ctx, *(*uintptr)(unsafe.Pointer(p + uintptr((*carray_cursor)(unsafe.Pointer(pCur)).FiRowid-int64(1))*8)), -1, libc.UintptrFromInt32(-1))
 13927  					return SQLITE_OK
 13928  
 13929  				}
 13930  			}
 13931  
 13932  		}
 13933  	}
 13934  	sqlite3.Xsqlite3_result_int64(tls, ctx, x)
 13935  	return SQLITE_OK
 13936  }
 13937  
 13938  func carrayRowid(tls *libc.TLS, cur uintptr, pRowid uintptr) int32 {
 13939  	var pCur uintptr = cur
 13940  	*(*sqlite_int64)(unsafe.Pointer(pRowid)) = (*carray_cursor)(unsafe.Pointer(pCur)).FiRowid
 13941  	return SQLITE_OK
 13942  }
 13943  
 13944  func carrayEof(tls *libc.TLS, cur uintptr) int32 {
 13945  	var pCur uintptr = cur
 13946  	return libc.Bool32((*carray_cursor)(unsafe.Pointer(pCur)).FiRowid > (*carray_cursor)(unsafe.Pointer(pCur)).FiCnt)
 13947  }
 13948  
 13949  func carrayFilter(tls *libc.TLS, pVtabCursor uintptr, idxNum int32, idxStr uintptr, argc int32, argv uintptr) int32 {
 13950  	bp := tls.Alloc(8)
 13951  	defer tls.Free(8)
 13952  
 13953  	var pCur uintptr = pVtabCursor
 13954  	(*carray_cursor)(unsafe.Pointer(pCur)).FpPtr = uintptr(0)
 13955  	(*carray_cursor)(unsafe.Pointer(pCur)).FiCnt = int64(0)
 13956  	switch idxNum {
 13957  	case 1:
 13958  		{
 13959  			var pBind uintptr = sqlite3.Xsqlite3_value_pointer(tls, *(*uintptr)(unsafe.Pointer(argv)), ts+4048)
 13960  			if pBind == uintptr(0) {
 13961  				break
 13962  			}
 13963  			(*carray_cursor)(unsafe.Pointer(pCur)).FpPtr = (*carray_bind)(unsafe.Pointer(pBind)).FaData
 13964  			(*carray_cursor)(unsafe.Pointer(pCur)).FiCnt = sqlite3_int64((*carray_bind)(unsafe.Pointer(pBind)).FnData)
 13965  			(*carray_cursor)(unsafe.Pointer(pCur)).FeType = uint8((*carray_bind)(unsafe.Pointer(pBind)).FmFlags & 0x03)
 13966  			break
 13967  
 13968  		}
 13969  	case 2:
 13970  		fallthrough
 13971  	case 3:
 13972  		{
 13973  			(*carray_cursor)(unsafe.Pointer(pCur)).FpPtr = sqlite3.Xsqlite3_value_pointer(tls, *(*uintptr)(unsafe.Pointer(argv)), ts+4060)
 13974  			(*carray_cursor)(unsafe.Pointer(pCur)).FiCnt = func() int64 {
 13975  				if (*carray_cursor)(unsafe.Pointer(pCur)).FpPtr != 0 {
 13976  					return sqlite3.Xsqlite3_value_int64(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 13977  				}
 13978  				return int64(0)
 13979  			}()
 13980  			if idxNum < 3 {
 13981  				(*carray_cursor)(unsafe.Pointer(pCur)).FeType = uint8(CARRAY_INT32)
 13982  			} else {
 13983  				var i uint8
 13984  				var zType uintptr = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + 2*8)))
 13985  				for i = uint8(0); uint64(i) < uint64(unsafe.Sizeof(azType))/uint64(unsafe.Sizeof(uintptr(0))); i++ {
 13986  					if sqlite3.Xsqlite3_stricmp(tls, zType, azType[i]) == 0 {
 13987  						break
 13988  					}
 13989  				}
 13990  				if uint64(i) >= uint64(unsafe.Sizeof(azType))/uint64(unsafe.Sizeof(uintptr(0))) {
 13991  					(*sqlite3_vtab)(unsafe.Pointer((*sqlite3_vtab_cursor)(unsafe.Pointer(pVtabCursor)).FpVtab)).FzErrMsg = sqlite3.Xsqlite3_mprintf(tls,
 13992  						ts+4067, libc.VaList(bp, zType))
 13993  					return SQLITE_ERROR
 13994  				} else {
 13995  					(*carray_cursor)(unsafe.Pointer(pCur)).FeType = i
 13996  				}
 13997  			}
 13998  			break
 13999  
 14000  		}
 14001  	}
 14002  	(*carray_cursor)(unsafe.Pointer(pCur)).FiRowid = int64(1)
 14003  	return SQLITE_OK
 14004  }
 14005  
 14006  func carrayBestIndex(tls *libc.TLS, tab uintptr, pIdxInfo uintptr) int32 {
 14007  	var i int32
 14008  	var ptrIdx int32 = -1
 14009  	var cntIdx int32 = -1
 14010  	var ctypeIdx int32 = -1
 14011  
 14012  	var pConstraint uintptr
 14013  	pConstraint = (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint
 14014  	i = 0
 14015  __1:
 14016  	if !(i < (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnConstraint) {
 14017  		goto __3
 14018  	}
 14019  	{
 14020  		if int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fusable) == 0 {
 14021  			goto __2
 14022  		}
 14023  		if int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) != SQLITE_INDEX_CONSTRAINT_EQ {
 14024  			goto __2
 14025  		}
 14026  		switch (*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).FiColumn {
 14027  		case CARRAY_COLUMN_POINTER:
 14028  			ptrIdx = i
 14029  			break
 14030  		case CARRAY_COLUMN_COUNT:
 14031  			cntIdx = i
 14032  			break
 14033  		case CARRAY_COLUMN_CTYPE:
 14034  			ctypeIdx = i
 14035  			break
 14036  		}
 14037  
 14038  	}
 14039  	goto __2
 14040  __2:
 14041  	i++
 14042  	pConstraint += 12
 14043  	goto __1
 14044  	goto __3
 14045  __3:
 14046  	;
 14047  	if ptrIdx >= 0 {
 14048  		(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(ptrIdx)*8)).FargvIndex = 1
 14049  		(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(ptrIdx)*8)).Fomit = uint8(1)
 14050  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = float64(1)
 14051  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedRows = int64(100)
 14052  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxNum = 1
 14053  		if cntIdx >= 0 {
 14054  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(cntIdx)*8)).FargvIndex = 2
 14055  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(cntIdx)*8)).Fomit = uint8(1)
 14056  			(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxNum = 2
 14057  			if ctypeIdx >= 0 {
 14058  				(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(ctypeIdx)*8)).FargvIndex = 3
 14059  				(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(ctypeIdx)*8)).Fomit = uint8(1)
 14060  				(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxNum = 3
 14061  			}
 14062  		}
 14063  	} else {
 14064  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = float64(2147483647)
 14065  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedRows = int64(2147483647)
 14066  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxNum = 0
 14067  	}
 14068  	return SQLITE_OK
 14069  }
 14070  
 14071  var carrayModule = sqlite3_module{
 14072  	FxConnect:    0,
 14073  	FxBestIndex:  0,
 14074  	FxDisconnect: 0,
 14075  	FxOpen:       0,
 14076  	FxClose:      0,
 14077  	FxFilter:     0,
 14078  	FxNext:       0,
 14079  	FxEof:        0,
 14080  	FxColumn:     0,
 14081  	FxRowid:      0,
 14082  }
 14083  
 14084  func carrayBindDel(tls *libc.TLS, pPtr uintptr) {
 14085  	var p uintptr = pPtr
 14086  	if (*carray_bind)(unsafe.Pointer(p)).FxDel != uintptr(0) {
 14087  		(*struct{ f func(*libc.TLS, uintptr) })(unsafe.Pointer(&struct{ uintptr }{(*carray_bind)(unsafe.Pointer(p)).FxDel})).f(tls, (*carray_bind)(unsafe.Pointer(p)).FaData)
 14088  	}
 14089  	sqlite3.Xsqlite3_free(tls, p)
 14090  }
 14091  
 14092  func sqlite3_carray_bind(tls *libc.TLS, pStmt uintptr, idx int32, aData uintptr, nData int32, mFlags int32, xDestroy uintptr) int32 {
 14093  	var pNew uintptr
 14094  	var i int32
 14095  	pNew = sqlite3.Xsqlite3_malloc64(tls, uint64(unsafe.Sizeof(carray_bind{})))
 14096  	if pNew == uintptr(0) {
 14097  		if xDestroy != uintptr(0) && xDestroy != libc.UintptrFromInt32(-1) {
 14098  			(*struct{ f func(*libc.TLS, uintptr) })(unsafe.Pointer(&struct{ uintptr }{xDestroy})).f(tls, aData)
 14099  		}
 14100  		return SQLITE_NOMEM
 14101  	}
 14102  	(*carray_bind)(unsafe.Pointer(pNew)).FnData = nData
 14103  	(*carray_bind)(unsafe.Pointer(pNew)).FmFlags = mFlags
 14104  	if xDestroy == libc.UintptrFromInt32(-1) {
 14105  		var sz sqlite3_int64 = sqlite3_int64(nData)
 14106  		switch mFlags & 0x03 {
 14107  		case CARRAY_INT32:
 14108  			sz = sz * int64(4)
 14109  			break
 14110  			fallthrough
 14111  		case CARRAY_INT64:
 14112  			sz = sz * int64(8)
 14113  			break
 14114  			fallthrough
 14115  		case CARRAY_DOUBLE:
 14116  			sz = sz * int64(8)
 14117  			break
 14118  			fallthrough
 14119  		case CARRAY_TEXT:
 14120  			sz = int64(uint64(sz) * uint64(unsafe.Sizeof(uintptr(0))))
 14121  			break
 14122  		}
 14123  		if mFlags&0x03 == CARRAY_TEXT {
 14124  			for i = 0; i < nData; i++ {
 14125  				var z uintptr = *(*uintptr)(unsafe.Pointer(aData + uintptr(i)*8))
 14126  				if z != 0 {
 14127  					sz = sqlite3_int64(uint64(sz) + (libc.Xstrlen(tls, z) + uint64(1)))
 14128  				}
 14129  			}
 14130  		}
 14131  		(*carray_bind)(unsafe.Pointer(pNew)).FaData = sqlite3.Xsqlite3_malloc64(tls, uint64(sz))
 14132  		if (*carray_bind)(unsafe.Pointer(pNew)).FaData == uintptr(0) {
 14133  			sqlite3.Xsqlite3_free(tls, pNew)
 14134  			return SQLITE_NOMEM
 14135  		}
 14136  		if mFlags&0x03 == CARRAY_TEXT {
 14137  			var az uintptr = (*carray_bind)(unsafe.Pointer(pNew)).FaData
 14138  			var z uintptr = az + uintptr(nData)*8
 14139  			for i = 0; i < nData; i++ {
 14140  				var zData uintptr = *(*uintptr)(unsafe.Pointer(aData + uintptr(i)*8))
 14141  				var n sqlite3_int64
 14142  				if zData == uintptr(0) {
 14143  					*(*uintptr)(unsafe.Pointer(az + uintptr(i)*8)) = uintptr(0)
 14144  					continue
 14145  				}
 14146  				*(*uintptr)(unsafe.Pointer(az + uintptr(i)*8)) = z
 14147  				n = sqlite3_int64(libc.Xstrlen(tls, zData))
 14148  				libc.X__builtin___memcpy_chk(tls, z, zData, uint64(n+int64(1)), libc.X__builtin_object_size(tls, z, 0))
 14149  				z += uintptr(n + int64(1))
 14150  			}
 14151  		} else {
 14152  			libc.X__builtin___memcpy_chk(tls, (*carray_bind)(unsafe.Pointer(pNew)).FaData, aData, uint64(sz), libc.X__builtin_object_size(tls, (*carray_bind)(unsafe.Pointer(pNew)).FaData, 0))
 14153  		}
 14154  		(*carray_bind)(unsafe.Pointer(pNew)).FxDel = *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{sqlite3.Xsqlite3_free}))
 14155  	} else {
 14156  		(*carray_bind)(unsafe.Pointer(pNew)).FaData = aData
 14157  		(*carray_bind)(unsafe.Pointer(pNew)).FxDel = xDestroy
 14158  	}
 14159  	return sqlite3.Xsqlite3_bind_pointer(tls, pStmt, idx, pNew, ts+4048, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{carrayBindDel})))
 14160  }
 14161  
 14162  func inttoptrFunc(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 14163  	bp := tls.Alloc(20)
 14164  	defer tls.Free(20)
 14165  
 14166  	*(*sqlite3_int64)(unsafe.Pointer(bp + 8)) = sqlite3.Xsqlite3_value_int64(tls, *(*uintptr)(unsafe.Pointer(argv)))
 14167  	if uint64(unsafe.Sizeof(sqlite3_int64(0))) == uint64(unsafe.Sizeof(uintptr(0))) {
 14168  		libc.X__builtin___memcpy_chk(tls, bp, bp+8, uint64(unsafe.Sizeof(uintptr(0))), libc.X__builtin_object_size(tls, bp, 0))
 14169  	} else {
 14170  		*(*int32)(unsafe.Pointer(bp + 16)) = int32(*(*sqlite3_int64)(unsafe.Pointer(bp + 8)) & int64(0xffffffff))
 14171  		libc.X__builtin___memcpy_chk(tls, bp, bp+16, uint64(unsafe.Sizeof(uintptr(0))), libc.X__builtin_object_size(tls, bp, 0))
 14172  	}
 14173  	sqlite3.Xsqlite3_result_pointer(tls, context, *(*uintptr)(unsafe.Pointer(bp)), ts+4060, uintptr(0))
 14174  }
 14175  
 14176  func sqlite3_carray_init(tls *libc.TLS, db uintptr, pzErrMsg uintptr, pApi uintptr) int32 {
 14177  	var rc int32 = SQLITE_OK
 14178  	_ = pApi
 14179  
 14180  	rc = sqlite3.Xsqlite3_create_module(tls, db, ts+4060, uintptr(unsafe.Pointer(&carrayModule)), uintptr(0))
 14181  	if rc == SQLITE_OK {
 14182  		rc = sqlite3.Xsqlite3_create_function(tls, db, ts+4088, 1, SQLITE_UTF8, uintptr(0),
 14183  			*(*uintptr)(unsafe.Pointer(&struct {
 14184  				f func(*libc.TLS, uintptr, int32, uintptr)
 14185  			}{inttoptrFunc})), uintptr(0), uintptr(0))
 14186  	}
 14187  	return rc
 14188  }
 14189  
 14190  type CksmVfs = sqlite3_vfs1
 14191  type CksmFile1 = struct {
 14192  	Fbase        sqlite3_file
 14193  	FzFName      uintptr
 14194  	FcomputeCksm int8
 14195  	FverifyCksm  int8
 14196  	FisWal       int8
 14197  	FinCkpt      int8
 14198  	F__ccgo_pad1 [4]byte
 14199  	FpPartner    uintptr
 14200  }
 14201  
 14202  type CksmFile = CksmFile1
 14203  
 14204  type u8 = uint8
 14205  
 14206  var cksm_vfs = sqlite3_vfs{
 14207  	FiVersion:          3,
 14208  	FmxPathname:        1024,
 14209  	FzName:             ts + 4097,
 14210  	FxOpen:             0,
 14211  	FxDelete:           0,
 14212  	FxAccess:           0,
 14213  	FxFullPathname:     0,
 14214  	FxDlOpen:           0,
 14215  	FxDlError:          0,
 14216  	FxDlSym:            0,
 14217  	FxDlClose:          0,
 14218  	FxRandomness:       0,
 14219  	FxSleep:            0,
 14220  	FxCurrentTime:      0,
 14221  	FxGetLastError:     0,
 14222  	FxCurrentTimeInt64: 0,
 14223  	FxSetSystemCall:    0,
 14224  	FxGetSystemCall:    0,
 14225  	FxNextSystemCall:   0,
 14226  }
 14227  
 14228  var cksm_io_methods = sqlite3_io_methods{
 14229  	FiVersion:               3,
 14230  	FxClose:                 0,
 14231  	FxRead:                  0,
 14232  	FxWrite:                 0,
 14233  	FxTruncate:              0,
 14234  	FxSync:                  0,
 14235  	FxFileSize:              0,
 14236  	FxLock:                  0,
 14237  	FxUnlock:                0,
 14238  	FxCheckReservedLock:     0,
 14239  	FxFileControl:           0,
 14240  	FxSectorSize:            0,
 14241  	FxDeviceCharacteristics: 0,
 14242  	FxShmMap:                0,
 14243  	FxShmLock:               0,
 14244  	FxShmBarrier:            0,
 14245  	FxShmUnmap:              0,
 14246  	FxFetch:                 0,
 14247  	FxUnfetch:               0,
 14248  }
 14249  
 14250  func cksmCompute(tls *libc.TLS, a uintptr, nByte int32, aOut uintptr) {
 14251  	bp := tls.Alloc(12)
 14252  	defer tls.Free(12)
 14253  
 14254  	*(*u32)(unsafe.Pointer(bp + 4)) = u32(0)
 14255  	*(*u32)(unsafe.Pointer(bp + 8)) = u32(0)
 14256  	var aData uintptr = a
 14257  	var aEnd uintptr = a + uintptr(nByte)
 14258  	*(*u32)(unsafe.Pointer(bp)) = u32(1)
 14259  
 14260  	if 1 == int32(*(*u8)(unsafe.Pointer(bp))) {
 14261  		for __ccgo := true; __ccgo; __ccgo = aData < aEnd {
 14262  			*(*u32)(unsafe.Pointer(bp + 4)) += *(*u32)(unsafe.Pointer(libc.PostIncUintptr(&aData, 4))) + *(*u32)(unsafe.Pointer(bp + 8))
 14263  			*(*u32)(unsafe.Pointer(bp + 8)) += *(*u32)(unsafe.Pointer(libc.PostIncUintptr(&aData, 4))) + *(*u32)(unsafe.Pointer(bp + 4))
 14264  		}
 14265  	} else {
 14266  		for __ccgo1 := true; __ccgo1; __ccgo1 = aData < aEnd {
 14267  			*(*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))
 14268  			*(*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))
 14269  			aData += 4 * uintptr(2)
 14270  		}
 14271  		*(*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
 14272  		*(*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
 14273  	}
 14274  	libc.X__builtin___memcpy_chk(tls, aOut, bp+4, uint64(4), libc.X__builtin_object_size(tls, aOut, 0))
 14275  	libc.X__builtin___memcpy_chk(tls, aOut+uintptr(4), bp+8, uint64(4), libc.X__builtin_object_size(tls, aOut+uintptr(4), 0))
 14276  }
 14277  
 14278  func cksmVerifyFunc(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 14279  	bp := tls.Alloc(8)
 14280  	defer tls.Free(8)
 14281  
 14282  	var nByte int32
 14283  	var data uintptr
 14284  
 14285  	data = sqlite3.Xsqlite3_value_blob(tls, *(*uintptr)(unsafe.Pointer(argv)))
 14286  	if data == uintptr(0) {
 14287  		return
 14288  	}
 14289  	if sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(argv))) != SQLITE_BLOB {
 14290  		return
 14291  	}
 14292  	nByte = sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(argv)))
 14293  	if nByte < 512 || nByte > 65536 || nByte&(nByte-1) != 0 {
 14294  		return
 14295  	}
 14296  	cksmCompute(tls, data, nByte-8, bp)
 14297  	sqlite3.Xsqlite3_result_int(tls, context, libc.Bool32(libc.Xmemcmp(tls, data+uintptr(nByte)-uintptr(8), bp, uint64(8)) == 0))
 14298  }
 14299  
 14300  func cksmClose(tls *libc.TLS, pFile uintptr) int32 {
 14301  	var p uintptr = pFile
 14302  	if (*CksmFile)(unsafe.Pointer(p)).FpPartner != 0 {
 14303  		(*CksmFile)(unsafe.Pointer((*CksmFile)(unsafe.Pointer(p)).FpPartner)).FpPartner = uintptr(0)
 14304  		(*CksmFile)(unsafe.Pointer(p)).FpPartner = uintptr(0)
 14305  	}
 14306  	pFile = pFile + uintptr(1)*32
 14307  	return (*struct {
 14308  		f func(*libc.TLS, uintptr) int32
 14309  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxClose})).f(tls, pFile)
 14310  }
 14311  
 14312  func cksmSetFlags(tls *libc.TLS, p uintptr, hasCorrectReserveSize int32) {
 14313  	if hasCorrectReserveSize != int32((*CksmFile)(unsafe.Pointer(p)).FcomputeCksm) {
 14314  		(*CksmFile)(unsafe.Pointer(p)).FcomputeCksm = libc.AssignPtrInt8(p+17, int8(hasCorrectReserveSize))
 14315  		if (*CksmFile)(unsafe.Pointer(p)).FpPartner != 0 {
 14316  			(*CksmFile)(unsafe.Pointer((*CksmFile)(unsafe.Pointer(p)).FpPartner)).FverifyCksm = int8(hasCorrectReserveSize)
 14317  			(*CksmFile)(unsafe.Pointer((*CksmFile)(unsafe.Pointer(p)).FpPartner)).FcomputeCksm = int8(hasCorrectReserveSize)
 14318  		}
 14319  	}
 14320  }
 14321  
 14322  func cksmRead(tls *libc.TLS, pFile uintptr, zBuf uintptr, iAmt int32, iOfst sqlite_int64) int32 {
 14323  	bp := tls.Alloc(24)
 14324  	defer tls.Free(24)
 14325  
 14326  	var rc int32
 14327  	var p uintptr = pFile
 14328  	pFile = pFile + uintptr(1)*32
 14329  	rc = (*struct {
 14330  		f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 14331  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxRead})).f(tls, pFile, zBuf, iAmt, iOfst)
 14332  	if rc == SQLITE_OK {
 14333  		if iOfst == int64(0) && iAmt >= 100 && (libc.Xmemcmp(tls, zBuf, ts+3288, uint64(16)) == 0 || libc.Xmemcmp(tls, zBuf, ts+4105, uint64(3)) == 0) {
 14334  			var d uintptr = zBuf
 14335  			var hasCorrectReserveSize int8 = int8(libc.Bool32(int32(*(*u8)(unsafe.Pointer(d + 20))) == 8))
 14336  			cksmSetFlags(tls, p, int32(hasCorrectReserveSize))
 14337  		}
 14338  
 14339  		if iAmt >= 512 &&
 14340  			(*CksmFile)(unsafe.Pointer(p)).FverifyCksm != 0 &&
 14341  			!(int32((*CksmFile)(unsafe.Pointer(p)).FinCkpt) != 0) {
 14342  			cksmCompute(tls, zBuf, iAmt-8, bp+16)
 14343  			if libc.Xmemcmp(tls, zBuf+uintptr(iAmt)-uintptr(8), bp+16, uint64(8)) != 0 {
 14344  				sqlite3.Xsqlite3_log(tls, SQLITE_IOERR|int32(32)<<8,
 14345  					ts+4109,
 14346  					libc.VaList(bp, iOfst, (*CksmFile)(unsafe.Pointer(p)).FzFName))
 14347  				rc = SQLITE_IOERR | int32(32)<<8
 14348  			}
 14349  		}
 14350  	}
 14351  	return rc
 14352  }
 14353  
 14354  func cksmWrite(tls *libc.TLS, pFile uintptr, zBuf uintptr, iAmt int32, iOfst sqlite_int64) int32 {
 14355  	var p uintptr = pFile
 14356  	pFile = pFile + uintptr(1)*32
 14357  	if iOfst == int64(0) && iAmt >= 100 && (libc.Xmemcmp(tls, zBuf, ts+3288, uint64(16)) == 0 || libc.Xmemcmp(tls, zBuf, ts+4105, uint64(3)) == 0) {
 14358  		var d uintptr = zBuf
 14359  		var hasCorrectReserveSize int8 = int8(libc.Bool32(int32(*(*u8)(unsafe.Pointer(d + 20))) == 8))
 14360  		cksmSetFlags(tls, p, int32(hasCorrectReserveSize))
 14361  	}
 14362  
 14363  	if iAmt >= 512 &&
 14364  		(*CksmFile)(unsafe.Pointer(p)).FcomputeCksm != 0 &&
 14365  		!(int32((*CksmFile)(unsafe.Pointer(p)).FinCkpt) != 0) {
 14366  		cksmCompute(tls, zBuf, iAmt-8, zBuf+uintptr(iAmt)-uintptr(8))
 14367  	}
 14368  	return (*struct {
 14369  		f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 14370  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxWrite})).f(tls, pFile, zBuf, iAmt, iOfst)
 14371  }
 14372  
 14373  func cksmTruncate(tls *libc.TLS, pFile uintptr, size sqlite_int64) int32 {
 14374  	pFile = pFile + uintptr(1)*32
 14375  	return (*struct {
 14376  		f func(*libc.TLS, uintptr, sqlite3_int64) int32
 14377  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxTruncate})).f(tls, pFile, size)
 14378  }
 14379  
 14380  func cksmSync(tls *libc.TLS, pFile uintptr, flags int32) int32 {
 14381  	pFile = pFile + uintptr(1)*32
 14382  	return (*struct {
 14383  		f func(*libc.TLS, uintptr, int32) int32
 14384  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxSync})).f(tls, pFile, flags)
 14385  }
 14386  
 14387  func cksmFileSize(tls *libc.TLS, pFile uintptr, pSize uintptr) int32 {
 14388  	var p uintptr = pFile
 14389  	pFile = p + uintptr(1)*32
 14390  	return (*struct {
 14391  		f func(*libc.TLS, uintptr, uintptr) int32
 14392  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxFileSize})).f(tls, pFile, pSize)
 14393  }
 14394  
 14395  func cksmLock(tls *libc.TLS, pFile uintptr, eLock int32) int32 {
 14396  	pFile = pFile + uintptr(1)*32
 14397  	return (*struct {
 14398  		f func(*libc.TLS, uintptr, int32) int32
 14399  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxLock})).f(tls, pFile, eLock)
 14400  }
 14401  
 14402  func cksmUnlock(tls *libc.TLS, pFile uintptr, eLock int32) int32 {
 14403  	pFile = pFile + uintptr(1)*32
 14404  	return (*struct {
 14405  		f func(*libc.TLS, uintptr, int32) int32
 14406  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxUnlock})).f(tls, pFile, eLock)
 14407  }
 14408  
 14409  func cksmCheckReservedLock(tls *libc.TLS, pFile uintptr, pResOut uintptr) int32 {
 14410  	pFile = pFile + uintptr(1)*32
 14411  	return (*struct {
 14412  		f func(*libc.TLS, uintptr, uintptr) int32
 14413  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxCheckReservedLock})).f(tls, pFile, pResOut)
 14414  }
 14415  
 14416  func cksmFileControl(tls *libc.TLS, pFile uintptr, op int32, pArg uintptr) int32 {
 14417  	bp := tls.Alloc(16)
 14418  	defer tls.Free(16)
 14419  
 14420  	var rc int32
 14421  	var p uintptr = pFile
 14422  	pFile = pFile + uintptr(1)*32
 14423  	if op == SQLITE_FCNTL_PRAGMA {
 14424  		var azArg uintptr = pArg
 14425  
 14426  		if sqlite3.Xsqlite3_stricmp(tls, *(*uintptr)(unsafe.Pointer(azArg + 1*8)), ts+4144) == 0 {
 14427  			var zArg uintptr = *(*uintptr)(unsafe.Pointer(azArg + 2*8))
 14428  			if zArg != uintptr(0) {
 14429  				if int32(*(*int8)(unsafe.Pointer(zArg))) >= '1' && int32(*(*int8)(unsafe.Pointer(zArg))) <= '9' ||
 14430  					sqlite3.Xsqlite3_strlike(tls, ts+4166, zArg, uint32(0)) == 0 ||
 14431  					sqlite3.Xsqlite3_stricmp(tls, ts+4174, zArg) == 0 ||
 14432  					sqlite3.Xsqlite3_stricmp(tls, ts+4178, zArg) == 0 {
 14433  					(*CksmFile)(unsafe.Pointer(p)).FverifyCksm = (*CksmFile)(unsafe.Pointer(p)).FcomputeCksm
 14434  				} else {
 14435  					(*CksmFile)(unsafe.Pointer(p)).FverifyCksm = int8(0)
 14436  				}
 14437  				if (*CksmFile)(unsafe.Pointer(p)).FpPartner != 0 {
 14438  					(*CksmFile)(unsafe.Pointer((*CksmFile)(unsafe.Pointer(p)).FpPartner)).FverifyCksm = (*CksmFile)(unsafe.Pointer(p)).FverifyCksm
 14439  				}
 14440  			}
 14441  			*(*uintptr)(unsafe.Pointer(azArg)) = sqlite3.Xsqlite3_mprintf(tls, ts+1333, libc.VaList(bp, int32((*CksmFile)(unsafe.Pointer(p)).FverifyCksm)))
 14442  			return SQLITE_OK
 14443  		} else if (*CksmFile)(unsafe.Pointer(p)).FcomputeCksm != 0 && *(*uintptr)(unsafe.Pointer(azArg + 2*8)) != uintptr(0) &&
 14444  			sqlite3.Xsqlite3_stricmp(tls, *(*uintptr)(unsafe.Pointer(azArg + 1*8)), ts+4181) == 0 {
 14445  			return SQLITE_OK
 14446  		}
 14447  	} else if op == SQLITE_FCNTL_CKPT_START || op == SQLITE_FCNTL_CKPT_DONE {
 14448  		(*CksmFile)(unsafe.Pointer(p)).FinCkpt = int8(libc.Bool32(op == SQLITE_FCNTL_CKPT_START))
 14449  		if (*CksmFile)(unsafe.Pointer(p)).FpPartner != 0 {
 14450  			(*CksmFile)(unsafe.Pointer((*CksmFile)(unsafe.Pointer(p)).FpPartner)).FinCkpt = (*CksmFile)(unsafe.Pointer(p)).FinCkpt
 14451  		}
 14452  	} else if op == SQLITE_FCNTL_CKSM_FILE {
 14453  		var ppFile uintptr = pArg
 14454  		*(*uintptr)(unsafe.Pointer(ppFile)) = p
 14455  		return SQLITE_OK
 14456  	}
 14457  	rc = (*struct {
 14458  		f func(*libc.TLS, uintptr, int32, uintptr) int32
 14459  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxFileControl})).f(tls, pFile, op, pArg)
 14460  	if rc == SQLITE_OK && op == SQLITE_FCNTL_VFSNAME {
 14461  		*(*uintptr)(unsafe.Pointer(pArg)) = sqlite3.Xsqlite3_mprintf(tls, ts+4191, libc.VaList(bp+8, *(*uintptr)(unsafe.Pointer(pArg))))
 14462  	}
 14463  	return rc
 14464  }
 14465  
 14466  func cksmSectorSize(tls *libc.TLS, pFile uintptr) int32 {
 14467  	pFile = pFile + uintptr(1)*32
 14468  	return (*struct {
 14469  		f func(*libc.TLS, uintptr) int32
 14470  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxSectorSize})).f(tls, pFile)
 14471  }
 14472  
 14473  func cksmDeviceCharacteristics(tls *libc.TLS, pFile uintptr) int32 {
 14474  	pFile = pFile + uintptr(1)*32
 14475  	return (*struct {
 14476  		f func(*libc.TLS, uintptr) int32
 14477  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxDeviceCharacteristics})).f(tls, pFile)
 14478  }
 14479  
 14480  func cksmShmMap(tls *libc.TLS, pFile uintptr, iPg int32, pgsz int32, bExtend int32, pp uintptr) int32 {
 14481  	pFile = pFile + uintptr(1)*32
 14482  	return (*struct {
 14483  		f func(*libc.TLS, uintptr, int32, int32, int32, uintptr) int32
 14484  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxShmMap})).f(tls, pFile, iPg, pgsz, bExtend, pp)
 14485  }
 14486  
 14487  func cksmShmLock(tls *libc.TLS, pFile uintptr, offset int32, n int32, flags int32) int32 {
 14488  	pFile = pFile + uintptr(1)*32
 14489  	return (*struct {
 14490  		f func(*libc.TLS, uintptr, int32, int32, int32) int32
 14491  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxShmLock})).f(tls, pFile, offset, n, flags)
 14492  }
 14493  
 14494  func cksmShmBarrier(tls *libc.TLS, pFile uintptr) {
 14495  	pFile = pFile + uintptr(1)*32
 14496  	(*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)
 14497  }
 14498  
 14499  func cksmShmUnmap(tls *libc.TLS, pFile uintptr, deleteFlag int32) int32 {
 14500  	pFile = pFile + uintptr(1)*32
 14501  	return (*struct {
 14502  		f func(*libc.TLS, uintptr, int32) int32
 14503  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxShmUnmap})).f(tls, pFile, deleteFlag)
 14504  }
 14505  
 14506  func cksmFetch(tls *libc.TLS, pFile uintptr, iOfst sqlite3_int64, iAmt int32, pp uintptr) int32 {
 14507  	var p uintptr = pFile
 14508  	if (*CksmFile)(unsafe.Pointer(p)).FcomputeCksm != 0 {
 14509  		*(*uintptr)(unsafe.Pointer(pp)) = uintptr(0)
 14510  		return SQLITE_OK
 14511  	}
 14512  	pFile = pFile + uintptr(1)*32
 14513  	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 {
 14514  		return (*struct {
 14515  			f func(*libc.TLS, uintptr, sqlite3_int64, int32, uintptr) int32
 14516  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxFetch})).f(tls, pFile, iOfst, iAmt, pp)
 14517  	}
 14518  	*(*uintptr)(unsafe.Pointer(pp)) = uintptr(0)
 14519  	return SQLITE_OK
 14520  }
 14521  
 14522  func cksmUnfetch(tls *libc.TLS, pFile uintptr, iOfst sqlite3_int64, pPage uintptr) int32 {
 14523  	pFile = pFile + uintptr(1)*32
 14524  	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 {
 14525  		return (*struct {
 14526  			f func(*libc.TLS, uintptr, sqlite3_int64, uintptr) int32
 14527  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxUnfetch})).f(tls, pFile, iOfst, pPage)
 14528  	}
 14529  	return SQLITE_OK
 14530  }
 14531  
 14532  func cksmOpen(tls *libc.TLS, pVfs uintptr, zName uintptr, pFile uintptr, flags int32, pOutFlags uintptr) int32 {
 14533  	bp := tls.Alloc(8)
 14534  	defer tls.Free(8)
 14535  
 14536  	var p uintptr
 14537  	var pSubFile uintptr
 14538  	var pSubVfs uintptr
 14539  	var rc int32
 14540  
 14541  	pSubVfs = (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData
 14542  	if !(flags&(SQLITE_OPEN_MAIN_DB|SQLITE_OPEN_WAL) == 0) {
 14543  		goto __1
 14544  	}
 14545  	return (*struct {
 14546  		f func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr) int32
 14547  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pSubVfs)).FxOpen})).f(tls, pSubVfs, zName, pFile, flags, pOutFlags)
 14548  __1:
 14549  	;
 14550  	p = pFile
 14551  	libc.X__builtin___memset_chk(tls, p, 0, uint64(unsafe.Sizeof(CksmFile{})), libc.X__builtin_object_size(tls, p, 0))
 14552  	pSubFile = pFile + uintptr(1)*32
 14553  	(*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods = uintptr(unsafe.Pointer(&cksm_io_methods))
 14554  	rc = (*struct {
 14555  		f func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr) int32
 14556  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pSubVfs)).FxOpen})).f(tls, pSubVfs, zName, pSubFile, flags, pOutFlags)
 14557  	if !(rc != 0) {
 14558  		goto __2
 14559  	}
 14560  	goto cksm_open_done
 14561  __2:
 14562  	;
 14563  	if !(flags&SQLITE_OPEN_WAL != 0) {
 14564  		goto __3
 14565  	}
 14566  	*(*uintptr)(unsafe.Pointer(bp)) = sqlite3.Xsqlite3_database_file_object(tls, zName)
 14567  	rc = (*struct {
 14568  		f func(*libc.TLS, uintptr, int32, uintptr) int32
 14569  	})(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)
 14570  
 14571  	(*CksmFile)(unsafe.Pointer(p)).FpPartner = *(*uintptr)(unsafe.Pointer(bp))
 14572  
 14573  	(*CksmFile)(unsafe.Pointer((*CksmFile)(unsafe.Pointer(p)).FpPartner)).FpPartner = p
 14574  	(*CksmFile)(unsafe.Pointer(p)).FisWal = int8(1)
 14575  	(*CksmFile)(unsafe.Pointer(p)).FcomputeCksm = (*CksmFile)(unsafe.Pointer((*CksmFile)(unsafe.Pointer(p)).FpPartner)).FcomputeCksm
 14576  	goto __4
 14577  __3:
 14578  	(*CksmFile)(unsafe.Pointer(p)).FisWal = int8(0)
 14579  	(*CksmFile)(unsafe.Pointer(p)).FcomputeCksm = int8(0)
 14580  __4:
 14581  	;
 14582  	(*CksmFile)(unsafe.Pointer(p)).FzFName = zName
 14583  cksm_open_done:
 14584  	if !(rc != 0) {
 14585  		goto __5
 14586  	}
 14587  	(*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods = uintptr(0)
 14588  __5:
 14589  	;
 14590  	return rc
 14591  }
 14592  
 14593  func cksmDelete(tls *libc.TLS, pVfs uintptr, zPath uintptr, dirSync int32) int32 {
 14594  	return (*struct {
 14595  		f func(*libc.TLS, uintptr, uintptr, int32) int32
 14596  	})(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)
 14597  }
 14598  
 14599  func cksmAccess(tls *libc.TLS, pVfs uintptr, zPath uintptr, flags int32, pResOut uintptr) int32 {
 14600  	return (*struct {
 14601  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 14602  	})(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)
 14603  }
 14604  
 14605  func cksmFullPathname(tls *libc.TLS, pVfs uintptr, zPath uintptr, nOut int32, zOut uintptr) int32 {
 14606  	return (*struct {
 14607  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 14608  	})(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)
 14609  }
 14610  
 14611  func cksmDlOpen(tls *libc.TLS, pVfs uintptr, zPath uintptr) uintptr {
 14612  	return (*struct {
 14613  		f func(*libc.TLS, uintptr, uintptr) uintptr
 14614  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData)).FxDlOpen})).f(tls, (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData, zPath)
 14615  }
 14616  
 14617  func cksmDlError(tls *libc.TLS, pVfs uintptr, nByte int32, zErrMsg uintptr) {
 14618  	(*struct {
 14619  		f func(*libc.TLS, uintptr, int32, uintptr)
 14620  	})(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)
 14621  }
 14622  
 14623  func cksmDlSym(tls *libc.TLS, pVfs uintptr, p uintptr, zSym uintptr) uintptr {
 14624  	return (*struct {
 14625  		f func(*libc.TLS, uintptr, uintptr, uintptr) uintptr
 14626  	})(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)
 14627  }
 14628  
 14629  func cksmDlClose(tls *libc.TLS, pVfs uintptr, pHandle uintptr) {
 14630  	(*struct {
 14631  		f func(*libc.TLS, uintptr, uintptr)
 14632  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData)).FxDlClose})).f(tls, (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData, pHandle)
 14633  }
 14634  
 14635  func cksmRandomness(tls *libc.TLS, pVfs uintptr, nByte int32, zBufOut uintptr) int32 {
 14636  	return (*struct {
 14637  		f func(*libc.TLS, uintptr, int32, uintptr) int32
 14638  	})(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)
 14639  }
 14640  
 14641  func cksmSleep(tls *libc.TLS, pVfs uintptr, nMicro int32) int32 {
 14642  	return (*struct {
 14643  		f func(*libc.TLS, uintptr, int32) int32
 14644  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData)).FxSleep})).f(tls, (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData, nMicro)
 14645  }
 14646  
 14647  func cksmCurrentTime(tls *libc.TLS, pVfs uintptr, pTimeOut uintptr) int32 {
 14648  	return (*struct {
 14649  		f func(*libc.TLS, uintptr, uintptr) int32
 14650  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData)).FxCurrentTime})).f(tls, (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData, pTimeOut)
 14651  }
 14652  
 14653  func cksmGetLastError(tls *libc.TLS, pVfs uintptr, a int32, b uintptr) int32 {
 14654  	return (*struct {
 14655  		f func(*libc.TLS, uintptr, int32, uintptr) int32
 14656  	})(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)
 14657  }
 14658  
 14659  func cksmCurrentTimeInt64(tls *libc.TLS, pVfs uintptr, p uintptr) int32 {
 14660  	bp := tls.Alloc(8)
 14661  	defer tls.Free(8)
 14662  
 14663  	var pOrig uintptr = (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData
 14664  	var rc int32
 14665  
 14666  	if (*sqlite3_vfs)(unsafe.Pointer(pOrig)).FxCurrentTimeInt64 != 0 {
 14667  		rc = (*struct {
 14668  			f func(*libc.TLS, uintptr, uintptr) int32
 14669  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pOrig)).FxCurrentTimeInt64})).f(tls, pOrig, p)
 14670  	} else {
 14671  		rc = (*struct {
 14672  			f func(*libc.TLS, uintptr, uintptr) int32
 14673  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pOrig)).FxCurrentTime})).f(tls, pOrig, bp)
 14674  		*(*sqlite3_int64)(unsafe.Pointer(p)) = libc.Int64FromFloat64(*(*float64)(unsafe.Pointer(bp)) * 86400000.0)
 14675  	}
 14676  	return rc
 14677  }
 14678  
 14679  func cksmSetSystemCall(tls *libc.TLS, pVfs uintptr, zName uintptr, pCall sqlite3_syscall_ptr) int32 {
 14680  	return (*struct {
 14681  		f func(*libc.TLS, uintptr, uintptr, sqlite3_syscall_ptr) int32
 14682  	})(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)
 14683  }
 14684  
 14685  func cksmGetSystemCall(tls *libc.TLS, pVfs uintptr, zName uintptr) sqlite3_syscall_ptr {
 14686  	return (*struct {
 14687  		f func(*libc.TLS, uintptr, uintptr) sqlite3_syscall_ptr
 14688  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData)).FxGetSystemCall})).f(tls, (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData, zName)
 14689  }
 14690  
 14691  func cksmNextSystemCall(tls *libc.TLS, pVfs uintptr, zName uintptr) uintptr {
 14692  	return (*struct {
 14693  		f func(*libc.TLS, uintptr, uintptr) uintptr
 14694  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData)).FxNextSystemCall})).f(tls, (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData, zName)
 14695  }
 14696  
 14697  func cksmRegisterFunc(tls *libc.TLS, db uintptr, pzErrMsg uintptr, pApi uintptr) int32 {
 14698  	var rc int32
 14699  	if db == uintptr(0) {
 14700  		return SQLITE_OK
 14701  	}
 14702  	rc = sqlite3.Xsqlite3_create_function(tls, db, ts+4199, 1,
 14703  		SQLITE_UTF8|SQLITE_INNOCUOUS|SQLITE_DETERMINISTIC,
 14704  		uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 14705  			f func(*libc.TLS, uintptr, int32, uintptr)
 14706  		}{cksmVerifyFunc})), uintptr(0), uintptr(0))
 14707  	return rc
 14708  }
 14709  
 14710  func cksmRegisterVfs(tls *libc.TLS) int32 {
 14711  	var rc int32 = SQLITE_OK
 14712  	var pOrig uintptr
 14713  	if sqlite3.Xsqlite3_vfs_find(tls, ts+4097) != uintptr(0) {
 14714  		return SQLITE_OK
 14715  	}
 14716  	pOrig = sqlite3.Xsqlite3_vfs_find(tls, uintptr(0))
 14717  	if pOrig == uintptr(0) {
 14718  		return SQLITE_ERROR
 14719  	}
 14720  	cksm_vfs.FiVersion = (*sqlite3_vfs)(unsafe.Pointer(pOrig)).FiVersion
 14721  	cksm_vfs.FpAppData = pOrig
 14722  	cksm_vfs.FszOsFile = int32(uint64((*sqlite3_vfs)(unsafe.Pointer(pOrig)).FszOsFile) + uint64(unsafe.Sizeof(CksmFile{})))
 14723  	rc = sqlite3.Xsqlite3_vfs_register(tls, uintptr(unsafe.Pointer(&cksm_vfs)), 1)
 14724  	if rc == SQLITE_OK {
 14725  		rc = sqlite3.Xsqlite3_auto_extension(tls, *(*uintptr)(unsafe.Pointer(&struct {
 14726  			f func(*libc.TLS, uintptr, uintptr, uintptr) int32
 14727  		}{cksmRegisterFunc})))
 14728  	}
 14729  	return rc
 14730  }
 14731  
 14732  func sqlite3_register_cksumvfs(tls *libc.TLS, NotUsed uintptr) int32 {
 14733  	_ = NotUsed
 14734  	return cksmRegisterVfs(tls)
 14735  }
 14736  
 14737  func sqlite3_unregister_cksumvfs(tls *libc.TLS) int32 {
 14738  	if sqlite3.Xsqlite3_vfs_find(tls, ts+4097) != 0 {
 14739  		sqlite3.Xsqlite3_vfs_unregister(tls, uintptr(unsafe.Pointer(&cksm_vfs)))
 14740  		sqlite3.Xsqlite3_cancel_auto_extension(tls, *(*uintptr)(unsafe.Pointer(&struct {
 14741  			f func(*libc.TLS, uintptr, uintptr, uintptr) int32
 14742  		}{cksmRegisterFunc})))
 14743  	}
 14744  	return SQLITE_OK
 14745  }
 14746  
 14747  type closure_vtab1 = struct {
 14748  	Fbase          sqlite3_vtab
 14749  	FzDb           uintptr
 14750  	FzSelf         uintptr
 14751  	FzTableName    uintptr
 14752  	FzIdColumn     uintptr
 14753  	FzParentColumn uintptr
 14754  	Fdb            uintptr
 14755  	FnCursor       int32
 14756  	F__ccgo_pad1   [4]byte
 14757  }
 14758  
 14759  type closure_vtab = closure_vtab1
 14760  type closure_cursor1 = struct {
 14761  	Fbase          sqlite3_vtab_cursor
 14762  	FpVtab         uintptr
 14763  	FzTableName    uintptr
 14764  	FzIdColumn     uintptr
 14765  	FzParentColumn uintptr
 14766  	FpCurrent      uintptr
 14767  	FpClosure      uintptr
 14768  }
 14769  
 14770  type closure_cursor = closure_cursor1
 14771  type closure_queue1 = struct {
 14772  	FpFirst uintptr
 14773  	FpLast  uintptr
 14774  }
 14775  
 14776  type closure_queue = closure_queue1
 14777  type closure_avl1 = struct {
 14778  	Fid          sqlite3_int64
 14779  	FiGeneration int32
 14780  	F__ccgo_pad1 [4]byte
 14781  	FpList       uintptr
 14782  	FpBefore     uintptr
 14783  	FpAfter      uintptr
 14784  	FpUp         uintptr
 14785  	Fheight      int16
 14786  	Fimbalance   int16
 14787  	F__ccgo_pad2 [4]byte
 14788  }
 14789  
 14790  type closure_avl = closure_avl1
 14791  
 14792  func closureAvlRecomputeHeight(tls *libc.TLS, p uintptr) {
 14793  	var hBefore int16
 14794  	if (*closure_avl)(unsafe.Pointer(p)).FpBefore != 0 {
 14795  		hBefore = (*closure_avl)(unsafe.Pointer((*closure_avl)(unsafe.Pointer(p)).FpBefore)).Fheight
 14796  	} else {
 14797  		hBefore = int16(0)
 14798  	}
 14799  	var hAfter int16
 14800  	if (*closure_avl)(unsafe.Pointer(p)).FpAfter != 0 {
 14801  		hAfter = (*closure_avl)(unsafe.Pointer((*closure_avl)(unsafe.Pointer(p)).FpAfter)).Fheight
 14802  	} else {
 14803  		hAfter = int16(0)
 14804  	}
 14805  	(*closure_avl)(unsafe.Pointer(p)).Fimbalance = int16(int32(hBefore) - int32(hAfter))
 14806  	(*closure_avl)(unsafe.Pointer(p)).Fheight = int16(func() int32 {
 14807  		if int32(hBefore) > int32(hAfter) {
 14808  			return int32(hBefore)
 14809  		}
 14810  		return int32(hAfter)
 14811  	}() + 1)
 14812  }
 14813  
 14814  func closureAvlRotateBefore(tls *libc.TLS, pP uintptr) uintptr {
 14815  	var pB uintptr = (*closure_avl)(unsafe.Pointer(pP)).FpBefore
 14816  	var pY uintptr = (*closure_avl)(unsafe.Pointer(pB)).FpAfter
 14817  	(*closure_avl)(unsafe.Pointer(pB)).FpUp = (*closure_avl)(unsafe.Pointer(pP)).FpUp
 14818  	(*closure_avl)(unsafe.Pointer(pB)).FpAfter = pP
 14819  	(*closure_avl)(unsafe.Pointer(pP)).FpUp = pB
 14820  	(*closure_avl)(unsafe.Pointer(pP)).FpBefore = pY
 14821  	if pY != 0 {
 14822  		(*closure_avl)(unsafe.Pointer(pY)).FpUp = pP
 14823  	}
 14824  	closureAvlRecomputeHeight(tls, pP)
 14825  	closureAvlRecomputeHeight(tls, pB)
 14826  	return pB
 14827  }
 14828  
 14829  func closureAvlRotateAfter(tls *libc.TLS, pP uintptr) uintptr {
 14830  	var pA uintptr = (*closure_avl)(unsafe.Pointer(pP)).FpAfter
 14831  	var pY uintptr = (*closure_avl)(unsafe.Pointer(pA)).FpBefore
 14832  	(*closure_avl)(unsafe.Pointer(pA)).FpUp = (*closure_avl)(unsafe.Pointer(pP)).FpUp
 14833  	(*closure_avl)(unsafe.Pointer(pA)).FpBefore = pP
 14834  	(*closure_avl)(unsafe.Pointer(pP)).FpUp = pA
 14835  	(*closure_avl)(unsafe.Pointer(pP)).FpAfter = pY
 14836  	if pY != 0 {
 14837  		(*closure_avl)(unsafe.Pointer(pY)).FpUp = pP
 14838  	}
 14839  	closureAvlRecomputeHeight(tls, pP)
 14840  	closureAvlRecomputeHeight(tls, pA)
 14841  	return pA
 14842  }
 14843  
 14844  func closureAvlFromPtr(tls *libc.TLS, p uintptr, pp uintptr) uintptr {
 14845  	var pUp uintptr = (*closure_avl)(unsafe.Pointer(p)).FpUp
 14846  	if pUp == uintptr(0) {
 14847  		return pp
 14848  	}
 14849  	if (*closure_avl)(unsafe.Pointer(pUp)).FpAfter == p {
 14850  		return pUp + 32
 14851  	}
 14852  	return pUp + 24
 14853  }
 14854  
 14855  func closureAvlBalance(tls *libc.TLS, p uintptr) uintptr {
 14856  	bp := tls.Alloc(8)
 14857  	defer tls.Free(8)
 14858  	*(*uintptr)(unsafe.Pointer(bp)) = p
 14859  
 14860  	var pTop uintptr = *(*uintptr)(unsafe.Pointer(bp))
 14861  	var pp uintptr
 14862  	for *(*uintptr)(unsafe.Pointer(bp)) != 0 {
 14863  		closureAvlRecomputeHeight(tls, *(*uintptr)(unsafe.Pointer(bp)))
 14864  		if int32((*closure_avl)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp)))).Fimbalance) >= 2 {
 14865  			var pB uintptr = (*closure_avl)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp)))).FpBefore
 14866  			if int32((*closure_avl)(unsafe.Pointer(pB)).Fimbalance) < 0 {
 14867  				(*closure_avl)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp)))).FpBefore = closureAvlRotateAfter(tls, pB)
 14868  			}
 14869  			pp = closureAvlFromPtr(tls, *(*uintptr)(unsafe.Pointer(bp)), bp)
 14870  			*(*uintptr)(unsafe.Pointer(bp)) = libc.AssignPtrUintptr(pp, closureAvlRotateBefore(tls, *(*uintptr)(unsafe.Pointer(bp))))
 14871  		} else if int32((*closure_avl)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp)))).Fimbalance) <= -2 {
 14872  			var pA uintptr = (*closure_avl)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp)))).FpAfter
 14873  			if int32((*closure_avl)(unsafe.Pointer(pA)).Fimbalance) > 0 {
 14874  				(*closure_avl)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp)))).FpAfter = closureAvlRotateBefore(tls, pA)
 14875  			}
 14876  			pp = closureAvlFromPtr(tls, *(*uintptr)(unsafe.Pointer(bp)), bp)
 14877  			*(*uintptr)(unsafe.Pointer(bp)) = libc.AssignPtrUintptr(pp, closureAvlRotateAfter(tls, *(*uintptr)(unsafe.Pointer(bp))))
 14878  		}
 14879  		pTop = *(*uintptr)(unsafe.Pointer(bp))
 14880  		*(*uintptr)(unsafe.Pointer(bp)) = (*closure_avl)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp)))).FpUp
 14881  	}
 14882  	return pTop
 14883  }
 14884  
 14885  func closureAvlSearch(tls *libc.TLS, p uintptr, id sqlite3_int64) uintptr {
 14886  	for p != 0 && id != (*closure_avl)(unsafe.Pointer(p)).Fid {
 14887  		if id < (*closure_avl)(unsafe.Pointer(p)).Fid {
 14888  			p = (*closure_avl)(unsafe.Pointer(p)).FpBefore
 14889  		} else {
 14890  			p = (*closure_avl)(unsafe.Pointer(p)).FpAfter
 14891  		}
 14892  	}
 14893  	return p
 14894  }
 14895  
 14896  func closureAvlFirst(tls *libc.TLS, p uintptr) uintptr {
 14897  	if p != 0 {
 14898  		for (*closure_avl)(unsafe.Pointer(p)).FpBefore != 0 {
 14899  			p = (*closure_avl)(unsafe.Pointer(p)).FpBefore
 14900  		}
 14901  	}
 14902  	return p
 14903  }
 14904  
 14905  func closureAvlNext(tls *libc.TLS, p uintptr) uintptr {
 14906  	var pPrev uintptr = uintptr(0)
 14907  	for p != 0 && (*closure_avl)(unsafe.Pointer(p)).FpAfter == pPrev {
 14908  		pPrev = p
 14909  		p = (*closure_avl)(unsafe.Pointer(p)).FpUp
 14910  	}
 14911  	if p != 0 && pPrev == uintptr(0) {
 14912  		p = closureAvlFirst(tls, (*closure_avl)(unsafe.Pointer(p)).FpAfter)
 14913  	}
 14914  	return p
 14915  }
 14916  
 14917  func closureAvlInsert(tls *libc.TLS, ppHead uintptr, pNew uintptr) uintptr {
 14918  	var p uintptr = *(*uintptr)(unsafe.Pointer(ppHead))
 14919  	if p == uintptr(0) {
 14920  		p = pNew
 14921  		(*closure_avl)(unsafe.Pointer(pNew)).FpUp = uintptr(0)
 14922  	} else {
 14923  		for p != 0 {
 14924  			if (*closure_avl)(unsafe.Pointer(pNew)).Fid < (*closure_avl)(unsafe.Pointer(p)).Fid {
 14925  				if (*closure_avl)(unsafe.Pointer(p)).FpBefore != 0 {
 14926  					p = (*closure_avl)(unsafe.Pointer(p)).FpBefore
 14927  				} else {
 14928  					(*closure_avl)(unsafe.Pointer(p)).FpBefore = pNew
 14929  					(*closure_avl)(unsafe.Pointer(pNew)).FpUp = p
 14930  					break
 14931  				}
 14932  			} else if (*closure_avl)(unsafe.Pointer(pNew)).Fid > (*closure_avl)(unsafe.Pointer(p)).Fid {
 14933  				if (*closure_avl)(unsafe.Pointer(p)).FpAfter != 0 {
 14934  					p = (*closure_avl)(unsafe.Pointer(p)).FpAfter
 14935  				} else {
 14936  					(*closure_avl)(unsafe.Pointer(p)).FpAfter = pNew
 14937  					(*closure_avl)(unsafe.Pointer(pNew)).FpUp = p
 14938  					break
 14939  				}
 14940  			} else {
 14941  				return p
 14942  			}
 14943  		}
 14944  	}
 14945  	(*closure_avl)(unsafe.Pointer(pNew)).FpBefore = uintptr(0)
 14946  	(*closure_avl)(unsafe.Pointer(pNew)).FpAfter = uintptr(0)
 14947  	(*closure_avl)(unsafe.Pointer(pNew)).Fheight = int16(1)
 14948  	(*closure_avl)(unsafe.Pointer(pNew)).Fimbalance = int16(0)
 14949  	*(*uintptr)(unsafe.Pointer(ppHead)) = closureAvlBalance(tls, p)
 14950  	return uintptr(0)
 14951  }
 14952  
 14953  func closureAvlDestroy(tls *libc.TLS, p uintptr, xDestroy uintptr) {
 14954  	if p != 0 {
 14955  		closureAvlDestroy(tls, (*closure_avl)(unsafe.Pointer(p)).FpBefore, xDestroy)
 14956  		closureAvlDestroy(tls, (*closure_avl)(unsafe.Pointer(p)).FpAfter, xDestroy)
 14957  		(*struct{ f func(*libc.TLS, uintptr) })(unsafe.Pointer(&struct{ uintptr }{xDestroy})).f(tls, p)
 14958  	}
 14959  }
 14960  
 14961  func queuePush(tls *libc.TLS, pQueue uintptr, pNode uintptr) {
 14962  	(*closure_avl)(unsafe.Pointer(pNode)).FpList = uintptr(0)
 14963  	if (*closure_queue)(unsafe.Pointer(pQueue)).FpLast != 0 {
 14964  		(*closure_avl)(unsafe.Pointer((*closure_queue)(unsafe.Pointer(pQueue)).FpLast)).FpList = pNode
 14965  	} else {
 14966  		(*closure_queue)(unsafe.Pointer(pQueue)).FpFirst = pNode
 14967  	}
 14968  	(*closure_queue)(unsafe.Pointer(pQueue)).FpLast = pNode
 14969  }
 14970  
 14971  func queuePull(tls *libc.TLS, pQueue uintptr) uintptr {
 14972  	var p uintptr = (*closure_queue)(unsafe.Pointer(pQueue)).FpFirst
 14973  	if p != 0 {
 14974  		(*closure_queue)(unsafe.Pointer(pQueue)).FpFirst = (*closure_avl)(unsafe.Pointer(p)).FpList
 14975  		if (*closure_queue)(unsafe.Pointer(pQueue)).FpFirst == uintptr(0) {
 14976  			(*closure_queue)(unsafe.Pointer(pQueue)).FpLast = uintptr(0)
 14977  		}
 14978  	}
 14979  	return p
 14980  }
 14981  
 14982  func closureDequote(tls *libc.TLS, zIn uintptr) uintptr {
 14983  	var nIn sqlite3_int64
 14984  	var zOut uintptr
 14985  
 14986  	nIn = sqlite3_int64(libc.Xstrlen(tls, zIn))
 14987  	zOut = sqlite3.Xsqlite3_malloc64(tls, uint64(nIn+int64(1)))
 14988  	if zOut != 0 {
 14989  		var q int8 = *(*int8)(unsafe.Pointer(zIn))
 14990  
 14991  		if int32(q) != '[' && int32(q) != '\'' && int32(q) != '"' && int32(q) != '`' {
 14992  			libc.X__builtin___memcpy_chk(tls, zOut, zIn, size_t(nIn+int64(1)), libc.X__builtin_object_size(tls, zOut, 0))
 14993  		} else {
 14994  			var iOut int32 = 0
 14995  			var iIn int32
 14996  
 14997  			if int32(q) == '[' {
 14998  				q = int8(']')
 14999  			}
 15000  			for iIn = 1; sqlite3_int64(iIn) < nIn; iIn++ {
 15001  				if int32(*(*int8)(unsafe.Pointer(zIn + uintptr(iIn)))) == int32(q) {
 15002  					iIn++
 15003  				}
 15004  				*(*int8)(unsafe.Pointer(zOut + uintptr(libc.PostIncInt32(&iOut, 1)))) = *(*int8)(unsafe.Pointer(zIn + uintptr(iIn)))
 15005  			}
 15006  		}
 15007  
 15008  	}
 15009  	return zOut
 15010  }
 15011  
 15012  func closureFree(tls *libc.TLS, p uintptr) {
 15013  	if p != 0 {
 15014  		sqlite3.Xsqlite3_free(tls, (*closure_vtab)(unsafe.Pointer(p)).FzDb)
 15015  		sqlite3.Xsqlite3_free(tls, (*closure_vtab)(unsafe.Pointer(p)).FzSelf)
 15016  		sqlite3.Xsqlite3_free(tls, (*closure_vtab)(unsafe.Pointer(p)).FzTableName)
 15017  		sqlite3.Xsqlite3_free(tls, (*closure_vtab)(unsafe.Pointer(p)).FzIdColumn)
 15018  		sqlite3.Xsqlite3_free(tls, (*closure_vtab)(unsafe.Pointer(p)).FzParentColumn)
 15019  		libc.X__builtin___memset_chk(tls, p, 0, uint64(unsafe.Sizeof(closure_vtab{})), libc.X__builtin_object_size(tls, p, 0))
 15020  		sqlite3.Xsqlite3_free(tls, p)
 15021  	}
 15022  }
 15023  
 15024  func closureDisconnect(tls *libc.TLS, pVtab uintptr) int32 {
 15025  	var p uintptr = pVtab
 15026  
 15027  	closureFree(tls, p)
 15028  	return SQLITE_OK
 15029  }
 15030  
 15031  func closureValueOfKey(tls *libc.TLS, zKey uintptr, zStr uintptr) uintptr {
 15032  	var nKey int32 = int32(libc.Xstrlen(tls, zKey))
 15033  	var nStr int32 = int32(libc.Xstrlen(tls, zStr))
 15034  	var i int32
 15035  	if nStr < nKey+1 {
 15036  		return uintptr(0)
 15037  	}
 15038  	if libc.Xmemcmp(tls, zStr, zKey, uint64(nKey)) != 0 {
 15039  		return uintptr(0)
 15040  	}
 15041  	for i = nKey; isspace(tls, int32(uint8(*(*int8)(unsafe.Pointer(zStr + uintptr(i)))))) != 0; i++ {
 15042  	}
 15043  	if int32(*(*int8)(unsafe.Pointer(zStr + uintptr(i)))) != '=' {
 15044  		return uintptr(0)
 15045  	}
 15046  	i++
 15047  	for isspace(tls, int32(uint8(*(*int8)(unsafe.Pointer(zStr + uintptr(i)))))) != 0 {
 15048  		i++
 15049  	}
 15050  	return zStr + uintptr(i)
 15051  }
 15052  
 15053  func closureConnect(tls *libc.TLS, db uintptr, pAux uintptr, argc int32, argv uintptr, ppVtab uintptr, pzErr uintptr) int32 {
 15054  	bp := tls.Alloc(24)
 15055  	defer tls.Free(24)
 15056  
 15057  	var rc int32
 15058  	var pNew uintptr
 15059  	var zDb uintptr
 15060  	var zVal uintptr
 15061  	var i int32
 15062  	rc = SQLITE_OK
 15063  	pNew = uintptr(0)
 15064  	zDb = *(*uintptr)(unsafe.Pointer(argv + 1*8))
 15065  
 15066  	_ = pAux
 15067  	*(*uintptr)(unsafe.Pointer(ppVtab)) = uintptr(0)
 15068  	pNew = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(closure_vtab{})))
 15069  	if !(pNew == uintptr(0)) {
 15070  		goto __1
 15071  	}
 15072  	return SQLITE_NOMEM
 15073  __1:
 15074  	;
 15075  	rc = SQLITE_NOMEM
 15076  	libc.X__builtin___memset_chk(tls, pNew, 0, uint64(unsafe.Sizeof(closure_vtab{})), libc.X__builtin_object_size(tls, pNew, 0))
 15077  	(*closure_vtab)(unsafe.Pointer(pNew)).Fdb = db
 15078  	(*closure_vtab)(unsafe.Pointer(pNew)).FzDb = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp, zDb))
 15079  	if !((*closure_vtab)(unsafe.Pointer(pNew)).FzDb == uintptr(0)) {
 15080  		goto __2
 15081  	}
 15082  	goto closureConnectError
 15083  __2:
 15084  	;
 15085  	(*closure_vtab)(unsafe.Pointer(pNew)).FzSelf = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp+8, *(*uintptr)(unsafe.Pointer(argv + 2*8))))
 15086  	if !((*closure_vtab)(unsafe.Pointer(pNew)).FzSelf == uintptr(0)) {
 15087  		goto __3
 15088  	}
 15089  	goto closureConnectError
 15090  __3:
 15091  	;
 15092  	i = 3
 15093  __4:
 15094  	if !(i < argc) {
 15095  		goto __6
 15096  	}
 15097  	zVal = closureValueOfKey(tls, ts+4215, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8)))
 15098  	if !(zVal != 0) {
 15099  		goto __7
 15100  	}
 15101  	sqlite3.Xsqlite3_free(tls, (*closure_vtab)(unsafe.Pointer(pNew)).FzTableName)
 15102  	(*closure_vtab)(unsafe.Pointer(pNew)).FzTableName = closureDequote(tls, zVal)
 15103  	if !((*closure_vtab)(unsafe.Pointer(pNew)).FzTableName == uintptr(0)) {
 15104  		goto __8
 15105  	}
 15106  	goto closureConnectError
 15107  __8:
 15108  	;
 15109  	goto __5
 15110  __7:
 15111  	;
 15112  	zVal = closureValueOfKey(tls, ts+4225, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8)))
 15113  	if !(zVal != 0) {
 15114  		goto __9
 15115  	}
 15116  	sqlite3.Xsqlite3_free(tls, (*closure_vtab)(unsafe.Pointer(pNew)).FzIdColumn)
 15117  	(*closure_vtab)(unsafe.Pointer(pNew)).FzIdColumn = closureDequote(tls, zVal)
 15118  	if !((*closure_vtab)(unsafe.Pointer(pNew)).FzIdColumn == uintptr(0)) {
 15119  		goto __10
 15120  	}
 15121  	goto closureConnectError
 15122  __10:
 15123  	;
 15124  	goto __5
 15125  __9:
 15126  	;
 15127  	zVal = closureValueOfKey(tls, ts+4234, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8)))
 15128  	if !(zVal != 0) {
 15129  		goto __11
 15130  	}
 15131  	sqlite3.Xsqlite3_free(tls, (*closure_vtab)(unsafe.Pointer(pNew)).FzParentColumn)
 15132  	(*closure_vtab)(unsafe.Pointer(pNew)).FzParentColumn = closureDequote(tls, zVal)
 15133  	if !((*closure_vtab)(unsafe.Pointer(pNew)).FzParentColumn == uintptr(0)) {
 15134  		goto __12
 15135  	}
 15136  	goto closureConnectError
 15137  __12:
 15138  	;
 15139  	goto __5
 15140  __11:
 15141  	;
 15142  	*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+3536, libc.VaList(bp+16, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8))))
 15143  	closureFree(tls, pNew)
 15144  	*(*uintptr)(unsafe.Pointer(ppVtab)) = uintptr(0)
 15145  	return SQLITE_ERROR
 15146  	goto __5
 15147  __5:
 15148  	i++
 15149  	goto __4
 15150  	goto __6
 15151  __6:
 15152  	;
 15153  	rc = sqlite3.Xsqlite3_declare_vtab(tls, db,
 15154  		ts+4247)
 15155  	if !(rc != SQLITE_OK) {
 15156  		goto __13
 15157  	}
 15158  	closureFree(tls, pNew)
 15159  __13:
 15160  	;
 15161  	*(*uintptr)(unsafe.Pointer(ppVtab)) = pNew
 15162  	return rc
 15163  
 15164  closureConnectError:
 15165  	closureFree(tls, pNew)
 15166  	return rc
 15167  }
 15168  
 15169  func closureOpen(tls *libc.TLS, pVTab uintptr, ppCursor uintptr) int32 {
 15170  	var p uintptr = pVTab
 15171  	var pCur uintptr
 15172  	pCur = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(closure_cursor{})))
 15173  	if pCur == uintptr(0) {
 15174  		return SQLITE_NOMEM
 15175  	}
 15176  	libc.X__builtin___memset_chk(tls, pCur, 0, uint64(unsafe.Sizeof(closure_cursor{})), libc.X__builtin_object_size(tls, pCur, 0))
 15177  	(*closure_cursor)(unsafe.Pointer(pCur)).FpVtab = p
 15178  	*(*uintptr)(unsafe.Pointer(ppCursor)) = pCur
 15179  	(*closure_vtab)(unsafe.Pointer(p)).FnCursor++
 15180  	return SQLITE_OK
 15181  }
 15182  
 15183  func closureClearCursor(tls *libc.TLS, pCur uintptr) {
 15184  	closureAvlDestroy(tls, (*closure_cursor)(unsafe.Pointer(pCur)).FpClosure, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{sqlite3.Xsqlite3_free})))
 15185  	sqlite3.Xsqlite3_free(tls, (*closure_cursor)(unsafe.Pointer(pCur)).FzTableName)
 15186  	sqlite3.Xsqlite3_free(tls, (*closure_cursor)(unsafe.Pointer(pCur)).FzIdColumn)
 15187  	sqlite3.Xsqlite3_free(tls, (*closure_cursor)(unsafe.Pointer(pCur)).FzParentColumn)
 15188  	(*closure_cursor)(unsafe.Pointer(pCur)).FzTableName = uintptr(0)
 15189  	(*closure_cursor)(unsafe.Pointer(pCur)).FzIdColumn = uintptr(0)
 15190  	(*closure_cursor)(unsafe.Pointer(pCur)).FzParentColumn = uintptr(0)
 15191  	(*closure_cursor)(unsafe.Pointer(pCur)).FpCurrent = uintptr(0)
 15192  	(*closure_cursor)(unsafe.Pointer(pCur)).FpClosure = uintptr(0)
 15193  }
 15194  
 15195  func closureClose(tls *libc.TLS, cur uintptr) int32 {
 15196  	var pCur uintptr = cur
 15197  	closureClearCursor(tls, pCur)
 15198  	(*closure_vtab)(unsafe.Pointer((*closure_cursor)(unsafe.Pointer(pCur)).FpVtab)).FnCursor--
 15199  	sqlite3.Xsqlite3_free(tls, pCur)
 15200  	return SQLITE_OK
 15201  }
 15202  
 15203  func closureNext(tls *libc.TLS, cur uintptr) int32 {
 15204  	var pCur uintptr = cur
 15205  	(*closure_cursor)(unsafe.Pointer(pCur)).FpCurrent = closureAvlNext(tls, (*closure_cursor)(unsafe.Pointer(pCur)).FpCurrent)
 15206  	return SQLITE_OK
 15207  }
 15208  
 15209  func closureInsertNode(tls *libc.TLS, pQueue uintptr, pCur uintptr, id sqlite3_int64, iGeneration int32) int32 {
 15210  	var pNew uintptr = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(closure_avl{})))
 15211  	if pNew == uintptr(0) {
 15212  		return SQLITE_NOMEM
 15213  	}
 15214  	libc.X__builtin___memset_chk(tls, pNew, 0, uint64(unsafe.Sizeof(closure_avl{})), libc.X__builtin_object_size(tls, pNew, 0))
 15215  	(*closure_avl)(unsafe.Pointer(pNew)).Fid = id
 15216  	(*closure_avl)(unsafe.Pointer(pNew)).FiGeneration = iGeneration
 15217  	closureAvlInsert(tls, pCur+48, pNew)
 15218  	queuePush(tls, pQueue, pNew)
 15219  	return SQLITE_OK
 15220  }
 15221  
 15222  func closureFilter(tls *libc.TLS, pVtabCursor uintptr, idxNum int32, idxStr uintptr, argc int32, argv uintptr) int32 {
 15223  	bp := tls.Alloc(96)
 15224  	defer tls.Free(96)
 15225  
 15226  	var pCur uintptr = pVtabCursor
 15227  	var pVtab uintptr = (*closure_cursor)(unsafe.Pointer(pCur)).FpVtab
 15228  	var iRoot sqlite3_int64
 15229  	var mxGen int32 = 999999999
 15230  	var zSql uintptr
 15231  
 15232  	var pAvl uintptr
 15233  	var rc int32 = SQLITE_OK
 15234  	var zTableName uintptr = (*closure_vtab)(unsafe.Pointer(pVtab)).FzTableName
 15235  	var zIdColumn uintptr = (*closure_vtab)(unsafe.Pointer(pVtab)).FzIdColumn
 15236  	var zParentColumn uintptr = (*closure_vtab)(unsafe.Pointer(pVtab)).FzParentColumn
 15237  
 15238  	_ = idxStr
 15239  	_ = argc
 15240  	closureClearCursor(tls, pCur)
 15241  	libc.X__builtin___memset_chk(tls, bp+72, 0, uint64(unsafe.Sizeof(closure_queue{})), libc.X__builtin_object_size(tls, bp+72, 0))
 15242  	if idxNum&1 == 0 {
 15243  		return SQLITE_OK
 15244  	}
 15245  	iRoot = sqlite3.Xsqlite3_value_int64(tls, *(*uintptr)(unsafe.Pointer(argv)))
 15246  	if idxNum&0x000f0 != 0 {
 15247  		mxGen = sqlite3.Xsqlite3_value_int(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(idxNum>>4&0x0f)*8)))
 15248  		if idxNum&0x00002 != 0 {
 15249  			mxGen--
 15250  		}
 15251  	}
 15252  	if idxNum&0x00f00 != 0 {
 15253  		zTableName = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(idxNum>>8&0x0f)*8)))
 15254  		(*closure_cursor)(unsafe.Pointer(pCur)).FzTableName = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp, zTableName))
 15255  	}
 15256  	if idxNum&0x0f000 != 0 {
 15257  		zIdColumn = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(idxNum>>12&0x0f)*8)))
 15258  		(*closure_cursor)(unsafe.Pointer(pCur)).FzIdColumn = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp+8, zIdColumn))
 15259  	}
 15260  	if idxNum&0x0f0000 != 0 {
 15261  		zParentColumn = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(idxNum>>16&0x0f)*8)))
 15262  		(*closure_cursor)(unsafe.Pointer(pCur)).FzParentColumn = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp+16, zParentColumn))
 15263  	}
 15264  
 15265  	zSql = sqlite3.Xsqlite3_mprintf(tls,
 15266  		ts+4337,
 15267  		libc.VaList(bp+24, zTableName, zIdColumn, zTableName, zTableName, zParentColumn))
 15268  	if zSql == uintptr(0) {
 15269  		return SQLITE_NOMEM
 15270  	} else {
 15271  		rc = sqlite3.Xsqlite3_prepare_v2(tls, (*closure_vtab)(unsafe.Pointer(pVtab)).Fdb, zSql, -1, bp+88, uintptr(0))
 15272  		sqlite3.Xsqlite3_free(tls, zSql)
 15273  		if rc != 0 {
 15274  			sqlite3.Xsqlite3_free(tls, (*closure_vtab)(unsafe.Pointer(pVtab)).Fbase.FzErrMsg)
 15275  			(*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)))
 15276  			return rc
 15277  		}
 15278  	}
 15279  	if rc == SQLITE_OK {
 15280  		rc = closureInsertNode(tls, bp+72, pCur, iRoot, 0)
 15281  	}
 15282  	for libc.AssignUintptr(&pAvl, queuePull(tls, bp+72)) != uintptr(0) {
 15283  		if (*closure_avl)(unsafe.Pointer(pAvl)).FiGeneration >= mxGen {
 15284  			continue
 15285  		}
 15286  		sqlite3.Xsqlite3_bind_int64(tls, *(*uintptr)(unsafe.Pointer(bp + 88)), 1, (*closure_avl)(unsafe.Pointer(pAvl)).Fid)
 15287  		for rc == SQLITE_OK && sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp + 88))) == SQLITE_ROW {
 15288  			if sqlite3.Xsqlite3_column_type(tls, *(*uintptr)(unsafe.Pointer(bp + 88)), 0) == SQLITE_INTEGER {
 15289  				var iNew sqlite3_int64 = sqlite3.Xsqlite3_column_int64(tls, *(*uintptr)(unsafe.Pointer(bp + 88)), 0)
 15290  				if closureAvlSearch(tls, (*closure_cursor)(unsafe.Pointer(pCur)).FpClosure, iNew) == uintptr(0) {
 15291  					rc = closureInsertNode(tls, bp+72, pCur, iNew, (*closure_avl)(unsafe.Pointer(pAvl)).FiGeneration+1)
 15292  				}
 15293  			}
 15294  		}
 15295  		sqlite3.Xsqlite3_reset(tls, *(*uintptr)(unsafe.Pointer(bp + 88)))
 15296  	}
 15297  	sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 88)))
 15298  	if rc == SQLITE_OK {
 15299  		(*closure_cursor)(unsafe.Pointer(pCur)).FpCurrent = closureAvlFirst(tls, (*closure_cursor)(unsafe.Pointer(pCur)).FpClosure)
 15300  	}
 15301  
 15302  	return rc
 15303  }
 15304  
 15305  func closureColumn(tls *libc.TLS, cur uintptr, ctx uintptr, i int32) int32 {
 15306  	var pCur uintptr = cur
 15307  	switch i {
 15308  	case CLOSURE_COL_ID:
 15309  		{
 15310  			sqlite3.Xsqlite3_result_int64(tls, ctx, (*closure_avl)(unsafe.Pointer((*closure_cursor)(unsafe.Pointer(pCur)).FpCurrent)).Fid)
 15311  			break
 15312  
 15313  		}
 15314  	case CLOSURE_COL_DEPTH:
 15315  		{
 15316  			sqlite3.Xsqlite3_result_int(tls, ctx, (*closure_avl)(unsafe.Pointer((*closure_cursor)(unsafe.Pointer(pCur)).FpCurrent)).FiGeneration)
 15317  			break
 15318  
 15319  		}
 15320  	case CLOSURE_COL_ROOT:
 15321  		{
 15322  			sqlite3.Xsqlite3_result_null(tls, ctx)
 15323  			break
 15324  
 15325  		}
 15326  	case CLOSURE_COL_TABLENAME:
 15327  		{
 15328  			sqlite3.Xsqlite3_result_text(tls, ctx,
 15329  				func() uintptr {
 15330  					if (*closure_cursor)(unsafe.Pointer(pCur)).FzTableName != 0 {
 15331  						return (*closure_cursor)(unsafe.Pointer(pCur)).FzTableName
 15332  					}
 15333  					return (*closure_vtab)(unsafe.Pointer((*closure_cursor)(unsafe.Pointer(pCur)).FpVtab)).FzTableName
 15334  				}(),
 15335  				-1, libc.UintptrFromInt32(-1))
 15336  			break
 15337  
 15338  		}
 15339  	case CLOSURE_COL_IDCOLUMN:
 15340  		{
 15341  			sqlite3.Xsqlite3_result_text(tls, ctx,
 15342  				func() uintptr {
 15343  					if (*closure_cursor)(unsafe.Pointer(pCur)).FzIdColumn != 0 {
 15344  						return (*closure_cursor)(unsafe.Pointer(pCur)).FzIdColumn
 15345  					}
 15346  					return (*closure_vtab)(unsafe.Pointer((*closure_cursor)(unsafe.Pointer(pCur)).FpVtab)).FzIdColumn
 15347  				}(),
 15348  				-1, libc.UintptrFromInt32(-1))
 15349  			break
 15350  
 15351  		}
 15352  	case CLOSURE_COL_PARENTCOLUMN:
 15353  		{
 15354  			sqlite3.Xsqlite3_result_text(tls, ctx,
 15355  				func() uintptr {
 15356  					if (*closure_cursor)(unsafe.Pointer(pCur)).FzParentColumn != 0 {
 15357  						return (*closure_cursor)(unsafe.Pointer(pCur)).FzParentColumn
 15358  					}
 15359  					return (*closure_vtab)(unsafe.Pointer((*closure_cursor)(unsafe.Pointer(pCur)).FpVtab)).FzParentColumn
 15360  				}(),
 15361  				-1, libc.UintptrFromInt32(-1))
 15362  			break
 15363  
 15364  		}
 15365  	}
 15366  	return SQLITE_OK
 15367  }
 15368  
 15369  func closureRowid(tls *libc.TLS, cur uintptr, pRowid uintptr) int32 {
 15370  	var pCur uintptr = cur
 15371  	*(*sqlite_int64)(unsafe.Pointer(pRowid)) = (*closure_avl)(unsafe.Pointer((*closure_cursor)(unsafe.Pointer(pCur)).FpCurrent)).Fid
 15372  	return SQLITE_OK
 15373  }
 15374  
 15375  func closureEof(tls *libc.TLS, cur uintptr) int32 {
 15376  	var pCur uintptr = cur
 15377  	return libc.Bool32((*closure_cursor)(unsafe.Pointer(pCur)).FpCurrent == uintptr(0))
 15378  }
 15379  
 15380  func closureBestIndex(tls *libc.TLS, pTab uintptr, pIdxInfo uintptr) int32 {
 15381  	var iPlan int32 = 0
 15382  	var i int32
 15383  	var idx int32 = 1
 15384  	var pConstraint uintptr
 15385  	var pVtab uintptr = pTab
 15386  	var rCost float64 = 10000000.0
 15387  
 15388  	pConstraint = (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint
 15389  	i = 0
 15390  __1:
 15391  	if !(i < (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnConstraint) {
 15392  		goto __3
 15393  	}
 15394  	{
 15395  		if int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fusable) == 0 {
 15396  			goto __2
 15397  		}
 15398  		if iPlan&1 == 0 &&
 15399  			(*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).FiColumn == CLOSURE_COL_ROOT &&
 15400  			int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_EQ {
 15401  			iPlan = iPlan | 1
 15402  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(i)*8)).FargvIndex = 1
 15403  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(i)*8)).Fomit = uint8(1)
 15404  			rCost = rCost / 100.0
 15405  		}
 15406  		if iPlan&0x0000f0 == 0 &&
 15407  			(*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).FiColumn == CLOSURE_COL_DEPTH &&
 15408  			(int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_LT ||
 15409  				int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_LE ||
 15410  				int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_EQ) {
 15411  			iPlan = iPlan | idx<<4
 15412  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(i)*8)).FargvIndex = libc.PreIncInt32(&idx, 1)
 15413  			if int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_LT {
 15414  				iPlan = iPlan | 0x000002
 15415  			}
 15416  			rCost = rCost / 5.0
 15417  		}
 15418  		if iPlan&0x000f00 == 0 &&
 15419  			(*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).FiColumn == CLOSURE_COL_TABLENAME &&
 15420  			int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_EQ {
 15421  			iPlan = iPlan | idx<<8
 15422  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(i)*8)).FargvIndex = libc.PreIncInt32(&idx, 1)
 15423  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(i)*8)).Fomit = uint8(1)
 15424  			rCost = rCost / 5.0
 15425  		}
 15426  		if iPlan&0x00f000 == 0 &&
 15427  			(*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).FiColumn == CLOSURE_COL_IDCOLUMN &&
 15428  			int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_EQ {
 15429  			iPlan = iPlan | idx<<12
 15430  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(i)*8)).FargvIndex = libc.PreIncInt32(&idx, 1)
 15431  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(i)*8)).Fomit = uint8(1)
 15432  		}
 15433  		if iPlan&0x0f0000 == 0 &&
 15434  			(*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).FiColumn == CLOSURE_COL_PARENTCOLUMN &&
 15435  			int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_EQ {
 15436  			iPlan = iPlan | idx<<16
 15437  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(i)*8)).FargvIndex = libc.PreIncInt32(&idx, 1)
 15438  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(i)*8)).Fomit = uint8(1)
 15439  		}
 15440  
 15441  	}
 15442  	goto __2
 15443  __2:
 15444  	i++
 15445  	pConstraint += 12
 15446  	goto __1
 15447  	goto __3
 15448  __3:
 15449  	;
 15450  	if (*closure_vtab)(unsafe.Pointer(pVtab)).FzTableName == uintptr(0) && iPlan&0x000f00 == 0 ||
 15451  		(*closure_vtab)(unsafe.Pointer(pVtab)).FzIdColumn == uintptr(0) && iPlan&0x00f000 == 0 ||
 15452  		(*closure_vtab)(unsafe.Pointer(pVtab)).FzParentColumn == uintptr(0) && iPlan&0x0f0000 == 0 {
 15453  		iPlan = 0
 15454  	}
 15455  	if iPlan&1 == 0 {
 15456  		rCost = rCost * 1e30
 15457  		i = 0
 15458  	__4:
 15459  		if !(i < (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnConstraint) {
 15460  			goto __6
 15461  		}
 15462  		{
 15463  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(i)*8)).FargvIndex = 0
 15464  
 15465  		}
 15466  		goto __5
 15467  	__5:
 15468  		i++
 15469  		pConstraint += 12
 15470  		goto __4
 15471  		goto __6
 15472  	__6:
 15473  		;
 15474  		iPlan = 0
 15475  	}
 15476  	(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxNum = iPlan
 15477  	if (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnOrderBy == 1 &&
 15478  		(*sqlite3_index_orderby)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaOrderBy)).FiColumn == CLOSURE_COL_ID &&
 15479  		int32((*sqlite3_index_orderby)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaOrderBy)).Fdesc) == 0 {
 15480  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).ForderByConsumed = 1
 15481  	}
 15482  	(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = rCost
 15483  
 15484  	return SQLITE_OK
 15485  }
 15486  
 15487  var closureModule = sqlite3_module{
 15488  	FxCreate:     0,
 15489  	FxConnect:    0,
 15490  	FxBestIndex:  0,
 15491  	FxDisconnect: 0,
 15492  	FxDestroy:    0,
 15493  	FxOpen:       0,
 15494  	FxClose:      0,
 15495  	FxFilter:     0,
 15496  	FxNext:       0,
 15497  	FxEof:        0,
 15498  	FxColumn:     0,
 15499  	FxRowid:      0,
 15500  }
 15501  
 15502  func sqlite3_closure_init(tls *libc.TLS, db uintptr, pzErrMsg uintptr, pApi uintptr) int32 {
 15503  	var rc int32 = SQLITE_OK
 15504  	_ = pApi
 15505  
 15506  	_ = pzErrMsg
 15507  	rc = sqlite3.Xsqlite3_create_module(tls, db, ts+4383, uintptr(unsafe.Pointer(&closureModule)), uintptr(0))
 15508  	return rc
 15509  }
 15510  
 15511  type CsvReader1 = struct {
 15512  	Fin          uintptr
 15513  	Fz           uintptr
 15514  	Fn           int32
 15515  	FnAlloc      int32
 15516  	FnLine       int32
 15517  	FbNotFirst   int32
 15518  	FcTerm       int32
 15519  	F__ccgo_pad1 [4]byte
 15520  	FiIn         size_t
 15521  	FnIn         size_t
 15522  	FzIn         uintptr
 15523  	FzErr        [200]int8
 15524  }
 15525  
 15526  type CsvReader = CsvReader1
 15527  
 15528  func csv_reader_init(tls *libc.TLS, p uintptr) {
 15529  	(*CsvReader)(unsafe.Pointer(p)).Fin = uintptr(0)
 15530  	(*CsvReader)(unsafe.Pointer(p)).Fz = uintptr(0)
 15531  	(*CsvReader)(unsafe.Pointer(p)).Fn = 0
 15532  	(*CsvReader)(unsafe.Pointer(p)).FnAlloc = 0
 15533  	(*CsvReader)(unsafe.Pointer(p)).FnLine = 0
 15534  	(*CsvReader)(unsafe.Pointer(p)).FbNotFirst = 0
 15535  	(*CsvReader)(unsafe.Pointer(p)).FnIn = uint64(0)
 15536  	(*CsvReader)(unsafe.Pointer(p)).FzIn = uintptr(0)
 15537  	*(*int8)(unsafe.Pointer(p + 64)) = int8(0)
 15538  }
 15539  
 15540  func csv_reader_reset(tls *libc.TLS, p uintptr) {
 15541  	if (*CsvReader)(unsafe.Pointer(p)).Fin != 0 {
 15542  		libc.Xfclose(tls, (*CsvReader)(unsafe.Pointer(p)).Fin)
 15543  		sqlite3.Xsqlite3_free(tls, (*CsvReader)(unsafe.Pointer(p)).FzIn)
 15544  	}
 15545  	sqlite3.Xsqlite3_free(tls, (*CsvReader)(unsafe.Pointer(p)).Fz)
 15546  	csv_reader_init(tls, p)
 15547  }
 15548  
 15549  func csv_errmsg(tls *libc.TLS, p uintptr, zFormat uintptr, va uintptr) {
 15550  	var ap va_list
 15551  	_ = ap
 15552  	ap = va
 15553  	sqlite3.Xsqlite3_vsnprintf(tls, CSV_MXERR, p+64, zFormat, ap)
 15554  	_ = ap
 15555  }
 15556  
 15557  func csv_reader_open(tls *libc.TLS, p uintptr, zFilename uintptr, zData uintptr) int32 {
 15558  	bp := tls.Alloc(8)
 15559  	defer tls.Free(8)
 15560  
 15561  	if zFilename != 0 {
 15562  		(*CsvReader)(unsafe.Pointer(p)).FzIn = sqlite3.Xsqlite3_malloc(tls, CSV_INBUFSZ)
 15563  		if (*CsvReader)(unsafe.Pointer(p)).FzIn == uintptr(0) {
 15564  			csv_errmsg(tls, p, ts+2069, 0)
 15565  			return 1
 15566  		}
 15567  		(*CsvReader)(unsafe.Pointer(p)).Fin = libc.Xfopen(tls, zFilename, ts+4402)
 15568  		if (*CsvReader)(unsafe.Pointer(p)).Fin == uintptr(0) {
 15569  			sqlite3.Xsqlite3_free(tls, (*CsvReader)(unsafe.Pointer(p)).FzIn)
 15570  			csv_reader_reset(tls, p)
 15571  			csv_errmsg(tls, p, ts+4405, libc.VaList(bp, zFilename))
 15572  			return 1
 15573  		}
 15574  	} else {
 15575  		(*CsvReader)(unsafe.Pointer(p)).FzIn = zData
 15576  		(*CsvReader)(unsafe.Pointer(p)).FnIn = libc.Xstrlen(tls, zData)
 15577  	}
 15578  	return 0
 15579  }
 15580  
 15581  func csv_getc_refill(tls *libc.TLS, p uintptr) int32 {
 15582  	var got size_t
 15583  
 15584  	got = libc.Xfread(tls, (*CsvReader)(unsafe.Pointer(p)).FzIn, uint64(1), uint64(CSV_INBUFSZ), (*CsvReader)(unsafe.Pointer(p)).Fin)
 15585  	if got == uint64(0) {
 15586  		return -1
 15587  	}
 15588  	(*CsvReader)(unsafe.Pointer(p)).FnIn = got
 15589  	(*CsvReader)(unsafe.Pointer(p)).FiIn = uint64(1)
 15590  	return int32(*(*int8)(unsafe.Pointer((*CsvReader)(unsafe.Pointer(p)).FzIn)))
 15591  }
 15592  
 15593  func csv_getc(tls *libc.TLS, p uintptr) int32 {
 15594  	if (*CsvReader)(unsafe.Pointer(p)).FiIn >= (*CsvReader)(unsafe.Pointer(p)).FnIn {
 15595  		if (*CsvReader)(unsafe.Pointer(p)).Fin != uintptr(0) {
 15596  			return csv_getc_refill(tls, p)
 15597  		}
 15598  		return -1
 15599  	}
 15600  	return int32(*(*uint8)(unsafe.Pointer((*CsvReader)(unsafe.Pointer(p)).FzIn + uintptr(libc.PostIncUint64(&(*CsvReader)(unsafe.Pointer(p)).FiIn, 1)))))
 15601  }
 15602  
 15603  func csv_resize_and_append(tls *libc.TLS, p uintptr, c int8) int32 {
 15604  	var zNew uintptr
 15605  	var nNew int32 = (*CsvReader)(unsafe.Pointer(p)).FnAlloc*2 + 100
 15606  	zNew = sqlite3.Xsqlite3_realloc64(tls, (*CsvReader)(unsafe.Pointer(p)).Fz, uint64(nNew))
 15607  	if zNew != 0 {
 15608  		(*CsvReader)(unsafe.Pointer(p)).Fz = zNew
 15609  		(*CsvReader)(unsafe.Pointer(p)).FnAlloc = nNew
 15610  		*(*int8)(unsafe.Pointer((*CsvReader)(unsafe.Pointer(p)).Fz + uintptr(libc.PostIncInt32(&(*CsvReader)(unsafe.Pointer(p)).Fn, 1)))) = c
 15611  		return 0
 15612  	} else {
 15613  		csv_errmsg(tls, p, ts+2069, 0)
 15614  		return 1
 15615  	}
 15616  	return int32(0)
 15617  }
 15618  
 15619  func csv_append(tls *libc.TLS, p uintptr, c int8) int32 {
 15620  	if (*CsvReader)(unsafe.Pointer(p)).Fn >= (*CsvReader)(unsafe.Pointer(p)).FnAlloc-1 {
 15621  		return csv_resize_and_append(tls, p, c)
 15622  	}
 15623  	*(*int8)(unsafe.Pointer((*CsvReader)(unsafe.Pointer(p)).Fz + uintptr(libc.PostIncInt32(&(*CsvReader)(unsafe.Pointer(p)).Fn, 1)))) = c
 15624  	return 0
 15625  }
 15626  
 15627  func csv_read_one_field(tls *libc.TLS, p uintptr) uintptr {
 15628  	bp := tls.Alloc(32)
 15629  	defer tls.Free(32)
 15630  
 15631  	var c int32
 15632  	(*CsvReader)(unsafe.Pointer(p)).Fn = 0
 15633  	c = csv_getc(tls, p)
 15634  	if c == -1 {
 15635  		(*CsvReader)(unsafe.Pointer(p)).FcTerm = -1
 15636  		return uintptr(0)
 15637  	}
 15638  	if c == '"' {
 15639  		var pc int32
 15640  		var ppc int32
 15641  		var startLine int32 = (*CsvReader)(unsafe.Pointer(p)).FnLine
 15642  		pc = libc.AssignInt32(&ppc, 0)
 15643  		for 1 != 0 {
 15644  			c = csv_getc(tls, p)
 15645  			if c <= '"' || pc == '"' {
 15646  				if c == '\n' {
 15647  					(*CsvReader)(unsafe.Pointer(p)).FnLine++
 15648  				}
 15649  				if c == '"' {
 15650  					if pc == '"' {
 15651  						pc = 0
 15652  						continue
 15653  					}
 15654  				}
 15655  				if c == ',' && pc == '"' ||
 15656  					c == '\n' && pc == '"' ||
 15657  					c == '\n' && pc == '\r' && ppc == '"' ||
 15658  					c == -1 && pc == '"' {
 15659  					for __ccgo := true; __ccgo; __ccgo = int32(*(*int8)(unsafe.Pointer((*CsvReader)(unsafe.Pointer(p)).Fz + uintptr((*CsvReader)(unsafe.Pointer(p)).Fn)))) != '"' {
 15660  						(*CsvReader)(unsafe.Pointer(p)).Fn--
 15661  					}
 15662  					(*CsvReader)(unsafe.Pointer(p)).FcTerm = int32(int8(c))
 15663  					break
 15664  				}
 15665  				if pc == '"' && c != '\r' {
 15666  					csv_errmsg(tls, p, ts+4434, libc.VaList(bp, (*CsvReader)(unsafe.Pointer(p)).FnLine, '"'))
 15667  					break
 15668  				}
 15669  				if c == -1 {
 15670  					csv_errmsg(tls, p, ts+4466,
 15671  						libc.VaList(bp+16, startLine, '"'))
 15672  					(*CsvReader)(unsafe.Pointer(p)).FcTerm = int32(int8(c))
 15673  					break
 15674  				}
 15675  			}
 15676  			if csv_append(tls, p, int8(c)) != 0 {
 15677  				return uintptr(0)
 15678  			}
 15679  			ppc = pc
 15680  			pc = c
 15681  		}
 15682  	} else {
 15683  		if c&0xff == 0xef && (*CsvReader)(unsafe.Pointer(p)).FbNotFirst == 0 {
 15684  			csv_append(tls, p, int8(c))
 15685  			c = csv_getc(tls, p)
 15686  			if c&0xff == 0xbb {
 15687  				csv_append(tls, p, int8(c))
 15688  				c = csv_getc(tls, p)
 15689  				if c&0xff == 0xbf {
 15690  					(*CsvReader)(unsafe.Pointer(p)).FbNotFirst = 1
 15691  					(*CsvReader)(unsafe.Pointer(p)).Fn = 0
 15692  					return csv_read_one_field(tls, p)
 15693  				}
 15694  			}
 15695  		}
 15696  		for c > ',' || c != -1 && c != ',' && c != '\n' {
 15697  			if csv_append(tls, p, int8(c)) != 0 {
 15698  				return uintptr(0)
 15699  			}
 15700  			c = csv_getc(tls, p)
 15701  		}
 15702  		if c == '\n' {
 15703  			(*CsvReader)(unsafe.Pointer(p)).FnLine++
 15704  			if (*CsvReader)(unsafe.Pointer(p)).Fn > 0 && int32(*(*int8)(unsafe.Pointer((*CsvReader)(unsafe.Pointer(p)).Fz + uintptr((*CsvReader)(unsafe.Pointer(p)).Fn-1)))) == '\r' {
 15705  				(*CsvReader)(unsafe.Pointer(p)).Fn--
 15706  			}
 15707  		}
 15708  		(*CsvReader)(unsafe.Pointer(p)).FcTerm = int32(int8(c))
 15709  	}
 15710  	if (*CsvReader)(unsafe.Pointer(p)).Fz != 0 {
 15711  		*(*int8)(unsafe.Pointer((*CsvReader)(unsafe.Pointer(p)).Fz + uintptr((*CsvReader)(unsafe.Pointer(p)).Fn))) = int8(0)
 15712  	}
 15713  	(*CsvReader)(unsafe.Pointer(p)).FbNotFirst = 1
 15714  	return (*CsvReader)(unsafe.Pointer(p)).Fz
 15715  }
 15716  
 15717  type CsvTable1 = struct {
 15718  	Fbase      sqlite3_vtab
 15719  	FzFilename uintptr
 15720  	FzData     uintptr
 15721  	FiStart    int64
 15722  	FnCol      int32
 15723  	FtstFlags  uint32
 15724  }
 15725  
 15726  type CsvTable = CsvTable1
 15727  
 15728  type CsvCursor1 = struct {
 15729  	Fbase   sqlite3_vtab_cursor
 15730  	Frdr    CsvReader
 15731  	FazVal  uintptr
 15732  	FaLen   uintptr
 15733  	FiRowid sqlite3_int64
 15734  }
 15735  
 15736  type CsvCursor = CsvCursor1
 15737  
 15738  func csv_xfer_error(tls *libc.TLS, pTab uintptr, pRdr uintptr) {
 15739  	bp := tls.Alloc(8)
 15740  	defer tls.Free(8)
 15741  
 15742  	sqlite3.Xsqlite3_free(tls, (*CsvTable)(unsafe.Pointer(pTab)).Fbase.FzErrMsg)
 15743  	(*CsvTable)(unsafe.Pointer(pTab)).Fbase.FzErrMsg = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp, pRdr+64))
 15744  }
 15745  
 15746  func csvtabDisconnect(tls *libc.TLS, pVtab uintptr) int32 {
 15747  	var p uintptr = pVtab
 15748  	sqlite3.Xsqlite3_free(tls, (*CsvTable)(unsafe.Pointer(p)).FzFilename)
 15749  	sqlite3.Xsqlite3_free(tls, (*CsvTable)(unsafe.Pointer(p)).FzData)
 15750  	sqlite3.Xsqlite3_free(tls, p)
 15751  	return SQLITE_OK
 15752  }
 15753  
 15754  func csv_skip_whitespace(tls *libc.TLS, z uintptr) uintptr {
 15755  	for isspace(tls, int32(uint8(*(*int8)(unsafe.Pointer(z))))) != 0 {
 15756  		z++
 15757  	}
 15758  	return z
 15759  }
 15760  
 15761  func csv_trim_whitespace(tls *libc.TLS, z uintptr) {
 15762  	var n size_t = libc.Xstrlen(tls, z)
 15763  	for n > uint64(0) && isspace(tls, int32(uint8(*(*int8)(unsafe.Pointer(z + uintptr(n)))))) != 0 {
 15764  		n--
 15765  	}
 15766  	*(*int8)(unsafe.Pointer(z + uintptr(n))) = int8(0)
 15767  }
 15768  
 15769  func csv_dequote(tls *libc.TLS, z uintptr) {
 15770  	var j int32
 15771  	var cQuote int8 = *(*int8)(unsafe.Pointer(z))
 15772  	var i size_t
 15773  	var n size_t
 15774  
 15775  	if int32(cQuote) != '\'' && int32(cQuote) != '"' {
 15776  		return
 15777  	}
 15778  	n = libc.Xstrlen(tls, z)
 15779  	if n < uint64(2) || int32(*(*int8)(unsafe.Pointer(z + uintptr(n-uint64(1))))) != int32(*(*int8)(unsafe.Pointer(z))) {
 15780  		return
 15781  	}
 15782  	i = uint64(1)
 15783  	j = 0
 15784  	for ; i < n-uint64(1); i++ {
 15785  		if int32(*(*int8)(unsafe.Pointer(z + uintptr(i)))) == int32(cQuote) && int32(*(*int8)(unsafe.Pointer(z + uintptr(i+uint64(1))))) == int32(cQuote) {
 15786  			i++
 15787  		}
 15788  		*(*int8)(unsafe.Pointer(z + uintptr(libc.PostIncInt32(&j, 1)))) = *(*int8)(unsafe.Pointer(z + uintptr(i)))
 15789  	}
 15790  	*(*int8)(unsafe.Pointer(z + uintptr(j))) = int8(0)
 15791  }
 15792  
 15793  func csv_parameter(tls *libc.TLS, zTag uintptr, nTag int32, z uintptr) uintptr {
 15794  	z = csv_skip_whitespace(tls, z)
 15795  	if libc.Xstrncmp(tls, zTag, z, uint64(nTag)) != 0 {
 15796  		return uintptr(0)
 15797  	}
 15798  	z = csv_skip_whitespace(tls, z+uintptr(nTag))
 15799  	if int32(*(*int8)(unsafe.Pointer(z))) != '=' {
 15800  		return uintptr(0)
 15801  	}
 15802  	return csv_skip_whitespace(tls, z+uintptr(1))
 15803  }
 15804  
 15805  func csv_string_parameter(tls *libc.TLS, p uintptr, zParam uintptr, zArg uintptr, pzVal uintptr) int32 {
 15806  	bp := tls.Alloc(16)
 15807  	defer tls.Free(16)
 15808  
 15809  	var zValue uintptr
 15810  	zValue = csv_parameter(tls, zParam, int32(libc.Xstrlen(tls, zParam)), zArg)
 15811  	if zValue == uintptr(0) {
 15812  		return 0
 15813  	}
 15814  	*(*int8)(unsafe.Pointer(p + 64)) = int8(0)
 15815  	if *(*uintptr)(unsafe.Pointer(pzVal)) != 0 {
 15816  		csv_errmsg(tls, p, ts+4505, libc.VaList(bp, zParam))
 15817  		return 1
 15818  	}
 15819  	*(*uintptr)(unsafe.Pointer(pzVal)) = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp+8, zValue))
 15820  	if *(*uintptr)(unsafe.Pointer(pzVal)) == uintptr(0) {
 15821  		csv_errmsg(tls, p, ts+2069, 0)
 15822  		return 1
 15823  	}
 15824  	csv_trim_whitespace(tls, *(*uintptr)(unsafe.Pointer(pzVal)))
 15825  	csv_dequote(tls, *(*uintptr)(unsafe.Pointer(pzVal)))
 15826  	return 1
 15827  }
 15828  
 15829  func csv_boolean(tls *libc.TLS, z uintptr) int32 {
 15830  	if sqlite3.Xsqlite3_stricmp(tls, ts+4174, z) == 0 ||
 15831  		sqlite3.Xsqlite3_stricmp(tls, ts+4178, z) == 0 ||
 15832  		sqlite3.Xsqlite3_stricmp(tls, ts+4534, z) == 0 ||
 15833  		int32(*(*int8)(unsafe.Pointer(z))) == '1' && int32(*(*int8)(unsafe.Pointer(z + 1))) == 0 {
 15834  		return 1
 15835  	}
 15836  	if sqlite3.Xsqlite3_stricmp(tls, ts+4539, z) == 0 ||
 15837  		sqlite3.Xsqlite3_stricmp(tls, ts+4542, z) == 0 ||
 15838  		sqlite3.Xsqlite3_stricmp(tls, ts+4546, z) == 0 ||
 15839  		int32(*(*int8)(unsafe.Pointer(z))) == '0' && int32(*(*int8)(unsafe.Pointer(z + 1))) == 0 {
 15840  		return 0
 15841  	}
 15842  	return -1
 15843  }
 15844  
 15845  func csv_boolean_parameter(tls *libc.TLS, zTag uintptr, nTag int32, z uintptr, pValue uintptr) int32 {
 15846  	var b int32
 15847  	z = csv_skip_whitespace(tls, z)
 15848  	if libc.Xstrncmp(tls, zTag, z, uint64(nTag)) != 0 {
 15849  		return 0
 15850  	}
 15851  	z = csv_skip_whitespace(tls, z+uintptr(nTag))
 15852  	if int32(*(*int8)(unsafe.Pointer(z))) == 0 {
 15853  		*(*int32)(unsafe.Pointer(pValue)) = 1
 15854  		return 1
 15855  	}
 15856  	if int32(*(*int8)(unsafe.Pointer(z))) != '=' {
 15857  		return 0
 15858  	}
 15859  	z = csv_skip_whitespace(tls, z+uintptr(1))
 15860  	b = csv_boolean(tls, z)
 15861  	if b >= 0 {
 15862  		*(*int32)(unsafe.Pointer(pValue)) = b
 15863  		return 1
 15864  	}
 15865  	return 0
 15866  }
 15867  
 15868  func csvtabConnect(tls *libc.TLS, db uintptr, pAux uintptr, argc int32, argv uintptr, ppVtab uintptr, pzErr uintptr) int32 {
 15869  	bp := tls.Alloc(372)
 15870  	defer tls.Free(372)
 15871  
 15872  	var pNew uintptr
 15873  	var bHeader int32
 15874  	var rc int32
 15875  	var i int32
 15876  	var j int32
 15877  	var tstFlags int32
 15878  
 15879  	var nCol int32
 15880  
 15881  	var z uintptr
 15882  	var zValue uintptr
 15883  	var z1 uintptr
 15884  	var pStr uintptr
 15885  	var zSep uintptr
 15886  	var iCol int32
 15887  	pNew = uintptr(0)
 15888  	bHeader = -1
 15889  	rc = SQLITE_OK
 15890  	tstFlags = 0
 15891  	nCol = -99
 15892  
 15893  	libc.X__builtin___memset_chk(tls, bp+80, 0, uint64(unsafe.Sizeof(CsvReader{})), libc.X__builtin_object_size(tls, bp+80, 0))
 15894  	libc.X__builtin___memset_chk(tls, bp+344, 0, uint64(unsafe.Sizeof([3]uintptr{})), libc.X__builtin_object_size(tls, bp+344, 0))
 15895  	i = 3
 15896  __1:
 15897  	if !(i < argc) {
 15898  		goto __3
 15899  	}
 15900  	z = *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8))
 15901  	j = 0
 15902  __4:
 15903  	if !(uint64(j) < uint64(unsafe.Sizeof(azParam))/uint64(unsafe.Sizeof(uintptr(0)))) {
 15904  		goto __6
 15905  	}
 15906  	if !(csv_string_parameter(tls, bp+80, azParam[j], z, bp+344+uintptr(j)*8) != 0) {
 15907  		goto __7
 15908  	}
 15909  	goto __6
 15910  __7:
 15911  	;
 15912  	goto __5
 15913  __5:
 15914  	j++
 15915  	goto __4
 15916  	goto __6
 15917  __6:
 15918  	;
 15919  	if !(uint64(j) < uint64(unsafe.Sizeof(azParam))/uint64(unsafe.Sizeof(uintptr(0)))) {
 15920  		goto __8
 15921  	}
 15922  	if !(*(*int8)(unsafe.Pointer(bp + 80 + 64)) != 0) {
 15923  		goto __10
 15924  	}
 15925  	goto csvtab_connect_error
 15926  __10:
 15927  	;
 15928  	goto __9
 15929  __8:
 15930  	if !(csv_boolean_parameter(tls, ts+4552, 6, z, bp+368) != 0) {
 15931  		goto __11
 15932  	}
 15933  	if !(bHeader >= 0) {
 15934  		goto __13
 15935  	}
 15936  	csv_errmsg(tls, bp+80, ts+4559, 0)
 15937  	goto csvtab_connect_error
 15938  __13:
 15939  	;
 15940  	bHeader = *(*int32)(unsafe.Pointer(bp + 368))
 15941  	goto __12
 15942  __11:
 15943  	if !(libc.AssignUintptr(&zValue, csv_parameter(tls, ts+4592, 9, z)) != uintptr(0)) {
 15944  		goto __14
 15945  	}
 15946  	tstFlags = int32(uint32(libc.Xatoi(tls, zValue)))
 15947  	goto __15
 15948  __14:
 15949  	if !(libc.AssignUintptr(&zValue, csv_parameter(tls, ts+4602, 7, z)) != uintptr(0)) {
 15950  		goto __16
 15951  	}
 15952  	if !(nCol > 0) {
 15953  		goto __18
 15954  	}
 15955  	csv_errmsg(tls, bp+80, ts+4610, 0)
 15956  	goto csvtab_connect_error
 15957  __18:
 15958  	;
 15959  	nCol = libc.Xatoi(tls, zValue)
 15960  	if !(nCol <= 0) {
 15961  		goto __19
 15962  	}
 15963  	csv_errmsg(tls, bp+80, ts+4644, 0)
 15964  	goto csvtab_connect_error
 15965  __19:
 15966  	;
 15967  	goto __17
 15968  __16:
 15969  	csv_errmsg(tls, bp+80, ts+4675, libc.VaList(bp, z))
 15970  	goto csvtab_connect_error
 15971  __17:
 15972  	;
 15973  __15:
 15974  	;
 15975  __12:
 15976  	;
 15977  __9:
 15978  	;
 15979  	goto __2
 15980  __2:
 15981  	i++
 15982  	goto __1
 15983  	goto __3
 15984  __3:
 15985  	;
 15986  	if !(libc.Bool32(*(*uintptr)(unsafe.Pointer(bp + 344)) == uintptr(0)) == libc.Bool32(*(*uintptr)(unsafe.Pointer(bp + 344 + 1*8)) == uintptr(0))) {
 15987  		goto __20
 15988  	}
 15989  	csv_errmsg(tls, bp+80, ts+4695, 0)
 15990  	goto csvtab_connect_error
 15991  __20:
 15992  	;
 15993  	if !((nCol <= 0 || bHeader == 1) &&
 15994  		csv_reader_open(tls, bp+80, *(*uintptr)(unsafe.Pointer(bp + 344)), *(*uintptr)(unsafe.Pointer(bp + 344 + 1*8))) != 0) {
 15995  		goto __21
 15996  	}
 15997  	goto csvtab_connect_error
 15998  __21:
 15999  	;
 16000  	pNew = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(CsvTable{})))
 16001  	*(*uintptr)(unsafe.Pointer(ppVtab)) = pNew
 16002  	if !(pNew == uintptr(0)) {
 16003  		goto __22
 16004  	}
 16005  	goto csvtab_connect_oom
 16006  __22:
 16007  	;
 16008  	libc.X__builtin___memset_chk(tls, pNew, 0, uint64(unsafe.Sizeof(CsvTable{})), libc.X__builtin_object_size(tls, pNew, 0))
 16009  	if !(*(*uintptr)(unsafe.Pointer(bp + 344 + 2*8)) == uintptr(0)) {
 16010  		goto __23
 16011  	}
 16012  	pStr = sqlite3.Xsqlite3_str_new(tls, uintptr(0))
 16013  	zSep = ts + 584
 16014  	iCol = 0
 16015  	sqlite3.Xsqlite3_str_appendf(tls, pStr, ts+979, 0)
 16016  	if !(nCol < 0 && bHeader < 1) {
 16017  		goto __25
 16018  	}
 16019  	nCol = 0
 16020  __26:
 16021  	csv_read_one_field(tls, bp+80)
 16022  	nCol++
 16023  	goto __27
 16024  __27:
 16025  	if (*CsvReader)(unsafe.Pointer(bp+80)).FcTerm == ',' {
 16026  		goto __26
 16027  	}
 16028  	goto __28
 16029  __28:
 16030  	;
 16031  __25:
 16032  	;
 16033  	if !(nCol > 0 && bHeader < 1) {
 16034  		goto __29
 16035  	}
 16036  	iCol = 0
 16037  __31:
 16038  	if !(iCol < nCol) {
 16039  		goto __33
 16040  	}
 16041  	sqlite3.Xsqlite3_str_appendf(tls, pStr, ts+4747, libc.VaList(bp+8, zSep, iCol))
 16042  	zSep = ts + 4758
 16043  	goto __32
 16044  __32:
 16045  	iCol++
 16046  	goto __31
 16047  	goto __33
 16048  __33:
 16049  	;
 16050  	goto __30
 16051  __29:
 16052  __34:
 16053  	z1 = csv_read_one_field(tls, bp+80)
 16054  	if !(nCol > 0 && iCol < nCol || nCol < 0 && bHeader != 0) {
 16055  		goto __37
 16056  	}
 16057  	sqlite3.Xsqlite3_str_appendf(tls, pStr, ts+4760, libc.VaList(bp+24, zSep, z1))
 16058  	zSep = ts + 4758
 16059  	iCol++
 16060  __37:
 16061  	;
 16062  	goto __35
 16063  __35:
 16064  	if (*CsvReader)(unsafe.Pointer(bp+80)).FcTerm == ',' {
 16065  		goto __34
 16066  	}
 16067  	goto __36
 16068  __36:
 16069  	;
 16070  	if !(nCol < 0) {
 16071  		goto __38
 16072  	}
 16073  	nCol = iCol
 16074  	goto __39
 16075  __38:
 16076  __40:
 16077  	if !(iCol < nCol) {
 16078  		goto __41
 16079  	}
 16080  	sqlite3.Xsqlite3_str_appendf(tls, pStr, ts+4747, libc.VaList(bp+40, zSep, libc.PreIncInt32(&iCol, 1)))
 16081  	zSep = ts + 4758
 16082  	goto __40
 16083  __41:
 16084  	;
 16085  __39:
 16086  	;
 16087  __30:
 16088  	;
 16089  	(*CsvTable)(unsafe.Pointer(pNew)).FnCol = nCol
 16090  	sqlite3.Xsqlite3_str_appendf(tls, pStr, ts+585, 0)
 16091  	*(*uintptr)(unsafe.Pointer(bp + 344 + 2*8)) = sqlite3.Xsqlite3_str_finish(tls, pStr)
 16092  	if !(*(*uintptr)(unsafe.Pointer(bp + 344 + 2*8)) == uintptr(0)) {
 16093  		goto __42
 16094  	}
 16095  	goto csvtab_connect_oom
 16096  __42:
 16097  	;
 16098  	goto __24
 16099  __23:
 16100  	if !(nCol < 0) {
 16101  		goto __43
 16102  	}
 16103  __45:
 16104  	csv_read_one_field(tls, bp+80)
 16105  	(*CsvTable)(unsafe.Pointer(pNew)).FnCol++
 16106  	goto __46
 16107  __46:
 16108  	if (*CsvReader)(unsafe.Pointer(bp+80)).FcTerm == ',' {
 16109  		goto __45
 16110  	}
 16111  	goto __47
 16112  __47:
 16113  	;
 16114  	goto __44
 16115  __43:
 16116  	(*CsvTable)(unsafe.Pointer(pNew)).FnCol = nCol
 16117  __44:
 16118  	;
 16119  __24:
 16120  	;
 16121  	(*CsvTable)(unsafe.Pointer(pNew)).FzFilename = *(*uintptr)(unsafe.Pointer(bp + 344))
 16122  	*(*uintptr)(unsafe.Pointer(bp + 344)) = uintptr(0)
 16123  	(*CsvTable)(unsafe.Pointer(pNew)).FzData = *(*uintptr)(unsafe.Pointer(bp + 344 + 1*8))
 16124  	*(*uintptr)(unsafe.Pointer(bp + 344 + 1*8)) = uintptr(0)
 16125  	(*CsvTable)(unsafe.Pointer(pNew)).FtstFlags = uint32(tstFlags)
 16126  	if !(bHeader != 1) {
 16127  		goto __48
 16128  	}
 16129  	(*CsvTable)(unsafe.Pointer(pNew)).FiStart = int64(0)
 16130  	goto __49
 16131  __48:
 16132  	if !((*CsvTable)(unsafe.Pointer(pNew)).FzData != 0) {
 16133  		goto __50
 16134  	}
 16135  	(*CsvTable)(unsafe.Pointer(pNew)).FiStart = int64(int32((*CsvReader)(unsafe.Pointer(bp + 80)).FiIn))
 16136  	goto __51
 16137  __50:
 16138  	(*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))
 16139  __51:
 16140  	;
 16141  __49:
 16142  	;
 16143  	csv_reader_reset(tls, bp+80)
 16144  	rc = sqlite3.Xsqlite3_declare_vtab(tls, db, *(*uintptr)(unsafe.Pointer(bp + 344 + 2*8)))
 16145  	if !(rc != 0) {
 16146  		goto __52
 16147  	}
 16148  	csv_errmsg(tls, bp+80, ts+4772, libc.VaList(bp+56, *(*uintptr)(unsafe.Pointer(bp + 344 + 2*8)), sqlite3.Xsqlite3_errmsg(tls, db)))
 16149  	goto csvtab_connect_error
 16150  __52:
 16151  	;
 16152  	i = 0
 16153  __53:
 16154  	if !(uint64(i) < uint64(unsafe.Sizeof([3]uintptr{}))/uint64(unsafe.Sizeof(uintptr(0)))) {
 16155  		goto __55
 16156  	}
 16157  	sqlite3.Xsqlite3_free(tls, *(*uintptr)(unsafe.Pointer(bp + 344 + uintptr(i)*8)))
 16158  	goto __54
 16159  __54:
 16160  	i++
 16161  	goto __53
 16162  	goto __55
 16163  __55:
 16164  	;
 16165  	sqlite3.Xsqlite3_vtab_config(tls, db, SQLITE_VTAB_DIRECTONLY, 0)
 16166  	return SQLITE_OK
 16167  
 16168  csvtab_connect_oom:
 16169  	rc = SQLITE_NOMEM
 16170  	csv_errmsg(tls, bp+80, ts+2069, 0)
 16171  
 16172  csvtab_connect_error:
 16173  	if !(pNew != 0) {
 16174  		goto __56
 16175  	}
 16176  	csvtabDisconnect(tls, pNew)
 16177  __56:
 16178  	;
 16179  	i = 0
 16180  __57:
 16181  	if !(uint64(i) < uint64(unsafe.Sizeof([3]uintptr{}))/uint64(unsafe.Sizeof(uintptr(0)))) {
 16182  		goto __59
 16183  	}
 16184  	sqlite3.Xsqlite3_free(tls, *(*uintptr)(unsafe.Pointer(bp + 344 + uintptr(i)*8)))
 16185  	goto __58
 16186  __58:
 16187  	i++
 16188  	goto __57
 16189  	goto __59
 16190  __59:
 16191  	;
 16192  	if !(*(*int8)(unsafe.Pointer(bp + 80 + 64)) != 0) {
 16193  		goto __60
 16194  	}
 16195  	sqlite3.Xsqlite3_free(tls, *(*uintptr)(unsafe.Pointer(pzErr)))
 16196  	*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp+72, bp+80+64))
 16197  __60:
 16198  	;
 16199  	csv_reader_reset(tls, bp+80)
 16200  	if !(rc == SQLITE_OK) {
 16201  		goto __61
 16202  	}
 16203  	rc = SQLITE_ERROR
 16204  __61:
 16205  	;
 16206  	return rc
 16207  }
 16208  
 16209  var azParam = [3]uintptr{
 16210  	ts + 4794, ts + 4803, ts + 4808,
 16211  }
 16212  
 16213  func csvtabCursorRowReset(tls *libc.TLS, pCur uintptr) {
 16214  	var pTab uintptr = (*CsvCursor)(unsafe.Pointer(pCur)).Fbase.FpVtab
 16215  	var i int32
 16216  	for i = 0; i < (*CsvTable)(unsafe.Pointer(pTab)).FnCol; i++ {
 16217  		sqlite3.Xsqlite3_free(tls, *(*uintptr)(unsafe.Pointer((*CsvCursor)(unsafe.Pointer(pCur)).FazVal + uintptr(i)*8)))
 16218  		*(*uintptr)(unsafe.Pointer((*CsvCursor)(unsafe.Pointer(pCur)).FazVal + uintptr(i)*8)) = uintptr(0)
 16219  		*(*int32)(unsafe.Pointer((*CsvCursor)(unsafe.Pointer(pCur)).FaLen + uintptr(i)*4)) = 0
 16220  	}
 16221  }
 16222  
 16223  func csvtabCreate(tls *libc.TLS, db uintptr, pAux uintptr, argc int32, argv uintptr, ppVtab uintptr, pzErr uintptr) int32 {
 16224  	return csvtabConnect(tls, db, pAux, argc, argv, ppVtab, pzErr)
 16225  }
 16226  
 16227  func csvtabClose(tls *libc.TLS, cur uintptr) int32 {
 16228  	var pCur uintptr = cur
 16229  	csvtabCursorRowReset(tls, pCur)
 16230  	csv_reader_reset(tls, pCur+8)
 16231  	sqlite3.Xsqlite3_free(tls, cur)
 16232  	return SQLITE_OK
 16233  }
 16234  
 16235  func csvtabOpen(tls *libc.TLS, p uintptr, ppCursor uintptr) int32 {
 16236  	var pTab uintptr = p
 16237  	var pCur uintptr
 16238  	var nByte size_t
 16239  	nByte = uint64(unsafe.Sizeof(CsvCursor{})) + (uint64(unsafe.Sizeof(uintptr(0)))+uint64(unsafe.Sizeof(int32(0))))*uint64((*CsvTable)(unsafe.Pointer(pTab)).FnCol)
 16240  	pCur = sqlite3.Xsqlite3_malloc64(tls, nByte)
 16241  	if pCur == uintptr(0) {
 16242  		return SQLITE_NOMEM
 16243  	}
 16244  	libc.X__builtin___memset_chk(tls, pCur, 0, nByte, libc.X__builtin_object_size(tls, pCur, 0))
 16245  	(*CsvCursor)(unsafe.Pointer(pCur)).FazVal = pCur + 1*296
 16246  	(*CsvCursor)(unsafe.Pointer(pCur)).FaLen = (*CsvCursor)(unsafe.Pointer(pCur)).FazVal + uintptr((*CsvTable)(unsafe.Pointer(pTab)).FnCol)*8
 16247  	*(*uintptr)(unsafe.Pointer(ppCursor)) = pCur
 16248  	if csv_reader_open(tls, pCur+8, (*CsvTable)(unsafe.Pointer(pTab)).FzFilename, (*CsvTable)(unsafe.Pointer(pTab)).FzData) != 0 {
 16249  		csv_xfer_error(tls, pTab, pCur+8)
 16250  		return SQLITE_ERROR
 16251  	}
 16252  	return SQLITE_OK
 16253  }
 16254  
 16255  func csvtabNext(tls *libc.TLS, cur uintptr) int32 {
 16256  	var pCur uintptr = cur
 16257  	var pTab uintptr = (*sqlite3_vtab_cursor)(unsafe.Pointer(cur)).FpVtab
 16258  	var i int32 = 0
 16259  	var z uintptr
 16260  	for __ccgo := true; __ccgo; __ccgo = (*CsvCursor)(unsafe.Pointer(pCur)).Frdr.FcTerm == ',' {
 16261  		z = csv_read_one_field(tls, pCur+8)
 16262  		if z == uintptr(0) {
 16263  			break
 16264  		}
 16265  		if i < (*CsvTable)(unsafe.Pointer(pTab)).FnCol {
 16266  			if *(*int32)(unsafe.Pointer((*CsvCursor)(unsafe.Pointer(pCur)).FaLen + uintptr(i)*4)) < (*CsvCursor)(unsafe.Pointer(pCur)).Frdr.Fn+1 {
 16267  				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))
 16268  				if zNew == uintptr(0) {
 16269  					csv_errmsg(tls, pCur+8, ts+2069, 0)
 16270  					csv_xfer_error(tls, pTab, pCur+8)
 16271  					break
 16272  				}
 16273  				*(*uintptr)(unsafe.Pointer((*CsvCursor)(unsafe.Pointer(pCur)).FazVal + uintptr(i)*8)) = zNew
 16274  				*(*int32)(unsafe.Pointer((*CsvCursor)(unsafe.Pointer(pCur)).FaLen + uintptr(i)*4)) = (*CsvCursor)(unsafe.Pointer(pCur)).Frdr.Fn + 1
 16275  			}
 16276  			libc.X__builtin___memcpy_chk(tls, *(*uintptr)(unsafe.Pointer((*CsvCursor)(unsafe.Pointer(pCur)).FazVal + uintptr(i)*8)), z, uint64((*CsvCursor)(unsafe.Pointer(pCur)).Frdr.Fn+1), libc.X__builtin_object_size(tls, *(*uintptr)(unsafe.Pointer((*CsvCursor)(unsafe.Pointer(pCur)).FazVal + uintptr(i)*8)), 0))
 16277  			i++
 16278  		}
 16279  	}
 16280  	if z == uintptr(0) || (*CsvCursor)(unsafe.Pointer(pCur)).Frdr.FcTerm == -1 && i < (*CsvTable)(unsafe.Pointer(pTab)).FnCol {
 16281  		(*CsvCursor)(unsafe.Pointer(pCur)).FiRowid = int64(-1)
 16282  	} else {
 16283  		(*CsvCursor)(unsafe.Pointer(pCur)).FiRowid++
 16284  		for i < (*CsvTable)(unsafe.Pointer(pTab)).FnCol {
 16285  			sqlite3.Xsqlite3_free(tls, *(*uintptr)(unsafe.Pointer((*CsvCursor)(unsafe.Pointer(pCur)).FazVal + uintptr(i)*8)))
 16286  			*(*uintptr)(unsafe.Pointer((*CsvCursor)(unsafe.Pointer(pCur)).FazVal + uintptr(i)*8)) = uintptr(0)
 16287  			*(*int32)(unsafe.Pointer((*CsvCursor)(unsafe.Pointer(pCur)).FaLen + uintptr(i)*4)) = 0
 16288  			i++
 16289  		}
 16290  	}
 16291  	return SQLITE_OK
 16292  }
 16293  
 16294  func csvtabColumn(tls *libc.TLS, cur uintptr, ctx uintptr, i int32) int32 {
 16295  	var pCur uintptr = cur
 16296  	var pTab uintptr = (*sqlite3_vtab_cursor)(unsafe.Pointer(cur)).FpVtab
 16297  	if i >= 0 && i < (*CsvTable)(unsafe.Pointer(pTab)).FnCol && *(*uintptr)(unsafe.Pointer((*CsvCursor)(unsafe.Pointer(pCur)).FazVal + uintptr(i)*8)) != uintptr(0) {
 16298  		sqlite3.Xsqlite3_result_text(tls, ctx, *(*uintptr)(unsafe.Pointer((*CsvCursor)(unsafe.Pointer(pCur)).FazVal + uintptr(i)*8)), -1, libc.UintptrFromInt32(-1))
 16299  	}
 16300  	return SQLITE_OK
 16301  }
 16302  
 16303  func csvtabRowid(tls *libc.TLS, cur uintptr, pRowid uintptr) int32 {
 16304  	var pCur uintptr = cur
 16305  	*(*sqlite_int64)(unsafe.Pointer(pRowid)) = (*CsvCursor)(unsafe.Pointer(pCur)).FiRowid
 16306  	return SQLITE_OK
 16307  }
 16308  
 16309  func csvtabEof(tls *libc.TLS, cur uintptr) int32 {
 16310  	var pCur uintptr = cur
 16311  	return libc.Bool32((*CsvCursor)(unsafe.Pointer(pCur)).FiRowid < int64(0))
 16312  }
 16313  
 16314  func csvtabFilter(tls *libc.TLS, pVtabCursor uintptr, idxNum int32, idxStr uintptr, argc int32, argv uintptr) int32 {
 16315  	var pCur uintptr = pVtabCursor
 16316  	var pTab uintptr = (*sqlite3_vtab_cursor)(unsafe.Pointer(pVtabCursor)).FpVtab
 16317  	(*CsvCursor)(unsafe.Pointer(pCur)).FiRowid = int64(0)
 16318  	if (*CsvCursor)(unsafe.Pointer(pCur)).Frdr.Fin == uintptr(0) {
 16319  		(*CsvCursor)(unsafe.Pointer(pCur)).Frdr.FiIn = size_t((*CsvTable)(unsafe.Pointer(pTab)).FiStart)
 16320  	} else {
 16321  		libc.Xfseek(tls, (*CsvCursor)(unsafe.Pointer(pCur)).Frdr.Fin, (*CsvTable)(unsafe.Pointer(pTab)).FiStart, SEEK_SET)
 16322  		(*CsvCursor)(unsafe.Pointer(pCur)).Frdr.FiIn = uint64(0)
 16323  		(*CsvCursor)(unsafe.Pointer(pCur)).Frdr.FnIn = uint64(0)
 16324  	}
 16325  	return csvtabNext(tls, pVtabCursor)
 16326  }
 16327  
 16328  func csvtabBestIndex(tls *libc.TLS, tab uintptr, pIdxInfo uintptr) int32 {
 16329  	(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = float64(1000000)
 16330  	if (*CsvTable)(unsafe.Pointer(tab)).FtstFlags&uint32(CSVTEST_FIDX) != uint32(0) {
 16331  		var i int32
 16332  		var nConst int32 = 0
 16333  		for i = 0; i < (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnConstraint; i++ {
 16334  			var op uint8
 16335  			if int32((*sqlite3_index_constraint)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint+uintptr(i)*12)).Fusable) == 0 {
 16336  				continue
 16337  			}
 16338  			op = (*sqlite3_index_constraint)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint + uintptr(i)*12)).Fop
 16339  			if int32(op) == SQLITE_INDEX_CONSTRAINT_EQ ||
 16340  				int32(op) == SQLITE_INDEX_CONSTRAINT_LIKE ||
 16341  				int32(op) == SQLITE_INDEX_CONSTRAINT_GLOB {
 16342  				(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = float64(10)
 16343  				(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(nConst)*8)).FargvIndex = nConst + 1
 16344  				nConst++
 16345  			}
 16346  		}
 16347  	}
 16348  	return SQLITE_OK
 16349  }
 16350  
 16351  var CsvModule = sqlite3_module{
 16352  	FxCreate:     0,
 16353  	FxConnect:    0,
 16354  	FxBestIndex:  0,
 16355  	FxDisconnect: 0,
 16356  	FxDestroy:    0,
 16357  	FxOpen:       0,
 16358  	FxClose:      0,
 16359  	FxFilter:     0,
 16360  	FxNext:       0,
 16361  	FxEof:        0,
 16362  	FxColumn:     0,
 16363  	FxRowid:      0,
 16364  }
 16365  
 16366  func csvtabUpdate(tls *libc.TLS, p uintptr, n int32, v uintptr, x uintptr) int32 {
 16367  	return SQLITE_READONLY
 16368  }
 16369  
 16370  var CsvModuleFauxWrite = sqlite3_module{
 16371  	FxCreate:     0,
 16372  	FxConnect:    0,
 16373  	FxBestIndex:  0,
 16374  	FxDisconnect: 0,
 16375  	FxDestroy:    0,
 16376  	FxOpen:       0,
 16377  	FxClose:      0,
 16378  	FxFilter:     0,
 16379  	FxNext:       0,
 16380  	FxEof:        0,
 16381  	FxColumn:     0,
 16382  	FxRowid:      0,
 16383  	FxUpdate:     0,
 16384  }
 16385  
 16386  func sqlite3_csv_init(tls *libc.TLS, db uintptr, pzErrMsg uintptr, pApi uintptr) int32 {
 16387  	var rc int32
 16388  	_ = pApi
 16389  
 16390  	rc = sqlite3.Xsqlite3_create_module(tls, db, ts+4815, uintptr(unsafe.Pointer(&CsvModule)), uintptr(0))
 16391  	if rc == SQLITE_OK {
 16392  		rc = sqlite3.Xsqlite3_create_module(tls, db, ts+4819, uintptr(unsafe.Pointer(&CsvModuleFauxWrite)), uintptr(0))
 16393  	}
 16394  	return rc
 16395  }
 16396  
 16397  type Decimal1 = struct {
 16398  	Fsign        int8
 16399  	Foom         int8
 16400  	FisNull      int8
 16401  	FisInit      int8
 16402  	FnDigit      int32
 16403  	FnFrac       int32
 16404  	F__ccgo_pad1 [4]byte
 16405  	Fa           uintptr
 16406  }
 16407  
 16408  type Decimal = Decimal1
 16409  
 16410  func decimal_clear(tls *libc.TLS, p uintptr) {
 16411  	sqlite3.Xsqlite3_free(tls, (*Decimal)(unsafe.Pointer(p)).Fa)
 16412  }
 16413  
 16414  func decimal_free(tls *libc.TLS, p uintptr) {
 16415  	if p != 0 {
 16416  		decimal_clear(tls, p)
 16417  		sqlite3.Xsqlite3_free(tls, p)
 16418  	}
 16419  }
 16420  
 16421  func decimal_new(tls *libc.TLS, pCtx uintptr, pIn uintptr, nAlt int32, zAlt uintptr) uintptr {
 16422  	var p uintptr
 16423  	var n int32
 16424  	var i int32
 16425  	var zIn uintptr
 16426  	var iExp int32
 16427  	var j int32
 16428  	var neg int32
 16429  	var c int8
 16430  	var nExtra int32
 16431  	iExp = 0
 16432  	p = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(Decimal{})))
 16433  	if !(p == uintptr(0)) {
 16434  		goto __1
 16435  	}
 16436  	goto new_no_mem
 16437  __1:
 16438  	;
 16439  	(*Decimal)(unsafe.Pointer(p)).Fsign = int8(0)
 16440  	(*Decimal)(unsafe.Pointer(p)).Foom = int8(0)
 16441  	(*Decimal)(unsafe.Pointer(p)).FisInit = int8(1)
 16442  	(*Decimal)(unsafe.Pointer(p)).FisNull = int8(0)
 16443  	(*Decimal)(unsafe.Pointer(p)).FnDigit = 0
 16444  	(*Decimal)(unsafe.Pointer(p)).FnFrac = 0
 16445  	if !(zAlt != 0) {
 16446  		goto __2
 16447  	}
 16448  	n = nAlt
 16449  	zIn = zAlt
 16450  	goto __3
 16451  __2:
 16452  	if !(sqlite3.Xsqlite3_value_type(tls, pIn) == SQLITE_NULL) {
 16453  		goto __4
 16454  	}
 16455  	(*Decimal)(unsafe.Pointer(p)).Fa = uintptr(0)
 16456  	(*Decimal)(unsafe.Pointer(p)).FisNull = int8(1)
 16457  	return p
 16458  __4:
 16459  	;
 16460  	n = sqlite3.Xsqlite3_value_bytes(tls, pIn)
 16461  	zIn = sqlite3.Xsqlite3_value_text(tls, pIn)
 16462  __3:
 16463  	;
 16464  	(*Decimal)(unsafe.Pointer(p)).Fa = sqlite3.Xsqlite3_malloc64(tls, uint64(n+1))
 16465  	if !((*Decimal)(unsafe.Pointer(p)).Fa == uintptr(0)) {
 16466  		goto __5
 16467  	}
 16468  	goto new_no_mem
 16469  __5:
 16470  	;
 16471  	i = 0
 16472  __6:
 16473  	if !(isspace(tls, int32(*(*uint8)(unsafe.Pointer(zIn + uintptr(i))))) != 0) {
 16474  		goto __8
 16475  	}
 16476  	goto __7
 16477  __7:
 16478  	i++
 16479  	goto __6
 16480  	goto __8
 16481  __8:
 16482  	;
 16483  	if !(int32(*(*uint8)(unsafe.Pointer(zIn + uintptr(i)))) == '-') {
 16484  		goto __9
 16485  	}
 16486  	(*Decimal)(unsafe.Pointer(p)).Fsign = int8(1)
 16487  	i++
 16488  	goto __10
 16489  __9:
 16490  	if !(int32(*(*uint8)(unsafe.Pointer(zIn + uintptr(i)))) == '+') {
 16491  		goto __11
 16492  	}
 16493  	i++
 16494  __11:
 16495  	;
 16496  __10:
 16497  	;
 16498  __12:
 16499  	if !(i < n && int32(*(*uint8)(unsafe.Pointer(zIn + uintptr(i)))) == '0') {
 16500  		goto __13
 16501  	}
 16502  	i++
 16503  	goto __12
 16504  __13:
 16505  	;
 16506  __14:
 16507  	if !(i < n) {
 16508  		goto __15
 16509  	}
 16510  	c = int8(*(*uint8)(unsafe.Pointer(zIn + uintptr(i))))
 16511  	if !(int32(c) >= '0' && int32(c) <= '9') {
 16512  		goto __16
 16513  	}
 16514  	*(*int8)(unsafe.Pointer((*Decimal)(unsafe.Pointer(p)).Fa + uintptr(libc.PostIncInt32(&(*Decimal)(unsafe.Pointer(p)).FnDigit, 1)))) = int8(int32(c) - '0')
 16515  	goto __17
 16516  __16:
 16517  	if !(int32(c) == '.') {
 16518  		goto __18
 16519  	}
 16520  	(*Decimal)(unsafe.Pointer(p)).FnFrac = (*Decimal)(unsafe.Pointer(p)).FnDigit + 1
 16521  	goto __19
 16522  __18:
 16523  	if !(int32(c) == 'e' || int32(c) == 'E') {
 16524  		goto __20
 16525  	}
 16526  	j = i + 1
 16527  	neg = 0
 16528  	if !(j >= n) {
 16529  		goto __21
 16530  	}
 16531  	goto __15
 16532  __21:
 16533  	;
 16534  	if !(int32(*(*uint8)(unsafe.Pointer(zIn + uintptr(j)))) == '-') {
 16535  		goto __22
 16536  	}
 16537  	neg = 1
 16538  	j++
 16539  	goto __23
 16540  __22:
 16541  	if !(int32(*(*uint8)(unsafe.Pointer(zIn + uintptr(j)))) == '+') {
 16542  		goto __24
 16543  	}
 16544  	j++
 16545  __24:
 16546  	;
 16547  __23:
 16548  	;
 16549  __25:
 16550  	if !(j < n && iExp < 1000000) {
 16551  		goto __26
 16552  	}
 16553  	if !(int32(*(*uint8)(unsafe.Pointer(zIn + uintptr(j)))) >= '0' && int32(*(*uint8)(unsafe.Pointer(zIn + uintptr(j)))) <= '9') {
 16554  		goto __27
 16555  	}
 16556  	iExp = iExp*10 + int32(*(*uint8)(unsafe.Pointer(zIn + uintptr(j)))) - '0'
 16557  __27:
 16558  	;
 16559  	j++
 16560  	goto __25
 16561  __26:
 16562  	;
 16563  	if !(neg != 0) {
 16564  		goto __28
 16565  	}
 16566  	iExp = -iExp
 16567  __28:
 16568  	;
 16569  	goto __15
 16570  __20:
 16571  	;
 16572  __19:
 16573  	;
 16574  __17:
 16575  	;
 16576  	i++
 16577  	goto __14
 16578  __15:
 16579  	;
 16580  	if !((*Decimal)(unsafe.Pointer(p)).FnFrac != 0) {
 16581  		goto __29
 16582  	}
 16583  	(*Decimal)(unsafe.Pointer(p)).FnFrac = (*Decimal)(unsafe.Pointer(p)).FnDigit - ((*Decimal)(unsafe.Pointer(p)).FnFrac - 1)
 16584  __29:
 16585  	;
 16586  	if !(iExp > 0) {
 16587  		goto __30
 16588  	}
 16589  	if !((*Decimal)(unsafe.Pointer(p)).FnFrac > 0) {
 16590  		goto __32
 16591  	}
 16592  	if !(iExp <= (*Decimal)(unsafe.Pointer(p)).FnFrac) {
 16593  		goto __33
 16594  	}
 16595  	*(*int32)(unsafe.Pointer(p + 8)) -= iExp
 16596  	iExp = 0
 16597  	goto __34
 16598  __33:
 16599  	iExp = iExp - (*Decimal)(unsafe.Pointer(p)).FnFrac
 16600  	(*Decimal)(unsafe.Pointer(p)).FnFrac = 0
 16601  __34:
 16602  	;
 16603  __32:
 16604  	;
 16605  	if !(iExp > 0) {
 16606  		goto __35
 16607  	}
 16608  	(*Decimal)(unsafe.Pointer(p)).Fa = sqlite3.Xsqlite3_realloc64(tls, (*Decimal)(unsafe.Pointer(p)).Fa, uint64((*Decimal)(unsafe.Pointer(p)).FnDigit+iExp+1))
 16609  	if !((*Decimal)(unsafe.Pointer(p)).Fa == uintptr(0)) {
 16610  		goto __36
 16611  	}
 16612  	goto new_no_mem
 16613  __36:
 16614  	;
 16615  	libc.X__builtin___memset_chk(tls, (*Decimal)(unsafe.Pointer(p)).Fa+uintptr((*Decimal)(unsafe.Pointer(p)).FnDigit), 0, uint64(iExp), libc.X__builtin_object_size(tls, (*Decimal)(unsafe.Pointer(p)).Fa+uintptr((*Decimal)(unsafe.Pointer(p)).FnDigit), 0))
 16616  	*(*int32)(unsafe.Pointer(p + 4)) += iExp
 16617  __35:
 16618  	;
 16619  	goto __31
 16620  __30:
 16621  	if !(iExp < 0) {
 16622  		goto __37
 16623  	}
 16624  	iExp = -iExp
 16625  	nExtra = (*Decimal)(unsafe.Pointer(p)).FnDigit - (*Decimal)(unsafe.Pointer(p)).FnFrac - 1
 16626  	if !(nExtra != 0) {
 16627  		goto __38
 16628  	}
 16629  	if !(nExtra >= iExp) {
 16630  		goto __39
 16631  	}
 16632  	*(*int32)(unsafe.Pointer(p + 8)) += iExp
 16633  	iExp = 0
 16634  	goto __40
 16635  __39:
 16636  	iExp = iExp - nExtra
 16637  	(*Decimal)(unsafe.Pointer(p)).FnFrac = (*Decimal)(unsafe.Pointer(p)).FnDigit - 1
 16638  __40:
 16639  	;
 16640  __38:
 16641  	;
 16642  	if !(iExp > 0) {
 16643  		goto __41
 16644  	}
 16645  	(*Decimal)(unsafe.Pointer(p)).Fa = sqlite3.Xsqlite3_realloc64(tls, (*Decimal)(unsafe.Pointer(p)).Fa, uint64((*Decimal)(unsafe.Pointer(p)).FnDigit+iExp+1))
 16646  	if !((*Decimal)(unsafe.Pointer(p)).Fa == uintptr(0)) {
 16647  		goto __42
 16648  	}
 16649  	goto new_no_mem
 16650  __42:
 16651  	;
 16652  	libc.X__builtin___memmove_chk(tls, (*Decimal)(unsafe.Pointer(p)).Fa+uintptr(iExp), (*Decimal)(unsafe.Pointer(p)).Fa, uint64((*Decimal)(unsafe.Pointer(p)).FnDigit), libc.X__builtin_object_size(tls, (*Decimal)(unsafe.Pointer(p)).Fa+uintptr(iExp), 0))
 16653  	libc.X__builtin___memset_chk(tls, (*Decimal)(unsafe.Pointer(p)).Fa, 0, uint64(iExp), libc.X__builtin_object_size(tls, (*Decimal)(unsafe.Pointer(p)).Fa, 0))
 16654  	*(*int32)(unsafe.Pointer(p + 4)) += iExp
 16655  	*(*int32)(unsafe.Pointer(p + 8)) += iExp
 16656  __41:
 16657  	;
 16658  __37:
 16659  	;
 16660  __31:
 16661  	;
 16662  	return p
 16663  
 16664  new_no_mem:
 16665  	if !(pCtx != 0) {
 16666  		goto __43
 16667  	}
 16668  	sqlite3.Xsqlite3_result_error_nomem(tls, pCtx)
 16669  __43:
 16670  	;
 16671  	sqlite3.Xsqlite3_free(tls, p)
 16672  	return uintptr(0)
 16673  }
 16674  
 16675  func decimal_result(tls *libc.TLS, pCtx uintptr, p uintptr) {
 16676  	var z uintptr
 16677  	var i int32
 16678  	var j int32
 16679  	var n int32
 16680  	if p == uintptr(0) || (*Decimal)(unsafe.Pointer(p)).Foom != 0 {
 16681  		sqlite3.Xsqlite3_result_error_nomem(tls, pCtx)
 16682  		return
 16683  	}
 16684  	if (*Decimal)(unsafe.Pointer(p)).FisNull != 0 {
 16685  		sqlite3.Xsqlite3_result_null(tls, pCtx)
 16686  		return
 16687  	}
 16688  	z = sqlite3.Xsqlite3_malloc(tls, (*Decimal)(unsafe.Pointer(p)).FnDigit+4)
 16689  	if z == uintptr(0) {
 16690  		sqlite3.Xsqlite3_result_error_nomem(tls, pCtx)
 16691  		return
 16692  	}
 16693  	i = 0
 16694  	if (*Decimal)(unsafe.Pointer(p)).FnDigit == 0 || (*Decimal)(unsafe.Pointer(p)).FnDigit == 1 && int32(*(*int8)(unsafe.Pointer((*Decimal)(unsafe.Pointer(p)).Fa))) == 0 {
 16695  		(*Decimal)(unsafe.Pointer(p)).Fsign = int8(0)
 16696  	}
 16697  	if (*Decimal)(unsafe.Pointer(p)).Fsign != 0 {
 16698  		*(*int8)(unsafe.Pointer(z)) = int8('-')
 16699  		i = 1
 16700  	}
 16701  	n = (*Decimal)(unsafe.Pointer(p)).FnDigit - (*Decimal)(unsafe.Pointer(p)).FnFrac
 16702  	if n <= 0 {
 16703  		*(*int8)(unsafe.Pointer(z + uintptr(libc.PostIncInt32(&i, 1)))) = int8('0')
 16704  	}
 16705  	j = 0
 16706  	for n > 1 && int32(*(*int8)(unsafe.Pointer((*Decimal)(unsafe.Pointer(p)).Fa + uintptr(j)))) == 0 {
 16707  		j++
 16708  		n--
 16709  	}
 16710  	for n > 0 {
 16711  		*(*int8)(unsafe.Pointer(z + uintptr(libc.PostIncInt32(&i, 1)))) = int8(int32(*(*int8)(unsafe.Pointer((*Decimal)(unsafe.Pointer(p)).Fa + uintptr(j)))) + '0')
 16712  		j++
 16713  		n--
 16714  	}
 16715  	if (*Decimal)(unsafe.Pointer(p)).FnFrac != 0 {
 16716  		*(*int8)(unsafe.Pointer(z + uintptr(libc.PostIncInt32(&i, 1)))) = int8('.')
 16717  		for __ccgo := true; __ccgo; __ccgo = j < (*Decimal)(unsafe.Pointer(p)).FnDigit {
 16718  			*(*int8)(unsafe.Pointer(z + uintptr(libc.PostIncInt32(&i, 1)))) = int8(int32(*(*int8)(unsafe.Pointer((*Decimal)(unsafe.Pointer(p)).Fa + uintptr(j)))) + '0')
 16719  			j++
 16720  		}
 16721  	}
 16722  	*(*int8)(unsafe.Pointer(z + uintptr(i))) = int8(0)
 16723  	sqlite3.Xsqlite3_result_text(tls, pCtx, z, i, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{sqlite3.Xsqlite3_free})))
 16724  }
 16725  
 16726  func decimalFunc(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 16727  	var p uintptr = decimal_new(tls, context, *(*uintptr)(unsafe.Pointer(argv)), 0, uintptr(0))
 16728  	_ = argc
 16729  	decimal_result(tls, context, p)
 16730  	decimal_free(tls, p)
 16731  }
 16732  
 16733  func decimal_cmp(tls *libc.TLS, pA uintptr, pB uintptr) int32 {
 16734  	var nASig int32
 16735  	var nBSig int32
 16736  	var rc int32
 16737  	var n int32
 16738  	if int32((*Decimal)(unsafe.Pointer(pA)).Fsign) != int32((*Decimal)(unsafe.Pointer(pB)).Fsign) {
 16739  		if (*Decimal)(unsafe.Pointer(pA)).Fsign != 0 {
 16740  			return -1
 16741  		}
 16742  		return +1
 16743  	}
 16744  	if (*Decimal)(unsafe.Pointer(pA)).Fsign != 0 {
 16745  		var pTemp uintptr = pA
 16746  		pA = pB
 16747  		pB = pTemp
 16748  	}
 16749  	nASig = (*Decimal)(unsafe.Pointer(pA)).FnDigit - (*Decimal)(unsafe.Pointer(pA)).FnFrac
 16750  	nBSig = (*Decimal)(unsafe.Pointer(pB)).FnDigit - (*Decimal)(unsafe.Pointer(pB)).FnFrac
 16751  	if nASig != nBSig {
 16752  		return nASig - nBSig
 16753  	}
 16754  	n = (*Decimal)(unsafe.Pointer(pA)).FnDigit
 16755  	if n > (*Decimal)(unsafe.Pointer(pB)).FnDigit {
 16756  		n = (*Decimal)(unsafe.Pointer(pB)).FnDigit
 16757  	}
 16758  	rc = libc.Xmemcmp(tls, (*Decimal)(unsafe.Pointer(pA)).Fa, (*Decimal)(unsafe.Pointer(pB)).Fa, uint64(n))
 16759  	if rc == 0 {
 16760  		rc = (*Decimal)(unsafe.Pointer(pA)).FnDigit - (*Decimal)(unsafe.Pointer(pB)).FnDigit
 16761  	}
 16762  	return rc
 16763  }
 16764  
 16765  func decimalCmpFunc(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 16766  	var pA uintptr
 16767  	var pB uintptr
 16768  	var rc int32
 16769  	pA = uintptr(0)
 16770  	pB = uintptr(0)
 16771  
 16772  	_ = argc
 16773  	pA = decimal_new(tls, context, *(*uintptr)(unsafe.Pointer(argv)), 0, uintptr(0))
 16774  	if !(pA == uintptr(0) || (*Decimal)(unsafe.Pointer(pA)).FisNull != 0) {
 16775  		goto __1
 16776  	}
 16777  	goto cmp_done
 16778  __1:
 16779  	;
 16780  	pB = decimal_new(tls, context, *(*uintptr)(unsafe.Pointer(argv + 1*8)), 0, uintptr(0))
 16781  	if !(pB == uintptr(0) || (*Decimal)(unsafe.Pointer(pB)).FisNull != 0) {
 16782  		goto __2
 16783  	}
 16784  	goto cmp_done
 16785  __2:
 16786  	;
 16787  	rc = decimal_cmp(tls, pA, pB)
 16788  	if !(rc < 0) {
 16789  		goto __3
 16790  	}
 16791  	rc = -1
 16792  	goto __4
 16793  __3:
 16794  	if !(rc > 0) {
 16795  		goto __5
 16796  	}
 16797  	rc = +1
 16798  __5:
 16799  	;
 16800  __4:
 16801  	;
 16802  	sqlite3.Xsqlite3_result_int(tls, context, rc)
 16803  cmp_done:
 16804  	decimal_free(tls, pA)
 16805  	decimal_free(tls, pB)
 16806  }
 16807  
 16808  func decimal_expand(tls *libc.TLS, p uintptr, nDigit int32, nFrac int32) {
 16809  	var nAddSig int32
 16810  	var nAddFrac int32
 16811  	if p == uintptr(0) {
 16812  		return
 16813  	}
 16814  	nAddFrac = nFrac - (*Decimal)(unsafe.Pointer(p)).FnFrac
 16815  	nAddSig = nDigit - (*Decimal)(unsafe.Pointer(p)).FnDigit - nAddFrac
 16816  	if nAddFrac == 0 && nAddSig == 0 {
 16817  		return
 16818  	}
 16819  	(*Decimal)(unsafe.Pointer(p)).Fa = sqlite3.Xsqlite3_realloc64(tls, (*Decimal)(unsafe.Pointer(p)).Fa, uint64(nDigit+1))
 16820  	if (*Decimal)(unsafe.Pointer(p)).Fa == uintptr(0) {
 16821  		(*Decimal)(unsafe.Pointer(p)).Foom = int8(1)
 16822  		return
 16823  	}
 16824  	if nAddSig != 0 {
 16825  		libc.X__builtin___memmove_chk(tls, (*Decimal)(unsafe.Pointer(p)).Fa+uintptr(nAddSig), (*Decimal)(unsafe.Pointer(p)).Fa, uint64((*Decimal)(unsafe.Pointer(p)).FnDigit), libc.X__builtin_object_size(tls, (*Decimal)(unsafe.Pointer(p)).Fa+uintptr(nAddSig), 0))
 16826  		libc.X__builtin___memset_chk(tls, (*Decimal)(unsafe.Pointer(p)).Fa, 0, uint64(nAddSig), libc.X__builtin_object_size(tls, (*Decimal)(unsafe.Pointer(p)).Fa, 0))
 16827  		*(*int32)(unsafe.Pointer(p + 4)) += nAddSig
 16828  	}
 16829  	if nAddFrac != 0 {
 16830  		libc.X__builtin___memset_chk(tls, (*Decimal)(unsafe.Pointer(p)).Fa+uintptr((*Decimal)(unsafe.Pointer(p)).FnDigit), 0, uint64(nAddFrac), libc.X__builtin_object_size(tls, (*Decimal)(unsafe.Pointer(p)).Fa+uintptr((*Decimal)(unsafe.Pointer(p)).FnDigit), 0))
 16831  		*(*int32)(unsafe.Pointer(p + 4)) += nAddFrac
 16832  		*(*int32)(unsafe.Pointer(p + 8)) += nAddFrac
 16833  	}
 16834  }
 16835  
 16836  func decimal_add(tls *libc.TLS, pA uintptr, pB uintptr) {
 16837  	var nSig int32
 16838  	var nFrac int32
 16839  	var nDigit int32
 16840  	var i int32
 16841  	var rc int32
 16842  	if pA == uintptr(0) {
 16843  		return
 16844  	}
 16845  	if (*Decimal)(unsafe.Pointer(pA)).Foom != 0 || pB == uintptr(0) || (*Decimal)(unsafe.Pointer(pB)).Foom != 0 {
 16846  		(*Decimal)(unsafe.Pointer(pA)).Foom = int8(1)
 16847  		return
 16848  	}
 16849  	if (*Decimal)(unsafe.Pointer(pA)).FisNull != 0 || (*Decimal)(unsafe.Pointer(pB)).FisNull != 0 {
 16850  		(*Decimal)(unsafe.Pointer(pA)).FisNull = int8(1)
 16851  		return
 16852  	}
 16853  	nSig = (*Decimal)(unsafe.Pointer(pA)).FnDigit - (*Decimal)(unsafe.Pointer(pA)).FnFrac
 16854  	if nSig != 0 && int32(*(*int8)(unsafe.Pointer((*Decimal)(unsafe.Pointer(pA)).Fa))) == 0 {
 16855  		nSig--
 16856  	}
 16857  	if nSig < (*Decimal)(unsafe.Pointer(pB)).FnDigit-(*Decimal)(unsafe.Pointer(pB)).FnFrac {
 16858  		nSig = (*Decimal)(unsafe.Pointer(pB)).FnDigit - (*Decimal)(unsafe.Pointer(pB)).FnFrac
 16859  	}
 16860  	nFrac = (*Decimal)(unsafe.Pointer(pA)).FnFrac
 16861  	if nFrac < (*Decimal)(unsafe.Pointer(pB)).FnFrac {
 16862  		nFrac = (*Decimal)(unsafe.Pointer(pB)).FnFrac
 16863  	}
 16864  	nDigit = nSig + nFrac + 1
 16865  	decimal_expand(tls, pA, nDigit, nFrac)
 16866  	decimal_expand(tls, pB, nDigit, nFrac)
 16867  	if (*Decimal)(unsafe.Pointer(pA)).Foom != 0 || (*Decimal)(unsafe.Pointer(pB)).Foom != 0 {
 16868  		(*Decimal)(unsafe.Pointer(pA)).Foom = int8(1)
 16869  	} else {
 16870  		if int32((*Decimal)(unsafe.Pointer(pA)).Fsign) == int32((*Decimal)(unsafe.Pointer(pB)).Fsign) {
 16871  			var carry int32 = 0
 16872  			for i = nDigit - 1; i >= 0; i-- {
 16873  				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
 16874  				if x >= 10 {
 16875  					carry = 1
 16876  					*(*int8)(unsafe.Pointer((*Decimal)(unsafe.Pointer(pA)).Fa + uintptr(i))) = int8(x - 10)
 16877  				} else {
 16878  					carry = 0
 16879  					*(*int8)(unsafe.Pointer((*Decimal)(unsafe.Pointer(pA)).Fa + uintptr(i))) = int8(x)
 16880  				}
 16881  			}
 16882  		} else {
 16883  			var aA uintptr
 16884  			var aB uintptr
 16885  			var borrow int32 = 0
 16886  			rc = libc.Xmemcmp(tls, (*Decimal)(unsafe.Pointer(pA)).Fa, (*Decimal)(unsafe.Pointer(pB)).Fa, uint64(nDigit))
 16887  			if rc < 0 {
 16888  				aA = (*Decimal)(unsafe.Pointer(pB)).Fa
 16889  				aB = (*Decimal)(unsafe.Pointer(pA)).Fa
 16890  				(*Decimal)(unsafe.Pointer(pA)).Fsign = libc.BoolInt8(!((*Decimal)(unsafe.Pointer(pA)).Fsign != 0))
 16891  			} else {
 16892  				aA = (*Decimal)(unsafe.Pointer(pA)).Fa
 16893  				aB = (*Decimal)(unsafe.Pointer(pB)).Fa
 16894  			}
 16895  			for i = nDigit - 1; i >= 0; i-- {
 16896  				var x int32 = int32(*(*int8)(unsafe.Pointer(aA + uintptr(i)))) - int32(*(*int8)(unsafe.Pointer(aB + uintptr(i)))) - borrow
 16897  				if x < 0 {
 16898  					*(*int8)(unsafe.Pointer((*Decimal)(unsafe.Pointer(pA)).Fa + uintptr(i))) = int8(x + 10)
 16899  					borrow = 1
 16900  				} else {
 16901  					*(*int8)(unsafe.Pointer((*Decimal)(unsafe.Pointer(pA)).Fa + uintptr(i))) = int8(x)
 16902  					borrow = 0
 16903  				}
 16904  			}
 16905  		}
 16906  	}
 16907  }
 16908  
 16909  func decimalCollFunc(tls *libc.TLS, notUsed uintptr, nKey1 int32, pKey1 uintptr, nKey2 int32, pKey2 uintptr) int32 {
 16910  	var zA uintptr = pKey1
 16911  	var zB uintptr = pKey2
 16912  	var pA uintptr = decimal_new(tls, uintptr(0), uintptr(0), nKey1, zA)
 16913  	var pB uintptr = decimal_new(tls, uintptr(0), uintptr(0), nKey2, zB)
 16914  	var rc int32
 16915  	_ = notUsed
 16916  	if pA == uintptr(0) || pB == uintptr(0) {
 16917  		rc = 0
 16918  	} else {
 16919  		rc = decimal_cmp(tls, pA, pB)
 16920  	}
 16921  	decimal_free(tls, pA)
 16922  	decimal_free(tls, pB)
 16923  	return rc
 16924  }
 16925  
 16926  func decimalAddFunc(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 16927  	var pA uintptr = decimal_new(tls, context, *(*uintptr)(unsafe.Pointer(argv)), 0, uintptr(0))
 16928  	var pB uintptr = decimal_new(tls, context, *(*uintptr)(unsafe.Pointer(argv + 1*8)), 0, uintptr(0))
 16929  	_ = argc
 16930  	decimal_add(tls, pA, pB)
 16931  	decimal_result(tls, context, pA)
 16932  	decimal_free(tls, pA)
 16933  	decimal_free(tls, pB)
 16934  }
 16935  
 16936  func decimalSubFunc(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 16937  	var pA uintptr = decimal_new(tls, context, *(*uintptr)(unsafe.Pointer(argv)), 0, uintptr(0))
 16938  	var pB uintptr = decimal_new(tls, context, *(*uintptr)(unsafe.Pointer(argv + 1*8)), 0, uintptr(0))
 16939  	_ = argc
 16940  	if pB != 0 {
 16941  		(*Decimal)(unsafe.Pointer(pB)).Fsign = libc.BoolInt8(!((*Decimal)(unsafe.Pointer(pB)).Fsign != 0))
 16942  		decimal_add(tls, pA, pB)
 16943  		decimal_result(tls, context, pA)
 16944  	}
 16945  	decimal_free(tls, pA)
 16946  	decimal_free(tls, pB)
 16947  }
 16948  
 16949  func decimalSumStep(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 16950  	var p uintptr
 16951  	var pArg uintptr
 16952  	_ = argc
 16953  	p = sqlite3.Xsqlite3_aggregate_context(tls, context, int32(unsafe.Sizeof(Decimal{})))
 16954  	if p == uintptr(0) {
 16955  		return
 16956  	}
 16957  	if !(int32((*Decimal)(unsafe.Pointer(p)).FisInit) != 0) {
 16958  		(*Decimal)(unsafe.Pointer(p)).FisInit = int8(1)
 16959  		(*Decimal)(unsafe.Pointer(p)).Fa = sqlite3.Xsqlite3_malloc(tls, 2)
 16960  		if (*Decimal)(unsafe.Pointer(p)).Fa == uintptr(0) {
 16961  			(*Decimal)(unsafe.Pointer(p)).Foom = int8(1)
 16962  		} else {
 16963  			*(*int8)(unsafe.Pointer((*Decimal)(unsafe.Pointer(p)).Fa)) = int8(0)
 16964  		}
 16965  		(*Decimal)(unsafe.Pointer(p)).FnDigit = 1
 16966  		(*Decimal)(unsafe.Pointer(p)).FnFrac = 0
 16967  	}
 16968  	if sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(argv))) == SQLITE_NULL {
 16969  		return
 16970  	}
 16971  	pArg = decimal_new(tls, context, *(*uintptr)(unsafe.Pointer(argv)), 0, uintptr(0))
 16972  	decimal_add(tls, p, pArg)
 16973  	decimal_free(tls, pArg)
 16974  }
 16975  
 16976  func decimalSumInverse(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 16977  	var p uintptr
 16978  	var pArg uintptr
 16979  	_ = argc
 16980  	p = sqlite3.Xsqlite3_aggregate_context(tls, context, int32(unsafe.Sizeof(Decimal{})))
 16981  	if p == uintptr(0) {
 16982  		return
 16983  	}
 16984  	if sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(argv))) == SQLITE_NULL {
 16985  		return
 16986  	}
 16987  	pArg = decimal_new(tls, context, *(*uintptr)(unsafe.Pointer(argv)), 0, uintptr(0))
 16988  	if pArg != 0 {
 16989  		(*Decimal)(unsafe.Pointer(pArg)).Fsign = libc.BoolInt8(!((*Decimal)(unsafe.Pointer(pArg)).Fsign != 0))
 16990  	}
 16991  	decimal_add(tls, p, pArg)
 16992  	decimal_free(tls, pArg)
 16993  }
 16994  
 16995  func decimalSumValue(tls *libc.TLS, context uintptr) {
 16996  	var p uintptr = sqlite3.Xsqlite3_aggregate_context(tls, context, 0)
 16997  	if p == uintptr(0) {
 16998  		return
 16999  	}
 17000  	decimal_result(tls, context, p)
 17001  }
 17002  
 17003  func decimalSumFinalize(tls *libc.TLS, context uintptr) {
 17004  	var p uintptr = sqlite3.Xsqlite3_aggregate_context(tls, context, 0)
 17005  	if p == uintptr(0) {
 17006  		return
 17007  	}
 17008  	decimal_result(tls, context, p)
 17009  	decimal_clear(tls, p)
 17010  }
 17011  
 17012  func decimalMulFunc(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 17013  	var pA uintptr
 17014  	var pB uintptr
 17015  	var acc uintptr
 17016  	var i int32
 17017  	var j int32
 17018  	var k int32
 17019  	var minFrac int32
 17020  	var f int8
 17021  	var carry int32
 17022  	var x int32
 17023  	pA = decimal_new(tls, context, *(*uintptr)(unsafe.Pointer(argv)), 0, uintptr(0))
 17024  	pB = decimal_new(tls, context, *(*uintptr)(unsafe.Pointer(argv + 1*8)), 0, uintptr(0))
 17025  	acc = uintptr(0)
 17026  	_ = argc
 17027  	if !(pA == uintptr(0) || (*Decimal)(unsafe.Pointer(pA)).Foom != 0 || (*Decimal)(unsafe.Pointer(pA)).FisNull != 0 ||
 17028  		pB == uintptr(0) || (*Decimal)(unsafe.Pointer(pB)).Foom != 0 || (*Decimal)(unsafe.Pointer(pB)).FisNull != 0) {
 17029  		goto __1
 17030  	}
 17031  	goto mul_end
 17032  __1:
 17033  	;
 17034  	acc = sqlite3.Xsqlite3_malloc64(tls, uint64((*Decimal)(unsafe.Pointer(pA)).FnDigit+(*Decimal)(unsafe.Pointer(pB)).FnDigit+2))
 17035  	if !(acc == uintptr(0)) {
 17036  		goto __2
 17037  	}
 17038  	sqlite3.Xsqlite3_result_error_nomem(tls, context)
 17039  	goto mul_end
 17040  __2:
 17041  	;
 17042  	libc.X__builtin___memset_chk(tls, acc, 0, uint64((*Decimal)(unsafe.Pointer(pA)).FnDigit+(*Decimal)(unsafe.Pointer(pB)).FnDigit+2), libc.X__builtin_object_size(tls, acc, 0))
 17043  	minFrac = (*Decimal)(unsafe.Pointer(pA)).FnFrac
 17044  	if !((*Decimal)(unsafe.Pointer(pB)).FnFrac < minFrac) {
 17045  		goto __3
 17046  	}
 17047  	minFrac = (*Decimal)(unsafe.Pointer(pB)).FnFrac
 17048  __3:
 17049  	;
 17050  	i = (*Decimal)(unsafe.Pointer(pA)).FnDigit - 1
 17051  __4:
 17052  	if !(i >= 0) {
 17053  		goto __6
 17054  	}
 17055  	f = *(*int8)(unsafe.Pointer((*Decimal)(unsafe.Pointer(pA)).Fa + uintptr(i)))
 17056  	carry = 0
 17057  	j = (*Decimal)(unsafe.Pointer(pB)).FnDigit - 1
 17058  	k = i + j + 3
 17059  __7:
 17060  	if !(j >= 0) {
 17061  		goto __9
 17062  	}
 17063  	x = int32(*(*int8)(unsafe.Pointer(acc + uintptr(k)))) + int32(f)*int32(*(*int8)(unsafe.Pointer((*Decimal)(unsafe.Pointer(pB)).Fa + uintptr(j)))) + carry
 17064  	*(*int8)(unsafe.Pointer(acc + uintptr(k))) = int8(x % 10)
 17065  	carry = x / 10
 17066  	goto __8
 17067  __8:
 17068  	j--
 17069  	k--
 17070  	goto __7
 17071  	goto __9
 17072  __9:
 17073  	;
 17074  	x = int32(*(*int8)(unsafe.Pointer(acc + uintptr(k)))) + carry
 17075  	*(*int8)(unsafe.Pointer(acc + uintptr(k))) = int8(x % 10)
 17076  	*(*int8)(unsafe.Pointer(acc + uintptr(k-1))) += int8(x / 10)
 17077  	goto __5
 17078  __5:
 17079  	i--
 17080  	goto __4
 17081  	goto __6
 17082  __6:
 17083  	;
 17084  	sqlite3.Xsqlite3_free(tls, (*Decimal)(unsafe.Pointer(pA)).Fa)
 17085  	(*Decimal)(unsafe.Pointer(pA)).Fa = acc
 17086  	acc = uintptr(0)
 17087  	*(*int32)(unsafe.Pointer(pA + 4)) += (*Decimal)(unsafe.Pointer(pB)).FnDigit + 2
 17088  	*(*int32)(unsafe.Pointer(pA + 8)) += (*Decimal)(unsafe.Pointer(pB)).FnFrac
 17089  	*(*int8)(unsafe.Pointer(pA)) ^= int8(int32((*Decimal)(unsafe.Pointer(pB)).Fsign))
 17090  __10:
 17091  	if !((*Decimal)(unsafe.Pointer(pA)).FnFrac > minFrac && int32(*(*int8)(unsafe.Pointer((*Decimal)(unsafe.Pointer(pA)).Fa + uintptr((*Decimal)(unsafe.Pointer(pA)).FnDigit-1)))) == 0) {
 17092  		goto __11
 17093  	}
 17094  	(*Decimal)(unsafe.Pointer(pA)).FnFrac--
 17095  	(*Decimal)(unsafe.Pointer(pA)).FnDigit--
 17096  	goto __10
 17097  __11:
 17098  	;
 17099  	decimal_result(tls, context, pA)
 17100  
 17101  mul_end:
 17102  	sqlite3.Xsqlite3_free(tls, acc)
 17103  	decimal_free(tls, pA)
 17104  	decimal_free(tls, pB)
 17105  }
 17106  
 17107  func sqlite3_decimal_init(tls *libc.TLS, db uintptr, pzErrMsg uintptr, pApi uintptr) int32 {
 17108  	var rc int32 = SQLITE_OK
 17109  	var i uint32
 17110  	_ = pzErrMsg
 17111  
 17112  	_ = pApi
 17113  
 17114  	for i = uint32(0); uint64(i) < uint64(unsafe.Sizeof(aFunc))/uint64(unsafe.Sizeof(struct {
 17115  		FzFuncName   uintptr
 17116  		FnArg        int32
 17117  		F__ccgo_pad1 [4]byte
 17118  		FxFunc       uintptr
 17119  	}{})) && rc == SQLITE_OK; i++ {
 17120  		rc = sqlite3.Xsqlite3_create_function(tls, db, aFunc[i].FzFuncName, aFunc[i].FnArg,
 17121  			SQLITE_UTF8|SQLITE_INNOCUOUS|SQLITE_DETERMINISTIC,
 17122  			uintptr(0), aFunc[i].FxFunc, uintptr(0), uintptr(0))
 17123  	}
 17124  	if rc == SQLITE_OK {
 17125  		rc = sqlite3.Xsqlite3_create_window_function(tls, db, ts+4826, 1,
 17126  			SQLITE_UTF8|SQLITE_INNOCUOUS|SQLITE_DETERMINISTIC, uintptr(0),
 17127  			*(*uintptr)(unsafe.Pointer(&struct {
 17128  				f func(*libc.TLS, uintptr, int32, uintptr)
 17129  			}{decimalSumStep})), *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{decimalSumFinalize})),
 17130  			*(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{decimalSumValue})), *(*uintptr)(unsafe.Pointer(&struct {
 17131  				f func(*libc.TLS, uintptr, int32, uintptr)
 17132  			}{decimalSumInverse})), uintptr(0))
 17133  	}
 17134  	if rc == SQLITE_OK {
 17135  		rc = sqlite3.Xsqlite3_create_collation(tls, db, ts+4838, SQLITE_UTF8,
 17136  			uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 17137  				f func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32
 17138  			}{decimalCollFunc})))
 17139  	}
 17140  	return rc
 17141  }
 17142  
 17143  var aFunc = [5]struct {
 17144  	FzFuncName   uintptr
 17145  	FnArg        int32
 17146  	F__ccgo_pad1 [4]byte
 17147  	FxFunc       uintptr
 17148  }{
 17149  	{FzFuncName: ts + 4838, FnArg: 1, FxFunc: 0},
 17150  	{FzFuncName: ts + 4846, FnArg: 2, FxFunc: 0},
 17151  	{FzFuncName: ts + 4858, FnArg: 2, FxFunc: 0},
 17152  	{FzFuncName: ts + 4870, FnArg: 2, FxFunc: 0},
 17153  	{FzFuncName: ts + 4882, FnArg: 2, FxFunc: 0},
 17154  }
 17155  
 17156  type EvalResult = struct {
 17157  	Fz           uintptr
 17158  	FzSep        uintptr
 17159  	FszSep       int32
 17160  	F__ccgo_pad1 [4]byte
 17161  	FnAlloc      sqlite3_int64
 17162  	FnUsed       sqlite3_int64
 17163  }
 17164  
 17165  func callback(tls *libc.TLS, pCtx uintptr, argc int32, argv uintptr, colnames uintptr) int32 {
 17166  	var p uintptr = pCtx
 17167  	var i int32
 17168  	if argv == uintptr(0) {
 17169  		return 0
 17170  	}
 17171  	for i = 0; i < argc; i++ {
 17172  		var z uintptr
 17173  		if *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8)) != 0 {
 17174  			z = *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8))
 17175  		} else {
 17176  			z = ts + 584
 17177  		}
 17178  		var sz size_t = libc.Xstrlen(tls, z)
 17179  		if sqlite3_int64(sz)+(*EvalResult)(unsafe.Pointer(p)).FnUsed+sqlite3_int64((*EvalResult)(unsafe.Pointer(p)).FszSep)+int64(1) > (*EvalResult)(unsafe.Pointer(p)).FnAlloc {
 17180  			var zNew uintptr
 17181  			(*EvalResult)(unsafe.Pointer(p)).FnAlloc = sqlite3_int64(uint64((*EvalResult)(unsafe.Pointer(p)).FnAlloc*int64(2)) + sz + uint64((*EvalResult)(unsafe.Pointer(p)).FszSep) + uint64(1))
 17182  
 17183  			if (*EvalResult)(unsafe.Pointer(p)).FnAlloc <= int64(0x7fffffff) {
 17184  				zNew = sqlite3.Xsqlite3_realloc64(tls, (*EvalResult)(unsafe.Pointer(p)).Fz, uint64((*EvalResult)(unsafe.Pointer(p)).FnAlloc))
 17185  			} else {
 17186  				zNew = uintptr(0)
 17187  			}
 17188  			if zNew == uintptr(0) {
 17189  				sqlite3.Xsqlite3_free(tls, (*EvalResult)(unsafe.Pointer(p)).Fz)
 17190  				libc.X__builtin___memset_chk(tls, p, 0, uint64(unsafe.Sizeof(EvalResult{})), libc.X__builtin_object_size(tls, p, 0))
 17191  				return 1
 17192  			}
 17193  			(*EvalResult)(unsafe.Pointer(p)).Fz = zNew
 17194  		}
 17195  		if (*EvalResult)(unsafe.Pointer(p)).FnUsed > int64(0) {
 17196  			libc.X__builtin___memcpy_chk(tls, (*EvalResult)(unsafe.Pointer(p)).Fz+uintptr((*EvalResult)(unsafe.Pointer(p)).FnUsed), (*EvalResult)(unsafe.Pointer(p)).FzSep, uint64((*EvalResult)(unsafe.Pointer(p)).FszSep), libc.X__builtin_object_size(tls, (*EvalResult)(unsafe.Pointer(p)).Fz+uintptr((*EvalResult)(unsafe.Pointer(p)).FnUsed), 0))
 17197  			*(*sqlite3_int64)(unsafe.Pointer(p + 32)) += sqlite3_int64((*EvalResult)(unsafe.Pointer(p)).FszSep)
 17198  		}
 17199  		libc.X__builtin___memcpy_chk(tls, (*EvalResult)(unsafe.Pointer(p)).Fz+uintptr((*EvalResult)(unsafe.Pointer(p)).FnUsed), z, sz, libc.X__builtin_object_size(tls, (*EvalResult)(unsafe.Pointer(p)).Fz+uintptr((*EvalResult)(unsafe.Pointer(p)).FnUsed), 0))
 17200  		*(*sqlite3_int64)(unsafe.Pointer(p + 32)) += sqlite3_int64(sz)
 17201  	}
 17202  	return 0
 17203  }
 17204  
 17205  func sqlEvalFunc(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 17206  	bp := tls.Alloc(48)
 17207  	defer tls.Free(48)
 17208  
 17209  	var zSql uintptr
 17210  	var db uintptr
 17211  	*(*uintptr)(unsafe.Pointer(bp + 40)) = uintptr(0)
 17212  	var rc int32
 17213  
 17214  	libc.X__builtin___memset_chk(tls, bp, 0, uint64(unsafe.Sizeof(EvalResult{})), libc.X__builtin_object_size(tls, bp, 0))
 17215  	(*EvalResult)(unsafe.Pointer(bp)).FzSep = ts + 4894
 17216  	zSql = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 17217  	if zSql == uintptr(0) {
 17218  		return
 17219  	}
 17220  	if argc > 1 {
 17221  		(*EvalResult)(unsafe.Pointer(bp)).FzSep = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 17222  		if (*EvalResult)(unsafe.Pointer(bp)).FzSep == uintptr(0) {
 17223  			return
 17224  		}
 17225  	}
 17226  	(*EvalResult)(unsafe.Pointer(bp)).FszSep = int32(libc.Xstrlen(tls, (*EvalResult)(unsafe.Pointer(bp)).FzSep))
 17227  	db = sqlite3.Xsqlite3_context_db_handle(tls, context)
 17228  	rc = sqlite3.Xsqlite3_exec(tls, db, zSql, *(*uintptr)(unsafe.Pointer(&struct {
 17229  		f func(*libc.TLS, uintptr, int32, uintptr, uintptr) int32
 17230  	}{callback})), bp, bp+40)
 17231  	if rc != SQLITE_OK {
 17232  		sqlite3.Xsqlite3_result_error(tls, context, *(*uintptr)(unsafe.Pointer(bp + 40)), -1)
 17233  		sqlite3.Xsqlite3_free(tls, *(*uintptr)(unsafe.Pointer(bp + 40)))
 17234  	} else if (*EvalResult)(unsafe.Pointer(bp)).FzSep == uintptr(0) {
 17235  		sqlite3.Xsqlite3_result_error_nomem(tls, context)
 17236  		sqlite3.Xsqlite3_free(tls, (*EvalResult)(unsafe.Pointer(bp)).Fz)
 17237  	} else {
 17238  		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})))
 17239  	}
 17240  }
 17241  
 17242  func sqlite3_eval_init(tls *libc.TLS, db uintptr, pzErrMsg uintptr, pApi uintptr) int32 {
 17243  	var rc int32 = SQLITE_OK
 17244  	_ = pApi
 17245  
 17246  	_ = pzErrMsg
 17247  	rc = sqlite3.Xsqlite3_create_function(tls, db, ts+4896, 1,
 17248  		SQLITE_UTF8|SQLITE_DIRECTONLY, uintptr(0),
 17249  		*(*uintptr)(unsafe.Pointer(&struct {
 17250  			f func(*libc.TLS, uintptr, int32, uintptr)
 17251  		}{sqlEvalFunc})), uintptr(0), uintptr(0))
 17252  	if rc == SQLITE_OK {
 17253  		rc = sqlite3.Xsqlite3_create_function(tls, db, ts+4896, 2,
 17254  			SQLITE_UTF8|SQLITE_DIRECTONLY, uintptr(0),
 17255  			*(*uintptr)(unsafe.Pointer(&struct {
 17256  				f func(*libc.TLS, uintptr, int32, uintptr)
 17257  			}{sqlEvalFunc})), uintptr(0), uintptr(0))
 17258  	}
 17259  	return rc
 17260  }
 17261  
 17262  type explain_vtab1 = struct {
 17263  	Fbase sqlite3_vtab
 17264  	Fdb   uintptr
 17265  }
 17266  
 17267  type explain_vtab = explain_vtab1
 17268  
 17269  type explain_cursor1 = struct {
 17270  	Fbase        sqlite3_vtab_cursor
 17271  	Fdb          uintptr
 17272  	FzSql        uintptr
 17273  	FpExplain    uintptr
 17274  	Frc          int32
 17275  	F__ccgo_pad1 [4]byte
 17276  }
 17277  
 17278  type explain_cursor = explain_cursor1
 17279  
 17280  func explainConnect(tls *libc.TLS, db uintptr, pAux uintptr, argc int32, argv uintptr, ppVtab uintptr, pzErr uintptr) int32 {
 17281  	var pNew uintptr
 17282  	var rc int32
 17283  
 17284  	rc = sqlite3.Xsqlite3_declare_vtab(tls, db,
 17285  		ts+4901)
 17286  	if rc == SQLITE_OK {
 17287  		pNew = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(explain_vtab{})))
 17288  		*(*uintptr)(unsafe.Pointer(ppVtab)) = pNew
 17289  		if pNew == uintptr(0) {
 17290  			return SQLITE_NOMEM
 17291  		}
 17292  		libc.X__builtin___memset_chk(tls, pNew, 0, uint64(unsafe.Sizeof(explain_vtab{})), libc.X__builtin_object_size(tls, pNew, 0))
 17293  		(*explain_vtab)(unsafe.Pointer(pNew)).Fdb = db
 17294  	}
 17295  	return rc
 17296  }
 17297  
 17298  func explainDisconnect(tls *libc.TLS, pVtab uintptr) int32 {
 17299  	sqlite3.Xsqlite3_free(tls, pVtab)
 17300  	return SQLITE_OK
 17301  }
 17302  
 17303  func explainOpen(tls *libc.TLS, p uintptr, ppCursor uintptr) int32 {
 17304  	var pCur uintptr
 17305  	pCur = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(explain_cursor{})))
 17306  	if pCur == uintptr(0) {
 17307  		return SQLITE_NOMEM
 17308  	}
 17309  	libc.X__builtin___memset_chk(tls, pCur, 0, uint64(unsafe.Sizeof(explain_cursor{})), libc.X__builtin_object_size(tls, pCur, 0))
 17310  	(*explain_cursor)(unsafe.Pointer(pCur)).Fdb = (*explain_vtab)(unsafe.Pointer(p)).Fdb
 17311  	*(*uintptr)(unsafe.Pointer(ppCursor)) = pCur
 17312  	return SQLITE_OK
 17313  }
 17314  
 17315  func explainClose(tls *libc.TLS, cur uintptr) int32 {
 17316  	var pCur uintptr = cur
 17317  	sqlite3.Xsqlite3_finalize(tls, (*explain_cursor)(unsafe.Pointer(pCur)).FpExplain)
 17318  	sqlite3.Xsqlite3_free(tls, (*explain_cursor)(unsafe.Pointer(pCur)).FzSql)
 17319  	sqlite3.Xsqlite3_free(tls, pCur)
 17320  	return SQLITE_OK
 17321  }
 17322  
 17323  func explainNext(tls *libc.TLS, cur uintptr) int32 {
 17324  	var pCur uintptr = cur
 17325  	(*explain_cursor)(unsafe.Pointer(pCur)).Frc = sqlite3.Xsqlite3_step(tls, (*explain_cursor)(unsafe.Pointer(pCur)).FpExplain)
 17326  	if (*explain_cursor)(unsafe.Pointer(pCur)).Frc != SQLITE_DONE && (*explain_cursor)(unsafe.Pointer(pCur)).Frc != SQLITE_ROW {
 17327  		return (*explain_cursor)(unsafe.Pointer(pCur)).Frc
 17328  	}
 17329  	return SQLITE_OK
 17330  }
 17331  
 17332  func explainColumn(tls *libc.TLS, cur uintptr, ctx uintptr, i int32) int32 {
 17333  	var pCur uintptr = cur
 17334  	if i == EXPLN_COLUMN_SQL {
 17335  		sqlite3.Xsqlite3_result_text(tls, ctx, (*explain_cursor)(unsafe.Pointer(pCur)).FzSql, -1, libc.UintptrFromInt32(-1))
 17336  	} else {
 17337  		sqlite3.Xsqlite3_result_value(tls, ctx, sqlite3.Xsqlite3_column_value(tls, (*explain_cursor)(unsafe.Pointer(pCur)).FpExplain, i))
 17338  	}
 17339  	return SQLITE_OK
 17340  }
 17341  
 17342  func explainRowid(tls *libc.TLS, cur uintptr, pRowid uintptr) int32 {
 17343  	var pCur uintptr = cur
 17344  	*(*sqlite_int64)(unsafe.Pointer(pRowid)) = sqlite3.Xsqlite3_column_int64(tls, (*explain_cursor)(unsafe.Pointer(pCur)).FpExplain, 0)
 17345  	return SQLITE_OK
 17346  }
 17347  
 17348  func explainEof(tls *libc.TLS, cur uintptr) int32 {
 17349  	var pCur uintptr = cur
 17350  	return libc.Bool32((*explain_cursor)(unsafe.Pointer(pCur)).Frc != SQLITE_ROW)
 17351  }
 17352  
 17353  func explainFilter(tls *libc.TLS, pVtabCursor uintptr, idxNum int32, idxStr uintptr, argc int32, argv uintptr) int32 {
 17354  	bp := tls.Alloc(16)
 17355  	defer tls.Free(16)
 17356  
 17357  	var pCur uintptr = pVtabCursor
 17358  	var zSql uintptr = uintptr(0)
 17359  	var rc int32
 17360  	sqlite3.Xsqlite3_finalize(tls, (*explain_cursor)(unsafe.Pointer(pCur)).FpExplain)
 17361  	(*explain_cursor)(unsafe.Pointer(pCur)).FpExplain = uintptr(0)
 17362  	if sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(argv))) != SQLITE_TEXT {
 17363  		(*explain_cursor)(unsafe.Pointer(pCur)).Frc = SQLITE_DONE
 17364  		return SQLITE_OK
 17365  	}
 17366  	sqlite3.Xsqlite3_free(tls, (*explain_cursor)(unsafe.Pointer(pCur)).FzSql)
 17367  	(*explain_cursor)(unsafe.Pointer(pCur)).FzSql = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp, sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))))
 17368  	if (*explain_cursor)(unsafe.Pointer(pCur)).FzSql != 0 {
 17369  		zSql = sqlite3.Xsqlite3_mprintf(tls, ts+4963, libc.VaList(bp+8, (*explain_cursor)(unsafe.Pointer(pCur)).FzSql))
 17370  	}
 17371  	if zSql == uintptr(0) {
 17372  		rc = SQLITE_NOMEM
 17373  	} else {
 17374  		rc = sqlite3.Xsqlite3_prepare_v2(tls, (*explain_cursor)(unsafe.Pointer(pCur)).Fdb, zSql, -1, pCur+24, uintptr(0))
 17375  		sqlite3.Xsqlite3_free(tls, zSql)
 17376  	}
 17377  	if rc != 0 {
 17378  		sqlite3.Xsqlite3_finalize(tls, (*explain_cursor)(unsafe.Pointer(pCur)).FpExplain)
 17379  		(*explain_cursor)(unsafe.Pointer(pCur)).FpExplain = uintptr(0)
 17380  		sqlite3.Xsqlite3_free(tls, (*explain_cursor)(unsafe.Pointer(pCur)).FzSql)
 17381  		(*explain_cursor)(unsafe.Pointer(pCur)).FzSql = uintptr(0)
 17382  	} else {
 17383  		(*explain_cursor)(unsafe.Pointer(pCur)).Frc = sqlite3.Xsqlite3_step(tls, (*explain_cursor)(unsafe.Pointer(pCur)).FpExplain)
 17384  		if (*explain_cursor)(unsafe.Pointer(pCur)).Frc == SQLITE_DONE || (*explain_cursor)(unsafe.Pointer(pCur)).Frc == SQLITE_ROW {
 17385  			rc = SQLITE_OK
 17386  		} else {
 17387  			rc = (*explain_cursor)(unsafe.Pointer(pCur)).Frc
 17388  		}
 17389  	}
 17390  	return rc
 17391  }
 17392  
 17393  func explainBestIndex(tls *libc.TLS, tab uintptr, pIdxInfo uintptr) int32 {
 17394  	var i int32
 17395  	var idx int32 = -1
 17396  	var unusable int32 = 0
 17397  
 17398  	(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedRows = int64(500)
 17399  	for i = 0; i < (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnConstraint; i++ {
 17400  		var p uintptr = (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint + uintptr(i)*12
 17401  		if (*sqlite3_index_constraint)(unsafe.Pointer(p)).FiColumn != EXPLN_COLUMN_SQL {
 17402  			continue
 17403  		}
 17404  		if !(int32((*sqlite3_index_constraint)(unsafe.Pointer(p)).Fusable) != 0) {
 17405  			unusable = 1
 17406  		} else if int32((*sqlite3_index_constraint)(unsafe.Pointer(p)).Fop) == SQLITE_INDEX_CONSTRAINT_EQ {
 17407  			idx = i
 17408  		}
 17409  	}
 17410  	if idx >= 0 {
 17411  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = 10.0
 17412  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxNum = 1
 17413  		(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(idx)*8)).FargvIndex = 1
 17414  		(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(idx)*8)).Fomit = uint8(1)
 17415  	} else if unusable != 0 {
 17416  		return SQLITE_CONSTRAINT
 17417  	}
 17418  	return SQLITE_OK
 17419  }
 17420  
 17421  var explainModule = sqlite3_module{
 17422  	FxConnect:    0,
 17423  	FxBestIndex:  0,
 17424  	FxDisconnect: 0,
 17425  	FxOpen:       0,
 17426  	FxClose:      0,
 17427  	FxFilter:     0,
 17428  	FxNext:       0,
 17429  	FxEof:        0,
 17430  	FxColumn:     0,
 17431  	FxRowid:      0,
 17432  }
 17433  
 17434  func sqlite3ExplainVtabInit(tls *libc.TLS, db uintptr) int32 {
 17435  	var rc int32 = SQLITE_OK
 17436  	rc = sqlite3.Xsqlite3_create_module(tls, db, ts+4974, uintptr(unsafe.Pointer(&explainModule)), uintptr(0))
 17437  	return rc
 17438  }
 17439  
 17440  func sqlite3_explain_init(tls *libc.TLS, db uintptr, pzErrMsg uintptr, pApi uintptr) int32 {
 17441  	var rc int32 = SQLITE_OK
 17442  	_ = pApi
 17443  
 17444  	rc = sqlite3ExplainVtabInit(tls, db)
 17445  	return rc
 17446  }
 17447  
 17448  type u_char = uint8
 17449  
 17450  type u_short = uint16
 17451  
 17452  type u_int = uint32
 17453  type u_long = uint64
 17454  type ushort = uint16
 17455  type uint = uint32
 17456  
 17457  type u_quad_t = u_int64_t
 17458  type quad_t = int64_t
 17459  type qaddr_t = uintptr
 17460  
 17461  type caddr_t = uintptr
 17462  
 17463  type daddr_t = int32_t
 17464  
 17465  type fixpt_t = u_int32_t
 17466  
 17467  type blkcnt_t = int64
 17468  
 17469  type blksize_t = int32
 17470  
 17471  type gid_t = uint32
 17472  
 17473  type in_addr_t = uint32
 17474  
 17475  type in_port_t = uint16
 17476  
 17477  type ino_t = uint64
 17478  
 17479  type ino64_t = uint64
 17480  
 17481  type key_t = int32
 17482  
 17483  type nlink_t = uint16
 17484  
 17485  type segsz_t = int32_t
 17486  type swblk_t = int32_t
 17487  
 17488  type clock_t = uint64
 17489  
 17490  type time_t = int64
 17491  
 17492  type useconds_t = uint32
 17493  
 17494  type suseconds_t = int32
 17495  
 17496  type fd_set1 = struct{ Ffds_bits [32]int32 }
 17497  
 17498  type fd_set = fd_set1
 17499  
 17500  func __darwin_check_fd_set(tls *libc.TLS, _a int32, _b uintptr) int32 {
 17501  	if uintptr_t(uintptr(unsafe.Pointer(&sqlite3.X__darwin_check_fd_set_overflow))) != uint64(0) {
 17502  		return (*struct {
 17503  			f func(*libc.TLS, int32, uintptr, int32) int32
 17504  		})(unsafe.Pointer(&struct{ uintptr }{sqlite3.X__darwin_check_fd_set_overflow})).f(tls, _a, _b, 0)
 17505  	} else {
 17506  		return 1
 17507  	}
 17508  	return int32(0)
 17509  }
 17510  
 17511  func __darwin_fd_isset(tls *libc.TLS, _fd int32, _p uintptr) int32 {
 17512  	if sqlite3.X__darwin_check_fd_set(tls, _fd, _p) != 0 {
 17513  		return *(*int32)(unsafe.Pointer(_p + uintptr(uint64(_fd)/(uint64(unsafe.Sizeof(int32(0)))*uint64(8)))*4)) & int32(uint64(1)<<(uint64(_fd)%(uint64(unsafe.Sizeof(int32(0)))*uint64(8))))
 17514  	}
 17515  
 17516  	return 0
 17517  }
 17518  
 17519  func __darwin_fd_set(tls *libc.TLS, _fd int32, _p uintptr) {
 17520  	if sqlite3.X__darwin_check_fd_set(tls, _fd, _p) != 0 {
 17521  		*(*int32)(unsafe.Pointer(_p + uintptr(uint64(_fd)/(uint64(unsafe.Sizeof(int32(0)))*uint64(8)))*4)) |= int32(uint64(1) << (uint64(_fd) % (uint64(unsafe.Sizeof(int32(0))) * uint64(8))))
 17522  	}
 17523  }
 17524  
 17525  func __darwin_fd_clr(tls *libc.TLS, _fd int32, _p uintptr) {
 17526  	if sqlite3.X__darwin_check_fd_set(tls, _fd, _p) != 0 {
 17527  		*(*int32)(unsafe.Pointer(_p + uintptr(uint64(_fd)/(uint64(unsafe.Sizeof(int32(0)))*uint64(8)))*4)) &= ^int32(uint64(1) << (uint64(_fd) % (uint64(unsafe.Sizeof(int32(0))) * uint64(8))))
 17528  	}
 17529  }
 17530  
 17531  type fd_mask = int32
 17532  
 17533  type pthread_cond_t = _opaque_pthread_cond_t
 17534  
 17535  type pthread_condattr_t = _opaque_pthread_condattr_t
 17536  
 17537  type pthread_mutex_t = _opaque_pthread_mutex_t
 17538  
 17539  type pthread_mutexattr_t = _opaque_pthread_mutexattr_t
 17540  
 17541  type pthread_once_t = _opaque_pthread_once_t
 17542  
 17543  type pthread_rwlock_t = _opaque_pthread_rwlock_t
 17544  
 17545  type pthread_rwlockattr_t = _opaque_pthread_rwlockattr_t
 17546  
 17547  type pthread_t = uintptr
 17548  
 17549  type pthread_key_t = uint64
 17550  
 17551  type fsblkcnt_t = uint32
 17552  
 17553  type fsfilcnt_t = uint32
 17554  
 17555  type timespec = struct {
 17556  	Ftv_sec  int64
 17557  	Ftv_nsec int64
 17558  }
 17559  
 17560  type ostat = struct {
 17561  	Fst_dev       uint16
 17562  	F__ccgo_pad1  [6]byte
 17563  	Fst_ino       ino_t
 17564  	Fst_mode      mode_t
 17565  	Fst_nlink     nlink_t
 17566  	Fst_uid       uint16
 17567  	Fst_gid       uint16
 17568  	Fst_rdev      uint16
 17569  	F__ccgo_pad2  [2]byte
 17570  	Fst_size      int32
 17571  	Fst_atimespec struct {
 17572  		Ftv_sec  int64
 17573  		Ftv_nsec int64
 17574  	}
 17575  	Fst_mtimespec struct {
 17576  		Ftv_sec  int64
 17577  		Ftv_nsec int64
 17578  	}
 17579  	Fst_ctimespec struct {
 17580  		Ftv_sec  int64
 17581  		Ftv_nsec int64
 17582  	}
 17583  	Fst_blksize int32
 17584  	Fst_blocks  int32
 17585  	Fst_flags   uint32
 17586  	Fst_gen     uint32
 17587  }
 17588  
 17589  type stat64 = struct {
 17590  	Fst_dev       dev_t
 17591  	Fst_mode      mode_t
 17592  	Fst_nlink     nlink_t
 17593  	Fst_ino       uint64
 17594  	Fst_uid       uid_t
 17595  	Fst_gid       gid_t
 17596  	Fst_rdev      dev_t
 17597  	F__ccgo_pad1  [4]byte
 17598  	Fst_atimespec struct {
 17599  		Ftv_sec  int64
 17600  		Ftv_nsec int64
 17601  	}
 17602  	Fst_mtimespec struct {
 17603  		Ftv_sec  int64
 17604  		Ftv_nsec int64
 17605  	}
 17606  	Fst_ctimespec struct {
 17607  		Ftv_sec  int64
 17608  		Ftv_nsec int64
 17609  	}
 17610  	Fst_birthtimespec struct {
 17611  		Ftv_sec  int64
 17612  		Ftv_nsec int64
 17613  	}
 17614  	Fst_size    off_t
 17615  	Fst_blocks  blkcnt_t
 17616  	Fst_blksize blksize_t
 17617  	Fst_flags   uint32
 17618  	Fst_gen     uint32
 17619  	Fst_lspare  int32
 17620  	Fst_qspare  [2]int64
 17621  }
 17622  
 17623  type filesec_t = uintptr
 17624  
 17625  type flock = struct {
 17626  	Fl_start  off_t
 17627  	Fl_len    off_t
 17628  	Fl_pid    pid_t
 17629  	Fl_type   int16
 17630  	Fl_whence int16
 17631  }
 17632  
 17633  type flocktimeout = struct {
 17634  	Ffl struct {
 17635  		Fl_start  off_t
 17636  		Fl_len    off_t
 17637  		Fl_pid    pid_t
 17638  		Fl_type   int16
 17639  		Fl_whence int16
 17640  	}
 17641  	Ftimeout struct {
 17642  		Ftv_sec  int64
 17643  		Ftv_nsec int64
 17644  	}
 17645  }
 17646  
 17647  type radvisory = struct {
 17648  	Fra_offset   off_t
 17649  	Fra_count    int32
 17650  	F__ccgo_pad1 [4]byte
 17651  }
 17652  
 17653  type fcodeblobs = struct {
 17654  	Ff_cd_hash   uintptr
 17655  	Ff_hash_size size_t
 17656  	Ff_cd_buffer uintptr
 17657  	Ff_cd_size   size_t
 17658  	Ff_out_size  uintptr
 17659  	Ff_arch      int32
 17660  	F__padding   int32
 17661  }
 17662  
 17663  type fcodeblobs_t = fcodeblobs
 17664  
 17665  type fsignatures = struct {
 17666  	Ffs_file_start off_t
 17667  	Ffs_blob_start uintptr
 17668  	Ffs_blob_size  size_t
 17669  }
 17670  
 17671  type fsignatures_t = fsignatures
 17672  
 17673  type fchecklv = struct {
 17674  	Flv_file_start         off_t
 17675  	Flv_error_message_size size_t
 17676  	Flv_error_message      uintptr
 17677  }
 17678  
 17679  type fchecklv_t = fchecklv
 17680  
 17681  type fstore = struct {
 17682  	Ffst_flags      uint32
 17683  	Ffst_posmode    int32
 17684  	Ffst_offset     off_t
 17685  	Ffst_length     off_t
 17686  	Ffst_bytesalloc off_t
 17687  }
 17688  
 17689  type fstore_t = fstore
 17690  
 17691  type fpunchhole = struct {
 17692  	Ffp_flags  uint32
 17693  	Freserved  uint32
 17694  	Ffp_offset off_t
 17695  	Ffp_length off_t
 17696  }
 17697  
 17698  type fpunchhole_t = fpunchhole
 17699  
 17700  type ftrimactivefile = struct {
 17701  	Ffta_offset off_t
 17702  	Ffta_length off_t
 17703  }
 17704  
 17705  type ftrimactivefile_t = ftrimactivefile
 17706  
 17707  type fspecread = struct {
 17708  	Ffsr_flags  uint32
 17709  	Freserved   uint32
 17710  	Ffsr_offset off_t
 17711  	Ffsr_length off_t
 17712  }
 17713  
 17714  type fspecread_t = fspecread
 17715  
 17716  type fbootstraptransfer = struct {
 17717  	Ffbt_offset off_t
 17718  	Ffbt_length size_t
 17719  	Ffbt_buffer uintptr
 17720  }
 17721  
 17722  type fbootstraptransfer_t = fbootstraptransfer
 17723  
 17724  type log2phys = struct {
 17725  	Fl2p_flags       uint32
 17726  	F__ccgo_pad1     [4]byte
 17727  	Fl2p_contigbytes off_t
 17728  	Fl2p_devoffset   off_t
 17729  }
 17730  
 17731  type filesec_property_t = uint32
 17732  
 17733  type accessx_descriptor = struct {
 17734  	Fad_name_offset uint32
 17735  	Fad_flags       int32
 17736  	Fad_pad         [2]int32
 17737  }
 17738  
 17739  type uuid_t = [16]uint8
 17740  
 17741  type dirent = struct {
 17742  	Fd_ino       uint64
 17743  	Fd_seekoff   uint64
 17744  	Fd_reclen    uint16
 17745  	Fd_namlen    uint16
 17746  	Fd_type      uint8
 17747  	Fd_name      [1024]int8
 17748  	F__ccgo_pad1 [3]byte
 17749  }
 17750  
 17751  type DIR = struct {
 17752  	F__dd_fd     int32
 17753  	F__ccgo_pad1 [4]byte
 17754  	F__dd_loc    int64
 17755  	F__dd_size   int64
 17756  	F__dd_buf    uintptr
 17757  	F__dd_len    int32
 17758  	F__ccgo_pad2 [4]byte
 17759  	F__dd_seek   int64
 17760  	F__padding   int64
 17761  	F__dd_flags  int32
 17762  	F__ccgo_pad3 [4]byte
 17763  	F__dd_lock   _opaque_pthread_mutex_t
 17764  	F__dd_td     uintptr
 17765  }
 17766  
 17767  type timeval64 = struct {
 17768  	Ftv_sec  int64
 17769  	Ftv_usec int64
 17770  }
 17771  
 17772  type itimerval = struct {
 17773  	Fit_interval struct {
 17774  		Ftv_sec      int64
 17775  		Ftv_usec     int32
 17776  		F__ccgo_pad1 [4]byte
 17777  	}
 17778  	Fit_value struct {
 17779  		Ftv_sec      int64
 17780  		Ftv_usec     int32
 17781  		F__ccgo_pad1 [4]byte
 17782  	}
 17783  }
 17784  
 17785  type timezone = struct {
 17786  	Ftz_minuteswest int32
 17787  	Ftz_dsttime     int32
 17788  }
 17789  
 17790  type clockinfo = struct {
 17791  	Fhz      int32
 17792  	Ftick    int32
 17793  	Ftickadj int32
 17794  	Fstathz  int32
 17795  	Fprofhz  int32
 17796  }
 17797  
 17798  type tm = struct {
 17799  	Ftm_sec      int32
 17800  	Ftm_min      int32
 17801  	Ftm_hour     int32
 17802  	Ftm_mday     int32
 17803  	Ftm_mon      int32
 17804  	Ftm_year     int32
 17805  	Ftm_wday     int32
 17806  	Ftm_yday     int32
 17807  	Ftm_isdst    int32
 17808  	F__ccgo_pad1 [4]byte
 17809  	Ftm_gmtoff   int64
 17810  	Ftm_zone     uintptr
 17811  }
 17812  
 17813  type clockid_t = uint32
 17814  
 17815  func readFileContents(tls *libc.TLS, ctx uintptr, zName uintptr) {
 17816  	var in uintptr
 17817  	var nIn sqlite3_int64
 17818  	var pBuf uintptr
 17819  	var db uintptr
 17820  	var mxBlob int32
 17821  
 17822  	in = libc.Xfopen(tls, zName, ts+4402)
 17823  	if in == uintptr(0) {
 17824  		return
 17825  	}
 17826  	libc.Xfseek(tls, in, int64(0), SEEK_END)
 17827  	nIn = libc.Xftell(tls, in)
 17828  	libc.Xrewind(tls, in)
 17829  	db = sqlite3.Xsqlite3_context_db_handle(tls, ctx)
 17830  	mxBlob = sqlite3.Xsqlite3_limit(tls, db, SQLITE_LIMIT_LENGTH, -1)
 17831  	if nIn > sqlite3_int64(mxBlob) {
 17832  		sqlite3.Xsqlite3_result_error_code(tls, ctx, SQLITE_TOOBIG)
 17833  		libc.Xfclose(tls, in)
 17834  		return
 17835  	}
 17836  	pBuf = sqlite3.Xsqlite3_malloc64(tls, func() uint64 {
 17837  		if nIn != 0 {
 17838  			return uint64(nIn)
 17839  		}
 17840  		return uint64(1)
 17841  	}())
 17842  	if pBuf == uintptr(0) {
 17843  		sqlite3.Xsqlite3_result_error_nomem(tls, ctx)
 17844  		libc.Xfclose(tls, in)
 17845  		return
 17846  	}
 17847  	if nIn == sqlite3_int64(libc.Xfread(tls, pBuf, uint64(1), size_t(nIn), in)) {
 17848  		sqlite3.Xsqlite3_result_blob64(tls, ctx, pBuf, uint64(nIn), *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{sqlite3.Xsqlite3_free})))
 17849  	} else {
 17850  		sqlite3.Xsqlite3_result_error_code(tls, ctx, SQLITE_IOERR)
 17851  		sqlite3.Xsqlite3_free(tls, pBuf)
 17852  	}
 17853  	libc.Xfclose(tls, in)
 17854  }
 17855  
 17856  func readfileFunc(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 17857  	var zName uintptr
 17858  	_ = argc
 17859  	zName = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 17860  	if zName == uintptr(0) {
 17861  		return
 17862  	}
 17863  	readFileContents(tls, context, zName)
 17864  }
 17865  
 17866  func ctxErrorMsg(tls *libc.TLS, ctx uintptr, zFmt uintptr, va uintptr) {
 17867  	var zMsg uintptr = uintptr(0)
 17868  	var ap va_list
 17869  	_ = ap
 17870  	ap = va
 17871  	zMsg = sqlite3.Xsqlite3_vmprintf(tls, zFmt, ap)
 17872  	sqlite3.Xsqlite3_result_error(tls, ctx, zMsg, -1)
 17873  	sqlite3.Xsqlite3_free(tls, zMsg)
 17874  	_ = ap
 17875  }
 17876  
 17877  func fileStat(tls *libc.TLS, zPath uintptr, pStatBuf uintptr) int32 {
 17878  	return libc.Xstat(tls, zPath, pStatBuf)
 17879  }
 17880  
 17881  func fileLinkStat(tls *libc.TLS, zPath uintptr, pStatBuf uintptr) int32 {
 17882  	return libc.Xlstat(tls, zPath, pStatBuf)
 17883  }
 17884  
 17885  func makeDirectory(tls *libc.TLS, zFile uintptr) int32 {
 17886  	bp := tls.Alloc(152)
 17887  	defer tls.Free(152)
 17888  
 17889  	var zCopy uintptr = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp, zFile))
 17890  	var rc int32 = SQLITE_OK
 17891  
 17892  	if zCopy == uintptr(0) {
 17893  		rc = SQLITE_NOMEM
 17894  	} else {
 17895  		var nCopy int32 = int32(libc.Xstrlen(tls, zCopy))
 17896  		var i int32 = 1
 17897  
 17898  		for rc == SQLITE_OK {
 17899  			var rc2 int32
 17900  
 17901  			for ; int32(*(*int8)(unsafe.Pointer(zCopy + uintptr(i)))) != '/' && i < nCopy; i++ {
 17902  			}
 17903  			if i == nCopy {
 17904  				break
 17905  			}
 17906  			*(*int8)(unsafe.Pointer(zCopy + uintptr(i))) = int8(0)
 17907  
 17908  			rc2 = fileStat(tls, zCopy, bp+8)
 17909  			if rc2 != 0 {
 17910  				if libc.Xmkdir(tls, zCopy, uint16(0777)) != 0 {
 17911  					rc = SQLITE_ERROR
 17912  				}
 17913  			} else {
 17914  				if !(int32((*stat)(unsafe.Pointer(bp+8)).Fst_mode)&S_IFMT == S_IFDIR) {
 17915  					rc = SQLITE_ERROR
 17916  				}
 17917  			}
 17918  			*(*int8)(unsafe.Pointer(zCopy + uintptr(i))) = int8('/')
 17919  			i++
 17920  		}
 17921  
 17922  		sqlite3.Xsqlite3_free(tls, zCopy)
 17923  	}
 17924  
 17925  	return rc
 17926  }
 17927  
 17928  func writeFile(tls *libc.TLS, pCtx uintptr, zFile uintptr, pData uintptr, mode mode_t, mtime sqlite3_int64) int32 {
 17929  	bp := tls.Alloc(176)
 17930  	defer tls.Free(176)
 17931  
 17932  	if zFile == uintptr(0) {
 17933  		return 1
 17934  	}
 17935  	if int32(mode)&S_IFMT == S_IFLNK {
 17936  		var zTo uintptr = sqlite3.Xsqlite3_value_text(tls, pData)
 17937  		if zTo == uintptr(0) || libc.Xsymlink(tls, zTo, zFile) < 0 {
 17938  			return 1
 17939  		}
 17940  	} else {
 17941  		if int32(mode)&S_IFMT == S_IFDIR {
 17942  			if libc.Xmkdir(tls, zFile, mode) != 0 {
 17943  				if *(*int32)(unsafe.Pointer(libc.X__error(tls))) != EEXIST ||
 17944  					0 != fileStat(tls, zFile, bp) ||
 17945  					!(int32((*stat)(unsafe.Pointer(bp)).Fst_mode)&S_IFMT == S_IFDIR) ||
 17946  					int32((*stat)(unsafe.Pointer(bp)).Fst_mode)&0777 != int32(mode)&0777 && 0 != libc.Xchmod(tls, zFile, uint16(int32(mode)&0777)) {
 17947  					return 1
 17948  				}
 17949  			}
 17950  		} else {
 17951  			var nWrite sqlite3_int64 = int64(0)
 17952  			var z uintptr
 17953  			var rc int32 = 0
 17954  			var out uintptr = libc.Xfopen(tls, zFile, ts+4982)
 17955  			if out == uintptr(0) {
 17956  				return 1
 17957  			}
 17958  			z = sqlite3.Xsqlite3_value_blob(tls, pData)
 17959  			if z != 0 {
 17960  				var n sqlite3_int64 = sqlite3_int64(libc.Xfwrite(tls, z, uint64(1), uint64(sqlite3.Xsqlite3_value_bytes(tls, pData)), out))
 17961  				nWrite = sqlite3_int64(sqlite3.Xsqlite3_value_bytes(tls, pData))
 17962  				if nWrite != n {
 17963  					rc = 1
 17964  				}
 17965  			}
 17966  			libc.Xfclose(tls, out)
 17967  			if rc == 0 && mode != 0 && libc.Xchmod(tls, zFile, uint16(int32(mode)&0777)) != 0 {
 17968  				rc = 1
 17969  			}
 17970  			if rc != 0 {
 17971  				return 2
 17972  			}
 17973  			sqlite3.Xsqlite3_result_int64(tls, pCtx, nWrite)
 17974  		}
 17975  	}
 17976  
 17977  	if mtime >= int64(0) {
 17978  		(*timeval)(unsafe.Pointer(bp + 144)).Ftv_usec = libc.AssignPtrInt32(bp+144+1*16+8, 0)
 17979  		(*timeval)(unsafe.Pointer(bp + 144)).Ftv_sec = libc.Xtime(tls, uintptr(0))
 17980  		(*timeval)(unsafe.Pointer(bp + 144 + 1*16)).Ftv_sec = mtime
 17981  		if libc.Xutimes(tls, zFile, bp+144) != 0 {
 17982  			return 1
 17983  		}
 17984  	}
 17985  
 17986  	return 0
 17987  }
 17988  
 17989  func writefileFunc(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 17990  	bp := tls.Alloc(24)
 17991  	defer tls.Free(24)
 17992  
 17993  	var zFile uintptr
 17994  	var mode mode_t = mode_t(0)
 17995  	var res int32
 17996  	var mtime sqlite3_int64 = int64(-1)
 17997  
 17998  	if argc < 2 || argc > 4 {
 17999  		sqlite3.Xsqlite3_result_error(tls, context,
 18000  			ts+4985, -1)
 18001  		return
 18002  	}
 18003  
 18004  	zFile = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 18005  	if zFile == uintptr(0) {
 18006  		return
 18007  	}
 18008  	if argc >= 3 {
 18009  		mode = mode_t(sqlite3.Xsqlite3_value_int(tls, *(*uintptr)(unsafe.Pointer(argv + 2*8))))
 18010  	}
 18011  	if argc == 4 {
 18012  		mtime = sqlite3.Xsqlite3_value_int64(tls, *(*uintptr)(unsafe.Pointer(argv + 3*8)))
 18013  	}
 18014  
 18015  	res = writeFile(tls, context, zFile, *(*uintptr)(unsafe.Pointer(argv + 1*8)), mode, mtime)
 18016  	if res == 1 && *(*int32)(unsafe.Pointer(libc.X__error(tls))) == ENOENT {
 18017  		if makeDirectory(tls, zFile) == SQLITE_OK {
 18018  			res = writeFile(tls, context, zFile, *(*uintptr)(unsafe.Pointer(argv + 1*8)), mode, mtime)
 18019  		}
 18020  	}
 18021  
 18022  	if argc > 2 && res != 0 {
 18023  		if int32(mode)&S_IFMT == S_IFLNK {
 18024  			ctxErrorMsg(tls, context, ts+5035, libc.VaList(bp, zFile))
 18025  		} else if int32(mode)&S_IFMT == S_IFDIR {
 18026  			ctxErrorMsg(tls, context, ts+5064, libc.VaList(bp+8, zFile))
 18027  		} else {
 18028  			ctxErrorMsg(tls, context, ts+5095, libc.VaList(bp+16, zFile))
 18029  		}
 18030  	}
 18031  }
 18032  
 18033  func lsModeFunc(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 18034  	bp := tls.Alloc(16)
 18035  	defer tls.Free(16)
 18036  
 18037  	var i int32
 18038  	var iMode int32 = sqlite3.Xsqlite3_value_int(tls, *(*uintptr)(unsafe.Pointer(argv)))
 18039  
 18040  	_ = argc
 18041  	if iMode&S_IFMT == S_IFLNK {
 18042  		*(*int8)(unsafe.Pointer(bp)) = int8('l')
 18043  	} else if iMode&S_IFMT == S_IFREG {
 18044  		*(*int8)(unsafe.Pointer(bp)) = int8('-')
 18045  	} else if iMode&S_IFMT == S_IFDIR {
 18046  		*(*int8)(unsafe.Pointer(bp)) = int8('d')
 18047  	} else {
 18048  		*(*int8)(unsafe.Pointer(bp)) = int8('?')
 18049  	}
 18050  	for i = 0; i < 3; i++ {
 18051  		var m int32 = iMode >> ((2 - i) * 3)
 18052  		var a uintptr = bp + uintptr(1+i*3)
 18053  		*(*int8)(unsafe.Pointer(a)) = func() int8 {
 18054  			if m&0x4 != 0 {
 18055  				return int8('r')
 18056  			}
 18057  			return int8('-')
 18058  		}()
 18059  		*(*int8)(unsafe.Pointer(a + 1)) = func() int8 {
 18060  			if m&0x2 != 0 {
 18061  				return int8('w')
 18062  			}
 18063  			return int8('-')
 18064  		}()
 18065  		*(*int8)(unsafe.Pointer(a + 2)) = func() int8 {
 18066  			if m&0x1 != 0 {
 18067  				return int8('x')
 18068  			}
 18069  			return int8('-')
 18070  		}()
 18071  	}
 18072  	*(*int8)(unsafe.Pointer(bp + 10)) = int8(0)
 18073  	sqlite3.Xsqlite3_result_text(tls, context, bp, -1, libc.UintptrFromInt32(-1))
 18074  }
 18075  
 18076  type fsdir_cursor1 = struct {
 18077  	Fbase        sqlite3_vtab_cursor
 18078  	FnLvl        int32
 18079  	FiLvl        int32
 18080  	FaLvl        uintptr
 18081  	FzBase       uintptr
 18082  	FnBase       int32
 18083  	F__ccgo_pad1 [4]byte
 18084  	FsStat       struct {
 18085  		Fst_dev       dev_t
 18086  		Fst_mode      mode_t
 18087  		Fst_nlink     nlink_t
 18088  		Fst_ino       uint64
 18089  		Fst_uid       uid_t
 18090  		Fst_gid       gid_t
 18091  		Fst_rdev      dev_t
 18092  		F__ccgo_pad1  [4]byte
 18093  		Fst_atimespec struct {
 18094  			Ftv_sec  int64
 18095  			Ftv_nsec int64
 18096  		}
 18097  		Fst_mtimespec struct {
 18098  			Ftv_sec  int64
 18099  			Ftv_nsec int64
 18100  		}
 18101  		Fst_ctimespec struct {
 18102  			Ftv_sec  int64
 18103  			Ftv_nsec int64
 18104  		}
 18105  		Fst_birthtimespec struct {
 18106  			Ftv_sec  int64
 18107  			Ftv_nsec int64
 18108  		}
 18109  		Fst_size    off_t
 18110  		Fst_blocks  blkcnt_t
 18111  		Fst_blksize blksize_t
 18112  		Fst_flags   uint32
 18113  		Fst_gen     uint32
 18114  		Fst_lspare  int32
 18115  		Fst_qspare  [2]int64
 18116  	}
 18117  	FzPath  uintptr
 18118  	FiRowid sqlite3_int64
 18119  }
 18120  
 18121  type fsdir_cursor = fsdir_cursor1
 18122  type FsdirLevel1 = struct {
 18123  	FpDir uintptr
 18124  	FzDir uintptr
 18125  }
 18126  
 18127  type FsdirLevel = FsdirLevel1
 18128  
 18129  type fsdir_tab1 = struct{ Fbase sqlite3_vtab }
 18130  
 18131  type fsdir_tab = fsdir_tab1
 18132  
 18133  func fsdirConnect(tls *libc.TLS, db uintptr, pAux uintptr, argc int32, argv uintptr, ppVtab uintptr, pzErr uintptr) int32 {
 18134  	var pNew uintptr = uintptr(0)
 18135  	var rc int32
 18136  	_ = pAux
 18137  	_ = argc
 18138  	_ = argv
 18139  	_ = pzErr
 18140  	rc = sqlite3.Xsqlite3_declare_vtab(tls, db, ts+5120)
 18141  	if rc == SQLITE_OK {
 18142  		pNew = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(fsdir_tab{})))
 18143  		if pNew == uintptr(0) {
 18144  			return SQLITE_NOMEM
 18145  		}
 18146  		libc.X__builtin___memset_chk(tls, pNew, 0, uint64(unsafe.Sizeof(fsdir_tab{})), libc.X__builtin_object_size(tls, pNew, 0))
 18147  		sqlite3.Xsqlite3_vtab_config(tls, db, SQLITE_VTAB_DIRECTONLY, 0)
 18148  	}
 18149  	*(*uintptr)(unsafe.Pointer(ppVtab)) = pNew
 18150  	return rc
 18151  }
 18152  
 18153  func fsdirDisconnect(tls *libc.TLS, pVtab uintptr) int32 {
 18154  	sqlite3.Xsqlite3_free(tls, pVtab)
 18155  	return SQLITE_OK
 18156  }
 18157  
 18158  func fsdirOpen(tls *libc.TLS, p uintptr, ppCursor uintptr) int32 {
 18159  	var pCur uintptr
 18160  	_ = p
 18161  	pCur = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(fsdir_cursor{})))
 18162  	if pCur == uintptr(0) {
 18163  		return SQLITE_NOMEM
 18164  	}
 18165  	libc.X__builtin___memset_chk(tls, pCur, 0, uint64(unsafe.Sizeof(fsdir_cursor{})), libc.X__builtin_object_size(tls, pCur, 0))
 18166  	(*fsdir_cursor)(unsafe.Pointer(pCur)).FiLvl = -1
 18167  	*(*uintptr)(unsafe.Pointer(ppCursor)) = pCur
 18168  	return SQLITE_OK
 18169  }
 18170  
 18171  func fsdirResetCursor(tls *libc.TLS, pCur uintptr) {
 18172  	var i int32
 18173  	for i = 0; i <= (*fsdir_cursor)(unsafe.Pointer(pCur)).FiLvl; i++ {
 18174  		var pLvl uintptr = (*fsdir_cursor)(unsafe.Pointer(pCur)).FaLvl + uintptr(i)*16
 18175  		if (*FsdirLevel)(unsafe.Pointer(pLvl)).FpDir != 0 {
 18176  			libc.Xclosedir(tls, (*FsdirLevel)(unsafe.Pointer(pLvl)).FpDir)
 18177  		}
 18178  		sqlite3.Xsqlite3_free(tls, (*FsdirLevel)(unsafe.Pointer(pLvl)).FzDir)
 18179  	}
 18180  	sqlite3.Xsqlite3_free(tls, (*fsdir_cursor)(unsafe.Pointer(pCur)).FzPath)
 18181  	sqlite3.Xsqlite3_free(tls, (*fsdir_cursor)(unsafe.Pointer(pCur)).FaLvl)
 18182  	(*fsdir_cursor)(unsafe.Pointer(pCur)).FaLvl = uintptr(0)
 18183  	(*fsdir_cursor)(unsafe.Pointer(pCur)).FzPath = uintptr(0)
 18184  	(*fsdir_cursor)(unsafe.Pointer(pCur)).FzBase = uintptr(0)
 18185  	(*fsdir_cursor)(unsafe.Pointer(pCur)).FnBase = 0
 18186  	(*fsdir_cursor)(unsafe.Pointer(pCur)).FnLvl = 0
 18187  	(*fsdir_cursor)(unsafe.Pointer(pCur)).FiLvl = -1
 18188  	(*fsdir_cursor)(unsafe.Pointer(pCur)).FiRowid = int64(1)
 18189  }
 18190  
 18191  func fsdirClose(tls *libc.TLS, cur uintptr) int32 {
 18192  	var pCur uintptr = cur
 18193  
 18194  	fsdirResetCursor(tls, pCur)
 18195  	sqlite3.Xsqlite3_free(tls, pCur)
 18196  	return SQLITE_OK
 18197  }
 18198  
 18199  func fsdirSetErrmsg(tls *libc.TLS, pCur uintptr, zFmt uintptr, va uintptr) {
 18200  	var ap va_list
 18201  	_ = ap
 18202  	ap = va
 18203  	(*sqlite3_vtab)(unsafe.Pointer((*fsdir_cursor)(unsafe.Pointer(pCur)).Fbase.FpVtab)).FzErrMsg = sqlite3.Xsqlite3_vmprintf(tls, zFmt, ap)
 18204  	_ = ap
 18205  }
 18206  
 18207  func fsdirNext(tls *libc.TLS, cur uintptr) int32 {
 18208  	bp := tls.Alloc(32)
 18209  	defer tls.Free(32)
 18210  
 18211  	var pCur uintptr = cur
 18212  	var m mode_t = (*fsdir_cursor)(unsafe.Pointer(pCur)).FsStat.Fst_mode
 18213  
 18214  	(*fsdir_cursor)(unsafe.Pointer(pCur)).FiRowid++
 18215  	if int32(m)&S_IFMT == S_IFDIR {
 18216  		var iNew int32 = (*fsdir_cursor)(unsafe.Pointer(pCur)).FiLvl + 1
 18217  		var pLvl uintptr
 18218  		if iNew >= (*fsdir_cursor)(unsafe.Pointer(pCur)).FnLvl {
 18219  			var nNew int32 = iNew + 1
 18220  			var nByte sqlite3_int64 = sqlite3_int64(uint64(nNew) * uint64(unsafe.Sizeof(FsdirLevel{})))
 18221  			var aNew uintptr = sqlite3.Xsqlite3_realloc64(tls, (*fsdir_cursor)(unsafe.Pointer(pCur)).FaLvl, uint64(nByte))
 18222  			if aNew == uintptr(0) {
 18223  				return SQLITE_NOMEM
 18224  			}
 18225  			libc.X__builtin___memset_chk(tls, aNew+uintptr((*fsdir_cursor)(unsafe.Pointer(pCur)).FnLvl)*16, 0, uint64(unsafe.Sizeof(FsdirLevel{}))*uint64(nNew-(*fsdir_cursor)(unsafe.Pointer(pCur)).FnLvl), libc.X__builtin_object_size(tls, aNew+uintptr((*fsdir_cursor)(unsafe.Pointer(pCur)).FnLvl)*16, 0))
 18226  			(*fsdir_cursor)(unsafe.Pointer(pCur)).FaLvl = aNew
 18227  			(*fsdir_cursor)(unsafe.Pointer(pCur)).FnLvl = nNew
 18228  		}
 18229  		(*fsdir_cursor)(unsafe.Pointer(pCur)).FiLvl = iNew
 18230  		pLvl = (*fsdir_cursor)(unsafe.Pointer(pCur)).FaLvl + uintptr(iNew)*16
 18231  
 18232  		(*FsdirLevel)(unsafe.Pointer(pLvl)).FzDir = (*fsdir_cursor)(unsafe.Pointer(pCur)).FzPath
 18233  		(*fsdir_cursor)(unsafe.Pointer(pCur)).FzPath = uintptr(0)
 18234  		(*FsdirLevel)(unsafe.Pointer(pLvl)).FpDir = libc.Xopendir(tls, (*FsdirLevel)(unsafe.Pointer(pLvl)).FzDir)
 18235  		if (*FsdirLevel)(unsafe.Pointer(pLvl)).FpDir == uintptr(0) {
 18236  			fsdirSetErrmsg(tls, pCur, ts+5180, libc.VaList(bp, (*fsdir_cursor)(unsafe.Pointer(pCur)).FzPath))
 18237  			return SQLITE_ERROR
 18238  		}
 18239  	}
 18240  
 18241  	for (*fsdir_cursor)(unsafe.Pointer(pCur)).FiLvl >= 0 {
 18242  		var pLvl uintptr = (*fsdir_cursor)(unsafe.Pointer(pCur)).FaLvl + uintptr((*fsdir_cursor)(unsafe.Pointer(pCur)).FiLvl)*16
 18243  		var pEntry uintptr = libc.Xreaddir(tls, (*FsdirLevel)(unsafe.Pointer(pLvl)).FpDir)
 18244  		if pEntry != 0 {
 18245  			if int32(*(*int8)(unsafe.Pointer(pEntry + 21))) == '.' {
 18246  				if int32(*(*int8)(unsafe.Pointer(pEntry + 21 + 1))) == '.' && int32(*(*int8)(unsafe.Pointer(pEntry + 21 + 2))) == 0 {
 18247  					continue
 18248  				}
 18249  				if int32(*(*int8)(unsafe.Pointer(pEntry + 21 + 1))) == 0 {
 18250  					continue
 18251  				}
 18252  			}
 18253  			sqlite3.Xsqlite3_free(tls, (*fsdir_cursor)(unsafe.Pointer(pCur)).FzPath)
 18254  			(*fsdir_cursor)(unsafe.Pointer(pCur)).FzPath = sqlite3.Xsqlite3_mprintf(tls, ts+5206, libc.VaList(bp+8, (*FsdirLevel)(unsafe.Pointer(pLvl)).FzDir, pEntry+21))
 18255  			if (*fsdir_cursor)(unsafe.Pointer(pCur)).FzPath == uintptr(0) {
 18256  				return SQLITE_NOMEM
 18257  			}
 18258  			if fileLinkStat(tls, (*fsdir_cursor)(unsafe.Pointer(pCur)).FzPath, pCur+40) != 0 {
 18259  				fsdirSetErrmsg(tls, pCur, ts+5212, libc.VaList(bp+24, (*fsdir_cursor)(unsafe.Pointer(pCur)).FzPath))
 18260  				return SQLITE_ERROR
 18261  			}
 18262  			return SQLITE_OK
 18263  		}
 18264  		libc.Xclosedir(tls, (*FsdirLevel)(unsafe.Pointer(pLvl)).FpDir)
 18265  		sqlite3.Xsqlite3_free(tls, (*FsdirLevel)(unsafe.Pointer(pLvl)).FzDir)
 18266  		(*FsdirLevel)(unsafe.Pointer(pLvl)).FpDir = uintptr(0)
 18267  		(*FsdirLevel)(unsafe.Pointer(pLvl)).FzDir = uintptr(0)
 18268  		(*fsdir_cursor)(unsafe.Pointer(pCur)).FiLvl--
 18269  	}
 18270  
 18271  	sqlite3.Xsqlite3_free(tls, (*fsdir_cursor)(unsafe.Pointer(pCur)).FzPath)
 18272  	(*fsdir_cursor)(unsafe.Pointer(pCur)).FzPath = uintptr(0)
 18273  	return SQLITE_OK
 18274  }
 18275  
 18276  func fsdirColumn(tls *libc.TLS, cur uintptr, ctx uintptr, i int32) int32 {
 18277  	bp := tls.Alloc(64)
 18278  	defer tls.Free(64)
 18279  
 18280  	var pCur uintptr = cur
 18281  	switch i {
 18282  	case FSDIR_COLUMN_NAME:
 18283  		{
 18284  			sqlite3.Xsqlite3_result_text(tls, ctx, (*fsdir_cursor)(unsafe.Pointer(pCur)).FzPath+uintptr((*fsdir_cursor)(unsafe.Pointer(pCur)).FnBase), -1, libc.UintptrFromInt32(-1))
 18285  			break
 18286  
 18287  		}
 18288  
 18289  	case FSDIR_COLUMN_MODE:
 18290  		sqlite3.Xsqlite3_result_int64(tls, ctx, int64((*fsdir_cursor)(unsafe.Pointer(pCur)).FsStat.Fst_mode))
 18291  		break
 18292  
 18293  	case FSDIR_COLUMN_MTIME:
 18294  		sqlite3.Xsqlite3_result_int64(tls, ctx, (*fsdir_cursor)(unsafe.Pointer(pCur)).FsStat.Fst_mtimespec.Ftv_sec)
 18295  		break
 18296  
 18297  	case FSDIR_COLUMN_DATA:
 18298  		{
 18299  			var m mode_t = (*fsdir_cursor)(unsafe.Pointer(pCur)).FsStat.Fst_mode
 18300  			if int32(m)&S_IFMT == S_IFDIR {
 18301  				sqlite3.Xsqlite3_result_null(tls, ctx)
 18302  			} else if int32(m)&S_IFMT == S_IFLNK {
 18303  				var aBuf uintptr = bp
 18304  				var nBuf sqlite3_int64 = int64(64)
 18305  				var n int32
 18306  
 18307  				for 1 != 0 {
 18308  					n = int32(libc.Xreadlink(tls, (*fsdir_cursor)(unsafe.Pointer(pCur)).FzPath, aBuf, uint64(nBuf)))
 18309  					if sqlite3_int64(n) < nBuf {
 18310  						break
 18311  					}
 18312  					if aBuf != bp {
 18313  						sqlite3.Xsqlite3_free(tls, aBuf)
 18314  					}
 18315  					nBuf = nBuf * int64(2)
 18316  					aBuf = sqlite3.Xsqlite3_malloc64(tls, uint64(nBuf))
 18317  					if aBuf == uintptr(0) {
 18318  						sqlite3.Xsqlite3_result_error_nomem(tls, ctx)
 18319  						return SQLITE_NOMEM
 18320  					}
 18321  				}
 18322  
 18323  				sqlite3.Xsqlite3_result_text(tls, ctx, aBuf, n, libc.UintptrFromInt32(-1))
 18324  				if aBuf != bp {
 18325  					sqlite3.Xsqlite3_free(tls, aBuf)
 18326  				}
 18327  			} else {
 18328  				readFileContents(tls, ctx, (*fsdir_cursor)(unsafe.Pointer(pCur)).FzPath)
 18329  			}
 18330  
 18331  		}
 18332  		fallthrough
 18333  	case FSDIR_COLUMN_PATH:
 18334  		fallthrough
 18335  	default:
 18336  		{
 18337  			break
 18338  
 18339  		}
 18340  	}
 18341  	return SQLITE_OK
 18342  }
 18343  
 18344  func fsdirRowid(tls *libc.TLS, cur uintptr, pRowid uintptr) int32 {
 18345  	var pCur uintptr = cur
 18346  	*(*sqlite_int64)(unsafe.Pointer(pRowid)) = (*fsdir_cursor)(unsafe.Pointer(pCur)).FiRowid
 18347  	return SQLITE_OK
 18348  }
 18349  
 18350  func fsdirEof(tls *libc.TLS, cur uintptr) int32 {
 18351  	var pCur uintptr = cur
 18352  	return libc.Bool32((*fsdir_cursor)(unsafe.Pointer(pCur)).FzPath == uintptr(0))
 18353  }
 18354  
 18355  func fsdirFilter(tls *libc.TLS, cur uintptr, idxNum int32, idxStr uintptr, argc int32, argv uintptr) int32 {
 18356  	bp := tls.Alloc(32)
 18357  	defer tls.Free(32)
 18358  
 18359  	var zDir uintptr = uintptr(0)
 18360  	var pCur uintptr = cur
 18361  	_ = idxStr
 18362  	fsdirResetCursor(tls, pCur)
 18363  
 18364  	if idxNum == 0 {
 18365  		fsdirSetErrmsg(tls, pCur, ts+5233, 0)
 18366  		return SQLITE_ERROR
 18367  	}
 18368  
 18369  	zDir = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 18370  	if zDir == uintptr(0) {
 18371  		fsdirSetErrmsg(tls, pCur, ts+5275, 0)
 18372  		return SQLITE_ERROR
 18373  	}
 18374  	if argc == 2 {
 18375  		(*fsdir_cursor)(unsafe.Pointer(pCur)).FzBase = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 18376  	}
 18377  	if (*fsdir_cursor)(unsafe.Pointer(pCur)).FzBase != 0 {
 18378  		(*fsdir_cursor)(unsafe.Pointer(pCur)).FnBase = int32(libc.Xstrlen(tls, (*fsdir_cursor)(unsafe.Pointer(pCur)).FzBase)) + 1
 18379  		(*fsdir_cursor)(unsafe.Pointer(pCur)).FzPath = sqlite3.Xsqlite3_mprintf(tls, ts+5206, libc.VaList(bp, (*fsdir_cursor)(unsafe.Pointer(pCur)).FzBase, zDir))
 18380  	} else {
 18381  		(*fsdir_cursor)(unsafe.Pointer(pCur)).FzPath = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp+16, zDir))
 18382  	}
 18383  
 18384  	if (*fsdir_cursor)(unsafe.Pointer(pCur)).FzPath == uintptr(0) {
 18385  		return SQLITE_NOMEM
 18386  	}
 18387  	if fileLinkStat(tls, (*fsdir_cursor)(unsafe.Pointer(pCur)).FzPath, pCur+40) != 0 {
 18388  		fsdirSetErrmsg(tls, pCur, ts+5212, libc.VaList(bp+24, (*fsdir_cursor)(unsafe.Pointer(pCur)).FzPath))
 18389  		return SQLITE_ERROR
 18390  	}
 18391  
 18392  	return SQLITE_OK
 18393  }
 18394  
 18395  func fsdirBestIndex(tls *libc.TLS, tab uintptr, pIdxInfo uintptr) int32 {
 18396  	var i int32
 18397  	var idxPath int32 = -1
 18398  	var idxDir int32 = -1
 18399  	var seenPath int32 = 0
 18400  	var seenDir int32 = 0
 18401  	var pConstraint uintptr
 18402  
 18403  	_ = tab
 18404  	pConstraint = (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint
 18405  	i = 0
 18406  __1:
 18407  	if !(i < (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnConstraint) {
 18408  		goto __3
 18409  	}
 18410  	{
 18411  		if int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) != SQLITE_INDEX_CONSTRAINT_EQ {
 18412  			goto __2
 18413  		}
 18414  		switch (*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).FiColumn {
 18415  		case FSDIR_COLUMN_PATH:
 18416  			{
 18417  				if (*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fusable != 0 {
 18418  					idxPath = i
 18419  					seenPath = 0
 18420  				} else if idxPath < 0 {
 18421  					seenPath = 1
 18422  				}
 18423  				break
 18424  
 18425  			}
 18426  		case FSDIR_COLUMN_DIR:
 18427  			{
 18428  				if (*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fusable != 0 {
 18429  					idxDir = i
 18430  					seenDir = 0
 18431  				} else if idxDir < 0 {
 18432  					seenDir = 1
 18433  				}
 18434  				break
 18435  
 18436  			}
 18437  		}
 18438  
 18439  	}
 18440  	goto __2
 18441  __2:
 18442  	i++
 18443  	pConstraint += 12
 18444  	goto __1
 18445  	goto __3
 18446  __3:
 18447  	;
 18448  	if seenPath != 0 || seenDir != 0 {
 18449  		return SQLITE_CONSTRAINT
 18450  	}
 18451  
 18452  	if idxPath < 0 {
 18453  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxNum = 0
 18454  
 18455  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedRows = int64(0x7fffffff)
 18456  	} else {
 18457  		(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(idxPath)*8)).Fomit = uint8(1)
 18458  		(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(idxPath)*8)).FargvIndex = 1
 18459  		if idxDir >= 0 {
 18460  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(idxDir)*8)).Fomit = uint8(1)
 18461  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(idxDir)*8)).FargvIndex = 2
 18462  			(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxNum = 2
 18463  			(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = 10.0
 18464  		} else {
 18465  			(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxNum = 1
 18466  			(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = 100.0
 18467  		}
 18468  	}
 18469  
 18470  	return SQLITE_OK
 18471  }
 18472  
 18473  func fsdirRegister(tls *libc.TLS, db uintptr) int32 {
 18474  	var rc int32 = sqlite3.Xsqlite3_create_module(tls, db, ts+5325, uintptr(unsafe.Pointer(&fsdirModule1)), uintptr(0))
 18475  	return rc
 18476  }
 18477  
 18478  var fsdirModule1 = sqlite3_module{
 18479  	FxConnect:    0,
 18480  	FxBestIndex:  0,
 18481  	FxDisconnect: 0,
 18482  	FxOpen:       0,
 18483  	FxClose:      0,
 18484  	FxFilter:     0,
 18485  	FxNext:       0,
 18486  	FxEof:        0,
 18487  	FxColumn:     0,
 18488  	FxRowid:      0,
 18489  }
 18490  
 18491  func sqlite3_fileio_init(tls *libc.TLS, db uintptr, pzErrMsg uintptr, pApi uintptr) int32 {
 18492  	var rc int32 = SQLITE_OK
 18493  	_ = pApi
 18494  
 18495  	_ = pzErrMsg
 18496  	rc = sqlite3.Xsqlite3_create_function(tls, db, ts+5331, 1,
 18497  		SQLITE_UTF8|SQLITE_DIRECTONLY, uintptr(0),
 18498  		*(*uintptr)(unsafe.Pointer(&struct {
 18499  			f func(*libc.TLS, uintptr, int32, uintptr)
 18500  		}{readfileFunc})), uintptr(0), uintptr(0))
 18501  	if rc == SQLITE_OK {
 18502  		rc = sqlite3.Xsqlite3_create_function(tls, db, ts+5340, -1,
 18503  			SQLITE_UTF8|SQLITE_DIRECTONLY, uintptr(0),
 18504  			*(*uintptr)(unsafe.Pointer(&struct {
 18505  				f func(*libc.TLS, uintptr, int32, uintptr)
 18506  			}{writefileFunc})), uintptr(0), uintptr(0))
 18507  	}
 18508  	if rc == SQLITE_OK {
 18509  		rc = sqlite3.Xsqlite3_create_function(tls, db, ts+5350, 1, SQLITE_UTF8, uintptr(0),
 18510  			*(*uintptr)(unsafe.Pointer(&struct {
 18511  				f func(*libc.TLS, uintptr, int32, uintptr)
 18512  			}{lsModeFunc})), uintptr(0), uintptr(0))
 18513  	}
 18514  	if rc == SQLITE_OK {
 18515  		rc = fsdirRegister(tls, db)
 18516  	}
 18517  	return rc
 18518  }
 18519  
 18520  type fuzzer_vtab1 = struct {
 18521  	Fbase        sqlite3_vtab
 18522  	FzClassName  uintptr
 18523  	FpRule       uintptr
 18524  	FnCursor     int32
 18525  	F__ccgo_pad1 [4]byte
 18526  }
 18527  
 18528  type fuzzer_vtab = fuzzer_vtab1
 18529  type fuzzer_cursor1 = struct {
 18530  	Fbase        sqlite3_vtab_cursor
 18531  	FiRowid      sqlite3_int64
 18532  	FpVtab       uintptr
 18533  	FrLimit      fuzzer_cost
 18534  	F__ccgo_pad1 [4]byte
 18535  	FpStem       uintptr
 18536  	FpDone       uintptr
 18537  	FaQueue      [20]uintptr
 18538  	FmxQueue     int32
 18539  	F__ccgo_pad2 [4]byte
 18540  	FzBuf        uintptr
 18541  	FnBuf        int32
 18542  	FnStem       int32
 18543  	FiRuleset    int32
 18544  	F__ccgo_pad3 [4]byte
 18545  	FnullRule    fuzzer_rule
 18546  	FapHash      [4001]uintptr
 18547  }
 18548  
 18549  type fuzzer_cursor = fuzzer_cursor1
 18550  type fuzzer_rule1 = struct {
 18551  	FpNext       uintptr
 18552  	FzFrom       uintptr
 18553  	FrCost       fuzzer_cost
 18554  	FnFrom       fuzzer_len
 18555  	FnTo         fuzzer_len
 18556  	F__ccgo_pad1 [2]byte
 18557  	FiRuleset    fuzzer_ruleid
 18558  	FzTo         [4]int8
 18559  }
 18560  
 18561  type fuzzer_rule = fuzzer_rule1
 18562  type fuzzer_stem1 = struct {
 18563  	FzBasis      uintptr
 18564  	FpRule       uintptr
 18565  	FpNext       uintptr
 18566  	FpHash       uintptr
 18567  	FrBaseCost   fuzzer_cost
 18568  	FrCostX      fuzzer_cost
 18569  	FnBasis      fuzzer_len
 18570  	Fn           fuzzer_len
 18571  	F__ccgo_pad1 [6]byte
 18572  }
 18573  
 18574  type fuzzer_stem = fuzzer_stem1
 18575  
 18576  type fuzzer_cost = int32
 18577  type fuzzer_len = int8
 18578  type fuzzer_ruleid = int32
 18579  
 18580  func fuzzerMergeRules(tls *libc.TLS, pA uintptr, pB uintptr) uintptr {
 18581  	bp := tls.Alloc(32)
 18582  	defer tls.Free(32)
 18583  
 18584  	var pTail uintptr
 18585  
 18586  	pTail = bp
 18587  	for pA != 0 && pB != 0 {
 18588  		if (*fuzzer_rule)(unsafe.Pointer(pA)).FrCost <= (*fuzzer_rule)(unsafe.Pointer(pB)).FrCost {
 18589  			(*fuzzer_rule)(unsafe.Pointer(pTail)).FpNext = pA
 18590  			pTail = pA
 18591  			pA = (*fuzzer_rule)(unsafe.Pointer(pA)).FpNext
 18592  		} else {
 18593  			(*fuzzer_rule)(unsafe.Pointer(pTail)).FpNext = pB
 18594  			pTail = pB
 18595  			pB = (*fuzzer_rule)(unsafe.Pointer(pB)).FpNext
 18596  		}
 18597  	}
 18598  	if pA == uintptr(0) {
 18599  		(*fuzzer_rule)(unsafe.Pointer(pTail)).FpNext = pB
 18600  	} else {
 18601  		(*fuzzer_rule)(unsafe.Pointer(pTail)).FpNext = pA
 18602  	}
 18603  	return (*fuzzer_rule)(unsafe.Pointer(bp)).FpNext
 18604  }
 18605  
 18606  func fuzzerLoadOneRule(tls *libc.TLS, p uintptr, pStmt uintptr, ppRule uintptr, pzErr uintptr) int32 {
 18607  	bp := tls.Alloc(48)
 18608  	defer tls.Free(48)
 18609  
 18610  	var iRuleset sqlite3_int64 = sqlite3.Xsqlite3_column_int64(tls, pStmt, 0)
 18611  	var zFrom uintptr = sqlite3.Xsqlite3_column_text(tls, pStmt, 1)
 18612  	var zTo uintptr = sqlite3.Xsqlite3_column_text(tls, pStmt, 2)
 18613  	var nCost int32 = sqlite3.Xsqlite3_column_int(tls, pStmt, 3)
 18614  
 18615  	var rc int32 = SQLITE_OK
 18616  	var nFrom int32
 18617  	var nTo int32
 18618  	var pRule uintptr = uintptr(0)
 18619  
 18620  	if zFrom == uintptr(0) {
 18621  		zFrom = ts + 584
 18622  	}
 18623  	if zTo == uintptr(0) {
 18624  		zTo = ts + 584
 18625  	}
 18626  	nFrom = int32(libc.Xstrlen(tls, zFrom))
 18627  	nTo = int32(libc.Xstrlen(tls, zTo))
 18628  
 18629  	if libc.Xstrcmp(tls, zFrom, zTo) == 0 {
 18630  		*(*uintptr)(unsafe.Pointer(ppRule)) = uintptr(0)
 18631  		return SQLITE_OK
 18632  	}
 18633  
 18634  	if nCost <= 0 || nCost > FUZZER_MX_COST {
 18635  		*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+3304,
 18636  			libc.VaList(bp, (*fuzzer_vtab)(unsafe.Pointer(p)).FzClassName, FUZZER_MX_COST))
 18637  		rc = SQLITE_ERROR
 18638  	} else if nFrom > FUZZER_MX_LENGTH || nTo > FUZZER_MX_LENGTH {
 18639  		*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+3338,
 18640  			libc.VaList(bp+16, (*fuzzer_vtab)(unsafe.Pointer(p)).FzClassName, FUZZER_MX_LENGTH))
 18641  		rc = SQLITE_ERROR
 18642  	} else if iRuleset < int64(0) || iRuleset > int64(FUZZER_MX_RULEID) {
 18643  		*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+5357,
 18644  			libc.VaList(bp+32, (*fuzzer_vtab)(unsafe.Pointer(p)).FzClassName, FUZZER_MX_RULEID))
 18645  		rc = SQLITE_ERROR
 18646  	} else {
 18647  		pRule = sqlite3.Xsqlite3_malloc64(tls, uint64(unsafe.Sizeof(fuzzer_rule{}))+uint64(nFrom)+uint64(nTo))
 18648  		if pRule == uintptr(0) {
 18649  			rc = SQLITE_NOMEM
 18650  		} else {
 18651  			libc.X__builtin___memset_chk(tls, pRule, 0, uint64(unsafe.Sizeof(fuzzer_rule{})), libc.X__builtin_object_size(tls, pRule, 0))
 18652  			(*fuzzer_rule)(unsafe.Pointer(pRule)).FzFrom = pRule + 28
 18653  			*(*uintptr)(unsafe.Pointer(pRule + 8)) += uintptr(nTo + 1)
 18654  			(*fuzzer_rule)(unsafe.Pointer(pRule)).FnFrom = fuzzer_len(nFrom)
 18655  			libc.X__builtin___memcpy_chk(tls, (*fuzzer_rule)(unsafe.Pointer(pRule)).FzFrom, zFrom, uint64(nFrom+1), libc.X__builtin_object_size(tls, (*fuzzer_rule)(unsafe.Pointer(pRule)).FzFrom, 0))
 18656  			libc.X__builtin___memcpy_chk(tls, pRule+28, zTo, uint64(nTo+1), libc.X__builtin_object_size(tls, pRule+28, 0))
 18657  			(*fuzzer_rule)(unsafe.Pointer(pRule)).FnTo = fuzzer_len(nTo)
 18658  			(*fuzzer_rule)(unsafe.Pointer(pRule)).FrCost = nCost
 18659  			(*fuzzer_rule)(unsafe.Pointer(pRule)).FiRuleset = int32(iRuleset)
 18660  		}
 18661  	}
 18662  
 18663  	*(*uintptr)(unsafe.Pointer(ppRule)) = pRule
 18664  	return rc
 18665  }
 18666  
 18667  func fuzzerLoadRules(tls *libc.TLS, db uintptr, p uintptr, zDb uintptr, zData uintptr, pzErr uintptr) int32 {
 18668  	bp := tls.Alloc(192)
 18669  	defer tls.Free(192)
 18670  
 18671  	var rc int32 = SQLITE_OK
 18672  	var zSql uintptr
 18673  	var pHead uintptr = uintptr(0)
 18674  
 18675  	zSql = sqlite3.Xsqlite3_mprintf(tls, ts+3407, libc.VaList(bp, zDb, zData))
 18676  	if zSql == uintptr(0) {
 18677  		rc = SQLITE_NOMEM
 18678  	} else {
 18679  		var rc2 int32
 18680  		*(*uintptr)(unsafe.Pointer(bp + 56)) = uintptr(0)
 18681  		rc = sqlite3.Xsqlite3_prepare_v2(tls, db, zSql, -1, bp+56, uintptr(0))
 18682  		if rc != SQLITE_OK {
 18683  			*(*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)))
 18684  		} else if sqlite3.Xsqlite3_column_count(tls, *(*uintptr)(unsafe.Pointer(bp + 56))) != 4 {
 18685  			*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+3434,
 18686  				libc.VaList(bp+32, (*fuzzer_vtab)(unsafe.Pointer(p)).FzClassName, zData, sqlite3.Xsqlite3_column_count(tls, *(*uintptr)(unsafe.Pointer(bp + 56)))))
 18687  			rc = SQLITE_ERROR
 18688  		} else {
 18689  			for rc == SQLITE_OK && SQLITE_ROW == sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp + 56))) {
 18690  				*(*uintptr)(unsafe.Pointer(bp + 64)) = uintptr(0)
 18691  				rc = fuzzerLoadOneRule(tls, p, *(*uintptr)(unsafe.Pointer(bp + 56)), bp+64, pzErr)
 18692  				if *(*uintptr)(unsafe.Pointer(bp + 64)) != 0 {
 18693  					(*fuzzer_rule)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 64)))).FpNext = pHead
 18694  					pHead = *(*uintptr)(unsafe.Pointer(bp + 64))
 18695  				}
 18696  			}
 18697  		}
 18698  		rc2 = sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 56)))
 18699  		if rc == SQLITE_OK {
 18700  			rc = rc2
 18701  		}
 18702  	}
 18703  	sqlite3.Xsqlite3_free(tls, zSql)
 18704  
 18705  	if rc == SQLITE_OK {
 18706  		var i uint32
 18707  		var pX uintptr
 18708  
 18709  		for i = uint32(0); uint64(i) < uint64(unsafe.Sizeof([15]uintptr{}))/uint64(unsafe.Sizeof(uintptr(0))); i++ {
 18710  			*(*uintptr)(unsafe.Pointer(bp + 72 + uintptr(i)*8)) = uintptr(0)
 18711  		}
 18712  		for libc.AssignUintptr(&pX, pHead) != uintptr(0) {
 18713  			pHead = (*fuzzer_rule)(unsafe.Pointer(pX)).FpNext
 18714  			(*fuzzer_rule)(unsafe.Pointer(pX)).FpNext = uintptr(0)
 18715  			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++ {
 18716  				pX = fuzzerMergeRules(tls, *(*uintptr)(unsafe.Pointer(bp + 72 + uintptr(i)*8)), pX)
 18717  				*(*uintptr)(unsafe.Pointer(bp + 72 + uintptr(i)*8)) = uintptr(0)
 18718  			}
 18719  			*(*uintptr)(unsafe.Pointer(bp + 72 + uintptr(i)*8)) = fuzzerMergeRules(tls, *(*uintptr)(unsafe.Pointer(bp + 72 + uintptr(i)*8)), pX)
 18720  		}
 18721  		pX = *(*uintptr)(unsafe.Pointer(bp + 72))
 18722  		i = uint32(1)
 18723  		for ; uint64(i) < uint64(unsafe.Sizeof([15]uintptr{}))/uint64(unsafe.Sizeof(uintptr(0))); i++ {
 18724  			pX = fuzzerMergeRules(tls, *(*uintptr)(unsafe.Pointer(bp + 72 + uintptr(i)*8)), pX)
 18725  		}
 18726  		(*fuzzer_vtab)(unsafe.Pointer(p)).FpRule = fuzzerMergeRules(tls, (*fuzzer_vtab)(unsafe.Pointer(p)).FpRule, pX)
 18727  	} else {
 18728  		(*fuzzer_vtab)(unsafe.Pointer(p)).FpRule = pHead
 18729  	}
 18730  
 18731  	return rc
 18732  }
 18733  
 18734  func fuzzerDequote(tls *libc.TLS, zIn uintptr) uintptr {
 18735  	var nIn sqlite3_int64
 18736  	var zOut uintptr
 18737  
 18738  	nIn = sqlite3_int64(libc.Xstrlen(tls, zIn))
 18739  	zOut = sqlite3.Xsqlite3_malloc64(tls, uint64(nIn+int64(1)))
 18740  	if zOut != 0 {
 18741  		var q int8 = *(*int8)(unsafe.Pointer(zIn))
 18742  
 18743  		if int32(q) != '[' && int32(q) != '\'' && int32(q) != '"' && int32(q) != '`' {
 18744  			libc.X__builtin___memcpy_chk(tls, zOut, zIn, size_t(nIn+int64(1)), libc.X__builtin_object_size(tls, zOut, 0))
 18745  		} else {
 18746  			var iOut int32 = 0
 18747  			var iIn int32
 18748  
 18749  			if int32(q) == '[' {
 18750  				q = int8(']')
 18751  			}
 18752  			for iIn = 1; sqlite3_int64(iIn) < nIn; iIn++ {
 18753  				if int32(*(*int8)(unsafe.Pointer(zIn + uintptr(iIn)))) == int32(q) {
 18754  					iIn++
 18755  				}
 18756  				*(*int8)(unsafe.Pointer(zOut + uintptr(libc.PostIncInt32(&iOut, 1)))) = *(*int8)(unsafe.Pointer(zIn + uintptr(iIn)))
 18757  			}
 18758  		}
 18759  
 18760  	}
 18761  	return zOut
 18762  }
 18763  
 18764  func fuzzerDisconnect(tls *libc.TLS, pVtab uintptr) int32 {
 18765  	var p uintptr = pVtab
 18766  
 18767  	for (*fuzzer_vtab)(unsafe.Pointer(p)).FpRule != 0 {
 18768  		var pRule uintptr = (*fuzzer_vtab)(unsafe.Pointer(p)).FpRule
 18769  		(*fuzzer_vtab)(unsafe.Pointer(p)).FpRule = (*fuzzer_rule)(unsafe.Pointer(pRule)).FpNext
 18770  		sqlite3.Xsqlite3_free(tls, pRule)
 18771  	}
 18772  	sqlite3.Xsqlite3_free(tls, p)
 18773  	return SQLITE_OK
 18774  }
 18775  
 18776  func fuzzerConnect(tls *libc.TLS, db uintptr, pAux uintptr, argc int32, argv uintptr, ppVtab uintptr, pzErr uintptr) int32 {
 18777  	bp := tls.Alloc(8)
 18778  	defer tls.Free(8)
 18779  
 18780  	var rc int32 = SQLITE_OK
 18781  	var pNew uintptr = uintptr(0)
 18782  	var zModule uintptr = *(*uintptr)(unsafe.Pointer(argv))
 18783  	var zDb uintptr = *(*uintptr)(unsafe.Pointer(argv + 1*8))
 18784  
 18785  	if argc != 4 {
 18786  		*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls,
 18787  			ts+5394, libc.VaList(bp, zModule))
 18788  		rc = SQLITE_ERROR
 18789  	} else {
 18790  		var nModule sqlite3_int64
 18791  
 18792  		nModule = sqlite3_int64(libc.Xstrlen(tls, zModule))
 18793  		pNew = sqlite3.Xsqlite3_malloc64(tls, uint64(unsafe.Sizeof(fuzzer_vtab{}))+uint64(nModule)+uint64(1))
 18794  		if pNew == uintptr(0) {
 18795  			rc = SQLITE_NOMEM
 18796  		} else {
 18797  			var zTab uintptr
 18798  
 18799  			libc.X__builtin___memset_chk(tls, pNew, 0, uint64(unsafe.Sizeof(fuzzer_vtab{})), libc.X__builtin_object_size(tls, pNew, 0))
 18800  			(*fuzzer_vtab)(unsafe.Pointer(pNew)).FzClassName = pNew + 1*48
 18801  			libc.X__builtin___memcpy_chk(tls, (*fuzzer_vtab)(unsafe.Pointer(pNew)).FzClassName, zModule, size_t(nModule+int64(1)), libc.X__builtin_object_size(tls, (*fuzzer_vtab)(unsafe.Pointer(pNew)).FzClassName, 0))
 18802  
 18803  			zTab = fuzzerDequote(tls, *(*uintptr)(unsafe.Pointer(argv + 3*8)))
 18804  			if zTab == uintptr(0) {
 18805  				rc = SQLITE_NOMEM
 18806  			} else {
 18807  				rc = fuzzerLoadRules(tls, db, pNew, zDb, zTab, pzErr)
 18808  				sqlite3.Xsqlite3_free(tls, zTab)
 18809  			}
 18810  
 18811  			if rc == SQLITE_OK {
 18812  				rc = sqlite3.Xsqlite3_declare_vtab(tls, db, ts+5445)
 18813  			}
 18814  			if rc != SQLITE_OK {
 18815  				fuzzerDisconnect(tls, pNew)
 18816  				pNew = uintptr(0)
 18817  			} else {
 18818  				sqlite3.Xsqlite3_vtab_config(tls, db, SQLITE_VTAB_INNOCUOUS, 0)
 18819  			}
 18820  		}
 18821  	}
 18822  
 18823  	*(*uintptr)(unsafe.Pointer(ppVtab)) = pNew
 18824  	return rc
 18825  }
 18826  
 18827  func fuzzerOpen(tls *libc.TLS, pVTab uintptr, ppCursor uintptr) int32 {
 18828  	var p uintptr = pVTab
 18829  	var pCur uintptr
 18830  	pCur = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(fuzzer_cursor{})))
 18831  	if pCur == uintptr(0) {
 18832  		return SQLITE_NOMEM
 18833  	}
 18834  	libc.X__builtin___memset_chk(tls, pCur, 0, uint64(unsafe.Sizeof(fuzzer_cursor{})), libc.X__builtin_object_size(tls, pCur, 0))
 18835  	(*fuzzer_cursor)(unsafe.Pointer(pCur)).FpVtab = p
 18836  	*(*uintptr)(unsafe.Pointer(ppCursor)) = pCur
 18837  	(*fuzzer_vtab)(unsafe.Pointer(p)).FnCursor++
 18838  	return SQLITE_OK
 18839  }
 18840  
 18841  func fuzzerClearStemList(tls *libc.TLS, pStem uintptr) {
 18842  	for pStem != 0 {
 18843  		var pNext uintptr = (*fuzzer_stem)(unsafe.Pointer(pStem)).FpNext
 18844  		sqlite3.Xsqlite3_free(tls, pStem)
 18845  		pStem = pNext
 18846  	}
 18847  }
 18848  
 18849  func fuzzerClearCursor(tls *libc.TLS, pCur uintptr, clearHash int32) {
 18850  	var i int32
 18851  	fuzzerClearStemList(tls, (*fuzzer_cursor)(unsafe.Pointer(pCur)).FpStem)
 18852  	fuzzerClearStemList(tls, (*fuzzer_cursor)(unsafe.Pointer(pCur)).FpDone)
 18853  	for i = 0; i < FUZZER_NQUEUE; i++ {
 18854  		fuzzerClearStemList(tls, *(*uintptr)(unsafe.Pointer(pCur + 48 + uintptr(i)*8)))
 18855  	}
 18856  	(*fuzzer_cursor)(unsafe.Pointer(pCur)).FrLimit = 0
 18857  	if clearHash != 0 && (*fuzzer_cursor)(unsafe.Pointer(pCur)).FnStem != 0 {
 18858  		(*fuzzer_cursor)(unsafe.Pointer(pCur)).FmxQueue = 0
 18859  		(*fuzzer_cursor)(unsafe.Pointer(pCur)).FpStem = uintptr(0)
 18860  		(*fuzzer_cursor)(unsafe.Pointer(pCur)).FpDone = uintptr(0)
 18861  		libc.X__builtin___memset_chk(tls, pCur+48, 0, uint64(unsafe.Sizeof([20]uintptr{})), libc.X__builtin_object_size(tls, pCur+48, 0))
 18862  		libc.X__builtin___memset_chk(tls, pCur+272, 0, uint64(unsafe.Sizeof([4001]uintptr{})), libc.X__builtin_object_size(tls, pCur+272, 0))
 18863  	}
 18864  	(*fuzzer_cursor)(unsafe.Pointer(pCur)).FnStem = 0
 18865  }
 18866  
 18867  func fuzzerClose(tls *libc.TLS, cur uintptr) int32 {
 18868  	var pCur uintptr = cur
 18869  	fuzzerClearCursor(tls, pCur, 0)
 18870  	sqlite3.Xsqlite3_free(tls, (*fuzzer_cursor)(unsafe.Pointer(pCur)).FzBuf)
 18871  	(*fuzzer_vtab)(unsafe.Pointer((*fuzzer_cursor)(unsafe.Pointer(pCur)).FpVtab)).FnCursor--
 18872  	sqlite3.Xsqlite3_free(tls, pCur)
 18873  	return SQLITE_OK
 18874  }
 18875  
 18876  func fuzzerRender(tls *libc.TLS, pStem uintptr, pzBuf uintptr, pnBuf uintptr) int32 {
 18877  	var pRule uintptr = (*fuzzer_stem)(unsafe.Pointer(pStem)).FpRule
 18878  	var n int32
 18879  	var z uintptr
 18880  
 18881  	n = int32((*fuzzer_stem)(unsafe.Pointer(pStem)).FnBasis) + int32((*fuzzer_rule)(unsafe.Pointer(pRule)).FnTo) - int32((*fuzzer_rule)(unsafe.Pointer(pRule)).FnFrom)
 18882  	if *(*int32)(unsafe.Pointer(pnBuf)) < n+1 {
 18883  		*(*uintptr)(unsafe.Pointer(pzBuf)) = sqlite3.Xsqlite3_realloc(tls, *(*uintptr)(unsafe.Pointer(pzBuf)), n+100)
 18884  		if *(*uintptr)(unsafe.Pointer(pzBuf)) == uintptr(0) {
 18885  			return SQLITE_NOMEM
 18886  		}
 18887  		*(*int32)(unsafe.Pointer(pnBuf)) = n + 100
 18888  	}
 18889  	n = int32((*fuzzer_stem)(unsafe.Pointer(pStem)).Fn)
 18890  	z = *(*uintptr)(unsafe.Pointer(pzBuf))
 18891  	if n < 0 {
 18892  		libc.X__builtin___memcpy_chk(tls, z, (*fuzzer_stem)(unsafe.Pointer(pStem)).FzBasis, uint64(int32((*fuzzer_stem)(unsafe.Pointer(pStem)).FnBasis)+1), libc.X__builtin_object_size(tls, z, 0))
 18893  	} else {
 18894  		libc.X__builtin___memcpy_chk(tls, z, (*fuzzer_stem)(unsafe.Pointer(pStem)).FzBasis, uint64(n), libc.X__builtin_object_size(tls, z, 0))
 18895  		libc.X__builtin___memcpy_chk(tls, z+uintptr(n), pRule+28, uint64((*fuzzer_rule)(unsafe.Pointer(pRule)).FnTo), libc.X__builtin_object_size(tls, z+uintptr(n), 0))
 18896  		libc.X__builtin___memcpy_chk(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)), uint64(int32((*fuzzer_stem)(unsafe.Pointer(pStem)).FnBasis)-n-int32((*fuzzer_rule)(unsafe.Pointer(pRule)).FnFrom)+1), libc.X__builtin_object_size(tls, z+uintptr(n+int32((*fuzzer_rule)(unsafe.Pointer(pRule)).FnTo)), 0))
 18897  	}
 18898  
 18899  	return SQLITE_OK
 18900  }
 18901  
 18902  func fuzzerHash(tls *libc.TLS, z uintptr) uint32 {
 18903  	var h uint32 = uint32(0)
 18904  	for *(*int8)(unsafe.Pointer(z)) != 0 {
 18905  		h = h<<3 ^ h>>29 ^ uint32(*(*int8)(unsafe.Pointer(libc.PostIncUintptr(&z, 1))))
 18906  	}
 18907  	return h % uint32(FUZZER_HASH)
 18908  }
 18909  
 18910  func fuzzerCost(tls *libc.TLS, pStem uintptr) fuzzer_cost {
 18911  	return libc.AssignPtrInt32(pStem+36, (*fuzzer_stem)(unsafe.Pointer(pStem)).FrBaseCost+(*fuzzer_rule)(unsafe.Pointer((*fuzzer_stem)(unsafe.Pointer(pStem)).FpRule)).FrCost)
 18912  }
 18913  
 18914  func fuzzerSeen(tls *libc.TLS, pCur uintptr, pStem uintptr) int32 {
 18915  	var h uint32
 18916  	var pLookup uintptr
 18917  
 18918  	if fuzzerRender(tls, pStem, pCur+216, pCur+224) == SQLITE_NOMEM {
 18919  		return -1
 18920  	}
 18921  	h = fuzzerHash(tls, (*fuzzer_cursor)(unsafe.Pointer(pCur)).FzBuf)
 18922  	pLookup = *(*uintptr)(unsafe.Pointer(pCur + 272 + uintptr(h)*8))
 18923  	for pLookup != 0 && libc.Xstrcmp(tls, (*fuzzer_stem)(unsafe.Pointer(pLookup)).FzBasis, (*fuzzer_cursor)(unsafe.Pointer(pCur)).FzBuf) != 0 {
 18924  		pLookup = (*fuzzer_stem)(unsafe.Pointer(pLookup)).FpHash
 18925  	}
 18926  	return libc.Bool32(pLookup != uintptr(0))
 18927  }
 18928  
 18929  func fuzzerSkipRule(tls *libc.TLS, pRule uintptr, pStem uintptr, iRuleset int32) int32 {
 18930  	return libc.Bool32(pRule != 0 && ((*fuzzer_rule)(unsafe.Pointer(pRule)).FiRuleset != iRuleset ||
 18931  		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))
 18932  }
 18933  
 18934  func fuzzerAdvance(tls *libc.TLS, pCur uintptr, pStem uintptr) int32 {
 18935  	var pRule uintptr
 18936  	for libc.AssignUintptr(&pRule, (*fuzzer_stem)(unsafe.Pointer(pStem)).FpRule) != uintptr(0) {
 18937  		for int32((*fuzzer_stem)(unsafe.Pointer(pStem)).Fn) < int32((*fuzzer_stem)(unsafe.Pointer(pStem)).FnBasis)-int32((*fuzzer_rule)(unsafe.Pointer(pRule)).FnFrom) {
 18938  			(*fuzzer_stem)(unsafe.Pointer(pStem)).Fn++
 18939  			if int32((*fuzzer_rule)(unsafe.Pointer(pRule)).FnFrom) == 0 ||
 18940  				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 {
 18941  				var rc int32 = fuzzerSeen(tls, pCur, pStem)
 18942  				if rc < 0 {
 18943  					return -1
 18944  				}
 18945  				if rc == 0 {
 18946  					fuzzerCost(tls, pStem)
 18947  					return 1
 18948  				}
 18949  			}
 18950  		}
 18951  		(*fuzzer_stem)(unsafe.Pointer(pStem)).Fn = int8(-1)
 18952  		for __ccgo := true; __ccgo; __ccgo = fuzzerSkipRule(tls, pRule, pStem, (*fuzzer_cursor)(unsafe.Pointer(pCur)).FiRuleset) != 0 {
 18953  			pRule = (*fuzzer_rule)(unsafe.Pointer(pRule)).FpNext
 18954  		}
 18955  		(*fuzzer_stem)(unsafe.Pointer(pStem)).FpRule = pRule
 18956  		if pRule != 0 && fuzzerCost(tls, pStem) > (*fuzzer_cursor)(unsafe.Pointer(pCur)).FrLimit {
 18957  			(*fuzzer_stem)(unsafe.Pointer(pStem)).FpRule = uintptr(0)
 18958  		}
 18959  	}
 18960  	return 0
 18961  }
 18962  
 18963  func fuzzerMergeStems(tls *libc.TLS, pA uintptr, pB uintptr) uintptr {
 18964  	bp := tls.Alloc(48)
 18965  	defer tls.Free(48)
 18966  
 18967  	var pTail uintptr
 18968  
 18969  	pTail = bp
 18970  	for pA != 0 && pB != 0 {
 18971  		if (*fuzzer_stem)(unsafe.Pointer(pA)).FrCostX <= (*fuzzer_stem)(unsafe.Pointer(pB)).FrCostX {
 18972  			(*fuzzer_stem)(unsafe.Pointer(pTail)).FpNext = pA
 18973  			pTail = pA
 18974  			pA = (*fuzzer_stem)(unsafe.Pointer(pA)).FpNext
 18975  		} else {
 18976  			(*fuzzer_stem)(unsafe.Pointer(pTail)).FpNext = pB
 18977  			pTail = pB
 18978  			pB = (*fuzzer_stem)(unsafe.Pointer(pB)).FpNext
 18979  		}
 18980  	}
 18981  	if pA == uintptr(0) {
 18982  		(*fuzzer_stem)(unsafe.Pointer(pTail)).FpNext = pB
 18983  	} else {
 18984  		(*fuzzer_stem)(unsafe.Pointer(pTail)).FpNext = pA
 18985  	}
 18986  	return (*fuzzer_stem)(unsafe.Pointer(bp)).FpNext
 18987  }
 18988  
 18989  func fuzzerLowestCostStem(tls *libc.TLS, pCur uintptr) uintptr {
 18990  	var pBest uintptr
 18991  	var pX uintptr
 18992  	var iBest int32
 18993  	var i int32
 18994  
 18995  	if (*fuzzer_cursor)(unsafe.Pointer(pCur)).FpStem == uintptr(0) {
 18996  		iBest = -1
 18997  		pBest = uintptr(0)
 18998  		for i = 0; i <= (*fuzzer_cursor)(unsafe.Pointer(pCur)).FmxQueue; i++ {
 18999  			pX = *(*uintptr)(unsafe.Pointer(pCur + 48 + uintptr(i)*8))
 19000  			if pX == uintptr(0) {
 19001  				continue
 19002  			}
 19003  			if pBest == uintptr(0) || (*fuzzer_stem)(unsafe.Pointer(pBest)).FrCostX > (*fuzzer_stem)(unsafe.Pointer(pX)).FrCostX {
 19004  				pBest = pX
 19005  				iBest = i
 19006  			}
 19007  		}
 19008  		if pBest != 0 {
 19009  			*(*uintptr)(unsafe.Pointer(pCur + 48 + uintptr(iBest)*8)) = (*fuzzer_stem)(unsafe.Pointer(pBest)).FpNext
 19010  			(*fuzzer_stem)(unsafe.Pointer(pBest)).FpNext = uintptr(0)
 19011  			(*fuzzer_cursor)(unsafe.Pointer(pCur)).FpStem = pBest
 19012  		}
 19013  	}
 19014  	return (*fuzzer_cursor)(unsafe.Pointer(pCur)).FpStem
 19015  }
 19016  
 19017  func fuzzerInsert(tls *libc.TLS, pCur uintptr, pNew uintptr) uintptr {
 19018  	var pX uintptr
 19019  	var i int32
 19020  
 19021  	if libc.AssignUintptr(&pX, (*fuzzer_cursor)(unsafe.Pointer(pCur)).FpStem) != uintptr(0) && (*fuzzer_stem)(unsafe.Pointer(pX)).FrCostX > (*fuzzer_stem)(unsafe.Pointer(pNew)).FrCostX {
 19022  		(*fuzzer_stem)(unsafe.Pointer(pNew)).FpNext = uintptr(0)
 19023  		(*fuzzer_cursor)(unsafe.Pointer(pCur)).FpStem = pNew
 19024  		pNew = pX
 19025  	}
 19026  
 19027  	(*fuzzer_stem)(unsafe.Pointer(pNew)).FpNext = uintptr(0)
 19028  	pX = pNew
 19029  	for i = 0; i <= (*fuzzer_cursor)(unsafe.Pointer(pCur)).FmxQueue; i++ {
 19030  		if *(*uintptr)(unsafe.Pointer(pCur + 48 + uintptr(i)*8)) != 0 {
 19031  			pX = fuzzerMergeStems(tls, pX, *(*uintptr)(unsafe.Pointer(pCur + 48 + uintptr(i)*8)))
 19032  			*(*uintptr)(unsafe.Pointer(pCur + 48 + uintptr(i)*8)) = uintptr(0)
 19033  		} else {
 19034  			*(*uintptr)(unsafe.Pointer(pCur + 48 + uintptr(i)*8)) = pX
 19035  			break
 19036  		}
 19037  	}
 19038  	if i > (*fuzzer_cursor)(unsafe.Pointer(pCur)).FmxQueue {
 19039  		if i < FUZZER_NQUEUE {
 19040  			(*fuzzer_cursor)(unsafe.Pointer(pCur)).FmxQueue = i
 19041  			*(*uintptr)(unsafe.Pointer(pCur + 48 + uintptr(i)*8)) = pX
 19042  		} else {
 19043  			pX = fuzzerMergeStems(tls, pX, *(*uintptr)(unsafe.Pointer(pCur + 48 + 19*8)))
 19044  			*(*uintptr)(unsafe.Pointer(pCur + 48 + 19*8)) = pX
 19045  		}
 19046  	}
 19047  
 19048  	return fuzzerLowestCostStem(tls, pCur)
 19049  }
 19050  
 19051  func fuzzerNewStem(tls *libc.TLS, pCur uintptr, zWord uintptr, rBaseCost fuzzer_cost) uintptr {
 19052  	var pNew uintptr
 19053  	var pRule uintptr
 19054  	var h uint32
 19055  
 19056  	pNew = sqlite3.Xsqlite3_malloc64(tls, uint64(unsafe.Sizeof(fuzzer_stem{}))+libc.Xstrlen(tls, zWord)+uint64(1))
 19057  	if pNew == uintptr(0) {
 19058  		return uintptr(0)
 19059  	}
 19060  	libc.X__builtin___memset_chk(tls, pNew, 0, uint64(unsafe.Sizeof(fuzzer_stem{})), libc.X__builtin_object_size(tls, pNew, 0))
 19061  	(*fuzzer_stem)(unsafe.Pointer(pNew)).FzBasis = pNew + 1*48
 19062  	(*fuzzer_stem)(unsafe.Pointer(pNew)).FnBasis = fuzzer_len(libc.Xstrlen(tls, zWord))
 19063  	libc.X__builtin___memcpy_chk(tls, (*fuzzer_stem)(unsafe.Pointer(pNew)).FzBasis, zWord, uint64(int32((*fuzzer_stem)(unsafe.Pointer(pNew)).FnBasis)+1), libc.X__builtin_object_size(tls, (*fuzzer_stem)(unsafe.Pointer(pNew)).FzBasis, 0))
 19064  	pRule = (*fuzzer_vtab)(unsafe.Pointer((*fuzzer_cursor)(unsafe.Pointer(pCur)).FpVtab)).FpRule
 19065  	for fuzzerSkipRule(tls, pRule, pNew, (*fuzzer_cursor)(unsafe.Pointer(pCur)).FiRuleset) != 0 {
 19066  		pRule = (*fuzzer_rule)(unsafe.Pointer(pRule)).FpNext
 19067  	}
 19068  	(*fuzzer_stem)(unsafe.Pointer(pNew)).FpRule = pRule
 19069  	(*fuzzer_stem)(unsafe.Pointer(pNew)).Fn = int8(-1)
 19070  	(*fuzzer_stem)(unsafe.Pointer(pNew)).FrBaseCost = libc.AssignPtrInt32(pNew+36, rBaseCost)
 19071  	h = fuzzerHash(tls, (*fuzzer_stem)(unsafe.Pointer(pNew)).FzBasis)
 19072  	(*fuzzer_stem)(unsafe.Pointer(pNew)).FpHash = *(*uintptr)(unsafe.Pointer(pCur + 272 + uintptr(h)*8))
 19073  	*(*uintptr)(unsafe.Pointer(pCur + 272 + uintptr(h)*8)) = pNew
 19074  	(*fuzzer_cursor)(unsafe.Pointer(pCur)).FnStem++
 19075  	return pNew
 19076  }
 19077  
 19078  func fuzzerNext(tls *libc.TLS, cur uintptr) int32 {
 19079  	var pCur uintptr = cur
 19080  	var rc int32
 19081  	var pStem uintptr
 19082  	var pNew uintptr
 19083  
 19084  	(*fuzzer_cursor)(unsafe.Pointer(pCur)).FiRowid++
 19085  
 19086  	pStem = (*fuzzer_cursor)(unsafe.Pointer(pCur)).FpStem
 19087  	if (*fuzzer_stem)(unsafe.Pointer(pStem)).FrCostX > 0 {
 19088  		rc = fuzzerRender(tls, pStem, pCur+216, pCur+224)
 19089  		if rc == SQLITE_NOMEM {
 19090  			return SQLITE_NOMEM
 19091  		}
 19092  		pNew = fuzzerNewStem(tls, pCur, (*fuzzer_cursor)(unsafe.Pointer(pCur)).FzBuf, (*fuzzer_stem)(unsafe.Pointer(pStem)).FrCostX)
 19093  		if pNew != 0 {
 19094  			if fuzzerAdvance(tls, pCur, pNew) == 0 {
 19095  				(*fuzzer_stem)(unsafe.Pointer(pNew)).FpNext = (*fuzzer_cursor)(unsafe.Pointer(pCur)).FpDone
 19096  				(*fuzzer_cursor)(unsafe.Pointer(pCur)).FpDone = pNew
 19097  			} else {
 19098  				if fuzzerInsert(tls, pCur, pNew) == pNew {
 19099  					return SQLITE_OK
 19100  				}
 19101  			}
 19102  		} else {
 19103  			return SQLITE_NOMEM
 19104  		}
 19105  	}
 19106  
 19107  	for libc.AssignUintptr(&pStem, (*fuzzer_cursor)(unsafe.Pointer(pCur)).FpStem) != uintptr(0) {
 19108  		var res int32 = fuzzerAdvance(tls, pCur, pStem)
 19109  		if res < 0 {
 19110  			return SQLITE_NOMEM
 19111  		} else if res > 0 {
 19112  			(*fuzzer_cursor)(unsafe.Pointer(pCur)).FpStem = uintptr(0)
 19113  			pStem = fuzzerInsert(tls, pCur, pStem)
 19114  			if libc.AssignInt32(&rc, fuzzerSeen(tls, pCur, pStem)) != 0 {
 19115  				if rc < 0 {
 19116  					return SQLITE_NOMEM
 19117  				}
 19118  				continue
 19119  			}
 19120  			return SQLITE_OK
 19121  		}
 19122  		(*fuzzer_cursor)(unsafe.Pointer(pCur)).FpStem = uintptr(0)
 19123  		(*fuzzer_stem)(unsafe.Pointer(pStem)).FpNext = (*fuzzer_cursor)(unsafe.Pointer(pCur)).FpDone
 19124  		(*fuzzer_cursor)(unsafe.Pointer(pCur)).FpDone = pStem
 19125  		if fuzzerLowestCostStem(tls, pCur) != 0 {
 19126  			rc = fuzzerSeen(tls, pCur, (*fuzzer_cursor)(unsafe.Pointer(pCur)).FpStem)
 19127  			if rc < 0 {
 19128  				return SQLITE_NOMEM
 19129  			}
 19130  			if rc == 0 {
 19131  				return SQLITE_OK
 19132  			}
 19133  		}
 19134  	}
 19135  
 19136  	(*fuzzer_cursor)(unsafe.Pointer(pCur)).FrLimit = 0
 19137  	return SQLITE_OK
 19138  }
 19139  
 19140  func fuzzerFilter(tls *libc.TLS, pVtabCursor uintptr, idxNum int32, idxStr uintptr, argc int32, argv uintptr) int32 {
 19141  	var pCur uintptr = pVtabCursor
 19142  	var zWord uintptr = ts + 584
 19143  	var pStem uintptr
 19144  	var idx int32
 19145  
 19146  	fuzzerClearCursor(tls, pCur, 1)
 19147  	(*fuzzer_cursor)(unsafe.Pointer(pCur)).FrLimit = 2147483647
 19148  	idx = 0
 19149  	if idxNum&1 != 0 {
 19150  		zWord = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 19151  		idx++
 19152  	}
 19153  	if idxNum&2 != 0 {
 19154  		(*fuzzer_cursor)(unsafe.Pointer(pCur)).FrLimit = sqlite3.Xsqlite3_value_int(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(idx)*8)))
 19155  		idx++
 19156  	}
 19157  	if idxNum&4 != 0 {
 19158  		(*fuzzer_cursor)(unsafe.Pointer(pCur)).FiRuleset = sqlite3.Xsqlite3_value_int(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(idx)*8)))
 19159  		idx++
 19160  	}
 19161  	(*fuzzer_cursor)(unsafe.Pointer(pCur)).FnullRule.FpNext = (*fuzzer_vtab)(unsafe.Pointer((*fuzzer_cursor)(unsafe.Pointer(pCur)).FpVtab)).FpRule
 19162  	(*fuzzer_cursor)(unsafe.Pointer(pCur)).FnullRule.FrCost = 0
 19163  	(*fuzzer_cursor)(unsafe.Pointer(pCur)).FnullRule.FnFrom = int8(0)
 19164  	(*fuzzer_cursor)(unsafe.Pointer(pCur)).FnullRule.FnTo = int8(0)
 19165  	(*fuzzer_cursor)(unsafe.Pointer(pCur)).FnullRule.FzFrom = ts + 584
 19166  	(*fuzzer_cursor)(unsafe.Pointer(pCur)).FiRowid = int64(1)
 19167  
 19168  	if int32(libc.Xstrlen(tls, zWord)) < FUZZER_MX_OUTPUT_LENGTH {
 19169  		(*fuzzer_cursor)(unsafe.Pointer(pCur)).FpStem = libc.AssignUintptr(&pStem, fuzzerNewStem(tls, pCur, zWord, 0))
 19170  		if pStem == uintptr(0) {
 19171  			return SQLITE_NOMEM
 19172  		}
 19173  		(*fuzzer_stem)(unsafe.Pointer(pStem)).FpRule = pCur + 240
 19174  		(*fuzzer_stem)(unsafe.Pointer(pStem)).Fn = (*fuzzer_stem)(unsafe.Pointer(pStem)).FnBasis
 19175  	} else {
 19176  		(*fuzzer_cursor)(unsafe.Pointer(pCur)).FrLimit = 0
 19177  	}
 19178  
 19179  	return SQLITE_OK
 19180  }
 19181  
 19182  func fuzzerColumn(tls *libc.TLS, cur uintptr, ctx uintptr, i int32) int32 {
 19183  	var pCur uintptr = cur
 19184  	if i == 0 {
 19185  		if fuzzerRender(tls, (*fuzzer_cursor)(unsafe.Pointer(pCur)).FpStem, pCur+216, pCur+224) == SQLITE_NOMEM {
 19186  			return SQLITE_NOMEM
 19187  		}
 19188  		sqlite3.Xsqlite3_result_text(tls, ctx, (*fuzzer_cursor)(unsafe.Pointer(pCur)).FzBuf, -1, libc.UintptrFromInt32(-1))
 19189  	} else if i == 1 {
 19190  		sqlite3.Xsqlite3_result_int(tls, ctx, (*fuzzer_stem)(unsafe.Pointer((*fuzzer_cursor)(unsafe.Pointer(pCur)).FpStem)).FrCostX)
 19191  	} else {
 19192  		sqlite3.Xsqlite3_result_null(tls, ctx)
 19193  	}
 19194  	return SQLITE_OK
 19195  }
 19196  
 19197  func fuzzerRowid(tls *libc.TLS, cur uintptr, pRowid uintptr) int32 {
 19198  	var pCur uintptr = cur
 19199  	*(*sqlite_int64)(unsafe.Pointer(pRowid)) = (*fuzzer_cursor)(unsafe.Pointer(pCur)).FiRowid
 19200  	return SQLITE_OK
 19201  }
 19202  
 19203  func fuzzerEof(tls *libc.TLS, cur uintptr) int32 {
 19204  	var pCur uintptr = cur
 19205  	return libc.Bool32((*fuzzer_cursor)(unsafe.Pointer(pCur)).FrLimit <= 0)
 19206  }
 19207  
 19208  func fuzzerBestIndex(tls *libc.TLS, tab uintptr, pIdxInfo uintptr) int32 {
 19209  	var iPlan int32 = 0
 19210  	var iDistTerm int32 = -1
 19211  	var iRulesetTerm int32 = -1
 19212  	var i int32
 19213  	var seenMatch int32 = 0
 19214  	var pConstraint uintptr
 19215  	var rCost float64 = 1e12
 19216  
 19217  	pConstraint = (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint
 19218  	i = 0
 19219  __1:
 19220  	if !(i < (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnConstraint) {
 19221  		goto __3
 19222  	}
 19223  	{
 19224  		if (*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).FiColumn == 0 &&
 19225  			int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_MATCH {
 19226  			seenMatch = 1
 19227  		}
 19228  		if int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fusable) == 0 {
 19229  			goto __2
 19230  		}
 19231  		if iPlan&1 == 0 &&
 19232  			(*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).FiColumn == 0 &&
 19233  			int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_MATCH {
 19234  			iPlan = iPlan | 1
 19235  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(i)*8)).FargvIndex = 1
 19236  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(i)*8)).Fomit = uint8(1)
 19237  			rCost = rCost / 1e6
 19238  		}
 19239  		if iPlan&2 == 0 &&
 19240  			(*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).FiColumn == 1 &&
 19241  			(int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_LT ||
 19242  				int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_LE) {
 19243  			iPlan = iPlan | 2
 19244  			iDistTerm = i
 19245  			rCost = rCost / 10.0
 19246  		}
 19247  		if iPlan&4 == 0 &&
 19248  			(*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).FiColumn == 2 &&
 19249  			int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_EQ {
 19250  			iPlan = iPlan | 4
 19251  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(i)*8)).Fomit = uint8(1)
 19252  			iRulesetTerm = i
 19253  			rCost = rCost / 10.0
 19254  		}
 19255  
 19256  	}
 19257  	goto __2
 19258  __2:
 19259  	i++
 19260  	pConstraint += 12
 19261  	goto __1
 19262  	goto __3
 19263  __3:
 19264  	;
 19265  	if iPlan&2 != 0 {
 19266  		(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(iDistTerm)*8)).FargvIndex = 1 + libc.Bool32(iPlan&1 != 0)
 19267  	}
 19268  	if iPlan&4 != 0 {
 19269  		var idx int32 = 1
 19270  		if iPlan&1 != 0 {
 19271  			idx++
 19272  		}
 19273  		if iPlan&2 != 0 {
 19274  			idx++
 19275  		}
 19276  		(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(iRulesetTerm)*8)).FargvIndex = idx
 19277  	}
 19278  	(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxNum = iPlan
 19279  	if (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnOrderBy == 1 &&
 19280  		(*sqlite3_index_orderby)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaOrderBy)).FiColumn == 1 &&
 19281  		int32((*sqlite3_index_orderby)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaOrderBy)).Fdesc) == 0 {
 19282  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).ForderByConsumed = 1
 19283  	}
 19284  	if seenMatch != 0 && iPlan&1 == 0 {
 19285  		rCost = 1e99
 19286  	}
 19287  	(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = rCost
 19288  
 19289  	return SQLITE_OK
 19290  }
 19291  
 19292  var fuzzerModule = sqlite3_module{
 19293  	FxCreate:     0,
 19294  	FxConnect:    0,
 19295  	FxBestIndex:  0,
 19296  	FxDisconnect: 0,
 19297  	FxDestroy:    0,
 19298  	FxOpen:       0,
 19299  	FxClose:      0,
 19300  	FxFilter:     0,
 19301  	FxNext:       0,
 19302  	FxEof:        0,
 19303  	FxColumn:     0,
 19304  	FxRowid:      0,
 19305  }
 19306  
 19307  func sqlite3_fuzzer_init(tls *libc.TLS, db uintptr, pzErrMsg uintptr, pApi uintptr) int32 {
 19308  	var rc int32 = SQLITE_OK
 19309  	_ = pApi
 19310  
 19311  	rc = sqlite3.Xsqlite3_create_module(tls, db, ts+5483, uintptr(unsafe.Pointer(&fuzzerModule)), uintptr(0))
 19312  	return rc
 19313  }
 19314  
 19315  func ieee754func(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 19316  	bp := tls.Alloc(160)
 19317  	defer tls.Free(160)
 19318  
 19319  	if argc == 1 {
 19320  		var m sqlite3_int64
 19321  
 19322  		var e int32
 19323  		var isNeg int32
 19324  
 19325  		if sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(argv))) == SQLITE_BLOB &&
 19326  			uint64(sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(argv)))) == uint64(unsafe.Sizeof(float64(0))) {
 19327  			var x uintptr = sqlite3.Xsqlite3_value_blob(tls, *(*uintptr)(unsafe.Pointer(argv)))
 19328  			var i uint32
 19329  			*(*sqlite3_uint64)(unsafe.Pointer(bp + 24)) = uint64(0)
 19330  			for i = uint32(0); uint64(i) < uint64(unsafe.Sizeof(float64(0))); i++ {
 19331  				*(*sqlite3_uint64)(unsafe.Pointer(bp + 24)) = *(*sqlite3_uint64)(unsafe.Pointer(bp + 24))<<8 | sqlite3_uint64(*(*uint8)(unsafe.Pointer(x + uintptr(i))))
 19332  			}
 19333  			libc.X__builtin___memcpy_chk(tls, bp+16, bp+24, uint64(unsafe.Sizeof(float64(0))), libc.X__builtin_object_size(tls, bp+16, 0))
 19334  		} else {
 19335  			*(*float64)(unsafe.Pointer(bp + 16)) = sqlite3.Xsqlite3_value_double(tls, *(*uintptr)(unsafe.Pointer(argv)))
 19336  		}
 19337  		if *(*float64)(unsafe.Pointer(bp + 16)) < 0.0 {
 19338  			isNeg = 1
 19339  			*(*float64)(unsafe.Pointer(bp + 16)) = -*(*float64)(unsafe.Pointer(bp + 16))
 19340  		} else {
 19341  			isNeg = 0
 19342  		}
 19343  		libc.X__builtin___memcpy_chk(tls, bp+32, bp+16, uint64(unsafe.Sizeof(sqlite3_int64(0))), libc.X__builtin_object_size(tls, bp+32, 0))
 19344  		if *(*sqlite3_int64)(unsafe.Pointer(bp + 32)) == int64(0) {
 19345  			e = 0
 19346  			m = int64(0)
 19347  		} else {
 19348  			e = int32(*(*sqlite3_int64)(unsafe.Pointer(bp + 32)) >> 52)
 19349  			m = *(*sqlite3_int64)(unsafe.Pointer(bp + 32)) & (int64(1)<<52 - int64(1))
 19350  			if e == 0 {
 19351  				m <<= 1
 19352  			} else {
 19353  				m = m | int64(1)<<52
 19354  			}
 19355  			for e < 1075 && m > int64(0) && m&int64(1) == int64(0) {
 19356  				m >>= 1
 19357  				e++
 19358  			}
 19359  			if isNeg != 0 {
 19360  				m = -m
 19361  			}
 19362  		}
 19363  		switch *(*int32)(unsafe.Pointer(sqlite3.Xsqlite3_user_data(tls, context))) {
 19364  		case 0:
 19365  			sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([100]int8{})), bp+40, ts+5490,
 19366  				libc.VaList(bp, m, e-1075))
 19367  			sqlite3.Xsqlite3_result_text(tls, context, bp+40, -1, libc.UintptrFromInt32(-1))
 19368  			break
 19369  			fallthrough
 19370  		case 1:
 19371  			sqlite3.Xsqlite3_result_int64(tls, context, m)
 19372  			break
 19373  			fallthrough
 19374  		case 2:
 19375  			sqlite3.Xsqlite3_result_int(tls, context, e-1075)
 19376  			break
 19377  		}
 19378  	} else {
 19379  		var m sqlite3_int64
 19380  		var e sqlite3_int64
 19381  
 19382  		var isNeg int32 = 0
 19383  		m = sqlite3.Xsqlite3_value_int64(tls, *(*uintptr)(unsafe.Pointer(argv)))
 19384  		e = sqlite3.Xsqlite3_value_int64(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 19385  
 19386  		if e > int64(10000) {
 19387  			e = int64(10000)
 19388  		} else if e < int64(-10000) {
 19389  			e = int64(-10000)
 19390  		}
 19391  
 19392  		if m < int64(0) {
 19393  			isNeg = 1
 19394  			m = -m
 19395  			if m < int64(0) {
 19396  				return
 19397  			}
 19398  		} else if m == int64(0) && e > int64(-1000) && e < int64(1000) {
 19399  			sqlite3.Xsqlite3_result_double(tls, context, 0.0)
 19400  			return
 19401  		}
 19402  		for m>>32&int64(0xffe00000) != 0 {
 19403  			m >>= 1
 19404  			e++
 19405  		}
 19406  		for m != int64(0) && m>>32&int64(0xfff00000) == int64(0) {
 19407  			m <<= 1
 19408  			e--
 19409  		}
 19410  		e = e + int64(1075)
 19411  		if e <= int64(0) {
 19412  			if int64(1)-e >= int64(64) {
 19413  				m = int64(0)
 19414  			} else {
 19415  				m >>= int64(1) - e
 19416  			}
 19417  			e = int64(0)
 19418  		} else if e > int64(0x7ff) {
 19419  			e = int64(0x7ff)
 19420  		}
 19421  		*(*sqlite3_int64)(unsafe.Pointer(bp + 152)) = m & (int64(1)<<52 - int64(1))
 19422  		*(*sqlite3_int64)(unsafe.Pointer(bp + 152)) |= e << 52
 19423  		if isNeg != 0 {
 19424  			*(*sqlite3_int64)(unsafe.Pointer(bp + 152)) |= libc.Int64FromUint64(uint64(1) << 63)
 19425  		}
 19426  		libc.X__builtin___memcpy_chk(tls, bp+144, bp+152, uint64(unsafe.Sizeof(float64(0))), libc.X__builtin_object_size(tls, bp+144, 0))
 19427  		sqlite3.Xsqlite3_result_double(tls, context, *(*float64)(unsafe.Pointer(bp + 144)))
 19428  	}
 19429  }
 19430  
 19431  func ieee754func_from_blob(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 19432  	bp := tls.Alloc(16)
 19433  	defer tls.Free(16)
 19434  
 19435  	_ = argc
 19436  	if sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(argv))) == SQLITE_BLOB &&
 19437  		uint64(sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(argv)))) == uint64(unsafe.Sizeof(float64(0))) {
 19438  		var x uintptr = sqlite3.Xsqlite3_value_blob(tls, *(*uintptr)(unsafe.Pointer(argv)))
 19439  		var i uint32
 19440  		*(*sqlite3_uint64)(unsafe.Pointer(bp + 8)) = uint64(0)
 19441  		for i = uint32(0); uint64(i) < uint64(unsafe.Sizeof(float64(0))); i++ {
 19442  			*(*sqlite3_uint64)(unsafe.Pointer(bp + 8)) = *(*sqlite3_uint64)(unsafe.Pointer(bp + 8))<<8 | sqlite3_uint64(*(*uint8)(unsafe.Pointer(x + uintptr(i))))
 19443  		}
 19444  		libc.X__builtin___memcpy_chk(tls, bp, bp+8, uint64(unsafe.Sizeof(float64(0))), libc.X__builtin_object_size(tls, bp, 0))
 19445  		sqlite3.Xsqlite3_result_double(tls, context, *(*float64)(unsafe.Pointer(bp)))
 19446  	}
 19447  }
 19448  
 19449  func ieee754func_to_blob(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 19450  	bp := tls.Alloc(24)
 19451  	defer tls.Free(24)
 19452  
 19453  	_ = argc
 19454  	if sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(argv))) == SQLITE_FLOAT ||
 19455  		sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(argv))) == SQLITE_INTEGER {
 19456  		*(*float64)(unsafe.Pointer(bp + 8)) = sqlite3.Xsqlite3_value_double(tls, *(*uintptr)(unsafe.Pointer(argv)))
 19457  
 19458  		var i uint32
 19459  		libc.X__builtin___memcpy_chk(tls, bp, bp+8, uint64(unsafe.Sizeof(float64(0))), libc.X__builtin_object_size(tls, bp, 0))
 19460  		for i = uint32(1); uint64(i) <= uint64(unsafe.Sizeof(float64(0))); i++ {
 19461  			*(*uint8)(unsafe.Pointer(bp + 16 + uintptr(uint64(unsafe.Sizeof(float64(0)))-uint64(i)))) = uint8(*(*sqlite3_uint64)(unsafe.Pointer(bp)) & uint64(0xff))
 19462  			*(*sqlite3_uint64)(unsafe.Pointer(bp)) >>= 8
 19463  		}
 19464  		sqlite3.Xsqlite3_result_blob(tls, context, bp+16, int32(unsafe.Sizeof(float64(0))), libc.UintptrFromInt32(-1))
 19465  	}
 19466  }
 19467  
 19468  func sqlite3_ieee_init(tls *libc.TLS, db uintptr, pzErrMsg uintptr, pApi uintptr) int32 {
 19469  	var i uint32
 19470  	var rc int32 = SQLITE_OK
 19471  	_ = pApi
 19472  
 19473  	_ = pzErrMsg
 19474  	for i = uint32(0); uint64(i) < uint64(unsafe.Sizeof(aFunc1))/uint64(unsafe.Sizeof(struct {
 19475  		FzFName uintptr
 19476  		FnArg   int32
 19477  		FiAux   int32
 19478  		FxFunc  uintptr
 19479  	}{})) && rc == SQLITE_OK; i++ {
 19480  		rc = sqlite3.Xsqlite3_create_function(tls, db, aFunc1[i].FzFName, aFunc1[i].FnArg,
 19481  			SQLITE_UTF8|SQLITE_INNOCUOUS,
 19482  			uintptr(unsafe.Pointer(&aFunc1))+uintptr(i)*24+12,
 19483  			aFunc1[i].FxFunc, uintptr(0), uintptr(0))
 19484  	}
 19485  	return rc
 19486  }
 19487  
 19488  var aFunc1 = [6]struct {
 19489  	FzFName uintptr
 19490  	FnArg   int32
 19491  	FiAux   int32
 19492  	FxFunc  uintptr
 19493  }{
 19494  	{FzFName: ts + 5507, FnArg: 1, FxFunc: 0},
 19495  	{FzFName: ts + 5507, FnArg: 2, FxFunc: 0},
 19496  	{FzFName: ts + 5515, FnArg: 1, FiAux: 1, FxFunc: 0},
 19497  	{FzFName: ts + 5532, FnArg: 1, FiAux: 2, FxFunc: 0},
 19498  	{FzFName: ts + 5549, FnArg: 1, FxFunc: 0},
 19499  	{FzFName: ts + 5565, FnArg: 1, FxFunc: 0},
 19500  }
 19501  
 19502  func sqlite3_mmap_warm(tls *libc.TLS, db uintptr, zDb uintptr) int32 {
 19503  	bp := tls.Alloc(88)
 19504  	defer tls.Free(88)
 19505  
 19506  	var rc int32 = SQLITE_OK
 19507  	var zSql uintptr = uintptr(0)
 19508  	var pgsz int32 = 0
 19509  	var nTotal int32 = 0
 19510  
 19511  	if 0 == sqlite3.Xsqlite3_get_autocommit(tls, db) {
 19512  		return SQLITE_MISUSE
 19513  	}
 19514  
 19515  	zSql = sqlite3.Xsqlite3_mprintf(tls, ts+5583,
 19516  		libc.VaList(bp, func() uintptr {
 19517  			if zDb != 0 {
 19518  				return ts + 5624
 19519  			}
 19520  			return ts + 584
 19521  		}(), func() uintptr {
 19522  			if zDb != 0 {
 19523  				return zDb
 19524  			}
 19525  			return ts + 584
 19526  		}(), func() uintptr {
 19527  			if zDb != 0 {
 19528  				return ts + 5626
 19529  			}
 19530  			return ts + 584
 19531  		}()))
 19532  	if zSql == uintptr(0) {
 19533  		return SQLITE_NOMEM
 19534  	}
 19535  	rc = sqlite3.Xsqlite3_exec(tls, db, zSql, uintptr(0), uintptr(0), uintptr(0))
 19536  	sqlite3.Xsqlite3_free(tls, zSql)
 19537  
 19538  	if rc == SQLITE_OK {
 19539  		zSql = sqlite3.Xsqlite3_mprintf(tls, ts+5629,
 19540  			libc.VaList(bp+24, func() uintptr {
 19541  				if zDb != 0 {
 19542  					return ts + 5624
 19543  				}
 19544  				return ts + 584
 19545  			}(), func() uintptr {
 19546  				if zDb != 0 {
 19547  					return zDb
 19548  				}
 19549  				return ts + 584
 19550  			}(), func() uintptr {
 19551  				if zDb != 0 {
 19552  					return ts + 5626
 19553  				}
 19554  				return ts + 584
 19555  			}()))
 19556  		if zSql == uintptr(0) {
 19557  			rc = SQLITE_NOMEM
 19558  		} else {
 19559  			*(*uintptr)(unsafe.Pointer(bp + 64)) = uintptr(0)
 19560  			rc = sqlite3.Xsqlite3_prepare_v2(tls, db, zSql, -1, bp+64, uintptr(0))
 19561  			sqlite3.Xsqlite3_free(tls, zSql)
 19562  			if rc == SQLITE_OK {
 19563  				if sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp + 64))) == SQLITE_ROW {
 19564  					pgsz = sqlite3.Xsqlite3_column_int(tls, *(*uintptr)(unsafe.Pointer(bp + 64)), 0)
 19565  				}
 19566  				rc = sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 64)))
 19567  			}
 19568  			if rc == SQLITE_OK && pgsz == 0 {
 19569  				rc = SQLITE_ERROR
 19570  			}
 19571  		}
 19572  	}
 19573  
 19574  	if rc == SQLITE_OK {
 19575  		var rc2 int32
 19576  		*(*uintptr)(unsafe.Pointer(bp + 72)) = uintptr(0)
 19577  		rc = sqlite3.Xsqlite3_file_control(tls, db, zDb, SQLITE_FCNTL_FILE_POINTER, bp+72)
 19578  		if rc == SQLITE_OK && (*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 72)))).FpMethods)).FiVersion >= 3 {
 19579  			var iPg sqlite3_int64 = int64(1)
 19580  			var p uintptr = (*sqlite3_file)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 72)))).FpMethods
 19581  			for 1 != 0 {
 19582  				rc = (*struct {
 19583  					f func(*libc.TLS, uintptr, sqlite3_int64, int32, uintptr) int32
 19584  				})(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)
 19585  				if rc != SQLITE_OK || *(*uintptr)(unsafe.Pointer(bp + 80)) == uintptr(0) {
 19586  					break
 19587  				}
 19588  
 19589  				nTotal = nTotal + int32(*(*uint8)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 80)))))
 19590  				nTotal = nTotal + int32(*(*uint8)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 80)) + uintptr(pgsz-1))))
 19591  
 19592  				rc = (*struct {
 19593  					f func(*libc.TLS, uintptr, sqlite3_int64, uintptr) int32
 19594  				})(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)))
 19595  				if rc != SQLITE_OK {
 19596  					break
 19597  				}
 19598  				iPg++
 19599  			}
 19600  			sqlite3.Xsqlite3_log(tls, SQLITE_OK,
 19601  				ts+5652, libc.VaList(bp+48, func() int64 {
 19602  					if iPg == int64(1) {
 19603  						return int64(0)
 19604  					}
 19605  					return iPg
 19606  				}(),
 19607  					sqlite3.Xsqlite3_db_filename(tls, db, zDb)))
 19608  		}
 19609  
 19610  		rc2 = sqlite3.Xsqlite3_exec(tls, db, ts+5702, uintptr(0), uintptr(0), uintptr(0))
 19611  		if rc == SQLITE_OK {
 19612  			rc = rc2
 19613  		}
 19614  	}
 19615  
 19616  	return rc
 19617  }
 19618  
 19619  type nextCharContext1 = struct {
 19620  	Fdb           uintptr
 19621  	FpStmt        uintptr
 19622  	FzPrefix      uintptr
 19623  	FnPrefix      int32
 19624  	FnAlloc       int32
 19625  	FnUsed        int32
 19626  	F__ccgo_pad1  [4]byte
 19627  	FaResult      uintptr
 19628  	FmallocFailed int32
 19629  	FotherError   int32
 19630  }
 19631  
 19632  type nextCharContext = nextCharContext1
 19633  
 19634  func nextCharAppend(tls *libc.TLS, p uintptr, c uint32) {
 19635  	var i int32
 19636  	for i = 0; i < (*nextCharContext)(unsafe.Pointer(p)).FnUsed; i++ {
 19637  		if *(*uint32)(unsafe.Pointer((*nextCharContext)(unsafe.Pointer(p)).FaResult + uintptr(i)*4)) == c {
 19638  			return
 19639  		}
 19640  	}
 19641  	if (*nextCharContext)(unsafe.Pointer(p)).FnUsed+1 > (*nextCharContext)(unsafe.Pointer(p)).FnAlloc {
 19642  		var aNew uintptr
 19643  		var n int32 = (*nextCharContext)(unsafe.Pointer(p)).FnAlloc*2 + 30
 19644  		aNew = sqlite3.Xsqlite3_realloc64(tls, (*nextCharContext)(unsafe.Pointer(p)).FaResult, uint64(n)*uint64(unsafe.Sizeof(uint32(0))))
 19645  		if aNew == uintptr(0) {
 19646  			(*nextCharContext)(unsafe.Pointer(p)).FmallocFailed = 1
 19647  			return
 19648  		} else {
 19649  			(*nextCharContext)(unsafe.Pointer(p)).FaResult = aNew
 19650  			(*nextCharContext)(unsafe.Pointer(p)).FnAlloc = n
 19651  		}
 19652  	}
 19653  	*(*uint32)(unsafe.Pointer((*nextCharContext)(unsafe.Pointer(p)).FaResult + uintptr(libc.PostIncInt32(&(*nextCharContext)(unsafe.Pointer(p)).FnUsed, 1))*4)) = c
 19654  }
 19655  
 19656  func writeUtf8(tls *libc.TLS, z uintptr, c uint32) int32 {
 19657  	if c < uint32(0x00080) {
 19658  		*(*uint8)(unsafe.Pointer(z)) = uint8(c & uint32(0xff))
 19659  		return 1
 19660  	}
 19661  	if c < uint32(0x00800) {
 19662  		*(*uint8)(unsafe.Pointer(z)) = uint8(0xC0 + int32(uint8(c>>6&uint32(0x1F))))
 19663  		*(*uint8)(unsafe.Pointer(z + 1)) = uint8(0x80 + int32(uint8(c&uint32(0x3F))))
 19664  		return 2
 19665  	}
 19666  	if c < uint32(0x10000) {
 19667  		*(*uint8)(unsafe.Pointer(z)) = uint8(0xE0 + int32(uint8(c>>12&uint32(0x0F))))
 19668  		*(*uint8)(unsafe.Pointer(z + 1)) = uint8(0x80 + int32(uint8(c>>6&uint32(0x3F))))
 19669  		*(*uint8)(unsafe.Pointer(z + 2)) = uint8(0x80 + int32(uint8(c&uint32(0x3F))))
 19670  		return 3
 19671  	}
 19672  	*(*uint8)(unsafe.Pointer(z)) = uint8(0xF0 + int32(uint8(c>>18&uint32(0x07))))
 19673  	*(*uint8)(unsafe.Pointer(z + 1)) = uint8(0x80 + int32(uint8(c>>12&uint32(0x3F))))
 19674  	*(*uint8)(unsafe.Pointer(z + 2)) = uint8(0x80 + int32(uint8(c>>6&uint32(0x3F))))
 19675  	*(*uint8)(unsafe.Pointer(z + 3)) = uint8(0x80 + int32(uint8(c&uint32(0x3F))))
 19676  	return 4
 19677  }
 19678  
 19679  func readUtf8(tls *libc.TLS, z uintptr, pOut uintptr) int32 {
 19680  	var c uint32 = uint32(*(*uint8)(unsafe.Pointer(z)))
 19681  	if c < uint32(0xc0) {
 19682  		*(*uint32)(unsafe.Pointer(pOut)) = c
 19683  		return 1
 19684  	} else {
 19685  		var n int32 = 1
 19686  		c = uint32(validBits[c-uint32(0xc0)])
 19687  		for int32(*(*uint8)(unsafe.Pointer(z + uintptr(n))))&0xc0 == 0x80 {
 19688  			c = c<<6 + uint32(0x3f&int32(*(*uint8)(unsafe.Pointer(z + uintptr(libc.PostIncInt32(&n, 1))))))
 19689  		}
 19690  		if c < uint32(0x80) || c&0xFFFFF800 == uint32(0xD800) || c&0xFFFFFFFE == uint32(0xFFFE) {
 19691  			c = uint32(0xFFFD)
 19692  		}
 19693  		*(*uint32)(unsafe.Pointer(pOut)) = c
 19694  		return n
 19695  	}
 19696  	return int32(0)
 19697  }
 19698  
 19699  var validBits = [64]uint8{
 19700  	uint8(0x00), uint8(0x01), uint8(0x02), uint8(0x03), uint8(0x04), uint8(0x05), uint8(0x06), uint8(0x07),
 19701  	uint8(0x08), uint8(0x09), uint8(0x0a), uint8(0x0b), uint8(0x0c), uint8(0x0d), uint8(0x0e), uint8(0x0f),
 19702  	uint8(0x10), uint8(0x11), uint8(0x12), uint8(0x13), uint8(0x14), uint8(0x15), uint8(0x16), uint8(0x17),
 19703  	uint8(0x18), uint8(0x19), uint8(0x1a), uint8(0x1b), uint8(0x1c), uint8(0x1d), uint8(0x1e), uint8(0x1f),
 19704  	uint8(0x00), uint8(0x01), uint8(0x02), uint8(0x03), uint8(0x04), uint8(0x05), uint8(0x06), uint8(0x07),
 19705  	uint8(0x08), uint8(0x09), uint8(0x0a), uint8(0x0b), uint8(0x0c), uint8(0x0d), uint8(0x0e), uint8(0x0f),
 19706  	uint8(0x00), uint8(0x01), uint8(0x02), uint8(0x03), uint8(0x04), uint8(0x05), uint8(0x06), uint8(0x07),
 19707  	uint8(0x00), uint8(0x01), uint8(0x02), uint8(0x03), uint8(0x00), uint8(0x01), uint8(0x00), uint8(0x00),
 19708  }
 19709  
 19710  func findNextChars(tls *libc.TLS, p uintptr) {
 19711  	bp := tls.Alloc(12)
 19712  	defer tls.Free(12)
 19713  
 19714  	var cPrev uint32 = uint32(0)
 19715  
 19716  	var n int32
 19717  	var rc int32
 19718  
 19719  	for {
 19720  		sqlite3.Xsqlite3_bind_text(tls, (*nextCharContext)(unsafe.Pointer(p)).FpStmt, 1, (*nextCharContext)(unsafe.Pointer(p)).FzPrefix, (*nextCharContext)(unsafe.Pointer(p)).FnPrefix,
 19721  			uintptr(0))
 19722  		n = writeUtf8(tls, bp, cPrev+uint32(1))
 19723  		sqlite3.Xsqlite3_bind_text(tls, (*nextCharContext)(unsafe.Pointer(p)).FpStmt, 2, bp, n, uintptr(0))
 19724  		rc = sqlite3.Xsqlite3_step(tls, (*nextCharContext)(unsafe.Pointer(p)).FpStmt)
 19725  		if rc == SQLITE_DONE {
 19726  			sqlite3.Xsqlite3_reset(tls, (*nextCharContext)(unsafe.Pointer(p)).FpStmt)
 19727  			return
 19728  		} else if rc != SQLITE_ROW {
 19729  			(*nextCharContext)(unsafe.Pointer(p)).FotherError = rc
 19730  			return
 19731  		} else {
 19732  			var zOut uintptr = sqlite3.Xsqlite3_column_text(tls, (*nextCharContext)(unsafe.Pointer(p)).FpStmt, 0)
 19733  
 19734  			n = readUtf8(tls, zOut+uintptr((*nextCharContext)(unsafe.Pointer(p)).FnPrefix), bp+8)
 19735  			sqlite3.Xsqlite3_reset(tls, (*nextCharContext)(unsafe.Pointer(p)).FpStmt)
 19736  			nextCharAppend(tls, p, *(*uint32)(unsafe.Pointer(bp + 8)))
 19737  			cPrev = *(*uint32)(unsafe.Pointer(bp + 8))
 19738  			if (*nextCharContext)(unsafe.Pointer(p)).FmallocFailed != 0 {
 19739  				return
 19740  			}
 19741  		}
 19742  	}
 19743  }
 19744  
 19745  func nextCharFunc(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 19746  	bp := tls.Alloc(136)
 19747  	defer tls.Free(136)
 19748  
 19749  	var zTable uintptr = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 19750  	var zField uintptr = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + 2*8)))
 19751  	var zWhere uintptr
 19752  	var zCollName uintptr
 19753  	var zWhereClause uintptr = uintptr(0)
 19754  	var zColl uintptr = uintptr(0)
 19755  	var zSql uintptr
 19756  	var rc int32
 19757  
 19758  	libc.X__builtin___memset_chk(tls, bp+80, 0, uint64(unsafe.Sizeof(nextCharContext{})), libc.X__builtin_object_size(tls, bp+80, 0))
 19759  	(*nextCharContext)(unsafe.Pointer(bp + 80)).Fdb = sqlite3.Xsqlite3_context_db_handle(tls, context)
 19760  	(*nextCharContext)(unsafe.Pointer(bp + 80)).FzPrefix = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 19761  	(*nextCharContext)(unsafe.Pointer(bp + 80)).FnPrefix = sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(argv)))
 19762  	if zTable == uintptr(0) || zField == uintptr(0) || (*nextCharContext)(unsafe.Pointer(bp+80)).FzPrefix == uintptr(0) {
 19763  		return
 19764  	}
 19765  	if argc >= 4 &&
 19766  		libc.AssignUintptr(&zWhere, sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + 3*8)))) != uintptr(0) &&
 19767  		int32(*(*uint8)(unsafe.Pointer(zWhere))) != 0 {
 19768  		zWhereClause = sqlite3.Xsqlite3_mprintf(tls, ts+5706, libc.VaList(bp, zWhere))
 19769  		if zWhereClause == uintptr(0) {
 19770  			sqlite3.Xsqlite3_result_error_nomem(tls, context)
 19771  			return
 19772  		}
 19773  	} else {
 19774  		zWhereClause = ts + 584
 19775  	}
 19776  	if argc >= 5 &&
 19777  		libc.AssignUintptr(&zCollName, sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + 4*8)))) != uintptr(0) &&
 19778  		int32(*(*uint8)(unsafe.Pointer(zCollName))) != 0 {
 19779  		zColl = sqlite3.Xsqlite3_mprintf(tls, ts+5715, libc.VaList(bp+8, zCollName))
 19780  		if zColl == uintptr(0) {
 19781  			sqlite3.Xsqlite3_result_error_nomem(tls, context)
 19782  			if *(*int8)(unsafe.Pointer(zWhereClause)) != 0 {
 19783  				sqlite3.Xsqlite3_free(tls, zWhereClause)
 19784  			}
 19785  			return
 19786  		}
 19787  	} else {
 19788  		zColl = ts + 584
 19789  	}
 19790  	zSql = sqlite3.Xsqlite3_mprintf(tls,
 19791  		ts+5728,
 19792  		libc.VaList(bp+16, zField, zTable, zField, zColl, zField, zColl, zWhereClause, zColl))
 19793  	if *(*int8)(unsafe.Pointer(zWhereClause)) != 0 {
 19794  		sqlite3.Xsqlite3_free(tls, zWhereClause)
 19795  	}
 19796  	if *(*int8)(unsafe.Pointer(zColl)) != 0 {
 19797  		sqlite3.Xsqlite3_free(tls, zColl)
 19798  	}
 19799  	if zSql == uintptr(0) {
 19800  		sqlite3.Xsqlite3_result_error_nomem(tls, context)
 19801  		return
 19802  	}
 19803  
 19804  	rc = sqlite3.Xsqlite3_prepare_v2(tls, (*nextCharContext)(unsafe.Pointer(bp+80)).Fdb, zSql, -1, bp+80+8, uintptr(0))
 19805  	sqlite3.Xsqlite3_free(tls, zSql)
 19806  	if rc != 0 {
 19807  		sqlite3.Xsqlite3_result_error(tls, context, sqlite3.Xsqlite3_errmsg(tls, (*nextCharContext)(unsafe.Pointer(bp+80)).Fdb), -1)
 19808  		return
 19809  	}
 19810  	findNextChars(tls, bp+80)
 19811  	if (*nextCharContext)(unsafe.Pointer(bp+80)).FmallocFailed != 0 {
 19812  		sqlite3.Xsqlite3_result_error_nomem(tls, context)
 19813  	} else {
 19814  		var pRes uintptr
 19815  		pRes = sqlite3.Xsqlite3_malloc64(tls, uint64((*nextCharContext)(unsafe.Pointer(bp+80)).FnUsed*4+1))
 19816  		if pRes == uintptr(0) {
 19817  			sqlite3.Xsqlite3_result_error_nomem(tls, context)
 19818  		} else {
 19819  			var i int32
 19820  			var n int32 = 0
 19821  			for i = 0; i < (*nextCharContext)(unsafe.Pointer(bp+80)).FnUsed; i++ {
 19822  				n = n + writeUtf8(tls, pRes+uintptr(n), *(*uint32)(unsafe.Pointer((*nextCharContext)(unsafe.Pointer(bp+80)).FaResult + uintptr(i)*4)))
 19823  			}
 19824  			*(*uint8)(unsafe.Pointer(pRes + uintptr(n))) = uint8(0)
 19825  			sqlite3.Xsqlite3_result_text(tls, context, pRes, n, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{sqlite3.Xsqlite3_free})))
 19826  		}
 19827  	}
 19828  	sqlite3.Xsqlite3_finalize(tls, (*nextCharContext)(unsafe.Pointer(bp+80)).FpStmt)
 19829  	sqlite3.Xsqlite3_free(tls, (*nextCharContext)(unsafe.Pointer(bp+80)).FaResult)
 19830  }
 19831  
 19832  func sqlite3_nextchar_init(tls *libc.TLS, db uintptr, pzErrMsg uintptr, pApi uintptr) int32 {
 19833  	var rc int32 = SQLITE_OK
 19834  	_ = pApi
 19835  
 19836  	_ = pzErrMsg
 19837  	rc = sqlite3.Xsqlite3_create_function(tls, db, ts+5836, 3,
 19838  		SQLITE_UTF8|SQLITE_INNOCUOUS, uintptr(0),
 19839  		*(*uintptr)(unsafe.Pointer(&struct {
 19840  			f func(*libc.TLS, uintptr, int32, uintptr)
 19841  		}{nextCharFunc})), uintptr(0), uintptr(0))
 19842  	if rc == SQLITE_OK {
 19843  		rc = sqlite3.Xsqlite3_create_function(tls, db, ts+5836, 4,
 19844  			SQLITE_UTF8|SQLITE_INNOCUOUS, uintptr(0),
 19845  			*(*uintptr)(unsafe.Pointer(&struct {
 19846  				f func(*libc.TLS, uintptr, int32, uintptr)
 19847  			}{nextCharFunc})), uintptr(0), uintptr(0))
 19848  	}
 19849  	if rc == SQLITE_OK {
 19850  		rc = sqlite3.Xsqlite3_create_function(tls, db, ts+5836, 5,
 19851  			SQLITE_UTF8|SQLITE_INNOCUOUS, uintptr(0),
 19852  			*(*uintptr)(unsafe.Pointer(&struct {
 19853  				f func(*libc.TLS, uintptr, int32, uintptr)
 19854  			}{nextCharFunc})), uintptr(0), uintptr(0))
 19855  	}
 19856  	return rc
 19857  }
 19858  
 19859  var aiClass = [256]uint8{
 19860  	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),
 19861  	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),
 19862  	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),
 19863  	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),
 19864  	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),
 19865  	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),
 19866  	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),
 19867  	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),
 19868  	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),
 19869  	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),
 19870  	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),
 19871  	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),
 19872  	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),
 19873  	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),
 19874  	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),
 19875  	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),
 19876  }
 19877  
 19878  var sqlite3UpperToLower = [256]uint8{
 19879  	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),
 19880  	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),
 19881  	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),
 19882  	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),
 19883  	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),
 19884  	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),
 19885  	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),
 19886  	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),
 19887  	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),
 19888  	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),
 19889  	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),
 19890  	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),
 19891  	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),
 19892  	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),
 19893  	uint8(252), uint8(253), uint8(254), uint8(255),
 19894  }
 19895  
 19896  var sqlite3CtypeMap = [256]uint8{
 19897  	uint8(0x00), uint8(0x00), uint8(0x00), uint8(0x00), uint8(0x00), uint8(0x00), uint8(0x00), uint8(0x00),
 19898  	uint8(0x00), uint8(0x01), uint8(0x01), uint8(0x01), uint8(0x01), uint8(0x01), uint8(0x00), uint8(0x00),
 19899  	uint8(0x00), uint8(0x00), uint8(0x00), uint8(0x00), uint8(0x00), uint8(0x00), uint8(0x00), uint8(0x00),
 19900  	uint8(0x00), uint8(0x00), uint8(0x00), uint8(0x00), uint8(0x00), uint8(0x00), uint8(0x00), uint8(0x00),
 19901  	uint8(0x01), uint8(0x00), uint8(0x80), uint8(0x00), uint8(0x40), uint8(0x00), uint8(0x00), uint8(0x80),
 19902  	uint8(0x00), uint8(0x00), uint8(0x00), uint8(0x00), uint8(0x00), uint8(0x00), uint8(0x00), uint8(0x00),
 19903  	uint8(0x0c), uint8(0x0c), uint8(0x0c), uint8(0x0c), uint8(0x0c), uint8(0x0c), uint8(0x0c), uint8(0x0c),
 19904  	uint8(0x0c), uint8(0x0c), uint8(0x00), uint8(0x00), uint8(0x00), uint8(0x00), uint8(0x00), uint8(0x00),
 19905  	uint8(0x00), uint8(0x0a), uint8(0x0a), uint8(0x0a), uint8(0x0a), uint8(0x0a), uint8(0x0a), uint8(0x02),
 19906  	uint8(0x02), uint8(0x02), uint8(0x02), uint8(0x02), uint8(0x02), uint8(0x02), uint8(0x02), uint8(0x02),
 19907  	uint8(0x02), uint8(0x02), uint8(0x02), uint8(0x02), uint8(0x02), uint8(0x02), uint8(0x02), uint8(0x02),
 19908  	uint8(0x02), uint8(0x02), uint8(0x02), uint8(0x80), uint8(0x00), uint8(0x00), uint8(0x00), uint8(0x40),
 19909  	uint8(0x80), uint8(0x2a), uint8(0x2a), uint8(0x2a), uint8(0x2a), uint8(0x2a), uint8(0x2a), uint8(0x22),
 19910  	uint8(0x22), uint8(0x22), uint8(0x22), uint8(0x22), uint8(0x22), uint8(0x22), uint8(0x22), uint8(0x22),
 19911  	uint8(0x22), uint8(0x22), uint8(0x22), uint8(0x22), uint8(0x22), uint8(0x22), uint8(0x22), uint8(0x22),
 19912  	uint8(0x22), uint8(0x22), uint8(0x22), uint8(0x00), uint8(0x00), uint8(0x00), uint8(0x00), uint8(0x00),
 19913  	uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40),
 19914  	uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40),
 19915  	uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40),
 19916  	uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40),
 19917  	uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40),
 19918  	uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40),
 19919  	uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40),
 19920  	uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40),
 19921  	uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40),
 19922  	uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40),
 19923  	uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40),
 19924  	uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40),
 19925  	uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40),
 19926  	uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40),
 19927  	uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40),
 19928  	uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40),
 19929  }
 19930  
 19931  func sqlite3GetToken(tls *libc.TLS, z uintptr, tokenType uintptr) int32 {
 19932  	var i int32
 19933  	var c int32
 19934  	switch int32(aiClass[*(*uint8)(unsafe.Pointer(z))]) {
 19935  	case CC_SPACE:
 19936  		{
 19937  			for i = 1; int32(sqlite3CtypeMap[*(*uint8)(unsafe.Pointer(z + uintptr(i)))])&0x01 != 0; i++ {
 19938  			}
 19939  			*(*int32)(unsafe.Pointer(tokenType)) = TK_SPACE
 19940  			return i
 19941  
 19942  		}
 19943  	case CC_MINUS:
 19944  		{
 19945  			if int32(*(*uint8)(unsafe.Pointer(z + 1))) == '-' {
 19946  				for i = 2; libc.AssignInt32(&c, int32(*(*uint8)(unsafe.Pointer(z + uintptr(i))))) != 0 && c != '\n'; i++ {
 19947  				}
 19948  				*(*int32)(unsafe.Pointer(tokenType)) = TK_SPACE
 19949  				return i
 19950  			}
 19951  			*(*int32)(unsafe.Pointer(tokenType)) = TK_PUNCT
 19952  			return 1
 19953  
 19954  		}
 19955  	case CC_LP:
 19956  		{
 19957  			*(*int32)(unsafe.Pointer(tokenType)) = TK_PUNCT
 19958  			return 1
 19959  
 19960  		}
 19961  	case CC_RP:
 19962  		{
 19963  			*(*int32)(unsafe.Pointer(tokenType)) = TK_PUNCT
 19964  			return 1
 19965  
 19966  		}
 19967  	case CC_SEMI:
 19968  		{
 19969  			*(*int32)(unsafe.Pointer(tokenType)) = TK_PUNCT
 19970  			return 1
 19971  
 19972  		}
 19973  	case CC_PLUS:
 19974  		{
 19975  			*(*int32)(unsafe.Pointer(tokenType)) = TK_PUNCT
 19976  			return 1
 19977  
 19978  		}
 19979  	case CC_STAR:
 19980  		{
 19981  			*(*int32)(unsafe.Pointer(tokenType)) = TK_PUNCT
 19982  			return 1
 19983  
 19984  		}
 19985  	case CC_SLASH:
 19986  		{
 19987  			if int32(*(*uint8)(unsafe.Pointer(z + 1))) != '*' || int32(*(*uint8)(unsafe.Pointer(z + 2))) == 0 {
 19988  				*(*int32)(unsafe.Pointer(tokenType)) = TK_PUNCT
 19989  				return 1
 19990  			}
 19991  			i = 3
 19992  			c = int32(*(*uint8)(unsafe.Pointer(z + 2)))
 19993  			for ; (c != '*' || int32(*(*uint8)(unsafe.Pointer(z + uintptr(i)))) != '/') && libc.AssignInt32(&c, int32(*(*uint8)(unsafe.Pointer(z + uintptr(i))))) != 0; i++ {
 19994  			}
 19995  			if c != 0 {
 19996  				i++
 19997  			}
 19998  			*(*int32)(unsafe.Pointer(tokenType)) = TK_SPACE
 19999  			return i
 20000  
 20001  		}
 20002  	case CC_PERCENT:
 20003  		{
 20004  			*(*int32)(unsafe.Pointer(tokenType)) = TK_PUNCT
 20005  			return 1
 20006  
 20007  		}
 20008  	case CC_EQ:
 20009  		{
 20010  			*(*int32)(unsafe.Pointer(tokenType)) = TK_PUNCT
 20011  			return 1 + libc.Bool32(int32(*(*uint8)(unsafe.Pointer(z + 1))) == '=')
 20012  
 20013  		}
 20014  	case CC_LT:
 20015  		{
 20016  			if libc.AssignInt32(&c, int32(*(*uint8)(unsafe.Pointer(z + 1)))) == '=' {
 20017  				*(*int32)(unsafe.Pointer(tokenType)) = TK_PUNCT
 20018  				return 2
 20019  			} else if c == '>' {
 20020  				*(*int32)(unsafe.Pointer(tokenType)) = TK_PUNCT
 20021  				return 2
 20022  			} else if c == '<' {
 20023  				*(*int32)(unsafe.Pointer(tokenType)) = TK_PUNCT
 20024  				return 2
 20025  			} else {
 20026  				*(*int32)(unsafe.Pointer(tokenType)) = TK_PUNCT
 20027  				return 1
 20028  			}
 20029  
 20030  		}
 20031  		fallthrough
 20032  	case CC_GT:
 20033  		{
 20034  			if libc.AssignInt32(&c, int32(*(*uint8)(unsafe.Pointer(z + 1)))) == '=' {
 20035  				*(*int32)(unsafe.Pointer(tokenType)) = TK_PUNCT
 20036  				return 2
 20037  			} else if c == '>' {
 20038  				*(*int32)(unsafe.Pointer(tokenType)) = TK_PUNCT
 20039  				return 2
 20040  			} else {
 20041  				*(*int32)(unsafe.Pointer(tokenType)) = TK_PUNCT
 20042  				return 1
 20043  			}
 20044  
 20045  		}
 20046  		fallthrough
 20047  	case CC_BANG:
 20048  		{
 20049  			if int32(*(*uint8)(unsafe.Pointer(z + 1))) != '=' {
 20050  				*(*int32)(unsafe.Pointer(tokenType)) = TK_ERROR
 20051  				return 1
 20052  			} else {
 20053  				*(*int32)(unsafe.Pointer(tokenType)) = TK_PUNCT
 20054  				return 2
 20055  			}
 20056  
 20057  		}
 20058  		fallthrough
 20059  	case CC_PIPE:
 20060  		{
 20061  			if int32(*(*uint8)(unsafe.Pointer(z + 1))) != '|' {
 20062  				*(*int32)(unsafe.Pointer(tokenType)) = TK_PUNCT
 20063  				return 1
 20064  			} else {
 20065  				*(*int32)(unsafe.Pointer(tokenType)) = TK_PUNCT
 20066  				return 2
 20067  			}
 20068  
 20069  		}
 20070  		fallthrough
 20071  	case CC_COMMA:
 20072  		{
 20073  			*(*int32)(unsafe.Pointer(tokenType)) = TK_PUNCT
 20074  			return 1
 20075  
 20076  		}
 20077  	case CC_AND:
 20078  		{
 20079  			*(*int32)(unsafe.Pointer(tokenType)) = TK_PUNCT
 20080  			return 1
 20081  
 20082  		}
 20083  	case CC_TILDA:
 20084  		{
 20085  			*(*int32)(unsafe.Pointer(tokenType)) = TK_PUNCT
 20086  			return 1
 20087  
 20088  		}
 20089  	case CC_QUOTE:
 20090  		{
 20091  			var delim int32 = int32(*(*uint8)(unsafe.Pointer(z)))
 20092  
 20093  			for i = 1; libc.AssignInt32(&c, int32(*(*uint8)(unsafe.Pointer(z + uintptr(i))))) != 0; i++ {
 20094  				if c == delim {
 20095  					if int32(*(*uint8)(unsafe.Pointer(z + uintptr(i+1)))) == delim {
 20096  						i++
 20097  					} else {
 20098  						break
 20099  					}
 20100  				}
 20101  			}
 20102  			if c == '\'' {
 20103  				*(*int32)(unsafe.Pointer(tokenType)) = TK_LITERAL
 20104  				return i + 1
 20105  			} else if c != 0 {
 20106  				*(*int32)(unsafe.Pointer(tokenType)) = TK_NAME
 20107  				return i + 1
 20108  			} else {
 20109  				*(*int32)(unsafe.Pointer(tokenType)) = TK_ERROR
 20110  				return i
 20111  			}
 20112  
 20113  		}
 20114  		fallthrough
 20115  	case CC_DOT:
 20116  		{
 20117  			if !(int32(sqlite3CtypeMap[*(*uint8)(unsafe.Pointer(z + 1))])&0x04 != 0) {
 20118  				*(*int32)(unsafe.Pointer(tokenType)) = TK_PUNCT
 20119  				return 1
 20120  			}
 20121  
 20122  		}
 20123  		fallthrough
 20124  	case CC_DIGIT:
 20125  		{
 20126  			*(*int32)(unsafe.Pointer(tokenType)) = TK_LITERAL
 20127  			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 {
 20128  				for i = 3; int32(sqlite3CtypeMap[*(*uint8)(unsafe.Pointer(z + uintptr(i)))])&0x08 != 0; i++ {
 20129  				}
 20130  				return i
 20131  			}
 20132  			for i = 0; int32(sqlite3CtypeMap[*(*uint8)(unsafe.Pointer(z + uintptr(i)))])&0x04 != 0; i++ {
 20133  			}
 20134  			if int32(*(*uint8)(unsafe.Pointer(z + uintptr(i)))) == '.' {
 20135  				i++
 20136  				for int32(sqlite3CtypeMap[*(*uint8)(unsafe.Pointer(z + uintptr(i)))])&0x04 != 0 {
 20137  					i++
 20138  				}
 20139  				*(*int32)(unsafe.Pointer(tokenType)) = TK_LITERAL
 20140  			}
 20141  			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 ||
 20142  				(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) {
 20143  				i = i + 2
 20144  				for int32(sqlite3CtypeMap[*(*uint8)(unsafe.Pointer(z + uintptr(i)))])&0x04 != 0 {
 20145  					i++
 20146  				}
 20147  				*(*int32)(unsafe.Pointer(tokenType)) = TK_LITERAL
 20148  			}
 20149  			for int32(sqlite3CtypeMap[*(*uint8)(unsafe.Pointer(z + uintptr(i)))])&0x46 != 0 {
 20150  				*(*int32)(unsafe.Pointer(tokenType)) = TK_ERROR
 20151  				i++
 20152  			}
 20153  			return i
 20154  
 20155  		}
 20156  	case CC_QUOTE2:
 20157  		{
 20158  			i = 1
 20159  			c = int32(*(*uint8)(unsafe.Pointer(z)))
 20160  			for ; c != ']' && libc.AssignInt32(&c, int32(*(*uint8)(unsafe.Pointer(z + uintptr(i))))) != 0; i++ {
 20161  			}
 20162  			*(*int32)(unsafe.Pointer(tokenType)) = func() int32 {
 20163  				if c == ']' {
 20164  					return TK_NAME
 20165  				}
 20166  				return TK_ERROR
 20167  			}()
 20168  			return i
 20169  
 20170  		}
 20171  	case CC_VARNUM:
 20172  		{
 20173  			*(*int32)(unsafe.Pointer(tokenType)) = TK_LITERAL
 20174  			for i = 1; int32(sqlite3CtypeMap[*(*uint8)(unsafe.Pointer(z + uintptr(i)))])&0x04 != 0; i++ {
 20175  			}
 20176  			return i
 20177  
 20178  		}
 20179  	case CC_DOLLAR:
 20180  		fallthrough
 20181  	case CC_VARALPHA:
 20182  		{
 20183  			var n int32 = 0
 20184  
 20185  			*(*int32)(unsafe.Pointer(tokenType)) = TK_LITERAL
 20186  			for i = 1; libc.AssignInt32(&c, int32(*(*uint8)(unsafe.Pointer(z + uintptr(i))))) != 0; i++ {
 20187  				if int32(sqlite3CtypeMap[uint8(c)])&0x46 != 0 {
 20188  					n++
 20189  				} else if c == '(' && n > 0 {
 20190  					for __ccgo := true; __ccgo; __ccgo = libc.AssignInt32(&c, int32(*(*uint8)(unsafe.Pointer(z + uintptr(i))))) != 0 && !(int32(sqlite3CtypeMap[uint8(c)])&0x01 != 0) && c != ')' {
 20191  						i++
 20192  					}
 20193  					if c == ')' {
 20194  						i++
 20195  					} else {
 20196  						*(*int32)(unsafe.Pointer(tokenType)) = TK_ERROR
 20197  					}
 20198  					break
 20199  				} else if c == ':' && int32(*(*uint8)(unsafe.Pointer(z + uintptr(i+1)))) == ':' {
 20200  					i++
 20201  				} else {
 20202  					break
 20203  				}
 20204  			}
 20205  			if n == 0 {
 20206  				*(*int32)(unsafe.Pointer(tokenType)) = TK_ERROR
 20207  			}
 20208  			return i
 20209  
 20210  		}
 20211  	case CC_KYWD:
 20212  		{
 20213  			for i = 1; int32(aiClass[*(*uint8)(unsafe.Pointer(z + uintptr(i)))]) <= CC_KYWD; i++ {
 20214  			}
 20215  			if int32(sqlite3CtypeMap[*(*uint8)(unsafe.Pointer(z + uintptr(i)))])&0x46 != 0 {
 20216  				i++
 20217  				break
 20218  			}
 20219  			*(*int32)(unsafe.Pointer(tokenType)) = TK_NAME
 20220  			return i
 20221  
 20222  		}
 20223  	case CC_X:
 20224  		{
 20225  			if int32(*(*uint8)(unsafe.Pointer(z + 1))) == '\'' {
 20226  				*(*int32)(unsafe.Pointer(tokenType)) = TK_LITERAL
 20227  				for i = 2; int32(sqlite3CtypeMap[*(*uint8)(unsafe.Pointer(z + uintptr(i)))])&0x08 != 0; i++ {
 20228  				}
 20229  				if int32(*(*uint8)(unsafe.Pointer(z + uintptr(i)))) != '\'' || i%2 != 0 {
 20230  					*(*int32)(unsafe.Pointer(tokenType)) = TK_ERROR
 20231  					for *(*uint8)(unsafe.Pointer(z + uintptr(i))) != 0 && int32(*(*uint8)(unsafe.Pointer(z + uintptr(i)))) != '\'' {
 20232  						i++
 20233  					}
 20234  				}
 20235  				if *(*uint8)(unsafe.Pointer(z + uintptr(i))) != 0 {
 20236  					i++
 20237  				}
 20238  				return i
 20239  			}
 20240  
 20241  		}
 20242  		fallthrough
 20243  	case CC_ID:
 20244  		{
 20245  			i = 1
 20246  			break
 20247  
 20248  		}
 20249  	default:
 20250  		{
 20251  			*(*int32)(unsafe.Pointer(tokenType)) = TK_ERROR
 20252  			return 1
 20253  
 20254  		}
 20255  	}
 20256  	for int32(sqlite3CtypeMap[*(*uint8)(unsafe.Pointer(z + uintptr(i)))])&0x46 != 0 {
 20257  		i++
 20258  	}
 20259  	*(*int32)(unsafe.Pointer(tokenType)) = TK_NAME
 20260  	return i
 20261  }
 20262  
 20263  func sqlite3_normalize(tls *libc.TLS, zSql uintptr) uintptr {
 20264  	bp := tls.Alloc(4)
 20265  	defer tls.Free(4)
 20266  
 20267  	var z uintptr
 20268  	var nZ sqlite3_int64
 20269  	var nSql sqlite3_int64
 20270  	var i int32
 20271  	var j int32
 20272  
 20273  	var n int32
 20274  	var k int32
 20275  
 20276  	nSql = sqlite3_int64(libc.Xstrlen(tls, zSql))
 20277  	nZ = nSql
 20278  	z = sqlite3.Xsqlite3_malloc64(tls, uint64(nZ+int64(2)))
 20279  	if z == uintptr(0) {
 20280  		return uintptr(0)
 20281  	}
 20282  	for i = libc.AssignInt32(&j, 0); *(*int8)(unsafe.Pointer(zSql + uintptr(i))) != 0; i = i + n {
 20283  		n = sqlite3GetToken(tls, zSql+uintptr(i), bp)
 20284  		switch *(*int32)(unsafe.Pointer(bp)) {
 20285  		case TK_SPACE:
 20286  			{
 20287  				break
 20288  
 20289  			}
 20290  		case TK_ERROR:
 20291  			{
 20292  				sqlite3.Xsqlite3_free(tls, z)
 20293  				return uintptr(0)
 20294  
 20295  			}
 20296  		case TK_LITERAL:
 20297  			{
 20298  				*(*int8)(unsafe.Pointer(z + uintptr(libc.PostIncInt32(&j, 1)))) = int8('?')
 20299  				break
 20300  
 20301  			}
 20302  		case TK_PUNCT:
 20303  			fallthrough
 20304  		case TK_NAME:
 20305  			{
 20306  				if n == 4 && sqlite3.Xsqlite3_strnicmp(tls, zSql+uintptr(i), ts+5846, 4) == 0 {
 20307  					if j >= 3 && libc.Xstrncmp(tls, z+uintptr(j)-uintptr(2), ts+5851, uint64(2)) == 0 && !(int32(sqlite3CtypeMap[uint8(*(*int8)(unsafe.Pointer(z + uintptr(j-3))))])&0x46 != 0) ||
 20308  						j >= 4 && libc.Xstrncmp(tls, z+uintptr(j)-uintptr(3), ts+5854, uint64(3)) == 0 && !(int32(sqlite3CtypeMap[uint8(*(*int8)(unsafe.Pointer(z + uintptr(j-4))))])&0x46 != 0) {
 20309  					} else {
 20310  						*(*int8)(unsafe.Pointer(z + uintptr(libc.PostIncInt32(&j, 1)))) = int8('?')
 20311  						break
 20312  					}
 20313  				}
 20314  				if j > 0 && int32(sqlite3CtypeMap[uint8(*(*int8)(unsafe.Pointer(z + uintptr(j-1))))])&0x46 != 0 && int32(sqlite3CtypeMap[uint8(*(*int8)(unsafe.Pointer(zSql + uintptr(i))))])&0x46 != 0 {
 20315  					*(*int8)(unsafe.Pointer(z + uintptr(libc.PostIncInt32(&j, 1)))) = int8(' ')
 20316  				}
 20317  				for k = 0; k < n; k++ {
 20318  					*(*int8)(unsafe.Pointer(z + uintptr(libc.PostIncInt32(&j, 1)))) = int8(sqlite3UpperToLower[uint8(*(*int8)(unsafe.Pointer(zSql + uintptr(i+k))))])
 20319  				}
 20320  				break
 20321  
 20322  			}
 20323  		}
 20324  	}
 20325  	for j > 0 && int32(*(*int8)(unsafe.Pointer(z + uintptr(j-1)))) == ' ' {
 20326  		j--
 20327  	}
 20328  	if j > 0 && int32(*(*int8)(unsafe.Pointer(z + uintptr(j-1)))) != ';' {
 20329  		*(*int8)(unsafe.Pointer(z + uintptr(libc.PostIncInt32(&j, 1)))) = int8(';')
 20330  	}
 20331  	*(*int8)(unsafe.Pointer(z + uintptr(j))) = int8(0)
 20332  
 20333  	for i = 0; i < j; i = n {
 20334  		var zIn uintptr = libc.Xstrstr(tls, z+uintptr(i), ts+5858)
 20335  		var nParen int32
 20336  		if zIn == uintptr(0) {
 20337  			break
 20338  		}
 20339  		n = int32((int64(zIn)-int64(z))/1) + 3
 20340  		if n != 0 && int32(sqlite3CtypeMap[uint8(*(*int8)(unsafe.Pointer(zIn + libc.UintptrFromInt32(-1))))])&0x46 != 0 {
 20341  			continue
 20342  		}
 20343  		if libc.Xstrncmp(tls, zIn, ts+5862, uint64(9)) == 0 && !(int32(sqlite3CtypeMap[uint8(*(*int8)(unsafe.Pointer(zIn + 9)))])&0x46 != 0) {
 20344  			continue
 20345  		}
 20346  		if libc.Xstrncmp(tls, zIn, ts+5872, uint64(7)) == 0 && !(int32(sqlite3CtypeMap[uint8(*(*int8)(unsafe.Pointer(zIn + 7)))])&0x46 != 0) {
 20347  			continue
 20348  		}
 20349  		nParen = 1
 20350  		k = 0
 20351  		for ; *(*int8)(unsafe.Pointer(z + uintptr(n+k))) != 0; k++ {
 20352  			if int32(*(*int8)(unsafe.Pointer(z + uintptr(n+k)))) == '(' {
 20353  				nParen++
 20354  			}
 20355  			if int32(*(*int8)(unsafe.Pointer(z + uintptr(n+k)))) == ')' {
 20356  				nParen--
 20357  				if nParen == 0 {
 20358  					break
 20359  				}
 20360  			}
 20361  		}
 20362  
 20363  		if k < 5 {
 20364  			z = sqlite3.Xsqlite3_realloc64(tls, z, uint64(j+(5-k)+1))
 20365  			if z == uintptr(0) {
 20366  				return uintptr(0)
 20367  			}
 20368  			libc.X__builtin___memmove_chk(tls, z+uintptr(n)+uintptr(5), z+uintptr(n)+uintptr(k), uint64(j-(n+k)), libc.X__builtin_object_size(tls, z+uintptr(n)+uintptr(5), 0))
 20369  		} else if k > 5 {
 20370  			libc.X__builtin___memmove_chk(tls, z+uintptr(n)+uintptr(5), z+uintptr(n)+uintptr(k), uint64(j-(n+k)), libc.X__builtin_object_size(tls, z+uintptr(n)+uintptr(5), 0))
 20371  		}
 20372  		j = j - k + 5
 20373  		*(*int8)(unsafe.Pointer(z + uintptr(j))) = int8(0)
 20374  		libc.X__builtin___memcpy_chk(tls, z+uintptr(n), ts+5880, uint64(5), libc.X__builtin_object_size(tls, z+uintptr(n), 0))
 20375  	}
 20376  	return z
 20377  }
 20378  
 20379  type Percentile1 = struct {
 20380  	FnAlloc uint32
 20381  	FnUsed  uint32
 20382  	FrPct   float64
 20383  	Fa      uintptr
 20384  }
 20385  
 20386  type Percentile = Percentile1
 20387  
 20388  func isInfinity(tls *libc.TLS, r float64) int32 {
 20389  	bp := tls.Alloc(16)
 20390  	defer tls.Free(16)
 20391  	*(*float64)(unsafe.Pointer(bp + 8)) = r
 20392  
 20393  	libc.X__builtin___memcpy_chk(tls, bp, bp+8, uint64(unsafe.Sizeof(sqlite3_uint64(0))), libc.X__builtin_object_size(tls, bp, 0))
 20394  	return libc.Bool32(*(*sqlite3_uint64)(unsafe.Pointer(bp))>>52&uint64(0x7ff) == uint64(0x7ff))
 20395  }
 20396  
 20397  func sameValue(tls *libc.TLS, a float64, b float64) int32 {
 20398  	a = a - b
 20399  	return libc.Bool32(a >= -0.001 && a <= 0.001)
 20400  }
 20401  
 20402  func percentStep(tls *libc.TLS, pCtx uintptr, argc int32, argv uintptr) {
 20403  	var p uintptr
 20404  	var rPct float64
 20405  	var eType int32
 20406  	var y float64
 20407  
 20408  	eType = sqlite3.Xsqlite3_value_numeric_type(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 20409  	rPct = sqlite3.Xsqlite3_value_double(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 20410  	if eType != SQLITE_INTEGER && eType != SQLITE_FLOAT ||
 20411  		rPct < 0.0 || rPct > 100.0 {
 20412  		sqlite3.Xsqlite3_result_error(tls, pCtx,
 20413  			ts+5886, -1)
 20414  		return
 20415  	}
 20416  
 20417  	p = sqlite3.Xsqlite3_aggregate_context(tls, pCtx, int32(unsafe.Sizeof(Percentile{})))
 20418  	if p == uintptr(0) {
 20419  		return
 20420  	}
 20421  
 20422  	if (*Percentile)(unsafe.Pointer(p)).FrPct == 0.0 {
 20423  		(*Percentile)(unsafe.Pointer(p)).FrPct = rPct + 1.0
 20424  	} else if !(sameValue(tls, (*Percentile)(unsafe.Pointer(p)).FrPct, rPct+1.0) != 0) {
 20425  		sqlite3.Xsqlite3_result_error(tls, pCtx,
 20426  			ts+5953, -1)
 20427  		return
 20428  	}
 20429  
 20430  	eType = sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(argv)))
 20431  	if eType == SQLITE_NULL {
 20432  		return
 20433  	}
 20434  
 20435  	if eType != SQLITE_INTEGER && eType != SQLITE_FLOAT {
 20436  		sqlite3.Xsqlite3_result_error(tls, pCtx,
 20437  			ts+6017, -1)
 20438  		return
 20439  	}
 20440  
 20441  	y = sqlite3.Xsqlite3_value_double(tls, *(*uintptr)(unsafe.Pointer(argv)))
 20442  	if isInfinity(tls, y) != 0 {
 20443  		sqlite3.Xsqlite3_result_error(tls, pCtx, ts+6061, -1)
 20444  		return
 20445  	}
 20446  
 20447  	if (*Percentile)(unsafe.Pointer(p)).FnUsed >= (*Percentile)(unsafe.Pointer(p)).FnAlloc {
 20448  		var n uint32 = (*Percentile)(unsafe.Pointer(p)).FnAlloc*uint32(2) + uint32(250)
 20449  		var a uintptr = sqlite3.Xsqlite3_realloc64(tls, (*Percentile)(unsafe.Pointer(p)).Fa, uint64(unsafe.Sizeof(float64(0)))*uint64(n))
 20450  		if a == uintptr(0) {
 20451  			sqlite3.Xsqlite3_free(tls, (*Percentile)(unsafe.Pointer(p)).Fa)
 20452  			libc.X__builtin___memset_chk(tls, p, 0, uint64(unsafe.Sizeof(Percentile{})), libc.X__builtin_object_size(tls, p, 0))
 20453  			sqlite3.Xsqlite3_result_error_nomem(tls, pCtx)
 20454  			return
 20455  		}
 20456  		(*Percentile)(unsafe.Pointer(p)).FnAlloc = n
 20457  		(*Percentile)(unsafe.Pointer(p)).Fa = a
 20458  	}
 20459  	*(*float64)(unsafe.Pointer((*Percentile)(unsafe.Pointer(p)).Fa + uintptr(libc.PostIncUint32(&(*Percentile)(unsafe.Pointer(p)).FnUsed, 1))*8)) = y
 20460  }
 20461  
 20462  func doubleCmp(tls *libc.TLS, pA uintptr, pB uintptr) int32 {
 20463  	var a float64 = *(*float64)(unsafe.Pointer(pA))
 20464  	var b float64 = *(*float64)(unsafe.Pointer(pB))
 20465  	if a == b {
 20466  		return 0
 20467  	}
 20468  	if a < b {
 20469  		return -1
 20470  	}
 20471  	return +1
 20472  }
 20473  
 20474  func percentFinal(tls *libc.TLS, pCtx uintptr) {
 20475  	var p uintptr
 20476  	var i1 uint32
 20477  	var i2 uint32
 20478  	var v1 float64
 20479  	var v2 float64
 20480  	var ix float64
 20481  	var vx float64
 20482  	p = sqlite3.Xsqlite3_aggregate_context(tls, pCtx, 0)
 20483  	if p == uintptr(0) {
 20484  		return
 20485  	}
 20486  	if (*Percentile)(unsafe.Pointer(p)).Fa == uintptr(0) {
 20487  		return
 20488  	}
 20489  	if (*Percentile)(unsafe.Pointer(p)).FnUsed != 0 {
 20490  		libc.Xqsort(tls, (*Percentile)(unsafe.Pointer(p)).Fa, uint64((*Percentile)(unsafe.Pointer(p)).FnUsed), uint64(unsafe.Sizeof(float64(0))), *(*uintptr)(unsafe.Pointer(&struct {
 20491  			f func(*libc.TLS, uintptr, uintptr) int32
 20492  		}{doubleCmp})))
 20493  		ix = ((*Percentile)(unsafe.Pointer(p)).FrPct - 1.0) * float64((*Percentile)(unsafe.Pointer(p)).FnUsed-uint32(1)) * 0.01
 20494  		i1 = uint32(ix)
 20495  		if ix == float64(i1) || i1 == (*Percentile)(unsafe.Pointer(p)).FnUsed-uint32(1) {
 20496  			i2 = i1
 20497  		} else {
 20498  			i2 = i1 + uint32(1)
 20499  		}
 20500  		v1 = *(*float64)(unsafe.Pointer((*Percentile)(unsafe.Pointer(p)).Fa + uintptr(i1)*8))
 20501  		v2 = *(*float64)(unsafe.Pointer((*Percentile)(unsafe.Pointer(p)).Fa + uintptr(i2)*8))
 20502  		vx = v1 + (v2-v1)*(ix-float64(i1))
 20503  		sqlite3.Xsqlite3_result_double(tls, pCtx, vx)
 20504  	}
 20505  	sqlite3.Xsqlite3_free(tls, (*Percentile)(unsafe.Pointer(p)).Fa)
 20506  	libc.X__builtin___memset_chk(tls, p, 0, uint64(unsafe.Sizeof(Percentile{})), libc.X__builtin_object_size(tls, p, 0))
 20507  }
 20508  
 20509  func sqlite3_percentile_init(tls *libc.TLS, db uintptr, pzErrMsg uintptr, pApi uintptr) int32 {
 20510  	var rc int32 = SQLITE_OK
 20511  	_ = pApi
 20512  
 20513  	_ = pzErrMsg
 20514  	rc = sqlite3.Xsqlite3_create_function(tls, db, ts+6087, 2,
 20515  		SQLITE_UTF8|SQLITE_INNOCUOUS, uintptr(0),
 20516  		uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 20517  			f func(*libc.TLS, uintptr, int32, uintptr)
 20518  		}{percentStep})), *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{percentFinal})))
 20519  	return rc
 20520  }
 20521  
 20522  type prefixes_vtab1 = struct{ Fbase sqlite3_vtab }
 20523  
 20524  type prefixes_vtab = prefixes_vtab1
 20525  
 20526  type prefixes_cursor1 = struct {
 20527  	Fbase        sqlite3_vtab_cursor
 20528  	FiRowid      sqlite3_int64
 20529  	FzStr        uintptr
 20530  	FnStr        int32
 20531  	F__ccgo_pad1 [4]byte
 20532  }
 20533  
 20534  type prefixes_cursor = prefixes_cursor1
 20535  
 20536  func prefixesConnect(tls *libc.TLS, db uintptr, pAux uintptr, argc int32, argv uintptr, ppVtab uintptr, pzErr uintptr) int32 {
 20537  	var pNew uintptr
 20538  	var rc int32
 20539  
 20540  	rc = sqlite3.Xsqlite3_declare_vtab(tls, db,
 20541  		ts+6098)
 20542  	if rc == SQLITE_OK {
 20543  		pNew = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(prefixes_vtab{})))
 20544  		*(*uintptr)(unsafe.Pointer(ppVtab)) = pNew
 20545  		if pNew == uintptr(0) {
 20546  			return SQLITE_NOMEM
 20547  		}
 20548  		libc.X__builtin___memset_chk(tls, pNew, 0, uint64(unsafe.Sizeof(prefixes_vtab{})), libc.X__builtin_object_size(tls, pNew, 0))
 20549  		sqlite3.Xsqlite3_vtab_config(tls, db, SQLITE_VTAB_INNOCUOUS, 0)
 20550  	}
 20551  	return rc
 20552  }
 20553  
 20554  func prefixesDisconnect(tls *libc.TLS, pVtab uintptr) int32 {
 20555  	var p uintptr = pVtab
 20556  	sqlite3.Xsqlite3_free(tls, p)
 20557  	return SQLITE_OK
 20558  }
 20559  
 20560  func prefixesOpen(tls *libc.TLS, p uintptr, ppCursor uintptr) int32 {
 20561  	var pCur uintptr
 20562  	pCur = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(prefixes_cursor{})))
 20563  	if pCur == uintptr(0) {
 20564  		return SQLITE_NOMEM
 20565  	}
 20566  	libc.X__builtin___memset_chk(tls, pCur, 0, uint64(unsafe.Sizeof(prefixes_cursor{})), libc.X__builtin_object_size(tls, pCur, 0))
 20567  	*(*uintptr)(unsafe.Pointer(ppCursor)) = pCur
 20568  	return SQLITE_OK
 20569  }
 20570  
 20571  func prefixesClose(tls *libc.TLS, cur uintptr) int32 {
 20572  	var pCur uintptr = cur
 20573  	sqlite3.Xsqlite3_free(tls, (*prefixes_cursor)(unsafe.Pointer(pCur)).FzStr)
 20574  	sqlite3.Xsqlite3_free(tls, pCur)
 20575  	return SQLITE_OK
 20576  }
 20577  
 20578  func prefixesNext(tls *libc.TLS, cur uintptr) int32 {
 20579  	var pCur uintptr = cur
 20580  	(*prefixes_cursor)(unsafe.Pointer(pCur)).FiRowid++
 20581  	return SQLITE_OK
 20582  }
 20583  
 20584  func prefixesColumn(tls *libc.TLS, cur uintptr, ctx uintptr, i int32) int32 {
 20585  	var pCur uintptr = cur
 20586  	switch i {
 20587  	case 0:
 20588  		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),
 20589  			uintptr(0))
 20590  		break
 20591  	default:
 20592  		sqlite3.Xsqlite3_result_text(tls, ctx, (*prefixes_cursor)(unsafe.Pointer(pCur)).FzStr, (*prefixes_cursor)(unsafe.Pointer(pCur)).FnStr, uintptr(0))
 20593  		break
 20594  	}
 20595  	return SQLITE_OK
 20596  }
 20597  
 20598  func prefixesRowid(tls *libc.TLS, cur uintptr, pRowid uintptr) int32 {
 20599  	var pCur uintptr = cur
 20600  	*(*sqlite_int64)(unsafe.Pointer(pRowid)) = (*prefixes_cursor)(unsafe.Pointer(pCur)).FiRowid
 20601  	return SQLITE_OK
 20602  }
 20603  
 20604  func prefixesEof(tls *libc.TLS, cur uintptr) int32 {
 20605  	var pCur uintptr = cur
 20606  	return libc.Bool32((*prefixes_cursor)(unsafe.Pointer(pCur)).FiRowid > sqlite3_int64((*prefixes_cursor)(unsafe.Pointer(pCur)).FnStr))
 20607  }
 20608  
 20609  func prefixesFilter(tls *libc.TLS, pVtabCursor uintptr, idxNum int32, idxStr uintptr, argc int32, argv uintptr) int32 {
 20610  	bp := tls.Alloc(8)
 20611  	defer tls.Free(8)
 20612  
 20613  	var pCur uintptr = pVtabCursor
 20614  	sqlite3.Xsqlite3_free(tls, (*prefixes_cursor)(unsafe.Pointer(pCur)).FzStr)
 20615  	if argc > 0 {
 20616  		(*prefixes_cursor)(unsafe.Pointer(pCur)).FzStr = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp, sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))))
 20617  		(*prefixes_cursor)(unsafe.Pointer(pCur)).FnStr = func() int32 {
 20618  			if (*prefixes_cursor)(unsafe.Pointer(pCur)).FzStr != 0 {
 20619  				return int32(libc.Xstrlen(tls, (*prefixes_cursor)(unsafe.Pointer(pCur)).FzStr))
 20620  			}
 20621  			return 0
 20622  		}()
 20623  	} else {
 20624  		(*prefixes_cursor)(unsafe.Pointer(pCur)).FzStr = uintptr(0)
 20625  		(*prefixes_cursor)(unsafe.Pointer(pCur)).FnStr = 0
 20626  	}
 20627  	(*prefixes_cursor)(unsafe.Pointer(pCur)).FiRowid = int64(0)
 20628  	return SQLITE_OK
 20629  }
 20630  
 20631  func prefixesBestIndex(tls *libc.TLS, tab uintptr, pIdxInfo uintptr) int32 {
 20632  	var i int32
 20633  	var p uintptr
 20634  
 20635  	i = 0
 20636  	p = (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint
 20637  __1:
 20638  	if !(i < (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnConstraint) {
 20639  		goto __3
 20640  	}
 20641  	{
 20642  		if (*sqlite3_index_constraint)(unsafe.Pointer(p)).FiColumn != 1 {
 20643  			goto __2
 20644  		}
 20645  		if int32((*sqlite3_index_constraint)(unsafe.Pointer(p)).Fop) != SQLITE_INDEX_CONSTRAINT_EQ {
 20646  			goto __2
 20647  		}
 20648  		if !(int32((*sqlite3_index_constraint)(unsafe.Pointer(p)).Fusable) != 0) {
 20649  			goto __2
 20650  		}
 20651  		(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(i)*8)).FargvIndex = 1
 20652  		(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(i)*8)).Fomit = uint8(1)
 20653  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = float64(10)
 20654  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedRows = int64(10)
 20655  		return SQLITE_OK
 20656  
 20657  	}
 20658  	goto __2
 20659  __2:
 20660  	i++
 20661  	p += 12
 20662  	goto __1
 20663  	goto __3
 20664  __3:
 20665  	;
 20666  	(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = float64(1000000000)
 20667  	(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedRows = int64(1000000000)
 20668  	return SQLITE_OK
 20669  }
 20670  
 20671  var prefixesModule = sqlite3_module{
 20672  	FxConnect:    0,
 20673  	FxBestIndex:  0,
 20674  	FxDisconnect: 0,
 20675  	FxOpen:       0,
 20676  	FxClose:      0,
 20677  	FxFilter:     0,
 20678  	FxNext:       0,
 20679  	FxEof:        0,
 20680  	FxColumn:     0,
 20681  	FxRowid:      0,
 20682  }
 20683  
 20684  func prefixLengthFunc(tls *libc.TLS, ctx uintptr, nVal int32, apVal uintptr) {
 20685  	var nByte int32
 20686  	var nRet int32 = 0
 20687  	var zL uintptr = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(apVal)))
 20688  	var zR uintptr = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(apVal + 1*8)))
 20689  	var nL int32 = sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(apVal)))
 20690  	var nR int32 = sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(apVal + 1*8)))
 20691  	var i int32
 20692  
 20693  	nByte = func() int32 {
 20694  		if nL > nR {
 20695  			return nL
 20696  		}
 20697  		return nR
 20698  	}()
 20699  	for i = 0; i < nByte; i++ {
 20700  		if int32(*(*uint8)(unsafe.Pointer(zL + uintptr(i)))) != int32(*(*uint8)(unsafe.Pointer(zR + uintptr(i)))) {
 20701  			break
 20702  		}
 20703  		if int32(*(*uint8)(unsafe.Pointer(zL + uintptr(i))))&0xC0 != 0x80 {
 20704  			nRet++
 20705  		}
 20706  	}
 20707  
 20708  	if int32(*(*uint8)(unsafe.Pointer(zL + uintptr(i))))&0xC0 == 0x80 {
 20709  		nRet--
 20710  	}
 20711  	sqlite3.Xsqlite3_result_int(tls, ctx, nRet)
 20712  }
 20713  
 20714  func sqlite3_prefixes_init(tls *libc.TLS, db uintptr, pzErrMsg uintptr, pApi uintptr) int32 {
 20715  	var rc int32 = SQLITE_OK
 20716  	_ = pApi
 20717  
 20718  	rc = sqlite3.Xsqlite3_create_module(tls, db, ts+6162, uintptr(unsafe.Pointer(&prefixesModule)), uintptr(0))
 20719  	if rc == SQLITE_OK {
 20720  		rc = sqlite3.Xsqlite3_create_function(tls,
 20721  			db, ts+6171, 2, SQLITE_UTF8, uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 20722  				f func(*libc.TLS, uintptr, int32, uintptr)
 20723  			}{prefixLengthFunc})), uintptr(0), uintptr(0))
 20724  	}
 20725  	return rc
 20726  }
 20727  
 20728  type qpvtab_vtab1 = struct{ Fbase sqlite3_vtab }
 20729  
 20730  type qpvtab_vtab = qpvtab_vtab1
 20731  
 20732  type qpvtab_cursor1 = struct {
 20733  	Fbase   sqlite3_vtab_cursor
 20734  	FiRowid sqlite3_int64
 20735  	FzData  uintptr
 20736  	FnData  int32
 20737  	Fflags  int32
 20738  }
 20739  
 20740  type qpvtab_cursor = qpvtab_cursor1
 20741  
 20742  var azColname = [13]uintptr{
 20743  	ts + 6185,
 20744  	ts + 6188,
 20745  	ts + 6191,
 20746  	ts + 6194,
 20747  	ts + 6197,
 20748  	ts + 6200,
 20749  	ts + 6204, ts + 6206, ts + 6208, ts + 6210, ts + 6212,
 20750  	ts + 6214,
 20751  	ts + 584,
 20752  }
 20753  
 20754  func qpvtabConnect(tls *libc.TLS, db uintptr, pAux uintptr, argc int32, argv uintptr, ppVtab uintptr, pzErr uintptr) int32 {
 20755  	var pNew uintptr
 20756  	var rc int32
 20757  
 20758  	rc = sqlite3.Xsqlite3_declare_vtab(tls, db,
 20759  		ts+6220)
 20760  	if rc == SQLITE_OK {
 20761  		pNew = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(qpvtab_vtab{})))
 20762  		*(*uintptr)(unsafe.Pointer(ppVtab)) = pNew
 20763  		if pNew == uintptr(0) {
 20764  			return SQLITE_NOMEM
 20765  		}
 20766  		libc.X__builtin___memset_chk(tls, pNew, 0, uint64(unsafe.Sizeof(qpvtab_vtab{})), libc.X__builtin_object_size(tls, pNew, 0))
 20767  	}
 20768  	return rc
 20769  }
 20770  
 20771  func qpvtabDisconnect(tls *libc.TLS, pVtab uintptr) int32 {
 20772  	var p uintptr = pVtab
 20773  	sqlite3.Xsqlite3_free(tls, p)
 20774  	return SQLITE_OK
 20775  }
 20776  
 20777  func qpvtabOpen(tls *libc.TLS, p uintptr, ppCursor uintptr) int32 {
 20778  	var pCur uintptr
 20779  	pCur = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(qpvtab_cursor{})))
 20780  	if pCur == uintptr(0) {
 20781  		return SQLITE_NOMEM
 20782  	}
 20783  	libc.X__builtin___memset_chk(tls, pCur, 0, uint64(unsafe.Sizeof(qpvtab_cursor{})), libc.X__builtin_object_size(tls, pCur, 0))
 20784  	*(*uintptr)(unsafe.Pointer(ppCursor)) = pCur
 20785  	return SQLITE_OK
 20786  }
 20787  
 20788  func qpvtabClose(tls *libc.TLS, cur uintptr) int32 {
 20789  	var pCur uintptr = cur
 20790  	sqlite3.Xsqlite3_free(tls, pCur)
 20791  	return SQLITE_OK
 20792  }
 20793  
 20794  func qpvtabNext(tls *libc.TLS, cur uintptr) int32 {
 20795  	var pCur uintptr = cur
 20796  	if (*qpvtab_cursor)(unsafe.Pointer(pCur)).FiRowid < sqlite3_int64((*qpvtab_cursor)(unsafe.Pointer(pCur)).FnData) {
 20797  		var z uintptr = (*qpvtab_cursor)(unsafe.Pointer(pCur)).FzData + uintptr((*qpvtab_cursor)(unsafe.Pointer(pCur)).FiRowid)
 20798  		var zEnd uintptr = libc.Xstrchr(tls, z, '\n')
 20799  		if zEnd != 0 {
 20800  			zEnd++
 20801  		}
 20802  		(*qpvtab_cursor)(unsafe.Pointer(pCur)).FiRowid = sqlite3_int64(int32((int64(zEnd) - int64((*qpvtab_cursor)(unsafe.Pointer(pCur)).FzData)) / 1))
 20803  	}
 20804  	return SQLITE_OK
 20805  }
 20806  
 20807  func qpvtabColumn(tls *libc.TLS, cur uintptr, ctx uintptr, i int32) int32 {
 20808  	bp := tls.Alloc(1)
 20809  	defer tls.Free(1)
 20810  
 20811  	var pCur uintptr = cur
 20812  	if i >= QPVTAB_VN && i <= QPVTAB_RHS && (*qpvtab_cursor)(unsafe.Pointer(pCur)).FiRowid < sqlite3_int64((*qpvtab_cursor)(unsafe.Pointer(pCur)).FnData) {
 20813  		var z uintptr = (*qpvtab_cursor)(unsafe.Pointer(pCur)).FzData + uintptr((*qpvtab_cursor)(unsafe.Pointer(pCur)).FiRowid)
 20814  		var zEnd uintptr
 20815  		var j int32
 20816  		j = QPVTAB_VN
 20817  		for 1 != 0 {
 20818  			zEnd = libc.Xstrchr(tls, z, func() int32 {
 20819  				if j == QPVTAB_RHS {
 20820  					return '\n'
 20821  				}
 20822  				return ','
 20823  			}())
 20824  			if j == i || zEnd == uintptr(0) {
 20825  				break
 20826  			}
 20827  			z = zEnd + uintptr(1)
 20828  			j++
 20829  		}
 20830  		if zEnd == z {
 20831  			sqlite3.Xsqlite3_result_null(tls, ctx)
 20832  		} else if i == QPVTAB_IX || i == QPVTAB_OP || i == QPVTAB_UX {
 20833  			sqlite3.Xsqlite3_result_int(tls, ctx, libc.Xatoi(tls, z))
 20834  		} else {
 20835  			sqlite3.Xsqlite3_result_text64(tls, ctx, z, uint64((int64(zEnd)-int64(z))/1), libc.UintptrFromInt32(-1), uint8(SQLITE_UTF8))
 20836  		}
 20837  	} else if i >= QPVTAB_A && i <= QPVTAB_E {
 20838  		if (*qpvtab_cursor)(unsafe.Pointer(pCur)).Fflags&0x001 != 0 {
 20839  			sqlite3.Xsqlite3_result_int(tls, ctx, i-QPVTAB_A+1)
 20840  		} else {
 20841  			*(*int8)(unsafe.Pointer(bp)) = int8('a' + i - QPVTAB_A)
 20842  			sqlite3.Xsqlite3_result_text64(tls, ctx, bp, uint64(1), libc.UintptrFromInt32(-1), uint8(SQLITE_UTF8))
 20843  		}
 20844  	} else if i == QPVTAB_FLAGS {
 20845  		sqlite3.Xsqlite3_result_int(tls, ctx, (*qpvtab_cursor)(unsafe.Pointer(pCur)).Fflags)
 20846  	}
 20847  	return SQLITE_OK
 20848  }
 20849  
 20850  func qpvtabRowid(tls *libc.TLS, cur uintptr, pRowid uintptr) int32 {
 20851  	var pCur uintptr = cur
 20852  	*(*sqlite_int64)(unsafe.Pointer(pRowid)) = (*qpvtab_cursor)(unsafe.Pointer(pCur)).FiRowid
 20853  	return SQLITE_OK
 20854  }
 20855  
 20856  func qpvtabEof(tls *libc.TLS, cur uintptr) int32 {
 20857  	var pCur uintptr = cur
 20858  	return libc.Bool32((*qpvtab_cursor)(unsafe.Pointer(pCur)).FiRowid >= sqlite3_int64((*qpvtab_cursor)(unsafe.Pointer(pCur)).FnData))
 20859  }
 20860  
 20861  func qpvtabFilter(tls *libc.TLS, pVtabCursor uintptr, idxNum int32, idxStr uintptr, argc int32, argv uintptr) int32 {
 20862  	var pCur uintptr = pVtabCursor
 20863  	(*qpvtab_cursor)(unsafe.Pointer(pCur)).FiRowid = int64(0)
 20864  	(*qpvtab_cursor)(unsafe.Pointer(pCur)).FzData = idxStr
 20865  	(*qpvtab_cursor)(unsafe.Pointer(pCur)).FnData = int32(libc.Xstrlen(tls, idxStr))
 20866  	(*qpvtab_cursor)(unsafe.Pointer(pCur)).Fflags = idxNum
 20867  	return SQLITE_OK
 20868  }
 20869  
 20870  func qpvtabStrAppendValue(tls *libc.TLS, pStr uintptr, pVal uintptr) {
 20871  	bp := tls.Alloc(25)
 20872  	defer tls.Free(25)
 20873  
 20874  	switch sqlite3.Xsqlite3_value_type(tls, pVal) {
 20875  	case SQLITE_NULL:
 20876  		sqlite3.Xsqlite3_str_appendf(tls, pStr, ts+5846, 0)
 20877  		break
 20878  	case SQLITE_INTEGER:
 20879  		sqlite3.Xsqlite3_str_appendf(tls, pStr, ts+6325, libc.VaList(bp, sqlite3.Xsqlite3_value_int64(tls, pVal)))
 20880  		break
 20881  	case SQLITE_FLOAT:
 20882  		sqlite3.Xsqlite3_str_appendf(tls, pStr, ts+6330, libc.VaList(bp+8, sqlite3.Xsqlite3_value_double(tls, pVal)))
 20883  		break
 20884  	case SQLITE_TEXT:
 20885  		{
 20886  			var i int32
 20887  			var a uintptr = sqlite3.Xsqlite3_value_text(tls, pVal)
 20888  			var n int32 = sqlite3.Xsqlite3_value_bytes(tls, pVal)
 20889  			sqlite3.Xsqlite3_str_append(tls, pStr, ts+5624, 1)
 20890  			for i = 0; i < n; i++ {
 20891  				*(*int8)(unsafe.Pointer(bp + 24)) = *(*int8)(unsafe.Pointer(a + uintptr(i)))
 20892  				if int32(*(*int8)(unsafe.Pointer(bp + 24))) == '\n' {
 20893  					*(*int8)(unsafe.Pointer(bp + 24)) = int8(' ')
 20894  				}
 20895  				sqlite3.Xsqlite3_str_append(tls, pStr, bp+24, 1)
 20896  				if int32(*(*int8)(unsafe.Pointer(bp + 24))) == '\'' {
 20897  					sqlite3.Xsqlite3_str_append(tls, pStr, bp+24, 1)
 20898  				}
 20899  			}
 20900  			sqlite3.Xsqlite3_str_append(tls, pStr, ts+5624, 1)
 20901  			break
 20902  
 20903  		}
 20904  	case SQLITE_BLOB:
 20905  		{
 20906  			var i int32
 20907  			var a uintptr = sqlite3.Xsqlite3_value_blob(tls, pVal)
 20908  			var n int32 = sqlite3.Xsqlite3_value_bytes(tls, pVal)
 20909  			sqlite3.Xsqlite3_str_append(tls, pStr, ts+6334, 2)
 20910  			for i = 0; i < n; i++ {
 20911  				sqlite3.Xsqlite3_str_appendf(tls, pStr, ts+6337, libc.VaList(bp+16, int32(*(*uint8)(unsafe.Pointer(a + uintptr(i))))))
 20912  			}
 20913  			sqlite3.Xsqlite3_str_append(tls, pStr, ts+5624, 1)
 20914  			break
 20915  
 20916  		}
 20917  	}
 20918  }
 20919  
 20920  func qpvtabBestIndex(tls *libc.TLS, tab uintptr, pIdxInfo uintptr) int32 {
 20921  	bp := tls.Alloc(120)
 20922  	defer tls.Free(120)
 20923  
 20924  	var pStr uintptr = sqlite3.Xsqlite3_str_new(tls, uintptr(0))
 20925  	var i int32
 20926  	var k int32 = 0
 20927  	var rc int32
 20928  	_ = rc
 20929  	sqlite3.Xsqlite3_str_appendf(tls, pStr, ts+6342, libc.VaList(bp, (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnConstraint))
 20930  	for i = 0; i < (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnConstraint; i++ {
 20931  		var iCol int32 = (*sqlite3_index_constraint)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint + uintptr(i)*12)).FiColumn
 20932  		var op int32 = int32((*sqlite3_index_constraint)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint + uintptr(i)*12)).Fop)
 20933  		if iCol == QPVTAB_FLAGS && (*sqlite3_index_constraint)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint+uintptr(i)*12)).Fusable != 0 {
 20934  			*(*uintptr)(unsafe.Pointer(bp + 112)) = uintptr(0)
 20935  			rc = sqlite3.Xsqlite3_vtab_rhs_value(tls, pIdxInfo, i, bp+112)
 20936  
 20937  			if *(*uintptr)(unsafe.Pointer(bp + 112)) != 0 {
 20938  				(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxNum = sqlite3.Xsqlite3_value_int(tls, *(*uintptr)(unsafe.Pointer(bp + 112)))
 20939  				if (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxNum&0x002 != 0 {
 20940  					(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).ForderByConsumed = 1
 20941  				}
 20942  			}
 20943  		}
 20944  		if op == SQLITE_INDEX_CONSTRAINT_LIMIT ||
 20945  			op == SQLITE_INDEX_CONSTRAINT_OFFSET {
 20946  			iCol = QPVTAB_NONE
 20947  		}
 20948  		sqlite3.Xsqlite3_str_appendf(tls, pStr, ts+6362,
 20949  			libc.VaList(bp+8, i,
 20950  				azColname[iCol],
 20951  				op,
 20952  				int32((*sqlite3_index_constraint)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint+uintptr(i)*12)).Fusable)))
 20953  		*(*uintptr)(unsafe.Pointer(bp + 112)) = uintptr(0)
 20954  		rc = sqlite3.Xsqlite3_vtab_rhs_value(tls, pIdxInfo, i, bp+112)
 20955  
 20956  		if *(*uintptr)(unsafe.Pointer(bp + 112)) != 0 {
 20957  			qpvtabStrAppendValue(tls, pStr, *(*uintptr)(unsafe.Pointer(bp + 112)))
 20958  		}
 20959  		sqlite3.Xsqlite3_str_append(tls, pStr, ts+6387, 1)
 20960  	}
 20961  	for i = 0; i < (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnConstraint; i++ {
 20962  		var iCol int32 = (*sqlite3_index_constraint)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint + uintptr(i)*12)).FiColumn
 20963  		var op int32 = int32((*sqlite3_index_constraint)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint + uintptr(i)*12)).Fop)
 20964  		if op == SQLITE_INDEX_CONSTRAINT_LIMIT ||
 20965  			op == SQLITE_INDEX_CONSTRAINT_OFFSET {
 20966  			iCol = QPVTAB_NONE
 20967  		}
 20968  		if iCol >= QPVTAB_A && (*sqlite3_index_constraint)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint+uintptr(i)*12)).Fusable != 0 {
 20969  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(i)*8)).FargvIndex = libc.PreIncInt32(&k, 1)
 20970  			if iCol <= QPVTAB_FLAGS || (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxNum&0x004 != 0 {
 20971  				(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(i)*8)).Fomit = uint8(1)
 20972  			}
 20973  		}
 20974  	}
 20975  	sqlite3.Xsqlite3_str_appendf(tls, pStr, ts+6389, libc.VaList(bp+40, (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnOrderBy))
 20976  	for i = 0; i < (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnOrderBy; i++ {
 20977  		var iCol int32 = (*sqlite3_index_orderby)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaOrderBy + uintptr(i)*8)).FiColumn
 20978  		sqlite3.Xsqlite3_str_appendf(tls, pStr, ts+6406, libc.VaList(bp+48, i,
 20979  			func() uintptr {
 20980  				if iCol >= 0 {
 20981  					return azColname[iCol]
 20982  				}
 20983  				return ts + 6427
 20984  			}(),
 20985  			int32((*sqlite3_index_orderby)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaOrderBy+uintptr(i)*8)).Fdesc)))
 20986  	}
 20987  	sqlite3.Xsqlite3_str_appendf(tls, pStr, ts+6433,
 20988  		libc.VaList(bp+72, sqlite3.Xsqlite3_vtab_distinct(tls, pIdxInfo)))
 20989  	sqlite3.Xsqlite3_str_appendf(tls, pStr, ts+6463, libc.VaList(bp+80, (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxFlags))
 20990  	sqlite3.Xsqlite3_str_appendf(tls, pStr, ts+6480, libc.VaList(bp+88, int32((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FcolUsed)))
 20991  	(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = float64(10)
 20992  	(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedRows = int64(10)
 20993  	sqlite3.Xsqlite3_str_appendf(tls, pStr, ts+6496, libc.VaList(bp+96, (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxNum))
 20994  	sqlite3.Xsqlite3_str_appendf(tls, pStr, ts+6511,
 20995  		libc.VaList(bp+104, (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).ForderByConsumed))
 20996  	(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxStr = sqlite3.Xsqlite3_str_finish(tls, pStr)
 20997  	(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FneedToFreeIdxStr = 1
 20998  	return SQLITE_OK
 20999  }
 21000  
 21001  var qpvtabModule = sqlite3_module{
 21002  	FxConnect:    0,
 21003  	FxBestIndex:  0,
 21004  	FxDisconnect: 0,
 21005  	FxOpen:       0,
 21006  	FxClose:      0,
 21007  	FxFilter:     0,
 21008  	FxNext:       0,
 21009  	FxEof:        0,
 21010  	FxColumn:     0,
 21011  	FxRowid:      0,
 21012  }
 21013  
 21014  func sqlite3_qpvtab_init(tls *libc.TLS, db uintptr, pzErrMsg uintptr, pApi uintptr) int32 {
 21015  	var rc int32 = SQLITE_OK
 21016  	_ = pApi
 21017  
 21018  	rc = sqlite3.Xsqlite3_create_module(tls, db, ts+6535, uintptr(unsafe.Pointer(&qpvtabModule)), uintptr(0))
 21019  	return rc
 21020  }
 21021  
 21022  type ReStateNumber = uint16
 21023  
 21024  type ReStateSet1 = struct {
 21025  	FnState      uint32
 21026  	F__ccgo_pad1 [4]byte
 21027  	FaState      uintptr
 21028  }
 21029  
 21030  type ReStateSet = ReStateSet1
 21031  
 21032  type ReInput1 = struct {
 21033  	Fz  uintptr
 21034  	Fi  int32
 21035  	Fmx int32
 21036  }
 21037  
 21038  type ReInput = ReInput1
 21039  
 21040  type ReCompiled1 = struct {
 21041  	FsIn       ReInput
 21042  	FzErr      uintptr
 21043  	FaOp       uintptr
 21044  	FaArg      uintptr
 21045  	FxNextChar uintptr
 21046  	FzInit     [12]uint8
 21047  	FnInit     int32
 21048  	FnState    uint32
 21049  	FnAlloc    uint32
 21050  }
 21051  
 21052  type ReCompiled = ReCompiled1
 21053  
 21054  func re_add_state(tls *libc.TLS, pSet uintptr, newState int32) {
 21055  	var i uint32
 21056  	for i = uint32(0); i < (*ReStateSet)(unsafe.Pointer(pSet)).FnState; i++ {
 21057  		if int32(*(*ReStateNumber)(unsafe.Pointer((*ReStateSet)(unsafe.Pointer(pSet)).FaState + uintptr(i)*2))) == newState {
 21058  			return
 21059  		}
 21060  	}
 21061  	*(*ReStateNumber)(unsafe.Pointer((*ReStateSet)(unsafe.Pointer(pSet)).FaState + uintptr(libc.PostIncUint32(&(*ReStateSet)(unsafe.Pointer(pSet)).FnState, 1))*2)) = ReStateNumber(newState)
 21062  }
 21063  
 21064  func re_next_char(tls *libc.TLS, p uintptr) uint32 {
 21065  	var c uint32
 21066  	if (*ReInput)(unsafe.Pointer(p)).Fi >= (*ReInput)(unsafe.Pointer(p)).Fmx {
 21067  		return uint32(0)
 21068  	}
 21069  	c = uint32(*(*uint8)(unsafe.Pointer((*ReInput)(unsafe.Pointer(p)).Fz + uintptr(libc.PostIncInt32(&(*ReInput)(unsafe.Pointer(p)).Fi, 1)))))
 21070  	if c >= uint32(0x80) {
 21071  		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 {
 21072  			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)
 21073  			if c < uint32(0x80) {
 21074  				c = uint32(0xfffd)
 21075  			}
 21076  		} 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 &&
 21077  			int32(*(*uint8)(unsafe.Pointer((*ReInput)(unsafe.Pointer(p)).Fz + uintptr((*ReInput)(unsafe.Pointer(p)).Fi+1))))&0xc0 == 0x80 {
 21078  			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)
 21079  			*(*int32)(unsafe.Pointer(p + 8)) += 2
 21080  			if c <= uint32(0x7ff) || c >= uint32(0xd800) && c <= uint32(0xdfff) {
 21081  				c = uint32(0xfffd)
 21082  			}
 21083  		} 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 &&
 21084  			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 {
 21085  			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) |
 21086  				uint32(int32(*(*uint8)(unsafe.Pointer((*ReInput)(unsafe.Pointer(p)).Fz + uintptr((*ReInput)(unsafe.Pointer(p)).Fi+2))))&0x3f)
 21087  			*(*int32)(unsafe.Pointer(p + 8)) += 3
 21088  			if c <= uint32(0xffff) || c > uint32(0x10ffff) {
 21089  				c = uint32(0xfffd)
 21090  			}
 21091  		} else {
 21092  			c = uint32(0xfffd)
 21093  		}
 21094  	}
 21095  	return c
 21096  }
 21097  
 21098  func re_next_char_nocase(tls *libc.TLS, p uintptr) uint32 {
 21099  	var c uint32 = re_next_char(tls, p)
 21100  	if c >= uint32('A') && c <= uint32('Z') {
 21101  		c = c + uint32('a'-'A')
 21102  	}
 21103  	return c
 21104  }
 21105  
 21106  func re_word_char(tls *libc.TLS, c int32) int32 {
 21107  	return libc.Bool32(c >= '0' && c <= '9' || c >= 'a' && c <= 'z' ||
 21108  		c >= 'A' && c <= 'Z' || c == '_')
 21109  }
 21110  
 21111  func re_digit_char(tls *libc.TLS, c int32) int32 {
 21112  	return libc.Bool32(c >= '0' && c <= '9')
 21113  }
 21114  
 21115  func re_space_char(tls *libc.TLS, c int32) int32 {
 21116  	return libc.Bool32(c == ' ' || c == '\t' || c == '\n' || c == '\r' || c == '\v' || c == '\f')
 21117  }
 21118  
 21119  func sqlite3re_match(tls *libc.TLS, pRe uintptr, zIn uintptr, nIn int32) int32 {
 21120  	bp := tls.Alloc(248)
 21121  	defer tls.Free(248)
 21122  
 21123  	var pThis uintptr
 21124  	var pNext uintptr
 21125  
 21126  	var pToFree uintptr
 21127  	var i uint32
 21128  	var iSwap uint32
 21129  	var c int32
 21130  	var cPrev int32
 21131  	var rc int32
 21132  
 21133  	var x uint8
 21134  	var j int32
 21135  	var n int32
 21136  	var hit int32
 21137  	var x1 int32
 21138  	i = uint32(0)
 21139  	iSwap = uint32(0)
 21140  	c = RE_EOF + 1
 21141  	cPrev = 0
 21142  	rc = 0
 21143  
 21144  	(*ReInput)(unsafe.Pointer(bp + 232)).Fz = zIn
 21145  	(*ReInput)(unsafe.Pointer(bp + 232)).Fi = 0
 21146  	(*ReInput)(unsafe.Pointer(bp + 232)).Fmx = func() int32 {
 21147  		if nIn >= 0 {
 21148  			return nIn
 21149  		}
 21150  		return int32(libc.Xstrlen(tls, zIn))
 21151  	}()
 21152  
 21153  	if !((*ReCompiled)(unsafe.Pointer(pRe)).FnInit != 0) {
 21154  		goto __1
 21155  	}
 21156  	x = *(*uint8)(unsafe.Pointer(pRe + 48))
 21157  __2:
 21158  	if !((*ReInput)(unsafe.Pointer(bp+232)).Fi+(*ReCompiled)(unsafe.Pointer(pRe)).FnInit <= (*ReInput)(unsafe.Pointer(bp+232)).Fmx &&
 21159  		(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)) {
 21160  		goto __3
 21161  	}
 21162  	(*ReInput)(unsafe.Pointer(bp+232)).Fi++
 21163  	goto __2
 21164  __3:
 21165  	;
 21166  	if !((*ReInput)(unsafe.Pointer(bp+232)).Fi+(*ReCompiled)(unsafe.Pointer(pRe)).FnInit > (*ReInput)(unsafe.Pointer(bp+232)).Fmx) {
 21167  		goto __4
 21168  	}
 21169  	return 0
 21170  __4:
 21171  	;
 21172  __1:
 21173  	;
 21174  	if !(uint64((*ReCompiled)(unsafe.Pointer(pRe)).FnState) <= uint64(unsafe.Sizeof([100]ReStateNumber{}))/(uint64(unsafe.Sizeof(ReStateNumber(0)))*uint64(2))) {
 21175  		goto __5
 21176  	}
 21177  	pToFree = uintptr(0)
 21178  	(*ReStateSet)(unsafe.Pointer(bp)).FaState = bp + 32
 21179  	goto __6
 21180  __5:
 21181  	pToFree = sqlite3.Xsqlite3_malloc64(tls, uint64(unsafe.Sizeof(ReStateNumber(0)))*uint64(2)*uint64((*ReCompiled)(unsafe.Pointer(pRe)).FnState))
 21182  	if !(pToFree == uintptr(0)) {
 21183  		goto __7
 21184  	}
 21185  	return -1
 21186  __7:
 21187  	;
 21188  	(*ReStateSet)(unsafe.Pointer(bp)).FaState = pToFree
 21189  __6:
 21190  	;
 21191  	(*ReStateSet)(unsafe.Pointer(bp + 1*16)).FaState = (*ReStateSet)(unsafe.Pointer(bp)).FaState + uintptr((*ReCompiled)(unsafe.Pointer(pRe)).FnState)*2
 21192  	pNext = bp + 1*16
 21193  	(*ReStateSet)(unsafe.Pointer(pNext)).FnState = uint32(0)
 21194  	re_add_state(tls, pNext, 0)
 21195  __8:
 21196  	if !(c != RE_EOF && (*ReStateSet)(unsafe.Pointer(pNext)).FnState > uint32(0)) {
 21197  		goto __9
 21198  	}
 21199  	cPrev = c
 21200  	c = int32((*struct {
 21201  		f func(*libc.TLS, uintptr) uint32
 21202  	})(unsafe.Pointer(&struct{ uintptr }{(*ReCompiled)(unsafe.Pointer(pRe)).FxNextChar})).f(tls, bp+232))
 21203  	pThis = pNext
 21204  	pNext = bp + uintptr(iSwap)*16
 21205  	iSwap = uint32(1) - iSwap
 21206  	(*ReStateSet)(unsafe.Pointer(pNext)).FnState = uint32(0)
 21207  	i = uint32(0)
 21208  __10:
 21209  	if !(i < (*ReStateSet)(unsafe.Pointer(pThis)).FnState) {
 21210  		goto __12
 21211  	}
 21212  	x1 = int32(*(*ReStateNumber)(unsafe.Pointer((*ReStateSet)(unsafe.Pointer(pThis)).FaState + uintptr(i)*2)))
 21213  	switch int32(*(*int8)(unsafe.Pointer((*ReCompiled)(unsafe.Pointer(pRe)).FaOp + uintptr(x1)))) {
 21214  	case RE_OP_MATCH:
 21215  		goto __14
 21216  	case RE_OP_ANY:
 21217  		goto __15
 21218  	case RE_OP_WORD:
 21219  		goto __16
 21220  	case RE_OP_NOTWORD:
 21221  		goto __17
 21222  	case RE_OP_DIGIT:
 21223  		goto __18
 21224  	case RE_OP_NOTDIGIT:
 21225  		goto __19
 21226  	case RE_OP_SPACE:
 21227  		goto __20
 21228  	case RE_OP_NOTSPACE:
 21229  		goto __21
 21230  	case RE_OP_BOUNDARY:
 21231  		goto __22
 21232  	case RE_OP_ANYSTAR:
 21233  		goto __23
 21234  	case RE_OP_FORK:
 21235  		goto __24
 21236  	case RE_OP_GOTO:
 21237  		goto __25
 21238  	case RE_OP_ACCEPT:
 21239  		goto __26
 21240  	case RE_OP_CC_EXC:
 21241  		goto __27
 21242  	case RE_OP_CC_INC:
 21243  		goto __28
 21244  	}
 21245  	goto __13
 21246  __14:
 21247  	if !(*(*int32)(unsafe.Pointer((*ReCompiled)(unsafe.Pointer(pRe)).FaArg + uintptr(x1)*4)) == c) {
 21248  		goto __29
 21249  	}
 21250  	re_add_state(tls, pNext, x1+1)
 21251  __29:
 21252  	;
 21253  	goto __13
 21254  
 21255  __15:
 21256  	if !(c != 0) {
 21257  		goto __30
 21258  	}
 21259  	re_add_state(tls, pNext, x1+1)
 21260  __30:
 21261  	;
 21262  	goto __13
 21263  
 21264  __16:
 21265  	if !(re_word_char(tls, c) != 0) {
 21266  		goto __31
 21267  	}
 21268  	re_add_state(tls, pNext, x1+1)
 21269  __31:
 21270  	;
 21271  	goto __13
 21272  
 21273  __17:
 21274  	if !(!(re_word_char(tls, c) != 0) && c != 0) {
 21275  		goto __32
 21276  	}
 21277  	re_add_state(tls, pNext, x1+1)
 21278  __32:
 21279  	;
 21280  	goto __13
 21281  
 21282  __18:
 21283  	if !(re_digit_char(tls, c) != 0) {
 21284  		goto __33
 21285  	}
 21286  	re_add_state(tls, pNext, x1+1)
 21287  __33:
 21288  	;
 21289  	goto __13
 21290  
 21291  __19:
 21292  	if !(!(re_digit_char(tls, c) != 0) && c != 0) {
 21293  		goto __34
 21294  	}
 21295  	re_add_state(tls, pNext, x1+1)
 21296  __34:
 21297  	;
 21298  	goto __13
 21299  
 21300  __20:
 21301  	if !(re_space_char(tls, c) != 0) {
 21302  		goto __35
 21303  	}
 21304  	re_add_state(tls, pNext, x1+1)
 21305  __35:
 21306  	;
 21307  	goto __13
 21308  
 21309  __21:
 21310  	if !(!(re_space_char(tls, c) != 0) && c != 0) {
 21311  		goto __36
 21312  	}
 21313  	re_add_state(tls, pNext, x1+1)
 21314  __36:
 21315  	;
 21316  	goto __13
 21317  
 21318  __22:
 21319  	if !(re_word_char(tls, c) != re_word_char(tls, cPrev)) {
 21320  		goto __37
 21321  	}
 21322  	re_add_state(tls, pThis, x1+1)
 21323  __37:
 21324  	;
 21325  	goto __13
 21326  
 21327  __23:
 21328  	re_add_state(tls, pNext, x1)
 21329  	re_add_state(tls, pThis, x1+1)
 21330  	goto __13
 21331  
 21332  __24:
 21333  	re_add_state(tls, pThis, x1+*(*int32)(unsafe.Pointer((*ReCompiled)(unsafe.Pointer(pRe)).FaArg + uintptr(x1)*4)))
 21334  	re_add_state(tls, pThis, x1+1)
 21335  	goto __13
 21336  
 21337  __25:
 21338  	re_add_state(tls, pThis, x1+*(*int32)(unsafe.Pointer((*ReCompiled)(unsafe.Pointer(pRe)).FaArg + uintptr(x1)*4)))
 21339  	goto __13
 21340  
 21341  __26:
 21342  	rc = 1
 21343  	goto re_match_end
 21344  
 21345  __27:
 21346  	if !(c == 0) {
 21347  		goto __38
 21348  	}
 21349  	goto __13
 21350  __38:
 21351  	;
 21352  	goto re_op_cc_inc
 21353  
 21354  __28:
 21355  re_op_cc_inc:
 21356  	j = 1
 21357  	n = *(*int32)(unsafe.Pointer((*ReCompiled)(unsafe.Pointer(pRe)).FaArg + uintptr(x1)*4))
 21358  	hit = 0
 21359  	j = 1
 21360  __39:
 21361  	if !(j > 0 && j < n) {
 21362  		goto __41
 21363  	}
 21364  	if !(int32(*(*int8)(unsafe.Pointer((*ReCompiled)(unsafe.Pointer(pRe)).FaOp + uintptr(x1+j)))) == RE_OP_CC_VALUE) {
 21365  		goto __42
 21366  	}
 21367  	if !(*(*int32)(unsafe.Pointer((*ReCompiled)(unsafe.Pointer(pRe)).FaArg + uintptr(x1+j)*4)) == c) {
 21368  		goto __44
 21369  	}
 21370  	hit = 1
 21371  	j = -1
 21372  __44:
 21373  	;
 21374  	goto __43
 21375  __42:
 21376  	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) {
 21377  		goto __45
 21378  	}
 21379  	hit = 1
 21380  	j = -1
 21381  	goto __46
 21382  __45:
 21383  	j++
 21384  __46:
 21385  	;
 21386  __43:
 21387  	;
 21388  	goto __40
 21389  __40:
 21390  	j++
 21391  	goto __39
 21392  	goto __41
 21393  __41:
 21394  	;
 21395  	if !(int32(*(*int8)(unsafe.Pointer((*ReCompiled)(unsafe.Pointer(pRe)).FaOp + uintptr(x1)))) == RE_OP_CC_EXC) {
 21396  		goto __47
 21397  	}
 21398  	hit = libc.BoolInt32(!(hit != 0))
 21399  __47:
 21400  	;
 21401  	if !(hit != 0) {
 21402  		goto __48
 21403  	}
 21404  	re_add_state(tls, pNext, x1+n)
 21405  __48:
 21406  	;
 21407  	goto __13
 21408  
 21409  __13:
 21410  	;
 21411  	goto __11
 21412  __11:
 21413  	i++
 21414  	goto __10
 21415  	goto __12
 21416  __12:
 21417  	;
 21418  	goto __8
 21419  __9:
 21420  	;
 21421  	i = uint32(0)
 21422  __49:
 21423  	if !(i < (*ReStateSet)(unsafe.Pointer(pNext)).FnState) {
 21424  		goto __51
 21425  	}
 21426  	if !(int32(*(*int8)(unsafe.Pointer((*ReCompiled)(unsafe.Pointer(pRe)).FaOp + uintptr(*(*ReStateNumber)(unsafe.Pointer((*ReStateSet)(unsafe.Pointer(pNext)).FaState + uintptr(i)*2)))))) == RE_OP_ACCEPT) {
 21427  		goto __52
 21428  	}
 21429  	rc = 1
 21430  	goto __51
 21431  __52:
 21432  	;
 21433  	goto __50
 21434  __50:
 21435  	i++
 21436  	goto __49
 21437  	goto __51
 21438  __51:
 21439  	;
 21440  re_match_end:
 21441  	sqlite3.Xsqlite3_free(tls, pToFree)
 21442  	return rc
 21443  }
 21444  
 21445  func re_resize(tls *libc.TLS, p uintptr, N int32) int32 {
 21446  	var aOp uintptr
 21447  	var aArg uintptr
 21448  	aOp = sqlite3.Xsqlite3_realloc64(tls, (*ReCompiled)(unsafe.Pointer(p)).FaOp, uint64(N)*uint64(unsafe.Sizeof(int8(0))))
 21449  	if aOp == uintptr(0) {
 21450  		return 1
 21451  	}
 21452  	(*ReCompiled)(unsafe.Pointer(p)).FaOp = aOp
 21453  	aArg = sqlite3.Xsqlite3_realloc64(tls, (*ReCompiled)(unsafe.Pointer(p)).FaArg, uint64(N)*uint64(unsafe.Sizeof(int32(0))))
 21454  	if aArg == uintptr(0) {
 21455  		return 1
 21456  	}
 21457  	(*ReCompiled)(unsafe.Pointer(p)).FaArg = aArg
 21458  	(*ReCompiled)(unsafe.Pointer(p)).FnAlloc = uint32(N)
 21459  	return 0
 21460  }
 21461  
 21462  func re_insert(tls *libc.TLS, p uintptr, iBefore int32, op int32, arg int32) int32 {
 21463  	var i int32
 21464  	if (*ReCompiled)(unsafe.Pointer(p)).FnAlloc <= (*ReCompiled)(unsafe.Pointer(p)).FnState && re_resize(tls, p, int32((*ReCompiled)(unsafe.Pointer(p)).FnAlloc*uint32(2))) != 0 {
 21465  		return 0
 21466  	}
 21467  	for i = int32((*ReCompiled)(unsafe.Pointer(p)).FnState); i > iBefore; i-- {
 21468  		*(*int8)(unsafe.Pointer((*ReCompiled)(unsafe.Pointer(p)).FaOp + uintptr(i))) = *(*int8)(unsafe.Pointer((*ReCompiled)(unsafe.Pointer(p)).FaOp + uintptr(i-1)))
 21469  		*(*int32)(unsafe.Pointer((*ReCompiled)(unsafe.Pointer(p)).FaArg + uintptr(i)*4)) = *(*int32)(unsafe.Pointer((*ReCompiled)(unsafe.Pointer(p)).FaArg + uintptr(i-1)*4))
 21470  	}
 21471  	(*ReCompiled)(unsafe.Pointer(p)).FnState++
 21472  	*(*int8)(unsafe.Pointer((*ReCompiled)(unsafe.Pointer(p)).FaOp + uintptr(iBefore))) = int8(op)
 21473  	*(*int32)(unsafe.Pointer((*ReCompiled)(unsafe.Pointer(p)).FaArg + uintptr(iBefore)*4)) = arg
 21474  	return iBefore
 21475  }
 21476  
 21477  func re_append(tls *libc.TLS, p uintptr, op int32, arg int32) int32 {
 21478  	return re_insert(tls, p, int32((*ReCompiled)(unsafe.Pointer(p)).FnState), op, arg)
 21479  }
 21480  
 21481  func re_copy(tls *libc.TLS, p uintptr, iStart int32, N int32) {
 21482  	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 {
 21483  		return
 21484  	}
 21485  	libc.X__builtin___memcpy_chk(tls, (*ReCompiled)(unsafe.Pointer(p)).FaOp+uintptr((*ReCompiled)(unsafe.Pointer(p)).FnState), (*ReCompiled)(unsafe.Pointer(p)).FaOp+uintptr(iStart), uint64(N)*uint64(unsafe.Sizeof(int8(0))), libc.X__builtin_object_size(tls, (*ReCompiled)(unsafe.Pointer(p)).FaOp+uintptr((*ReCompiled)(unsafe.Pointer(p)).FnState), 0))
 21486  	libc.X__builtin___memcpy_chk(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))), libc.X__builtin_object_size(tls, (*ReCompiled)(unsafe.Pointer(p)).FaArg+uintptr((*ReCompiled)(unsafe.Pointer(p)).FnState)*4, 0))
 21487  	*(*uint32)(unsafe.Pointer(p + 64)) += uint32(N)
 21488  }
 21489  
 21490  func re_hex(tls *libc.TLS, c int32, pV uintptr) int32 {
 21491  	if c >= '0' && c <= '9' {
 21492  		c = c - '0'
 21493  	} else if c >= 'a' && c <= 'f' {
 21494  		c = c - ('a' - 10)
 21495  	} else if c >= 'A' && c <= 'F' {
 21496  		c = c - ('A' - 10)
 21497  	} else {
 21498  		return 0
 21499  	}
 21500  	*(*int32)(unsafe.Pointer(pV)) = *(*int32)(unsafe.Pointer(pV))*16 + c&0xff
 21501  	return 1
 21502  }
 21503  
 21504  func re_esc_char(tls *libc.TLS, p uintptr) uint32 {
 21505  	bp := tls.Alloc(4)
 21506  	defer tls.Free(4)
 21507  
 21508  	var i int32
 21509  	*(*int32)(unsafe.Pointer(bp)) = 0
 21510  	var c int8
 21511  	if (*ReCompiled)(unsafe.Pointer(p)).FsIn.Fi >= (*ReCompiled)(unsafe.Pointer(p)).FsIn.Fmx {
 21512  		return uint32(0)
 21513  	}
 21514  	c = int8(*(*uint8)(unsafe.Pointer((*ReCompiled)(unsafe.Pointer(p)).FsIn.Fz + uintptr((*ReCompiled)(unsafe.Pointer(p)).FsIn.Fi))))
 21515  	if int32(c) == 'u' && (*ReCompiled)(unsafe.Pointer(p)).FsIn.Fi+4 < (*ReCompiled)(unsafe.Pointer(p)).FsIn.Fmx {
 21516  		var zIn uintptr = (*ReCompiled)(unsafe.Pointer(p)).FsIn.Fz + uintptr((*ReCompiled)(unsafe.Pointer(p)).FsIn.Fi)
 21517  		if re_hex(tls, int32(*(*uint8)(unsafe.Pointer(zIn + 1))), bp) != 0 &&
 21518  			re_hex(tls, int32(*(*uint8)(unsafe.Pointer(zIn + 2))), bp) != 0 &&
 21519  			re_hex(tls, int32(*(*uint8)(unsafe.Pointer(zIn + 3))), bp) != 0 &&
 21520  			re_hex(tls, int32(*(*uint8)(unsafe.Pointer(zIn + 4))), bp) != 0 {
 21521  			*(*int32)(unsafe.Pointer(p + 8)) += 5
 21522  			return uint32(*(*int32)(unsafe.Pointer(bp)))
 21523  		}
 21524  	}
 21525  	if int32(c) == 'x' && (*ReCompiled)(unsafe.Pointer(p)).FsIn.Fi+2 < (*ReCompiled)(unsafe.Pointer(p)).FsIn.Fmx {
 21526  		var zIn uintptr = (*ReCompiled)(unsafe.Pointer(p)).FsIn.Fz + uintptr((*ReCompiled)(unsafe.Pointer(p)).FsIn.Fi)
 21527  		if re_hex(tls, int32(*(*uint8)(unsafe.Pointer(zIn + 1))), bp) != 0 &&
 21528  			re_hex(tls, int32(*(*uint8)(unsafe.Pointer(zIn + 2))), bp) != 0 {
 21529  			*(*int32)(unsafe.Pointer(p + 8)) += 3
 21530  			return uint32(*(*int32)(unsafe.Pointer(bp)))
 21531  		}
 21532  	}
 21533  	for i = 0; zEsc[i] != 0 && int32(zEsc[i]) != int32(c); i++ {
 21534  	}
 21535  	if zEsc[i] != 0 {
 21536  		if i < 6 {
 21537  			c = zTrans[i]
 21538  		}
 21539  		(*ReCompiled)(unsafe.Pointer(p)).FsIn.Fi++
 21540  	} else {
 21541  		(*ReCompiled)(unsafe.Pointer(p)).FzErr = ts + 6542
 21542  	}
 21543  	return uint32(c)
 21544  }
 21545  
 21546  var zEsc = *(*[21]int8)(unsafe.Pointer(ts + 6559))
 21547  var zTrans = *(*[7]int8)(unsafe.Pointer(ts + 6580))
 21548  
 21549  func rePeek(tls *libc.TLS, p uintptr) uint8 {
 21550  	if (*ReCompiled)(unsafe.Pointer(p)).FsIn.Fi < (*ReCompiled)(unsafe.Pointer(p)).FsIn.Fmx {
 21551  		return *(*uint8)(unsafe.Pointer((*ReCompiled)(unsafe.Pointer(p)).FsIn.Fz + uintptr((*ReCompiled)(unsafe.Pointer(p)).FsIn.Fi)))
 21552  	}
 21553  	return uint8(0)
 21554  }
 21555  
 21556  func re_subcompile_re(tls *libc.TLS, p uintptr) uintptr {
 21557  	var zErr uintptr
 21558  	var iStart int32
 21559  	var iEnd int32
 21560  	var iGoto int32
 21561  	iStart = int32((*ReCompiled)(unsafe.Pointer(p)).FnState)
 21562  	zErr = re_subcompile_string(tls, p)
 21563  	if zErr != 0 {
 21564  		return zErr
 21565  	}
 21566  	for int32(rePeek(tls, p)) == '|' {
 21567  		iEnd = int32((*ReCompiled)(unsafe.Pointer(p)).FnState)
 21568  		re_insert(tls, p, iStart, RE_OP_FORK, iEnd+2-iStart)
 21569  		iGoto = re_append(tls, p, RE_OP_GOTO, 0)
 21570  		(*ReCompiled)(unsafe.Pointer(p)).FsIn.Fi++
 21571  		zErr = re_subcompile_string(tls, p)
 21572  		if zErr != 0 {
 21573  			return zErr
 21574  		}
 21575  		*(*int32)(unsafe.Pointer((*ReCompiled)(unsafe.Pointer(p)).FaArg + uintptr(iGoto)*4)) = int32((*ReCompiled)(unsafe.Pointer(p)).FnState - uint32(iGoto))
 21576  	}
 21577  	return uintptr(0)
 21578  }
 21579  
 21580  func re_subcompile_string(tls *libc.TLS, p uintptr) uintptr {
 21581  	var iPrev int32 = -1
 21582  	var iStart int32
 21583  	var c uint32
 21584  	var zErr uintptr
 21585  	for libc.AssignUint32(&c, (*struct {
 21586  		f func(*libc.TLS, uintptr) uint32
 21587  	})(unsafe.Pointer(&struct{ uintptr }{(*ReCompiled)(unsafe.Pointer(p)).FxNextChar})).f(tls, p)) != uint32(0) {
 21588  		iStart = int32((*ReCompiled)(unsafe.Pointer(p)).FnState)
 21589  		switch c {
 21590  		case uint32('|'):
 21591  			fallthrough
 21592  		case uint32('$'):
 21593  			fallthrough
 21594  		case uint32(')'):
 21595  			{
 21596  				(*ReCompiled)(unsafe.Pointer(p)).FsIn.Fi--
 21597  				return uintptr(0)
 21598  
 21599  			}
 21600  		case uint32('('):
 21601  			{
 21602  				zErr = re_subcompile_re(tls, p)
 21603  				if zErr != 0 {
 21604  					return zErr
 21605  				}
 21606  				if int32(rePeek(tls, p)) != ')' {
 21607  					return ts + 6587
 21608  				}
 21609  				(*ReCompiled)(unsafe.Pointer(p)).FsIn.Fi++
 21610  				break
 21611  
 21612  			}
 21613  		case uint32('.'):
 21614  			{
 21615  				if int32(rePeek(tls, p)) == '*' {
 21616  					re_append(tls, p, RE_OP_ANYSTAR, 0)
 21617  					(*ReCompiled)(unsafe.Pointer(p)).FsIn.Fi++
 21618  				} else {
 21619  					re_append(tls, p, RE_OP_ANY, 0)
 21620  				}
 21621  				break
 21622  
 21623  			}
 21624  		case uint32('*'):
 21625  			{
 21626  				if iPrev < 0 {
 21627  					return ts + 6601
 21628  				}
 21629  				re_insert(tls, p, iPrev, RE_OP_GOTO, int32((*ReCompiled)(unsafe.Pointer(p)).FnState-uint32(iPrev)+uint32(1)))
 21630  				re_append(tls, p, RE_OP_FORK, int32(uint32(iPrev)-(*ReCompiled)(unsafe.Pointer(p)).FnState+uint32(1)))
 21631  				break
 21632  
 21633  			}
 21634  		case uint32('+'):
 21635  			{
 21636  				if iPrev < 0 {
 21637  					return ts + 6621
 21638  				}
 21639  				re_append(tls, p, RE_OP_FORK, int32(uint32(iPrev)-(*ReCompiled)(unsafe.Pointer(p)).FnState))
 21640  				break
 21641  
 21642  			}
 21643  		case uint32('?'):
 21644  			{
 21645  				if iPrev < 0 {
 21646  					return ts + 6641
 21647  				}
 21648  				re_insert(tls, p, iPrev, RE_OP_FORK, int32((*ReCompiled)(unsafe.Pointer(p)).FnState-uint32(iPrev)+uint32(1)))
 21649  				break
 21650  
 21651  			}
 21652  		case uint32('{'):
 21653  			{
 21654  				var m int32 = 0
 21655  				var n int32 = 0
 21656  				var sz int32
 21657  				var j int32
 21658  				if iPrev < 0 {
 21659  					return ts + 6661
 21660  				}
 21661  				for libc.AssignUint32(&c, uint32(rePeek(tls, p))) >= uint32('0') && c <= uint32('9') {
 21662  					m = int32(uint32(m*10) + c - uint32('0'))
 21663  					(*ReCompiled)(unsafe.Pointer(p)).FsIn.Fi++
 21664  				}
 21665  				n = m
 21666  				if c == uint32(',') {
 21667  					(*ReCompiled)(unsafe.Pointer(p)).FsIn.Fi++
 21668  					n = 0
 21669  					for libc.AssignUint32(&c, uint32(rePeek(tls, p))) >= uint32('0') && c <= uint32('9') {
 21670  						n = int32(uint32(n*10) + c - uint32('0'))
 21671  						(*ReCompiled)(unsafe.Pointer(p)).FsIn.Fi++
 21672  					}
 21673  				}
 21674  				if c != uint32('}') {
 21675  					return ts + 6685
 21676  				}
 21677  				if n > 0 && n < m {
 21678  					return ts + 6699
 21679  				}
 21680  				(*ReCompiled)(unsafe.Pointer(p)).FsIn.Fi++
 21681  				sz = int32((*ReCompiled)(unsafe.Pointer(p)).FnState - uint32(iPrev))
 21682  				if m == 0 {
 21683  					if n == 0 {
 21684  						return ts + 6724
 21685  					}
 21686  					re_insert(tls, p, iPrev, RE_OP_FORK, sz+1)
 21687  					n--
 21688  				} else {
 21689  					for j = 1; j < m; j++ {
 21690  						re_copy(tls, p, iPrev, sz)
 21691  					}
 21692  				}
 21693  				for j = m; j < n; j++ {
 21694  					re_append(tls, p, RE_OP_FORK, sz+1)
 21695  					re_copy(tls, p, iPrev, sz)
 21696  				}
 21697  				if n == 0 && m > 0 {
 21698  					re_append(tls, p, RE_OP_FORK, -sz)
 21699  				}
 21700  				break
 21701  
 21702  			}
 21703  		case uint32('['):
 21704  			{
 21705  				var iFirst int32 = int32((*ReCompiled)(unsafe.Pointer(p)).FnState)
 21706  				if int32(rePeek(tls, p)) == '^' {
 21707  					re_append(tls, p, RE_OP_CC_EXC, 0)
 21708  					(*ReCompiled)(unsafe.Pointer(p)).FsIn.Fi++
 21709  				} else {
 21710  					re_append(tls, p, RE_OP_CC_INC, 0)
 21711  				}
 21712  				for libc.AssignUint32(&c, (*struct {
 21713  					f func(*libc.TLS, uintptr) uint32
 21714  				})(unsafe.Pointer(&struct{ uintptr }{(*ReCompiled)(unsafe.Pointer(p)).FxNextChar})).f(tls, p)) != uint32(0) {
 21715  					if c == uint32('[') && int32(rePeek(tls, p)) == ':' {
 21716  						return ts + 6757
 21717  					}
 21718  					if c == uint32('\\') {
 21719  						c = re_esc_char(tls, p)
 21720  					}
 21721  					if int32(rePeek(tls, p)) == '-' {
 21722  						re_append(tls, p, RE_OP_CC_RANGE, int32(c))
 21723  						(*ReCompiled)(unsafe.Pointer(p)).FsIn.Fi++
 21724  						c = (*struct {
 21725  							f func(*libc.TLS, uintptr) uint32
 21726  						})(unsafe.Pointer(&struct{ uintptr }{(*ReCompiled)(unsafe.Pointer(p)).FxNextChar})).f(tls, p)
 21727  						if c == uint32('\\') {
 21728  							c = re_esc_char(tls, p)
 21729  						}
 21730  						re_append(tls, p, RE_OP_CC_RANGE, int32(c))
 21731  					} else {
 21732  						re_append(tls, p, RE_OP_CC_VALUE, int32(c))
 21733  					}
 21734  					if int32(rePeek(tls, p)) == ']' {
 21735  						(*ReCompiled)(unsafe.Pointer(p)).FsIn.Fi++
 21736  						break
 21737  					}
 21738  				}
 21739  				if c == uint32(0) {
 21740  					return ts + 6795
 21741  				}
 21742  				*(*int32)(unsafe.Pointer((*ReCompiled)(unsafe.Pointer(p)).FaArg + uintptr(iFirst)*4)) = int32((*ReCompiled)(unsafe.Pointer(p)).FnState - uint32(iFirst))
 21743  				break
 21744  
 21745  			}
 21746  		case uint32('\\'):
 21747  			{
 21748  				var specialOp int32 = 0
 21749  				switch int32(rePeek(tls, p)) {
 21750  				case 'b':
 21751  					specialOp = RE_OP_BOUNDARY
 21752  					break
 21753  				case 'd':
 21754  					specialOp = RE_OP_DIGIT
 21755  					break
 21756  				case 'D':
 21757  					specialOp = RE_OP_NOTDIGIT
 21758  					break
 21759  				case 's':
 21760  					specialOp = RE_OP_SPACE
 21761  					break
 21762  				case 'S':
 21763  					specialOp = RE_OP_NOTSPACE
 21764  					break
 21765  				case 'w':
 21766  					specialOp = RE_OP_WORD
 21767  					break
 21768  				case 'W':
 21769  					specialOp = RE_OP_NOTWORD
 21770  					break
 21771  				}
 21772  				if specialOp != 0 {
 21773  					(*ReCompiled)(unsafe.Pointer(p)).FsIn.Fi++
 21774  					re_append(tls, p, specialOp, 0)
 21775  				} else {
 21776  					c = re_esc_char(tls, p)
 21777  					re_append(tls, p, RE_OP_MATCH, int32(c))
 21778  				}
 21779  				break
 21780  
 21781  			}
 21782  		default:
 21783  			{
 21784  				re_append(tls, p, RE_OP_MATCH, int32(c))
 21785  				break
 21786  
 21787  			}
 21788  		}
 21789  		iPrev = iStart
 21790  	}
 21791  	return uintptr(0)
 21792  }
 21793  
 21794  func sqlite3re_free(tls *libc.TLS, pRe uintptr) {
 21795  	if pRe != 0 {
 21796  		sqlite3.Xsqlite3_free(tls, (*ReCompiled)(unsafe.Pointer(pRe)).FaOp)
 21797  		sqlite3.Xsqlite3_free(tls, (*ReCompiled)(unsafe.Pointer(pRe)).FaArg)
 21798  		sqlite3.Xsqlite3_free(tls, pRe)
 21799  	}
 21800  }
 21801  
 21802  func sqlite3re_compile(tls *libc.TLS, ppRe uintptr, zIn uintptr, noCase int32) uintptr {
 21803  	var pRe uintptr
 21804  	var zErr uintptr
 21805  	var i int32
 21806  	var j int32
 21807  
 21808  	*(*uintptr)(unsafe.Pointer(ppRe)) = uintptr(0)
 21809  	pRe = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(ReCompiled{})))
 21810  	if pRe == uintptr(0) {
 21811  		return ts + 2069
 21812  	}
 21813  	libc.X__builtin___memset_chk(tls, pRe, 0, uint64(unsafe.Sizeof(ReCompiled{})), libc.X__builtin_object_size(tls, pRe, 0))
 21814  	(*ReCompiled)(unsafe.Pointer(pRe)).FxNextChar = func() uintptr {
 21815  		if noCase != 0 {
 21816  			return *(*uintptr)(unsafe.Pointer(&struct {
 21817  				f func(*libc.TLS, uintptr) uint32
 21818  			}{re_next_char_nocase}))
 21819  		}
 21820  		return *(*uintptr)(unsafe.Pointer(&struct {
 21821  			f func(*libc.TLS, uintptr) uint32
 21822  		}{re_next_char}))
 21823  	}()
 21824  	if re_resize(tls, pRe, 30) != 0 {
 21825  		sqlite3re_free(tls, pRe)
 21826  		return ts + 2069
 21827  	}
 21828  	if int32(*(*int8)(unsafe.Pointer(zIn))) == '^' {
 21829  		zIn++
 21830  	} else {
 21831  		re_append(tls, pRe, RE_OP_ANYSTAR, 0)
 21832  	}
 21833  	(*ReCompiled)(unsafe.Pointer(pRe)).FsIn.Fz = zIn
 21834  	(*ReCompiled)(unsafe.Pointer(pRe)).FsIn.Fi = 0
 21835  	(*ReCompiled)(unsafe.Pointer(pRe)).FsIn.Fmx = int32(libc.Xstrlen(tls, zIn))
 21836  	zErr = re_subcompile_re(tls, pRe)
 21837  	if zErr != 0 {
 21838  		sqlite3re_free(tls, pRe)
 21839  		return zErr
 21840  	}
 21841  	if int32(rePeek(tls, pRe)) == '$' && (*ReCompiled)(unsafe.Pointer(pRe)).FsIn.Fi+1 >= (*ReCompiled)(unsafe.Pointer(pRe)).FsIn.Fmx {
 21842  		re_append(tls, pRe, RE_OP_MATCH, RE_EOF)
 21843  		re_append(tls, pRe, RE_OP_ACCEPT, 0)
 21844  		*(*uintptr)(unsafe.Pointer(ppRe)) = pRe
 21845  	} else if (*ReCompiled)(unsafe.Pointer(pRe)).FsIn.Fi >= (*ReCompiled)(unsafe.Pointer(pRe)).FsIn.Fmx {
 21846  		re_append(tls, pRe, RE_OP_ACCEPT, 0)
 21847  		*(*uintptr)(unsafe.Pointer(ppRe)) = pRe
 21848  	} else {
 21849  		sqlite3re_free(tls, pRe)
 21850  		return ts + 6808
 21851  	}
 21852  
 21853  	if int32(*(*int8)(unsafe.Pointer((*ReCompiled)(unsafe.Pointer(pRe)).FaOp))) == RE_OP_ANYSTAR && !(noCase != 0) {
 21854  		j = 0
 21855  		i = 1
 21856  		for ; j < int32(unsafe.Sizeof([12]uint8{}))-2 && int32(*(*int8)(unsafe.Pointer((*ReCompiled)(unsafe.Pointer(pRe)).FaOp + uintptr(i)))) == RE_OP_MATCH; i++ {
 21857  			var x uint32 = uint32(*(*int32)(unsafe.Pointer((*ReCompiled)(unsafe.Pointer(pRe)).FaArg + uintptr(i)*4)))
 21858  			if x <= uint32(127) {
 21859  				*(*uint8)(unsafe.Pointer(pRe + 48 + uintptr(libc.PostIncInt32(&j, 1)))) = uint8(x)
 21860  			} else if x <= uint32(0xfff) {
 21861  				*(*uint8)(unsafe.Pointer(pRe + 48 + uintptr(libc.PostIncInt32(&j, 1)))) = uint8(uint32(0xc0) | x>>6)
 21862  				*(*uint8)(unsafe.Pointer(pRe + 48 + uintptr(libc.PostIncInt32(&j, 1)))) = uint8(uint32(0x80) | x&uint32(0x3f))
 21863  			} else if x <= uint32(0xffff) {
 21864  				*(*uint8)(unsafe.Pointer(pRe + 48 + uintptr(libc.PostIncInt32(&j, 1)))) = uint8(uint32(0xe0) | x>>12)
 21865  				*(*uint8)(unsafe.Pointer(pRe + 48 + uintptr(libc.PostIncInt32(&j, 1)))) = uint8(uint32(0x80) | x>>6&uint32(0x3f))
 21866  				*(*uint8)(unsafe.Pointer(pRe + 48 + uintptr(libc.PostIncInt32(&j, 1)))) = uint8(uint32(0x80) | x&uint32(0x3f))
 21867  			} else {
 21868  				break
 21869  			}
 21870  		}
 21871  		if j > 0 && int32(*(*uint8)(unsafe.Pointer(pRe + 48 + uintptr(j-1)))) == 0 {
 21872  			j--
 21873  		}
 21874  		(*ReCompiled)(unsafe.Pointer(pRe)).FnInit = j
 21875  	}
 21876  	return (*ReCompiled)(unsafe.Pointer(pRe)).FzErr
 21877  }
 21878  
 21879  func re_sql_func(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 21880  	bp := tls.Alloc(8)
 21881  	defer tls.Free(8)
 21882  
 21883  	var zPattern uintptr
 21884  	var zStr uintptr
 21885  	var zErr uintptr
 21886  	var setAux int32 = 0
 21887  
 21888  	_ = argc
 21889  	*(*uintptr)(unsafe.Pointer(bp)) = sqlite3.Xsqlite3_get_auxdata(tls, context, 0)
 21890  	if *(*uintptr)(unsafe.Pointer(bp)) == uintptr(0) {
 21891  		zPattern = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 21892  		if zPattern == uintptr(0) {
 21893  			return
 21894  		}
 21895  		zErr = sqlite3re_compile(tls, bp, zPattern, libc.Bool32(sqlite3.Xsqlite3_user_data(tls, context) != uintptr(0)))
 21896  		if zErr != 0 {
 21897  			sqlite3re_free(tls, *(*uintptr)(unsafe.Pointer(bp)))
 21898  			sqlite3.Xsqlite3_result_error(tls, context, zErr, -1)
 21899  			return
 21900  		}
 21901  		if *(*uintptr)(unsafe.Pointer(bp)) == uintptr(0) {
 21902  			sqlite3.Xsqlite3_result_error_nomem(tls, context)
 21903  			return
 21904  		}
 21905  		setAux = 1
 21906  	}
 21907  	zStr = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 21908  	if zStr != uintptr(0) {
 21909  		sqlite3.Xsqlite3_result_int(tls, context, sqlite3re_match(tls, *(*uintptr)(unsafe.Pointer(bp)), zStr, -1))
 21910  	}
 21911  	if setAux != 0 {
 21912  		sqlite3.Xsqlite3_set_auxdata(tls, context, 0, *(*uintptr)(unsafe.Pointer(bp)), *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{sqlite3re_free})))
 21913  	}
 21914  }
 21915  
 21916  func sqlite3_regexp_init(tls *libc.TLS, db uintptr, pzErrMsg uintptr, pApi uintptr) int32 {
 21917  	var rc int32 = SQLITE_OK
 21918  	_ = pApi
 21919  
 21920  	_ = pzErrMsg
 21921  	rc = sqlite3.Xsqlite3_create_function(tls, db, ts+6831, 2,
 21922  		SQLITE_UTF8|SQLITE_INNOCUOUS|SQLITE_DETERMINISTIC,
 21923  		uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 21924  			f func(*libc.TLS, uintptr, int32, uintptr)
 21925  		}{re_sql_func})), uintptr(0), uintptr(0))
 21926  	if rc == SQLITE_OK {
 21927  		rc = sqlite3.Xsqlite3_create_function(tls, db, ts+6838, 2,
 21928  			SQLITE_UTF8|SQLITE_INNOCUOUS|SQLITE_DETERMINISTIC,
 21929  			db, *(*uintptr)(unsafe.Pointer(&struct {
 21930  				f func(*libc.TLS, uintptr, int32, uintptr)
 21931  			}{re_sql_func})), uintptr(0), uintptr(0))
 21932  	}
 21933  	return rc
 21934  }
 21935  
 21936  func rememberFunc(tls *libc.TLS, pCtx uintptr, argc int32, argv uintptr) {
 21937  	var v sqlite3_int64
 21938  	var ptr uintptr
 21939  
 21940  	v = sqlite3.Xsqlite3_value_int64(tls, *(*uintptr)(unsafe.Pointer(argv)))
 21941  	ptr = sqlite3.Xsqlite3_value_pointer(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)), ts+4060)
 21942  	if ptr != 0 {
 21943  		*(*sqlite3_int64)(unsafe.Pointer(ptr)) = v
 21944  	}
 21945  	sqlite3.Xsqlite3_result_int64(tls, pCtx, v)
 21946  }
 21947  
 21948  func sqlite3_remember_init(tls *libc.TLS, db uintptr, pzErrMsg uintptr, pApi uintptr) int32 {
 21949  	var rc int32 = SQLITE_OK
 21950  	_ = pApi
 21951  
 21952  	rc = sqlite3.Xsqlite3_create_function(tls, db, ts+6846, 2, SQLITE_UTF8, uintptr(0),
 21953  		*(*uintptr)(unsafe.Pointer(&struct {
 21954  			f func(*libc.TLS, uintptr, int32, uintptr)
 21955  		}{rememberFunc})), uintptr(0), uintptr(0))
 21956  	return rc
 21957  }
 21958  
 21959  type series_cursor1 = struct {
 21960  	Fbase        sqlite3_vtab_cursor
 21961  	FisDesc      int32
 21962  	F__ccgo_pad1 [4]byte
 21963  	FiRowid      sqlite3_int64
 21964  	FiValue      sqlite3_int64
 21965  	FmnValue     sqlite3_int64
 21966  	FmxValue     sqlite3_int64
 21967  	FiStep       sqlite3_int64
 21968  }
 21969  
 21970  type series_cursor = series_cursor1
 21971  
 21972  func seriesConnect(tls *libc.TLS, db uintptr, pUnused uintptr, argcUnused int32, argvUnused uintptr, ppVtab uintptr, pzErrUnused uintptr) int32 {
 21973  	var pNew uintptr
 21974  	var rc int32
 21975  
 21976  	_ = pUnused
 21977  	_ = argcUnused
 21978  	_ = argvUnused
 21979  	_ = pzErrUnused
 21980  	rc = sqlite3.Xsqlite3_declare_vtab(tls, db,
 21981  		ts+6855)
 21982  	if rc == SQLITE_OK {
 21983  		pNew = libc.AssignPtrUintptr(ppVtab, sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(sqlite3_vtab{}))))
 21984  		if pNew == uintptr(0) {
 21985  			return SQLITE_NOMEM
 21986  		}
 21987  		libc.X__builtin___memset_chk(tls, pNew, 0, uint64(unsafe.Sizeof(sqlite3_vtab{})), libc.X__builtin_object_size(tls, pNew, 0))
 21988  		sqlite3.Xsqlite3_vtab_config(tls, db, SQLITE_VTAB_INNOCUOUS, 0)
 21989  	}
 21990  	return rc
 21991  }
 21992  
 21993  func seriesDisconnect(tls *libc.TLS, pVtab uintptr) int32 {
 21994  	sqlite3.Xsqlite3_free(tls, pVtab)
 21995  	return SQLITE_OK
 21996  }
 21997  
 21998  func seriesOpen(tls *libc.TLS, pUnused uintptr, ppCursor uintptr) int32 {
 21999  	var pCur uintptr
 22000  	_ = pUnused
 22001  	pCur = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(series_cursor{})))
 22002  	if pCur == uintptr(0) {
 22003  		return SQLITE_NOMEM
 22004  	}
 22005  	libc.X__builtin___memset_chk(tls, pCur, 0, uint64(unsafe.Sizeof(series_cursor{})), libc.X__builtin_object_size(tls, pCur, 0))
 22006  	*(*uintptr)(unsafe.Pointer(ppCursor)) = pCur
 22007  	return SQLITE_OK
 22008  }
 22009  
 22010  func seriesClose(tls *libc.TLS, cur uintptr) int32 {
 22011  	sqlite3.Xsqlite3_free(tls, cur)
 22012  	return SQLITE_OK
 22013  }
 22014  
 22015  func seriesNext(tls *libc.TLS, cur uintptr) int32 {
 22016  	var pCur uintptr = cur
 22017  	if (*series_cursor)(unsafe.Pointer(pCur)).FisDesc != 0 {
 22018  		*(*sqlite3_int64)(unsafe.Pointer(pCur + 24)) -= (*series_cursor)(unsafe.Pointer(pCur)).FiStep
 22019  	} else {
 22020  		*(*sqlite3_int64)(unsafe.Pointer(pCur + 24)) += (*series_cursor)(unsafe.Pointer(pCur)).FiStep
 22021  	}
 22022  	(*series_cursor)(unsafe.Pointer(pCur)).FiRowid++
 22023  	return SQLITE_OK
 22024  }
 22025  
 22026  func seriesColumn(tls *libc.TLS, cur uintptr, ctx uintptr, i int32) int32 {
 22027  	var pCur uintptr = cur
 22028  	var x sqlite3_int64 = int64(0)
 22029  	switch i {
 22030  	case SERIES_COLUMN_START:
 22031  		x = (*series_cursor)(unsafe.Pointer(pCur)).FmnValue
 22032  		break
 22033  	case SERIES_COLUMN_STOP:
 22034  		x = (*series_cursor)(unsafe.Pointer(pCur)).FmxValue
 22035  		break
 22036  	case SERIES_COLUMN_STEP:
 22037  		x = (*series_cursor)(unsafe.Pointer(pCur)).FiStep
 22038  		break
 22039  	default:
 22040  		x = (*series_cursor)(unsafe.Pointer(pCur)).FiValue
 22041  		break
 22042  	}
 22043  	sqlite3.Xsqlite3_result_int64(tls, ctx, x)
 22044  	return SQLITE_OK
 22045  }
 22046  
 22047  func seriesRowid(tls *libc.TLS, cur uintptr, pRowid uintptr) int32 {
 22048  	var pCur uintptr = cur
 22049  	*(*sqlite_int64)(unsafe.Pointer(pRowid)) = (*series_cursor)(unsafe.Pointer(pCur)).FiRowid
 22050  	return SQLITE_OK
 22051  }
 22052  
 22053  func seriesEof(tls *libc.TLS, cur uintptr) int32 {
 22054  	var pCur uintptr = cur
 22055  	if (*series_cursor)(unsafe.Pointer(pCur)).FisDesc != 0 {
 22056  		return libc.Bool32((*series_cursor)(unsafe.Pointer(pCur)).FiValue < (*series_cursor)(unsafe.Pointer(pCur)).FmnValue)
 22057  	} else {
 22058  		return libc.Bool32((*series_cursor)(unsafe.Pointer(pCur)).FiValue > (*series_cursor)(unsafe.Pointer(pCur)).FmxValue)
 22059  	}
 22060  	return int32(0)
 22061  }
 22062  
 22063  func seriesFilter(tls *libc.TLS, pVtabCursor uintptr, idxNum int32, idxStrUnused uintptr, argc int32, argv uintptr) int32 {
 22064  	var pCur uintptr = pVtabCursor
 22065  	var i int32 = 0
 22066  	_ = idxStrUnused
 22067  	if idxNum&1 != 0 {
 22068  		(*series_cursor)(unsafe.Pointer(pCur)).FmnValue = sqlite3.Xsqlite3_value_int64(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(libc.PostIncInt32(&i, 1))*8)))
 22069  	} else {
 22070  		(*series_cursor)(unsafe.Pointer(pCur)).FmnValue = int64(0)
 22071  	}
 22072  	if idxNum&2 != 0 {
 22073  		(*series_cursor)(unsafe.Pointer(pCur)).FmxValue = sqlite3.Xsqlite3_value_int64(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(libc.PostIncInt32(&i, 1))*8)))
 22074  	} else {
 22075  		(*series_cursor)(unsafe.Pointer(pCur)).FmxValue = int64(0xffffffff)
 22076  	}
 22077  	if idxNum&4 != 0 {
 22078  		(*series_cursor)(unsafe.Pointer(pCur)).FiStep = sqlite3.Xsqlite3_value_int64(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(libc.PostIncInt32(&i, 1))*8)))
 22079  		if (*series_cursor)(unsafe.Pointer(pCur)).FiStep == int64(0) {
 22080  			(*series_cursor)(unsafe.Pointer(pCur)).FiStep = int64(1)
 22081  		} else if (*series_cursor)(unsafe.Pointer(pCur)).FiStep < int64(0) {
 22082  			(*series_cursor)(unsafe.Pointer(pCur)).FiStep = -(*series_cursor)(unsafe.Pointer(pCur)).FiStep
 22083  			if idxNum&16 == 0 {
 22084  				idxNum = idxNum | 8
 22085  			}
 22086  		}
 22087  	} else {
 22088  		(*series_cursor)(unsafe.Pointer(pCur)).FiStep = int64(1)
 22089  	}
 22090  	for i = 0; i < argc; i++ {
 22091  		if sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8))) == SQLITE_NULL {
 22092  			(*series_cursor)(unsafe.Pointer(pCur)).FmnValue = int64(1)
 22093  			(*series_cursor)(unsafe.Pointer(pCur)).FmxValue = int64(0)
 22094  			break
 22095  		}
 22096  	}
 22097  	if idxNum&8 != 0 {
 22098  		(*series_cursor)(unsafe.Pointer(pCur)).FisDesc = 1
 22099  		(*series_cursor)(unsafe.Pointer(pCur)).FiValue = (*series_cursor)(unsafe.Pointer(pCur)).FmxValue
 22100  		if (*series_cursor)(unsafe.Pointer(pCur)).FiStep > int64(0) {
 22101  			*(*sqlite3_int64)(unsafe.Pointer(pCur + 24)) -= ((*series_cursor)(unsafe.Pointer(pCur)).FmxValue - (*series_cursor)(unsafe.Pointer(pCur)).FmnValue) % (*series_cursor)(unsafe.Pointer(pCur)).FiStep
 22102  		}
 22103  	} else {
 22104  		(*series_cursor)(unsafe.Pointer(pCur)).FisDesc = 0
 22105  		(*series_cursor)(unsafe.Pointer(pCur)).FiValue = (*series_cursor)(unsafe.Pointer(pCur)).FmnValue
 22106  	}
 22107  	(*series_cursor)(unsafe.Pointer(pCur)).FiRowid = int64(1)
 22108  	return SQLITE_OK
 22109  }
 22110  
 22111  func seriesBestIndex(tls *libc.TLS, pVTab uintptr, pIdxInfo uintptr) int32 {
 22112  	bp := tls.Alloc(12)
 22113  	defer tls.Free(12)
 22114  
 22115  	var i int32
 22116  	var j int32
 22117  	var idxNum int32 = 0
 22118  	var bStartSeen int32 = 0
 22119  	var unusableMask int32 = 0
 22120  	var nArg int32 = 0
 22121  
 22122  	var pConstraint uintptr
 22123  
 22124  	*(*int32)(unsafe.Pointer(bp)) = libc.AssignPtrInt32(bp+1*4, libc.AssignPtrInt32(bp+2*4, -1))
 22125  	pConstraint = (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint
 22126  	i = 0
 22127  __1:
 22128  	if !(i < (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnConstraint) {
 22129  		goto __3
 22130  	}
 22131  	{
 22132  		var iCol int32
 22133  		var iMask int32
 22134  		if (*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).FiColumn < SERIES_COLUMN_START {
 22135  			goto __2
 22136  		}
 22137  		iCol = (*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).FiColumn - SERIES_COLUMN_START
 22138  
 22139  		iMask = int32(1) << iCol
 22140  		if iCol == 0 {
 22141  			bStartSeen = 1
 22142  		}
 22143  		if int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fusable) == 0 {
 22144  			unusableMask = unusableMask | iMask
 22145  			goto __2
 22146  		} else if int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_EQ {
 22147  			idxNum = idxNum | iMask
 22148  			*(*int32)(unsafe.Pointer(bp + uintptr(iCol)*4)) = i
 22149  		}
 22150  
 22151  	}
 22152  	goto __2
 22153  __2:
 22154  	i++
 22155  	pConstraint += 12
 22156  	goto __1
 22157  	goto __3
 22158  __3:
 22159  	;
 22160  	for i = 0; i < 3; i++ {
 22161  		if libc.AssignInt32(&j, *(*int32)(unsafe.Pointer(bp + uintptr(i)*4))) >= 0 {
 22162  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(j)*8)).FargvIndex = libc.PreIncInt32(&nArg, 1)
 22163  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(j)*8)).Fomit = libc.BoolUint8(!(1 != 0))
 22164  		}
 22165  	}
 22166  
 22167  	if !(bStartSeen != 0) {
 22168  		sqlite3.Xsqlite3_free(tls, (*sqlite3_vtab)(unsafe.Pointer(pVTab)).FzErrMsg)
 22169  		(*sqlite3_vtab)(unsafe.Pointer(pVTab)).FzErrMsg = sqlite3.Xsqlite3_mprintf(tls,
 22170  			ts+6914, 0)
 22171  		return SQLITE_ERROR
 22172  	}
 22173  	if unusableMask & ^idxNum != 0 {
 22174  		return SQLITE_CONSTRAINT
 22175  	}
 22176  	if idxNum&3 == 3 {
 22177  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = float64(2 - libc.Bool32(idxNum&4 != 0))
 22178  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedRows = int64(1000)
 22179  		if (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnOrderBy >= 1 && (*sqlite3_index_orderby)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaOrderBy)).FiColumn == 0 {
 22180  			if (*sqlite3_index_orderby)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaOrderBy)).Fdesc != 0 {
 22181  				idxNum = idxNum | 8
 22182  			} else {
 22183  				idxNum = idxNum | 16
 22184  			}
 22185  			(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).ForderByConsumed = 1
 22186  		}
 22187  	} else {
 22188  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedRows = int64(2147483647)
 22189  	}
 22190  	(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxNum = idxNum
 22191  	return SQLITE_OK
 22192  }
 22193  
 22194  var seriesModule = sqlite3_module{
 22195  	FxConnect:    0,
 22196  	FxBestIndex:  0,
 22197  	FxDisconnect: 0,
 22198  	FxOpen:       0,
 22199  	FxClose:      0,
 22200  	FxFilter:     0,
 22201  	FxNext:       0,
 22202  	FxEof:        0,
 22203  	FxColumn:     0,
 22204  	FxRowid:      0,
 22205  }
 22206  
 22207  func sqlite3_series_init(tls *libc.TLS, db uintptr, pzErrMsg uintptr, pApi uintptr) int32 {
 22208  	var rc int32 = SQLITE_OK
 22209  	_ = pApi
 22210  
 22211  	if sqlite3.Xsqlite3_libversion_number(tls) < 3008012 && pzErrMsg != uintptr(0) {
 22212  		*(*uintptr)(unsafe.Pointer(pzErrMsg)) = sqlite3.Xsqlite3_mprintf(tls,
 22213  			ts+6972, 0)
 22214  		return SQLITE_ERROR
 22215  	}
 22216  	rc = sqlite3.Xsqlite3_create_module(tls, db, ts+7022, uintptr(unsafe.Pointer(&seriesModule)), uintptr(0))
 22217  	return rc
 22218  }
 22219  
 22220  type u16 = uint16
 22221  
 22222  var midClass = [128]uint8{
 22223  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 22224  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 22225  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 22226  	uint8(CCLASS_SPACE), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 22227  	uint8(CCLASS_SPACE), uint8(CCLASS_SPACE), uint8(CCLASS_OTHER),
 22228  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 22229  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 22230  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 22231  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 22232  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 22233  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_SPACE),
 22234  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 22235  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 22236  	uint8(CCLASS_SILENT), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 22237  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 22238  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 22239  	uint8(CCLASS_DIGIT), uint8(CCLASS_DIGIT), uint8(CCLASS_DIGIT),
 22240  	uint8(CCLASS_DIGIT), uint8(CCLASS_DIGIT), uint8(CCLASS_DIGIT),
 22241  	uint8(CCLASS_DIGIT), uint8(CCLASS_DIGIT), uint8(CCLASS_DIGIT),
 22242  	uint8(CCLASS_DIGIT), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 22243  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 22244  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_VOWEL),
 22245  	uint8(CCLASS_B), uint8(CCLASS_C), uint8(CCLASS_D),
 22246  	uint8(CCLASS_VOWEL), uint8(CCLASS_B), uint8(CCLASS_C),
 22247  	uint8(CCLASS_SILENT), uint8(CCLASS_VOWEL), uint8(CCLASS_C),
 22248  	uint8(CCLASS_C), uint8(CCLASS_L), uint8(CCLASS_M),
 22249  	uint8(CCLASS_M), uint8(CCLASS_VOWEL), uint8(CCLASS_B),
 22250  	uint8(CCLASS_C), uint8(CCLASS_R), uint8(CCLASS_C),
 22251  	uint8(CCLASS_D), uint8(CCLASS_VOWEL), uint8(CCLASS_B),
 22252  	uint8(CCLASS_B), uint8(CCLASS_C), uint8(CCLASS_VOWEL),
 22253  	uint8(CCLASS_C), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 22254  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 22255  	uint8(CCLASS_OTHER), uint8(CCLASS_VOWEL), uint8(CCLASS_B),
 22256  	uint8(CCLASS_C), uint8(CCLASS_D), uint8(CCLASS_VOWEL),
 22257  	uint8(CCLASS_B), uint8(CCLASS_C), uint8(CCLASS_SILENT),
 22258  	uint8(CCLASS_VOWEL), uint8(CCLASS_C), uint8(CCLASS_C),
 22259  	uint8(CCLASS_L), uint8(CCLASS_M), uint8(CCLASS_M),
 22260  	uint8(CCLASS_VOWEL), uint8(CCLASS_B), uint8(CCLASS_C),
 22261  	uint8(CCLASS_R), uint8(CCLASS_C), uint8(CCLASS_D),
 22262  	uint8(CCLASS_VOWEL), uint8(CCLASS_B), uint8(CCLASS_B),
 22263  	uint8(CCLASS_C), uint8(CCLASS_VOWEL), uint8(CCLASS_C),
 22264  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 22265  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 22266  }
 22267  
 22268  var initClass = [128]uint8{
 22269  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 22270  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 22271  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 22272  	uint8(CCLASS_SPACE), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 22273  	uint8(CCLASS_SPACE), uint8(CCLASS_SPACE), uint8(CCLASS_OTHER),
 22274  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 22275  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 22276  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 22277  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 22278  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 22279  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_SPACE),
 22280  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 22281  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 22282  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 22283  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 22284  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 22285  	uint8(CCLASS_DIGIT), uint8(CCLASS_DIGIT), uint8(CCLASS_DIGIT),
 22286  	uint8(CCLASS_DIGIT), uint8(CCLASS_DIGIT), uint8(CCLASS_DIGIT),
 22287  	uint8(CCLASS_DIGIT), uint8(CCLASS_DIGIT), uint8(CCLASS_DIGIT),
 22288  	uint8(CCLASS_DIGIT), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 22289  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 22290  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_VOWEL),
 22291  	uint8(CCLASS_B), uint8(CCLASS_C), uint8(CCLASS_D),
 22292  	uint8(CCLASS_VOWEL), uint8(CCLASS_B), uint8(CCLASS_C),
 22293  	uint8(CCLASS_SILENT), uint8(CCLASS_VOWEL), uint8(CCLASS_C),
 22294  	uint8(CCLASS_C), uint8(CCLASS_L), uint8(CCLASS_M),
 22295  	uint8(CCLASS_M), uint8(CCLASS_VOWEL), uint8(CCLASS_B),
 22296  	uint8(CCLASS_C), uint8(CCLASS_R), uint8(CCLASS_C),
 22297  	uint8(CCLASS_D), uint8(CCLASS_VOWEL), uint8(CCLASS_B),
 22298  	uint8(CCLASS_B), uint8(CCLASS_C), uint8(CCLASS_Y),
 22299  	uint8(CCLASS_C), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 22300  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 22301  	uint8(CCLASS_OTHER), uint8(CCLASS_VOWEL), uint8(CCLASS_B),
 22302  	uint8(CCLASS_C), uint8(CCLASS_D), uint8(CCLASS_VOWEL),
 22303  	uint8(CCLASS_B), uint8(CCLASS_C), uint8(CCLASS_SILENT),
 22304  	uint8(CCLASS_VOWEL), uint8(CCLASS_C), uint8(CCLASS_C),
 22305  	uint8(CCLASS_L), uint8(CCLASS_M), uint8(CCLASS_M),
 22306  	uint8(CCLASS_VOWEL), uint8(CCLASS_B), uint8(CCLASS_C),
 22307  	uint8(CCLASS_R), uint8(CCLASS_C), uint8(CCLASS_D),
 22308  	uint8(CCLASS_VOWEL), uint8(CCLASS_B), uint8(CCLASS_B),
 22309  	uint8(CCLASS_C), uint8(CCLASS_Y), uint8(CCLASS_C),
 22310  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 22311  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 22312  }
 22313  
 22314  var className = *(*[14]uint8)(unsafe.Pointer(ts + 7038))
 22315  
 22316  func phoneticHash(tls *libc.TLS, zIn uintptr, nIn int32) uintptr {
 22317  	var zOut uintptr = sqlite3.Xsqlite3_malloc64(tls, uint64(nIn+1))
 22318  	var i int32
 22319  	var nOut int32 = 0
 22320  	var cPrev int8 = int8(0x77)
 22321  	var cPrevX int8 = int8(0x77)
 22322  	var aClass uintptr = uintptr(unsafe.Pointer(&initClass))
 22323  
 22324  	if zOut == uintptr(0) {
 22325  		return uintptr(0)
 22326  	}
 22327  	if nIn > 2 {
 22328  		switch int32(*(*uint8)(unsafe.Pointer(zIn))) {
 22329  		case 'g':
 22330  			fallthrough
 22331  		case 'k':
 22332  			{
 22333  				if int32(*(*uint8)(unsafe.Pointer(zIn + 1))) == 'n' {
 22334  					zIn++
 22335  					nIn--
 22336  				}
 22337  				break
 22338  
 22339  			}
 22340  		}
 22341  	}
 22342  	for i = 0; i < nIn; i++ {
 22343  		var c uint8 = *(*uint8)(unsafe.Pointer(zIn + uintptr(i)))
 22344  		if i+1 < nIn {
 22345  			if int32(c) == 'w' && int32(*(*uint8)(unsafe.Pointer(zIn + uintptr(i+1)))) == 'r' {
 22346  				continue
 22347  			}
 22348  			if int32(c) == 'd' && (int32(*(*uint8)(unsafe.Pointer(zIn + uintptr(i+1)))) == 'j' || int32(*(*uint8)(unsafe.Pointer(zIn + uintptr(i+1)))) == 'g') {
 22349  				continue
 22350  			}
 22351  			if i+2 < nIn {
 22352  				if int32(c) == 't' && int32(*(*uint8)(unsafe.Pointer(zIn + uintptr(i+1)))) == 'c' && int32(*(*uint8)(unsafe.Pointer(zIn + uintptr(i+2)))) == 'h' {
 22353  					continue
 22354  				}
 22355  			}
 22356  		}
 22357  		c = *(*uint8)(unsafe.Pointer(aClass + uintptr(int32(c)&0x7f)))
 22358  		if int32(c) == CCLASS_SPACE {
 22359  			continue
 22360  		}
 22361  		if int32(c) == CCLASS_OTHER && int32(cPrev) != CCLASS_DIGIT {
 22362  			continue
 22363  		}
 22364  		aClass = uintptr(unsafe.Pointer(&midClass))
 22365  		if int32(c) == CCLASS_VOWEL && (int32(cPrevX) == CCLASS_R || int32(cPrevX) == CCLASS_L) {
 22366  			continue
 22367  		}
 22368  		if (int32(c) == CCLASS_R || int32(c) == CCLASS_L) && int32(cPrevX) == CCLASS_VOWEL {
 22369  			nOut--
 22370  		}
 22371  		cPrev = int8(c)
 22372  		if int32(c) == CCLASS_SILENT {
 22373  			continue
 22374  		}
 22375  		cPrevX = int8(c)
 22376  		c = className[c]
 22377  
 22378  		if nOut == 0 || int32(c) != int32(*(*uint8)(unsafe.Pointer(zOut + uintptr(nOut-1)))) {
 22379  			*(*uint8)(unsafe.Pointer(zOut + uintptr(libc.PostIncInt32(&nOut, 1)))) = c
 22380  		}
 22381  	}
 22382  	*(*uint8)(unsafe.Pointer(zOut + uintptr(nOut))) = uint8(0)
 22383  	return zOut
 22384  }
 22385  
 22386  func phoneticHashSqlFunc(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 22387  	var zIn uintptr
 22388  	var zOut uintptr
 22389  
 22390  	zIn = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 22391  	if zIn == uintptr(0) {
 22392  		return
 22393  	}
 22394  	zOut = phoneticHash(tls, zIn, sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(argv))))
 22395  	if zOut == uintptr(0) {
 22396  		sqlite3.Xsqlite3_result_error_nomem(tls, context)
 22397  	} else {
 22398  		sqlite3.Xsqlite3_result_text(tls, context, zOut, -1, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{sqlite3.Xsqlite3_free})))
 22399  	}
 22400  }
 22401  
 22402  func characterClass(tls *libc.TLS, cPrev int8, c int8) int8 {
 22403  	if int32(cPrev) == 0 {
 22404  		return int8(initClass[int32(c)&0x7f])
 22405  	}
 22406  	return int8(midClass[int32(c)&0x7f])
 22407  }
 22408  
 22409  func insertOrDeleteCost(tls *libc.TLS, cPrev int8, c int8, cNext int8) int32 {
 22410  	var classC int8 = characterClass(tls, cPrev, c)
 22411  	var classCprev int8
 22412  
 22413  	if int32(classC) == CCLASS_SILENT {
 22414  		return 1
 22415  	}
 22416  	if int32(cPrev) == int32(c) {
 22417  		return 10
 22418  	}
 22419  	if int32(classC) == CCLASS_VOWEL && (int32(cPrev) == 'r' || int32(cNext) == 'r') {
 22420  		return 20
 22421  	}
 22422  	classCprev = characterClass(tls, cPrev, cPrev)
 22423  	if int32(classC) == int32(classCprev) {
 22424  		if int32(classC) == CCLASS_VOWEL {
 22425  			return 15
 22426  		} else {
 22427  			return 50
 22428  		}
 22429  	}
 22430  
 22431  	return 100
 22432  }
 22433  
 22434  func substituteCost(tls *libc.TLS, cPrev int8, cFrom int8, cTo int8) int32 {
 22435  	var classFrom int8
 22436  	var classTo int8
 22437  	if int32(cFrom) == int32(cTo) {
 22438  		return 0
 22439  	}
 22440  	if int32(cFrom) == int32(cTo)^0x20 && (int32(cTo) >= 'A' && int32(cTo) <= 'Z' || int32(cTo) >= 'a' && int32(cTo) <= 'z') {
 22441  		return 0
 22442  	}
 22443  	classFrom = characterClass(tls, cPrev, cFrom)
 22444  	classTo = characterClass(tls, cPrev, cTo)
 22445  	if int32(classFrom) == int32(classTo) {
 22446  		return 40
 22447  	}
 22448  	if int32(classFrom) >= CCLASS_B && int32(classFrom) <= CCLASS_Y &&
 22449  		int32(classTo) >= CCLASS_B && int32(classTo) <= CCLASS_Y {
 22450  		return 75
 22451  	}
 22452  
 22453  	return 100
 22454  }
 22455  
 22456  func editdist1(tls *libc.TLS, zA uintptr, zB uintptr, pnMatch uintptr) int32 {
 22457  	bp := tls.Alloc(300)
 22458  	defer tls.Free(300)
 22459  
 22460  	var nA int32
 22461  	var nB int32
 22462  	var xA int32
 22463  	var xB int32
 22464  	var cA int8 = int8(0)
 22465  	var cB int8
 22466  	var cAprev int8
 22467  	var cBprev int8
 22468  	var cAnext int8
 22469  	var cBnext int8
 22470  	var d int32
 22471  	var dc int32 = 0
 22472  	var res int32
 22473  	var m uintptr
 22474  	var cx uintptr
 22475  	var toFree uintptr = uintptr(0)
 22476  	var nMatch int32 = 0
 22477  
 22478  	if zA == uintptr(0) || zB == uintptr(0) {
 22479  		return -1
 22480  	}
 22481  
 22482  	for *(*int8)(unsafe.Pointer(zA)) != 0 && int32(*(*int8)(unsafe.Pointer(zA))) == int32(*(*int8)(unsafe.Pointer(zB))) {
 22483  		dc = int32(*(*int8)(unsafe.Pointer(zA)))
 22484  		zA++
 22485  		zB++
 22486  		nMatch++
 22487  	}
 22488  	if pnMatch != 0 {
 22489  		*(*int32)(unsafe.Pointer(pnMatch)) = nMatch
 22490  	}
 22491  	if int32(*(*int8)(unsafe.Pointer(zA))) == 0 && int32(*(*int8)(unsafe.Pointer(zB))) == 0 {
 22492  		return 0
 22493  	}
 22494  
 22495  	for nA = 0; *(*int8)(unsafe.Pointer(zA + uintptr(nA))) != 0; nA++ {
 22496  		if int32(*(*int8)(unsafe.Pointer(zA + uintptr(nA))))&0x80 != 0 {
 22497  			return -2
 22498  		}
 22499  	}
 22500  	for nB = 0; *(*int8)(unsafe.Pointer(zB + uintptr(nB))) != 0; nB++ {
 22501  		if int32(*(*int8)(unsafe.Pointer(zB + uintptr(nB))))&0x80 != 0 {
 22502  			return -2
 22503  		}
 22504  	}
 22505  
 22506  	if nA == 0 {
 22507  		cBprev = int8(dc)
 22508  		for xB = libc.AssignInt32(&res, 0); int32(libc.AssignInt8(&cB, *(*int8)(unsafe.Pointer(zB + uintptr(xB))))) != 0; xB++ {
 22509  			res = res + insertOrDeleteCost(tls, cBprev, cB, *(*int8)(unsafe.Pointer(zB + uintptr(xB+1))))/FINAL_INS_COST_DIV
 22510  			cBprev = cB
 22511  		}
 22512  		return res
 22513  	}
 22514  	if nB == 0 {
 22515  		cAprev = int8(dc)
 22516  		for xA = libc.AssignInt32(&res, 0); int32(libc.AssignInt8(&cA, *(*int8)(unsafe.Pointer(zA + uintptr(xA))))) != 0; xA++ {
 22517  			res = res + insertOrDeleteCost(tls, cAprev, cA, *(*int8)(unsafe.Pointer(zA + uintptr(xA+1))))
 22518  			cAprev = cA
 22519  		}
 22520  		return res
 22521  	}
 22522  
 22523  	if int32(*(*int8)(unsafe.Pointer(zA))) == '*' && int32(*(*int8)(unsafe.Pointer(zA + 1))) == 0 {
 22524  		return 0
 22525  	}
 22526  
 22527  	if uint64(nB) < uint64(unsafe.Sizeof([75]int32{}))*uint64(4)/(uint64(unsafe.Sizeof(int32(0)))*uint64(5)) {
 22528  		m = bp
 22529  	} else {
 22530  		m = libc.AssignUintptr(&toFree, sqlite3.Xsqlite3_malloc64(tls, uint64((nB+1)*5)*uint64(unsafe.Sizeof(int32(0)))/uint64(4)))
 22531  		if m == uintptr(0) {
 22532  			return -3
 22533  		}
 22534  	}
 22535  	cx = m + uintptr(nB+1)*4
 22536  
 22537  	*(*int32)(unsafe.Pointer(m)) = 0
 22538  	*(*int8)(unsafe.Pointer(cx)) = int8(dc)
 22539  	cBprev = int8(dc)
 22540  	for xB = 1; xB <= nB; xB++ {
 22541  		cBnext = *(*int8)(unsafe.Pointer(zB + uintptr(xB)))
 22542  		cB = *(*int8)(unsafe.Pointer(zB + uintptr(xB-1)))
 22543  		*(*int8)(unsafe.Pointer(cx + uintptr(xB))) = cB
 22544  		*(*int32)(unsafe.Pointer(m + uintptr(xB)*4)) = *(*int32)(unsafe.Pointer(m + uintptr(xB-1)*4)) + insertOrDeleteCost(tls, cBprev, cB, cBnext)
 22545  		cBprev = cB
 22546  	}
 22547  	cAprev = int8(dc)
 22548  	for xA = 1; xA <= nA; xA++ {
 22549  		var lastA int32 = libc.Bool32(xA == nA)
 22550  		cA = *(*int8)(unsafe.Pointer(zA + uintptr(xA-1)))
 22551  		cAnext = *(*int8)(unsafe.Pointer(zA + uintptr(xA)))
 22552  		if int32(cA) == '*' && lastA != 0 {
 22553  			break
 22554  		}
 22555  		d = *(*int32)(unsafe.Pointer(m))
 22556  		dc = int32(*(*int8)(unsafe.Pointer(cx)))
 22557  		*(*int32)(unsafe.Pointer(m)) = d + insertOrDeleteCost(tls, cAprev, cA, cAnext)
 22558  		cBprev = int8(0)
 22559  		for xB = 1; xB <= nB; xB++ {
 22560  			var totalCost int32
 22561  			var insCost int32
 22562  			var delCost int32
 22563  			var subCost int32
 22564  			var ncx int32
 22565  			cB = *(*int8)(unsafe.Pointer(zB + uintptr(xB-1)))
 22566  			cBnext = *(*int8)(unsafe.Pointer(zB + uintptr(xB)))
 22567  
 22568  			insCost = insertOrDeleteCost(tls, *(*int8)(unsafe.Pointer(cx + uintptr(xB-1))), cB, cBnext)
 22569  			if lastA != 0 {
 22570  				insCost = insCost / FINAL_INS_COST_DIV
 22571  			}
 22572  
 22573  			delCost = insertOrDeleteCost(tls, *(*int8)(unsafe.Pointer(cx + uintptr(xB))), cA, cBnext)
 22574  
 22575  			subCost = substituteCost(tls, *(*int8)(unsafe.Pointer(cx + uintptr(xB-1))), cA, cB)
 22576  
 22577  			totalCost = insCost + *(*int32)(unsafe.Pointer(m + uintptr(xB-1)*4))
 22578  			ncx = int32(cB)
 22579  			if delCost+*(*int32)(unsafe.Pointer(m + uintptr(xB)*4)) < totalCost {
 22580  				totalCost = delCost + *(*int32)(unsafe.Pointer(m + uintptr(xB)*4))
 22581  				ncx = int32(cA)
 22582  			}
 22583  			if subCost+d < totalCost {
 22584  				totalCost = subCost + d
 22585  			}
 22586  
 22587  			d = *(*int32)(unsafe.Pointer(m + uintptr(xB)*4))
 22588  			dc = int32(*(*int8)(unsafe.Pointer(cx + uintptr(xB))))
 22589  			*(*int32)(unsafe.Pointer(m + uintptr(xB)*4)) = totalCost
 22590  			*(*int8)(unsafe.Pointer(cx + uintptr(xB))) = int8(ncx)
 22591  			cBprev = cB
 22592  		}
 22593  		cAprev = cA
 22594  	}
 22595  
 22596  	if int32(cA) == '*' {
 22597  		res = *(*int32)(unsafe.Pointer(m + 1*4))
 22598  		for xB = 1; xB <= nB; xB++ {
 22599  			if *(*int32)(unsafe.Pointer(m + uintptr(xB)*4)) < res {
 22600  				res = *(*int32)(unsafe.Pointer(m + uintptr(xB)*4))
 22601  				if pnMatch != 0 {
 22602  					*(*int32)(unsafe.Pointer(pnMatch)) = xB + nMatch
 22603  				}
 22604  			}
 22605  		}
 22606  	} else {
 22607  		res = *(*int32)(unsafe.Pointer(m + uintptr(nB)*4))
 22608  
 22609  	}
 22610  	sqlite3.Xsqlite3_free(tls, toFree)
 22611  	return res
 22612  }
 22613  
 22614  func editdistSqlFunc(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 22615  	var res int32 = editdist1(tls,
 22616  		sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv))),
 22617  		sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8))),
 22618  		uintptr(0))
 22619  	if res < 0 {
 22620  		if res == -3 {
 22621  			sqlite3.Xsqlite3_result_error_nomem(tls, context)
 22622  		} else if res == -2 {
 22623  			sqlite3.Xsqlite3_result_error(tls, context, ts+7052, -1)
 22624  		} else {
 22625  			sqlite3.Xsqlite3_result_error(tls, context, ts+7082, -1)
 22626  		}
 22627  	} else {
 22628  		sqlite3.Xsqlite3_result_int(tls, context, res)
 22629  	}
 22630  }
 22631  
 22632  type EditDist3Cost1 = struct {
 22633  	FpNext uintptr
 22634  	FnFrom u8
 22635  	FnTo   u8
 22636  	FiCost u16
 22637  	Fa     [4]int8
 22638  }
 22639  
 22640  type EditDist3Cost = EditDist3Cost1
 22641  type EditDist3Config1 = struct {
 22642  	FnLang       int32
 22643  	F__ccgo_pad1 [4]byte
 22644  	Fa           uintptr
 22645  }
 22646  
 22647  type EditDist3Config = EditDist3Config1
 22648  type EditDist3From1 = struct {
 22649  	FnSubst      int32
 22650  	FnDel        int32
 22651  	FnByte       int32
 22652  	F__ccgo_pad1 [4]byte
 22653  	FapSubst     uintptr
 22654  	FapDel       uintptr
 22655  }
 22656  
 22657  type EditDist3From = EditDist3From1
 22658  type EditDist3FromString1 = struct {
 22659  	Fz        uintptr
 22660  	Fn        int32
 22661  	FisPrefix int32
 22662  	Fa        uintptr
 22663  }
 22664  
 22665  type EditDist3FromString = EditDist3FromString1
 22666  type EditDist3To1 = struct {
 22667  	FnIns  int32
 22668  	FnByte int32
 22669  	FapIns uintptr
 22670  }
 22671  
 22672  type EditDist3To = EditDist3To1
 22673  type EditDist3ToString1 = struct {
 22674  	Fz           uintptr
 22675  	Fn           int32
 22676  	F__ccgo_pad1 [4]byte
 22677  	Fa           uintptr
 22678  }
 22679  
 22680  type EditDist3ToString = EditDist3ToString1
 22681  type EditDist3Lang1 = struct {
 22682  	FiLang    int32
 22683  	FiInsCost int32
 22684  	FiDelCost int32
 22685  	FiSubCost int32
 22686  	FpCost    uintptr
 22687  }
 22688  
 22689  type EditDist3Lang = EditDist3Lang1
 22690  
 22691  var editDist3Lang = EditDist3Lang{FiInsCost: 100, FiDelCost: 100, FiSubCost: 150}
 22692  
 22693  func editDist3ConfigClear(tls *libc.TLS, p uintptr) {
 22694  	var i int32
 22695  	if p == uintptr(0) {
 22696  		return
 22697  	}
 22698  	for i = 0; i < (*EditDist3Config)(unsafe.Pointer(p)).FnLang; i++ {
 22699  		var pCost uintptr
 22700  		var pNext uintptr
 22701  		pCost = (*EditDist3Lang)(unsafe.Pointer((*EditDist3Config)(unsafe.Pointer(p)).Fa + uintptr(i)*24)).FpCost
 22702  		for pCost != 0 {
 22703  			pNext = (*EditDist3Cost)(unsafe.Pointer(pCost)).FpNext
 22704  			sqlite3.Xsqlite3_free(tls, pCost)
 22705  			pCost = pNext
 22706  		}
 22707  	}
 22708  	sqlite3.Xsqlite3_free(tls, (*EditDist3Config)(unsafe.Pointer(p)).Fa)
 22709  	libc.X__builtin___memset_chk(tls, p, 0, uint64(unsafe.Sizeof(EditDist3Config{})), libc.X__builtin_object_size(tls, p, 0))
 22710  }
 22711  
 22712  func editDist3ConfigDelete(tls *libc.TLS, pIn uintptr) {
 22713  	var p uintptr = pIn
 22714  	editDist3ConfigClear(tls, p)
 22715  	sqlite3.Xsqlite3_free(tls, p)
 22716  }
 22717  
 22718  func editDist3CostCompare(tls *libc.TLS, pA uintptr, pB uintptr) int32 {
 22719  	var n int32 = int32((*EditDist3Cost)(unsafe.Pointer(pA)).FnFrom)
 22720  	var rc int32
 22721  	if n > int32((*EditDist3Cost)(unsafe.Pointer(pB)).FnFrom) {
 22722  		n = int32((*EditDist3Cost)(unsafe.Pointer(pB)).FnFrom)
 22723  	}
 22724  	rc = libc.Xstrncmp(tls, pA+12, pB+12, uint64(n))
 22725  	if rc == 0 {
 22726  		rc = int32((*EditDist3Cost)(unsafe.Pointer(pA)).FnFrom) - int32((*EditDist3Cost)(unsafe.Pointer(pB)).FnFrom)
 22727  	}
 22728  	return rc
 22729  }
 22730  
 22731  func editDist3CostMerge(tls *libc.TLS, pA uintptr, pB uintptr) uintptr {
 22732  	bp := tls.Alloc(8)
 22733  	defer tls.Free(8)
 22734  
 22735  	*(*uintptr)(unsafe.Pointer(bp)) = uintptr(0)
 22736  	var ppTail uintptr = bp
 22737  	var p uintptr
 22738  	for pA != 0 && pB != 0 {
 22739  		if editDist3CostCompare(tls, pA, pB) <= 0 {
 22740  			p = pA
 22741  			pA = (*EditDist3Cost)(unsafe.Pointer(pA)).FpNext
 22742  		} else {
 22743  			p = pB
 22744  			pB = (*EditDist3Cost)(unsafe.Pointer(pB)).FpNext
 22745  		}
 22746  		*(*uintptr)(unsafe.Pointer(ppTail)) = p
 22747  		ppTail = p
 22748  	}
 22749  	if pA != 0 {
 22750  		*(*uintptr)(unsafe.Pointer(ppTail)) = pA
 22751  	} else {
 22752  		*(*uintptr)(unsafe.Pointer(ppTail)) = pB
 22753  	}
 22754  	return *(*uintptr)(unsafe.Pointer(bp))
 22755  }
 22756  
 22757  func editDist3CostSort(tls *libc.TLS, pList uintptr) uintptr {
 22758  	bp := tls.Alloc(480)
 22759  	defer tls.Free(480)
 22760  
 22761  	var p uintptr
 22762  	var i int32
 22763  	var mx int32 = 0
 22764  	*(*uintptr)(unsafe.Pointer(bp)) = uintptr(0)
 22765  	*(*uintptr)(unsafe.Pointer(bp + 1*8)) = uintptr(0)
 22766  	for pList != 0 {
 22767  		p = pList
 22768  		pList = (*EditDist3Cost)(unsafe.Pointer(p)).FpNext
 22769  		(*EditDist3Cost)(unsafe.Pointer(p)).FpNext = uintptr(0)
 22770  		for i = 0; *(*uintptr)(unsafe.Pointer(bp + uintptr(i)*8)) != 0; i++ {
 22771  			p = editDist3CostMerge(tls, *(*uintptr)(unsafe.Pointer(bp + uintptr(i)*8)), p)
 22772  			*(*uintptr)(unsafe.Pointer(bp + uintptr(i)*8)) = uintptr(0)
 22773  		}
 22774  		*(*uintptr)(unsafe.Pointer(bp + uintptr(i)*8)) = p
 22775  		if i > mx {
 22776  			mx = i
 22777  			*(*uintptr)(unsafe.Pointer(bp + uintptr(i+1)*8)) = uintptr(0)
 22778  		}
 22779  	}
 22780  	p = uintptr(0)
 22781  	for i = 0; i <= mx; i++ {
 22782  		if *(*uintptr)(unsafe.Pointer(bp + uintptr(i)*8)) != 0 {
 22783  			p = editDist3CostMerge(tls, p, *(*uintptr)(unsafe.Pointer(bp + uintptr(i)*8)))
 22784  		}
 22785  	}
 22786  	return p
 22787  }
 22788  
 22789  func editDist3ConfigLoad(tls *libc.TLS, p uintptr, db uintptr, zTable uintptr) int32 {
 22790  	bp := tls.Alloc(16)
 22791  	defer tls.Free(16)
 22792  
 22793  	var rc int32
 22794  	var rc2 int32
 22795  	var zSql uintptr
 22796  	var iLangPrev int32 = -9999
 22797  	var pLang uintptr = uintptr(0)
 22798  
 22799  	zSql = sqlite3.Xsqlite3_mprintf(tls,
 22800  		ts+7107, libc.VaList(bp, zTable))
 22801  	if zSql == uintptr(0) {
 22802  		return SQLITE_NOMEM
 22803  	}
 22804  	rc = sqlite3.Xsqlite3_prepare(tls, db, zSql, -1, bp+8, uintptr(0))
 22805  	sqlite3.Xsqlite3_free(tls, zSql)
 22806  	if rc != 0 {
 22807  		return rc
 22808  	}
 22809  	editDist3ConfigClear(tls, p)
 22810  	for sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp + 8))) == SQLITE_ROW {
 22811  		var iLang int32 = sqlite3.Xsqlite3_column_int(tls, *(*uintptr)(unsafe.Pointer(bp + 8)), 0)
 22812  		var zFrom uintptr = sqlite3.Xsqlite3_column_text(tls, *(*uintptr)(unsafe.Pointer(bp + 8)), 1)
 22813  		var nFrom int32
 22814  		if zFrom != 0 {
 22815  			nFrom = sqlite3.Xsqlite3_column_bytes(tls, *(*uintptr)(unsafe.Pointer(bp + 8)), 1)
 22816  		} else {
 22817  			nFrom = 0
 22818  		}
 22819  		var zTo uintptr = sqlite3.Xsqlite3_column_text(tls, *(*uintptr)(unsafe.Pointer(bp + 8)), 2)
 22820  		var nTo int32
 22821  		if zTo != 0 {
 22822  			nTo = sqlite3.Xsqlite3_column_bytes(tls, *(*uintptr)(unsafe.Pointer(bp + 8)), 2)
 22823  		} else {
 22824  			nTo = 0
 22825  		}
 22826  		var iCost int32 = sqlite3.Xsqlite3_column_int(tls, *(*uintptr)(unsafe.Pointer(bp + 8)), 3)
 22827  
 22828  		if nFrom > 100 || nTo > 100 {
 22829  			continue
 22830  		}
 22831  		if iCost < 0 {
 22832  			continue
 22833  		}
 22834  		if iCost >= 10000 {
 22835  			continue
 22836  		}
 22837  		if pLang == uintptr(0) || iLang != iLangPrev {
 22838  			var pNew uintptr
 22839  			pNew = sqlite3.Xsqlite3_realloc64(tls, (*EditDist3Config)(unsafe.Pointer(p)).Fa, uint64((*EditDist3Config)(unsafe.Pointer(p)).FnLang+1)*uint64(unsafe.Sizeof(EditDist3Lang{})))
 22840  			if pNew == uintptr(0) {
 22841  				rc = SQLITE_NOMEM
 22842  				break
 22843  			}
 22844  			(*EditDist3Config)(unsafe.Pointer(p)).Fa = pNew
 22845  			pLang = (*EditDist3Config)(unsafe.Pointer(p)).Fa + uintptr((*EditDist3Config)(unsafe.Pointer(p)).FnLang)*24
 22846  			(*EditDist3Config)(unsafe.Pointer(p)).FnLang++
 22847  			(*EditDist3Lang)(unsafe.Pointer(pLang)).FiLang = iLang
 22848  			(*EditDist3Lang)(unsafe.Pointer(pLang)).FiInsCost = 100
 22849  			(*EditDist3Lang)(unsafe.Pointer(pLang)).FiDelCost = 100
 22850  			(*EditDist3Lang)(unsafe.Pointer(pLang)).FiSubCost = 150
 22851  			(*EditDist3Lang)(unsafe.Pointer(pLang)).FpCost = uintptr(0)
 22852  			iLangPrev = iLang
 22853  		}
 22854  		if nFrom == 1 && int32(*(*int8)(unsafe.Pointer(zFrom))) == '?' && nTo == 0 {
 22855  			(*EditDist3Lang)(unsafe.Pointer(pLang)).FiDelCost = iCost
 22856  		} else if nFrom == 0 && nTo == 1 && int32(*(*int8)(unsafe.Pointer(zTo))) == '?' {
 22857  			(*EditDist3Lang)(unsafe.Pointer(pLang)).FiInsCost = iCost
 22858  		} else if nFrom == 1 && nTo == 1 && int32(*(*int8)(unsafe.Pointer(zFrom))) == '?' && int32(*(*int8)(unsafe.Pointer(zTo))) == '?' {
 22859  			(*EditDist3Lang)(unsafe.Pointer(pLang)).FiSubCost = iCost
 22860  		} else {
 22861  			var pCost uintptr
 22862  			var nExtra int32 = nFrom + nTo - 4
 22863  			if nExtra < 0 {
 22864  				nExtra = 0
 22865  			}
 22866  			pCost = sqlite3.Xsqlite3_malloc64(tls, uint64(unsafe.Sizeof(EditDist3Cost{}))+uint64(nExtra))
 22867  			if pCost == uintptr(0) {
 22868  				rc = SQLITE_NOMEM
 22869  				break
 22870  			}
 22871  			(*EditDist3Cost)(unsafe.Pointer(pCost)).FnFrom = u8(nFrom)
 22872  			(*EditDist3Cost)(unsafe.Pointer(pCost)).FnTo = u8(nTo)
 22873  			(*EditDist3Cost)(unsafe.Pointer(pCost)).FiCost = u16(iCost)
 22874  			libc.X__builtin___memcpy_chk(tls, pCost+12, zFrom, uint64(nFrom), libc.X__builtin_object_size(tls, pCost+12, 0))
 22875  			libc.X__builtin___memcpy_chk(tls, pCost+12+uintptr(nFrom), zTo, uint64(nTo), libc.X__builtin_object_size(tls, pCost+12+uintptr(nFrom), 0))
 22876  			(*EditDist3Cost)(unsafe.Pointer(pCost)).FpNext = (*EditDist3Lang)(unsafe.Pointer(pLang)).FpCost
 22877  			(*EditDist3Lang)(unsafe.Pointer(pLang)).FpCost = pCost
 22878  		}
 22879  	}
 22880  	rc2 = sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 8)))
 22881  	if rc == SQLITE_OK {
 22882  		rc = rc2
 22883  	}
 22884  	if rc == SQLITE_OK {
 22885  		var iLang int32
 22886  		for iLang = 0; iLang < (*EditDist3Config)(unsafe.Pointer(p)).FnLang; iLang++ {
 22887  			(*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)
 22888  		}
 22889  	}
 22890  	return rc
 22891  }
 22892  
 22893  func utf8Len(tls *libc.TLS, c uint8, N int32) int32 {
 22894  	var len int32 = 1
 22895  	if int32(c) > 0x7f {
 22896  		if int32(c)&0xe0 == 0xc0 {
 22897  			len = 2
 22898  		} else if int32(c)&0xf0 == 0xe0 {
 22899  			len = 3
 22900  		} else {
 22901  			len = 4
 22902  		}
 22903  	}
 22904  	if len > N {
 22905  		len = N
 22906  	}
 22907  	return len
 22908  }
 22909  
 22910  func matchTo(tls *libc.TLS, p uintptr, z uintptr, n int32) int32 {
 22911  	if int32(*(*int8)(unsafe.Pointer(p + 12 + uintptr((*EditDist3Cost)(unsafe.Pointer(p)).FnFrom)))) != int32(*(*int8)(unsafe.Pointer(z))) {
 22912  		return 0
 22913  	}
 22914  	if int32((*EditDist3Cost)(unsafe.Pointer(p)).FnTo) > n {
 22915  		return 0
 22916  	}
 22917  	if libc.Xstrncmp(tls, p+12+uintptr((*EditDist3Cost)(unsafe.Pointer(p)).FnFrom), z, uint64((*EditDist3Cost)(unsafe.Pointer(p)).FnTo)) != 0 {
 22918  		return 0
 22919  	}
 22920  	return 1
 22921  }
 22922  
 22923  func matchFrom(tls *libc.TLS, p uintptr, z uintptr, n int32) int32 {
 22924  	if (*EditDist3Cost)(unsafe.Pointer(p)).FnFrom != 0 {
 22925  		if int32(*(*int8)(unsafe.Pointer(p + 12))) != int32(*(*int8)(unsafe.Pointer(z))) {
 22926  			return 0
 22927  		}
 22928  		if libc.Xstrncmp(tls, p+12, z, uint64((*EditDist3Cost)(unsafe.Pointer(p)).FnFrom)) != 0 {
 22929  			return 0
 22930  		}
 22931  	}
 22932  	return 1
 22933  }
 22934  
 22935  func matchFromTo(tls *libc.TLS, pStr uintptr, n1 int32, z2 uintptr, n2 int32) int32 {
 22936  	var b1 int32 = (*EditDist3From)(unsafe.Pointer((*EditDist3FromString)(unsafe.Pointer(pStr)).Fa + uintptr(n1)*32)).FnByte
 22937  	if b1 > n2 {
 22938  		return 0
 22939  	}
 22940  
 22941  	if int32(*(*int8)(unsafe.Pointer((*EditDist3FromString)(unsafe.Pointer(pStr)).Fz + uintptr(n1)))) != int32(*(*int8)(unsafe.Pointer(z2))) {
 22942  		return 0
 22943  	}
 22944  	if libc.Xstrncmp(tls, (*EditDist3FromString)(unsafe.Pointer(pStr)).Fz+uintptr(n1), z2, uint64(b1)) != 0 {
 22945  		return 0
 22946  	}
 22947  	return 1
 22948  }
 22949  
 22950  func editDist3FromStringDelete(tls *libc.TLS, p uintptr) {
 22951  	var i int32
 22952  	if p != 0 {
 22953  		for i = 0; i < (*EditDist3FromString)(unsafe.Pointer(p)).Fn; i++ {
 22954  			sqlite3.Xsqlite3_free(tls, (*EditDist3From)(unsafe.Pointer((*EditDist3FromString)(unsafe.Pointer(p)).Fa+uintptr(i)*32)).FapDel)
 22955  			sqlite3.Xsqlite3_free(tls, (*EditDist3From)(unsafe.Pointer((*EditDist3FromString)(unsafe.Pointer(p)).Fa+uintptr(i)*32)).FapSubst)
 22956  		}
 22957  		sqlite3.Xsqlite3_free(tls, p)
 22958  	}
 22959  }
 22960  
 22961  func editDist3FromStringNew(tls *libc.TLS, pLang uintptr, z uintptr, n int32) uintptr {
 22962  	var pStr uintptr
 22963  	var p uintptr
 22964  	var i int32
 22965  
 22966  	if z == uintptr(0) {
 22967  		return uintptr(0)
 22968  	}
 22969  	if n < 0 {
 22970  		n = int32(libc.Xstrlen(tls, z))
 22971  	}
 22972  	pStr = sqlite3.Xsqlite3_malloc64(tls, uint64(unsafe.Sizeof(EditDist3FromString{}))+uint64(unsafe.Sizeof(EditDist3From{}))*uint64(n)+uint64(n)+uint64(1))
 22973  	if pStr == uintptr(0) {
 22974  		return uintptr(0)
 22975  	}
 22976  	(*EditDist3FromString)(unsafe.Pointer(pStr)).Fa = pStr + 1*24
 22977  	libc.X__builtin___memset_chk(tls, (*EditDist3FromString)(unsafe.Pointer(pStr)).Fa, 0, uint64(unsafe.Sizeof(EditDist3From{}))*uint64(n), libc.X__builtin_object_size(tls, (*EditDist3FromString)(unsafe.Pointer(pStr)).Fa, 0))
 22978  	(*EditDist3FromString)(unsafe.Pointer(pStr)).Fn = n
 22979  	(*EditDist3FromString)(unsafe.Pointer(pStr)).Fz = (*EditDist3FromString)(unsafe.Pointer(pStr)).Fa + uintptr(n)*32
 22980  	libc.X__builtin___memcpy_chk(tls, (*EditDist3FromString)(unsafe.Pointer(pStr)).Fz, z, uint64(n+1), libc.X__builtin_object_size(tls, (*EditDist3FromString)(unsafe.Pointer(pStr)).Fz, 0))
 22981  	if n != 0 && int32(*(*int8)(unsafe.Pointer(z + uintptr(n-1)))) == '*' {
 22982  		(*EditDist3FromString)(unsafe.Pointer(pStr)).FisPrefix = 1
 22983  		n--
 22984  		(*EditDist3FromString)(unsafe.Pointer(pStr)).Fn--
 22985  		*(*int8)(unsafe.Pointer((*EditDist3FromString)(unsafe.Pointer(pStr)).Fz + uintptr(n))) = int8(0)
 22986  	} else {
 22987  		(*EditDist3FromString)(unsafe.Pointer(pStr)).FisPrefix = 0
 22988  	}
 22989  
 22990  	for i = 0; i < n; i++ {
 22991  		var pFrom uintptr = (*EditDist3FromString)(unsafe.Pointer(pStr)).Fa + uintptr(i)*32
 22992  		libc.X__builtin___memset_chk(tls, pFrom, 0, uint64(unsafe.Sizeof(EditDist3From{})), libc.X__builtin_object_size(tls, pFrom, 0))
 22993  		(*EditDist3From)(unsafe.Pointer(pFrom)).FnByte = utf8Len(tls, uint8(*(*int8)(unsafe.Pointer(z + uintptr(i)))), n-i)
 22994  		for p = (*EditDist3Lang)(unsafe.Pointer(pLang)).FpCost; p != 0; p = (*EditDist3Cost)(unsafe.Pointer(p)).FpNext {
 22995  			var apNew uintptr
 22996  			if i+int32((*EditDist3Cost)(unsafe.Pointer(p)).FnFrom) > n {
 22997  				continue
 22998  			}
 22999  			if matchFrom(tls, p, z+uintptr(i), n-i) == 0 {
 23000  				continue
 23001  			}
 23002  			if int32((*EditDist3Cost)(unsafe.Pointer(p)).FnTo) == 0 {
 23003  				apNew = sqlite3.Xsqlite3_realloc64(tls, (*EditDist3From)(unsafe.Pointer(pFrom)).FapDel,
 23004  					uint64(unsafe.Sizeof(uintptr(0)))*uint64((*EditDist3From)(unsafe.Pointer(pFrom)).FnDel+1))
 23005  				if apNew == uintptr(0) {
 23006  					break
 23007  				}
 23008  				(*EditDist3From)(unsafe.Pointer(pFrom)).FapDel = apNew
 23009  				*(*uintptr)(unsafe.Pointer(apNew + uintptr(libc.PostIncInt32(&(*EditDist3From)(unsafe.Pointer(pFrom)).FnDel, 1))*8)) = p
 23010  			} else {
 23011  				apNew = sqlite3.Xsqlite3_realloc64(tls, (*EditDist3From)(unsafe.Pointer(pFrom)).FapSubst,
 23012  					uint64(unsafe.Sizeof(uintptr(0)))*uint64((*EditDist3From)(unsafe.Pointer(pFrom)).FnSubst+1))
 23013  				if apNew == uintptr(0) {
 23014  					break
 23015  				}
 23016  				(*EditDist3From)(unsafe.Pointer(pFrom)).FapSubst = apNew
 23017  				*(*uintptr)(unsafe.Pointer(apNew + uintptr(libc.PostIncInt32(&(*EditDist3From)(unsafe.Pointer(pFrom)).FnSubst, 1))*8)) = p
 23018  			}
 23019  		}
 23020  		if p != 0 {
 23021  			editDist3FromStringDelete(tls, pStr)
 23022  			pStr = uintptr(0)
 23023  			break
 23024  		}
 23025  	}
 23026  	return pStr
 23027  }
 23028  
 23029  func updateCost(tls *libc.TLS, m uintptr, i int32, j int32, iCost int32) {
 23030  	var b uint32
 23031  
 23032  	b = *(*uint32)(unsafe.Pointer(m + uintptr(j)*4)) + uint32(iCost)
 23033  	if b < *(*uint32)(unsafe.Pointer(m + uintptr(i)*4)) {
 23034  		*(*uint32)(unsafe.Pointer(m + uintptr(i)*4)) = b
 23035  	}
 23036  }
 23037  
 23038  func editDist3Core(tls *libc.TLS, pFrom uintptr, z2 uintptr, n2 int32, pLang uintptr, pnMatch uintptr) int32 {
 23039  	bp := tls.Alloc(1048)
 23040  	defer tls.Free(1048)
 23041  
 23042  	var k int32
 23043  	var n int32
 23044  	var i1 int32
 23045  	var b1 int32
 23046  	var i2 int32
 23047  	var b2 int32
 23048  
 23049  	var a2 uintptr
 23050  	var m uintptr
 23051  	var pToFree uintptr
 23052  	var szRow int32
 23053  	var p uintptr
 23054  	var res int32
 23055  	var nByte sqlite3_uint64
 23056  
 23057  	var apNew uintptr
 23058  	var cx int32
 23059  	var cxp int32
 23060  	var cxd int32
 23061  	var cxu int32
 23062  	var rx int32
 23063  	var rxp int32
 23064  	var b int32
 23065  	var nExtra int32
 23066  	*(*EditDist3FromString)(unsafe.Pointer(bp + 1024)) = *(*EditDist3FromString)(unsafe.Pointer(pFrom))
 23067  
 23068  	n = ((*EditDist3FromString)(unsafe.Pointer(bp+1024)).Fn + 1) * (n2 + 1)
 23069  	n = (n + 1) & libc.CplInt32(1)
 23070  	nByte = uint64(n)*uint64(unsafe.Sizeof(uint32(0))) + uint64(unsafe.Sizeof(EditDist3To{}))*uint64(n2)
 23071  	if !(nByte <= sqlite3_uint64(unsafe.Sizeof([256]uint32{}))) {
 23072  		goto __1
 23073  	}
 23074  	m = bp
 23075  	pToFree = uintptr(0)
 23076  	goto __2
 23077  __1:
 23078  	m = libc.AssignUintptr(&pToFree, sqlite3.Xsqlite3_malloc64(tls, nByte))
 23079  	if !(m == uintptr(0)) {
 23080  		goto __3
 23081  	}
 23082  	return -1
 23083  __3:
 23084  	;
 23085  __2:
 23086  	;
 23087  	a2 = m + uintptr(n)*4
 23088  	libc.X__builtin___memset_chk(tls, a2, 0, uint64(unsafe.Sizeof(EditDist3To{}))*uint64(n2), libc.X__builtin_object_size(tls, a2, 0))
 23089  
 23090  	i2 = 0
 23091  __4:
 23092  	if !(i2 < n2) {
 23093  		goto __6
 23094  	}
 23095  	(*EditDist3To)(unsafe.Pointer(a2 + uintptr(i2)*16)).FnByte = utf8Len(tls, uint8(*(*int8)(unsafe.Pointer(z2 + uintptr(i2)))), n2-i2)
 23096  	p = (*EditDist3Lang)(unsafe.Pointer(pLang)).FpCost
 23097  __7:
 23098  	if !(p != 0) {
 23099  		goto __9
 23100  	}
 23101  	if !(int32((*EditDist3Cost)(unsafe.Pointer(p)).FnFrom) > 0) {
 23102  		goto __10
 23103  	}
 23104  	goto __9
 23105  __10:
 23106  	;
 23107  	if !(i2+int32((*EditDist3Cost)(unsafe.Pointer(p)).FnTo) > n2) {
 23108  		goto __11
 23109  	}
 23110  	goto __8
 23111  __11:
 23112  	;
 23113  	if !(int32(*(*int8)(unsafe.Pointer(p + 12))) > int32(*(*int8)(unsafe.Pointer(z2 + uintptr(i2))))) {
 23114  		goto __12
 23115  	}
 23116  	goto __9
 23117  __12:
 23118  	;
 23119  	if !(matchTo(tls, p, z2+uintptr(i2), n2-i2) == 0) {
 23120  		goto __13
 23121  	}
 23122  	goto __8
 23123  __13:
 23124  	;
 23125  	(*EditDist3To)(unsafe.Pointer(a2+uintptr(i2)*16)).FnIns++
 23126  	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))
 23127  	if !(apNew == uintptr(0)) {
 23128  		goto __14
 23129  	}
 23130  	res = -1
 23131  	goto editDist3Abort
 23132  __14:
 23133  	;
 23134  	(*EditDist3To)(unsafe.Pointer(a2 + uintptr(i2)*16)).FapIns = apNew
 23135  	*(*uintptr)(unsafe.Pointer((*EditDist3To)(unsafe.Pointer(a2+uintptr(i2)*16)).FapIns + uintptr((*EditDist3To)(unsafe.Pointer(a2+uintptr(i2)*16)).FnIns-1)*8)) = p
 23136  	goto __8
 23137  __8:
 23138  	p = (*EditDist3Cost)(unsafe.Pointer(p)).FpNext
 23139  	goto __7
 23140  	goto __9
 23141  __9:
 23142  	;
 23143  	goto __5
 23144  __5:
 23145  	i2++
 23146  	goto __4
 23147  	goto __6
 23148  __6:
 23149  	;
 23150  	szRow = (*EditDist3FromString)(unsafe.Pointer(bp+1024)).Fn + 1
 23151  	libc.X__builtin___memset_chk(tls, m, 0x01, uint64((n2+1)*szRow)*uint64(unsafe.Sizeof(uint32(0))), libc.X__builtin_object_size(tls, m, 0))
 23152  	*(*uint32)(unsafe.Pointer(m)) = uint32(0)
 23153  
 23154  	i1 = 0
 23155  __15:
 23156  	if !(i1 < (*EditDist3FromString)(unsafe.Pointer(bp+1024)).Fn) {
 23157  		goto __17
 23158  	}
 23159  	b1 = (*EditDist3From)(unsafe.Pointer((*EditDist3FromString)(unsafe.Pointer(bp+1024)).Fa + uintptr(i1)*32)).FnByte
 23160  	updateCost(tls, m, i1+b1, i1, (*EditDist3Lang)(unsafe.Pointer(pLang)).FiDelCost)
 23161  	k = 0
 23162  __18:
 23163  	if !(k < (*EditDist3From)(unsafe.Pointer((*EditDist3FromString)(unsafe.Pointer(bp+1024)).Fa+uintptr(i1)*32)).FnDel) {
 23164  		goto __20
 23165  	}
 23166  	p = *(*uintptr)(unsafe.Pointer((*EditDist3From)(unsafe.Pointer((*EditDist3FromString)(unsafe.Pointer(bp+1024)).Fa+uintptr(i1)*32)).FapDel + uintptr(k)*8))
 23167  	updateCost(tls, m, i1+int32((*EditDist3Cost)(unsafe.Pointer(p)).FnFrom), i1, int32((*EditDist3Cost)(unsafe.Pointer(p)).FiCost))
 23168  	goto __19
 23169  __19:
 23170  	k++
 23171  	goto __18
 23172  	goto __20
 23173  __20:
 23174  	;
 23175  	goto __16
 23176  __16:
 23177  	i1 = i1 + b1
 23178  	goto __15
 23179  	goto __17
 23180  __17:
 23181  	;
 23182  	i2 = 0
 23183  __21:
 23184  	if !(i2 < n2) {
 23185  		goto __23
 23186  	}
 23187  	b2 = (*EditDist3To)(unsafe.Pointer(a2 + uintptr(i2)*16)).FnByte
 23188  	rx = szRow * (i2 + b2)
 23189  	rxp = szRow * i2
 23190  	updateCost(tls, m, rx, rxp, (*EditDist3Lang)(unsafe.Pointer(pLang)).FiInsCost)
 23191  	k = 0
 23192  __24:
 23193  	if !(k < (*EditDist3To)(unsafe.Pointer(a2+uintptr(i2)*16)).FnIns) {
 23194  		goto __26
 23195  	}
 23196  	p = *(*uintptr)(unsafe.Pointer((*EditDist3To)(unsafe.Pointer(a2+uintptr(i2)*16)).FapIns + uintptr(k)*8))
 23197  	updateCost(tls, m, szRow*(i2+int32((*EditDist3Cost)(unsafe.Pointer(p)).FnTo)), rxp, int32((*EditDist3Cost)(unsafe.Pointer(p)).FiCost))
 23198  	goto __25
 23199  __25:
 23200  	k++
 23201  	goto __24
 23202  	goto __26
 23203  __26:
 23204  	;
 23205  	i1 = 0
 23206  __27:
 23207  	if !(i1 < (*EditDist3FromString)(unsafe.Pointer(bp+1024)).Fn) {
 23208  		goto __29
 23209  	}
 23210  	b1 = (*EditDist3From)(unsafe.Pointer((*EditDist3FromString)(unsafe.Pointer(bp+1024)).Fa + uintptr(i1)*32)).FnByte
 23211  	cxp = rx + i1
 23212  	cx = cxp + b1
 23213  	cxd = rxp + i1
 23214  	cxu = cxd + b1
 23215  	updateCost(tls, m, cx, cxp, (*EditDist3Lang)(unsafe.Pointer(pLang)).FiDelCost)
 23216  	k = 0
 23217  __30:
 23218  	if !(k < (*EditDist3From)(unsafe.Pointer((*EditDist3FromString)(unsafe.Pointer(bp+1024)).Fa+uintptr(i1)*32)).FnDel) {
 23219  		goto __32
 23220  	}
 23221  	p = *(*uintptr)(unsafe.Pointer((*EditDist3From)(unsafe.Pointer((*EditDist3FromString)(unsafe.Pointer(bp+1024)).Fa+uintptr(i1)*32)).FapDel + uintptr(k)*8))
 23222  	updateCost(tls, m, cxp+int32((*EditDist3Cost)(unsafe.Pointer(p)).FnFrom), cxp, int32((*EditDist3Cost)(unsafe.Pointer(p)).FiCost))
 23223  	goto __31
 23224  __31:
 23225  	k++
 23226  	goto __30
 23227  	goto __32
 23228  __32:
 23229  	;
 23230  	updateCost(tls, m, cx, cxu, (*EditDist3Lang)(unsafe.Pointer(pLang)).FiInsCost)
 23231  	if !(matchFromTo(tls, bp+1024, i1, z2+uintptr(i2), n2-i2) != 0) {
 23232  		goto __33
 23233  	}
 23234  	updateCost(tls, m, cx, cxd, 0)
 23235  __33:
 23236  	;
 23237  	updateCost(tls, m, cx, cxd, (*EditDist3Lang)(unsafe.Pointer(pLang)).FiSubCost)
 23238  	k = 0
 23239  __34:
 23240  	if !(k < (*EditDist3From)(unsafe.Pointer((*EditDist3FromString)(unsafe.Pointer(bp+1024)).Fa+uintptr(i1)*32)).FnSubst) {
 23241  		goto __36
 23242  	}
 23243  	p = *(*uintptr)(unsafe.Pointer((*EditDist3From)(unsafe.Pointer((*EditDist3FromString)(unsafe.Pointer(bp+1024)).Fa+uintptr(i1)*32)).FapSubst + uintptr(k)*8))
 23244  	if !(matchTo(tls, p, z2+uintptr(i2), n2-i2) != 0) {
 23245  		goto __37
 23246  	}
 23247  	updateCost(tls, m, cxd+int32((*EditDist3Cost)(unsafe.Pointer(p)).FnFrom)+szRow*int32((*EditDist3Cost)(unsafe.Pointer(p)).FnTo), cxd, int32((*EditDist3Cost)(unsafe.Pointer(p)).FiCost))
 23248  __37:
 23249  	;
 23250  	goto __35
 23251  __35:
 23252  	k++
 23253  	goto __34
 23254  	goto __36
 23255  __36:
 23256  	;
 23257  	goto __28
 23258  __28:
 23259  	i1 = i1 + b1
 23260  	goto __27
 23261  	goto __29
 23262  __29:
 23263  	;
 23264  	goto __22
 23265  __22:
 23266  	i2 = i2 + b2
 23267  	goto __21
 23268  	goto __23
 23269  __23:
 23270  	;
 23271  	res = int32(*(*uint32)(unsafe.Pointer(m + uintptr(szRow*(n2+1)-1)*4)))
 23272  	n = n2
 23273  	if !((*EditDist3FromString)(unsafe.Pointer(bp+1024)).FisPrefix != 0) {
 23274  		goto __38
 23275  	}
 23276  	i2 = 1
 23277  __39:
 23278  	if !(i2 <= n2) {
 23279  		goto __41
 23280  	}
 23281  	b = int32(*(*uint32)(unsafe.Pointer(m + uintptr(szRow*i2-1)*4)))
 23282  	if !(b <= res) {
 23283  		goto __42
 23284  	}
 23285  	res = b
 23286  	n = i2 - 1
 23287  __42:
 23288  	;
 23289  	goto __40
 23290  __40:
 23291  	i2++
 23292  	goto __39
 23293  	goto __41
 23294  __41:
 23295  	;
 23296  __38:
 23297  	;
 23298  	if !(pnMatch != 0) {
 23299  		goto __43
 23300  	}
 23301  	nExtra = 0
 23302  	k = 0
 23303  __44:
 23304  	if !(k < n) {
 23305  		goto __46
 23306  	}
 23307  	if !(int32(*(*int8)(unsafe.Pointer(z2 + uintptr(k))))&0xc0 == 0x80) {
 23308  		goto __47
 23309  	}
 23310  	nExtra++
 23311  __47:
 23312  	;
 23313  	goto __45
 23314  __45:
 23315  	k++
 23316  	goto __44
 23317  	goto __46
 23318  __46:
 23319  	;
 23320  	*(*int32)(unsafe.Pointer(pnMatch)) = n - nExtra
 23321  __43:
 23322  	;
 23323  editDist3Abort:
 23324  	i2 = 0
 23325  __48:
 23326  	if !(i2 < n2) {
 23327  		goto __50
 23328  	}
 23329  	sqlite3.Xsqlite3_free(tls, (*EditDist3To)(unsafe.Pointer(a2+uintptr(i2)*16)).FapIns)
 23330  	goto __49
 23331  __49:
 23332  	i2++
 23333  	goto __48
 23334  	goto __50
 23335  __50:
 23336  	;
 23337  	sqlite3.Xsqlite3_free(tls, pToFree)
 23338  	return res
 23339  }
 23340  
 23341  func editDist3FindLang(tls *libc.TLS, pConfig uintptr, iLang int32) uintptr {
 23342  	var i int32
 23343  	for i = 0; i < (*EditDist3Config)(unsafe.Pointer(pConfig)).FnLang; i++ {
 23344  		if (*EditDist3Lang)(unsafe.Pointer((*EditDist3Config)(unsafe.Pointer(pConfig)).Fa+uintptr(i)*24)).FiLang == iLang {
 23345  			return (*EditDist3Config)(unsafe.Pointer(pConfig)).Fa + uintptr(i)*24
 23346  		}
 23347  	}
 23348  	return uintptr(unsafe.Pointer(&editDist3Lang))
 23349  }
 23350  
 23351  func editDist3SqlFunc(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 23352  	var pConfig uintptr = sqlite3.Xsqlite3_user_data(tls, context)
 23353  	var db uintptr = sqlite3.Xsqlite3_context_db_handle(tls, context)
 23354  	var rc int32
 23355  	if argc == 1 {
 23356  		var zTable uintptr = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 23357  		rc = editDist3ConfigLoad(tls, pConfig, db, zTable)
 23358  		if rc != 0 {
 23359  			sqlite3.Xsqlite3_result_error_code(tls, context, rc)
 23360  		}
 23361  	} else {
 23362  		var zA uintptr = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 23363  		var zB uintptr = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 23364  		var nA int32 = sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(argv)))
 23365  		var nB int32 = sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 23366  		var iLang int32
 23367  		if argc == 3 {
 23368  			iLang = sqlite3.Xsqlite3_value_int(tls, *(*uintptr)(unsafe.Pointer(argv + 2*8)))
 23369  		} else {
 23370  			iLang = 0
 23371  		}
 23372  		var pLang uintptr = editDist3FindLang(tls, pConfig, iLang)
 23373  		var pFrom uintptr
 23374  		var dist int32
 23375  
 23376  		pFrom = editDist3FromStringNew(tls, pLang, zA, nA)
 23377  		if pFrom == uintptr(0) {
 23378  			sqlite3.Xsqlite3_result_error_nomem(tls, context)
 23379  			return
 23380  		}
 23381  		dist = editDist3Core(tls, pFrom, zB, nB, pLang, uintptr(0))
 23382  		editDist3FromStringDelete(tls, pFrom)
 23383  		if dist == -1 {
 23384  			sqlite3.Xsqlite3_result_error_nomem(tls, context)
 23385  		} else {
 23386  			sqlite3.Xsqlite3_result_int(tls, context, dist)
 23387  		}
 23388  	}
 23389  }
 23390  
 23391  func editDist3Install(tls *libc.TLS, db uintptr) int32 {
 23392  	var rc int32
 23393  	var pConfig uintptr = sqlite3.Xsqlite3_malloc64(tls, uint64(unsafe.Sizeof(EditDist3Config{})))
 23394  	if pConfig == uintptr(0) {
 23395  		return SQLITE_NOMEM
 23396  	}
 23397  	libc.X__builtin___memset_chk(tls, pConfig, 0, uint64(unsafe.Sizeof(EditDist3Config{})), libc.X__builtin_object_size(tls, pConfig, 0))
 23398  	rc = sqlite3.Xsqlite3_create_function_v2(tls, db, ts+7179,
 23399  		2, SQLITE_UTF8|SQLITE_DETERMINISTIC, pConfig,
 23400  		*(*uintptr)(unsafe.Pointer(&struct {
 23401  			f func(*libc.TLS, uintptr, int32, uintptr)
 23402  		}{editDist3SqlFunc})), uintptr(0), uintptr(0), uintptr(0))
 23403  	if rc == SQLITE_OK {
 23404  		rc = sqlite3.Xsqlite3_create_function_v2(tls, db, ts+7179,
 23405  			3, SQLITE_UTF8|SQLITE_DETERMINISTIC, pConfig,
 23406  			*(*uintptr)(unsafe.Pointer(&struct {
 23407  				f func(*libc.TLS, uintptr, int32, uintptr)
 23408  			}{editDist3SqlFunc})), uintptr(0), uintptr(0), uintptr(0))
 23409  	}
 23410  	if rc == SQLITE_OK {
 23411  		rc = sqlite3.Xsqlite3_create_function_v2(tls, db, ts+7179,
 23412  			1, SQLITE_UTF8|SQLITE_DETERMINISTIC, pConfig,
 23413  			*(*uintptr)(unsafe.Pointer(&struct {
 23414  				f func(*libc.TLS, uintptr, int32, uintptr)
 23415  			}{editDist3SqlFunc})), uintptr(0), uintptr(0), *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{editDist3ConfigDelete})))
 23416  	} else {
 23417  		sqlite3.Xsqlite3_free(tls, pConfig)
 23418  	}
 23419  	return rc
 23420  }
 23421  
 23422  var sqlite3Utf8Trans1 = [64]uint8{
 23423  	uint8(0x00), uint8(0x01), uint8(0x02), uint8(0x03), uint8(0x04), uint8(0x05), uint8(0x06), uint8(0x07),
 23424  	uint8(0x08), uint8(0x09), uint8(0x0a), uint8(0x0b), uint8(0x0c), uint8(0x0d), uint8(0x0e), uint8(0x0f),
 23425  	uint8(0x10), uint8(0x11), uint8(0x12), uint8(0x13), uint8(0x14), uint8(0x15), uint8(0x16), uint8(0x17),
 23426  	uint8(0x18), uint8(0x19), uint8(0x1a), uint8(0x1b), uint8(0x1c), uint8(0x1d), uint8(0x1e), uint8(0x1f),
 23427  	uint8(0x00), uint8(0x01), uint8(0x02), uint8(0x03), uint8(0x04), uint8(0x05), uint8(0x06), uint8(0x07),
 23428  	uint8(0x08), uint8(0x09), uint8(0x0a), uint8(0x0b), uint8(0x0c), uint8(0x0d), uint8(0x0e), uint8(0x0f),
 23429  	uint8(0x00), uint8(0x01), uint8(0x02), uint8(0x03), uint8(0x04), uint8(0x05), uint8(0x06), uint8(0x07),
 23430  	uint8(0x00), uint8(0x01), uint8(0x02), uint8(0x03), uint8(0x00), uint8(0x01), uint8(0x00), uint8(0x00),
 23431  }
 23432  
 23433  func utf8Read(tls *libc.TLS, z uintptr, n int32, pSize uintptr) int32 {
 23434  	var c int32
 23435  	var i int32
 23436  
 23437  	if 0 != 0 {
 23438  		c = libc.AssignInt32(&i, 0)
 23439  	} else {
 23440  		c = int32(*(*uint8)(unsafe.Pointer(z)))
 23441  		i = 1
 23442  		if c >= 0xc0 {
 23443  			c = int32(sqlite3Utf8Trans1[c-0xc0])
 23444  			for i < n && int32(*(*uint8)(unsafe.Pointer(z + uintptr(i))))&0xc0 == 0x80 {
 23445  				c = c<<6 + 0x3f&int32(*(*uint8)(unsafe.Pointer(z + uintptr(libc.PostIncInt32(&i, 1)))))
 23446  			}
 23447  		}
 23448  	}
 23449  	*(*int32)(unsafe.Pointer(pSize)) = i
 23450  	return c
 23451  }
 23452  
 23453  func utf8Charlen(tls *libc.TLS, zIn uintptr, nIn int32) int32 {
 23454  	bp := tls.Alloc(4)
 23455  	defer tls.Free(4)
 23456  
 23457  	var i int32
 23458  	var nChar int32 = 0
 23459  	for i = 0; i < nIn; nChar++ {
 23460  		utf8Read(tls, zIn+uintptr(i), nIn-i, bp)
 23461  		i = i + *(*int32)(unsafe.Pointer(bp))
 23462  	}
 23463  	return nChar
 23464  }
 23465  
 23466  type Transliteration1 = struct {
 23467  	FcFrom uint16
 23468  	FcTo0  uint8
 23469  	FcTo1  uint8
 23470  	FcTo2  uint8
 23471  	FcTo3  uint8
 23472  }
 23473  
 23474  type Transliteration = Transliteration1
 23475  
 23476  var translit = [389]Transliteration{
 23477  	{FcFrom: uint16(0x00A0), FcTo0: uint8(0x20)},
 23478  	{FcFrom: uint16(0x00B5), FcTo0: uint8(0x75)},
 23479  	{FcFrom: uint16(0x00C0), FcTo0: uint8(0x41)},
 23480  	{FcFrom: uint16(0x00C1), FcTo0: uint8(0x41)},
 23481  	{FcFrom: uint16(0x00C2), FcTo0: uint8(0x41)},
 23482  	{FcFrom: uint16(0x00C3), FcTo0: uint8(0x41)},
 23483  	{FcFrom: uint16(0x00C4), FcTo0: uint8(0x41), FcTo1: uint8(0x65)},
 23484  	{FcFrom: uint16(0x00C5), FcTo0: uint8(0x41), FcTo1: uint8(0x61)},
 23485  	{FcFrom: uint16(0x00C6), FcTo0: uint8(0x41), FcTo1: uint8(0x45)},
 23486  	{FcFrom: uint16(0x00C7), FcTo0: uint8(0x43)},
 23487  	{FcFrom: uint16(0x00C8), FcTo0: uint8(0x45)},
 23488  	{FcFrom: uint16(0x00C9), FcTo0: uint8(0x45)},
 23489  	{FcFrom: uint16(0x00CA), FcTo0: uint8(0x45)},
 23490  	{FcFrom: uint16(0x00CB), FcTo0: uint8(0x45)},
 23491  	{FcFrom: uint16(0x00CC), FcTo0: uint8(0x49)},
 23492  	{FcFrom: uint16(0x00CD), FcTo0: uint8(0x49)},
 23493  	{FcFrom: uint16(0x00CE), FcTo0: uint8(0x49)},
 23494  	{FcFrom: uint16(0x00CF), FcTo0: uint8(0x49)},
 23495  	{FcFrom: uint16(0x00D0), FcTo0: uint8(0x44)},
 23496  	{FcFrom: uint16(0x00D1), FcTo0: uint8(0x4E)},
 23497  	{FcFrom: uint16(0x00D2), FcTo0: uint8(0x4F)},
 23498  	{FcFrom: uint16(0x00D3), FcTo0: uint8(0x4F)},
 23499  	{FcFrom: uint16(0x00D4), FcTo0: uint8(0x4F)},
 23500  	{FcFrom: uint16(0x00D5), FcTo0: uint8(0x4F)},
 23501  	{FcFrom: uint16(0x00D6), FcTo0: uint8(0x4F), FcTo1: uint8(0x65)},
 23502  	{FcFrom: uint16(0x00D7), FcTo0: uint8(0x78)},
 23503  	{FcFrom: uint16(0x00D8), FcTo0: uint8(0x4F)},
 23504  	{FcFrom: uint16(0x00D9), FcTo0: uint8(0x55)},
 23505  	{FcFrom: uint16(0x00DA), FcTo0: uint8(0x55)},
 23506  	{FcFrom: uint16(0x00DB), FcTo0: uint8(0x55)},
 23507  	{FcFrom: uint16(0x00DC), FcTo0: uint8(0x55), FcTo1: uint8(0x65)},
 23508  	{FcFrom: uint16(0x00DD), FcTo0: uint8(0x59)},
 23509  	{FcFrom: uint16(0x00DE), FcTo0: uint8(0x54), FcTo1: uint8(0x68)},
 23510  	{FcFrom: uint16(0x00DF), FcTo0: uint8(0x73), FcTo1: uint8(0x73)},
 23511  	{FcFrom: uint16(0x00E0), FcTo0: uint8(0x61)},
 23512  	{FcFrom: uint16(0x00E1), FcTo0: uint8(0x61)},
 23513  	{FcFrom: uint16(0x00E2), FcTo0: uint8(0x61)},
 23514  	{FcFrom: uint16(0x00E3), FcTo0: uint8(0x61)},
 23515  	{FcFrom: uint16(0x00E4), FcTo0: uint8(0x61), FcTo1: uint8(0x65)},
 23516  	{FcFrom: uint16(0x00E5), FcTo0: uint8(0x61), FcTo1: uint8(0x61)},
 23517  	{FcFrom: uint16(0x00E6), FcTo0: uint8(0x61), FcTo1: uint8(0x65)},
 23518  	{FcFrom: uint16(0x00E7), FcTo0: uint8(0x63)},
 23519  	{FcFrom: uint16(0x00E8), FcTo0: uint8(0x65)},
 23520  	{FcFrom: uint16(0x00E9), FcTo0: uint8(0x65)},
 23521  	{FcFrom: uint16(0x00EA), FcTo0: uint8(0x65)},
 23522  	{FcFrom: uint16(0x00EB), FcTo0: uint8(0x65)},
 23523  	{FcFrom: uint16(0x00EC), FcTo0: uint8(0x69)},
 23524  	{FcFrom: uint16(0x00ED), FcTo0: uint8(0x69)},
 23525  	{FcFrom: uint16(0x00EE), FcTo0: uint8(0x69)},
 23526  	{FcFrom: uint16(0x00EF), FcTo0: uint8(0x69)},
 23527  	{FcFrom: uint16(0x00F0), FcTo0: uint8(0x64)},
 23528  	{FcFrom: uint16(0x00F1), FcTo0: uint8(0x6E)},
 23529  	{FcFrom: uint16(0x00F2), FcTo0: uint8(0x6F)},
 23530  	{FcFrom: uint16(0x00F3), FcTo0: uint8(0x6F)},
 23531  	{FcFrom: uint16(0x00F4), FcTo0: uint8(0x6F)},
 23532  	{FcFrom: uint16(0x00F5), FcTo0: uint8(0x6F)},
 23533  	{FcFrom: uint16(0x00F6), FcTo0: uint8(0x6F), FcTo1: uint8(0x65)},
 23534  	{FcFrom: uint16(0x00F7), FcTo0: uint8(0x3A)},
 23535  	{FcFrom: uint16(0x00F8), FcTo0: uint8(0x6F)},
 23536  	{FcFrom: uint16(0x00F9), FcTo0: uint8(0x75)},
 23537  	{FcFrom: uint16(0x00FA), FcTo0: uint8(0x75)},
 23538  	{FcFrom: uint16(0x00FB), FcTo0: uint8(0x75)},
 23539  	{FcFrom: uint16(0x00FC), FcTo0: uint8(0x75), FcTo1: uint8(0x65)},
 23540  	{FcFrom: uint16(0x00FD), FcTo0: uint8(0x79)},
 23541  	{FcFrom: uint16(0x00FE), FcTo0: uint8(0x74), FcTo1: uint8(0x68)},
 23542  	{FcFrom: uint16(0x00FF), FcTo0: uint8(0x79)},
 23543  	{FcFrom: uint16(0x0100), FcTo0: uint8(0x41)},
 23544  	{FcFrom: uint16(0x0101), FcTo0: uint8(0x61)},
 23545  	{FcFrom: uint16(0x0102), FcTo0: uint8(0x41)},
 23546  	{FcFrom: uint16(0x0103), FcTo0: uint8(0x61)},
 23547  	{FcFrom: uint16(0x0104), FcTo0: uint8(0x41)},
 23548  	{FcFrom: uint16(0x0105), FcTo0: uint8(0x61)},
 23549  	{FcFrom: uint16(0x0106), FcTo0: uint8(0x43)},
 23550  	{FcFrom: uint16(0x0107), FcTo0: uint8(0x63)},
 23551  	{FcFrom: uint16(0x0108), FcTo0: uint8(0x43), FcTo1: uint8(0x68)},
 23552  	{FcFrom: uint16(0x0109), FcTo0: uint8(0x63), FcTo1: uint8(0x68)},
 23553  	{FcFrom: uint16(0x010A), FcTo0: uint8(0x43)},
 23554  	{FcFrom: uint16(0x010B), FcTo0: uint8(0x63)},
 23555  	{FcFrom: uint16(0x010C), FcTo0: uint8(0x43)},
 23556  	{FcFrom: uint16(0x010D), FcTo0: uint8(0x63)},
 23557  	{FcFrom: uint16(0x010E), FcTo0: uint8(0x44)},
 23558  	{FcFrom: uint16(0x010F), FcTo0: uint8(0x64)},
 23559  	{FcFrom: uint16(0x0110), FcTo0: uint8(0x44)},
 23560  	{FcFrom: uint16(0x0111), FcTo0: uint8(0x64)},
 23561  	{FcFrom: uint16(0x0112), FcTo0: uint8(0x45)},
 23562  	{FcFrom: uint16(0x0113), FcTo0: uint8(0x65)},
 23563  	{FcFrom: uint16(0x0114), FcTo0: uint8(0x45)},
 23564  	{FcFrom: uint16(0x0115), FcTo0: uint8(0x65)},
 23565  	{FcFrom: uint16(0x0116), FcTo0: uint8(0x45)},
 23566  	{FcFrom: uint16(0x0117), FcTo0: uint8(0x65)},
 23567  	{FcFrom: uint16(0x0118), FcTo0: uint8(0x45)},
 23568  	{FcFrom: uint16(0x0119), FcTo0: uint8(0x65)},
 23569  	{FcFrom: uint16(0x011A), FcTo0: uint8(0x45)},
 23570  	{FcFrom: uint16(0x011B), FcTo0: uint8(0x65)},
 23571  	{FcFrom: uint16(0x011C), FcTo0: uint8(0x47), FcTo1: uint8(0x68)},
 23572  	{FcFrom: uint16(0x011D), FcTo0: uint8(0x67), FcTo1: uint8(0x68)},
 23573  	{FcFrom: uint16(0x011E), FcTo0: uint8(0x47)},
 23574  	{FcFrom: uint16(0x011F), FcTo0: uint8(0x67)},
 23575  	{FcFrom: uint16(0x0120), FcTo0: uint8(0x47)},
 23576  	{FcFrom: uint16(0x0121), FcTo0: uint8(0x67)},
 23577  	{FcFrom: uint16(0x0122), FcTo0: uint8(0x47)},
 23578  	{FcFrom: uint16(0x0123), FcTo0: uint8(0x67)},
 23579  	{FcFrom: uint16(0x0124), FcTo0: uint8(0x48), FcTo1: uint8(0x68)},
 23580  	{FcFrom: uint16(0x0125), FcTo0: uint8(0x68), FcTo1: uint8(0x68)},
 23581  	{FcFrom: uint16(0x0126), FcTo0: uint8(0x48)},
 23582  	{FcFrom: uint16(0x0127), FcTo0: uint8(0x68)},
 23583  	{FcFrom: uint16(0x0128), FcTo0: uint8(0x49)},
 23584  	{FcFrom: uint16(0x0129), FcTo0: uint8(0x69)},
 23585  	{FcFrom: uint16(0x012A), FcTo0: uint8(0x49)},
 23586  	{FcFrom: uint16(0x012B), FcTo0: uint8(0x69)},
 23587  	{FcFrom: uint16(0x012C), FcTo0: uint8(0x49)},
 23588  	{FcFrom: uint16(0x012D), FcTo0: uint8(0x69)},
 23589  	{FcFrom: uint16(0x012E), FcTo0: uint8(0x49)},
 23590  	{FcFrom: uint16(0x012F), FcTo0: uint8(0x69)},
 23591  	{FcFrom: uint16(0x0130), FcTo0: uint8(0x49)},
 23592  	{FcFrom: uint16(0x0131), FcTo0: uint8(0x69)},
 23593  	{FcFrom: uint16(0x0132), FcTo0: uint8(0x49), FcTo1: uint8(0x4A)},
 23594  	{FcFrom: uint16(0x0133), FcTo0: uint8(0x69), FcTo1: uint8(0x6A)},
 23595  	{FcFrom: uint16(0x0134), FcTo0: uint8(0x4A), FcTo1: uint8(0x68)},
 23596  	{FcFrom: uint16(0x0135), FcTo0: uint8(0x6A), FcTo1: uint8(0x68)},
 23597  	{FcFrom: uint16(0x0136), FcTo0: uint8(0x4B)},
 23598  	{FcFrom: uint16(0x0137), FcTo0: uint8(0x6B)},
 23599  	{FcFrom: uint16(0x0138), FcTo0: uint8(0x6B)},
 23600  	{FcFrom: uint16(0x0139), FcTo0: uint8(0x4C)},
 23601  	{FcFrom: uint16(0x013A), FcTo0: uint8(0x6C)},
 23602  	{FcFrom: uint16(0x013B), FcTo0: uint8(0x4C)},
 23603  	{FcFrom: uint16(0x013C), FcTo0: uint8(0x6C)},
 23604  	{FcFrom: uint16(0x013D), FcTo0: uint8(0x4C)},
 23605  	{FcFrom: uint16(0x013E), FcTo0: uint8(0x6C)},
 23606  	{FcFrom: uint16(0x013F), FcTo0: uint8(0x4C), FcTo1: uint8(0x2E)},
 23607  	{FcFrom: uint16(0x0140), FcTo0: uint8(0x6C), FcTo1: uint8(0x2E)},
 23608  	{FcFrom: uint16(0x0141), FcTo0: uint8(0x4C)},
 23609  	{FcFrom: uint16(0x0142), FcTo0: uint8(0x6C)},
 23610  	{FcFrom: uint16(0x0143), FcTo0: uint8(0x4E)},
 23611  	{FcFrom: uint16(0x0144), FcTo0: uint8(0x6E)},
 23612  	{FcFrom: uint16(0x0145), FcTo0: uint8(0x4E)},
 23613  	{FcFrom: uint16(0x0146), FcTo0: uint8(0x6E)},
 23614  	{FcFrom: uint16(0x0147), FcTo0: uint8(0x4E)},
 23615  	{FcFrom: uint16(0x0148), FcTo0: uint8(0x6E)},
 23616  	{FcFrom: uint16(0x0149), FcTo0: uint8(0x27), FcTo1: uint8(0x6E)},
 23617  	{FcFrom: uint16(0x014A), FcTo0: uint8(0x4E), FcTo1: uint8(0x47)},
 23618  	{FcFrom: uint16(0x014B), FcTo0: uint8(0x6E), FcTo1: uint8(0x67)},
 23619  	{FcFrom: uint16(0x014C), FcTo0: uint8(0x4F)},
 23620  	{FcFrom: uint16(0x014D), FcTo0: uint8(0x6F)},
 23621  	{FcFrom: uint16(0x014E), FcTo0: uint8(0x4F)},
 23622  	{FcFrom: uint16(0x014F), FcTo0: uint8(0x6F)},
 23623  	{FcFrom: uint16(0x0150), FcTo0: uint8(0x4F)},
 23624  	{FcFrom: uint16(0x0151), FcTo0: uint8(0x6F)},
 23625  	{FcFrom: uint16(0x0152), FcTo0: uint8(0x4F), FcTo1: uint8(0x45)},
 23626  	{FcFrom: uint16(0x0153), FcTo0: uint8(0x6F), FcTo1: uint8(0x65)},
 23627  	{FcFrom: uint16(0x0154), FcTo0: uint8(0x52)},
 23628  	{FcFrom: uint16(0x0155), FcTo0: uint8(0x72)},
 23629  	{FcFrom: uint16(0x0156), FcTo0: uint8(0x52)},
 23630  	{FcFrom: uint16(0x0157), FcTo0: uint8(0x72)},
 23631  	{FcFrom: uint16(0x0158), FcTo0: uint8(0x52)},
 23632  	{FcFrom: uint16(0x0159), FcTo0: uint8(0x72)},
 23633  	{FcFrom: uint16(0x015A), FcTo0: uint8(0x53)},
 23634  	{FcFrom: uint16(0x015B), FcTo0: uint8(0x73)},
 23635  	{FcFrom: uint16(0x015C), FcTo0: uint8(0x53), FcTo1: uint8(0x68)},
 23636  	{FcFrom: uint16(0x015D), FcTo0: uint8(0x73), FcTo1: uint8(0x68)},
 23637  	{FcFrom: uint16(0x015E), FcTo0: uint8(0x53)},
 23638  	{FcFrom: uint16(0x015F), FcTo0: uint8(0x73)},
 23639  	{FcFrom: uint16(0x0160), FcTo0: uint8(0x53)},
 23640  	{FcFrom: uint16(0x0161), FcTo0: uint8(0x73)},
 23641  	{FcFrom: uint16(0x0162), FcTo0: uint8(0x54)},
 23642  	{FcFrom: uint16(0x0163), FcTo0: uint8(0x74)},
 23643  	{FcFrom: uint16(0x0164), FcTo0: uint8(0x54)},
 23644  	{FcFrom: uint16(0x0165), FcTo0: uint8(0x74)},
 23645  	{FcFrom: uint16(0x0166), FcTo0: uint8(0x54)},
 23646  	{FcFrom: uint16(0x0167), FcTo0: uint8(0x74)},
 23647  	{FcFrom: uint16(0x0168), FcTo0: uint8(0x55)},
 23648  	{FcFrom: uint16(0x0169), FcTo0: uint8(0x75)},
 23649  	{FcFrom: uint16(0x016A), FcTo0: uint8(0x55)},
 23650  	{FcFrom: uint16(0x016B), FcTo0: uint8(0x75)},
 23651  	{FcFrom: uint16(0x016C), FcTo0: uint8(0x55)},
 23652  	{FcFrom: uint16(0x016D), FcTo0: uint8(0x75)},
 23653  	{FcFrom: uint16(0x016E), FcTo0: uint8(0x55)},
 23654  	{FcFrom: uint16(0x016F), FcTo0: uint8(0x75)},
 23655  	{FcFrom: uint16(0x0170), FcTo0: uint8(0x55)},
 23656  	{FcFrom: uint16(0x0171), FcTo0: uint8(0x75)},
 23657  	{FcFrom: uint16(0x0172), FcTo0: uint8(0x55)},
 23658  	{FcFrom: uint16(0x0173), FcTo0: uint8(0x75)},
 23659  	{FcFrom: uint16(0x0174), FcTo0: uint8(0x57)},
 23660  	{FcFrom: uint16(0x0175), FcTo0: uint8(0x77)},
 23661  	{FcFrom: uint16(0x0176), FcTo0: uint8(0x59)},
 23662  	{FcFrom: uint16(0x0177), FcTo0: uint8(0x79)},
 23663  	{FcFrom: uint16(0x0178), FcTo0: uint8(0x59)},
 23664  	{FcFrom: uint16(0x0179), FcTo0: uint8(0x5A)},
 23665  	{FcFrom: uint16(0x017A), FcTo0: uint8(0x7A)},
 23666  	{FcFrom: uint16(0x017B), FcTo0: uint8(0x5A)},
 23667  	{FcFrom: uint16(0x017C), FcTo0: uint8(0x7A)},
 23668  	{FcFrom: uint16(0x017D), FcTo0: uint8(0x5A)},
 23669  	{FcFrom: uint16(0x017E), FcTo0: uint8(0x7A)},
 23670  	{FcFrom: uint16(0x017F), FcTo0: uint8(0x73)},
 23671  	{FcFrom: uint16(0x0192), FcTo0: uint8(0x66)},
 23672  	{FcFrom: uint16(0x0218), FcTo0: uint8(0x53)},
 23673  	{FcFrom: uint16(0x0219), FcTo0: uint8(0x73)},
 23674  	{FcFrom: uint16(0x021A), FcTo0: uint8(0x54)},
 23675  	{FcFrom: uint16(0x021B), FcTo0: uint8(0x74)},
 23676  	{FcFrom: uint16(0x0386), FcTo0: uint8(0x41)},
 23677  	{FcFrom: uint16(0x0388), FcTo0: uint8(0x45)},
 23678  	{FcFrom: uint16(0x0389), FcTo0: uint8(0x49)},
 23679  	{FcFrom: uint16(0x038A), FcTo0: uint8(0x49)},
 23680  	{FcFrom: uint16(0x038C), FcTo0: uint8(0x4f)},
 23681  	{FcFrom: uint16(0x038E), FcTo0: uint8(0x59)},
 23682  	{FcFrom: uint16(0x038F), FcTo0: uint8(0x4f)},
 23683  	{FcFrom: uint16(0x0390), FcTo0: uint8(0x69)},
 23684  	{FcFrom: uint16(0x0391), FcTo0: uint8(0x41)},
 23685  	{FcFrom: uint16(0x0392), FcTo0: uint8(0x42)},
 23686  	{FcFrom: uint16(0x0393), FcTo0: uint8(0x47)},
 23687  	{FcFrom: uint16(0x0394), FcTo0: uint8(0x44)},
 23688  	{FcFrom: uint16(0x0395), FcTo0: uint8(0x45)},
 23689  	{FcFrom: uint16(0x0396), FcTo0: uint8(0x5a)},
 23690  	{FcFrom: uint16(0x0397), FcTo0: uint8(0x49)},
 23691  	{FcFrom: uint16(0x0398), FcTo0: uint8(0x54), FcTo1: uint8(0x68)},
 23692  	{FcFrom: uint16(0x0399), FcTo0: uint8(0x49)},
 23693  	{FcFrom: uint16(0x039A), FcTo0: uint8(0x4b)},
 23694  	{FcFrom: uint16(0x039B), FcTo0: uint8(0x4c)},
 23695  	{FcFrom: uint16(0x039C), FcTo0: uint8(0x4d)},
 23696  	{FcFrom: uint16(0x039D), FcTo0: uint8(0x4e)},
 23697  	{FcFrom: uint16(0x039E), FcTo0: uint8(0x58)},
 23698  	{FcFrom: uint16(0x039F), FcTo0: uint8(0x4f)},
 23699  	{FcFrom: uint16(0x03A0), FcTo0: uint8(0x50)},
 23700  	{FcFrom: uint16(0x03A1), FcTo0: uint8(0x52)},
 23701  	{FcFrom: uint16(0x03A3), FcTo0: uint8(0x53)},
 23702  	{FcFrom: uint16(0x03A4), FcTo0: uint8(0x54)},
 23703  	{FcFrom: uint16(0x03A5), FcTo0: uint8(0x59)},
 23704  	{FcFrom: uint16(0x03A6), FcTo0: uint8(0x46)},
 23705  	{FcFrom: uint16(0x03A7), FcTo0: uint8(0x43), FcTo1: uint8(0x68)},
 23706  	{FcFrom: uint16(0x03A8), FcTo0: uint8(0x50), FcTo1: uint8(0x73)},
 23707  	{FcFrom: uint16(0x03A9), FcTo0: uint8(0x4f)},
 23708  	{FcFrom: uint16(0x03AA), FcTo0: uint8(0x49)},
 23709  	{FcFrom: uint16(0x03AB), FcTo0: uint8(0x59)},
 23710  	{FcFrom: uint16(0x03AC), FcTo0: uint8(0x61)},
 23711  	{FcFrom: uint16(0x03AD), FcTo0: uint8(0x65)},
 23712  	{FcFrom: uint16(0x03AE), FcTo0: uint8(0x69)},
 23713  	{FcFrom: uint16(0x03AF), FcTo0: uint8(0x69)},
 23714  	{FcFrom: uint16(0x03B1), FcTo0: uint8(0x61)},
 23715  	{FcFrom: uint16(0x03B2), FcTo0: uint8(0x62)},
 23716  	{FcFrom: uint16(0x03B3), FcTo0: uint8(0x67)},
 23717  	{FcFrom: uint16(0x03B4), FcTo0: uint8(0x64)},
 23718  	{FcFrom: uint16(0x03B5), FcTo0: uint8(0x65)},
 23719  	{FcFrom: uint16(0x03B6), FcTo0: uint8(0x7a)},
 23720  	{FcFrom: uint16(0x03B7), FcTo0: uint8(0x69)},
 23721  	{FcFrom: uint16(0x03B8), FcTo0: uint8(0x74), FcTo1: uint8(0x68)},
 23722  	{FcFrom: uint16(0x03B9), FcTo0: uint8(0x69)},
 23723  	{FcFrom: uint16(0x03BA), FcTo0: uint8(0x6b)},
 23724  	{FcFrom: uint16(0x03BB), FcTo0: uint8(0x6c)},
 23725  	{FcFrom: uint16(0x03BC), FcTo0: uint8(0x6d)},
 23726  	{FcFrom: uint16(0x03BD), FcTo0: uint8(0x6e)},
 23727  	{FcFrom: uint16(0x03BE), FcTo0: uint8(0x78)},
 23728  	{FcFrom: uint16(0x03BF), FcTo0: uint8(0x6f)},
 23729  	{FcFrom: uint16(0x03C0), FcTo0: uint8(0x70)},
 23730  	{FcFrom: uint16(0x03C1), FcTo0: uint8(0x72)},
 23731  	{FcFrom: uint16(0x03C3), FcTo0: uint8(0x73)},
 23732  	{FcFrom: uint16(0x03C4), FcTo0: uint8(0x74)},
 23733  	{FcFrom: uint16(0x03C5), FcTo0: uint8(0x79)},
 23734  	{FcFrom: uint16(0x03C6), FcTo0: uint8(0x66)},
 23735  	{FcFrom: uint16(0x03C7), FcTo0: uint8(0x63), FcTo1: uint8(0x68)},
 23736  	{FcFrom: uint16(0x03C8), FcTo0: uint8(0x70), FcTo1: uint8(0x73)},
 23737  	{FcFrom: uint16(0x03C9), FcTo0: uint8(0x6f)},
 23738  	{FcFrom: uint16(0x03CA), FcTo0: uint8(0x69)},
 23739  	{FcFrom: uint16(0x03CB), FcTo0: uint8(0x79)},
 23740  	{FcFrom: uint16(0x03CC), FcTo0: uint8(0x6f)},
 23741  	{FcFrom: uint16(0x03CD), FcTo0: uint8(0x79)},
 23742  	{FcFrom: uint16(0x03CE), FcTo0: uint8(0x69)},
 23743  	{FcFrom: uint16(0x0400), FcTo0: uint8(0x45)},
 23744  	{FcFrom: uint16(0x0401), FcTo0: uint8(0x45)},
 23745  	{FcFrom: uint16(0x0402), FcTo0: uint8(0x44)},
 23746  	{FcFrom: uint16(0x0403), FcTo0: uint8(0x47)},
 23747  	{FcFrom: uint16(0x0404), FcTo0: uint8(0x45)},
 23748  	{FcFrom: uint16(0x0405), FcTo0: uint8(0x5a)},
 23749  	{FcFrom: uint16(0x0406), FcTo0: uint8(0x49)},
 23750  	{FcFrom: uint16(0x0407), FcTo0: uint8(0x49)},
 23751  	{FcFrom: uint16(0x0408), FcTo0: uint8(0x4a)},
 23752  	{FcFrom: uint16(0x0409), FcTo0: uint8(0x49)},
 23753  	{FcFrom: uint16(0x040A), FcTo0: uint8(0x4e)},
 23754  	{FcFrom: uint16(0x040B), FcTo0: uint8(0x44)},
 23755  	{FcFrom: uint16(0x040C), FcTo0: uint8(0x4b)},
 23756  	{FcFrom: uint16(0x040D), FcTo0: uint8(0x49)},
 23757  	{FcFrom: uint16(0x040E), FcTo0: uint8(0x55)},
 23758  	{FcFrom: uint16(0x040F), FcTo0: uint8(0x44)},
 23759  	{FcFrom: uint16(0x0410), FcTo0: uint8(0x41)},
 23760  	{FcFrom: uint16(0x0411), FcTo0: uint8(0x42)},
 23761  	{FcFrom: uint16(0x0412), FcTo0: uint8(0x56)},
 23762  	{FcFrom: uint16(0x0413), FcTo0: uint8(0x47)},
 23763  	{FcFrom: uint16(0x0414), FcTo0: uint8(0x44)},
 23764  	{FcFrom: uint16(0x0415), FcTo0: uint8(0x45)},
 23765  	{FcFrom: uint16(0x0416), FcTo0: uint8(0x5a), FcTo1: uint8(0x68)},
 23766  	{FcFrom: uint16(0x0417), FcTo0: uint8(0x5a)},
 23767  	{FcFrom: uint16(0x0418), FcTo0: uint8(0x49)},
 23768  	{FcFrom: uint16(0x0419), FcTo0: uint8(0x49)},
 23769  	{FcFrom: uint16(0x041A), FcTo0: uint8(0x4b)},
 23770  	{FcFrom: uint16(0x041B), FcTo0: uint8(0x4c)},
 23771  	{FcFrom: uint16(0x041C), FcTo0: uint8(0x4d)},
 23772  	{FcFrom: uint16(0x041D), FcTo0: uint8(0x4e)},
 23773  	{FcFrom: uint16(0x041E), FcTo0: uint8(0x4f)},
 23774  	{FcFrom: uint16(0x041F), FcTo0: uint8(0x50)},
 23775  	{FcFrom: uint16(0x0420), FcTo0: uint8(0x52)},
 23776  	{FcFrom: uint16(0x0421), FcTo0: uint8(0x53)},
 23777  	{FcFrom: uint16(0x0422), FcTo0: uint8(0x54)},
 23778  	{FcFrom: uint16(0x0423), FcTo0: uint8(0x55)},
 23779  	{FcFrom: uint16(0x0424), FcTo0: uint8(0x46)},
 23780  	{FcFrom: uint16(0x0425), FcTo0: uint8(0x4b), FcTo1: uint8(0x68)},
 23781  	{FcFrom: uint16(0x0426), FcTo0: uint8(0x54), FcTo1: uint8(0x63)},
 23782  	{FcFrom: uint16(0x0427), FcTo0: uint8(0x43), FcTo1: uint8(0x68)},
 23783  	{FcFrom: uint16(0x0428), FcTo0: uint8(0x53), FcTo1: uint8(0x68)},
 23784  	{FcFrom: uint16(0x0429), FcTo0: uint8(0x53), FcTo1: uint8(0x68), FcTo2: uint8(0x63), FcTo3: uint8(0x68)},
 23785  	{FcFrom: uint16(0x042A), FcTo0: uint8(0x61)},
 23786  	{FcFrom: uint16(0x042B), FcTo0: uint8(0x59)},
 23787  	{FcFrom: uint16(0x042C), FcTo0: uint8(0x59)},
 23788  	{FcFrom: uint16(0x042D), FcTo0: uint8(0x45)},
 23789  	{FcFrom: uint16(0x042E), FcTo0: uint8(0x49), FcTo1: uint8(0x75)},
 23790  	{FcFrom: uint16(0x042F), FcTo0: uint8(0x49), FcTo1: uint8(0x61)},
 23791  	{FcFrom: uint16(0x0430), FcTo0: uint8(0x61)},
 23792  	{FcFrom: uint16(0x0431), FcTo0: uint8(0x62)},
 23793  	{FcFrom: uint16(0x0432), FcTo0: uint8(0x76)},
 23794  	{FcFrom: uint16(0x0433), FcTo0: uint8(0x67)},
 23795  	{FcFrom: uint16(0x0434), FcTo0: uint8(0x64)},
 23796  	{FcFrom: uint16(0x0435), FcTo0: uint8(0x65)},
 23797  	{FcFrom: uint16(0x0436), FcTo0: uint8(0x7a), FcTo1: uint8(0x68)},
 23798  	{FcFrom: uint16(0x0437), FcTo0: uint8(0x7a)},
 23799  	{FcFrom: uint16(0x0438), FcTo0: uint8(0x69)},
 23800  	{FcFrom: uint16(0x0439), FcTo0: uint8(0x69)},
 23801  	{FcFrom: uint16(0x043A), FcTo0: uint8(0x6b)},
 23802  	{FcFrom: uint16(0x043B), FcTo0: uint8(0x6c)},
 23803  	{FcFrom: uint16(0x043C), FcTo0: uint8(0x6d)},
 23804  	{FcFrom: uint16(0x043D), FcTo0: uint8(0x6e)},
 23805  	{FcFrom: uint16(0x043E), FcTo0: uint8(0x6f)},
 23806  	{FcFrom: uint16(0x043F), FcTo0: uint8(0x70)},
 23807  	{FcFrom: uint16(0x0440), FcTo0: uint8(0x72)},
 23808  	{FcFrom: uint16(0x0441), FcTo0: uint8(0x73)},
 23809  	{FcFrom: uint16(0x0442), FcTo0: uint8(0x74)},
 23810  	{FcFrom: uint16(0x0443), FcTo0: uint8(0x75)},
 23811  	{FcFrom: uint16(0x0444), FcTo0: uint8(0x66)},
 23812  	{FcFrom: uint16(0x0445), FcTo0: uint8(0x6b), FcTo1: uint8(0x68)},
 23813  	{FcFrom: uint16(0x0446), FcTo0: uint8(0x74), FcTo1: uint8(0x63)},
 23814  	{FcFrom: uint16(0x0447), FcTo0: uint8(0x63), FcTo1: uint8(0x68)},
 23815  	{FcFrom: uint16(0x0448), FcTo0: uint8(0x73), FcTo1: uint8(0x68)},
 23816  	{FcFrom: uint16(0x0449), FcTo0: uint8(0x73), FcTo1: uint8(0x68), FcTo2: uint8(0x63), FcTo3: uint8(0x68)},
 23817  	{FcFrom: uint16(0x044A), FcTo0: uint8(0x61)},
 23818  	{FcFrom: uint16(0x044B), FcTo0: uint8(0x79)},
 23819  	{FcFrom: uint16(0x044C), FcTo0: uint8(0x79)},
 23820  	{FcFrom: uint16(0x044D), FcTo0: uint8(0x65)},
 23821  	{FcFrom: uint16(0x044E), FcTo0: uint8(0x69), FcTo1: uint8(0x75)},
 23822  	{FcFrom: uint16(0x044F), FcTo0: uint8(0x69), FcTo1: uint8(0x61)},
 23823  	{FcFrom: uint16(0x0450), FcTo0: uint8(0x65)},
 23824  	{FcFrom: uint16(0x0451), FcTo0: uint8(0x65)},
 23825  	{FcFrom: uint16(0x0452), FcTo0: uint8(0x64)},
 23826  	{FcFrom: uint16(0x0453), FcTo0: uint8(0x67)},
 23827  	{FcFrom: uint16(0x0454), FcTo0: uint8(0x65)},
 23828  	{FcFrom: uint16(0x0455), FcTo0: uint8(0x7a)},
 23829  	{FcFrom: uint16(0x0456), FcTo0: uint8(0x69)},
 23830  	{FcFrom: uint16(0x0457), FcTo0: uint8(0x69)},
 23831  	{FcFrom: uint16(0x0458), FcTo0: uint8(0x6a)},
 23832  	{FcFrom: uint16(0x0459), FcTo0: uint8(0x69)},
 23833  	{FcFrom: uint16(0x045A), FcTo0: uint8(0x6e)},
 23834  	{FcFrom: uint16(0x045B), FcTo0: uint8(0x64)},
 23835  	{FcFrom: uint16(0x045C), FcTo0: uint8(0x6b)},
 23836  	{FcFrom: uint16(0x045D), FcTo0: uint8(0x69)},
 23837  	{FcFrom: uint16(0x045E), FcTo0: uint8(0x75)},
 23838  	{FcFrom: uint16(0x045F), FcTo0: uint8(0x64)},
 23839  	{FcFrom: uint16(0x1E02), FcTo0: uint8(0x42)},
 23840  	{FcFrom: uint16(0x1E03), FcTo0: uint8(0x62)},
 23841  	{FcFrom: uint16(0x1E0A), FcTo0: uint8(0x44)},
 23842  	{FcFrom: uint16(0x1E0B), FcTo0: uint8(0x64)},
 23843  	{FcFrom: uint16(0x1E1E), FcTo0: uint8(0x46)},
 23844  	{FcFrom: uint16(0x1E1F), FcTo0: uint8(0x66)},
 23845  	{FcFrom: uint16(0x1E40), FcTo0: uint8(0x4D)},
 23846  	{FcFrom: uint16(0x1E41), FcTo0: uint8(0x6D)},
 23847  	{FcFrom: uint16(0x1E56), FcTo0: uint8(0x50)},
 23848  	{FcFrom: uint16(0x1E57), FcTo0: uint8(0x70)},
 23849  	{FcFrom: uint16(0x1E60), FcTo0: uint8(0x53)},
 23850  	{FcFrom: uint16(0x1E61), FcTo0: uint8(0x73)},
 23851  	{FcFrom: uint16(0x1E6A), FcTo0: uint8(0x54)},
 23852  	{FcFrom: uint16(0x1E6B), FcTo0: uint8(0x74)},
 23853  	{FcFrom: uint16(0x1E80), FcTo0: uint8(0x57)},
 23854  	{FcFrom: uint16(0x1E81), FcTo0: uint8(0x77)},
 23855  	{FcFrom: uint16(0x1E82), FcTo0: uint8(0x57)},
 23856  	{FcFrom: uint16(0x1E83), FcTo0: uint8(0x77)},
 23857  	{FcFrom: uint16(0x1E84), FcTo0: uint8(0x57)},
 23858  	{FcFrom: uint16(0x1E85), FcTo0: uint8(0x77)},
 23859  	{FcFrom: uint16(0x1EF2), FcTo0: uint8(0x59)},
 23860  	{FcFrom: uint16(0x1EF3), FcTo0: uint8(0x79)},
 23861  	{FcFrom: uint16(0xFB00), FcTo0: uint8(0x66), FcTo1: uint8(0x66)},
 23862  	{FcFrom: uint16(0xFB01), FcTo0: uint8(0x66), FcTo1: uint8(0x69)},
 23863  	{FcFrom: uint16(0xFB02), FcTo0: uint8(0x66), FcTo1: uint8(0x6C)},
 23864  	{FcFrom: uint16(0xFB05), FcTo0: uint8(0x73), FcTo1: uint8(0x74)},
 23865  	{FcFrom: uint16(0xFB06), FcTo0: uint8(0x73), FcTo1: uint8(0x74)},
 23866  }
 23867  
 23868  func spellfixFindTranslit(tls *libc.TLS, c int32, pxTop uintptr) uintptr {
 23869  	*(*int32)(unsafe.Pointer(pxTop)) = int32(uint64(unsafe.Sizeof(translit))/uint64(unsafe.Sizeof(Transliteration{})) - uint64(1))
 23870  	return uintptr(unsafe.Pointer(&translit))
 23871  }
 23872  
 23873  func transliterate(tls *libc.TLS, zIn uintptr, nIn int32) uintptr {
 23874  	bp := tls.Alloc(8)
 23875  	defer tls.Free(8)
 23876  
 23877  	var zOut uintptr = sqlite3.Xsqlite3_malloc64(tls, uint64(nIn*4+1))
 23878  	var c int32
 23879  
 23880  	var nOut int32
 23881  	if zOut == uintptr(0) {
 23882  		return uintptr(0)
 23883  	}
 23884  	nOut = 0
 23885  	for nIn > 0 {
 23886  		c = utf8Read(tls, zIn, nIn, bp)
 23887  		zIn += uintptr(*(*int32)(unsafe.Pointer(bp)))
 23888  		nIn = nIn - *(*int32)(unsafe.Pointer(bp))
 23889  		if c <= 127 {
 23890  			*(*uint8)(unsafe.Pointer(zOut + uintptr(libc.PostIncInt32(&nOut, 1)))) = uint8(c)
 23891  		} else {
 23892  			var xBtm int32
 23893  			var x int32
 23894  			var tbl uintptr = spellfixFindTranslit(tls, c, bp+4)
 23895  			xBtm = 0
 23896  			for *(*int32)(unsafe.Pointer(bp + 4)) >= xBtm {
 23897  				x = (*(*int32)(unsafe.Pointer(bp + 4)) + xBtm) / 2
 23898  				if int32((*Transliteration)(unsafe.Pointer(tbl+uintptr(x)*6)).FcFrom) == c {
 23899  					*(*uint8)(unsafe.Pointer(zOut + uintptr(libc.PostIncInt32(&nOut, 1)))) = (*Transliteration)(unsafe.Pointer(tbl + uintptr(x)*6)).FcTo0
 23900  					if (*Transliteration)(unsafe.Pointer(tbl+uintptr(x)*6)).FcTo1 != 0 {
 23901  						*(*uint8)(unsafe.Pointer(zOut + uintptr(libc.PostIncInt32(&nOut, 1)))) = (*Transliteration)(unsafe.Pointer(tbl + uintptr(x)*6)).FcTo1
 23902  						if (*Transliteration)(unsafe.Pointer(tbl+uintptr(x)*6)).FcTo2 != 0 {
 23903  							*(*uint8)(unsafe.Pointer(zOut + uintptr(libc.PostIncInt32(&nOut, 1)))) = (*Transliteration)(unsafe.Pointer(tbl + uintptr(x)*6)).FcTo2
 23904  							if (*Transliteration)(unsafe.Pointer(tbl+uintptr(x)*6)).FcTo3 != 0 {
 23905  								*(*uint8)(unsafe.Pointer(zOut + uintptr(libc.PostIncInt32(&nOut, 1)))) = (*Transliteration)(unsafe.Pointer(tbl + uintptr(x)*6)).FcTo3
 23906  							}
 23907  						}
 23908  					}
 23909  					c = 0
 23910  					break
 23911  				} else if int32((*Transliteration)(unsafe.Pointer(tbl+uintptr(x)*6)).FcFrom) > c {
 23912  					*(*int32)(unsafe.Pointer(bp + 4)) = x - 1
 23913  				} else {
 23914  					xBtm = x + 1
 23915  				}
 23916  			}
 23917  			if c != 0 {
 23918  				*(*uint8)(unsafe.Pointer(zOut + uintptr(libc.PostIncInt32(&nOut, 1)))) = uint8('?')
 23919  			}
 23920  		}
 23921  	}
 23922  	*(*uint8)(unsafe.Pointer(zOut + uintptr(nOut))) = uint8(0)
 23923  	return zOut
 23924  }
 23925  
 23926  func translen_to_charlen(tls *libc.TLS, zIn uintptr, nIn int32, nTrans int32) int32 {
 23927  	bp := tls.Alloc(8)
 23928  	defer tls.Free(8)
 23929  
 23930  	var i int32
 23931  	var c int32
 23932  
 23933  	var nOut int32
 23934  	var nChar int32
 23935  
 23936  	i = libc.AssignInt32(&nOut, 0)
 23937  	for nChar = 0; i < nIn && nOut < nTrans; nChar++ {
 23938  		c = utf8Read(tls, zIn+uintptr(i), nIn-i, bp)
 23939  		i = i + *(*int32)(unsafe.Pointer(bp))
 23940  
 23941  		nOut++
 23942  		if c >= 128 {
 23943  			var xBtm int32
 23944  			var x int32
 23945  			var tbl uintptr = spellfixFindTranslit(tls, c, bp+4)
 23946  			xBtm = 0
 23947  			for *(*int32)(unsafe.Pointer(bp + 4)) >= xBtm {
 23948  				x = (*(*int32)(unsafe.Pointer(bp + 4)) + xBtm) / 2
 23949  				if int32((*Transliteration)(unsafe.Pointer(tbl+uintptr(x)*6)).FcFrom) == c {
 23950  					if (*Transliteration)(unsafe.Pointer(tbl+uintptr(x)*6)).FcTo1 != 0 {
 23951  						nOut++
 23952  						if (*Transliteration)(unsafe.Pointer(tbl+uintptr(x)*6)).FcTo2 != 0 {
 23953  							nOut++
 23954  							if (*Transliteration)(unsafe.Pointer(tbl+uintptr(x)*6)).FcTo3 != 0 {
 23955  								nOut++
 23956  							}
 23957  						}
 23958  					}
 23959  					break
 23960  				} else if int32((*Transliteration)(unsafe.Pointer(tbl+uintptr(x)*6)).FcFrom) > c {
 23961  					*(*int32)(unsafe.Pointer(bp + 4)) = x - 1
 23962  				} else {
 23963  					xBtm = x + 1
 23964  				}
 23965  			}
 23966  		}
 23967  	}
 23968  
 23969  	return nChar
 23970  }
 23971  
 23972  func transliterateSqlFunc(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 23973  	var zIn uintptr = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 23974  	var nIn int32 = sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(argv)))
 23975  	var zOut uintptr = transliterate(tls, zIn, nIn)
 23976  	if zOut == uintptr(0) {
 23977  		sqlite3.Xsqlite3_result_error_nomem(tls, context)
 23978  	} else {
 23979  		sqlite3.Xsqlite3_result_text(tls, context, zOut, -1, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{sqlite3.Xsqlite3_free})))
 23980  	}
 23981  }
 23982  
 23983  func scriptCodeSqlFunc(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 23984  	bp := tls.Alloc(4)
 23985  	defer tls.Free(4)
 23986  
 23987  	var zIn uintptr = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 23988  	var nIn int32 = sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(argv)))
 23989  	var c int32
 23990  
 23991  	var scriptMask int32 = 0
 23992  	var res int32
 23993  	var seenDigit int32 = 0
 23994  
 23995  	for nIn > 0 {
 23996  		c = utf8Read(tls, zIn, nIn, bp)
 23997  		zIn += uintptr(*(*int32)(unsafe.Pointer(bp)))
 23998  		nIn = nIn - *(*int32)(unsafe.Pointer(bp))
 23999  		if c < 0x02af {
 24000  			if c >= 0x80 || int32(midClass[c&0x7f]) < CCLASS_DIGIT {
 24001  				scriptMask = scriptMask | SCRIPT_LATIN
 24002  			} else if c >= '0' && c <= '9' {
 24003  				seenDigit = 1
 24004  			}
 24005  		} else if c >= 0x0400 && c <= 0x04ff {
 24006  			scriptMask = scriptMask | SCRIPT_CYRILLIC
 24007  		} else if c >= 0x0386 && c <= 0x03ce {
 24008  			scriptMask = scriptMask | SCRIPT_GREEK
 24009  		} else if c >= 0x0590 && c <= 0x05ff {
 24010  			scriptMask = scriptMask | SCRIPT_HEBREW
 24011  		} else if c >= 0x0600 && c <= 0x06ff {
 24012  			scriptMask = scriptMask | SCRIPT_ARABIC
 24013  		}
 24014  	}
 24015  	if scriptMask == 0 && seenDigit != 0 {
 24016  		scriptMask = SCRIPT_LATIN
 24017  	}
 24018  	switch scriptMask {
 24019  	case 0:
 24020  		res = 999
 24021  		break
 24022  	case SCRIPT_LATIN:
 24023  		res = 215
 24024  		break
 24025  	case SCRIPT_CYRILLIC:
 24026  		res = 220
 24027  		break
 24028  	case SCRIPT_GREEK:
 24029  		res = 200
 24030  		break
 24031  	case SCRIPT_HEBREW:
 24032  		res = 125
 24033  		break
 24034  	case SCRIPT_ARABIC:
 24035  		res = 160
 24036  		break
 24037  	default:
 24038  		res = 998
 24039  		break
 24040  	}
 24041  	sqlite3.Xsqlite3_result_int(tls, context, res)
 24042  }
 24043  
 24044  type spellfix1_vtab1 = struct {
 24045  	Fbase       sqlite3_vtab
 24046  	Fdb         uintptr
 24047  	FzDbName    uintptr
 24048  	FzTableName uintptr
 24049  	FzCostTable uintptr
 24050  	FpConfig3   uintptr
 24051  }
 24052  
 24053  type spellfix1_vtab = spellfix1_vtab1
 24054  type spellfix1_cursor1 = struct {
 24055  	Fbase      sqlite3_vtab_cursor
 24056  	FpVTab     uintptr
 24057  	FzPattern  uintptr
 24058  	FidxNum    int32
 24059  	FnRow      int32
 24060  	FnAlloc    int32
 24061  	FiRow      int32
 24062  	FiLang     int32
 24063  	FiTop      int32
 24064  	FiScope    int32
 24065  	FnSearch   int32
 24066  	FpFullScan uintptr
 24067  	Fa         uintptr
 24068  }
 24069  
 24070  type spellfix1_cursor = spellfix1_cursor1
 24071  
 24072  type spellfix1_row = struct {
 24073  	FiRowid    sqlite3_int64
 24074  	FzWord     uintptr
 24075  	FiRank     int32
 24076  	FiDistance int32
 24077  	FiScore    int32
 24078  	FiMatchlen int32
 24079  	FzHash     [32]int8
 24080  }
 24081  
 24082  func spellfix1DbExec(tls *libc.TLS, pRc uintptr, db uintptr, zFormat uintptr, va uintptr) {
 24083  	var ap va_list
 24084  	_ = ap
 24085  	var zSql uintptr
 24086  	if *(*int32)(unsafe.Pointer(pRc)) != 0 {
 24087  		return
 24088  	}
 24089  	ap = va
 24090  	zSql = sqlite3.Xsqlite3_vmprintf(tls, zFormat, ap)
 24091  	_ = ap
 24092  	if zSql == uintptr(0) {
 24093  		*(*int32)(unsafe.Pointer(pRc)) = SQLITE_NOMEM
 24094  	} else {
 24095  		*(*int32)(unsafe.Pointer(pRc)) = sqlite3.Xsqlite3_exec(tls, db, zSql, uintptr(0), uintptr(0), uintptr(0))
 24096  		sqlite3.Xsqlite3_free(tls, zSql)
 24097  	}
 24098  }
 24099  
 24100  func spellfix1Uninit(tls *libc.TLS, isDestroy int32, pVTab uintptr) int32 {
 24101  	bp := tls.Alloc(20)
 24102  	defer tls.Free(20)
 24103  
 24104  	var p uintptr = pVTab
 24105  	*(*int32)(unsafe.Pointer(bp + 16)) = SQLITE_OK
 24106  	if isDestroy != 0 {
 24107  		var db uintptr = (*spellfix1_vtab)(unsafe.Pointer(p)).Fdb
 24108  		spellfix1DbExec(tls, bp+16, db, ts+7189,
 24109  			libc.VaList(bp, (*spellfix1_vtab)(unsafe.Pointer(p)).FzDbName, (*spellfix1_vtab)(unsafe.Pointer(p)).FzTableName))
 24110  	}
 24111  	if *(*int32)(unsafe.Pointer(bp + 16)) == SQLITE_OK {
 24112  		sqlite3.Xsqlite3_free(tls, (*spellfix1_vtab)(unsafe.Pointer(p)).FzTableName)
 24113  		editDist3ConfigDelete(tls, (*spellfix1_vtab)(unsafe.Pointer(p)).FpConfig3)
 24114  		sqlite3.Xsqlite3_free(tls, (*spellfix1_vtab)(unsafe.Pointer(p)).FzCostTable)
 24115  		sqlite3.Xsqlite3_free(tls, p)
 24116  	}
 24117  	return *(*int32)(unsafe.Pointer(bp + 16))
 24118  }
 24119  
 24120  func spellfix1Disconnect(tls *libc.TLS, pVTab uintptr) int32 {
 24121  	return spellfix1Uninit(tls, 0, pVTab)
 24122  }
 24123  
 24124  func spellfix1Destroy(tls *libc.TLS, pVTab uintptr) int32 {
 24125  	return spellfix1Uninit(tls, 1, pVTab)
 24126  }
 24127  
 24128  func spellfix1Dequote(tls *libc.TLS, zIn uintptr) uintptr {
 24129  	bp := tls.Alloc(8)
 24130  	defer tls.Free(8)
 24131  
 24132  	var zOut uintptr
 24133  	var i int32
 24134  	var j int32
 24135  	var c int8
 24136  	for isspace(tls, int32(uint8(*(*int8)(unsafe.Pointer(zIn))))) != 0 {
 24137  		zIn++
 24138  	}
 24139  	zOut = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp, zIn))
 24140  	if zOut == uintptr(0) {
 24141  		return uintptr(0)
 24142  	}
 24143  	i = int32(libc.Xstrlen(tls, zOut))
 24144  	*(*int8)(unsafe.Pointer(zOut + uintptr(i))) = int8(0)
 24145  	c = *(*int8)(unsafe.Pointer(zOut))
 24146  	if int32(c) == '\'' || int32(c) == '"' {
 24147  		i = 1
 24148  		j = 0
 24149  		for ; 1 != 0; i++ {
 24150  			*(*int8)(unsafe.Pointer(zOut + uintptr(libc.PostIncInt32(&j, 1)))) = *(*int8)(unsafe.Pointer(zOut + uintptr(i)))
 24151  			if int32(*(*int8)(unsafe.Pointer(zOut + uintptr(i)))) == int32(c) {
 24152  				if int32(*(*int8)(unsafe.Pointer(zOut + uintptr(i+1)))) == int32(c) {
 24153  					i++
 24154  				} else {
 24155  					*(*int8)(unsafe.Pointer(zOut + uintptr(j-1))) = int8(0)
 24156  					break
 24157  				}
 24158  			}
 24159  		}
 24160  	}
 24161  	return zOut
 24162  }
 24163  
 24164  func spellfix1Init(tls *libc.TLS, isCreate int32, db uintptr, pAux uintptr, argc int32, argv uintptr, ppVTab uintptr, pzErr uintptr) int32 {
 24165  	bp := tls.Alloc(60)
 24166  	defer tls.Free(60)
 24167  
 24168  	var pNew uintptr = uintptr(0)
 24169  
 24170  	var zDbName uintptr = *(*uintptr)(unsafe.Pointer(argv + 1*8))
 24171  	var zTableName uintptr = *(*uintptr)(unsafe.Pointer(argv + 2*8))
 24172  	var nDbName int32
 24173  	*(*int32)(unsafe.Pointer(bp + 56)) = SQLITE_OK
 24174  	var i int32
 24175  
 24176  	nDbName = int32(libc.Xstrlen(tls, zDbName))
 24177  	pNew = sqlite3.Xsqlite3_malloc64(tls, uint64(unsafe.Sizeof(spellfix1_vtab{}))+uint64(nDbName)+uint64(1))
 24178  	if pNew == uintptr(0) {
 24179  		*(*int32)(unsafe.Pointer(bp + 56)) = SQLITE_NOMEM
 24180  	} else {
 24181  		libc.X__builtin___memset_chk(tls, pNew, 0, uint64(unsafe.Sizeof(spellfix1_vtab{})), libc.X__builtin_object_size(tls, pNew, 0))
 24182  		(*spellfix1_vtab)(unsafe.Pointer(pNew)).FzDbName = pNew + 1*64
 24183  		libc.X__builtin___memcpy_chk(tls, (*spellfix1_vtab)(unsafe.Pointer(pNew)).FzDbName, zDbName, uint64(nDbName+1), libc.X__builtin_object_size(tls, (*spellfix1_vtab)(unsafe.Pointer(pNew)).FzDbName, 0))
 24184  		(*spellfix1_vtab)(unsafe.Pointer(pNew)).FzTableName = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp, zTableName))
 24185  		(*spellfix1_vtab)(unsafe.Pointer(pNew)).Fdb = db
 24186  		if (*spellfix1_vtab)(unsafe.Pointer(pNew)).FzTableName == uintptr(0) {
 24187  			*(*int32)(unsafe.Pointer(bp + 56)) = SQLITE_NOMEM
 24188  		} else {
 24189  			sqlite3.Xsqlite3_vtab_config(tls, db, SQLITE_VTAB_INNOCUOUS, 0)
 24190  			*(*int32)(unsafe.Pointer(bp + 56)) = sqlite3.Xsqlite3_declare_vtab(tls, db,
 24191  				ts+7226)
 24192  		}
 24193  		if *(*int32)(unsafe.Pointer(bp + 56)) == SQLITE_OK && isCreate != 0 {
 24194  			spellfix1DbExec(tls, bp+56, db,
 24195  				ts+7380,
 24196  				libc.VaList(bp+8, zDbName, zTableName))
 24197  			spellfix1DbExec(tls, bp+56, db,
 24198  				ts+7514,
 24199  				libc.VaList(bp+24, zDbName, zTableName, zTableName))
 24200  		}
 24201  		for i = 3; *(*int32)(unsafe.Pointer(bp + 56)) == SQLITE_OK && i < argc; i++ {
 24202  			if libc.Xstrncmp(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8)), ts+7599, uint64(16)) == 0 && (*spellfix1_vtab)(unsafe.Pointer(pNew)).FzCostTable == uintptr(0) {
 24203  				(*spellfix1_vtab)(unsafe.Pointer(pNew)).FzCostTable = spellfix1Dequote(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8))+16)
 24204  				if (*spellfix1_vtab)(unsafe.Pointer(pNew)).FzCostTable == uintptr(0) {
 24205  					*(*int32)(unsafe.Pointer(bp + 56)) = SQLITE_NOMEM
 24206  				}
 24207  				continue
 24208  			}
 24209  			*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+7616, libc.VaList(bp+48, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8))))
 24210  			*(*int32)(unsafe.Pointer(bp + 56)) = SQLITE_ERROR
 24211  		}
 24212  	}
 24213  
 24214  	if *(*int32)(unsafe.Pointer(bp + 56)) != 0 && pNew != 0 {
 24215  		*(*uintptr)(unsafe.Pointer(ppVTab)) = uintptr(0)
 24216  		spellfix1Uninit(tls, 0, pNew)
 24217  	} else {
 24218  		*(*uintptr)(unsafe.Pointer(ppVTab)) = pNew
 24219  	}
 24220  	return *(*int32)(unsafe.Pointer(bp + 56))
 24221  }
 24222  
 24223  func spellfix1Connect(tls *libc.TLS, db uintptr, pAux uintptr, argc int32, argv uintptr, ppVTab uintptr, pzErr uintptr) int32 {
 24224  	return spellfix1Init(tls, 0, db, pAux, argc, argv, ppVTab, pzErr)
 24225  }
 24226  
 24227  func spellfix1Create(tls *libc.TLS, db uintptr, pAux uintptr, argc int32, argv uintptr, ppVTab uintptr, pzErr uintptr) int32 {
 24228  	return spellfix1Init(tls, 1, db, pAux, argc, argv, ppVTab, pzErr)
 24229  }
 24230  
 24231  func spellfix1ResetCursor(tls *libc.TLS, pCur uintptr) {
 24232  	var i int32
 24233  	for i = 0; i < (*spellfix1_cursor)(unsafe.Pointer(pCur)).FnRow; i++ {
 24234  		sqlite3.Xsqlite3_free(tls, (*spellfix1_row)(unsafe.Pointer((*spellfix1_cursor)(unsafe.Pointer(pCur)).Fa+uintptr(i)*64)).FzWord)
 24235  	}
 24236  	(*spellfix1_cursor)(unsafe.Pointer(pCur)).FnRow = 0
 24237  	(*spellfix1_cursor)(unsafe.Pointer(pCur)).FiRow = 0
 24238  	(*spellfix1_cursor)(unsafe.Pointer(pCur)).FnSearch = 0
 24239  	if (*spellfix1_cursor)(unsafe.Pointer(pCur)).FpFullScan != 0 {
 24240  		sqlite3.Xsqlite3_finalize(tls, (*spellfix1_cursor)(unsafe.Pointer(pCur)).FpFullScan)
 24241  		(*spellfix1_cursor)(unsafe.Pointer(pCur)).FpFullScan = uintptr(0)
 24242  	}
 24243  }
 24244  
 24245  func spellfix1ResizeCursor(tls *libc.TLS, pCur uintptr, N int32) {
 24246  	var aNew uintptr
 24247  
 24248  	aNew = sqlite3.Xsqlite3_realloc64(tls, (*spellfix1_cursor)(unsafe.Pointer(pCur)).Fa, uint64(unsafe.Sizeof(spellfix1_row{}))*uint64(N))
 24249  	if aNew == uintptr(0) && N > 0 {
 24250  		spellfix1ResetCursor(tls, pCur)
 24251  		sqlite3.Xsqlite3_free(tls, (*spellfix1_cursor)(unsafe.Pointer(pCur)).Fa)
 24252  		(*spellfix1_cursor)(unsafe.Pointer(pCur)).FnAlloc = 0
 24253  		(*spellfix1_cursor)(unsafe.Pointer(pCur)).Fa = uintptr(0)
 24254  	} else {
 24255  		(*spellfix1_cursor)(unsafe.Pointer(pCur)).FnAlloc = N
 24256  		(*spellfix1_cursor)(unsafe.Pointer(pCur)).Fa = aNew
 24257  	}
 24258  }
 24259  
 24260  func spellfix1Close(tls *libc.TLS, cur uintptr) int32 {
 24261  	var pCur uintptr = cur
 24262  	spellfix1ResetCursor(tls, pCur)
 24263  	spellfix1ResizeCursor(tls, pCur, 0)
 24264  	sqlite3.Xsqlite3_free(tls, (*spellfix1_cursor)(unsafe.Pointer(pCur)).FzPattern)
 24265  	sqlite3.Xsqlite3_free(tls, pCur)
 24266  	return SQLITE_OK
 24267  }
 24268  
 24269  func spellfix1BestIndex(tls *libc.TLS, tab uintptr, pIdxInfo uintptr) int32 {
 24270  	var iPlan int32 = 0
 24271  	var iLangTerm int32 = -1
 24272  	var iTopTerm int32 = -1
 24273  	var iScopeTerm int32 = -1
 24274  	var iDistTerm int32 = -1
 24275  	var iRowidTerm int32 = -1
 24276  	var i int32
 24277  	var pConstraint uintptr
 24278  	pConstraint = (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint
 24279  	i = 0
 24280  __1:
 24281  	if !(i < (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnConstraint) {
 24282  		goto __3
 24283  	}
 24284  	{
 24285  		if int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fusable) == 0 {
 24286  			goto __2
 24287  		}
 24288  
 24289  		if iPlan&SPELLFIX_IDXNUM_MATCH == 0 &&
 24290  			(*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).FiColumn == SPELLFIX_COL_WORD &&
 24291  			int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_MATCH {
 24292  			iPlan = iPlan | SPELLFIX_IDXNUM_MATCH
 24293  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(i)*8)).FargvIndex = 1
 24294  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(i)*8)).Fomit = uint8(1)
 24295  		}
 24296  
 24297  		if iPlan&SPELLFIX_IDXNUM_LANGID == 0 &&
 24298  			(*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).FiColumn == SPELLFIX_COL_LANGID &&
 24299  			int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_EQ {
 24300  			iPlan = iPlan | SPELLFIX_IDXNUM_LANGID
 24301  			iLangTerm = i
 24302  		}
 24303  
 24304  		if iPlan&SPELLFIX_IDXNUM_TOP == 0 &&
 24305  			(*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).FiColumn == SPELLFIX_COL_TOP &&
 24306  			int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_EQ {
 24307  			iPlan = iPlan | SPELLFIX_IDXNUM_TOP
 24308  			iTopTerm = i
 24309  		}
 24310  
 24311  		if iPlan&SPELLFIX_IDXNUM_SCOPE == 0 &&
 24312  			(*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).FiColumn == SPELLFIX_COL_SCOPE &&
 24313  			int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_EQ {
 24314  			iPlan = iPlan | SPELLFIX_IDXNUM_SCOPE
 24315  			iScopeTerm = i
 24316  		}
 24317  
 24318  		if iPlan&(0x10|0x20) == 0 &&
 24319  			(*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).FiColumn == SPELLFIX_COL_DISTANCE &&
 24320  			(int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_LT ||
 24321  				int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_LE) {
 24322  			if int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_LT {
 24323  				iPlan = iPlan | SPELLFIX_IDXNUM_DISTLT
 24324  			} else {
 24325  				iPlan = iPlan | SPELLFIX_IDXNUM_DISTLE
 24326  			}
 24327  			iDistTerm = i
 24328  		}
 24329  
 24330  		if iPlan&SPELLFIX_IDXNUM_ROWID == 0 &&
 24331  			(*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).FiColumn < 0 &&
 24332  			int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_EQ {
 24333  			iPlan = iPlan | SPELLFIX_IDXNUM_ROWID
 24334  			iRowidTerm = i
 24335  		}
 24336  
 24337  	}
 24338  	goto __2
 24339  __2:
 24340  	i++
 24341  	pConstraint += 12
 24342  	goto __1
 24343  	goto __3
 24344  __3:
 24345  	;
 24346  	if iPlan&SPELLFIX_IDXNUM_MATCH != 0 {
 24347  		var idx int32 = 2
 24348  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxNum = iPlan
 24349  		if (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnOrderBy == 1 &&
 24350  			(*sqlite3_index_orderby)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaOrderBy)).FiColumn == SPELLFIX_COL_SCORE &&
 24351  			int32((*sqlite3_index_orderby)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaOrderBy)).Fdesc) == 0 {
 24352  			(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).ForderByConsumed = 1
 24353  		}
 24354  		if iPlan&SPELLFIX_IDXNUM_LANGID != 0 {
 24355  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(iLangTerm)*8)).FargvIndex = libc.PostIncInt32(&idx, 1)
 24356  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(iLangTerm)*8)).Fomit = uint8(1)
 24357  		}
 24358  		if iPlan&SPELLFIX_IDXNUM_TOP != 0 {
 24359  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(iTopTerm)*8)).FargvIndex = libc.PostIncInt32(&idx, 1)
 24360  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(iTopTerm)*8)).Fomit = uint8(1)
 24361  		}
 24362  		if iPlan&SPELLFIX_IDXNUM_SCOPE != 0 {
 24363  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(iScopeTerm)*8)).FargvIndex = libc.PostIncInt32(&idx, 1)
 24364  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(iScopeTerm)*8)).Fomit = uint8(1)
 24365  		}
 24366  		if iPlan&(0x10|0x20) != 0 {
 24367  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(iDistTerm)*8)).FargvIndex = libc.PostIncInt32(&idx, 1)
 24368  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(iDistTerm)*8)).Fomit = uint8(1)
 24369  		}
 24370  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = 1e5
 24371  	} else if iPlan&SPELLFIX_IDXNUM_ROWID != 0 {
 24372  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxNum = SPELLFIX_IDXNUM_ROWID
 24373  		(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(iRowidTerm)*8)).FargvIndex = 1
 24374  		(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(iRowidTerm)*8)).Fomit = uint8(1)
 24375  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = float64(5)
 24376  	} else {
 24377  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxNum = 0
 24378  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = 1e50
 24379  	}
 24380  	return SQLITE_OK
 24381  }
 24382  
 24383  func spellfix1Open(tls *libc.TLS, pVTab uintptr, ppCursor uintptr) int32 {
 24384  	var p uintptr = pVTab
 24385  	var pCur uintptr
 24386  	pCur = sqlite3.Xsqlite3_malloc64(tls, uint64(unsafe.Sizeof(spellfix1_cursor{})))
 24387  	if pCur == uintptr(0) {
 24388  		return SQLITE_NOMEM
 24389  	}
 24390  	libc.X__builtin___memset_chk(tls, pCur, 0, uint64(unsafe.Sizeof(spellfix1_cursor{})), libc.X__builtin_object_size(tls, pCur, 0))
 24391  	(*spellfix1_cursor)(unsafe.Pointer(pCur)).FpVTab = p
 24392  	*(*uintptr)(unsafe.Pointer(ppCursor)) = pCur
 24393  	return SQLITE_OK
 24394  }
 24395  
 24396  func spellfix1Score(tls *libc.TLS, iDistance int32, iRank int32) int32 {
 24397  	var iLog2 int32
 24398  	iLog2 = 0
 24399  __1:
 24400  	if !(iRank > 0) {
 24401  		goto __3
 24402  	}
 24403  	{
 24404  	}
 24405  	goto __2
 24406  __2:
 24407  	iLog2++
 24408  	iRank >>= 1
 24409  	goto __1
 24410  	goto __3
 24411  __3:
 24412  	;
 24413  	return iDistance + 32 - iLog2
 24414  }
 24415  
 24416  func spellfix1RowCompare(tls *libc.TLS, A uintptr, B uintptr) int32 {
 24417  	var a uintptr = A
 24418  	var b uintptr = B
 24419  	return (*spellfix1_row)(unsafe.Pointer(a)).FiScore - (*spellfix1_row)(unsafe.Pointer(b)).FiScore
 24420  }
 24421  
 24422  type MatchQuery1 = struct {
 24423  	FpCur        uintptr
 24424  	FpStmt       uintptr
 24425  	FzHash       [32]int8
 24426  	FzPattern    uintptr
 24427  	FnPattern    int32
 24428  	F__ccgo_pad1 [4]byte
 24429  	FpMatchStr3  uintptr
 24430  	FpConfig3    uintptr
 24431  	FpLang       uintptr
 24432  	FiLang       int32
 24433  	FiScope      int32
 24434  	FiMaxDist    int32
 24435  	Frc          int32
 24436  	FnRun        int32
 24437  	FazPrior     [1][32]int8
 24438  	F__ccgo_pad2 [4]byte
 24439  }
 24440  
 24441  type MatchQuery = MatchQuery1
 24442  
 24443  func spellfix1RunQuery(tls *libc.TLS, p uintptr, zQuery uintptr, nQuery int32) {
 24444  	bp := tls.Alloc(76)
 24445  	defer tls.Free(76)
 24446  
 24447  	var zK1 uintptr
 24448  	var zWord uintptr
 24449  	var iDist int32
 24450  	var iRank int32
 24451  	var iScore int32
 24452  	var iWorst int32 = 0
 24453  	var idx int32
 24454  	var idxWorst int32 = -1
 24455  	var i int32
 24456  	var iScope int32 = (*MatchQuery)(unsafe.Pointer(p)).FiScope
 24457  	var pCur uintptr = (*MatchQuery)(unsafe.Pointer(p)).FpCur
 24458  	var pStmt uintptr = (*MatchQuery)(unsafe.Pointer(p)).FpStmt
 24459  
 24460  	var zClass uintptr
 24461  	var nClass int32
 24462  	var rc int32
 24463  
 24464  	if (*spellfix1_cursor)(unsafe.Pointer(pCur)).Fa == uintptr(0) || (*MatchQuery)(unsafe.Pointer(p)).Frc != 0 {
 24465  		return
 24466  	}
 24467  	zClass = phoneticHash(tls, zQuery, nQuery)
 24468  	if zClass == uintptr(0) {
 24469  		(*MatchQuery)(unsafe.Pointer(p)).Frc = SQLITE_NOMEM
 24470  		return
 24471  	}
 24472  	nClass = int32(libc.Xstrlen(tls, zClass))
 24473  	if nClass > SPELLFIX_MX_HASH-2 {
 24474  		nClass = SPELLFIX_MX_HASH - 2
 24475  		*(*int8)(unsafe.Pointer(zClass + uintptr(nClass))) = int8(0)
 24476  	}
 24477  	if nClass <= iScope {
 24478  		if nClass > 2 {
 24479  			iScope = nClass - 1
 24480  		} else {
 24481  			iScope = nClass
 24482  		}
 24483  	}
 24484  	libc.X__builtin___memcpy_chk(tls, bp+8, zClass, uint64(iScope), libc.X__builtin_object_size(tls, bp+8, 0))
 24485  	sqlite3.Xsqlite3_free(tls, zClass)
 24486  	*(*int8)(unsafe.Pointer(bp + 8 + uintptr(iScope))) = int8(0)
 24487  	libc.X__builtin___memcpy_chk(tls, bp+40, bp+8, uint64(iScope), libc.X__builtin_object_size(tls, bp+40, 0))
 24488  	*(*int8)(unsafe.Pointer(bp + 40 + uintptr(iScope))) = int8('Z')
 24489  	*(*int8)(unsafe.Pointer(bp + 40 + uintptr(iScope+1))) = int8(0)
 24490  
 24491  	libc.X__builtin___memcpy_chk(tls, p+108+uintptr(libc.PostIncInt32(&(*MatchQuery)(unsafe.Pointer(p)).FnRun, 1))*32, bp+8, uint64(iScope+1), libc.X__builtin_object_size(tls, p+108+uintptr(libc.PostIncInt32(&(*MatchQuery)(unsafe.Pointer(p)).FnRun, 1))*32, 0))
 24492  	if sqlite3.Xsqlite3_bind_text(tls, pStmt, 1, bp+8, -1, uintptr(0)) == SQLITE_NOMEM ||
 24493  		sqlite3.Xsqlite3_bind_text(tls, pStmt, 2, bp+40, -1, uintptr(0)) == SQLITE_NOMEM {
 24494  		(*MatchQuery)(unsafe.Pointer(p)).Frc = SQLITE_NOMEM
 24495  		return
 24496  	}
 24497  	for sqlite3.Xsqlite3_step(tls, pStmt) == SQLITE_ROW {
 24498  		*(*int32)(unsafe.Pointer(bp + 72)) = -1
 24499  		iRank = sqlite3.Xsqlite3_column_int(tls, pStmt, 2)
 24500  		if (*MatchQuery)(unsafe.Pointer(p)).FpMatchStr3 != 0 {
 24501  			var nWord int32 = sqlite3.Xsqlite3_column_bytes(tls, pStmt, 1)
 24502  			zWord = sqlite3.Xsqlite3_column_text(tls, pStmt, 1)
 24503  			iDist = editDist3Core(tls, (*MatchQuery)(unsafe.Pointer(p)).FpMatchStr3, zWord, nWord, (*MatchQuery)(unsafe.Pointer(p)).FpLang, bp+72)
 24504  		} else {
 24505  			zK1 = sqlite3.Xsqlite3_column_text(tls, pStmt, 3)
 24506  			if zK1 == uintptr(0) {
 24507  				continue
 24508  			}
 24509  			iDist = editdist1(tls, (*MatchQuery)(unsafe.Pointer(p)).FzPattern, zK1, uintptr(0))
 24510  		}
 24511  		if iDist < 0 {
 24512  			(*MatchQuery)(unsafe.Pointer(p)).Frc = SQLITE_NOMEM
 24513  			break
 24514  		}
 24515  		(*spellfix1_cursor)(unsafe.Pointer(pCur)).FnSearch++
 24516  
 24517  		if (*MatchQuery)(unsafe.Pointer(p)).FiMaxDist >= 0 {
 24518  			if iDist > (*MatchQuery)(unsafe.Pointer(p)).FiMaxDist {
 24519  				continue
 24520  			}
 24521  			if (*spellfix1_cursor)(unsafe.Pointer(pCur)).FnRow >= (*spellfix1_cursor)(unsafe.Pointer(pCur)).FnAlloc && (*spellfix1_cursor)(unsafe.Pointer(pCur)).FidxNum&SPELLFIX_IDXNUM_TOP == 0 {
 24522  				spellfix1ResizeCursor(tls, pCur, (*spellfix1_cursor)(unsafe.Pointer(pCur)).FnAlloc*2+10)
 24523  				if (*spellfix1_cursor)(unsafe.Pointer(pCur)).Fa == uintptr(0) {
 24524  					break
 24525  				}
 24526  			}
 24527  		}
 24528  
 24529  		iScore = spellfix1Score(tls, iDist, iRank)
 24530  		if (*spellfix1_cursor)(unsafe.Pointer(pCur)).FnRow < (*spellfix1_cursor)(unsafe.Pointer(pCur)).FnAlloc {
 24531  			idx = (*spellfix1_cursor)(unsafe.Pointer(pCur)).FnRow
 24532  		} else if iScore < iWorst {
 24533  			idx = idxWorst
 24534  			sqlite3.Xsqlite3_free(tls, (*spellfix1_row)(unsafe.Pointer((*spellfix1_cursor)(unsafe.Pointer(pCur)).Fa+uintptr(idx)*64)).FzWord)
 24535  		} else {
 24536  			continue
 24537  		}
 24538  
 24539  		(*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)))
 24540  		if (*spellfix1_row)(unsafe.Pointer((*spellfix1_cursor)(unsafe.Pointer(pCur)).Fa+uintptr(idx)*64)).FzWord == uintptr(0) {
 24541  			(*MatchQuery)(unsafe.Pointer(p)).Frc = SQLITE_NOMEM
 24542  			break
 24543  		}
 24544  		(*spellfix1_row)(unsafe.Pointer((*spellfix1_cursor)(unsafe.Pointer(pCur)).Fa + uintptr(idx)*64)).FiRowid = sqlite3.Xsqlite3_column_int64(tls, pStmt, 0)
 24545  		(*spellfix1_row)(unsafe.Pointer((*spellfix1_cursor)(unsafe.Pointer(pCur)).Fa + uintptr(idx)*64)).FiRank = iRank
 24546  		(*spellfix1_row)(unsafe.Pointer((*spellfix1_cursor)(unsafe.Pointer(pCur)).Fa + uintptr(idx)*64)).FiDistance = iDist
 24547  		(*spellfix1_row)(unsafe.Pointer((*spellfix1_cursor)(unsafe.Pointer(pCur)).Fa + uintptr(idx)*64)).FiScore = iScore
 24548  		(*spellfix1_row)(unsafe.Pointer((*spellfix1_cursor)(unsafe.Pointer(pCur)).Fa + uintptr(idx)*64)).FiMatchlen = *(*int32)(unsafe.Pointer(bp + 72))
 24549  		libc.X__builtin___memcpy_chk(tls, (*spellfix1_cursor)(unsafe.Pointer(pCur)).Fa+uintptr(idx)*64+32, bp+8, uint64(iScope+1), libc.X__builtin_object_size(tls, (*spellfix1_cursor)(unsafe.Pointer(pCur)).Fa+uintptr(idx)*64+32, 0))
 24550  		if (*spellfix1_cursor)(unsafe.Pointer(pCur)).FnRow < (*spellfix1_cursor)(unsafe.Pointer(pCur)).FnAlloc {
 24551  			(*spellfix1_cursor)(unsafe.Pointer(pCur)).FnRow++
 24552  		}
 24553  		if (*spellfix1_cursor)(unsafe.Pointer(pCur)).FnRow == (*spellfix1_cursor)(unsafe.Pointer(pCur)).FnAlloc {
 24554  			iWorst = (*spellfix1_row)(unsafe.Pointer((*spellfix1_cursor)(unsafe.Pointer(pCur)).Fa)).FiScore
 24555  			idxWorst = 0
 24556  			for i = 1; i < (*spellfix1_cursor)(unsafe.Pointer(pCur)).FnRow; i++ {
 24557  				iScore = (*spellfix1_row)(unsafe.Pointer((*spellfix1_cursor)(unsafe.Pointer(pCur)).Fa + uintptr(i)*64)).FiScore
 24558  				if iWorst < iScore {
 24559  					iWorst = iScore
 24560  					idxWorst = i
 24561  				}
 24562  			}
 24563  		}
 24564  	}
 24565  	rc = sqlite3.Xsqlite3_reset(tls, pStmt)
 24566  	if rc != 0 {
 24567  		(*MatchQuery)(unsafe.Pointer(p)).Frc = rc
 24568  	}
 24569  }
 24570  
 24571  func spellfix1FilterForMatch(tls *libc.TLS, pCur uintptr, argc int32, argv uintptr) int32 {
 24572  	bp := tls.Alloc(176)
 24573  	defer tls.Free(176)
 24574  
 24575  	var idxNum int32
 24576  	var zMatchThis uintptr
 24577  	var pMatchStr3 uintptr
 24578  	var zPattern uintptr
 24579  	var nPattern int32
 24580  	var iLimit int32
 24581  	var iScope int32
 24582  	var iLang int32
 24583  	var zSql uintptr
 24584  
 24585  	var rc int32
 24586  	var idx int32
 24587  	var p uintptr
 24588  
 24589  	idxNum = (*spellfix1_cursor)(unsafe.Pointer(pCur)).FidxNum
 24590  	pMatchStr3 = uintptr(0)
 24591  	iLimit = 20
 24592  	iScope = 3
 24593  	iLang = 0
 24594  	*(*uintptr)(unsafe.Pointer(bp + 168)) = uintptr(0)
 24595  	idx = 1
 24596  	p = (*spellfix1_cursor)(unsafe.Pointer(pCur)).FpVTab
 24597  
 24598  	if !((*spellfix1_vtab)(unsafe.Pointer(p)).FzCostTable != uintptr(0) && (*spellfix1_vtab)(unsafe.Pointer(p)).FpConfig3 == uintptr(0)) {
 24599  		goto __1
 24600  	}
 24601  	(*spellfix1_vtab)(unsafe.Pointer(p)).FpConfig3 = sqlite3.Xsqlite3_malloc64(tls, uint64(unsafe.Sizeof(EditDist3Config{})))
 24602  	if !((*spellfix1_vtab)(unsafe.Pointer(p)).FpConfig3 == uintptr(0)) {
 24603  		goto __2
 24604  	}
 24605  	return SQLITE_NOMEM
 24606  __2:
 24607  	;
 24608  	libc.X__builtin___memset_chk(tls, (*spellfix1_vtab)(unsafe.Pointer(p)).FpConfig3, 0, uint64(unsafe.Sizeof(EditDist3Config{})), libc.X__builtin_object_size(tls, (*spellfix1_vtab)(unsafe.Pointer(p)).FpConfig3, 0))
 24609  	rc = editDist3ConfigLoad(tls, (*spellfix1_vtab)(unsafe.Pointer(p)).FpConfig3, (*spellfix1_vtab)(unsafe.Pointer(p)).Fdb, (*spellfix1_vtab)(unsafe.Pointer(p)).FzCostTable)
 24610  	if !(rc != 0) {
 24611  		goto __3
 24612  	}
 24613  	return rc
 24614  __3:
 24615  	;
 24616  __1:
 24617  	;
 24618  	libc.X__builtin___memset_chk(tls, bp+24, 0, uint64(unsafe.Sizeof(MatchQuery{})), libc.X__builtin_object_size(tls, bp+24, 0))
 24619  	(*MatchQuery)(unsafe.Pointer(bp + 24)).FiScope = 3
 24620  	(*MatchQuery)(unsafe.Pointer(bp + 24)).FiMaxDist = -1
 24621  
 24622  	if !(idxNum&2 != 0) {
 24623  		goto __4
 24624  	}
 24625  	iLang = sqlite3.Xsqlite3_value_int(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(libc.PostIncInt32(&idx, 1))*8)))
 24626  __4:
 24627  	;
 24628  	if !(idxNum&4 != 0) {
 24629  		goto __5
 24630  	}
 24631  	iLimit = sqlite3.Xsqlite3_value_int(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(libc.PostIncInt32(&idx, 1))*8)))
 24632  	if !(iLimit < 1) {
 24633  		goto __6
 24634  	}
 24635  	iLimit = 1
 24636  __6:
 24637  	;
 24638  __5:
 24639  	;
 24640  	if !(idxNum&8 != 0) {
 24641  		goto __7
 24642  	}
 24643  	(*MatchQuery)(unsafe.Pointer(bp + 24)).FiScope = sqlite3.Xsqlite3_value_int(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(libc.PostIncInt32(&idx, 1))*8)))
 24644  	if !((*MatchQuery)(unsafe.Pointer(bp+24)).FiScope < 1) {
 24645  		goto __8
 24646  	}
 24647  	(*MatchQuery)(unsafe.Pointer(bp + 24)).FiScope = 1
 24648  __8:
 24649  	;
 24650  	if !((*MatchQuery)(unsafe.Pointer(bp+24)).FiScope > SPELLFIX_MX_HASH-2) {
 24651  		goto __9
 24652  	}
 24653  	(*MatchQuery)(unsafe.Pointer(bp + 24)).FiScope = SPELLFIX_MX_HASH - 2
 24654  __9:
 24655  	;
 24656  __7:
 24657  	;
 24658  	if !(idxNum&(16|32) != 0) {
 24659  		goto __10
 24660  	}
 24661  	(*MatchQuery)(unsafe.Pointer(bp + 24)).FiMaxDist = sqlite3.Xsqlite3_value_int(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(libc.PostIncInt32(&idx, 1))*8)))
 24662  	if !(idxNum&16 != 0) {
 24663  		goto __11
 24664  	}
 24665  	(*MatchQuery)(unsafe.Pointer(bp+24)).FiMaxDist--
 24666  __11:
 24667  	;
 24668  	if !((*MatchQuery)(unsafe.Pointer(bp+24)).FiMaxDist < 0) {
 24669  		goto __12
 24670  	}
 24671  	(*MatchQuery)(unsafe.Pointer(bp + 24)).FiMaxDist = 0
 24672  __12:
 24673  	;
 24674  __10:
 24675  	;
 24676  	spellfix1ResetCursor(tls, pCur)
 24677  	spellfix1ResizeCursor(tls, pCur, iLimit)
 24678  	zMatchThis = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 24679  	if !(zMatchThis == uintptr(0)) {
 24680  		goto __13
 24681  	}
 24682  	return SQLITE_OK
 24683  __13:
 24684  	;
 24685  	if !((*spellfix1_vtab)(unsafe.Pointer(p)).FpConfig3 != 0) {
 24686  		goto __14
 24687  	}
 24688  	(*MatchQuery)(unsafe.Pointer(bp + 24)).FpLang = editDist3FindLang(tls, (*spellfix1_vtab)(unsafe.Pointer(p)).FpConfig3, iLang)
 24689  	pMatchStr3 = editDist3FromStringNew(tls, (*MatchQuery)(unsafe.Pointer(bp+24)).FpLang, zMatchThis, -1)
 24690  	if !(pMatchStr3 == uintptr(0)) {
 24691  		goto __16
 24692  	}
 24693  	(*MatchQuery)(unsafe.Pointer(bp + 24)).Frc = SQLITE_NOMEM
 24694  	goto filter_exit
 24695  __16:
 24696  	;
 24697  	goto __15
 24698  __14:
 24699  	(*MatchQuery)(unsafe.Pointer(bp + 24)).FpLang = uintptr(0)
 24700  __15:
 24701  	;
 24702  	zPattern = transliterate(tls, zMatchThis, sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(argv))))
 24703  	sqlite3.Xsqlite3_free(tls, (*spellfix1_cursor)(unsafe.Pointer(pCur)).FzPattern)
 24704  	(*spellfix1_cursor)(unsafe.Pointer(pCur)).FzPattern = zPattern
 24705  	if !(zPattern == uintptr(0)) {
 24706  		goto __17
 24707  	}
 24708  	(*MatchQuery)(unsafe.Pointer(bp + 24)).Frc = SQLITE_NOMEM
 24709  	goto filter_exit
 24710  __17:
 24711  	;
 24712  	nPattern = int32(libc.Xstrlen(tls, zPattern))
 24713  	if !(int32(*(*int8)(unsafe.Pointer(zPattern + uintptr(nPattern-1)))) == '*') {
 24714  		goto __18
 24715  	}
 24716  	nPattern--
 24717  __18:
 24718  	;
 24719  	zSql = sqlite3.Xsqlite3_mprintf(tls,
 24720  		ts+7650,
 24721  		libc.VaList(bp, (*spellfix1_vtab)(unsafe.Pointer(p)).FzDbName, (*spellfix1_vtab)(unsafe.Pointer(p)).FzTableName, iLang))
 24722  	if !(zSql == uintptr(0)) {
 24723  		goto __19
 24724  	}
 24725  	(*MatchQuery)(unsafe.Pointer(bp + 24)).Frc = SQLITE_NOMEM
 24726  	*(*uintptr)(unsafe.Pointer(bp + 168)) = uintptr(0)
 24727  	goto filter_exit
 24728  __19:
 24729  	;
 24730  	rc = sqlite3.Xsqlite3_prepare_v2(tls, (*spellfix1_vtab)(unsafe.Pointer(p)).Fdb, zSql, -1, bp+168, uintptr(0))
 24731  	sqlite3.Xsqlite3_free(tls, zSql)
 24732  	(*spellfix1_cursor)(unsafe.Pointer(pCur)).FiLang = iLang
 24733  	(*MatchQuery)(unsafe.Pointer(bp + 24)).FpCur = pCur
 24734  	(*MatchQuery)(unsafe.Pointer(bp + 24)).FpStmt = *(*uintptr)(unsafe.Pointer(bp + 168))
 24735  	(*MatchQuery)(unsafe.Pointer(bp + 24)).FzPattern = zPattern
 24736  	(*MatchQuery)(unsafe.Pointer(bp + 24)).FnPattern = nPattern
 24737  	(*MatchQuery)(unsafe.Pointer(bp + 24)).FpMatchStr3 = pMatchStr3
 24738  	(*MatchQuery)(unsafe.Pointer(bp + 24)).FiLang = iLang
 24739  	(*MatchQuery)(unsafe.Pointer(bp + 24)).Frc = rc
 24740  	(*MatchQuery)(unsafe.Pointer(bp + 24)).FpConfig3 = (*spellfix1_vtab)(unsafe.Pointer(p)).FpConfig3
 24741  	if !((*MatchQuery)(unsafe.Pointer(bp+24)).Frc == SQLITE_OK) {
 24742  		goto __20
 24743  	}
 24744  	spellfix1RunQuery(tls, bp+24, zPattern, nPattern)
 24745  __20:
 24746  	;
 24747  	if !((*spellfix1_cursor)(unsafe.Pointer(pCur)).Fa != 0) {
 24748  		goto __21
 24749  	}
 24750  	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 {
 24751  		f func(*libc.TLS, uintptr, uintptr) int32
 24752  	}{spellfix1RowCompare})))
 24753  	(*spellfix1_cursor)(unsafe.Pointer(pCur)).FiTop = iLimit
 24754  	(*spellfix1_cursor)(unsafe.Pointer(pCur)).FiScope = iScope
 24755  	goto __22
 24756  __21:
 24757  	(*MatchQuery)(unsafe.Pointer(bp + 24)).Frc = SQLITE_NOMEM
 24758  __22:
 24759  	;
 24760  filter_exit:
 24761  	sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 168)))
 24762  	editDist3FromStringDelete(tls, pMatchStr3)
 24763  	return (*MatchQuery)(unsafe.Pointer(bp + 24)).Frc
 24764  }
 24765  
 24766  func spellfix1FilterForFullScan(tls *libc.TLS, pCur uintptr, argc int32, argv uintptr) int32 {
 24767  	bp := tls.Alloc(24)
 24768  	defer tls.Free(24)
 24769  
 24770  	var rc int32 = SQLITE_OK
 24771  	var idxNum int32 = (*spellfix1_cursor)(unsafe.Pointer(pCur)).FidxNum
 24772  	var zSql uintptr
 24773  	var pVTab uintptr = (*spellfix1_cursor)(unsafe.Pointer(pCur)).FpVTab
 24774  	spellfix1ResetCursor(tls, pCur)
 24775  
 24776  	zSql = sqlite3.Xsqlite3_mprintf(tls,
 24777  		ts+7750,
 24778  		libc.VaList(bp, (*spellfix1_vtab)(unsafe.Pointer(pVTab)).FzDbName, (*spellfix1_vtab)(unsafe.Pointer(pVTab)).FzTableName,
 24779  			func() uintptr {
 24780  				if idxNum&64 != 0 {
 24781  					return ts + 7809
 24782  				}
 24783  				return ts + 584
 24784  			}()))
 24785  	if zSql == uintptr(0) {
 24786  		return SQLITE_NOMEM
 24787  	}
 24788  	rc = sqlite3.Xsqlite3_prepare_v2(tls, (*spellfix1_vtab)(unsafe.Pointer(pVTab)).Fdb, zSql, -1, pCur+56, uintptr(0))
 24789  	sqlite3.Xsqlite3_free(tls, zSql)
 24790  	if rc == SQLITE_OK && idxNum&64 != 0 {
 24791  		rc = sqlite3.Xsqlite3_bind_value(tls, (*spellfix1_cursor)(unsafe.Pointer(pCur)).FpFullScan, 1, *(*uintptr)(unsafe.Pointer(argv)))
 24792  	}
 24793  	(*spellfix1_cursor)(unsafe.Pointer(pCur)).FnRow = libc.AssignPtrInt32(pCur+36, 0)
 24794  	if rc == SQLITE_OK {
 24795  		rc = sqlite3.Xsqlite3_step(tls, (*spellfix1_cursor)(unsafe.Pointer(pCur)).FpFullScan)
 24796  		if rc == SQLITE_ROW {
 24797  			(*spellfix1_cursor)(unsafe.Pointer(pCur)).FiRow = -1
 24798  			rc = SQLITE_OK
 24799  		}
 24800  		if rc == SQLITE_DONE {
 24801  			rc = SQLITE_OK
 24802  		}
 24803  	} else {
 24804  		(*spellfix1_cursor)(unsafe.Pointer(pCur)).FiRow = 0
 24805  	}
 24806  	return rc
 24807  }
 24808  
 24809  func spellfix1Filter(tls *libc.TLS, cur uintptr, idxNum int32, idxStr uintptr, argc int32, argv uintptr) int32 {
 24810  	var pCur uintptr = cur
 24811  	var rc int32
 24812  	(*spellfix1_cursor)(unsafe.Pointer(pCur)).FidxNum = idxNum
 24813  	if idxNum&1 != 0 {
 24814  		rc = spellfix1FilterForMatch(tls, pCur, argc, argv)
 24815  	} else {
 24816  		rc = spellfix1FilterForFullScan(tls, pCur, argc, argv)
 24817  	}
 24818  	return rc
 24819  }
 24820  
 24821  func spellfix1Next(tls *libc.TLS, cur uintptr) int32 {
 24822  	var pCur uintptr = cur
 24823  	var rc int32 = SQLITE_OK
 24824  	if (*spellfix1_cursor)(unsafe.Pointer(pCur)).FiRow < (*spellfix1_cursor)(unsafe.Pointer(pCur)).FnRow {
 24825  		if (*spellfix1_cursor)(unsafe.Pointer(pCur)).FpFullScan != 0 {
 24826  			rc = sqlite3.Xsqlite3_step(tls, (*spellfix1_cursor)(unsafe.Pointer(pCur)).FpFullScan)
 24827  			if rc != SQLITE_ROW {
 24828  				(*spellfix1_cursor)(unsafe.Pointer(pCur)).FiRow = (*spellfix1_cursor)(unsafe.Pointer(pCur)).FnRow
 24829  			}
 24830  			if rc == SQLITE_ROW || rc == SQLITE_DONE {
 24831  				rc = SQLITE_OK
 24832  			}
 24833  		} else {
 24834  			(*spellfix1_cursor)(unsafe.Pointer(pCur)).FiRow++
 24835  		}
 24836  	}
 24837  	return rc
 24838  }
 24839  
 24840  func spellfix1Eof(tls *libc.TLS, cur uintptr) int32 {
 24841  	var pCur uintptr = cur
 24842  	return libc.Bool32((*spellfix1_cursor)(unsafe.Pointer(pCur)).FiRow >= (*spellfix1_cursor)(unsafe.Pointer(pCur)).FnRow)
 24843  }
 24844  
 24845  func spellfix1Column(tls *libc.TLS, cur uintptr, ctx uintptr, i int32) int32 {
 24846  	bp := tls.Alloc(4)
 24847  	defer tls.Free(4)
 24848  
 24849  	var pCur uintptr = cur
 24850  	if (*spellfix1_cursor)(unsafe.Pointer(pCur)).FpFullScan != 0 {
 24851  		if i <= SPELLFIX_COL_LANGID {
 24852  			sqlite3.Xsqlite3_result_value(tls, ctx, sqlite3.Xsqlite3_column_value(tls, (*spellfix1_cursor)(unsafe.Pointer(pCur)).FpFullScan, i))
 24853  		} else {
 24854  			sqlite3.Xsqlite3_result_null(tls, ctx)
 24855  		}
 24856  		return SQLITE_OK
 24857  	}
 24858  	switch i {
 24859  	case SPELLFIX_COL_WORD:
 24860  		{
 24861  			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))
 24862  			break
 24863  
 24864  		}
 24865  	case SPELLFIX_COL_RANK:
 24866  		{
 24867  			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)
 24868  			break
 24869  
 24870  		}
 24871  	case SPELLFIX_COL_DISTANCE:
 24872  		{
 24873  			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)
 24874  			break
 24875  
 24876  		}
 24877  	case SPELLFIX_COL_LANGID:
 24878  		{
 24879  			sqlite3.Xsqlite3_result_int(tls, ctx, (*spellfix1_cursor)(unsafe.Pointer(pCur)).FiLang)
 24880  			break
 24881  
 24882  		}
 24883  	case SPELLFIX_COL_SCORE:
 24884  		{
 24885  			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)
 24886  			break
 24887  
 24888  		}
 24889  	case SPELLFIX_COL_MATCHLEN:
 24890  		{
 24891  			*(*int32)(unsafe.Pointer(bp)) = (*spellfix1_row)(unsafe.Pointer((*spellfix1_cursor)(unsafe.Pointer(pCur)).Fa + uintptr((*spellfix1_cursor)(unsafe.Pointer(pCur)).FiRow)*64)).FiMatchlen
 24892  			if *(*int32)(unsafe.Pointer(bp)) < 0 {
 24893  				var nPattern int32 = int32(libc.Xstrlen(tls, (*spellfix1_cursor)(unsafe.Pointer(pCur)).FzPattern))
 24894  				var zWord uintptr = (*spellfix1_row)(unsafe.Pointer((*spellfix1_cursor)(unsafe.Pointer(pCur)).Fa + uintptr((*spellfix1_cursor)(unsafe.Pointer(pCur)).FiRow)*64)).FzWord
 24895  				var nWord int32 = int32(libc.Xstrlen(tls, zWord))
 24896  
 24897  				if nPattern > 0 && int32(*(*int8)(unsafe.Pointer((*spellfix1_cursor)(unsafe.Pointer(pCur)).FzPattern + uintptr(nPattern-1)))) == '*' {
 24898  					var zTranslit uintptr
 24899  					var res int32
 24900  					zTranslit = transliterate(tls, zWord, nWord)
 24901  					if !(zTranslit != 0) {
 24902  						return SQLITE_NOMEM
 24903  					}
 24904  					res = editdist1(tls, (*spellfix1_cursor)(unsafe.Pointer(pCur)).FzPattern, zTranslit, bp)
 24905  					sqlite3.Xsqlite3_free(tls, zTranslit)
 24906  					if res < 0 {
 24907  						return SQLITE_NOMEM
 24908  					}
 24909  					*(*int32)(unsafe.Pointer(bp)) = translen_to_charlen(tls, zWord, nWord, *(*int32)(unsafe.Pointer(bp)))
 24910  				} else {
 24911  					*(*int32)(unsafe.Pointer(bp)) = utf8Charlen(tls, zWord, nWord)
 24912  				}
 24913  			}
 24914  
 24915  			sqlite3.Xsqlite3_result_int(tls, ctx, *(*int32)(unsafe.Pointer(bp)))
 24916  			break
 24917  
 24918  		}
 24919  	case SPELLFIX_COL_PHONEHASH:
 24920  		{
 24921  			sqlite3.Xsqlite3_result_text(tls, ctx, (*spellfix1_cursor)(unsafe.Pointer(pCur)).Fa+uintptr((*spellfix1_cursor)(unsafe.Pointer(pCur)).FiRow)*64+32, -1, uintptr(0))
 24922  			break
 24923  
 24924  		}
 24925  	case SPELLFIX_COL_TOP:
 24926  		{
 24927  			sqlite3.Xsqlite3_result_int(tls, ctx, (*spellfix1_cursor)(unsafe.Pointer(pCur)).FiTop)
 24928  			break
 24929  
 24930  		}
 24931  	case SPELLFIX_COL_SCOPE:
 24932  		{
 24933  			sqlite3.Xsqlite3_result_int(tls, ctx, (*spellfix1_cursor)(unsafe.Pointer(pCur)).FiScope)
 24934  			break
 24935  
 24936  		}
 24937  	case SPELLFIX_COL_SRCHCNT:
 24938  		{
 24939  			sqlite3.Xsqlite3_result_int(tls, ctx, (*spellfix1_cursor)(unsafe.Pointer(pCur)).FnSearch)
 24940  			break
 24941  
 24942  		}
 24943  	default:
 24944  		{
 24945  			sqlite3.Xsqlite3_result_null(tls, ctx)
 24946  			break
 24947  
 24948  		}
 24949  	}
 24950  	return SQLITE_OK
 24951  }
 24952  
 24953  func spellfix1Rowid(tls *libc.TLS, cur uintptr, pRowid uintptr) int32 {
 24954  	var pCur uintptr = cur
 24955  	if (*spellfix1_cursor)(unsafe.Pointer(pCur)).FpFullScan != 0 {
 24956  		*(*sqlite_int64)(unsafe.Pointer(pRowid)) = sqlite3.Xsqlite3_column_int64(tls, (*spellfix1_cursor)(unsafe.Pointer(pCur)).FpFullScan, 4)
 24957  	} else {
 24958  		*(*sqlite_int64)(unsafe.Pointer(pRowid)) = (*spellfix1_row)(unsafe.Pointer((*spellfix1_cursor)(unsafe.Pointer(pCur)).Fa + uintptr((*spellfix1_cursor)(unsafe.Pointer(pCur)).FiRow)*64)).FiRowid
 24959  	}
 24960  	return SQLITE_OK
 24961  }
 24962  
 24963  func spellfix1GetConflict(tls *libc.TLS, db uintptr) uintptr {
 24964  	var eConflict int32 = sqlite3.Xsqlite3_vtab_on_conflict(tls, db)
 24965  
 24966  	return azConflict[eConflict-1]
 24967  }
 24968  
 24969  var azConflict = [5]uintptr{
 24970  	ts + 7824, ts + 7833, ts + 7840, ts + 7840, ts + 7846,
 24971  }
 24972  
 24973  func spellfix1Update(tls *libc.TLS, pVTab uintptr, argc int32, argv uintptr, pRowid uintptr) int32 {
 24974  	bp := tls.Alloc(284)
 24975  	defer tls.Free(284)
 24976  
 24977  	*(*int32)(unsafe.Pointer(bp + 280)) = SQLITE_OK
 24978  	var rowid sqlite3_int64
 24979  	var newRowid sqlite3_int64
 24980  	var p uintptr = pVTab
 24981  	var db uintptr = (*spellfix1_vtab)(unsafe.Pointer(p)).Fdb
 24982  
 24983  	if argc == 1 {
 24984  		rowid = libc.AssignPtrInt64(pRowid, sqlite3.Xsqlite3_value_int64(tls, *(*uintptr)(unsafe.Pointer(argv))))
 24985  		spellfix1DbExec(tls, bp+280, db,
 24986  			ts+7854,
 24987  			libc.VaList(bp, (*spellfix1_vtab)(unsafe.Pointer(p)).FzDbName, (*spellfix1_vtab)(unsafe.Pointer(p)).FzTableName, rowid))
 24988  	} else {
 24989  		var zWord uintptr = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + 2*8)))
 24990  		var nWord int32 = sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(argv + 2*8)))
 24991  		var iLang int32 = sqlite3.Xsqlite3_value_int(tls, *(*uintptr)(unsafe.Pointer(argv + 5*8)))
 24992  		var iRank int32 = sqlite3.Xsqlite3_value_int(tls, *(*uintptr)(unsafe.Pointer(argv + 3*8)))
 24993  		var zSoundslike uintptr = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + 12*8)))
 24994  		var nSoundslike int32 = sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(argv + 12*8)))
 24995  		var zK1 uintptr
 24996  		var zK2 uintptr
 24997  		var i int32
 24998  		var c int8
 24999  		var zConflict uintptr = spellfix1GetConflict(tls, db)
 25000  
 25001  		if zWord == uintptr(0) {
 25002  			var zCmd uintptr = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + 13*8)))
 25003  			if zCmd == uintptr(0) {
 25004  				(*sqlite3_vtab)(unsafe.Pointer(pVTab)).FzErrMsg = sqlite3.Xsqlite3_mprintf(tls, ts+7897,
 25005  					libc.VaList(bp+24, (*spellfix1_vtab)(unsafe.Pointer(p)).FzTableName))
 25006  				return SQLITE_CONSTRAINT | int32(5)<<8
 25007  			}
 25008  			if libc.Xstrcmp(tls, zCmd, ts+7933) == 0 {
 25009  				editDist3ConfigDelete(tls, (*spellfix1_vtab)(unsafe.Pointer(p)).FpConfig3)
 25010  				(*spellfix1_vtab)(unsafe.Pointer(p)).FpConfig3 = uintptr(0)
 25011  				return SQLITE_OK
 25012  			}
 25013  			if libc.Xstrncmp(tls, zCmd, ts+7599, uint64(16)) == 0 {
 25014  				editDist3ConfigDelete(tls, (*spellfix1_vtab)(unsafe.Pointer(p)).FpConfig3)
 25015  				(*spellfix1_vtab)(unsafe.Pointer(p)).FpConfig3 = uintptr(0)
 25016  				sqlite3.Xsqlite3_free(tls, (*spellfix1_vtab)(unsafe.Pointer(p)).FzCostTable)
 25017  				(*spellfix1_vtab)(unsafe.Pointer(p)).FzCostTable = spellfix1Dequote(tls, zCmd+uintptr(16))
 25018  				if (*spellfix1_vtab)(unsafe.Pointer(p)).FzCostTable == uintptr(0) {
 25019  					return SQLITE_NOMEM
 25020  				}
 25021  				if int32(*(*int8)(unsafe.Pointer((*spellfix1_vtab)(unsafe.Pointer(p)).FzCostTable))) == 0 || sqlite3.Xsqlite3_stricmp(tls, (*spellfix1_vtab)(unsafe.Pointer(p)).FzCostTable, ts+7939) == 0 {
 25022  					sqlite3.Xsqlite3_free(tls, (*spellfix1_vtab)(unsafe.Pointer(p)).FzCostTable)
 25023  					(*spellfix1_vtab)(unsafe.Pointer(p)).FzCostTable = uintptr(0)
 25024  				}
 25025  				return SQLITE_OK
 25026  			}
 25027  			(*sqlite3_vtab)(unsafe.Pointer(pVTab)).FzErrMsg = sqlite3.Xsqlite3_mprintf(tls, ts+7944,
 25028  				libc.VaList(bp+32, (*spellfix1_vtab)(unsafe.Pointer(p)).FzTableName, zCmd))
 25029  			return SQLITE_ERROR
 25030  		}
 25031  		if iRank < 1 {
 25032  			iRank = 1
 25033  		}
 25034  		if zSoundslike != 0 {
 25035  			zK1 = transliterate(tls, zSoundslike, nSoundslike)
 25036  		} else {
 25037  			zK1 = transliterate(tls, zWord, nWord)
 25038  		}
 25039  		if zK1 == uintptr(0) {
 25040  			return SQLITE_NOMEM
 25041  		}
 25042  		for i = 0; int32(libc.AssignInt8(&c, *(*int8)(unsafe.Pointer(zK1 + uintptr(i))))) != 0; i++ {
 25043  			if int32(c) >= 'A' && int32(c) <= 'Z' {
 25044  				*(*int8)(unsafe.Pointer(zK1 + uintptr(i))) += int8('a' - 'A')
 25045  			}
 25046  		}
 25047  		zK2 = phoneticHash(tls, zK1, i)
 25048  		if zK2 == uintptr(0) {
 25049  			sqlite3.Xsqlite3_free(tls, zK1)
 25050  			return SQLITE_NOMEM
 25051  		}
 25052  		if sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(argv))) == SQLITE_NULL {
 25053  			if sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8))) == SQLITE_NULL {
 25054  				spellfix1DbExec(tls, bp+280, db,
 25055  					ts+7979,
 25056  					libc.VaList(bp+48, (*spellfix1_vtab)(unsafe.Pointer(p)).FzDbName, (*spellfix1_vtab)(unsafe.Pointer(p)).FzTableName,
 25057  						iRank, iLang, zWord, zK1, zWord, zK2))
 25058  			} else {
 25059  				newRowid = sqlite3.Xsqlite3_value_int64(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 25060  				spellfix1DbExec(tls, bp+280, db,
 25061  					ts+8065,
 25062  					libc.VaList(bp+112, zConflict, (*spellfix1_vtab)(unsafe.Pointer(p)).FzDbName, (*spellfix1_vtab)(unsafe.Pointer(p)).FzTableName,
 25063  						newRowid, iRank, iLang, zWord, zK1, zWord, zK2))
 25064  			}
 25065  			*(*sqlite_int64)(unsafe.Pointer(pRowid)) = sqlite3.Xsqlite3_last_insert_rowid(tls, db)
 25066  		} else {
 25067  			rowid = sqlite3.Xsqlite3_value_int64(tls, *(*uintptr)(unsafe.Pointer(argv)))
 25068  			newRowid = libc.AssignPtrInt64(pRowid, sqlite3.Xsqlite3_value_int64(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8))))
 25069  			spellfix1DbExec(tls, bp+280, db,
 25070  				ts+8165,
 25071  				libc.VaList(bp+192, zConflict, (*spellfix1_vtab)(unsafe.Pointer(p)).FzDbName, (*spellfix1_vtab)(unsafe.Pointer(p)).FzTableName, newRowid, iRank, iLang,
 25072  					zWord, zK1, zWord, zK2, rowid))
 25073  		}
 25074  		sqlite3.Xsqlite3_free(tls, zK1)
 25075  		sqlite3.Xsqlite3_free(tls, zK2)
 25076  	}
 25077  	return *(*int32)(unsafe.Pointer(bp + 280))
 25078  }
 25079  
 25080  func spellfix1Rename(tls *libc.TLS, pVTab uintptr, zNew uintptr) int32 {
 25081  	bp := tls.Alloc(36)
 25082  	defer tls.Free(36)
 25083  
 25084  	var p uintptr = pVTab
 25085  	var db uintptr = (*spellfix1_vtab)(unsafe.Pointer(p)).Fdb
 25086  	*(*int32)(unsafe.Pointer(bp + 32)) = SQLITE_OK
 25087  	var zNewName uintptr = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp, zNew))
 25088  	if zNewName == uintptr(0) {
 25089  		return SQLITE_NOMEM
 25090  	}
 25091  	spellfix1DbExec(tls, bp+32, db,
 25092  		ts+8274,
 25093  		libc.VaList(bp+8, (*spellfix1_vtab)(unsafe.Pointer(p)).FzDbName, (*spellfix1_vtab)(unsafe.Pointer(p)).FzTableName, zNewName))
 25094  	if *(*int32)(unsafe.Pointer(bp + 32)) == SQLITE_OK {
 25095  		sqlite3.Xsqlite3_free(tls, (*spellfix1_vtab)(unsafe.Pointer(p)).FzTableName)
 25096  		(*spellfix1_vtab)(unsafe.Pointer(p)).FzTableName = zNewName
 25097  	} else {
 25098  		sqlite3.Xsqlite3_free(tls, zNewName)
 25099  	}
 25100  	return *(*int32)(unsafe.Pointer(bp + 32))
 25101  }
 25102  
 25103  var spellfix1Module = sqlite3_module{
 25104  	FxCreate:     0,
 25105  	FxConnect:    0,
 25106  	FxBestIndex:  0,
 25107  	FxDisconnect: 0,
 25108  	FxDestroy:    0,
 25109  	FxOpen:       0,
 25110  	FxClose:      0,
 25111  	FxFilter:     0,
 25112  	FxNext:       0,
 25113  	FxEof:        0,
 25114  	FxColumn:     0,
 25115  	FxRowid:      0,
 25116  	FxUpdate:     0,
 25117  	FxRename:     0,
 25118  }
 25119  
 25120  func spellfix1Register(tls *libc.TLS, db uintptr) int32 {
 25121  	var rc int32 = SQLITE_OK
 25122  	var i int32
 25123  	rc = sqlite3.Xsqlite3_create_function(tls, db, ts+8323, 1,
 25124  		SQLITE_UTF8|SQLITE_DETERMINISTIC, uintptr(0),
 25125  		*(*uintptr)(unsafe.Pointer(&struct {
 25126  			f func(*libc.TLS, uintptr, int32, uintptr)
 25127  		}{transliterateSqlFunc})), uintptr(0), uintptr(0))
 25128  	if rc == SQLITE_OK {
 25129  		rc = sqlite3.Xsqlite3_create_function(tls, db, ts+8342, 2,
 25130  			SQLITE_UTF8|SQLITE_DETERMINISTIC, uintptr(0),
 25131  			*(*uintptr)(unsafe.Pointer(&struct {
 25132  				f func(*libc.TLS, uintptr, int32, uintptr)
 25133  			}{editdistSqlFunc})), uintptr(0), uintptr(0))
 25134  	}
 25135  	if rc == SQLITE_OK {
 25136  		rc = sqlite3.Xsqlite3_create_function(tls, db, ts+8361, 1,
 25137  			SQLITE_UTF8|SQLITE_DETERMINISTIC, uintptr(0),
 25138  			*(*uintptr)(unsafe.Pointer(&struct {
 25139  				f func(*libc.TLS, uintptr, int32, uintptr)
 25140  			}{phoneticHashSqlFunc})), uintptr(0), uintptr(0))
 25141  	}
 25142  	if rc == SQLITE_OK {
 25143  		rc = sqlite3.Xsqlite3_create_function(tls, db, ts+8381, 1,
 25144  			SQLITE_UTF8|SQLITE_DETERMINISTIC, uintptr(0),
 25145  			*(*uintptr)(unsafe.Pointer(&struct {
 25146  				f func(*libc.TLS, uintptr, int32, uintptr)
 25147  			}{scriptCodeSqlFunc})), uintptr(0), uintptr(0))
 25148  	}
 25149  	if rc == SQLITE_OK {
 25150  		rc = sqlite3.Xsqlite3_create_module(tls, db, ts+8402, uintptr(unsafe.Pointer(&spellfix1Module)), uintptr(0))
 25151  	}
 25152  	if rc == SQLITE_OK {
 25153  		rc = editDist3Install(tls, db)
 25154  	}
 25155  
 25156  	for i = 0; uint64(i) < uint64(unsafe.Sizeof(translit))/uint64(unsafe.Sizeof(Transliteration{}))-uint64(1); i++ {
 25157  	}
 25158  
 25159  	return rc
 25160  }
 25161  
 25162  func sqlite3_spellfix_init(tls *libc.TLS, db uintptr, pzErrMsg uintptr, pApi uintptr) int32 {
 25163  	_ = pApi
 25164  
 25165  	return spellfix1Register(tls, db)
 25166  	return SQLITE_OK
 25167  }
 25168  
 25169  func totypeIsspace(tls *libc.TLS, c uint8) int32 {
 25170  	return libc.Bool32(int32(c) == ' ' || int32(c) == '\t' || int32(c) == '\n' || int32(c) == '\v' || int32(c) == '\f' || int32(c) == '\r')
 25171  }
 25172  
 25173  func totypeIsdigit(tls *libc.TLS, c uint8) int32 {
 25174  	return libc.Bool32(int32(c) >= '0' && int32(c) <= '9')
 25175  }
 25176  
 25177  func totypeCompare2pow63(tls *libc.TLS, zNum uintptr) int32 {
 25178  	var c int32 = 0
 25179  	var i int32
 25180  
 25181  	var pow63 uintptr = ts + 8412
 25182  	for i = 0; c == 0 && i < 18; i++ {
 25183  		c = (int32(*(*int8)(unsafe.Pointer(zNum + uintptr(i)))) - int32(*(*int8)(unsafe.Pointer(pow63 + uintptr(i))))) * 10
 25184  	}
 25185  	if c == 0 {
 25186  		c = int32(*(*int8)(unsafe.Pointer(zNum + 18))) - '8'
 25187  	}
 25188  	return c
 25189  }
 25190  
 25191  func totypeAtoi64(tls *libc.TLS, zNum uintptr, pNum uintptr, length int32) int32 {
 25192  	var u sqlite3_uint64 = uint64(0)
 25193  	var neg int32 = 0
 25194  	var i int32
 25195  	var c int32 = 0
 25196  	var nonNum int32 = 0
 25197  	var zStart uintptr
 25198  	var zEnd uintptr = zNum + uintptr(length)
 25199  
 25200  	for zNum < zEnd && totypeIsspace(tls, uint8(*(*int8)(unsafe.Pointer(zNum)))) != 0 {
 25201  		zNum++
 25202  	}
 25203  	if zNum < zEnd {
 25204  		if int32(*(*int8)(unsafe.Pointer(zNum))) == '-' {
 25205  			neg = 1
 25206  			zNum++
 25207  		} else if int32(*(*int8)(unsafe.Pointer(zNum))) == '+' {
 25208  			zNum++
 25209  		}
 25210  	}
 25211  	zStart = zNum
 25212  	for zNum < zEnd && int32(*(*int8)(unsafe.Pointer(zNum))) == '0' {
 25213  		zNum++
 25214  	}
 25215  	for i = 0; zNum+uintptr(i) < zEnd && libc.AssignInt32(&c, int32(*(*int8)(unsafe.Pointer(zNum + uintptr(i))))) >= '0' && c <= '9'; i++ {
 25216  		u = u*uint64(10) + sqlite3_uint64(c) - uint64('0')
 25217  	}
 25218  	if u > uint64(int64(0xffffffff)|int64(0x7fffffff)<<32) {
 25219  		*(*sqlite3_int64)(unsafe.Pointer(pNum)) = int64(-1) - (int64(0xffffffff) | int64(0x7fffffff)<<32)
 25220  	} else if neg != 0 {
 25221  		*(*sqlite3_int64)(unsafe.Pointer(pNum)) = -sqlite3_int64(u)
 25222  	} else {
 25223  		*(*sqlite3_int64)(unsafe.Pointer(pNum)) = sqlite3_int64(u)
 25224  	}
 25225  	if c != 0 && zNum+uintptr(i) < zEnd || i == 0 && zStart == zNum || i > 19 || nonNum != 0 {
 25226  		return 1
 25227  	} else if i < 19 {
 25228  		return 0
 25229  	} else {
 25230  		c = totypeCompare2pow63(tls, zNum)
 25231  		if c < 0 {
 25232  			return 0
 25233  		} else if c > 0 {
 25234  			return 1
 25235  		} else {
 25236  			if neg != 0 {
 25237  				return 0
 25238  			}
 25239  			return 2
 25240  		}
 25241  	}
 25242  	return int32(0)
 25243  }
 25244  
 25245  func totypeAtoF(tls *libc.TLS, z uintptr, pResult uintptr, length int32) int32 {
 25246  	var zEnd uintptr
 25247  
 25248  	var sign int32
 25249  	var s sqlite3_int64
 25250  	var d int32
 25251  	var esign int32
 25252  	var e int32
 25253  	var eValid int32
 25254  	var result float64
 25255  	var nDigits int32
 25256  	var nonNum int32
 25257  	var scale float64
 25258  	zEnd = z + uintptr(length)
 25259  	sign = 1
 25260  	s = int64(0)
 25261  	d = 0
 25262  	esign = 1
 25263  	e = 0
 25264  	eValid = 1
 25265  	nDigits = 0
 25266  	nonNum = 0
 25267  
 25268  	*(*float64)(unsafe.Pointer(pResult)) = 0.0
 25269  
 25270  __1:
 25271  	if !(z < zEnd && totypeIsspace(tls, uint8(*(*int8)(unsafe.Pointer(z)))) != 0) {
 25272  		goto __2
 25273  	}
 25274  	z++
 25275  	goto __1
 25276  __2:
 25277  	;
 25278  	if !(z >= zEnd) {
 25279  		goto __3
 25280  	}
 25281  	return 0
 25282  __3:
 25283  	;
 25284  	if !(int32(*(*int8)(unsafe.Pointer(z))) == '-') {
 25285  		goto __4
 25286  	}
 25287  	sign = -1
 25288  	z++
 25289  	goto __5
 25290  __4:
 25291  	if !(int32(*(*int8)(unsafe.Pointer(z))) == '+') {
 25292  		goto __6
 25293  	}
 25294  	z++
 25295  __6:
 25296  	;
 25297  __5:
 25298  	;
 25299  __7:
 25300  	if !(z < zEnd && int32(*(*int8)(unsafe.Pointer(z))) == '0') {
 25301  		goto __8
 25302  	}
 25303  	z++
 25304  	nDigits++
 25305  	goto __7
 25306  __8:
 25307  	;
 25308  __9:
 25309  	if !(z < zEnd && totypeIsdigit(tls, uint8(*(*int8)(unsafe.Pointer(z)))) != 0 && s < (int64(0xffffffff)|int64(0x7fffffff)<<32-int64(9))/int64(10)) {
 25310  		goto __10
 25311  	}
 25312  	s = s*int64(10) + sqlite3_int64(int32(*(*int8)(unsafe.Pointer(z)))-'0')
 25313  	z++
 25314  	nDigits++
 25315  	goto __9
 25316  __10:
 25317  	;
 25318  __11:
 25319  	if !(z < zEnd && totypeIsdigit(tls, uint8(*(*int8)(unsafe.Pointer(z)))) != 0) {
 25320  		goto __12
 25321  	}
 25322  	z++
 25323  	nDigits++
 25324  	d++
 25325  	goto __11
 25326  __12:
 25327  	;
 25328  	if !(z >= zEnd) {
 25329  		goto __13
 25330  	}
 25331  	goto totype_atof_calc
 25332  __13:
 25333  	;
 25334  	if !(int32(*(*int8)(unsafe.Pointer(z))) == '.') {
 25335  		goto __14
 25336  	}
 25337  	z++
 25338  
 25339  __15:
 25340  	if !(z < zEnd && totypeIsdigit(tls, uint8(*(*int8)(unsafe.Pointer(z)))) != 0 && s < (int64(0xffffffff)|int64(0x7fffffff)<<32-int64(9))/int64(10)) {
 25341  		goto __16
 25342  	}
 25343  	s = s*int64(10) + sqlite3_int64(int32(*(*int8)(unsafe.Pointer(z)))-'0')
 25344  	z++
 25345  	nDigits++
 25346  	d--
 25347  	goto __15
 25348  __16:
 25349  	;
 25350  __17:
 25351  	if !(z < zEnd && totypeIsdigit(tls, uint8(*(*int8)(unsafe.Pointer(z)))) != 0) {
 25352  		goto __18
 25353  	}
 25354  	z++
 25355  	nDigits++
 25356  	goto __17
 25357  __18:
 25358  	;
 25359  __14:
 25360  	;
 25361  	if !(z >= zEnd) {
 25362  		goto __19
 25363  	}
 25364  	goto totype_atof_calc
 25365  __19:
 25366  	;
 25367  	if !(int32(*(*int8)(unsafe.Pointer(z))) == 'e' || int32(*(*int8)(unsafe.Pointer(z))) == 'E') {
 25368  		goto __20
 25369  	}
 25370  	z++
 25371  	eValid = 0
 25372  	if !(z >= zEnd) {
 25373  		goto __21
 25374  	}
 25375  	goto totype_atof_calc
 25376  __21:
 25377  	;
 25378  	if !(int32(*(*int8)(unsafe.Pointer(z))) == '-') {
 25379  		goto __22
 25380  	}
 25381  	esign = -1
 25382  	z++
 25383  	goto __23
 25384  __22:
 25385  	if !(int32(*(*int8)(unsafe.Pointer(z))) == '+') {
 25386  		goto __24
 25387  	}
 25388  	z++
 25389  __24:
 25390  	;
 25391  __23:
 25392  	;
 25393  __25:
 25394  	if !(z < zEnd && totypeIsdigit(tls, uint8(*(*int8)(unsafe.Pointer(z)))) != 0) {
 25395  		goto __26
 25396  	}
 25397  	if e < 10000 {
 25398  		e = e*10 + (int32(*(*int8)(unsafe.Pointer(z))) - '0')
 25399  	} else {
 25400  		e = 10000
 25401  	}
 25402  	z++
 25403  	eValid = 1
 25404  	goto __25
 25405  __26:
 25406  	;
 25407  __20:
 25408  	;
 25409  	if !(nDigits != 0 && eValid != 0) {
 25410  		goto __27
 25411  	}
 25412  __28:
 25413  	if !(z < zEnd && totypeIsspace(tls, uint8(*(*int8)(unsafe.Pointer(z)))) != 0) {
 25414  		goto __29
 25415  	}
 25416  	z++
 25417  	goto __28
 25418  __29:
 25419  	;
 25420  __27:
 25421  	;
 25422  totype_atof_calc:
 25423  	e = e*esign + d
 25424  	if !(e < 0) {
 25425  		goto __30
 25426  	}
 25427  	esign = -1
 25428  	e = e * -1
 25429  	goto __31
 25430  __30:
 25431  	esign = 1
 25432  __31:
 25433  	;
 25434  	if !!(s != 0) {
 25435  		goto __32
 25436  	}
 25437  
 25438  	if sign < 0 && nDigits != 0 {
 25439  		result = -libc.Float64FromFloat64(float64(0))
 25440  	} else {
 25441  		result = float64(0)
 25442  	}
 25443  	goto __33
 25444  __32:
 25445  	if !(esign > 0) {
 25446  		goto __34
 25447  	}
 25448  __36:
 25449  	if !(s < (int64(0xffffffff)|int64(0x7fffffff)<<32)/int64(10) && e > 0) {
 25450  		goto __37
 25451  	}
 25452  	e--
 25453  	s = s * int64(10)
 25454  	goto __36
 25455  __37:
 25456  	;
 25457  	goto __35
 25458  __34:
 25459  __38:
 25460  	if !(!(int32(s%int64(10)) != 0) && e > 0) {
 25461  		goto __39
 25462  	}
 25463  	e--
 25464  	s = s / int64(10)
 25465  	goto __38
 25466  __39:
 25467  	;
 25468  __35:
 25469  	;
 25470  	if sign < 0 {
 25471  		s = -s
 25472  	} else {
 25473  		s = s
 25474  	}
 25475  
 25476  	if !(e != 0) {
 25477  		goto __40
 25478  	}
 25479  	scale = 1.0
 25480  
 25481  	if !(e > 307 && e < 342) {
 25482  		goto __42
 25483  	}
 25484  __44:
 25485  	if !(e%308 != 0) {
 25486  		goto __45
 25487  	}
 25488  	scale = scale * 1.0e+1
 25489  	e = e - 1
 25490  	goto __44
 25491  __45:
 25492  	;
 25493  	if !(esign < 0) {
 25494  		goto __46
 25495  	}
 25496  	result = float64(s) / scale
 25497  	result = result / 1.0e+308
 25498  	goto __47
 25499  __46:
 25500  	result = float64(s) * scale
 25501  	result = result * 1.0e+308
 25502  __47:
 25503  	;
 25504  	goto __43
 25505  __42:
 25506  	if !(e >= 342) {
 25507  		goto __48
 25508  	}
 25509  	if !(esign < 0) {
 25510  		goto __50
 25511  	}
 25512  	result = 0.0 * float64(s)
 25513  	goto __51
 25514  __50:
 25515  	result = libc.Float64(1e308) * libc.Float64(1e308) * float64(s)
 25516  __51:
 25517  	;
 25518  	goto __49
 25519  __48:
 25520  __52:
 25521  	if !(e%22 != 0) {
 25522  		goto __53
 25523  	}
 25524  	scale = scale * 1.0e+1
 25525  	e = e - 1
 25526  	goto __52
 25527  __53:
 25528  	;
 25529  __54:
 25530  	if !(e > 0) {
 25531  		goto __55
 25532  	}
 25533  	scale = scale * 1.0e+22
 25534  	e = e - 22
 25535  	goto __54
 25536  __55:
 25537  	;
 25538  	if !(esign < 0) {
 25539  		goto __56
 25540  	}
 25541  	result = float64(s) / scale
 25542  	goto __57
 25543  __56:
 25544  	result = float64(s) * scale
 25545  __57:
 25546  	;
 25547  __49:
 25548  	;
 25549  __43:
 25550  	;
 25551  	goto __41
 25552  __40:
 25553  	result = float64(s)
 25554  __41:
 25555  	;
 25556  __33:
 25557  	;
 25558  	*(*float64)(unsafe.Pointer(pResult)) = result
 25559  
 25560  	return libc.Bool32(z >= zEnd && nDigits > 0 && eValid != 0 && nonNum == 0)
 25561  }
 25562  
 25563  func tointegerFunc(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 25564  	bp := tls.Alloc(24)
 25565  	defer tls.Free(24)
 25566  
 25567  	_ = argc
 25568  	switch sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(argv))) {
 25569  	case SQLITE_FLOAT:
 25570  		{
 25571  			var rVal float64 = sqlite3.Xsqlite3_value_double(tls, *(*uintptr)(unsafe.Pointer(argv)))
 25572  			var iVal sqlite3_int64 = sqlite3_int64(rVal)
 25573  			if rVal == float64(iVal) {
 25574  				sqlite3.Xsqlite3_result_int64(tls, context, iVal)
 25575  			}
 25576  			break
 25577  
 25578  		}
 25579  	case SQLITE_INTEGER:
 25580  		{
 25581  			sqlite3.Xsqlite3_result_int64(tls, context, sqlite3.Xsqlite3_value_int64(tls, *(*uintptr)(unsafe.Pointer(argv))))
 25582  			break
 25583  
 25584  		}
 25585  	case SQLITE_BLOB:
 25586  		{
 25587  			var zBlob uintptr = sqlite3.Xsqlite3_value_blob(tls, *(*uintptr)(unsafe.Pointer(argv)))
 25588  			if zBlob != 0 {
 25589  				var nBlob int32 = sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(argv)))
 25590  				if uint64(nBlob) == uint64(unsafe.Sizeof(sqlite3_int64(0))) {
 25591  					if 0 != 0 {
 25592  						var i int32
 25593  
 25594  						for i = 0; uint64(i) < uint64(unsafe.Sizeof(sqlite3_int64(0))); i++ {
 25595  							*(*uint8)(unsafe.Pointer(bp + uintptr(i))) = *(*uint8)(unsafe.Pointer(zBlob + uintptr(uint64(unsafe.Sizeof(sqlite3_int64(0)))-uint64(1)-uint64(i))))
 25596  						}
 25597  						libc.X__builtin___memcpy_chk(tls, bp+8, bp, uint64(unsafe.Sizeof(sqlite3_int64(0))), libc.X__builtin_object_size(tls, bp+8, 0))
 25598  					} else {
 25599  						libc.X__builtin___memcpy_chk(tls, bp+8, zBlob, uint64(unsafe.Sizeof(sqlite3_int64(0))), libc.X__builtin_object_size(tls, bp+8, 0))
 25600  					}
 25601  					sqlite3.Xsqlite3_result_int64(tls, context, *(*sqlite3_int64)(unsafe.Pointer(bp + 8)))
 25602  				}
 25603  			}
 25604  			break
 25605  
 25606  		}
 25607  	case SQLITE_TEXT:
 25608  		{
 25609  			var zStr uintptr = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 25610  			if zStr != 0 {
 25611  				var nStr int32 = sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(argv)))
 25612  				if nStr != 0 && !(totypeIsspace(tls, *(*uint8)(unsafe.Pointer(zStr))) != 0) {
 25613  					if !(totypeAtoi64(tls, zStr, bp+16, nStr) != 0) {
 25614  						sqlite3.Xsqlite3_result_int64(tls, context, *(*sqlite3_int64)(unsafe.Pointer(bp + 16)))
 25615  					}
 25616  				}
 25617  			}
 25618  			break
 25619  
 25620  		}
 25621  	default:
 25622  		{
 25623  			break
 25624  
 25625  		}
 25626  	}
 25627  }
 25628  
 25629  func torealFunc(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 25630  	bp := tls.Alloc(24)
 25631  	defer tls.Free(24)
 25632  
 25633  	_ = argc
 25634  	switch sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(argv))) {
 25635  	case SQLITE_FLOAT:
 25636  		{
 25637  			sqlite3.Xsqlite3_result_double(tls, context, sqlite3.Xsqlite3_value_double(tls, *(*uintptr)(unsafe.Pointer(argv))))
 25638  			break
 25639  
 25640  		}
 25641  	case SQLITE_INTEGER:
 25642  		{
 25643  			var iVal sqlite3_int64 = sqlite3.Xsqlite3_value_int64(tls, *(*uintptr)(unsafe.Pointer(argv)))
 25644  			var rVal float64 = float64(iVal)
 25645  			if iVal == sqlite3_int64(rVal) {
 25646  				sqlite3.Xsqlite3_result_double(tls, context, rVal)
 25647  			}
 25648  			break
 25649  
 25650  		}
 25651  	case SQLITE_BLOB:
 25652  		{
 25653  			var zBlob uintptr = sqlite3.Xsqlite3_value_blob(tls, *(*uintptr)(unsafe.Pointer(argv)))
 25654  			if zBlob != 0 {
 25655  				var nBlob int32 = sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(argv)))
 25656  				if uint64(nBlob) == uint64(unsafe.Sizeof(float64(0))) {
 25657  					if 1 != 0 {
 25658  						var i int32
 25659  
 25660  						for i = 0; uint64(i) < uint64(unsafe.Sizeof(float64(0))); i++ {
 25661  							*(*uint8)(unsafe.Pointer(bp + uintptr(i))) = *(*uint8)(unsafe.Pointer(zBlob + uintptr(uint64(unsafe.Sizeof(float64(0)))-uint64(1)-uint64(i))))
 25662  						}
 25663  						libc.X__builtin___memcpy_chk(tls, bp+8, bp, uint64(unsafe.Sizeof(float64(0))), libc.X__builtin_object_size(tls, bp+8, 0))
 25664  					} else {
 25665  						libc.X__builtin___memcpy_chk(tls, bp+8, zBlob, uint64(unsafe.Sizeof(float64(0))), libc.X__builtin_object_size(tls, bp+8, 0))
 25666  					}
 25667  					sqlite3.Xsqlite3_result_double(tls, context, *(*float64)(unsafe.Pointer(bp + 8)))
 25668  				}
 25669  			}
 25670  			break
 25671  
 25672  		}
 25673  	case SQLITE_TEXT:
 25674  		{
 25675  			var zStr uintptr = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 25676  			if zStr != 0 {
 25677  				var nStr int32 = sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(argv)))
 25678  				if nStr != 0 && !(totypeIsspace(tls, *(*uint8)(unsafe.Pointer(zStr))) != 0) && !(totypeIsspace(tls, *(*uint8)(unsafe.Pointer(zStr + uintptr(nStr-1)))) != 0) {
 25679  					if totypeAtoF(tls, zStr, bp+16, nStr) != 0 {
 25680  						sqlite3.Xsqlite3_result_double(tls, context, *(*float64)(unsafe.Pointer(bp + 16)))
 25681  						return
 25682  					}
 25683  				}
 25684  			}
 25685  			break
 25686  
 25687  		}
 25688  	default:
 25689  		{
 25690  			break
 25691  
 25692  		}
 25693  	}
 25694  }
 25695  
 25696  func sqlite3_totype_init(tls *libc.TLS, db uintptr, pzErrMsg uintptr, pApi uintptr) int32 {
 25697  	var rc int32 = SQLITE_OK
 25698  	_ = pApi
 25699  
 25700  	_ = pzErrMsg
 25701  	rc = sqlite3.Xsqlite3_create_function(tls, db, ts+8431, 1,
 25702  		SQLITE_UTF8|SQLITE_DETERMINISTIC|SQLITE_INNOCUOUS, uintptr(0),
 25703  		*(*uintptr)(unsafe.Pointer(&struct {
 25704  			f func(*libc.TLS, uintptr, int32, uintptr)
 25705  		}{tointegerFunc})), uintptr(0), uintptr(0))
 25706  	if rc == SQLITE_OK {
 25707  		rc = sqlite3.Xsqlite3_create_function(tls, db, ts+8441, 1,
 25708  			SQLITE_UTF8|SQLITE_DETERMINISTIC|SQLITE_INNOCUOUS, uintptr(0),
 25709  			*(*uintptr)(unsafe.Pointer(&struct {
 25710  				f func(*libc.TLS, uintptr, int32, uintptr)
 25711  			}{torealFunc})), uintptr(0), uintptr(0))
 25712  	}
 25713  	return rc
 25714  }
 25715  
 25716  type UnionCsr1 = struct {
 25717  	Fbase        sqlite3_vtab_cursor
 25718  	FpStmt       uintptr
 25719  	FiMaxRowid   sqlite3_int64
 25720  	FiTab        int32
 25721  	F__ccgo_pad1 [4]byte
 25722  }
 25723  
 25724  type UnionCsr = UnionCsr1
 25725  type UnionTab1 = struct {
 25726  	Fbase        sqlite3_vtab
 25727  	Fdb          uintptr
 25728  	FbSwarm      int32
 25729  	FiPK         int32
 25730  	FnSrc        int32
 25731  	F__ccgo_pad1 [4]byte
 25732  	FaSrc        uintptr
 25733  	FbHasContext int32
 25734  	F__ccgo_pad2 [4]byte
 25735  	FzSourceStr  uintptr
 25736  	FpNotFound   uintptr
 25737  	FpOpenClose  uintptr
 25738  	FpClosable   uintptr
 25739  	FnOpen       int32
 25740  	FnMaxOpen    int32
 25741  }
 25742  
 25743  type UnionTab = UnionTab1
 25744  type UnionSrc1 = struct {
 25745  	FzDb           uintptr
 25746  	FzTab          uintptr
 25747  	FiMin          sqlite3_int64
 25748  	FiMax          sqlite3_int64
 25749  	FzFile         uintptr
 25750  	FzContext      uintptr
 25751  	FnUser         int32
 25752  	F__ccgo_pad1   [4]byte
 25753  	Fdb            uintptr
 25754  	FpNextClosable uintptr
 25755  }
 25756  
 25757  type UnionSrc = UnionSrc1
 25758  
 25759  func unionMalloc(tls *libc.TLS, pRc uintptr, nByte sqlite3_int64) uintptr {
 25760  	var pRet uintptr
 25761  
 25762  	if *(*int32)(unsafe.Pointer(pRc)) == SQLITE_OK {
 25763  		pRet = sqlite3.Xsqlite3_malloc64(tls, uint64(nByte))
 25764  		if pRet != 0 {
 25765  			libc.X__builtin___memset_chk(tls, pRet, 0, size_t(nByte), libc.X__builtin_object_size(tls, pRet, 0))
 25766  		} else {
 25767  			*(*int32)(unsafe.Pointer(pRc)) = SQLITE_NOMEM
 25768  		}
 25769  	} else {
 25770  		pRet = uintptr(0)
 25771  	}
 25772  	return pRet
 25773  }
 25774  
 25775  func unionStrdup(tls *libc.TLS, pRc uintptr, zIn uintptr) uintptr {
 25776  	var zRet uintptr = uintptr(0)
 25777  	if zIn != 0 {
 25778  		var nByte sqlite3_int64 = sqlite3_int64(libc.Xstrlen(tls, zIn) + uint64(1))
 25779  		zRet = unionMalloc(tls, pRc, nByte)
 25780  		if zRet != 0 {
 25781  			libc.X__builtin___memcpy_chk(tls, zRet, zIn, size_t(nByte), libc.X__builtin_object_size(tls, zRet, 0))
 25782  		}
 25783  	}
 25784  	return zRet
 25785  }
 25786  
 25787  func unionDequote(tls *libc.TLS, z uintptr) {
 25788  	if z != 0 {
 25789  		var q int8 = *(*int8)(unsafe.Pointer(z))
 25790  
 25791  		if int32(q) == '[' || int32(q) == '\'' || int32(q) == '"' || int32(q) == '`' {
 25792  			var iIn int32 = 1
 25793  			var iOut int32 = 0
 25794  			if int32(q) == '[' {
 25795  				q = int8(']')
 25796  			}
 25797  			for *(*int8)(unsafe.Pointer(z + uintptr(iIn))) != 0 {
 25798  				if int32(*(*int8)(unsafe.Pointer(z + uintptr(iIn)))) == int32(q) {
 25799  					if int32(*(*int8)(unsafe.Pointer(z + uintptr(iIn+1)))) != int32(q) {
 25800  						iIn++
 25801  						break
 25802  					} else {
 25803  						iIn = iIn + 2
 25804  						*(*int8)(unsafe.Pointer(z + uintptr(libc.PostIncInt32(&iOut, 1)))) = q
 25805  					}
 25806  				} else {
 25807  					*(*int8)(unsafe.Pointer(z + uintptr(libc.PostIncInt32(&iOut, 1)))) = *(*int8)(unsafe.Pointer(z + uintptr(libc.PostIncInt32(&iIn, 1))))
 25808  				}
 25809  			}
 25810  			*(*int8)(unsafe.Pointer(z + uintptr(iOut))) = int8(0)
 25811  		}
 25812  	}
 25813  }
 25814  
 25815  func unionPrepare(tls *libc.TLS, pRc uintptr, db uintptr, zSql uintptr, pzErr uintptr) uintptr {
 25816  	bp := tls.Alloc(16)
 25817  	defer tls.Free(16)
 25818  
 25819  	*(*uintptr)(unsafe.Pointer(bp + 8)) = uintptr(0)
 25820  
 25821  	if *(*int32)(unsafe.Pointer(pRc)) == SQLITE_OK {
 25822  		var rc int32 = sqlite3.Xsqlite3_prepare_v2(tls, db, zSql, -1, bp+8, uintptr(0))
 25823  		if rc != SQLITE_OK {
 25824  			*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+8448, libc.VaList(bp, sqlite3.Xsqlite3_errmsg(tls, db)))
 25825  			*(*int32)(unsafe.Pointer(pRc)) = rc
 25826  		}
 25827  	}
 25828  	return *(*uintptr)(unsafe.Pointer(bp + 8))
 25829  }
 25830  
 25831  func unionPreparePrintf(tls *libc.TLS, pRc uintptr, pzErr uintptr, db uintptr, zFmt uintptr, va uintptr) uintptr {
 25832  	var pRet uintptr = uintptr(0)
 25833  	var zSql uintptr
 25834  	var ap va_list
 25835  	_ = ap
 25836  	ap = va
 25837  
 25838  	zSql = sqlite3.Xsqlite3_vmprintf(tls, zFmt, ap)
 25839  	if *(*int32)(unsafe.Pointer(pRc)) == SQLITE_OK {
 25840  		if zSql == uintptr(0) {
 25841  			*(*int32)(unsafe.Pointer(pRc)) = SQLITE_NOMEM
 25842  		} else {
 25843  			pRet = unionPrepare(tls, pRc, db, zSql, pzErr)
 25844  		}
 25845  	}
 25846  	sqlite3.Xsqlite3_free(tls, zSql)
 25847  
 25848  	_ = ap
 25849  	return pRet
 25850  }
 25851  
 25852  func unionFinalize(tls *libc.TLS, pRc uintptr, pStmt uintptr, pzErr uintptr) {
 25853  	bp := tls.Alloc(8)
 25854  	defer tls.Free(8)
 25855  
 25856  	var db uintptr = sqlite3.Xsqlite3_db_handle(tls, pStmt)
 25857  	var rc int32 = sqlite3.Xsqlite3_finalize(tls, pStmt)
 25858  	if *(*int32)(unsafe.Pointer(pRc)) == SQLITE_OK {
 25859  		*(*int32)(unsafe.Pointer(pRc)) = rc
 25860  		if rc != 0 {
 25861  			*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp, sqlite3.Xsqlite3_errmsg(tls, db)))
 25862  		}
 25863  	}
 25864  }
 25865  
 25866  func unionInvokeOpenClose(tls *libc.TLS, pTab uintptr, pSrc uintptr, bClose int32, pzErr uintptr) int32 {
 25867  	bp := tls.Alloc(8)
 25868  	defer tls.Free(8)
 25869  
 25870  	var rc int32 = SQLITE_OK
 25871  	if (*UnionTab)(unsafe.Pointer(pTab)).FpOpenClose != 0 {
 25872  		sqlite3.Xsqlite3_bind_text(tls, (*UnionTab)(unsafe.Pointer(pTab)).FpOpenClose, 1, (*UnionSrc)(unsafe.Pointer(pSrc)).FzFile, -1, uintptr(0))
 25873  		if (*UnionTab)(unsafe.Pointer(pTab)).FbHasContext != 0 {
 25874  			sqlite3.Xsqlite3_bind_text(tls, (*UnionTab)(unsafe.Pointer(pTab)).FpOpenClose, 2, (*UnionSrc)(unsafe.Pointer(pSrc)).FzContext, -1, uintptr(0))
 25875  		}
 25876  		sqlite3.Xsqlite3_bind_int(tls, (*UnionTab)(unsafe.Pointer(pTab)).FpOpenClose, 2+(*UnionTab)(unsafe.Pointer(pTab)).FbHasContext, bClose)
 25877  		sqlite3.Xsqlite3_step(tls, (*UnionTab)(unsafe.Pointer(pTab)).FpOpenClose)
 25878  		if SQLITE_OK != libc.AssignInt32(&rc, sqlite3.Xsqlite3_reset(tls, (*UnionTab)(unsafe.Pointer(pTab)).FpOpenClose)) {
 25879  			if pzErr != 0 {
 25880  				*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp, sqlite3.Xsqlite3_errmsg(tls, (*UnionTab)(unsafe.Pointer(pTab)).Fdb)))
 25881  			}
 25882  		}
 25883  	}
 25884  	return rc
 25885  }
 25886  
 25887  func unionCloseSources(tls *libc.TLS, pTab uintptr, nMax int32) {
 25888  	for (*UnionTab)(unsafe.Pointer(pTab)).FpClosable != 0 && (*UnionTab)(unsafe.Pointer(pTab)).FnOpen > nMax {
 25889  		var p uintptr
 25890  		var pp uintptr
 25891  		for pp = pTab + 88; (*UnionSrc)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(pp)))).FpNextClosable != 0; pp = *(*uintptr)(unsafe.Pointer(pp)) + 64 {
 25892  		}
 25893  		p = *(*uintptr)(unsafe.Pointer(pp))
 25894  
 25895  		sqlite3.Xsqlite3_close(tls, (*UnionSrc)(unsafe.Pointer(p)).Fdb)
 25896  		(*UnionSrc)(unsafe.Pointer(p)).Fdb = uintptr(0)
 25897  		*(*uintptr)(unsafe.Pointer(pp)) = uintptr(0)
 25898  		(*UnionTab)(unsafe.Pointer(pTab)).FnOpen--
 25899  		unionInvokeOpenClose(tls, pTab, p, 1, uintptr(0))
 25900  	}
 25901  }
 25902  
 25903  func unionDisconnect(tls *libc.TLS, pVtab uintptr) int32 {
 25904  	if pVtab != 0 {
 25905  		var pTab uintptr = pVtab
 25906  		var i int32
 25907  		for i = 0; i < (*UnionTab)(unsafe.Pointer(pTab)).FnSrc; i++ {
 25908  			var pSrc uintptr = (*UnionTab)(unsafe.Pointer(pTab)).FaSrc + uintptr(i)*72
 25909  			var bHaveSrcDb int32 = libc.Bool32((*UnionSrc)(unsafe.Pointer(pSrc)).Fdb != uintptr(0))
 25910  			sqlite3.Xsqlite3_close(tls, (*UnionSrc)(unsafe.Pointer(pSrc)).Fdb)
 25911  			if bHaveSrcDb != 0 {
 25912  				unionInvokeOpenClose(tls, pTab, pSrc, 1, uintptr(0))
 25913  			}
 25914  			sqlite3.Xsqlite3_free(tls, (*UnionSrc)(unsafe.Pointer(pSrc)).FzDb)
 25915  			sqlite3.Xsqlite3_free(tls, (*UnionSrc)(unsafe.Pointer(pSrc)).FzTab)
 25916  			sqlite3.Xsqlite3_free(tls, (*UnionSrc)(unsafe.Pointer(pSrc)).FzFile)
 25917  			sqlite3.Xsqlite3_free(tls, (*UnionSrc)(unsafe.Pointer(pSrc)).FzContext)
 25918  		}
 25919  		sqlite3.Xsqlite3_finalize(tls, (*UnionTab)(unsafe.Pointer(pTab)).FpNotFound)
 25920  		sqlite3.Xsqlite3_finalize(tls, (*UnionTab)(unsafe.Pointer(pTab)).FpOpenClose)
 25921  		sqlite3.Xsqlite3_free(tls, (*UnionTab)(unsafe.Pointer(pTab)).FzSourceStr)
 25922  		sqlite3.Xsqlite3_free(tls, (*UnionTab)(unsafe.Pointer(pTab)).FaSrc)
 25923  		sqlite3.Xsqlite3_free(tls, pTab)
 25924  	}
 25925  	return SQLITE_OK
 25926  }
 25927  
 25928  func unionIsIntkeyTable(tls *libc.TLS, db uintptr, pSrc uintptr, pzErr uintptr) int32 {
 25929  	bp := tls.Alloc(36)
 25930  	defer tls.Free(36)
 25931  
 25932  	*(*int32)(unsafe.Pointer(bp + 32)) = 0
 25933  	*(*uintptr)(unsafe.Pointer(bp + 24)) = uintptr(0)
 25934  	var rc int32
 25935  
 25936  	sqlite3.Xsqlite3_table_column_metadata(tls,
 25937  		db, (*UnionSrc)(unsafe.Pointer(pSrc)).FzDb, (*UnionSrc)(unsafe.Pointer(pSrc)).FzTab, ts+8462, bp+24, uintptr(0), uintptr(0), bp+32, uintptr(0))
 25938  	rc = sqlite3.Xsqlite3_errcode(tls, db)
 25939  	if rc == SQLITE_ERROR ||
 25940  		rc == SQLITE_OK && (!(*(*int32)(unsafe.Pointer(bp + 32)) != 0) || sqlite3.Xsqlite3_stricmp(tls, ts+8470, *(*uintptr)(unsafe.Pointer(bp + 24))) != 0) {
 25941  		rc = SQLITE_ERROR
 25942  		*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+8478,
 25943  			libc.VaList(bp, func() uintptr {
 25944  				if (*UnionSrc)(unsafe.Pointer(pSrc)).FzDb != 0 {
 25945  					return (*UnionSrc)(unsafe.Pointer(pSrc)).FzDb
 25946  				}
 25947  				return ts + 584
 25948  			}(),
 25949  				func() uintptr {
 25950  					if (*UnionSrc)(unsafe.Pointer(pSrc)).FzDb != 0 {
 25951  						return ts + 8506
 25952  					}
 25953  					return ts + 584
 25954  				}(),
 25955  				(*UnionSrc)(unsafe.Pointer(pSrc)).FzTab))
 25956  	}
 25957  	return rc
 25958  }
 25959  
 25960  func unionSourceToStr(tls *libc.TLS, pRc uintptr, pTab uintptr, pSrc uintptr, pzErr uintptr) uintptr {
 25961  	bp := tls.Alloc(4)
 25962  	defer tls.Free(4)
 25963  
 25964  	var zRet uintptr = uintptr(0)
 25965  	if *(*int32)(unsafe.Pointer(pRc)) == SQLITE_OK {
 25966  		var db uintptr = func() uintptr {
 25967  			if (*UnionTab)(unsafe.Pointer(pTab)).FbSwarm != 0 {
 25968  				return (*UnionSrc)(unsafe.Pointer(pSrc)).Fdb
 25969  			}
 25970  			return (*UnionTab)(unsafe.Pointer(pTab)).Fdb
 25971  		}()
 25972  		*(*int32)(unsafe.Pointer(bp)) = unionIsIntkeyTable(tls, db, pSrc, pzErr)
 25973  		var pStmt uintptr = unionPrepare(tls, bp, db,
 25974  			ts+8508, pzErr)
 25975  		if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK {
 25976  			sqlite3.Xsqlite3_bind_text(tls, pStmt, 1, (*UnionSrc)(unsafe.Pointer(pSrc)).FzTab, -1, uintptr(0))
 25977  			sqlite3.Xsqlite3_bind_text(tls, pStmt, 2, (*UnionSrc)(unsafe.Pointer(pSrc)).FzDb, -1, uintptr(0))
 25978  			if SQLITE_ROW == sqlite3.Xsqlite3_step(tls, pStmt) {
 25979  				var z uintptr = sqlite3.Xsqlite3_column_text(tls, pStmt, 0)
 25980  				zRet = unionStrdup(tls, bp, z)
 25981  			}
 25982  			unionFinalize(tls, bp, pStmt, pzErr)
 25983  		}
 25984  		*(*int32)(unsafe.Pointer(pRc)) = *(*int32)(unsafe.Pointer(bp))
 25985  	}
 25986  
 25987  	return zRet
 25988  }
 25989  
 25990  func unionSourceCheck(tls *libc.TLS, pTab uintptr, pzErr uintptr) int32 {
 25991  	bp := tls.Alloc(4)
 25992  	defer tls.Free(4)
 25993  
 25994  	*(*int32)(unsafe.Pointer(bp)) = SQLITE_OK
 25995  	var z0 uintptr = uintptr(0)
 25996  	var i int32
 25997  
 25998  	z0 = unionSourceToStr(tls, bp, pTab, (*UnionTab)(unsafe.Pointer(pTab)).FaSrc, pzErr)
 25999  	for i = 1; i < (*UnionTab)(unsafe.Pointer(pTab)).FnSrc; i++ {
 26000  		var z uintptr = unionSourceToStr(tls, bp, pTab, (*UnionTab)(unsafe.Pointer(pTab)).FaSrc+uintptr(i)*72, pzErr)
 26001  		if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK && sqlite3.Xsqlite3_stricmp(tls, z, z0) != 0 {
 26002  			*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+8592, 0)
 26003  			*(*int32)(unsafe.Pointer(bp)) = SQLITE_ERROR
 26004  		}
 26005  		sqlite3.Xsqlite3_free(tls, z)
 26006  	}
 26007  	sqlite3.Xsqlite3_free(tls, z0)
 26008  
 26009  	return *(*int32)(unsafe.Pointer(bp))
 26010  }
 26011  
 26012  func unionOpenDatabaseInner(tls *libc.TLS, pTab uintptr, pSrc uintptr, pzErr uintptr) int32 {
 26013  	bp := tls.Alloc(16)
 26014  	defer tls.Free(16)
 26015  
 26016  	var rc int32
 26017  
 26018  	rc = unionInvokeOpenClose(tls, pTab, pSrc, 0, pzErr)
 26019  	if rc != SQLITE_OK {
 26020  		return rc
 26021  	}
 26022  
 26023  	rc = sqlite3.Xsqlite3_open_v2(tls, (*UnionSrc)(unsafe.Pointer(pSrc)).FzFile, pSrc+56, openFlags, uintptr(0))
 26024  	if rc == SQLITE_OK {
 26025  		return rc
 26026  	}
 26027  	if (*UnionTab)(unsafe.Pointer(pTab)).FpNotFound != 0 {
 26028  		sqlite3.Xsqlite3_close(tls, (*UnionSrc)(unsafe.Pointer(pSrc)).Fdb)
 26029  		(*UnionSrc)(unsafe.Pointer(pSrc)).Fdb = uintptr(0)
 26030  		sqlite3.Xsqlite3_bind_text(tls, (*UnionTab)(unsafe.Pointer(pTab)).FpNotFound, 1, (*UnionSrc)(unsafe.Pointer(pSrc)).FzFile, -1, uintptr(0))
 26031  		if (*UnionTab)(unsafe.Pointer(pTab)).FbHasContext != 0 {
 26032  			sqlite3.Xsqlite3_bind_text(tls, (*UnionTab)(unsafe.Pointer(pTab)).FpNotFound, 2, (*UnionSrc)(unsafe.Pointer(pSrc)).FzContext, -1, uintptr(0))
 26033  		}
 26034  		sqlite3.Xsqlite3_step(tls, (*UnionTab)(unsafe.Pointer(pTab)).FpNotFound)
 26035  		if SQLITE_OK != libc.AssignInt32(&rc, sqlite3.Xsqlite3_reset(tls, (*UnionTab)(unsafe.Pointer(pTab)).FpNotFound)) {
 26036  			*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp, sqlite3.Xsqlite3_errmsg(tls, (*UnionTab)(unsafe.Pointer(pTab)).Fdb)))
 26037  			return rc
 26038  		}
 26039  		rc = sqlite3.Xsqlite3_open_v2(tls, (*UnionSrc)(unsafe.Pointer(pSrc)).FzFile, pSrc+56, openFlags, uintptr(0))
 26040  	}
 26041  	if rc != SQLITE_OK {
 26042  		*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp+8, sqlite3.Xsqlite3_errmsg(tls, (*UnionSrc)(unsafe.Pointer(pSrc)).Fdb)))
 26043  	}
 26044  	return rc
 26045  }
 26046  
 26047  var openFlags int32 = SQLITE_OPEN_READONLY | SQLITE_OPEN_URI
 26048  
 26049  func unionOpenDatabase(tls *libc.TLS, pTab uintptr, iSrc int32, pzErr uintptr) int32 {
 26050  	bp := tls.Alloc(4)
 26051  	defer tls.Free(4)
 26052  
 26053  	*(*int32)(unsafe.Pointer(bp)) = SQLITE_OK
 26054  	var pSrc uintptr = (*UnionTab)(unsafe.Pointer(pTab)).FaSrc + uintptr(iSrc)*72
 26055  
 26056  	if (*UnionSrc)(unsafe.Pointer(pSrc)).Fdb == uintptr(0) {
 26057  		unionCloseSources(tls, pTab, (*UnionTab)(unsafe.Pointer(pTab)).FnMaxOpen-1)
 26058  		*(*int32)(unsafe.Pointer(bp)) = unionOpenDatabaseInner(tls, pTab, pSrc, pzErr)
 26059  		if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK {
 26060  			var z uintptr = unionSourceToStr(tls, bp, pTab, pSrc, pzErr)
 26061  			if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK {
 26062  				if (*UnionTab)(unsafe.Pointer(pTab)).FzSourceStr == uintptr(0) {
 26063  					(*UnionTab)(unsafe.Pointer(pTab)).FzSourceStr = z
 26064  				} else {
 26065  					if sqlite3.Xsqlite3_stricmp(tls, z, (*UnionTab)(unsafe.Pointer(pTab)).FzSourceStr) != 0 {
 26066  						*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+8592, 0)
 26067  						*(*int32)(unsafe.Pointer(bp)) = SQLITE_ERROR
 26068  					}
 26069  					sqlite3.Xsqlite3_free(tls, z)
 26070  				}
 26071  			}
 26072  		}
 26073  
 26074  		if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK {
 26075  			(*UnionSrc)(unsafe.Pointer(pSrc)).FpNextClosable = (*UnionTab)(unsafe.Pointer(pTab)).FpClosable
 26076  			(*UnionTab)(unsafe.Pointer(pTab)).FpClosable = pSrc
 26077  			(*UnionTab)(unsafe.Pointer(pTab)).FnOpen++
 26078  		} else {
 26079  			sqlite3.Xsqlite3_close(tls, (*UnionSrc)(unsafe.Pointer(pSrc)).Fdb)
 26080  			(*UnionSrc)(unsafe.Pointer(pSrc)).Fdb = uintptr(0)
 26081  			unionInvokeOpenClose(tls, pTab, pSrc, 1, uintptr(0))
 26082  		}
 26083  	}
 26084  
 26085  	return *(*int32)(unsafe.Pointer(bp))
 26086  }
 26087  
 26088  func unionIncrRefcount(tls *libc.TLS, pTab uintptr, iTab int32) {
 26089  	if (*UnionTab)(unsafe.Pointer(pTab)).FbSwarm != 0 {
 26090  		var pSrc uintptr = (*UnionTab)(unsafe.Pointer(pTab)).FaSrc + uintptr(iTab)*72
 26091  
 26092  		if (*UnionSrc)(unsafe.Pointer(pSrc)).FnUser == 0 {
 26093  			var pp uintptr
 26094  			for pp = pTab + 88; *(*uintptr)(unsafe.Pointer(pp)) != pSrc; pp = *(*uintptr)(unsafe.Pointer(pp)) + 64 {
 26095  			}
 26096  			*(*uintptr)(unsafe.Pointer(pp)) = (*UnionSrc)(unsafe.Pointer(pSrc)).FpNextClosable
 26097  			(*UnionSrc)(unsafe.Pointer(pSrc)).FpNextClosable = uintptr(0)
 26098  		}
 26099  		(*UnionSrc)(unsafe.Pointer(pSrc)).FnUser++
 26100  	}
 26101  }
 26102  
 26103  func unionFinalizeCsrStmt(tls *libc.TLS, pCsr uintptr) int32 {
 26104  	var rc int32 = SQLITE_OK
 26105  	if (*UnionCsr)(unsafe.Pointer(pCsr)).FpStmt != 0 {
 26106  		var pTab uintptr = (*UnionCsr)(unsafe.Pointer(pCsr)).Fbase.FpVtab
 26107  		var pSrc uintptr = (*UnionTab)(unsafe.Pointer(pTab)).FaSrc + uintptr((*UnionCsr)(unsafe.Pointer(pCsr)).FiTab)*72
 26108  		rc = sqlite3.Xsqlite3_finalize(tls, (*UnionCsr)(unsafe.Pointer(pCsr)).FpStmt)
 26109  		(*UnionCsr)(unsafe.Pointer(pCsr)).FpStmt = uintptr(0)
 26110  		if (*UnionTab)(unsafe.Pointer(pTab)).FbSwarm != 0 {
 26111  			(*UnionSrc)(unsafe.Pointer(pSrc)).FnUser--
 26112  
 26113  			if (*UnionSrc)(unsafe.Pointer(pSrc)).FnUser == 0 {
 26114  				(*UnionSrc)(unsafe.Pointer(pSrc)).FpNextClosable = (*UnionTab)(unsafe.Pointer(pTab)).FpClosable
 26115  				(*UnionTab)(unsafe.Pointer(pTab)).FpClosable = pSrc
 26116  			}
 26117  			unionCloseSources(tls, pTab, (*UnionTab)(unsafe.Pointer(pTab)).FnMaxOpen)
 26118  		}
 26119  	}
 26120  	return rc
 26121  }
 26122  
 26123  func union_isspace(tls *libc.TLS, c int8) int32 {
 26124  	return libc.Bool32(int32(c) == ' ' || int32(c) == '\n' || int32(c) == '\r' || int32(c) == '\t')
 26125  }
 26126  
 26127  func union_isidchar(tls *libc.TLS, c int8) int32 {
 26128  	return libc.Bool32(int32(c) >= 'a' && int32(c) <= 'z' || int32(c) >= 'A' && int32(c) < 'Z' || int32(c) >= '0' && int32(c) <= '9')
 26129  }
 26130  
 26131  func unionConfigureVtab(tls *libc.TLS, pRc uintptr, pTab uintptr, pStmt uintptr, nArg int32, azArg uintptr, pzErr uintptr) {
 26132  	bp := tls.Alloc(68)
 26133  	defer tls.Free(68)
 26134  
 26135  	*(*int32)(unsafe.Pointer(bp + 64)) = *(*int32)(unsafe.Pointer(pRc))
 26136  	var i int32
 26137  	if *(*int32)(unsafe.Pointer(bp + 64)) == SQLITE_OK {
 26138  		(*UnionTab)(unsafe.Pointer(pTab)).FbHasContext = libc.Bool32(sqlite3.Xsqlite3_column_count(tls, pStmt) > 4)
 26139  	}
 26140  	for i = 0; *(*int32)(unsafe.Pointer(bp + 64)) == SQLITE_OK && i < nArg; i++ {
 26141  		var zArg uintptr = unionStrdup(tls, bp+64, *(*uintptr)(unsafe.Pointer(azArg + uintptr(i)*8)))
 26142  		if zArg != 0 {
 26143  			var nOpt int32 = 0
 26144  			var zOpt uintptr
 26145  			var zVal uintptr
 26146  
 26147  			unionDequote(tls, zArg)
 26148  			zOpt = zArg
 26149  			for union_isspace(tls, *(*int8)(unsafe.Pointer(zOpt))) != 0 {
 26150  				zOpt++
 26151  			}
 26152  			zVal = zOpt
 26153  			if int32(*(*int8)(unsafe.Pointer(zVal))) == ':' {
 26154  				zVal++
 26155  			}
 26156  			for union_isidchar(tls, *(*int8)(unsafe.Pointer(zVal))) != 0 {
 26157  				zVal++
 26158  			}
 26159  			nOpt = int32((int64(zVal) - int64(zOpt)) / 1)
 26160  
 26161  			for union_isspace(tls, *(*int8)(unsafe.Pointer(zVal))) != 0 {
 26162  				zVal++
 26163  			}
 26164  			if int32(*(*int8)(unsafe.Pointer(zVal))) == '=' {
 26165  				*(*int8)(unsafe.Pointer(zOpt + uintptr(nOpt))) = int8(0)
 26166  				zVal++
 26167  				for union_isspace(tls, *(*int8)(unsafe.Pointer(zVal))) != 0 {
 26168  					zVal++
 26169  				}
 26170  				zVal = unionStrdup(tls, bp+64, zVal)
 26171  				if zVal != 0 {
 26172  					unionDequote(tls, zVal)
 26173  					if int32(*(*int8)(unsafe.Pointer(zOpt))) == ':' {
 26174  						var iParam int32 = sqlite3.Xsqlite3_bind_parameter_index(tls, pStmt, zOpt)
 26175  						if iParam == 0 {
 26176  							*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls,
 26177  								ts+8621, libc.VaList(bp, zOpt))
 26178  							*(*int32)(unsafe.Pointer(bp + 64)) = SQLITE_ERROR
 26179  						} else {
 26180  							*(*int32)(unsafe.Pointer(bp + 64)) = sqlite3.Xsqlite3_bind_text(tls, pStmt, iParam, zVal, -1, libc.UintptrFromInt32(-1))
 26181  						}
 26182  					} else if nOpt == 7 && 0 == sqlite3.Xsqlite3_strnicmp(tls, zOpt, ts+8658, 7) {
 26183  						(*UnionTab)(unsafe.Pointer(pTab)).FnMaxOpen = libc.Xatoi(tls, zVal)
 26184  						if (*UnionTab)(unsafe.Pointer(pTab)).FnMaxOpen <= 0 {
 26185  							*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+8666, 0)
 26186  							*(*int32)(unsafe.Pointer(bp + 64)) = SQLITE_ERROR
 26187  						}
 26188  					} else if nOpt == 7 && 0 == sqlite3.Xsqlite3_strnicmp(tls, zOpt, ts+8699, 7) {
 26189  						if (*UnionTab)(unsafe.Pointer(pTab)).FpNotFound != 0 {
 26190  							*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls,
 26191  								ts+8707, 0)
 26192  							*(*int32)(unsafe.Pointer(bp + 64)) = SQLITE_ERROR
 26193  						} else {
 26194  							(*UnionTab)(unsafe.Pointer(pTab)).FpNotFound = unionPreparePrintf(tls, bp+64, pzErr, (*UnionTab)(unsafe.Pointer(pTab)).Fdb,
 26195  								ts+8745, libc.VaList(bp+8, zVal, func() uintptr {
 26196  									if (*UnionTab)(unsafe.Pointer(pTab)).FbHasContext != 0 {
 26197  										return ts + 8762
 26198  									}
 26199  									return ts + 584
 26200  								}()))
 26201  						}
 26202  					} else if nOpt == 9 && 0 == sqlite3.Xsqlite3_strnicmp(tls, zOpt, ts+8765, 9) {
 26203  						if (*UnionTab)(unsafe.Pointer(pTab)).FpOpenClose != 0 {
 26204  							*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls,
 26205  								ts+8775, 0)
 26206  							*(*int32)(unsafe.Pointer(bp + 64)) = SQLITE_ERROR
 26207  						} else {
 26208  							(*UnionTab)(unsafe.Pointer(pTab)).FpOpenClose = unionPreparePrintf(tls, bp+64, pzErr, (*UnionTab)(unsafe.Pointer(pTab)).Fdb,
 26209  								ts+8815, libc.VaList(bp+24, zVal, func() uintptr {
 26210  									if (*UnionTab)(unsafe.Pointer(pTab)).FbHasContext != 0 {
 26211  										return ts + 8762
 26212  									}
 26213  									return ts + 584
 26214  								}()))
 26215  						}
 26216  					} else {
 26217  						*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+8834, libc.VaList(bp+40, zOpt))
 26218  						*(*int32)(unsafe.Pointer(bp + 64)) = SQLITE_ERROR
 26219  					}
 26220  					sqlite3.Xsqlite3_free(tls, zVal)
 26221  				}
 26222  			} else {
 26223  				if i == 0 && nArg == 1 {
 26224  					(*UnionTab)(unsafe.Pointer(pTab)).FpNotFound = unionPreparePrintf(tls, bp+64, pzErr, (*UnionTab)(unsafe.Pointer(pTab)).Fdb,
 26225  						ts+8869, libc.VaList(bp+48, zArg))
 26226  				} else {
 26227  					*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+8884, libc.VaList(bp+56, *(*uintptr)(unsafe.Pointer(azArg + uintptr(i)*8))))
 26228  					*(*int32)(unsafe.Pointer(bp + 64)) = SQLITE_ERROR
 26229  				}
 26230  			}
 26231  			sqlite3.Xsqlite3_free(tls, zArg)
 26232  		}
 26233  	}
 26234  	*(*int32)(unsafe.Pointer(pRc)) = *(*int32)(unsafe.Pointer(bp + 64))
 26235  }
 26236  
 26237  func unionConnect(tls *libc.TLS, db uintptr, pAux uintptr, argc int32, argv uintptr, ppVtab uintptr, pzErr uintptr) int32 {
 26238  	bp := tls.Alloc(44)
 26239  	defer tls.Free(44)
 26240  
 26241  	var pTab uintptr = uintptr(0)
 26242  	*(*int32)(unsafe.Pointer(bp + 40)) = SQLITE_OK
 26243  	var bSwarm int32 = func() int32 {
 26244  		if pAux == uintptr(0) {
 26245  			return 0
 26246  		}
 26247  		return 1
 26248  	}()
 26249  	var zVtab uintptr = func() uintptr {
 26250  		if bSwarm != 0 {
 26251  			return ts + 8911
 26252  		}
 26253  		return ts + 8921
 26254  	}()
 26255  
 26256  	if sqlite3.Xsqlite3_stricmp(tls, ts+8931, *(*uintptr)(unsafe.Pointer(argv + 1*8))) != 0 {
 26257  		*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+8936, libc.VaList(bp, zVtab))
 26258  		*(*int32)(unsafe.Pointer(bp + 40)) = SQLITE_ERROR
 26259  	} else if argc < 4 || argc > 4 && bSwarm == 0 {
 26260  		*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+8977, libc.VaList(bp+8, zVtab))
 26261  		*(*int32)(unsafe.Pointer(bp + 40)) = SQLITE_ERROR
 26262  	} else {
 26263  		var nAlloc int32 = 0
 26264  		var pStmt uintptr = uintptr(0)
 26265  		var zArg uintptr = unionStrdup(tls, bp+40, *(*uintptr)(unsafe.Pointer(argv + 3*8)))
 26266  
 26267  		unionDequote(tls, zArg)
 26268  		pStmt = unionPreparePrintf(tls, bp+40, pzErr, db,
 26269  			ts+9010, libc.VaList(bp+16, zArg))
 26270  
 26271  		pTab = unionMalloc(tls, bp+40, int64(unsafe.Sizeof(UnionTab{})))
 26272  		if pTab != 0 {
 26273  			(*UnionTab)(unsafe.Pointer(pTab)).Fdb = db
 26274  			(*UnionTab)(unsafe.Pointer(pTab)).FbSwarm = bSwarm
 26275  			(*UnionTab)(unsafe.Pointer(pTab)).FnMaxOpen = SWARMVTAB_MAX_OPEN
 26276  		}
 26277  
 26278  		if bSwarm != 0 {
 26279  			unionConfigureVtab(tls, bp+40, pTab, pStmt, argc-4, argv+4*8, pzErr)
 26280  		}
 26281  
 26282  		for *(*int32)(unsafe.Pointer(bp + 40)) == SQLITE_OK && SQLITE_ROW == sqlite3.Xsqlite3_step(tls, pStmt) {
 26283  			var zDb uintptr = sqlite3.Xsqlite3_column_text(tls, pStmt, 0)
 26284  			var zTab uintptr = sqlite3.Xsqlite3_column_text(tls, pStmt, 1)
 26285  			var iMin sqlite3_int64 = sqlite3.Xsqlite3_column_int64(tls, pStmt, 2)
 26286  			var iMax sqlite3_int64 = sqlite3.Xsqlite3_column_int64(tls, pStmt, 3)
 26287  			var pSrc uintptr
 26288  
 26289  			if nAlloc <= (*UnionTab)(unsafe.Pointer(pTab)).FnSrc {
 26290  				var nNew int32
 26291  				if nAlloc != 0 {
 26292  					nNew = nAlloc * 2
 26293  				} else {
 26294  					nNew = 8
 26295  				}
 26296  				var aNew uintptr = sqlite3.Xsqlite3_realloc64(tls,
 26297  					(*UnionTab)(unsafe.Pointer(pTab)).FaSrc, uint64(nNew)*uint64(unsafe.Sizeof(UnionSrc{})))
 26298  				if aNew == uintptr(0) {
 26299  					*(*int32)(unsafe.Pointer(bp + 40)) = SQLITE_NOMEM
 26300  					break
 26301  				} else {
 26302  					libc.X__builtin___memset_chk(tls, aNew+uintptr((*UnionTab)(unsafe.Pointer(pTab)).FnSrc)*72, 0, uint64(nNew-(*UnionTab)(unsafe.Pointer(pTab)).FnSrc)*uint64(unsafe.Sizeof(UnionSrc{})), libc.X__builtin_object_size(tls, aNew+uintptr((*UnionTab)(unsafe.Pointer(pTab)).FnSrc)*72, 0))
 26303  					(*UnionTab)(unsafe.Pointer(pTab)).FaSrc = aNew
 26304  					nAlloc = nNew
 26305  				}
 26306  			}
 26307  
 26308  			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 {
 26309  				*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+9040, 0)
 26310  				*(*int32)(unsafe.Pointer(bp + 40)) = SQLITE_ERROR
 26311  			}
 26312  
 26313  			if *(*int32)(unsafe.Pointer(bp + 40)) == SQLITE_OK {
 26314  				pSrc = (*UnionTab)(unsafe.Pointer(pTab)).FaSrc + uintptr(libc.PostIncInt32(&(*UnionTab)(unsafe.Pointer(pTab)).FnSrc, 1))*72
 26315  				(*UnionSrc)(unsafe.Pointer(pSrc)).FzTab = unionStrdup(tls, bp+40, zTab)
 26316  				(*UnionSrc)(unsafe.Pointer(pSrc)).FiMin = iMin
 26317  				(*UnionSrc)(unsafe.Pointer(pSrc)).FiMax = iMax
 26318  				if bSwarm != 0 {
 26319  					(*UnionSrc)(unsafe.Pointer(pSrc)).FzFile = unionStrdup(tls, bp+40, zDb)
 26320  				} else {
 26321  					(*UnionSrc)(unsafe.Pointer(pSrc)).FzDb = unionStrdup(tls, bp+40, zDb)
 26322  				}
 26323  				if (*UnionTab)(unsafe.Pointer(pTab)).FbHasContext != 0 {
 26324  					var zContext uintptr = sqlite3.Xsqlite3_column_text(tls, pStmt, 4)
 26325  					(*UnionSrc)(unsafe.Pointer(pSrc)).FzContext = unionStrdup(tls, bp+40, zContext)
 26326  				}
 26327  			}
 26328  		}
 26329  		unionFinalize(tls, bp+40, pStmt, pzErr)
 26330  		pStmt = uintptr(0)
 26331  
 26332  		if *(*int32)(unsafe.Pointer(bp + 40)) == SQLITE_OK && (*UnionTab)(unsafe.Pointer(pTab)).FnSrc == 0 {
 26333  			*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+9067, 0)
 26334  			*(*int32)(unsafe.Pointer(bp + 40)) = SQLITE_ERROR
 26335  		}
 26336  
 26337  		if *(*int32)(unsafe.Pointer(bp + 40)) == SQLITE_OK {
 26338  			if bSwarm != 0 {
 26339  				*(*int32)(unsafe.Pointer(bp + 40)) = unionOpenDatabase(tls, pTab, 0, pzErr)
 26340  			} else {
 26341  				*(*int32)(unsafe.Pointer(bp + 40)) = unionSourceCheck(tls, pTab, pzErr)
 26342  			}
 26343  		}
 26344  
 26345  		if *(*int32)(unsafe.Pointer(bp + 40)) == SQLITE_OK {
 26346  			var pSrc uintptr = (*UnionTab)(unsafe.Pointer(pTab)).FaSrc
 26347  			var tdb uintptr = func() uintptr {
 26348  				if (*UnionTab)(unsafe.Pointer(pTab)).FbSwarm != 0 {
 26349  					return (*UnionSrc)(unsafe.Pointer(pSrc)).Fdb
 26350  				}
 26351  				return (*UnionTab)(unsafe.Pointer(pTab)).Fdb
 26352  			}()
 26353  			pStmt = unionPreparePrintf(tls, bp+40, pzErr, tdb,
 26354  				ts+9095,
 26355  				libc.VaList(bp+24, (*UnionSrc)(unsafe.Pointer(pSrc)).FzTab, (*UnionSrc)(unsafe.Pointer(pSrc)).FzDb))
 26356  		}
 26357  		if *(*int32)(unsafe.Pointer(bp + 40)) == SQLITE_OK && SQLITE_ROW == sqlite3.Xsqlite3_step(tls, pStmt) {
 26358  			var zDecl uintptr = sqlite3.Xsqlite3_column_text(tls, pStmt, 0)
 26359  			*(*int32)(unsafe.Pointer(bp + 40)) = sqlite3.Xsqlite3_declare_vtab(tls, db, zDecl)
 26360  			(*UnionTab)(unsafe.Pointer(pTab)).FiPK = sqlite3.Xsqlite3_column_int(tls, pStmt, 1)
 26361  		}
 26362  
 26363  		unionFinalize(tls, bp+40, pStmt, pzErr)
 26364  	}
 26365  
 26366  	if *(*int32)(unsafe.Pointer(bp + 40)) != SQLITE_OK {
 26367  		unionDisconnect(tls, pTab)
 26368  		pTab = uintptr(0)
 26369  	}
 26370  
 26371  	*(*uintptr)(unsafe.Pointer(ppVtab)) = pTab
 26372  	return *(*int32)(unsafe.Pointer(bp + 40))
 26373  }
 26374  
 26375  func unionOpen(tls *libc.TLS, p uintptr, ppCursor uintptr) int32 {
 26376  	bp := tls.Alloc(4)
 26377  	defer tls.Free(4)
 26378  
 26379  	var pCsr uintptr
 26380  	*(*int32)(unsafe.Pointer(bp)) = SQLITE_OK
 26381  	_ = p
 26382  	pCsr = unionMalloc(tls, bp, int64(unsafe.Sizeof(UnionCsr{})))
 26383  	*(*uintptr)(unsafe.Pointer(ppCursor)) = pCsr
 26384  	return *(*int32)(unsafe.Pointer(bp))
 26385  }
 26386  
 26387  func unionClose(tls *libc.TLS, cur uintptr) int32 {
 26388  	var pCsr uintptr = cur
 26389  	unionFinalizeCsrStmt(tls, pCsr)
 26390  	sqlite3.Xsqlite3_free(tls, pCsr)
 26391  	return SQLITE_OK
 26392  }
 26393  
 26394  func doUnionNext(tls *libc.TLS, pCsr uintptr) int32 {
 26395  	bp := tls.Alloc(28)
 26396  	defer tls.Free(28)
 26397  
 26398  	*(*int32)(unsafe.Pointer(bp + 24)) = SQLITE_OK
 26399  
 26400  	if sqlite3.Xsqlite3_step(tls, (*UnionCsr)(unsafe.Pointer(pCsr)).FpStmt) != SQLITE_ROW {
 26401  		var pTab uintptr = (*UnionCsr)(unsafe.Pointer(pCsr)).Fbase.FpVtab
 26402  		*(*int32)(unsafe.Pointer(bp + 24)) = unionFinalizeCsrStmt(tls, pCsr)
 26403  		if *(*int32)(unsafe.Pointer(bp + 24)) == SQLITE_OK && (*UnionTab)(unsafe.Pointer(pTab)).FbSwarm != 0 {
 26404  			(*UnionCsr)(unsafe.Pointer(pCsr)).FiTab++
 26405  			if (*UnionCsr)(unsafe.Pointer(pCsr)).FiTab < (*UnionTab)(unsafe.Pointer(pTab)).FnSrc {
 26406  				var pSrc uintptr = (*UnionTab)(unsafe.Pointer(pTab)).FaSrc + uintptr((*UnionCsr)(unsafe.Pointer(pCsr)).FiTab)*72
 26407  				if (*UnionCsr)(unsafe.Pointer(pCsr)).FiMaxRowid >= (*UnionSrc)(unsafe.Pointer(pSrc)).FiMin {
 26408  					*(*int32)(unsafe.Pointer(bp + 24)) = unionOpenDatabase(tls, pTab, (*UnionCsr)(unsafe.Pointer(pCsr)).FiTab, pTab+16)
 26409  					(*UnionCsr)(unsafe.Pointer(pCsr)).FpStmt = unionPreparePrintf(tls, bp+24, pTab+16, (*UnionSrc)(unsafe.Pointer(pSrc)).Fdb,
 26410  						ts+9273,
 26411  						libc.VaList(bp, (*UnionSrc)(unsafe.Pointer(pSrc)).FzTab,
 26412  							func() uintptr {
 26413  								if (*UnionSrc)(unsafe.Pointer(pSrc)).FiMax > (*UnionCsr)(unsafe.Pointer(pCsr)).FiMaxRowid {
 26414  									return ts + 9305
 26415  								}
 26416  								return ts + 9322
 26417  							}(),
 26418  							(*UnionCsr)(unsafe.Pointer(pCsr)).FiMaxRowid))
 26419  					if *(*int32)(unsafe.Pointer(bp + 24)) == SQLITE_OK {
 26420  						unionIncrRefcount(tls, pTab, (*UnionCsr)(unsafe.Pointer(pCsr)).FiTab)
 26421  						*(*int32)(unsafe.Pointer(bp + 24)) = SQLITE_ROW
 26422  					}
 26423  				}
 26424  			}
 26425  		}
 26426  	}
 26427  
 26428  	return *(*int32)(unsafe.Pointer(bp + 24))
 26429  }
 26430  
 26431  func unionNext(tls *libc.TLS, cur uintptr) int32 {
 26432  	var rc int32
 26433  	for __ccgo := true; __ccgo; __ccgo = rc == SQLITE_ROW {
 26434  		rc = doUnionNext(tls, cur)
 26435  	}
 26436  	return rc
 26437  }
 26438  
 26439  func unionColumn(tls *libc.TLS, cur uintptr, ctx uintptr, i int32) int32 {
 26440  	var pCsr uintptr = cur
 26441  	sqlite3.Xsqlite3_result_value(tls, ctx, sqlite3.Xsqlite3_column_value(tls, (*UnionCsr)(unsafe.Pointer(pCsr)).FpStmt, i+1))
 26442  	return SQLITE_OK
 26443  }
 26444  
 26445  func unionRowid(tls *libc.TLS, cur uintptr, pRowid uintptr) int32 {
 26446  	var pCsr uintptr = cur
 26447  	*(*sqlite_int64)(unsafe.Pointer(pRowid)) = sqlite3.Xsqlite3_column_int64(tls, (*UnionCsr)(unsafe.Pointer(pCsr)).FpStmt, 0)
 26448  	return SQLITE_OK
 26449  }
 26450  
 26451  func unionEof(tls *libc.TLS, cur uintptr) int32 {
 26452  	var pCsr uintptr = cur
 26453  	return libc.Bool32((*UnionCsr)(unsafe.Pointer(pCsr)).FpStmt == uintptr(0))
 26454  }
 26455  
 26456  func unionFilter(tls *libc.TLS, pVtabCursor uintptr, idxNum int32, idxStr uintptr, argc int32, argv uintptr) int32 {
 26457  	bp := tls.Alloc(108)
 26458  	defer tls.Free(108)
 26459  
 26460  	var pTab uintptr = (*sqlite3_vtab_cursor)(unsafe.Pointer(pVtabCursor)).FpVtab
 26461  	var pCsr uintptr = pVtabCursor
 26462  	*(*int32)(unsafe.Pointer(bp + 104)) = SQLITE_OK
 26463  	var i int32
 26464  	var zSql uintptr = uintptr(0)
 26465  	var bZero int32 = 0
 26466  
 26467  	var iMin sqlite3_int64 = int64(-1) - (int64(0xffffffff) | int64(0x7fffffff)<<32)
 26468  	var iMax sqlite3_int64 = int64(0xffffffff) | int64(0x7fffffff)<<32
 26469  
 26470  	_ = idxStr
 26471  
 26472  	if idxNum == SQLITE_INDEX_CONSTRAINT_EQ {
 26473  		iMin = libc.AssignInt64(&iMax, sqlite3.Xsqlite3_value_int64(tls, *(*uintptr)(unsafe.Pointer(argv))))
 26474  	} else {
 26475  		if idxNum&(SQLITE_INDEX_CONSTRAINT_LE|SQLITE_INDEX_CONSTRAINT_LT) != 0 {
 26476  			iMax = sqlite3.Xsqlite3_value_int64(tls, *(*uintptr)(unsafe.Pointer(argv)))
 26477  			if idxNum&SQLITE_INDEX_CONSTRAINT_LT != 0 {
 26478  				if iMax == int64(-1)-(int64(0xffffffff)|int64(0x7fffffff)<<32) {
 26479  					bZero = 1
 26480  				} else {
 26481  					iMax--
 26482  				}
 26483  			}
 26484  		}
 26485  
 26486  		if idxNum&(SQLITE_INDEX_CONSTRAINT_GE|SQLITE_INDEX_CONSTRAINT_GT) != 0 {
 26487  			iMin = sqlite3.Xsqlite3_value_int64(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(argc-1)*8)))
 26488  			if idxNum&SQLITE_INDEX_CONSTRAINT_GT != 0 {
 26489  				if iMin == int64(0xffffffff)|int64(0x7fffffff)<<32 {
 26490  					bZero = 1
 26491  				} else {
 26492  					iMin++
 26493  				}
 26494  			}
 26495  		}
 26496  	}
 26497  
 26498  	unionFinalizeCsrStmt(tls, pCsr)
 26499  	if bZero != 0 {
 26500  		return SQLITE_OK
 26501  	}
 26502  
 26503  	for i = 0; i < (*UnionTab)(unsafe.Pointer(pTab)).FnSrc; i++ {
 26504  		var pSrc uintptr = (*UnionTab)(unsafe.Pointer(pTab)).FaSrc + uintptr(i)*72
 26505  		if iMin > (*UnionSrc)(unsafe.Pointer(pSrc)).FiMax || iMax < (*UnionSrc)(unsafe.Pointer(pSrc)).FiMin {
 26506  			continue
 26507  		}
 26508  
 26509  		zSql = sqlite3.Xsqlite3_mprintf(tls, ts+9326, libc.VaList(bp, zSql, func() uintptr {
 26510  			if zSql != 0 {
 26511  				return ts + 9360
 26512  			}
 26513  			return ts + 584
 26514  		}(), func() uintptr {
 26515  			if (*UnionSrc)(unsafe.Pointer(pSrc)).FzDb != 0 {
 26516  				return ts + 5624
 26517  			}
 26518  			return ts + 584
 26519  		}(), func() uintptr {
 26520  			if (*UnionSrc)(unsafe.Pointer(pSrc)).FzDb != 0 {
 26521  				return (*UnionSrc)(unsafe.Pointer(pSrc)).FzDb
 26522  			}
 26523  			return ts + 584
 26524  		}(), func() uintptr {
 26525  			if (*UnionSrc)(unsafe.Pointer(pSrc)).FzDb != 0 {
 26526  				return ts + 5626
 26527  			}
 26528  			return ts + 584
 26529  		}(), (*UnionSrc)(unsafe.Pointer(pSrc)).FzTab))
 26530  		if zSql == uintptr(0) {
 26531  			*(*int32)(unsafe.Pointer(bp + 104)) = SQLITE_NOMEM
 26532  			break
 26533  		}
 26534  
 26535  		if iMin == iMax {
 26536  			zSql = sqlite3.Xsqlite3_mprintf(tls, ts+9372, libc.VaList(bp+48, zSql, iMin))
 26537  		} else {
 26538  			var zWhere uintptr = ts + 9392
 26539  			if iMin != int64(-1)-(int64(0xffffffff)|int64(0x7fffffff)<<32) && iMin > (*UnionSrc)(unsafe.Pointer(pSrc)).FiMin {
 26540  				zSql = sqlite3.Xsqlite3_mprintf(tls, ts+9398, libc.VaList(bp+64, zSql, iMin))
 26541  				zWhere = ts + 9419
 26542  			}
 26543  			if iMax != int64(0xffffffff)|int64(0x7fffffff)<<32 && iMax < (*UnionSrc)(unsafe.Pointer(pSrc)).FiMax {
 26544  				zSql = sqlite3.Xsqlite3_mprintf(tls, ts+9423, libc.VaList(bp+80, zSql, zWhere, iMax))
 26545  			}
 26546  		}
 26547  
 26548  		if (*UnionTab)(unsafe.Pointer(pTab)).FbSwarm != 0 {
 26549  			(*UnionCsr)(unsafe.Pointer(pCsr)).FiTab = i
 26550  			(*UnionCsr)(unsafe.Pointer(pCsr)).FiMaxRowid = iMax
 26551  			*(*int32)(unsafe.Pointer(bp + 104)) = unionOpenDatabase(tls, pTab, i, pTab+16)
 26552  			break
 26553  		}
 26554  	}
 26555  
 26556  	if zSql == uintptr(0) {
 26557  		return *(*int32)(unsafe.Pointer(bp + 104))
 26558  	} else {
 26559  		var db uintptr = func() uintptr {
 26560  			if (*UnionTab)(unsafe.Pointer(pTab)).FbSwarm != 0 {
 26561  				return (*UnionSrc)(unsafe.Pointer((*UnionTab)(unsafe.Pointer(pTab)).FaSrc + uintptr((*UnionCsr)(unsafe.Pointer(pCsr)).FiTab)*72)).Fdb
 26562  			}
 26563  			return (*UnionTab)(unsafe.Pointer(pTab)).Fdb
 26564  		}()
 26565  		(*UnionCsr)(unsafe.Pointer(pCsr)).FpStmt = unionPrepare(tls, bp+104, db, zSql, pTab+16)
 26566  		if (*UnionCsr)(unsafe.Pointer(pCsr)).FpStmt != 0 {
 26567  			unionIncrRefcount(tls, pTab, (*UnionCsr)(unsafe.Pointer(pCsr)).FiTab)
 26568  		}
 26569  		sqlite3.Xsqlite3_free(tls, zSql)
 26570  	}
 26571  	if *(*int32)(unsafe.Pointer(bp + 104)) != SQLITE_OK {
 26572  		return *(*int32)(unsafe.Pointer(bp + 104))
 26573  	}
 26574  	return unionNext(tls, pVtabCursor)
 26575  }
 26576  
 26577  func unionBestIndex(tls *libc.TLS, tab uintptr, pIdxInfo uintptr) int32 {
 26578  	var pTab uintptr = tab
 26579  	var iEq int32 = -1
 26580  	var iLt int32 = -1
 26581  	var iGt int32 = -1
 26582  	var i int32
 26583  
 26584  	for i = 0; i < (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnConstraint; i++ {
 26585  		var p uintptr = (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint + uintptr(i)*12
 26586  		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) {
 26587  			switch int32((*sqlite3_index_constraint)(unsafe.Pointer(p)).Fop) {
 26588  			case SQLITE_INDEX_CONSTRAINT_EQ:
 26589  				iEq = i
 26590  				break
 26591  				fallthrough
 26592  			case SQLITE_INDEX_CONSTRAINT_LE:
 26593  				fallthrough
 26594  			case SQLITE_INDEX_CONSTRAINT_LT:
 26595  				iLt = i
 26596  				break
 26597  				fallthrough
 26598  			case SQLITE_INDEX_CONSTRAINT_GE:
 26599  				fallthrough
 26600  			case SQLITE_INDEX_CONSTRAINT_GT:
 26601  				iGt = i
 26602  				break
 26603  			}
 26604  		}
 26605  	}
 26606  
 26607  	if iEq >= 0 {
 26608  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedRows = int64(1)
 26609  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxFlags = SQLITE_INDEX_SCAN_UNIQUE
 26610  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = 3.0
 26611  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxNum = SQLITE_INDEX_CONSTRAINT_EQ
 26612  		(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(iEq)*8)).FargvIndex = 1
 26613  		(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(iEq)*8)).Fomit = uint8(1)
 26614  	} else {
 26615  		var iCons int32 = 1
 26616  		var idxNum int32 = 0
 26617  		var nRow sqlite3_int64 = int64(1000000)
 26618  		if iLt >= 0 {
 26619  			nRow = nRow / int64(2)
 26620  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(iLt)*8)).FargvIndex = libc.PostIncInt32(&iCons, 1)
 26621  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(iLt)*8)).Fomit = uint8(1)
 26622  			idxNum = idxNum | int32((*sqlite3_index_constraint)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint+uintptr(iLt)*12)).Fop)
 26623  		}
 26624  		if iGt >= 0 {
 26625  			nRow = nRow / int64(2)
 26626  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(iGt)*8)).FargvIndex = libc.PostIncInt32(&iCons, 1)
 26627  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(iGt)*8)).Fomit = uint8(1)
 26628  			idxNum = idxNum | int32((*sqlite3_index_constraint)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint+uintptr(iGt)*12)).Fop)
 26629  		}
 26630  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedRows = nRow
 26631  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = 3.0 * float64(nRow)
 26632  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxNum = idxNum
 26633  	}
 26634  
 26635  	return SQLITE_OK
 26636  }
 26637  
 26638  func createUnionVtab(tls *libc.TLS, db uintptr) int32 {
 26639  	var rc int32
 26640  
 26641  	rc = sqlite3.Xsqlite3_create_module(tls, db, ts+8921, uintptr(unsafe.Pointer(&unionModule)), uintptr(0))
 26642  	if rc == SQLITE_OK {
 26643  		rc = sqlite3.Xsqlite3_create_module(tls, db, ts+8911, uintptr(unsafe.Pointer(&unionModule)), db)
 26644  	}
 26645  	return rc
 26646  }
 26647  
 26648  var unionModule = sqlite3_module{
 26649  	FxCreate:     0,
 26650  	FxConnect:    0,
 26651  	FxBestIndex:  0,
 26652  	FxDisconnect: 0,
 26653  	FxDestroy:    0,
 26654  	FxOpen:       0,
 26655  	FxClose:      0,
 26656  	FxFilter:     0,
 26657  	FxNext:       0,
 26658  	FxEof:        0,
 26659  	FxColumn:     0,
 26660  	FxRowid:      0,
 26661  }
 26662  
 26663  func sqlite3_unionvtab_init(tls *libc.TLS, db uintptr, pzErrMsg uintptr, pApi uintptr) int32 {
 26664  	var rc int32 = SQLITE_OK
 26665  	_ = pApi
 26666  
 26667  	_ = pzErrMsg
 26668  	rc = createUnionVtab(tls, db)
 26669  	return rc
 26670  }
 26671  
 26672  type wholenumber_cursor1 = struct {
 26673  	Fbase    sqlite3_vtab_cursor
 26674  	FiValue  sqlite3_int64
 26675  	FmxValue sqlite3_int64
 26676  }
 26677  
 26678  type wholenumber_cursor = wholenumber_cursor1
 26679  
 26680  func wholenumberConnect(tls *libc.TLS, db uintptr, pAux uintptr, argc int32, argv uintptr, ppVtab uintptr, pzErr uintptr) int32 {
 26681  	var pNew uintptr
 26682  	pNew = libc.AssignPtrUintptr(ppVtab, sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(sqlite3_vtab{}))))
 26683  	if pNew == uintptr(0) {
 26684  		return SQLITE_NOMEM
 26685  	}
 26686  	sqlite3.Xsqlite3_declare_vtab(tls, db, ts+9441)
 26687  	sqlite3.Xsqlite3_vtab_config(tls, db, SQLITE_VTAB_INNOCUOUS, 0)
 26688  	libc.X__builtin___memset_chk(tls, pNew, 0, uint64(unsafe.Sizeof(sqlite3_vtab{})), libc.X__builtin_object_size(tls, pNew, 0))
 26689  	return SQLITE_OK
 26690  }
 26691  
 26692  func wholenumberDisconnect(tls *libc.TLS, pVtab uintptr) int32 {
 26693  	sqlite3.Xsqlite3_free(tls, pVtab)
 26694  	return SQLITE_OK
 26695  }
 26696  
 26697  func wholenumberOpen(tls *libc.TLS, p uintptr, ppCursor uintptr) int32 {
 26698  	var pCur uintptr
 26699  	pCur = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(wholenumber_cursor{})))
 26700  	if pCur == uintptr(0) {
 26701  		return SQLITE_NOMEM
 26702  	}
 26703  	libc.X__builtin___memset_chk(tls, pCur, 0, uint64(unsafe.Sizeof(wholenumber_cursor{})), libc.X__builtin_object_size(tls, pCur, 0))
 26704  	*(*uintptr)(unsafe.Pointer(ppCursor)) = pCur
 26705  	return SQLITE_OK
 26706  }
 26707  
 26708  func wholenumberClose(tls *libc.TLS, cur uintptr) int32 {
 26709  	sqlite3.Xsqlite3_free(tls, cur)
 26710  	return SQLITE_OK
 26711  }
 26712  
 26713  func wholenumberNext(tls *libc.TLS, cur uintptr) int32 {
 26714  	var pCur uintptr = cur
 26715  	(*wholenumber_cursor)(unsafe.Pointer(pCur)).FiValue++
 26716  	return SQLITE_OK
 26717  }
 26718  
 26719  func wholenumberColumn(tls *libc.TLS, cur uintptr, ctx uintptr, i int32) int32 {
 26720  	var pCur uintptr = cur
 26721  	sqlite3.Xsqlite3_result_int64(tls, ctx, (*wholenumber_cursor)(unsafe.Pointer(pCur)).FiValue)
 26722  	return SQLITE_OK
 26723  }
 26724  
 26725  func wholenumberRowid(tls *libc.TLS, cur uintptr, pRowid uintptr) int32 {
 26726  	var pCur uintptr = cur
 26727  	*(*sqlite_int64)(unsafe.Pointer(pRowid)) = (*wholenumber_cursor)(unsafe.Pointer(pCur)).FiValue
 26728  	return SQLITE_OK
 26729  }
 26730  
 26731  func wholenumberEof(tls *libc.TLS, cur uintptr) int32 {
 26732  	var pCur uintptr = cur
 26733  	return libc.Bool32((*wholenumber_cursor)(unsafe.Pointer(pCur)).FiValue > (*wholenumber_cursor)(unsafe.Pointer(pCur)).FmxValue || (*wholenumber_cursor)(unsafe.Pointer(pCur)).FiValue == int64(0))
 26734  }
 26735  
 26736  func wholenumberFilter(tls *libc.TLS, pVtabCursor uintptr, idxNum int32, idxStr uintptr, argc int32, argv uintptr) int32 {
 26737  	var pCur uintptr = pVtabCursor
 26738  	var v sqlite3_int64
 26739  	var i int32 = 0
 26740  	(*wholenumber_cursor)(unsafe.Pointer(pCur)).FiValue = int64(1)
 26741  	(*wholenumber_cursor)(unsafe.Pointer(pCur)).FmxValue = int64(0xffffffff)
 26742  	if idxNum&3 != 0 {
 26743  		v = sqlite3.Xsqlite3_value_int64(tls, *(*uintptr)(unsafe.Pointer(argv))) + sqlite3_int64(idxNum&1)
 26744  		if v > (*wholenumber_cursor)(unsafe.Pointer(pCur)).FiValue && v <= (*wholenumber_cursor)(unsafe.Pointer(pCur)).FmxValue {
 26745  			(*wholenumber_cursor)(unsafe.Pointer(pCur)).FiValue = v
 26746  		}
 26747  		i++
 26748  	}
 26749  	if idxNum&12 != 0 {
 26750  		v = sqlite3.Xsqlite3_value_int64(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8))) - sqlite3_int64(idxNum>>2&1)
 26751  		if v >= (*wholenumber_cursor)(unsafe.Pointer(pCur)).FiValue && v < (*wholenumber_cursor)(unsafe.Pointer(pCur)).FmxValue {
 26752  			(*wholenumber_cursor)(unsafe.Pointer(pCur)).FmxValue = v
 26753  		}
 26754  	}
 26755  	return SQLITE_OK
 26756  }
 26757  
 26758  func wholenumberBestIndex(tls *libc.TLS, tab uintptr, pIdxInfo uintptr) int32 {
 26759  	var i int32
 26760  	var idxNum int32 = 0
 26761  	var argvIdx int32 = 1
 26762  	var ltIdx int32 = -1
 26763  	var gtIdx int32 = -1
 26764  	var pConstraint uintptr
 26765  	pConstraint = (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint
 26766  	i = 0
 26767  __1:
 26768  	if !(i < (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnConstraint) {
 26769  		goto __3
 26770  	}
 26771  	{
 26772  		if int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fusable) == 0 {
 26773  			goto __2
 26774  		}
 26775  		if idxNum&3 == 0 && int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_GT {
 26776  			idxNum = idxNum | 1
 26777  			ltIdx = i
 26778  		}
 26779  		if idxNum&3 == 0 && int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_GE {
 26780  			idxNum = idxNum | 2
 26781  			ltIdx = i
 26782  		}
 26783  		if idxNum&12 == 0 && int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_LT {
 26784  			idxNum = idxNum | 4
 26785  			gtIdx = i
 26786  		}
 26787  		if idxNum&12 == 0 && int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_LE {
 26788  			idxNum = idxNum | 8
 26789  			gtIdx = i
 26790  		}
 26791  
 26792  	}
 26793  	goto __2
 26794  __2:
 26795  	i++
 26796  	pConstraint += 12
 26797  	goto __1
 26798  	goto __3
 26799  __3:
 26800  	;
 26801  	(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxNum = idxNum
 26802  	if ltIdx >= 0 {
 26803  		(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(ltIdx)*8)).FargvIndex = libc.PostIncInt32(&argvIdx, 1)
 26804  		(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(ltIdx)*8)).Fomit = uint8(1)
 26805  	}
 26806  	if gtIdx >= 0 {
 26807  		(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(gtIdx)*8)).FargvIndex = argvIdx
 26808  		(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(gtIdx)*8)).Fomit = uint8(1)
 26809  	}
 26810  	if (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnOrderBy == 1 &&
 26811  		int32((*sqlite3_index_orderby)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaOrderBy)).Fdesc) == 0 {
 26812  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).ForderByConsumed = 1
 26813  	}
 26814  	if idxNum&12 == 0 {
 26815  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = 1e99
 26816  	} else if idxNum&3 == 0 {
 26817  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = float64(5)
 26818  	} else {
 26819  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = float64(1)
 26820  	}
 26821  	return SQLITE_OK
 26822  }
 26823  
 26824  var wholenumberModule = sqlite3_module{
 26825  	FxCreate:     0,
 26826  	FxConnect:    0,
 26827  	FxBestIndex:  0,
 26828  	FxDisconnect: 0,
 26829  	FxDestroy:    0,
 26830  	FxOpen:       0,
 26831  	FxClose:      0,
 26832  	FxFilter:     0,
 26833  	FxNext:       0,
 26834  	FxEof:        0,
 26835  	FxColumn:     0,
 26836  	FxRowid:      0,
 26837  }
 26838  
 26839  func sqlite3_wholenumber_init(tls *libc.TLS, db uintptr, pzErrMsg uintptr, pApi uintptr) int32 {
 26840  	var rc int32 = SQLITE_OK
 26841  	_ = pApi
 26842  
 26843  	rc = sqlite3.Xsqlite3_create_module(tls, db, ts+9463, uintptr(unsafe.Pointer(&wholenumberModule)), uintptr(0))
 26844  	return rc
 26845  }
 26846  
 26847  func test_rbu_delta(tls *libc.TLS, pCtx uintptr, nArg int32, apVal uintptr) {
 26848  	var interp uintptr = sqlite3.Xsqlite3_user_data(tls, pCtx)
 26849  	var pScript uintptr
 26850  	var i int32
 26851  
 26852  	pScript = tcl.XTcl_NewObj(tls)
 26853  	(*Tcl_Obj)(unsafe.Pointer(pScript)).FrefCount++
 26854  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pScript, tcl.XTcl_NewStringObj(tls, ts+9475, -1))
 26855  	for i = 0; i < nArg; i++ {
 26856  		var pIn uintptr = *(*uintptr)(unsafe.Pointer(apVal + uintptr(i)*8))
 26857  		var z uintptr = sqlite3.Xsqlite3_value_text(tls, pIn)
 26858  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pScript, tcl.XTcl_NewStringObj(tls, z, -1))
 26859  	}
 26860  
 26861  	if TCL_OK == tcl.XTcl_EvalObjEx(tls, interp, pScript, TCL_GLOBAL_ONLY) {
 26862  		var z uintptr = tcl.XTcl_GetStringResult(tls, interp)
 26863  		sqlite3.Xsqlite3_result_text(tls, pCtx, z, -1, libc.UintptrFromInt32(-1))
 26864  	} else {
 26865  		tcl.XTcl_BackgroundError(tls, interp)
 26866  	}
 26867  
 26868  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 26869  		if libc.PreDecInt32(&(*Tcl_Obj)(unsafe.Pointer(pScript)).FrefCount, 1) <= 0 {
 26870  			tcl.XTclFreeObj(tls, pScript)
 26871  		}
 26872  	}
 26873  }
 26874  
 26875  func test_sqlite3rbu_cmd(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 26876  	bp := tls.Alloc(496)
 26877  	defer tls.Free(496)
 26878  
 26879  	var ret int32 = TCL_OK
 26880  	var pRbu uintptr = clientData
 26881  	*(*[14]RbuCmd)(unsafe.Pointer(bp + 24)) = [14]RbuCmd{
 26882  		{FzName: ts + 9485, FnArg: 2, FzUsage: ts + 584},
 26883  		{FzName: ts + 9490, FnArg: 2, FzUsage: ts + 584},
 26884  		{FzName: ts + 9496, FnArg: 2, FzUsage: ts + 584},
 26885  		{FzName: ts + 9513, FnArg: 2, FzUsage: ts + 584},
 26886  		{FzName: ts + 9523, FnArg: 3, FzUsage: ts + 9535},
 26887  		{FzName: ts + 9539, FnArg: 2, FzUsage: ts + 584},
 26888  		{FzName: ts + 9551, FnArg: 3, FzUsage: ts + 9554},
 26889  		{FzName: ts + 9558, FnArg: 2, FzUsage: ts + 584},
 26890  		{FzName: ts + 9564, FnArg: 2, FzUsage: ts + 584},
 26891  		{FzName: ts + 9573, FnArg: 2, FzUsage: ts + 584},
 26892  		{FzName: ts + 9588, FnArg: 3, FzUsage: ts + 9604},
 26893  		{FzName: ts + 9610, FnArg: 2, FzUsage: ts + 584},
 26894  		{FzName: ts + 9620, FnArg: 3, FzUsage: ts + 9535},
 26895  		{},
 26896  	}
 26897  
 26898  	if objc < 2 {
 26899  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+9631)
 26900  		return TCL_ERROR
 26901  	}
 26902  	ret = tcl.XTcl_GetIndexFromObjStruct(tls,
 26903  		interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp+24, int32(unsafe.Sizeof(RbuCmd{})), ts+9638, 0, bp+360)
 26904  	if ret != 0 {
 26905  		return TCL_ERROR
 26906  	}
 26907  	if objc != (*RbuCmd)(unsafe.Pointer(bp+24+uintptr(*(*int32)(unsafe.Pointer(bp + 360)))*24)).FnArg {
 26908  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, (*RbuCmd)(unsafe.Pointer(bp+24+uintptr(*(*int32)(unsafe.Pointer(bp + 360)))*24)).FzUsage)
 26909  		return TCL_ERROR
 26910  	}
 26911  
 26912  	switch *(*int32)(unsafe.Pointer(bp + 360)) {
 26913  	case 0:
 26914  		{
 26915  			var rc int32 = sqlite3.Xsqlite3rbu_step(tls, pRbu)
 26916  			tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3ErrName(tls, rc), -1))
 26917  			break
 26918  
 26919  		}
 26920  
 26921  	case 9:
 26922  		fallthrough
 26923  	case 1:
 26924  		{
 26925  			*(*uintptr)(unsafe.Pointer(bp + 368)) = uintptr(0)
 26926  			var rc int32
 26927  			tcl.XTcl_DeleteCommand(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))))
 26928  			if *(*int32)(unsafe.Pointer(bp + 360)) == 1 {
 26929  				rc = sqlite3.Xsqlite3rbu_close(tls, pRbu, bp+368)
 26930  			} else {
 26931  				rc = sqlite3.Xsqlite3rbu_close(tls, pRbu, uintptr(0))
 26932  			}
 26933  			if rc == SQLITE_OK || rc == SQLITE_DONE {
 26934  				tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3ErrName(tls, rc), -1))
 26935  
 26936  			} else {
 26937  				tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3ErrName(tls, rc), -1))
 26938  				if *(*uintptr)(unsafe.Pointer(bp + 368)) != 0 {
 26939  					tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+9645, *(*uintptr)(unsafe.Pointer(bp + 368)), 0))
 26940  					sqlite3.Xsqlite3_free(tls, *(*uintptr)(unsafe.Pointer(bp + 368)))
 26941  				}
 26942  				ret = TCL_ERROR
 26943  			}
 26944  			break
 26945  
 26946  		}
 26947  
 26948  	case 2:
 26949  		{
 26950  			var db uintptr = sqlite3.Xsqlite3rbu_db(tls, pRbu, 0)
 26951  			var rc int32 = sqlite3.Xsqlite3_create_function(tls,
 26952  				db, ts+9475, -1, SQLITE_UTF8, interp, *(*uintptr)(unsafe.Pointer(&struct {
 26953  					f func(*libc.TLS, uintptr, int32, uintptr)
 26954  				}{test_rbu_delta})), uintptr(0), uintptr(0))
 26955  			tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3ErrName(tls, rc), -1))
 26956  			ret = func() int32 {
 26957  				if rc == SQLITE_OK {
 26958  					return TCL_OK
 26959  				}
 26960  				return TCL_ERROR
 26961  			}()
 26962  			break
 26963  
 26964  		}
 26965  
 26966  	case 3:
 26967  		{
 26968  			var rc int32 = sqlite3.Xsqlite3rbu_savestate(tls, pRbu)
 26969  			tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3ErrName(tls, rc), -1))
 26970  			ret = func() int32 {
 26971  				if rc == SQLITE_OK {
 26972  					return TCL_OK
 26973  				}
 26974  				return TCL_ERROR
 26975  			}()
 26976  			break
 26977  
 26978  		}
 26979  
 26980  	case 12:
 26981  		fallthrough
 26982  	case 4:
 26983  		{
 26984  			var db uintptr = sqlite3.Xsqlite3rbu_db(tls, pRbu, libc.Bool32(*(*int32)(unsafe.Pointer(bp + 360)) == 12))
 26985  			var rc int32 = sqlite3.Xsqlite3_exec(tls, db, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8))), uintptr(0), uintptr(0), uintptr(0))
 26986  			if rc != SQLITE_OK {
 26987  				tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3_errmsg(tls, db), -1))
 26988  				ret = TCL_ERROR
 26989  			}
 26990  			break
 26991  
 26992  		}
 26993  
 26994  	case 5:
 26995  		{
 26996  			var pObj uintptr
 26997  			sqlite3.Xsqlite3rbu_bp_progress(tls, pRbu, bp+376, bp+380)
 26998  
 26999  			pObj = tcl.XTcl_NewObj(tls)
 27000  			tcl.XTcl_ListObjAppendElement(tls, interp, pObj, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 376))))
 27001  			tcl.XTcl_ListObjAppendElement(tls, interp, pObj, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 380))))
 27002  			tcl.XTcl_SetObjResult(tls, interp, pObj)
 27003  			break
 27004  
 27005  		}
 27006  
 27007  	case 6:
 27008  		{
 27009  			if tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+384) != 0 {
 27010  				ret = TCL_ERROR
 27011  			} else {
 27012  				var db uintptr = sqlite3.Xsqlite3rbu_db(tls, pRbu, *(*int32)(unsafe.Pointer(bp + 384)))
 27013  				if sqlite3TestMakePointerStr(tls, interp, bp+388, db) != 0 {
 27014  					ret = TCL_ERROR
 27015  				} else {
 27016  					tcl.XTcl_SetResult(tls, interp, bp+388, uintptr(1))
 27017  				}
 27018  			}
 27019  			break
 27020  
 27021  		}
 27022  	case 7:
 27023  		{
 27024  			*(*[6]uintptr)(unsafe.Pointer(bp + 440)) = [6]uintptr{uintptr(0), ts + 9649, ts + 9653, ts + 9658, ts + 9669, ts + 9674}
 27025  			var eState int32 = sqlite3.Xsqlite3rbu_state(tls, pRbu)
 27026  
 27027  			tcl.XTcl_SetResult(tls, interp, *(*uintptr)(unsafe.Pointer(bp + 440 + uintptr(eState)*8)), uintptr(0))
 27028  			break
 27029  
 27030  		}
 27031  	case 8:
 27032  		{
 27033  			var nStep sqlite3_int64 = sqlite3.Xsqlite3rbu_progress(tls, pRbu)
 27034  			tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewWideIntObj(tls, nStep))
 27035  			break
 27036  
 27037  		}
 27038  
 27039  	case 10:
 27040  		{
 27041  			if tcl.XTcl_GetWideIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+488) != 0 {
 27042  				ret = TCL_ERROR
 27043  			} else {
 27044  				*(*sqlite3_int64)(unsafe.Pointer(bp + 488)) = sqlite3.Xsqlite3rbu_temp_size_limit(tls, pRbu, *(*sqlite3_int64)(unsafe.Pointer(bp + 488)))
 27045  				tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewWideIntObj(tls, *(*sqlite3_int64)(unsafe.Pointer(bp + 488))))
 27046  			}
 27047  			break
 27048  
 27049  		}
 27050  	case 11:
 27051  		{
 27052  			var sz sqlite3_int64 = sqlite3.Xsqlite3rbu_temp_size(tls, pRbu)
 27053  			tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewWideIntObj(tls, sz))
 27054  			break
 27055  
 27056  		}
 27057  
 27058  	default:
 27059  		break
 27060  	}
 27061  
 27062  	return ret
 27063  }
 27064  
 27065  type RbuCmd = struct {
 27066  	FzName       uintptr
 27067  	FnArg        int32
 27068  	F__ccgo_pad1 [4]byte
 27069  	FzUsage      uintptr
 27070  }
 27071  
 27072  func test_sqlite3rbu(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 27073  	var pRbu uintptr = uintptr(0)
 27074  	var zCmd uintptr
 27075  	var zTarget uintptr
 27076  	var zRbu uintptr
 27077  	var zStateDb uintptr = uintptr(0)
 27078  
 27079  	if objc != 4 && objc != 5 {
 27080  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+9680)
 27081  		return TCL_ERROR
 27082  	}
 27083  	zCmd = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 27084  	zTarget = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 27085  	zRbu = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)))
 27086  	if objc == 5 {
 27087  		zStateDb = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 4*8)))
 27088  	}
 27089  
 27090  	pRbu = sqlite3.Xsqlite3rbu_open(tls, zTarget, zRbu, zStateDb)
 27091  	tcl.XTcl_CreateObjCommand(tls, interp, zCmd, *(*uintptr)(unsafe.Pointer(&struct {
 27092  		f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
 27093  	}{test_sqlite3rbu_cmd})), pRbu, uintptr(0))
 27094  	tcl.XTcl_SetObjResult(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 27095  	return TCL_OK
 27096  }
 27097  
 27098  func test_sqlite3rbu_vacuum(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 27099  	var pRbu uintptr = uintptr(0)
 27100  	var zCmd uintptr
 27101  	var zTarget uintptr
 27102  	var zStateDb uintptr = uintptr(0)
 27103  
 27104  	if objc != 3 && objc != 4 {
 27105  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+9713)
 27106  		return TCL_ERROR
 27107  	}
 27108  	zCmd = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 27109  	zTarget = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 27110  	if objc == 4 {
 27111  		zStateDb = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)))
 27112  	}
 27113  	if zStateDb != 0 && int32(*(*int8)(unsafe.Pointer(zStateDb))) == 0 {
 27114  		zStateDb = uintptr(0)
 27115  	}
 27116  
 27117  	pRbu = sqlite3.Xsqlite3rbu_vacuum(tls, zTarget, zStateDb)
 27118  	tcl.XTcl_CreateObjCommand(tls, interp, zCmd, *(*uintptr)(unsafe.Pointer(&struct {
 27119  		f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
 27120  	}{test_sqlite3rbu_cmd})), pRbu, uintptr(0))
 27121  	tcl.XTcl_SetObjResult(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 27122  	return TCL_OK
 27123  }
 27124  
 27125  func test_sqlite3rbu_create_vfs(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 27126  	var zName uintptr
 27127  	var zParent uintptr
 27128  	var rc int32
 27129  
 27130  	if objc != 3 && objc != 4 {
 27131  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+9739)
 27132  		return TCL_ERROR
 27133  	}
 27134  
 27135  	zName = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(objc-2)*8)))
 27136  	zParent = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(objc-1)*8)))
 27137  	if int32(*(*int8)(unsafe.Pointer(zParent))) == 0 {
 27138  		zParent = uintptr(0)
 27139  	}
 27140  
 27141  	rc = sqlite3.Xsqlite3rbu_create_vfs(tls, zName, zParent)
 27142  	if rc != SQLITE_OK {
 27143  		tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3ErrName(tls, rc), -1))
 27144  		return TCL_ERROR
 27145  	} else if objc == 4 {
 27146  		var pVfs uintptr = sqlite3.Xsqlite3_vfs_find(tls, zName)
 27147  		sqlite3.Xsqlite3_vfs_register(tls, pVfs, 1)
 27148  	}
 27149  
 27150  	tcl.XTcl_ResetResult(tls, interp)
 27151  	return TCL_OK
 27152  }
 27153  
 27154  func test_sqlite3rbu_destroy_vfs(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 27155  	var zName uintptr
 27156  
 27157  	if objc != 2 {
 27158  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+9762)
 27159  		return TCL_ERROR
 27160  	}
 27161  
 27162  	zName = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 27163  	sqlite3.Xsqlite3rbu_destroy_vfs(tls, zName)
 27164  	return TCL_OK
 27165  }
 27166  
 27167  func test_sqlite3rbu_internal_test(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 27168  	bp := tls.Alloc(16)
 27169  	defer tls.Free(16)
 27170  
 27171  	var db uintptr
 27172  
 27173  	if objc != 1 {
 27174  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+584)
 27175  		return TCL_ERROR
 27176  	}
 27177  
 27178  	db = sqlite3.Xsqlite3rbu_db(tls, uintptr(0), 0)
 27179  	if db != uintptr(0) {
 27180  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+9767, 0))
 27181  		return TCL_ERROR
 27182  	}
 27183  
 27184  	return TCL_OK
 27185  }
 27186  
 27187  func SqliteRbu_Init(tls *libc.TLS, interp uintptr) int32 {
 27188  	var i int32
 27189  	for i = 0; uint64(i) < uint64(unsafe.Sizeof(aObjCmd))/uint64(unsafe.Sizeof(struct {
 27190  		FzName uintptr
 27191  		FxProc uintptr
 27192  	}{})); i++ {
 27193  		tcl.XTcl_CreateObjCommand(tls, interp, aObjCmd[i].FzName, aObjCmd[i].FxProc, uintptr(0), uintptr(0))
 27194  	}
 27195  	return TCL_OK
 27196  }
 27197  
 27198  var aObjCmd = [5]struct {
 27199  	FzName uintptr
 27200  	FxProc uintptr
 27201  }{
 27202  	{FzName: ts + 9790, FxProc: 0},
 27203  	{FzName: ts + 9801, FxProc: 0},
 27204  	{FzName: ts + 9819, FxProc: 0},
 27205  	{FzName: ts + 9841, FxProc: 0},
 27206  	{FzName: ts + 9864, FxProc: 0},
 27207  }
 27208  
 27209  type sqlite31 = sqlite32
 27210  
 27211  type sqlite3_str = sqlite3_str1
 27212  
 27213  type imaxdiv_t = struct {
 27214  	Fquot intmax_t
 27215  	Frem  intmax_t
 27216  }
 27217  
 27218  type Hash1 = struct {
 27219  	Fhtsize uint32
 27220  	Fcount  uint32
 27221  	Ffirst  uintptr
 27222  	Fht     uintptr
 27223  }
 27224  
 27225  type Hash = Hash1
 27226  type HashElem1 = struct {
 27227  	Fnext uintptr
 27228  	Fprev uintptr
 27229  	Fdata uintptr
 27230  	FpKey uintptr
 27231  }
 27232  
 27233  type HashElem = HashElem1
 27234  
 27235  type _ht = struct {
 27236  	Fcount       uint32
 27237  	F__ccgo_pad1 [4]byte
 27238  	Fchain       uintptr
 27239  }
 27240  
 27241  type max_align_t = float64
 27242  type i16 = int16_t
 27243  type i8 = int8_t
 27244  
 27245  type tRowcnt = u32
 27246  
 27247  type LogEst = int16_t
 27248  
 27249  type uptr = uintptr_t
 27250  
 27251  type BusyHandler1 = struct {
 27252  	FxBusyHandler uintptr
 27253  	FpBusyArg     uintptr
 27254  	FnBusy        int32
 27255  	F__ccgo_pad1  [4]byte
 27256  }
 27257  
 27258  type BusyHandler = BusyHandler1
 27259  
 27260  type AggInfo1 = struct {
 27261  	FdirectMode     u8
 27262  	FuseSortingIdx  u8
 27263  	F__ccgo_pad1    [2]byte
 27264  	FsortingIdx     int32
 27265  	FsortingIdxPTab int32
 27266  	FnSortingColumn int32
 27267  	FmnReg          int32
 27268  	FmxReg          int32
 27269  	FpGroupBy       uintptr
 27270  	FaCol           uintptr
 27271  	FnColumn        int32
 27272  	FnAccumulator   int32
 27273  	FaFunc          uintptr
 27274  	FnFunc          int32
 27275  	FselId          u32
 27276  }
 27277  
 27278  type AggInfo = AggInfo1
 27279  type AuthContext1 = struct {
 27280  	FzAuthContext uintptr
 27281  	FpParse       uintptr
 27282  }
 27283  
 27284  type AuthContext = AuthContext1
 27285  type AutoincInfo1 = struct {
 27286  	FpNext  uintptr
 27287  	FpTab   uintptr
 27288  	FiDb    int32
 27289  	FregCtr int32
 27290  }
 27291  
 27292  type AutoincInfo = AutoincInfo1
 27293  type CollSeq1 = struct {
 27294  	FzName       uintptr
 27295  	Fenc         u8
 27296  	F__ccgo_pad1 [7]byte
 27297  	FpUser       uintptr
 27298  	FxCmp        uintptr
 27299  	FxDel        uintptr
 27300  }
 27301  
 27302  type CollSeq = CollSeq1
 27303  type Column1 = struct {
 27304  	FzCnName     uintptr
 27305  	FnotNull     uint8
 27306  	F__ccgo_pad1 [1]byte
 27307  	Faffinity    int8
 27308  	FszEst       u8
 27309  	FhName       u8
 27310  	F__ccgo_pad2 [1]byte
 27311  	FiDflt       u16
 27312  	FcolFlags    u16
 27313  	F__ccgo_pad3 [6]byte
 27314  }
 27315  
 27316  type Column = Column1
 27317  type Cte1 = struct {
 27318  	FzName       uintptr
 27319  	FpCols       uintptr
 27320  	FpSelect     uintptr
 27321  	FzCteErr     uintptr
 27322  	FpUse        uintptr
 27323  	FeM10d       u8
 27324  	F__ccgo_pad1 [7]byte
 27325  }
 27326  
 27327  type Cte = Cte1
 27328  type CteUse1 = struct {
 27329  	FnUse        int32
 27330  	FaddrM9e     int32
 27331  	FregRtn      int32
 27332  	FiCur        int32
 27333  	FnRowEst     LogEst
 27334  	FeM10d       u8
 27335  	F__ccgo_pad1 [1]byte
 27336  }
 27337  
 27338  type CteUse = CteUse1
 27339  type Db1 = struct {
 27340  	FzDbSName     uintptr
 27341  	FpBt          uintptr
 27342  	Fsafety_level u8
 27343  	FbSyncSet     u8
 27344  	F__ccgo_pad1  [6]byte
 27345  	FpSchema      uintptr
 27346  }
 27347  
 27348  type Db = Db1
 27349  type DbFixer1 = struct {
 27350  	FpParse      uintptr
 27351  	Fw           Walker
 27352  	FpSchema     uintptr
 27353  	FbTemp       u8
 27354  	F__ccgo_pad1 [7]byte
 27355  	FzDb         uintptr
 27356  	FzType       uintptr
 27357  	FpName       uintptr
 27358  }
 27359  
 27360  type DbFixer = DbFixer1
 27361  type Schema1 = struct {
 27362  	Fschema_cookie int32
 27363  	FiGeneration   int32
 27364  	FtblHash       Hash
 27365  	FidxHash       Hash
 27366  	FtrigHash      Hash
 27367  	FfkeyHash      Hash
 27368  	FpSeqTab       uintptr
 27369  	Ffile_format   u8
 27370  	Fenc           u8
 27371  	FschemaFlags   u16
 27372  	Fcache_size    int32
 27373  }
 27374  
 27375  type Schema = Schema1
 27376  type Expr1 = struct {
 27377  	Fop          u8
 27378  	FaffExpr     int8
 27379  	Fop2         u8
 27380  	F__ccgo_pad1 [1]byte
 27381  	Fflags       u32
 27382  	Fu           struct{ FzToken uintptr }
 27383  	FpLeft       uintptr
 27384  	FpRight      uintptr
 27385  	Fx           struct{ FpList uintptr }
 27386  	FnHeight     int32
 27387  	FiTable      int32
 27388  	FiColumn     ynVar
 27389  	FiAgg        i16
 27390  	Fw           struct{ FiJoin int32 }
 27391  	FpAggInfo    uintptr
 27392  	Fy           struct{ FpTab uintptr }
 27393  }
 27394  
 27395  type Expr = Expr1
 27396  type ExprList1 = struct {
 27397  	FnExpr  int32
 27398  	FnAlloc int32
 27399  	Fa      [1]struct {
 27400  		FpExpr  uintptr
 27401  		FzEName uintptr
 27402  		Ffg     struct {
 27403  			F__ccgo_pad1 [0]uint32
 27404  			FsortFlags   u8
 27405  			F__ccgo_pad2 [3]byte
 27406  			FeEName      uint16
 27407  			F__ccgo_pad3 [2]byte
 27408  		}
 27409  		Fu struct {
 27410  			F__ccgo_pad1 [0]uint32
 27411  			Fx           struct {
 27412  				FiOrderByCol u16
 27413  				FiAlias      u16
 27414  			}
 27415  		}
 27416  		F__ccgo_pad1 [4]byte
 27417  	}
 27418  }
 27419  
 27420  type ExprList = ExprList1
 27421  type FKey1 = struct {
 27422  	FpFrom       uintptr
 27423  	FpNextFrom   uintptr
 27424  	FzTo         uintptr
 27425  	FpNextTo     uintptr
 27426  	FpPrevTo     uintptr
 27427  	FnCol        int32
 27428  	FisDeferred  u8
 27429  	FaAction     [2]u8
 27430  	F__ccgo_pad1 [1]byte
 27431  	FapTrigger   [2]uintptr
 27432  	FaCol        [1]struct {
 27433  		FiFrom       int32
 27434  		F__ccgo_pad1 [4]byte
 27435  		FzCol        uintptr
 27436  	}
 27437  }
 27438  
 27439  type FKey = FKey1
 27440  type FuncDestructor1 = struct {
 27441  	FnRef        int32
 27442  	F__ccgo_pad1 [4]byte
 27443  	FxDestroy    uintptr
 27444  	FpUserData   uintptr
 27445  }
 27446  
 27447  type FuncDestructor = FuncDestructor1
 27448  type FuncDef1 = struct {
 27449  	FnArg        i8
 27450  	F__ccgo_pad1 [3]byte
 27451  	FfuncFlags   u32
 27452  	FpUserData   uintptr
 27453  	FpNext       uintptr
 27454  	FxSFunc      uintptr
 27455  	FxFinalize   uintptr
 27456  	FxValue      uintptr
 27457  	FxInverse    uintptr
 27458  	FzName       uintptr
 27459  	Fu           struct{ FpHash uintptr }
 27460  }
 27461  
 27462  type FuncDef = FuncDef1
 27463  type FuncDefHash1 = struct{ Fa [23]uintptr }
 27464  
 27465  type FuncDefHash = FuncDefHash1
 27466  type IdList1 = struct {
 27467  	FnId         int32
 27468  	FeU4         u8
 27469  	F__ccgo_pad1 [3]byte
 27470  	Fa           [1]struct {
 27471  		FzName uintptr
 27472  		Fu4    struct {
 27473  			F__ccgo_pad1 [0]uint64
 27474  			Fidx         int32
 27475  			F__ccgo_pad2 [4]byte
 27476  		}
 27477  	}
 27478  }
 27479  
 27480  type IdList = IdList1
 27481  type Index1 = struct {
 27482  	FzName         uintptr
 27483  	FaiColumn      uintptr
 27484  	FaiRowLogEst   uintptr
 27485  	FpTable        uintptr
 27486  	FzColAff       uintptr
 27487  	FpNext         uintptr
 27488  	FpSchema       uintptr
 27489  	FaSortOrder    uintptr
 27490  	FazColl        uintptr
 27491  	FpPartIdxWhere uintptr
 27492  	FaColExpr      uintptr
 27493  	Ftnum          Pgno
 27494  	FszIdxRow      LogEst
 27495  	FnKeyCol       u16
 27496  	FnColumn       u16
 27497  	FonError       u8
 27498  	F__ccgo_pad1   [1]byte
 27499  	FidxType       uint16
 27500  	F__ccgo_pad2   [2]byte
 27501  	FnSample       int32
 27502  	FnSampleCol    int32
 27503  	FaAvgEq        uintptr
 27504  	FaSample       uintptr
 27505  	FaiRowEst      uintptr
 27506  	FnRowEst0      tRowcnt
 27507  	F__ccgo_pad3   [4]byte
 27508  	FcolNotIdxed   Bitmask
 27509  }
 27510  
 27511  type Index = Index1
 27512  type IndexSample1 = struct {
 27513  	Fp           uintptr
 27514  	Fn           int32
 27515  	F__ccgo_pad1 [4]byte
 27516  	FanEq        uintptr
 27517  	FanLt        uintptr
 27518  	FanDLt       uintptr
 27519  }
 27520  
 27521  type IndexSample = IndexSample1
 27522  type KeyInfo1 = struct {
 27523  	FnRef        u32
 27524  	Fenc         u8
 27525  	F__ccgo_pad1 [1]byte
 27526  	FnKeyField   u16
 27527  	FnAllField   u16
 27528  	F__ccgo_pad2 [6]byte
 27529  	Fdb          uintptr
 27530  	FaSortFlags  uintptr
 27531  	FaColl       [1]uintptr
 27532  }
 27533  
 27534  type KeyInfo = KeyInfo1
 27535  type Lookaside1 = struct {
 27536  	FbDisable    u32
 27537  	Fsz          u16
 27538  	FszTrue      u16
 27539  	FbMalloced   u8
 27540  	F__ccgo_pad1 [3]byte
 27541  	FnSlot       u32
 27542  	FanStat      [3]u32
 27543  	F__ccgo_pad2 [4]byte
 27544  	FpInit       uintptr
 27545  	FpFree       uintptr
 27546  	FpSmallInit  uintptr
 27547  	FpSmallFree  uintptr
 27548  	FpMiddle     uintptr
 27549  	FpStart      uintptr
 27550  	FpEnd        uintptr
 27551  }
 27552  
 27553  type Lookaside = Lookaside1
 27554  type LookasideSlot1 = struct{ FpNext uintptr }
 27555  
 27556  type LookasideSlot = LookasideSlot1
 27557  type Module1 = struct {
 27558  	FpModule     uintptr
 27559  	FzName       uintptr
 27560  	FnRefModule  int32
 27561  	F__ccgo_pad1 [4]byte
 27562  	FpAux        uintptr
 27563  	FxDestroy    uintptr
 27564  	FpEpoTab     uintptr
 27565  }
 27566  
 27567  type Module = Module1
 27568  type NameContext1 = struct {
 27569  	FpParse      uintptr
 27570  	FpSrcList    uintptr
 27571  	FuNC         struct{ FpEList uintptr }
 27572  	FpNext       uintptr
 27573  	FnRef        int32
 27574  	FnNcErr      int32
 27575  	FncFlags     int32
 27576  	F__ccgo_pad1 [4]byte
 27577  	FpWinSelect  uintptr
 27578  }
 27579  
 27580  type NameContext = NameContext1
 27581  type OnOrUsing1 = struct {
 27582  	FpOn    uintptr
 27583  	FpUsing uintptr
 27584  }
 27585  
 27586  type OnOrUsing = OnOrUsing1
 27587  type Parse1 = struct {
 27588  	Fdb               uintptr
 27589  	FzErrMsg          uintptr
 27590  	FpVdbe            uintptr
 27591  	Frc               int32
 27592  	FcolNamesSet      u8
 27593  	FcheckSchema      u8
 27594  	Fnested           u8
 27595  	FnTempReg         u8
 27596  	FisMultiWrite     u8
 27597  	FmayAbort         u8
 27598  	FhasCompound      u8
 27599  	FokConstFactor    u8
 27600  	FdisableLookaside u8
 27601  	FdisableVtab      u8
 27602  	FwithinRJSubrtn   u8
 27603  	F__ccgo_pad1      [1]byte
 27604  	FnRangeReg        int32
 27605  	FiRangeReg        int32
 27606  	FnErr             int32
 27607  	FnTab             int32
 27608  	FnMem             int32
 27609  	FszOpAlloc        int32
 27610  	FiSelfTab         int32
 27611  	FnLabel           int32
 27612  	FnLabelAlloc      int32
 27613  	F__ccgo_pad2      [4]byte
 27614  	FaLabel           uintptr
 27615  	FpConstExpr       uintptr
 27616  	FconstraintName   Token
 27617  	FwriteMask        yDbMask
 27618  	FcookieMask       yDbMask
 27619  	FregRowid         int32
 27620  	FregRoot          int32
 27621  	FnMaxArg          int32
 27622  	FnSelect          int32
 27623  	FnTableLock       int32
 27624  	F__ccgo_pad3      [4]byte
 27625  	FaTableLock       uintptr
 27626  	FpAinc            uintptr
 27627  	FpToplevel        uintptr
 27628  	FpTriggerTab      uintptr
 27629  	FpTriggerPrg      uintptr
 27630  	FpCleanup         uintptr
 27631  	Fu1               struct {
 27632  		F__ccgo_pad1 [0]uint64
 27633  		FaddrCrTab   int32
 27634  		F__ccgo_pad2 [4]byte
 27635  	}
 27636  	FnQueryLoop      u32
 27637  	Foldmask         u32
 27638  	Fnewmask         u32
 27639  	FeTriggerOp      u8
 27640  	FbReturning      u8
 27641  	FeOrconf         u8
 27642  	FdisableTriggers u8
 27643  	FaTempReg        [8]int32
 27644  	FpOuterParse     uintptr
 27645  	FsNameToken      Token
 27646  	FsLastToken      Token
 27647  	FnVar            ynVar
 27648  	FiPkSortOrder    u8
 27649  	Fexplain         u8
 27650  	FeParseMode      u8
 27651  	F__ccgo_pad4     [3]byte
 27652  	FnVtabLock       int32
 27653  	FnHeight         int32
 27654  	FaddrExplain     int32
 27655  	F__ccgo_pad5     [4]byte
 27656  	FpVList          uintptr
 27657  	FpReprepare      uintptr
 27658  	FzTail           uintptr
 27659  	FpNewTable       uintptr
 27660  	FpNewIndex       uintptr
 27661  	FpNewTrigger     uintptr
 27662  	FzAuthContext    uintptr
 27663  	FsArg            Token
 27664  	FapVtabLock      uintptr
 27665  	FpWith           uintptr
 27666  	FpRename         uintptr
 27667  }
 27668  
 27669  type Parse = Parse1
 27670  type ParseCleanup1 = struct {
 27671  	FpNext    uintptr
 27672  	FpPtr     uintptr
 27673  	FxCleanup uintptr
 27674  }
 27675  
 27676  type ParseCleanup = ParseCleanup1
 27677  type PreUpdate1 = struct {
 27678  	Fv            uintptr
 27679  	FpCsr         uintptr
 27680  	Fop           int32
 27681  	F__ccgo_pad1  [4]byte
 27682  	FaRecord      uintptr
 27683  	Fkeyinfo      KeyInfo
 27684  	FpUnpacked    uintptr
 27685  	FpNewUnpacked uintptr
 27686  	FiNewReg      int32
 27687  	FiBlobWrite   int32
 27688  	FiKey1        i64
 27689  	FiKey2        i64
 27690  	FaNew         uintptr
 27691  	FpTab         uintptr
 27692  	FpPk          uintptr
 27693  }
 27694  
 27695  type PrintfArguments1 = struct {
 27696  	FnArg  int32
 27697  	FnUsed int32
 27698  	FapArg uintptr
 27699  }
 27700  
 27701  type PrintfArguments = PrintfArguments1
 27702  type Returning1 = struct {
 27703  	FpParse      uintptr
 27704  	FpReturnEL   uintptr
 27705  	FretTrig     Trigger
 27706  	FretTStep    TriggerStep
 27707  	FiRetCur     int32
 27708  	FnRetCol     int32
 27709  	FiRetReg     int32
 27710  	F__ccgo_pad1 [4]byte
 27711  }
 27712  
 27713  type Returning = Returning1
 27714  type Savepoint1 = struct {
 27715  	FzName            uintptr
 27716  	FnDeferredCons    i64
 27717  	FnDeferredImmCons i64
 27718  	FpNext            uintptr
 27719  }
 27720  
 27721  type Savepoint = Savepoint1
 27722  type Select1 = struct {
 27723  	Fop           u8
 27724  	F__ccgo_pad1  [1]byte
 27725  	FnSelectRow   LogEst
 27726  	FselFlags     u32
 27727  	FiLimit       int32
 27728  	FiOffset      int32
 27729  	FselId        u32
 27730  	FaddrOpenEphm [2]int32
 27731  	F__ccgo_pad2  [4]byte
 27732  	FpEList       uintptr
 27733  	FpSrc         uintptr
 27734  	FpWhere       uintptr
 27735  	FpGroupBy     uintptr
 27736  	FpHaving      uintptr
 27737  	FpOrderBy     uintptr
 27738  	FpPrior       uintptr
 27739  	FpNext        uintptr
 27740  	FpLimit       uintptr
 27741  	FpWith        uintptr
 27742  	FpWin         uintptr
 27743  	FpWinDefn     uintptr
 27744  }
 27745  
 27746  type Select = Select1
 27747  type SelectDest1 = struct {
 27748  	FeDest       u8
 27749  	F__ccgo_pad1 [3]byte
 27750  	FiSDParm     int32
 27751  	FiSDParm2    int32
 27752  	FiSdst       int32
 27753  	FnSdst       int32
 27754  	F__ccgo_pad2 [4]byte
 27755  	FzAffSdst    uintptr
 27756  	FpOrderBy    uintptr
 27757  }
 27758  
 27759  type SelectDest = SelectDest1
 27760  type SrcItem1 = struct {
 27761  	FpSchema     uintptr
 27762  	FzDatabase   uintptr
 27763  	FzName       uintptr
 27764  	FzAlias      uintptr
 27765  	FpTab        uintptr
 27766  	FpSelect     uintptr
 27767  	FaddrFillSub int32
 27768  	FregReturn   int32
 27769  	FregResult   int32
 27770  	Ffg          struct {
 27771  		F__ccgo_pad1 [0]uint32
 27772  		Fjointype    u8
 27773  		F__ccgo_pad2 [3]byte
 27774  		FnotIndexed  uint16
 27775  		F__ccgo_pad3 [2]byte
 27776  	}
 27777  	FiCursor int32
 27778  	Fu3      struct{ FpOn uintptr }
 27779  	FcolUsed Bitmask
 27780  	Fu1      struct{ FzIndexedBy uintptr }
 27781  	Fu2      struct{ FpIBIndex uintptr }
 27782  }
 27783  
 27784  type SrcItem = SrcItem1
 27785  type SrcList1 = struct {
 27786  	FnSrc   int32
 27787  	FnAlloc u32
 27788  	Fa      [1]SrcItem
 27789  }
 27790  
 27791  type SrcList = SrcList1
 27792  type StrAccum = sqlite3_str1
 27793  type Table1 = struct {
 27794  	FzName      uintptr
 27795  	FaCol       uintptr
 27796  	FpIndex     uintptr
 27797  	FzColAff    uintptr
 27798  	FpCheck     uintptr
 27799  	Ftnum       Pgno
 27800  	FnTabRef    u32
 27801  	FtabFlags   u32
 27802  	FiPKey      i16
 27803  	FnCol       i16
 27804  	FnNVCol     i16
 27805  	FnRowLogEst LogEst
 27806  	FszTabRow   LogEst
 27807  	FkeyConf    u8
 27808  	FeTabType   u8
 27809  	Fu          struct {
 27810  		Ftab struct {
 27811  			FaddColOffset int32
 27812  			F__ccgo_pad1  [4]byte
 27813  			FpFKey        uintptr
 27814  			FpDfltList    uintptr
 27815  		}
 27816  	}
 27817  	FpTrigger uintptr
 27818  	FpSchema  uintptr
 27819  }
 27820  
 27821  type Table = Table1
 27822  type Token1 = struct {
 27823  	Fz           uintptr
 27824  	Fn           uint32
 27825  	F__ccgo_pad1 [4]byte
 27826  }
 27827  
 27828  type Token = Token1
 27829  type Trigger1 = struct {
 27830  	FzName       uintptr
 27831  	Ftable       uintptr
 27832  	Fop          u8
 27833  	Ftr_tm       u8
 27834  	FbReturning  u8
 27835  	F__ccgo_pad1 [5]byte
 27836  	FpWhen       uintptr
 27837  	FpColumns    uintptr
 27838  	FpSchema     uintptr
 27839  	FpTabSchema  uintptr
 27840  	Fstep_list   uintptr
 27841  	FpNext       uintptr
 27842  }
 27843  
 27844  type Trigger = Trigger1
 27845  type TriggerPrg1 = struct {
 27846  	FpTrigger    uintptr
 27847  	FpNext       uintptr
 27848  	FpProgram    uintptr
 27849  	Forconf      int32
 27850  	FaColmask    [2]u32
 27851  	F__ccgo_pad1 [4]byte
 27852  }
 27853  
 27854  type TriggerPrg = TriggerPrg1
 27855  type TriggerStep1 = struct {
 27856  	Fop          u8
 27857  	Forconf      u8
 27858  	F__ccgo_pad1 [6]byte
 27859  	FpTrig       uintptr
 27860  	FpSelect     uintptr
 27861  	FzTarget     uintptr
 27862  	FpFrom       uintptr
 27863  	FpWhere      uintptr
 27864  	FpExprList   uintptr
 27865  	FpIdList     uintptr
 27866  	FpUpsert     uintptr
 27867  	FzSpan       uintptr
 27868  	FpNext       uintptr
 27869  	FpLast       uintptr
 27870  }
 27871  
 27872  type TriggerStep = TriggerStep1
 27873  type UnpackedRecord1 = struct {
 27874  	FpKeyInfo    uintptr
 27875  	FaMem        uintptr
 27876  	Fu           struct{ Fz uintptr }
 27877  	Fn           int32
 27878  	FnField      u16
 27879  	Fdefault_rc  i8
 27880  	FerrCode     u8
 27881  	Fr1          i8
 27882  	Fr2          i8
 27883  	FeqSeen      u8
 27884  	F__ccgo_pad1 [5]byte
 27885  }
 27886  
 27887  type UnpackedRecord = UnpackedRecord1
 27888  type Upsert1 = struct {
 27889  	FpUpsertTarget      uintptr
 27890  	FpUpsertTargetWhere uintptr
 27891  	FpUpsertSet         uintptr
 27892  	FpUpsertWhere       uintptr
 27893  	FpNextUpsert        uintptr
 27894  	FisDoUpdate         u8
 27895  	F__ccgo_pad1        [7]byte
 27896  	FpToFree            uintptr
 27897  	FpUpsertIdx         uintptr
 27898  	FpUpsertSrc         uintptr
 27899  	FregData            int32
 27900  	FiDataCur           int32
 27901  	FiIdxCur            int32
 27902  	F__ccgo_pad2        [4]byte
 27903  }
 27904  
 27905  type Upsert = Upsert1
 27906  type VTable1 = struct {
 27907  	Fdb          uintptr
 27908  	FpMod        uintptr
 27909  	FpVtab       uintptr
 27910  	FnRef        int32
 27911  	FbConstraint u8
 27912  	FeVtabRisk   u8
 27913  	F__ccgo_pad1 [2]byte
 27914  	FiSavepoint  int32
 27915  	F__ccgo_pad2 [4]byte
 27916  	FpNext       uintptr
 27917  }
 27918  
 27919  type VTable = VTable1
 27920  type Walker1 = struct {
 27921  	FpParse           uintptr
 27922  	FxExprCallback    uintptr
 27923  	FxSelectCallback  uintptr
 27924  	FxSelectCallback2 uintptr
 27925  	FwalkerDepth      int32
 27926  	FeCode            u16
 27927  	F__ccgo_pad1      [2]byte
 27928  	Fu                struct{ FpNC uintptr }
 27929  }
 27930  
 27931  type Walker = Walker1
 27932  type Window1 = struct {
 27933  	FzName          uintptr
 27934  	FzBase          uintptr
 27935  	FpPartition     uintptr
 27936  	FpOrderBy       uintptr
 27937  	FeFrmType       u8
 27938  	FeStart         u8
 27939  	FeEnd           u8
 27940  	FbImplicitFrame u8
 27941  	FeExclude       u8
 27942  	F__ccgo_pad1    [3]byte
 27943  	FpStart         uintptr
 27944  	FpEnd           uintptr
 27945  	FppThis         uintptr
 27946  	FpNextWin       uintptr
 27947  	FpFilter        uintptr
 27948  	FpWFunc         uintptr
 27949  	FiEphCsr        int32
 27950  	FregAccum       int32
 27951  	FregResult      int32
 27952  	FcsrApp         int32
 27953  	FregApp         int32
 27954  	FregPart        int32
 27955  	FpOwner         uintptr
 27956  	FnBufferCol     int32
 27957  	FiArgCol        int32
 27958  	FregOne         int32
 27959  	FregStartRowid  int32
 27960  	FregEndRowid    int32
 27961  	FbExprArgs      u8
 27962  	F__ccgo_pad2    [3]byte
 27963  }
 27964  
 27965  type Window = Window1
 27966  type With1 = struct {
 27967  	FnCte   int32
 27968  	FbView  int32
 27969  	FpOuter uintptr
 27970  	Fa      [1]Cte
 27971  }
 27972  
 27973  type With = With1
 27974  
 27975  type Bitmask = u64
 27976  
 27977  type VList = int32
 27978  
 27979  type Pgno = u32
 27980  
 27981  type PgHdr1 = struct {
 27982  	FpPage      uintptr
 27983  	FpData      uintptr
 27984  	FpExtra     uintptr
 27985  	FpCache     uintptr
 27986  	FpDirty     uintptr
 27987  	FpPager     uintptr
 27988  	Fpgno       Pgno
 27989  	Fflags      u16
 27990  	FnRef       i16
 27991  	FpDirtyNext uintptr
 27992  	FpDirtyPrev uintptr
 27993  }
 27994  
 27995  type DbPage = PgHdr1
 27996  
 27997  type Btree1 = struct {
 27998  	Fdb             uintptr
 27999  	FpBt            uintptr
 28000  	FinTrans        u8
 28001  	Fsharable       u8
 28002  	Flocked         u8
 28003  	FhasIncrblobCur u8
 28004  	FwantToLock     int32
 28005  	FnBackup        int32
 28006  	FiBDataVersion  u32
 28007  	FpNext          uintptr
 28008  	FpPrev          uintptr
 28009  	Flock           BtLock
 28010  }
 28011  
 28012  type BtCursor1 = struct {
 28013  	FeState        u8
 28014  	FcurFlags      u8
 28015  	FcurPagerFlags u8
 28016  	Fhints         u8
 28017  	FskipNext      int32
 28018  	FpBtree        uintptr
 28019  	FaOverflow     uintptr
 28020  	FpKey          uintptr
 28021  	FpBt           uintptr
 28022  	FpNext         uintptr
 28023  	Finfo          CellInfo
 28024  	FnKey          i64
 28025  	FpgnoRoot      Pgno
 28026  	FiPage         i8
 28027  	FcurIntKey     u8
 28028  	Fix            u16
 28029  	FaiIdx         [19]u16
 28030  	F__ccgo_pad1   [2]byte
 28031  	FpKeyInfo      uintptr
 28032  	FpPage         uintptr
 28033  	FapPage        [19]uintptr
 28034  }
 28035  
 28036  type BtShared1 = struct {
 28037  	FpPager          uintptr
 28038  	Fdb              uintptr
 28039  	FpCursor         uintptr
 28040  	FpPage1          uintptr
 28041  	FopenFlags       u8
 28042  	FautoVacuum      u8
 28043  	FincrVacuum      u8
 28044  	FbDoTruncate     u8
 28045  	FinTransaction   u8
 28046  	Fmax1bytePayload u8
 28047  	FnReserveWanted  u8
 28048  	F__ccgo_pad1     [1]byte
 28049  	FbtsFlags        u16
 28050  	FmaxLocal        u16
 28051  	FminLocal        u16
 28052  	FmaxLeaf         u16
 28053  	FminLeaf         u16
 28054  	F__ccgo_pad2     [2]byte
 28055  	FpageSize        u32
 28056  	FusableSize      u32
 28057  	FnTransaction    int32
 28058  	FnPage           u32
 28059  	F__ccgo_pad3     [4]byte
 28060  	FpSchema         uintptr
 28061  	FxFreeSchema     uintptr
 28062  	Fmutex           uintptr
 28063  	FpHasContent     uintptr
 28064  	FnRef            int32
 28065  	F__ccgo_pad4     [4]byte
 28066  	FpNext           uintptr
 28067  	FpLock           uintptr
 28068  	FpWriter         uintptr
 28069  	FpTmpSpace       uintptr
 28070  	FnPreformatSize  int32
 28071  	F__ccgo_pad5     [4]byte
 28072  }
 28073  
 28074  type BtreePayload1 = struct {
 28075  	FpKey        uintptr
 28076  	FnKey        sqlite3_int64
 28077  	FpData       uintptr
 28078  	FaMem        uintptr
 28079  	FnMem        u16
 28080  	F__ccgo_pad1 [2]byte
 28081  	FnData       int32
 28082  	FnZero       int32
 28083  	F__ccgo_pad2 [4]byte
 28084  }
 28085  
 28086  type BtreePayload = BtreePayload1
 28087  
 28088  type Vdbe1 = struct {
 28089  	Fdb                 uintptr
 28090  	FpPrev              uintptr
 28091  	FpNext              uintptr
 28092  	FpParse             uintptr
 28093  	FnVar               ynVar
 28094  	F__ccgo_pad1        [2]byte
 28095  	FnMem               int32
 28096  	FnCursor            int32
 28097  	FcacheCtr           u32
 28098  	Fpc                 int32
 28099  	Frc                 int32
 28100  	FnChange            i64
 28101  	FiStatement         int32
 28102  	F__ccgo_pad2        [4]byte
 28103  	FiCurrentTime       i64
 28104  	FnFkConstraint      i64
 28105  	FnStmtDefCons       i64
 28106  	FnStmtDefImmCons    i64
 28107  	FaMem               uintptr
 28108  	FapArg              uintptr
 28109  	FapCsr              uintptr
 28110  	FaVar               uintptr
 28111  	FaOp                uintptr
 28112  	FnOp                int32
 28113  	FnOpAlloc           int32
 28114  	FaColName           uintptr
 28115  	FpResultSet         uintptr
 28116  	FzErrMsg            uintptr
 28117  	FpVList             uintptr
 28118  	FstartTime          i64
 28119  	FnResColumn         u16
 28120  	FerrorAction        u8
 28121  	FminWriteFileFormat u8
 28122  	FprepFlags          u8
 28123  	FeVdbeState         u8
 28124  	F__ccgo_pad3        [2]byte
 28125  	Fexpired            uint8
 28126  	F__ccgo_pad4        [3]byte
 28127  	FbtreeMask          yDbMask
 28128  	FlockMask           yDbMask
 28129  	FaCounter           [9]u32
 28130  	FzSql               uintptr
 28131  	FpFree              uintptr
 28132  	FpFrame             uintptr
 28133  	FpDelFrame          uintptr
 28134  	FnFrame             int32
 28135  	Fexpmask            u32
 28136  	FpProgram           uintptr
 28137  	FpAuxData           uintptr
 28138  }
 28139  
 28140  type SubProgram1 = struct {
 28141  	FaOp         uintptr
 28142  	FnOp         int32
 28143  	FnMem        int32
 28144  	FnCsr        int32
 28145  	F__ccgo_pad1 [4]byte
 28146  	FaOnce       uintptr
 28147  	Ftoken       uintptr
 28148  	FpNext       uintptr
 28149  }
 28150  
 28151  type SubProgram = SubProgram1
 28152  
 28153  type VdbeOp1 = struct {
 28154  	Fopcode u8
 28155  	Fp4type int8
 28156  	Fp5     u16
 28157  	Fp1     int32
 28158  	Fp2     int32
 28159  	Fp3     int32
 28160  	Fp4     struct {
 28161  		F__ccgo_pad1 [0]uint64
 28162  		Fi           int32
 28163  		F__ccgo_pad2 [4]byte
 28164  	}
 28165  	FzComment uintptr
 28166  }
 28167  
 28168  type p4union = struct {
 28169  	F__ccgo_pad1 [0]uint64
 28170  	Fi           int32
 28171  	F__ccgo_pad2 [4]byte
 28172  }
 28173  
 28174  type VdbeOp = VdbeOp1
 28175  
 28176  type VdbeOpList1 = struct {
 28177  	Fopcode u8
 28178  	Fp1     int8
 28179  	Fp2     int8
 28180  	Fp3     int8
 28181  }
 28182  
 28183  type VdbeOpList = VdbeOpList1
 28184  
 28185  type RecordCompare = uintptr
 28186  
 28187  type PgHdr = PgHdr1
 28188  
 28189  type sqlite3_xauth = uintptr
 28190  
 28191  type sqlite3InitInfo = struct {
 28192  	FnewTnum       Pgno
 28193  	FiDb           u8
 28194  	Fbusy          u8
 28195  	F__ccgo_pad1   [2]byte
 28196  	ForphanTrigger uint8
 28197  	F__ccgo_pad2   [7]byte
 28198  	FazInit        uintptr
 28199  }
 28200  
 28201  type sColMap = struct {
 28202  	FiFrom       int32
 28203  	F__ccgo_pad1 [4]byte
 28204  	FzCol        uintptr
 28205  }
 28206  
 28207  type AggInfo_col = struct {
 28208  	FpTab          uintptr
 28209  	FpCExpr        uintptr
 28210  	FiTable        int32
 28211  	FiMem          int32
 28212  	FiColumn       i16
 28213  	FiSorterColumn i16
 28214  	F__ccgo_pad1   [4]byte
 28215  }
 28216  
 28217  type AggInfo_func = struct {
 28218  	FpFExpr      uintptr
 28219  	FpFunc       uintptr
 28220  	FiMem        int32
 28221  	FiDistinct   int32
 28222  	FiDistAddr   int32
 28223  	F__ccgo_pad1 [4]byte
 28224  }
 28225  
 28226  type ynVar = i16
 28227  
 28228  type ExprList_item = struct {
 28229  	FpExpr  uintptr
 28230  	FzEName uintptr
 28231  	Ffg     struct {
 28232  		F__ccgo_pad1 [0]uint32
 28233  		FsortFlags   u8
 28234  		F__ccgo_pad2 [3]byte
 28235  		FeEName      uint16
 28236  		F__ccgo_pad3 [2]byte
 28237  	}
 28238  	Fu struct {
 28239  		F__ccgo_pad1 [0]uint32
 28240  		Fx           struct {
 28241  			FiOrderByCol u16
 28242  			FiAlias      u16
 28243  		}
 28244  	}
 28245  	F__ccgo_pad1 [4]byte
 28246  }
 28247  
 28248  type IdList_item = struct {
 28249  	FzName uintptr
 28250  	Fu4    struct {
 28251  		F__ccgo_pad1 [0]uint64
 28252  		Fidx         int32
 28253  		F__ccgo_pad2 [4]byte
 28254  	}
 28255  }
 28256  
 28257  type yDbMask = uint32
 28258  
 28259  type InitData = struct {
 28260  	Fdb          uintptr
 28261  	FpzErrMsg    uintptr
 28262  	FiDb         int32
 28263  	Frc          int32
 28264  	FmInitFlags  u32
 28265  	FnInitRow    u32
 28266  	FmxPage      Pgno
 28267  	F__ccgo_pad1 [4]byte
 28268  }
 28269  
 28270  type Sqlite3Config = struct {
 28271  	FbMemstat            int32
 28272  	FbCoreMutex          u8
 28273  	FbFullMutex          u8
 28274  	FbOpenUri            u8
 28275  	FbUseCis             u8
 28276  	FbSmallMalloc        u8
 28277  	FbExtraSchemaChecks  u8
 28278  	F__ccgo_pad1         [2]byte
 28279  	FmxStrlen            int32
 28280  	FneverCorrupt        int32
 28281  	FszLookaside         int32
 28282  	FnLookaside          int32
 28283  	FnStmtSpill          int32
 28284  	Fm                   sqlite3_mem_methods
 28285  	Fmutex               sqlite3_mutex_methods
 28286  	Fpcache2             sqlite3_pcache_methods2
 28287  	FpHeap               uintptr
 28288  	FnHeap               int32
 28289  	FmnReq               int32
 28290  	FmxReq               int32
 28291  	F__ccgo_pad2         [4]byte
 28292  	FszMmap              sqlite3_int64
 28293  	FmxMmap              sqlite3_int64
 28294  	FpPage               uintptr
 28295  	FszPage              int32
 28296  	FnPage               int32
 28297  	FmxParserStack       int32
 28298  	FsharedCacheEnabled  int32
 28299  	FszPma               u32
 28300  	FisInit              int32
 28301  	FinProgress          int32
 28302  	FisMutexInit         int32
 28303  	FisMallocInit        int32
 28304  	FisPCacheInit        int32
 28305  	FnRefInitMutex       int32
 28306  	F__ccgo_pad3         [4]byte
 28307  	FpInitMutex          uintptr
 28308  	FxLog                uintptr
 28309  	FpLogArg             uintptr
 28310  	FmxMemdbSize         sqlite3_int64
 28311  	FxTestCallback       uintptr
 28312  	FbLocaltimeFault     int32
 28313  	F__ccgo_pad4         [4]byte
 28314  	FxAltLocaltime       uintptr
 28315  	FiOnceResetThreshold int32
 28316  	FszSorterRef         u32
 28317  	FiPrngSeed           uint32
 28318  	F__ccgo_pad5         [4]byte
 28319  }
 28320  
 28321  type BoxGeomCtx1 = struct {
 28322  	Finterp  uintptr
 28323  	FpScript uintptr
 28324  }
 28325  
 28326  type BoxGeomCtx = BoxGeomCtx1
 28327  
 28328  type BoxQueryCtx1 = struct {
 28329  	Finterp  uintptr
 28330  	FpScript uintptr
 28331  }
 28332  
 28333  type BoxQueryCtx = BoxQueryCtx1
 28334  
 28335  func testDelUser(tls *libc.TLS, pCtx uintptr) {
 28336  	var p uintptr = pCtx
 28337  	tcl.XTcl_EvalObjEx(tls, (*BoxGeomCtx)(unsafe.Pointer(p)).Finterp, (*BoxGeomCtx)(unsafe.Pointer(p)).FpScript, 0)
 28338  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 28339  		if libc.PreDecInt32(&(*Tcl_Obj)(unsafe.Pointer((*BoxGeomCtx)(unsafe.Pointer(p)).FpScript)).FrefCount, 1) <= 0 {
 28340  			tcl.XTclFreeObj(tls, (*BoxGeomCtx)(unsafe.Pointer(p)).FpScript)
 28341  		}
 28342  	}
 28343  	sqlite3.Xsqlite3_free(tls, p)
 28344  }
 28345  
 28346  func invokeTclGeomCb(tls *libc.TLS, zName uintptr, p uintptr, nCoord int32, aCoord uintptr) int32 {
 28347  	bp := tls.Alloc(96)
 28348  	defer tls.Free(96)
 28349  
 28350  	var rc int32 = SQLITE_OK
 28351  	if (*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FpContext != 0 {
 28352  		var pCtx uintptr = (*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FpContext
 28353  		var interp uintptr = (*BoxGeomCtx)(unsafe.Pointer(pCtx)).Finterp
 28354  		var pScript uintptr = uintptr(0)
 28355  		var pParam uintptr = uintptr(0)
 28356  		var pCoord uintptr = uintptr(0)
 28357  		var ii int32
 28358  		var pRes uintptr
 28359  
 28360  		pScript = tcl.XTcl_DuplicateObj(tls, (*BoxGeomCtx)(unsafe.Pointer(pCtx)).FpScript)
 28361  		(*Tcl_Obj)(unsafe.Pointer(pScript)).FrefCount++
 28362  		tcl.XTcl_ListObjAppendElement(tls, interp, pScript, tcl.XTcl_NewStringObj(tls, zName, -1))
 28363  
 28364  		sqlite3.Xsqlite3_snprintf(tls, int32(uint64(unsafe.Sizeof([64]int8{}))-uint64(1)), bp+16, ts+9889, libc.VaList(bp, (*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FpContext))
 28365  		tcl.XTcl_ListObjAppendElement(tls, interp, pScript, tcl.XTcl_NewStringObj(tls, bp+16, -1))
 28366  
 28367  		pParam = tcl.XTcl_NewObj(tls)
 28368  		for ii = 0; ii < (*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FnParam; ii++ {
 28369  			tcl.XTcl_ListObjAppendElement(tls,
 28370  				interp, pParam, tcl.XTcl_NewDoubleObj(tls, *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FaParam + uintptr(ii)*8))))
 28371  		}
 28372  		tcl.XTcl_ListObjAppendElement(tls, interp, pScript, pParam)
 28373  
 28374  		pCoord = tcl.XTcl_NewObj(tls)
 28375  		for ii = 0; ii < nCoord; ii++ {
 28376  			tcl.XTcl_ListObjAppendElement(tls, interp, pCoord, tcl.XTcl_NewDoubleObj(tls, *(*sqlite3_rtree_dbl)(unsafe.Pointer(aCoord + uintptr(ii)*8))))
 28377  		}
 28378  		tcl.XTcl_ListObjAppendElement(tls, interp, pScript, pCoord)
 28379  
 28380  		sqlite3.Xsqlite3_snprintf(tls, int32(uint64(unsafe.Sizeof([64]int8{}))-uint64(1)), bp+16, ts+9889, libc.VaList(bp+8, p))
 28381  		tcl.XTcl_ListObjAppendElement(tls, interp, pScript, tcl.XTcl_NewStringObj(tls, bp+16, -1))
 28382  
 28383  		rc = tcl.XTcl_EvalObjEx(tls, interp, pScript, 0)
 28384  		if rc != TCL_OK {
 28385  			rc = SQLITE_ERROR
 28386  		} else {
 28387  			*(*int32)(unsafe.Pointer(bp + 80)) = 0
 28388  			*(*uintptr)(unsafe.Pointer(bp + 88)) = uintptr(0)
 28389  
 28390  			pRes = tcl.XTcl_GetObjResult(tls, interp)
 28391  			if tcl.XTcl_ListObjGetElements(tls, interp, pRes, bp+80, bp+88) != 0 {
 28392  				return TCL_ERROR
 28393  			}
 28394  			if *(*int32)(unsafe.Pointer(bp + 80)) > 0 {
 28395  				var zCmd uintptr = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 88)))))
 28396  				if 0 == sqlite3.Xsqlite3_stricmp(tls, zCmd, ts+9892) {
 28397  					*(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FaParam)) = 0.0
 28398  					(*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FnParam = 1
 28399  				} else if 0 == sqlite3.Xsqlite3_stricmp(tls, zCmd, ts+9897) {
 28400  					if (*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FpUser != 0 || (*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FxDelUser != 0 {
 28401  						rc = SQLITE_ERROR
 28402  					} else {
 28403  						var pBGCtx uintptr = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(BoxGeomCtx{})))
 28404  						if pBGCtx == uintptr(0) {
 28405  							rc = SQLITE_NOMEM
 28406  						} else {
 28407  							(*BoxGeomCtx)(unsafe.Pointer(pBGCtx)).Finterp = interp
 28408  							(*BoxGeomCtx)(unsafe.Pointer(pBGCtx)).FpScript = tcl.XTcl_DuplicateObj(tls, pRes)
 28409  							(*Tcl_Obj)(unsafe.Pointer((*BoxGeomCtx)(unsafe.Pointer(pBGCtx)).FpScript)).FrefCount++
 28410  							tcl.XTcl_ListObjReplace(tls, interp, (*BoxGeomCtx)(unsafe.Pointer(pBGCtx)).FpScript, 0, 1, 0, uintptr(0))
 28411  							(*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FpUser = pBGCtx
 28412  							(*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FxDelUser = *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{testDelUser}))
 28413  						}
 28414  					}
 28415  				} else if 0 == sqlite3.Xsqlite3_stricmp(tls, zCmd, ts+9902) {
 28416  					if (*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FpUser != 0 || (*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FxDelUser != 0 {
 28417  						rc = SQLITE_ERROR
 28418  					}
 28419  				}
 28420  			}
 28421  		}
 28422  	}
 28423  	return rc
 28424  }
 28425  
 28426  func box_geom(tls *libc.TLS, p uintptr, nCoord int32, aCoord uintptr, pRes uintptr) int32 {
 28427  	var ii int32
 28428  
 28429  	if (*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FnParam != nCoord {
 28430  		invokeTclGeomCb(tls, ts+9915, p, nCoord, aCoord)
 28431  		return SQLITE_ERROR
 28432  	}
 28433  	if invokeTclGeomCb(tls, ts+9915, p, nCoord, aCoord) != 0 {
 28434  		return SQLITE_ERROR
 28435  	}
 28436  
 28437  	for ii = 0; ii < nCoord; ii = ii + 2 {
 28438  		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)) {
 28439  			*(*int32)(unsafe.Pointer(pRes)) = 0
 28440  			return SQLITE_OK
 28441  		}
 28442  	}
 28443  
 28444  	*(*int32)(unsafe.Pointer(pRes)) = 1
 28445  
 28446  	return SQLITE_OK
 28447  }
 28448  
 28449  func register_box_geom(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 28450  	bp := tls.Alloc(80)
 28451  	defer tls.Free(80)
 28452  
 28453  	var pCtx uintptr
 28454  
 28455  	if objc != 3 {
 28456  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+9919)
 28457  		return TCL_ERROR
 28458  	}
 28459  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+8) != 0 {
 28460  		return TCL_ERROR
 28461  	}
 28462  
 28463  	pCtx = tcl.XTcl_Alloc(tls, uint32(unsafe.Sizeof(uintptr(0))))
 28464  	(*BoxGeomCtx)(unsafe.Pointer(pCtx)).Finterp = interp
 28465  	(*BoxGeomCtx)(unsafe.Pointer(pCtx)).FpScript = tcl.XTcl_DuplicateObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 28466  	(*Tcl_Obj)(unsafe.Pointer((*BoxGeomCtx)(unsafe.Pointer(pCtx)).FpScript)).FrefCount++
 28467  
 28468  	sqlite3.Xsqlite3_rtree_geometry_callback(tls, *(*uintptr)(unsafe.Pointer(bp + 8)), ts+9915, *(*uintptr)(unsafe.Pointer(&struct {
 28469  		f func(*libc.TLS, uintptr, int32, uintptr, uintptr) int32
 28470  	}{box_geom})), pCtx)
 28471  
 28472  	sqlite3.Xsqlite3_snprintf(tls, 64, bp+16, ts+9889, libc.VaList(bp, pCtx))
 28473  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, bp+16, -1))
 28474  	return TCL_OK
 28475  }
 28476  
 28477  func box_query(tls *libc.TLS, pInfo uintptr) int32 {
 28478  	bp := tls.Alloc(60)
 28479  	defer tls.Free(60)
 28480  
 28481  	*(*[4]uintptr)(unsafe.Pointer(bp)) = [4]uintptr{ts + 5854, ts + 9929, ts + 9936, uintptr(0)}
 28482  	var pCtx uintptr = (*sqlite3_rtree_query_info)(unsafe.Pointer(pInfo)).FpContext
 28483  	var interp uintptr = (*BoxQueryCtx)(unsafe.Pointer(pCtx)).Finterp
 28484  	var pEval uintptr
 28485  	var pArg uintptr
 28486  	var pTmp uintptr = uintptr(0)
 28487  	var rc int32
 28488  	var ii int32
 28489  
 28490  	pEval = tcl.XTcl_DuplicateObj(tls, (*BoxQueryCtx)(unsafe.Pointer(pCtx)).FpScript)
 28491  	(*Tcl_Obj)(unsafe.Pointer(pEval)).FrefCount++
 28492  	pArg = tcl.XTcl_NewObj(tls)
 28493  	(*Tcl_Obj)(unsafe.Pointer(pArg)).FrefCount++
 28494  
 28495  	pTmp = tcl.XTcl_NewObj(tls)
 28496  	(*Tcl_Obj)(unsafe.Pointer(pTmp)).FrefCount++
 28497  	for ii = 0; ii < (*sqlite3_rtree_query_info)(unsafe.Pointer(pInfo)).FnParam; ii++ {
 28498  		var p uintptr = tcl.XTcl_NewDoubleObj(tls, *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_query_info)(unsafe.Pointer(pInfo)).FaParam + uintptr(ii)*8)))
 28499  		tcl.XTcl_ListObjAppendElement(tls, interp, pTmp, p)
 28500  	}
 28501  	tcl.XTcl_ListObjAppendElement(tls, interp, pArg, tcl.XTcl_NewStringObj(tls, ts+9942, -1))
 28502  	tcl.XTcl_ListObjAppendElement(tls, interp, pArg, pTmp)
 28503  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 28504  		if libc.PreDecInt32(&(*Tcl_Obj)(unsafe.Pointer(pTmp)).FrefCount, 1) <= 0 {
 28505  			tcl.XTclFreeObj(tls, pTmp)
 28506  		}
 28507  	}
 28508  
 28509  	pTmp = tcl.XTcl_NewObj(tls)
 28510  	(*Tcl_Obj)(unsafe.Pointer(pTmp)).FrefCount++
 28511  	for ii = 0; ii < (*sqlite3_rtree_query_info)(unsafe.Pointer(pInfo)).FnCoord; ii++ {
 28512  		var p uintptr = tcl.XTcl_NewDoubleObj(tls, *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_query_info)(unsafe.Pointer(pInfo)).FaCoord + uintptr(ii)*8)))
 28513  		tcl.XTcl_ListObjAppendElement(tls, interp, pTmp, p)
 28514  	}
 28515  	tcl.XTcl_ListObjAppendElement(tls, interp, pArg, tcl.XTcl_NewStringObj(tls, ts+9949, -1))
 28516  	tcl.XTcl_ListObjAppendElement(tls, interp, pArg, pTmp)
 28517  	for __ccgo1 := true; __ccgo1; __ccgo1 = 0 != 0 {
 28518  		if libc.PreDecInt32(&(*Tcl_Obj)(unsafe.Pointer(pTmp)).FrefCount, 1) <= 0 {
 28519  			tcl.XTclFreeObj(tls, pTmp)
 28520  		}
 28521  	}
 28522  
 28523  	pTmp = tcl.XTcl_NewObj(tls)
 28524  	(*Tcl_Obj)(unsafe.Pointer(pTmp)).FrefCount++
 28525  	for ii = 0; ii <= (*sqlite3_rtree_query_info)(unsafe.Pointer(pInfo)).FmxLevel; ii++ {
 28526  		var p uintptr = tcl.XTcl_NewIntObj(tls, int32(*(*uint32)(unsafe.Pointer((*sqlite3_rtree_query_info)(unsafe.Pointer(pInfo)).FanQueue + uintptr(ii)*4))))
 28527  		tcl.XTcl_ListObjAppendElement(tls, interp, pTmp, p)
 28528  	}
 28529  	tcl.XTcl_ListObjAppendElement(tls, interp, pArg, tcl.XTcl_NewStringObj(tls, ts+9956, -1))
 28530  	tcl.XTcl_ListObjAppendElement(tls, interp, pArg, pTmp)
 28531  	for __ccgo2 := true; __ccgo2; __ccgo2 = 0 != 0 {
 28532  		if libc.PreDecInt32(&(*Tcl_Obj)(unsafe.Pointer(pTmp)).FrefCount, 1) <= 0 {
 28533  			tcl.XTclFreeObj(tls, pTmp)
 28534  		}
 28535  	}
 28536  
 28537  	tcl.XTcl_ListObjAppendElement(tls, interp, pArg, tcl.XTcl_NewStringObj(tls, ts+9964, -1))
 28538  	tcl.XTcl_ListObjAppendElement(tls, interp, pArg, tcl.XTcl_NewIntObj(tls, (*sqlite3_rtree_query_info)(unsafe.Pointer(pInfo)).FiLevel))
 28539  
 28540  	tcl.XTcl_ListObjAppendElement(tls, interp, pArg, tcl.XTcl_NewStringObj(tls, ts+9971, -1))
 28541  	tcl.XTcl_ListObjAppendElement(tls, interp, pArg, tcl.XTcl_NewIntObj(tls, (*sqlite3_rtree_query_info)(unsafe.Pointer(pInfo)).FmxLevel))
 28542  
 28543  	tcl.XTcl_ListObjAppendElement(tls, interp, pArg, tcl.XTcl_NewStringObj(tls, ts+9979, -1))
 28544  	tcl.XTcl_ListObjAppendElement(tls, interp, pArg, tcl.XTcl_NewWideIntObj(tls, (*sqlite3_rtree_query_info)(unsafe.Pointer(pInfo)).FiRowid))
 28545  
 28546  	tcl.XTcl_ListObjAppendElement(tls, interp, pArg, tcl.XTcl_NewStringObj(tls, ts+9986, -1))
 28547  	tcl.XTcl_ListObjAppendElement(tls, interp, pArg, tcl.XTcl_NewDoubleObj(tls, (*sqlite3_rtree_query_info)(unsafe.Pointer(pInfo)).FrParentScore))
 28548  
 28549  	tcl.XTcl_ListObjAppendElement(tls, interp, pArg, tcl.XTcl_NewStringObj(tls, ts+9999, -1))
 28550  	tcl.XTcl_ListObjAppendElement(tls, interp, pArg,
 28551  		tcl.XTcl_NewStringObj(tls, *(*uintptr)(unsafe.Pointer(bp + uintptr((*sqlite3_rtree_query_info)(unsafe.Pointer(pInfo)).FeParentWithin)*8)), -1))
 28552  
 28553  	tcl.XTcl_ListObjAppendElement(tls, interp, pEval, pArg)
 28554  	if tcl.XTcl_EvalObjEx(tls, interp, pEval, 0) != 0 {
 28555  		rc = SQLITE_ERROR
 28556  	} else {
 28557  		rc = SQLITE_OK
 28558  	}
 28559  
 28560  	if rc == SQLITE_OK {
 28561  		*(*float64)(unsafe.Pointer(bp + 48)) = 0.0
 28562  		*(*int32)(unsafe.Pointer(bp + 32)) = 0
 28563  		*(*int32)(unsafe.Pointer(bp + 56)) = 0
 28564  		*(*uintptr)(unsafe.Pointer(bp + 40)) = uintptr(0)
 28565  		var pRes uintptr = tcl.XTcl_GetObjResult(tls, interp)
 28566  
 28567  		if tcl.XTcl_ListObjGetElements(tls, interp, pRes, bp+32, bp+40) != 0 ||
 28568  			*(*int32)(unsafe.Pointer(bp + 32)) != 2 ||
 28569  			tcl.XTcl_GetDoubleFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 40)) + 1*8)), bp+48) != 0 ||
 28570  			tcl.XTcl_GetIndexFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 40)))), bp, ts+10013, 0, bp+56) != 0 {
 28571  			rc = SQLITE_ERROR
 28572  		} else {
 28573  			(*sqlite3_rtree_query_info)(unsafe.Pointer(pInfo)).FrScore = *(*float64)(unsafe.Pointer(bp + 48))
 28574  			(*sqlite3_rtree_query_info)(unsafe.Pointer(pInfo)).FeParentWithin = *(*int32)(unsafe.Pointer(bp + 56))
 28575  		}
 28576  	}
 28577  
 28578  	for __ccgo3 := true; __ccgo3; __ccgo3 = 0 != 0 {
 28579  		if libc.PreDecInt32(&(*Tcl_Obj)(unsafe.Pointer(pArg)).FrefCount, 1) <= 0 {
 28580  			tcl.XTclFreeObj(tls, pArg)
 28581  		}
 28582  	}
 28583  	for __ccgo4 := true; __ccgo4; __ccgo4 = 0 != 0 {
 28584  		if libc.PreDecInt32(&(*Tcl_Obj)(unsafe.Pointer(pEval)).FrefCount, 1) <= 0 {
 28585  			tcl.XTclFreeObj(tls, pEval)
 28586  		}
 28587  	}
 28588  	return rc
 28589  }
 28590  
 28591  func box_query_destroy(tls *libc.TLS, p uintptr) {
 28592  	var pCtx uintptr = p
 28593  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 28594  		if libc.PreDecInt32(&(*Tcl_Obj)(unsafe.Pointer((*BoxQueryCtx)(unsafe.Pointer(pCtx)).FpScript)).FrefCount, 1) <= 0 {
 28595  			tcl.XTclFreeObj(tls, (*BoxQueryCtx)(unsafe.Pointer(pCtx)).FpScript)
 28596  		}
 28597  	}
 28598  	tcl.XTcl_Free(tls, pCtx)
 28599  }
 28600  
 28601  func register_box_query(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 28602  	bp := tls.Alloc(8)
 28603  	defer tls.Free(8)
 28604  
 28605  	var pCtx uintptr
 28606  
 28607  	if objc != 3 {
 28608  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+9919)
 28609  		return TCL_ERROR
 28610  	}
 28611  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 28612  		return TCL_ERROR
 28613  	}
 28614  
 28615  	pCtx = tcl.XTcl_Alloc(tls, uint32(unsafe.Sizeof(BoxQueryCtx{})))
 28616  	(*BoxQueryCtx)(unsafe.Pointer(pCtx)).Finterp = interp
 28617  	(*BoxQueryCtx)(unsafe.Pointer(pCtx)).FpScript = tcl.XTcl_DuplicateObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 28618  	(*Tcl_Obj)(unsafe.Pointer((*BoxQueryCtx)(unsafe.Pointer(pCtx)).FpScript)).FrefCount++
 28619  
 28620  	sqlite3.Xsqlite3_rtree_query_callback(tls,
 28621  		*(*uintptr)(unsafe.Pointer(bp)), ts+10019, *(*uintptr)(unsafe.Pointer(&struct {
 28622  			f func(*libc.TLS, uintptr) int32
 28623  		}{box_query})), pCtx, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{box_query_destroy})))
 28624  
 28625  	tcl.XTcl_ResetResult(tls, interp)
 28626  	return TCL_OK
 28627  }
 28628  
 28629  func Sqlitetestrtreedoc_Init(tls *libc.TLS, interp uintptr) int32 {
 28630  	tcl.XTcl_CreateObjCommand(tls, interp, ts+10024, *(*uintptr)(unsafe.Pointer(&struct {
 28631  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 28632  	}{register_box_geom})), uintptr(0), uintptr(0))
 28633  	tcl.XTcl_CreateObjCommand(tls, interp, ts+10042, *(*uintptr)(unsafe.Pointer(&struct {
 28634  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 28635  	}{register_box_query})), uintptr(0), uintptr(0))
 28636  	return TCL_OK
 28637  }
 28638  
 28639  type TestSession1 = struct {
 28640  	FpSession      uintptr
 28641  	Finterp        uintptr
 28642  	FpFilterScript uintptr
 28643  }
 28644  
 28645  type TestSession = TestSession1
 28646  
 28647  type TestStreamInput1 = struct {
 28648  	FnStream     int32
 28649  	F__ccgo_pad1 [4]byte
 28650  	FaData       uintptr
 28651  	FnData       int32
 28652  	FiData       int32
 28653  }
 28654  
 28655  type TestStreamInput = TestStreamInput1
 28656  
 28657  func dbHandleFromObj1(tls *libc.TLS, interp uintptr, pObj uintptr, pDb uintptr) int32 {
 28658  	bp := tls.Alloc(88)
 28659  	defer tls.Free(88)
 28660  
 28661  	if 0 == tcl.XTcl_GetCommandInfo(tls, interp, tcl.XTcl_GetString(tls, pObj), bp+24) {
 28662  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+1930, tcl.XTcl_GetString(tls, pObj), 0))
 28663  		return TCL_ERROR
 28664  	}
 28665  
 28666  	*(*uintptr)(unsafe.Pointer(pDb)) = *(*uintptr)(unsafe.Pointer((*Tcl_CmdInfo)(unsafe.Pointer(bp + 24)).FobjClientData))
 28667  	return TCL_OK
 28668  }
 28669  
 28670  func sql_exec_changeset(tls *libc.TLS, db uintptr, zSql uintptr, pnChangeset uintptr, ppChangeset uintptr) int32 {
 28671  	bp := tls.Alloc(8)
 28672  	defer tls.Free(8)
 28673  
 28674  	*(*uintptr)(unsafe.Pointer(bp)) = uintptr(0)
 28675  	var rc int32
 28676  
 28677  	rc = sqlite3.Xsqlite3session_create(tls, db, ts+85, bp)
 28678  
 28679  	if rc == SQLITE_OK {
 28680  		rc = sqlite3.Xsqlite3session_attach(tls, *(*uintptr)(unsafe.Pointer(bp)), uintptr(0))
 28681  	}
 28682  
 28683  	if rc == SQLITE_OK {
 28684  		rc = sqlite3.Xsqlite3_exec(tls, db, zSql, uintptr(0), uintptr(0), uintptr(0))
 28685  	}
 28686  
 28687  	if rc == SQLITE_OK {
 28688  		rc = sqlite3.Xsqlite3session_changeset(tls, *(*uintptr)(unsafe.Pointer(bp)), pnChangeset, ppChangeset)
 28689  	}
 28690  
 28691  	sqlite3.Xsqlite3session_delete(tls, *(*uintptr)(unsafe.Pointer(bp)))
 28692  
 28693  	return rc
 28694  }
 28695  
 28696  func test_sql_exec_changeset(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 28697  	bp := tls.Alloc(40)
 28698  	defer tls.Free(40)
 28699  
 28700  	var zSql uintptr
 28701  
 28702  	var rc int32
 28703  
 28704  	if objc != 3 {
 28705  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+10061)
 28706  		return TCL_ERROR
 28707  	}
 28708  	if dbHandleFromObj1(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp+16) != 0 {
 28709  		return TCL_ERROR
 28710  	}
 28711  	zSql = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 28712  
 28713  	rc = sql_exec_changeset(tls, *(*uintptr)(unsafe.Pointer(bp + 16)), zSql, bp+24, bp+32)
 28714  	if rc != SQLITE_OK {
 28715  		tcl.XTcl_ResetResult(tls, interp)
 28716  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+10068, 0))
 28717  		return TCL_ERROR
 28718  	}
 28719  
 28720  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewByteArrayObj(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), *(*int32)(unsafe.Pointer(bp + 24))))
 28721  	sqlite3.Xsqlite3_free(tls, *(*uintptr)(unsafe.Pointer(bp + 32)))
 28722  	return TCL_OK
 28723  }
 28724  
 28725  func test_tcl_integer(tls *libc.TLS, interp uintptr, zVar uintptr) int32 {
 28726  	bp := tls.Alloc(4)
 28727  	defer tls.Free(4)
 28728  
 28729  	var pObj uintptr
 28730  	*(*int32)(unsafe.Pointer(bp)) = 0
 28731  	var pName uintptr = tcl.XTcl_NewStringObj(tls, zVar, -1)
 28732  	(*Tcl_Obj)(unsafe.Pointer(pName)).FrefCount++
 28733  	pObj = tcl.XTcl_ObjGetVar2(tls, interp, pName, uintptr(0), TCL_GLOBAL_ONLY)
 28734  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 28735  		if libc.PreDecInt32(&(*Tcl_Obj)(unsafe.Pointer(pName)).FrefCount, 1) <= 0 {
 28736  			tcl.XTclFreeObj(tls, pName)
 28737  		}
 28738  	}
 28739  	if pObj != 0 {
 28740  		tcl.XTcl_GetIntFromObj(tls, uintptr(0), pObj, bp)
 28741  	}
 28742  	return *(*int32)(unsafe.Pointer(bp))
 28743  }
 28744  
 28745  func test_session_error(tls *libc.TLS, interp uintptr, rc int32, zErr uintptr) int32 {
 28746  	bp := tls.Alloc(24)
 28747  	defer tls.Free(24)
 28748  
 28749  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3ErrName(tls, rc), -1))
 28750  	if zErr != 0 {
 28751  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+9645, zErr, 0))
 28752  		sqlite3.Xsqlite3_free(tls, zErr)
 28753  	}
 28754  	return TCL_ERROR
 28755  }
 28756  
 28757  func test_table_filter(tls *libc.TLS, pCtx uintptr, zTbl uintptr) int32 {
 28758  	bp := tls.Alloc(4)
 28759  	defer tls.Free(4)
 28760  
 28761  	var p uintptr = pCtx
 28762  	var pEval uintptr
 28763  	var rc int32
 28764  	*(*int32)(unsafe.Pointer(bp)) = 0
 28765  
 28766  	pEval = tcl.XTcl_DuplicateObj(tls, (*TestSession)(unsafe.Pointer(p)).FpFilterScript)
 28767  	(*Tcl_Obj)(unsafe.Pointer(pEval)).FrefCount++
 28768  	rc = tcl.XTcl_ListObjAppendElement(tls, (*TestSession)(unsafe.Pointer(p)).Finterp, pEval, tcl.XTcl_NewStringObj(tls, zTbl, -1))
 28769  	if rc == TCL_OK {
 28770  		rc = tcl.XTcl_EvalObjEx(tls, (*TestSession)(unsafe.Pointer(p)).Finterp, pEval, TCL_EVAL_GLOBAL)
 28771  	}
 28772  	if rc == TCL_OK {
 28773  		rc = tcl.XTcl_GetBooleanFromObj(tls, (*TestSession)(unsafe.Pointer(p)).Finterp, tcl.XTcl_GetObjResult(tls, (*TestSession)(unsafe.Pointer(p)).Finterp), bp)
 28774  	}
 28775  	if rc != TCL_OK {
 28776  		tcl.XTcl_BackgroundError(tls, (*TestSession)(unsafe.Pointer(p)).Finterp)
 28777  	}
 28778  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 28779  		if libc.PreDecInt32(&(*Tcl_Obj)(unsafe.Pointer(pEval)).FrefCount, 1) <= 0 {
 28780  			tcl.XTclFreeObj(tls, pEval)
 28781  		}
 28782  	}
 28783  
 28784  	return *(*int32)(unsafe.Pointer(bp))
 28785  }
 28786  
 28787  type TestSessionsBlob1 = struct {
 28788  	Fp           uintptr
 28789  	Fn           int32
 28790  	F__ccgo_pad1 [4]byte
 28791  }
 28792  
 28793  type TestSessionsBlob = TestSessionsBlob1
 28794  
 28795  func testStreamOutput(tls *libc.TLS, pCtx uintptr, pData uintptr, nData int32) int32 {
 28796  	var pBlob uintptr = pCtx
 28797  	var pNew uintptr
 28798  
 28799  	pNew = sqlite3.Xsqlite3_realloc(tls, (*TestSessionsBlob)(unsafe.Pointer(pBlob)).Fp, (*TestSessionsBlob)(unsafe.Pointer(pBlob)).Fn+nData)
 28800  	if pNew == uintptr(0) {
 28801  		return SQLITE_NOMEM
 28802  	}
 28803  	(*TestSessionsBlob)(unsafe.Pointer(pBlob)).Fp = pNew
 28804  	libc.X__builtin___memcpy_chk(tls, pNew+uintptr((*TestSessionsBlob)(unsafe.Pointer(pBlob)).Fn), pData, uint64(nData), libc.X__builtin_object_size(tls, pNew+uintptr((*TestSessionsBlob)(unsafe.Pointer(pBlob)).Fn), 0))
 28805  	*(*int32)(unsafe.Pointer(pBlob + 8)) += nData
 28806  	return SQLITE_OK
 28807  }
 28808  
 28809  func test_session_cmd(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 28810  	bp := tls.Alloc(44)
 28811  	defer tls.Free(44)
 28812  
 28813  	var p uintptr = clientData
 28814  	var pSession uintptr = (*TestSession)(unsafe.Pointer(p)).FpSession
 28815  
 28816  	var rc int32
 28817  
 28818  	if objc < 2 {
 28819  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+1999)
 28820  		return TCL_ERROR
 28821  	}
 28822  	rc = tcl.XTcl_GetIndexFromObjStruct(tls, interp,
 28823  		*(*uintptr)(unsafe.Pointer(objv + 1*8)), uintptr(unsafe.Pointer(&aSub)), int32(unsafe.Sizeof(SessionSubcmd{})), ts+2014, 0, bp)
 28824  	if rc != TCL_OK {
 28825  		return rc
 28826  	}
 28827  	if objc != 2+aSub[*(*int32)(unsafe.Pointer(bp))].FnArg {
 28828  		tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, aSub[*(*int32)(unsafe.Pointer(bp))].FzMsg)
 28829  		return TCL_ERROR
 28830  	}
 28831  
 28832  	switch *(*int32)(unsafe.Pointer(bp)) {
 28833  	case 0:
 28834  		{
 28835  			var zArg uintptr = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 28836  			if int32(*(*int8)(unsafe.Pointer(zArg))) == '*' && int32(*(*int8)(unsafe.Pointer(zArg + 1))) == 0 {
 28837  				zArg = uintptr(0)
 28838  			}
 28839  			rc = sqlite3.Xsqlite3session_attach(tls, pSession, zArg)
 28840  			if rc != SQLITE_OK {
 28841  				return test_session_error(tls, interp, rc, uintptr(0))
 28842  			}
 28843  			break
 28844  
 28845  		}
 28846  
 28847  	case 7:
 28848  		fallthrough
 28849  	case 1:
 28850  		{
 28851  			*(*TestSessionsBlob)(unsafe.Pointer(bp + 8)) = TestSessionsBlob{}
 28852  			if test_tcl_integer(tls, interp, ts+10098) != 0 {
 28853  				var pCtx uintptr = bp + 8
 28854  				if *(*int32)(unsafe.Pointer(bp)) == 7 {
 28855  					rc = sqlite3.Xsqlite3session_patchset_strm(tls, pSession, *(*uintptr)(unsafe.Pointer(&struct {
 28856  						f func(*libc.TLS, uintptr, uintptr, int32) int32
 28857  					}{testStreamOutput})), pCtx)
 28858  				} else {
 28859  					rc = sqlite3.Xsqlite3session_changeset_strm(tls, pSession, *(*uintptr)(unsafe.Pointer(&struct {
 28860  						f func(*libc.TLS, uintptr, uintptr, int32) int32
 28861  					}{testStreamOutput})), pCtx)
 28862  				}
 28863  			} else {
 28864  				if *(*int32)(unsafe.Pointer(bp)) == 7 {
 28865  					rc = sqlite3.Xsqlite3session_patchset(tls, pSession, bp+8+8, bp+8)
 28866  				} else {
 28867  					rc = sqlite3.Xsqlite3session_changeset(tls, pSession, bp+8+8, bp+8)
 28868  				}
 28869  			}
 28870  			if rc == SQLITE_OK {
 28871  				tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewByteArrayObj(tls, (*TestSessionsBlob)(unsafe.Pointer(bp+8)).Fp, (*TestSessionsBlob)(unsafe.Pointer(bp+8)).Fn))
 28872  			}
 28873  			sqlite3.Xsqlite3_free(tls, (*TestSessionsBlob)(unsafe.Pointer(bp+8)).Fp)
 28874  			if rc != SQLITE_OK {
 28875  				return test_session_error(tls, interp, rc, uintptr(0))
 28876  			}
 28877  			break
 28878  
 28879  		}
 28880  
 28881  	case 2:
 28882  		tcl.XTcl_DeleteCommand(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))))
 28883  		break
 28884  
 28885  	case 3:
 28886  		{
 28887  			if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+24) != 0 {
 28888  				return TCL_ERROR
 28889  			}
 28890  			*(*int32)(unsafe.Pointer(bp + 24)) = sqlite3.Xsqlite3session_enable(tls, pSession, *(*int32)(unsafe.Pointer(bp + 24)))
 28891  			tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewBooleanObj(tls, *(*int32)(unsafe.Pointer(bp + 24))))
 28892  			break
 28893  
 28894  		}
 28895  
 28896  	case 4:
 28897  		{
 28898  			if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+28) != 0 {
 28899  				return TCL_ERROR
 28900  			}
 28901  			*(*int32)(unsafe.Pointer(bp + 28)) = sqlite3.Xsqlite3session_indirect(tls, pSession, *(*int32)(unsafe.Pointer(bp + 28)))
 28902  			tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewBooleanObj(tls, *(*int32)(unsafe.Pointer(bp + 28))))
 28903  			break
 28904  
 28905  		}
 28906  
 28907  	case 5:
 28908  		{
 28909  			var val int32
 28910  			val = sqlite3.Xsqlite3session_isempty(tls, pSession)
 28911  			tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewBooleanObj(tls, val))
 28912  			break
 28913  
 28914  		}
 28915  
 28916  	case 6:
 28917  		{
 28918  			if (*TestSession)(unsafe.Pointer(p)).FpFilterScript != 0 {
 28919  				for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 28920  					if libc.PreDecInt32(&(*Tcl_Obj)(unsafe.Pointer((*TestSession)(unsafe.Pointer(p)).FpFilterScript)).FrefCount, 1) <= 0 {
 28921  						tcl.XTclFreeObj(tls, (*TestSession)(unsafe.Pointer(p)).FpFilterScript)
 28922  					}
 28923  				}
 28924  			}
 28925  			(*TestSession)(unsafe.Pointer(p)).Finterp = interp
 28926  			(*TestSession)(unsafe.Pointer(p)).FpFilterScript = tcl.XTcl_DuplicateObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 28927  			(*Tcl_Obj)(unsafe.Pointer((*TestSession)(unsafe.Pointer(p)).FpFilterScript)).FrefCount++
 28928  			sqlite3.Xsqlite3session_table_filter(tls, pSession, *(*uintptr)(unsafe.Pointer(&struct {
 28929  				f func(*libc.TLS, uintptr, uintptr) int32
 28930  			}{test_table_filter})), clientData)
 28931  			break
 28932  
 28933  		}
 28934  
 28935  	case 8:
 28936  		{
 28937  			*(*uintptr)(unsafe.Pointer(bp + 32)) = uintptr(0)
 28938  			rc = sqlite3.Xsqlite3session_diff(tls, pSession,
 28939  				tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8))),
 28940  				tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8))),
 28941  				bp+32)
 28942  
 28943  			if rc != 0 {
 28944  				return test_session_error(tls, interp, rc, *(*uintptr)(unsafe.Pointer(bp + 32)))
 28945  			}
 28946  			break
 28947  
 28948  		}
 28949  
 28950  	case 9:
 28951  		{
 28952  			var nMalloc sqlite3_int64 = sqlite3.Xsqlite3session_memory_used(tls, pSession)
 28953  			tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewWideIntObj(tls, nMalloc))
 28954  			break
 28955  
 28956  		}
 28957  
 28958  	case 10:
 28959  		{
 28960  			var nSize sqlite3_int64 = sqlite3.Xsqlite3session_changeset_size(tls, pSession)
 28961  			tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewWideIntObj(tls, nSize))
 28962  			break
 28963  
 28964  		}
 28965  	case 11:
 28966  		{
 28967  			var rc int32
 28968  
 28969  			if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+40) != 0 {
 28970  				return TCL_ERROR
 28971  			}
 28972  			rc = sqlite3.Xsqlite3session_object_config(tls,
 28973  				pSession, SQLITE_SESSION_OBJCONFIG_SIZE, bp+40)
 28974  			if rc != SQLITE_OK {
 28975  				tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3ErrName(tls, rc), -1))
 28976  			} else {
 28977  				tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 40))))
 28978  			}
 28979  			break
 28980  
 28981  		}
 28982  	}
 28983  
 28984  	return TCL_OK
 28985  }
 28986  
 28987  type SessionSubcmd = struct {
 28988  	FzSub        uintptr
 28989  	FnArg        int32
 28990  	F__ccgo_pad1 [4]byte
 28991  	FzMsg        uintptr
 28992  	FiSub        int32
 28993  	F__ccgo_pad2 [4]byte
 28994  }
 28995  
 28996  var aSub = [13]SessionSubcmd{
 28997  	{FzSub: ts + 10121, FnArg: 1, FzMsg: ts + 1951},
 28998  	{FzSub: ts + 10128, FzMsg: ts + 584},
 28999  	{FzSub: ts + 10138, FzMsg: ts + 584},
 29000  	{FzSub: ts + 10145, FnArg: 1, FzMsg: ts + 10152},
 29001  	{FzSub: ts + 10157, FnArg: 1, FzMsg: ts + 10152},
 29002  	{FzSub: ts + 10166, FzMsg: ts + 584},
 29003  	{FzSub: ts + 10174, FnArg: 1, FzMsg: ts + 10187},
 29004  	{FzSub: ts + 10194, FzMsg: ts + 584},
 29005  	{FzSub: ts + 10203, FnArg: 2, FzMsg: ts + 10208},
 29006  	{FzSub: ts + 10219, FzMsg: ts + 584},
 29007  	{FzSub: ts + 10231, FzMsg: ts + 584},
 29008  	{FzSub: ts + 10246, FnArg: 1, FzMsg: ts + 2413},
 29009  	{},
 29010  }
 29011  
 29012  func test_session_del(tls *libc.TLS, clientData uintptr) {
 29013  	var p uintptr = clientData
 29014  	if (*TestSession)(unsafe.Pointer(p)).FpFilterScript != 0 {
 29015  		for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 29016  			if libc.PreDecInt32(&(*Tcl_Obj)(unsafe.Pointer((*TestSession)(unsafe.Pointer(p)).FpFilterScript)).FrefCount, 1) <= 0 {
 29017  				tcl.XTclFreeObj(tls, (*TestSession)(unsafe.Pointer(p)).FpFilterScript)
 29018  			}
 29019  		}
 29020  	}
 29021  	sqlite3.Xsqlite3session_delete(tls, (*TestSession)(unsafe.Pointer(p)).FpSession)
 29022  	tcl.XTcl_Free(tls, p)
 29023  }
 29024  
 29025  func test_sqlite3session(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 29026  	bp := tls.Alloc(92)
 29027  	defer tls.Free(92)
 29028  
 29029  	var db uintptr
 29030  
 29031  	var rc int32
 29032  	var p uintptr
 29033  	*(*int32)(unsafe.Pointer(bp + 88)) = -1
 29034  
 29035  	if objc != 4 {
 29036  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+10265)
 29037  		return TCL_ERROR
 29038  	}
 29039  
 29040  	if 0 == tcl.XTcl_GetCommandInfo(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8))), bp+24) {
 29041  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+1930, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8))), 0))
 29042  		return TCL_ERROR
 29043  	}
 29044  	db = *(*uintptr)(unsafe.Pointer((*Tcl_CmdInfo)(unsafe.Pointer(bp + 24)).FobjClientData))
 29045  
 29046  	p = tcl.XTcl_Alloc(tls, uint32(unsafe.Sizeof(TestSession{})))
 29047  	libc.X__builtin___memset_chk(tls, p, 0, uint64(unsafe.Sizeof(TestSession{})), libc.X__builtin_object_size(tls, p, 0))
 29048  	rc = sqlite3.Xsqlite3session_create(tls, db, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8))), p)
 29049  	if rc != SQLITE_OK {
 29050  		tcl.XTcl_Free(tls, p)
 29051  		return test_session_error(tls, interp, rc, uintptr(0))
 29052  	}
 29053  
 29054  	sqlite3.Xsqlite3session_object_config(tls, (*TestSession)(unsafe.Pointer(p)).FpSession, SQLITE_SESSION_OBJCONFIG_SIZE, bp+88)
 29055  
 29056  	*(*int32)(unsafe.Pointer(bp + 88)) = 1
 29057  	sqlite3.Xsqlite3session_object_config(tls, (*TestSession)(unsafe.Pointer(p)).FpSession, SQLITE_SESSION_OBJCONFIG_SIZE, bp+88)
 29058  
 29059  	tcl.XTcl_CreateObjCommand(tls,
 29060  		interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), *(*uintptr)(unsafe.Pointer(&struct {
 29061  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 29062  		}{test_session_cmd})), p,
 29063  		*(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{test_session_del})))
 29064  	tcl.XTcl_SetObjResult(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 29065  	return TCL_OK
 29066  }
 29067  
 29068  func test_append_value(tls *libc.TLS, pList uintptr, pVal uintptr) {
 29069  	if pVal == uintptr(0) {
 29070  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pList, tcl.XTcl_NewObj(tls))
 29071  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pList, tcl.XTcl_NewObj(tls))
 29072  	} else {
 29073  		var pObj uintptr
 29074  		switch sqlite3.Xsqlite3_value_type(tls, pVal) {
 29075  		case SQLITE_NULL:
 29076  			tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pList, tcl.XTcl_NewStringObj(tls, ts+10287, 1))
 29077  			pObj = tcl.XTcl_NewObj(tls)
 29078  			break
 29079  			fallthrough
 29080  		case SQLITE_INTEGER:
 29081  			tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pList, tcl.XTcl_NewStringObj(tls, ts+10289, 1))
 29082  			pObj = tcl.XTcl_NewWideIntObj(tls, sqlite3.Xsqlite3_value_int64(tls, pVal))
 29083  			break
 29084  			fallthrough
 29085  		case SQLITE_FLOAT:
 29086  			tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pList, tcl.XTcl_NewStringObj(tls, ts+10291, 1))
 29087  			pObj = tcl.XTcl_NewDoubleObj(tls, sqlite3.Xsqlite3_value_double(tls, pVal))
 29088  			break
 29089  			fallthrough
 29090  		case SQLITE_TEXT:
 29091  			{
 29092  				var z uintptr = sqlite3.Xsqlite3_value_blob(tls, pVal)
 29093  				var n int32 = sqlite3.Xsqlite3_value_bytes(tls, pVal)
 29094  				tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pList, tcl.XTcl_NewStringObj(tls, ts+10293, 1))
 29095  				pObj = tcl.XTcl_NewStringObj(tls, z, n)
 29096  				break
 29097  
 29098  			}
 29099  			fallthrough
 29100  		default:
 29101  			tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pList, tcl.XTcl_NewStringObj(tls, ts+6206, 1))
 29102  			pObj = tcl.XTcl_NewByteArrayObj(tls,
 29103  				sqlite3.Xsqlite3_value_blob(tls, pVal),
 29104  				sqlite3.Xsqlite3_value_bytes(tls, pVal))
 29105  			break
 29106  		}
 29107  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pList, pObj)
 29108  	}
 29109  }
 29110  
 29111  type TestConflictHandler1 = struct {
 29112  	Finterp          uintptr
 29113  	FpConflictScript uintptr
 29114  	FpFilterScript   uintptr
 29115  }
 29116  
 29117  type TestConflictHandler = TestConflictHandler1
 29118  
 29119  func test_obj_eq_string(tls *libc.TLS, p uintptr, z uintptr) int32 {
 29120  	bp := tls.Alloc(4)
 29121  	defer tls.Free(4)
 29122  
 29123  	var n int32
 29124  
 29125  	var zObj uintptr
 29126  
 29127  	n = int32(libc.Xstrlen(tls, z))
 29128  	zObj = tcl.XTcl_GetStringFromObj(tls, p, bp)
 29129  
 29130  	return libc.Bool32(*(*int32)(unsafe.Pointer(bp)) == n && (n == 0 || 0 == libc.Xmemcmp(tls, zObj, z, uint64(n))))
 29131  }
 29132  
 29133  func test_filter_handler(tls *libc.TLS, pCtx uintptr, zTab uintptr) int32 {
 29134  	bp := tls.Alloc(4)
 29135  	defer tls.Free(4)
 29136  
 29137  	var p uintptr = pCtx
 29138  	*(*int32)(unsafe.Pointer(bp)) = 1
 29139  	var pEval uintptr
 29140  	var interp uintptr = (*TestConflictHandler)(unsafe.Pointer(p)).Finterp
 29141  
 29142  	pEval = tcl.XTcl_DuplicateObj(tls, (*TestConflictHandler)(unsafe.Pointer(p)).FpFilterScript)
 29143  	(*Tcl_Obj)(unsafe.Pointer(pEval)).FrefCount++
 29144  
 29145  	if TCL_OK != tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pEval, tcl.XTcl_NewStringObj(tls, zTab, -1)) ||
 29146  		TCL_OK != tcl.XTcl_EvalObjEx(tls, interp, pEval, TCL_EVAL_GLOBAL) ||
 29147  		TCL_OK != tcl.XTcl_GetIntFromObj(tls, interp, tcl.XTcl_GetObjResult(tls, interp), bp) {
 29148  		tcl.XTcl_BackgroundError(tls, interp)
 29149  	}
 29150  
 29151  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 29152  		if libc.PreDecInt32(&(*Tcl_Obj)(unsafe.Pointer(pEval)).FrefCount, 1) <= 0 {
 29153  			tcl.XTclFreeObj(tls, pEval)
 29154  		}
 29155  	}
 29156  	return *(*int32)(unsafe.Pointer(bp))
 29157  }
 29158  
 29159  func test_conflict_handler(tls *libc.TLS, pCtx uintptr, eConf int32, pIter uintptr) int32 {
 29160  	bp := tls.Alloc(104)
 29161  	defer tls.Free(104)
 29162  
 29163  	var p uintptr = pCtx
 29164  	var pEval uintptr
 29165  	var interp uintptr = (*TestConflictHandler)(unsafe.Pointer(p)).Finterp
 29166  	*(*int32)(unsafe.Pointer(bp + 100)) = 0
 29167  
 29168  	pEval = tcl.XTcl_DuplicateObj(tls, (*TestConflictHandler)(unsafe.Pointer(p)).FpConflictScript)
 29169  	(*Tcl_Obj)(unsafe.Pointer(pEval)).FrefCount++
 29170  
 29171  	sqlite3.Xsqlite3changeset_op(tls, pIter, bp, bp+8, bp+12, uintptr(0))
 29172  
 29173  	if eConf == SQLITE_CHANGESET_FOREIGN_KEY {
 29174  		sqlite3.Xsqlite3changeset_fk_conflicts(tls, pIter, bp+16)
 29175  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pEval, tcl.XTcl_NewStringObj(tls, ts+10295, -1))
 29176  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pEval, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 16))))
 29177  	} else {
 29178  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pEval, tcl.XTcl_NewStringObj(tls,
 29179  			func() uintptr {
 29180  				if *(*int32)(unsafe.Pointer(bp + 12)) == SQLITE_INSERT {
 29181  					return ts + 10307
 29182  				}
 29183  				return func() uintptr {
 29184  					if *(*int32)(unsafe.Pointer(bp + 12)) == SQLITE_UPDATE {
 29185  						return ts + 10314
 29186  					}
 29187  					return ts + 10321
 29188  				}()
 29189  			}(), -1))
 29190  
 29191  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pEval, tcl.XTcl_NewStringObj(tls, *(*uintptr)(unsafe.Pointer(bp)), -1))
 29192  
 29193  		switch eConf {
 29194  		case SQLITE_CHANGESET_DATA:
 29195  			tcl.XTcl_ListObjAppendElement(tls, interp, pEval, tcl.XTcl_NewStringObj(tls, ts+10328, -1))
 29196  			break
 29197  			fallthrough
 29198  		case SQLITE_CHANGESET_NOTFOUND:
 29199  			tcl.XTcl_ListObjAppendElement(tls, interp, pEval, tcl.XTcl_NewStringObj(tls, ts+10333, -1))
 29200  			break
 29201  			fallthrough
 29202  		case SQLITE_CHANGESET_CONFLICT:
 29203  			tcl.XTcl_ListObjAppendElement(tls, interp, pEval, tcl.XTcl_NewStringObj(tls, ts+10342, -1))
 29204  			break
 29205  			fallthrough
 29206  		case SQLITE_CHANGESET_CONSTRAINT:
 29207  			tcl.XTcl_ListObjAppendElement(tls, interp, pEval, tcl.XTcl_NewStringObj(tls, ts+10351, -1))
 29208  			break
 29209  		}
 29210  
 29211  		if *(*int32)(unsafe.Pointer(bp + 12)) != SQLITE_INSERT {
 29212  			var i int32
 29213  			var pOld uintptr = tcl.XTcl_NewObj(tls)
 29214  			for i = 0; i < *(*int32)(unsafe.Pointer(bp + 8)); i++ {
 29215  				sqlite3.Xsqlite3changeset_old(tls, pIter, i, bp+24)
 29216  				test_append_value(tls, pOld, *(*uintptr)(unsafe.Pointer(bp + 24)))
 29217  			}
 29218  			tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pEval, pOld)
 29219  		}
 29220  
 29221  		if *(*int32)(unsafe.Pointer(bp + 12)) != SQLITE_DELETE {
 29222  			var i int32
 29223  			var pNew uintptr = tcl.XTcl_NewObj(tls)
 29224  			for i = 0; i < *(*int32)(unsafe.Pointer(bp + 8)); i++ {
 29225  				sqlite3.Xsqlite3changeset_new(tls, pIter, i, bp+32)
 29226  				test_append_value(tls, pNew, *(*uintptr)(unsafe.Pointer(bp + 32)))
 29227  			}
 29228  			tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pEval, pNew)
 29229  		}
 29230  
 29231  		if eConf == SQLITE_CHANGESET_DATA || eConf == SQLITE_CHANGESET_CONFLICT {
 29232  			var i int32
 29233  			var pConflict uintptr = tcl.XTcl_NewObj(tls)
 29234  			for i = 0; i < *(*int32)(unsafe.Pointer(bp + 8)); i++ {
 29235  				var rc int32
 29236  				_ = rc
 29237  
 29238  				rc = sqlite3.Xsqlite3changeset_conflict(tls, pIter, i, bp+40)
 29239  
 29240  				test_append_value(tls, pConflict, *(*uintptr)(unsafe.Pointer(bp + 40)))
 29241  			}
 29242  			tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pEval, pConflict)
 29243  		}
 29244  
 29245  		if eConf == SQLITE_CHANGESET_CONSTRAINT ||
 29246  			eConf == SQLITE_CHANGESET_NOTFOUND {
 29247  			var rc int32 = sqlite3.Xsqlite3changeset_conflict(tls, pIter, 0, bp+48)
 29248  			_ = rc
 29249  
 29250  		} else {
 29251  			var rc int32 = sqlite3.Xsqlite3changeset_conflict(tls, pIter, -1, bp+56)
 29252  			_ = rc
 29253  
 29254  			rc = sqlite3.Xsqlite3changeset_conflict(tls, pIter, *(*int32)(unsafe.Pointer(bp + 8)), bp+56)
 29255  
 29256  		}
 29257  		if *(*int32)(unsafe.Pointer(bp + 12)) == SQLITE_DELETE {
 29258  			var rc int32 = sqlite3.Xsqlite3changeset_new(tls, pIter, 0, bp+64)
 29259  			_ = rc
 29260  
 29261  		} else {
 29262  			var rc int32 = sqlite3.Xsqlite3changeset_new(tls, pIter, -1, bp+72)
 29263  			_ = rc
 29264  
 29265  			rc = sqlite3.Xsqlite3changeset_new(tls, pIter, *(*int32)(unsafe.Pointer(bp + 8)), bp+72)
 29266  
 29267  		}
 29268  		if *(*int32)(unsafe.Pointer(bp + 12)) == SQLITE_INSERT {
 29269  			var rc int32 = sqlite3.Xsqlite3changeset_old(tls, pIter, 0, bp+80)
 29270  			_ = rc
 29271  
 29272  		} else {
 29273  			var rc int32 = sqlite3.Xsqlite3changeset_old(tls, pIter, -1, bp+88)
 29274  			_ = rc
 29275  
 29276  			rc = sqlite3.Xsqlite3changeset_old(tls, pIter, *(*int32)(unsafe.Pointer(bp + 8)), bp+88)
 29277  
 29278  		}
 29279  		if eConf != SQLITE_CHANGESET_FOREIGN_KEY {
 29280  			var rc int32 = sqlite3.Xsqlite3changeset_fk_conflicts(tls, pIter, bp+96)
 29281  			_ = rc
 29282  
 29283  		}
 29284  
 29285  	}
 29286  
 29287  	if TCL_OK != tcl.XTcl_EvalObjEx(tls, interp, pEval, TCL_EVAL_GLOBAL) {
 29288  		tcl.XTcl_BackgroundError(tls, interp)
 29289  	} else {
 29290  		var pRes uintptr = tcl.XTcl_GetObjResult(tls, interp)
 29291  		if test_obj_eq_string(tls, pRes, ts+10362) != 0 || test_obj_eq_string(tls, pRes, ts+584) != 0 {
 29292  			*(*int32)(unsafe.Pointer(bp + 100)) = SQLITE_CHANGESET_OMIT
 29293  		} else if test_obj_eq_string(tls, pRes, ts+7846) != 0 {
 29294  			*(*int32)(unsafe.Pointer(bp + 100)) = SQLITE_CHANGESET_REPLACE
 29295  		} else if test_obj_eq_string(tls, pRes, ts+7840) != 0 {
 29296  			*(*int32)(unsafe.Pointer(bp + 100)) = SQLITE_CHANGESET_ABORT
 29297  		} else {
 29298  			tcl.XTcl_GetIntFromObj(tls, uintptr(0), pRes, bp+100)
 29299  		}
 29300  	}
 29301  
 29302  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 29303  		if libc.PreDecInt32(&(*Tcl_Obj)(unsafe.Pointer(pEval)).FrefCount, 1) <= 0 {
 29304  			tcl.XTclFreeObj(tls, pEval)
 29305  		}
 29306  	}
 29307  	return *(*int32)(unsafe.Pointer(bp + 100))
 29308  }
 29309  
 29310  func replace_handler(tls *libc.TLS, pCtx uintptr, eConf int32, pIter uintptr) int32 {
 29311  	bp := tls.Alloc(32)
 29312  	defer tls.Free(32)
 29313  
 29314  	var i int32
 29315  	var x int32 = 0
 29316  
 29317  	sqlite3.Xsqlite3changeset_op(tls, pIter, bp, bp+8, bp+12, uintptr(0))
 29318  
 29319  	if *(*int32)(unsafe.Pointer(bp + 12)) != SQLITE_INSERT {
 29320  		for i = 0; i < *(*int32)(unsafe.Pointer(bp + 8)); i++ {
 29321  			sqlite3.Xsqlite3changeset_old(tls, pIter, i, bp+16)
 29322  			sqlite3.Xsqlite3_value_text16(tls, *(*uintptr)(unsafe.Pointer(bp + 16)))
 29323  			x++
 29324  		}
 29325  	}
 29326  
 29327  	if *(*int32)(unsafe.Pointer(bp + 12)) != SQLITE_DELETE {
 29328  		for i = 0; i < *(*int32)(unsafe.Pointer(bp + 8)); i++ {
 29329  			sqlite3.Xsqlite3changeset_new(tls, pIter, i, bp+24)
 29330  			sqlite3.Xsqlite3_value_text16(tls, *(*uintptr)(unsafe.Pointer(bp + 24)))
 29331  			x++
 29332  		}
 29333  	}
 29334  
 29335  	if eConf == SQLITE_CHANGESET_DATA {
 29336  		return SQLITE_CHANGESET_REPLACE
 29337  	}
 29338  	return SQLITE_CHANGESET_OMIT
 29339  }
 29340  
 29341  func testStreamInput(tls *libc.TLS, pCtx uintptr, pData uintptr, pnData uintptr) int32 {
 29342  	var p uintptr = pCtx
 29343  	var nReq int32 = *(*int32)(unsafe.Pointer(pnData))
 29344  	var nRem int32 = (*TestStreamInput)(unsafe.Pointer(p)).FnData - (*TestStreamInput)(unsafe.Pointer(p)).FiData
 29345  	var nRet int32 = (*TestStreamInput)(unsafe.Pointer(p)).FnStream
 29346  
 29347  	var pAlloc uintptr = sqlite3.Xsqlite3_malloc(tls, 10)
 29348  	if pAlloc == uintptr(0) {
 29349  		return SQLITE_NOMEM
 29350  	}
 29351  	sqlite3.Xsqlite3_free(tls, pAlloc)
 29352  
 29353  	if nRet > nReq {
 29354  		nRet = nReq
 29355  	}
 29356  	if nRet > nRem {
 29357  		nRet = nRem
 29358  	}
 29359  
 29360  	if nRet > 0 {
 29361  		libc.X__builtin___memcpy_chk(tls, pData, (*TestStreamInput)(unsafe.Pointer(p)).FaData+uintptr((*TestStreamInput)(unsafe.Pointer(p)).FiData), uint64(nRet), libc.X__builtin_object_size(tls, pData, 0))
 29362  		*(*int32)(unsafe.Pointer(p + 20)) += nRet
 29363  	}
 29364  
 29365  	*(*int32)(unsafe.Pointer(pnData)) = nRet
 29366  	return SQLITE_OK
 29367  }
 29368  
 29369  func testSqlite3changesetApply(tls *libc.TLS, bV2 int32, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 29370  	bp := tls.Alloc(156)
 29371  	defer tls.Free(156)
 29372  
 29373  	var db uintptr
 29374  
 29375  	var rc int32
 29376  	var pChangeset uintptr
 29377  
 29378  	*(*uintptr)(unsafe.Pointer(bp + 144)) = uintptr(0)
 29379  	*(*int32)(unsafe.Pointer(bp + 152)) = 0
 29380  	var flags int32 = 0
 29381  
 29382  	libc.X__builtin___memset_chk(tls, bp+24, 0, uint64(unsafe.Sizeof(TestStreamInput{})), libc.X__builtin_object_size(tls, bp+24, 0))
 29383  	(*TestStreamInput)(unsafe.Pointer(bp + 24)).FnStream = test_tcl_integer(tls, interp, ts+10098)
 29384  
 29385  	if bV2 != 0 {
 29386  		if objc > 1 {
 29387  			var z1 uintptr = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 29388  			var n int32 = int32(libc.Xstrlen(tls, z1))
 29389  			if n > 1 && n <= 12 && 0 == sqlite3.Xsqlite3_strnicmp(tls, ts+10367, z1, n) {
 29390  				flags = flags | SQLITE_CHANGESETAPPLY_NOSAVEPOINT
 29391  				objc--
 29392  				objv += 8
 29393  			}
 29394  		}
 29395  		if objc > 1 {
 29396  			var z1 uintptr = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 29397  			var n int32 = int32(libc.Xstrlen(tls, z1))
 29398  			if n > 1 && n <= 7 && 0 == sqlite3.Xsqlite3_strnicmp(tls, ts+10380, z1, n) {
 29399  				flags = flags | SQLITE_CHANGESETAPPLY_INVERT
 29400  				objc--
 29401  				objv += 8
 29402  			}
 29403  		}
 29404  	}
 29405  
 29406  	if objc != 4 && objc != 5 {
 29407  		var zMsg uintptr
 29408  		if bV2 != 0 {
 29409  			zMsg = ts + 10388
 29410  		} else {
 29411  			zMsg = ts + 10459
 29412  		}
 29413  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, zMsg)
 29414  		return TCL_ERROR
 29415  	}
 29416  	if 0 == tcl.XTcl_GetCommandInfo(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+48) {
 29417  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+1930, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), 0))
 29418  		return TCL_ERROR
 29419  	}
 29420  	db = *(*uintptr)(unsafe.Pointer((*Tcl_CmdInfo)(unsafe.Pointer(bp + 48)).FobjClientData))
 29421  	pChangeset = tcl.XTcl_GetByteArrayFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+112)
 29422  	(*TestConflictHandler)(unsafe.Pointer(bp + 120)).FpConflictScript = *(*uintptr)(unsafe.Pointer(objv + 3*8))
 29423  	(*TestConflictHandler)(unsafe.Pointer(bp + 120)).FpFilterScript = func() uintptr {
 29424  		if objc == 5 {
 29425  			return *(*uintptr)(unsafe.Pointer(objv + 4*8))
 29426  		}
 29427  		return uintptr(0)
 29428  	}()
 29429  	(*TestConflictHandler)(unsafe.Pointer(bp + 120)).Finterp = interp
 29430  
 29431  	if (*TestStreamInput)(unsafe.Pointer(bp+24)).FnStream == 0 {
 29432  		if bV2 == 0 {
 29433  			rc = sqlite3.Xsqlite3changeset_apply(tls, db, *(*int32)(unsafe.Pointer(bp + 112)), pChangeset,
 29434  				func() uintptr {
 29435  					if objc == 5 {
 29436  						return *(*uintptr)(unsafe.Pointer(&struct {
 29437  							f func(*libc.TLS, uintptr, uintptr) int32
 29438  						}{test_filter_handler}))
 29439  					}
 29440  					return uintptr(0)
 29441  				}(), *(*uintptr)(unsafe.Pointer(&struct {
 29442  					f func(*libc.TLS, uintptr, int32, uintptr) int32
 29443  				}{test_conflict_handler})), bp+120)
 29444  		} else {
 29445  			rc = sqlite3.Xsqlite3changeset_apply_v2(tls, db, *(*int32)(unsafe.Pointer(bp + 112)), pChangeset,
 29446  				func() uintptr {
 29447  					if objc == 5 {
 29448  						return *(*uintptr)(unsafe.Pointer(&struct {
 29449  							f func(*libc.TLS, uintptr, uintptr) int32
 29450  						}{test_filter_handler}))
 29451  					}
 29452  					return uintptr(0)
 29453  				}(), *(*uintptr)(unsafe.Pointer(&struct {
 29454  					f func(*libc.TLS, uintptr, int32, uintptr) int32
 29455  				}{test_conflict_handler})), bp+120,
 29456  				bp+144, bp+152, flags)
 29457  		}
 29458  	} else {
 29459  		(*TestStreamInput)(unsafe.Pointer(bp + 24)).FaData = pChangeset
 29460  		(*TestStreamInput)(unsafe.Pointer(bp + 24)).FnData = *(*int32)(unsafe.Pointer(bp + 112))
 29461  		if bV2 == 0 {
 29462  			rc = sqlite3.Xsqlite3changeset_apply_strm(tls, db, *(*uintptr)(unsafe.Pointer(&struct {
 29463  				f func(*libc.TLS, uintptr, uintptr, uintptr) int32
 29464  			}{testStreamInput})), bp+24,
 29465  				func() uintptr {
 29466  					if objc == 5 {
 29467  						return *(*uintptr)(unsafe.Pointer(&struct {
 29468  							f func(*libc.TLS, uintptr, uintptr) int32
 29469  						}{test_filter_handler}))
 29470  					}
 29471  					return uintptr(0)
 29472  				}(),
 29473  				*(*uintptr)(unsafe.Pointer(&struct {
 29474  					f func(*libc.TLS, uintptr, int32, uintptr) int32
 29475  				}{test_conflict_handler})), bp+120)
 29476  		} else {
 29477  			rc = sqlite3.Xsqlite3changeset_apply_v2_strm(tls, db, *(*uintptr)(unsafe.Pointer(&struct {
 29478  				f func(*libc.TLS, uintptr, uintptr, uintptr) int32
 29479  			}{testStreamInput})), bp+24,
 29480  				func() uintptr {
 29481  					if objc == 5 {
 29482  						return *(*uintptr)(unsafe.Pointer(&struct {
 29483  							f func(*libc.TLS, uintptr, uintptr) int32
 29484  						}{test_filter_handler}))
 29485  					}
 29486  					return uintptr(0)
 29487  				}(),
 29488  				*(*uintptr)(unsafe.Pointer(&struct {
 29489  					f func(*libc.TLS, uintptr, int32, uintptr) int32
 29490  				}{test_conflict_handler})), bp+120,
 29491  				bp+144, bp+152, flags)
 29492  		}
 29493  	}
 29494  
 29495  	if rc != SQLITE_OK {
 29496  		return test_session_error(tls, interp, rc, uintptr(0))
 29497  	} else {
 29498  		tcl.XTcl_ResetResult(tls, interp)
 29499  		if bV2 != 0 && *(*uintptr)(unsafe.Pointer(bp + 144)) != 0 {
 29500  			tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewByteArrayObj(tls, *(*uintptr)(unsafe.Pointer(bp + 144)), *(*int32)(unsafe.Pointer(bp + 152))))
 29501  		}
 29502  	}
 29503  	sqlite3.Xsqlite3_free(tls, *(*uintptr)(unsafe.Pointer(bp + 144)))
 29504  	return TCL_OK
 29505  }
 29506  
 29507  func test_sqlite3changeset_apply(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 29508  	return testSqlite3changesetApply(tls, 0, clientData, interp, objc, objv)
 29509  }
 29510  
 29511  func test_sqlite3changeset_apply_v2(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 29512  	return testSqlite3changesetApply(tls, 1, clientData, interp, objc, objv)
 29513  }
 29514  
 29515  func test_sqlite3changeset_apply_replace_all(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 29516  	bp := tls.Alloc(92)
 29517  	defer tls.Free(92)
 29518  
 29519  	var db uintptr
 29520  
 29521  	var rc int32
 29522  	var pChangeset uintptr
 29523  
 29524  	if objc != 3 {
 29525  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+10504)
 29526  		return TCL_ERROR
 29527  	}
 29528  	if 0 == tcl.XTcl_GetCommandInfo(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+24) {
 29529  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+1930, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8))), 0))
 29530  		return TCL_ERROR
 29531  	}
 29532  	db = *(*uintptr)(unsafe.Pointer((*Tcl_CmdInfo)(unsafe.Pointer(bp + 24)).FobjClientData))
 29533  	pChangeset = tcl.XTcl_GetByteArrayFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+88)
 29534  
 29535  	rc = sqlite3.Xsqlite3changeset_apply(tls, db, *(*int32)(unsafe.Pointer(bp + 88)), pChangeset, uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 29536  		f func(*libc.TLS, uintptr, int32, uintptr) int32
 29537  	}{replace_handler})), uintptr(0))
 29538  	if rc != SQLITE_OK {
 29539  		return test_session_error(tls, interp, rc, uintptr(0))
 29540  	}
 29541  	tcl.XTcl_ResetResult(tls, interp)
 29542  	return TCL_OK
 29543  }
 29544  
 29545  func test_sqlite3changeset_invert(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 29546  	bp := tls.Alloc(40)
 29547  	defer tls.Free(40)
 29548  
 29549  	var rc int32
 29550  
 29551  	if objc != 2 {
 29552  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+10517)
 29553  		return TCL_ERROR
 29554  	}
 29555  
 29556  	libc.X__builtin___memset_chk(tls, bp, 0, uint64(unsafe.Sizeof(TestStreamInput{})), libc.X__builtin_object_size(tls, bp, 0))
 29557  	libc.X__builtin___memset_chk(tls, bp+24, 0, uint64(unsafe.Sizeof(TestSessionsBlob{})), libc.X__builtin_object_size(tls, bp+24, 0))
 29558  	(*TestStreamInput)(unsafe.Pointer(bp)).FnStream = test_tcl_integer(tls, interp, ts+10098)
 29559  	(*TestStreamInput)(unsafe.Pointer(bp)).FaData = tcl.XTcl_GetByteArrayFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp+16)
 29560  
 29561  	if (*TestStreamInput)(unsafe.Pointer(bp)).FnStream != 0 {
 29562  		rc = sqlite3.Xsqlite3changeset_invert_strm(tls,
 29563  			*(*uintptr)(unsafe.Pointer(&struct {
 29564  				f func(*libc.TLS, uintptr, uintptr, uintptr) int32
 29565  			}{testStreamInput})), bp, *(*uintptr)(unsafe.Pointer(&struct {
 29566  				f func(*libc.TLS, uintptr, uintptr, int32) int32
 29567  			}{testStreamOutput})), bp+24)
 29568  	} else {
 29569  		rc = sqlite3.Xsqlite3changeset_invert(tls, (*TestStreamInput)(unsafe.Pointer(bp)).FnData, (*TestStreamInput)(unsafe.Pointer(bp)).FaData, bp+24+8, bp+24)
 29570  	}
 29571  	if rc != SQLITE_OK {
 29572  		rc = test_session_error(tls, interp, rc, uintptr(0))
 29573  	} else {
 29574  		tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewByteArrayObj(tls, (*TestSessionsBlob)(unsafe.Pointer(bp+24)).Fp, (*TestSessionsBlob)(unsafe.Pointer(bp+24)).Fn))
 29575  	}
 29576  	sqlite3.Xsqlite3_free(tls, (*TestSessionsBlob)(unsafe.Pointer(bp+24)).Fp)
 29577  	return rc
 29578  }
 29579  
 29580  func test_sqlite3changeset_concat(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 29581  	bp := tls.Alloc(64)
 29582  	defer tls.Free(64)
 29583  
 29584  	var rc int32
 29585  
 29586  	*(*TestSessionsBlob)(unsafe.Pointer(bp + 48)) = TestSessionsBlob{}
 29587  
 29588  	if objc != 3 {
 29589  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+10527)
 29590  		return TCL_ERROR
 29591  	}
 29592  
 29593  	libc.X__builtin___memset_chk(tls, bp, 0, uint64(unsafe.Sizeof(TestStreamInput{})), libc.X__builtin_object_size(tls, bp, 0))
 29594  	libc.X__builtin___memset_chk(tls, bp+24, 0, uint64(unsafe.Sizeof(TestStreamInput{})), libc.X__builtin_object_size(tls, bp+24, 0))
 29595  	(*TestStreamInput)(unsafe.Pointer(bp)).FaData = tcl.XTcl_GetByteArrayFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp+16)
 29596  	(*TestStreamInput)(unsafe.Pointer(bp + 24)).FaData = tcl.XTcl_GetByteArrayFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+24+16)
 29597  	(*TestStreamInput)(unsafe.Pointer(bp)).FnStream = test_tcl_integer(tls, interp, ts+10098)
 29598  	(*TestStreamInput)(unsafe.Pointer(bp + 24)).FnStream = (*TestStreamInput)(unsafe.Pointer(bp)).FnStream
 29599  
 29600  	if (*TestStreamInput)(unsafe.Pointer(bp)).FnStream > 0 {
 29601  		rc = sqlite3.Xsqlite3changeset_concat_strm(tls,
 29602  			*(*uintptr)(unsafe.Pointer(&struct {
 29603  				f func(*libc.TLS, uintptr, uintptr, uintptr) int32
 29604  			}{testStreamInput})), bp,
 29605  			*(*uintptr)(unsafe.Pointer(&struct {
 29606  				f func(*libc.TLS, uintptr, uintptr, uintptr) int32
 29607  			}{testStreamInput})), bp+24,
 29608  			*(*uintptr)(unsafe.Pointer(&struct {
 29609  				f func(*libc.TLS, uintptr, uintptr, int32) int32
 29610  			}{testStreamOutput})), bp+48)
 29611  	} else {
 29612  		rc = sqlite3.Xsqlite3changeset_concat(tls,
 29613  			(*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)
 29614  	}
 29615  
 29616  	if rc != SQLITE_OK {
 29617  		rc = test_session_error(tls, interp, rc, uintptr(0))
 29618  	} else {
 29619  		tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewByteArrayObj(tls, (*TestSessionsBlob)(unsafe.Pointer(bp+48)).Fp, (*TestSessionsBlob)(unsafe.Pointer(bp+48)).Fn))
 29620  	}
 29621  	sqlite3.Xsqlite3_free(tls, (*TestSessionsBlob)(unsafe.Pointer(bp+48)).Fp)
 29622  	return rc
 29623  }
 29624  
 29625  func test_sqlite3session_foreach(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 29626  	bp := tls.Alloc(104)
 29627  	defer tls.Free(104)
 29628  
 29629  	var pChangeset uintptr
 29630  
 29631  	var rc int32
 29632  	var pVarname uintptr
 29633  	var pCS uintptr
 29634  	var pScript uintptr
 29635  	var isCheckNext int32 = 0
 29636  	var isInvert int32 = 0
 29637  
 29638  	libc.X__builtin___memset_chk(tls, bp, 0, uint64(unsafe.Sizeof(TestStreamInput{})), libc.X__builtin_object_size(tls, bp, 0))
 29639  
 29640  	for objc > 1 {
 29641  		var zOpt uintptr = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 29642  		var nOpt int32 = int32(libc.Xstrlen(tls, zOpt))
 29643  		if int32(*(*int8)(unsafe.Pointer(zOpt))) != '-' {
 29644  			break
 29645  		}
 29646  		if nOpt <= 7 && 0 == sqlite3.Xsqlite3_strnicmp(tls, zOpt, ts+10380, nOpt) {
 29647  			isInvert = 1
 29648  		} else if nOpt <= 5 && 0 == sqlite3.Xsqlite3_strnicmp(tls, zOpt, ts+10538, nOpt) {
 29649  			isCheckNext = 1
 29650  		} else {
 29651  			break
 29652  		}
 29653  		objv += 8
 29654  		objc--
 29655  	}
 29656  	if objc != 4 {
 29657  		tcl.XTcl_WrongNumArgs(tls,
 29658  			interp, 1, objv, ts+10544)
 29659  		return TCL_ERROR
 29660  	}
 29661  
 29662  	pVarname = *(*uintptr)(unsafe.Pointer(objv + 1*8))
 29663  	pCS = *(*uintptr)(unsafe.Pointer(objv + 2*8))
 29664  	pScript = *(*uintptr)(unsafe.Pointer(objv + 3*8))
 29665  
 29666  	pChangeset = tcl.XTcl_GetByteArrayFromObj(tls, pCS, bp+24)
 29667  	(*TestStreamInput)(unsafe.Pointer(bp)).FnStream = test_tcl_integer(tls, interp, ts+10098)
 29668  	if isInvert != 0 {
 29669  		var f int32 = SQLITE_CHANGESETSTART_INVERT
 29670  		if (*TestStreamInput)(unsafe.Pointer(bp)).FnStream == 0 {
 29671  			rc = sqlite3.Xsqlite3changeset_start_v2(tls, bp+32, *(*int32)(unsafe.Pointer(bp + 24)), pChangeset, f)
 29672  		} else {
 29673  			var pCtx uintptr = bp
 29674  			(*TestStreamInput)(unsafe.Pointer(bp)).FaData = pChangeset
 29675  			(*TestStreamInput)(unsafe.Pointer(bp)).FnData = *(*int32)(unsafe.Pointer(bp + 24))
 29676  			rc = sqlite3.Xsqlite3changeset_start_v2_strm(tls, bp+32, *(*uintptr)(unsafe.Pointer(&struct {
 29677  				f func(*libc.TLS, uintptr, uintptr, uintptr) int32
 29678  			}{testStreamInput})), pCtx, f)
 29679  		}
 29680  	} else {
 29681  		if (*TestStreamInput)(unsafe.Pointer(bp)).FnStream == 0 {
 29682  			rc = sqlite3.Xsqlite3changeset_start(tls, bp+32, *(*int32)(unsafe.Pointer(bp + 24)), pChangeset)
 29683  		} else {
 29684  			(*TestStreamInput)(unsafe.Pointer(bp)).FaData = pChangeset
 29685  			(*TestStreamInput)(unsafe.Pointer(bp)).FnData = *(*int32)(unsafe.Pointer(bp + 24))
 29686  			rc = sqlite3.Xsqlite3changeset_start_strm(tls, bp+32, *(*uintptr)(unsafe.Pointer(&struct {
 29687  				f func(*libc.TLS, uintptr, uintptr, uintptr) int32
 29688  			}{testStreamInput})), bp)
 29689  		}
 29690  	}
 29691  	if rc != SQLITE_OK {
 29692  		return test_session_error(tls, interp, rc, uintptr(0))
 29693  	}
 29694  
 29695  	for SQLITE_ROW == sqlite3.Xsqlite3changeset_next(tls, *(*uintptr)(unsafe.Pointer(bp + 32))) {
 29696  		var pVar uintptr
 29697  		var pOld uintptr
 29698  		var pNew uintptr
 29699  
 29700  		var zPK uintptr
 29701  
 29702  		var i int32
 29703  
 29704  		if SQLITE_MISUSE != sqlite3.Xsqlite3changeset_fk_conflicts(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), bp+40) {
 29705  			sqlite3.Xsqlite3changeset_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 32)))
 29706  			return TCL_ERROR
 29707  		}
 29708  
 29709  		sqlite3.Xsqlite3changeset_op(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), bp+48, bp+56, bp+60, bp+64)
 29710  		pVar = tcl.XTcl_NewObj(tls)
 29711  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pVar, tcl.XTcl_NewStringObj(tls,
 29712  			func() uintptr {
 29713  				if *(*int32)(unsafe.Pointer(bp + 60)) == SQLITE_INSERT {
 29714  					return ts + 10307
 29715  				}
 29716  				return func() uintptr {
 29717  					if *(*int32)(unsafe.Pointer(bp + 60)) == SQLITE_UPDATE {
 29718  						return ts + 10314
 29719  					}
 29720  					return ts + 10321
 29721  				}()
 29722  			}(), -1))
 29723  
 29724  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pVar, tcl.XTcl_NewStringObj(tls, *(*uintptr)(unsafe.Pointer(bp + 48)), -1))
 29725  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pVar, tcl.XTcl_NewBooleanObj(tls, *(*int32)(unsafe.Pointer(bp + 64))))
 29726  
 29727  		zPK = tcl.XTcl_Alloc(tls, uint32(*(*int32)(unsafe.Pointer(bp + 56))+1))
 29728  		libc.X__builtin___memset_chk(tls, zPK, 0, uint64(*(*int32)(unsafe.Pointer(bp + 56))+1), libc.X__builtin_object_size(tls, zPK, 0))
 29729  		sqlite3.Xsqlite3changeset_pk(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), bp+72, bp+80)
 29730  
 29731  		for i = 0; i < *(*int32)(unsafe.Pointer(bp + 56)); i++ {
 29732  			*(*int8)(unsafe.Pointer(zPK + uintptr(i))) = func() int8 {
 29733  				if *(*uint8)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 72)) + uintptr(i))) != 0 {
 29734  					return int8('X')
 29735  				}
 29736  				return int8('.')
 29737  			}()
 29738  		}
 29739  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pVar, tcl.XTcl_NewStringObj(tls, zPK, -1))
 29740  		tcl.XTcl_Free(tls, zPK)
 29741  
 29742  		pOld = tcl.XTcl_NewObj(tls)
 29743  		if *(*int32)(unsafe.Pointer(bp + 60)) != SQLITE_INSERT {
 29744  			for i = 0; i < *(*int32)(unsafe.Pointer(bp + 56)); i++ {
 29745  				sqlite3.Xsqlite3changeset_old(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), i, bp+88)
 29746  				test_append_value(tls, pOld, *(*uintptr)(unsafe.Pointer(bp + 88)))
 29747  			}
 29748  		}
 29749  		pNew = tcl.XTcl_NewObj(tls)
 29750  		if *(*int32)(unsafe.Pointer(bp + 60)) != SQLITE_DELETE {
 29751  			for i = 0; i < *(*int32)(unsafe.Pointer(bp + 56)); i++ {
 29752  				sqlite3.Xsqlite3changeset_new(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), i, bp+96)
 29753  				test_append_value(tls, pNew, *(*uintptr)(unsafe.Pointer(bp + 96)))
 29754  			}
 29755  		}
 29756  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pVar, pOld)
 29757  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pVar, pNew)
 29758  
 29759  		tcl.XTcl_ObjSetVar2(tls, interp, pVarname, uintptr(0), pVar, 0)
 29760  		rc = tcl.XTcl_EvalObjEx(tls, interp, pScript, 0)
 29761  		if rc != TCL_OK && rc != TCL_CONTINUE {
 29762  			sqlite3.Xsqlite3changeset_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 32)))
 29763  			if rc == TCL_BREAK {
 29764  				return TCL_OK
 29765  			}
 29766  			return rc
 29767  		}
 29768  	}
 29769  
 29770  	if isCheckNext != 0 {
 29771  		var rc2 int32 = sqlite3.Xsqlite3changeset_next(tls, *(*uintptr)(unsafe.Pointer(bp + 32)))
 29772  		_ = rc2
 29773  		rc = sqlite3.Xsqlite3changeset_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 32)))
 29774  
 29775  	} else {
 29776  		rc = sqlite3.Xsqlite3changeset_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 32)))
 29777  	}
 29778  	if rc != SQLITE_OK {
 29779  		return test_session_error(tls, interp, rc, uintptr(0))
 29780  	}
 29781  
 29782  	return TCL_OK
 29783  }
 29784  
 29785  func test_rebaser_cmd(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 29786  	bp := tls.Alloc(48)
 29787  	defer tls.Free(48)
 29788  
 29789  	var p uintptr = clientData
 29790  
 29791  	var rc int32
 29792  
 29793  	if objc < 2 {
 29794  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+1999)
 29795  		return TCL_ERROR
 29796  	}
 29797  	rc = tcl.XTcl_GetIndexFromObjStruct(tls, interp,
 29798  		*(*uintptr)(unsafe.Pointer(objv + 1*8)), uintptr(unsafe.Pointer(&aSub1)), int32(unsafe.Sizeof(RebaseSubcmd{})), ts+2014, 0, bp)
 29799  	if rc != TCL_OK {
 29800  		return rc
 29801  	}
 29802  	if objc != 2+aSub1[*(*int32)(unsafe.Pointer(bp))].FnArg {
 29803  		tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, aSub1[*(*int32)(unsafe.Pointer(bp))].FzMsg)
 29804  		return TCL_ERROR
 29805  	}
 29806  
 29807  	switch *(*int32)(unsafe.Pointer(bp)) {
 29808  	case 0:
 29809  		{
 29810  			*(*int32)(unsafe.Pointer(bp + 4)) = 0
 29811  			var pRebase uintptr = tcl.XTcl_GetByteArrayFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+4)
 29812  			rc = sqlite3.Xsqlite3rebaser_configure(tls, p, *(*int32)(unsafe.Pointer(bp + 4)), pRebase)
 29813  			break
 29814  
 29815  		}
 29816  
 29817  	case 1:
 29818  		tcl.XTcl_DeleteCommand(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))))
 29819  		break
 29820  
 29821  	default:
 29822  		{
 29823  			libc.X__builtin___memset_chk(tls, bp+8, 0, uint64(unsafe.Sizeof(TestStreamInput{})), libc.X__builtin_object_size(tls, bp+8, 0))
 29824  			libc.X__builtin___memset_chk(tls, bp+32, 0, uint64(unsafe.Sizeof(TestSessionsBlob{})), libc.X__builtin_object_size(tls, bp+32, 0))
 29825  			(*TestStreamInput)(unsafe.Pointer(bp + 8)).FaData = tcl.XTcl_GetByteArrayFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+8+16)
 29826  			(*TestStreamInput)(unsafe.Pointer(bp + 8)).FnStream = test_tcl_integer(tls, interp, ts+10098)
 29827  
 29828  			if (*TestStreamInput)(unsafe.Pointer(bp+8)).FnStream != 0 {
 29829  				rc = sqlite3.Xsqlite3rebaser_rebase_strm(tls, p,
 29830  					*(*uintptr)(unsafe.Pointer(&struct {
 29831  						f func(*libc.TLS, uintptr, uintptr, uintptr) int32
 29832  					}{testStreamInput})), bp+8,
 29833  					*(*uintptr)(unsafe.Pointer(&struct {
 29834  						f func(*libc.TLS, uintptr, uintptr, int32) int32
 29835  					}{testStreamOutput})), bp+32)
 29836  			} else {
 29837  				rc = sqlite3.Xsqlite3rebaser_rebase(tls, p, (*TestStreamInput)(unsafe.Pointer(bp+8)).FnData, (*TestStreamInput)(unsafe.Pointer(bp+8)).FaData, bp+32+8, bp+32)
 29838  			}
 29839  
 29840  			if rc == SQLITE_OK {
 29841  				tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewByteArrayObj(tls, (*TestSessionsBlob)(unsafe.Pointer(bp+32)).Fp, (*TestSessionsBlob)(unsafe.Pointer(bp+32)).Fn))
 29842  			}
 29843  			sqlite3.Xsqlite3_free(tls, (*TestSessionsBlob)(unsafe.Pointer(bp+32)).Fp)
 29844  			break
 29845  
 29846  		}
 29847  	}
 29848  
 29849  	if rc != SQLITE_OK {
 29850  		return test_session_error(tls, interp, rc, uintptr(0))
 29851  	}
 29852  	return TCL_OK
 29853  }
 29854  
 29855  type RebaseSubcmd = struct {
 29856  	FzSub        uintptr
 29857  	FnArg        int32
 29858  	F__ccgo_pad1 [4]byte
 29859  	FzMsg        uintptr
 29860  	FiSub        int32
 29861  	F__ccgo_pad2 [4]byte
 29862  }
 29863  
 29864  var aSub1 = [4]RebaseSubcmd{
 29865  	{FzSub: ts + 10587, FnArg: 1, FzMsg: ts + 10597},
 29866  	{FzSub: ts + 10138, FzMsg: ts + 584},
 29867  	{FzSub: ts + 10609, FnArg: 1, FzMsg: ts + 10517},
 29868  	{},
 29869  }
 29870  
 29871  func test_rebaser_del(tls *libc.TLS, clientData uintptr) {
 29872  	var p uintptr = clientData
 29873  	sqlite3.Xsqlite3rebaser_delete(tls, p)
 29874  }
 29875  
 29876  func test_sqlite3rebaser_create(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 29877  	bp := tls.Alloc(8)
 29878  	defer tls.Free(8)
 29879  
 29880  	var rc int32
 29881  	*(*uintptr)(unsafe.Pointer(bp)) = uintptr(0)
 29882  	if objc != 2 {
 29883  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+9762)
 29884  		return SQLITE_ERROR
 29885  	}
 29886  
 29887  	rc = sqlite3.Xsqlite3rebaser_create(tls, bp)
 29888  	if rc != SQLITE_OK {
 29889  		return test_session_error(tls, interp, rc, uintptr(0))
 29890  	}
 29891  
 29892  	tcl.XTcl_CreateObjCommand(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), *(*uintptr)(unsafe.Pointer(&struct {
 29893  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 29894  	}{test_rebaser_cmd})),
 29895  		*(*uintptr)(unsafe.Pointer(bp)), *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{test_rebaser_del})))
 29896  	tcl.XTcl_SetObjResult(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 29897  	return TCL_OK
 29898  }
 29899  
 29900  func test_sqlite3session_config(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 29901  	bp := tls.Alloc(8)
 29902  	defer tls.Free(8)
 29903  
 29904  	var rc int32
 29905  
 29906  	if objc != 3 {
 29907  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+10616)
 29908  		return SQLITE_ERROR
 29909  	}
 29910  	rc = tcl.XTcl_GetIndexFromObjStruct(tls, interp,
 29911  		*(*uintptr)(unsafe.Pointer(objv + 1*8)), uintptr(unsafe.Pointer(&aSub2)), int32(unsafe.Sizeof(ConfigOpt{})), ts+2014, 0, bp)
 29912  	if rc != TCL_OK {
 29913  		return rc
 29914  	}
 29915  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+4) != 0 {
 29916  		return TCL_ERROR
 29917  	}
 29918  
 29919  	rc = sqlite3.Xsqlite3session_config(tls, aSub2[*(*int32)(unsafe.Pointer(bp))].Fop, bp+4)
 29920  	if rc != SQLITE_OK {
 29921  		return test_session_error(tls, interp, rc, uintptr(0))
 29922  	}
 29923  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 4))))
 29924  	return TCL_OK
 29925  }
 29926  
 29927  type ConfigOpt = struct {
 29928  	FzSub        uintptr
 29929  	Fop          int32
 29930  	F__ccgo_pad1 [4]byte
 29931  }
 29932  
 29933  var aSub2 = [3]ConfigOpt{
 29934  	{FzSub: ts + 10625, Fop: SQLITE_SESSION_CONFIG_STRMSIZE},
 29935  	{FzSub: ts + 2758},
 29936  	{},
 29937  }
 29938  
 29939  func TestSession_Init(tls *libc.TLS, interp uintptr) int32 {
 29940  	bp := tls.Alloc(160)
 29941  	defer tls.Free(160)
 29942  
 29943  	*(*[10]struct {
 29944  		FzCmd  uintptr
 29945  		FxProc uintptr
 29946  	})(unsafe.Pointer(bp)) = [10]struct {
 29947  		FzCmd  uintptr
 29948  		FxProc uintptr
 29949  	}{
 29950  		{FzCmd: ts + 10635, FxProc: *(*uintptr)(unsafe.Pointer(&struct {
 29951  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 29952  		}{test_sqlite3session}))},
 29953  		{FzCmd: ts + 10650, FxProc: *(*uintptr)(unsafe.Pointer(&struct {
 29954  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 29955  		}{test_sqlite3session_foreach}))},
 29956  		{FzCmd: ts + 10673, FxProc: *(*uintptr)(unsafe.Pointer(&struct {
 29957  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 29958  		}{test_sqlite3changeset_invert}))},
 29959  		{FzCmd: ts + 10697, FxProc: *(*uintptr)(unsafe.Pointer(&struct {
 29960  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 29961  		}{test_sqlite3changeset_concat}))},
 29962  		{FzCmd: ts + 10721, FxProc: *(*uintptr)(unsafe.Pointer(&struct {
 29963  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 29964  		}{test_sqlite3changeset_apply}))},
 29965  		{FzCmd: ts + 10744, FxProc: *(*uintptr)(unsafe.Pointer(&struct {
 29966  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 29967  		}{test_sqlite3changeset_apply_v2}))},
 29968  		{FzCmd: ts + 10770,
 29969  			FxProc: *(*uintptr)(unsafe.Pointer(&struct {
 29970  				f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 29971  			}{test_sqlite3changeset_apply_replace_all}))},
 29972  		{FzCmd: ts + 10805, FxProc: *(*uintptr)(unsafe.Pointer(&struct {
 29973  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 29974  		}{test_sql_exec_changeset}))},
 29975  		{FzCmd: ts + 10824, FxProc: *(*uintptr)(unsafe.Pointer(&struct {
 29976  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 29977  		}{test_sqlite3rebaser_create}))},
 29978  		{FzCmd: ts + 10846, FxProc: *(*uintptr)(unsafe.Pointer(&struct {
 29979  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 29980  		}{test_sqlite3session_config}))},
 29981  	}
 29982  	var i int32
 29983  
 29984  	for i = 0; uint64(i) < uint64(unsafe.Sizeof([10]struct {
 29985  		FzCmd  uintptr
 29986  		FxProc uintptr
 29987  	}{}))/uint64(unsafe.Sizeof(struct {
 29988  		FzCmd  uintptr
 29989  		FxProc uintptr
 29990  	}{})); i++ {
 29991  		var p uintptr = bp + uintptr(i)*16
 29992  		tcl.XTcl_CreateObjCommand(tls, interp, (*struct {
 29993  			FzCmd  uintptr
 29994  			FxProc uintptr
 29995  		})(unsafe.Pointer(p)).FzCmd, (*struct {
 29996  			FzCmd  uintptr
 29997  			FxProc uintptr
 29998  		})(unsafe.Pointer(p)).FxProc, uintptr(0), uintptr(0))
 29999  	}
 30000  
 30001  	return TCL_OK
 30002  }
 30003  
 30004  func __sigbits(tls *libc.TLS, __signo int32) int32 {
 30005  	if __signo > 32 {
 30006  		return 0
 30007  	}
 30008  	return int32(1) << (__signo - 1)
 30009  }
 30010  
 30011  type SqliteDb = struct {
 30012  	Fdb             uintptr
 30013  	Finterp         uintptr
 30014  	FzBusy          uintptr
 30015  	FzCommit        uintptr
 30016  	FzTrace         uintptr
 30017  	FzTraceV2       uintptr
 30018  	FzProfile       uintptr
 30019  	FzProgress      uintptr
 30020  	FzBindFallback  uintptr
 30021  	FzAuth          uintptr
 30022  	FdisableAuth    int32
 30023  	F__ccgo_pad1    [4]byte
 30024  	FzNull          uintptr
 30025  	FpFunc          uintptr
 30026  	FpUpdateHook    uintptr
 30027  	FpPreUpdateHook uintptr
 30028  	FpRollbackHook  uintptr
 30029  	FpWalHook       uintptr
 30030  	FpUnlockNotify  uintptr
 30031  	FpCollate       uintptr
 30032  	Frc             int32
 30033  	F__ccgo_pad2    [4]byte
 30034  	FpCollateNeeded uintptr
 30035  	FstmtList       uintptr
 30036  	FstmtLast       uintptr
 30037  	FmaxStmt        int32
 30038  	FnStmt          int32
 30039  	FpIncrblob      uintptr
 30040  	FnStep          int32
 30041  	FnSort          int32
 30042  	FnIndex         int32
 30043  	FnVMStep        int32
 30044  	FnTransaction   int32
 30045  	FopenFlags      int32
 30046  	FnRef           int32
 30047  	FbLegacyPrepare int32
 30048  }
 30049  
 30050  type SqlFunc1 = struct {
 30051  	Finterp      uintptr
 30052  	FpScript     uintptr
 30053  	FpDb         uintptr
 30054  	FuseEvalObjv int32
 30055  	FeType       int32
 30056  	FzName       uintptr
 30057  	FpNext       uintptr
 30058  }
 30059  
 30060  type SqlFunc = SqlFunc1
 30061  
 30062  type SqlCollate1 = struct {
 30063  	Finterp  uintptr
 30064  	FzScript uintptr
 30065  	FpNext   uintptr
 30066  }
 30067  
 30068  type SqlCollate = SqlCollate1
 30069  
 30070  type SqlPreparedStmt1 = struct {
 30071  	FpNext       uintptr
 30072  	FpPrev       uintptr
 30073  	FpStmt       uintptr
 30074  	FnSql        int32
 30075  	F__ccgo_pad1 [4]byte
 30076  	FzSql        uintptr
 30077  	FnParm       int32
 30078  	F__ccgo_pad2 [4]byte
 30079  	FapParm      uintptr
 30080  }
 30081  
 30082  type SqlPreparedStmt = SqlPreparedStmt1
 30083  
 30084  type IncrblobChannel1 = struct {
 30085  	FpBlob       uintptr
 30086  	FpDb         uintptr
 30087  	FiSeek       int32
 30088  	F__ccgo_pad1 [4]byte
 30089  	Fchannel     Tcl_Channel
 30090  	FpNext       uintptr
 30091  	FpPrev       uintptr
 30092  }
 30093  
 30094  type IncrblobChannel = IncrblobChannel1
 30095  
 30096  func strlen30(tls *libc.TLS, z uintptr) int32 {
 30097  	var z2 uintptr = z
 30098  	for *(*int8)(unsafe.Pointer(z2)) != 0 {
 30099  		z2++
 30100  	}
 30101  	return 0x3fffffff & int32((int64(z2)-int64(z))/1)
 30102  }
 30103  
 30104  func closeIncrblobChannels(tls *libc.TLS, pDb uintptr) {
 30105  	var p uintptr
 30106  	var pNext uintptr
 30107  
 30108  	for p = (*SqliteDb)(unsafe.Pointer(pDb)).FpIncrblob; p != 0; p = pNext {
 30109  		pNext = (*IncrblobChannel)(unsafe.Pointer(p)).FpNext
 30110  
 30111  		tcl.XTcl_UnregisterChannel(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp, (*IncrblobChannel)(unsafe.Pointer(p)).Fchannel)
 30112  	}
 30113  }
 30114  
 30115  func incrblobClose(tls *libc.TLS, instanceData ClientData, interp uintptr) int32 {
 30116  	var p uintptr = instanceData
 30117  	var rc int32 = sqlite3.Xsqlite3_blob_close(tls, (*IncrblobChannel)(unsafe.Pointer(p)).FpBlob)
 30118  	var db uintptr = (*SqliteDb)(unsafe.Pointer((*IncrblobChannel)(unsafe.Pointer(p)).FpDb)).Fdb
 30119  
 30120  	if (*IncrblobChannel)(unsafe.Pointer(p)).FpNext != 0 {
 30121  		(*IncrblobChannel)(unsafe.Pointer((*IncrblobChannel)(unsafe.Pointer(p)).FpNext)).FpPrev = (*IncrblobChannel)(unsafe.Pointer(p)).FpPrev
 30122  	}
 30123  	if (*IncrblobChannel)(unsafe.Pointer(p)).FpPrev != 0 {
 30124  		(*IncrblobChannel)(unsafe.Pointer((*IncrblobChannel)(unsafe.Pointer(p)).FpPrev)).FpNext = (*IncrblobChannel)(unsafe.Pointer(p)).FpNext
 30125  	}
 30126  	if (*SqliteDb)(unsafe.Pointer((*IncrblobChannel)(unsafe.Pointer(p)).FpDb)).FpIncrblob == p {
 30127  		(*SqliteDb)(unsafe.Pointer((*IncrblobChannel)(unsafe.Pointer(p)).FpDb)).FpIncrblob = (*IncrblobChannel)(unsafe.Pointer(p)).FpNext
 30128  	}
 30129  
 30130  	tcl.XTcl_Free(tls, p)
 30131  
 30132  	if rc != SQLITE_OK {
 30133  		tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3_errmsg(tls, db), uintptr(1))
 30134  		return TCL_ERROR
 30135  	}
 30136  	return TCL_OK
 30137  }
 30138  
 30139  func incrblobInput(tls *libc.TLS, instanceData ClientData, buf uintptr, bufSize int32, errorCodePtr uintptr) int32 {
 30140  	var p uintptr = instanceData
 30141  	var nRead int32 = bufSize
 30142  	var nBlob int32
 30143  	var rc int32
 30144  
 30145  	nBlob = sqlite3.Xsqlite3_blob_bytes(tls, (*IncrblobChannel)(unsafe.Pointer(p)).FpBlob)
 30146  	if (*IncrblobChannel)(unsafe.Pointer(p)).FiSeek+nRead > nBlob {
 30147  		nRead = nBlob - (*IncrblobChannel)(unsafe.Pointer(p)).FiSeek
 30148  	}
 30149  	if nRead <= 0 {
 30150  		return 0
 30151  	}
 30152  
 30153  	rc = sqlite3.Xsqlite3_blob_read(tls, (*IncrblobChannel)(unsafe.Pointer(p)).FpBlob, buf, nRead, (*IncrblobChannel)(unsafe.Pointer(p)).FiSeek)
 30154  	if rc != SQLITE_OK {
 30155  		*(*int32)(unsafe.Pointer(errorCodePtr)) = rc
 30156  		return -1
 30157  	}
 30158  
 30159  	*(*int32)(unsafe.Pointer(p + 16)) += nRead
 30160  	return nRead
 30161  }
 30162  
 30163  func incrblobOutput(tls *libc.TLS, instanceData ClientData, buf uintptr, toWrite int32, errorCodePtr uintptr) int32 {
 30164  	var p uintptr = instanceData
 30165  	var nWrite int32 = toWrite
 30166  	var nBlob int32
 30167  	var rc int32
 30168  
 30169  	nBlob = sqlite3.Xsqlite3_blob_bytes(tls, (*IncrblobChannel)(unsafe.Pointer(p)).FpBlob)
 30170  	if (*IncrblobChannel)(unsafe.Pointer(p)).FiSeek+nWrite > nBlob {
 30171  		*(*int32)(unsafe.Pointer(errorCodePtr)) = EINVAL
 30172  		return -1
 30173  	}
 30174  	if nWrite <= 0 {
 30175  		return 0
 30176  	}
 30177  
 30178  	rc = sqlite3.Xsqlite3_blob_write(tls, (*IncrblobChannel)(unsafe.Pointer(p)).FpBlob, buf, nWrite, (*IncrblobChannel)(unsafe.Pointer(p)).FiSeek)
 30179  	if rc != SQLITE_OK {
 30180  		*(*int32)(unsafe.Pointer(errorCodePtr)) = EIO
 30181  		return -1
 30182  	}
 30183  
 30184  	*(*int32)(unsafe.Pointer(p + 16)) += nWrite
 30185  	return nWrite
 30186  }
 30187  
 30188  func incrblobSeek(tls *libc.TLS, instanceData ClientData, offset int64, seekMode int32, errorCodePtr uintptr) int32 {
 30189  	var p uintptr = instanceData
 30190  
 30191  	switch seekMode {
 30192  	case SEEK_SET:
 30193  		(*IncrblobChannel)(unsafe.Pointer(p)).FiSeek = int32(offset)
 30194  		break
 30195  	case SEEK_CUR:
 30196  		*(*int32)(unsafe.Pointer(p + 16)) += int32(offset)
 30197  		break
 30198  	case SEEK_END:
 30199  		(*IncrblobChannel)(unsafe.Pointer(p)).FiSeek = int32(int64(sqlite3.Xsqlite3_blob_bytes(tls, (*IncrblobChannel)(unsafe.Pointer(p)).FpBlob)) + offset)
 30200  		break
 30201  
 30202  	default:
 30203  	}
 30204  
 30205  	return (*IncrblobChannel)(unsafe.Pointer(p)).FiSeek
 30206  }
 30207  
 30208  func incrblobWatch(tls *libc.TLS, instanceData ClientData, mode int32) {
 30209  }
 30210  
 30211  func incrblobHandle(tls *libc.TLS, instanceData ClientData, dir int32, hPtr uintptr) int32 {
 30212  	return TCL_ERROR
 30213  }
 30214  
 30215  var IncrblobChannelType = Tcl_ChannelType{
 30216  	FtypeName:      ts + 10868,
 30217  	Fversion:       uintptr(0x2),
 30218  	FcloseProc:     0,
 30219  	FinputProc:     0,
 30220  	FoutputProc:    0,
 30221  	FseekProc:      0,
 30222  	FwatchProc:     0,
 30223  	FgetHandleProc: 0,
 30224  }
 30225  
 30226  func createIncrblobChannel(tls *libc.TLS, interp uintptr, pDb uintptr, zDb uintptr, zTable uintptr, zColumn uintptr, iRow sqlite_int64, isReadonly int32) int32 {
 30227  	bp := tls.Alloc(80)
 30228  	defer tls.Free(80)
 30229  
 30230  	var p uintptr
 30231  	var db uintptr = (*SqliteDb)(unsafe.Pointer(pDb)).Fdb
 30232  
 30233  	var rc int32
 30234  	var flags int32 = int32(1)<<1 | func() int32 {
 30235  		if isReadonly != 0 {
 30236  			return 0
 30237  		}
 30238  		return int32(1) << 2
 30239  	}()
 30240  
 30241  	rc = sqlite3.Xsqlite3_blob_open(tls, db, zDb, zTable, zColumn, iRow, libc.BoolInt32(!(isReadonly != 0)), bp+8)
 30242  	if rc != SQLITE_OK {
 30243  		tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3_errmsg(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb), uintptr(1))
 30244  		return TCL_ERROR
 30245  	}
 30246  
 30247  	p = tcl.XTcl_Alloc(tls, uint32(unsafe.Sizeof(IncrblobChannel{})))
 30248  	(*IncrblobChannel)(unsafe.Pointer(p)).FiSeek = 0
 30249  	(*IncrblobChannel)(unsafe.Pointer(p)).FpBlob = *(*uintptr)(unsafe.Pointer(bp + 8))
 30250  
 30251  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([64]int8{})), bp+16, ts+10877, libc.VaList(bp, libc.PreIncInt32(&count, 1)))
 30252  	(*IncrblobChannel)(unsafe.Pointer(p)).Fchannel = tcl.XTcl_CreateChannel(tls, uintptr(unsafe.Pointer(&IncrblobChannelType)), bp+16, p, flags)
 30253  	tcl.XTcl_RegisterChannel(tls, interp, (*IncrblobChannel)(unsafe.Pointer(p)).Fchannel)
 30254  
 30255  	(*IncrblobChannel)(unsafe.Pointer(p)).FpNext = (*SqliteDb)(unsafe.Pointer(pDb)).FpIncrblob
 30256  	(*IncrblobChannel)(unsafe.Pointer(p)).FpPrev = uintptr(0)
 30257  	if (*IncrblobChannel)(unsafe.Pointer(p)).FpNext != 0 {
 30258  		(*IncrblobChannel)(unsafe.Pointer((*IncrblobChannel)(unsafe.Pointer(p)).FpNext)).FpPrev = p
 30259  	}
 30260  	(*SqliteDb)(unsafe.Pointer(pDb)).FpIncrblob = p
 30261  	(*IncrblobChannel)(unsafe.Pointer(p)).FpDb = pDb
 30262  
 30263  	tcl.XTcl_SetResult(tls, interp, tcl.XTcl_GetChannelName(tls, (*IncrblobChannel)(unsafe.Pointer(p)).Fchannel), uintptr(1))
 30264  	return TCL_OK
 30265  }
 30266  
 30267  var count int32 = 0
 30268  
 30269  func safeToUseEvalObjv(tls *libc.TLS, interp uintptr, pCmd uintptr) int32 {
 30270  	bp := tls.Alloc(4)
 30271  	defer tls.Free(4)
 30272  
 30273  	var z uintptr
 30274  
 30275  	z = tcl.XTcl_GetStringFromObj(tls, pCmd, bp)
 30276  	for libc.PostDecInt32(&*(*int32)(unsafe.Pointer(bp)), 1) > 0 {
 30277  		var c int32 = int32(*(*int8)(unsafe.Pointer(libc.PostIncUintptr(&z, 1))))
 30278  		if c == '$' || c == '[' || c == ';' {
 30279  			return 0
 30280  		}
 30281  	}
 30282  	return 1
 30283  }
 30284  
 30285  func findSqlFunc(tls *libc.TLS, pDb uintptr, zName uintptr) uintptr {
 30286  	var p uintptr
 30287  	var pNew uintptr
 30288  	var nName int32 = strlen30(tls, zName)
 30289  	pNew = tcl.XTcl_Alloc(tls, uint32(uint64(unsafe.Sizeof(SqlFunc{}))+uint64(nName)+uint64(1)))
 30290  	(*SqlFunc)(unsafe.Pointer(pNew)).FzName = pNew + 1*48
 30291  	libc.X__builtin___memcpy_chk(tls, (*SqlFunc)(unsafe.Pointer(pNew)).FzName, zName, uint64(nName+1), libc.X__builtin_object_size(tls, (*SqlFunc)(unsafe.Pointer(pNew)).FzName, 0))
 30292  	for p = (*SqliteDb)(unsafe.Pointer(pDb)).FpFunc; p != 0; p = (*SqlFunc)(unsafe.Pointer(p)).FpNext {
 30293  		if sqlite3.Xsqlite3_stricmp(tls, (*SqlFunc)(unsafe.Pointer(p)).FzName, (*SqlFunc)(unsafe.Pointer(pNew)).FzName) == 0 {
 30294  			tcl.XTcl_Free(tls, pNew)
 30295  			return p
 30296  		}
 30297  	}
 30298  	(*SqlFunc)(unsafe.Pointer(pNew)).Finterp = (*SqliteDb)(unsafe.Pointer(pDb)).Finterp
 30299  	(*SqlFunc)(unsafe.Pointer(pNew)).FpDb = pDb
 30300  	(*SqlFunc)(unsafe.Pointer(pNew)).FpScript = uintptr(0)
 30301  	(*SqlFunc)(unsafe.Pointer(pNew)).FpNext = (*SqliteDb)(unsafe.Pointer(pDb)).FpFunc
 30302  	(*SqliteDb)(unsafe.Pointer(pDb)).FpFunc = pNew
 30303  	return pNew
 30304  }
 30305  
 30306  func dbFreeStmt(tls *libc.TLS, pStmt uintptr) {
 30307  	if sqlite3.Xsqlite3_sql(tls, (*SqlPreparedStmt)(unsafe.Pointer(pStmt)).FpStmt) == uintptr(0) {
 30308  		tcl.XTcl_Free(tls, (*SqlPreparedStmt)(unsafe.Pointer(pStmt)).FzSql)
 30309  	}
 30310  	sqlite3.Xsqlite3_finalize(tls, (*SqlPreparedStmt)(unsafe.Pointer(pStmt)).FpStmt)
 30311  	tcl.XTcl_Free(tls, pStmt)
 30312  }
 30313  
 30314  func flushStmtCache(tls *libc.TLS, pDb uintptr) {
 30315  	var pPreStmt uintptr
 30316  	var pNext uintptr
 30317  
 30318  	for pPreStmt = (*SqliteDb)(unsafe.Pointer(pDb)).FstmtList; pPreStmt != 0; pPreStmt = pNext {
 30319  		pNext = (*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FpNext
 30320  		dbFreeStmt(tls, pPreStmt)
 30321  	}
 30322  	(*SqliteDb)(unsafe.Pointer(pDb)).FnStmt = 0
 30323  	(*SqliteDb)(unsafe.Pointer(pDb)).FstmtLast = uintptr(0)
 30324  	(*SqliteDb)(unsafe.Pointer(pDb)).FstmtList = uintptr(0)
 30325  }
 30326  
 30327  func addDatabaseRef(tls *libc.TLS, pDb uintptr) {
 30328  	(*SqliteDb)(unsafe.Pointer(pDb)).FnRef++
 30329  }
 30330  
 30331  func delDatabaseRef(tls *libc.TLS, pDb uintptr) {
 30332  	(*SqliteDb)(unsafe.Pointer(pDb)).FnRef--
 30333  	if (*SqliteDb)(unsafe.Pointer(pDb)).FnRef == 0 {
 30334  		flushStmtCache(tls, pDb)
 30335  		closeIncrblobChannels(tls, pDb)
 30336  		sqlite3.Xsqlite3_close(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb)
 30337  		for (*SqliteDb)(unsafe.Pointer(pDb)).FpFunc != 0 {
 30338  			var pFunc uintptr = (*SqliteDb)(unsafe.Pointer(pDb)).FpFunc
 30339  			(*SqliteDb)(unsafe.Pointer(pDb)).FpFunc = (*SqlFunc)(unsafe.Pointer(pFunc)).FpNext
 30340  
 30341  			for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 30342  				if libc.PreDecInt32(&(*Tcl_Obj)(unsafe.Pointer((*SqlFunc)(unsafe.Pointer(pFunc)).FpScript)).FrefCount, 1) <= 0 {
 30343  					tcl.XTclFreeObj(tls, (*SqlFunc)(unsafe.Pointer(pFunc)).FpScript)
 30344  				}
 30345  			}
 30346  			tcl.XTcl_Free(tls, pFunc)
 30347  		}
 30348  		for (*SqliteDb)(unsafe.Pointer(pDb)).FpCollate != 0 {
 30349  			var pCollate uintptr = (*SqliteDb)(unsafe.Pointer(pDb)).FpCollate
 30350  			(*SqliteDb)(unsafe.Pointer(pDb)).FpCollate = (*SqlCollate)(unsafe.Pointer(pCollate)).FpNext
 30351  			tcl.XTcl_Free(tls, pCollate)
 30352  		}
 30353  		if (*SqliteDb)(unsafe.Pointer(pDb)).FzBusy != 0 {
 30354  			tcl.XTcl_Free(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzBusy)
 30355  		}
 30356  		if (*SqliteDb)(unsafe.Pointer(pDb)).FzTrace != 0 {
 30357  			tcl.XTcl_Free(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzTrace)
 30358  		}
 30359  		if (*SqliteDb)(unsafe.Pointer(pDb)).FzTraceV2 != 0 {
 30360  			tcl.XTcl_Free(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzTraceV2)
 30361  		}
 30362  		if (*SqliteDb)(unsafe.Pointer(pDb)).FzProfile != 0 {
 30363  			tcl.XTcl_Free(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzProfile)
 30364  		}
 30365  		if (*SqliteDb)(unsafe.Pointer(pDb)).FzBindFallback != 0 {
 30366  			tcl.XTcl_Free(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzBindFallback)
 30367  		}
 30368  		if (*SqliteDb)(unsafe.Pointer(pDb)).FzAuth != 0 {
 30369  			tcl.XTcl_Free(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzAuth)
 30370  		}
 30371  		if (*SqliteDb)(unsafe.Pointer(pDb)).FzNull != 0 {
 30372  			tcl.XTcl_Free(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzNull)
 30373  		}
 30374  		if (*SqliteDb)(unsafe.Pointer(pDb)).FpUpdateHook != 0 {
 30375  			for __ccgo1 := true; __ccgo1; __ccgo1 = 0 != 0 {
 30376  				if libc.PreDecInt32(&(*Tcl_Obj)(unsafe.Pointer((*SqliteDb)(unsafe.Pointer(pDb)).FpUpdateHook)).FrefCount, 1) <= 0 {
 30377  					tcl.XTclFreeObj(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FpUpdateHook)
 30378  				}
 30379  			}
 30380  		}
 30381  		if (*SqliteDb)(unsafe.Pointer(pDb)).FpPreUpdateHook != 0 {
 30382  			for __ccgo2 := true; __ccgo2; __ccgo2 = 0 != 0 {
 30383  				if libc.PreDecInt32(&(*Tcl_Obj)(unsafe.Pointer((*SqliteDb)(unsafe.Pointer(pDb)).FpPreUpdateHook)).FrefCount, 1) <= 0 {
 30384  					tcl.XTclFreeObj(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FpPreUpdateHook)
 30385  				}
 30386  			}
 30387  		}
 30388  		if (*SqliteDb)(unsafe.Pointer(pDb)).FpRollbackHook != 0 {
 30389  			for __ccgo3 := true; __ccgo3; __ccgo3 = 0 != 0 {
 30390  				if libc.PreDecInt32(&(*Tcl_Obj)(unsafe.Pointer((*SqliteDb)(unsafe.Pointer(pDb)).FpRollbackHook)).FrefCount, 1) <= 0 {
 30391  					tcl.XTclFreeObj(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FpRollbackHook)
 30392  				}
 30393  			}
 30394  		}
 30395  		if (*SqliteDb)(unsafe.Pointer(pDb)).FpWalHook != 0 {
 30396  			for __ccgo4 := true; __ccgo4; __ccgo4 = 0 != 0 {
 30397  				if libc.PreDecInt32(&(*Tcl_Obj)(unsafe.Pointer((*SqliteDb)(unsafe.Pointer(pDb)).FpWalHook)).FrefCount, 1) <= 0 {
 30398  					tcl.XTclFreeObj(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FpWalHook)
 30399  				}
 30400  			}
 30401  		}
 30402  		if (*SqliteDb)(unsafe.Pointer(pDb)).FpCollateNeeded != 0 {
 30403  			for __ccgo5 := true; __ccgo5; __ccgo5 = 0 != 0 {
 30404  				if libc.PreDecInt32(&(*Tcl_Obj)(unsafe.Pointer((*SqliteDb)(unsafe.Pointer(pDb)).FpCollateNeeded)).FrefCount, 1) <= 0 {
 30405  					tcl.XTclFreeObj(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FpCollateNeeded)
 30406  				}
 30407  			}
 30408  		}
 30409  		tcl.XTcl_Free(tls, pDb)
 30410  	}
 30411  }
 30412  
 30413  func DbDeleteCmd(tls *libc.TLS, db uintptr) {
 30414  	var pDb uintptr = db
 30415  	delDatabaseRef(tls, pDb)
 30416  }
 30417  
 30418  func DbBusyHandler(tls *libc.TLS, cd uintptr, nTries int32) int32 {
 30419  	bp := tls.Alloc(70)
 30420  	defer tls.Free(70)
 30421  
 30422  	var pDb uintptr = cd
 30423  	var rc int32
 30424  
 30425  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([30]int8{})), bp+40, ts+1333, libc.VaList(bp, nTries))
 30426  	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)))
 30427  	if rc != TCL_OK || libc.Xatoi(tls, tcl.XTcl_GetStringResult(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp)) != 0 {
 30428  		return 0
 30429  	}
 30430  	return 1
 30431  }
 30432  
 30433  func DbProgressHandler(tls *libc.TLS, cd uintptr) int32 {
 30434  	var pDb uintptr = cd
 30435  	var rc int32
 30436  
 30437  	rc = tcl.XTcl_Eval(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp, (*SqliteDb)(unsafe.Pointer(pDb)).FzProgress)
 30438  	if rc != TCL_OK || libc.Xatoi(tls, tcl.XTcl_GetStringResult(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp)) != 0 {
 30439  		return 1
 30440  	}
 30441  	return 0
 30442  }
 30443  
 30444  func DbTraceHandler(tls *libc.TLS, cd uintptr, zSql uintptr) {
 30445  	bp := tls.Alloc(216)
 30446  	defer tls.Free(216)
 30447  
 30448  	var pDb uintptr = cd
 30449  
 30450  	tcl.XTcl_DStringInit(tls, bp)
 30451  	tcl.XTcl_DStringAppend(tls, bp, (*SqliteDb)(unsafe.Pointer(pDb)).FzTrace, -1)
 30452  	tcl.XTcl_DStringAppendElement(tls, bp, zSql)
 30453  	tcl.XTcl_Eval(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp, (*Tcl_DString)(unsafe.Pointer(bp)).Fstring)
 30454  	tcl.XTcl_DStringFree(tls, bp)
 30455  	tcl.XTcl_ResetResult(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp)
 30456  }
 30457  
 30458  func DbTraceV2Handler(tls *libc.TLS, type1 uint32, cd uintptr, pd uintptr, xd uintptr) int32 {
 30459  	var pDb uintptr = cd
 30460  	var pCmd uintptr
 30461  
 30462  	switch type1 {
 30463  	case uint32(SQLITE_TRACE_STMT):
 30464  		{
 30465  			var pStmt uintptr = pd
 30466  			var zSql uintptr = xd
 30467  
 30468  			pCmd = tcl.XTcl_NewStringObj(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzTraceV2, -1)
 30469  			(*Tcl_Obj)(unsafe.Pointer(pCmd)).FrefCount++
 30470  			tcl.XTcl_ListObjAppendElement(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp, pCmd,
 30471  				tcl.XTcl_NewWideIntObj(tls, int64(pStmt)))
 30472  			tcl.XTcl_ListObjAppendElement(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp, pCmd,
 30473  				tcl.XTcl_NewStringObj(tls, zSql, -1))
 30474  			tcl.XTcl_EvalObjEx(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp, pCmd, TCL_EVAL_DIRECT)
 30475  			for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 30476  				if libc.PreDecInt32(&(*Tcl_Obj)(unsafe.Pointer(pCmd)).FrefCount, 1) <= 0 {
 30477  					tcl.XTclFreeObj(tls, pCmd)
 30478  				}
 30479  			}
 30480  			tcl.XTcl_ResetResult(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp)
 30481  			break
 30482  
 30483  		}
 30484  	case uint32(SQLITE_TRACE_PROFILE):
 30485  		{
 30486  			var pStmt uintptr = pd
 30487  			var ns sqlite3_int64 = *(*sqlite3_int64)(unsafe.Pointer(xd))
 30488  
 30489  			pCmd = tcl.XTcl_NewStringObj(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzTraceV2, -1)
 30490  			(*Tcl_Obj)(unsafe.Pointer(pCmd)).FrefCount++
 30491  			tcl.XTcl_ListObjAppendElement(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp, pCmd,
 30492  				tcl.XTcl_NewWideIntObj(tls, int64(pStmt)))
 30493  			tcl.XTcl_ListObjAppendElement(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp, pCmd,
 30494  				tcl.XTcl_NewWideIntObj(tls, ns))
 30495  			tcl.XTcl_EvalObjEx(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp, pCmd, TCL_EVAL_DIRECT)
 30496  			for __ccgo1 := true; __ccgo1; __ccgo1 = 0 != 0 {
 30497  				if libc.PreDecInt32(&(*Tcl_Obj)(unsafe.Pointer(pCmd)).FrefCount, 1) <= 0 {
 30498  					tcl.XTclFreeObj(tls, pCmd)
 30499  				}
 30500  			}
 30501  			tcl.XTcl_ResetResult(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp)
 30502  			break
 30503  
 30504  		}
 30505  	case uint32(SQLITE_TRACE_ROW):
 30506  		{
 30507  			var pStmt uintptr = pd
 30508  
 30509  			pCmd = tcl.XTcl_NewStringObj(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzTraceV2, -1)
 30510  			(*Tcl_Obj)(unsafe.Pointer(pCmd)).FrefCount++
 30511  			tcl.XTcl_ListObjAppendElement(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp, pCmd,
 30512  				tcl.XTcl_NewWideIntObj(tls, int64(pStmt)))
 30513  			tcl.XTcl_EvalObjEx(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp, pCmd, TCL_EVAL_DIRECT)
 30514  			for __ccgo2 := true; __ccgo2; __ccgo2 = 0 != 0 {
 30515  				if libc.PreDecInt32(&(*Tcl_Obj)(unsafe.Pointer(pCmd)).FrefCount, 1) <= 0 {
 30516  					tcl.XTclFreeObj(tls, pCmd)
 30517  				}
 30518  			}
 30519  			tcl.XTcl_ResetResult(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp)
 30520  			break
 30521  
 30522  		}
 30523  	case uint32(SQLITE_TRACE_CLOSE):
 30524  		{
 30525  			var db uintptr = pd
 30526  
 30527  			pCmd = tcl.XTcl_NewStringObj(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzTraceV2, -1)
 30528  			(*Tcl_Obj)(unsafe.Pointer(pCmd)).FrefCount++
 30529  			tcl.XTcl_ListObjAppendElement(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp, pCmd,
 30530  				tcl.XTcl_NewWideIntObj(tls, int64(db)))
 30531  			tcl.XTcl_EvalObjEx(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp, pCmd, TCL_EVAL_DIRECT)
 30532  			for __ccgo3 := true; __ccgo3; __ccgo3 = 0 != 0 {
 30533  				if libc.PreDecInt32(&(*Tcl_Obj)(unsafe.Pointer(pCmd)).FrefCount, 1) <= 0 {
 30534  					tcl.XTclFreeObj(tls, pCmd)
 30535  				}
 30536  			}
 30537  			tcl.XTcl_ResetResult(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp)
 30538  			break
 30539  
 30540  		}
 30541  	}
 30542  	return SQLITE_OK
 30543  }
 30544  
 30545  func DbProfileHandler(tls *libc.TLS, cd uintptr, zSql uintptr, tm1 sqlite_uint64) {
 30546  	bp := tls.Alloc(328)
 30547  	defer tls.Free(328)
 30548  
 30549  	var pDb uintptr = cd
 30550  
 30551  	sqlite3.Xsqlite3_snprintf(tls, int32(uint64(unsafe.Sizeof([100]int8{}))-uint64(1)), bp+8, ts+6325, libc.VaList(bp, tm1))
 30552  	tcl.XTcl_DStringInit(tls, bp+112)
 30553  	tcl.XTcl_DStringAppend(tls, bp+112, (*SqliteDb)(unsafe.Pointer(pDb)).FzProfile, -1)
 30554  	tcl.XTcl_DStringAppendElement(tls, bp+112, zSql)
 30555  	tcl.XTcl_DStringAppendElement(tls, bp+112, bp+8)
 30556  	tcl.XTcl_Eval(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp, (*Tcl_DString)(unsafe.Pointer(bp+112)).Fstring)
 30557  	tcl.XTcl_DStringFree(tls, bp+112)
 30558  	tcl.XTcl_ResetResult(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp)
 30559  }
 30560  
 30561  func DbCommitHandler(tls *libc.TLS, cd uintptr) int32 {
 30562  	var pDb uintptr = cd
 30563  	var rc int32
 30564  
 30565  	rc = tcl.XTcl_Eval(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp, (*SqliteDb)(unsafe.Pointer(pDb)).FzCommit)
 30566  	if rc != TCL_OK || libc.Xatoi(tls, tcl.XTcl_GetStringResult(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp)) != 0 {
 30567  		return 1
 30568  	}
 30569  	return 0
 30570  }
 30571  
 30572  func DbRollbackHandler(tls *libc.TLS, clientData uintptr) {
 30573  	var pDb uintptr = clientData
 30574  
 30575  	if TCL_OK != tcl.XTcl_EvalObjEx(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp, (*SqliteDb)(unsafe.Pointer(pDb)).FpRollbackHook, 0) {
 30576  		tcl.XTcl_BackgroundError(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp)
 30577  	}
 30578  }
 30579  
 30580  func DbWalHandler(tls *libc.TLS, clientData uintptr, db uintptr, zDb uintptr, nEntry int32) int32 {
 30581  	bp := tls.Alloc(4)
 30582  	defer tls.Free(4)
 30583  
 30584  	*(*int32)(unsafe.Pointer(bp)) = SQLITE_OK
 30585  	var p uintptr
 30586  	var pDb uintptr = clientData
 30587  	var interp uintptr = (*SqliteDb)(unsafe.Pointer(pDb)).Finterp
 30588  
 30589  	p = tcl.XTcl_DuplicateObj(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FpWalHook)
 30590  	(*Tcl_Obj)(unsafe.Pointer(p)).FrefCount++
 30591  	tcl.XTcl_ListObjAppendElement(tls, interp, p, tcl.XTcl_NewStringObj(tls, zDb, -1))
 30592  	tcl.XTcl_ListObjAppendElement(tls, interp, p, tcl.XTcl_NewIntObj(tls, nEntry))
 30593  	if TCL_OK != tcl.XTcl_EvalObjEx(tls, interp, p, 0) ||
 30594  		TCL_OK != tcl.XTcl_GetIntFromObj(tls, interp, tcl.XTcl_GetObjResult(tls, interp), bp) {
 30595  		tcl.XTcl_BackgroundError(tls, interp)
 30596  	}
 30597  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 30598  		if libc.PreDecInt32(&(*Tcl_Obj)(unsafe.Pointer(p)).FrefCount, 1) <= 0 {
 30599  			tcl.XTclFreeObj(tls, p)
 30600  		}
 30601  	}
 30602  
 30603  	return *(*int32)(unsafe.Pointer(bp))
 30604  }
 30605  
 30606  func setTestUnlockNotifyVars(tls *libc.TLS, interp uintptr, iArg int32, nArg int32) {
 30607  	bp := tls.Alloc(80)
 30608  	defer tls.Free(80)
 30609  
 30610  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([64]int8{})), bp+16, ts+1333, libc.VaList(bp, iArg))
 30611  	tcl.XTcl_SetVar(tls, interp, ts+10889, bp+16, TCL_GLOBAL_ONLY)
 30612  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([64]int8{})), bp+16, ts+1333, libc.VaList(bp+8, nArg))
 30613  	tcl.XTcl_SetVar(tls, interp, ts+10914, bp+16, TCL_GLOBAL_ONLY)
 30614  }
 30615  
 30616  func DbUnlockNotify(tls *libc.TLS, apArg uintptr, nArg int32) {
 30617  	var i int32
 30618  	for i = 0; i < nArg; i++ {
 30619  		var flags int32 = TCL_EVAL_GLOBAL | TCL_EVAL_DIRECT
 30620  		var pDb uintptr = *(*uintptr)(unsafe.Pointer(apArg + uintptr(i)*8))
 30621  		setTestUnlockNotifyVars(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp, i, nArg)
 30622  
 30623  		tcl.XTcl_EvalObjEx(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp, (*SqliteDb)(unsafe.Pointer(pDb)).FpUnlockNotify, flags)
 30624  		for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 30625  			if libc.PreDecInt32(&(*Tcl_Obj)(unsafe.Pointer((*SqliteDb)(unsafe.Pointer(pDb)).FpUnlockNotify)).FrefCount, 1) <= 0 {
 30626  				tcl.XTclFreeObj(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FpUnlockNotify)
 30627  			}
 30628  		}
 30629  		(*SqliteDb)(unsafe.Pointer(pDb)).FpUnlockNotify = uintptr(0)
 30630  	}
 30631  }
 30632  
 30633  func DbPreUpdateHandler(tls *libc.TLS, p uintptr, db uintptr, op int32, zDb uintptr, zTbl uintptr, iKey1 sqlite_int64, iKey2 sqlite_int64) {
 30634  	var pDb uintptr = p
 30635  	var pCmd uintptr
 30636  
 30637  	pCmd = tcl.XTcl_DuplicateObj(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FpPreUpdateHook)
 30638  	(*Tcl_Obj)(unsafe.Pointer(pCmd)).FrefCount++
 30639  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pCmd, tcl.XTcl_NewStringObj(tls, azStr[(op-1)/9], -1))
 30640  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pCmd, tcl.XTcl_NewStringObj(tls, zDb, -1))
 30641  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pCmd, tcl.XTcl_NewStringObj(tls, zTbl, -1))
 30642  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pCmd, tcl.XTcl_NewWideIntObj(tls, iKey1))
 30643  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pCmd, tcl.XTcl_NewWideIntObj(tls, iKey2))
 30644  	tcl.XTcl_EvalObjEx(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp, pCmd, TCL_EVAL_DIRECT)
 30645  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 30646  		if libc.PreDecInt32(&(*Tcl_Obj)(unsafe.Pointer(pCmd)).FrefCount, 1) <= 0 {
 30647  			tcl.XTclFreeObj(tls, pCmd)
 30648  		}
 30649  	}
 30650  }
 30651  
 30652  var azStr = [3]uintptr{ts + 10321, ts + 10307, ts + 10314}
 30653  
 30654  func DbUpdateHandler(tls *libc.TLS, p uintptr, op int32, zDb uintptr, zTbl uintptr, rowid sqlite_int64) {
 30655  	var pDb uintptr = p
 30656  	var pCmd uintptr
 30657  
 30658  	pCmd = tcl.XTcl_DuplicateObj(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FpUpdateHook)
 30659  	(*Tcl_Obj)(unsafe.Pointer(pCmd)).FrefCount++
 30660  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pCmd, tcl.XTcl_NewStringObj(tls, azStr1[(op-1)/9], -1))
 30661  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pCmd, tcl.XTcl_NewStringObj(tls, zDb, -1))
 30662  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pCmd, tcl.XTcl_NewStringObj(tls, zTbl, -1))
 30663  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pCmd, tcl.XTcl_NewWideIntObj(tls, rowid))
 30664  	tcl.XTcl_EvalObjEx(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp, pCmd, TCL_EVAL_DIRECT)
 30665  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 30666  		if libc.PreDecInt32(&(*Tcl_Obj)(unsafe.Pointer(pCmd)).FrefCount, 1) <= 0 {
 30667  			tcl.XTclFreeObj(tls, pCmd)
 30668  		}
 30669  	}
 30670  }
 30671  
 30672  var azStr1 = [3]uintptr{ts + 10321, ts + 10307, ts + 10314}
 30673  
 30674  func tclCollateNeeded(tls *libc.TLS, pCtx uintptr, db uintptr, enc int32, zName uintptr) {
 30675  	var pDb uintptr = pCtx
 30676  	var pScript uintptr = tcl.XTcl_DuplicateObj(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FpCollateNeeded)
 30677  	(*Tcl_Obj)(unsafe.Pointer(pScript)).FrefCount++
 30678  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pScript, tcl.XTcl_NewStringObj(tls, zName, -1))
 30679  	tcl.XTcl_EvalObjEx(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp, pScript, 0)
 30680  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 30681  		if libc.PreDecInt32(&(*Tcl_Obj)(unsafe.Pointer(pScript)).FrefCount, 1) <= 0 {
 30682  			tcl.XTclFreeObj(tls, pScript)
 30683  		}
 30684  	}
 30685  }
 30686  
 30687  func tclSqlCollate(tls *libc.TLS, pCtx uintptr, nA int32, zA uintptr, nB int32, zB uintptr) int32 {
 30688  	var p uintptr = pCtx
 30689  	var pCmd uintptr
 30690  
 30691  	pCmd = tcl.XTcl_NewStringObj(tls, (*SqlCollate)(unsafe.Pointer(p)).FzScript, -1)
 30692  	(*Tcl_Obj)(unsafe.Pointer(pCmd)).FrefCount++
 30693  	tcl.XTcl_ListObjAppendElement(tls, (*SqlCollate)(unsafe.Pointer(p)).Finterp, pCmd, tcl.XTcl_NewStringObj(tls, zA, nA))
 30694  	tcl.XTcl_ListObjAppendElement(tls, (*SqlCollate)(unsafe.Pointer(p)).Finterp, pCmd, tcl.XTcl_NewStringObj(tls, zB, nB))
 30695  	tcl.XTcl_EvalObjEx(tls, (*SqlCollate)(unsafe.Pointer(p)).Finterp, pCmd, TCL_EVAL_DIRECT)
 30696  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 30697  		if libc.PreDecInt32(&(*Tcl_Obj)(unsafe.Pointer(pCmd)).FrefCount, 1) <= 0 {
 30698  			tcl.XTclFreeObj(tls, pCmd)
 30699  		}
 30700  	}
 30701  	return libc.Xatoi(tls, tcl.XTcl_GetStringResult(tls, (*SqlCollate)(unsafe.Pointer(p)).Finterp))
 30702  }
 30703  
 30704  func tclSqlFunc(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 30705  	bp := tls.Alloc(40)
 30706  	defer tls.Free(40)
 30707  
 30708  	var p uintptr = sqlite3.Xsqlite3_user_data(tls, context)
 30709  	var pCmd uintptr
 30710  	var i int32
 30711  	var rc int32
 30712  
 30713  	if argc == 0 {
 30714  		pCmd = (*SqlFunc)(unsafe.Pointer(p)).FpScript
 30715  		(*Tcl_Obj)(unsafe.Pointer(pCmd)).FrefCount++
 30716  		rc = tcl.XTcl_EvalObjEx(tls, (*SqlFunc)(unsafe.Pointer(p)).Finterp, pCmd, 0)
 30717  		for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 30718  			if libc.PreDecInt32(&(*Tcl_Obj)(unsafe.Pointer(pCmd)).FrefCount, 1) <= 0 {
 30719  				tcl.XTclFreeObj(tls, pCmd)
 30720  			}
 30721  		}
 30722  	} else {
 30723  		if tcl.XTcl_ListObjGetElements(tls, (*SqlFunc)(unsafe.Pointer(p)).Finterp, (*SqlFunc)(unsafe.Pointer(p)).FpScript, bp, bp+8) != 0 {
 30724  			sqlite3.Xsqlite3_result_error(tls, context, tcl.XTcl_GetStringResult(tls, (*SqlFunc)(unsafe.Pointer(p)).Finterp), -1)
 30725  			return
 30726  		}
 30727  		pCmd = tcl.XTcl_NewListObj(tls, *(*int32)(unsafe.Pointer(bp)), *(*uintptr)(unsafe.Pointer(bp + 8)))
 30728  		(*Tcl_Obj)(unsafe.Pointer(pCmd)).FrefCount++
 30729  		for i = 0; i < argc; i++ {
 30730  			var pIn uintptr = *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8))
 30731  			var pVal uintptr
 30732  
 30733  			switch sqlite3.Xsqlite3_value_type(tls, pIn) {
 30734  			case SQLITE_BLOB:
 30735  				{
 30736  					var bytes int32 = sqlite3.Xsqlite3_value_bytes(tls, pIn)
 30737  					pVal = tcl.XTcl_NewByteArrayObj(tls, sqlite3.Xsqlite3_value_blob(tls, pIn), bytes)
 30738  					break
 30739  
 30740  				}
 30741  				fallthrough
 30742  			case SQLITE_INTEGER:
 30743  				{
 30744  					var v sqlite_int64 = sqlite3.Xsqlite3_value_int64(tls, pIn)
 30745  					if v >= int64(-2147483647) && v <= int64(2147483647) {
 30746  						pVal = tcl.XTcl_NewIntObj(tls, int32(v))
 30747  					} else {
 30748  						pVal = tcl.XTcl_NewWideIntObj(tls, v)
 30749  					}
 30750  					break
 30751  
 30752  				}
 30753  				fallthrough
 30754  			case SQLITE_FLOAT:
 30755  				{
 30756  					var r float64 = sqlite3.Xsqlite3_value_double(tls, pIn)
 30757  					pVal = tcl.XTcl_NewDoubleObj(tls, r)
 30758  					break
 30759  
 30760  				}
 30761  				fallthrough
 30762  			case SQLITE_NULL:
 30763  				{
 30764  					pVal = tcl.XTcl_NewStringObj(tls, (*SqliteDb)(unsafe.Pointer((*SqlFunc)(unsafe.Pointer(p)).FpDb)).FzNull, -1)
 30765  					break
 30766  
 30767  				}
 30768  				fallthrough
 30769  			default:
 30770  				{
 30771  					var bytes int32 = sqlite3.Xsqlite3_value_bytes(tls, pIn)
 30772  					pVal = tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3_value_text(tls, pIn), bytes)
 30773  					break
 30774  
 30775  				}
 30776  			}
 30777  			rc = tcl.XTcl_ListObjAppendElement(tls, (*SqlFunc)(unsafe.Pointer(p)).Finterp, pCmd, pVal)
 30778  			if rc != 0 {
 30779  				for __ccgo1 := true; __ccgo1; __ccgo1 = 0 != 0 {
 30780  					if libc.PreDecInt32(&(*Tcl_Obj)(unsafe.Pointer(pCmd)).FrefCount, 1) <= 0 {
 30781  						tcl.XTclFreeObj(tls, pCmd)
 30782  					}
 30783  				}
 30784  				sqlite3.Xsqlite3_result_error(tls, context, tcl.XTcl_GetStringResult(tls, (*SqlFunc)(unsafe.Pointer(p)).Finterp), -1)
 30785  				return
 30786  			}
 30787  		}
 30788  		if !((*SqlFunc)(unsafe.Pointer(p)).FuseEvalObjv != 0) {
 30789  			tcl.XTcl_GetString(tls, pCmd)
 30790  		}
 30791  		rc = tcl.XTcl_EvalObjEx(tls, (*SqlFunc)(unsafe.Pointer(p)).Finterp, pCmd, TCL_EVAL_DIRECT)
 30792  		for __ccgo2 := true; __ccgo2; __ccgo2 = 0 != 0 {
 30793  			if libc.PreDecInt32(&(*Tcl_Obj)(unsafe.Pointer(pCmd)).FrefCount, 1) <= 0 {
 30794  				tcl.XTclFreeObj(tls, pCmd)
 30795  			}
 30796  		}
 30797  	}
 30798  
 30799  	if rc != 0 && rc != TCL_RETURN {
 30800  		sqlite3.Xsqlite3_result_error(tls, context, tcl.XTcl_GetStringResult(tls, (*SqlFunc)(unsafe.Pointer(p)).Finterp), -1)
 30801  	} else {
 30802  		var pVar uintptr = tcl.XTcl_GetObjResult(tls, (*SqlFunc)(unsafe.Pointer(p)).Finterp)
 30803  
 30804  		var data uintptr
 30805  		var zType uintptr = func() uintptr {
 30806  			if (*Tcl_Obj)(unsafe.Pointer(pVar)).FtypePtr != 0 {
 30807  				return (*Tcl_ObjType)(unsafe.Pointer((*Tcl_Obj)(unsafe.Pointer(pVar)).FtypePtr)).Fname
 30808  			}
 30809  			return ts + 584
 30810  		}()
 30811  		var c int8 = *(*int8)(unsafe.Pointer(zType))
 30812  		var eType int32 = (*SqlFunc)(unsafe.Pointer(p)).FeType
 30813  
 30814  		if eType == SQLITE_NULL {
 30815  			if int32(c) == 'b' && libc.Xstrcmp(tls, zType, ts+2544) == 0 && (*Tcl_Obj)(unsafe.Pointer(pVar)).Fbytes == uintptr(0) {
 30816  				eType = SQLITE_BLOB
 30817  			} else if int32(c) == 'b' && libc.Xstrcmp(tls, zType, ts+2554) == 0 ||
 30818  				int32(c) == 'w' && libc.Xstrcmp(tls, zType, ts+2569) == 0 ||
 30819  				int32(c) == 'i' && libc.Xstrcmp(tls, zType, ts+2577) == 0 {
 30820  				eType = SQLITE_INTEGER
 30821  			} else if int32(c) == 'd' && libc.Xstrcmp(tls, zType, ts+2562) == 0 {
 30822  				eType = SQLITE_FLOAT
 30823  			} else {
 30824  				eType = SQLITE_TEXT
 30825  			}
 30826  		}
 30827  
 30828  		switch eType {
 30829  		case SQLITE_BLOB:
 30830  			{
 30831  				data = tcl.XTcl_GetByteArrayFromObj(tls, pVar, bp+16)
 30832  				sqlite3.Xsqlite3_result_blob(tls, context, data, *(*int32)(unsafe.Pointer(bp + 16)), libc.UintptrFromInt32(-1))
 30833  				break
 30834  
 30835  			}
 30836  			fallthrough
 30837  		case SQLITE_INTEGER:
 30838  			{
 30839  				if TCL_OK == tcl.XTcl_GetWideIntFromObj(tls, uintptr(0), pVar, bp+24) {
 30840  					sqlite3.Xsqlite3_result_int64(tls, context, *(*Tcl_WideInt)(unsafe.Pointer(bp + 24)))
 30841  					break
 30842  				}
 30843  
 30844  			}
 30845  			fallthrough
 30846  		case SQLITE_FLOAT:
 30847  			{
 30848  				if TCL_OK == tcl.XTcl_GetDoubleFromObj(tls, uintptr(0), pVar, bp+32) {
 30849  					sqlite3.Xsqlite3_result_double(tls, context, *(*float64)(unsafe.Pointer(bp + 32)))
 30850  					break
 30851  				}
 30852  
 30853  			}
 30854  			fallthrough
 30855  		default:
 30856  			{
 30857  				data = tcl.XTcl_GetStringFromObj(tls, pVar, bp+16)
 30858  				sqlite3.Xsqlite3_result_text(tls, context, data, *(*int32)(unsafe.Pointer(bp + 16)), libc.UintptrFromInt32(-1))
 30859  				break
 30860  
 30861  			}
 30862  		}
 30863  
 30864  	}
 30865  }
 30866  
 30867  func auth_callback(tls *libc.TLS, pArg uintptr, code int32, zArg1 uintptr, zArg2 uintptr, zArg3 uintptr, zArg4 uintptr) int32 {
 30868  	bp := tls.Alloc(216)
 30869  	defer tls.Free(216)
 30870  
 30871  	var zCode uintptr
 30872  
 30873  	var rc int32
 30874  	var zReply uintptr
 30875  
 30876  	var pDb uintptr = pArg
 30877  	if (*SqliteDb)(unsafe.Pointer(pDb)).FdisableAuth != 0 {
 30878  		return SQLITE_OK
 30879  	}
 30880  
 30881  	switch code {
 30882  	case SQLITE_COPY:
 30883  		zCode = ts + 10944
 30884  		break
 30885  	case SQLITE_CREATE_INDEX:
 30886  		zCode = ts + 10956
 30887  		break
 30888  	case SQLITE_CREATE_TABLE:
 30889  		zCode = ts + 10976
 30890  		break
 30891  	case SQLITE_CREATE_TEMP_INDEX:
 30892  		zCode = ts + 10996
 30893  		break
 30894  	case SQLITE_CREATE_TEMP_TABLE:
 30895  		zCode = ts + 11021
 30896  		break
 30897  	case SQLITE_CREATE_TEMP_TRIGGER:
 30898  		zCode = ts + 11046
 30899  		break
 30900  	case SQLITE_CREATE_TEMP_VIEW:
 30901  		zCode = ts + 11073
 30902  		break
 30903  	case SQLITE_CREATE_TRIGGER:
 30904  		zCode = ts + 11097
 30905  		break
 30906  	case SQLITE_CREATE_VIEW:
 30907  		zCode = ts + 11119
 30908  		break
 30909  	case SQLITE_DELETE:
 30910  		zCode = ts + 11138
 30911  		break
 30912  	case SQLITE_DROP_INDEX:
 30913  		zCode = ts + 11152
 30914  		break
 30915  	case SQLITE_DROP_TABLE:
 30916  		zCode = ts + 11170
 30917  		break
 30918  	case SQLITE_DROP_TEMP_INDEX:
 30919  		zCode = ts + 11188
 30920  		break
 30921  	case SQLITE_DROP_TEMP_TABLE:
 30922  		zCode = ts + 11211
 30923  		break
 30924  	case SQLITE_DROP_TEMP_TRIGGER:
 30925  		zCode = ts + 11234
 30926  		break
 30927  	case SQLITE_DROP_TEMP_VIEW:
 30928  		zCode = ts + 11259
 30929  		break
 30930  	case SQLITE_DROP_TRIGGER:
 30931  		zCode = ts + 11281
 30932  		break
 30933  	case SQLITE_DROP_VIEW:
 30934  		zCode = ts + 11301
 30935  		break
 30936  	case SQLITE_INSERT:
 30937  		zCode = ts + 11318
 30938  		break
 30939  	case SQLITE_PRAGMA:
 30940  		zCode = ts + 11332
 30941  		break
 30942  	case SQLITE_READ:
 30943  		zCode = ts + 11346
 30944  		break
 30945  	case SQLITE_SELECT:
 30946  		zCode = ts + 11358
 30947  		break
 30948  	case SQLITE_TRANSACTION:
 30949  		zCode = ts + 11372
 30950  		break
 30951  	case SQLITE_UPDATE:
 30952  		zCode = ts + 11391
 30953  		break
 30954  	case SQLITE_ATTACH:
 30955  		zCode = ts + 11405
 30956  		break
 30957  	case SQLITE_DETACH:
 30958  		zCode = ts + 11419
 30959  		break
 30960  	case SQLITE_ALTER_TABLE:
 30961  		zCode = ts + 11433
 30962  		break
 30963  	case SQLITE_REINDEX:
 30964  		zCode = ts + 11452
 30965  		break
 30966  	case SQLITE_ANALYZE:
 30967  		zCode = ts + 11467
 30968  		break
 30969  	case SQLITE_CREATE_VTABLE:
 30970  		zCode = ts + 11482
 30971  		break
 30972  	case SQLITE_DROP_VTABLE:
 30973  		zCode = ts + 11503
 30974  		break
 30975  	case SQLITE_FUNCTION:
 30976  		zCode = ts + 11522
 30977  		break
 30978  	case SQLITE_SAVEPOINT:
 30979  		zCode = ts + 11538
 30980  		break
 30981  	case SQLITE_RECURSIVE:
 30982  		zCode = ts + 11555
 30983  		break
 30984  	default:
 30985  		zCode = ts + 11572
 30986  		break
 30987  	}
 30988  	tcl.XTcl_DStringInit(tls, bp)
 30989  	tcl.XTcl_DStringAppend(tls, bp, (*SqliteDb)(unsafe.Pointer(pDb)).FzAuth, -1)
 30990  	tcl.XTcl_DStringAppendElement(tls, bp, zCode)
 30991  	tcl.XTcl_DStringAppendElement(tls, bp, func() uintptr {
 30992  		if zArg1 != 0 {
 30993  			return zArg1
 30994  		}
 30995  		return ts + 584
 30996  	}())
 30997  	tcl.XTcl_DStringAppendElement(tls, bp, func() uintptr {
 30998  		if zArg2 != 0 {
 30999  			return zArg2
 31000  		}
 31001  		return ts + 584
 31002  	}())
 31003  	tcl.XTcl_DStringAppendElement(tls, bp, func() uintptr {
 31004  		if zArg3 != 0 {
 31005  			return zArg3
 31006  		}
 31007  		return ts + 584
 31008  	}())
 31009  	tcl.XTcl_DStringAppendElement(tls, bp, func() uintptr {
 31010  		if zArg4 != 0 {
 31011  			return zArg4
 31012  		}
 31013  		return ts + 584
 31014  	}())
 31015  	rc = tcl.XTcl_GlobalEval(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp, (*Tcl_DString)(unsafe.Pointer(bp)).Fstring)
 31016  	tcl.XTcl_DStringFree(tls, bp)
 31017  	if rc == TCL_OK {
 31018  		zReply = tcl.XTcl_GetStringResult(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp)
 31019  	} else {
 31020  		zReply = ts + 11577
 31021  	}
 31022  	if libc.Xstrcmp(tls, zReply, ts+2127) == 0 {
 31023  		rc = SQLITE_OK
 31024  	} else if libc.Xstrcmp(tls, zReply, ts+11577) == 0 {
 31025  		rc = SQLITE_DENY
 31026  	} else if libc.Xstrcmp(tls, zReply, ts+11589) == 0 {
 31027  		rc = SQLITE_IGNORE
 31028  	} else {
 31029  		rc = 999
 31030  	}
 31031  	return rc
 31032  }
 31033  
 31034  func local_getline(tls *libc.TLS, zPrompt uintptr, in uintptr) uintptr {
 31035  	var zLine uintptr
 31036  	var nLine int32
 31037  	var n int32
 31038  
 31039  	nLine = 100
 31040  	zLine = libc.Xmalloc(tls, uint64(nLine))
 31041  	if zLine == uintptr(0) {
 31042  		return uintptr(0)
 31043  	}
 31044  	n = 0
 31045  	for 1 != 0 {
 31046  		if n+100 > nLine {
 31047  			nLine = nLine*2 + 100
 31048  			zLine = libc.Xrealloc(tls, zLine, uint64(nLine))
 31049  			if zLine == uintptr(0) {
 31050  				return uintptr(0)
 31051  			}
 31052  		}
 31053  		if libc.Xfgets(tls, zLine+uintptr(n), nLine-n, in) == uintptr(0) {
 31054  			if n == 0 {
 31055  				libc.Xfree(tls, zLine)
 31056  				return uintptr(0)
 31057  			}
 31058  			*(*int8)(unsafe.Pointer(zLine + uintptr(n))) = int8(0)
 31059  			break
 31060  		}
 31061  		for *(*int8)(unsafe.Pointer(zLine + uintptr(n))) != 0 {
 31062  			n++
 31063  		}
 31064  		if n > 0 && int32(*(*int8)(unsafe.Pointer(zLine + uintptr(n-1)))) == '\n' {
 31065  			n--
 31066  			*(*int8)(unsafe.Pointer(zLine + uintptr(n))) = int8(0)
 31067  			break
 31068  		}
 31069  	}
 31070  	zLine = libc.Xrealloc(tls, zLine, uint64(n+1))
 31071  	return zLine
 31072  }
 31073  
 31074  func DbTransPostCmd(tls *libc.TLS, data uintptr, interp uintptr, result int32) int32 {
 31075  	bp := tls.Alloc(16)
 31076  	defer tls.Free(16)
 31077  
 31078  	var pDb uintptr = *(*ClientData)(unsafe.Pointer(data))
 31079  	var rc int32 = result
 31080  	var zEnd uintptr
 31081  
 31082  	(*SqliteDb)(unsafe.Pointer(pDb)).FnTransaction--
 31083  	zEnd = azEnd[libc.Bool32(rc == TCL_ERROR)*2+libc.Bool32((*SqliteDb)(unsafe.Pointer(pDb)).FnTransaction == 0)]
 31084  
 31085  	(*SqliteDb)(unsafe.Pointer(pDb)).FdisableAuth++
 31086  	if sqlite3.Xsqlite3_exec(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, zEnd, uintptr(0), uintptr(0), uintptr(0)) != 0 {
 31087  		if rc != TCL_ERROR {
 31088  			tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, sqlite3.Xsqlite3_errmsg(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb), uintptr(0)))
 31089  			rc = TCL_ERROR
 31090  		}
 31091  		sqlite3.Xsqlite3_exec(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, ts+7824, uintptr(0), uintptr(0), uintptr(0))
 31092  	}
 31093  	(*SqliteDb)(unsafe.Pointer(pDb)).FdisableAuth--
 31094  
 31095  	delDatabaseRef(tls, pDb)
 31096  	return rc
 31097  }
 31098  
 31099  var azEnd = [4]uintptr{
 31100  	ts + 11603,
 31101  	ts + 11628,
 31102  	ts + 11635,
 31103  	ts + 7824,
 31104  }
 31105  
 31106  func dbPrepare(tls *libc.TLS, pDb uintptr, zSql uintptr, ppStmt uintptr, pzOut uintptr) int32 {
 31107  	var prepFlags uint32 = uint32(0)
 31108  	if (*SqliteDb)(unsafe.Pointer(pDb)).FbLegacyPrepare != 0 {
 31109  		return sqlite3.Xsqlite3_prepare(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, zSql, -1, ppStmt, pzOut)
 31110  	}
 31111  
 31112  	if (*SqliteDb)(unsafe.Pointer(pDb)).FmaxStmt > 5 {
 31113  		prepFlags = uint32(SQLITE_PREPARE_PERSISTENT)
 31114  	}
 31115  
 31116  	return sqlite3.Xsqlite3_prepare_v3(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, zSql, -1, prepFlags, ppStmt, pzOut)
 31117  }
 31118  
 31119  func dbPrepareAndBind(tls *libc.TLS, pDb uintptr, zIn uintptr, pzOut uintptr, ppPreStmt uintptr) int32 {
 31120  	bp := tls.Alloc(32)
 31121  	defer tls.Free(32)
 31122  
 31123  	var zSql uintptr = zIn
 31124  	*(*uintptr)(unsafe.Pointer(bp)) = uintptr(0)
 31125  	var pPreStmt uintptr
 31126  	var nSql int32
 31127  	var nVar int32 = 0
 31128  	var iParm int32 = 0
 31129  	var c int8
 31130  	var i int32
 31131  	var needResultReset int32 = 0
 31132  	var rc int32 = SQLITE_OK
 31133  	var interp uintptr = (*SqliteDb)(unsafe.Pointer(pDb)).Finterp
 31134  
 31135  	*(*uintptr)(unsafe.Pointer(ppPreStmt)) = uintptr(0)
 31136  
 31137  	for int32(libc.AssignInt8(&c, *(*int8)(unsafe.Pointer(zSql)))) == ' ' || int32(c) == '\t' || int32(c) == '\r' || int32(c) == '\n' {
 31138  		zSql++
 31139  	}
 31140  	nSql = strlen30(tls, zSql)
 31141  
 31142  	for pPreStmt = (*SqliteDb)(unsafe.Pointer(pDb)).FstmtList; pPreStmt != 0; pPreStmt = (*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FpNext {
 31143  		var n int32 = (*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FnSql
 31144  		if nSql >= n &&
 31145  			libc.Xmemcmp(tls, (*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FzSql, zSql, uint64(n)) == 0 &&
 31146  			(int32(*(*int8)(unsafe.Pointer(zSql + uintptr(n)))) == 0 || int32(*(*int8)(unsafe.Pointer(zSql + uintptr(n-1)))) == ';') {
 31147  			*(*uintptr)(unsafe.Pointer(bp)) = (*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FpStmt
 31148  			*(*uintptr)(unsafe.Pointer(pzOut)) = zSql + uintptr((*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FnSql)
 31149  
 31150  			if (*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FpPrev != 0 {
 31151  				(*SqlPreparedStmt)(unsafe.Pointer((*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FpPrev)).FpNext = (*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FpNext
 31152  			} else {
 31153  				(*SqliteDb)(unsafe.Pointer(pDb)).FstmtList = (*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FpNext
 31154  			}
 31155  			if (*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FpNext != 0 {
 31156  				(*SqlPreparedStmt)(unsafe.Pointer((*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FpNext)).FpPrev = (*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FpPrev
 31157  			} else {
 31158  				(*SqliteDb)(unsafe.Pointer(pDb)).FstmtLast = (*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FpPrev
 31159  			}
 31160  			(*SqliteDb)(unsafe.Pointer(pDb)).FnStmt--
 31161  			nVar = sqlite3.Xsqlite3_bind_parameter_count(tls, *(*uintptr)(unsafe.Pointer(bp)))
 31162  			break
 31163  		}
 31164  	}
 31165  
 31166  	if pPreStmt == uintptr(0) {
 31167  		var nByte int32
 31168  
 31169  		if SQLITE_OK != dbPrepare(tls, pDb, zSql, bp, pzOut) {
 31170  			tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3_errmsg(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb), -1))
 31171  			return TCL_ERROR
 31172  		}
 31173  		if *(*uintptr)(unsafe.Pointer(bp)) == uintptr(0) {
 31174  			if SQLITE_OK != sqlite3.Xsqlite3_errcode(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb) {
 31175  				tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3_errmsg(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb), -1))
 31176  				return TCL_ERROR
 31177  			} else {
 31178  				return TCL_OK
 31179  			}
 31180  		}
 31181  
 31182  		nVar = sqlite3.Xsqlite3_bind_parameter_count(tls, *(*uintptr)(unsafe.Pointer(bp)))
 31183  		nByte = int32(uint64(unsafe.Sizeof(SqlPreparedStmt{})) + uint64(nVar)*uint64(unsafe.Sizeof(uintptr(0))))
 31184  		pPreStmt = tcl.XTcl_Alloc(tls, uint32(nByte))
 31185  		libc.X__builtin___memset_chk(tls, pPreStmt, 0, uint64(nByte), libc.X__builtin_object_size(tls, pPreStmt, 0))
 31186  
 31187  		(*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FpStmt = *(*uintptr)(unsafe.Pointer(bp))
 31188  		(*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FnSql = int32((int64(*(*uintptr)(unsafe.Pointer(pzOut))) - int64(zSql)) / 1)
 31189  		(*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FzSql = sqlite3.Xsqlite3_sql(tls, *(*uintptr)(unsafe.Pointer(bp)))
 31190  		(*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FapParm = pPreStmt + 1*56
 31191  		if (*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FzSql == uintptr(0) {
 31192  			var zCopy uintptr = tcl.XTcl_Alloc(tls, uint32((*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FnSql+1))
 31193  			libc.X__builtin___memcpy_chk(tls, zCopy, zSql, uint64((*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FnSql), libc.X__builtin_object_size(tls, zCopy, 0))
 31194  			*(*int8)(unsafe.Pointer(zCopy + uintptr((*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FnSql))) = int8(0)
 31195  			(*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FzSql = zCopy
 31196  		}
 31197  	}
 31198  
 31199  	for i = 1; i <= nVar; i++ {
 31200  		var zVar uintptr = sqlite3.Xsqlite3_bind_parameter_name(tls, *(*uintptr)(unsafe.Pointer(bp)), i)
 31201  		if zVar != uintptr(0) && (int32(*(*int8)(unsafe.Pointer(zVar))) == '$' || int32(*(*int8)(unsafe.Pointer(zVar))) == ':' || int32(*(*int8)(unsafe.Pointer(zVar))) == '@') {
 31202  			var pVar uintptr = tcl.XTcl_GetVar2Ex(tls, interp, zVar+1, uintptr(0), 0)
 31203  			if pVar == uintptr(0) && (*SqliteDb)(unsafe.Pointer(pDb)).FzBindFallback != uintptr(0) {
 31204  				var pCmd uintptr
 31205  				var rx int32
 31206  				pCmd = tcl.XTcl_NewStringObj(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzBindFallback, -1)
 31207  				(*Tcl_Obj)(unsafe.Pointer(pCmd)).FrefCount++
 31208  				tcl.XTcl_ListObjAppendElement(tls, interp, pCmd, tcl.XTcl_NewStringObj(tls, zVar, -1))
 31209  				if needResultReset != 0 {
 31210  					tcl.XTcl_ResetResult(tls, interp)
 31211  				}
 31212  				needResultReset = 1
 31213  				rx = tcl.XTcl_EvalObjEx(tls, interp, pCmd, TCL_EVAL_DIRECT)
 31214  				for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 31215  					if libc.PreDecInt32(&(*Tcl_Obj)(unsafe.Pointer(pCmd)).FrefCount, 1) <= 0 {
 31216  						tcl.XTclFreeObj(tls, pCmd)
 31217  					}
 31218  				}
 31219  				if rx == TCL_OK {
 31220  					pVar = tcl.XTcl_GetObjResult(tls, interp)
 31221  				} else if rx == TCL_ERROR {
 31222  					rc = TCL_ERROR
 31223  					break
 31224  				} else {
 31225  					pVar = uintptr(0)
 31226  				}
 31227  			}
 31228  			if pVar != 0 {
 31229  				var data uintptr
 31230  				var zType uintptr = func() uintptr {
 31231  					if (*Tcl_Obj)(unsafe.Pointer(pVar)).FtypePtr != 0 {
 31232  						return (*Tcl_ObjType)(unsafe.Pointer((*Tcl_Obj)(unsafe.Pointer(pVar)).FtypePtr)).Fname
 31233  					}
 31234  					return ts + 584
 31235  				}()
 31236  				c = *(*int8)(unsafe.Pointer(zType))
 31237  				if int32(*(*int8)(unsafe.Pointer(zVar))) == '@' || int32(c) == 'b' && libc.Xstrcmp(tls, zType, ts+2544) == 0 && (*Tcl_Obj)(unsafe.Pointer(pVar)).Fbytes == uintptr(0) {
 31238  					data = tcl.XTcl_GetByteArrayFromObj(tls, pVar, bp+8)
 31239  					sqlite3.Xsqlite3_bind_blob(tls, *(*uintptr)(unsafe.Pointer(bp)), i, data, *(*int32)(unsafe.Pointer(bp + 8)), uintptr(0))
 31240  					(*Tcl_Obj)(unsafe.Pointer(pVar)).FrefCount++
 31241  					*(*uintptr)(unsafe.Pointer((*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FapParm + uintptr(libc.PostIncInt32(&iParm, 1))*8)) = pVar
 31242  				} else if int32(c) == 'b' && libc.Xstrcmp(tls, zType, ts+2554) == 0 {
 31243  					tcl.XTcl_GetIntFromObj(tls, interp, pVar, bp+8)
 31244  					sqlite3.Xsqlite3_bind_int(tls, *(*uintptr)(unsafe.Pointer(bp)), i, *(*int32)(unsafe.Pointer(bp + 8)))
 31245  				} else if int32(c) == 'd' && libc.Xstrcmp(tls, zType, ts+2562) == 0 {
 31246  					tcl.XTcl_GetDoubleFromObj(tls, interp, pVar, bp+16)
 31247  					sqlite3.Xsqlite3_bind_double(tls, *(*uintptr)(unsafe.Pointer(bp)), i, *(*float64)(unsafe.Pointer(bp + 16)))
 31248  				} else if int32(c) == 'w' && libc.Xstrcmp(tls, zType, ts+2569) == 0 || int32(c) == 'i' && libc.Xstrcmp(tls, zType, ts+2577) == 0 {
 31249  					tcl.XTcl_GetWideIntFromObj(tls, interp, pVar, bp+24)
 31250  					sqlite3.Xsqlite3_bind_int64(tls, *(*uintptr)(unsafe.Pointer(bp)), i, *(*Tcl_WideInt)(unsafe.Pointer(bp + 24)))
 31251  				} else {
 31252  					data = tcl.XTcl_GetStringFromObj(tls, pVar, bp+8)
 31253  					sqlite3.Xsqlite3_bind_text(tls, *(*uintptr)(unsafe.Pointer(bp)), i, data, *(*int32)(unsafe.Pointer(bp + 8)), uintptr(0))
 31254  					(*Tcl_Obj)(unsafe.Pointer(pVar)).FrefCount++
 31255  					*(*uintptr)(unsafe.Pointer((*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FapParm + uintptr(libc.PostIncInt32(&iParm, 1))*8)) = pVar
 31256  				}
 31257  			} else {
 31258  				sqlite3.Xsqlite3_bind_null(tls, *(*uintptr)(unsafe.Pointer(bp)), i)
 31259  			}
 31260  			if needResultReset != 0 {
 31261  				tcl.XTcl_ResetResult(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp)
 31262  			}
 31263  		}
 31264  	}
 31265  	(*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FnParm = iParm
 31266  	*(*uintptr)(unsafe.Pointer(ppPreStmt)) = pPreStmt
 31267  	if needResultReset != 0 && rc == TCL_OK {
 31268  		tcl.XTcl_ResetResult(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp)
 31269  	}
 31270  
 31271  	return rc
 31272  }
 31273  
 31274  func dbReleaseStmt(tls *libc.TLS, pDb uintptr, pPreStmt uintptr, discard int32) {
 31275  	var i int32
 31276  
 31277  	for i = 0; i < (*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FnParm; i++ {
 31278  		for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 31279  			if libc.PreDecInt32(&(*Tcl_Obj)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer((*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FapParm + uintptr(i)*8)))).FrefCount, 1) <= 0 {
 31280  				tcl.XTclFreeObj(tls, *(*uintptr)(unsafe.Pointer((*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FapParm + uintptr(i)*8)))
 31281  			}
 31282  		}
 31283  	}
 31284  	(*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FnParm = 0
 31285  
 31286  	if (*SqliteDb)(unsafe.Pointer(pDb)).FmaxStmt <= 0 || discard != 0 {
 31287  		dbFreeStmt(tls, pPreStmt)
 31288  	} else {
 31289  		(*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FpNext = (*SqliteDb)(unsafe.Pointer(pDb)).FstmtList
 31290  		(*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FpPrev = uintptr(0)
 31291  		if (*SqliteDb)(unsafe.Pointer(pDb)).FstmtList != 0 {
 31292  			(*SqlPreparedStmt)(unsafe.Pointer((*SqliteDb)(unsafe.Pointer(pDb)).FstmtList)).FpPrev = pPreStmt
 31293  		}
 31294  		(*SqliteDb)(unsafe.Pointer(pDb)).FstmtList = pPreStmt
 31295  		if (*SqliteDb)(unsafe.Pointer(pDb)).FstmtLast == uintptr(0) {
 31296  			(*SqliteDb)(unsafe.Pointer(pDb)).FstmtLast = pPreStmt
 31297  		} else {
 31298  		}
 31299  		(*SqliteDb)(unsafe.Pointer(pDb)).FnStmt++
 31300  
 31301  		for (*SqliteDb)(unsafe.Pointer(pDb)).FnStmt > (*SqliteDb)(unsafe.Pointer(pDb)).FmaxStmt {
 31302  			var pLast uintptr = (*SqliteDb)(unsafe.Pointer(pDb)).FstmtLast
 31303  			(*SqliteDb)(unsafe.Pointer(pDb)).FstmtLast = (*SqlPreparedStmt)(unsafe.Pointer(pLast)).FpPrev
 31304  			(*SqlPreparedStmt)(unsafe.Pointer((*SqliteDb)(unsafe.Pointer(pDb)).FstmtLast)).FpNext = uintptr(0)
 31305  			(*SqliteDb)(unsafe.Pointer(pDb)).FnStmt--
 31306  			dbFreeStmt(tls, pLast)
 31307  		}
 31308  	}
 31309  }
 31310  
 31311  type DbEvalContext1 = struct {
 31312  	FpDb       uintptr
 31313  	FpSql      uintptr
 31314  	FzSql      uintptr
 31315  	FpPreStmt  uintptr
 31316  	FnCol      int32
 31317  	FevalFlags int32
 31318  	FpArray    uintptr
 31319  	FapColName uintptr
 31320  }
 31321  
 31322  type DbEvalContext = DbEvalContext1
 31323  
 31324  func dbReleaseColumnNames(tls *libc.TLS, p uintptr) {
 31325  	if (*DbEvalContext)(unsafe.Pointer(p)).FapColName != 0 {
 31326  		var i int32
 31327  		for i = 0; i < (*DbEvalContext)(unsafe.Pointer(p)).FnCol; i++ {
 31328  			for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 31329  				if libc.PreDecInt32(&(*Tcl_Obj)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer((*DbEvalContext)(unsafe.Pointer(p)).FapColName + uintptr(i)*8)))).FrefCount, 1) <= 0 {
 31330  					tcl.XTclFreeObj(tls, *(*uintptr)(unsafe.Pointer((*DbEvalContext)(unsafe.Pointer(p)).FapColName + uintptr(i)*8)))
 31331  				}
 31332  			}
 31333  		}
 31334  		tcl.XTcl_Free(tls, (*DbEvalContext)(unsafe.Pointer(p)).FapColName)
 31335  		(*DbEvalContext)(unsafe.Pointer(p)).FapColName = uintptr(0)
 31336  	}
 31337  	(*DbEvalContext)(unsafe.Pointer(p)).FnCol = 0
 31338  }
 31339  
 31340  func dbEvalInit(tls *libc.TLS, p uintptr, pDb uintptr, pSql uintptr, pArray uintptr, evalFlags int32) {
 31341  	libc.X__builtin___memset_chk(tls, p, 0, uint64(unsafe.Sizeof(DbEvalContext{})), libc.X__builtin_object_size(tls, p, 0))
 31342  	(*DbEvalContext)(unsafe.Pointer(p)).FpDb = pDb
 31343  	(*DbEvalContext)(unsafe.Pointer(p)).FzSql = tcl.XTcl_GetString(tls, pSql)
 31344  	(*DbEvalContext)(unsafe.Pointer(p)).FpSql = pSql
 31345  	(*Tcl_Obj)(unsafe.Pointer(pSql)).FrefCount++
 31346  	if pArray != 0 {
 31347  		(*DbEvalContext)(unsafe.Pointer(p)).FpArray = pArray
 31348  		(*Tcl_Obj)(unsafe.Pointer(pArray)).FrefCount++
 31349  	}
 31350  	(*DbEvalContext)(unsafe.Pointer(p)).FevalFlags = evalFlags
 31351  	addDatabaseRef(tls, (*DbEvalContext)(unsafe.Pointer(p)).FpDb)
 31352  }
 31353  
 31354  func dbEvalRowInfo(tls *libc.TLS, p uintptr, pnCol uintptr, papColName uintptr) {
 31355  	if uintptr(0) == (*DbEvalContext)(unsafe.Pointer(p)).FapColName {
 31356  		var pStmt uintptr = (*SqlPreparedStmt)(unsafe.Pointer((*DbEvalContext)(unsafe.Pointer(p)).FpPreStmt)).FpStmt
 31357  		var i int32
 31358  		var nCol int32
 31359  		var apColName uintptr = uintptr(0)
 31360  
 31361  		(*DbEvalContext)(unsafe.Pointer(p)).FnCol = libc.AssignInt32(&nCol, sqlite3.Xsqlite3_column_count(tls, pStmt))
 31362  		if nCol > 0 && (papColName != 0 || (*DbEvalContext)(unsafe.Pointer(p)).FpArray != 0) {
 31363  			apColName = tcl.XTcl_Alloc(tls, uint32(uint64(unsafe.Sizeof(uintptr(0)))*uint64(nCol)))
 31364  			for i = 0; i < nCol; i++ {
 31365  				*(*uintptr)(unsafe.Pointer(apColName + uintptr(i)*8)) = tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3_column_name(tls, pStmt, i), -1)
 31366  				(*Tcl_Obj)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(apColName + uintptr(i)*8)))).FrefCount++
 31367  			}
 31368  			(*DbEvalContext)(unsafe.Pointer(p)).FapColName = apColName
 31369  		}
 31370  
 31371  		if (*DbEvalContext)(unsafe.Pointer(p)).FpArray != 0 {
 31372  			var interp uintptr = (*SqliteDb)(unsafe.Pointer((*DbEvalContext)(unsafe.Pointer(p)).FpDb)).Finterp
 31373  			var pColList uintptr = tcl.XTcl_NewObj(tls)
 31374  			var pStar uintptr = tcl.XTcl_NewStringObj(tls, ts+3840, -1)
 31375  
 31376  			for i = 0; i < nCol; i++ {
 31377  				tcl.XTcl_ListObjAppendElement(tls, interp, pColList, *(*uintptr)(unsafe.Pointer(apColName + uintptr(i)*8)))
 31378  			}
 31379  			(*Tcl_Obj)(unsafe.Pointer(pStar)).FrefCount++
 31380  			tcl.XTcl_ObjSetVar2(tls, interp, (*DbEvalContext)(unsafe.Pointer(p)).FpArray, pStar, pColList, 0)
 31381  			for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 31382  				if libc.PreDecInt32(&(*Tcl_Obj)(unsafe.Pointer(pStar)).FrefCount, 1) <= 0 {
 31383  					tcl.XTclFreeObj(tls, pStar)
 31384  				}
 31385  			}
 31386  		}
 31387  	}
 31388  
 31389  	if papColName != 0 {
 31390  		*(*uintptr)(unsafe.Pointer(papColName)) = (*DbEvalContext)(unsafe.Pointer(p)).FapColName
 31391  	}
 31392  	if pnCol != 0 {
 31393  		*(*int32)(unsafe.Pointer(pnCol)) = (*DbEvalContext)(unsafe.Pointer(p)).FnCol
 31394  	}
 31395  }
 31396  
 31397  func dbEvalStep(tls *libc.TLS, p uintptr) int32 {
 31398  	var zPrevSql uintptr = uintptr(0)
 31399  
 31400  	for *(*int8)(unsafe.Pointer((*DbEvalContext)(unsafe.Pointer(p)).FzSql)) != 0 || (*DbEvalContext)(unsafe.Pointer(p)).FpPreStmt != 0 {
 31401  		var rc int32
 31402  		if (*DbEvalContext)(unsafe.Pointer(p)).FpPreStmt == uintptr(0) {
 31403  			zPrevSql = func() uintptr {
 31404  				if (*DbEvalContext)(unsafe.Pointer(p)).FzSql == zPrevSql {
 31405  					return uintptr(0)
 31406  				}
 31407  				return (*DbEvalContext)(unsafe.Pointer(p)).FzSql
 31408  			}()
 31409  			rc = dbPrepareAndBind(tls, (*DbEvalContext)(unsafe.Pointer(p)).FpDb, (*DbEvalContext)(unsafe.Pointer(p)).FzSql, p+16, p+24)
 31410  			if rc != TCL_OK {
 31411  				return rc
 31412  			}
 31413  		} else {
 31414  			var rcs int32
 31415  			var pDb uintptr = (*DbEvalContext)(unsafe.Pointer(p)).FpDb
 31416  			var pPreStmt uintptr = (*DbEvalContext)(unsafe.Pointer(p)).FpPreStmt
 31417  			var pStmt uintptr = (*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FpStmt
 31418  
 31419  			rcs = sqlite3.Xsqlite3_step(tls, pStmt)
 31420  			if rcs == SQLITE_ROW {
 31421  				return TCL_OK
 31422  			}
 31423  			if (*DbEvalContext)(unsafe.Pointer(p)).FpArray != 0 {
 31424  				dbEvalRowInfo(tls, p, uintptr(0), uintptr(0))
 31425  			}
 31426  			rcs = sqlite3.Xsqlite3_reset(tls, pStmt)
 31427  
 31428  			(*SqliteDb)(unsafe.Pointer(pDb)).FnStep = sqlite3.Xsqlite3_stmt_status(tls, pStmt, SQLITE_STMTSTATUS_FULLSCAN_STEP, 1)
 31429  			(*SqliteDb)(unsafe.Pointer(pDb)).FnSort = sqlite3.Xsqlite3_stmt_status(tls, pStmt, SQLITE_STMTSTATUS_SORT, 1)
 31430  			(*SqliteDb)(unsafe.Pointer(pDb)).FnIndex = sqlite3.Xsqlite3_stmt_status(tls, pStmt, SQLITE_STMTSTATUS_AUTOINDEX, 1)
 31431  			(*SqliteDb)(unsafe.Pointer(pDb)).FnVMStep = sqlite3.Xsqlite3_stmt_status(tls, pStmt, SQLITE_STMTSTATUS_VM_STEP, 1)
 31432  			dbReleaseColumnNames(tls, p)
 31433  			(*DbEvalContext)(unsafe.Pointer(p)).FpPreStmt = uintptr(0)
 31434  
 31435  			if rcs != SQLITE_OK {
 31436  				dbReleaseStmt(tls, pDb, pPreStmt, 1)
 31437  				if (*SqliteDb)(unsafe.Pointer((*DbEvalContext)(unsafe.Pointer(p)).FpDb)).FbLegacyPrepare != 0 && rcs == SQLITE_SCHEMA && zPrevSql != 0 {
 31438  					(*DbEvalContext)(unsafe.Pointer(p)).FzSql = zPrevSql
 31439  					continue
 31440  				}
 31441  				tcl.XTcl_SetObjResult(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp,
 31442  					tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3_errmsg(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb), -1))
 31443  				return TCL_ERROR
 31444  			} else {
 31445  				dbReleaseStmt(tls, pDb, pPreStmt, 0)
 31446  			}
 31447  		}
 31448  	}
 31449  
 31450  	return TCL_BREAK
 31451  }
 31452  
 31453  func dbEvalFinalize(tls *libc.TLS, p uintptr) {
 31454  	if (*DbEvalContext)(unsafe.Pointer(p)).FpPreStmt != 0 {
 31455  		sqlite3.Xsqlite3_reset(tls, (*SqlPreparedStmt)(unsafe.Pointer((*DbEvalContext)(unsafe.Pointer(p)).FpPreStmt)).FpStmt)
 31456  		dbReleaseStmt(tls, (*DbEvalContext)(unsafe.Pointer(p)).FpDb, (*DbEvalContext)(unsafe.Pointer(p)).FpPreStmt, 0)
 31457  		(*DbEvalContext)(unsafe.Pointer(p)).FpPreStmt = uintptr(0)
 31458  	}
 31459  	if (*DbEvalContext)(unsafe.Pointer(p)).FpArray != 0 {
 31460  		for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 31461  			if libc.PreDecInt32(&(*Tcl_Obj)(unsafe.Pointer((*DbEvalContext)(unsafe.Pointer(p)).FpArray)).FrefCount, 1) <= 0 {
 31462  				tcl.XTclFreeObj(tls, (*DbEvalContext)(unsafe.Pointer(p)).FpArray)
 31463  			}
 31464  		}
 31465  		(*DbEvalContext)(unsafe.Pointer(p)).FpArray = uintptr(0)
 31466  	}
 31467  	for __ccgo1 := true; __ccgo1; __ccgo1 = 0 != 0 {
 31468  		if libc.PreDecInt32(&(*Tcl_Obj)(unsafe.Pointer((*DbEvalContext)(unsafe.Pointer(p)).FpSql)).FrefCount, 1) <= 0 {
 31469  			tcl.XTclFreeObj(tls, (*DbEvalContext)(unsafe.Pointer(p)).FpSql)
 31470  		}
 31471  	}
 31472  	dbReleaseColumnNames(tls, p)
 31473  	delDatabaseRef(tls, (*DbEvalContext)(unsafe.Pointer(p)).FpDb)
 31474  }
 31475  
 31476  func dbEvalColumnValue(tls *libc.TLS, p uintptr, iCol int32) uintptr {
 31477  	var pStmt uintptr = (*SqlPreparedStmt)(unsafe.Pointer((*DbEvalContext)(unsafe.Pointer(p)).FpPreStmt)).FpStmt
 31478  	switch sqlite3.Xsqlite3_column_type(tls, pStmt, iCol) {
 31479  	case SQLITE_BLOB:
 31480  		{
 31481  			var bytes int32 = sqlite3.Xsqlite3_column_bytes(tls, pStmt, iCol)
 31482  			var zBlob uintptr = sqlite3.Xsqlite3_column_blob(tls, pStmt, iCol)
 31483  			if !(zBlob != 0) {
 31484  				bytes = 0
 31485  			}
 31486  			return tcl.XTcl_NewByteArrayObj(tls, zBlob, bytes)
 31487  
 31488  		}
 31489  	case SQLITE_INTEGER:
 31490  		{
 31491  			var v sqlite_int64 = sqlite3.Xsqlite3_column_int64(tls, pStmt, iCol)
 31492  			if v >= int64(-2147483647) && v <= int64(2147483647) {
 31493  				return tcl.XTcl_NewIntObj(tls, int32(v))
 31494  			} else {
 31495  				return tcl.XTcl_NewWideIntObj(tls, v)
 31496  			}
 31497  
 31498  		}
 31499  		fallthrough
 31500  	case SQLITE_FLOAT:
 31501  		{
 31502  			return tcl.XTcl_NewDoubleObj(tls, sqlite3.Xsqlite3_column_double(tls, pStmt, iCol))
 31503  
 31504  		}
 31505  	case SQLITE_NULL:
 31506  		{
 31507  			return tcl.XTcl_NewStringObj(tls, (*SqliteDb)(unsafe.Pointer((*DbEvalContext)(unsafe.Pointer(p)).FpDb)).FzNull, -1)
 31508  
 31509  		}
 31510  	}
 31511  
 31512  	return tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3_column_text(tls, pStmt, iCol), -1)
 31513  }
 31514  
 31515  func DbEvalNextCmd(tls *libc.TLS, data uintptr, interp uintptr, result int32) int32 {
 31516  	bp := tls.Alloc(16)
 31517  	defer tls.Free(16)
 31518  
 31519  	var rc int32 = result
 31520  
 31521  	var p uintptr = *(*ClientData)(unsafe.Pointer(data))
 31522  	var pScript uintptr = *(*ClientData)(unsafe.Pointer(data + 1*8))
 31523  	var pArray uintptr = (*DbEvalContext)(unsafe.Pointer(p)).FpArray
 31524  
 31525  	for (rc == TCL_OK || rc == TCL_CONTINUE) && TCL_OK == libc.AssignInt32(&rc, dbEvalStep(tls, p)) {
 31526  		var i int32
 31527  
 31528  		dbEvalRowInfo(tls, p, bp, bp+8)
 31529  		for i = 0; i < *(*int32)(unsafe.Pointer(bp)); i++ {
 31530  			if pArray == uintptr(0) {
 31531  				tcl.XTcl_ObjSetVar2(tls, interp, *(*uintptr)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 8)) + uintptr(i)*8)), uintptr(0), dbEvalColumnValue(tls, p, i), 0)
 31532  			} else if (*DbEvalContext)(unsafe.Pointer(p)).FevalFlags&SQLITE_EVAL_WITHOUTNULLS != 0 &&
 31533  				sqlite3.Xsqlite3_column_type(tls, (*SqlPreparedStmt)(unsafe.Pointer((*DbEvalContext)(unsafe.Pointer(p)).FpPreStmt)).FpStmt, i) == SQLITE_NULL {
 31534  				tcl.XTcl_UnsetVar2(tls, interp, tcl.XTcl_GetString(tls, pArray),
 31535  					tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 8)) + uintptr(i)*8))), 0)
 31536  			} else {
 31537  				tcl.XTcl_ObjSetVar2(tls, interp, pArray, *(*uintptr)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 8)) + uintptr(i)*8)), dbEvalColumnValue(tls, p, i), 0)
 31538  			}
 31539  		}
 31540  
 31541  		if 0 != 0 {
 31542  			return 0
 31543  		} else {
 31544  			rc = tcl.XTcl_EvalObjEx(tls, interp, pScript, 0)
 31545  		}
 31546  	}
 31547  
 31548  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 31549  		if libc.PreDecInt32(&(*Tcl_Obj)(unsafe.Pointer(pScript)).FrefCount, 1) <= 0 {
 31550  			tcl.XTclFreeObj(tls, pScript)
 31551  		}
 31552  	}
 31553  	dbEvalFinalize(tls, p)
 31554  	tcl.XTcl_Free(tls, p)
 31555  
 31556  	if rc == TCL_OK || rc == TCL_BREAK {
 31557  		tcl.XTcl_ResetResult(tls, interp)
 31558  		rc = TCL_OK
 31559  	}
 31560  	return rc
 31561  }
 31562  
 31563  func DbHookCmd(tls *libc.TLS, interp uintptr, pDb uintptr, pArg uintptr, ppHook uintptr) {
 31564  	var db uintptr = (*SqliteDb)(unsafe.Pointer(pDb)).Fdb
 31565  
 31566  	if *(*uintptr)(unsafe.Pointer(ppHook)) != 0 {
 31567  		tcl.XTcl_SetObjResult(tls, interp, *(*uintptr)(unsafe.Pointer(ppHook)))
 31568  		if pArg != 0 {
 31569  			for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 31570  				if libc.PreDecInt32(&(*Tcl_Obj)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(ppHook)))).FrefCount, 1) <= 0 {
 31571  					tcl.XTclFreeObj(tls, *(*uintptr)(unsafe.Pointer(ppHook)))
 31572  				}
 31573  			}
 31574  			*(*uintptr)(unsafe.Pointer(ppHook)) = uintptr(0)
 31575  		}
 31576  	}
 31577  	if pArg != 0 {
 31578  		if tcl.XTcl_GetCharLength(tls, pArg) > 0 {
 31579  			*(*uintptr)(unsafe.Pointer(ppHook)) = pArg
 31580  			(*Tcl_Obj)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(ppHook)))).FrefCount++
 31581  		}
 31582  	}
 31583  
 31584  	sqlite3.Xsqlite3_preupdate_hook(tls, db, func() uintptr {
 31585  		if (*SqliteDb)(unsafe.Pointer(pDb)).FpPreUpdateHook != 0 {
 31586  			return *(*uintptr)(unsafe.Pointer(&struct {
 31587  				f func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, sqlite_int64, sqlite_int64)
 31588  			}{DbPreUpdateHandler}))
 31589  		}
 31590  		return uintptr(0)
 31591  	}(), pDb)
 31592  	sqlite3.Xsqlite3_update_hook(tls, db, func() uintptr {
 31593  		if (*SqliteDb)(unsafe.Pointer(pDb)).FpUpdateHook != 0 {
 31594  			return *(*uintptr)(unsafe.Pointer(&struct {
 31595  				f func(*libc.TLS, uintptr, int32, uintptr, uintptr, sqlite_int64)
 31596  			}{DbUpdateHandler}))
 31597  		}
 31598  		return uintptr(0)
 31599  	}(), pDb)
 31600  	sqlite3.Xsqlite3_rollback_hook(tls, db, func() uintptr {
 31601  		if (*SqliteDb)(unsafe.Pointer(pDb)).FpRollbackHook != 0 {
 31602  			return *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{DbRollbackHandler}))
 31603  		}
 31604  		return uintptr(0)
 31605  	}(), pDb)
 31606  	sqlite3.Xsqlite3_wal_hook(tls, db, func() uintptr {
 31607  		if (*SqliteDb)(unsafe.Pointer(pDb)).FpWalHook != 0 {
 31608  			return *(*uintptr)(unsafe.Pointer(&struct {
 31609  				f func(*libc.TLS, uintptr, uintptr, uintptr, int32) int32
 31610  			}{DbWalHandler}))
 31611  		}
 31612  		return uintptr(0)
 31613  	}(), pDb)
 31614  }
 31615  
 31616  func DbObjCmd(tls *libc.TLS, cd uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 31617  	bp := tls.Alloc(1588)
 31618  	defer tls.Free(1588)
 31619  	*(*uintptr)(unsafe.Pointer(bp + 1464)) = cd
 31620  
 31621  	var pDb uintptr
 31622  
 31623  	var rc int32
 31624  	var zAuth uintptr
 31625  
 31626  	var zDestFile uintptr
 31627  	var zSrcDb uintptr
 31628  
 31629  	var pBackup uintptr
 31630  	var zCallback uintptr
 31631  
 31632  	var zBusy uintptr
 31633  
 31634  	var subCmd uintptr
 31635  
 31636  	var pResult uintptr
 31637  	var pCollate uintptr
 31638  	var zName uintptr
 31639  	var zScript uintptr
 31640  
 31641  	var zCommit uintptr
 31642  
 31643  	var pResult1 uintptr
 31644  	var isComplete int32
 31645  
 31646  	var zOpt uintptr
 31647  
 31648  	var pResult2 uintptr
 31649  	var ii int32
 31650  	var zErr uintptr
 31651  	var nErr int32
 31652  	var z uintptr
 31653  	var zTable uintptr
 31654  	var zFile uintptr
 31655  	var zConflict uintptr
 31656  
 31657  	var nCol int32
 31658  	var nByte int32
 31659  	var i int32
 31660  	var j int32
 31661  	var nSep int32
 31662  	var nNull int32
 31663  	var zSql uintptr
 31664  	var zLine uintptr
 31665  	var azCol uintptr
 31666  	var zCommit1 uintptr
 31667  	var in uintptr
 31668  	var lineno int32
 31669  
 31670  	var pResult3 uintptr
 31671  
 31672  	var zSep uintptr
 31673  	var zNull uintptr
 31674  
 31675  	var z1 uintptr
 31676  	var flags int32
 31677  	var zSchema uintptr
 31678  	var pValue uintptr
 31679  	var pBA uintptr
 31680  	var pData uintptr
 31681  
 31682  	var xrc int32
 31683  
 31684  	var i1 int32
 31685  
 31686  	var pResult4 uintptr
 31687  
 31688  	var i2 int32
 31689  
 31690  	var pRet uintptr
 31691  
 31692  	var p uintptr
 31693  	var pArray uintptr
 31694  	var pScript uintptr
 31695  	var evalFlags int32
 31696  	var zOpt1 uintptr
 31697  
 31698  	var z2 uintptr
 31699  	var n1 int32
 31700  	var flags1 int32
 31701  	var pFunc uintptr
 31702  	var pScript1 uintptr
 31703  	var zName1 uintptr
 31704  
 31705  	var i3 int32
 31706  
 31707  	var isReadonly1 int32
 31708  	var zDb uintptr
 31709  	var zTable1 uintptr
 31710  	var zColumn uintptr
 31711  
 31712  	var zNull1 uintptr
 31713  	var pResult5 uintptr
 31714  	var rowid Tcl_WideInt
 31715  	var zProgress uintptr
 31716  
 31717  	var zProfile uintptr
 31718  
 31719  	var zSrcFile uintptr
 31720  	var zDestDb uintptr
 31721  
 31722  	var pBackup1 uintptr
 31723  	var nTimeout int32
 31724  	var needFree int32
 31725  	var zSchema1 uintptr
 31726  
 31727  	var pData1 uintptr
 31728  	var v2 int32
 31729  	var zOp uintptr
 31730  
 31731  	var pResult6 uintptr
 31732  	var zTrace uintptr
 31733  
 31734  	var pError uintptr
 31735  
 31736  	var i4 int32
 31737  	var zTraceV2 uintptr
 31738  
 31739  	var wMask Tcl_WideInt
 31740  
 31741  	var pScript2 uintptr
 31742  	var zBegin uintptr
 31743  	var xNotify uintptr
 31744  	var pNotifyArg uintptr
 31745  	var nCol2 int32
 31746  	var pRet1 uintptr
 31747  	var pObj1 uintptr
 31748  
 31749  	var ppHook uintptr
 31750  
 31751  	var zArg uintptr
 31752  	var i5 int32
 31753  	pDb = *(*uintptr)(unsafe.Pointer(bp + 1464))
 31754  	rc = TCL_OK
 31755  
 31756  	if !(objc < 2) {
 31757  		goto __1
 31758  	}
 31759  	tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+1999)
 31760  	return TCL_ERROR
 31761  __1:
 31762  	;
 31763  	if !(tcl.XTcl_GetIndexFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), uintptr(unsafe.Pointer(&DB_strs)), ts+11691, 0, bp+1016) != 0) {
 31764  		goto __2
 31765  	}
 31766  	return TCL_ERROR
 31767  __2:
 31768  	;
 31769  	switch uint32(*(*int32)(unsafe.Pointer(bp + 1016))) {
 31770  	case uint32(0):
 31771  		goto __4
 31772  
 31773  	case uint32(1):
 31774  		goto __5
 31775  
 31776  	case uint32(2):
 31777  		goto __6
 31778  
 31779  	case uint32(3):
 31780  		goto __7
 31781  
 31782  	case uint32(4):
 31783  		goto __8
 31784  
 31785  	case uint32(5):
 31786  		goto __9
 31787  
 31788  	case uint32(6):
 31789  		goto __10
 31790  
 31791  	case uint32(7):
 31792  		goto __11
 31793  
 31794  	case uint32(8):
 31795  		goto __12
 31796  
 31797  	case uint32(9):
 31798  		goto __13
 31799  
 31800  	case uint32(10):
 31801  		goto __14
 31802  
 31803  	case uint32(11):
 31804  		goto __15
 31805  
 31806  	case uint32(12):
 31807  		goto __16
 31808  
 31809  	case uint32(13):
 31810  		goto __17
 31811  
 31812  	case uint32(14):
 31813  		goto __18
 31814  
 31815  	case uint32(15):
 31816  		goto __19
 31817  
 31818  	case uint32(16):
 31819  		goto __20
 31820  
 31821  	case uint32(18):
 31822  		goto __21
 31823  	case uint32(24):
 31824  		goto __22
 31825  
 31826  	case uint32(17):
 31827  		goto __23
 31828  
 31829  	case uint32(19):
 31830  		goto __24
 31831  
 31832  	case uint32(20):
 31833  		goto __25
 31834  
 31835  	case uint32(21):
 31836  		goto __26
 31837  
 31838  	case uint32(23):
 31839  		goto __27
 31840  
 31841  	case uint32(22):
 31842  		goto __28
 31843  
 31844  	case uint32(27):
 31845  		goto __29
 31846  
 31847  	case uint32(26):
 31848  		goto __30
 31849  
 31850  	case uint32(28):
 31851  		goto __31
 31852  
 31853  	case uint32(29):
 31854  		goto __32
 31855  
 31856  	case uint32(31):
 31857  		goto __33
 31858  
 31859  	case uint32(32):
 31860  		goto __34
 31861  
 31862  	case uint32(33):
 31863  		goto __35
 31864  
 31865  	case uint32(34):
 31866  		goto __36
 31867  
 31868  	case uint32(35):
 31869  		goto __37
 31870  
 31871  	case uint32(36):
 31872  		goto __38
 31873  
 31874  	case uint32(37):
 31875  		goto __39
 31876  
 31877  	case uint32(38):
 31878  		goto __40
 31879  
 31880  	case uint32(25):
 31881  		goto __41
 31882  
 31883  	case uint32(41):
 31884  		goto __42
 31885  	case uint32(39):
 31886  		goto __43
 31887  	case uint32(30):
 31888  		goto __44
 31889  
 31890  	case uint32(40):
 31891  		goto __45
 31892  	}
 31893  	goto __3
 31894  
 31895  __4:
 31896  	if !(objc > 3) {
 31897  		goto __46
 31898  	}
 31899  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+11698)
 31900  	return TCL_ERROR
 31901  	goto __47
 31902  __46:
 31903  	if !(objc == 2) {
 31904  		goto __48
 31905  	}
 31906  	if !((*SqliteDb)(unsafe.Pointer(pDb)).FzAuth != 0) {
 31907  		goto __50
 31908  	}
 31909  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, (*SqliteDb)(unsafe.Pointer(pDb)).FzAuth, uintptr(0)))
 31910  __50:
 31911  	;
 31912  	goto __49
 31913  __48:
 31914  	if !((*SqliteDb)(unsafe.Pointer(pDb)).FzAuth != 0) {
 31915  		goto __51
 31916  	}
 31917  	tcl.XTcl_Free(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzAuth)
 31918  __51:
 31919  	;
 31920  	zAuth = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+1020)
 31921  	if !(zAuth != 0 && *(*int32)(unsafe.Pointer(bp + 1020)) > 0) {
 31922  		goto __52
 31923  	}
 31924  	(*SqliteDb)(unsafe.Pointer(pDb)).FzAuth = tcl.XTcl_Alloc(tls, uint32(*(*int32)(unsafe.Pointer(bp + 1020))+1))
 31925  	libc.X__builtin___memcpy_chk(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzAuth, zAuth, uint64(*(*int32)(unsafe.Pointer(bp + 1020))+1), libc.X__builtin_object_size(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzAuth, 0))
 31926  	goto __53
 31927  __52:
 31928  	(*SqliteDb)(unsafe.Pointer(pDb)).FzAuth = uintptr(0)
 31929  __53:
 31930  	;
 31931  	if !((*SqliteDb)(unsafe.Pointer(pDb)).FzAuth != 0) {
 31932  		goto __54
 31933  	}
 31934  	(*SqliteDb)(unsafe.Pointer(pDb)).Finterp = interp
 31935  	sqlite3.Xsqlite3_set_authorizer(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, *(*uintptr)(unsafe.Pointer(&struct {
 31936  		f func(*libc.TLS, uintptr, int32, uintptr, uintptr, uintptr, uintptr) int32
 31937  	}{auth_callback})), pDb)
 31938  	goto __55
 31939  __54:
 31940  	sqlite3.Xsqlite3_set_authorizer(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, uintptr(0), uintptr(0))
 31941  __55:
 31942  	;
 31943  __49:
 31944  	;
 31945  __47:
 31946  	;
 31947  	goto __3
 31948  
 31949  __5:
 31950  	if !(objc == 3) {
 31951  		goto __56
 31952  	}
 31953  	zSrcDb = ts + 85
 31954  	zDestFile = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 31955  	goto __57
 31956  __56:
 31957  	if !(objc == 4) {
 31958  		goto __58
 31959  	}
 31960  	zSrcDb = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 31961  	zDestFile = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)))
 31962  	goto __59
 31963  __58:
 31964  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+11709)
 31965  	return TCL_ERROR
 31966  __59:
 31967  	;
 31968  __57:
 31969  	;
 31970  	rc = sqlite3.Xsqlite3_open_v2(tls, zDestFile, bp+1024,
 31971  		SQLITE_OPEN_READWRITE|SQLITE_OPEN_CREATE|(*SqliteDb)(unsafe.Pointer(pDb)).FopenFlags, uintptr(0))
 31972  	if !(rc != SQLITE_OK) {
 31973  		goto __60
 31974  	}
 31975  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+16, ts+11729,
 31976  		sqlite3.Xsqlite3_errmsg(tls, *(*uintptr)(unsafe.Pointer(bp + 1024))), uintptr(0)))
 31977  	sqlite3.Xsqlite3_close(tls, *(*uintptr)(unsafe.Pointer(bp + 1024)))
 31978  	return TCL_ERROR
 31979  __60:
 31980  	;
 31981  	pBackup = sqlite3.Xsqlite3_backup_init(tls, *(*uintptr)(unsafe.Pointer(bp + 1024)), ts+85, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, zSrcDb)
 31982  	if !(pBackup == uintptr(0)) {
 31983  		goto __61
 31984  	}
 31985  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+40, ts+11759,
 31986  		sqlite3.Xsqlite3_errmsg(tls, *(*uintptr)(unsafe.Pointer(bp + 1024))), uintptr(0)))
 31987  	sqlite3.Xsqlite3_close(tls, *(*uintptr)(unsafe.Pointer(bp + 1024)))
 31988  	return TCL_ERROR
 31989  __61:
 31990  	;
 31991  __62:
 31992  	if !(libc.AssignInt32(&rc, sqlite3.Xsqlite3_backup_step(tls, pBackup, 100)) == SQLITE_OK) {
 31993  		goto __63
 31994  	}
 31995  	goto __62
 31996  __63:
 31997  	;
 31998  	sqlite3.Xsqlite3_backup_finish(tls, pBackup)
 31999  	if !(rc == SQLITE_DONE) {
 32000  		goto __64
 32001  	}
 32002  	rc = TCL_OK
 32003  	goto __65
 32004  __64:
 32005  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+64, ts+11759,
 32006  		sqlite3.Xsqlite3_errmsg(tls, *(*uintptr)(unsafe.Pointer(bp + 1024))), uintptr(0)))
 32007  	rc = TCL_ERROR
 32008  __65:
 32009  	;
 32010  	sqlite3.Xsqlite3_close(tls, *(*uintptr)(unsafe.Pointer(bp + 1024)))
 32011  	goto __3
 32012  
 32013  __6:
 32014  	if !(objc > 3) {
 32015  		goto __66
 32016  	}
 32017  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+11698)
 32018  	return TCL_ERROR
 32019  	goto __67
 32020  __66:
 32021  	if !(objc == 2) {
 32022  		goto __68
 32023  	}
 32024  	if !((*SqliteDb)(unsafe.Pointer(pDb)).FzBindFallback != 0) {
 32025  		goto __70
 32026  	}
 32027  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+88, (*SqliteDb)(unsafe.Pointer(pDb)).FzBindFallback, uintptr(0)))
 32028  __70:
 32029  	;
 32030  	goto __69
 32031  __68:
 32032  	if !((*SqliteDb)(unsafe.Pointer(pDb)).FzBindFallback != 0) {
 32033  		goto __71
 32034  	}
 32035  	tcl.XTcl_Free(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzBindFallback)
 32036  __71:
 32037  	;
 32038  	zCallback = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+1032)
 32039  	if !(zCallback != 0 && *(*int32)(unsafe.Pointer(bp + 1032)) > 0) {
 32040  		goto __72
 32041  	}
 32042  	(*SqliteDb)(unsafe.Pointer(pDb)).FzBindFallback = tcl.XTcl_Alloc(tls, uint32(*(*int32)(unsafe.Pointer(bp + 1032))+1))
 32043  	libc.X__builtin___memcpy_chk(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzBindFallback, zCallback, uint64(*(*int32)(unsafe.Pointer(bp + 1032))+1), libc.X__builtin_object_size(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzBindFallback, 0))
 32044  	goto __73
 32045  __72:
 32046  	(*SqliteDb)(unsafe.Pointer(pDb)).FzBindFallback = uintptr(0)
 32047  __73:
 32048  	;
 32049  __69:
 32050  	;
 32051  __67:
 32052  	;
 32053  	goto __3
 32054  
 32055  __7:
 32056  	if !(objc > 3) {
 32057  		goto __74
 32058  	}
 32059  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+11775)
 32060  	return TCL_ERROR
 32061  	goto __75
 32062  __74:
 32063  	if !(objc == 2) {
 32064  		goto __76
 32065  	}
 32066  	if !((*SqliteDb)(unsafe.Pointer(pDb)).FzBusy != 0) {
 32067  		goto __78
 32068  	}
 32069  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+104, (*SqliteDb)(unsafe.Pointer(pDb)).FzBusy, uintptr(0)))
 32070  __78:
 32071  	;
 32072  	goto __77
 32073  __76:
 32074  	if !((*SqliteDb)(unsafe.Pointer(pDb)).FzBusy != 0) {
 32075  		goto __79
 32076  	}
 32077  	tcl.XTcl_Free(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzBusy)
 32078  __79:
 32079  	;
 32080  	zBusy = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+1036)
 32081  	if !(zBusy != 0 && *(*int32)(unsafe.Pointer(bp + 1036)) > 0) {
 32082  		goto __80
 32083  	}
 32084  	(*SqliteDb)(unsafe.Pointer(pDb)).FzBusy = tcl.XTcl_Alloc(tls, uint32(*(*int32)(unsafe.Pointer(bp + 1036))+1))
 32085  	libc.X__builtin___memcpy_chk(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzBusy, zBusy, uint64(*(*int32)(unsafe.Pointer(bp + 1036))+1), libc.X__builtin_object_size(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzBusy, 0))
 32086  	goto __81
 32087  __80:
 32088  	(*SqliteDb)(unsafe.Pointer(pDb)).FzBusy = uintptr(0)
 32089  __81:
 32090  	;
 32091  	if !((*SqliteDb)(unsafe.Pointer(pDb)).FzBusy != 0) {
 32092  		goto __82
 32093  	}
 32094  	(*SqliteDb)(unsafe.Pointer(pDb)).Finterp = interp
 32095  	sqlite3.Xsqlite3_busy_handler(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, *(*uintptr)(unsafe.Pointer(&struct {
 32096  		f func(*libc.TLS, uintptr, int32) int32
 32097  	}{DbBusyHandler})), pDb)
 32098  	goto __83
 32099  __82:
 32100  	sqlite3.Xsqlite3_busy_handler(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, uintptr(0), uintptr(0))
 32101  __83:
 32102  	;
 32103  __77:
 32104  	;
 32105  __75:
 32106  	;
 32107  	goto __3
 32108  
 32109  __8:
 32110  	if !(objc <= 2) {
 32111  		goto __84
 32112  	}
 32113  	tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+11784)
 32114  	return TCL_ERROR
 32115  __84:
 32116  	;
 32117  	subCmd = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)), uintptr(0))
 32118  	if !(int32(*(*int8)(unsafe.Pointer(subCmd))) == 'f' && libc.Xstrcmp(tls, subCmd, ts+11803) == 0) {
 32119  		goto __85
 32120  	}
 32121  	if !(objc != 3) {
 32122  		goto __87
 32123  	}
 32124  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+11803)
 32125  	return TCL_ERROR
 32126  	goto __88
 32127  __87:
 32128  	flushStmtCache(tls, pDb)
 32129  __88:
 32130  	;
 32131  	goto __86
 32132  __85:
 32133  	if !(int32(*(*int8)(unsafe.Pointer(subCmd))) == 's' && libc.Xstrcmp(tls, subCmd, ts+11809) == 0) {
 32134  		goto __89
 32135  	}
 32136  	if !(objc != 4) {
 32137  		goto __91
 32138  	}
 32139  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+11814)
 32140  	return TCL_ERROR
 32141  	goto __92
 32142  __91:
 32143  	if !(TCL_ERROR == tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+1040)) {
 32144  		goto __93
 32145  	}
 32146  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+120, ts+11821,
 32147  		tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)), uintptr(0)), ts+11838, uintptr(0)))
 32148  	return TCL_ERROR
 32149  	goto __94
 32150  __93:
 32151  	if !(*(*int32)(unsafe.Pointer(bp + 1040)) < 0) {
 32152  		goto __95
 32153  	}
 32154  	flushStmtCache(tls, pDb)
 32155  	*(*int32)(unsafe.Pointer(bp + 1040)) = 0
 32156  	goto __96
 32157  __95:
 32158  	if !(*(*int32)(unsafe.Pointer(bp + 1040)) > MAX_PREPARED_STMTS) {
 32159  		goto __97
 32160  	}
 32161  	*(*int32)(unsafe.Pointer(bp + 1040)) = MAX_PREPARED_STMTS
 32162  __97:
 32163  	;
 32164  __96:
 32165  	;
 32166  	(*SqliteDb)(unsafe.Pointer(pDb)).FmaxStmt = *(*int32)(unsafe.Pointer(bp + 1040))
 32167  __94:
 32168  	;
 32169  __92:
 32170  	;
 32171  	goto __90
 32172  __89:
 32173  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+152, ts+11851,
 32174  		tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)), uintptr(0)), ts+11864,
 32175  		uintptr(0)))
 32176  	return TCL_ERROR
 32177  __90:
 32178  	;
 32179  __86:
 32180  	;
 32181  	goto __3
 32182  
 32183  __9:
 32184  	if !(objc != 2) {
 32185  		goto __98
 32186  	}
 32187  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+584)
 32188  	return TCL_ERROR
 32189  __98:
 32190  	;
 32191  	pResult = tcl.XTcl_GetObjResult(tls, interp)
 32192  	tcl.XTcl_SetWideIntObj(tls, pResult, sqlite3.Xsqlite3_changes64(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb))
 32193  	goto __3
 32194  
 32195  __10:
 32196  	tcl.XTcl_DeleteCommand(tls, interp, tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)))
 32197  	goto __3
 32198  
 32199  __11:
 32200  	if !(objc != 4) {
 32201  		goto __99
 32202  	}
 32203  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+11889)
 32204  	return TCL_ERROR
 32205  __99:
 32206  	;
 32207  	zName = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)), uintptr(0))
 32208  	zScript = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+1044)
 32209  	pCollate = tcl.XTcl_Alloc(tls, uint32(uint64(unsafe.Sizeof(SqlCollate{}))+uint64(*(*int32)(unsafe.Pointer(bp + 1044)))+uint64(1)))
 32210  	if !(pCollate == uintptr(0)) {
 32211  		goto __100
 32212  	}
 32213  	return TCL_ERROR
 32214  __100:
 32215  	;
 32216  	(*SqlCollate)(unsafe.Pointer(pCollate)).Finterp = interp
 32217  	(*SqlCollate)(unsafe.Pointer(pCollate)).FpNext = (*SqliteDb)(unsafe.Pointer(pDb)).FpCollate
 32218  	(*SqlCollate)(unsafe.Pointer(pCollate)).FzScript = pCollate + 1*24
 32219  	(*SqliteDb)(unsafe.Pointer(pDb)).FpCollate = pCollate
 32220  	libc.X__builtin___memcpy_chk(tls, (*SqlCollate)(unsafe.Pointer(pCollate)).FzScript, zScript, uint64(*(*int32)(unsafe.Pointer(bp + 1044))+1), libc.X__builtin_object_size(tls, (*SqlCollate)(unsafe.Pointer(pCollate)).FzScript, 0))
 32221  	if !(sqlite3.Xsqlite3_create_collation(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, zName, SQLITE_UTF8,
 32222  		pCollate, *(*uintptr)(unsafe.Pointer(&struct {
 32223  			f func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32
 32224  		}{tclSqlCollate}))) != 0) {
 32225  		goto __101
 32226  	}
 32227  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3_errmsg(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb), uintptr(1))
 32228  	return TCL_ERROR
 32229  __101:
 32230  	;
 32231  	goto __3
 32232  
 32233  __12:
 32234  	if !(objc != 3) {
 32235  		goto __102
 32236  	}
 32237  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+10187)
 32238  	return TCL_ERROR
 32239  __102:
 32240  	;
 32241  	if !((*SqliteDb)(unsafe.Pointer(pDb)).FpCollateNeeded != 0) {
 32242  		goto __103
 32243  	}
 32244  __104:
 32245  	if !(libc.PreDecInt32(&(*Tcl_Obj)(unsafe.Pointer((*SqliteDb)(unsafe.Pointer(pDb)).FpCollateNeeded)).FrefCount, 1) <= 0) {
 32246  		goto __107
 32247  	}
 32248  	tcl.XTclFreeObj(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FpCollateNeeded)
 32249  __107:
 32250  	;
 32251  	goto __105
 32252  __105:
 32253  	if 0 != 0 {
 32254  		goto __104
 32255  	}
 32256  	goto __106
 32257  __106:
 32258  	;
 32259  __103:
 32260  	;
 32261  	(*SqliteDb)(unsafe.Pointer(pDb)).FpCollateNeeded = tcl.XTcl_DuplicateObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 32262  	(*Tcl_Obj)(unsafe.Pointer((*SqliteDb)(unsafe.Pointer(pDb)).FpCollateNeeded)).FrefCount++
 32263  	sqlite3.Xsqlite3_collation_needed(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, pDb, *(*uintptr)(unsafe.Pointer(&struct {
 32264  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr)
 32265  	}{tclCollateNeeded})))
 32266  	goto __3
 32267  
 32268  __13:
 32269  	if !(objc > 3) {
 32270  		goto __108
 32271  	}
 32272  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+11698)
 32273  	return TCL_ERROR
 32274  	goto __109
 32275  __108:
 32276  	if !(objc == 2) {
 32277  		goto __110
 32278  	}
 32279  	if !((*SqliteDb)(unsafe.Pointer(pDb)).FzCommit != 0) {
 32280  		goto __112
 32281  	}
 32282  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+184, (*SqliteDb)(unsafe.Pointer(pDb)).FzCommit, uintptr(0)))
 32283  __112:
 32284  	;
 32285  	goto __111
 32286  __110:
 32287  	if !((*SqliteDb)(unsafe.Pointer(pDb)).FzCommit != 0) {
 32288  		goto __113
 32289  	}
 32290  	tcl.XTcl_Free(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzCommit)
 32291  __113:
 32292  	;
 32293  	zCommit = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+1048)
 32294  	if !(zCommit != 0 && *(*int32)(unsafe.Pointer(bp + 1048)) > 0) {
 32295  		goto __114
 32296  	}
 32297  	(*SqliteDb)(unsafe.Pointer(pDb)).FzCommit = tcl.XTcl_Alloc(tls, uint32(*(*int32)(unsafe.Pointer(bp + 1048))+1))
 32298  	libc.X__builtin___memcpy_chk(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzCommit, zCommit, uint64(*(*int32)(unsafe.Pointer(bp + 1048))+1), libc.X__builtin_object_size(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzCommit, 0))
 32299  	goto __115
 32300  __114:
 32301  	(*SqliteDb)(unsafe.Pointer(pDb)).FzCommit = uintptr(0)
 32302  __115:
 32303  	;
 32304  	if !((*SqliteDb)(unsafe.Pointer(pDb)).FzCommit != 0) {
 32305  		goto __116
 32306  	}
 32307  	(*SqliteDb)(unsafe.Pointer(pDb)).Finterp = interp
 32308  	sqlite3.Xsqlite3_commit_hook(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, *(*uintptr)(unsafe.Pointer(&struct {
 32309  		f func(*libc.TLS, uintptr) int32
 32310  	}{DbCommitHandler})), pDb)
 32311  	goto __117
 32312  __116:
 32313  	sqlite3.Xsqlite3_commit_hook(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, uintptr(0), uintptr(0))
 32314  __117:
 32315  	;
 32316  __111:
 32317  	;
 32318  __109:
 32319  	;
 32320  	goto __3
 32321  
 32322  __14:
 32323  	if !(objc != 3) {
 32324  		goto __118
 32325  	}
 32326  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+9535)
 32327  	return TCL_ERROR
 32328  __118:
 32329  	;
 32330  	isComplete = sqlite3.Xsqlite3_complete(tls, tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)), uintptr(0)))
 32331  	pResult1 = tcl.XTcl_GetObjResult(tls, interp)
 32332  	tcl.XTcl_SetBooleanObj(tls, pResult1, isComplete)
 32333  	goto __3
 32334  
 32335  __15:
 32336  	if !(objc > 4) {
 32337  		goto __119
 32338  	}
 32339  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+11901)
 32340  	return TCL_ERROR
 32341  __119:
 32342  	;
 32343  	if !(objc == 2) {
 32344  		goto __120
 32345  	}
 32346  
 32347  	pResult2 = tcl.XTcl_NewListObj(tls, 0, uintptr(0))
 32348  	ii = 0
 32349  __122:
 32350  	if !(uint64(ii) < uint64(unsafe.Sizeof(aDbConfig))/uint64(unsafe.Sizeof(DbConfigChoices{}))) {
 32351  		goto __124
 32352  	}
 32353  	*(*int32)(unsafe.Pointer(bp + 1052)) = 0
 32354  	sqlite3.Xsqlite3_db_config(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, aDbConfig[ii].Fop, libc.VaList(bp+200, -1, bp+1052))
 32355  	tcl.XTcl_ListObjAppendElement(tls, interp, pResult2,
 32356  		tcl.XTcl_NewStringObj(tls, aDbConfig[ii].FzName, -1))
 32357  	tcl.XTcl_ListObjAppendElement(tls, interp, pResult2,
 32358  		tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 1052))))
 32359  	goto __123
 32360  __123:
 32361  	ii++
 32362  	goto __122
 32363  	goto __124
 32364  __124:
 32365  	;
 32366  	goto __121
 32367  __120:
 32368  	zOpt = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 32369  	*(*int32)(unsafe.Pointer(bp + 1056)) = -1
 32370  	*(*int32)(unsafe.Pointer(bp + 1060)) = 0
 32371  	if !(int32(*(*int8)(unsafe.Pointer(zOpt))) == '-') {
 32372  		goto __125
 32373  	}
 32374  	zOpt++
 32375  __125:
 32376  	;
 32377  	ii = 0
 32378  __126:
 32379  	if !(uint64(ii) < uint64(unsafe.Sizeof(aDbConfig))/uint64(unsafe.Sizeof(DbConfigChoices{}))) {
 32380  		goto __128
 32381  	}
 32382  	if !(libc.Xstrcmp(tls, aDbConfig[ii].FzName, zOpt) == 0) {
 32383  		goto __129
 32384  	}
 32385  	goto __128
 32386  __129:
 32387  	;
 32388  	goto __127
 32389  __127:
 32390  	ii++
 32391  	goto __126
 32392  	goto __128
 32393  __128:
 32394  	;
 32395  	if !(uint64(ii) >= uint64(unsafe.Sizeof(aDbConfig))/uint64(unsafe.Sizeof(DbConfigChoices{}))) {
 32396  		goto __130
 32397  	}
 32398  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+216, ts+11920, zOpt,
 32399  		ts+11945, uintptr(0)))
 32400  	return TCL_ERROR
 32401  __130:
 32402  	;
 32403  	if !(objc == 4) {
 32404  		goto __131
 32405  	}
 32406  	if !(tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+1056) != 0) {
 32407  		goto __132
 32408  	}
 32409  	return TCL_ERROR
 32410  __132:
 32411  	;
 32412  __131:
 32413  	;
 32414  	sqlite3.Xsqlite3_db_config(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, aDbConfig[ii].Fop, libc.VaList(bp+248, *(*int32)(unsafe.Pointer(bp + 1056)), bp+1060))
 32415  	pResult2 = tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 1060)))
 32416  __121:
 32417  	;
 32418  	tcl.XTcl_SetObjResult(tls, interp, pResult2)
 32419  	goto __3
 32420  
 32421  __16:
 32422  	lineno = 0
 32423  	if !(objc < 5 || objc > 7) {
 32424  		goto __133
 32425  	}
 32426  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv,
 32427  		ts+11947)
 32428  	return TCL_ERROR
 32429  __133:
 32430  	;
 32431  	if !(objc >= 6) {
 32432  		goto __134
 32433  	}
 32434  	zSep = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 5*8)), uintptr(0))
 32435  	goto __135
 32436  __134:
 32437  	zSep = ts + 12009
 32438  __135:
 32439  	;
 32440  	if !(objc >= 7) {
 32441  		goto __136
 32442  	}
 32443  	zNull = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 6*8)), uintptr(0))
 32444  	goto __137
 32445  __136:
 32446  	zNull = ts + 584
 32447  __137:
 32448  	;
 32449  	zConflict = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)), uintptr(0))
 32450  	zTable = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)), uintptr(0))
 32451  	zFile = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 4*8)), uintptr(0))
 32452  	nSep = strlen30(tls, zSep)
 32453  	nNull = strlen30(tls, zNull)
 32454  	if !(nSep == 0) {
 32455  		goto __138
 32456  	}
 32457  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+264, ts+12011,
 32458  		uintptr(0)))
 32459  	return TCL_ERROR
 32460  __138:
 32461  	;
 32462  	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) {
 32463  		goto __139
 32464  	}
 32465  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+280, ts+12090, zConflict,
 32466  		ts+12099, uintptr(0)))
 32467  	return TCL_ERROR
 32468  __139:
 32469  	;
 32470  	zSql = sqlite3.Xsqlite3_mprintf(tls, ts+12179, libc.VaList(bp+312, zTable))
 32471  	if !(zSql == uintptr(0)) {
 32472  		goto __140
 32473  	}
 32474  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+320, ts+12198, zTable, uintptr(0)))
 32475  	return TCL_ERROR
 32476  __140:
 32477  	;
 32478  	nByte = strlen30(tls, zSql)
 32479  	rc = sqlite3.Xsqlite3_prepare(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, zSql, -1, bp+1064, uintptr(0))
 32480  	sqlite3.Xsqlite3_free(tls, zSql)
 32481  	if !(rc != 0) {
 32482  		goto __141
 32483  	}
 32484  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+344, ts+12221, sqlite3.Xsqlite3_errmsg(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb), uintptr(0)))
 32485  	nCol = 0
 32486  	goto __142
 32487  __141:
 32488  	nCol = sqlite3.Xsqlite3_column_count(tls, *(*uintptr)(unsafe.Pointer(bp + 1064)))
 32489  __142:
 32490  	;
 32491  	sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 1064)))
 32492  	if !(nCol == 0) {
 32493  		goto __143
 32494  	}
 32495  	return TCL_ERROR
 32496  __143:
 32497  	;
 32498  	zSql = libc.Xmalloc(tls, uint64(nByte+50+nCol*2))
 32499  	if !(zSql == uintptr(0)) {
 32500  		goto __144
 32501  	}
 32502  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+368, ts+12229, uintptr(0)))
 32503  	return TCL_ERROR
 32504  __144:
 32505  	;
 32506  	sqlite3.Xsqlite3_snprintf(tls, nByte+50, zSql, ts+12251,
 32507  		libc.VaList(bp+384, zConflict, zTable))
 32508  	j = strlen30(tls, zSql)
 32509  	i = 1
 32510  __145:
 32511  	if !(i < nCol) {
 32512  		goto __147
 32513  	}
 32514  	*(*int8)(unsafe.Pointer(zSql + uintptr(libc.PostIncInt32(&j, 1)))) = int8(',')
 32515  	*(*int8)(unsafe.Pointer(zSql + uintptr(libc.PostIncInt32(&j, 1)))) = int8('?')
 32516  	goto __146
 32517  __146:
 32518  	i++
 32519  	goto __145
 32520  	goto __147
 32521  __147:
 32522  	;
 32523  	*(*int8)(unsafe.Pointer(zSql + uintptr(libc.PostIncInt32(&j, 1)))) = int8(')')
 32524  	*(*int8)(unsafe.Pointer(zSql + uintptr(j))) = int8(0)
 32525  	rc = sqlite3.Xsqlite3_prepare(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, zSql, -1, bp+1064, uintptr(0))
 32526  	libc.Xfree(tls, zSql)
 32527  	if !(rc != 0) {
 32528  		goto __148
 32529  	}
 32530  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+400, ts+12221, sqlite3.Xsqlite3_errmsg(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb), uintptr(0)))
 32531  	sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 1064)))
 32532  	return TCL_ERROR
 32533  __148:
 32534  	;
 32535  	in = libc.Xfopen(tls, zFile, ts+4402)
 32536  	if !(in == uintptr(0)) {
 32537  		goto __149
 32538  	}
 32539  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+424, ts+12283, zFile, uintptr(0)))
 32540  	sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 1064)))
 32541  	return TCL_ERROR
 32542  __149:
 32543  	;
 32544  	azCol = libc.Xmalloc(tls, uint64(unsafe.Sizeof(uintptr(0)))*uint64(nCol+1))
 32545  	if !(azCol == uintptr(0)) {
 32546  		goto __150
 32547  	}
 32548  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+448, ts+12229, uintptr(0)))
 32549  	libc.Xfclose(tls, in)
 32550  	return TCL_ERROR
 32551  __150:
 32552  	;
 32553  	sqlite3.Xsqlite3_exec(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, ts+12309, uintptr(0), uintptr(0), uintptr(0))
 32554  	zCommit1 = ts + 11628
 32555  __151:
 32556  	if !(libc.AssignUintptr(&zLine, local_getline(tls, uintptr(0), in)) != uintptr(0)) {
 32557  		goto __152
 32558  	}
 32559  	lineno++
 32560  	*(*uintptr)(unsafe.Pointer(azCol)) = zLine
 32561  	i = 0
 32562  	z = zLine
 32563  __153:
 32564  	if !(*(*int8)(unsafe.Pointer(z)) != 0) {
 32565  		goto __155
 32566  	}
 32567  	if !(int32(*(*int8)(unsafe.Pointer(z))) == int32(*(*int8)(unsafe.Pointer(zSep))) && libc.Xstrncmp(tls, z, zSep, uint64(nSep)) == 0) {
 32568  		goto __156
 32569  	}
 32570  	*(*int8)(unsafe.Pointer(z)) = int8(0)
 32571  	i++
 32572  	if !(i < nCol) {
 32573  		goto __157
 32574  	}
 32575  	*(*uintptr)(unsafe.Pointer(azCol + uintptr(i)*8)) = z + uintptr(nSep)
 32576  	z += uintptr(nSep - 1)
 32577  __157:
 32578  	;
 32579  __156:
 32580  	;
 32581  	goto __154
 32582  __154:
 32583  	z++
 32584  	goto __153
 32585  	goto __155
 32586  __155:
 32587  	;
 32588  	if !(i+1 != nCol) {
 32589  		goto __158
 32590  	}
 32591  	nErr = strlen30(tls, zFile) + 200
 32592  	zErr = libc.Xmalloc(tls, uint64(nErr))
 32593  	if !(zErr != 0) {
 32594  		goto __159
 32595  	}
 32596  	sqlite3.Xsqlite3_snprintf(tls, nErr, zErr,
 32597  		ts+12315,
 32598  		libc.VaList(bp+464, zFile, lineno, nCol, i+1))
 32599  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+496, zErr, uintptr(0)))
 32600  	libc.Xfree(tls, zErr)
 32601  __159:
 32602  	;
 32603  	zCommit1 = ts + 7824
 32604  	goto __152
 32605  __158:
 32606  	;
 32607  	i = 0
 32608  __160:
 32609  	if !(i < nCol) {
 32610  		goto __162
 32611  	}
 32612  
 32613  	if !(nNull > 0 && libc.Xstrcmp(tls, *(*uintptr)(unsafe.Pointer(azCol + uintptr(i)*8)), zNull) == 0 ||
 32614  		strlen30(tls, *(*uintptr)(unsafe.Pointer(azCol + uintptr(i)*8))) == 0) {
 32615  		goto __163
 32616  	}
 32617  	sqlite3.Xsqlite3_bind_null(tls, *(*uintptr)(unsafe.Pointer(bp + 1064)), i+1)
 32618  	goto __164
 32619  __163:
 32620  	sqlite3.Xsqlite3_bind_text(tls, *(*uintptr)(unsafe.Pointer(bp + 1064)), i+1, *(*uintptr)(unsafe.Pointer(azCol + uintptr(i)*8)), -1, uintptr(0))
 32621  __164:
 32622  	;
 32623  	goto __161
 32624  __161:
 32625  	i++
 32626  	goto __160
 32627  	goto __162
 32628  __162:
 32629  	;
 32630  	sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp + 1064)))
 32631  	rc = sqlite3.Xsqlite3_reset(tls, *(*uintptr)(unsafe.Pointer(bp + 1064)))
 32632  	libc.Xfree(tls, zLine)
 32633  	if !(rc != SQLITE_OK) {
 32634  		goto __165
 32635  	}
 32636  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+512, ts+12221, sqlite3.Xsqlite3_errmsg(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb), uintptr(0)))
 32637  	zCommit1 = ts + 7824
 32638  	goto __152
 32639  __165:
 32640  	;
 32641  	goto __151
 32642  __152:
 32643  	;
 32644  	libc.Xfree(tls, azCol)
 32645  	libc.Xfclose(tls, in)
 32646  	sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 1064)))
 32647  	sqlite3.Xsqlite3_exec(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, zCommit1, uintptr(0), uintptr(0), uintptr(0))
 32648  
 32649  	if !(int32(*(*int8)(unsafe.Pointer(zCommit1))) == 'C') {
 32650  		goto __166
 32651  	}
 32652  
 32653  	pResult3 = tcl.XTcl_GetObjResult(tls, interp)
 32654  	tcl.XTcl_SetIntObj(tls, pResult3, lineno)
 32655  	rc = TCL_OK
 32656  	goto __167
 32657  __166:
 32658  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([80]int8{})), bp+1072, ts+1333, libc.VaList(bp+536, lineno))
 32659  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+544, ts+12375, bp+1072,
 32660  		uintptr(0)))
 32661  	rc = TCL_ERROR
 32662  __167:
 32663  	;
 32664  	goto __3
 32665  
 32666  __17:
 32667  	zSchema = uintptr(0)
 32668  	pValue = uintptr(0)
 32669  	*(*sqlite3_int64)(unsafe.Pointer(bp + 1168)) = int64(0)
 32670  	*(*int32)(unsafe.Pointer(bp + 1160)) = 0
 32671  
 32672  	if !(objc < 3) {
 32673  		goto __168
 32674  	}
 32675  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+12408)
 32676  	rc = TCL_ERROR
 32677  	goto __3
 32678  __168:
 32679  	;
 32680  	i1 = 2
 32681  __169:
 32682  	if !(i1 < objc-1) {
 32683  		goto __171
 32684  	}
 32685  	z1 = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(i1)*8)))
 32686  	if !(libc.Xstrcmp(tls, z1, ts+12425) == 0 && i1 < objc-2) {
 32687  		goto __172
 32688  	}
 32689  	rc = tcl.XTcl_GetWideIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(libc.PreIncInt32(&i1, 1))*8)), bp+1152)
 32690  	if !(rc != 0) {
 32691  		goto __173
 32692  	}
 32693  	goto deserialize_error
 32694  __173:
 32695  	;
 32696  	*(*sqlite3_int64)(unsafe.Pointer(bp + 1168)) = *(*Tcl_WideInt)(unsafe.Pointer(bp + 1152))
 32697  	goto __170
 32698  __172:
 32699  	;
 32700  	if !(libc.Xstrcmp(tls, z1, ts+12434) == 0 && i1 < objc-2) {
 32701  		goto __174
 32702  	}
 32703  	rc = tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(libc.PreIncInt32(&i1, 1))*8)), bp+1160)
 32704  	if !(rc != 0) {
 32705  		goto __175
 32706  	}
 32707  	goto deserialize_error
 32708  __175:
 32709  	;
 32710  	goto __170
 32711  __174:
 32712  	;
 32713  	if !(zSchema == uintptr(0) && i1 == objc-2 && int32(*(*int8)(unsafe.Pointer(z1))) != '-') {
 32714  		goto __176
 32715  	}
 32716  	zSchema = z1
 32717  	goto __170
 32718  __176:
 32719  	;
 32720  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+568, ts+12444, z1, uintptr(0)))
 32721  	rc = TCL_ERROR
 32722  	goto deserialize_error
 32723  	goto __170
 32724  __170:
 32725  	i1++
 32726  	goto __169
 32727  	goto __171
 32728  __171:
 32729  	;
 32730  	pValue = *(*uintptr)(unsafe.Pointer(objv + uintptr(objc-1)*8))
 32731  	pBA = tcl.XTcl_GetByteArrayFromObj(tls, pValue, bp+1164)
 32732  	pData = sqlite3.Xsqlite3_malloc64(tls, uint64(*(*int32)(unsafe.Pointer(bp + 1164))))
 32733  	if !(pData == uintptr(0) && *(*int32)(unsafe.Pointer(bp + 1164)) > 0) {
 32734  		goto __177
 32735  	}
 32736  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+592, ts+2069, uintptr(0)))
 32737  	rc = TCL_ERROR
 32738  	goto __178
 32739  __177:
 32740  	if !(*(*int32)(unsafe.Pointer(bp + 1164)) > 0) {
 32741  		goto __179
 32742  	}
 32743  	libc.X__builtin___memcpy_chk(tls, pData, pBA, uint64(*(*int32)(unsafe.Pointer(bp + 1164))), libc.X__builtin_object_size(tls, pData, 0))
 32744  __179:
 32745  	;
 32746  	if !(*(*int32)(unsafe.Pointer(bp + 1160)) != 0) {
 32747  		goto __180
 32748  	}
 32749  	flags = SQLITE_DESERIALIZE_FREEONCLOSE | SQLITE_DESERIALIZE_READONLY
 32750  	goto __181
 32751  __180:
 32752  	flags = SQLITE_DESERIALIZE_FREEONCLOSE | SQLITE_DESERIALIZE_RESIZEABLE
 32753  __181:
 32754  	;
 32755  	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))
 32756  	if !(xrc != 0) {
 32757  		goto __182
 32758  	}
 32759  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+608, ts+12461, uintptr(0)))
 32760  	rc = TCL_ERROR
 32761  __182:
 32762  	;
 32763  	if !(*(*sqlite3_int64)(unsafe.Pointer(bp + 1168)) > int64(0)) {
 32764  		goto __183
 32765  	}
 32766  	sqlite3.Xsqlite3_file_control(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, zSchema, SQLITE_FCNTL_SIZE_LIMIT, bp+1168)
 32767  __183:
 32768  	;
 32769  __178:
 32770  	;
 32771  deserialize_error:
 32772  	goto __3
 32773  
 32774  __18:
 32775  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+624, ts+12489,
 32776  		uintptr(0)))
 32777  	return TCL_ERROR
 32778  
 32779  __19:
 32780  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, sqlite3.Xsqlite3_errcode(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb)))
 32781  	goto __3
 32782  
 32783  __20:
 32784  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, sqlite3.Xsqlite3_error_offset(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb)))
 32785  	goto __3
 32786  
 32787  __21:
 32788  __22:
 32789  	pResult4 = uintptr(0)
 32790  	if !(objc != 3) {
 32791  		goto __184
 32792  	}
 32793  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+9535)
 32794  	return TCL_ERROR
 32795  __184:
 32796  	;
 32797  	dbEvalInit(tls, bp+1176, pDb, *(*uintptr)(unsafe.Pointer(objv + 2*8)), uintptr(0), 0)
 32798  	rc = dbEvalStep(tls, bp+1176)
 32799  	if !(*(*int32)(unsafe.Pointer(bp + 1016)) == 24) {
 32800  		goto __185
 32801  	}
 32802  	if !(rc == TCL_OK) {
 32803  		goto __187
 32804  	}
 32805  	pResult4 = dbEvalColumnValue(tls, bp+1176, 0)
 32806  	goto __188
 32807  __187:
 32808  	if !(rc == TCL_BREAK) {
 32809  		goto __189
 32810  	}
 32811  	tcl.XTcl_ResetResult(tls, interp)
 32812  __189:
 32813  	;
 32814  __188:
 32815  	;
 32816  	goto __186
 32817  __185:
 32818  	if !(rc == TCL_BREAK || rc == TCL_OK) {
 32819  		goto __190
 32820  	}
 32821  	pResult4 = tcl.XTcl_NewBooleanObj(tls, libc.Bool32(rc == TCL_OK))
 32822  __190:
 32823  	;
 32824  __186:
 32825  	;
 32826  	dbEvalFinalize(tls, bp+1176)
 32827  	if !(pResult4 != 0) {
 32828  		goto __191
 32829  	}
 32830  	tcl.XTcl_SetObjResult(tls, interp, pResult4)
 32831  __191:
 32832  	;
 32833  	if !(rc == TCL_BREAK) {
 32834  		goto __192
 32835  	}
 32836  	rc = TCL_OK
 32837  __192:
 32838  	;
 32839  	goto __3
 32840  
 32841  __23:
 32842  	evalFlags = 0
 32843  __193:
 32844  	if !(objc > 3 && libc.AssignUintptr(&zOpt1, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))) != uintptr(0) && int32(*(*int8)(unsafe.Pointer(zOpt1))) == '-') {
 32845  		goto __194
 32846  	}
 32847  	if !(libc.Xstrcmp(tls, zOpt1, ts+12537) == 0) {
 32848  		goto __195
 32849  	}
 32850  	evalFlags = evalFlags | SQLITE_EVAL_WITHOUTNULLS
 32851  	goto __196
 32852  __195:
 32853  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+640, ts+12551, zOpt1, ts+11945, uintptr(0)))
 32854  	return TCL_ERROR
 32855  __196:
 32856  	;
 32857  	objc--
 32858  	objv += 8
 32859  	goto __193
 32860  __194:
 32861  	;
 32862  	if !(objc < 3 || objc > 5) {
 32863  		goto __197
 32864  	}
 32865  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv,
 32866  		ts+12569)
 32867  	return TCL_ERROR
 32868  __197:
 32869  	;
 32870  	if !(objc == 3) {
 32871  		goto __198
 32872  	}
 32873  	pRet = tcl.XTcl_NewObj(tls)
 32874  	(*Tcl_Obj)(unsafe.Pointer(pRet)).FrefCount++
 32875  	dbEvalInit(tls, bp+1232, pDb, *(*uintptr)(unsafe.Pointer(objv + 2*8)), uintptr(0), 0)
 32876  __200:
 32877  	if !(TCL_OK == libc.AssignInt32(&rc, dbEvalStep(tls, bp+1232))) {
 32878  		goto __201
 32879  	}
 32880  	dbEvalRowInfo(tls, bp+1232, bp+1288, uintptr(0))
 32881  	i2 = 0
 32882  __202:
 32883  	if !(i2 < *(*int32)(unsafe.Pointer(bp + 1288))) {
 32884  		goto __204
 32885  	}
 32886  	tcl.XTcl_ListObjAppendElement(tls, interp, pRet, dbEvalColumnValue(tls, bp+1232, i2))
 32887  	goto __203
 32888  __203:
 32889  	i2++
 32890  	goto __202
 32891  	goto __204
 32892  __204:
 32893  	;
 32894  	goto __200
 32895  __201:
 32896  	;
 32897  	dbEvalFinalize(tls, bp+1232)
 32898  	if !(rc == TCL_BREAK) {
 32899  		goto __205
 32900  	}
 32901  	tcl.XTcl_SetObjResult(tls, interp, pRet)
 32902  	rc = TCL_OK
 32903  __205:
 32904  	;
 32905  __206:
 32906  	if !(libc.PreDecInt32(&(*Tcl_Obj)(unsafe.Pointer(pRet)).FrefCount, 1) <= 0) {
 32907  		goto __209
 32908  	}
 32909  	tcl.XTclFreeObj(tls, pRet)
 32910  __209:
 32911  	;
 32912  	goto __207
 32913  __207:
 32914  	if 0 != 0 {
 32915  		goto __206
 32916  	}
 32917  	goto __208
 32918  __208:
 32919  	;
 32920  	goto __199
 32921  __198:
 32922  	pArray = uintptr(0)
 32923  
 32924  	if !(objc >= 5 && *(*int8)(unsafe.Pointer(tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8))))) != 0) {
 32925  		goto __210
 32926  	}
 32927  	pArray = *(*uintptr)(unsafe.Pointer(objv + 3*8))
 32928  __210:
 32929  	;
 32930  	pScript = *(*uintptr)(unsafe.Pointer(objv + uintptr(objc-1)*8))
 32931  	(*Tcl_Obj)(unsafe.Pointer(pScript)).FrefCount++
 32932  
 32933  	p = tcl.XTcl_Alloc(tls, uint32(unsafe.Sizeof(DbEvalContext{})))
 32934  	dbEvalInit(tls, p, pDb, *(*uintptr)(unsafe.Pointer(objv + 2*8)), pArray, evalFlags)
 32935  
 32936  	*(*ClientData)(unsafe.Pointer(bp + 1296)) = p
 32937  	*(*ClientData)(unsafe.Pointer(bp + 1296 + 1*8)) = pScript
 32938  	rc = DbEvalNextCmd(tls, bp+1296, interp, TCL_OK)
 32939  __199:
 32940  	;
 32941  	goto __3
 32942  
 32943  __24:
 32944  	flags1 = SQLITE_UTF8
 32945  	*(*int32)(unsafe.Pointer(bp + 1312)) = -1
 32946  	*(*int32)(unsafe.Pointer(bp + 1368)) = SQLITE_NULL
 32947  	if !(objc < 4) {
 32948  		goto __211
 32949  	}
 32950  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+12605)
 32951  	return TCL_ERROR
 32952  __211:
 32953  	;
 32954  	i3 = 3
 32955  __212:
 32956  	if !(i3 < objc-1) {
 32957  		goto __214
 32958  	}
 32959  	z2 = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(i3)*8)))
 32960  	n1 = strlen30(tls, z2)
 32961  	if !(n1 > 1 && libc.Xstrncmp(tls, z2, ts+12628, uint64(n1)) == 0) {
 32962  		goto __215
 32963  	}
 32964  	if !(i3 == objc-2) {
 32965  		goto __217
 32966  	}
 32967  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+672, ts+12638, z2, uintptr(0)))
 32968  	return TCL_ERROR
 32969  __217:
 32970  	;
 32971  	if !(tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(i3+1)*8)), bp+1312) != 0) {
 32972  		goto __218
 32973  	}
 32974  	return TCL_ERROR
 32975  __218:
 32976  	;
 32977  	if !(*(*int32)(unsafe.Pointer(bp + 1312)) < 0) {
 32978  		goto __219
 32979  	}
 32980  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+696, ts+12668,
 32981  		uintptr(0)))
 32982  	return TCL_ERROR
 32983  __219:
 32984  	;
 32985  	i3++
 32986  	goto __216
 32987  __215:
 32988  	if !(n1 > 1 && libc.Xstrncmp(tls, z2, ts+12709, uint64(n1)) == 0) {
 32989  		goto __220
 32990  	}
 32991  	flags1 = flags1 | SQLITE_DETERMINISTIC
 32992  	goto __221
 32993  __220:
 32994  	if !(n1 > 1 && libc.Xstrncmp(tls, z2, ts+12724, uint64(n1)) == 0) {
 32995  		goto __222
 32996  	}
 32997  	flags1 = flags1 | SQLITE_DIRECTONLY
 32998  	goto __223
 32999  __222:
 33000  	if !(n1 > 1 && libc.Xstrncmp(tls, z2, ts+12736, uint64(n1)) == 0) {
 33001  		goto __224
 33002  	}
 33003  	flags1 = flags1 | SQLITE_INNOCUOUS
 33004  	goto __225
 33005  __224:
 33006  	if !(n1 > 1 && libc.Xstrncmp(tls, z2, ts+12747, uint64(n1)) == 0) {
 33007  		goto __226
 33008  	}
 33009  	*(*[6]uintptr)(unsafe.Pointer(bp + 1320)) = [6]uintptr{ts + 8470, ts + 12759, ts + 12764, ts + 12769, ts + 12774, uintptr(0)}
 33010  
 33011  	if !(i3 == objc-2) {
 33012  		goto __228
 33013  	}
 33014  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+712, ts+12638, z2, uintptr(0)))
 33015  	return TCL_ERROR
 33016  __228:
 33017  	;
 33018  	i3++
 33019  	if !(tcl.XTcl_GetIndexFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(i3)*8)), bp+1320, ts+12778, 0, bp+1368) != 0) {
 33020  		goto __229
 33021  	}
 33022  	return TCL_ERROR
 33023  __229:
 33024  	;
 33025  	*(*int32)(unsafe.Pointer(bp + 1368))++
 33026  	goto __227
 33027  __226:
 33028  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+736, ts+11851, z2,
 33029  		ts+12783, uintptr(0)))
 33030  	return TCL_ERROR
 33031  __227:
 33032  	;
 33033  __225:
 33034  	;
 33035  __223:
 33036  	;
 33037  __221:
 33038  	;
 33039  __216:
 33040  	;
 33041  	goto __213
 33042  __213:
 33043  	i3++
 33044  	goto __212
 33045  	goto __214
 33046  __214:
 33047  	;
 33048  	pScript1 = *(*uintptr)(unsafe.Pointer(objv + uintptr(objc-1)*8))
 33049  	zName1 = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)), uintptr(0))
 33050  	pFunc = findSqlFunc(tls, pDb, zName1)
 33051  	if !(pFunc == uintptr(0)) {
 33052  		goto __230
 33053  	}
 33054  	return TCL_ERROR
 33055  __230:
 33056  	;
 33057  	if !((*SqlFunc)(unsafe.Pointer(pFunc)).FpScript != 0) {
 33058  		goto __231
 33059  	}
 33060  __232:
 33061  	if !(libc.PreDecInt32(&(*Tcl_Obj)(unsafe.Pointer((*SqlFunc)(unsafe.Pointer(pFunc)).FpScript)).FrefCount, 1) <= 0) {
 33062  		goto __235
 33063  	}
 33064  	tcl.XTclFreeObj(tls, (*SqlFunc)(unsafe.Pointer(pFunc)).FpScript)
 33065  __235:
 33066  	;
 33067  	goto __233
 33068  __233:
 33069  	if 0 != 0 {
 33070  		goto __232
 33071  	}
 33072  	goto __234
 33073  __234:
 33074  	;
 33075  __231:
 33076  	;
 33077  	(*SqlFunc)(unsafe.Pointer(pFunc)).FpScript = pScript1
 33078  	(*Tcl_Obj)(unsafe.Pointer(pScript1)).FrefCount++
 33079  	(*SqlFunc)(unsafe.Pointer(pFunc)).FuseEvalObjv = safeToUseEvalObjv(tls, interp, pScript1)
 33080  	(*SqlFunc)(unsafe.Pointer(pFunc)).FeType = *(*int32)(unsafe.Pointer(bp + 1368))
 33081  	rc = sqlite3.Xsqlite3_create_function(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, zName1, *(*int32)(unsafe.Pointer(bp + 1312)), flags1,
 33082  		pFunc, *(*uintptr)(unsafe.Pointer(&struct {
 33083  			f func(*libc.TLS, uintptr, int32, uintptr)
 33084  		}{tclSqlFunc})), uintptr(0), uintptr(0))
 33085  	if !(rc != SQLITE_OK) {
 33086  		goto __236
 33087  	}
 33088  	rc = TCL_ERROR
 33089  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3_errmsg(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb), uintptr(1))
 33090  __236:
 33091  	;
 33092  	goto __3
 33093  
 33094  __25:
 33095  	isReadonly1 = 0
 33096  	zDb = ts + 85
 33097  
 33098  	if !(objc > 3 && libc.Xstrcmp(tls, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8))), ts+12434) == 0) {
 33099  		goto __237
 33100  	}
 33101  	isReadonly1 = 1
 33102  __237:
 33103  	;
 33104  	if !(objc != 5+isReadonly1 && objc != 6+isReadonly1) {
 33105  		goto __238
 33106  	}
 33107  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+12861)
 33108  	return TCL_ERROR
 33109  __238:
 33110  	;
 33111  	if !(objc == 6+isReadonly1) {
 33112  		goto __239
 33113  	}
 33114  	zDb = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(2+isReadonly1)*8)))
 33115  __239:
 33116  	;
 33117  	zTable1 = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(objc-3)*8)))
 33118  	zColumn = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(objc-2)*8)))
 33119  	rc = tcl.XTcl_GetWideIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(objc-1)*8)), bp+1376)
 33120  
 33121  	if !(rc == TCL_OK) {
 33122  		goto __240
 33123  	}
 33124  	rc = createIncrblobChannel(tls,
 33125  		interp, pDb, zDb, zTable1, zColumn, *(*Tcl_WideInt)(unsafe.Pointer(bp + 1376)), isReadonly1)
 33126  __240:
 33127  	;
 33128  	goto __3
 33129  
 33130  __26:
 33131  	sqlite3.Xsqlite3_interrupt(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb)
 33132  	goto __3
 33133  
 33134  __27:
 33135  	if !(objc != 2 && objc != 3) {
 33136  		goto __241
 33137  	}
 33138  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+12897)
 33139  	return TCL_ERROR
 33140  __241:
 33141  	;
 33142  	if !(objc == 3) {
 33143  		goto __242
 33144  	}
 33145  	zNull1 = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+1384)
 33146  	if !((*SqliteDb)(unsafe.Pointer(pDb)).FzNull != 0) {
 33147  		goto __243
 33148  	}
 33149  	tcl.XTcl_Free(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzNull)
 33150  __243:
 33151  	;
 33152  	if !(zNull1 != 0 && *(*int32)(unsafe.Pointer(bp + 1384)) > 0) {
 33153  		goto __244
 33154  	}
 33155  	(*SqliteDb)(unsafe.Pointer(pDb)).FzNull = tcl.XTcl_Alloc(tls, uint32(*(*int32)(unsafe.Pointer(bp + 1384))+1))
 33156  	libc.X__builtin___memcpy_chk(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzNull, zNull1, uint64(*(*int32)(unsafe.Pointer(bp + 1384))), libc.X__builtin_object_size(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzNull, 0))
 33157  	*(*int8)(unsafe.Pointer((*SqliteDb)(unsafe.Pointer(pDb)).FzNull + uintptr(*(*int32)(unsafe.Pointer(bp + 1384))))) = int8(0)
 33158  	goto __245
 33159  __244:
 33160  	(*SqliteDb)(unsafe.Pointer(pDb)).FzNull = uintptr(0)
 33161  __245:
 33162  	;
 33163  __242:
 33164  	;
 33165  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzNull, -1))
 33166  	goto __3
 33167  
 33168  __28:
 33169  	if !(objc != 2) {
 33170  		goto __246
 33171  	}
 33172  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+584)
 33173  	return TCL_ERROR
 33174  __246:
 33175  	;
 33176  	rowid = sqlite3.Xsqlite3_last_insert_rowid(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb)
 33177  	pResult5 = tcl.XTcl_GetObjResult(tls, interp)
 33178  	tcl.XTcl_SetWideIntObj(tls, pResult5, rowid)
 33179  	goto __3
 33180  
 33181  __29:
 33182  	if !(objc == 2) {
 33183  		goto __247
 33184  	}
 33185  	if !((*SqliteDb)(unsafe.Pointer(pDb)).FzProgress != 0) {
 33186  		goto __249
 33187  	}
 33188  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+768, (*SqliteDb)(unsafe.Pointer(pDb)).FzProgress, uintptr(0)))
 33189  __249:
 33190  	;
 33191  	goto __248
 33192  __247:
 33193  	if !(objc == 4) {
 33194  		goto __250
 33195  	}
 33196  	if !(TCL_OK != tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+1388)) {
 33197  		goto __252
 33198  	}
 33199  	return TCL_ERROR
 33200  __252:
 33201  	;
 33202  	if !((*SqliteDb)(unsafe.Pointer(pDb)).FzProgress != 0) {
 33203  		goto __253
 33204  	}
 33205  	tcl.XTcl_Free(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzProgress)
 33206  __253:
 33207  	;
 33208  	zProgress = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+1392)
 33209  	if !(zProgress != 0 && *(*int32)(unsafe.Pointer(bp + 1392)) > 0) {
 33210  		goto __254
 33211  	}
 33212  	(*SqliteDb)(unsafe.Pointer(pDb)).FzProgress = tcl.XTcl_Alloc(tls, uint32(*(*int32)(unsafe.Pointer(bp + 1392))+1))
 33213  	libc.X__builtin___memcpy_chk(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzProgress, zProgress, uint64(*(*int32)(unsafe.Pointer(bp + 1392))+1), libc.X__builtin_object_size(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzProgress, 0))
 33214  	goto __255
 33215  __254:
 33216  	(*SqliteDb)(unsafe.Pointer(pDb)).FzProgress = uintptr(0)
 33217  __255:
 33218  	;
 33219  	if !((*SqliteDb)(unsafe.Pointer(pDb)).FzProgress != 0) {
 33220  		goto __256
 33221  	}
 33222  	(*SqliteDb)(unsafe.Pointer(pDb)).Finterp = interp
 33223  	sqlite3.Xsqlite3_progress_handler(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, *(*int32)(unsafe.Pointer(bp + 1388)), *(*uintptr)(unsafe.Pointer(&struct {
 33224  		f func(*libc.TLS, uintptr) int32
 33225  	}{DbProgressHandler})), pDb)
 33226  	goto __257
 33227  __256:
 33228  	sqlite3.Xsqlite3_progress_handler(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, 0, uintptr(0), uintptr(0))
 33229  __257:
 33230  	;
 33231  	goto __251
 33232  __250:
 33233  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+12907)
 33234  	return TCL_ERROR
 33235  __251:
 33236  	;
 33237  __248:
 33238  	;
 33239  	goto __3
 33240  
 33241  __30:
 33242  	if !(objc > 3) {
 33243  		goto __258
 33244  	}
 33245  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+11698)
 33246  	return TCL_ERROR
 33247  	goto __259
 33248  __258:
 33249  	if !(objc == 2) {
 33250  		goto __260
 33251  	}
 33252  	if !((*SqliteDb)(unsafe.Pointer(pDb)).FzProfile != 0) {
 33253  		goto __262
 33254  	}
 33255  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+784, (*SqliteDb)(unsafe.Pointer(pDb)).FzProfile, uintptr(0)))
 33256  __262:
 33257  	;
 33258  	goto __261
 33259  __260:
 33260  	if !((*SqliteDb)(unsafe.Pointer(pDb)).FzProfile != 0) {
 33261  		goto __263
 33262  	}
 33263  	tcl.XTcl_Free(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzProfile)
 33264  __263:
 33265  	;
 33266  	zProfile = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+1396)
 33267  	if !(zProfile != 0 && *(*int32)(unsafe.Pointer(bp + 1396)) > 0) {
 33268  		goto __264
 33269  	}
 33270  	(*SqliteDb)(unsafe.Pointer(pDb)).FzProfile = tcl.XTcl_Alloc(tls, uint32(*(*int32)(unsafe.Pointer(bp + 1396))+1))
 33271  	libc.X__builtin___memcpy_chk(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzProfile, zProfile, uint64(*(*int32)(unsafe.Pointer(bp + 1396))+1), libc.X__builtin_object_size(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzProfile, 0))
 33272  	goto __265
 33273  __264:
 33274  	(*SqliteDb)(unsafe.Pointer(pDb)).FzProfile = uintptr(0)
 33275  __265:
 33276  	;
 33277  	if !((*SqliteDb)(unsafe.Pointer(pDb)).FzProfile != 0) {
 33278  		goto __266
 33279  	}
 33280  	(*SqliteDb)(unsafe.Pointer(pDb)).Finterp = interp
 33281  	sqlite3.Xsqlite3_profile(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, *(*uintptr)(unsafe.Pointer(&struct {
 33282  		f func(*libc.TLS, uintptr, uintptr, sqlite_uint64)
 33283  	}{DbProfileHandler})), pDb)
 33284  	goto __267
 33285  __266:
 33286  	sqlite3.Xsqlite3_profile(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, uintptr(0), uintptr(0))
 33287  __267:
 33288  	;
 33289  __261:
 33290  	;
 33291  __259:
 33292  	;
 33293  	goto __3
 33294  
 33295  __31:
 33296  	if !(objc != 3) {
 33297  		goto __268
 33298  	}
 33299  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+12918)
 33300  	return TCL_ERROR
 33301  __268:
 33302  	;
 33303  	goto __3
 33304  
 33305  __32:
 33306  	nTimeout = 0
 33307  
 33308  	if !(objc == 3) {
 33309  		goto __269
 33310  	}
 33311  	zDestDb = ts + 85
 33312  	zSrcFile = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 33313  	goto __270
 33314  __269:
 33315  	if !(objc == 4) {
 33316  		goto __271
 33317  	}
 33318  	zDestDb = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 33319  	zSrcFile = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)))
 33320  	goto __272
 33321  __271:
 33322  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+11709)
 33323  	return TCL_ERROR
 33324  __272:
 33325  	;
 33326  __270:
 33327  	;
 33328  	rc = sqlite3.Xsqlite3_open_v2(tls, zSrcFile, bp+1400,
 33329  		SQLITE_OPEN_READONLY|(*SqliteDb)(unsafe.Pointer(pDb)).FopenFlags, uintptr(0))
 33330  	if !(rc != SQLITE_OK) {
 33331  		goto __273
 33332  	}
 33333  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+800, ts+12922,
 33334  		sqlite3.Xsqlite3_errmsg(tls, *(*uintptr)(unsafe.Pointer(bp + 1400))), uintptr(0)))
 33335  	sqlite3.Xsqlite3_close(tls, *(*uintptr)(unsafe.Pointer(bp + 1400)))
 33336  	return TCL_ERROR
 33337  __273:
 33338  	;
 33339  	pBackup1 = sqlite3.Xsqlite3_backup_init(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, zDestDb, *(*uintptr)(unsafe.Pointer(bp + 1400)), ts+85)
 33340  	if !(pBackup1 == uintptr(0)) {
 33341  		goto __274
 33342  	}
 33343  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+824, ts+12952,
 33344  		sqlite3.Xsqlite3_errmsg(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb), uintptr(0)))
 33345  	sqlite3.Xsqlite3_close(tls, *(*uintptr)(unsafe.Pointer(bp + 1400)))
 33346  	return TCL_ERROR
 33347  __274:
 33348  	;
 33349  __275:
 33350  	if !(libc.AssignInt32(&rc, sqlite3.Xsqlite3_backup_step(tls, pBackup1, 100)) == SQLITE_OK ||
 33351  		rc == SQLITE_BUSY) {
 33352  		goto __276
 33353  	}
 33354  	if !(rc == SQLITE_BUSY) {
 33355  		goto __277
 33356  	}
 33357  	if !(libc.PostIncInt32(&nTimeout, 1) >= 3) {
 33358  		goto __278
 33359  	}
 33360  	goto __276
 33361  __278:
 33362  	;
 33363  	sqlite3.Xsqlite3_sleep(tls, 100)
 33364  __277:
 33365  	;
 33366  	goto __275
 33367  __276:
 33368  	;
 33369  	sqlite3.Xsqlite3_backup_finish(tls, pBackup1)
 33370  	if !(rc == SQLITE_DONE) {
 33371  		goto __279
 33372  	}
 33373  	rc = TCL_OK
 33374  	goto __280
 33375  __279:
 33376  	if !(rc == SQLITE_BUSY || rc == SQLITE_LOCKED) {
 33377  		goto __281
 33378  	}
 33379  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+848, ts+12969,
 33380  		uintptr(0)))
 33381  	rc = TCL_ERROR
 33382  	goto __282
 33383  __281:
 33384  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+864, ts+12952,
 33385  		sqlite3.Xsqlite3_errmsg(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb), uintptr(0)))
 33386  	rc = TCL_ERROR
 33387  __282:
 33388  	;
 33389  __280:
 33390  	;
 33391  	sqlite3.Xsqlite3_close(tls, *(*uintptr)(unsafe.Pointer(bp + 1400)))
 33392  	goto __3
 33393  
 33394  __33:
 33395  	if objc >= 3 {
 33396  		zSchema1 = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 33397  	} else {
 33398  		zSchema1 = ts + 85
 33399  	}
 33400  	*(*sqlite3_int64)(unsafe.Pointer(bp + 1408)) = int64(0)
 33401  	if !(objc != 2 && objc != 3) {
 33402  		goto __283
 33403  	}
 33404  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+13006)
 33405  	rc = TCL_ERROR
 33406  	goto __284
 33407  __283:
 33408  	pData1 = sqlite3.Xsqlite3_serialize(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, zSchema1, bp+1408, uint32(SQLITE_SERIALIZE_NOCOPY))
 33409  	if !(pData1 != 0) {
 33410  		goto __285
 33411  	}
 33412  	needFree = 0
 33413  	goto __286
 33414  __285:
 33415  	pData1 = sqlite3.Xsqlite3_serialize(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, zSchema1, bp+1408, uint32(0))
 33416  	needFree = 1
 33417  __286:
 33418  	;
 33419  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewByteArrayObj(tls, pData1, int32(*(*sqlite3_int64)(unsafe.Pointer(bp + 1408)))))
 33420  	if !(needFree != 0) {
 33421  		goto __287
 33422  	}
 33423  	sqlite3.Xsqlite3_free(tls, pData1)
 33424  __287:
 33425  	;
 33426  __284:
 33427  	;
 33428  	goto __3
 33429  
 33430  __34:
 33431  	if !(objc != 3) {
 33432  		goto __288
 33433  	}
 33434  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+13017)
 33435  	return TCL_ERROR
 33436  __288:
 33437  	;
 33438  	zOp = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 33439  	if !(libc.Xstrcmp(tls, zOp, ts+9485) == 0) {
 33440  		goto __289
 33441  	}
 33442  	v2 = (*SqliteDb)(unsafe.Pointer(pDb)).FnStep
 33443  	goto __290
 33444  __289:
 33445  	if !(libc.Xstrcmp(tls, zOp, ts+13039) == 0) {
 33446  		goto __291
 33447  	}
 33448  	v2 = (*SqliteDb)(unsafe.Pointer(pDb)).FnSort
 33449  	goto __292
 33450  __291:
 33451  	if !(libc.Xstrcmp(tls, zOp, ts+13044) == 0) {
 33452  		goto __293
 33453  	}
 33454  	v2 = (*SqliteDb)(unsafe.Pointer(pDb)).FnIndex
 33455  	goto __294
 33456  __293:
 33457  	if !(libc.Xstrcmp(tls, zOp, ts+13054) == 0) {
 33458  		goto __295
 33459  	}
 33460  	v2 = (*SqliteDb)(unsafe.Pointer(pDb)).FnVMStep
 33461  	goto __296
 33462  __295:
 33463  	tcl.XTcl_AppendResult(tls, interp,
 33464  		libc.VaList(bp+888, ts+13061,
 33465  			uintptr(0)))
 33466  	return TCL_ERROR
 33467  __296:
 33468  	;
 33469  __294:
 33470  	;
 33471  __292:
 33472  	;
 33473  __290:
 33474  	;
 33475  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, v2))
 33476  	goto __3
 33477  
 33478  __35:
 33479  	if !(objc != 3) {
 33480  		goto __297
 33481  	}
 33482  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+13117)
 33483  	return TCL_ERROR
 33484  __297:
 33485  	;
 33486  	if !(tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+1416) != 0) {
 33487  		goto __298
 33488  	}
 33489  	return TCL_ERROR
 33490  __298:
 33491  	;
 33492  	sqlite3.Xsqlite3_busy_timeout(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, *(*int32)(unsafe.Pointer(bp + 1416)))
 33493  	goto __3
 33494  
 33495  __36:
 33496  	if !(objc != 2) {
 33497  		goto __299
 33498  	}
 33499  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+584)
 33500  	return TCL_ERROR
 33501  __299:
 33502  	;
 33503  	pResult6 = tcl.XTcl_GetObjResult(tls, interp)
 33504  	tcl.XTcl_SetWideIntObj(tls, pResult6, sqlite3.Xsqlite3_total_changes64(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb))
 33505  	goto __3
 33506  
 33507  __37:
 33508  	if !(objc > 3) {
 33509  		goto __300
 33510  	}
 33511  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+11698)
 33512  	return TCL_ERROR
 33513  	goto __301
 33514  __300:
 33515  	if !(objc == 2) {
 33516  		goto __302
 33517  	}
 33518  	if !((*SqliteDb)(unsafe.Pointer(pDb)).FzTrace != 0) {
 33519  		goto __304
 33520  	}
 33521  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+904, (*SqliteDb)(unsafe.Pointer(pDb)).FzTrace, uintptr(0)))
 33522  __304:
 33523  	;
 33524  	goto __303
 33525  __302:
 33526  	if !((*SqliteDb)(unsafe.Pointer(pDb)).FzTrace != 0) {
 33527  		goto __305
 33528  	}
 33529  	tcl.XTcl_Free(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzTrace)
 33530  __305:
 33531  	;
 33532  	zTrace = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+1420)
 33533  	if !(zTrace != 0 && *(*int32)(unsafe.Pointer(bp + 1420)) > 0) {
 33534  		goto __306
 33535  	}
 33536  	(*SqliteDb)(unsafe.Pointer(pDb)).FzTrace = tcl.XTcl_Alloc(tls, uint32(*(*int32)(unsafe.Pointer(bp + 1420))+1))
 33537  	libc.X__builtin___memcpy_chk(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzTrace, zTrace, uint64(*(*int32)(unsafe.Pointer(bp + 1420))+1), libc.X__builtin_object_size(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzTrace, 0))
 33538  	goto __307
 33539  __306:
 33540  	(*SqliteDb)(unsafe.Pointer(pDb)).FzTrace = uintptr(0)
 33541  __307:
 33542  	;
 33543  	if !((*SqliteDb)(unsafe.Pointer(pDb)).FzTrace != 0) {
 33544  		goto __308
 33545  	}
 33546  	(*SqliteDb)(unsafe.Pointer(pDb)).Finterp = interp
 33547  	sqlite3.Xsqlite3_trace(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, *(*uintptr)(unsafe.Pointer(&struct {
 33548  		f func(*libc.TLS, uintptr, uintptr)
 33549  	}{DbTraceHandler})), pDb)
 33550  	goto __309
 33551  __308:
 33552  	sqlite3.Xsqlite3_trace(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, uintptr(0), uintptr(0))
 33553  __309:
 33554  	;
 33555  __303:
 33556  	;
 33557  __301:
 33558  	;
 33559  	goto __3
 33560  
 33561  __38:
 33562  	if !(objc > 4) {
 33563  		goto __310
 33564  	}
 33565  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+13130)
 33566  	return TCL_ERROR
 33567  	goto __311
 33568  __310:
 33569  	if !(objc == 2) {
 33570  		goto __312
 33571  	}
 33572  	if !((*SqliteDb)(unsafe.Pointer(pDb)).FzTraceV2 != 0) {
 33573  		goto __314
 33574  	}
 33575  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+920, (*SqliteDb)(unsafe.Pointer(pDb)).FzTraceV2, uintptr(0)))
 33576  __314:
 33577  	;
 33578  	goto __313
 33579  __312:
 33580  	wMask = int64(0)
 33581  	if !(objc == 4) {
 33582  		goto __315
 33583  	}
 33584  	if !(TCL_OK != tcl.XTcl_ListObjLength(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+1424)) {
 33585  		goto __317
 33586  	}
 33587  	return TCL_ERROR
 33588  __317:
 33589  	;
 33590  	i4 = 0
 33591  __318:
 33592  	if !(i4 < *(*int32)(unsafe.Pointer(bp + 1424))) {
 33593  		goto __320
 33594  	}
 33595  	if !(TCL_OK != tcl.XTcl_ListObjIndex(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), i4, bp+1432)) {
 33596  		goto __321
 33597  	}
 33598  	return TCL_ERROR
 33599  __321:
 33600  	;
 33601  	if !(tcl.XTcl_GetIndexFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(bp + 1432)), uintptr(unsafe.Pointer(&TTYPE_strs)), ts+13148,
 33602  		0, bp+1440) != TCL_OK) {
 33603  		goto __322
 33604  	}
 33605  	pError = tcl.XTcl_DuplicateObj(tls, tcl.XTcl_GetObjResult(tls, interp))
 33606  	(*Tcl_Obj)(unsafe.Pointer(pError)).FrefCount++
 33607  	if !(TCL_OK == tcl.XTcl_GetWideIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(bp + 1432)), bp+1448)) {
 33608  		goto __324
 33609  	}
 33610  __326:
 33611  	if !(libc.PreDecInt32(&(*Tcl_Obj)(unsafe.Pointer(pError)).FrefCount, 1) <= 0) {
 33612  		goto __329
 33613  	}
 33614  	tcl.XTclFreeObj(tls, pError)
 33615  __329:
 33616  	;
 33617  	goto __327
 33618  __327:
 33619  	if 0 != 0 {
 33620  		goto __326
 33621  	}
 33622  	goto __328
 33623  __328:
 33624  	;
 33625  	wMask = wMask | *(*Tcl_WideInt)(unsafe.Pointer(bp + 1448))
 33626  	goto __325
 33627  __324:
 33628  	tcl.XTcl_SetObjResult(tls, interp, pError)
 33629  __330:
 33630  	if !(libc.PreDecInt32(&(*Tcl_Obj)(unsafe.Pointer(pError)).FrefCount, 1) <= 0) {
 33631  		goto __333
 33632  	}
 33633  	tcl.XTclFreeObj(tls, pError)
 33634  __333:
 33635  	;
 33636  	goto __331
 33637  __331:
 33638  	if 0 != 0 {
 33639  		goto __330
 33640  	}
 33641  	goto __332
 33642  __332:
 33643  	;
 33644  	return TCL_ERROR
 33645  __325:
 33646  	;
 33647  	goto __323
 33648  __322:
 33649  	switch uint32(*(*int32)(unsafe.Pointer(bp + 1440))) {
 33650  	case uint32(0):
 33651  		goto __335
 33652  	case uint32(1):
 33653  		goto __336
 33654  	case uint32(2):
 33655  		goto __337
 33656  	case uint32(3):
 33657  		goto __338
 33658  	}
 33659  	goto __334
 33660  __335:
 33661  	wMask = wMask | int64(SQLITE_TRACE_STMT)
 33662  	goto __334
 33663  __336:
 33664  	wMask = wMask | int64(SQLITE_TRACE_PROFILE)
 33665  	goto __334
 33666  __337:
 33667  	wMask = wMask | int64(SQLITE_TRACE_ROW)
 33668  	goto __334
 33669  __338:
 33670  	wMask = wMask | int64(SQLITE_TRACE_CLOSE)
 33671  	goto __334
 33672  __334:
 33673  	;
 33674  __323:
 33675  	;
 33676  	goto __319
 33677  __319:
 33678  	i4++
 33679  	goto __318
 33680  	goto __320
 33681  __320:
 33682  	;
 33683  	goto __316
 33684  __315:
 33685  	wMask = int64(SQLITE_TRACE_STMT)
 33686  __316:
 33687  	;
 33688  	if !((*SqliteDb)(unsafe.Pointer(pDb)).FzTraceV2 != 0) {
 33689  		goto __339
 33690  	}
 33691  	tcl.XTcl_Free(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzTraceV2)
 33692  __339:
 33693  	;
 33694  	zTraceV2 = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+1424)
 33695  	if !(zTraceV2 != 0 && *(*int32)(unsafe.Pointer(bp + 1424)) > 0) {
 33696  		goto __340
 33697  	}
 33698  	(*SqliteDb)(unsafe.Pointer(pDb)).FzTraceV2 = tcl.XTcl_Alloc(tls, uint32(*(*int32)(unsafe.Pointer(bp + 1424))+1))
 33699  	libc.X__builtin___memcpy_chk(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzTraceV2, zTraceV2, uint64(*(*int32)(unsafe.Pointer(bp + 1424))+1), libc.X__builtin_object_size(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzTraceV2, 0))
 33700  	goto __341
 33701  __340:
 33702  	(*SqliteDb)(unsafe.Pointer(pDb)).FzTraceV2 = uintptr(0)
 33703  __341:
 33704  	;
 33705  	if !((*SqliteDb)(unsafe.Pointer(pDb)).FzTraceV2 != 0) {
 33706  		goto __342
 33707  	}
 33708  	(*SqliteDb)(unsafe.Pointer(pDb)).Finterp = interp
 33709  	sqlite3.Xsqlite3_trace_v2(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, uint32(wMask), *(*uintptr)(unsafe.Pointer(&struct {
 33710  		f func(*libc.TLS, uint32, uintptr, uintptr, uintptr) int32
 33711  	}{DbTraceV2Handler})), pDb)
 33712  	goto __343
 33713  __342:
 33714  	sqlite3.Xsqlite3_trace_v2(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, uint32(0), uintptr(0), uintptr(0))
 33715  __343:
 33716  	;
 33717  __313:
 33718  	;
 33719  __311:
 33720  	;
 33721  	goto __3
 33722  
 33723  __39:
 33724  	zBegin = ts + 13159
 33725  	if !(objc != 3 && objc != 4) {
 33726  		goto __344
 33727  	}
 33728  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+13186)
 33729  	return TCL_ERROR
 33730  __344:
 33731  	;
 33732  	if !((*SqliteDb)(unsafe.Pointer(pDb)).FnTransaction == 0 && objc == 4) {
 33733  		goto __345
 33734  	}
 33735  	if !(tcl.XTcl_GetIndexFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), uintptr(unsafe.Pointer(&TTYPE_strs1)), ts+13200,
 33736  		0, bp+1456) != 0) {
 33737  		goto __346
 33738  	}
 33739  	return TCL_ERROR
 33740  __346:
 33741  	;
 33742  	switch uint32(*(*int32)(unsafe.Pointer(bp + 1456))) {
 33743  	case uint32(0):
 33744  		goto __348
 33745  	case uint32(1):
 33746  		goto __349
 33747  	case uint32(2):
 33748  		goto __350
 33749  	}
 33750  	goto __347
 33751  __348:
 33752  	;
 33753  	goto __347
 33754  __349:
 33755  	zBegin = ts + 13217
 33756  	goto __347
 33757  __350:
 33758  	zBegin = ts + 13233
 33759  	goto __347
 33760  __347:
 33761  	;
 33762  __345:
 33763  	;
 33764  	pScript2 = *(*uintptr)(unsafe.Pointer(objv + uintptr(objc-1)*8))
 33765  
 33766  	(*SqliteDb)(unsafe.Pointer(pDb)).FdisableAuth++
 33767  	rc = sqlite3.Xsqlite3_exec(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, zBegin, uintptr(0), uintptr(0), uintptr(0))
 33768  	(*SqliteDb)(unsafe.Pointer(pDb)).FdisableAuth--
 33769  	if !(rc != SQLITE_OK) {
 33770  		goto __351
 33771  	}
 33772  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+936, sqlite3.Xsqlite3_errmsg(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb), uintptr(0)))
 33773  	return TCL_ERROR
 33774  __351:
 33775  	;
 33776  	(*SqliteDb)(unsafe.Pointer(pDb)).FnTransaction++
 33777  
 33778  	addDatabaseRef(tls, pDb)
 33779  	if !(0 != 0) {
 33780  		goto __352
 33781  	}
 33782  
 33783  	goto __353
 33784  __352:
 33785  	rc = DbTransPostCmd(tls, bp+1464, interp, tcl.XTcl_EvalObjEx(tls, interp, pScript2, 0))
 33786  __353:
 33787  	;
 33788  	goto __3
 33789  
 33790  __40:
 33791  	if !(objc != 2 && objc != 3) {
 33792  		goto __354
 33793  	}
 33794  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+13249)
 33795  	rc = TCL_ERROR
 33796  	goto __355
 33797  __354:
 33798  	xNotify = uintptr(0)
 33799  	pNotifyArg = uintptr(0)
 33800  
 33801  	if !((*SqliteDb)(unsafe.Pointer(pDb)).FpUnlockNotify != 0) {
 33802  		goto __356
 33803  	}
 33804  __357:
 33805  	if !(libc.PreDecInt32(&(*Tcl_Obj)(unsafe.Pointer((*SqliteDb)(unsafe.Pointer(pDb)).FpUnlockNotify)).FrefCount, 1) <= 0) {
 33806  		goto __360
 33807  	}
 33808  	tcl.XTclFreeObj(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FpUnlockNotify)
 33809  __360:
 33810  	;
 33811  	goto __358
 33812  __358:
 33813  	if 0 != 0 {
 33814  		goto __357
 33815  	}
 33816  	goto __359
 33817  __359:
 33818  	;
 33819  	(*SqliteDb)(unsafe.Pointer(pDb)).FpUnlockNotify = uintptr(0)
 33820  __356:
 33821  	;
 33822  	if !(objc == 3) {
 33823  		goto __361
 33824  	}
 33825  	xNotify = *(*uintptr)(unsafe.Pointer(&struct {
 33826  		f func(*libc.TLS, uintptr, int32)
 33827  	}{DbUnlockNotify}))
 33828  	pNotifyArg = pDb
 33829  	(*SqliteDb)(unsafe.Pointer(pDb)).FpUnlockNotify = *(*uintptr)(unsafe.Pointer(objv + 2*8))
 33830  	(*Tcl_Obj)(unsafe.Pointer((*SqliteDb)(unsafe.Pointer(pDb)).FpUnlockNotify)).FrefCount++
 33831  __361:
 33832  	;
 33833  	if !(sqlite3.Xsqlite3_unlock_notify(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, xNotify, pNotifyArg) != 0) {
 33834  		goto __362
 33835  	}
 33836  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+952, sqlite3.Xsqlite3_errmsg(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb), uintptr(0)))
 33837  	rc = TCL_ERROR
 33838  __362:
 33839  	;
 33840  __355:
 33841  	;
 33842  	goto __3
 33843  
 33844  __41:
 33845  	if !(objc < 3) {
 33846  		goto __363
 33847  	}
 33848  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+13258)
 33849  __363:
 33850  	;
 33851  	if !(tcl.XTcl_GetIndexFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), uintptr(unsafe.Pointer(&azSub)), ts+2014, 0, bp+1472) != 0) {
 33852  		goto __364
 33853  	}
 33854  	return TCL_ERROR
 33855  __364:
 33856  	;
 33857  	switch uint32(*(*int32)(unsafe.Pointer(bp + 1472))) {
 33858  	case uint32(0):
 33859  		goto __366
 33860  
 33861  	case uint32(2):
 33862  		goto __367
 33863  
 33864  	case uint32(1):
 33865  		goto __368
 33866  
 33867  	case uint32(3):
 33868  		goto __369
 33869  	case uint32(4):
 33870  		goto __370
 33871  	}
 33872  	goto __365
 33873  __366:
 33874  	nCol2 = sqlite3.Xsqlite3_preupdate_count(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb)
 33875  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, nCol2))
 33876  	goto __365
 33877  
 33878  __367:
 33879  	if !(objc > 4) {
 33880  		goto __371
 33881  	}
 33882  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+13277)
 33883  	return TCL_ERROR
 33884  __371:
 33885  	;
 33886  	DbHookCmd(tls, interp, pDb, func() uintptr {
 33887  		if objc == 4 {
 33888  			return *(*uintptr)(unsafe.Pointer(objv + 3*8))
 33889  		}
 33890  		return uintptr(0)
 33891  	}(), pDb+112)
 33892  	goto __365
 33893  
 33894  __368:
 33895  	if !(objc != 3) {
 33896  		goto __372
 33897  	}
 33898  	tcl.XTcl_WrongNumArgs(tls, interp, 3, objv, ts+584)
 33899  	return TCL_ERROR
 33900  __372:
 33901  	;
 33902  	pRet1 = tcl.XTcl_NewIntObj(tls, sqlite3.Xsqlite3_preupdate_depth(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb))
 33903  	tcl.XTcl_SetObjResult(tls, interp, pRet1)
 33904  	goto __365
 33905  
 33906  __369:
 33907  __370:
 33908  	if !(objc != 4) {
 33909  		goto __373
 33910  	}
 33911  	tcl.XTcl_WrongNumArgs(tls, interp, 3, objv, ts+13291)
 33912  	return TCL_ERROR
 33913  __373:
 33914  	;
 33915  	if !(tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+1476) != 0) {
 33916  		goto __374
 33917  	}
 33918  	return TCL_ERROR
 33919  __374:
 33920  	;
 33921  	if !(*(*int32)(unsafe.Pointer(bp + 1472)) == 4) {
 33922  		goto __375
 33923  	}
 33924  	rc = sqlite3.Xsqlite3_preupdate_old(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, *(*int32)(unsafe.Pointer(bp + 1476)), bp+1480)
 33925  	goto __376
 33926  __375:
 33927  	;
 33928  	rc = sqlite3.Xsqlite3_preupdate_new(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, *(*int32)(unsafe.Pointer(bp + 1476)), bp+1480)
 33929  __376:
 33930  	;
 33931  	if !(rc == SQLITE_OK) {
 33932  		goto __377
 33933  	}
 33934  	pObj1 = tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(bp + 1480))), -1)
 33935  	tcl.XTcl_SetObjResult(tls, interp, pObj1)
 33936  	goto __378
 33937  __377:
 33938  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+968, sqlite3.Xsqlite3_errmsg(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb), uintptr(0)))
 33939  	return TCL_ERROR
 33940  __378:
 33941  	;
 33942  __365:
 33943  	;
 33944  	goto __3
 33945  
 33946  __42:
 33947  __43:
 33948  __44:
 33949  	ppHook = uintptr(0)
 33950  	if !(*(*int32)(unsafe.Pointer(bp + 1016)) == 41) {
 33951  		goto __379
 33952  	}
 33953  	ppHook = pDb + 128
 33954  __379:
 33955  	;
 33956  	if !(*(*int32)(unsafe.Pointer(bp + 1016)) == 39) {
 33957  		goto __380
 33958  	}
 33959  	ppHook = pDb + 104
 33960  __380:
 33961  	;
 33962  	if !(*(*int32)(unsafe.Pointer(bp + 1016)) == 30) {
 33963  		goto __381
 33964  	}
 33965  	ppHook = pDb + 120
 33966  __381:
 33967  	;
 33968  	if !(objc > 3) {
 33969  		goto __382
 33970  	}
 33971  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+13249)
 33972  	return TCL_ERROR
 33973  __382:
 33974  	;
 33975  	DbHookCmd(tls, interp, pDb, func() uintptr {
 33976  		if objc == 3 {
 33977  			return *(*uintptr)(unsafe.Pointer(objv + 2*8))
 33978  		}
 33979  		return uintptr(0)
 33980  	}(), ppHook)
 33981  	goto __3
 33982  
 33983  __45:
 33984  	i5 = 2
 33985  __383:
 33986  	if !(i5 < objc) {
 33987  		goto __385
 33988  	}
 33989  	zArg = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(i5)*8)))
 33990  
 33991  	if !(libc.Xstrcmp(tls, zArg, ts+13297) == 0 && i5+1 < objc) {
 33992  		goto __386
 33993  	}
 33994  	i5++
 33995  	if !(tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(i5)*8)), pDb+228) != 0) {
 33996  		goto __388
 33997  	}
 33998  	return TCL_ERROR
 33999  __388:
 34000  	;
 34001  	goto __387
 34002  __386:
 34003  	if !(libc.Xstrcmp(tls, zArg, ts+13317) == 0) {
 34004  		goto __389
 34005  	}
 34006  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([100]int8{})), bp+1488, ts+9889,
 34007  		libc.VaList(bp+984, func() uintptr {
 34008  			if (*SqliteDb)(unsafe.Pointer(pDb)).FstmtList != 0 {
 34009  				return (*SqlPreparedStmt)(unsafe.Pointer((*SqliteDb)(unsafe.Pointer(pDb)).FstmtList)).FpStmt
 34010  			}
 34011  			return uintptr(0)
 34012  		}()))
 34013  	tcl.XTcl_SetResult(tls, interp, bp+1488, uintptr(1))
 34014  	goto __390
 34015  __389:
 34016  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+992, ts+13332, zArg, uintptr(0)))
 34017  	return TCL_ERROR
 34018  __390:
 34019  	;
 34020  __387:
 34021  	;
 34022  	goto __384
 34023  __384:
 34024  	i5++
 34025  	goto __383
 34026  	goto __385
 34027  __385:
 34028  	;
 34029  	if !(i5 == 2) {
 34030  		goto __391
 34031  	}
 34032  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3_libversion(tls), uintptr(0))
 34033  __391:
 34034  	;
 34035  	goto __3
 34036  
 34037  __3:
 34038  	;
 34039  	return rc
 34040  }
 34041  
 34042  type DbConfigChoices = struct {
 34043  	FzName       uintptr
 34044  	Fop          int32
 34045  	F__ccgo_pad1 [4]byte
 34046  }
 34047  
 34048  var DB_strs = [43]uintptr{
 34049  	ts + 13351, ts + 13362, ts + 13369,
 34050  	ts + 13383, ts + 13388, ts + 13394,
 34051  	ts + 9490, ts + 13402, ts + 13410,
 34052  	ts + 13427, ts + 13439, ts + 13448,
 34053  	ts + 13455, ts + 13460, ts + 13472,
 34054  	ts + 13494, ts + 13504, ts + 4896,
 34055  	ts + 13516, ts + 13523, ts + 10868,
 34056  	ts + 13532, ts + 13542, ts + 13560,
 34057  	ts + 13570, ts + 13580, ts + 13590,
 34058  	ts + 9564, ts + 13598, ts + 13604,
 34059  	ts + 13612, ts + 13626, ts + 13636,
 34060  	ts + 13643, ts + 13651, ts + 13665,
 34061  	ts + 13671, ts + 13680, ts + 13692,
 34062  	ts + 13706, ts + 13718, ts + 13726,
 34063  	uintptr(0),
 34064  }
 34065  var aDbConfig = [16]DbConfigChoices{
 34066  	{FzName: ts + 13735, Fop: SQLITE_DBCONFIG_DEFENSIVE},
 34067  	{FzName: ts + 13745, Fop: SQLITE_DBCONFIG_DQS_DDL},
 34068  	{FzName: ts + 13753, Fop: SQLITE_DBCONFIG_DQS_DML},
 34069  	{FzName: ts + 13761, Fop: SQLITE_DBCONFIG_ENABLE_FKEY},
 34070  	{FzName: ts + 13773, Fop: SQLITE_DBCONFIG_ENABLE_QPSG},
 34071  	{FzName: ts + 13785, Fop: SQLITE_DBCONFIG_ENABLE_TRIGGER},
 34072  	{FzName: ts + 13800, Fop: SQLITE_DBCONFIG_ENABLE_VIEW},
 34073  	{FzName: ts + 13812, Fop: SQLITE_DBCONFIG_ENABLE_FTS3_TOKENIZER},
 34074  	{FzName: ts + 13827, Fop: SQLITE_DBCONFIG_LEGACY_ALTER_TABLE},
 34075  	{FzName: ts + 13846, Fop: SQLITE_DBCONFIG_LEGACY_FILE_FORMAT},
 34076  	{FzName: ts + 13865, Fop: SQLITE_DBCONFIG_ENABLE_LOAD_EXTENSION},
 34077  	{FzName: ts + 13880, Fop: SQLITE_DBCONFIG_NO_CKPT_ON_CLOSE},
 34078  	{FzName: ts + 13897, Fop: SQLITE_DBCONFIG_RESET_DATABASE},
 34079  	{FzName: ts + 13912, Fop: SQLITE_DBCONFIG_TRIGGER_EQP},
 34080  	{FzName: ts + 13924, Fop: SQLITE_DBCONFIG_TRUSTED_SCHEMA},
 34081  	{FzName: ts + 13939, Fop: SQLITE_DBCONFIG_WRITABLE_SCHEMA},
 34082  }
 34083  var TTYPE_strs = [5]uintptr{
 34084  	ts + 13955, ts + 13590, ts + 13965, ts + 9490, uintptr(0),
 34085  }
 34086  var TTYPE_strs1 = [4]uintptr{
 34087  	ts + 13969, ts + 13978, ts + 13988, uintptr(0),
 34088  }
 34089  var azSub = [6]uintptr{ts + 1965, ts + 13998, ts + 14004, ts + 14009, ts + 14013, uintptr(0)}
 34090  
 34091  func sqliteCmdUsage(tls *libc.TLS, interp uintptr, objv uintptr) int32 {
 34092  	tcl.XTcl_WrongNumArgs(tls, interp, 1, objv,
 34093  		ts+14017)
 34094  	return TCL_ERROR
 34095  }
 34096  
 34097  func DbMain(tls *libc.TLS, cd uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 34098  	bp := tls.Alloc(336)
 34099  	defer tls.Free(336)
 34100  
 34101  	var p uintptr
 34102  	var zArg uintptr
 34103  	var zErrMsg uintptr
 34104  	var i int32
 34105  	var zFile uintptr = uintptr(0)
 34106  	var zVfs uintptr = uintptr(0)
 34107  	var flags int32
 34108  	*(*int32)(unsafe.Pointer(bp + 112)) = 1
 34109  
 34110  	var rc int32
 34111  
 34112  	flags = SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE | SQLITE_OPEN_NOMUTEX
 34113  
 34114  	if objc == 1 {
 34115  		return sqliteCmdUsage(tls, interp, objv)
 34116  	}
 34117  	if objc == 2 {
 34118  		zArg = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)), uintptr(0))
 34119  		if libc.Xstrcmp(tls, zArg, ts+14163) == 0 {
 34120  			tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, sqlite3.Xsqlite3_libversion(tls), uintptr(0)))
 34121  			return TCL_OK
 34122  		}
 34123  		if libc.Xstrcmp(tls, zArg, ts+14172) == 0 {
 34124  			tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+16, sqlite3.Xsqlite3_sourceid(tls), uintptr(0)))
 34125  			return TCL_OK
 34126  		}
 34127  		if libc.Xstrcmp(tls, zArg, ts+14182) == 0 {
 34128  			tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+14193, uintptr(0)))
 34129  			return TCL_OK
 34130  		}
 34131  		if int32(*(*int8)(unsafe.Pointer(zArg))) == '-' {
 34132  			return sqliteCmdUsage(tls, interp, objv)
 34133  		}
 34134  	}
 34135  	for i = 2; i < objc; i++ {
 34136  		zArg = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(i)*8)))
 34137  		if int32(*(*int8)(unsafe.Pointer(zArg))) != '-' {
 34138  			if zFile != uintptr(0) {
 34139  				return sqliteCmdUsage(tls, interp, objv)
 34140  			}
 34141  			zFile = zArg
 34142  			continue
 34143  		}
 34144  		if i == objc-1 {
 34145  			return sqliteCmdUsage(tls, interp, objv)
 34146  		}
 34147  		i++
 34148  		if libc.Xstrcmp(tls, zArg, ts+14195) == 0 {
 34149  		} else if libc.Xstrcmp(tls, zArg, ts+14200) == 0 {
 34150  			zVfs = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(i)*8)))
 34151  		} else if libc.Xstrcmp(tls, zArg, ts+12434) == 0 {
 34152  			if tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(i)*8)), bp+88) != 0 {
 34153  				return TCL_ERROR
 34154  			}
 34155  			if *(*int32)(unsafe.Pointer(bp + 88)) != 0 {
 34156  				flags = flags & libc.CplInt32(SQLITE_OPEN_READWRITE|SQLITE_OPEN_CREATE)
 34157  				flags = flags | SQLITE_OPEN_READONLY
 34158  			} else {
 34159  				flags = flags & libc.CplInt32(SQLITE_OPEN_READONLY)
 34160  				flags = flags | SQLITE_OPEN_READWRITE
 34161  			}
 34162  		} else if libc.Xstrcmp(tls, zArg, ts+14205) == 0 {
 34163  			if tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(i)*8)), bp+92) != 0 {
 34164  				return TCL_ERROR
 34165  			}
 34166  			if *(*int32)(unsafe.Pointer(bp + 92)) != 0 && flags&SQLITE_OPEN_READONLY == 0 {
 34167  				flags = flags | SQLITE_OPEN_CREATE
 34168  			} else {
 34169  				flags = flags & libc.CplInt32(SQLITE_OPEN_CREATE)
 34170  			}
 34171  		} else if libc.Xstrcmp(tls, zArg, ts+14213) == 0 {
 34172  			if tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(i)*8)), bp+96) != 0 {
 34173  				return TCL_ERROR
 34174  			}
 34175  			if *(*int32)(unsafe.Pointer(bp + 96)) != 0 {
 34176  				flags = flags | SQLITE_OPEN_NOFOLLOW
 34177  			} else {
 34178  				flags = flags & libc.CplInt32(SQLITE_OPEN_NOFOLLOW)
 34179  			}
 34180  		} else if libc.Xstrcmp(tls, zArg, ts+14223) == 0 {
 34181  			if tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(i)*8)), bp+100) != 0 {
 34182  				return TCL_ERROR
 34183  			}
 34184  			if *(*int32)(unsafe.Pointer(bp + 100)) != 0 {
 34185  				flags = flags | SQLITE_OPEN_NOMUTEX
 34186  				flags = flags & libc.CplInt32(SQLITE_OPEN_FULLMUTEX)
 34187  			} else {
 34188  				flags = flags & libc.CplInt32(SQLITE_OPEN_NOMUTEX)
 34189  			}
 34190  		} else if libc.Xstrcmp(tls, zArg, ts+14232) == 0 {
 34191  			if tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(i)*8)), bp+104) != 0 {
 34192  				return TCL_ERROR
 34193  			}
 34194  			if *(*int32)(unsafe.Pointer(bp + 104)) != 0 {
 34195  				flags = flags | SQLITE_OPEN_FULLMUTEX
 34196  				flags = flags & libc.CplInt32(SQLITE_OPEN_NOMUTEX)
 34197  			} else {
 34198  				flags = flags & libc.CplInt32(SQLITE_OPEN_FULLMUTEX)
 34199  			}
 34200  		} else if libc.Xstrcmp(tls, zArg, ts+14243) == 0 {
 34201  			if tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(i)*8)), bp+108) != 0 {
 34202  				return TCL_ERROR
 34203  			}
 34204  			if *(*int32)(unsafe.Pointer(bp + 108)) != 0 {
 34205  				flags = flags | SQLITE_OPEN_URI
 34206  			} else {
 34207  				flags = flags & libc.CplInt32(SQLITE_OPEN_URI)
 34208  			}
 34209  		} else if libc.Xstrcmp(tls, zArg, ts+14248) == 0 {
 34210  			if tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(i)*8)), bp+112) != 0 {
 34211  				return TCL_ERROR
 34212  			}
 34213  		} else {
 34214  			tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+48, ts+12444, zArg, uintptr(0)))
 34215  			return TCL_ERROR
 34216  		}
 34217  	}
 34218  	zErrMsg = uintptr(0)
 34219  	p = tcl.XTcl_Alloc(tls, uint32(unsafe.Sizeof(SqliteDb{})))
 34220  	libc.X__builtin___memset_chk(tls, p, 0, uint64(unsafe.Sizeof(SqliteDb{})), libc.X__builtin_object_size(tls, p, 0))
 34221  	if zFile == uintptr(0) {
 34222  		zFile = ts + 584
 34223  	}
 34224  	if *(*int32)(unsafe.Pointer(bp + 112)) != 0 {
 34225  		zFile = tcl.XTcl_TranslateFileName(tls, interp, zFile, bp+120)
 34226  	}
 34227  	rc = sqlite3.Xsqlite3_open_v2(tls, zFile, p, flags, zVfs)
 34228  	if *(*int32)(unsafe.Pointer(bp + 112)) != 0 {
 34229  		tcl.XTcl_DStringFree(tls, bp+120)
 34230  	}
 34231  	if (*SqliteDb)(unsafe.Pointer(p)).Fdb != 0 {
 34232  		if SQLITE_OK != sqlite3.Xsqlite3_errcode(tls, (*SqliteDb)(unsafe.Pointer(p)).Fdb) {
 34233  			zErrMsg = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp+72, sqlite3.Xsqlite3_errmsg(tls, (*SqliteDb)(unsafe.Pointer(p)).Fdb)))
 34234  			sqlite3.Xsqlite3_close(tls, (*SqliteDb)(unsafe.Pointer(p)).Fdb)
 34235  			(*SqliteDb)(unsafe.Pointer(p)).Fdb = uintptr(0)
 34236  		}
 34237  	} else {
 34238  		zErrMsg = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp+80, sqlite3.Xsqlite3_errstr(tls, rc)))
 34239  	}
 34240  	if (*SqliteDb)(unsafe.Pointer(p)).Fdb == uintptr(0) {
 34241  		tcl.XTcl_SetResult(tls, interp, zErrMsg, uintptr(1))
 34242  		tcl.XTcl_Free(tls, p)
 34243  		sqlite3.Xsqlite3_free(tls, zErrMsg)
 34244  		return TCL_ERROR
 34245  	}
 34246  	(*SqliteDb)(unsafe.Pointer(p)).FmaxStmt = NUM_PREPARED_STMTS
 34247  	(*SqliteDb)(unsafe.Pointer(p)).FopenFlags = flags & SQLITE_OPEN_URI
 34248  	(*SqliteDb)(unsafe.Pointer(p)).Finterp = interp
 34249  	zArg = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)), uintptr(0))
 34250  	if 0 != 0 {
 34251  	} else {
 34252  		tcl.XTcl_CreateObjCommand(tls, interp, zArg, *(*uintptr)(unsafe.Pointer(&struct {
 34253  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 34254  		}{DbObjCmd})), p, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{DbDeleteCmd})))
 34255  	}
 34256  	(*SqliteDb)(unsafe.Pointer(p)).FnRef = 1
 34257  	return TCL_OK
 34258  }
 34259  
 34260  func Sqlite3_Init(tls *libc.TLS, interp uintptr) int32 {
 34261  	var rc int32
 34262  	if 1 != 0 {
 34263  		rc = TCL_OK
 34264  	} else {
 34265  		rc = TCL_ERROR
 34266  	}
 34267  	if rc == TCL_OK {
 34268  		tcl.XTcl_CreateObjCommand(tls, interp, ts+14267, *(*uintptr)(unsafe.Pointer(&struct {
 34269  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 34270  		}{DbMain})), uintptr(0), uintptr(0))
 34271  
 34272  		tcl.XTcl_CreateObjCommand(tls, interp, ts+14275, *(*uintptr)(unsafe.Pointer(&struct {
 34273  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 34274  		}{DbMain})), uintptr(0), uintptr(0))
 34275  		rc = tcl.XTcl_PkgProvide(tls, interp, ts+14267, ts+14282)
 34276  	}
 34277  	return rc
 34278  }
 34279  
 34280  func Tclsqlite3_Init(tls *libc.TLS, interp uintptr) int32 {
 34281  	return Sqlite3_Init(tls, interp)
 34282  }
 34283  
 34284  func Sqlite3_Unload(tls *libc.TLS, interp uintptr, flags int32) int32 {
 34285  	return TCL_OK
 34286  }
 34287  
 34288  func Tclsqlite3_Unload(tls *libc.TLS, interp uintptr, flags int32) int32 {
 34289  	return TCL_OK
 34290  }
 34291  
 34292  func Sqlite3_SafeInit(tls *libc.TLS, interp uintptr) int32 {
 34293  	return TCL_ERROR
 34294  }
 34295  
 34296  func Sqlite3_SafeUnload(tls *libc.TLS, interp uintptr, flags int32) int32 {
 34297  	return TCL_ERROR
 34298  }
 34299  
 34300  func Sqlite_Init(tls *libc.TLS, interp uintptr) int32 {
 34301  	return Sqlite3_Init(tls, interp)
 34302  }
 34303  
 34304  func Tclsqlite_Init(tls *libc.TLS, interp uintptr) int32 {
 34305  	return Sqlite3_Init(tls, interp)
 34306  }
 34307  
 34308  func Sqlite_Unload(tls *libc.TLS, interp uintptr, flags int32) int32 {
 34309  	return TCL_OK
 34310  }
 34311  
 34312  func Tclsqlite_Unload(tls *libc.TLS, interp uintptr, flags int32) int32 {
 34313  	return TCL_OK
 34314  }
 34315  
 34316  func tclsh_main_loop(tls *libc.TLS) uintptr {
 34317  	return uintptr(unsafe.Pointer(&zMainloop))
 34318  }
 34319  
 34320  var zMainloop = *(*[431]int8)(unsafe.Pointer(ts + 14289))
 34321  
 34322  func main1(tls *libc.TLS, argc int32, argv uintptr) int32 {
 34323  	bp := tls.Alloc(64)
 34324  	defer tls.Free(64)
 34325  
 34326  	var interp uintptr
 34327  	var i int32
 34328  	var zScript uintptr = uintptr(0)
 34329  
 34330  	if libc.Xgetenv(tls, ts+14720) != 0 {
 34331  		if libc.Xisatty(tls, 0) != 0 && libc.Xisatty(tls, 2) != 0 {
 34332  			libc.Xfprintf(tls, libc.X__stderrp,
 34333  				ts+14739,
 34334  				libc.VaList(bp, libc.Xgetpid(tls)))
 34335  			libc.Xfgetc(tls, libc.X__stdinp)
 34336  		} else {
 34337  			libc.Xraise(tls, SIGTRAP)
 34338  		}
 34339  	}
 34340  
 34341  	sqlite3.Xsqlite3_shutdown(tls)
 34342  
 34343  	tcl.XTcl_FindExecutable(tls, *(*uintptr)(unsafe.Pointer(argv)))
 34344  	tcl.XTcl_SetSystemEncoding(tls, uintptr(0), ts+14801)
 34345  	interp = tcl.XTcl_CreateInterp(tls)
 34346  	Sqlite3_Init(tls, interp)
 34347  
 34348  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([32]int8{})), bp+32, ts+1333, libc.VaList(bp+8, argc-1))
 34349  	tcl.XTcl_SetVar(tls, interp, ts+14807, bp+32, TCL_GLOBAL_ONLY)
 34350  	tcl.XTcl_SetVar(tls, interp, ts+14812, *(*uintptr)(unsafe.Pointer(argv)), TCL_GLOBAL_ONLY)
 34351  	tcl.XTcl_SetVar(tls, interp, ts+14818, ts+584, TCL_GLOBAL_ONLY)
 34352  	for i = 1; i < argc; i++ {
 34353  		tcl.XTcl_SetVar(tls, interp, ts+14818, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8)),
 34354  			TCL_GLOBAL_ONLY|TCL_LIST_ELEMENT|TCL_APPEND_VALUE)
 34355  	}
 34356  	zScript = sqlite3TestInit(tls, interp)
 34357  	if zScript == uintptr(0) {
 34358  		zScript = tclsh_main_loop(tls)
 34359  	}
 34360  	if tcl.XTcl_GlobalEval(tls, interp, zScript) != TCL_OK {
 34361  		var zInfo uintptr = tcl.XTcl_GetVar(tls, interp, ts+14823, TCL_GLOBAL_ONLY)
 34362  		if zInfo == uintptr(0) {
 34363  			zInfo = tcl.XTcl_GetStringResult(tls, interp)
 34364  		}
 34365  		libc.Xfprintf(tls, libc.X__stderrp, ts+14833, libc.VaList(bp+16, *(*uintptr)(unsafe.Pointer(argv)), zInfo))
 34366  		return 1
 34367  	}
 34368  	return 0
 34369  }
 34370  
 34371  type sqlite3_value = sqlite3_value1
 34372  
 34373  type sqlite3_context = sqlite3_context1
 34374  type PreUpdate = PreUpdate1
 34375  
 34376  type Vdbe = Vdbe1
 34377  
 34378  type Mem = sqlite3_value1
 34379  
 34380  type Op = VdbeOp1
 34381  
 34382  type Bool = uint32
 34383  
 34384  type AuxData1 = struct {
 34385  	FiAuxOp     int32
 34386  	FiAuxArg    int32
 34387  	FpAux       uintptr
 34388  	FxDeleteAux uintptr
 34389  	FpNextAux   uintptr
 34390  }
 34391  
 34392  type AuxData = AuxData1
 34393  
 34394  type VdbeCursor1 = struct {
 34395  	FeCurType       u8
 34396  	FiDb            i8
 34397  	FnullRow        u8
 34398  	FdeferredMoveto u8
 34399  	FisTable        u8
 34400  	F__ccgo_pad1    [3]byte
 34401  	FisEphemeral    uint8
 34402  	F__ccgo_pad2    [1]byte
 34403  	FseekHit        u16
 34404  	F__ccgo_pad3    [4]byte
 34405  	Fub             struct{ FpBtx uintptr }
 34406  	FseqCount       i64
 34407  	FcacheStatus    u32
 34408  	FseekResult     int32
 34409  	FpAltCursor     uintptr
 34410  	Fuc             struct{ FpCursor uintptr }
 34411  	FpKeyInfo       uintptr
 34412  	FiHdrOffset     u32
 34413  	FpgnoRoot       Pgno
 34414  	FnField         i16
 34415  	FnHdrParsed     u16
 34416  	F__ccgo_pad4    [4]byte
 34417  	FmovetoTarget   i64
 34418  	FaOffset        uintptr
 34419  	FaRow           uintptr
 34420  	FpayloadSize    u32
 34421  	FszRow          u32
 34422  	FaType          [1]u32
 34423  	F__ccgo_pad5    [4]byte
 34424  }
 34425  
 34426  type VdbeCursor = VdbeCursor1
 34427  
 34428  type VdbeFrame1 = struct {
 34429  	Fv         uintptr
 34430  	FpParent   uintptr
 34431  	FaOp       uintptr
 34432  	FanExec    uintptr
 34433  	FaMem      uintptr
 34434  	FapCsr     uintptr
 34435  	FaOnce     uintptr
 34436  	Ftoken     uintptr
 34437  	FlastRowid i64
 34438  	FpAuxData  uintptr
 34439  	FnCursor   int32
 34440  	Fpc        int32
 34441  	FnOp       int32
 34442  	FnMem      int32
 34443  	FnChildMem int32
 34444  	FnChildCsr int32
 34445  	FnChange   i64
 34446  	FnDbChange i64
 34447  }
 34448  
 34449  type VdbeFrame = VdbeFrame1
 34450  
 34451  type MemValue = struct{ Fr float64 }
 34452  
 34453  type bft = uint32
 34454  
 34455  type ScanStatus1 = struct {
 34456  	FaddrExplain int32
 34457  	FaddrLoop    int32
 34458  	FaddrVisit   int32
 34459  	FiSelectID   int32
 34460  	FnEst        LogEst
 34461  	F__ccgo_pad1 [6]byte
 34462  	FzName       uintptr
 34463  }
 34464  
 34465  type ScanStatus = ScanStatus1
 34466  
 34467  type DblquoteStr1 = struct {
 34468  	FpNextStr uintptr
 34469  	Fz        [8]int8
 34470  }
 34471  
 34472  type DblquoteStr = DblquoteStr1
 34473  
 34474  type ValueList1 = struct {
 34475  	FpCsr uintptr
 34476  	FpOut uintptr
 34477  }
 34478  
 34479  type ValueList = ValueList1
 34480  
 34481  func testHexToInt(tls *libc.TLS, h int32) int32 {
 34482  	if h >= '0' && h <= '9' {
 34483  		return h - '0'
 34484  	} else if h >= 'a' && h <= 'f' {
 34485  		return h - 'a' + 10
 34486  	} else {
 34487  		return h - 'A' + 10
 34488  	}
 34489  	return int32(0)
 34490  }
 34491  
 34492  func sqlite3TestTextToPtr(tls *libc.TLS, z uintptr) uintptr {
 34493  	bp := tls.Alloc(20)
 34494  	defer tls.Free(20)
 34495  
 34496  	if int32(*(*int8)(unsafe.Pointer(z))) == '0' && int32(*(*int8)(unsafe.Pointer(z + 1))) == 'x' {
 34497  		z += uintptr(2)
 34498  	}
 34499  	*(*u64)(unsafe.Pointer(bp + 8)) = uint64(0)
 34500  	for *(*int8)(unsafe.Pointer(z)) != 0 {
 34501  		*(*u64)(unsafe.Pointer(bp + 8)) = *(*u64)(unsafe.Pointer(bp + 8))<<4 + u64(testHexToInt(tls, int32(*(*int8)(unsafe.Pointer(z)))))
 34502  		z++
 34503  	}
 34504  	if uint64(unsafe.Sizeof(uintptr(0))) == uint64(unsafe.Sizeof(u64(0))) {
 34505  		libc.X__builtin___memcpy_chk(tls, bp, bp+8, uint64(unsafe.Sizeof(uintptr(0))), libc.X__builtin_object_size(tls, bp, 0))
 34506  	} else {
 34507  		*(*u32)(unsafe.Pointer(bp + 16)) = u32(*(*u64)(unsafe.Pointer(bp + 8)))
 34508  		libc.X__builtin___memcpy_chk(tls, bp, bp+16, uint64(unsafe.Sizeof(uintptr(0))), libc.X__builtin_object_size(tls, bp, 0))
 34509  	}
 34510  	return *(*uintptr)(unsafe.Pointer(bp))
 34511  }
 34512  
 34513  func get_sqlite_pointer(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 34514  	bp := tls.Alloc(212)
 34515  	defer tls.Free(212)
 34516  
 34517  	var p uintptr
 34518  
 34519  	if objc != 2 {
 34520  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+14841)
 34521  		return TCL_ERROR
 34522  	}
 34523  	if !(tcl.XTcl_GetCommandInfo(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+48) != 0) {
 34524  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14859,
 34525  			tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), uintptr(0)))
 34526  		return TCL_ERROR
 34527  	}
 34528  	p = (*Tcl_CmdInfo)(unsafe.Pointer(bp + 48)).FobjClientData
 34529  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([100]int8{})), bp+112, ts+9889, libc.VaList(bp+24, (*struct{ Fdb uintptr })(unsafe.Pointer(p)).Fdb))
 34530  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, bp+112, 0))
 34531  	return TCL_OK
 34532  }
 34533  
 34534  func getDbPointer(tls *libc.TLS, interp uintptr, zA uintptr, ppDb uintptr) int32 {
 34535  	bp := tls.Alloc(64)
 34536  	defer tls.Free(64)
 34537  
 34538  	var p uintptr
 34539  
 34540  	if tcl.XTcl_GetCommandInfo(tls, interp, zA, bp) != 0 {
 34541  		p = (*Tcl_CmdInfo)(unsafe.Pointer(bp)).FobjClientData
 34542  		*(*uintptr)(unsafe.Pointer(ppDb)) = (*struct{ Fdb uintptr })(unsafe.Pointer(p)).Fdb
 34543  	} else {
 34544  		*(*uintptr)(unsafe.Pointer(ppDb)) = sqlite3TestTextToPtr(tls, zA)
 34545  	}
 34546  	return TCL_OK
 34547  }
 34548  
 34549  func sqlite3TestErrCode(tls *libc.TLS, interp uintptr, db uintptr, rc int32) int32 {
 34550  	bp := tls.Alloc(248)
 34551  	defer tls.Free(248)
 34552  
 34553  	if sqlite3.Xsqlite3_threadsafe(tls) == 0 && rc != SQLITE_MISUSE && rc != SQLITE_OK &&
 34554  		sqlite3.Xsqlite3_errcode(tls, db) != rc {
 34555  		var r2 int32 = sqlite3.Xsqlite3_errcode(tls, db)
 34556  		sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([200]int8{})), bp+48,
 34557  			ts+14879,
 34558  			libc.VaList(bp, sqlite3.Xsqlite3ErrName(tls, rc), rc, sqlite3.Xsqlite3ErrName(tls, r2), r2))
 34559  		tcl.XTcl_ResetResult(tls, interp)
 34560  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, bp+48, 0))
 34561  		return 1
 34562  	}
 34563  	return 0
 34564  }
 34565  
 34566  func getStmtPointer(tls *libc.TLS, interp uintptr, zArg uintptr, ppStmt uintptr) int32 {
 34567  	*(*uintptr)(unsafe.Pointer(ppStmt)) = sqlite3TestTextToPtr(tls, zArg)
 34568  	return TCL_OK
 34569  }
 34570  
 34571  func sqlite3TestMakePointerStr(tls *libc.TLS, interp uintptr, zPtr uintptr, p uintptr) int32 {
 34572  	bp := tls.Alloc(8)
 34573  	defer tls.Free(8)
 34574  
 34575  	sqlite3.Xsqlite3_snprintf(tls, 100, zPtr, ts+9889, libc.VaList(bp, p))
 34576  	return TCL_OK
 34577  }
 34578  
 34579  func exec_printf_cb(tls *libc.TLS, pArg uintptr, argc int32, argv uintptr, name uintptr) int32 {
 34580  	var str uintptr = pArg
 34581  	var i int32
 34582  
 34583  	if (*Tcl_DString)(unsafe.Pointer(str)).Flength == 0 {
 34584  		for i = 0; i < argc; i++ {
 34585  			tcl.XTcl_DStringAppendElement(tls, str, func() uintptr {
 34586  				if *(*uintptr)(unsafe.Pointer(name + uintptr(i)*8)) != 0 {
 34587  					return *(*uintptr)(unsafe.Pointer(name + uintptr(i)*8))
 34588  				}
 34589  				return ts + 5846
 34590  			}())
 34591  		}
 34592  	}
 34593  	for i = 0; i < argc; i++ {
 34594  		tcl.XTcl_DStringAppendElement(tls, str, func() uintptr {
 34595  			if *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8)) != 0 {
 34596  				return *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8))
 34597  			}
 34598  			return ts + 5846
 34599  		}())
 34600  	}
 34601  	return 0
 34602  }
 34603  
 34604  func test_io_trace(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 34605  	return TCL_OK
 34606  }
 34607  
 34608  func clang_sanitize_address(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 34609  	var res int32 = 0
 34610  	if res == 0 && libc.Xgetenv(tls, ts+14937) != uintptr(0) {
 34611  		res = 1
 34612  	}
 34613  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, res))
 34614  	return TCL_OK
 34615  }
 34616  
 34617  func test_exec_printf(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 34618  	bp := tls.Alloc(310)
 34619  	defer tls.Free(310)
 34620  
 34621  	var rc int32
 34622  	*(*uintptr)(unsafe.Pointer(bp + 272)) = uintptr(0)
 34623  	var zSql uintptr
 34624  
 34625  	if argc != 4 {
 34626  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 34627  			ts+14975, 0))
 34628  		return TCL_ERROR
 34629  	}
 34630  	if getDbPointer(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)), bp+48) != 0 {
 34631  		return TCL_ERROR
 34632  	}
 34633  	tcl.XTcl_DStringInit(tls, bp+56)
 34634  	zSql = sqlite3.Xsqlite3_mprintf(tls, *(*uintptr)(unsafe.Pointer(argv + 2*8)), libc.VaList(bp+32, *(*uintptr)(unsafe.Pointer(argv + 3*8))))
 34635  	rc = sqlite3.Xsqlite3_exec(tls, *(*uintptr)(unsafe.Pointer(bp + 48)), zSql, *(*uintptr)(unsafe.Pointer(&struct {
 34636  		f func(*libc.TLS, uintptr, int32, uintptr, uintptr) int32
 34637  	}{exec_printf_cb})), bp+56, bp+272)
 34638  	sqlite3.Xsqlite3_free(tls, zSql)
 34639  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([30]int8{})), bp+280, ts+1333, libc.VaList(bp+40, rc))
 34640  	tcl.XTcl_AppendElement(tls, interp, bp+280)
 34641  	tcl.XTcl_AppendElement(tls, interp, func() uintptr {
 34642  		if rc == SQLITE_OK {
 34643  			return (*Tcl_DString)(unsafe.Pointer(bp + 56)).Fstring
 34644  		}
 34645  		return *(*uintptr)(unsafe.Pointer(bp + 272))
 34646  	}())
 34647  	tcl.XTcl_DStringFree(tls, bp+56)
 34648  	if *(*uintptr)(unsafe.Pointer(bp + 272)) != 0 {
 34649  		sqlite3.Xsqlite3_free(tls, *(*uintptr)(unsafe.Pointer(bp + 272)))
 34650  	}
 34651  	if sqlite3TestErrCode(tls, interp, *(*uintptr)(unsafe.Pointer(bp + 48)), rc) != 0 {
 34652  		return TCL_ERROR
 34653  	}
 34654  	return TCL_OK
 34655  }
 34656  
 34657  func test_exec_hex(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 34658  	bp := tls.Alloc(806)
 34659  	defer tls.Free(806)
 34660  
 34661  	var rc int32
 34662  	var i int32
 34663  	var j int32
 34664  	*(*uintptr)(unsafe.Pointer(bp + 768)) = uintptr(0)
 34665  	var zHex uintptr
 34666  
 34667  	if argc != 3 {
 34668  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 34669  			ts+14993, 0))
 34670  		return TCL_ERROR
 34671  	}
 34672  	if getDbPointer(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)), bp+40) != 0 {
 34673  		return TCL_ERROR
 34674  	}
 34675  	zHex = *(*uintptr)(unsafe.Pointer(argv + 2*8))
 34676  	i = libc.AssignInt32(&j, 0)
 34677  __1:
 34678  	if !(uint64(i) < uint64(unsafe.Sizeof([501]int8{}))-uint64(1) && *(*int8)(unsafe.Pointer(zHex + uintptr(j))) != 0) {
 34679  		goto __3
 34680  	}
 34681  	{
 34682  		if int32(*(*int8)(unsafe.Pointer(zHex + uintptr(j)))) == '%' && *(*int8)(unsafe.Pointer(zHex + uintptr(j+2))) != 0 && *(*int8)(unsafe.Pointer(zHex + uintptr(j+2))) != 0 {
 34683  			*(*int8)(unsafe.Pointer(bp + 48 + uintptr(i))) = int8(testHexToInt(tls, int32(*(*int8)(unsafe.Pointer(zHex + uintptr(j+1)))))<<4 + testHexToInt(tls, int32(*(*int8)(unsafe.Pointer(zHex + uintptr(j+2))))))
 34684  			j = j + 2
 34685  		} else {
 34686  			*(*int8)(unsafe.Pointer(bp + 48 + uintptr(i))) = *(*int8)(unsafe.Pointer(zHex + uintptr(j)))
 34687  		}
 34688  
 34689  	}
 34690  	goto __2
 34691  __2:
 34692  	i++
 34693  	j++
 34694  	goto __1
 34695  	goto __3
 34696  __3:
 34697  	;
 34698  	*(*int8)(unsafe.Pointer(bp + 48 + uintptr(i))) = int8(0)
 34699  	tcl.XTcl_DStringInit(tls, bp+552)
 34700  	rc = sqlite3.Xsqlite3_exec(tls, *(*uintptr)(unsafe.Pointer(bp + 40)), bp+48, *(*uintptr)(unsafe.Pointer(&struct {
 34701  		f func(*libc.TLS, uintptr, int32, uintptr, uintptr) int32
 34702  	}{exec_printf_cb})), bp+552, bp+768)
 34703  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([30]int8{})), bp+776, ts+1333, libc.VaList(bp+32, rc))
 34704  	tcl.XTcl_AppendElement(tls, interp, bp+776)
 34705  	tcl.XTcl_AppendElement(tls, interp, func() uintptr {
 34706  		if rc == SQLITE_OK {
 34707  			return (*Tcl_DString)(unsafe.Pointer(bp + 552)).Fstring
 34708  		}
 34709  		return *(*uintptr)(unsafe.Pointer(bp + 768))
 34710  	}())
 34711  	tcl.XTcl_DStringFree(tls, bp+552)
 34712  	if *(*uintptr)(unsafe.Pointer(bp + 768)) != 0 {
 34713  		sqlite3.Xsqlite3_free(tls, *(*uintptr)(unsafe.Pointer(bp + 768)))
 34714  	}
 34715  	if sqlite3TestErrCode(tls, interp, *(*uintptr)(unsafe.Pointer(bp + 40)), rc) != 0 {
 34716  		return TCL_ERROR
 34717  	}
 34718  	return TCL_OK
 34719  }
 34720  
 34721  func db_enter(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 34722  	bp := tls.Alloc(40)
 34723  	defer tls.Free(40)
 34724  
 34725  	if argc != 2 {
 34726  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 34727  			ts+15001, 0))
 34728  		return TCL_ERROR
 34729  	}
 34730  	if getDbPointer(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)), bp+32) != 0 {
 34731  		return TCL_ERROR
 34732  	}
 34733  	sqlite3.Xsqlite3_mutex_enter(tls, (*sqlite31)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 32)))).Fmutex)
 34734  	return TCL_OK
 34735  }
 34736  
 34737  func db_leave(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 34738  	bp := tls.Alloc(40)
 34739  	defer tls.Free(40)
 34740  
 34741  	if argc != 2 {
 34742  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 34743  			ts+15001, 0))
 34744  		return TCL_ERROR
 34745  	}
 34746  	if getDbPointer(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)), bp+32) != 0 {
 34747  		return TCL_ERROR
 34748  	}
 34749  	sqlite3.Xsqlite3_mutex_leave(tls, (*sqlite31)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 32)))).Fmutex)
 34750  	return TCL_OK
 34751  }
 34752  
 34753  func test_exec(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 34754  	bp := tls.Alloc(310)
 34755  	defer tls.Free(310)
 34756  
 34757  	var rc int32
 34758  	*(*uintptr)(unsafe.Pointer(bp + 272)) = uintptr(0)
 34759  	var zSql uintptr
 34760  	var i int32
 34761  	var j int32
 34762  
 34763  	if argc != 3 {
 34764  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 34765  			ts+15005, 0))
 34766  		return TCL_ERROR
 34767  	}
 34768  	if getDbPointer(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)), bp+48) != 0 {
 34769  		return TCL_ERROR
 34770  	}
 34771  	tcl.XTcl_DStringInit(tls, bp+56)
 34772  	zSql = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp+32, *(*uintptr)(unsafe.Pointer(argv + 2*8))))
 34773  	for i = libc.AssignInt32(&j, 0); *(*int8)(unsafe.Pointer(zSql + uintptr(i))) != 0; {
 34774  		if int32(*(*int8)(unsafe.Pointer(zSql + uintptr(i)))) == '%' {
 34775  			*(*int8)(unsafe.Pointer(zSql + uintptr(libc.PostIncInt32(&j, 1)))) = int8(testHexToInt(tls, int32(*(*int8)(unsafe.Pointer(zSql + uintptr(i+1)))))<<4 + testHexToInt(tls, int32(*(*int8)(unsafe.Pointer(zSql + uintptr(i+2))))))
 34776  			i = i + 3
 34777  		} else {
 34778  			*(*int8)(unsafe.Pointer(zSql + uintptr(libc.PostIncInt32(&j, 1)))) = *(*int8)(unsafe.Pointer(zSql + uintptr(libc.PostIncInt32(&i, 1))))
 34779  		}
 34780  	}
 34781  	*(*int8)(unsafe.Pointer(zSql + uintptr(j))) = int8(0)
 34782  	rc = sqlite3.Xsqlite3_exec(tls, *(*uintptr)(unsafe.Pointer(bp + 48)), zSql, *(*uintptr)(unsafe.Pointer(&struct {
 34783  		f func(*libc.TLS, uintptr, int32, uintptr, uintptr) int32
 34784  	}{exec_printf_cb})), bp+56, bp+272)
 34785  	sqlite3.Xsqlite3_free(tls, zSql)
 34786  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([30]int8{})), bp+280, ts+1333, libc.VaList(bp+40, rc))
 34787  	tcl.XTcl_AppendElement(tls, interp, bp+280)
 34788  	tcl.XTcl_AppendElement(tls, interp, func() uintptr {
 34789  		if rc == SQLITE_OK {
 34790  			return (*Tcl_DString)(unsafe.Pointer(bp + 56)).Fstring
 34791  		}
 34792  		return *(*uintptr)(unsafe.Pointer(bp + 272))
 34793  	}())
 34794  	tcl.XTcl_DStringFree(tls, bp+56)
 34795  	if *(*uintptr)(unsafe.Pointer(bp + 272)) != 0 {
 34796  		sqlite3.Xsqlite3_free(tls, *(*uintptr)(unsafe.Pointer(bp + 272)))
 34797  	}
 34798  	if sqlite3TestErrCode(tls, interp, *(*uintptr)(unsafe.Pointer(bp + 48)), rc) != 0 {
 34799  		return TCL_ERROR
 34800  	}
 34801  	return TCL_OK
 34802  }
 34803  
 34804  func test_exec_nr(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 34805  	bp := tls.Alloc(48)
 34806  	defer tls.Free(48)
 34807  
 34808  	var rc int32
 34809  	*(*uintptr)(unsafe.Pointer(bp + 40)) = uintptr(0)
 34810  	if argc != 3 {
 34811  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 34812  			ts+15005, 0))
 34813  		return TCL_ERROR
 34814  	}
 34815  	if getDbPointer(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)), bp+32) != 0 {
 34816  		return TCL_ERROR
 34817  	}
 34818  	rc = sqlite3.Xsqlite3_exec(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), *(*uintptr)(unsafe.Pointer(argv + 2*8)), uintptr(0), uintptr(0), bp+40)
 34819  	if sqlite3TestErrCode(tls, interp, *(*uintptr)(unsafe.Pointer(bp + 32)), rc) != 0 {
 34820  		return TCL_ERROR
 34821  	}
 34822  	return TCL_OK
 34823  }
 34824  
 34825  func test_mprintf_z(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 34826  	bp := tls.Alloc(40)
 34827  	defer tls.Free(40)
 34828  
 34829  	var zResult uintptr = uintptr(0)
 34830  	var i int32
 34831  
 34832  	for i = 2; i < argc && (i == 2 || zResult != 0); i++ {
 34833  		zResult = sqlite3.Xsqlite3_mprintf(tls, ts+15013, libc.VaList(bp, zResult, *(*uintptr)(unsafe.Pointer(argv + 1*8)), *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8))))
 34834  	}
 34835  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+24, zResult, 0))
 34836  	sqlite3.Xsqlite3_free(tls, zResult)
 34837  	return TCL_OK
 34838  }
 34839  
 34840  func test_mprintf_n(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 34841  	bp := tls.Alloc(20)
 34842  	defer tls.Free(20)
 34843  
 34844  	var zStr uintptr
 34845  	*(*int32)(unsafe.Pointer(bp + 16)) = 0
 34846  	zStr = sqlite3.Xsqlite3_mprintf(tls, ts+15020, libc.VaList(bp, *(*uintptr)(unsafe.Pointer(argv + 1*8)), bp+16))
 34847  	sqlite3.Xsqlite3_free(tls, zStr)
 34848  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 16))))
 34849  	return TCL_OK
 34850  }
 34851  
 34852  func test_snprintf_int(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 34853  	bp := tls.Alloc(124)
 34854  	defer tls.Free(124)
 34855  
 34856  	var n int32 = libc.Xatoi(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 34857  	var zFormat uintptr = *(*uintptr)(unsafe.Pointer(argv + 2*8))
 34858  	var a1 int32 = libc.Xatoi(tls, *(*uintptr)(unsafe.Pointer(argv + 3*8)))
 34859  	if uint64(n) > uint64(unsafe.Sizeof([100]int8{})) {
 34860  		n = int32(unsafe.Sizeof([100]int8{}))
 34861  	}
 34862  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([100]int8{})), bp+24, ts+15025, 0)
 34863  	sqlite3.Xsqlite3_snprintf(tls, n, bp+24, zFormat, libc.VaList(bp, a1))
 34864  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+8, bp+24, 0))
 34865  	return TCL_OK
 34866  }
 34867  
 34868  func test_get_table_printf(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 34869  	bp := tls.Alloc(350)
 34870  	defer tls.Free(350)
 34871  
 34872  	var rc int32
 34873  	*(*uintptr)(unsafe.Pointer(bp + 304)) = uintptr(0)
 34874  	*(*int32)(unsafe.Pointer(bp + 312)) = 0
 34875  	*(*int32)(unsafe.Pointer(bp + 316)) = 0
 34876  
 34877  	var i int32
 34878  
 34879  	var zSql uintptr
 34880  	*(*int32)(unsafe.Pointer(bp + 64)) = -1
 34881  	if argc == 5 {
 34882  		if tcl.XTcl_GetInt(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 4*8)), bp+64) != 0 {
 34883  			return TCL_ERROR
 34884  		}
 34885  	}
 34886  	if argc != 4 && argc != 5 {
 34887  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 34888  			ts+15052, 0))
 34889  		return TCL_ERROR
 34890  	}
 34891  	if getDbPointer(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)), bp+72) != 0 {
 34892  		return TCL_ERROR
 34893  	}
 34894  	tcl.XTcl_DStringInit(tls, bp+80)
 34895  	zSql = sqlite3.Xsqlite3_mprintf(tls, *(*uintptr)(unsafe.Pointer(argv + 2*8)), libc.VaList(bp+32, *(*uintptr)(unsafe.Pointer(argv + 3*8))))
 34896  	if argc == 5 {
 34897  		rc = sqlite3.Xsqlite3_get_table(tls, *(*uintptr)(unsafe.Pointer(bp + 72)), zSql, bp+296, uintptr(0), uintptr(0), bp+304)
 34898  	} else {
 34899  		rc = sqlite3.Xsqlite3_get_table(tls, *(*uintptr)(unsafe.Pointer(bp + 72)), zSql, bp+296, bp+312, bp+316, bp+304)
 34900  		*(*int32)(unsafe.Pointer(bp + 64)) = (*(*int32)(unsafe.Pointer(bp + 312)) + 1) * *(*int32)(unsafe.Pointer(bp + 316))
 34901  	}
 34902  	sqlite3.Xsqlite3_free(tls, zSql)
 34903  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([30]int8{})), bp+320, ts+1333, libc.VaList(bp+40, rc))
 34904  	tcl.XTcl_AppendElement(tls, interp, bp+320)
 34905  	if rc == SQLITE_OK {
 34906  		if argc == 4 {
 34907  			sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([30]int8{})), bp+320, ts+1333, libc.VaList(bp+48, *(*int32)(unsafe.Pointer(bp + 312))))
 34908  			tcl.XTcl_AppendElement(tls, interp, bp+320)
 34909  			sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([30]int8{})), bp+320, ts+1333, libc.VaList(bp+56, *(*int32)(unsafe.Pointer(bp + 316))))
 34910  			tcl.XTcl_AppendElement(tls, interp, bp+320)
 34911  		}
 34912  		for i = 0; i < *(*int32)(unsafe.Pointer(bp + 64)); i++ {
 34913  			tcl.XTcl_AppendElement(tls, interp, func() uintptr {
 34914  				if *(*uintptr)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 296)) + uintptr(i)*8)) != 0 {
 34915  					return *(*uintptr)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 296)) + uintptr(i)*8))
 34916  				}
 34917  				return ts + 5846
 34918  			}())
 34919  		}
 34920  	} else {
 34921  		tcl.XTcl_AppendElement(tls, interp, *(*uintptr)(unsafe.Pointer(bp + 304)))
 34922  	}
 34923  	sqlite3.Xsqlite3_free_table(tls, *(*uintptr)(unsafe.Pointer(bp + 296)))
 34924  	if *(*uintptr)(unsafe.Pointer(bp + 304)) != 0 {
 34925  		sqlite3.Xsqlite3_free(tls, *(*uintptr)(unsafe.Pointer(bp + 304)))
 34926  	}
 34927  	if sqlite3TestErrCode(tls, interp, *(*uintptr)(unsafe.Pointer(bp + 72)), rc) != 0 {
 34928  		return TCL_ERROR
 34929  	}
 34930  	return TCL_OK
 34931  }
 34932  
 34933  func test_last_rowid(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 34934  	bp := tls.Alloc(94)
 34935  	defer tls.Free(94)
 34936  
 34937  	if argc != 2 {
 34938  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)), ts+15078, 0))
 34939  		return TCL_ERROR
 34940  	}
 34941  	if getDbPointer(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)), bp+56) != 0 {
 34942  		return TCL_ERROR
 34943  	}
 34944  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([30]int8{})), bp+64, ts+6325, libc.VaList(bp+32, sqlite3.Xsqlite3_last_insert_rowid(tls, *(*uintptr)(unsafe.Pointer(bp + 56)))))
 34945  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+40, bp+64, 0))
 34946  	return SQLITE_OK
 34947  }
 34948  
 34949  func test_key(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 34950  	return TCL_OK
 34951  }
 34952  
 34953  func test_rekey(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 34954  	return TCL_OK
 34955  }
 34956  
 34957  func sqlite_test_close(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 34958  	bp := tls.Alloc(40)
 34959  	defer tls.Free(40)
 34960  
 34961  	var rc int32
 34962  	if argc != 2 {
 34963  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 34964  			ts+15083, 0))
 34965  		return TCL_ERROR
 34966  	}
 34967  	if getDbPointer(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)), bp+32) != 0 {
 34968  		return TCL_ERROR
 34969  	}
 34970  	rc = sqlite3.Xsqlite3_close(tls, *(*uintptr)(unsafe.Pointer(bp + 32)))
 34971  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 34972  	return TCL_OK
 34973  }
 34974  
 34975  func sqlite_test_close_v2(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 34976  	bp := tls.Alloc(40)
 34977  	defer tls.Free(40)
 34978  
 34979  	var rc int32
 34980  	if argc != 2 {
 34981  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 34982  			ts+15083, 0))
 34983  		return TCL_ERROR
 34984  	}
 34985  	if getDbPointer(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)), bp+32) != 0 {
 34986  		return TCL_ERROR
 34987  	}
 34988  	rc = sqlite3.Xsqlite3_close_v2(tls, *(*uintptr)(unsafe.Pointer(bp + 32)))
 34989  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 34990  	return TCL_OK
 34991  }
 34992  
 34993  func t1_ifnullFunc(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 34994  	var i int32
 34995  	for i = 0; i < argc; i++ {
 34996  		if SQLITE_NULL != sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8))) {
 34997  			var n int32 = sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8)))
 34998  			sqlite3.Xsqlite3_result_text(tls, context, sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8))),
 34999  				n, libc.UintptrFromInt32(-1))
 35000  			break
 35001  		}
 35002  	}
 35003  }
 35004  
 35005  func hex8Func(tls *libc.TLS, p uintptr, argc int32, argv uintptr) {
 35006  	bp := tls.Alloc(208)
 35007  	defer tls.Free(208)
 35008  
 35009  	var z uintptr
 35010  	var i int32
 35011  
 35012  	z = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 35013  	for i = 0; uint64(i) < uint64(unsafe.Sizeof([200]int8{}))/uint64(2)-uint64(2) && *(*uint8)(unsafe.Pointer(z + uintptr(i))) != 0; i++ {
 35014  		sqlite3.Xsqlite3_snprintf(tls, int32(uint64(unsafe.Sizeof([200]int8{}))-uint64(i*2)), bp+8+uintptr(i*2), ts+6337, libc.VaList(bp, int32(*(*uint8)(unsafe.Pointer(z + uintptr(i))))))
 35015  	}
 35016  	*(*int8)(unsafe.Pointer(bp + 8 + uintptr(i*2))) = int8(0)
 35017  	sqlite3.Xsqlite3_result_text(tls, p, bp+8, -1, libc.UintptrFromInt32(-1))
 35018  }
 35019  
 35020  func hex16Func(tls *libc.TLS, p uintptr, argc int32, argv uintptr) {
 35021  	bp := tls.Alloc(408)
 35022  	defer tls.Free(408)
 35023  
 35024  	var z uintptr
 35025  	var i int32
 35026  
 35027  	z = sqlite3.Xsqlite3_value_text16(tls, *(*uintptr)(unsafe.Pointer(argv)))
 35028  	for i = 0; uint64(i) < uint64(unsafe.Sizeof([400]int8{}))/uint64(4)-uint64(4) && *(*uint16)(unsafe.Pointer(z + uintptr(i)*2)) != 0; i++ {
 35029  		sqlite3.Xsqlite3_snprintf(tls, int32(uint64(unsafe.Sizeof([400]int8{}))-uint64(i*4)), bp+8+uintptr(i*4), ts+15094, libc.VaList(bp, int32(*(*uint16)(unsafe.Pointer(z + uintptr(i)*2)))&0xff))
 35030  	}
 35031  	*(*int8)(unsafe.Pointer(bp + 8 + uintptr(i*4))) = int8(0)
 35032  	sqlite3.Xsqlite3_result_text(tls, p, bp+8, -1, libc.UintptrFromInt32(-1))
 35033  }
 35034  
 35035  type dstr = struct {
 35036  	FnAlloc int32
 35037  	FnUsed  int32
 35038  	Fz      uintptr
 35039  }
 35040  
 35041  func dstrAppend(tls *libc.TLS, p uintptr, z uintptr, divider int32) {
 35042  	var n int32 = int32(libc.Xstrlen(tls, z))
 35043  	if (*dstr)(unsafe.Pointer(p)).FnUsed+n+2 > (*dstr)(unsafe.Pointer(p)).FnAlloc {
 35044  		var zNew uintptr
 35045  		(*dstr)(unsafe.Pointer(p)).FnAlloc = (*dstr)(unsafe.Pointer(p)).FnAlloc*2 + n + 200
 35046  		zNew = sqlite3.Xsqlite3_realloc(tls, (*dstr)(unsafe.Pointer(p)).Fz, (*dstr)(unsafe.Pointer(p)).FnAlloc)
 35047  		if zNew == uintptr(0) {
 35048  			sqlite3.Xsqlite3_free(tls, (*dstr)(unsafe.Pointer(p)).Fz)
 35049  			libc.X__builtin___memset_chk(tls, p, 0, uint64(unsafe.Sizeof(dstr{})), libc.X__builtin_object_size(tls, p, 0))
 35050  			return
 35051  		}
 35052  		(*dstr)(unsafe.Pointer(p)).Fz = zNew
 35053  	}
 35054  	if divider != 0 && (*dstr)(unsafe.Pointer(p)).FnUsed > 0 {
 35055  		*(*int8)(unsafe.Pointer((*dstr)(unsafe.Pointer(p)).Fz + uintptr(libc.PostIncInt32(&(*dstr)(unsafe.Pointer(p)).FnUsed, 1)))) = int8(divider)
 35056  	}
 35057  	libc.X__builtin___memcpy_chk(tls, (*dstr)(unsafe.Pointer(p)).Fz+uintptr((*dstr)(unsafe.Pointer(p)).FnUsed), z, uint64(n+1), libc.X__builtin_object_size(tls, (*dstr)(unsafe.Pointer(p)).Fz+uintptr((*dstr)(unsafe.Pointer(p)).FnUsed), 0))
 35058  	*(*int32)(unsafe.Pointer(p + 4)) += n
 35059  }
 35060  
 35061  func execFuncCallback(tls *libc.TLS, pData uintptr, argc int32, argv uintptr, NotUsed uintptr) int32 {
 35062  	var p uintptr = pData
 35063  	var i int32
 35064  	for i = 0; i < argc; i++ {
 35065  		if *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8)) == uintptr(0) {
 35066  			dstrAppend(tls, p, ts+5846, ' ')
 35067  		} else {
 35068  			dstrAppend(tls, p, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8)), ' ')
 35069  		}
 35070  	}
 35071  	return 0
 35072  }
 35073  
 35074  func sqlite3ExecFunc(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 35075  	bp := tls.Alloc(16)
 35076  	defer tls.Free(16)
 35077  
 35078  	libc.X__builtin___memset_chk(tls, bp, 0, uint64(unsafe.Sizeof(dstr{})), libc.X__builtin_object_size(tls, bp, 0))
 35079  	sqlite3.Xsqlite3_exec(tls, sqlite3.Xsqlite3_user_data(tls, context),
 35080  		sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv))),
 35081  		*(*uintptr)(unsafe.Pointer(&struct {
 35082  			f func(*libc.TLS, uintptr, int32, uintptr, uintptr) int32
 35083  		}{execFuncCallback})), bp, uintptr(0))
 35084  	sqlite3.Xsqlite3_result_text(tls, context, (*dstr)(unsafe.Pointer(bp)).Fz, (*dstr)(unsafe.Pointer(bp)).FnUsed, libc.UintptrFromInt32(-1))
 35085  	sqlite3.Xsqlite3_free(tls, (*dstr)(unsafe.Pointer(bp)).Fz)
 35086  }
 35087  
 35088  func tkt2213Function(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 35089  	var nText int32
 35090  	var zText1 uintptr
 35091  	var zText2 uintptr
 35092  	var zText3 uintptr
 35093  
 35094  	nText = sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(argv)))
 35095  	zText1 = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 35096  	zText2 = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 35097  	zText3 = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 35098  
 35099  	if zText1 != zText2 || zText2 != zText3 {
 35100  		sqlite3.Xsqlite3_result_error(tls, context, ts+15099, -1)
 35101  	} else {
 35102  		var zCopy uintptr = sqlite3.Xsqlite3_malloc(tls, nText)
 35103  		libc.X__builtin___memcpy_chk(tls, zCopy, zText1, uint64(nText), libc.X__builtin_object_size(tls, zCopy, 0))
 35104  		sqlite3.Xsqlite3_result_text(tls, context, zCopy, nText, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{sqlite3.Xsqlite3_free})))
 35105  	}
 35106  }
 35107  
 35108  func ptrChngFunction(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 35109  	var p1 uintptr
 35110  	var p2 uintptr
 35111  	var zCmd uintptr
 35112  	if argc != 4 {
 35113  		return
 35114  	}
 35115  	zCmd = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 35116  	if zCmd == uintptr(0) {
 35117  		return
 35118  	}
 35119  	if libc.Xstrcmp(tls, zCmd, ts+12764) == 0 {
 35120  		p1 = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 35121  	} else if libc.Xstrcmp(tls, zCmd, ts+15120) == 0 {
 35122  		p1 = sqlite3.Xsqlite3_value_text16(tls, *(*uintptr)(unsafe.Pointer(argv)))
 35123  	} else if libc.Xstrcmp(tls, zCmd, ts+12769) == 0 {
 35124  		p1 = sqlite3.Xsqlite3_value_blob(tls, *(*uintptr)(unsafe.Pointer(argv)))
 35125  	} else {
 35126  		return
 35127  	}
 35128  	zCmd = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + 2*8)))
 35129  	if zCmd == uintptr(0) {
 35130  		return
 35131  	}
 35132  	if libc.Xstrcmp(tls, zCmd, ts+15127) == 0 {
 35133  		sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(argv)))
 35134  	} else if libc.Xstrcmp(tls, zCmd, ts+15133) == 0 {
 35135  		sqlite3.Xsqlite3_value_bytes16(tls, *(*uintptr)(unsafe.Pointer(argv)))
 35136  	} else if libc.Xstrcmp(tls, zCmd, ts+15141) == 0 {
 35137  	} else {
 35138  		return
 35139  	}
 35140  	zCmd = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + 3*8)))
 35141  	if zCmd == uintptr(0) {
 35142  		return
 35143  	}
 35144  	if libc.Xstrcmp(tls, zCmd, ts+12764) == 0 {
 35145  		p2 = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 35146  	} else if libc.Xstrcmp(tls, zCmd, ts+15120) == 0 {
 35147  		p2 = sqlite3.Xsqlite3_value_text16(tls, *(*uintptr)(unsafe.Pointer(argv)))
 35148  	} else if libc.Xstrcmp(tls, zCmd, ts+12769) == 0 {
 35149  		p2 = sqlite3.Xsqlite3_value_blob(tls, *(*uintptr)(unsafe.Pointer(argv)))
 35150  	} else {
 35151  		return
 35152  	}
 35153  	sqlite3.Xsqlite3_result_int(tls, context, libc.Bool32(p1 != p2))
 35154  }
 35155  
 35156  func nondeterministicFunction(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 35157  	sqlite3.Xsqlite3_result_int(tls, context, libc.PostIncInt32(&cnt, 1))
 35158  }
 35159  
 35160  var cnt int32 = 0
 35161  
 35162  func intrealFunction(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 35163  	bp := tls.Alloc(8)
 35164  	defer tls.Free(8)
 35165  
 35166  	var v sqlite3_int64 = sqlite3.Xsqlite3_value_int64(tls, *(*uintptr)(unsafe.Pointer(argv)))
 35167  	sqlite3.Xsqlite3_result_int64(tls, context, v)
 35168  	sqlite3.Xsqlite3_test_control(tls, SQLITE_TESTCTRL_RESULT_INTREAL, libc.VaList(bp, context))
 35169  }
 35170  
 35171  func test_create_function(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 35172  	bp := tls.Alloc(40)
 35173  	defer tls.Free(40)
 35174  
 35175  	var rc int32
 35176  
 35177  	if argc != 2 {
 35178  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 35179  			ts+15078, 0))
 35180  		return TCL_ERROR
 35181  	}
 35182  	if getDbPointer(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)), bp+32) != 0 {
 35183  		return TCL_ERROR
 35184  	}
 35185  	rc = sqlite3.Xsqlite3_create_function(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), ts+15146, -1, SQLITE_UTF8, uintptr(0),
 35186  		*(*uintptr)(unsafe.Pointer(&struct {
 35187  			f func(*libc.TLS, uintptr, int32, uintptr)
 35188  		}{t1_ifnullFunc})), uintptr(0), uintptr(0))
 35189  	if rc == SQLITE_OK {
 35190  		rc = sqlite3.Xsqlite3_create_function(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), ts+15157, 1, SQLITE_UTF8|SQLITE_DETERMINISTIC,
 35191  			uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 35192  				f func(*libc.TLS, uintptr, int32, uintptr)
 35193  			}{hex8Func})), uintptr(0), uintptr(0))
 35194  	}
 35195  	if rc == SQLITE_OK {
 35196  		rc = sqlite3.Xsqlite3_create_function(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), ts+15162, 1, SQLITE_UTF16|SQLITE_DETERMINISTIC,
 35197  			uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 35198  				f func(*libc.TLS, uintptr, int32, uintptr)
 35199  			}{hex16Func})), uintptr(0), uintptr(0))
 35200  	}
 35201  	if rc == SQLITE_OK {
 35202  		rc = sqlite3.Xsqlite3_create_function(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), ts+15168, 1, SQLITE_ANY, uintptr(0),
 35203  			*(*uintptr)(unsafe.Pointer(&struct {
 35204  				f func(*libc.TLS, uintptr, int32, uintptr)
 35205  			}{tkt2213Function})), uintptr(0), uintptr(0))
 35206  	}
 35207  	if rc == SQLITE_OK {
 35208  		rc = sqlite3.Xsqlite3_create_function(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), ts+15180, 4, SQLITE_ANY, uintptr(0),
 35209  			*(*uintptr)(unsafe.Pointer(&struct {
 35210  				f func(*libc.TLS, uintptr, int32, uintptr)
 35211  			}{ptrChngFunction})), uintptr(0), uintptr(0))
 35212  	}
 35213  
 35214  	if rc == SQLITE_OK {
 35215  		rc = sqlite3.Xsqlite3_create_function(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), ts+15195, -1, SQLITE_UTF8,
 35216  			uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 35217  				f func(*libc.TLS, uintptr, int32, uintptr)
 35218  			}{nondeterministicFunction})), uintptr(0), uintptr(0))
 35219  	}
 35220  	if rc == SQLITE_OK {
 35221  		rc = sqlite3.Xsqlite3_create_function(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), ts+15204, -1, SQLITE_UTF8|SQLITE_DETERMINISTIC,
 35222  			uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 35223  				f func(*libc.TLS, uintptr, int32, uintptr)
 35224  			}{nondeterministicFunction})), uintptr(0), uintptr(0))
 35225  	}
 35226  
 35227  	if rc == SQLITE_OK {
 35228  		rc = sqlite3.Xsqlite3_create_function(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), ts+15213, 1, SQLITE_UTF8,
 35229  			uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 35230  				f func(*libc.TLS, uintptr, int32, uintptr)
 35231  			}{intrealFunction})), uintptr(0), uintptr(0))
 35232  	}
 35233  
 35234  	if rc == SQLITE_OK {
 35235  		var zUtf16 uintptr
 35236  		var pVal uintptr
 35237  		sqlite3.Xsqlite3_mutex_enter(tls, (*sqlite31)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 32)))).Fmutex)
 35238  		pVal = sqlite3.Xsqlite3ValueNew(tls, *(*uintptr)(unsafe.Pointer(bp + 32)))
 35239  		sqlite3.Xsqlite3ValueSetStr(tls, pVal, -1, ts+15221, uint8(SQLITE_UTF8), uintptr(0))
 35240  		zUtf16 = sqlite3.Xsqlite3ValueText(tls, pVal, uint8(SQLITE_UTF16LE))
 35241  		if (*sqlite31)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 32)))).FmallocFailed != 0 {
 35242  			rc = SQLITE_NOMEM
 35243  		} else {
 35244  			rc = sqlite3.Xsqlite3_create_function16(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), zUtf16,
 35245  				1, SQLITE_UTF16, *(*uintptr)(unsafe.Pointer(bp + 32)), *(*uintptr)(unsafe.Pointer(&struct {
 35246  					f func(*libc.TLS, uintptr, int32, uintptr)
 35247  				}{sqlite3ExecFunc})), uintptr(0), uintptr(0))
 35248  		}
 35249  		sqlite3.Xsqlite3ValueFree(tls, pVal)
 35250  		sqlite3.Xsqlite3_mutex_leave(tls, (*sqlite31)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 32)))).Fmutex)
 35251  	}
 35252  
 35253  	if sqlite3TestErrCode(tls, interp, *(*uintptr)(unsafe.Pointer(bp + 32)), rc) != 0 {
 35254  		return TCL_ERROR
 35255  	}
 35256  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 35257  	return TCL_OK
 35258  }
 35259  
 35260  func test_drop_modules(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 35261  	bp := tls.Alloc(40)
 35262  	defer tls.Free(40)
 35263  
 35264  	if argc < 2 {
 35265  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 35266  			ts+15078, 0))
 35267  		return TCL_ERROR
 35268  	}
 35269  	if getDbPointer(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)), bp+32) != 0 {
 35270  		return TCL_ERROR
 35271  	}
 35272  	sqlite3.Xsqlite3_drop_modules(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), func() uintptr {
 35273  		if argc > 2 {
 35274  			return argv + uintptr(2)*8
 35275  		}
 35276  		return uintptr(0)
 35277  	}())
 35278  	return TCL_OK
 35279  }
 35280  
 35281  type t1CountCtx1 = struct{ Fn int32 }
 35282  
 35283  type t1CountCtx = t1CountCtx1
 35284  
 35285  func t1CountStep(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 35286  	bp := tls.Alloc(9)
 35287  	defer tls.Free(9)
 35288  
 35289  	var p uintptr
 35290  	p = sqlite3.Xsqlite3_aggregate_context(tls, context, int32(unsafe.Sizeof(t1CountCtx{})))
 35291  	if (argc == 0 || SQLITE_NULL != sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(argv)))) && p != 0 {
 35292  		(*t1CountCtx)(unsafe.Pointer(p)).Fn++
 35293  	}
 35294  	if argc > 0 {
 35295  		var v int32 = sqlite3.Xsqlite3_value_int(tls, *(*uintptr)(unsafe.Pointer(argv)))
 35296  		if v == 40 {
 35297  			sqlite3.Xsqlite3_result_error(tls, context, ts+15235, -1)
 35298  		} else if v == 41 {
 35299  			*(*[9]int8)(unsafe.Pointer(bp)) = [9]int8{int8(0), int8(0x61), int8(0), int8(0x62), int8(0), int8(0x63), int8(0), int8(0), int8(0)}
 35300  			sqlite3.Xsqlite3_result_error16(tls, context, bp+1, -1)
 35301  		}
 35302  	}
 35303  }
 35304  
 35305  func t1CountFinalize(tls *libc.TLS, context uintptr) {
 35306  	var p uintptr
 35307  	p = sqlite3.Xsqlite3_aggregate_context(tls, context, int32(unsafe.Sizeof(t1CountCtx{})))
 35308  	if p != 0 {
 35309  		if (*t1CountCtx)(unsafe.Pointer(p)).Fn == 42 {
 35310  			sqlite3.Xsqlite3_result_error(tls, context, ts+15265, -1)
 35311  		} else {
 35312  			sqlite3.Xsqlite3_result_int(tls, context, func() int32 {
 35313  				if p != 0 {
 35314  					return (*t1CountCtx)(unsafe.Pointer(p)).Fn
 35315  				}
 35316  				return 0
 35317  			}())
 35318  		}
 35319  	}
 35320  }
 35321  
 35322  func legacyCountStep(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 35323  }
 35324  
 35325  func legacyCountFinalize(tls *libc.TLS, context uintptr) {
 35326  	sqlite3.Xsqlite3_result_int(tls, context, sqlite3.Xsqlite3_aggregate_count(tls, context))
 35327  }
 35328  
 35329  func test_create_aggregate(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 35330  	bp := tls.Alloc(40)
 35331  	defer tls.Free(40)
 35332  
 35333  	var rc int32
 35334  	if argc != 2 {
 35335  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 35336  			ts+15083, 0))
 35337  		return TCL_ERROR
 35338  	}
 35339  	if getDbPointer(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)), bp+32) != 0 {
 35340  		return TCL_ERROR
 35341  	}
 35342  	rc = sqlite3.Xsqlite3_create_function(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), ts+15286, 0, SQLITE_UTF8, uintptr(0), uintptr(0),
 35343  		*(*uintptr)(unsafe.Pointer(&struct {
 35344  			f func(*libc.TLS, uintptr, int32, uintptr)
 35345  		}{t1CountStep})), *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{t1CountFinalize})))
 35346  	if rc == SQLITE_OK {
 35347  		rc = sqlite3.Xsqlite3_create_function(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), ts+15286, 1, SQLITE_UTF8, uintptr(0), uintptr(0),
 35348  			*(*uintptr)(unsafe.Pointer(&struct {
 35349  				f func(*libc.TLS, uintptr, int32, uintptr)
 35350  			}{t1CountStep})), *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{t1CountFinalize})))
 35351  	}
 35352  	if rc == SQLITE_OK {
 35353  		rc = sqlite3.Xsqlite3_create_function(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), ts+15294, 0, SQLITE_ANY, uintptr(0), uintptr(0),
 35354  			*(*uintptr)(unsafe.Pointer(&struct {
 35355  				f func(*libc.TLS, uintptr, int32, uintptr)
 35356  			}{legacyCountStep})), *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{legacyCountFinalize})))
 35357  	}
 35358  	if sqlite3TestErrCode(tls, interp, *(*uintptr)(unsafe.Pointer(bp + 32)), rc) != 0 {
 35359  		return TCL_ERROR
 35360  	}
 35361  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 35362  	return TCL_OK
 35363  }
 35364  
 35365  func test_printf(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 35366  	bp := tls.Alloc(40)
 35367  	defer tls.Free(40)
 35368  
 35369  	if argc != 2 {
 35370  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 35371  			ts+15307, 0))
 35372  		return TCL_ERROR
 35373  	}
 35374  	libc.Xprintf(tls, ts+389, libc.VaList(bp+32, *(*uintptr)(unsafe.Pointer(argv + 1*8))))
 35375  	return TCL_OK
 35376  }
 35377  
 35378  func sqlite3_mprintf_int(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 35379  	bp := tls.Alloc(84)
 35380  	defer tls.Free(84)
 35381  
 35382  	var i int32
 35383  	var z uintptr
 35384  	if argc != 5 {
 35385  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 35386  			ts+15314, 0))
 35387  		return TCL_ERROR
 35388  	}
 35389  	for i = 2; i < 5; i++ {
 35390  		if tcl.XTcl_GetInt(tls, interp, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8)), bp+72+uintptr(i-2)*4) != 0 {
 35391  			return TCL_ERROR
 35392  		}
 35393  	}
 35394  	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))))
 35395  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+56, z, 0))
 35396  	sqlite3.Xsqlite3_free(tls, z)
 35397  	return TCL_OK
 35398  }
 35399  
 35400  func sqlite3_mprintf_int64(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 35401  	bp := tls.Alloc(112)
 35402  	defer tls.Free(112)
 35403  
 35404  	var i int32
 35405  
 35406  	var z uintptr
 35407  	if argc != 5 {
 35408  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 35409  			ts+15314, 0))
 35410  		return TCL_ERROR
 35411  	}
 35412  	for i = 2; i < 5; i++ {
 35413  		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 {
 35414  			tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+15335, 0))
 35415  			return TCL_ERROR
 35416  		}
 35417  	}
 35418  	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))))
 35419  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+72, z, 0))
 35420  	sqlite3.Xsqlite3_free(tls, z)
 35421  	return TCL_OK
 35422  }
 35423  
 35424  func sqlite3_mprintf_long(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 35425  	bp := tls.Alloc(112)
 35426  	defer tls.Free(112)
 35427  
 35428  	var i int32
 35429  
 35430  	var z uintptr
 35431  	if argc != 5 {
 35432  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 35433  			ts+15314, 0))
 35434  		return TCL_ERROR
 35435  	}
 35436  	for i = 2; i < 5; i++ {
 35437  		if tcl.XTcl_GetInt(tls, interp, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8)), bp+72+uintptr(i-2)*4) != 0 {
 35438  			return TCL_ERROR
 35439  		}
 35440  		*(*int64)(unsafe.Pointer(bp + 88 + uintptr(i-2)*8)) = int64(*(*int32)(unsafe.Pointer(bp + 72 + uintptr(i-2)*4)))
 35441  		*(*int64)(unsafe.Pointer(bp + 88 + uintptr(i-2)*8)) &= int64(uint64(1)<<(uint64(unsafe.Sizeof(int32(0)))*uint64(8)) - uint64(1))
 35442  	}
 35443  	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))))
 35444  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+56, z, 0))
 35445  	sqlite3.Xsqlite3_free(tls, z)
 35446  	return TCL_OK
 35447  }
 35448  
 35449  func sqlite3_mprintf_str(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 35450  	bp := tls.Alloc(84)
 35451  	defer tls.Free(84)
 35452  
 35453  	var i int32
 35454  	var z uintptr
 35455  	if argc < 4 || argc > 5 {
 35456  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 35457  			ts+15374, 0))
 35458  		return TCL_ERROR
 35459  	}
 35460  	for i = 2; i < 4; i++ {
 35461  		if tcl.XTcl_GetInt(tls, interp, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8)), bp+72+uintptr(i-2)*4) != 0 {
 35462  			return TCL_ERROR
 35463  		}
 35464  	}
 35465  	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 {
 35466  		if argc > 4 {
 35467  			return *(*uintptr)(unsafe.Pointer(argv + 4*8))
 35468  		}
 35469  		return uintptr(0)
 35470  	}()))
 35471  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+56, z, 0))
 35472  	sqlite3.Xsqlite3_free(tls, z)
 35473  	return TCL_OK
 35474  }
 35475  
 35476  func sqlite3_snprintf_str(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 35477  	bp := tls.Alloc(104)
 35478  	defer tls.Free(104)
 35479  
 35480  	var i int32
 35481  
 35482  	var z uintptr
 35483  	if argc < 5 || argc > 6 {
 35484  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 35485  			ts+15400, 0))
 35486  		return TCL_ERROR
 35487  	}
 35488  	if tcl.XTcl_GetInt(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)), bp+88) != 0 {
 35489  		return TCL_ERROR
 35490  	}
 35491  	if *(*int32)(unsafe.Pointer(bp + 88)) < 0 {
 35492  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+15430, 0))
 35493  		return TCL_ERROR
 35494  	}
 35495  	for i = 3; i < 5; i++ {
 35496  		if tcl.XTcl_GetInt(tls, interp, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8)), bp+92+uintptr(i-3)*4) != 0 {
 35497  			return TCL_ERROR
 35498  		}
 35499  	}
 35500  	z = sqlite3.Xsqlite3_malloc(tls, *(*int32)(unsafe.Pointer(bp + 88))+1)
 35501  	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 {
 35502  		if argc > 4 {
 35503  			return *(*uintptr)(unsafe.Pointer(argv + 5*8))
 35504  		}
 35505  		return uintptr(0)
 35506  	}()))
 35507  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+72, z, 0))
 35508  	sqlite3.Xsqlite3_free(tls, z)
 35509  	return TCL_OK
 35510  }
 35511  
 35512  func sqlite3_mprintf_double(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 35513  	bp := tls.Alloc(96)
 35514  	defer tls.Free(96)
 35515  
 35516  	var i int32
 35517  
 35518  	var z uintptr
 35519  	if argc != 5 {
 35520  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 35521  			ts+15453, 0))
 35522  		return TCL_ERROR
 35523  	}
 35524  	for i = 2; i < 4; i++ {
 35525  		if tcl.XTcl_GetInt(tls, interp, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8)), bp+72+uintptr(i-2)*4) != 0 {
 35526  			return TCL_ERROR
 35527  		}
 35528  	}
 35529  	if tcl.XTcl_GetDouble(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 4*8)), bp+88) != 0 {
 35530  		return TCL_ERROR
 35531  	}
 35532  	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))))
 35533  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+56, z, 0))
 35534  	sqlite3.Xsqlite3_free(tls, z)
 35535  	return TCL_OK
 35536  }
 35537  
 35538  func sqlite3_mprintf_scaled(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 35539  	bp := tls.Alloc(72)
 35540  	defer tls.Free(72)
 35541  
 35542  	var i int32
 35543  
 35544  	var z uintptr
 35545  	if argc != 4 {
 35546  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 35547  			ts+15477, 0))
 35548  		return TCL_ERROR
 35549  	}
 35550  	for i = 2; i < 4; i++ {
 35551  		if tcl.XTcl_GetDouble(tls, interp, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8)), bp+56+uintptr(i-2)*8) != 0 {
 35552  			return TCL_ERROR
 35553  		}
 35554  	}
 35555  	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))))
 35556  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+40, z, 0))
 35557  	sqlite3.Xsqlite3_free(tls, z)
 35558  	return TCL_OK
 35559  }
 35560  
 35561  func sqlite3_mprintf_stronly(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 35562  	bp := tls.Alloc(56)
 35563  	defer tls.Free(56)
 35564  
 35565  	var z uintptr
 35566  	if argc != 3 {
 35567  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 35568  			ts+15500, 0))
 35569  		return TCL_ERROR
 35570  	}
 35571  	z = sqlite3.Xsqlite3_mprintf(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)), libc.VaList(bp+32, *(*uintptr)(unsafe.Pointer(argv + 2*8))))
 35572  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+40, z, 0))
 35573  	sqlite3.Xsqlite3_free(tls, z)
 35574  	return TCL_OK
 35575  }
 35576  
 35577  func sqlite3_mprintf_hexdouble(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 35578  	bp := tls.Alloc(112)
 35579  	defer tls.Free(112)
 35580  
 35581  	var z uintptr
 35582  
 35583  	if argc != 3 {
 35584  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 35585  			ts+15500, 0))
 35586  		return TCL_ERROR
 35587  	}
 35588  	if libc.Xsscanf(tls, *(*uintptr)(unsafe.Pointer(argv + 2*8)), ts+15516, libc.VaList(bp+32, bp+88, bp+92)) != 2 {
 35589  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+48, ts+15525, 0))
 35590  		return TCL_ERROR
 35591  	}
 35592  	*(*sqlite_uint64)(unsafe.Pointer(bp + 104)) = sqlite_uint64(*(*uint32)(unsafe.Pointer(bp + 88)))
 35593  	*(*sqlite_uint64)(unsafe.Pointer(bp + 104)) = *(*sqlite_uint64)(unsafe.Pointer(bp + 104))<<32 + sqlite_uint64(*(*uint32)(unsafe.Pointer(bp + 92)))
 35594  	libc.X__builtin___memcpy_chk(tls, bp+96, bp+104, uint64(unsafe.Sizeof(float64(0))), libc.X__builtin_object_size(tls, bp+96, 0))
 35595  	z = sqlite3.Xsqlite3_mprintf(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)), libc.VaList(bp+64, *(*float64)(unsafe.Pointer(bp + 96))))
 35596  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+72, z, 0))
 35597  	sqlite3.Xsqlite3_free(tls, z)
 35598  	return TCL_OK
 35599  }
 35600  
 35601  func test_enable_shared(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 35602  	bp := tls.Alloc(4)
 35603  	defer tls.Free(4)
 35604  
 35605  	var rc int32
 35606  
 35607  	var ret int32 = 0
 35608  
 35609  	if objc != 2 && objc != 1 {
 35610  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+15569)
 35611  		return TCL_ERROR
 35612  	}
 35613  	ret = sqlite3.Xsqlite3Config.FsharedCacheEnabled
 35614  
 35615  	if objc == 2 {
 35616  		if tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp) != 0 {
 35617  			return TCL_ERROR
 35618  		}
 35619  		rc = sqlite3.Xsqlite3_enable_shared_cache(tls, *(*int32)(unsafe.Pointer(bp)))
 35620  		if rc != SQLITE_OK {
 35621  			tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrStr(tls, rc), uintptr(0))
 35622  			return TCL_ERROR
 35623  		}
 35624  	}
 35625  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewBooleanObj(tls, ret))
 35626  	return TCL_OK
 35627  }
 35628  
 35629  func test_extended_result_codes(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 35630  	bp := tls.Alloc(12)
 35631  	defer tls.Free(12)
 35632  
 35633  	if objc != 3 {
 35634  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+15579)
 35635  		return TCL_ERROR
 35636  	}
 35637  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 35638  		return TCL_ERROR
 35639  	}
 35640  	if tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+8) != 0 {
 35641  		return TCL_ERROR
 35642  	}
 35643  	sqlite3.Xsqlite3_extended_result_codes(tls, *(*uintptr)(unsafe.Pointer(bp)), *(*int32)(unsafe.Pointer(bp + 8)))
 35644  	return TCL_OK
 35645  }
 35646  
 35647  func test_libversion_number(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 35648  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, sqlite3.Xsqlite3_libversion_number(tls)))
 35649  	return TCL_OK
 35650  }
 35651  
 35652  func test_table_column_metadata(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 35653  	bp := tls.Alloc(52)
 35654  	defer tls.Free(52)
 35655  
 35656  	var zDb uintptr
 35657  	var zTbl uintptr
 35658  	var zCol uintptr
 35659  	var rc int32
 35660  	var pRet uintptr
 35661  
 35662  	if objc != 5 && objc != 4 {
 35663  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+15590)
 35664  		return TCL_ERROR
 35665  	}
 35666  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+16) != 0 {
 35667  		return TCL_ERROR
 35668  	}
 35669  	zDb = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 35670  	zTbl = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)))
 35671  	if objc == 5 {
 35672  		zCol = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 4*8)))
 35673  	} else {
 35674  		zCol = uintptr(0)
 35675  	}
 35676  
 35677  	if libc.Xstrlen(tls, zDb) == uint64(0) {
 35678  		zDb = uintptr(0)
 35679  	}
 35680  
 35681  	rc = sqlite3.Xsqlite3_table_column_metadata(tls, *(*uintptr)(unsafe.Pointer(bp + 16)), zDb, zTbl, zCol,
 35682  		bp+24, bp+32, bp+40, bp+44, bp+48)
 35683  
 35684  	if rc != SQLITE_OK {
 35685  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, sqlite3.Xsqlite3_errmsg(tls, *(*uintptr)(unsafe.Pointer(bp + 16))), 0))
 35686  		return TCL_ERROR
 35687  	}
 35688  
 35689  	pRet = tcl.XTcl_NewObj(tls)
 35690  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pRet, tcl.XTcl_NewStringObj(tls, *(*uintptr)(unsafe.Pointer(bp + 24)), -1))
 35691  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pRet, tcl.XTcl_NewStringObj(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), -1))
 35692  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pRet, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 40))))
 35693  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pRet, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 44))))
 35694  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pRet, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 48))))
 35695  	tcl.XTcl_SetObjResult(tls, interp, pRet)
 35696  
 35697  	return TCL_OK
 35698  }
 35699  
 35700  func blobHandleFromObj(tls *libc.TLS, interp uintptr, pObj uintptr, ppBlob uintptr) int32 {
 35701  	bp := tls.Alloc(8)
 35702  	defer tls.Free(8)
 35703  
 35704  	var z uintptr
 35705  
 35706  	z = tcl.XTcl_GetStringFromObj(tls, pObj, bp)
 35707  	if *(*int32)(unsafe.Pointer(bp)) == 0 {
 35708  		*(*uintptr)(unsafe.Pointer(ppBlob)) = uintptr(0)
 35709  	} else {
 35710  		var channel Tcl_Channel
 35711  		var instanceData ClientData
 35712  
 35713  		channel = tcl.XTcl_GetChannel(tls, interp, z, bp+4)
 35714  		if !(channel != 0) {
 35715  			return TCL_ERROR
 35716  		}
 35717  
 35718  		tcl.XTcl_Flush(tls, channel)
 35719  		tcl.XTcl_Seek(tls, channel, int64(0), SEEK_SET)
 35720  
 35721  		instanceData = tcl.XTcl_GetChannelInstanceData(tls, channel)
 35722  		*(*uintptr)(unsafe.Pointer(ppBlob)) = *(*uintptr)(unsafe.Pointer(instanceData))
 35723  	}
 35724  
 35725  	return TCL_OK
 35726  }
 35727  
 35728  func test_blob_reopen(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 35729  	bp := tls.Alloc(16)
 35730  	defer tls.Free(16)
 35731  
 35732  	var rc int32
 35733  
 35734  	if objc != 3 {
 35735  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+15616)
 35736  		return TCL_ERROR
 35737  	}
 35738  
 35739  	if blobHandleFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp) != 0 {
 35740  		return TCL_ERROR
 35741  	}
 35742  	if tcl.XTcl_GetWideIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+8) != 0 {
 35743  		return TCL_ERROR
 35744  	}
 35745  
 35746  	rc = sqlite3.Xsqlite3_blob_reopen(tls, *(*uintptr)(unsafe.Pointer(bp)), *(*Tcl_WideInt)(unsafe.Pointer(bp + 8)))
 35747  	if rc != SQLITE_OK {
 35748  		tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(1))
 35749  	}
 35750  
 35751  	return func() int32 {
 35752  		if rc == SQLITE_OK {
 35753  			return TCL_OK
 35754  		}
 35755  		return TCL_ERROR
 35756  	}()
 35757  }
 35758  
 35759  type TestCollationX1 = struct {
 35760  	Finterp uintptr
 35761  	FpCmp   uintptr
 35762  	FpDel   uintptr
 35763  }
 35764  
 35765  type TestCollationX = TestCollationX1
 35766  
 35767  func testCreateCollationDel(tls *libc.TLS, pCtx uintptr) {
 35768  	var p uintptr = pCtx
 35769  
 35770  	var rc int32 = tcl.XTcl_EvalObjEx(tls, (*TestCollationX)(unsafe.Pointer(p)).Finterp, (*TestCollationX)(unsafe.Pointer(p)).FpDel, TCL_EVAL_DIRECT|TCL_EVAL_GLOBAL)
 35771  	if rc != TCL_OK {
 35772  		tcl.XTcl_BackgroundError(tls, (*TestCollationX)(unsafe.Pointer(p)).Finterp)
 35773  	}
 35774  
 35775  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 35776  		if libc.PreDecInt32(&(*Tcl_Obj)(unsafe.Pointer((*TestCollationX)(unsafe.Pointer(p)).FpCmp)).FrefCount, 1) <= 0 {
 35777  			tcl.XTclFreeObj(tls, (*TestCollationX)(unsafe.Pointer(p)).FpCmp)
 35778  		}
 35779  	}
 35780  	for __ccgo1 := true; __ccgo1; __ccgo1 = 0 != 0 {
 35781  		if libc.PreDecInt32(&(*Tcl_Obj)(unsafe.Pointer((*TestCollationX)(unsafe.Pointer(p)).FpDel)).FrefCount, 1) <= 0 {
 35782  			tcl.XTclFreeObj(tls, (*TestCollationX)(unsafe.Pointer(p)).FpDel)
 35783  		}
 35784  	}
 35785  	sqlite3.Xsqlite3_free(tls, p)
 35786  }
 35787  
 35788  func testCreateCollationCmp(tls *libc.TLS, pCtx uintptr, nLeft int32, zLeft uintptr, nRight int32, zRight uintptr) int32 {
 35789  	bp := tls.Alloc(4)
 35790  	defer tls.Free(4)
 35791  
 35792  	var p uintptr = pCtx
 35793  	var pScript uintptr = tcl.XTcl_DuplicateObj(tls, (*TestCollationX)(unsafe.Pointer(p)).FpCmp)
 35794  	*(*int32)(unsafe.Pointer(bp)) = 0
 35795  
 35796  	(*Tcl_Obj)(unsafe.Pointer(pScript)).FrefCount++
 35797  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pScript, tcl.XTcl_NewStringObj(tls, zLeft, nLeft))
 35798  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pScript, tcl.XTcl_NewStringObj(tls, zRight, nRight))
 35799  
 35800  	if TCL_OK != tcl.XTcl_EvalObjEx(tls, (*TestCollationX)(unsafe.Pointer(p)).Finterp, pScript, TCL_EVAL_DIRECT|TCL_EVAL_GLOBAL) ||
 35801  		TCL_OK != tcl.XTcl_GetIntFromObj(tls, (*TestCollationX)(unsafe.Pointer(p)).Finterp, tcl.XTcl_GetObjResult(tls, (*TestCollationX)(unsafe.Pointer(p)).Finterp), bp) {
 35802  		tcl.XTcl_BackgroundError(tls, (*TestCollationX)(unsafe.Pointer(p)).Finterp)
 35803  	}
 35804  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 35805  		if libc.PreDecInt32(&(*Tcl_Obj)(unsafe.Pointer(pScript)).FrefCount, 1) <= 0 {
 35806  			tcl.XTclFreeObj(tls, pScript)
 35807  		}
 35808  	}
 35809  
 35810  	return *(*int32)(unsafe.Pointer(bp))
 35811  }
 35812  
 35813  func test_create_collation_v2(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 35814  	bp := tls.Alloc(24)
 35815  	defer tls.Free(24)
 35816  
 35817  	var p uintptr
 35818  
 35819  	var rc int32
 35820  
 35821  	if objc != 5 {
 35822  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+15630)
 35823  		return TCL_ERROR
 35824  	}
 35825  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+16) != 0 {
 35826  		return TCL_ERROR
 35827  	}
 35828  
 35829  	p = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(TestCollationX{})))
 35830  	(*TestCollationX)(unsafe.Pointer(p)).FpCmp = *(*uintptr)(unsafe.Pointer(objv + 3*8))
 35831  	(*TestCollationX)(unsafe.Pointer(p)).FpDel = *(*uintptr)(unsafe.Pointer(objv + 4*8))
 35832  	(*TestCollationX)(unsafe.Pointer(p)).Finterp = interp
 35833  	(*Tcl_Obj)(unsafe.Pointer((*TestCollationX)(unsafe.Pointer(p)).FpCmp)).FrefCount++
 35834  	(*Tcl_Obj)(unsafe.Pointer((*TestCollationX)(unsafe.Pointer(p)).FpDel)).FrefCount++
 35835  
 35836  	rc = sqlite3.Xsqlite3_create_collation_v2(tls, *(*uintptr)(unsafe.Pointer(bp + 16)), tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8))), 16,
 35837  		p, *(*uintptr)(unsafe.Pointer(&struct {
 35838  			f func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32
 35839  		}{testCreateCollationCmp})), *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{testCreateCollationDel})))
 35840  	if rc != SQLITE_MISUSE {
 35841  		tcl.XTcl_AppendResult(tls, interp,
 35842  			libc.VaList(bp, ts+15663, uintptr(0)))
 35843  		return TCL_ERROR
 35844  	}
 35845  	rc = sqlite3.Xsqlite3_create_collation_v2(tls, *(*uintptr)(unsafe.Pointer(bp + 16)), tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8))), SQLITE_UTF8,
 35846  		p, *(*uintptr)(unsafe.Pointer(&struct {
 35847  			f func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32
 35848  		}{testCreateCollationCmp})), *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{testCreateCollationDel})))
 35849  	return TCL_OK
 35850  }
 35851  
 35852  type CreateFunctionV21 = struct {
 35853  	Finterp   uintptr
 35854  	FpFunc    uintptr
 35855  	FpStep    uintptr
 35856  	FpFinal   uintptr
 35857  	FpDestroy uintptr
 35858  }
 35859  
 35860  type CreateFunctionV2 = CreateFunctionV21
 35861  
 35862  func cf2Func(tls *libc.TLS, ctx uintptr, nArg int32, aArg uintptr) {
 35863  }
 35864  
 35865  func cf2Step(tls *libc.TLS, ctx uintptr, nArg int32, aArg uintptr) {
 35866  }
 35867  
 35868  func cf2Final(tls *libc.TLS, ctx uintptr) {
 35869  }
 35870  
 35871  func cf2Destroy(tls *libc.TLS, pUser uintptr) {
 35872  	var p uintptr = pUser
 35873  
 35874  	if (*CreateFunctionV2)(unsafe.Pointer(p)).Finterp != 0 && (*CreateFunctionV2)(unsafe.Pointer(p)).FpDestroy != 0 {
 35875  		var rc int32 = tcl.XTcl_EvalObjEx(tls, (*CreateFunctionV2)(unsafe.Pointer(p)).Finterp, (*CreateFunctionV2)(unsafe.Pointer(p)).FpDestroy, 0)
 35876  		if rc != TCL_OK {
 35877  			tcl.XTcl_BackgroundError(tls, (*CreateFunctionV2)(unsafe.Pointer(p)).Finterp)
 35878  		}
 35879  	}
 35880  
 35881  	if (*CreateFunctionV2)(unsafe.Pointer(p)).FpFunc != 0 {
 35882  		for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 35883  			if libc.PreDecInt32(&(*Tcl_Obj)(unsafe.Pointer((*CreateFunctionV2)(unsafe.Pointer(p)).FpFunc)).FrefCount, 1) <= 0 {
 35884  				tcl.XTclFreeObj(tls, (*CreateFunctionV2)(unsafe.Pointer(p)).FpFunc)
 35885  			}
 35886  		}
 35887  	}
 35888  	if (*CreateFunctionV2)(unsafe.Pointer(p)).FpStep != 0 {
 35889  		for __ccgo1 := true; __ccgo1; __ccgo1 = 0 != 0 {
 35890  			if libc.PreDecInt32(&(*Tcl_Obj)(unsafe.Pointer((*CreateFunctionV2)(unsafe.Pointer(p)).FpStep)).FrefCount, 1) <= 0 {
 35891  				tcl.XTclFreeObj(tls, (*CreateFunctionV2)(unsafe.Pointer(p)).FpStep)
 35892  			}
 35893  		}
 35894  	}
 35895  	if (*CreateFunctionV2)(unsafe.Pointer(p)).FpFinal != 0 {
 35896  		for __ccgo2 := true; __ccgo2; __ccgo2 = 0 != 0 {
 35897  			if libc.PreDecInt32(&(*Tcl_Obj)(unsafe.Pointer((*CreateFunctionV2)(unsafe.Pointer(p)).FpFinal)).FrefCount, 1) <= 0 {
 35898  				tcl.XTclFreeObj(tls, (*CreateFunctionV2)(unsafe.Pointer(p)).FpFinal)
 35899  			}
 35900  		}
 35901  	}
 35902  	if (*CreateFunctionV2)(unsafe.Pointer(p)).FpDestroy != 0 {
 35903  		for __ccgo3 := true; __ccgo3; __ccgo3 = 0 != 0 {
 35904  			if libc.PreDecInt32(&(*Tcl_Obj)(unsafe.Pointer((*CreateFunctionV2)(unsafe.Pointer(p)).FpDestroy)).FrefCount, 1) <= 0 {
 35905  				tcl.XTclFreeObj(tls, (*CreateFunctionV2)(unsafe.Pointer(p)).FpDestroy)
 35906  			}
 35907  		}
 35908  	}
 35909  	sqlite3.Xsqlite3_free(tls, p)
 35910  }
 35911  
 35912  func test_create_function_v2(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 35913  	bp := tls.Alloc(180)
 35914  	defer tls.Free(180)
 35915  
 35916  	var zFunc uintptr
 35917  
 35918  	var p uintptr
 35919  	var i int32
 35920  	var rc int32
 35921  
 35922  	*(*[6]EncTable)(unsafe.Pointer(bp + 32)) = [6]EncTable{
 35923  		{FzEnc: ts + 15728, Fenc: SQLITE_UTF8},
 35924  		{FzEnc: ts + 15733, Fenc: SQLITE_UTF16},
 35925  		{FzEnc: ts + 15739, Fenc: SQLITE_UTF16LE},
 35926  		{FzEnc: ts + 15747, Fenc: SQLITE_UTF16BE},
 35927  		{FzEnc: ts + 12774, Fenc: SQLITE_ANY},
 35928  		{FzEnc: ts + 14193},
 35929  	}
 35930  
 35931  	if objc < 5 || objc%2 == 0 {
 35932  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+15755)
 35933  		return TCL_ERROR
 35934  	}
 35935  
 35936  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+16) != 0 {
 35937  		return TCL_ERROR
 35938  	}
 35939  	zFunc = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 35940  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+24) != 0 {
 35941  		return TCL_ERROR
 35942  	}
 35943  	if tcl.XTcl_GetIndexFromObjStruct(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 4*8)), bp+32, int32(unsafe.Sizeof(EncTable{})),
 35944  		ts+15784, 0, bp+128) != 0 {
 35945  		return TCL_ERROR
 35946  	}
 35947  	*(*int32)(unsafe.Pointer(bp + 128)) = (*EncTable)(unsafe.Pointer(bp + 32 + uintptr(*(*int32)(unsafe.Pointer(bp + 128)))*16)).Fenc
 35948  
 35949  	p = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(CreateFunctionV2{})))
 35950  
 35951  	libc.X__builtin___memset_chk(tls, p, 0, uint64(unsafe.Sizeof(CreateFunctionV2{})), libc.X__builtin_object_size(tls, p, 0))
 35952  	(*CreateFunctionV2)(unsafe.Pointer(p)).Finterp = interp
 35953  
 35954  	for i = 5; i < objc; i = i + 2 {
 35955  		*(*[5]uintptr)(unsafe.Pointer(bp + 136)) = [5]uintptr{ts + 15793, ts + 15799, ts + 15805, ts + 15812, uintptr(0)}
 35956  		if tcl.XTcl_GetIndexFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(i)*8)), bp+136, ts+15821, 0, bp+176) != 0 {
 35957  			sqlite3.Xsqlite3_free(tls, p)
 35958  			return TCL_ERROR
 35959  		}
 35960  
 35961  		switch *(*int32)(unsafe.Pointer(bp + 176)) {
 35962  		case 0:
 35963  			(*CreateFunctionV2)(unsafe.Pointer(p)).FpFunc = *(*uintptr)(unsafe.Pointer(objv + uintptr(i+1)*8))
 35964  			break
 35965  		case 1:
 35966  			(*CreateFunctionV2)(unsafe.Pointer(p)).FpStep = *(*uintptr)(unsafe.Pointer(objv + uintptr(i+1)*8))
 35967  			break
 35968  		case 2:
 35969  			(*CreateFunctionV2)(unsafe.Pointer(p)).FpFinal = *(*uintptr)(unsafe.Pointer(objv + uintptr(i+1)*8))
 35970  			break
 35971  		case 3:
 35972  			(*CreateFunctionV2)(unsafe.Pointer(p)).FpDestroy = *(*uintptr)(unsafe.Pointer(objv + uintptr(i+1)*8))
 35973  			break
 35974  		}
 35975  	}
 35976  	if (*CreateFunctionV2)(unsafe.Pointer(p)).FpFunc != 0 {
 35977  		(*CreateFunctionV2)(unsafe.Pointer(p)).FpFunc = tcl.XTcl_DuplicateObj(tls, (*CreateFunctionV2)(unsafe.Pointer(p)).FpFunc)
 35978  	}
 35979  	if (*CreateFunctionV2)(unsafe.Pointer(p)).FpStep != 0 {
 35980  		(*CreateFunctionV2)(unsafe.Pointer(p)).FpStep = tcl.XTcl_DuplicateObj(tls, (*CreateFunctionV2)(unsafe.Pointer(p)).FpStep)
 35981  	}
 35982  	if (*CreateFunctionV2)(unsafe.Pointer(p)).FpFinal != 0 {
 35983  		(*CreateFunctionV2)(unsafe.Pointer(p)).FpFinal = tcl.XTcl_DuplicateObj(tls, (*CreateFunctionV2)(unsafe.Pointer(p)).FpFinal)
 35984  	}
 35985  	if (*CreateFunctionV2)(unsafe.Pointer(p)).FpDestroy != 0 {
 35986  		(*CreateFunctionV2)(unsafe.Pointer(p)).FpDestroy = tcl.XTcl_DuplicateObj(tls, (*CreateFunctionV2)(unsafe.Pointer(p)).FpDestroy)
 35987  	}
 35988  
 35989  	if (*CreateFunctionV2)(unsafe.Pointer(p)).FpFunc != 0 {
 35990  		(*Tcl_Obj)(unsafe.Pointer((*CreateFunctionV2)(unsafe.Pointer(p)).FpFunc)).FrefCount++
 35991  	}
 35992  	if (*CreateFunctionV2)(unsafe.Pointer(p)).FpStep != 0 {
 35993  		(*Tcl_Obj)(unsafe.Pointer((*CreateFunctionV2)(unsafe.Pointer(p)).FpStep)).FrefCount++
 35994  	}
 35995  	if (*CreateFunctionV2)(unsafe.Pointer(p)).FpFinal != 0 {
 35996  		(*Tcl_Obj)(unsafe.Pointer((*CreateFunctionV2)(unsafe.Pointer(p)).FpFinal)).FrefCount++
 35997  	}
 35998  	if (*CreateFunctionV2)(unsafe.Pointer(p)).FpDestroy != 0 {
 35999  		(*Tcl_Obj)(unsafe.Pointer((*CreateFunctionV2)(unsafe.Pointer(p)).FpDestroy)).FrefCount++
 36000  	}
 36001  
 36002  	rc = sqlite3.Xsqlite3_create_function_v2(tls, *(*uintptr)(unsafe.Pointer(bp + 16)), zFunc, *(*int32)(unsafe.Pointer(bp + 24)), *(*int32)(unsafe.Pointer(bp + 128)), p,
 36003  		func() uintptr {
 36004  			if (*CreateFunctionV2)(unsafe.Pointer(p)).FpFunc != 0 {
 36005  				return *(*uintptr)(unsafe.Pointer(&struct {
 36006  					f func(*libc.TLS, uintptr, int32, uintptr)
 36007  				}{cf2Func}))
 36008  			}
 36009  			return uintptr(0)
 36010  		}(),
 36011  		func() uintptr {
 36012  			if (*CreateFunctionV2)(unsafe.Pointer(p)).FpStep != 0 {
 36013  				return *(*uintptr)(unsafe.Pointer(&struct {
 36014  					f func(*libc.TLS, uintptr, int32, uintptr)
 36015  				}{cf2Step}))
 36016  			}
 36017  			return uintptr(0)
 36018  		}(),
 36019  		func() uintptr {
 36020  			if (*CreateFunctionV2)(unsafe.Pointer(p)).FpFinal != 0 {
 36021  				return *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{cf2Final}))
 36022  			}
 36023  			return uintptr(0)
 36024  		}(),
 36025  		*(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{cf2Destroy})))
 36026  	if rc != SQLITE_OK {
 36027  		tcl.XTcl_ResetResult(tls, interp)
 36028  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, sqlite3.Xsqlite3ErrName(tls, rc), 0))
 36029  		return TCL_ERROR
 36030  	}
 36031  	return TCL_OK
 36032  }
 36033  
 36034  type EncTable = struct {
 36035  	FzEnc        uintptr
 36036  	Fenc         int32
 36037  	F__ccgo_pad1 [4]byte
 36038  }
 36039  
 36040  func test_load_extension(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 36041  	bp := tls.Alloc(88)
 36042  	defer tls.Free(88)
 36043  
 36044  	var db uintptr
 36045  	_ = db
 36046  	var rc int32
 36047  	var zDb uintptr
 36048  	var zFile uintptr
 36049  	_ = zFile
 36050  	var zProc uintptr = uintptr(0)
 36051  	_ = zProc
 36052  	var zErr uintptr = uintptr(0)
 36053  
 36054  	if objc != 4 && objc != 3 {
 36055  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+15828)
 36056  		return TCL_ERROR
 36057  	}
 36058  	zDb = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 36059  	zFile = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 36060  	if objc == 4 {
 36061  		zProc = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)))
 36062  	}
 36063  
 36064  	if !(tcl.XTcl_GetCommandInfo(tls, interp, zDb, bp+24) != 0) {
 36065  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14859, zDb, uintptr(0)))
 36066  		return TCL_ERROR
 36067  	}
 36068  	db = (*struct{ Fdb uintptr })(unsafe.Pointer((*Tcl_CmdInfo)(unsafe.Pointer(bp + 24)).FobjClientData)).Fdb
 36069  
 36070  	rc = SQLITE_ERROR
 36071  	zErr = sqlite3.Xsqlite3_mprintf(tls, ts+15850, 0)
 36072  	_ = zProc
 36073  	_ = zFile
 36074  	if rc != SQLITE_OK {
 36075  		tcl.XTcl_SetResult(tls, interp, func() uintptr {
 36076  			if zErr != 0 {
 36077  				return zErr
 36078  			}
 36079  			return ts + 584
 36080  		}(), uintptr(1))
 36081  		rc = TCL_ERROR
 36082  	} else {
 36083  		rc = TCL_OK
 36084  	}
 36085  	sqlite3.Xsqlite3_free(tls, zErr)
 36086  
 36087  	return rc
 36088  }
 36089  
 36090  func test_enable_load(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 36091  	bp := tls.Alloc(100)
 36092  	defer tls.Free(100)
 36093  
 36094  	var db uintptr
 36095  	_ = db
 36096  	var zDb uintptr
 36097  
 36098  	if objc != 3 {
 36099  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+15892)
 36100  		return TCL_ERROR
 36101  	}
 36102  	zDb = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 36103  
 36104  	if !(tcl.XTcl_GetCommandInfo(tls, interp, zDb, bp+32) != 0) {
 36105  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14859, zDb, uintptr(0)))
 36106  		return TCL_ERROR
 36107  	}
 36108  	db = (*struct{ Fdb uintptr })(unsafe.Pointer((*Tcl_CmdInfo)(unsafe.Pointer(bp + 32)).FobjClientData)).Fdb
 36109  
 36110  	if tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+96) != 0 {
 36111  		return TCL_ERROR
 36112  	}
 36113  
 36114  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+24, ts+15850))
 36115  	return TCL_ERROR
 36116  }
 36117  
 36118  func sqlite_abort(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 36119  	libc.Xexit(tls, 255)
 36120  
 36121  	return TCL_OK
 36122  }
 36123  
 36124  func testFunc(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 36125  	var zArg0 uintptr
 36126  __1:
 36127  	if !(argc >= 2) {
 36128  		goto __2
 36129  	}
 36130  	zArg0 = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 36131  	if !(zArg0 != 0) {
 36132  		goto __3
 36133  	}
 36134  	if !(0 == sqlite3.Xsqlite3StrICmp(tls, zArg0, ts+2577)) {
 36135  		goto __5
 36136  	}
 36137  	sqlite3.Xsqlite3_result_int(tls, context, sqlite3.Xsqlite3_value_int(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8))))
 36138  	goto __6
 36139  __5:
 36140  	if !(sqlite3.Xsqlite3StrICmp(tls, zArg0, ts+3973) == 0) {
 36141  		goto __7
 36142  	}
 36143  	sqlite3.Xsqlite3_result_int64(tls, context, sqlite3.Xsqlite3_value_int64(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8))))
 36144  	goto __8
 36145  __7:
 36146  	if !(sqlite3.Xsqlite3StrICmp(tls, zArg0, ts+15908) == 0) {
 36147  		goto __9
 36148  	}
 36149  	sqlite3.Xsqlite3_result_text(tls, context, sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8))), -1,
 36150  		libc.UintptrFromInt32(-1))
 36151  	goto __10
 36152  __9:
 36153  	if !(sqlite3.Xsqlite3StrICmp(tls, zArg0, ts+2562) == 0) {
 36154  		goto __11
 36155  	}
 36156  	sqlite3.Xsqlite3_result_double(tls, context, sqlite3.Xsqlite3_value_double(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8))))
 36157  	goto __12
 36158  __11:
 36159  	if !(sqlite3.Xsqlite3StrICmp(tls, zArg0, ts+7939) == 0) {
 36160  		goto __13
 36161  	}
 36162  	sqlite3.Xsqlite3_result_null(tls, context)
 36163  	goto __14
 36164  __13:
 36165  	if !(sqlite3.Xsqlite3StrICmp(tls, zArg0, ts+10013) == 0) {
 36166  		goto __15
 36167  	}
 36168  	sqlite3.Xsqlite3_result_value(tls, context, *(*uintptr)(unsafe.Pointer(argv + uintptr(sqlite3.Xsqlite3_value_int(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8))))*8)))
 36169  	goto __16
 36170  __15:
 36171  	goto error_out
 36172  __16:
 36173  	;
 36174  __14:
 36175  	;
 36176  __12:
 36177  	;
 36178  __10:
 36179  	;
 36180  __8:
 36181  	;
 36182  __6:
 36183  	;
 36184  	goto __4
 36185  __3:
 36186  	goto error_out
 36187  __4:
 36188  	;
 36189  	argc = argc - 2
 36190  	argv += 8 * uintptr(2)
 36191  	goto __1
 36192  __2:
 36193  	;
 36194  	return
 36195  
 36196  error_out:
 36197  	sqlite3.Xsqlite3_result_error(tls, context,
 36198  		ts+15915, -1)
 36199  }
 36200  
 36201  func test_register_func(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 36202  	bp := tls.Alloc(56)
 36203  	defer tls.Free(56)
 36204  
 36205  	var rc int32
 36206  	if argc != 3 {
 36207  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 36208  			ts+15983, 0))
 36209  		return TCL_ERROR
 36210  	}
 36211  	if getDbPointer(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)), bp+48) != 0 {
 36212  		return TCL_ERROR
 36213  	}
 36214  	rc = sqlite3.Xsqlite3_create_function(tls, *(*uintptr)(unsafe.Pointer(bp + 48)), *(*uintptr)(unsafe.Pointer(argv + 2*8)), -1, SQLITE_UTF8, uintptr(0),
 36215  		*(*uintptr)(unsafe.Pointer(&struct {
 36216  			f func(*libc.TLS, uintptr, int32, uintptr)
 36217  		}{testFunc})), uintptr(0), uintptr(0))
 36218  	if rc != 0 {
 36219  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, sqlite3.Xsqlite3ErrStr(tls, rc), 0))
 36220  		return TCL_ERROR
 36221  	}
 36222  	if sqlite3TestErrCode(tls, interp, *(*uintptr)(unsafe.Pointer(bp + 48)), rc) != 0 {
 36223  		return TCL_ERROR
 36224  	}
 36225  	return TCL_OK
 36226  }
 36227  
 36228  func test_finalize(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 36229  	bp := tls.Alloc(40)
 36230  	defer tls.Free(40)
 36231  
 36232  	var rc int32
 36233  	var db uintptr = uintptr(0)
 36234  
 36235  	if objc != 2 {
 36236  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 36237  			tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+16001, 0))
 36238  		return TCL_ERROR
 36239  	}
 36240  
 36241  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0 {
 36242  		return TCL_ERROR
 36243  	}
 36244  
 36245  	if *(*uintptr)(unsafe.Pointer(bp + 32)) != 0 {
 36246  		db = sqlite3.Xsqlite3_db_handle(tls, *(*uintptr)(unsafe.Pointer(bp + 32)))
 36247  	}
 36248  	rc = sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 32)))
 36249  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 36250  	if db != 0 && sqlite3TestErrCode(tls, interp, db, rc) != 0 {
 36251  		return TCL_ERROR
 36252  	}
 36253  	return TCL_OK
 36254  }
 36255  
 36256  func test_stmt_status(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 36257  	bp := tls.Alloc(16)
 36258  	defer tls.Free(16)
 36259  
 36260  	var iValue int32
 36261  	var i int32
 36262  	*(*int32)(unsafe.Pointer(bp + 8)) = 0
 36263  
 36264  	var zOpName uintptr
 36265  
 36266  	if objc != 4 {
 36267  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+16009)
 36268  		return TCL_ERROR
 36269  	}
 36270  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 36271  		return TCL_ERROR
 36272  	}
 36273  	zOpName = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 36274  	for i = 0; i < int32(uint64(unsafe.Sizeof(aOp))/uint64(unsafe.Sizeof(struct {
 36275  		FzName       uintptr
 36276  		Fop          int32
 36277  		F__ccgo_pad1 [4]byte
 36278  	}{}))); i++ {
 36279  		if libc.Xstrcmp(tls, aOp[i].FzName, zOpName) == 0 {
 36280  			*(*int32)(unsafe.Pointer(bp + 8)) = aOp[i].Fop
 36281  			break
 36282  		}
 36283  	}
 36284  	if i >= int32(uint64(unsafe.Sizeof(aOp))/uint64(unsafe.Sizeof(struct {
 36285  		FzName       uintptr
 36286  		Fop          int32
 36287  		F__ccgo_pad1 [4]byte
 36288  	}{}))) {
 36289  		if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+8) != 0 {
 36290  			return TCL_ERROR
 36291  		}
 36292  	}
 36293  	if tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+12) != 0 {
 36294  		return TCL_ERROR
 36295  	}
 36296  	iValue = sqlite3.Xsqlite3_stmt_status(tls, *(*uintptr)(unsafe.Pointer(bp)), *(*int32)(unsafe.Pointer(bp + 8)), *(*int32)(unsafe.Pointer(bp + 12)))
 36297  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, iValue))
 36298  	return TCL_OK
 36299  }
 36300  
 36301  var aOp = [7]struct {
 36302  	FzName       uintptr
 36303  	Fop          int32
 36304  	F__ccgo_pad1 [4]byte
 36305  }{
 36306  	{FzName: ts + 16034, Fop: SQLITE_STMTSTATUS_FULLSCAN_STEP},
 36307  	{FzName: ts + 16066, Fop: SQLITE_STMTSTATUS_SORT},
 36308  	{FzName: ts + 16089, Fop: SQLITE_STMTSTATUS_AUTOINDEX},
 36309  	{FzName: ts + 16117, Fop: SQLITE_STMTSTATUS_VM_STEP},
 36310  	{FzName: ts + 16143, Fop: SQLITE_STMTSTATUS_REPREPARE},
 36311  	{FzName: ts + 16171, Fop: SQLITE_STMTSTATUS_RUN},
 36312  	{FzName: ts + 16193, Fop: SQLITE_STMTSTATUS_MEMUSED},
 36313  }
 36314  
 36315  func test_config_sorterref(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 != 2 {
 36320  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+16219)
 36321  		return TCL_ERROR
 36322  	}
 36323  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp+8) != 0 {
 36324  		return TCL_ERROR
 36325  	}
 36326  	sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_SORTERREF_SIZE, libc.VaList(bp, *(*int32)(unsafe.Pointer(bp + 8))))
 36327  	return TCL_OK
 36328  }
 36329  
 36330  func vfsCurrentTimeInt64(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 36331  	bp := tls.Alloc(8)
 36332  	defer tls.Free(8)
 36333  
 36334  	var pVfs uintptr = sqlite3.Xsqlite3_vfs_find(tls, uintptr(0))
 36335  	if objc != 1 {
 36336  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+584)
 36337  		return TCL_ERROR
 36338  	}
 36339  	(*struct {
 36340  		f func(*libc.TLS, uintptr, uintptr) int32
 36341  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pVfs)).FxCurrentTimeInt64})).f(tls, pVfs, bp)
 36342  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewWideIntObj(tls, *(*i64)(unsafe.Pointer(bp))))
 36343  	return TCL_OK
 36344  }
 36345  
 36346  func test_snapshot_get(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 36347  	bp := tls.Alloc(116)
 36348  	defer tls.Free(116)
 36349  
 36350  	var rc int32
 36351  
 36352  	var zName uintptr
 36353  	*(*uintptr)(unsafe.Pointer(bp + 8)) = uintptr(0)
 36354  
 36355  	if objc != 3 {
 36356  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+16225)
 36357  		return TCL_ERROR
 36358  	}
 36359  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 36360  		return TCL_ERROR
 36361  	}
 36362  	zName = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 36363  
 36364  	rc = sqlite3.Xsqlite3_snapshot_get(tls, *(*uintptr)(unsafe.Pointer(bp)), zName, bp+8)
 36365  	if rc != SQLITE_OK {
 36366  		tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3ErrName(tls, rc), -1))
 36367  		return TCL_ERROR
 36368  	} else {
 36369  		if sqlite3TestMakePointerStr(tls, interp, bp+16, *(*uintptr)(unsafe.Pointer(bp + 8))) != 0 {
 36370  			return TCL_ERROR
 36371  		}
 36372  		tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, bp+16, -1))
 36373  	}
 36374  	return TCL_OK
 36375  }
 36376  
 36377  func test_snapshot_recover(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 36378  	bp := tls.Alloc(8)
 36379  	defer tls.Free(8)
 36380  
 36381  	var rc int32
 36382  
 36383  	var zName uintptr
 36384  
 36385  	if objc != 3 {
 36386  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+16225)
 36387  		return TCL_ERROR
 36388  	}
 36389  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 36390  		return TCL_ERROR
 36391  	}
 36392  	zName = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 36393  
 36394  	rc = sqlite3.Xsqlite3_snapshot_recover(tls, *(*uintptr)(unsafe.Pointer(bp)), zName)
 36395  	if rc != SQLITE_OK {
 36396  		tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3ErrName(tls, rc), -1))
 36397  		return TCL_ERROR
 36398  	} else {
 36399  		tcl.XTcl_ResetResult(tls, interp)
 36400  	}
 36401  	return TCL_OK
 36402  }
 36403  
 36404  func test_snapshot_open(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 36405  	bp := tls.Alloc(8)
 36406  	defer tls.Free(8)
 36407  
 36408  	var rc int32
 36409  
 36410  	var zName uintptr
 36411  	var pSnapshot uintptr
 36412  
 36413  	if objc != 4 {
 36414  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+16235)
 36415  		return TCL_ERROR
 36416  	}
 36417  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 36418  		return TCL_ERROR
 36419  	}
 36420  	zName = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 36421  	pSnapshot = sqlite3TestTextToPtr(tls, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8))))
 36422  
 36423  	rc = sqlite3.Xsqlite3_snapshot_open(tls, *(*uintptr)(unsafe.Pointer(bp)), zName, pSnapshot)
 36424  	if rc != SQLITE_OK {
 36425  		tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3ErrName(tls, rc), -1))
 36426  		return TCL_ERROR
 36427  	} else {
 36428  		tcl.XTcl_ResetResult(tls, interp)
 36429  	}
 36430  	return TCL_OK
 36431  }
 36432  
 36433  func test_snapshot_free(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 36434  	var pSnapshot uintptr
 36435  	if objc != 2 {
 36436  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+16254)
 36437  		return TCL_ERROR
 36438  	}
 36439  	pSnapshot = sqlite3TestTextToPtr(tls, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))))
 36440  	sqlite3.Xsqlite3_snapshot_free(tls, pSnapshot)
 36441  	return TCL_OK
 36442  }
 36443  
 36444  func test_snapshot_cmp(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 36445  	var res int32
 36446  	var p1 uintptr
 36447  	var p2 uintptr
 36448  	if objc != 3 {
 36449  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+16263)
 36450  		return TCL_ERROR
 36451  	}
 36452  	p1 = sqlite3TestTextToPtr(tls, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))))
 36453  	p2 = sqlite3TestTextToPtr(tls, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8))))
 36454  	res = sqlite3.Xsqlite3_snapshot_cmp(tls, p1, p2)
 36455  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, res))
 36456  	return TCL_OK
 36457  }
 36458  
 36459  func test_snapshot_get_blob(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 36460  	bp := tls.Alloc(16)
 36461  	defer tls.Free(16)
 36462  
 36463  	var rc int32
 36464  
 36465  	var zName uintptr
 36466  	*(*uintptr)(unsafe.Pointer(bp + 8)) = uintptr(0)
 36467  
 36468  	if objc != 3 {
 36469  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+16225)
 36470  		return TCL_ERROR
 36471  	}
 36472  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 36473  		return TCL_ERROR
 36474  	}
 36475  	zName = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 36476  
 36477  	rc = sqlite3.Xsqlite3_snapshot_get(tls, *(*uintptr)(unsafe.Pointer(bp)), zName, bp+8)
 36478  	if rc != SQLITE_OK {
 36479  		tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3ErrName(tls, rc), -1))
 36480  		return TCL_ERROR
 36481  	} else {
 36482  		tcl.XTcl_SetObjResult(tls, interp,
 36483  			tcl.XTcl_NewByteArrayObj(tls, *(*uintptr)(unsafe.Pointer(bp + 8)), int32(unsafe.Sizeof(sqlite3_snapshot{}))))
 36484  		sqlite3.Xsqlite3_snapshot_free(tls, *(*uintptr)(unsafe.Pointer(bp + 8)))
 36485  	}
 36486  	return TCL_OK
 36487  }
 36488  
 36489  func test_snapshot_open_blob(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 36490  	bp := tls.Alloc(28)
 36491  	defer tls.Free(28)
 36492  
 36493  	var rc int32
 36494  
 36495  	var zName uintptr
 36496  	var pBlob uintptr
 36497  
 36498  	if objc != 4 {
 36499  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+16235)
 36500  		return TCL_ERROR
 36501  	}
 36502  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+16) != 0 {
 36503  		return TCL_ERROR
 36504  	}
 36505  	zName = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 36506  	pBlob = tcl.XTcl_GetByteArrayFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+24)
 36507  	if uint64(*(*int32)(unsafe.Pointer(bp + 24))) != uint64(unsafe.Sizeof(sqlite3_snapshot{})) {
 36508  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+16283, 0))
 36509  		return TCL_ERROR
 36510  	}
 36511  	rc = sqlite3.Xsqlite3_snapshot_open(tls, *(*uintptr)(unsafe.Pointer(bp + 16)), zName, pBlob)
 36512  	if rc != SQLITE_OK {
 36513  		tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3ErrName(tls, rc), -1))
 36514  		return TCL_ERROR
 36515  	}
 36516  	return TCL_OK
 36517  }
 36518  
 36519  func test_snapshot_cmp_blob(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 36520  	bp := tls.Alloc(24)
 36521  	defer tls.Free(24)
 36522  
 36523  	var res int32
 36524  	var p1 uintptr
 36525  	var p2 uintptr
 36526  
 36527  	if objc != 3 {
 36528  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+16263)
 36529  		return TCL_ERROR
 36530  	}
 36531  
 36532  	p1 = tcl.XTcl_GetByteArrayFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp+16)
 36533  	p2 = tcl.XTcl_GetByteArrayFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+20)
 36534  
 36535  	if uint64(*(*int32)(unsafe.Pointer(bp + 16))) != uint64(unsafe.Sizeof(sqlite3_snapshot{})) || *(*int32)(unsafe.Pointer(bp + 16)) != *(*int32)(unsafe.Pointer(bp + 20)) {
 36536  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+16283, 0))
 36537  		return TCL_ERROR
 36538  	}
 36539  
 36540  	res = sqlite3.Xsqlite3_snapshot_cmp(tls, p1, p2)
 36541  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, res))
 36542  	return TCL_OK
 36543  }
 36544  
 36545  func test_delete_database(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 36546  	var rc int32
 36547  	var zFile uintptr
 36548  	if objc != 2 {
 36549  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+16296)
 36550  		return TCL_ERROR
 36551  	}
 36552  	zFile = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 36553  	rc = sqlite3_delete_database(tls, zFile)
 36554  
 36555  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3ErrName(tls, rc), -1))
 36556  	return TCL_OK
 36557  }
 36558  
 36559  func test_atomic_batch_write(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 36560  	bp := tls.Alloc(32)
 36561  	defer tls.Free(32)
 36562  
 36563  	var zFile uintptr = uintptr(0)
 36564  	*(*uintptr)(unsafe.Pointer(bp + 16)) = uintptr(0)
 36565  	*(*uintptr)(unsafe.Pointer(bp + 24)) = uintptr(0)
 36566  	var bRes int32 = 0
 36567  	var dc int32 = 0
 36568  	var rc int32
 36569  
 36570  	if objc != 2 {
 36571  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+16301)
 36572  		return TCL_ERROR
 36573  	}
 36574  	zFile = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 36575  
 36576  	rc = sqlite3.Xsqlite3_open(tls, zFile, bp+16)
 36577  	if rc != SQLITE_OK {
 36578  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, sqlite3.Xsqlite3_errmsg(tls, *(*uintptr)(unsafe.Pointer(bp + 16))), 0))
 36579  		sqlite3.Xsqlite3_close(tls, *(*uintptr)(unsafe.Pointer(bp + 16)))
 36580  		return TCL_ERROR
 36581  	}
 36582  
 36583  	rc = sqlite3.Xsqlite3_file_control(tls, *(*uintptr)(unsafe.Pointer(bp + 16)), ts+85, SQLITE_FCNTL_FILE_POINTER, bp+24)
 36584  	dc = (*struct {
 36585  		f func(*libc.TLS, uintptr) int32
 36586  	})(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)))
 36587  	if dc&SQLITE_IOCAP_BATCH_ATOMIC != 0 {
 36588  		bRes = 1
 36589  	}
 36590  
 36591  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, bRes))
 36592  	sqlite3.Xsqlite3_close(tls, *(*uintptr)(unsafe.Pointer(bp + 16)))
 36593  	return TCL_OK
 36594  }
 36595  
 36596  func test_next_stmt(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 36597  	bp := tls.Alloc(114)
 36598  	defer tls.Free(114)
 36599  
 36600  	*(*uintptr)(unsafe.Pointer(bp + 48)) = uintptr(0)
 36601  
 36602  	if objc != 3 {
 36603  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 36604  			tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+16306, 0))
 36605  		return TCL_ERROR
 36606  	}
 36607  
 36608  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+48) != 0 {
 36609  		return TCL_ERROR
 36610  	}
 36611  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8))), bp+56) != 0 {
 36612  		return TCL_ERROR
 36613  	}
 36614  	*(*uintptr)(unsafe.Pointer(bp + 56)) = sqlite3.Xsqlite3_next_stmt(tls, *(*uintptr)(unsafe.Pointer(bp + 48)), *(*uintptr)(unsafe.Pointer(bp + 56)))
 36615  	if *(*uintptr)(unsafe.Pointer(bp + 56)) != 0 {
 36616  		if sqlite3TestMakePointerStr(tls, interp, bp+64, *(*uintptr)(unsafe.Pointer(bp + 56))) != 0 {
 36617  			return TCL_ERROR
 36618  		}
 36619  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, bp+64, 0))
 36620  	}
 36621  	return TCL_OK
 36622  }
 36623  
 36624  func test_stmt_readonly(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 36625  	bp := tls.Alloc(40)
 36626  	defer tls.Free(40)
 36627  
 36628  	var rc int32
 36629  
 36630  	if objc != 2 {
 36631  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 36632  			tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+16315, 0))
 36633  		return TCL_ERROR
 36634  	}
 36635  
 36636  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0 {
 36637  		return TCL_ERROR
 36638  	}
 36639  	rc = sqlite3.Xsqlite3_stmt_readonly(tls, *(*uintptr)(unsafe.Pointer(bp + 32)))
 36640  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewBooleanObj(tls, rc))
 36641  	return TCL_OK
 36642  }
 36643  
 36644  func test_stmt_isexplain(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 36645  	bp := tls.Alloc(40)
 36646  	defer tls.Free(40)
 36647  
 36648  	var rc int32
 36649  
 36650  	if objc != 2 {
 36651  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 36652  			tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+16315, 0))
 36653  		return TCL_ERROR
 36654  	}
 36655  
 36656  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0 {
 36657  		return TCL_ERROR
 36658  	}
 36659  	rc = sqlite3.Xsqlite3_stmt_isexplain(tls, *(*uintptr)(unsafe.Pointer(bp + 32)))
 36660  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, rc))
 36661  	return TCL_OK
 36662  }
 36663  
 36664  func test_stmt_busy(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 36665  	bp := tls.Alloc(40)
 36666  	defer tls.Free(40)
 36667  
 36668  	var rc int32
 36669  
 36670  	if objc != 2 {
 36671  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 36672  			tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+16315, 0))
 36673  		return TCL_ERROR
 36674  	}
 36675  
 36676  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0 {
 36677  		return TCL_ERROR
 36678  	}
 36679  	rc = sqlite3.Xsqlite3_stmt_busy(tls, *(*uintptr)(unsafe.Pointer(bp + 32)))
 36680  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewBooleanObj(tls, rc))
 36681  	return TCL_OK
 36682  }
 36683  
 36684  func uses_stmt_journal(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 36685  	bp := tls.Alloc(40)
 36686  	defer tls.Free(40)
 36687  
 36688  	if objc != 2 {
 36689  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 36690  			tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+16315, 0))
 36691  		return TCL_ERROR
 36692  	}
 36693  
 36694  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0 {
 36695  		return TCL_ERROR
 36696  	}
 36697  	sqlite3.Xsqlite3_stmt_readonly(tls, *(*uintptr)(unsafe.Pointer(bp + 32)))
 36698  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewBooleanObj(tls, int32(*(*uint8)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 32)) + 200))&0x20>>5)))
 36699  	return TCL_OK
 36700  }
 36701  
 36702  func test_reset(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 36703  	bp := tls.Alloc(40)
 36704  	defer tls.Free(40)
 36705  
 36706  	var rc int32
 36707  
 36708  	if objc != 2 {
 36709  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 36710  			tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+16001, 0))
 36711  		return TCL_ERROR
 36712  	}
 36713  
 36714  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0 {
 36715  		return TCL_ERROR
 36716  	}
 36717  
 36718  	rc = sqlite3.Xsqlite3_reset(tls, *(*uintptr)(unsafe.Pointer(bp + 32)))
 36719  	if *(*uintptr)(unsafe.Pointer(bp + 32)) != 0 && sqlite3TestErrCode(tls, interp, sqlite3.Xsqlite3_db_handle(tls, *(*uintptr)(unsafe.Pointer(bp + 32))), rc) != 0 {
 36720  		return TCL_ERROR
 36721  	}
 36722  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 36723  
 36724  	return TCL_OK
 36725  }
 36726  
 36727  func test_expired(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 36728  	bp := tls.Alloc(40)
 36729  	defer tls.Free(40)
 36730  
 36731  	if objc != 2 {
 36732  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 36733  			tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+16001, 0))
 36734  		return TCL_ERROR
 36735  	}
 36736  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0 {
 36737  		return TCL_ERROR
 36738  	}
 36739  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewBooleanObj(tls, sqlite3.Xsqlite3_expired(tls, *(*uintptr)(unsafe.Pointer(bp + 32)))))
 36740  	return TCL_OK
 36741  }
 36742  
 36743  func test_transfer_bind(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 36744  	bp := tls.Alloc(48)
 36745  	defer tls.Free(48)
 36746  
 36747  	if objc != 3 {
 36748  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 36749  			tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+16321, 0))
 36750  		return TCL_ERROR
 36751  	}
 36752  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0 {
 36753  		return TCL_ERROR
 36754  	}
 36755  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8))), bp+40) != 0 {
 36756  		return TCL_ERROR
 36757  	}
 36758  	tcl.XTcl_SetObjResult(tls, interp,
 36759  		tcl.XTcl_NewIntObj(tls, sqlite3.Xsqlite3_transfer_bindings(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), *(*uintptr)(unsafe.Pointer(bp + 40)))))
 36760  	return TCL_OK
 36761  }
 36762  
 36763  func test_changes(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 36764  	bp := tls.Alloc(40)
 36765  	defer tls.Free(40)
 36766  
 36767  	if objc != 2 {
 36768  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 36769  			tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))), ts+15001, 0))
 36770  		return TCL_ERROR
 36771  	}
 36772  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0 {
 36773  		return TCL_ERROR
 36774  	}
 36775  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, sqlite3.Xsqlite3_changes(tls, *(*uintptr)(unsafe.Pointer(bp + 32)))))
 36776  	return TCL_OK
 36777  }
 36778  
 36779  var sqlite_static_bind_value uintptr = uintptr(0)
 36780  var sqlite_static_bind_nbyte int32 = 0
 36781  
 36782  func test_bind(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 36783  	bp := tls.Alloc(142)
 36784  	defer tls.Free(142)
 36785  
 36786  	var rc int32
 36787  
 36788  	if argc != 5 {
 36789  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 36790  			ts+16340, 0))
 36791  		return TCL_ERROR
 36792  	}
 36793  	if getStmtPointer(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)), bp+80) != 0 {
 36794  		return TCL_ERROR
 36795  	}
 36796  	if tcl.XTcl_GetInt(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 2*8)), bp+88) != 0 {
 36797  		return TCL_ERROR
 36798  	}
 36799  	if libc.Xstrcmp(tls, *(*uintptr)(unsafe.Pointer(argv + 4*8)), ts+7939) == 0 {
 36800  		rc = sqlite3.Xsqlite3_bind_null(tls, *(*uintptr)(unsafe.Pointer(bp + 80)), *(*int32)(unsafe.Pointer(bp + 88)))
 36801  	} else if libc.Xstrcmp(tls, *(*uintptr)(unsafe.Pointer(argv + 4*8)), ts+16376) == 0 {
 36802  		rc = sqlite3.Xsqlite3_bind_text(tls, *(*uintptr)(unsafe.Pointer(bp + 80)), *(*int32)(unsafe.Pointer(bp + 88)), sqlite_static_bind_value, -1, uintptr(0))
 36803  	} else if libc.Xstrcmp(tls, *(*uintptr)(unsafe.Pointer(argv + 4*8)), ts+16383) == 0 {
 36804  		rc = sqlite3.Xsqlite3_bind_text(tls, *(*uintptr)(unsafe.Pointer(bp + 80)), *(*int32)(unsafe.Pointer(bp + 88)), sqlite_static_bind_value,
 36805  			sqlite_static_bind_nbyte, uintptr(0))
 36806  	} else if libc.Xstrcmp(tls, *(*uintptr)(unsafe.Pointer(argv + 4*8)), ts+16397) == 0 {
 36807  		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))
 36808  	} else if libc.Xstrcmp(tls, *(*uintptr)(unsafe.Pointer(argv + 4*8)), ts+16404) == 0 {
 36809  		rc = sqlite3.Xsqlite3_bind_text(tls, *(*uintptr)(unsafe.Pointer(bp + 80)), *(*int32)(unsafe.Pointer(bp + 88)), ts+16411, 10, uintptr(0))
 36810  	} else {
 36811  		tcl.XTcl_AppendResult(tls, interp,
 36812  			libc.VaList(bp+32, ts+16422, 0))
 36813  		return TCL_ERROR
 36814  	}
 36815  	if sqlite3TestErrCode(tls, interp, sqlite3.Xsqlite3_db_handle(tls, *(*uintptr)(unsafe.Pointer(bp + 80))), rc) != 0 {
 36816  		return TCL_ERROR
 36817  	}
 36818  	if rc != 0 {
 36819  		sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([50]int8{})), bp+92, ts+16476, libc.VaList(bp+48, rc))
 36820  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+56, bp+92, sqlite3.Xsqlite3ErrStr(tls, rc), 0))
 36821  		return TCL_ERROR
 36822  	}
 36823  	return TCL_OK
 36824  }
 36825  
 36826  var pTestCollateInterp uintptr
 36827  
 36828  func test_collate_func(tls *libc.TLS, pCtx uintptr, nA int32, zA uintptr, nB int32, zB uintptr) int32 {
 36829  	bp := tls.Alloc(4)
 36830  	defer tls.Free(4)
 36831  
 36832  	var i uintptr = pTestCollateInterp
 36833  	var encin int32 = int32(pCtx)
 36834  
 36835  	var n int32
 36836  	var pVal uintptr
 36837  	var pX uintptr
 36838  
 36839  	pX = tcl.XTcl_NewStringObj(tls, ts+16482, -1)
 36840  	(*Tcl_Obj)(unsafe.Pointer(pX)).FrefCount++
 36841  
 36842  	switch encin {
 36843  	case SQLITE_UTF8:
 36844  		tcl.XTcl_ListObjAppendElement(tls, i, pX, tcl.XTcl_NewStringObj(tls, ts+16495, -1))
 36845  		break
 36846  	case SQLITE_UTF16LE:
 36847  		tcl.XTcl_ListObjAppendElement(tls, i, pX, tcl.XTcl_NewStringObj(tls, ts+16501, -1))
 36848  		break
 36849  	case SQLITE_UTF16BE:
 36850  		tcl.XTcl_ListObjAppendElement(tls, i, pX, tcl.XTcl_NewStringObj(tls, ts+16510, -1))
 36851  		break
 36852  	default:
 36853  	}
 36854  
 36855  	sqlite3.Xsqlite3BeginBenignMalloc(tls)
 36856  	pVal = sqlite3.Xsqlite3ValueNew(tls, uintptr(0))
 36857  	if pVal != 0 {
 36858  		sqlite3.Xsqlite3ValueSetStr(tls, pVal, nA, zA, uint8(encin), uintptr(0))
 36859  		n = sqlite3.Xsqlite3_value_bytes(tls, pVal)
 36860  		tcl.XTcl_ListObjAppendElement(tls, i, pX,
 36861  			tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3_value_text(tls, pVal), n))
 36862  		sqlite3.Xsqlite3ValueSetStr(tls, pVal, nB, zB, uint8(encin), uintptr(0))
 36863  		n = sqlite3.Xsqlite3_value_bytes(tls, pVal)
 36864  		tcl.XTcl_ListObjAppendElement(tls, i, pX,
 36865  			tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3_value_text(tls, pVal), n))
 36866  		sqlite3.Xsqlite3ValueFree(tls, pVal)
 36867  	}
 36868  	sqlite3.Xsqlite3EndBenignMalloc(tls)
 36869  
 36870  	tcl.XTcl_EvalObjEx(tls, i, pX, 0)
 36871  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 36872  		if libc.PreDecInt32(&(*Tcl_Obj)(unsafe.Pointer(pX)).FrefCount, 1) <= 0 {
 36873  			tcl.XTclFreeObj(tls, pX)
 36874  		}
 36875  	}
 36876  	tcl.XTcl_GetIntFromObj(tls, i, tcl.XTcl_GetObjResult(tls, i), bp)
 36877  	return *(*int32)(unsafe.Pointer(bp))
 36878  }
 36879  
 36880  func test_collate(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 36881  	bp := tls.Alloc(60)
 36882  	defer tls.Free(60)
 36883  
 36884  	var pVal uintptr
 36885  	var rc int32
 36886  	var zUtf16 uintptr
 36887  
 36888  	if !(objc != 5) {
 36889  		goto __1
 36890  	}
 36891  	goto bad_args
 36892  __1:
 36893  	;
 36894  	pTestCollateInterp = interp
 36895  	if !(getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+48) != 0) {
 36896  		goto __2
 36897  	}
 36898  	return TCL_ERROR
 36899  __2:
 36900  	;
 36901  	if !(TCL_OK != tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+56)) {
 36902  		goto __3
 36903  	}
 36904  	return TCL_ERROR
 36905  __3:
 36906  	;
 36907  	rc = sqlite3.Xsqlite3_create_collation(tls, *(*uintptr)(unsafe.Pointer(bp + 48)), ts+16482, SQLITE_UTF8,
 36908  		uintptr(SQLITE_UTF8), func() uintptr {
 36909  			if *(*int32)(unsafe.Pointer(bp + 56)) != 0 {
 36910  				return *(*uintptr)(unsafe.Pointer(&struct {
 36911  					f func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32
 36912  				}{test_collate_func}))
 36913  			}
 36914  			return uintptr(0)
 36915  		}())
 36916  	if !(rc == SQLITE_OK) {
 36917  		goto __4
 36918  	}
 36919  	if !(TCL_OK != tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+56)) {
 36920  		goto __5
 36921  	}
 36922  	return TCL_ERROR
 36923  __5:
 36924  	;
 36925  	rc = sqlite3.Xsqlite3_create_collation(tls, *(*uintptr)(unsafe.Pointer(bp + 48)), ts+16482, SQLITE_UTF16LE,
 36926  		uintptr(SQLITE_UTF16LE), func() uintptr {
 36927  			if *(*int32)(unsafe.Pointer(bp + 56)) != 0 {
 36928  				return *(*uintptr)(unsafe.Pointer(&struct {
 36929  					f func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32
 36930  				}{test_collate_func}))
 36931  			}
 36932  			return uintptr(0)
 36933  		}())
 36934  	if !(TCL_OK != tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 4*8)), bp+56)) {
 36935  		goto __6
 36936  	}
 36937  	return TCL_ERROR
 36938  __6:
 36939  	;
 36940  	sqlite3.Xsqlite3_mutex_enter(tls, (*sqlite31)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 48)))).Fmutex)
 36941  	pVal = sqlite3.Xsqlite3ValueNew(tls, *(*uintptr)(unsafe.Pointer(bp + 48)))
 36942  	sqlite3.Xsqlite3ValueSetStr(tls, pVal, -1, ts+16482, uint8(SQLITE_UTF8), uintptr(0))
 36943  	zUtf16 = sqlite3.Xsqlite3ValueText(tls, pVal, uint8(SQLITE_UTF16LE))
 36944  	if !((*sqlite31)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 48)))).FmallocFailed != 0) {
 36945  		goto __7
 36946  	}
 36947  	rc = SQLITE_NOMEM
 36948  	goto __8
 36949  __7:
 36950  	rc = sqlite3.Xsqlite3_create_collation16(tls, *(*uintptr)(unsafe.Pointer(bp + 48)), zUtf16, SQLITE_UTF16BE,
 36951  		uintptr(SQLITE_UTF16BE), func() uintptr {
 36952  			if *(*int32)(unsafe.Pointer(bp + 56)) != 0 {
 36953  				return *(*uintptr)(unsafe.Pointer(&struct {
 36954  					f func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32
 36955  				}{test_collate_func}))
 36956  			}
 36957  			return uintptr(0)
 36958  		}())
 36959  __8:
 36960  	;
 36961  	sqlite3.Xsqlite3ValueFree(tls, pVal)
 36962  	sqlite3.Xsqlite3_mutex_leave(tls, (*sqlite31)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 48)))).Fmutex)
 36963  __4:
 36964  	;
 36965  	if !(sqlite3TestErrCode(tls, interp, *(*uintptr)(unsafe.Pointer(bp + 48)), rc) != 0) {
 36966  		goto __9
 36967  	}
 36968  	return TCL_ERROR
 36969  __9:
 36970  	;
 36971  	if !(rc != SQLITE_OK) {
 36972  		goto __10
 36973  	}
 36974  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, sqlite3.Xsqlite3ErrName(tls, rc), 0))
 36975  	return TCL_ERROR
 36976  __10:
 36977  	;
 36978  	return TCL_OK
 36979  
 36980  bad_args:
 36981  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+16, ts+14949,
 36982  		tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+16519, 0))
 36983  	return TCL_ERROR
 36984  }
 36985  
 36986  func test_utf16bin_collate_func(tls *libc.TLS, pCtx uintptr, nA int32, zA uintptr, nB int32, zB uintptr) int32 {
 36987  	var nCmp int32 = func() int32 {
 36988  		if nA > nB {
 36989  			return nB
 36990  		}
 36991  		return nA
 36992  	}()
 36993  	var res int32 = libc.Xmemcmp(tls, zA, zB, uint64(nCmp))
 36994  	if res == 0 {
 36995  		res = nA - nB
 36996  	}
 36997  	return res
 36998  }
 36999  
 37000  func test_utf16bin_collate(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 37001  	bp := tls.Alloc(8)
 37002  	defer tls.Free(8)
 37003  
 37004  	var rc int32
 37005  
 37006  	if !(objc != 2) {
 37007  		goto __1
 37008  	}
 37009  	goto bad_args
 37010  __1:
 37011  	;
 37012  	if !(getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0) {
 37013  		goto __2
 37014  	}
 37015  	return TCL_ERROR
 37016  __2:
 37017  	;
 37018  	rc = sqlite3.Xsqlite3_create_collation(tls, *(*uintptr)(unsafe.Pointer(bp)), ts+16552, SQLITE_UTF16, uintptr(0),
 37019  		*(*uintptr)(unsafe.Pointer(&struct {
 37020  			f func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32
 37021  		}{test_utf16bin_collate_func})))
 37022  	if !(sqlite3TestErrCode(tls, interp, *(*uintptr)(unsafe.Pointer(bp)), rc) != 0) {
 37023  		goto __3
 37024  	}
 37025  	return TCL_ERROR
 37026  __3:
 37027  	;
 37028  	return TCL_OK
 37029  
 37030  bad_args:
 37031  	tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2050)
 37032  	return TCL_ERROR
 37033  }
 37034  
 37035  var zNeededCollation [200]int8
 37036  var pzNeededCollation uintptr = 0
 37037  
 37038  func test_collate_needed_cb(tls *libc.TLS, pCtx uintptr, db uintptr, eTextRep int32, pName uintptr) {
 37039  	var enc int32 = int32((*sqlite31)(unsafe.Pointer(db)).Fenc)
 37040  	var i int32
 37041  	var z uintptr
 37042  	z = pName
 37043  	i = 0
 37044  	for ; *(*int8)(unsafe.Pointer(z)) != 0 || *(*int8)(unsafe.Pointer(z + 1)) != 0; z++ {
 37045  		if *(*int8)(unsafe.Pointer(z)) != 0 {
 37046  			zNeededCollation[libc.PostIncInt32(&i, 1)] = *(*int8)(unsafe.Pointer(z))
 37047  		}
 37048  	}
 37049  	zNeededCollation[i] = int8(0)
 37050  	sqlite3.Xsqlite3_create_collation(tls,
 37051  		db, ts+16482, int32((*sqlite31)(unsafe.Pointer(db)).Fenc), uintptr(intptr_t(enc)), *(*uintptr)(unsafe.Pointer(&struct {
 37052  			f func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32
 37053  		}{test_collate_func})))
 37054  }
 37055  
 37056  func test_collate_needed(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 37057  	bp := tls.Alloc(8)
 37058  	defer tls.Free(8)
 37059  
 37060  	var rc int32
 37061  
 37062  	if !(objc != 2) {
 37063  		goto __1
 37064  	}
 37065  	goto bad_args
 37066  __1:
 37067  	;
 37068  	if !(getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0) {
 37069  		goto __2
 37070  	}
 37071  	return TCL_ERROR
 37072  __2:
 37073  	;
 37074  	rc = sqlite3.Xsqlite3_collation_needed16(tls, *(*uintptr)(unsafe.Pointer(bp)), uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 37075  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr)
 37076  	}{test_collate_needed_cb})))
 37077  	zNeededCollation[0] = int8(0)
 37078  	if !(sqlite3TestErrCode(tls, interp, *(*uintptr)(unsafe.Pointer(bp)), rc) != 0) {
 37079  		goto __3
 37080  	}
 37081  	return TCL_ERROR
 37082  __3:
 37083  	;
 37084  	return TCL_OK
 37085  
 37086  bad_args:
 37087  	tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2050)
 37088  	return TCL_ERROR
 37089  }
 37090  
 37091  var unaligned_string_counter int32 = 0
 37092  
 37093  func alignmentCollFunc(tls *libc.TLS, NotUsed uintptr, nKey1 int32, pKey1 uintptr, nKey2 int32, pKey2 uintptr) int32 {
 37094  	var rc int32
 37095  	var n int32
 37096  	if nKey1 < nKey2 {
 37097  		n = nKey1
 37098  	} else {
 37099  		n = nKey2
 37100  	}
 37101  	if nKey1 > 0 && 1 == 1&int32(pKey1) {
 37102  		unaligned_string_counter++
 37103  	}
 37104  	if nKey2 > 0 && 1 == 1&int32(pKey2) {
 37105  		unaligned_string_counter++
 37106  	}
 37107  	rc = libc.Xmemcmp(tls, pKey1, pKey2, uint64(n))
 37108  	if rc == 0 {
 37109  		rc = nKey1 - nKey2
 37110  	}
 37111  	return rc
 37112  }
 37113  
 37114  func add_alignment_test_collations(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 37115  	bp := tls.Alloc(8)
 37116  	defer tls.Free(8)
 37117  
 37118  	if objc >= 2 {
 37119  		if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 37120  			return TCL_ERROR
 37121  		}
 37122  		sqlite3.Xsqlite3_create_collation(tls, *(*uintptr)(unsafe.Pointer(bp)), ts+16561, SQLITE_UTF16,
 37123  			uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 37124  				f func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32
 37125  			}{alignmentCollFunc})))
 37126  		sqlite3.Xsqlite3_create_collation(tls, *(*uintptr)(unsafe.Pointer(bp)), ts+16577, SQLITE_UTF16_ALIGNED,
 37127  			uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 37128  				f func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32
 37129  			}{alignmentCollFunc})))
 37130  	}
 37131  	return SQLITE_OK
 37132  }
 37133  
 37134  func test_function_utf8(tls *libc.TLS, pCtx uintptr, nArg int32, argv uintptr) {
 37135  	var interp uintptr
 37136  	var pX uintptr
 37137  	var pVal uintptr
 37138  	interp = sqlite3.Xsqlite3_user_data(tls, pCtx)
 37139  	pX = tcl.XTcl_NewStringObj(tls, ts+16591, -1)
 37140  	(*Tcl_Obj)(unsafe.Pointer(pX)).FrefCount++
 37141  	tcl.XTcl_ListObjAppendElement(tls, interp, pX, tcl.XTcl_NewStringObj(tls, ts+16495, -1))
 37142  	tcl.XTcl_ListObjAppendElement(tls, interp, pX,
 37143  		tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv))), -1))
 37144  	tcl.XTcl_EvalObjEx(tls, interp, pX, 0)
 37145  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 37146  		if libc.PreDecInt32(&(*Tcl_Obj)(unsafe.Pointer(pX)).FrefCount, 1) <= 0 {
 37147  			tcl.XTclFreeObj(tls, pX)
 37148  		}
 37149  	}
 37150  	sqlite3.Xsqlite3_result_text(tls, pCtx, tcl.XTcl_GetStringResult(tls, interp), -1, libc.UintptrFromInt32(-1))
 37151  	pVal = sqlite3.Xsqlite3ValueNew(tls, uintptr(0))
 37152  	sqlite3.Xsqlite3ValueSetStr(tls, pVal, -1, tcl.XTcl_GetStringResult(tls, interp),
 37153  		uint8(SQLITE_UTF8), uintptr(0))
 37154  	sqlite3.Xsqlite3_result_text16be(tls, pCtx, sqlite3.Xsqlite3_value_text16be(tls, pVal),
 37155  		-1, libc.UintptrFromInt32(-1))
 37156  	sqlite3.Xsqlite3ValueFree(tls, pVal)
 37157  }
 37158  
 37159  func test_function_utf16le(tls *libc.TLS, pCtx uintptr, nArg int32, argv uintptr) {
 37160  	var interp uintptr
 37161  	var pX uintptr
 37162  	var pVal uintptr
 37163  	interp = sqlite3.Xsqlite3_user_data(tls, pCtx)
 37164  	pX = tcl.XTcl_NewStringObj(tls, ts+16591, -1)
 37165  	(*Tcl_Obj)(unsafe.Pointer(pX)).FrefCount++
 37166  	tcl.XTcl_ListObjAppendElement(tls, interp, pX, tcl.XTcl_NewStringObj(tls, ts+16501, -1))
 37167  	tcl.XTcl_ListObjAppendElement(tls, interp, pX,
 37168  		tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv))), -1))
 37169  	tcl.XTcl_EvalObjEx(tls, interp, pX, 0)
 37170  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 37171  		if libc.PreDecInt32(&(*Tcl_Obj)(unsafe.Pointer(pX)).FrefCount, 1) <= 0 {
 37172  			tcl.XTclFreeObj(tls, pX)
 37173  		}
 37174  	}
 37175  	pVal = sqlite3.Xsqlite3ValueNew(tls, uintptr(0))
 37176  	sqlite3.Xsqlite3ValueSetStr(tls, pVal, -1, tcl.XTcl_GetStringResult(tls, interp),
 37177  		uint8(SQLITE_UTF8), uintptr(0))
 37178  	sqlite3.Xsqlite3_result_text(tls, pCtx, sqlite3.Xsqlite3_value_text(tls, pVal), -1, libc.UintptrFromInt32(-1))
 37179  	sqlite3.Xsqlite3ValueFree(tls, pVal)
 37180  }
 37181  
 37182  func test_function_utf16be(tls *libc.TLS, pCtx uintptr, nArg int32, argv uintptr) {
 37183  	var interp uintptr
 37184  	var pX uintptr
 37185  	var pVal uintptr
 37186  	interp = sqlite3.Xsqlite3_user_data(tls, pCtx)
 37187  	pX = tcl.XTcl_NewStringObj(tls, ts+16591, -1)
 37188  	(*Tcl_Obj)(unsafe.Pointer(pX)).FrefCount++
 37189  	tcl.XTcl_ListObjAppendElement(tls, interp, pX, tcl.XTcl_NewStringObj(tls, ts+16510, -1))
 37190  	tcl.XTcl_ListObjAppendElement(tls, interp, pX,
 37191  		tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv))), -1))
 37192  	tcl.XTcl_EvalObjEx(tls, interp, pX, 0)
 37193  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 37194  		if libc.PreDecInt32(&(*Tcl_Obj)(unsafe.Pointer(pX)).FrefCount, 1) <= 0 {
 37195  			tcl.XTclFreeObj(tls, pX)
 37196  		}
 37197  	}
 37198  	pVal = sqlite3.Xsqlite3ValueNew(tls, uintptr(0))
 37199  	sqlite3.Xsqlite3ValueSetStr(tls, pVal, -1, tcl.XTcl_GetStringResult(tls, interp),
 37200  		uint8(SQLITE_UTF8), uintptr(0))
 37201  	sqlite3.Xsqlite3_result_text16(tls, pCtx, sqlite3.Xsqlite3_value_text16le(tls, pVal),
 37202  		-1, libc.UintptrFromInt32(-1))
 37203  	sqlite3.Xsqlite3_result_text16be(tls, pCtx, sqlite3.Xsqlite3_value_text16le(tls, pVal),
 37204  		-1, libc.UintptrFromInt32(-1))
 37205  	sqlite3.Xsqlite3_result_text16le(tls, pCtx, sqlite3.Xsqlite3_value_text16le(tls, pVal),
 37206  		-1, libc.UintptrFromInt32(-1))
 37207  	sqlite3.Xsqlite3ValueFree(tls, pVal)
 37208  }
 37209  
 37210  func test_function(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 37211  	bp := tls.Alloc(44)
 37212  	defer tls.Free(44)
 37213  
 37214  	if !(objc != 5) {
 37215  		goto __1
 37216  	}
 37217  	goto bad_args
 37218  __1:
 37219  	;
 37220  	if !(getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0) {
 37221  		goto __2
 37222  	}
 37223  	return TCL_ERROR
 37224  __2:
 37225  	;
 37226  	if !(TCL_OK != tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+40)) {
 37227  		goto __3
 37228  	}
 37229  	return TCL_ERROR
 37230  __3:
 37231  	;
 37232  	if !(*(*int32)(unsafe.Pointer(bp + 40)) != 0) {
 37233  		goto __4
 37234  	}
 37235  	sqlite3.Xsqlite3_create_function(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), ts+16591, 1, SQLITE_UTF8,
 37236  		interp, *(*uintptr)(unsafe.Pointer(&struct {
 37237  			f func(*libc.TLS, uintptr, int32, uintptr)
 37238  		}{test_function_utf8})), uintptr(0), uintptr(0))
 37239  __4:
 37240  	;
 37241  	if !(TCL_OK != tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+40)) {
 37242  		goto __5
 37243  	}
 37244  	return TCL_ERROR
 37245  __5:
 37246  	;
 37247  	if !(*(*int32)(unsafe.Pointer(bp + 40)) != 0) {
 37248  		goto __6
 37249  	}
 37250  	sqlite3.Xsqlite3_create_function(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), ts+16591, 1, SQLITE_UTF16LE,
 37251  		interp, *(*uintptr)(unsafe.Pointer(&struct {
 37252  			f func(*libc.TLS, uintptr, int32, uintptr)
 37253  		}{test_function_utf16le})), uintptr(0), uintptr(0))
 37254  __6:
 37255  	;
 37256  	if !(TCL_OK != tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 4*8)), bp+40)) {
 37257  		goto __7
 37258  	}
 37259  	return TCL_ERROR
 37260  __7:
 37261  	;
 37262  	if !(*(*int32)(unsafe.Pointer(bp + 40)) != 0) {
 37263  		goto __8
 37264  	}
 37265  	sqlite3.Xsqlite3_create_function(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), ts+16591, 1, SQLITE_UTF16BE,
 37266  		interp, *(*uintptr)(unsafe.Pointer(&struct {
 37267  			f func(*libc.TLS, uintptr, int32, uintptr)
 37268  		}{test_function_utf16be})), uintptr(0), uintptr(0))
 37269  __8:
 37270  	;
 37271  	return TCL_OK
 37272  bad_args:
 37273  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 37274  		tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+16519, 0))
 37275  	return TCL_ERROR
 37276  }
 37277  
 37278  func test_errstr(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 37279  	var zCode uintptr
 37280  	var i int32
 37281  	if objc != 1 {
 37282  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+16605)
 37283  	}
 37284  
 37285  	zCode = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 37286  	for i = 0; i < 200; i++ {
 37287  		if 0 == libc.Xstrcmp(tls, sqlite3.Xsqlite3ErrName(tls, i), zCode) {
 37288  			break
 37289  		}
 37290  	}
 37291  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrStr(tls, i), uintptr(0))
 37292  	return TCL_OK
 37293  }
 37294  
 37295  func test_breakpoint(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 37296  	return TCL_OK
 37297  }
 37298  
 37299  func test_bind_zeroblob(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 37300  	bp := tls.Alloc(16)
 37301  	defer tls.Free(16)
 37302  
 37303  	var rc int32
 37304  
 37305  	if objc != 4 {
 37306  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+16618)
 37307  		return TCL_ERROR
 37308  	}
 37309  
 37310  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 37311  		return TCL_ERROR
 37312  	}
 37313  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+8) != 0 {
 37314  		return TCL_ERROR
 37315  	}
 37316  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+12) != 0 {
 37317  		return TCL_ERROR
 37318  	}
 37319  
 37320  	rc = sqlite3.Xsqlite3_bind_zeroblob(tls, *(*uintptr)(unsafe.Pointer(bp)), *(*int32)(unsafe.Pointer(bp + 8)), *(*int32)(unsafe.Pointer(bp + 12)))
 37321  	if sqlite3TestErrCode(tls, interp, sqlite3.Xsqlite3_db_handle(tls, *(*uintptr)(unsafe.Pointer(bp))), rc) != 0 {
 37322  		return TCL_ERROR
 37323  	}
 37324  	if rc != SQLITE_OK {
 37325  		return TCL_ERROR
 37326  	}
 37327  
 37328  	return TCL_OK
 37329  }
 37330  
 37331  func test_bind_zeroblob64(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 37332  	bp := tls.Alloc(40)
 37333  	defer tls.Free(40)
 37334  
 37335  	var rc int32
 37336  
 37337  	if objc != 4 {
 37338  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+16618)
 37339  		return TCL_ERROR
 37340  	}
 37341  
 37342  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+16) != 0 {
 37343  		return TCL_ERROR
 37344  	}
 37345  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+24) != 0 {
 37346  		return TCL_ERROR
 37347  	}
 37348  	if tcl.XTcl_GetWideIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+32) != 0 {
 37349  		return TCL_ERROR
 37350  	}
 37351  
 37352  	rc = sqlite3.Xsqlite3_bind_zeroblob64(tls, *(*uintptr)(unsafe.Pointer(bp + 16)), *(*int32)(unsafe.Pointer(bp + 24)), uint64(*(*Tcl_WideInt)(unsafe.Pointer(bp + 32))))
 37353  	if sqlite3TestErrCode(tls, interp, sqlite3.Xsqlite3_db_handle(tls, *(*uintptr)(unsafe.Pointer(bp + 16))), rc) != 0 {
 37354  		return TCL_ERROR
 37355  	}
 37356  	if rc != SQLITE_OK {
 37357  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, sqlite3.Xsqlite3ErrName(tls, rc), 0))
 37358  		return TCL_ERROR
 37359  	}
 37360  
 37361  	return TCL_OK
 37362  }
 37363  
 37364  func test_bind_int(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 37365  	bp := tls.Alloc(48)
 37366  	defer tls.Free(48)
 37367  
 37368  	var rc int32
 37369  
 37370  	if objc != 4 {
 37371  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 37372  			tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+16629, 0))
 37373  		return TCL_ERROR
 37374  	}
 37375  
 37376  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0 {
 37377  		return TCL_ERROR
 37378  	}
 37379  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+40) != 0 {
 37380  		return TCL_ERROR
 37381  	}
 37382  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+44) != 0 {
 37383  		return TCL_ERROR
 37384  	}
 37385  
 37386  	rc = sqlite3.Xsqlite3_bind_int(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), *(*int32)(unsafe.Pointer(bp + 40)), *(*int32)(unsafe.Pointer(bp + 44)))
 37387  	if sqlite3TestErrCode(tls, interp, sqlite3.Xsqlite3_db_handle(tls, *(*uintptr)(unsafe.Pointer(bp + 32))), rc) != 0 {
 37388  		return TCL_ERROR
 37389  	}
 37390  	if rc != SQLITE_OK {
 37391  		return TCL_ERROR
 37392  	}
 37393  
 37394  	return TCL_OK
 37395  }
 37396  
 37397  func test_intarray_addr(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 37398  	var i int32
 37399  
 37400  	sqlite3.Xsqlite3_free(tls, p)
 37401  	p = uintptr(0)
 37402  	if objc > 1 {
 37403  		p = sqlite3.Xsqlite3_malloc(tls, int32(uint64(unsafe.Sizeof(int32(0)))*uint64(objc-1)))
 37404  		if p == uintptr(0) {
 37405  			return TCL_ERROR
 37406  		}
 37407  		for i = 0; i < objc-1; i++ {
 37408  			if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(1+i)*8)), p+uintptr(i)*4) != 0 {
 37409  				sqlite3.Xsqlite3_free(tls, p)
 37410  				p = uintptr(0)
 37411  				return TCL_ERROR
 37412  			}
 37413  		}
 37414  	}
 37415  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewWideIntObj(tls, int64(p)))
 37416  	return TCL_OK
 37417  }
 37418  
 37419  var p uintptr = uintptr(0)
 37420  
 37421  func test_int64array_addr(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 37422  	bp := tls.Alloc(8)
 37423  	defer tls.Free(8)
 37424  
 37425  	var i int32
 37426  
 37427  	sqlite3.Xsqlite3_free(tls, p1)
 37428  	p1 = uintptr(0)
 37429  	if objc > 1 {
 37430  		p1 = sqlite3.Xsqlite3_malloc(tls, int32(uint64(unsafe.Sizeof(sqlite3_int64(0)))*uint64(objc-1)))
 37431  		if p1 == uintptr(0) {
 37432  			return TCL_ERROR
 37433  		}
 37434  		for i = 0; i < objc-1; i++ {
 37435  			if tcl.XTcl_GetWideIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(1+i)*8)), bp) != 0 {
 37436  				sqlite3.Xsqlite3_free(tls, p1)
 37437  				p1 = uintptr(0)
 37438  				return TCL_ERROR
 37439  			}
 37440  			*(*sqlite3_int64)(unsafe.Pointer(p1 + uintptr(i)*8)) = *(*Tcl_WideInt)(unsafe.Pointer(bp))
 37441  		}
 37442  	}
 37443  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewWideIntObj(tls, int64(p1)))
 37444  	return TCL_OK
 37445  }
 37446  
 37447  var p1 uintptr = uintptr(0)
 37448  
 37449  func test_doublearray_addr(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 37450  	var i int32
 37451  
 37452  	sqlite3.Xsqlite3_free(tls, p2)
 37453  	p2 = uintptr(0)
 37454  	if objc > 1 {
 37455  		p2 = sqlite3.Xsqlite3_malloc(tls, int32(uint64(unsafe.Sizeof(float64(0)))*uint64(objc-1)))
 37456  		if p2 == uintptr(0) {
 37457  			return TCL_ERROR
 37458  		}
 37459  		for i = 0; i < objc-1; i++ {
 37460  			if tcl.XTcl_GetDoubleFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(1+i)*8)), p2+uintptr(i)*8) != 0 {
 37461  				sqlite3.Xsqlite3_free(tls, p2)
 37462  				p2 = uintptr(0)
 37463  				return TCL_ERROR
 37464  			}
 37465  		}
 37466  	}
 37467  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewWideIntObj(tls, int64(p2)))
 37468  	return TCL_OK
 37469  }
 37470  
 37471  var p2 uintptr = uintptr(0)
 37472  
 37473  func test_textarray_addr(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 37474  	bp := tls.Alloc(8)
 37475  	defer tls.Free(8)
 37476  
 37477  	var i int32
 37478  
 37479  	for i = 0; i < n; i++ {
 37480  		sqlite3.Xsqlite3_free(tls, *(*uintptr)(unsafe.Pointer(p3 + uintptr(i)*8)))
 37481  	}
 37482  	sqlite3.Xsqlite3_free(tls, p3)
 37483  	p3 = uintptr(0)
 37484  	if objc > 1 {
 37485  		p3 = sqlite3.Xsqlite3_malloc(tls, int32(uint64(unsafe.Sizeof(uintptr(0)))*uint64(objc-1)))
 37486  		if p3 == uintptr(0) {
 37487  			return TCL_ERROR
 37488  		}
 37489  		for i = 0; i < objc-1; i++ {
 37490  			*(*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)))))
 37491  		}
 37492  	}
 37493  	n = objc - 1
 37494  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewWideIntObj(tls, int64(p3)))
 37495  	return TCL_OK
 37496  }
 37497  
 37498  var n int32 = 0
 37499  var p3 uintptr = uintptr(0)
 37500  
 37501  func test_bind_int64(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 37502  	bp := tls.Alloc(56)
 37503  	defer tls.Free(56)
 37504  
 37505  	var rc int32
 37506  
 37507  	if objc != 4 {
 37508  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 37509  			tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+16629, 0))
 37510  		return TCL_ERROR
 37511  	}
 37512  
 37513  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0 {
 37514  		return TCL_ERROR
 37515  	}
 37516  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+40) != 0 {
 37517  		return TCL_ERROR
 37518  	}
 37519  	if tcl.XTcl_GetWideIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+48) != 0 {
 37520  		return TCL_ERROR
 37521  	}
 37522  
 37523  	rc = sqlite3.Xsqlite3_bind_int64(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), *(*int32)(unsafe.Pointer(bp + 40)), *(*Tcl_WideInt)(unsafe.Pointer(bp + 48)))
 37524  	if sqlite3TestErrCode(tls, interp, sqlite3.Xsqlite3_db_handle(tls, *(*uintptr)(unsafe.Pointer(bp + 32))), rc) != 0 {
 37525  		return TCL_ERROR
 37526  	}
 37527  	if rc != SQLITE_OK {
 37528  		return TCL_ERROR
 37529  	}
 37530  
 37531  	return TCL_OK
 37532  }
 37533  
 37534  func test_bind_double(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 37535  	bp := tls.Alloc(64)
 37536  	defer tls.Free(64)
 37537  
 37538  	*(*float64)(unsafe.Pointer(bp + 48)) = float64(0)
 37539  	var rc int32
 37540  	var zVal uintptr
 37541  	var i int32
 37542  
 37543  	if objc != 4 {
 37544  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 37545  			tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+16629, 0))
 37546  		return TCL_ERROR
 37547  	}
 37548  
 37549  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0 {
 37550  		return TCL_ERROR
 37551  	}
 37552  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+40) != 0 {
 37553  		return TCL_ERROR
 37554  	}
 37555  
 37556  	zVal = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)))
 37557  	for i = 0; uint64(i) < uint64(unsafe.Sizeof(aSpecialFp))/uint64(unsafe.Sizeof(struct {
 37558  		FzName  uintptr
 37559  		FiUpper uint32
 37560  		FiLower uint32
 37561  	}{})); i++ {
 37562  		if libc.Xstrcmp(tls, aSpecialFp[i].FzName, zVal) == 0 {
 37563  			*(*sqlite3_uint64)(unsafe.Pointer(bp + 56)) = sqlite3_uint64(aSpecialFp[i].FiUpper)
 37564  			*(*sqlite3_uint64)(unsafe.Pointer(bp + 56)) <<= 32
 37565  			*(*sqlite3_uint64)(unsafe.Pointer(bp + 56)) |= sqlite3_uint64(aSpecialFp[i].FiLower)
 37566  
 37567  			libc.X__builtin___memcpy_chk(tls, bp+48, bp+56, uint64(8), libc.X__builtin_object_size(tls, bp+48, 0))
 37568  			break
 37569  		}
 37570  	}
 37571  	if uint64(i) >= uint64(unsafe.Sizeof(aSpecialFp))/uint64(unsafe.Sizeof(struct {
 37572  		FzName  uintptr
 37573  		FiUpper uint32
 37574  		FiLower uint32
 37575  	}{})) && tcl.XTcl_GetDoubleFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+48) != 0 {
 37576  		return TCL_ERROR
 37577  	}
 37578  	rc = sqlite3.Xsqlite3_bind_double(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), *(*int32)(unsafe.Pointer(bp + 40)), *(*float64)(unsafe.Pointer(bp + 48)))
 37579  	if sqlite3TestErrCode(tls, interp, sqlite3.Xsqlite3_db_handle(tls, *(*uintptr)(unsafe.Pointer(bp + 32))), rc) != 0 {
 37580  		return TCL_ERROR
 37581  	}
 37582  	if rc != SQLITE_OK {
 37583  		return TCL_ERROR
 37584  	}
 37585  
 37586  	return TCL_OK
 37587  }
 37588  
 37589  var aSpecialFp = [10]struct {
 37590  	FzName  uintptr
 37591  	FiUpper uint32
 37592  	FiLower uint32
 37593  }{
 37594  	{FzName: ts + 16643, FiUpper: uint32(0x7fffffff), FiLower: 0xffffffff},
 37595  	{FzName: ts + 16647, FiUpper: uint32(0x7ff7ffff), FiLower: 0xffffffff},
 37596  	{FzName: ts + 16652, FiUpper: 0xffffffff, FiLower: 0xffffffff},
 37597  	{FzName: ts + 16657, FiUpper: 0xfff7ffff, FiLower: 0xffffffff},
 37598  	{FzName: ts + 16663, FiUpper: uint32(0x7ff00000)},
 37599  	{FzName: ts + 16668, FiUpper: 0xfff00000},
 37600  	{FzName: ts + 16673, FiLower: uint32(0x00000001)},
 37601  	{FzName: ts + 16681, FiUpper: 0x80000000, FiLower: uint32(0x00000001)},
 37602  	{FzName: ts + 16690, FiUpper: uint32(0x7ff80000)},
 37603  	{FzName: ts + 16695, FiUpper: 0xfff80000},
 37604  }
 37605  
 37606  func test_bind_null(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 37607  	bp := tls.Alloc(44)
 37608  	defer tls.Free(44)
 37609  
 37610  	var rc int32
 37611  
 37612  	if objc != 3 {
 37613  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 37614  			tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+16701, 0))
 37615  		return TCL_ERROR
 37616  	}
 37617  
 37618  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0 {
 37619  		return TCL_ERROR
 37620  	}
 37621  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+40) != 0 {
 37622  		return TCL_ERROR
 37623  	}
 37624  
 37625  	rc = sqlite3.Xsqlite3_bind_null(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), *(*int32)(unsafe.Pointer(bp + 40)))
 37626  	if sqlite3TestErrCode(tls, interp, sqlite3.Xsqlite3_db_handle(tls, *(*uintptr)(unsafe.Pointer(bp + 32))), rc) != 0 {
 37627  		return TCL_ERROR
 37628  	}
 37629  	if rc != SQLITE_OK {
 37630  		return TCL_ERROR
 37631  	}
 37632  
 37633  	return TCL_OK
 37634  }
 37635  
 37636  func test_bind_text(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 37637  	bp := tls.Alloc(84)
 37638  	defer tls.Free(84)
 37639  
 37640  	*(*int32)(unsafe.Pointer(bp + 76)) = 0
 37641  
 37642  	var value uintptr
 37643  	var rc int32
 37644  	var toFree uintptr = uintptr(0)
 37645  
 37646  	if objc != 5 {
 37647  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 37648  			tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+16709, 0))
 37649  		return TCL_ERROR
 37650  	}
 37651  
 37652  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+64) != 0 {
 37653  		return TCL_ERROR
 37654  	}
 37655  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+72) != 0 {
 37656  		return TCL_ERROR
 37657  	}
 37658  	value = tcl.XTcl_GetByteArrayFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+76)
 37659  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 4*8)), bp+80) != 0 {
 37660  		return TCL_ERROR
 37661  	}
 37662  	if *(*int32)(unsafe.Pointer(bp + 80)) < 0 {
 37663  		toFree = libc.Xmalloc(tls, uint64(*(*int32)(unsafe.Pointer(bp + 76))+1))
 37664  		if toFree == uintptr(0) {
 37665  			tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+2069, uintptr(0)))
 37666  			return TCL_ERROR
 37667  		}
 37668  		libc.X__builtin___memcpy_chk(tls, toFree, value, uint64(*(*int32)(unsafe.Pointer(bp + 76))), libc.X__builtin_object_size(tls, toFree, 0))
 37669  		*(*int8)(unsafe.Pointer(toFree + uintptr(*(*int32)(unsafe.Pointer(bp + 76))))) = int8(0)
 37670  		value = toFree
 37671  	}
 37672  	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))
 37673  	libc.Xfree(tls, toFree)
 37674  	if sqlite3TestErrCode(tls, interp, sqlite3.Xsqlite3_db_handle(tls, *(*uintptr)(unsafe.Pointer(bp + 64))), rc) != 0 {
 37675  		return TCL_ERROR
 37676  	}
 37677  	if rc != SQLITE_OK {
 37678  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+48, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0)))
 37679  		return TCL_ERROR
 37680  	}
 37681  
 37682  	return TCL_OK
 37683  }
 37684  
 37685  func test_bind_text16(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 37686  	bp := tls.Alloc(84)
 37687  	defer tls.Free(84)
 37688  
 37689  	var value uintptr
 37690  	var toFree uintptr = uintptr(0)
 37691  	var rc int32
 37692  	*(*int32)(unsafe.Pointer(bp + 76)) = 0
 37693  
 37694  	var xDel uintptr = func() uintptr {
 37695  		if objc == 6 {
 37696  			return uintptr(0)
 37697  		}
 37698  		return libc.UintptrFromInt32(-1)
 37699  	}()
 37700  	var oStmt uintptr = *(*uintptr)(unsafe.Pointer(objv + uintptr(objc-4)*8))
 37701  	var oN uintptr = *(*uintptr)(unsafe.Pointer(objv + uintptr(objc-3)*8))
 37702  	var oString uintptr = *(*uintptr)(unsafe.Pointer(objv + uintptr(objc-2)*8))
 37703  	var oBytes uintptr = *(*uintptr)(unsafe.Pointer(objv + uintptr(objc-1)*8))
 37704  
 37705  	if objc != 5 && objc != 6 {
 37706  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 37707  			tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+16709, 0))
 37708  		return TCL_ERROR
 37709  	}
 37710  
 37711  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, oStmt), bp+64) != 0 {
 37712  		return TCL_ERROR
 37713  	}
 37714  	if tcl.XTcl_GetIntFromObj(tls, interp, oN, bp+72) != 0 {
 37715  		return TCL_ERROR
 37716  	}
 37717  	value = tcl.XTcl_GetByteArrayFromObj(tls, oString, bp+76)
 37718  	if tcl.XTcl_GetIntFromObj(tls, interp, oBytes, bp+80) != 0 {
 37719  		return TCL_ERROR
 37720  	}
 37721  	if *(*int32)(unsafe.Pointer(bp + 80)) < 0 && xDel == libc.UintptrFromInt32(-1) {
 37722  		toFree = libc.Xmalloc(tls, uint64(*(*int32)(unsafe.Pointer(bp + 76))+3))
 37723  		if toFree == uintptr(0) {
 37724  			tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+2069, uintptr(0)))
 37725  			return TCL_ERROR
 37726  		}
 37727  		libc.X__builtin___memcpy_chk(tls, toFree, value, uint64(*(*int32)(unsafe.Pointer(bp + 76))), libc.X__builtin_object_size(tls, toFree, 0))
 37728  		libc.X__builtin___memset_chk(tls, toFree+uintptr(*(*int32)(unsafe.Pointer(bp + 76))), 0, uint64(3), libc.X__builtin_object_size(tls, toFree+uintptr(*(*int32)(unsafe.Pointer(bp + 76))), 0))
 37729  		value = toFree
 37730  	}
 37731  	rc = sqlite3.Xsqlite3_bind_text16(tls, *(*uintptr)(unsafe.Pointer(bp + 64)), *(*int32)(unsafe.Pointer(bp + 72)), value, *(*int32)(unsafe.Pointer(bp + 80)), xDel)
 37732  	libc.Xfree(tls, toFree)
 37733  	if sqlite3TestErrCode(tls, interp, sqlite3.Xsqlite3_db_handle(tls, *(*uintptr)(unsafe.Pointer(bp + 64))), rc) != 0 {
 37734  		return TCL_ERROR
 37735  	}
 37736  	if rc != SQLITE_OK {
 37737  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+48, sqlite3.Xsqlite3ErrName(tls, rc), 0))
 37738  		return TCL_ERROR
 37739  	}
 37740  
 37741  	return TCL_OK
 37742  }
 37743  
 37744  func test_bind_blob(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 37745  	bp := tls.Alloc(284)
 37746  	defer tls.Free(284)
 37747  
 37748  	var value uintptr
 37749  	var rc int32
 37750  	var xDestructor sqlite3_destructor_type = libc.UintptrFromInt32(-1)
 37751  
 37752  	if objc != 5 && objc != 6 {
 37753  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 37754  			tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+16729, 0))
 37755  		return TCL_ERROR
 37756  	}
 37757  
 37758  	if objc == 6 {
 37759  		xDestructor = uintptr(0)
 37760  		objv += 8
 37761  	}
 37762  
 37763  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+64) != 0 {
 37764  		return TCL_ERROR
 37765  	}
 37766  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+72) != 0 {
 37767  		return TCL_ERROR
 37768  	}
 37769  
 37770  	value = tcl.XTcl_GetByteArrayFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+76)
 37771  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 4*8)), bp+80) != 0 {
 37772  		return TCL_ERROR
 37773  	}
 37774  
 37775  	if *(*int32)(unsafe.Pointer(bp + 80)) > *(*int32)(unsafe.Pointer(bp + 76)) {
 37776  		sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([200]int8{})), bp+84,
 37777  			ts+16748, libc.VaList(bp+32, *(*int32)(unsafe.Pointer(bp + 80)), *(*int32)(unsafe.Pointer(bp + 76))))
 37778  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+48, bp+84, uintptr(0)))
 37779  		return TCL_ERROR
 37780  	}
 37781  
 37782  	rc = sqlite3.Xsqlite3_bind_blob(tls, *(*uintptr)(unsafe.Pointer(bp + 64)), *(*int32)(unsafe.Pointer(bp + 72)), value, *(*int32)(unsafe.Pointer(bp + 80)), xDestructor)
 37783  	if sqlite3TestErrCode(tls, interp, sqlite3.Xsqlite3_db_handle(tls, *(*uintptr)(unsafe.Pointer(bp + 64))), rc) != 0 {
 37784  		return TCL_ERROR
 37785  	}
 37786  	if rc != SQLITE_OK {
 37787  		return TCL_ERROR
 37788  	}
 37789  
 37790  	return TCL_OK
 37791  }
 37792  
 37793  func test_bind_value_from_preupdate(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 37794  	bp := tls.Alloc(48)
 37795  	defer tls.Free(48)
 37796  
 37797  	var z3 uintptr = uintptr(0)
 37798  	var db uintptr = uintptr(0)
 37799  	*(*uintptr)(unsafe.Pointer(bp + 40)) = uintptr(0)
 37800  
 37801  	if objc != 5 {
 37802  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+16782)
 37803  		return TCL_ERROR
 37804  	}
 37805  
 37806  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+24) != 0 {
 37807  		return TCL_ERROR
 37808  	}
 37809  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+32) != 0 {
 37810  		return TCL_ERROR
 37811  	}
 37812  	z3 = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)))
 37813  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 4*8)), bp+36) != 0 {
 37814  		return TCL_ERROR
 37815  	}
 37816  	db = sqlite3.Xsqlite3_db_handle(tls, *(*uintptr)(unsafe.Pointer(bp + 24)))
 37817  
 37818  	if int32(*(*int8)(unsafe.Pointer(z3))) == 'n' {
 37819  		sqlite3.Xsqlite3_preupdate_new(tls, db, *(*int32)(unsafe.Pointer(bp + 36)), bp+40)
 37820  	} else if int32(*(*int8)(unsafe.Pointer(z3))) == 'o' {
 37821  		sqlite3.Xsqlite3_preupdate_old(tls, db, *(*int32)(unsafe.Pointer(bp + 36)), bp+40)
 37822  	} else {
 37823  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+16801, z3, uintptr(0)))
 37824  		return TCL_ERROR
 37825  	}
 37826  	sqlite3.Xsqlite3_bind_value(tls, *(*uintptr)(unsafe.Pointer(bp + 24)), *(*int32)(unsafe.Pointer(bp + 32)), *(*uintptr)(unsafe.Pointer(bp + 40)))
 37827  
 37828  	return TCL_OK
 37829  }
 37830  
 37831  func test_bind_value_from_select(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 37832  	bp := tls.Alloc(72)
 37833  	defer tls.Free(72)
 37834  
 37835  	var zSql uintptr = uintptr(0)
 37836  	var db uintptr = uintptr(0)
 37837  	var rc int32 = SQLITE_OK
 37838  
 37839  	if objc != 4 {
 37840  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+16828)
 37841  		return TCL_ERROR
 37842  	}
 37843  
 37844  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+48) != 0 {
 37845  		return TCL_ERROR
 37846  	}
 37847  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+56) != 0 {
 37848  		return TCL_ERROR
 37849  	}
 37850  	zSql = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)))
 37851  	db = sqlite3.Xsqlite3_db_handle(tls, *(*uintptr)(unsafe.Pointer(bp + 48)))
 37852  
 37853  	rc = sqlite3.Xsqlite3_prepare_v2(tls, db, zSql, -1, bp+64, uintptr(0))
 37854  	if rc != SQLITE_OK {
 37855  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+16842, sqlite3.Xsqlite3_errmsg(tls, db), uintptr(0)))
 37856  		return TCL_ERROR
 37857  	}
 37858  	if sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp + 64))) == SQLITE_ROW {
 37859  		var pVal uintptr = sqlite3.Xsqlite3_column_value(tls, *(*uintptr)(unsafe.Pointer(bp + 64)), 0)
 37860  		sqlite3.Xsqlite3_bind_value(tls, *(*uintptr)(unsafe.Pointer(bp + 48)), *(*int32)(unsafe.Pointer(bp + 56)), pVal)
 37861  	}
 37862  	rc = sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 64)))
 37863  	if rc != SQLITE_OK {
 37864  		tcl.XTcl_AppendResult(tls, interp,
 37865  			libc.VaList(bp+24, ts+16857, sqlite3.Xsqlite3_errmsg(tls, db), uintptr(0)))
 37866  		return TCL_ERROR
 37867  	}
 37868  
 37869  	return TCL_OK
 37870  }
 37871  
 37872  func test_carray_bind(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 37873  	bp := tls.Alloc(112)
 37874  	defer tls.Free(112)
 37875  
 37876  	var eType int32
 37877  	var nData int32
 37878  	var aData uintptr
 37879  	var isTransient int32
 37880  	var isStatic int32
 37881  
 37882  	var i int32
 37883  	var j int32
 37884  	var rc int32
 37885  	var xDel uintptr
 37886  	var z uintptr
 37887  
 37888  	var a uintptr
 37889  
 37890  	var a1 uintptr
 37891  
 37892  	var a2 uintptr
 37893  	var v3 uintptr
 37894  	var a3 uintptr
 37895  	eType = 0
 37896  	nData = 0
 37897  	aData = uintptr(0)
 37898  	isTransient = 0
 37899  	isStatic = 0
 37900  	xDel = *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{sqlite3.Xsqlite3_free}))
 37901  
 37902  	if !(aStaticData != 0) {
 37903  		goto __1
 37904  	}
 37905  
 37906  	if !(eStaticType == 3) {
 37907  		goto __2
 37908  	}
 37909  	i = 0
 37910  __3:
 37911  	if !(i < nStaticData) {
 37912  		goto __5
 37913  	}
 37914  	sqlite3.Xsqlite3_free(tls, *(*uintptr)(unsafe.Pointer(aStaticData + uintptr(i)*8)))
 37915  	goto __4
 37916  __4:
 37917  	i++
 37918  	goto __3
 37919  	goto __5
 37920  __5:
 37921  	;
 37922  __2:
 37923  	;
 37924  	sqlite3.Xsqlite3_free(tls, aStaticData)
 37925  	aStaticData = uintptr(0)
 37926  	nStaticData = 0
 37927  	eStaticType = 0
 37928  __1:
 37929  	;
 37930  	if !(objc == 1) {
 37931  		goto __6
 37932  	}
 37933  	return TCL_OK
 37934  __6:
 37935  	;
 37936  	i = 1
 37937  __7:
 37938  	if !(i < objc && int32(*(*int8)(unsafe.Pointer(tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(i)*8)))))) == '-') {
 37939  		goto __9
 37940  	}
 37941  	z = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(i)*8)))
 37942  	if !(libc.Xstrcmp(tls, z, ts+16878) == 0) {
 37943  		goto __10
 37944  	}
 37945  	isTransient = 1
 37946  	xDel = libc.UintptrFromInt32(-1)
 37947  	goto __11
 37948  __10:
 37949  	if !(libc.Xstrcmp(tls, z, ts+16889) == 0) {
 37950  		goto __12
 37951  	}
 37952  	isStatic = 1
 37953  	xDel = uintptr(0)
 37954  	goto __13
 37955  __12:
 37956  	if !(libc.Xstrcmp(tls, z, ts+16897) == 0) {
 37957  		goto __14
 37958  	}
 37959  	eType = 0
 37960  	goto __15
 37961  __14:
 37962  	if !(libc.Xstrcmp(tls, z, ts+16904) == 0) {
 37963  		goto __16
 37964  	}
 37965  	eType = 1
 37966  	goto __17
 37967  __16:
 37968  	if !(libc.Xstrcmp(tls, z, ts+16911) == 0) {
 37969  		goto __18
 37970  	}
 37971  	eType = 2
 37972  	goto __19
 37973  __18:
 37974  	if !(libc.Xstrcmp(tls, z, ts+16919) == 0) {
 37975  		goto __20
 37976  	}
 37977  	eType = 3
 37978  	goto __21
 37979  __20:
 37980  	if !(libc.Xstrcmp(tls, z, ts+16925) == 0) {
 37981  		goto __22
 37982  	}
 37983  	goto __9
 37984  	goto __23
 37985  __22:
 37986  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+12444, z, uintptr(0)))
 37987  	return TCL_ERROR
 37988  __23:
 37989  	;
 37990  __21:
 37991  	;
 37992  __19:
 37993  	;
 37994  __17:
 37995  	;
 37996  __15:
 37997  	;
 37998  __13:
 37999  	;
 38000  __11:
 38001  	;
 38002  	goto __8
 38003  __8:
 38004  	i++
 38005  	goto __7
 38006  	goto __9
 38007  __9:
 38008  	;
 38009  	if !(eType == 3 && !(isStatic != 0) && !(isTransient != 0)) {
 38010  		goto __24
 38011  	}
 38012  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+24, ts+16928,
 38013  		uintptr(0)))
 38014  	return TCL_ERROR
 38015  __24:
 38016  	;
 38017  	if !(isStatic != 0 && isTransient != 0) {
 38018  		goto __25
 38019  	}
 38020  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+40, ts+16975,
 38021  		uintptr(0)))
 38022  	return TCL_ERROR
 38023  __25:
 38024  	;
 38025  	if !(objc-i < 2) {
 38026  		goto __26
 38027  	}
 38028  	tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+17013)
 38029  	return TCL_ERROR
 38030  __26:
 38031  	;
 38032  	if !(getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(i)*8))), bp+80) != 0) {
 38033  		goto __27
 38034  	}
 38035  	return TCL_ERROR
 38036  __27:
 38037  	;
 38038  	i++
 38039  	if !(tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(i)*8)), bp+88) != 0) {
 38040  		goto __28
 38041  	}
 38042  	return TCL_ERROR
 38043  __28:
 38044  	;
 38045  	i++
 38046  	nData = objc - i
 38047  	switch eType + 4*libc.Bool32(nData <= 0) {
 38048  	case 0:
 38049  		goto __30
 38050  	case 1:
 38051  		goto __31
 38052  	case 2:
 38053  		goto __32
 38054  	case 3:
 38055  		goto __33
 38056  	case 4:
 38057  		goto __34
 38058  	}
 38059  	goto __29
 38060  __30:
 38061  	a = sqlite3.Xsqlite3_malloc(tls, int32(uint64(unsafe.Sizeof(int32(0)))*uint64(nData)))
 38062  	if !(a == uintptr(0)) {
 38063  		goto __35
 38064  	}
 38065  	rc = SQLITE_NOMEM
 38066  	goto carray_bind_done
 38067  __35:
 38068  	;
 38069  	j = 0
 38070  __36:
 38071  	if !(j < nData) {
 38072  		goto __38
 38073  	}
 38074  	if !(tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(i+j)*8)), bp+92) != 0) {
 38075  		goto __39
 38076  	}
 38077  	sqlite3.Xsqlite3_free(tls, a)
 38078  	return TCL_ERROR
 38079  __39:
 38080  	;
 38081  	*(*int32)(unsafe.Pointer(a + uintptr(j)*4)) = *(*int32)(unsafe.Pointer(bp + 92))
 38082  	goto __37
 38083  __37:
 38084  	j++
 38085  	goto __36
 38086  	goto __38
 38087  __38:
 38088  	;
 38089  	aData = a
 38090  	goto __29
 38091  
 38092  __31:
 38093  	a1 = sqlite3.Xsqlite3_malloc(tls, int32(uint64(unsafe.Sizeof(sqlite3_int64(0)))*uint64(nData)))
 38094  	if !(a1 == uintptr(0)) {
 38095  		goto __40
 38096  	}
 38097  	rc = SQLITE_NOMEM
 38098  	goto carray_bind_done
 38099  __40:
 38100  	;
 38101  	j = 0
 38102  __41:
 38103  	if !(j < nData) {
 38104  		goto __43
 38105  	}
 38106  	if !(tcl.XTcl_GetWideIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(i+j)*8)), bp+96) != 0) {
 38107  		goto __44
 38108  	}
 38109  	sqlite3.Xsqlite3_free(tls, a1)
 38110  	return TCL_ERROR
 38111  __44:
 38112  	;
 38113  	*(*sqlite3_int64)(unsafe.Pointer(a1 + uintptr(j)*8)) = *(*Tcl_WideInt)(unsafe.Pointer(bp + 96))
 38114  	goto __42
 38115  __42:
 38116  	j++
 38117  	goto __41
 38118  	goto __43
 38119  __43:
 38120  	;
 38121  	aData = a1
 38122  	goto __29
 38123  
 38124  __32:
 38125  	a2 = sqlite3.Xsqlite3_malloc(tls, int32(uint64(unsafe.Sizeof(float64(0)))*uint64(nData)))
 38126  	if !(a2 == uintptr(0)) {
 38127  		goto __45
 38128  	}
 38129  	rc = SQLITE_NOMEM
 38130  	goto carray_bind_done
 38131  __45:
 38132  	;
 38133  	j = 0
 38134  __46:
 38135  	if !(j < nData) {
 38136  		goto __48
 38137  	}
 38138  	if !(tcl.XTcl_GetDoubleFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(i+j)*8)), bp+104) != 0) {
 38139  		goto __49
 38140  	}
 38141  	sqlite3.Xsqlite3_free(tls, a2)
 38142  	return TCL_ERROR
 38143  __49:
 38144  	;
 38145  	*(*float64)(unsafe.Pointer(a2 + uintptr(j)*8)) = *(*float64)(unsafe.Pointer(bp + 104))
 38146  	goto __47
 38147  __47:
 38148  	j++
 38149  	goto __46
 38150  	goto __48
 38151  __48:
 38152  	;
 38153  	aData = a2
 38154  	goto __29
 38155  
 38156  __33:
 38157  	a3 = sqlite3.Xsqlite3_malloc(tls, int32(uint64(unsafe.Sizeof(uintptr(0)))*uint64(nData)))
 38158  	if !(a3 == uintptr(0)) {
 38159  		goto __50
 38160  	}
 38161  	rc = SQLITE_NOMEM
 38162  	goto carray_bind_done
 38163  __50:
 38164  	;
 38165  	j = 0
 38166  __51:
 38167  	if !(j < nData) {
 38168  		goto __53
 38169  	}
 38170  	v3 = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(i+j)*8)))
 38171  	*(*uintptr)(unsafe.Pointer(a3 + uintptr(j)*8)) = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp+56, v3))
 38172  	goto __52
 38173  __52:
 38174  	j++
 38175  	goto __51
 38176  	goto __53
 38177  __53:
 38178  	;
 38179  	aData = a3
 38180  	goto __29
 38181  
 38182  __34:
 38183  	aData = ts + 584
 38184  	xDel = uintptr(0)
 38185  	isTransient = 0
 38186  	isStatic = 0
 38187  	goto __29
 38188  
 38189  __29:
 38190  	;
 38191  	if !(isStatic != 0) {
 38192  		goto __54
 38193  	}
 38194  	aStaticData = aData
 38195  	nStaticData = nData
 38196  	eStaticType = eType
 38197  __54:
 38198  	;
 38199  	rc = sqlite3_carray_bind(tls, *(*uintptr)(unsafe.Pointer(bp + 80)), *(*int32)(unsafe.Pointer(bp + 88)), aData, nData, eType, xDel)
 38200  	if !(isTransient != 0) {
 38201  		goto __55
 38202  	}
 38203  	if !(eType == 3) {
 38204  		goto __56
 38205  	}
 38206  	i = 0
 38207  __57:
 38208  	if !(i < nData) {
 38209  		goto __59
 38210  	}
 38211  	sqlite3.Xsqlite3_free(tls, *(*uintptr)(unsafe.Pointer(aData + uintptr(i)*8)))
 38212  	goto __58
 38213  __58:
 38214  	i++
 38215  	goto __57
 38216  	goto __59
 38217  __59:
 38218  	;
 38219  __56:
 38220  	;
 38221  	sqlite3.Xsqlite3_free(tls, aData)
 38222  __55:
 38223  	;
 38224  carray_bind_done:
 38225  	if !(rc != 0) {
 38226  		goto __60
 38227  	}
 38228  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+64, sqlite3.Xsqlite3_errstr(tls, rc), uintptr(0)))
 38229  	return TCL_ERROR
 38230  __60:
 38231  	;
 38232  	return TCL_OK
 38233  }
 38234  
 38235  var aStaticData uintptr = uintptr(0)
 38236  var nStaticData int32 = 0
 38237  var eStaticType int32 = 0
 38238  
 38239  func test_bind_parameter_count(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 38240  	bp := tls.Alloc(8)
 38241  	defer tls.Free(8)
 38242  
 38243  	if objc != 2 {
 38244  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+17042)
 38245  		return TCL_ERROR
 38246  	}
 38247  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 38248  		return TCL_ERROR
 38249  	}
 38250  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, sqlite3.Xsqlite3_bind_parameter_count(tls, *(*uintptr)(unsafe.Pointer(bp)))))
 38251  	return TCL_OK
 38252  }
 38253  
 38254  func test_bind_parameter_name(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 38255  	bp := tls.Alloc(12)
 38256  	defer tls.Free(12)
 38257  
 38258  	if objc != 3 {
 38259  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+17047)
 38260  		return TCL_ERROR
 38261  	}
 38262  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 38263  		return TCL_ERROR
 38264  	}
 38265  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+8) != 0 {
 38266  		return TCL_ERROR
 38267  	}
 38268  	tcl.XTcl_SetObjResult(tls, interp,
 38269  		tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3_bind_parameter_name(tls, *(*uintptr)(unsafe.Pointer(bp)), *(*int32)(unsafe.Pointer(bp + 8))), -1))
 38270  	return TCL_OK
 38271  }
 38272  
 38273  func test_bind_parameter_index(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 38274  	bp := tls.Alloc(8)
 38275  	defer tls.Free(8)
 38276  
 38277  	if objc != 3 {
 38278  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+17054)
 38279  		return TCL_ERROR
 38280  	}
 38281  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 38282  		return TCL_ERROR
 38283  	}
 38284  	tcl.XTcl_SetObjResult(tls, interp,
 38285  		tcl.XTcl_NewIntObj(tls,
 38286  			sqlite3.Xsqlite3_bind_parameter_index(tls, *(*uintptr)(unsafe.Pointer(bp)), tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8))))))
 38287  	return TCL_OK
 38288  }
 38289  
 38290  func test_clear_bindings(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 38291  	bp := tls.Alloc(8)
 38292  	defer tls.Free(8)
 38293  
 38294  	if objc != 2 {
 38295  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+17042)
 38296  		return TCL_ERROR
 38297  	}
 38298  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 38299  		return TCL_ERROR
 38300  	}
 38301  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, sqlite3.Xsqlite3_clear_bindings(tls, *(*uintptr)(unsafe.Pointer(bp)))))
 38302  	return TCL_OK
 38303  }
 38304  
 38305  func test_sleep(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 38306  	bp := tls.Alloc(4)
 38307  	defer tls.Free(4)
 38308  
 38309  	if objc != 2 {
 38310  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+13117)
 38311  		return TCL_ERROR
 38312  	}
 38313  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp) != 0 {
 38314  		return TCL_ERROR
 38315  	}
 38316  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, sqlite3.Xsqlite3_sleep(tls, *(*int32)(unsafe.Pointer(bp)))))
 38317  	return TCL_OK
 38318  }
 38319  
 38320  func test_ex_errcode(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 38321  	bp := tls.Alloc(56)
 38322  	defer tls.Free(56)
 38323  
 38324  	var rc int32
 38325  
 38326  	if objc != 2 {
 38327  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 38328  			tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))), ts+15001, 0))
 38329  		return TCL_ERROR
 38330  	}
 38331  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+48) != 0 {
 38332  		return TCL_ERROR
 38333  	}
 38334  	rc = sqlite3.Xsqlite3_extended_errcode(tls, *(*uintptr)(unsafe.Pointer(bp + 48)))
 38335  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, sqlite3.Xsqlite3ErrName(tls, rc), 0))
 38336  	return TCL_OK
 38337  }
 38338  
 38339  func test_errcode(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 38340  	bp := tls.Alloc(56)
 38341  	defer tls.Free(56)
 38342  
 38343  	var rc int32
 38344  
 38345  	if objc != 2 {
 38346  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 38347  			tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))), ts+15001, 0))
 38348  		return TCL_ERROR
 38349  	}
 38350  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+48) != 0 {
 38351  		return TCL_ERROR
 38352  	}
 38353  	rc = sqlite3.Xsqlite3_errcode(tls, *(*uintptr)(unsafe.Pointer(bp + 48)))
 38354  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, sqlite3.Xsqlite3ErrName(tls, rc), 0))
 38355  	return TCL_OK
 38356  }
 38357  
 38358  func test_errmsg(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 38359  	bp := tls.Alloc(40)
 38360  	defer tls.Free(40)
 38361  
 38362  	var zErr uintptr
 38363  
 38364  	if objc != 2 {
 38365  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 38366  			tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))), ts+15001, 0))
 38367  		return TCL_ERROR
 38368  	}
 38369  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0 {
 38370  		return TCL_ERROR
 38371  	}
 38372  
 38373  	zErr = sqlite3.Xsqlite3_errmsg(tls, *(*uintptr)(unsafe.Pointer(bp + 32)))
 38374  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, zErr, -1))
 38375  	return TCL_OK
 38376  }
 38377  
 38378  func test_error_offset(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 38379  	bp := tls.Alloc(40)
 38380  	defer tls.Free(40)
 38381  
 38382  	var iByteOffset int32
 38383  
 38384  	if objc != 2 {
 38385  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 38386  			tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))), ts+15001, 0))
 38387  		return TCL_ERROR
 38388  	}
 38389  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0 {
 38390  		return TCL_ERROR
 38391  	}
 38392  
 38393  	iByteOffset = sqlite3.Xsqlite3_error_offset(tls, *(*uintptr)(unsafe.Pointer(bp + 32)))
 38394  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, iByteOffset))
 38395  	return TCL_OK
 38396  }
 38397  
 38398  func test_errmsg16(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 38399  	bp := tls.Alloc(40)
 38400  	defer tls.Free(40)
 38401  
 38402  	var zErr uintptr
 38403  	var z uintptr
 38404  	var bytes int32 = 0
 38405  
 38406  	if objc != 2 {
 38407  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 38408  			tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))), ts+15001, 0))
 38409  		return TCL_ERROR
 38410  	}
 38411  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0 {
 38412  		return TCL_ERROR
 38413  	}
 38414  
 38415  	zErr = sqlite3.Xsqlite3_errmsg16(tls, *(*uintptr)(unsafe.Pointer(bp + 32)))
 38416  	if zErr != 0 {
 38417  		z = zErr
 38418  		for bytes = 0; *(*int8)(unsafe.Pointer(z + uintptr(bytes))) != 0 || *(*int8)(unsafe.Pointer(z + uintptr(bytes+1))) != 0; bytes = bytes + 2 {
 38419  		}
 38420  	}
 38421  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewByteArrayObj(tls, zErr, bytes))
 38422  	return TCL_OK
 38423  }
 38424  
 38425  func test_prepare(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 38426  	bp := tls.Alloc(162)
 38427  	defer tls.Free(162)
 38428  
 38429  	var zSql uintptr
 38430  
 38431  	*(*uintptr)(unsafe.Pointer(bp + 104)) = uintptr(0)
 38432  	*(*uintptr)(unsafe.Pointer(bp + 96)) = uintptr(0)
 38433  
 38434  	var rc int32
 38435  
 38436  	if objc != 5 && objc != 4 {
 38437  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 38438  			tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))), ts+17064, 0))
 38439  		return TCL_ERROR
 38440  	}
 38441  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+80) != 0 {
 38442  		return TCL_ERROR
 38443  	}
 38444  	zSql = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 38445  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+88) != 0 {
 38446  		return TCL_ERROR
 38447  	}
 38448  
 38449  	rc = sqlite3.Xsqlite3_prepare(tls, *(*uintptr)(unsafe.Pointer(bp + 80)), zSql, *(*int32)(unsafe.Pointer(bp + 88)), bp+96, func() uintptr {
 38450  		if objc >= 5 {
 38451  			return bp + 104
 38452  		}
 38453  		return uintptr(0)
 38454  	}())
 38455  	tcl.XTcl_ResetResult(tls, interp)
 38456  	if sqlite3TestErrCode(tls, interp, *(*uintptr)(unsafe.Pointer(bp + 80)), rc) != 0 {
 38457  		return TCL_ERROR
 38458  	}
 38459  	if *(*uintptr)(unsafe.Pointer(bp + 104)) != 0 && objc >= 5 {
 38460  		if *(*int32)(unsafe.Pointer(bp + 88)) >= 0 {
 38461  			*(*int32)(unsafe.Pointer(bp + 88)) = *(*int32)(unsafe.Pointer(bp + 88)) - int32((int64(*(*uintptr)(unsafe.Pointer(bp + 104)))-int64(zSql))/1)
 38462  		}
 38463  		if int32(libc.Xstrlen(tls, *(*uintptr)(unsafe.Pointer(bp + 104)))) < *(*int32)(unsafe.Pointer(bp + 88)) {
 38464  			*(*int32)(unsafe.Pointer(bp + 88)) = int32(libc.Xstrlen(tls, *(*uintptr)(unsafe.Pointer(bp + 104))))
 38465  		}
 38466  		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)
 38467  	}
 38468  	if rc != SQLITE_OK {
 38469  		sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([50]int8{})), bp+112, ts+16476, libc.VaList(bp+32, rc))
 38470  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+40, bp+112, sqlite3.Xsqlite3_errmsg(tls, *(*uintptr)(unsafe.Pointer(bp + 80))), 0))
 38471  		return TCL_ERROR
 38472  	}
 38473  
 38474  	if *(*uintptr)(unsafe.Pointer(bp + 96)) != 0 {
 38475  		if sqlite3TestMakePointerStr(tls, interp, bp+112, *(*uintptr)(unsafe.Pointer(bp + 96))) != 0 {
 38476  			return TCL_ERROR
 38477  		}
 38478  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+64, bp+112, 0))
 38479  	}
 38480  	return TCL_OK
 38481  }
 38482  
 38483  func test_prepare_v2(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 38484  	bp := tls.Alloc(162)
 38485  	defer tls.Free(162)
 38486  
 38487  	var zSql uintptr
 38488  	var zCopy uintptr = uintptr(0)
 38489  
 38490  	*(*uintptr)(unsafe.Pointer(bp + 96)) = uintptr(0)
 38491  	var pzTail uintptr
 38492  	*(*uintptr)(unsafe.Pointer(bp + 104)) = uintptr(0)
 38493  
 38494  	var rc int32
 38495  
 38496  	if objc != 5 && objc != 4 {
 38497  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 38498  			tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))), ts+17088, 0))
 38499  		return TCL_ERROR
 38500  	}
 38501  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+80) != 0 {
 38502  		return TCL_ERROR
 38503  	}
 38504  	zSql = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 38505  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+88) != 0 {
 38506  		return TCL_ERROR
 38507  	}
 38508  
 38509  	if *(*int32)(unsafe.Pointer(bp + 88)) >= 0 {
 38510  		zCopy = libc.Xmalloc(tls, uint64(*(*int32)(unsafe.Pointer(bp + 88))))
 38511  		libc.X__builtin___memcpy_chk(tls, zCopy, zSql, uint64(*(*int32)(unsafe.Pointer(bp + 88))), libc.X__builtin_object_size(tls, zCopy, 0))
 38512  	} else {
 38513  		var n int32 = int32(libc.Xstrlen(tls, zSql)) + 1
 38514  		zCopy = libc.Xmalloc(tls, uint64(n))
 38515  		libc.X__builtin___memcpy_chk(tls, zCopy, zSql, uint64(n), libc.X__builtin_object_size(tls, zCopy, 0))
 38516  	}
 38517  	if objc >= 5 {
 38518  		pzTail = bp + 96
 38519  	} else {
 38520  		pzTail = uintptr(0)
 38521  	}
 38522  	rc = sqlite3.Xsqlite3_prepare_v2(tls, *(*uintptr)(unsafe.Pointer(bp + 80)), zCopy, *(*int32)(unsafe.Pointer(bp + 88)), bp+104, pzTail)
 38523  	if objc >= 5 {
 38524  		*(*uintptr)(unsafe.Pointer(bp + 96)) = zSql + uintptr((int64(*(*uintptr)(unsafe.Pointer(bp + 96)))-int64(zCopy))/1)
 38525  	}
 38526  	libc.Xfree(tls, zCopy)
 38527  
 38528  	tcl.XTcl_ResetResult(tls, interp)
 38529  	if sqlite3TestErrCode(tls, interp, *(*uintptr)(unsafe.Pointer(bp + 80)), rc) != 0 {
 38530  		return TCL_ERROR
 38531  	}
 38532  	if rc == SQLITE_OK && objc >= 5 && *(*uintptr)(unsafe.Pointer(bp + 96)) != 0 {
 38533  		if *(*int32)(unsafe.Pointer(bp + 88)) >= 0 {
 38534  			*(*int32)(unsafe.Pointer(bp + 88)) = *(*int32)(unsafe.Pointer(bp + 88)) - int32((int64(*(*uintptr)(unsafe.Pointer(bp + 96)))-int64(zSql))/1)
 38535  		}
 38536  		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)
 38537  	}
 38538  	if rc != SQLITE_OK {
 38539  		sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([50]int8{})), bp+112, ts+16476, libc.VaList(bp+32, rc))
 38540  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+40, bp+112, sqlite3.Xsqlite3_errmsg(tls, *(*uintptr)(unsafe.Pointer(bp + 80))), 0))
 38541  		return TCL_ERROR
 38542  	}
 38543  
 38544  	if *(*uintptr)(unsafe.Pointer(bp + 104)) != 0 {
 38545  		if sqlite3TestMakePointerStr(tls, interp, bp+112, *(*uintptr)(unsafe.Pointer(bp + 104))) != 0 {
 38546  			return TCL_ERROR
 38547  		}
 38548  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+64, bp+112, 0))
 38549  	}
 38550  	return TCL_OK
 38551  }
 38552  
 38553  func test_prepare_v3(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 38554  	bp := tls.Alloc(162)
 38555  	defer tls.Free(162)
 38556  
 38557  	var zSql uintptr
 38558  	var zCopy uintptr = uintptr(0)
 38559  
 38560  	*(*uintptr)(unsafe.Pointer(bp + 96)) = uintptr(0)
 38561  	var pzTail uintptr
 38562  	*(*uintptr)(unsafe.Pointer(bp + 104)) = uintptr(0)
 38563  
 38564  	var rc int32
 38565  
 38566  	if objc != 6 && objc != 5 {
 38567  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 38568  			tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))), ts+17110, 0))
 38569  		return TCL_ERROR
 38570  	}
 38571  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+80) != 0 {
 38572  		return TCL_ERROR
 38573  	}
 38574  	zSql = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 38575  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+88) != 0 {
 38576  		return TCL_ERROR
 38577  	}
 38578  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 4*8)), bp+92) != 0 {
 38579  		return TCL_ERROR
 38580  	}
 38581  
 38582  	if *(*int32)(unsafe.Pointer(bp + 88)) >= 0 {
 38583  		zCopy = libc.Xmalloc(tls, uint64(*(*int32)(unsafe.Pointer(bp + 88))))
 38584  		libc.X__builtin___memcpy_chk(tls, zCopy, zSql, uint64(*(*int32)(unsafe.Pointer(bp + 88))), libc.X__builtin_object_size(tls, zCopy, 0))
 38585  	} else {
 38586  		var n int32 = int32(libc.Xstrlen(tls, zSql)) + 1
 38587  		zCopy = libc.Xmalloc(tls, uint64(n))
 38588  		libc.X__builtin___memcpy_chk(tls, zCopy, zSql, uint64(n), libc.X__builtin_object_size(tls, zCopy, 0))
 38589  	}
 38590  	if objc >= 6 {
 38591  		pzTail = bp + 96
 38592  	} else {
 38593  		pzTail = uintptr(0)
 38594  	}
 38595  	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)
 38596  	libc.Xfree(tls, zCopy)
 38597  	*(*uintptr)(unsafe.Pointer(bp + 96)) = zSql + uintptr((int64(*(*uintptr)(unsafe.Pointer(bp + 96)))-int64(zCopy))/1)
 38598  
 38599  	tcl.XTcl_ResetResult(tls, interp)
 38600  	if sqlite3TestErrCode(tls, interp, *(*uintptr)(unsafe.Pointer(bp + 80)), rc) != 0 {
 38601  		return TCL_ERROR
 38602  	}
 38603  	if rc == SQLITE_OK && *(*uintptr)(unsafe.Pointer(bp + 96)) != 0 && objc >= 6 {
 38604  		if *(*int32)(unsafe.Pointer(bp + 88)) >= 0 {
 38605  			*(*int32)(unsafe.Pointer(bp + 88)) = *(*int32)(unsafe.Pointer(bp + 88)) - int32((int64(*(*uintptr)(unsafe.Pointer(bp + 96)))-int64(zSql))/1)
 38606  		}
 38607  		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)
 38608  	}
 38609  	if rc != SQLITE_OK {
 38610  		sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([50]int8{})), bp+112, ts+16476, libc.VaList(bp+32, rc))
 38611  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+40, bp+112, sqlite3.Xsqlite3_errmsg(tls, *(*uintptr)(unsafe.Pointer(bp + 80))), 0))
 38612  		return TCL_ERROR
 38613  	}
 38614  
 38615  	if *(*uintptr)(unsafe.Pointer(bp + 104)) != 0 {
 38616  		if sqlite3TestMakePointerStr(tls, interp, bp+112, *(*uintptr)(unsafe.Pointer(bp + 104))) != 0 {
 38617  			return TCL_ERROR
 38618  		}
 38619  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+64, bp+112, 0))
 38620  	}
 38621  	return TCL_OK
 38622  }
 38623  
 38624  func test_prepare_tkt3134(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 38625  	bp := tls.Alloc(146)
 38626  	defer tls.Free(146)
 38627  
 38628  	*(*uintptr)(unsafe.Pointer(bp + 88)) = uintptr(0)
 38629  
 38630  	var rc int32
 38631  
 38632  	if objc != 2 {
 38633  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 38634  			tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))), ts+17088, 0))
 38635  		return TCL_ERROR
 38636  	}
 38637  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+80) != 0 {
 38638  		return TCL_ERROR
 38639  	}
 38640  	rc = sqlite3.Xsqlite3_prepare_v2(tls, *(*uintptr)(unsafe.Pointer(bp + 80)), uintptr(unsafe.Pointer(&zSql))+1, 0, bp+88, uintptr(0))
 38641  
 38642  	if sqlite3TestErrCode(tls, interp, *(*uintptr)(unsafe.Pointer(bp + 80)), rc) != 0 {
 38643  		return TCL_ERROR
 38644  	}
 38645  	if rc != SQLITE_OK {
 38646  		sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([50]int8{})), bp+96, ts+16476, libc.VaList(bp+32, rc))
 38647  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+40, bp+96, sqlite3.Xsqlite3_errmsg(tls, *(*uintptr)(unsafe.Pointer(bp + 80))), 0))
 38648  		return TCL_ERROR
 38649  	}
 38650  
 38651  	if *(*uintptr)(unsafe.Pointer(bp + 88)) != 0 {
 38652  		if sqlite3TestMakePointerStr(tls, interp, bp+96, *(*uintptr)(unsafe.Pointer(bp + 88))) != 0 {
 38653  			return TCL_ERROR
 38654  		}
 38655  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+64, bp+96, 0))
 38656  	}
 38657  	return TCL_OK
 38658  }
 38659  
 38660  var zSql = *(*[10]int8)(unsafe.Pointer(ts + 17138))
 38661  
 38662  func test_prepare16(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 38663  	bp := tls.Alloc(130)
 38664  	defer tls.Free(130)
 38665  
 38666  	var zSql uintptr
 38667  	*(*uintptr)(unsafe.Pointer(bp + 72)) = uintptr(0)
 38668  	var pTail uintptr = uintptr(0)
 38669  	*(*uintptr)(unsafe.Pointer(bp + 64)) = uintptr(0)
 38670  
 38671  	var rc int32
 38672  
 38673  	if objc != 5 && objc != 4 {
 38674  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 38675  			tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))), ts+17064, 0))
 38676  		return TCL_ERROR
 38677  	}
 38678  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+48) != 0 {
 38679  		return TCL_ERROR
 38680  	}
 38681  	zSql = tcl.XTcl_GetByteArrayFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+56)
 38682  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+60) != 0 {
 38683  		return TCL_ERROR
 38684  	}
 38685  
 38686  	rc = sqlite3.Xsqlite3_prepare16(tls, *(*uintptr)(unsafe.Pointer(bp + 48)), zSql, *(*int32)(unsafe.Pointer(bp + 60)), bp+64, func() uintptr {
 38687  		if objc >= 5 {
 38688  			return bp + 72
 38689  		}
 38690  		return uintptr(0)
 38691  	}())
 38692  	if sqlite3TestErrCode(tls, interp, *(*uintptr)(unsafe.Pointer(bp + 48)), rc) != 0 {
 38693  		return TCL_ERROR
 38694  	}
 38695  	if rc != 0 {
 38696  		return TCL_ERROR
 38697  	}
 38698  
 38699  	if objc >= 5 {
 38700  		if *(*uintptr)(unsafe.Pointer(bp + 72)) != 0 {
 38701  			*(*int32)(unsafe.Pointer(bp + 56)) = *(*int32)(unsafe.Pointer(bp + 56)) - int32((int64(*(*uintptr)(unsafe.Pointer(bp + 72)))-int64(zSql))/1)
 38702  		} else {
 38703  			*(*int32)(unsafe.Pointer(bp + 56)) = 0
 38704  		}
 38705  		pTail = tcl.XTcl_NewByteArrayObj(tls, *(*uintptr)(unsafe.Pointer(bp + 72)), *(*int32)(unsafe.Pointer(bp + 56)))
 38706  		(*Tcl_Obj)(unsafe.Pointer(pTail)).FrefCount++
 38707  		tcl.XTcl_ObjSetVar2(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 4*8)), uintptr(0), pTail, 0)
 38708  		for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 38709  			if libc.PreDecInt32(&(*Tcl_Obj)(unsafe.Pointer(pTail)).FrefCount, 1) <= 0 {
 38710  				tcl.XTclFreeObj(tls, pTail)
 38711  			}
 38712  		}
 38713  	}
 38714  
 38715  	if *(*uintptr)(unsafe.Pointer(bp + 64)) != 0 {
 38716  		if sqlite3TestMakePointerStr(tls, interp, bp+80, *(*uintptr)(unsafe.Pointer(bp + 64))) != 0 {
 38717  			return TCL_ERROR
 38718  		}
 38719  	}
 38720  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, bp+80, 0))
 38721  	return TCL_OK
 38722  }
 38723  
 38724  func test_prepare16_v2(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 38725  	bp := tls.Alloc(130)
 38726  	defer tls.Free(130)
 38727  
 38728  	var zSql uintptr
 38729  	*(*uintptr)(unsafe.Pointer(bp + 72)) = uintptr(0)
 38730  	var pTail uintptr = uintptr(0)
 38731  	*(*uintptr)(unsafe.Pointer(bp + 64)) = uintptr(0)
 38732  
 38733  	var rc int32
 38734  
 38735  	if objc != 5 && objc != 4 {
 38736  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 38737  			tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))), ts+17064, 0))
 38738  		return TCL_ERROR
 38739  	}
 38740  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+48) != 0 {
 38741  		return TCL_ERROR
 38742  	}
 38743  	zSql = tcl.XTcl_GetByteArrayFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+56)
 38744  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+60) != 0 {
 38745  		return TCL_ERROR
 38746  	}
 38747  
 38748  	rc = sqlite3.Xsqlite3_prepare16_v2(tls, *(*uintptr)(unsafe.Pointer(bp + 48)), zSql, *(*int32)(unsafe.Pointer(bp + 60)), bp+64, func() uintptr {
 38749  		if objc >= 5 {
 38750  			return bp + 72
 38751  		}
 38752  		return uintptr(0)
 38753  	}())
 38754  	if sqlite3TestErrCode(tls, interp, *(*uintptr)(unsafe.Pointer(bp + 48)), rc) != 0 {
 38755  		return TCL_ERROR
 38756  	}
 38757  	if rc != 0 {
 38758  		return TCL_ERROR
 38759  	}
 38760  
 38761  	if objc >= 5 {
 38762  		if *(*uintptr)(unsafe.Pointer(bp + 72)) != 0 {
 38763  			*(*int32)(unsafe.Pointer(bp + 56)) = *(*int32)(unsafe.Pointer(bp + 56)) - int32((int64(*(*uintptr)(unsafe.Pointer(bp + 72)))-int64(zSql))/1)
 38764  		} else {
 38765  			*(*int32)(unsafe.Pointer(bp + 56)) = 0
 38766  		}
 38767  		pTail = tcl.XTcl_NewByteArrayObj(tls, *(*uintptr)(unsafe.Pointer(bp + 72)), *(*int32)(unsafe.Pointer(bp + 56)))
 38768  		(*Tcl_Obj)(unsafe.Pointer(pTail)).FrefCount++
 38769  		tcl.XTcl_ObjSetVar2(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 4*8)), uintptr(0), pTail, 0)
 38770  		for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 38771  			if libc.PreDecInt32(&(*Tcl_Obj)(unsafe.Pointer(pTail)).FrefCount, 1) <= 0 {
 38772  				tcl.XTclFreeObj(tls, pTail)
 38773  			}
 38774  		}
 38775  	}
 38776  
 38777  	if *(*uintptr)(unsafe.Pointer(bp + 64)) != 0 {
 38778  		if sqlite3TestMakePointerStr(tls, interp, bp+80, *(*uintptr)(unsafe.Pointer(bp + 64))) != 0 {
 38779  			return TCL_ERROR
 38780  		}
 38781  	}
 38782  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, bp+80, 0))
 38783  	return TCL_OK
 38784  }
 38785  
 38786  func test_open(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 38787  	bp := tls.Alloc(156)
 38788  	defer tls.Free(156)
 38789  
 38790  	var zFilename uintptr
 38791  
 38792  	if objc != 3 && objc != 2 && objc != 1 {
 38793  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 38794  			tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))), ts+17148, 0))
 38795  		return TCL_ERROR
 38796  	}
 38797  
 38798  	if objc > 1 {
 38799  		zFilename = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 38800  	} else {
 38801  		zFilename = uintptr(0)
 38802  	}
 38803  	sqlite3.Xsqlite3_open(tls, zFilename, bp+48)
 38804  
 38805  	if sqlite3TestMakePointerStr(tls, interp, bp+56, *(*uintptr)(unsafe.Pointer(bp + 48))) != 0 {
 38806  		return TCL_ERROR
 38807  	}
 38808  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, bp+56, 0))
 38809  	return TCL_OK
 38810  }
 38811  
 38812  func test_open_v2(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 38813  	bp := tls.Alloc(484)
 38814  	defer tls.Free(484)
 38815  
 38816  	var zFilename uintptr
 38817  	var zVfs uintptr
 38818  	var flags int32 = 0
 38819  
 38820  	var rc int32
 38821  
 38822  	var i int32
 38823  
 38824  	if objc != 4 {
 38825  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+17171)
 38826  		return TCL_ERROR
 38827  	}
 38828  	zFilename = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 38829  	zVfs = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)))
 38830  	if int32(*(*int8)(unsafe.Pointer(zVfs))) == 0x00 {
 38831  		zVfs = uintptr(0)
 38832  	}
 38833  
 38834  	rc = tcl.XTcl_ListObjGetElements(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+16, bp+24)
 38835  	if rc != TCL_OK {
 38836  		return rc
 38837  	}
 38838  	for i = 0; i < *(*int32)(unsafe.Pointer(bp + 16)); i++ {
 38839  		*(*[21]OpenFlag)(unsafe.Pointer(bp + 32)) = [21]OpenFlag{
 38840  			{FzFlag: ts + 17190, Fflag: SQLITE_OPEN_READONLY},
 38841  			{FzFlag: ts + 17211, Fflag: SQLITE_OPEN_READWRITE},
 38842  			{FzFlag: ts + 17233, Fflag: SQLITE_OPEN_CREATE},
 38843  			{FzFlag: ts + 17252, Fflag: SQLITE_OPEN_DELETEONCLOSE},
 38844  			{FzFlag: ts + 17278, Fflag: SQLITE_OPEN_EXCLUSIVE},
 38845  			{FzFlag: ts + 17300, Fflag: SQLITE_OPEN_AUTOPROXY},
 38846  			{FzFlag: ts + 17322, Fflag: SQLITE_OPEN_MAIN_DB},
 38847  			{FzFlag: ts + 17342, Fflag: SQLITE_OPEN_TEMP_DB},
 38848  			{FzFlag: ts + 17362, Fflag: SQLITE_OPEN_TRANSIENT_DB},
 38849  			{FzFlag: ts + 17387, Fflag: SQLITE_OPEN_MAIN_JOURNAL},
 38850  			{FzFlag: ts + 17412, Fflag: SQLITE_OPEN_TEMP_JOURNAL},
 38851  			{FzFlag: ts + 17437, Fflag: SQLITE_OPEN_SUBJOURNAL},
 38852  			{FzFlag: ts + 17460, Fflag: SQLITE_OPEN_SUPER_JOURNAL},
 38853  			{FzFlag: ts + 17486, Fflag: SQLITE_OPEN_NOMUTEX},
 38854  			{FzFlag: ts + 17506, Fflag: SQLITE_OPEN_FULLMUTEX},
 38855  			{FzFlag: ts + 17528, Fflag: SQLITE_OPEN_SHAREDCACHE},
 38856  			{FzFlag: ts + 17552, Fflag: SQLITE_OPEN_PRIVATECACHE},
 38857  			{FzFlag: ts + 17577, Fflag: SQLITE_OPEN_WAL},
 38858  			{FzFlag: ts + 17593, Fflag: SQLITE_OPEN_URI},
 38859  			{FzFlag: ts + 17609, Fflag: SQLITE_OPEN_EXRESCODE},
 38860  			{},
 38861  		}
 38862  		rc = tcl.XTcl_GetIndexFromObjStruct(tls, interp, *(*uintptr)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 24)) + uintptr(i)*8)), bp+32, int32(unsafe.Sizeof(OpenFlag{})),
 38863  			ts+17631, 0, bp+368)
 38864  		if rc != TCL_OK {
 38865  			return rc
 38866  		}
 38867  		flags = flags | (*OpenFlag)(unsafe.Pointer(bp+32+uintptr(*(*int32)(unsafe.Pointer(bp + 368)))*16)).Fflag
 38868  	}
 38869  
 38870  	rc = sqlite3.Xsqlite3_open_v2(tls, zFilename, bp+376, flags, zVfs)
 38871  	if sqlite3TestMakePointerStr(tls, interp, bp+384, *(*uintptr)(unsafe.Pointer(bp + 376))) != 0 {
 38872  		return TCL_ERROR
 38873  	}
 38874  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, bp+384, 0))
 38875  	return TCL_OK
 38876  }
 38877  
 38878  type OpenFlag = struct {
 38879  	FzFlag       uintptr
 38880  	Fflag        int32
 38881  	F__ccgo_pad1 [4]byte
 38882  }
 38883  
 38884  func test_open16(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 38885  	bp := tls.Alloc(156)
 38886  	defer tls.Free(156)
 38887  
 38888  	var zFilename uintptr
 38889  
 38890  	if objc != 3 {
 38891  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 38892  			tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))), ts+17148, 0))
 38893  		return TCL_ERROR
 38894  	}
 38895  
 38896  	zFilename = tcl.XTcl_GetByteArrayFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)), uintptr(0))
 38897  	sqlite3.Xsqlite3_open16(tls, zFilename, bp+48)
 38898  
 38899  	if sqlite3TestMakePointerStr(tls, interp, bp+56, *(*uintptr)(unsafe.Pointer(bp + 48))) != 0 {
 38900  		return TCL_ERROR
 38901  	}
 38902  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, bp+56, 0))
 38903  	return TCL_OK
 38904  }
 38905  
 38906  func test_complete16(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 38907  	var zBuf uintptr
 38908  
 38909  	if objc != 2 {
 38910  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+17636)
 38911  		return TCL_ERROR
 38912  	}
 38913  
 38914  	zBuf = tcl.XTcl_GetByteArrayFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)), uintptr(0))
 38915  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, sqlite3.Xsqlite3_complete16(tls, zBuf)))
 38916  	return TCL_OK
 38917  }
 38918  
 38919  func test_normalize(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 38920  	var zSql uintptr
 38921  	var zNorm uintptr
 38922  
 38923  	if objc != 2 {
 38924  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+9535)
 38925  		return TCL_ERROR
 38926  	}
 38927  
 38928  	zSql = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 38929  	zNorm = sqlite3_normalize(tls, zSql)
 38930  	if zNorm != 0 {
 38931  		tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, zNorm, -1))
 38932  		sqlite3.Xsqlite3_free(tls, zNorm)
 38933  	}
 38934  	return TCL_OK
 38935  }
 38936  
 38937  func test_step(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 38938  	bp := tls.Alloc(40)
 38939  	defer tls.Free(40)
 38940  
 38941  	var rc int32
 38942  
 38943  	if objc != 2 {
 38944  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 38945  			tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))), ts+16315, 0))
 38946  		return TCL_ERROR
 38947  	}
 38948  
 38949  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0 {
 38950  		return TCL_ERROR
 38951  	}
 38952  	rc = sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp + 32)))
 38953  
 38954  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 38955  	return TCL_OK
 38956  }
 38957  
 38958  func test_sql(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 38959  	bp := tls.Alloc(8)
 38960  	defer tls.Free(8)
 38961  
 38962  	if objc != 2 {
 38963  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+17042)
 38964  		return TCL_ERROR
 38965  	}
 38966  
 38967  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 38968  		return TCL_ERROR
 38969  	}
 38970  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3_sql(tls, *(*uintptr)(unsafe.Pointer(bp))), uintptr(1))
 38971  	return TCL_OK
 38972  }
 38973  
 38974  func test_ex_sql(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 38975  	bp := tls.Alloc(8)
 38976  	defer tls.Free(8)
 38977  
 38978  	var z uintptr
 38979  
 38980  	if objc != 2 {
 38981  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+17042)
 38982  		return TCL_ERROR
 38983  	}
 38984  
 38985  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 38986  		return TCL_ERROR
 38987  	}
 38988  	z = sqlite3.Xsqlite3_expanded_sql(tls, *(*uintptr)(unsafe.Pointer(bp)))
 38989  	tcl.XTcl_SetResult(tls, interp, z, uintptr(1))
 38990  	sqlite3.Xsqlite3_free(tls, z)
 38991  	return TCL_OK
 38992  }
 38993  
 38994  func test_column_count(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 38995  	bp := tls.Alloc(40)
 38996  	defer tls.Free(40)
 38997  
 38998  	if objc != 2 {
 38999  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 39000  			tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))), ts+17649, 0))
 39001  		return TCL_ERROR
 39002  	}
 39003  
 39004  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0 {
 39005  		return TCL_ERROR
 39006  	}
 39007  
 39008  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, sqlite3.Xsqlite3_column_count(tls, *(*uintptr)(unsafe.Pointer(bp + 32)))))
 39009  	return TCL_OK
 39010  }
 39011  
 39012  func test_column_type(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 39013  	bp := tls.Alloc(44)
 39014  	defer tls.Free(44)
 39015  
 39016  	var tp int32
 39017  
 39018  	if objc != 3 {
 39019  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 39020  			tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))), ts+17649, 0))
 39021  		return TCL_ERROR
 39022  	}
 39023  
 39024  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0 {
 39025  		return TCL_ERROR
 39026  	}
 39027  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+40) != 0 {
 39028  		return TCL_ERROR
 39029  	}
 39030  
 39031  	tp = sqlite3.Xsqlite3_column_type(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), *(*int32)(unsafe.Pointer(bp + 40)))
 39032  	switch tp {
 39033  	case SQLITE_INTEGER:
 39034  		tcl.XTcl_SetResult(tls, interp, ts+2413, uintptr(0))
 39035  		break
 39036  	case SQLITE_NULL:
 39037  		tcl.XTcl_SetResult(tls, interp, ts+5846, uintptr(0))
 39038  		break
 39039  	case SQLITE_FLOAT:
 39040  		tcl.XTcl_SetResult(tls, interp, ts+17662, uintptr(0))
 39041  		break
 39042  	case SQLITE_TEXT:
 39043  		tcl.XTcl_SetResult(tls, interp, ts+17668, uintptr(0))
 39044  		break
 39045  	case SQLITE_BLOB:
 39046  		tcl.XTcl_SetResult(tls, interp, ts+17673, uintptr(0))
 39047  		break
 39048  	default:
 39049  	}
 39050  
 39051  	return TCL_OK
 39052  }
 39053  
 39054  func test_column_int64(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 39055  	bp := tls.Alloc(44)
 39056  	defer tls.Free(44)
 39057  
 39058  	var iVal i64
 39059  
 39060  	if objc != 3 {
 39061  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 39062  			tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))), ts+17649, 0))
 39063  		return TCL_ERROR
 39064  	}
 39065  
 39066  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0 {
 39067  		return TCL_ERROR
 39068  	}
 39069  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+40) != 0 {
 39070  		return TCL_ERROR
 39071  	}
 39072  
 39073  	iVal = sqlite3.Xsqlite3_column_int64(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), *(*int32)(unsafe.Pointer(bp + 40)))
 39074  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewWideIntObj(tls, iVal))
 39075  	return TCL_OK
 39076  }
 39077  
 39078  func test_column_blob(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 39079  	bp := tls.Alloc(44)
 39080  	defer tls.Free(44)
 39081  
 39082  	var len int32
 39083  	var pBlob uintptr
 39084  
 39085  	if objc != 3 {
 39086  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 39087  			tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))), ts+17649, 0))
 39088  		return TCL_ERROR
 39089  	}
 39090  
 39091  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0 {
 39092  		return TCL_ERROR
 39093  	}
 39094  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+40) != 0 {
 39095  		return TCL_ERROR
 39096  	}
 39097  
 39098  	len = sqlite3.Xsqlite3_column_bytes(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), *(*int32)(unsafe.Pointer(bp + 40)))
 39099  	pBlob = sqlite3.Xsqlite3_column_blob(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), *(*int32)(unsafe.Pointer(bp + 40)))
 39100  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewByteArrayObj(tls, pBlob, len))
 39101  	return TCL_OK
 39102  }
 39103  
 39104  func test_column_double(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 39105  	bp := tls.Alloc(44)
 39106  	defer tls.Free(44)
 39107  
 39108  	var rVal float64
 39109  
 39110  	if objc != 3 {
 39111  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 39112  			tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))), ts+17649, 0))
 39113  		return TCL_ERROR
 39114  	}
 39115  
 39116  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0 {
 39117  		return TCL_ERROR
 39118  	}
 39119  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+40) != 0 {
 39120  		return TCL_ERROR
 39121  	}
 39122  
 39123  	rVal = sqlite3.Xsqlite3_column_double(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), *(*int32)(unsafe.Pointer(bp + 40)))
 39124  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewDoubleObj(tls, rVal))
 39125  	return TCL_OK
 39126  }
 39127  
 39128  func test_data_count(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 39129  	bp := tls.Alloc(40)
 39130  	defer tls.Free(40)
 39131  
 39132  	if objc != 2 {
 39133  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 39134  			tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))), ts+17649, 0))
 39135  		return TCL_ERROR
 39136  	}
 39137  
 39138  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0 {
 39139  		return TCL_ERROR
 39140  	}
 39141  
 39142  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, sqlite3.Xsqlite3_data_count(tls, *(*uintptr)(unsafe.Pointer(bp + 32)))))
 39143  	return TCL_OK
 39144  }
 39145  
 39146  func test_stmt_utf8(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 39147  	bp := tls.Alloc(44)
 39148  	defer tls.Free(44)
 39149  
 39150  	var xFunc uintptr
 39151  	var zRet uintptr
 39152  
 39153  	xFunc = clientData
 39154  	if objc != 3 {
 39155  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 39156  			tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))), ts+17649, 0))
 39157  		return TCL_ERROR
 39158  	}
 39159  
 39160  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0 {
 39161  		return TCL_ERROR
 39162  	}
 39163  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+40) != 0 {
 39164  		return TCL_ERROR
 39165  	}
 39166  	zRet = (*struct {
 39167  		f func(*libc.TLS, uintptr, int32) uintptr
 39168  	})(unsafe.Pointer(&struct{ uintptr }{xFunc})).f(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), *(*int32)(unsafe.Pointer(bp + 40)))
 39169  	if zRet != 0 {
 39170  		tcl.XTcl_SetResult(tls, interp, zRet, uintptr(0))
 39171  	}
 39172  	return TCL_OK
 39173  }
 39174  
 39175  func test_global_recover(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 39176  	var rc int32
 39177  	if objc != 1 {
 39178  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+584)
 39179  		return TCL_ERROR
 39180  	}
 39181  	rc = sqlite3.Xsqlite3_global_recover(tls)
 39182  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 39183  	return TCL_OK
 39184  }
 39185  
 39186  func test_stmt_utf16(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 39187  	bp := tls.Alloc(44)
 39188  	defer tls.Free(44)
 39189  
 39190  	var pRet uintptr
 39191  	var zName16 uintptr
 39192  	var xFunc uintptr
 39193  
 39194  	xFunc = clientData
 39195  	if objc != 3 {
 39196  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 39197  			tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))), ts+17649, 0))
 39198  		return TCL_ERROR
 39199  	}
 39200  
 39201  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0 {
 39202  		return TCL_ERROR
 39203  	}
 39204  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+40) != 0 {
 39205  		return TCL_ERROR
 39206  	}
 39207  
 39208  	zName16 = (*struct {
 39209  		f func(*libc.TLS, uintptr, int32) uintptr
 39210  	})(unsafe.Pointer(&struct{ uintptr }{xFunc})).f(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), *(*int32)(unsafe.Pointer(bp + 40)))
 39211  	if zName16 != 0 {
 39212  		var n int32
 39213  		var z uintptr = zName16
 39214  		for n = 0; *(*int8)(unsafe.Pointer(z + uintptr(n))) != 0 || *(*int8)(unsafe.Pointer(z + uintptr(n+1))) != 0; n = n + 2 {
 39215  		}
 39216  		pRet = tcl.XTcl_NewByteArrayObj(tls, zName16, n+2)
 39217  		tcl.XTcl_SetObjResult(tls, interp, pRet)
 39218  	}
 39219  
 39220  	return TCL_OK
 39221  }
 39222  
 39223  func test_stmt_int(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 39224  	bp := tls.Alloc(44)
 39225  	defer tls.Free(44)
 39226  
 39227  	var xFunc uintptr
 39228  
 39229  	xFunc = clientData
 39230  	if objc != 3 {
 39231  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 39232  			tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))), ts+17649, 0))
 39233  		return TCL_ERROR
 39234  	}
 39235  
 39236  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0 {
 39237  		return TCL_ERROR
 39238  	}
 39239  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+40) != 0 {
 39240  		return TCL_ERROR
 39241  	}
 39242  
 39243  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, (*struct {
 39244  		f func(*libc.TLS, uintptr, int32) int32
 39245  	})(unsafe.Pointer(&struct{ uintptr }{xFunc})).f(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), *(*int32)(unsafe.Pointer(bp + 40)))))
 39246  	return TCL_OK
 39247  }
 39248  
 39249  func test_interrupt(tls *libc.TLS, clientData uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 39250  	bp := tls.Alloc(40)
 39251  	defer tls.Free(40)
 39252  
 39253  	if argc != 2 {
 39254  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)), ts+15001, 0))
 39255  		return TCL_ERROR
 39256  	}
 39257  	if getDbPointer(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)), bp+32) != 0 {
 39258  		return TCL_ERROR
 39259  	}
 39260  	sqlite3.Xsqlite3_interrupt(tls, *(*uintptr)(unsafe.Pointer(bp + 32)))
 39261  	return TCL_OK
 39262  }
 39263  
 39264  func delete_function(tls *libc.TLS, clientData uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 39265  	bp := tls.Alloc(40)
 39266  	defer tls.Free(40)
 39267  
 39268  	var rc int32
 39269  
 39270  	if argc != 3 {
 39271  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 39272  			ts+17678, 0))
 39273  		return TCL_ERROR
 39274  	}
 39275  	if getDbPointer(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)), bp+32) != 0 {
 39276  		return TCL_ERROR
 39277  	}
 39278  	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))
 39279  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 39280  	return TCL_OK
 39281  }
 39282  
 39283  func delete_collation(tls *libc.TLS, clientData uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 39284  	bp := tls.Alloc(40)
 39285  	defer tls.Free(40)
 39286  
 39287  	var rc int32
 39288  
 39289  	if argc != 3 {
 39290  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 39291  			ts+17678, 0))
 39292  		return TCL_ERROR
 39293  	}
 39294  	if getDbPointer(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)), bp+32) != 0 {
 39295  		return TCL_ERROR
 39296  	}
 39297  	rc = sqlite3.Xsqlite3_create_collation(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), *(*uintptr)(unsafe.Pointer(argv + 2*8)), SQLITE_UTF8, uintptr(0), uintptr(0))
 39298  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 39299  	return TCL_OK
 39300  }
 39301  
 39302  func get_autocommit(tls *libc.TLS, clientData uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 39303  	bp := tls.Alloc(94)
 39304  	defer tls.Free(94)
 39305  
 39306  	if argc != 2 {
 39307  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 39308  			ts+15001, 0))
 39309  		return TCL_ERROR
 39310  	}
 39311  	if getDbPointer(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)), bp+56) != 0 {
 39312  		return TCL_ERROR
 39313  	}
 39314  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([30]int8{})), bp+64, ts+1333, libc.VaList(bp+32, sqlite3.Xsqlite3_get_autocommit(tls, *(*uintptr)(unsafe.Pointer(bp + 56)))))
 39315  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+40, bp+64, 0))
 39316  	return TCL_OK
 39317  }
 39318  
 39319  func test_busy_timeout(tls *libc.TLS, clientData uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 39320  	bp := tls.Alloc(60)
 39321  	defer tls.Free(60)
 39322  
 39323  	var rc int32
 39324  
 39325  	if argc != 3 {
 39326  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 39327  			ts+15001, 0))
 39328  		return TCL_ERROR
 39329  	}
 39330  	if getDbPointer(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)), bp+48) != 0 {
 39331  		return TCL_ERROR
 39332  	}
 39333  	if tcl.XTcl_GetInt(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 2*8)), bp+56) != 0 {
 39334  		return TCL_ERROR
 39335  	}
 39336  	rc = sqlite3.Xsqlite3_busy_timeout(tls, *(*uintptr)(unsafe.Pointer(bp + 48)), *(*int32)(unsafe.Pointer(bp + 56)))
 39337  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, sqlite3.Xsqlite3ErrName(tls, rc), 0))
 39338  	return TCL_OK
 39339  }
 39340  
 39341  func tcl_variable_type(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 39342  	var pVar uintptr
 39343  	if objc != 2 {
 39344  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+17696)
 39345  		return TCL_ERROR
 39346  	}
 39347  	pVar = tcl.XTcl_GetVar2Ex(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), uintptr(0), TCL_LEAVE_ERR_MSG)
 39348  	if pVar == uintptr(0) {
 39349  		return TCL_ERROR
 39350  	}
 39351  	if (*Tcl_Obj)(unsafe.Pointer(pVar)).FtypePtr != 0 {
 39352  		tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, (*Tcl_ObjType)(unsafe.Pointer((*Tcl_Obj)(unsafe.Pointer(pVar)).FtypePtr)).Fname, -1))
 39353  	}
 39354  	return TCL_OK
 39355  }
 39356  
 39357  func test_release_memory(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 39358  	bp := tls.Alloc(4)
 39359  	defer tls.Free(4)
 39360  
 39361  	var amt int32
 39362  	if objc != 1 && objc != 2 {
 39363  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+17705)
 39364  		return TCL_ERROR
 39365  	}
 39366  	if objc == 2 {
 39367  		if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp) != 0 {
 39368  			return TCL_ERROR
 39369  		}
 39370  	} else {
 39371  		*(*int32)(unsafe.Pointer(bp)) = -1
 39372  	}
 39373  	amt = sqlite3.Xsqlite3_release_memory(tls, *(*int32)(unsafe.Pointer(bp)))
 39374  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, amt))
 39375  	return TCL_OK
 39376  }
 39377  
 39378  func test_db_release_memory(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 39379  	bp := tls.Alloc(8)
 39380  	defer tls.Free(8)
 39381  
 39382  	var rc int32
 39383  	if objc != 2 {
 39384  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2050)
 39385  		return TCL_ERROR
 39386  	}
 39387  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 39388  		return TCL_ERROR
 39389  	}
 39390  	rc = sqlite3.Xsqlite3_db_release_memory(tls, *(*uintptr)(unsafe.Pointer(bp)))
 39391  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, rc))
 39392  	return TCL_OK
 39393  }
 39394  
 39395  func test_db_cacheflush(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 39396  	bp := tls.Alloc(8)
 39397  	defer tls.Free(8)
 39398  
 39399  	var rc int32
 39400  	if objc != 2 {
 39401  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2050)
 39402  		return TCL_ERROR
 39403  	}
 39404  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 39405  		return TCL_ERROR
 39406  	}
 39407  	rc = sqlite3.Xsqlite3_db_cacheflush(tls, *(*uintptr)(unsafe.Pointer(bp)))
 39408  	if rc != 0 {
 39409  		tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrStr(tls, rc), uintptr(0))
 39410  		return TCL_ERROR
 39411  	}
 39412  
 39413  	tcl.XTcl_ResetResult(tls, interp)
 39414  	return TCL_OK
 39415  }
 39416  
 39417  func test_system_errno(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 39418  	bp := tls.Alloc(8)
 39419  	defer tls.Free(8)
 39420  
 39421  	var iErrno int32
 39422  	if objc != 2 {
 39423  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2050)
 39424  		return TCL_ERROR
 39425  	}
 39426  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 39427  		return TCL_ERROR
 39428  	}
 39429  	iErrno = sqlite3.Xsqlite3_system_errno(tls, *(*uintptr)(unsafe.Pointer(bp)))
 39430  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, iErrno))
 39431  	return TCL_OK
 39432  }
 39433  
 39434  func test_db_filename(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 39435  	bp := tls.Alloc(24)
 39436  	defer tls.Free(24)
 39437  
 39438  	var zDbName uintptr
 39439  	if objc != 3 {
 39440  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+16225)
 39441  		return TCL_ERROR
 39442  	}
 39443  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+16) != 0 {
 39444  		return TCL_ERROR
 39445  	}
 39446  	zDbName = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 39447  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, sqlite3.Xsqlite3_db_filename(tls, *(*uintptr)(unsafe.Pointer(bp + 16)), zDbName), uintptr(0)))
 39448  	return TCL_OK
 39449  }
 39450  
 39451  func test_db_readonly(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 39452  	bp := tls.Alloc(8)
 39453  	defer tls.Free(8)
 39454  
 39455  	var zDbName uintptr
 39456  	if objc != 3 {
 39457  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+16225)
 39458  		return TCL_ERROR
 39459  	}
 39460  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 39461  		return TCL_ERROR
 39462  	}
 39463  	zDbName = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 39464  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, sqlite3.Xsqlite3_db_readonly(tls, *(*uintptr)(unsafe.Pointer(bp)), zDbName)))
 39465  	return TCL_OK
 39466  }
 39467  
 39468  func test_soft_heap_limit(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 39469  	bp := tls.Alloc(8)
 39470  	defer tls.Free(8)
 39471  
 39472  	var amt sqlite3_int64
 39473  	*(*Tcl_WideInt)(unsafe.Pointer(bp)) = int64(-1)
 39474  	if objc != 1 && objc != 2 {
 39475  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+17705)
 39476  		return TCL_ERROR
 39477  	}
 39478  	if objc == 2 {
 39479  		if tcl.XTcl_GetWideIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp) != 0 {
 39480  			return TCL_ERROR
 39481  		}
 39482  	}
 39483  	amt = sqlite3.Xsqlite3_soft_heap_limit64(tls, *(*Tcl_WideInt)(unsafe.Pointer(bp)))
 39484  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewWideIntObj(tls, amt))
 39485  	return TCL_OK
 39486  }
 39487  
 39488  func test_hard_heap_limit(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 39489  	bp := tls.Alloc(8)
 39490  	defer tls.Free(8)
 39491  
 39492  	var amt sqlite3_int64
 39493  	*(*Tcl_WideInt)(unsafe.Pointer(bp)) = int64(-1)
 39494  	if objc != 1 && objc != 2 {
 39495  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+17705)
 39496  		return TCL_ERROR
 39497  	}
 39498  	if objc == 2 {
 39499  		if tcl.XTcl_GetWideIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp) != 0 {
 39500  			return TCL_ERROR
 39501  		}
 39502  	}
 39503  	amt = sqlite3.Xsqlite3_hard_heap_limit64(tls, *(*Tcl_WideInt)(unsafe.Pointer(bp)))
 39504  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewWideIntObj(tls, amt))
 39505  	return TCL_OK
 39506  }
 39507  
 39508  func test_thread_cleanup(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 39509  	sqlite3.Xsqlite3_thread_cleanup(tls)
 39510  	return TCL_OK
 39511  }
 39512  
 39513  func test_pager_refcounts(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 39514  	bp := tls.Alloc(40)
 39515  	defer tls.Free(40)
 39516  
 39517  	var i int32
 39518  	var v int32
 39519  	var a uintptr
 39520  	var pResult uintptr
 39521  
 39522  	if objc != 2 {
 39523  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 39524  			tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+15001, 0))
 39525  		return TCL_ERROR
 39526  	}
 39527  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0 {
 39528  		return TCL_ERROR
 39529  	}
 39530  	pResult = tcl.XTcl_NewObj(tls)
 39531  	for i = 0; i < (*sqlite31)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 32)))).FnDb; i++ {
 39532  		if (*Db)(unsafe.Pointer((*sqlite31)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 32)))).FaDb+uintptr(i)*32)).FpBt == uintptr(0) {
 39533  			v = -1
 39534  		} else {
 39535  			sqlite3.Xsqlite3_mutex_enter(tls, (*sqlite31)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 32)))).Fmutex)
 39536  			a = sqlite3.Xsqlite3PagerStats(tls, sqlite3.Xsqlite3BtreePager(tls, (*Db)(unsafe.Pointer((*sqlite31)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 32)))).FaDb+uintptr(i)*32)).FpBt))
 39537  			v = *(*int32)(unsafe.Pointer(a))
 39538  			sqlite3.Xsqlite3_mutex_leave(tls, (*sqlite31)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 32)))).Fmutex)
 39539  		}
 39540  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pResult, tcl.XTcl_NewIntObj(tls, v))
 39541  	}
 39542  	tcl.XTcl_SetObjResult(tls, interp, pResult)
 39543  	return TCL_OK
 39544  }
 39545  
 39546  func working_64bit_int(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 39547  	var pTestObj uintptr
 39548  	var working int32 = 0
 39549  
 39550  	pTestObj = tcl.XTcl_NewWideIntObj(tls, int64(1000000)*int64(1234567890))
 39551  	working = libc.Bool32(libc.Xstrcmp(tls, tcl.XTcl_GetString(tls, pTestObj), ts+17709) == 0)
 39552  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 39553  		if libc.PreDecInt32(&(*Tcl_Obj)(unsafe.Pointer(pTestObj)).FrefCount, 1) <= 0 {
 39554  			tcl.XTclFreeObj(tls, pTestObj)
 39555  		}
 39556  	}
 39557  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewBooleanObj(tls, working))
 39558  	return TCL_OK
 39559  }
 39560  
 39561  func vfs_unlink_test(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 39562  	bp := tls.Alloc(496)
 39563  	defer tls.Free(496)
 39564  
 39565  	var i int32
 39566  	var pMain uintptr
 39567  
 39568  	sqlite3.Xsqlite3_vfs_unregister(tls, uintptr(0))
 39569  	(*sqlite3_vfs)(unsafe.Pointer(bp)).FzName = ts + 17726
 39570  	(*sqlite3_vfs)(unsafe.Pointer(bp + 168)).FzName = ts + 17732
 39571  
 39572  	pMain = sqlite3.Xsqlite3_vfs_find(tls, uintptr(0))
 39573  	sqlite3.Xsqlite3_vfs_register(tls, bp, 0)
 39574  
 39575  	sqlite3.Xsqlite3_vfs_register(tls, bp+168, 0)
 39576  
 39577  	sqlite3.Xsqlite3_vfs_register(tls, bp, 1)
 39578  
 39579  	sqlite3.Xsqlite3_vfs_register(tls, bp+168, 1)
 39580  
 39581  	if pMain != 0 {
 39582  		sqlite3.Xsqlite3_vfs_register(tls, pMain, 1)
 39583  
 39584  	}
 39585  
 39586  	for i = 0; uint64(i) < uint64(unsafe.Sizeof([20]uintptr{}))/uint64(unsafe.Sizeof(uintptr(0))); i++ {
 39587  		*(*uintptr)(unsafe.Pointer(bp + 336 + uintptr(i)*8)) = sqlite3.Xsqlite3_vfs_find(tls, uintptr(0))
 39588  		if *(*uintptr)(unsafe.Pointer(bp + 336 + uintptr(i)*8)) != 0 {
 39589  			sqlite3.Xsqlite3_vfs_unregister(tls, *(*uintptr)(unsafe.Pointer(bp + 336 + uintptr(i)*8)))
 39590  
 39591  		}
 39592  	}
 39593  
 39594  	sqlite3.Xsqlite3_vfs_register(tls, pMain, 0)
 39595  
 39596  	sqlite3.Xsqlite3_vfs_unregister(tls, pMain)
 39597  
 39598  	for i = int32(uint64(unsafe.Sizeof([20]uintptr{}))/uint64(unsafe.Sizeof(uintptr(0))) - uint64(1)); i >= 0; i-- {
 39599  		if *(*uintptr)(unsafe.Pointer(bp + 336 + uintptr(i)*8)) != 0 {
 39600  			sqlite3.Xsqlite3_vfs_register(tls, *(*uintptr)(unsafe.Pointer(bp + 336 + uintptr(i)*8)), 1)
 39601  
 39602  		}
 39603  	}
 39604  
 39605  	sqlite3.Xsqlite3_vfs_unregister(tls, bp)
 39606  	sqlite3.Xsqlite3_vfs_unregister(tls, bp+168)
 39607  
 39608  	sqlite3.Xsqlite3_vfs_unregister(tls, bp)
 39609  	sqlite3.Xsqlite3_vfs_unregister(tls, bp+168)
 39610  
 39611  	return TCL_OK
 39612  }
 39613  
 39614  func vfs_initfail_test(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 39615  	bp := tls.Alloc(168)
 39616  	defer tls.Free(168)
 39617  
 39618  	(*sqlite3_vfs)(unsafe.Pointer(bp)).FzName = ts + 17726
 39619  
 39620  	if sqlite3.Xsqlite3_vfs_find(tls, uintptr(0)) != 0 {
 39621  		return TCL_ERROR
 39622  	}
 39623  	sqlite3.Xsqlite3_vfs_register(tls, bp, 0)
 39624  	if sqlite3.Xsqlite3_vfs_find(tls, uintptr(0)) != 0 {
 39625  		return TCL_ERROR
 39626  	}
 39627  	sqlite3.Xsqlite3_vfs_register(tls, bp, 1)
 39628  	if sqlite3.Xsqlite3_vfs_find(tls, uintptr(0)) != 0 {
 39629  		return TCL_ERROR
 39630  	}
 39631  	return TCL_OK
 39632  }
 39633  
 39634  var apVfs [20]uintptr
 39635  var nVfs int32 = 0
 39636  
 39637  func vfs_unregister_all(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 39638  	var i int32
 39639  	for i = 0; i < int32(uint64(unsafe.Sizeof(apVfs))/uint64(unsafe.Sizeof(uintptr(0)))); i++ {
 39640  		apVfs[i] = sqlite3.Xsqlite3_vfs_find(tls, uintptr(0))
 39641  		if apVfs[i] == uintptr(0) {
 39642  			break
 39643  		}
 39644  		sqlite3.Xsqlite3_vfs_unregister(tls, apVfs[i])
 39645  	}
 39646  	nVfs = i
 39647  	return TCL_OK
 39648  }
 39649  
 39650  func vfs_reregister_all(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 39651  	var i int32
 39652  	for i = nVfs - 1; i >= 0; i-- {
 39653  		sqlite3.Xsqlite3_vfs_register(tls, apVfs[i], 1)
 39654  	}
 39655  	return TCL_OK
 39656  }
 39657  
 39658  func file_control_test(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 39659  	bp := tls.Alloc(44)
 39660  	defer tls.Free(44)
 39661  
 39662  	*(*int32)(unsafe.Pointer(bp + 40)) = 0
 39663  
 39664  	var rc int32
 39665  	_ = rc
 39666  
 39667  	if objc != 2 {
 39668  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 39669  			tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+15001, 0))
 39670  		return TCL_ERROR
 39671  	}
 39672  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0 {
 39673  		return TCL_ERROR
 39674  	}
 39675  	rc = sqlite3.Xsqlite3_file_control(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), uintptr(0), 0, bp+40)
 39676  
 39677  	rc = sqlite3.Xsqlite3_file_control(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), ts+17738, SQLITE_FCNTL_LOCKSTATE, bp+40)
 39678  
 39679  	rc = sqlite3.Xsqlite3_file_control(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), ts+85, -1, bp+40)
 39680  
 39681  	rc = sqlite3.Xsqlite3_file_control(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), ts+8931, -1, bp+40)
 39682  
 39683  	return TCL_OK
 39684  }
 39685  
 39686  func file_control_lasterrno_test(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 39687  	bp := tls.Alloc(76)
 39688  	defer tls.Free(76)
 39689  
 39690  	*(*int32)(unsafe.Pointer(bp + 72)) = 0
 39691  
 39692  	var rc int32
 39693  
 39694  	if objc != 2 {
 39695  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 39696  			tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+15001, 0))
 39697  		return TCL_ERROR
 39698  	}
 39699  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+64) != 0 {
 39700  		return TCL_ERROR
 39701  	}
 39702  	rc = sqlite3.Xsqlite3_file_control(tls, *(*uintptr)(unsafe.Pointer(bp + 64)), uintptr(0), SQLITE_FCNTL_LAST_ERRNO, bp+72)
 39703  	if rc != 0 {
 39704  		tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, rc))
 39705  		return TCL_ERROR
 39706  	}
 39707  	if *(*int32)(unsafe.Pointer(bp + 72)) != 0 {
 39708  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+17751,
 39709  			tcl.XTcl_GetStringFromObj(tls, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 72))), uintptr(0)), ts+4894, 0))
 39710  		return TCL_ERROR
 39711  	}
 39712  	return TCL_OK
 39713  }
 39714  
 39715  func file_control_data_version(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 39716  	bp := tls.Alloc(120)
 39717  	defer tls.Free(120)
 39718  
 39719  	var zDb uintptr
 39720  
 39721  	var rc int32
 39722  
 39723  	if objc != 3 && objc != 2 {
 39724  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+17779)
 39725  		return TCL_ERROR
 39726  	}
 39727  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+8) != 0 {
 39728  		return TCL_ERROR
 39729  	}
 39730  	if objc == 3 {
 39731  		zDb = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 39732  	} else {
 39733  		zDb = uintptr(0)
 39734  	}
 39735  
 39736  	rc = sqlite3.Xsqlite3_file_control(tls, *(*uintptr)(unsafe.Pointer(bp + 8)), zDb, SQLITE_FCNTL_DATA_VERSION, bp+16)
 39737  	if rc != 0 {
 39738  		tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 39739  		return TCL_ERROR
 39740  	} else {
 39741  		sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([100]int8{})), bp+20, ts+17791, libc.VaList(bp, *(*uint32)(unsafe.Pointer(bp + 16))))
 39742  		tcl.XTcl_SetResult(tls, interp, bp+20, uintptr(1))
 39743  		return TCL_OK
 39744  	}
 39745  	return int32(0)
 39746  }
 39747  
 39748  func file_control_chunksize_test(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 39749  	bp := tls.Alloc(12)
 39750  	defer tls.Free(12)
 39751  
 39752  	var zDb uintptr
 39753  
 39754  	var rc int32
 39755  
 39756  	if objc != 4 {
 39757  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+17794)
 39758  		return TCL_ERROR
 39759  	}
 39760  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 ||
 39761  		tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+8) != 0 {
 39762  		return TCL_ERROR
 39763  	}
 39764  	zDb = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 39765  	if int32(*(*int8)(unsafe.Pointer(zDb))) == 0 {
 39766  		zDb = uintptr(0)
 39767  	}
 39768  
 39769  	rc = sqlite3.Xsqlite3_file_control(tls, *(*uintptr)(unsafe.Pointer(bp)), zDb, SQLITE_FCNTL_CHUNK_SIZE, bp+8)
 39770  	if rc != 0 {
 39771  		tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 39772  		return TCL_ERROR
 39773  	}
 39774  	return TCL_OK
 39775  }
 39776  
 39777  func file_control_sizehint_test(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 39778  	bp := tls.Alloc(16)
 39779  	defer tls.Free(16)
 39780  
 39781  	var zDb uintptr
 39782  
 39783  	var rc int32
 39784  
 39785  	if objc != 4 {
 39786  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+17794)
 39787  		return TCL_ERROR
 39788  	}
 39789  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 ||
 39790  		tcl.XTcl_GetWideIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+8) != 0 {
 39791  		return TCL_ERROR
 39792  	}
 39793  	zDb = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 39794  	if int32(*(*int8)(unsafe.Pointer(zDb))) == 0 {
 39795  		zDb = uintptr(0)
 39796  	}
 39797  
 39798  	rc = sqlite3.Xsqlite3_file_control(tls, *(*uintptr)(unsafe.Pointer(bp)), zDb, SQLITE_FCNTL_SIZE_HINT, bp+8)
 39799  	if rc != 0 {
 39800  		tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 39801  		return TCL_ERROR
 39802  	}
 39803  	return TCL_OK
 39804  }
 39805  
 39806  func file_control_lockproxy_test(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 39807  	bp := tls.Alloc(496)
 39808  	defer tls.Free(496)
 39809  
 39810  	if objc != 3 {
 39811  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 39812  			tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+17809, 0))
 39813  		return TCL_ERROR
 39814  	}
 39815  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+72) != 0 {
 39816  		return TCL_ERROR
 39817  	}
 39818  
 39819  	{
 39820  		var rc int32
 39821  
 39822  		var zPwd uintptr
 39823  
 39824  		zPwd = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+80)
 39825  		if uint64(unsafe.Sizeof([400]int8{})) < uint64(*(*int32)(unsafe.Pointer(bp + 80))+20) {
 39826  			tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+17817, uintptr(0)))
 39827  			return TCL_ERROR
 39828  		}
 39829  		sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([400]int8{})), bp+84, ts+17829, libc.VaList(bp+48, zPwd))
 39830  		rc = sqlite3.Xsqlite3_file_control(tls, *(*uintptr)(unsafe.Pointer(bp + 72)), uintptr(0), SQLITE_FCNTL_SET_LOCKPROXYFILE, bp+84)
 39831  		if rc != 0 {
 39832  			tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, rc))
 39833  			return TCL_ERROR
 39834  		}
 39835  		rc = sqlite3.Xsqlite3_file_control(tls, *(*uintptr)(unsafe.Pointer(bp + 72)), uintptr(0), SQLITE_FCNTL_GET_LOCKPROXYFILE, bp+488)
 39836  		if libc.Xstrncmp(tls, bp+84, *(*uintptr)(unsafe.Pointer(bp + 488)), uint64(11)) != 0 {
 39837  			tcl.XTcl_AppendResult(tls, interp,
 39838  				libc.VaList(bp+56, ts+17843, 0))
 39839  			return TCL_ERROR
 39840  		}
 39841  		if rc != 0 {
 39842  			tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, rc))
 39843  			return TCL_ERROR
 39844  		}
 39845  		rc = sqlite3.Xsqlite3_file_control(tls, *(*uintptr)(unsafe.Pointer(bp + 72)), uintptr(0), SQLITE_FCNTL_SET_LOCKPROXYFILE, bp+84)
 39846  		if rc != 0 {
 39847  			tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, rc))
 39848  			return TCL_ERROR
 39849  		}
 39850  
 39851  	}
 39852  	return TCL_OK
 39853  }
 39854  
 39855  func file_control_persist_wal(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 39856  	bp := tls.Alloc(176)
 39857  	defer tls.Free(176)
 39858  
 39859  	var rc int32
 39860  
 39861  	if objc != 3 {
 39862  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 39863  			tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+17903, 0))
 39864  		return TCL_ERROR
 39865  	}
 39866  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+64) != 0 {
 39867  		return TCL_ERROR
 39868  	}
 39869  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+72) != 0 {
 39870  		return TCL_ERROR
 39871  	}
 39872  	rc = sqlite3.Xsqlite3_file_control(tls, *(*uintptr)(unsafe.Pointer(bp + 64)), uintptr(0), SQLITE_FCNTL_PERSIST_WAL, bp+72)
 39873  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([100]int8{})), bp+76, ts+17912, libc.VaList(bp+32, rc, *(*int32)(unsafe.Pointer(bp + 72))))
 39874  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+48, bp+76, uintptr(0)))
 39875  	return TCL_OK
 39876  }
 39877  
 39878  func file_control_powersafe_overwrite(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 39879  	bp := tls.Alloc(176)
 39880  	defer tls.Free(176)
 39881  
 39882  	var rc int32
 39883  
 39884  	if objc != 3 {
 39885  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 39886  			tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+17903, 0))
 39887  		return TCL_ERROR
 39888  	}
 39889  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+64) != 0 {
 39890  		return TCL_ERROR
 39891  	}
 39892  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+72) != 0 {
 39893  		return TCL_ERROR
 39894  	}
 39895  	rc = sqlite3.Xsqlite3_file_control(tls, *(*uintptr)(unsafe.Pointer(bp + 64)), uintptr(0), SQLITE_FCNTL_POWERSAFE_OVERWRITE, bp+72)
 39896  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([100]int8{})), bp+76, ts+17912, libc.VaList(bp+32, rc, *(*int32)(unsafe.Pointer(bp + 72))))
 39897  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+48, bp+76, uintptr(0)))
 39898  	return TCL_OK
 39899  }
 39900  
 39901  func file_control_vfsname(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 39902  	bp := tls.Alloc(64)
 39903  	defer tls.Free(64)
 39904  
 39905  	var zDbName uintptr = ts + 85
 39906  	*(*uintptr)(unsafe.Pointer(bp + 56)) = uintptr(0)
 39907  
 39908  	if objc != 2 && objc != 3 {
 39909  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 39910  			tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+17918, 0))
 39911  		return TCL_ERROR
 39912  	}
 39913  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+48) != 0 {
 39914  		return TCL_ERROR
 39915  	}
 39916  	if objc == 3 {
 39917  		zDbName = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 39918  	}
 39919  	sqlite3.Xsqlite3_file_control(tls, *(*uintptr)(unsafe.Pointer(bp + 48)), zDbName, SQLITE_FCNTL_VFSNAME, bp+56)
 39920  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, *(*uintptr)(unsafe.Pointer(bp + 56)), uintptr(0)))
 39921  	sqlite3.Xsqlite3_free(tls, *(*uintptr)(unsafe.Pointer(bp + 56)))
 39922  	return TCL_OK
 39923  }
 39924  
 39925  func file_control_reservebytes(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 39926  	bp := tls.Alloc(12)
 39927  	defer tls.Free(12)
 39928  
 39929  	var zDbName uintptr = ts + 85
 39930  	*(*int32)(unsafe.Pointer(bp + 8)) = 0
 39931  	var rc int32
 39932  
 39933  	if objc != 3 {
 39934  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+17930)
 39935  		return TCL_ERROR
 39936  	}
 39937  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 ||
 39938  		tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+8) != 0 {
 39939  		return TCL_ERROR
 39940  	}
 39941  
 39942  	rc = sqlite3.Xsqlite3_file_control(tls, *(*uintptr)(unsafe.Pointer(bp)), zDbName, SQLITE_FCNTL_RESERVE_BYTES, bp+8)
 39943  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3ErrName(tls, rc), -1))
 39944  	return TCL_OK
 39945  }
 39946  
 39947  func file_control_tempfilename(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 39948  	bp := tls.Alloc(64)
 39949  	defer tls.Free(64)
 39950  
 39951  	var zDbName uintptr = ts + 85
 39952  	*(*uintptr)(unsafe.Pointer(bp + 56)) = uintptr(0)
 39953  
 39954  	if objc != 2 && objc != 3 {
 39955  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 39956  			tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+17918, 0))
 39957  		return TCL_ERROR
 39958  	}
 39959  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+48) != 0 {
 39960  		return TCL_ERROR
 39961  	}
 39962  	if objc == 3 {
 39963  		zDbName = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 39964  	}
 39965  	sqlite3.Xsqlite3_file_control(tls, *(*uintptr)(unsafe.Pointer(bp + 48)), zDbName, SQLITE_FCNTL_TEMPFILENAME, bp+56)
 39966  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, *(*uintptr)(unsafe.Pointer(bp + 56)), uintptr(0)))
 39967  	sqlite3.Xsqlite3_free(tls, *(*uintptr)(unsafe.Pointer(bp + 56)))
 39968  	return TCL_OK
 39969  }
 39970  
 39971  func file_control_external_reader(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 39972  	bp := tls.Alloc(44)
 39973  	defer tls.Free(44)
 39974  
 39975  	var zName uintptr = ts + 85
 39976  	*(*int32)(unsafe.Pointer(bp + 40)) = 0
 39977  	var rc int32 = SQLITE_OK
 39978  
 39979  	if objc != 2 && objc != 3 {
 39980  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 39981  			tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+17918, 0))
 39982  		return TCL_ERROR
 39983  	}
 39984  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0 {
 39985  		return TCL_ERROR
 39986  	}
 39987  	if objc == 3 {
 39988  		zName = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 39989  	}
 39990  	rc = sqlite3.Xsqlite3_file_control(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), zName, SQLITE_FCNTL_EXTERNAL_READER, bp+40)
 39991  	if rc != SQLITE_OK {
 39992  		tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 39993  		return TCL_ERROR
 39994  	}
 39995  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 40))))
 39996  	return TCL_OK
 39997  }
 39998  
 39999  func vfs_list(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 40000  	var pVfs uintptr
 40001  	var pRet uintptr = tcl.XTcl_NewObj(tls)
 40002  	if objc != 1 {
 40003  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+584)
 40004  		return TCL_ERROR
 40005  	}
 40006  	for pVfs = sqlite3.Xsqlite3_vfs_find(tls, uintptr(0)); pVfs != 0; pVfs = (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpNext {
 40007  		tcl.XTcl_ListObjAppendElement(tls, interp, pRet, tcl.XTcl_NewStringObj(tls, (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FzName, -1))
 40008  	}
 40009  	tcl.XTcl_SetObjResult(tls, interp, pRet)
 40010  	return TCL_OK
 40011  }
 40012  
 40013  func test_limit(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 40014  	bp := tls.Alloc(68)
 40015  	defer tls.Free(68)
 40016  
 40017  	var rc int32
 40018  	var i int32
 40019  	var id int32 = 0
 40020  
 40021  	var zId uintptr
 40022  
 40023  	if objc != 4 {
 40024  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 40025  			tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+17935, 0))
 40026  		return TCL_ERROR
 40027  	}
 40028  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+56) != 0 {
 40029  		return TCL_ERROR
 40030  	}
 40031  	zId = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 40032  	for i = 0; uint64(i) < uint64(unsafe.Sizeof(aId))/uint64(unsafe.Sizeof(struct {
 40033  		FzName       uintptr
 40034  		Fid          int32
 40035  		F__ccgo_pad1 [4]byte
 40036  	}{})); i++ {
 40037  		if libc.Xstrcmp(tls, zId, aId[i].FzName) == 0 {
 40038  			id = aId[i].Fid
 40039  			break
 40040  		}
 40041  	}
 40042  	if uint64(i) >= uint64(unsafe.Sizeof(aId))/uint64(unsafe.Sizeof(struct {
 40043  		FzName       uintptr
 40044  		Fid          int32
 40045  		F__ccgo_pad1 [4]byte
 40046  	}{})) {
 40047  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+17948, zId, uintptr(0)))
 40048  		return TCL_ERROR
 40049  	}
 40050  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+64) != 0 {
 40051  		return TCL_ERROR
 40052  	}
 40053  	rc = sqlite3.Xsqlite3_limit(tls, *(*uintptr)(unsafe.Pointer(bp + 56)), id, *(*int32)(unsafe.Pointer(bp + 64)))
 40054  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, rc))
 40055  	return TCL_OK
 40056  }
 40057  
 40058  var aId = [14]struct {
 40059  	FzName       uintptr
 40060  	Fid          int32
 40061  	F__ccgo_pad1 [4]byte
 40062  }{
 40063  	{FzName: ts + 17969},
 40064  	{FzName: ts + 17989, Fid: SQLITE_LIMIT_SQL_LENGTH},
 40065  	{FzName: ts + 18013, Fid: SQLITE_LIMIT_COLUMN},
 40066  	{FzName: ts + 18033, Fid: SQLITE_LIMIT_EXPR_DEPTH},
 40067  	{FzName: ts + 18057, Fid: SQLITE_LIMIT_COMPOUND_SELECT},
 40068  	{FzName: ts + 18086, Fid: SQLITE_LIMIT_VDBE_OP},
 40069  	{FzName: ts + 18107, Fid: SQLITE_LIMIT_FUNCTION_ARG},
 40070  	{FzName: ts + 18133, Fid: SQLITE_LIMIT_ATTACHED},
 40071  	{FzName: ts + 18155, Fid: SQLITE_LIMIT_LIKE_PATTERN_LENGTH},
 40072  	{FzName: ts + 18188, Fid: SQLITE_LIMIT_VARIABLE_NUMBER},
 40073  	{FzName: ts + 18217, Fid: SQLITE_LIMIT_TRIGGER_DEPTH},
 40074  	{FzName: ts + 18244, Fid: SQLITE_LIMIT_WORKER_THREADS},
 40075  	{FzName: ts + 18272, Fid: -1},
 40076  	{FzName: ts + 18294, Fid: SQLITE_LIMIT_WORKER_THREADS + 1},
 40077  }
 40078  
 40079  func save_prng_state(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 40080  	var rc int32 = sqlite3.Xsqlite3_test_control(tls, 9999, 0)
 40081  	_ = rc
 40082  
 40083  	rc = sqlite3.Xsqlite3_test_control(tls, -1, 0)
 40084  
 40085  	sqlite3.Xsqlite3_test_control(tls, SQLITE_TESTCTRL_PRNG_SAVE, 0)
 40086  	return TCL_OK
 40087  }
 40088  
 40089  func restore_prng_state(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 40090  	sqlite3.Xsqlite3_test_control(tls, SQLITE_TESTCTRL_PRNG_RESTORE, 0)
 40091  	return TCL_OK
 40092  }
 40093  
 40094  func reset_prng_state(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 40095  	sqlite3.Xsqlite3_randomness(tls, 0, uintptr(0))
 40096  	return TCL_OK
 40097  }
 40098  
 40099  func prng_seed(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 40100  	bp := tls.Alloc(32)
 40101  	defer tls.Free(32)
 40102  
 40103  	*(*int32)(unsafe.Pointer(bp + 16)) = 0
 40104  	*(*uintptr)(unsafe.Pointer(bp + 24)) = uintptr(0)
 40105  	if objc != 2 && objc != 3 {
 40106  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+18314)
 40107  		return TCL_ERROR
 40108  	}
 40109  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp+16) != 0 {
 40110  		return TCL_ERROR
 40111  	}
 40112  	if objc == 3 && getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8))), bp+24) != 0 {
 40113  		return TCL_ERROR
 40114  	}
 40115  	sqlite3.Xsqlite3_test_control(tls, SQLITE_TESTCTRL_PRNG_SEED, libc.VaList(bp, *(*int32)(unsafe.Pointer(bp + 16)), *(*uintptr)(unsafe.Pointer(bp + 24))))
 40116  	return TCL_OK
 40117  }
 40118  
 40119  func extra_schema_checks(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 40120  	bp := tls.Alloc(12)
 40121  	defer tls.Free(12)
 40122  
 40123  	*(*int32)(unsafe.Pointer(bp + 8)) = 0
 40124  	if objc != 2 {
 40125  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+18324)
 40126  		return TCL_ERROR
 40127  	}
 40128  	if tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp+8) != 0 {
 40129  		return TCL_ERROR
 40130  	}
 40131  	sqlite3.Xsqlite3_test_control(tls, SQLITE_TESTCTRL_EXTRA_SCHEMA_CHECKS, libc.VaList(bp, *(*int32)(unsafe.Pointer(bp + 8))))
 40132  	return TCL_OK
 40133  }
 40134  
 40135  func database_may_be_corrupt(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 40136  	bp := tls.Alloc(8)
 40137  	defer tls.Free(8)
 40138  
 40139  	sqlite3.Xsqlite3_test_control(tls, SQLITE_TESTCTRL_NEVER_CORRUPT, libc.VaList(bp, 0))
 40140  	return TCL_OK
 40141  }
 40142  
 40143  func database_never_corrupt(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 40144  	bp := tls.Alloc(8)
 40145  	defer tls.Free(8)
 40146  
 40147  	sqlite3.Xsqlite3_test_control(tls, SQLITE_TESTCTRL_NEVER_CORRUPT, libc.VaList(bp, 1))
 40148  	return TCL_OK
 40149  }
 40150  
 40151  func test_pcache_stats(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 40152  	bp := tls.Alloc(16)
 40153  	defer tls.Free(16)
 40154  
 40155  	var pRet uintptr
 40156  
 40157  	sqlite3.Xsqlite3PcacheStats(tls, bp, bp+4, bp+8, bp+12)
 40158  
 40159  	pRet = tcl.XTcl_NewObj(tls)
 40160  	tcl.XTcl_ListObjAppendElement(tls, interp, pRet, tcl.XTcl_NewStringObj(tls, ts+18332, -1))
 40161  	tcl.XTcl_ListObjAppendElement(tls, interp, pRet, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp))))
 40162  	tcl.XTcl_ListObjAppendElement(tls, interp, pRet, tcl.XTcl_NewStringObj(tls, ts+18340, -1))
 40163  	tcl.XTcl_ListObjAppendElement(tls, interp, pRet, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 4))))
 40164  	tcl.XTcl_ListObjAppendElement(tls, interp, pRet, tcl.XTcl_NewStringObj(tls, ts+18344, -1))
 40165  	tcl.XTcl_ListObjAppendElement(tls, interp, pRet, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 8))))
 40166  	tcl.XTcl_ListObjAppendElement(tls, interp, pRet, tcl.XTcl_NewStringObj(tls, ts+18348, -1))
 40167  	tcl.XTcl_ListObjAppendElement(tls, interp, pRet, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 12))))
 40168  
 40169  	tcl.XTcl_SetObjResult(tls, interp, pRet)
 40170  
 40171  	return TCL_OK
 40172  }
 40173  
 40174  func test_unlock_notify_cb(tls *libc.TLS, aArg uintptr, nArg int32) {
 40175  	var ii int32
 40176  	for ii = 0; ii < nArg; ii++ {
 40177  		tcl.XTcl_EvalEx(tls, *(*uintptr)(unsafe.Pointer(aArg + uintptr(ii)*8)), ts+13692, -1, TCL_EVAL_GLOBAL)
 40178  	}
 40179  }
 40180  
 40181  func test_unlock_notify(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 40182  	bp := tls.Alloc(8)
 40183  	defer tls.Free(8)
 40184  
 40185  	var rc int32
 40186  
 40187  	if objc != 2 {
 40188  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2050)
 40189  		return TCL_ERROR
 40190  	}
 40191  
 40192  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 40193  		return TCL_ERROR
 40194  	}
 40195  	rc = sqlite3.Xsqlite3_unlock_notify(tls, *(*uintptr)(unsafe.Pointer(bp)), *(*uintptr)(unsafe.Pointer(&struct {
 40196  		f func(*libc.TLS, uintptr, int32)
 40197  	}{test_unlock_notify_cb})), interp)
 40198  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 40199  	return TCL_OK
 40200  }
 40201  
 40202  func test_wal_checkpoint(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 40203  	bp := tls.Alloc(8)
 40204  	defer tls.Free(8)
 40205  
 40206  	var zDb uintptr = uintptr(0)
 40207  
 40208  	var rc int32
 40209  
 40210  	if objc != 3 && objc != 2 {
 40211  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+18359)
 40212  		return TCL_ERROR
 40213  	}
 40214  
 40215  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 40216  		return TCL_ERROR
 40217  	}
 40218  	if objc == 3 {
 40219  		zDb = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 40220  	}
 40221  	rc = sqlite3.Xsqlite3_wal_checkpoint(tls, *(*uintptr)(unsafe.Pointer(bp)), zDb)
 40222  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 40223  	return TCL_OK
 40224  }
 40225  
 40226  func test_wal_checkpoint_v2(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 40227  	bp := tls.Alloc(96)
 40228  	defer tls.Free(96)
 40229  
 40230  	var zDb uintptr = uintptr(0)
 40231  
 40232  	var rc int32
 40233  
 40234  	*(*int32)(unsafe.Pointer(bp + 88)) = -555
 40235  	*(*int32)(unsafe.Pointer(bp + 92)) = -555
 40236  	var pRet uintptr
 40237  
 40238  	*(*[5]uintptr)(unsafe.Pointer(bp + 48)) = [5]uintptr{ts + 18369, ts + 18377, ts + 18382, ts + 18390, uintptr(0)}
 40239  
 40240  	if objc != 3 && objc != 4 {
 40241  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+18399)
 40242  		return TCL_ERROR
 40243  	}
 40244  
 40245  	if objc == 4 {
 40246  		zDb = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)))
 40247  	}
 40248  	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) &&
 40249  		TCL_OK != tcl.XTcl_GetIndexFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+48, ts+18414, 0, bp+40) {
 40250  		return TCL_ERROR
 40251  	}
 40252  
 40253  	rc = sqlite3.Xsqlite3_wal_checkpoint_v2(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), zDb, *(*int32)(unsafe.Pointer(bp + 40)), bp+88, bp+92)
 40254  	if rc != SQLITE_OK && rc != SQLITE_BUSY {
 40255  		var zErrCode uintptr = sqlite3.Xsqlite3ErrName(tls, rc)
 40256  		tcl.XTcl_ResetResult(tls, interp)
 40257  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, zErrCode, ts+9645, sqlite3.Xsqlite3_errmsg(tls, *(*uintptr)(unsafe.Pointer(bp + 32))), 0))
 40258  		return TCL_ERROR
 40259  	}
 40260  
 40261  	pRet = tcl.XTcl_NewObj(tls)
 40262  	tcl.XTcl_ListObjAppendElement(tls, interp, pRet, tcl.XTcl_NewIntObj(tls, func() int32 {
 40263  		if rc == SQLITE_BUSY {
 40264  			return 1
 40265  		}
 40266  		return 0
 40267  	}()))
 40268  	tcl.XTcl_ListObjAppendElement(tls, interp, pRet, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 88))))
 40269  	tcl.XTcl_ListObjAppendElement(tls, interp, pRet, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 92))))
 40270  	tcl.XTcl_SetObjResult(tls, interp, pRet)
 40271  
 40272  	return TCL_OK
 40273  }
 40274  
 40275  func test_wal_autocheckpoint(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 40276  	bp := tls.Alloc(12)
 40277  	defer tls.Free(12)
 40278  
 40279  	var rc int32
 40280  
 40281  	if objc != 3 {
 40282  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+18419)
 40283  		return TCL_ERROR
 40284  	}
 40285  
 40286  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 ||
 40287  		tcl.XTcl_GetIntFromObj(tls, uintptr(0), *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+8) != 0 {
 40288  		return TCL_ERROR
 40289  	}
 40290  
 40291  	rc = sqlite3.Xsqlite3_wal_autocheckpoint(tls, *(*uintptr)(unsafe.Pointer(bp)), *(*int32)(unsafe.Pointer(bp + 8)))
 40292  	tcl.XTcl_ResetResult(tls, interp)
 40293  	if rc != SQLITE_OK {
 40294  		var zErrCode uintptr = sqlite3.Xsqlite3ErrName(tls, rc)
 40295  		tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, zErrCode, -1))
 40296  		return TCL_ERROR
 40297  	}
 40298  
 40299  	return TCL_OK
 40300  }
 40301  
 40302  type LogCallback = struct {
 40303  	FpInterp uintptr
 40304  	FpObj    uintptr
 40305  }
 40306  
 40307  var logcallback = LogCallback{}
 40308  
 40309  func xLogcallback(tls *libc.TLS, unused uintptr, err int32, zMsg uintptr) {
 40310  	var pNew uintptr = tcl.XTcl_DuplicateObj(tls, logcallback.FpObj)
 40311  	(*Tcl_Obj)(unsafe.Pointer(pNew)).FrefCount++
 40312  	tcl.XTcl_ListObjAppendElement(tls,
 40313  		uintptr(0), pNew, tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3ErrName(tls, err), -1))
 40314  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pNew, tcl.XTcl_NewStringObj(tls, zMsg, -1))
 40315  	tcl.XTcl_EvalObjEx(tls, logcallback.FpInterp, pNew, TCL_EVAL_GLOBAL|TCL_EVAL_DIRECT)
 40316  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 40317  		if libc.PreDecInt32(&(*Tcl_Obj)(unsafe.Pointer(pNew)).FrefCount, 1) <= 0 {
 40318  			tcl.XTclFreeObj(tls, pNew)
 40319  		}
 40320  	}
 40321  }
 40322  
 40323  func test_sqlite3_log(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 40324  	bp := tls.Alloc(32)
 40325  	defer tls.Free(32)
 40326  
 40327  	if objc > 2 {
 40328  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+10187)
 40329  		return TCL_ERROR
 40330  	}
 40331  	if logcallback.FpObj != 0 {
 40332  		for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 40333  			if libc.PreDecInt32(&(*Tcl_Obj)(unsafe.Pointer(logcallback.FpObj)).FrefCount, 1) <= 0 {
 40334  				tcl.XTclFreeObj(tls, logcallback.FpObj)
 40335  			}
 40336  		}
 40337  		logcallback.FpObj = uintptr(0)
 40338  		logcallback.FpInterp = uintptr(0)
 40339  		sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_LOG, libc.VaList(bp, uintptr(0), uintptr(0)))
 40340  	}
 40341  	if objc > 1 {
 40342  		logcallback.FpObj = *(*uintptr)(unsafe.Pointer(objv + 1*8))
 40343  		(*Tcl_Obj)(unsafe.Pointer(logcallback.FpObj)).FrefCount++
 40344  		logcallback.FpInterp = interp
 40345  		sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_LOG, libc.VaList(bp+16, *(*uintptr)(unsafe.Pointer(&struct {
 40346  			f func(*libc.TLS, uintptr, int32, uintptr)
 40347  		}{xLogcallback})), uintptr(0)))
 40348  	}
 40349  	return TCL_OK
 40350  }
 40351  
 40352  func runAsObjProc(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 40353  	bp := tls.Alloc(112)
 40354  	defer tls.Free(112)
 40355  
 40356  	if objc < 2 {
 40357  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+18428)
 40358  		return TCL_ERROR
 40359  	}
 40360  	if !(tcl.XTcl_GetCommandInfo(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+48) != 0) {
 40361  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14859,
 40362  			tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), uintptr(0)))
 40363  		return TCL_ERROR
 40364  	}
 40365  	if (*Tcl_CmdInfo)(unsafe.Pointer(bp+48)).FobjProc == uintptr(0) {
 40366  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+24, ts+18440,
 40367  			tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), uintptr(0)))
 40368  		return TCL_ERROR
 40369  	}
 40370  	return (*struct {
 40371  		f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
 40372  	})(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)
 40373  }
 40374  
 40375  func printExplainQueryPlan(tls *libc.TLS, pStmt uintptr) int32 {
 40376  	bp := tls.Alloc(48)
 40377  	defer tls.Free(48)
 40378  
 40379  	var zSql uintptr
 40380  	var zExplain uintptr
 40381  
 40382  	var rc int32
 40383  
 40384  	zSql = sqlite3.Xsqlite3_sql(tls, pStmt)
 40385  	if zSql == uintptr(0) {
 40386  		return SQLITE_ERROR
 40387  	}
 40388  
 40389  	zExplain = sqlite3.Xsqlite3_mprintf(tls, ts+330, libc.VaList(bp, zSql))
 40390  	if zExplain == uintptr(0) {
 40391  		return SQLITE_NOMEM
 40392  	}
 40393  
 40394  	rc = sqlite3.Xsqlite3_prepare_v2(tls, sqlite3.Xsqlite3_db_handle(tls, pStmt), zExplain, -1, bp+40, uintptr(0))
 40395  	sqlite3.Xsqlite3_free(tls, zExplain)
 40396  	if rc != SQLITE_OK {
 40397  		return rc
 40398  	}
 40399  
 40400  	for SQLITE_ROW == sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp + 40))) {
 40401  		var iSelectid int32 = sqlite3.Xsqlite3_column_int(tls, *(*uintptr)(unsafe.Pointer(bp + 40)), 0)
 40402  		var iOrder int32 = sqlite3.Xsqlite3_column_int(tls, *(*uintptr)(unsafe.Pointer(bp + 40)), 1)
 40403  		var iFrom int32 = sqlite3.Xsqlite3_column_int(tls, *(*uintptr)(unsafe.Pointer(bp + 40)), 2)
 40404  		var zDetail uintptr = sqlite3.Xsqlite3_column_text(tls, *(*uintptr)(unsafe.Pointer(bp + 40)), 3)
 40405  
 40406  		libc.Xprintf(tls, ts+18465, libc.VaList(bp+8, iSelectid, iOrder, iFrom, zDetail))
 40407  	}
 40408  
 40409  	return sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 40)))
 40410  }
 40411  
 40412  func test_print_eqp(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 40413  	bp := tls.Alloc(8)
 40414  	defer tls.Free(8)
 40415  
 40416  	var rc int32
 40417  
 40418  	if objc != 2 {
 40419  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+17042)
 40420  		return TCL_ERROR
 40421  	}
 40422  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 40423  		return TCL_ERROR
 40424  	}
 40425  	rc = printExplainQueryPlan(tls, *(*uintptr)(unsafe.Pointer(bp)))
 40426  
 40427  	libc.Xfflush(tls, libc.X__stdoutp)
 40428  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 40429  	return TCL_OK
 40430  }
 40431  
 40432  func testLocaltime(tls *libc.TLS, aliasT uintptr, aliasTM uintptr) int32 {
 40433  	var t time_t = *(*time_t)(unsafe.Pointer(aliasT))
 40434  	var pTm uintptr = aliasTM
 40435  	var altT time_t
 40436  	var iJD sqlite3_int64
 40437  	var Z int32
 40438  	var A int32
 40439  	var B int32
 40440  	var C int32
 40441  	var D int32
 40442  	var E int32
 40443  	var X1 int32
 40444  	var S int32
 40445  
 40446  	if t/int64(86400)&int64(1) != 0 {
 40447  		altT = t + int64(1800)
 40448  	} else {
 40449  		altT = t - int64(1800)
 40450  	}
 40451  	iJD = altT + 210866760000
 40452  	Z = int32((iJD + int64(43200)) / int64(86400))
 40453  	A = libc.Int32FromFloat64((float64(Z) - 1867216.25) / 36524.25)
 40454  	A = Z + 1 + A - A/4
 40455  	B = A + 1524
 40456  	C = libc.Int32FromFloat64((float64(B) - 122.1) / 365.25)
 40457  	D = 36525 * (C & 32767) / 100
 40458  	E = libc.Int32FromFloat64(float64(B-D) / 30.6001)
 40459  	X1 = libc.Int32FromFloat64(30.6001 * float64(E))
 40460  	(*tm)(unsafe.Pointer(pTm)).Ftm_mday = B - D - X1
 40461  	(*tm)(unsafe.Pointer(pTm)).Ftm_mon = func() int32 {
 40462  		if E < 14 {
 40463  			return E - 2
 40464  		}
 40465  		return E - 14
 40466  	}()
 40467  	(*tm)(unsafe.Pointer(pTm)).Ftm_year = func() int32 {
 40468  		if (*tm)(unsafe.Pointer(pTm)).Ftm_mon > 1 {
 40469  			return C - 4716
 40470  		}
 40471  		return C - 4715
 40472  	}() - 1900
 40473  	S = int32((iJD + int64(43200)) % int64(86400))
 40474  	(*tm)(unsafe.Pointer(pTm)).Ftm_hour = S / 3600
 40475  	(*tm)(unsafe.Pointer(pTm)).Ftm_min = S / 60 % 60
 40476  	(*tm)(unsafe.Pointer(pTm)).Ftm_sec = S % 60
 40477  	return libc.Bool32(t == int64(959609760))
 40478  }
 40479  
 40480  func test_test_control(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 40481  	bp := tls.Alloc(192)
 40482  	defer tls.Free(192)
 40483  
 40484  	*(*[4]Verb)(unsafe.Pointer(bp + 72)) = [4]Verb{
 40485  		{FzName: ts + 18478, Fi: SQLITE_TESTCTRL_LOCALTIME_FAULT},
 40486  		{FzName: ts + 18510, Fi: SQLITE_TESTCTRL_SORTER_MMAP},
 40487  		{FzName: ts + 18538, Fi: SQLITE_TESTCTRL_IMPOSTER},
 40488  		{FzName: ts + 18563, Fi: SQLITE_TESTCTRL_INTERNAL_FUNCTIONS},
 40489  	}
 40490  
 40491  	var iFlag int32
 40492  	var rc int32
 40493  
 40494  	if objc < 2 {
 40495  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+18598)
 40496  		return TCL_ERROR
 40497  	}
 40498  
 40499  	rc = tcl.XTcl_GetIndexFromObjStruct(tls,
 40500  		interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp+72, int32(unsafe.Sizeof(Verb{})), ts+18611, 0, bp+136)
 40501  	if rc != TCL_OK {
 40502  		return rc
 40503  	}
 40504  
 40505  	iFlag = (*Verb)(unsafe.Pointer(bp + 72 + uintptr(*(*int32)(unsafe.Pointer(bp + 136)))*16)).Fi
 40506  	switch iFlag {
 40507  	case SQLITE_TESTCTRL_INTERNAL_FUNCTIONS:
 40508  		{
 40509  			*(*uintptr)(unsafe.Pointer(bp + 144)) = uintptr(0)
 40510  			if objc != 3 {
 40511  				tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+2050)
 40512  				return TCL_ERROR
 40513  			}
 40514  			if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8))), bp+144) != 0 {
 40515  				return TCL_ERROR
 40516  			}
 40517  			sqlite3.Xsqlite3_test_control(tls, SQLITE_TESTCTRL_INTERNAL_FUNCTIONS, libc.VaList(bp, *(*uintptr)(unsafe.Pointer(bp + 144))))
 40518  			break
 40519  
 40520  		}
 40521  	case SQLITE_TESTCTRL_LOCALTIME_FAULT:
 40522  		{
 40523  			if objc != 3 {
 40524  				tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+18616)
 40525  				return TCL_ERROR
 40526  			}
 40527  			if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+152) != 0 {
 40528  				return TCL_ERROR
 40529  			}
 40530  			sqlite3.Xsqlite3_test_control(tls, iFlag, libc.VaList(bp+8, *(*int32)(unsafe.Pointer(bp + 152)), *(*uintptr)(unsafe.Pointer(&struct {
 40531  				f func(*libc.TLS, uintptr, uintptr) int32
 40532  			}{testLocaltime}))))
 40533  			break
 40534  
 40535  		}
 40536  
 40537  	case SQLITE_TESTCTRL_SORTER_MMAP:
 40538  		{
 40539  			if objc != 4 {
 40540  				tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+18622)
 40541  				return TCL_ERROR
 40542  			}
 40543  			if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8))), bp+160) != 0 {
 40544  				return TCL_ERROR
 40545  			}
 40546  			if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+168) != 0 {
 40547  				return TCL_ERROR
 40548  			}
 40549  			sqlite3.Xsqlite3_test_control(tls, SQLITE_TESTCTRL_SORTER_MMAP, libc.VaList(bp+24, *(*uintptr)(unsafe.Pointer(bp + 160)), *(*int32)(unsafe.Pointer(bp + 168))))
 40550  			break
 40551  
 40552  		}
 40553  
 40554  	case SQLITE_TESTCTRL_IMPOSTER:
 40555  		{
 40556  			var zDbName uintptr
 40557  
 40558  			if objc != 6 {
 40559  				tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+18631)
 40560  				return TCL_ERROR
 40561  			}
 40562  			if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8))), bp+176) != 0 {
 40563  				return TCL_ERROR
 40564  			}
 40565  			zDbName = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)))
 40566  			if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 4*8)), bp+184) != 0 {
 40567  				return TCL_ERROR
 40568  			}
 40569  			if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 5*8)), bp+188) != 0 {
 40570  				return TCL_ERROR
 40571  			}
 40572  			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))))
 40573  			break
 40574  
 40575  		}
 40576  	}
 40577  
 40578  	tcl.XTcl_ResetResult(tls, interp)
 40579  	return TCL_OK
 40580  }
 40581  
 40582  type Verb = struct {
 40583  	FzName       uintptr
 40584  	Fi           int32
 40585  	F__ccgo_pad1 [4]byte
 40586  }
 40587  
 40588  func test_getrusage(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 40589  	bp := tls.Alloc(1216)
 40590  	defer tls.Free(1216)
 40591  
 40592  	libc.X__builtin___memset_chk(tls, bp+48, 0, uint64(unsafe.Sizeof(rusage{})), libc.X__builtin_object_size(tls, bp+48, 0))
 40593  	libc.Xgetrusage(tls, RUSAGE_SELF, bp+48)
 40594  
 40595  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([1024]int8{})), bp+192,
 40596  		ts+18652,
 40597  		libc.VaList(bp, int32((*rusage)(unsafe.Pointer(bp+48)).Fru_utime.Ftv_sec), (*rusage)(unsafe.Pointer(bp+48)).Fru_utime.Ftv_usec,
 40598  			int32((*rusage)(unsafe.Pointer(bp+48)).Fru_stime.Ftv_sec), (*rusage)(unsafe.Pointer(bp+48)).Fru_stime.Ftv_usec,
 40599  			int32((*rusage)(unsafe.Pointer(bp+48)).Fru_minflt), int32((*rusage)(unsafe.Pointer(bp+48)).Fru_majflt)))
 40600  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, bp+192, -1))
 40601  	return TCL_OK
 40602  }
 40603  
 40604  func optimization_control(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 40605  	bp := tls.Alloc(68)
 40606  	defer tls.Free(68)
 40607  
 40608  	var i int32
 40609  
 40610  	var zOpt uintptr
 40611  
 40612  	var mask int32 = 0
 40613  
 40614  	if objc != 4 {
 40615  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+18712)
 40616  		return TCL_ERROR
 40617  	}
 40618  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+56) != 0 {
 40619  		return TCL_ERROR
 40620  	}
 40621  	if tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+64) != 0 {
 40622  		return TCL_ERROR
 40623  	}
 40624  	zOpt = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 40625  	for i = 0; uint64(i) < uint64(unsafe.Sizeof(aOpt))/uint64(unsafe.Sizeof(struct {
 40626  		FzOptName    uintptr
 40627  		Fmask        int32
 40628  		F__ccgo_pad1 [4]byte
 40629  	}{})); i++ {
 40630  		if libc.Xstrcmp(tls, zOpt, aOpt[i].FzOptName) == 0 {
 40631  			mask = aOpt[i].Fmask
 40632  			break
 40633  		}
 40634  	}
 40635  	if *(*int32)(unsafe.Pointer(bp + 64)) != 0 {
 40636  		mask = ^mask
 40637  	}
 40638  	if uint64(i) >= uint64(unsafe.Sizeof(aOpt))/uint64(unsafe.Sizeof(struct {
 40639  		FzOptName    uintptr
 40640  		Fmask        int32
 40641  		F__ccgo_pad1 [4]byte
 40642  	}{})) {
 40643  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+18727,
 40644  			uintptr(0)))
 40645  		for i = 0; uint64(i) < uint64(unsafe.Sizeof(aOpt))/uint64(unsafe.Sizeof(struct {
 40646  			FzOptName    uintptr
 40647  			Fmask        int32
 40648  			F__ccgo_pad1 [4]byte
 40649  		}{})); i++ {
 40650  			tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+16, ts+4894, aOpt[i].FzOptName, uintptr(0)))
 40651  		}
 40652  		return TCL_ERROR
 40653  	}
 40654  	sqlite3.Xsqlite3_test_control(tls, SQLITE_TESTCTRL_OPTIMIZATIONS, libc.VaList(bp+40, *(*uintptr)(unsafe.Pointer(bp + 56)), mask))
 40655  	return TCL_OK
 40656  }
 40657  
 40658  var aOpt = [14]struct {
 40659  	FzOptName    uintptr
 40660  	Fmask        int32
 40661  	F__ccgo_pad1 [4]byte
 40662  }{
 40663  	{FzOptName: ts + 18768, Fmask: libc.Int32FromUint32(SQLITE_AllOpts)},
 40664  	{FzOptName: ts + 18772},
 40665  	{FzOptName: ts + 18777, Fmask: SQLITE_QueryFlattener},
 40666  	{FzOptName: ts + 18793, Fmask: SQLITE_GroupByOrder},
 40667  	{FzOptName: ts + 18807, Fmask: SQLITE_FactorOutConst},
 40668  	{FzOptName: ts + 18824, Fmask: SQLITE_DistinctOpt},
 40669  	{FzOptName: ts + 18837, Fmask: SQLITE_CoverIdxScan},
 40670  	{FzOptName: ts + 18852, Fmask: SQLITE_OrderByIdxJoin},
 40671  	{FzOptName: ts + 18870, Fmask: SQLITE_Transitive},
 40672  	{FzOptName: ts + 18881, Fmask: SQLITE_OmitNoopJoin},
 40673  	{FzOptName: ts + 18896, Fmask: SQLITE_Stat4},
 40674  	{FzOptName: ts + 18902, Fmask: SQLITE_SkipScan},
 40675  	{FzOptName: ts + 18912, Fmask: SQLITE_PushDown},
 40676  	{FzOptName: ts + 18922, Fmask: SQLITE_BalancedMerge},
 40677  }
 40678  
 40679  func tclLoadStaticExtensionCmd(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 40680  	bp := tls.Alloc(80)
 40681  	defer tls.Free(80)
 40682  
 40683  	var zName uintptr
 40684  	var i int32
 40685  	var j int32
 40686  	var rc int32
 40687  	*(*uintptr)(unsafe.Pointer(bp + 72)) = uintptr(0)
 40688  	if objc < 3 {
 40689  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+18937)
 40690  		return TCL_ERROR
 40691  	}
 40692  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+64) != 0 {
 40693  		return TCL_ERROR
 40694  	}
 40695  	for j = 2; j < objc; j++ {
 40696  		zName = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(j)*8)))
 40697  		for i = 0; i < int32(uint64(unsafe.Sizeof(aExtension))/uint64(unsafe.Sizeof(struct {
 40698  			FzExtName uintptr
 40699  			FpInit    uintptr
 40700  		}{}))); i++ {
 40701  			if libc.Xstrcmp(tls, zName, aExtension[i].FzExtName) == 0 {
 40702  				break
 40703  			}
 40704  		}
 40705  		if i >= int32(uint64(unsafe.Sizeof(aExtension))/uint64(unsafe.Sizeof(struct {
 40706  			FzExtName uintptr
 40707  			FpInit    uintptr
 40708  		}{}))) {
 40709  			tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+18949, zName, uintptr(0)))
 40710  			return TCL_ERROR
 40711  		}
 40712  		if aExtension[i].FpInit != 0 {
 40713  			rc = (*struct {
 40714  				f func(*libc.TLS, uintptr, uintptr, uintptr) int32
 40715  			})(unsafe.Pointer(&struct{ uintptr }{aExtension[i].FpInit})).f(tls, *(*uintptr)(unsafe.Pointer(bp + 64)), bp+72, uintptr(0))
 40716  		} else {
 40717  			rc = SQLITE_OK
 40718  		}
 40719  		if rc != SQLITE_OK && rc != SQLITE_OK|int32(1)<<8 || *(*uintptr)(unsafe.Pointer(bp + 72)) != 0 {
 40720  			tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+24, ts+18969, zName, ts+18988, *(*uintptr)(unsafe.Pointer(bp + 72)),
 40721  				uintptr(0)))
 40722  			sqlite3.Xsqlite3_free(tls, *(*uintptr)(unsafe.Pointer(bp + 72)))
 40723  			return TCL_ERROR
 40724  		}
 40725  	}
 40726  	return TCL_OK
 40727  }
 40728  
 40729  var aExtension = [22]struct {
 40730  	FzExtName uintptr
 40731  	FpInit    uintptr
 40732  }{
 40733  	{FzExtName: ts + 18998, FpInit: 0},
 40734  	{FzExtName: ts + 19005, FpInit: 0},
 40735  	{FzExtName: ts + 4060, FpInit: 0},
 40736  	{FzExtName: ts + 19015, FpInit: 0},
 40737  	{FzExtName: ts + 4815, FpInit: 0},
 40738  	{FzExtName: ts + 4838, FpInit: 0},
 40739  	{FzExtName: ts + 4896, FpInit: 0},
 40740  	{FzExtName: ts + 4974, FpInit: 0},
 40741  	{FzExtName: ts + 19023, FpInit: 0},
 40742  	{FzExtName: ts + 5483, FpInit: 0},
 40743  	{FzExtName: ts + 5507, FpInit: 0},
 40744  	{FzExtName: ts + 19030, FpInit: 0},
 40745  	{FzExtName: ts + 6087, FpInit: 0},
 40746  	{FzExtName: ts + 6162, FpInit: 0},
 40747  	{FzExtName: ts + 6535, FpInit: 0},
 40748  	{FzExtName: ts + 6831, FpInit: 0},
 40749  	{FzExtName: ts + 6846, FpInit: 0},
 40750  	{FzExtName: ts + 19039, FpInit: 0},
 40751  	{FzExtName: ts + 19046, FpInit: 0},
 40752  	{FzExtName: ts + 19055, FpInit: 0},
 40753  	{FzExtName: ts + 8921, FpInit: 0},
 40754  	{FzExtName: ts + 9463, FpInit: 0},
 40755  }
 40756  
 40757  func sorter_test_fakeheap(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 40758  	bp := tls.Alloc(4)
 40759  	defer tls.Free(4)
 40760  
 40761  	if objc != 2 {
 40762  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+10152)
 40763  		return TCL_ERROR
 40764  	}
 40765  
 40766  	if tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp) != 0 {
 40767  		return TCL_ERROR
 40768  	}
 40769  
 40770  	if *(*int32)(unsafe.Pointer(bp)) != 0 {
 40771  		if sqlite3.Xsqlite3Config.FpHeap == uintptr(0) {
 40772  			sqlite3.Xsqlite3Config.FpHeap = libc.UintptrFromInt64(int64(-1))
 40773  		}
 40774  	} else {
 40775  		if sqlite3.Xsqlite3Config.FpHeap == libc.UintptrFromInt64(int64(-1)) {
 40776  			sqlite3.Xsqlite3Config.FpHeap = uintptr(0)
 40777  		}
 40778  	}
 40779  
 40780  	tcl.XTcl_ResetResult(tls, interp)
 40781  	return TCL_OK
 40782  }
 40783  
 40784  func sorter_test_sort4_helper(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 40785  	bp := tls.Alloc(80)
 40786  	defer tls.Free(80)
 40787  
 40788  	var zSql1 uintptr
 40789  	var zSql2 uintptr
 40790  
 40791  	var iStep int32
 40792  	var iCksum1 uint32
 40793  	var iCksum2 uint32
 40794  	var rc int32
 40795  	var iB int32
 40796  
 40797  	var a int32
 40798  	var a1 int32
 40799  	iCksum1 = uint32(0)
 40800  	iCksum2 = uint32(0)
 40801  
 40802  	if !(objc != 5) {
 40803  		goto __1
 40804  	}
 40805  	tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+19062)
 40806  	return TCL_ERROR
 40807  __1:
 40808  	;
 40809  	if !(getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+56) != 0) {
 40810  		goto __2
 40811  	}
 40812  	return TCL_ERROR
 40813  __2:
 40814  	;
 40815  	zSql1 = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 40816  	if !(tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+64) != 0) {
 40817  		goto __3
 40818  	}
 40819  	return TCL_ERROR
 40820  __3:
 40821  	;
 40822  	zSql2 = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 4*8)))
 40823  
 40824  	rc = sqlite3.Xsqlite3_prepare_v2(tls, *(*uintptr)(unsafe.Pointer(bp + 56)), zSql1, -1, bp+72, uintptr(0))
 40825  	if !(rc != SQLITE_OK) {
 40826  		goto __4
 40827  	}
 40828  	goto sql_error
 40829  __4:
 40830  	;
 40831  	iB = sqlite3.Xsqlite3_column_count(tls, *(*uintptr)(unsafe.Pointer(bp + 72))) - 1
 40832  	iStep = 0
 40833  __5:
 40834  	if !(iStep < *(*int32)(unsafe.Pointer(bp + 64)) && SQLITE_ROW == sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp + 72)))) {
 40835  		goto __7
 40836  	}
 40837  	a = sqlite3.Xsqlite3_column_int(tls, *(*uintptr)(unsafe.Pointer(bp + 72)), 0)
 40838  	if !(a != sqlite3.Xsqlite3_column_int(tls, *(*uintptr)(unsafe.Pointer(bp + 72)), iB)) {
 40839  		goto __8
 40840  	}
 40841  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+19081, 0))
 40842  	return TCL_ERROR
 40843  __8:
 40844  	;
 40845  	iCksum1 = iCksum1 + (iCksum1<<3 + uint32(a))
 40846  	goto __6
 40847  __6:
 40848  	iStep++
 40849  	goto __5
 40850  	goto __7
 40851  __7:
 40852  	;
 40853  	rc = sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 72)))
 40854  	if !(rc != SQLITE_OK) {
 40855  		goto __9
 40856  	}
 40857  	goto sql_error
 40858  __9:
 40859  	;
 40860  	rc = sqlite3.Xsqlite3_prepare_v2(tls, *(*uintptr)(unsafe.Pointer(bp + 56)), zSql2, -1, bp+72, uintptr(0))
 40861  	if !(rc != SQLITE_OK) {
 40862  		goto __10
 40863  	}
 40864  	goto sql_error
 40865  __10:
 40866  	;
 40867  	iStep = 0
 40868  __11:
 40869  	if !(SQLITE_ROW == sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp + 72)))) {
 40870  		goto __13
 40871  	}
 40872  	a1 = sqlite3.Xsqlite3_column_int(tls, *(*uintptr)(unsafe.Pointer(bp + 72)), 0)
 40873  	iCksum2 = iCksum2 + (iCksum2<<3 + uint32(a1))
 40874  	goto __12
 40875  __12:
 40876  	iStep++
 40877  	goto __11
 40878  	goto __13
 40879  __13:
 40880  	;
 40881  	rc = sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 72)))
 40882  	if !(rc != SQLITE_OK) {
 40883  		goto __14
 40884  	}
 40885  	goto sql_error
 40886  __14:
 40887  	;
 40888  	if !(iCksum1 != iCksum2) {
 40889  		goto __15
 40890  	}
 40891  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+16, ts+19100, 0))
 40892  	return TCL_ERROR
 40893  __15:
 40894  	;
 40895  	return TCL_OK
 40896  sql_error:
 40897  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+19118, sqlite3.Xsqlite3_errmsg(tls, *(*uintptr)(unsafe.Pointer(bp + 56))), 0))
 40898  	return TCL_ERROR
 40899  }
 40900  
 40901  func test_bad_behavior(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 40902  	bp := tls.Alloc(44)
 40903  	defer tls.Free(44)
 40904  
 40905  	var xyz int32
 40906  	var i int32 = *(*int32)(unsafe.Pointer(clientData))
 40907  	var j int32
 40908  
 40909  	var a uintptr
 40910  	if objc != 2 {
 40911  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+19130)
 40912  		return TCL_ERROR
 40913  	}
 40914  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp) != 0 {
 40915  		return TCL_ERROR
 40916  	}
 40917  	switch *(*int32)(unsafe.Pointer(bp)) {
 40918  	case 1:
 40919  		{
 40920  			xyz = 0x7fffff00 - i
 40921  			xyz = xyz + 0x100
 40922  			tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, xyz))
 40923  			break
 40924  
 40925  		}
 40926  	case 2:
 40927  		{
 40928  			*(*int32)(unsafe.Pointer(bp + 4 + 1*4)) = 5
 40929  			if *(*int32)(unsafe.Pointer(bp + 4 + uintptr(i)*4)) > 0 {
 40930  				*(*int32)(unsafe.Pointer(bp + 4 + 1*4))++
 40931  			}
 40932  			tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 4 + 1*4))))
 40933  			break
 40934  
 40935  		}
 40936  	case 3:
 40937  		{
 40938  			a = libc.Xmalloc(tls, uint64(unsafe.Sizeof(int32(0)))*uint64(10))
 40939  			for j = 0; j < 10; j++ {
 40940  				*(*int32)(unsafe.Pointer(a + uintptr(j)*4)) = j
 40941  			}
 40942  			libc.Xfree(tls, a)
 40943  			tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(a + uintptr(i)*4))))
 40944  			break
 40945  
 40946  		}
 40947  	case 4:
 40948  		{
 40949  			tcl.XTcl_Panic(tls, ts+19135, 0)
 40950  			break
 40951  
 40952  		}
 40953  	}
 40954  	return TCL_OK
 40955  }
 40956  
 40957  func test_register_dbstat_vtab(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 40958  	bp := tls.Alloc(64)
 40959  	defer tls.Free(64)
 40960  
 40961  	var zDb uintptr
 40962  
 40963  	if objc != 2 {
 40964  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2050)
 40965  		return TCL_ERROR
 40966  	}
 40967  
 40968  	zDb = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 40969  	if tcl.XTcl_GetCommandInfo(tls, interp, zDb, bp) != 0 {
 40970  		var db uintptr = (*struct{ Fdb uintptr })(unsafe.Pointer((*Tcl_CmdInfo)(unsafe.Pointer(bp)).FobjClientData)).Fdb
 40971  		sqlite3.Xsqlite3DbstatRegister(tls, db)
 40972  	}
 40973  	return TCL_OK
 40974  }
 40975  
 40976  func test_sqlite3_db_config(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 40977  	bp := tls.Alloc(28)
 40978  	defer tls.Free(28)
 40979  
 40980  	var i int32
 40981  	*(*int32)(unsafe.Pointer(bp + 24)) = 0
 40982  	var zSetting uintptr
 40983  
 40984  	if objc != 4 && objc != 3 {
 40985  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+19152)
 40986  		return TCL_ERROR
 40987  	}
 40988  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+16) != 0 {
 40989  		return TCL_ERROR
 40990  	}
 40991  	zSetting = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 40992  	if sqlite3.Xsqlite3_strglob(tls, ts+19171, zSetting) == 0 {
 40993  		zSetting += uintptr(7)
 40994  	}
 40995  	if sqlite3.Xsqlite3_strglob(tls, ts+19180, zSetting) == 0 {
 40996  		zSetting += uintptr(9)
 40997  	}
 40998  	if sqlite3.Xsqlite3_strglob(tls, ts+19191, zSetting) == 0 {
 40999  		zSetting += uintptr(7)
 41000  	}
 41001  	for i = 0; i < int32(uint64(unsafe.Sizeof(aSetting))/uint64(unsafe.Sizeof(struct {
 41002  		FzName       uintptr
 41003  		FeVal        int32
 41004  		F__ccgo_pad1 [4]byte
 41005  	}{}))); i++ {
 41006  		if libc.Xstrcmp(tls, zSetting, aSetting[i].FzName) == 0 {
 41007  			break
 41008  		}
 41009  	}
 41010  	if i >= int32(uint64(unsafe.Sizeof(aSetting))/uint64(unsafe.Sizeof(struct {
 41011  		FzName       uintptr
 41012  		FeVal        int32
 41013  		F__ccgo_pad1 [4]byte
 41014  	}{}))) {
 41015  		tcl.XTcl_SetObjResult(tls, interp,
 41016  			tcl.XTcl_NewStringObj(tls, ts+19200, -1))
 41017  		return TCL_ERROR
 41018  	}
 41019  	if objc == 4 {
 41020  		if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+24) != 0 {
 41021  			return TCL_ERROR
 41022  		}
 41023  	} else {
 41024  		*(*int32)(unsafe.Pointer(bp + 24)) = -1
 41025  	}
 41026  	sqlite3.Xsqlite3_db_config(tls, *(*uintptr)(unsafe.Pointer(bp + 16)), aSetting[i].FeVal, libc.VaList(bp, *(*int32)(unsafe.Pointer(bp + 24)), bp+24))
 41027  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 24))))
 41028  	return TCL_OK
 41029  }
 41030  
 41031  var aSetting = [14]struct {
 41032  	FzName       uintptr
 41033  	FeVal        int32
 41034  	F__ccgo_pad1 [4]byte
 41035  }{
 41036  	{FzName: ts + 19234, FeVal: SQLITE_DBCONFIG_ENABLE_FKEY},
 41037  	{FzName: ts + 19239, FeVal: SQLITE_DBCONFIG_ENABLE_TRIGGER},
 41038  	{FzName: ts + 19247, FeVal: SQLITE_DBCONFIG_ENABLE_FTS3_TOKENIZER},
 41039  	{FzName: ts + 19262, FeVal: SQLITE_DBCONFIG_ENABLE_LOAD_EXTENSION},
 41040  	{FzName: ts + 19277, FeVal: SQLITE_DBCONFIG_NO_CKPT_ON_CLOSE},
 41041  	{FzName: ts + 19294, FeVal: SQLITE_DBCONFIG_ENABLE_QPSG},
 41042  	{FzName: ts + 19299, FeVal: SQLITE_DBCONFIG_TRIGGER_EQP},
 41043  	{FzName: ts + 19311, FeVal: SQLITE_DBCONFIG_RESET_DATABASE},
 41044  	{FzName: ts + 19320, FeVal: SQLITE_DBCONFIG_DEFENSIVE},
 41045  	{FzName: ts + 19330, FeVal: SQLITE_DBCONFIG_WRITABLE_SCHEMA},
 41046  	{FzName: ts + 19346, FeVal: SQLITE_DBCONFIG_LEGACY_ALTER_TABLE},
 41047  	{FzName: ts + 19365, FeVal: SQLITE_DBCONFIG_DQS_DML},
 41048  	{FzName: ts + 19373, FeVal: SQLITE_DBCONFIG_DQS_DDL},
 41049  	{FzName: ts + 19381, FeVal: SQLITE_DBCONFIG_LEGACY_FILE_FORMAT},
 41050  }
 41051  
 41052  func test_sqlite3_txn_state(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 41053  	bp := tls.Alloc(8)
 41054  	defer tls.Free(8)
 41055  
 41056  	var zSchema uintptr
 41057  	var iTxn int32
 41058  
 41059  	if objc != 2 && objc != 3 {
 41060  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+19400)
 41061  		return TCL_ERROR
 41062  	}
 41063  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 41064  		return TCL_ERROR
 41065  	}
 41066  	if objc == 3 {
 41067  		zSchema = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 41068  	} else {
 41069  		zSchema = uintptr(0)
 41070  	}
 41071  	iTxn = sqlite3.Xsqlite3_txn_state(tls, *(*uintptr)(unsafe.Pointer(bp)), zSchema)
 41072  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, iTxn))
 41073  	return TCL_OK
 41074  }
 41075  
 41076  func test_dbconfig_maindbname_icecube(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 41077  	bp := tls.Alloc(16)
 41078  	defer tls.Free(16)
 41079  
 41080  	var rc int32
 41081  
 41082  	if objc != 2 {
 41083  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2050)
 41084  		return TCL_ERROR
 41085  	} else {
 41086  		if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+8) != 0 {
 41087  			return TCL_ERROR
 41088  		}
 41089  		rc = sqlite3.Xsqlite3_db_config(tls, *(*uintptr)(unsafe.Pointer(bp + 8)), SQLITE_DBCONFIG_MAINDBNAME, libc.VaList(bp, ts+19412))
 41090  		tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, rc))
 41091  		return TCL_OK
 41092  	}
 41093  	return int32(0)
 41094  }
 41095  
 41096  func test_mmap_warm(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 41097  	bp := tls.Alloc(8)
 41098  	defer tls.Free(8)
 41099  
 41100  	if objc != 2 && objc != 3 {
 41101  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+19420)
 41102  		return TCL_ERROR
 41103  	} else {
 41104  		var rc int32
 41105  
 41106  		var zDb uintptr = uintptr(0)
 41107  		if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 41108  			return TCL_ERROR
 41109  		}
 41110  		if objc == 3 {
 41111  			zDb = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 41112  		}
 41113  		rc = sqlite3_mmap_warm(tls, *(*uintptr)(unsafe.Pointer(bp)), zDb)
 41114  		tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3ErrName(tls, rc), -1))
 41115  		return TCL_OK
 41116  	}
 41117  	return int32(0)
 41118  }
 41119  
 41120  func test_write_db(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 41121  	bp := tls.Alloc(32)
 41122  	defer tls.Free(32)
 41123  
 41124  	*(*uintptr)(unsafe.Pointer(bp)) = uintptr(0)
 41125  	*(*Tcl_WideInt)(unsafe.Pointer(bp + 8)) = int64(0)
 41126  	var aData uintptr = uintptr(0)
 41127  	*(*int32)(unsafe.Pointer(bp + 16)) = 0
 41128  	*(*uintptr)(unsafe.Pointer(bp + 24)) = uintptr(0)
 41129  	var rc int32
 41130  
 41131  	if objc != 4 {
 41132  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+19432)
 41133  		return TCL_ERROR
 41134  	}
 41135  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 41136  		return TCL_ERROR
 41137  	}
 41138  	if tcl.XTcl_GetWideIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+8) != 0 {
 41139  		return TCL_ERROR
 41140  	}
 41141  	aData = tcl.XTcl_GetByteArrayFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+16)
 41142  
 41143  	sqlite3.Xsqlite3_file_control(tls, *(*uintptr)(unsafe.Pointer(bp)), ts+85, SQLITE_FCNTL_FILE_POINTER, bp+24)
 41144  	rc = (*struct {
 41145  		f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 41146  	})(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)))
 41147  
 41148  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(1))
 41149  	return TCL_OK
 41150  }
 41151  
 41152  func test_register_cksumvfs(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 41153  	if objc != 1 {
 41154  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+584)
 41155  		return TCL_ERROR
 41156  	} else {
 41157  		var rc int32 = sqlite3_register_cksumvfs(tls, uintptr(0))
 41158  		tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(1))
 41159  	}
 41160  	return TCL_OK
 41161  }
 41162  
 41163  func test_unregister_cksumvfs(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 41164  	if objc != 1 {
 41165  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+584)
 41166  		return TCL_ERROR
 41167  	} else {
 41168  		var rc int32 = sqlite3_unregister_cksumvfs(tls)
 41169  		tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(1))
 41170  	}
 41171  	return TCL_OK
 41172  }
 41173  
 41174  func test_decode_hexdb(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 41175  	bp := tls.Alloc(296)
 41176  	defer tls.Free(296)
 41177  
 41178  	var zIn uintptr = uintptr(0)
 41179  	var a uintptr = uintptr(0)
 41180  	*(*int32)(unsafe.Pointer(bp + 216)) = 0
 41181  	var lineno int32 = 0
 41182  	var i int32
 41183  	var iNext int32
 41184  	var iOffset int32 = 0
 41185  
 41186  	var rc int32
 41187  
 41188  	if objc != 2 {
 41189  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+19447)
 41190  		return TCL_ERROR
 41191  	}
 41192  	zIn = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 41193  	for i = 0; *(*int8)(unsafe.Pointer(zIn + uintptr(i))) != 0; i = iNext {
 41194  		lineno++
 41195  		for iNext = i; *(*int8)(unsafe.Pointer(zIn + uintptr(iNext))) != 0 && int32(*(*int8)(unsafe.Pointer(zIn + uintptr(iNext)))) != '\n'; iNext++ {
 41196  		}
 41197  		if int32(*(*int8)(unsafe.Pointer(zIn + uintptr(iNext)))) == '\n' {
 41198  			iNext++
 41199  		}
 41200  		for int32(*(*int8)(unsafe.Pointer(zIn + uintptr(i)))) == ' ' || int32(*(*int8)(unsafe.Pointer(zIn + uintptr(i)))) == '\t' {
 41201  			i++
 41202  		}
 41203  		if a == uintptr(0) {
 41204  			rc = libc.Xsscanf(tls, zIn+uintptr(i), ts+19453, libc.VaList(bp, bp+216, bp+220))
 41205  			if rc != 2 {
 41206  				continue
 41207  			}
 41208  			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 {
 41209  				tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+16, ts+19475, uintptr(0)))
 41210  				return TCL_ERROR
 41211  			}
 41212  			*(*int32)(unsafe.Pointer(bp + 216)) = (*(*int32)(unsafe.Pointer(bp + 216)) + *(*int32)(unsafe.Pointer(bp + 220)) - 1) & ^(*(*int32)(unsafe.Pointer(bp + 220)) - 1)
 41213  			if *(*int32)(unsafe.Pointer(bp + 216)) < 512 {
 41214  				tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+19496, uintptr(0)))
 41215  				return TCL_ERROR
 41216  			}
 41217  			a = libc.Xmalloc(tls, uint64(*(*int32)(unsafe.Pointer(bp + 216))))
 41218  			if a == uintptr(0) {
 41219  				tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+48, ts+2069, uintptr(0)))
 41220  				return TCL_ERROR
 41221  			}
 41222  			libc.X__builtin___memset_chk(tls, a, 0, uint64(*(*int32)(unsafe.Pointer(bp + 216))), libc.X__builtin_object_size(tls, a, 0))
 41223  			continue
 41224  		}
 41225  		rc = libc.Xsscanf(tls, zIn+uintptr(i), ts+19513, libc.VaList(bp+64, bp+224, bp+228))
 41226  		if rc == 2 {
 41227  			iOffset = *(*int32)(unsafe.Pointer(bp + 228))
 41228  			continue
 41229  		}
 41230  		rc = libc.Xsscanf(tls, zIn+uintptr(i), ts+19533,
 41231  			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,
 41232  				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))
 41233  		if rc == 17 {
 41234  			*(*int32)(unsafe.Pointer(bp + 228)) = iOffset + *(*int32)(unsafe.Pointer(bp + 224))
 41235  			if *(*int32)(unsafe.Pointer(bp + 228))+16 <= *(*int32)(unsafe.Pointer(bp + 216)) {
 41236  				var ii int32
 41237  				for ii = 0; ii < 16; ii++ {
 41238  					*(*uint8)(unsafe.Pointer(a + uintptr(*(*int32)(unsafe.Pointer(bp + 228))+ii))) = uint8(*(*uint32)(unsafe.Pointer(bp + 232 + uintptr(ii)*4)) & uint32(0xff))
 41239  				}
 41240  			}
 41241  			continue
 41242  		}
 41243  	}
 41244  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewByteArrayObj(tls, a, *(*int32)(unsafe.Pointer(bp + 216))))
 41245  	libc.Xfree(tls, a)
 41246  	return TCL_OK
 41247  }
 41248  
 41249  type AutovacPageData1 = struct {
 41250  	Finterp  uintptr
 41251  	FzScript uintptr
 41252  }
 41253  
 41254  type AutovacPageData = AutovacPageData1
 41255  
 41256  func test_autovacuum_pages_callback(tls *libc.TLS, pClientData uintptr, zSchema uintptr, nFilePages uint32, nFreePages uint32, nBytePerPage uint32) uint32 {
 41257  	bp := tls.Alloc(344)
 41258  	defer tls.Free(344)
 41259  
 41260  	var pData uintptr = pClientData
 41261  
 41262  	tcl.XTcl_DStringInit(tls, bp+24)
 41263  	tcl.XTcl_DStringAppend(tls, bp+24, (*AutovacPageData)(unsafe.Pointer(pData)).FzScript, -1)
 41264  	tcl.XTcl_DStringAppendElement(tls, bp+24, zSchema)
 41265  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([100]int8{})), bp+240, ts+17791, libc.VaList(bp, nFilePages))
 41266  	tcl.XTcl_DStringAppendElement(tls, bp+24, bp+240)
 41267  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([100]int8{})), bp+240, ts+17791, libc.VaList(bp+8, nFreePages))
 41268  	tcl.XTcl_DStringAppendElement(tls, bp+24, bp+240)
 41269  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([100]int8{})), bp+240, ts+17791, libc.VaList(bp+16, nBytePerPage))
 41270  	tcl.XTcl_DStringAppendElement(tls, bp+24, bp+240)
 41271  	tcl.XTcl_ResetResult(tls, (*AutovacPageData)(unsafe.Pointer(pData)).Finterp)
 41272  	tcl.XTcl_Eval(tls, (*AutovacPageData)(unsafe.Pointer(pData)).Finterp, (*Tcl_DString)(unsafe.Pointer(bp+24)).Fstring)
 41273  	tcl.XTcl_DStringFree(tls, bp+24)
 41274  	*(*uint32)(unsafe.Pointer(bp + 340)) = nFreePages
 41275  	tcl.XTcl_GetIntFromObj(tls, uintptr(0), tcl.XTcl_GetObjResult(tls, (*AutovacPageData)(unsafe.Pointer(pData)).Finterp), bp+340)
 41276  	return *(*uint32)(unsafe.Pointer(bp + 340))
 41277  }
 41278  
 41279  func test_autovacuum_pages(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 41280  	bp := tls.Alloc(1048)
 41281  	defer tls.Free(1048)
 41282  
 41283  	var pData uintptr
 41284  
 41285  	var rc int32
 41286  	var zScript uintptr
 41287  	if objc != 2 && objc != 3 {
 41288  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+19587)
 41289  		return TCL_ERROR
 41290  	}
 41291  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+40) != 0 {
 41292  		return TCL_ERROR
 41293  	}
 41294  	if objc == 3 {
 41295  		zScript = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 41296  	} else {
 41297  		zScript = uintptr(0)
 41298  	}
 41299  	if zScript != 0 {
 41300  		var nScript size_t = libc.Xstrlen(tls, zScript)
 41301  		pData = sqlite3.Xsqlite3_malloc64(tls, uint64(unsafe.Sizeof(AutovacPageData{}))+nScript+uint64(1))
 41302  		if pData == uintptr(0) {
 41303  			tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+2069, uintptr(0)))
 41304  			return TCL_ERROR
 41305  		}
 41306  		(*AutovacPageData)(unsafe.Pointer(pData)).Finterp = interp
 41307  		(*AutovacPageData)(unsafe.Pointer(pData)).FzScript = pData + 1*16
 41308  		libc.X__builtin___memcpy_chk(tls, (*AutovacPageData)(unsafe.Pointer(pData)).FzScript, zScript, nScript+uint64(1), libc.X__builtin_object_size(tls, (*AutovacPageData)(unsafe.Pointer(pData)).FzScript, 0))
 41309  		rc = sqlite3.Xsqlite3_autovacuum_pages(tls, *(*uintptr)(unsafe.Pointer(bp + 40)), *(*uintptr)(unsafe.Pointer(&struct {
 41310  			f func(*libc.TLS, uintptr, uintptr, uint32, uint32, uint32) uint32
 41311  		}{test_autovacuum_pages_callback})),
 41312  			pData, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{sqlite3.Xsqlite3_free})))
 41313  	} else {
 41314  		rc = sqlite3.Xsqlite3_autovacuum_pages(tls, *(*uintptr)(unsafe.Pointer(bp + 40)), uintptr(0), uintptr(0), uintptr(0))
 41315  	}
 41316  	if rc != 0 {
 41317  		sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([1000]int8{})), bp+48,
 41318  			ts+19599, libc.VaList(bp+16, rc))
 41319  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+24, bp+48, uintptr(0)))
 41320  		return TCL_ERROR
 41321  	}
 41322  	return TCL_OK
 41323  }
 41324  
 41325  func Sqlitetest1_Init(tls *libc.TLS, interp uintptr) int32 {
 41326  	var i int32
 41327  
 41328  	for i = 0; uint64(i) < uint64(unsafe.Sizeof(aCmd1))/uint64(unsafe.Sizeof(struct {
 41329  		FzName uintptr
 41330  		FxProc uintptr
 41331  	}{})); i++ {
 41332  		tcl.XTcl_CreateCommand(tls, interp, aCmd1[i].FzName, aCmd1[i].FxProc, uintptr(0), uintptr(0))
 41333  	}
 41334  	for i = 0; uint64(i) < uint64(unsafe.Sizeof(aObjCmd1))/uint64(unsafe.Sizeof(struct {
 41335  		FzName      uintptr
 41336  		FxProc      uintptr
 41337  		FclientData uintptr
 41338  	}{})); i++ {
 41339  		tcl.XTcl_CreateObjCommand(tls, interp, aObjCmd1[i].FzName,
 41340  			aObjCmd1[i].FxProc, aObjCmd1[i].FclientData, uintptr(0))
 41341  	}
 41342  	tcl.XTcl_LinkVar(tls, interp, ts+19637,
 41343  		uintptr(unsafe.Pointer(&sqlite3.Xsqlite3_search_count)), TCL_LINK_INT)
 41344  	tcl.XTcl_LinkVar(tls, interp, ts+19657,
 41345  		uintptr(unsafe.Pointer(&sqlite3.Xsqlite3_found_count)), TCL_LINK_INT)
 41346  	tcl.XTcl_LinkVar(tls, interp, ts+19676,
 41347  		uintptr(unsafe.Pointer(&sqlite3.Xsqlite3_sort_count)), TCL_LINK_INT)
 41348  	tcl.XTcl_LinkVar(tls, interp, ts+19694,
 41349  		uintptr(unsafe.Pointer(&sqlite3.Xsqlite3_max_blobsize)), TCL_LINK_INT)
 41350  	tcl.XTcl_LinkVar(tls, interp, ts+19715,
 41351  		uintptr(unsafe.Pointer(&sqlite3.Xsqlite3_like_count)), TCL_LINK_INT)
 41352  	tcl.XTcl_LinkVar(tls, interp, ts+19733,
 41353  		uintptr(unsafe.Pointer(&sqlite3.Xsqlite3_interrupt_count)), TCL_LINK_INT)
 41354  	tcl.XTcl_LinkVar(tls, interp, ts+19756,
 41355  		uintptr(unsafe.Pointer(&sqlite3.Xsqlite3_open_file_count)), TCL_LINK_INT)
 41356  	tcl.XTcl_LinkVar(tls, interp, ts+19779,
 41357  		uintptr(unsafe.Pointer(&sqlite3.Xsqlite3_current_time)), TCL_LINK_INT)
 41358  	tcl.XTcl_LinkVar(tls, interp, ts+19799,
 41359  		uintptr(unsafe.Pointer(&sqlite3.Xsqlite3_hostid_num)), TCL_LINK_INT)
 41360  	tcl.XTcl_LinkVar(tls, interp, ts+19817,
 41361  		uintptr(unsafe.Pointer(&sqlite3.Xsqlite3_xferopt_count)), TCL_LINK_INT)
 41362  	tcl.XTcl_LinkVar(tls, interp, ts+19839,
 41363  		uintptr(unsafe.Pointer(&sqlite3.Xsqlite3_pager_readdb_count)), TCL_LINK_INT)
 41364  	tcl.XTcl_LinkVar(tls, interp, ts+19866,
 41365  		uintptr(unsafe.Pointer(&sqlite3.Xsqlite3_pager_writedb_count)), TCL_LINK_INT)
 41366  	tcl.XTcl_LinkVar(tls, interp, ts+19894,
 41367  		uintptr(unsafe.Pointer(&sqlite3.Xsqlite3_pager_writej_count)), TCL_LINK_INT)
 41368  	tcl.XTcl_LinkVar(tls, interp, ts+19921,
 41369  		uintptr(unsafe.Pointer(&unaligned_string_counter)), TCL_LINK_INT)
 41370  	tcl.XTcl_LinkVar(tls, interp, ts+19946,
 41371  		uintptr(unsafe.Pointer(&pzNeededCollation)), TCL_LINK_STRING|TCL_LINK_READ_ONLY)
 41372  	{
 41373  		tcl.XTcl_LinkVar(tls, interp, ts+19975,
 41374  			uintptr(unsafe.Pointer(&query_plan)), TCL_LINK_STRING|TCL_LINK_READ_ONLY)
 41375  
 41376  	}
 41377  	tcl.XTcl_LinkVar(tls, interp, ts+19993,
 41378  		uintptr(unsafe.Pointer(&sqlite3.Xsqlite3_opentemp_count)), TCL_LINK_INT)
 41379  	tcl.XTcl_LinkVar(tls, interp, ts+20015,
 41380  		uintptr(unsafe.Pointer(&sqlite_static_bind_value)), TCL_LINK_STRING)
 41381  	tcl.XTcl_LinkVar(tls, interp, ts+20040,
 41382  		uintptr(unsafe.Pointer(&sqlite_static_bind_nbyte)), TCL_LINK_INT)
 41383  	tcl.XTcl_LinkVar(tls, interp, ts+20065,
 41384  		uintptr(unsafe.Pointer(&sqlite3.Xsqlite3_temp_directory)), TCL_LINK_STRING)
 41385  	tcl.XTcl_LinkVar(tls, interp, ts+20087,
 41386  		uintptr(unsafe.Pointer(&sqlite3.Xsqlite3_data_directory)), TCL_LINK_STRING)
 41387  	tcl.XTcl_LinkVar(tls, interp, ts+20109,
 41388  		uintptr(unsafe.Pointer(&bitmask_size)), TCL_LINK_INT|TCL_LINK_READ_ONLY)
 41389  	tcl.XTcl_LinkVar(tls, interp, ts+20122,
 41390  		uintptr(unsafe.Pointer(&longdouble_size)), TCL_LINK_INT|TCL_LINK_READ_ONLY)
 41391  	tcl.XTcl_LinkVar(tls, interp, ts+20138,
 41392  		uintptr(unsafe.Pointer(&sqlite3.Xsqlite3_sync_count)), TCL_LINK_INT)
 41393  	tcl.XTcl_LinkVar(tls, interp, ts+20156,
 41394  		uintptr(unsafe.Pointer(&sqlite3.Xsqlite3_fullsync_count)), TCL_LINK_INT)
 41395  	return TCL_OK
 41396  }
 41397  
 41398  var iZero int32 = 0
 41399  var aCmd1 = [39]struct {
 41400  	FzName uintptr
 41401  	FxProc uintptr
 41402  }{
 41403  	{FzName: ts + 20178, FxProc: 0},
 41404  	{FzName: ts + 20187, FxProc: 0},
 41405  	{FzName: ts + 20196, FxProc: 0},
 41406  	{FzName: ts + 20216, FxProc: 0},
 41407  	{FzName: ts + 20238, FxProc: 0},
 41408  	{FzName: ts + 20259, FxProc: 0},
 41409  	{FzName: ts + 20279, FxProc: 0},
 41410  	{FzName: ts + 20300, FxProc: 0},
 41411  	{FzName: ts + 20324, FxProc: 0},
 41412  	{FzName: ts + 20347, FxProc: 0},
 41413  	{FzName: ts + 20370, FxProc: 0},
 41414  	{FzName: ts + 20396, FxProc: 0},
 41415  	{FzName: ts + 20419, FxProc: 0},
 41416  	{FzName: ts + 20442, FxProc: 0},
 41417  	{FzName: ts + 20463, FxProc: 0},
 41418  	{FzName: ts + 20489, FxProc: 0},
 41419  	{FzName: ts + 20509, FxProc: 0},
 41420  	{FzName: ts + 20526, FxProc: 0},
 41421  	{FzName: ts + 20539, FxProc: 0},
 41422  	{FzName: ts + 20555, FxProc: 0},
 41423  	{FzName: ts + 20580, FxProc: 0},
 41424  	{FzName: ts + 20594, FxProc: 0},
 41425  	{FzName: ts + 20611, FxProc: 0},
 41426  	{FzName: ts + 20635, FxProc: 0},
 41427  	{FzName: ts + 20660, FxProc: 0},
 41428  	{FzName: ts + 20681, FxProc: 0},
 41429  	{FzName: ts + 20711, FxProc: 0},
 41430  	{FzName: ts + 20724, FxProc: 0},
 41431  	{FzName: ts + 20736, FxProc: 0},
 41432  	{FzName: ts + 20747, FxProc: 0},
 41433  	{FzName: ts + 20759, FxProc: 0},
 41434  	{FzName: ts + 20773, FxProc: 0},
 41435  	{FzName: ts + 20791, FxProc: 0},
 41436  	{FzName: ts + 20814, FxProc: 0},
 41437  	{FzName: ts + 20838, FxProc: 0},
 41438  	{FzName: ts + 20861, FxProc: 0},
 41439  	{FzName: ts + 20882, FxProc: 0},
 41440  	{FzName: ts + 20889, FxProc: 0},
 41441  	{FzName: ts + 20904, FxProc: 0},
 41442  }
 41443  var aObjCmd1 = [165]struct {
 41444  	FzName      uintptr
 41445  	FxProc      uintptr
 41446  	FclientData uintptr
 41447  }{
 41448  	{FzName: ts + 20927, FxProc: 0},
 41449  	{FzName: ts + 20945, FxProc: 0},
 41450  	{FzName: ts + 20963, FxProc: 0, FclientData: 0},
 41451  	{FzName: ts + 20976, FxProc: 0},
 41452  	{FzName: ts + 20997, FxProc: 0},
 41453  	{FzName: ts + 21024, FxProc: 0},
 41454  	{FzName: ts + 21038, FxProc: 0},
 41455  	{FzName: ts + 21054, FxProc: 0},
 41456  	{FzName: ts + 21071, FxProc: 0},
 41457  	{FzName: ts + 21086, FxProc: 0},
 41458  	{FzName: ts + 21103, FxProc: 0},
 41459  	{FzName: ts + 21125, FxProc: 0},
 41460  	{FzName: ts + 21149, FxProc: 0},
 41461  	{FzName: ts + 21168, FxProc: 0},
 41462  	{FzName: ts + 21188, FxProc: 0},
 41463  	{FzName: ts + 21206, FxProc: 0},
 41464  	{FzName: ts + 21224, FxProc: 0},
 41465  	{FzName: ts + 21244, FxProc: 0},
 41466  	{FzName: ts + 21262, FxProc: 0},
 41467  	{FzName: ts + 21293, FxProc: 0},
 41468  	{FzName: ts + 21327, FxProc: 0},
 41469  	{FzName: ts + 21347, FxProc: 0},
 41470  	{FzName: ts + 21376, FxProc: 0},
 41471  	{FzName: ts + 21404, FxProc: 0},
 41472  	{FzName: ts + 21433, FxProc: 0},
 41473  	{FzName: ts + 21456, FxProc: 0},
 41474  	{FzName: ts + 21470, FxProc: 0},
 41475  	{FzName: ts + 21486, FxProc: 0},
 41476  	{FzName: ts + 21511, FxProc: 0},
 41477  	{FzName: ts + 21526, FxProc: 0},
 41478  	{FzName: ts + 21547, FxProc: 0},
 41479  	{FzName: ts + 21564, FxProc: 0},
 41480  	{FzName: ts + 21577, FxProc: 0},
 41481  	{FzName: ts + 21592, FxProc: 0},
 41482  	{FzName: ts + 21608, FxProc: 0},
 41483  	{FzName: ts + 21627, FxProc: 0},
 41484  	{FzName: ts + 21645, FxProc: 0},
 41485  	{FzName: ts + 21661, FxProc: 0},
 41486  	{FzName: ts + 21679, FxProc: 0},
 41487  	{FzName: ts + 21698, FxProc: 0},
 41488  	{FzName: ts + 21717, FxProc: 0},
 41489  	{FzName: ts + 21741, FxProc: 0},
 41490  	{FzName: ts + 21762, FxProc: 0},
 41491  	{FzName: ts + 21779, FxProc: 0},
 41492  	{FzName: ts + 21799, FxProc: 0},
 41493  	{FzName: ts + 21813, FxProc: 0},
 41494  	{FzName: ts + 21829, FxProc: 0},
 41495  	{FzName: ts + 21855, FxProc: 0},
 41496  	{FzName: ts + 21871, FxProc: 0},
 41497  	{FzName: ts + 21884, FxProc: 0},
 41498  	{FzName: ts + 21896, FxProc: 0},
 41499  	{FzName: ts + 21917, FxProc: 0},
 41500  	{FzName: ts + 21935, FxProc: 0},
 41501  	{FzName: ts + 21957, FxProc: 0},
 41502  	{FzName: ts + 21980, FxProc: 0},
 41503  	{FzName: ts + 21998, FxProc: 0},
 41504  	{FzName: ts + 22016, FxProc: 0},
 41505  	{FzName: ts + 22039, FxProc: 0},
 41506  	{FzName: ts + 22065, FxProc: 0},
 41507  	{FzName: ts + 22087, FxProc: 0},
 41508  	{FzName: ts + 22108, FxProc: 0},
 41509  	{FzName: ts + 22128, FxProc: 0},
 41510  	{FzName: ts + 22148, FxProc: 0},
 41511  	{FzName: ts + 22172, FxProc: 0},
 41512  	{FzName: ts + 22198, FxProc: 0},
 41513  	{FzName: ts + 22224, FxProc: 0},
 41514  	{FzName: ts + 22247, FxProc: 0},
 41515  	{FzName: ts + 22271, FxProc: 0},
 41516  	{FzName: ts + 22294, FxProc: 0},
 41517  	{FzName: ts + 22324, FxProc: 0},
 41518  	{FzName: ts + 22354, FxProc: 0},
 41519  	{FzName: ts + 22368, FxProc: 0},
 41520  	{FzName: ts + 22396, FxProc: 0},
 41521  	{FzName: ts + 22412, FxProc: 0},
 41522  	{FzName: ts + 22431, FxProc: 0},
 41523  	{FzName: ts + 22448, FxProc: 0},
 41524  	{FzName: ts + 22458, FxProc: 0},
 41525  	{FzName: ts + 22478, FxProc: 0},
 41526  	{FzName: ts + 22501, FxProc: 0},
 41527  	{FzName: ts + 22525, FxProc: 0},
 41528  	{FzName: ts + 22546, FxProc: 0},
 41529  	{FzName: ts + 22558, FxProc: 0},
 41530  	{FzName: ts + 22579, FxProc: 0},
 41531  	{FzName: ts + 22598, FxProc: 0},
 41532  	{FzName: ts + 22618, FxProc: 0},
 41533  	{FzName: ts + 22638, FxProc: 0},
 41534  	{FzName: ts + 22660, FxProc: 0},
 41535  	{FzName: ts + 22681, FxProc: 0, FclientData: 0},
 41536  	{FzName: ts + 22701, FxProc: 0, FclientData: 0},
 41537  	{FzName: ts + 22721, FxProc: 0, FclientData: 0},
 41538  	{FzName: ts + 22740, FxProc: 0, FclientData: 0},
 41539  	{FzName: ts + 22761, FxProc: 0, FclientData: 0},
 41540  	{FzName: ts + 22785, FxProc: 0, FclientData: 0},
 41541  	{FzName: ts + 22814, FxProc: 0, FclientData: 0},
 41542  	{FzName: ts + 22840, FxProc: 0, FclientData: 0},
 41543  	{FzName: ts + 22867, FxProc: 0, FclientData: 0},
 41544  	{FzName: ts + 22890, FxProc: 0, FclientData: 0},
 41545  	{FzName: ts + 22912, FxProc: 0, FclientData: 0},
 41546  	{FzName: ts + 22934, FxProc: 0},
 41547  	{FzName: ts + 22964, FxProc: 0, FclientData: 0},
 41548  	{FzName: ts + 22990,
 41549  		FxProc: 0, FclientData: 0},
 41550  	{FzName: ts + 23021, FxProc: 0, FclientData: 0},
 41551  	{FzName: ts + 23049, FxProc: 0, FclientData: 0},
 41552  	{FzName: ts + 23078, FxProc: 0},
 41553  	{FzName: ts + 23106, FxProc: 0},
 41554  	{FzName: ts + 23129, FxProc: 0},
 41555  	{FzName: ts + 23147, FxProc: 0},
 41556  	{FzName: ts + 23163, FxProc: 0},
 41557  	{FzName: ts + 23181, FxProc: 0},
 41558  	{FzName: ts + 23200, FxProc: 0},
 41559  	{FzName: ts + 23219, FxProc: 0},
 41560  	{FzName: ts + 23237, FxProc: 0},
 41561  	{FzName: ts + 23265, FxProc: 0},
 41562  	{FzName: ts + 23293, FxProc: 0},
 41563  	{FzName: ts + 23321, FxProc: 0},
 41564  	{FzName: ts + 23348, FxProc: 0},
 41565  	{FzName: ts + 23374, FxProc: 0},
 41566  	{FzName: ts + 23399, FxProc: 0},
 41567  	{FzName: ts + 23432, FxProc: 0},
 41568  	{FzName: ts + 23453, FxProc: 0},
 41569  	{FzName: ts + 23479, FxProc: 0},
 41570  	{FzName: ts + 23505, FxProc: 0},
 41571  	{FzName: ts + 23534, FxProc: 0},
 41572  	{FzName: ts + 23551, FxProc: 0},
 41573  	{FzName: ts + 23578, FxProc: 0},
 41574  	{FzName: ts + 23595, FxProc: 0},
 41575  	{FzName: ts + 23619, FxProc: 0},
 41576  	{FzName: ts + 23637, FxProc: 0},
 41577  	{FzName: ts + 23663, FxProc: 0},
 41578  	{FzName: ts + 23683, FxProc: 0},
 41579  	{FzName: ts + 23701, FxProc: 0},
 41580  	{FzName: ts + 23729, FxProc: 0},
 41581  	{FzName: ts + 23757, FxProc: 0},
 41582  	{FzName: ts + 23783, FxProc: 0},
 41583  	{FzName: ts + 23813, FxProc: 0},
 41584  	{FzName: ts + 23833, FxProc: 0},
 41585  	{FzName: ts + 23846, FxProc: 0},
 41586  	{FzName: ts + 23868, FxProc: 0},
 41587  	{FzName: ts + 23891, FxProc: 0},
 41588  	{FzName: ts + 23917, FxProc: 0},
 41589  	{FzName: ts + 23944, FxProc: 0},
 41590  	{FzName: ts + 23961, FxProc: 0},
 41591  	{FzName: ts + 23986, FxProc: 0},
 41592  	{FzName: ts + 24007, FxProc: 0},
 41593  	{FzName: ts + 24017, FxProc: 0},
 41594  	{FzName: ts + 24039, FxProc: 0},
 41595  	{FzName: ts + 24060, FxProc: 0},
 41596  	{FzName: ts + 24085, FxProc: 0},
 41597  	{FzName: ts + 24108, FxProc: 0},
 41598  	{FzName: ts + 24129, FxProc: 0},
 41599  	{FzName: ts + 24151, FxProc: 0},
 41600  	{FzName: ts + 24173, FxProc: 0},
 41601  	{FzName: ts + 24194, FxProc: 0},
 41602  	{FzName: ts + 24219, FxProc: 0},
 41603  	{FzName: ts + 24245, FxProc: 0},
 41604  	{FzName: ts + 24272, FxProc: 0},
 41605  	{FzName: ts + 24298, FxProc: 0},
 41606  	{FzName: ts + 24322, FxProc: 0},
 41607  	{FzName: ts + 24341, FxProc: 0},
 41608  	{FzName: ts + 24359, FxProc: 0},
 41609  	{FzName: ts + 24384, FxProc: 0},
 41610  	{FzName: ts + 24409, FxProc: 0},
 41611  	{FzName: ts + 24422, FxProc: 0},
 41612  	{FzName: ts + 24436, FxProc: 0},
 41613  	{FzName: ts + 24462, FxProc: 0},
 41614  }
 41615  var bitmask_size int32 = int32(uint64(unsafe.Sizeof(Bitmask(0))) * uint64(8))
 41616  var longdouble_size int32 = int32(unsafe.Sizeof(float64(0)))
 41617  var query_plan uintptr = ts + 24490
 41618  
 41619  var test_pagesize int32 = 1024
 41620  
 41621  func pager_test_reiniter(tls *libc.TLS, pNotUsed uintptr) {
 41622  	return
 41623  }
 41624  
 41625  func pager_open(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 41626  	bp := tls.Alloc(192)
 41627  	defer tls.Free(192)
 41628  
 41629  	var rc int32
 41630  
 41631  	if argc != 3 {
 41632  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 41633  			ts+24516, 0))
 41634  		return TCL_ERROR
 41635  	}
 41636  	if tcl.XTcl_GetInt(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 2*8)), bp+72) != 0 {
 41637  		return TCL_ERROR
 41638  	}
 41639  	rc = sqlite3.Xsqlite3PagerOpen(tls, sqlite3.Xsqlite3_vfs_find(tls, uintptr(0)), bp+80, *(*uintptr)(unsafe.Pointer(argv + 1*8)), 0, 0,
 41640  		SQLITE_OPEN_READWRITE|SQLITE_OPEN_CREATE|SQLITE_OPEN_MAIN_DB,
 41641  		*(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{pager_test_reiniter})))
 41642  	if rc != SQLITE_OK {
 41643  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, sqlite3.Xsqlite3ErrName(tls, rc), 0))
 41644  		return TCL_ERROR
 41645  	}
 41646  	sqlite3.Xsqlite3PagerSetCachesize(tls, *(*uintptr)(unsafe.Pointer(bp + 80)), *(*int32)(unsafe.Pointer(bp + 72)))
 41647  	*(*u32)(unsafe.Pointer(bp + 88)) = u32(test_pagesize)
 41648  	sqlite3.Xsqlite3PagerSetPagesize(tls, *(*uintptr)(unsafe.Pointer(bp + 80)), bp+88, -1)
 41649  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([100]int8{})), bp+92, ts+9889, libc.VaList(bp+48, *(*uintptr)(unsafe.Pointer(bp + 80))))
 41650  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+56, bp+92, 0))
 41651  	return TCL_OK
 41652  }
 41653  
 41654  func pager_close(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 41655  	bp := tls.Alloc(48)
 41656  	defer tls.Free(48)
 41657  
 41658  	var pPager uintptr
 41659  	var rc int32
 41660  	if argc != 2 {
 41661  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 41662  			ts+24534, 0))
 41663  		return TCL_ERROR
 41664  	}
 41665  	pPager = sqlite3TestTextToPtr(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 41666  	rc = sqlite3.Xsqlite3PagerClose(tls, pPager, uintptr(0))
 41667  	if rc != SQLITE_OK {
 41668  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, sqlite3.Xsqlite3ErrName(tls, rc), 0))
 41669  		return TCL_ERROR
 41670  	}
 41671  	return TCL_OK
 41672  }
 41673  
 41674  func pager_rollback(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 41675  	bp := tls.Alloc(48)
 41676  	defer tls.Free(48)
 41677  
 41678  	var pPager uintptr
 41679  	var rc int32
 41680  	if argc != 2 {
 41681  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 41682  			ts+24534, 0))
 41683  		return TCL_ERROR
 41684  	}
 41685  	pPager = sqlite3TestTextToPtr(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 41686  	rc = sqlite3.Xsqlite3PagerRollback(tls, pPager)
 41687  	if rc != SQLITE_OK {
 41688  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, sqlite3.Xsqlite3ErrName(tls, rc), 0))
 41689  		return TCL_ERROR
 41690  	}
 41691  	return TCL_OK
 41692  }
 41693  
 41694  func pager_commit(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 41695  	bp := tls.Alloc(64)
 41696  	defer tls.Free(64)
 41697  
 41698  	var pPager uintptr
 41699  	var rc int32
 41700  	if argc != 2 {
 41701  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 41702  			ts+24534, 0))
 41703  		return TCL_ERROR
 41704  	}
 41705  	pPager = sqlite3TestTextToPtr(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 41706  	rc = sqlite3.Xsqlite3PagerCommitPhaseOne(tls, pPager, uintptr(0), 0)
 41707  	if rc != SQLITE_OK {
 41708  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, sqlite3.Xsqlite3ErrName(tls, rc), 0))
 41709  		return TCL_ERROR
 41710  	}
 41711  	rc = sqlite3.Xsqlite3PagerCommitPhaseTwo(tls, pPager)
 41712  	if rc != SQLITE_OK {
 41713  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+48, sqlite3.Xsqlite3ErrName(tls, rc), 0))
 41714  		return TCL_ERROR
 41715  	}
 41716  	return TCL_OK
 41717  }
 41718  
 41719  func pager_stmt_begin(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 41720  	bp := tls.Alloc(48)
 41721  	defer tls.Free(48)
 41722  
 41723  	var pPager uintptr
 41724  	var rc int32
 41725  	if argc != 2 {
 41726  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 41727  			ts+24534, 0))
 41728  		return TCL_ERROR
 41729  	}
 41730  	pPager = sqlite3TestTextToPtr(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 41731  	rc = sqlite3.Xsqlite3PagerOpenSavepoint(tls, pPager, 1)
 41732  	if rc != SQLITE_OK {
 41733  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, sqlite3.Xsqlite3ErrName(tls, rc), 0))
 41734  		return TCL_ERROR
 41735  	}
 41736  	return TCL_OK
 41737  }
 41738  
 41739  func pager_stmt_rollback(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 41740  	bp := tls.Alloc(48)
 41741  	defer tls.Free(48)
 41742  
 41743  	var pPager uintptr
 41744  	var rc int32
 41745  	if argc != 2 {
 41746  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 41747  			ts+24534, 0))
 41748  		return TCL_ERROR
 41749  	}
 41750  	pPager = sqlite3TestTextToPtr(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 41751  	rc = sqlite3.Xsqlite3PagerSavepoint(tls, pPager, SAVEPOINT_ROLLBACK, 0)
 41752  	sqlite3.Xsqlite3PagerSavepoint(tls, pPager, SAVEPOINT_RELEASE, 0)
 41753  	if rc != SQLITE_OK {
 41754  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, sqlite3.Xsqlite3ErrName(tls, rc), 0))
 41755  		return TCL_ERROR
 41756  	}
 41757  	return TCL_OK
 41758  }
 41759  
 41760  func pager_stmt_commit(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 41761  	bp := tls.Alloc(48)
 41762  	defer tls.Free(48)
 41763  
 41764  	var pPager uintptr
 41765  	var rc int32
 41766  	if argc != 2 {
 41767  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 41768  			ts+24534, 0))
 41769  		return TCL_ERROR
 41770  	}
 41771  	pPager = sqlite3TestTextToPtr(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 41772  	rc = sqlite3.Xsqlite3PagerSavepoint(tls, pPager, SAVEPOINT_RELEASE, 0)
 41773  	if rc != SQLITE_OK {
 41774  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, sqlite3.Xsqlite3ErrName(tls, rc), 0))
 41775  		return TCL_ERROR
 41776  	}
 41777  	return TCL_OK
 41778  }
 41779  
 41780  func pager_stats(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 41781  	bp := tls.Alloc(140)
 41782  	defer tls.Free(140)
 41783  
 41784  	var pPager uintptr
 41785  	var i int32
 41786  	var a uintptr
 41787  	if argc != 2 {
 41788  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 41789  			ts+24534, 0))
 41790  		return TCL_ERROR
 41791  	}
 41792  	pPager = sqlite3TestTextToPtr(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 41793  	a = sqlite3.Xsqlite3PagerStats(tls, pPager)
 41794  	for i = 0; i < 9; i++ {
 41795  		tcl.XTcl_AppendElement(tls, interp, zName[i])
 41796  		sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([100]int8{})), bp+40, ts+1333, libc.VaList(bp+32, *(*int32)(unsafe.Pointer(a + uintptr(i)*4))))
 41797  		tcl.XTcl_AppendElement(tls, interp, bp+40)
 41798  	}
 41799  	return TCL_OK
 41800  }
 41801  
 41802  var zName = [9]uintptr{
 41803  	ts + 24539, ts + 24543, ts + 18340, ts + 11809, ts + 9558, ts + 24548,
 41804  	ts + 24552, ts + 24556, ts + 24561,
 41805  }
 41806  
 41807  func pager_pagecount(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 41808  	bp := tls.Alloc(160)
 41809  	defer tls.Free(160)
 41810  
 41811  	var pPager uintptr
 41812  
 41813  	if argc != 2 {
 41814  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 41815  			ts+24534, 0))
 41816  		return TCL_ERROR
 41817  	}
 41818  	pPager = sqlite3TestTextToPtr(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 41819  	sqlite3.Xsqlite3PagerPagecount(tls, pPager, bp+56)
 41820  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([100]int8{})), bp+60, ts+1333, libc.VaList(bp+32, *(*int32)(unsafe.Pointer(bp + 56))))
 41821  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+40, bp+60, 0))
 41822  	return TCL_OK
 41823  }
 41824  
 41825  func page_get(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 41826  	bp := tls.Alloc(188)
 41827  	defer tls.Free(188)
 41828  
 41829  	var pPager uintptr
 41830  
 41831  	*(*uintptr)(unsafe.Pointer(bp + 80)) = uintptr(0)
 41832  
 41833  	var rc int32
 41834  	if argc != 3 {
 41835  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 41836  			ts+24566, 0))
 41837  		return TCL_ERROR
 41838  	}
 41839  	pPager = sqlite3TestTextToPtr(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 41840  	if tcl.XTcl_GetInt(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 2*8)), bp+72) != 0 {
 41841  		return TCL_ERROR
 41842  	}
 41843  	rc = sqlite3.Xsqlite3PagerSharedLock(tls, pPager)
 41844  	if rc == SQLITE_OK {
 41845  		rc = sqlite3.Xsqlite3PagerGet(tls, pPager, uint32(*(*int32)(unsafe.Pointer(bp + 72))), bp+80, 0)
 41846  	}
 41847  	if rc != SQLITE_OK {
 41848  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, sqlite3.Xsqlite3ErrName(tls, rc), 0))
 41849  		return TCL_ERROR
 41850  	}
 41851  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([100]int8{})), bp+88, ts+9889, libc.VaList(bp+48, *(*uintptr)(unsafe.Pointer(bp + 80))))
 41852  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+56, bp+88, 0))
 41853  	return TCL_OK
 41854  }
 41855  
 41856  func page_lookup(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 41857  	bp := tls.Alloc(160)
 41858  	defer tls.Free(160)
 41859  
 41860  	var pPager uintptr
 41861  
 41862  	var pPage uintptr
 41863  
 41864  	if argc != 3 {
 41865  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 41866  			ts+24566, 0))
 41867  		return TCL_ERROR
 41868  	}
 41869  	pPager = sqlite3TestTextToPtr(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 41870  	if tcl.XTcl_GetInt(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 2*8)), bp+56) != 0 {
 41871  		return TCL_ERROR
 41872  	}
 41873  	pPage = sqlite3.Xsqlite3PagerLookup(tls, pPager, uint32(*(*int32)(unsafe.Pointer(bp + 56))))
 41874  	if pPage != 0 {
 41875  		sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([100]int8{})), bp+60, ts+9889, libc.VaList(bp+32, pPage))
 41876  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+40, bp+60, 0))
 41877  	}
 41878  	return TCL_OK
 41879  }
 41880  
 41881  func pager_truncate(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 41882  	bp := tls.Alloc(36)
 41883  	defer tls.Free(36)
 41884  
 41885  	var pPager uintptr
 41886  
 41887  	if argc != 3 {
 41888  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 41889  			ts+24566, 0))
 41890  		return TCL_ERROR
 41891  	}
 41892  	pPager = sqlite3TestTextToPtr(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 41893  	if tcl.XTcl_GetInt(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 2*8)), bp+32) != 0 {
 41894  		return TCL_ERROR
 41895  	}
 41896  	sqlite3.Xsqlite3PagerTruncateImage(tls, pPager, uint32(*(*int32)(unsafe.Pointer(bp + 32))))
 41897  	return TCL_OK
 41898  }
 41899  
 41900  func page_unref(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 41901  	bp := tls.Alloc(32)
 41902  	defer tls.Free(32)
 41903  
 41904  	var pPage uintptr
 41905  	if argc != 2 {
 41906  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 41907  			ts+24576, 0))
 41908  		return TCL_ERROR
 41909  	}
 41910  	pPage = sqlite3TestTextToPtr(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 41911  	sqlite3.Xsqlite3PagerUnref(tls, pPage)
 41912  	return TCL_OK
 41913  }
 41914  
 41915  func page_read(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 41916  	bp := tls.Alloc(148)
 41917  	defer tls.Free(148)
 41918  
 41919  	var pPage uintptr
 41920  	if argc != 2 {
 41921  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 41922  			ts+24576, 0))
 41923  		return TCL_ERROR
 41924  	}
 41925  	pPage = sqlite3TestTextToPtr(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 41926  	libc.X__builtin___memcpy_chk(tls, bp+48, sqlite3.Xsqlite3PagerGetData(tls, pPage), uint64(unsafe.Sizeof([100]int8{})), libc.X__builtin_object_size(tls, bp+48, 0))
 41927  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, bp+48, 0))
 41928  	return TCL_OK
 41929  }
 41930  
 41931  func page_number(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 41932  	bp := tls.Alloc(156)
 41933  	defer tls.Free(156)
 41934  
 41935  	var pPage uintptr
 41936  	if argc != 2 {
 41937  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 41938  			ts+24576, 0))
 41939  		return TCL_ERROR
 41940  	}
 41941  	pPage = sqlite3TestTextToPtr(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 41942  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([100]int8{})), bp+56, ts+1333, libc.VaList(bp+32, sqlite3.Xsqlite3PagerPagenumber(tls, pPage)))
 41943  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+40, bp+56, 0))
 41944  	return TCL_OK
 41945  }
 41946  
 41947  func page_write(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 41948  	bp := tls.Alloc(48)
 41949  	defer tls.Free(48)
 41950  
 41951  	var pPage uintptr
 41952  	var pData uintptr
 41953  	var rc int32
 41954  	if argc != 3 {
 41955  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 41956  			ts+24583, 0))
 41957  		return TCL_ERROR
 41958  	}
 41959  	pPage = sqlite3TestTextToPtr(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 41960  	rc = sqlite3.Xsqlite3PagerWrite(tls, pPage)
 41961  	if rc != SQLITE_OK {
 41962  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, sqlite3.Xsqlite3ErrName(tls, rc), 0))
 41963  		return TCL_ERROR
 41964  	}
 41965  	pData = sqlite3.Xsqlite3PagerGetData(tls, pPage)
 41966  	libc.X__builtin___strncpy_chk(tls, pData, *(*uintptr)(unsafe.Pointer(argv + 2*8)), uint64(test_pagesize-1), libc.X__builtin_object_size(tls, pData, func() int32 {
 41967  		if X_USE_FORTIFY_LEVEL > 1 {
 41968  			return 1
 41969  		}
 41970  		return 0
 41971  	}()))
 41972  	*(*int8)(unsafe.Pointer(pData + uintptr(test_pagesize-1))) = int8(0)
 41973  	return TCL_OK
 41974  }
 41975  
 41976  func fake_big_file(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 41977  	bp := tls.Alloc(96)
 41978  	defer tls.Free(96)
 41979  
 41980  	var pVfs uintptr
 41981  	*(*uintptr)(unsafe.Pointer(bp + 88)) = uintptr(0)
 41982  	var rc int32
 41983  
 41984  	var offset i64
 41985  	var zFile uintptr
 41986  	var nFile int32
 41987  	if argc != 3 {
 41988  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 41989  			ts+24595, 0))
 41990  		return TCL_ERROR
 41991  	}
 41992  	if tcl.XTcl_GetInt(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)), bp+80) != 0 {
 41993  		return TCL_ERROR
 41994  	}
 41995  
 41996  	pVfs = sqlite3.Xsqlite3_vfs_find(tls, uintptr(0))
 41997  	nFile = int32(libc.Xstrlen(tls, *(*uintptr)(unsafe.Pointer(argv + 2*8))))
 41998  	zFile = sqlite3.Xsqlite3_malloc(tls, nFile+2)
 41999  	if zFile == uintptr(0) {
 42000  		return TCL_ERROR
 42001  	}
 42002  	libc.X__builtin___memcpy_chk(tls, zFile, *(*uintptr)(unsafe.Pointer(argv + 2*8)), uint64(nFile+1), libc.X__builtin_object_size(tls, zFile, 0))
 42003  	*(*int8)(unsafe.Pointer(zFile + uintptr(nFile+1))) = int8(0)
 42004  	rc = sqlite3.Xsqlite3OsOpenMalloc(tls, pVfs, zFile, bp+88,
 42005  		SQLITE_OPEN_CREATE|SQLITE_OPEN_READWRITE|SQLITE_OPEN_MAIN_DB, uintptr(0))
 42006  	if rc != 0 {
 42007  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+24614, sqlite3.Xsqlite3ErrName(tls, rc), 0))
 42008  		sqlite3.Xsqlite3_free(tls, zFile)
 42009  		return TCL_ERROR
 42010  	}
 42011  	offset = i64(*(*int32)(unsafe.Pointer(bp + 80)))
 42012  	offset = offset * int64(1024*1024)
 42013  	rc = sqlite3.Xsqlite3OsWrite(tls, *(*uintptr)(unsafe.Pointer(bp + 88)), ts+24628, 14, offset)
 42014  	sqlite3.Xsqlite3OsCloseFree(tls, *(*uintptr)(unsafe.Pointer(bp + 88)))
 42015  	sqlite3.Xsqlite3_free(tls, zFile)
 42016  	if rc != 0 {
 42017  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+56, ts+24642, sqlite3.Xsqlite3ErrName(tls, rc), 0))
 42018  		return TCL_ERROR
 42019  	}
 42020  	return TCL_OK
 42021  }
 42022  
 42023  func testPendingByte(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 42024  	bp := tls.Alloc(44)
 42025  	defer tls.Free(44)
 42026  
 42027  	var rc int32
 42028  	if argc != 2 {
 42029  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 42030  			ts+24657, uintptr(0)))
 42031  		return TCL_ERROR
 42032  	}
 42033  	if tcl.XTcl_GetInt(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)), bp+40) != 0 {
 42034  		return TCL_ERROR
 42035  	}
 42036  	rc = sqlite3.Xsqlite3_test_control(tls, SQLITE_TESTCTRL_PENDING_BYTE, libc.VaList(bp+32, *(*int32)(unsafe.Pointer(bp + 40))))
 42037  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, rc))
 42038  	return TCL_OK
 42039  }
 42040  
 42041  var faultSimInterp uintptr = uintptr(0)
 42042  var faultSimScriptSize int32 = 0
 42043  var faultSimScript uintptr
 42044  
 42045  func faultSimCallback(tls *libc.TLS, x int32) int32 {
 42046  	bp := tls.Alloc(38)
 42047  	defer tls.Free(38)
 42048  
 42049  	var i int32
 42050  	var isNeg int32
 42051  	var rc int32
 42052  	if x == 0 {
 42053  		libc.X__builtin___memcpy_chk(tls, faultSimScript+uintptr(faultSimScriptSize), ts+14193, uint64(2), libc.X__builtin_object_size(tls, faultSimScript+uintptr(faultSimScriptSize), 0))
 42054  	} else {
 42055  		if x < 0 {
 42056  			isNeg = 1
 42057  			x = -x
 42058  		} else {
 42059  			isNeg = 0
 42060  		}
 42061  		*(*int8)(unsafe.Pointer(bp + 8 + 29)) = int8(0)
 42062  		i = int32(uint64(unsafe.Sizeof([30]int8{})) - uint64(2))
 42063  	__1:
 42064  		if !(i > 0 && x > 0) {
 42065  			goto __3
 42066  		}
 42067  		{
 42068  			*(*int8)(unsafe.Pointer(bp + 8 + uintptr(i))) = int8(x%10 + '0')
 42069  
 42070  		}
 42071  		goto __2
 42072  	__2:
 42073  		i--
 42074  		x = x / 10
 42075  		goto __1
 42076  		goto __3
 42077  	__3:
 42078  		;
 42079  		if isNeg != 0 {
 42080  			*(*int8)(unsafe.Pointer(bp + 8 + uintptr(libc.PostDecInt32(&i, 1)))) = int8('-')
 42081  		}
 42082  		libc.X__builtin___memcpy_chk(tls, faultSimScript+uintptr(faultSimScriptSize), bp+8+uintptr(i)+uintptr(1), uint64(unsafe.Sizeof([30]int8{}))-uint64(i), libc.X__builtin_object_size(tls, faultSimScript+uintptr(faultSimScriptSize), 0))
 42083  	}
 42084  	rc = tcl.XTcl_Eval(tls, faultSimInterp, faultSimScript)
 42085  	if rc != 0 {
 42086  		libc.Xfprintf(tls, libc.X__stderrp, ts+24672, libc.VaList(bp, faultSimScript))
 42087  		rc = SQLITE_ERROR
 42088  	} else {
 42089  		rc = libc.Xatoi(tls, tcl.XTcl_GetStringResult(tls, faultSimInterp))
 42090  	}
 42091  	tcl.XTcl_ResetResult(tls, faultSimInterp)
 42092  	return rc
 42093  }
 42094  
 42095  func faultInstallCmd(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 42096  	bp := tls.Alloc(64)
 42097  	defer tls.Free(64)
 42098  
 42099  	var zScript uintptr
 42100  	var nScript int32
 42101  	var rc int32
 42102  	if argc != 1 && argc != 2 {
 42103  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 42104  			ts+24708, uintptr(0)))
 42105  	}
 42106  	if argc == 2 {
 42107  		zScript = *(*uintptr)(unsafe.Pointer(argv + 1*8))
 42108  	} else {
 42109  		zScript = ts + 584
 42110  	}
 42111  	nScript = int32(libc.Xstrlen(tls, zScript))
 42112  	if faultSimScript != 0 {
 42113  		libc.Xfree(tls, faultSimScript)
 42114  		faultSimScript = uintptr(0)
 42115  	}
 42116  	if nScript == 0 {
 42117  		rc = sqlite3.Xsqlite3_test_control(tls, SQLITE_TESTCTRL_FAULT_INSTALL, libc.VaList(bp+32, 0))
 42118  	} else {
 42119  		faultSimScript = libc.Xmalloc(tls, uint64(nScript+100))
 42120  		if faultSimScript == uintptr(0) {
 42121  			tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+40, ts+2069, uintptr(0)))
 42122  			return SQLITE_ERROR
 42123  		}
 42124  		libc.X__builtin___memcpy_chk(tls, faultSimScript, zScript, uint64(nScript), libc.X__builtin_object_size(tls, faultSimScript, 0))
 42125  		*(*int8)(unsafe.Pointer(faultSimScript + uintptr(nScript))) = int8(' ')
 42126  		faultSimScriptSize = nScript + 1
 42127  		faultSimInterp = interp
 42128  		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}))))
 42129  	}
 42130  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, rc))
 42131  	return SQLITE_OK
 42132  }
 42133  
 42134  func testBitvecBuiltinTest(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 42135  	bp := tls.Alloc(452)
 42136  	defer tls.Free(452)
 42137  
 42138  	var rc int32
 42139  	var nProg int32 = 0
 42140  
 42141  	var z uintptr
 42142  	if argc != 3 {
 42143  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 42144  			ts+24717, uintptr(0)))
 42145  	}
 42146  	if tcl.XTcl_GetInt(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)), bp+48) != 0 {
 42147  		return TCL_ERROR
 42148  	}
 42149  	z = *(*uintptr)(unsafe.Pointer(argv + 2*8))
 42150  	for nProg < 99 && *(*int8)(unsafe.Pointer(z)) != 0 {
 42151  		for *(*int8)(unsafe.Pointer(z)) != 0 && !(int32(sqlite3.Xsqlite3CtypeMap[uint8(*(*int8)(unsafe.Pointer(z)))])&0x04 != 0) {
 42152  			z++
 42153  		}
 42154  		if int32(*(*int8)(unsafe.Pointer(z))) == 0 {
 42155  			break
 42156  		}
 42157  		*(*int32)(unsafe.Pointer(bp + 52 + uintptr(libc.PostIncInt32(&nProg, 1))*4)) = libc.Xatoi(tls, z)
 42158  		for int32(sqlite3.Xsqlite3CtypeMap[uint8(*(*int8)(unsafe.Pointer(z)))])&0x04 != 0 {
 42159  			z++
 42160  		}
 42161  	}
 42162  	*(*int32)(unsafe.Pointer(bp + 52 + uintptr(nProg)*4)) = 0
 42163  	rc = sqlite3.Xsqlite3_test_control(tls, SQLITE_TESTCTRL_BITVEC_TEST, libc.VaList(bp+32, *(*int32)(unsafe.Pointer(bp + 48)), bp+52))
 42164  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, rc))
 42165  	return TCL_OK
 42166  }
 42167  
 42168  func Sqlitetest2_Init(tls *libc.TLS, interp uintptr) int32 {
 42169  	var i int32
 42170  	for i = 0; uint64(i) < uint64(unsafe.Sizeof(aCmd2))/uint64(unsafe.Sizeof(struct {
 42171  		FzName uintptr
 42172  		FxProc uintptr
 42173  	}{})); i++ {
 42174  		tcl.XTcl_CreateCommand(tls, interp, aCmd2[i].FzName, aCmd2[i].FxProc, uintptr(0), uintptr(0))
 42175  	}
 42176  	tcl.XTcl_LinkVar(tls, interp, ts+24732,
 42177  		uintptr(unsafe.Pointer(&sqlite3.Xsqlite3_io_error_pending)), TCL_LINK_INT)
 42178  	tcl.XTcl_LinkVar(tls, interp, ts+24756,
 42179  		uintptr(unsafe.Pointer(&sqlite3.Xsqlite3_io_error_persist)), TCL_LINK_INT)
 42180  	tcl.XTcl_LinkVar(tls, interp, ts+24780,
 42181  		uintptr(unsafe.Pointer(&sqlite3.Xsqlite3_io_error_hit)), TCL_LINK_INT)
 42182  	tcl.XTcl_LinkVar(tls, interp, ts+24800,
 42183  		uintptr(unsafe.Pointer(&sqlite3.Xsqlite3_io_error_hardhit)), TCL_LINK_INT)
 42184  	tcl.XTcl_LinkVar(tls, interp, ts+24824,
 42185  		uintptr(unsafe.Pointer(&sqlite3.Xsqlite3_diskfull_pending)), TCL_LINK_INT)
 42186  	tcl.XTcl_LinkVar(tls, interp, ts+24848,
 42187  		uintptr(unsafe.Pointer(&sqlite3.Xsqlite3_diskfull)), TCL_LINK_INT)
 42188  	tcl.XTcl_LinkVar(tls, interp, ts+24864,
 42189  		uintptr(unsafe.Pointer(&sqlite3.Xsqlite3PendingByte)), TCL_LINK_INT|TCL_LINK_READ_ONLY)
 42190  	return TCL_OK
 42191  }
 42192  
 42193  var aCmd2 = [20]struct {
 42194  	FzName uintptr
 42195  	FxProc uintptr
 42196  }{
 42197  	{FzName: ts + 24884, FxProc: 0},
 42198  	{FzName: ts + 24895, FxProc: 0},
 42199  	{FzName: ts + 24907, FxProc: 0},
 42200  	{FzName: ts + 24920, FxProc: 0},
 42201  	{FzName: ts + 24935, FxProc: 0},
 42202  	{FzName: ts + 24952, FxProc: 0},
 42203  	{FzName: ts + 24970, FxProc: 0},
 42204  	{FzName: ts + 24990, FxProc: 0},
 42205  	{FzName: ts + 25002, FxProc: 0},
 42206  	{FzName: ts + 25018, FxProc: 0},
 42207  	{FzName: ts + 25027, FxProc: 0},
 42208  	{FzName: ts + 25039, FxProc: 0},
 42209  	{FzName: ts + 25050, FxProc: 0},
 42210  	{FzName: ts + 25060, FxProc: 0},
 42211  	{FzName: ts + 25071, FxProc: 0},
 42212  	{FzName: ts + 25083, FxProc: 0},
 42213  	{FzName: ts + 25098, FxProc: 0},
 42214  	{FzName: ts + 25112, FxProc: 0},
 42215  	{FzName: ts + 25137, FxProc: 0},
 42216  	{FzName: ts + 25171, FxProc: 0},
 42217  }
 42218  
 42219  type Btree = Btree1
 42220  type BtCursor = BtCursor1
 42221  type BtShared = BtShared1
 42222  
 42223  type MemPage1 = struct {
 42224  	FisInit          u8
 42225  	FintKey          u8
 42226  	FintKeyLeaf      u8
 42227  	F__ccgo_pad1     [1]byte
 42228  	Fpgno            Pgno
 42229  	Fleaf            u8
 42230  	FhdrOffset       u8
 42231  	FchildPtrSize    u8
 42232  	Fmax1bytePayload u8
 42233  	FnOverflow       u8
 42234  	F__ccgo_pad2     [1]byte
 42235  	FmaxLocal        u16
 42236  	FminLocal        u16
 42237  	FcellOffset      u16
 42238  	FnFree           int32
 42239  	FnCell           u16
 42240  	FmaskPage        u16
 42241  	FaiOvfl          [4]u16
 42242  	F__ccgo_pad3     [4]byte
 42243  	FapOvfl          [4]uintptr
 42244  	FpBt             uintptr
 42245  	FaData           uintptr
 42246  	FaDataEnd        uintptr
 42247  	FaCellIdx        uintptr
 42248  	FaDataOfst       uintptr
 42249  	FpDbPage         uintptr
 42250  	FxCellSize       uintptr
 42251  	FxParseCell      uintptr
 42252  }
 42253  
 42254  type MemPage = MemPage1
 42255  type BtLock1 = struct {
 42256  	FpBtree      uintptr
 42257  	FiTable      Pgno
 42258  	FeLock       u8
 42259  	F__ccgo_pad1 [3]byte
 42260  	FpNext       uintptr
 42261  }
 42262  
 42263  type BtLock = BtLock1
 42264  type CellInfo1 = struct {
 42265  	FnKey     i64
 42266  	FpPayload uintptr
 42267  	FnPayload u32
 42268  	FnLocal   u16
 42269  	FnSize    u16
 42270  }
 42271  
 42272  type CellInfo = CellInfo1
 42273  
 42274  type IntegrityCk1 = struct {
 42275  	FpBt       uintptr
 42276  	FpPager    uintptr
 42277  	FaPgRef    uintptr
 42278  	FnPage     Pgno
 42279  	FmxErr     int32
 42280  	FnErr      int32
 42281  	FbOomFault int32
 42282  	FzPfx      uintptr
 42283  	Fv1        Pgno
 42284  	Fv2        int32
 42285  	FerrMsg    StrAccum
 42286  	Fheap      uintptr
 42287  	Fdb        uintptr
 42288  }
 42289  
 42290  type IntegrityCk = IntegrityCk1
 42291  
 42292  var sDb sqlite31
 42293  var nRefSqlite3 int32 = 0
 42294  
 42295  func btree_open(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 42296  	bp := tls.Alloc(188)
 42297  	defer tls.Free(188)
 42298  
 42299  	var rc int32
 42300  
 42301  	var n int32
 42302  	var zFilename uintptr
 42303  	if argc != 3 {
 42304  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 42305  			ts+25206, 0))
 42306  		return TCL_ERROR
 42307  	}
 42308  	if tcl.XTcl_GetInt(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 2*8)), bp+72) != 0 {
 42309  		return TCL_ERROR
 42310  	}
 42311  	nRefSqlite3++
 42312  	if nRefSqlite3 == 1 {
 42313  		sDb.FpVfs = sqlite3.Xsqlite3_vfs_find(tls, uintptr(0))
 42314  		sDb.Fmutex = sqlite3.Xsqlite3MutexAlloc(tls, SQLITE_MUTEX_RECURSIVE)
 42315  		sqlite3.Xsqlite3_mutex_enter(tls, sDb.Fmutex)
 42316  	}
 42317  	n = int32(libc.Xstrlen(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8))))
 42318  	zFilename = sqlite3.Xsqlite3_malloc(tls, n+2)
 42319  	if zFilename == uintptr(0) {
 42320  		return TCL_ERROR
 42321  	}
 42322  	libc.X__builtin___memcpy_chk(tls, zFilename, *(*uintptr)(unsafe.Pointer(argv + 1*8)), uint64(n+1), libc.X__builtin_object_size(tls, zFilename, 0))
 42323  	*(*int8)(unsafe.Pointer(zFilename + uintptr(n+1))) = int8(0)
 42324  	rc = sqlite3.Xsqlite3BtreeOpen(tls, sDb.FpVfs, zFilename, uintptr(unsafe.Pointer(&sDb)), bp+80, 0,
 42325  		SQLITE_OPEN_READWRITE|SQLITE_OPEN_CREATE|SQLITE_OPEN_MAIN_DB)
 42326  	sqlite3.Xsqlite3_free(tls, zFilename)
 42327  	if rc != SQLITE_OK {
 42328  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, sqlite3.Xsqlite3ErrName(tls, rc), 0))
 42329  		return TCL_ERROR
 42330  	}
 42331  	sqlite3.Xsqlite3BtreeSetCacheSize(tls, *(*uintptr)(unsafe.Pointer(bp + 80)), *(*int32)(unsafe.Pointer(bp + 72)))
 42332  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([100]int8{})), bp+88, ts+9889, libc.VaList(bp+48, *(*uintptr)(unsafe.Pointer(bp + 80))))
 42333  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+56, bp+88, 0))
 42334  	return TCL_OK
 42335  }
 42336  
 42337  func btree_close(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 42338  	bp := tls.Alloc(48)
 42339  	defer tls.Free(48)
 42340  
 42341  	var pBt uintptr
 42342  	var rc int32
 42343  	if argc != 2 {
 42344  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 42345  			ts+24534, 0))
 42346  		return TCL_ERROR
 42347  	}
 42348  	pBt = sqlite3TestTextToPtr(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 42349  	rc = sqlite3.Xsqlite3BtreeClose(tls, pBt)
 42350  	if rc != SQLITE_OK {
 42351  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, sqlite3.Xsqlite3ErrName(tls, rc), 0))
 42352  		return TCL_ERROR
 42353  	}
 42354  	nRefSqlite3--
 42355  	if nRefSqlite3 == 0 {
 42356  		sqlite3.Xsqlite3_mutex_leave(tls, sDb.Fmutex)
 42357  		sqlite3.Xsqlite3_mutex_free(tls, sDb.Fmutex)
 42358  		sDb.Fmutex = uintptr(0)
 42359  		sDb.FpVfs = uintptr(0)
 42360  	}
 42361  	return TCL_OK
 42362  }
 42363  
 42364  func btree_begin_transaction(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 42365  	bp := tls.Alloc(48)
 42366  	defer tls.Free(48)
 42367  
 42368  	var pBt uintptr
 42369  	var rc int32
 42370  	if argc != 2 {
 42371  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 42372  			ts+24534, 0))
 42373  		return TCL_ERROR
 42374  	}
 42375  	pBt = sqlite3TestTextToPtr(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 42376  	sqlite3.Xsqlite3BtreeEnter(tls, pBt)
 42377  	rc = sqlite3.Xsqlite3BtreeBeginTrans(tls, pBt, 1, uintptr(0))
 42378  	sqlite3.Xsqlite3BtreeLeave(tls, pBt)
 42379  	if rc != SQLITE_OK {
 42380  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, sqlite3.Xsqlite3ErrName(tls, rc), 0))
 42381  		return TCL_ERROR
 42382  	}
 42383  	return TCL_OK
 42384  }
 42385  
 42386  func btree_pager_stats(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 42387  	bp := tls.Alloc(140)
 42388  	defer tls.Free(140)
 42389  
 42390  	var pBt uintptr
 42391  	var i int32
 42392  	var a uintptr
 42393  
 42394  	if argc != 2 {
 42395  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 42396  			ts+24534, 0))
 42397  		return TCL_ERROR
 42398  	}
 42399  	pBt = sqlite3TestTextToPtr(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 42400  
 42401  	sqlite3.Xsqlite3_mutex_enter(tls, (*sqlite31)(unsafe.Pointer((*Btree)(unsafe.Pointer(pBt)).Fdb)).Fmutex)
 42402  
 42403  	sqlite3.Xsqlite3BtreeEnter(tls, pBt)
 42404  	a = sqlite3.Xsqlite3PagerStats(tls, sqlite3.Xsqlite3BtreePager(tls, pBt))
 42405  	for i = 0; i < 11; i++ {
 42406  		tcl.XTcl_AppendElement(tls, interp, zName1[i])
 42407  		sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([100]int8{})), bp+40, ts+1333, libc.VaList(bp+32, *(*int32)(unsafe.Pointer(a + uintptr(i)*4))))
 42408  		tcl.XTcl_AppendElement(tls, interp, bp+40)
 42409  	}
 42410  	sqlite3.Xsqlite3BtreeLeave(tls, pBt)
 42411  
 42412  	sqlite3.Xsqlite3_mutex_leave(tls, (*sqlite31)(unsafe.Pointer((*Btree)(unsafe.Pointer(pBt)).Fdb)).Fmutex)
 42413  	return TCL_OK
 42414  }
 42415  
 42416  var zName1 = [11]uintptr{
 42417  	ts + 24539, ts + 24543, ts + 18340, ts + 11809, ts + 9558, ts + 24548,
 42418  	ts + 24552, ts + 24556, ts + 24561, ts + 25230, ts + 25235,
 42419  }
 42420  
 42421  func btree_cursor(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 42422  	bp := tls.Alloc(110)
 42423  	defer tls.Free(110)
 42424  
 42425  	var pBt uintptr
 42426  
 42427  	var pCur uintptr
 42428  	var rc int32 = SQLITE_OK
 42429  
 42430  	if argc != 4 {
 42431  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 42432  			ts+25241, 0))
 42433  		return TCL_ERROR
 42434  	}
 42435  	pBt = sqlite3TestTextToPtr(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 42436  	if tcl.XTcl_GetInt(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 2*8)), bp+72) != 0 {
 42437  		return TCL_ERROR
 42438  	}
 42439  	if tcl.XTcl_GetBoolean(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 3*8)), bp+76) != 0 {
 42440  		return TCL_ERROR
 42441  	}
 42442  	if *(*int32)(unsafe.Pointer(bp + 76)) != 0 {
 42443  		*(*int32)(unsafe.Pointer(bp + 76)) = BTREE_WRCSR
 42444  	}
 42445  	pCur = tcl.XTcl_Alloc(tls, uint32(sqlite3.Xsqlite3BtreeCursorSize(tls)))
 42446  	libc.X__builtin___memset_chk(tls, pCur, 0, uint64(sqlite3.Xsqlite3BtreeCursorSize(tls)), libc.X__builtin_object_size(tls, pCur, 0))
 42447  	sqlite3.Xsqlite3_mutex_enter(tls, (*sqlite31)(unsafe.Pointer((*Btree)(unsafe.Pointer(pBt)).Fdb)).Fmutex)
 42448  	sqlite3.Xsqlite3BtreeEnter(tls, pBt)
 42449  	rc = sqlite3.Xsqlite3BtreeLockTable(tls, pBt, *(*int32)(unsafe.Pointer(bp + 72)), libc.BoolUint8(!!(*(*int32)(unsafe.Pointer(bp + 76)) != 0)))
 42450  	if rc == SQLITE_OK {
 42451  		rc = sqlite3.Xsqlite3BtreeCursor(tls, pBt, uint32(*(*int32)(unsafe.Pointer(bp + 72))), *(*int32)(unsafe.Pointer(bp + 76)), uintptr(0), pCur)
 42452  	}
 42453  	sqlite3.Xsqlite3BtreeLeave(tls, pBt)
 42454  	sqlite3.Xsqlite3_mutex_leave(tls, (*sqlite31)(unsafe.Pointer((*Btree)(unsafe.Pointer(pBt)).Fdb)).Fmutex)
 42455  	if rc != 0 {
 42456  		tcl.XTcl_Free(tls, pCur)
 42457  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, sqlite3.Xsqlite3ErrName(tls, rc), 0))
 42458  		return TCL_ERROR
 42459  	}
 42460  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([30]int8{})), bp+80, ts+9889, libc.VaList(bp+48, pCur))
 42461  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+56, bp+80, 0))
 42462  	return SQLITE_OK
 42463  }
 42464  
 42465  func btree_close_cursor(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 42466  	bp := tls.Alloc(48)
 42467  	defer tls.Free(48)
 42468  
 42469  	var pCur uintptr
 42470  	var rc int32
 42471  
 42472  	if argc != 2 {
 42473  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 42474  			ts+24534, 0))
 42475  		return TCL_ERROR
 42476  	}
 42477  	pCur = sqlite3TestTextToPtr(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 42478  	{
 42479  		var pBt uintptr = (*BtCursor)(unsafe.Pointer(pCur)).FpBtree
 42480  		sqlite3.Xsqlite3_mutex_enter(tls, (*sqlite31)(unsafe.Pointer((*Btree)(unsafe.Pointer(pBt)).Fdb)).Fmutex)
 42481  		sqlite3.Xsqlite3BtreeEnter(tls, pBt)
 42482  		rc = sqlite3.Xsqlite3BtreeCloseCursor(tls, pCur)
 42483  		sqlite3.Xsqlite3BtreeLeave(tls, pBt)
 42484  		sqlite3.Xsqlite3_mutex_leave(tls, (*sqlite31)(unsafe.Pointer((*Btree)(unsafe.Pointer(pBt)).Fdb)).Fmutex)
 42485  
 42486  	}
 42487  	tcl.XTcl_Free(tls, pCur)
 42488  	if rc != 0 {
 42489  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, sqlite3.Xsqlite3ErrName(tls, rc), 0))
 42490  		return TCL_ERROR
 42491  	}
 42492  	return SQLITE_OK
 42493  }
 42494  
 42495  func btree_next(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 42496  	bp := tls.Alloc(172)
 42497  	defer tls.Free(172)
 42498  
 42499  	var pCur uintptr
 42500  	var rc int32
 42501  	var res int32 = 0
 42502  
 42503  	if argc != 2 {
 42504  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 42505  			ts+24534, 0))
 42506  		return TCL_ERROR
 42507  	}
 42508  	pCur = sqlite3TestTextToPtr(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 42509  	sqlite3.Xsqlite3BtreeEnter(tls, (*BtCursor)(unsafe.Pointer(pCur)).FpBtree)
 42510  	rc = sqlite3.Xsqlite3BtreeNext(tls, pCur, 0)
 42511  	if rc == SQLITE_DONE {
 42512  		res = 1
 42513  		rc = SQLITE_OK
 42514  	}
 42515  	sqlite3.Xsqlite3BtreeLeave(tls, (*BtCursor)(unsafe.Pointer(pCur)).FpBtree)
 42516  	if rc != 0 {
 42517  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, sqlite3.Xsqlite3ErrName(tls, rc), 0))
 42518  		return TCL_ERROR
 42519  	}
 42520  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([100]int8{})), bp+72, ts+1333, libc.VaList(bp+48, res))
 42521  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+56, bp+72, 0))
 42522  	return SQLITE_OK
 42523  }
 42524  
 42525  func btree_first(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 42526  	bp := tls.Alloc(176)
 42527  	defer tls.Free(176)
 42528  
 42529  	var pCur uintptr
 42530  	var rc int32
 42531  	*(*int32)(unsafe.Pointer(bp + 72)) = 0
 42532  
 42533  	if argc != 2 {
 42534  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 42535  			ts+24534, 0))
 42536  		return TCL_ERROR
 42537  	}
 42538  	pCur = sqlite3TestTextToPtr(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 42539  	sqlite3.Xsqlite3BtreeEnter(tls, (*BtCursor)(unsafe.Pointer(pCur)).FpBtree)
 42540  	rc = sqlite3.Xsqlite3BtreeFirst(tls, pCur, bp+72)
 42541  	sqlite3.Xsqlite3BtreeLeave(tls, (*BtCursor)(unsafe.Pointer(pCur)).FpBtree)
 42542  	if rc != 0 {
 42543  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, sqlite3.Xsqlite3ErrName(tls, rc), 0))
 42544  		return TCL_ERROR
 42545  	}
 42546  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([100]int8{})), bp+76, ts+1333, libc.VaList(bp+48, *(*int32)(unsafe.Pointer(bp + 72))))
 42547  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+56, bp+76, 0))
 42548  	return SQLITE_OK
 42549  }
 42550  
 42551  func btree_eof(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 42552  	bp := tls.Alloc(106)
 42553  	defer tls.Free(106)
 42554  
 42555  	var pCur uintptr
 42556  	var rc int32
 42557  
 42558  	if argc != 2 {
 42559  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 42560  			ts+24534, 0))
 42561  		return TCL_ERROR
 42562  	}
 42563  	pCur = sqlite3TestTextToPtr(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 42564  	sqlite3.Xsqlite3BtreeEnter(tls, (*BtCursor)(unsafe.Pointer(pCur)).FpBtree)
 42565  	rc = sqlite3.Xsqlite3BtreeEof(tls, pCur)
 42566  	sqlite3.Xsqlite3BtreeLeave(tls, (*BtCursor)(unsafe.Pointer(pCur)).FpBtree)
 42567  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([50]int8{})), bp+56, ts+1333, libc.VaList(bp+32, rc))
 42568  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+40, bp+56, 0))
 42569  	return SQLITE_OK
 42570  }
 42571  
 42572  func btree_payload_size(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 42573  	bp := tls.Alloc(106)
 42574  	defer tls.Free(106)
 42575  
 42576  	var pCur uintptr
 42577  	var n u32
 42578  
 42579  	if argc != 2 {
 42580  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 42581  			ts+24534, 0))
 42582  		return TCL_ERROR
 42583  	}
 42584  	pCur = sqlite3TestTextToPtr(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 42585  	sqlite3.Xsqlite3BtreeEnter(tls, (*BtCursor)(unsafe.Pointer(pCur)).FpBtree)
 42586  	n = sqlite3.Xsqlite3BtreePayloadSize(tls, pCur)
 42587  	sqlite3.Xsqlite3BtreeLeave(tls, (*BtCursor)(unsafe.Pointer(pCur)).FpBtree)
 42588  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([50]int8{})), bp+56, ts+17791, libc.VaList(bp+32, n))
 42589  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+40, bp+56, 0))
 42590  	return SQLITE_OK
 42591  }
 42592  
 42593  func btree_varint_test(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 42594  	bp := tls.Alloc(516)
 42595  	defer tls.Free(516)
 42596  
 42597  	var in u64
 42598  
 42599  	var n1 int32
 42600  	var n2 int32
 42601  	var i int32
 42602  	var j int32
 42603  
 42604  	if argc != 5 {
 42605  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 42606  			ts+25265, 0))
 42607  		return TCL_ERROR
 42608  	}
 42609  	if tcl.XTcl_GetInt(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)), bp+184) != 0 {
 42610  		return TCL_ERROR
 42611  	}
 42612  	if tcl.XTcl_GetInt(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 2*8)), bp+188) != 0 {
 42613  		return TCL_ERROR
 42614  	}
 42615  	if tcl.XTcl_GetInt(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 3*8)), bp+192) != 0 {
 42616  		return TCL_ERROR
 42617  	}
 42618  	if tcl.XTcl_GetInt(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 4*8)), bp+196) != 0 {
 42619  		return TCL_ERROR
 42620  	}
 42621  	in = u64(*(*u32)(unsafe.Pointer(bp + 184)))
 42622  	in = in * u64(*(*u32)(unsafe.Pointer(bp + 188)))
 42623  	for i = 0; i < int32(*(*u32)(unsafe.Pointer(bp + 192))); i++ {
 42624  		n1 = sqlite3.Xsqlite3PutVarint(tls, bp+200, in)
 42625  		if n1 > 9 || n1 < 1 {
 42626  			sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([200]int8{})), bp+300,
 42627  				ts+25300, libc.VaList(bp+32, n1))
 42628  			tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+40, bp+300, 0))
 42629  			return TCL_ERROR
 42630  		}
 42631  		n2 = int32(sqlite3.Xsqlite3GetVarint(tls, bp+200, bp+504))
 42632  		if n1 != n2 {
 42633  			sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([200]int8{})), bp+300,
 42634  				ts+25350, libc.VaList(bp+56, n1, n2))
 42635  			tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+72, bp+300, 0))
 42636  			return TCL_ERROR
 42637  		}
 42638  		if in != *(*u64)(unsafe.Pointer(bp + 504)) {
 42639  			sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([200]int8{})), bp+300,
 42640  				ts+25398, libc.VaList(bp+88, in, *(*u64)(unsafe.Pointer(bp + 504))))
 42641  			tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+104, bp+300, 0))
 42642  			return TCL_ERROR
 42643  		}
 42644  		if in&uint64(0xffffffff) == in {
 42645  			n2 = int32(func() uint8 {
 42646  				if int32(*(*uint8)(unsafe.Pointer(bp + 200))) < int32(u8(0x80)) {
 42647  					return uint8(func() int32 { *(*u32)(unsafe.Pointer(bp + 512)) = u32(*(*uint8)(unsafe.Pointer(bp + 200))); return 1 }())
 42648  				}
 42649  				return sqlite3.Xsqlite3GetVarint32(tls, bp+200, bp+512)
 42650  			}())
 42651  			*(*u64)(unsafe.Pointer(bp + 504)) = u64(*(*u32)(unsafe.Pointer(bp + 512)))
 42652  			if n1 != n2 {
 42653  				sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([200]int8{})), bp+300,
 42654  					ts+25437,
 42655  					libc.VaList(bp+120, n1, n2))
 42656  				tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+136, bp+300, 0))
 42657  				return TCL_ERROR
 42658  			}
 42659  			if in != *(*u64)(unsafe.Pointer(bp + 504)) {
 42660  				sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([200]int8{})), bp+300,
 42661  					ts+25487,
 42662  					libc.VaList(bp+152, in, *(*u64)(unsafe.Pointer(bp + 504))))
 42663  				tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+168, bp+300, 0))
 42664  				return TCL_ERROR
 42665  			}
 42666  		}
 42667  
 42668  		for j = 0; j < 19; j++ {
 42669  			sqlite3.Xsqlite3GetVarint(tls, bp+200, bp+504)
 42670  		}
 42671  		in = in + u64(*(*u32)(unsafe.Pointer(bp + 196)))
 42672  	}
 42673  	return TCL_OK
 42674  }
 42675  
 42676  func btree_from_db(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 42677  	bp := tls.Alloc(236)
 42678  	defer tls.Free(236)
 42679  
 42680  	var db uintptr
 42681  	var pBt uintptr
 42682  	var iDb int32 = 0
 42683  
 42684  	if argc != 2 && argc != 3 {
 42685  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 42686  			ts+25543, 0))
 42687  		return TCL_ERROR
 42688  	}
 42689  
 42690  	if 1 != tcl.XTcl_GetCommandInfo(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)), bp+72) {
 42691  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25559, *(*uintptr)(unsafe.Pointer(argv + 1*8)), ts+11945, 0))
 42692  		return TCL_ERROR
 42693  	}
 42694  	if argc == 3 {
 42695  		iDb = libc.Xatoi(tls, *(*uintptr)(unsafe.Pointer(argv + 2*8)))
 42696  	}
 42697  
 42698  	db = *(*uintptr)(unsafe.Pointer((*Tcl_CmdInfo)(unsafe.Pointer(bp + 72)).FobjClientData))
 42699  
 42700  	pBt = (*Db)(unsafe.Pointer((*sqlite31)(unsafe.Pointer(db)).FaDb + uintptr(iDb)*32)).FpBt
 42701  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([100]int8{})), bp+136, ts+9889, libc.VaList(bp+64, pBt))
 42702  	tcl.XTcl_SetResult(tls, interp, bp+136, uintptr(1))
 42703  	return TCL_OK
 42704  }
 42705  
 42706  func btree_ismemdb(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 42707  	bp := tls.Alloc(32)
 42708  	defer tls.Free(32)
 42709  
 42710  	var pBt uintptr
 42711  	var res int32
 42712  	var pFile uintptr
 42713  
 42714  	if argc != 2 {
 42715  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 42716  			ts+24534, 0))
 42717  		return TCL_ERROR
 42718  	}
 42719  	pBt = sqlite3TestTextToPtr(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 42720  	sqlite3.Xsqlite3_mutex_enter(tls, (*sqlite31)(unsafe.Pointer((*Btree)(unsafe.Pointer(pBt)).Fdb)).Fmutex)
 42721  	sqlite3.Xsqlite3BtreeEnter(tls, pBt)
 42722  	pFile = sqlite3.Xsqlite3PagerFile(tls, sqlite3.Xsqlite3BtreePager(tls, pBt))
 42723  	res = libc.Bool32((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods == uintptr(0))
 42724  	sqlite3.Xsqlite3BtreeLeave(tls, pBt)
 42725  	sqlite3.Xsqlite3_mutex_leave(tls, (*sqlite31)(unsafe.Pointer((*Btree)(unsafe.Pointer(pBt)).Fdb)).Fmutex)
 42726  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewBooleanObj(tls, res))
 42727  	return SQLITE_OK
 42728  }
 42729  
 42730  func btree_set_cache_size(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 42731  	bp := tls.Alloc(36)
 42732  	defer tls.Free(36)
 42733  
 42734  	var pBt uintptr
 42735  
 42736  	if argc != 3 {
 42737  		tcl.XTcl_AppendResult(tls,
 42738  			interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)), ts+25580, 0))
 42739  		return TCL_ERROR
 42740  	}
 42741  	pBt = sqlite3TestTextToPtr(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 42742  	if tcl.XTcl_GetInt(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 2*8)), bp+32) != 0 {
 42743  		return TCL_ERROR
 42744  	}
 42745  
 42746  	sqlite3.Xsqlite3_mutex_enter(tls, (*sqlite31)(unsafe.Pointer((*Btree)(unsafe.Pointer(pBt)).Fdb)).Fmutex)
 42747  	sqlite3.Xsqlite3BtreeEnter(tls, pBt)
 42748  	sqlite3.Xsqlite3BtreeSetCacheSize(tls, pBt, *(*int32)(unsafe.Pointer(bp + 32)))
 42749  	sqlite3.Xsqlite3BtreeLeave(tls, pBt)
 42750  	sqlite3.Xsqlite3_mutex_leave(tls, (*sqlite31)(unsafe.Pointer((*Btree)(unsafe.Pointer(pBt)).Fdb)).Fmutex)
 42751  	return TCL_OK
 42752  }
 42753  
 42754  func btree_insert(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 42755  	bp := tls.Alloc(68)
 42756  	defer tls.Free(68)
 42757  
 42758  	var pCur uintptr
 42759  
 42760  	if objc != 4 && objc != 3 {
 42761  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+25592)
 42762  		return TCL_ERROR
 42763  	}
 42764  
 42765  	libc.X__builtin___memset_chk(tls, bp+16, 0, uint64(unsafe.Sizeof(BtreePayload{})), libc.X__builtin_object_size(tls, bp+16, 0))
 42766  	if objc == 4 {
 42767  		if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+64) != 0 {
 42768  			return TCL_ERROR
 42769  		}
 42770  		(*BtreePayload)(unsafe.Pointer(bp + 16)).FnKey = sqlite3_int64(*(*int32)(unsafe.Pointer(bp + 64)))
 42771  		(*BtreePayload)(unsafe.Pointer(bp + 16)).FpData = tcl.XTcl_GetByteArrayFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+16+36)
 42772  	} else {
 42773  		(*BtreePayload)(unsafe.Pointer(bp + 16)).FpKey = tcl.XTcl_GetByteArrayFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+64)
 42774  		(*BtreePayload)(unsafe.Pointer(bp + 16)).FnKey = sqlite3_int64(*(*int32)(unsafe.Pointer(bp + 64)))
 42775  	}
 42776  	pCur = sqlite3TestTextToPtr(tls, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))))
 42777  
 42778  	sqlite3.Xsqlite3_mutex_enter(tls, (*sqlite31)(unsafe.Pointer((*Btree)(unsafe.Pointer((*BtCursor)(unsafe.Pointer(pCur)).FpBtree)).Fdb)).Fmutex)
 42779  	sqlite3.Xsqlite3BtreeEnter(tls, (*BtCursor)(unsafe.Pointer(pCur)).FpBtree)
 42780  	*(*int32)(unsafe.Pointer(bp + 64)) = sqlite3.Xsqlite3BtreeInsert(tls, pCur, bp+16, 0, 0)
 42781  	sqlite3.Xsqlite3BtreeLeave(tls, (*BtCursor)(unsafe.Pointer(pCur)).FpBtree)
 42782  	sqlite3.Xsqlite3_mutex_leave(tls, (*sqlite31)(unsafe.Pointer((*Btree)(unsafe.Pointer((*BtCursor)(unsafe.Pointer(pCur)).FpBtree)).Fdb)).Fmutex)
 42783  
 42784  	tcl.XTcl_ResetResult(tls, interp)
 42785  	if *(*int32)(unsafe.Pointer(bp + 64)) != 0 {
 42786  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, sqlite3.Xsqlite3ErrName(tls, *(*int32)(unsafe.Pointer(bp + 64))), 0))
 42787  		return TCL_ERROR
 42788  	}
 42789  	return TCL_OK
 42790  }
 42791  
 42792  func Sqlitetest3_Init(tls *libc.TLS, interp uintptr) int32 {
 42793  	var i int32
 42794  
 42795  	for i = 0; uint64(i) < uint64(unsafe.Sizeof(aCmd3))/uint64(unsafe.Sizeof(struct {
 42796  		FzName uintptr
 42797  		FxProc uintptr
 42798  	}{})); i++ {
 42799  		tcl.XTcl_CreateCommand(tls, interp, aCmd3[i].FzName, aCmd3[i].FxProc, uintptr(0), uintptr(0))
 42800  	}
 42801  
 42802  	tcl.XTcl_CreateObjCommand(tls, interp, ts+25616, *(*uintptr)(unsafe.Pointer(&struct {
 42803  		f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
 42804  	}{btree_insert})), uintptr(0), uintptr(0))
 42805  
 42806  	return TCL_OK
 42807  }
 42808  
 42809  var aCmd3 = [14]struct {
 42810  	FzName uintptr
 42811  	FxProc uintptr
 42812  }{
 42813  	{FzName: ts + 25629, FxProc: 0},
 42814  	{FzName: ts + 25640, FxProc: 0},
 42815  	{FzName: ts + 25652, FxProc: 0},
 42816  	{FzName: ts + 25676, FxProc: 0},
 42817  	{FzName: ts + 25694, FxProc: 0},
 42818  	{FzName: ts + 25707, FxProc: 0},
 42819  	{FzName: ts + 25726, FxProc: 0},
 42820  	{FzName: ts + 25737, FxProc: 0},
 42821  	{FzName: ts + 25747, FxProc: 0},
 42822  	{FzName: ts + 25766, FxProc: 0},
 42823  	{FzName: ts + 25778, FxProc: 0},
 42824  	{FzName: ts + 25796, FxProc: 0},
 42825  	{FzName: ts + 25810, FxProc: 0},
 42826  	{FzName: ts + 25824, FxProc: 0},
 42827  }
 42828  
 42829  type sched_param = struct {
 42830  	Fsched_priority int32
 42831  	F__opaque       [4]int8
 42832  }
 42833  
 42834  type qos_class_t = uint32
 42835  
 42836  type pthread_override_t = uintptr
 42837  
 42838  type mach_port_t = uint32
 42839  
 42840  type Thread = struct {
 42841  	FzFilename   uintptr
 42842  	FxOp         uintptr
 42843  	FzArg        uintptr
 42844  	Fopnum       int32
 42845  	Fbusy        int32
 42846  	Fcompleted   int32
 42847  	F__ccgo_pad1 [4]byte
 42848  	Fdb          uintptr
 42849  	FpStmt       uintptr
 42850  	FzErr        uintptr
 42851  	FzStaticErr  uintptr
 42852  	Frc          int32
 42853  	Fargc        int32
 42854  	Fargv        [100]uintptr
 42855  	Fcolv        [100]uintptr
 42856  }
 42857  
 42858  var threadset [26]Thread
 42859  
 42860  func test_barrier(tls *libc.TLS) {
 42861  	var pMutex uintptr = sqlite3.Xsqlite3_mutex_alloc(tls, SQLITE_MUTEX_STATIC_APP1)
 42862  	sqlite3.Xsqlite3_mutex_enter(tls, pMutex)
 42863  	sqlite3.Xsqlite3_mutex_leave(tls, pMutex)
 42864  }
 42865  
 42866  func test_thread_main(tls *libc.TLS, pArg uintptr) uintptr {
 42867  	var p uintptr = pArg
 42868  	if (*Thread)(unsafe.Pointer(p)).Fdb != 0 {
 42869  		sqlite3.Xsqlite3_close(tls, (*Thread)(unsafe.Pointer(p)).Fdb)
 42870  	}
 42871  	sqlite3.Xsqlite3_open(tls, (*Thread)(unsafe.Pointer(p)).FzFilename, p+40)
 42872  	if SQLITE_OK != sqlite3.Xsqlite3_errcode(tls, (*Thread)(unsafe.Pointer(p)).Fdb) {
 42873  		(*Thread)(unsafe.Pointer(p)).FzErr = libc.Xstrdup(tls, sqlite3.Xsqlite3_errmsg(tls, (*Thread)(unsafe.Pointer(p)).Fdb))
 42874  		sqlite3.Xsqlite3_close(tls, (*Thread)(unsafe.Pointer(p)).Fdb)
 42875  		(*Thread)(unsafe.Pointer(p)).Fdb = uintptr(0)
 42876  	}
 42877  	(*Thread)(unsafe.Pointer(p)).FpStmt = uintptr(0)
 42878  	test_barrier(tls)
 42879  	(*Thread)(unsafe.Pointer(p)).Fcompleted = 1
 42880  	for (*Thread)(unsafe.Pointer(p)).Fopnum <= (*Thread)(unsafe.Pointer(p)).Fcompleted {
 42881  		libc.Xsched_yield(tls)
 42882  	}
 42883  	test_barrier(tls)
 42884  	for (*Thread)(unsafe.Pointer(p)).FxOp != 0 {
 42885  		if (*Thread)(unsafe.Pointer(p)).FzErr != 0 && (*Thread)(unsafe.Pointer(p)).FzErr != (*Thread)(unsafe.Pointer(p)).FzStaticErr {
 42886  			sqlite3.Xsqlite3_free(tls, (*Thread)(unsafe.Pointer(p)).FzErr)
 42887  			(*Thread)(unsafe.Pointer(p)).FzErr = uintptr(0)
 42888  		}
 42889  		(*struct{ f func(*libc.TLS, uintptr) })(unsafe.Pointer(&struct{ uintptr }{(*Thread)(unsafe.Pointer(p)).FxOp})).f(tls, p)
 42890  		test_barrier(tls)
 42891  		(*Thread)(unsafe.Pointer(p)).Fcompleted++
 42892  		for (*Thread)(unsafe.Pointer(p)).Fopnum <= (*Thread)(unsafe.Pointer(p)).Fcompleted {
 42893  			libc.Xsched_yield(tls)
 42894  		}
 42895  		test_barrier(tls)
 42896  	}
 42897  	if (*Thread)(unsafe.Pointer(p)).FpStmt != 0 {
 42898  		sqlite3.Xsqlite3_finalize(tls, (*Thread)(unsafe.Pointer(p)).FpStmt)
 42899  		(*Thread)(unsafe.Pointer(p)).FpStmt = uintptr(0)
 42900  	}
 42901  	if (*Thread)(unsafe.Pointer(p)).Fdb != 0 {
 42902  		sqlite3.Xsqlite3_close(tls, (*Thread)(unsafe.Pointer(p)).Fdb)
 42903  		(*Thread)(unsafe.Pointer(p)).Fdb = uintptr(0)
 42904  	}
 42905  	if (*Thread)(unsafe.Pointer(p)).FzErr != 0 && (*Thread)(unsafe.Pointer(p)).FzErr != (*Thread)(unsafe.Pointer(p)).FzStaticErr {
 42906  		sqlite3.Xsqlite3_free(tls, (*Thread)(unsafe.Pointer(p)).FzErr)
 42907  		(*Thread)(unsafe.Pointer(p)).FzErr = uintptr(0)
 42908  	}
 42909  	test_barrier(tls)
 42910  	(*Thread)(unsafe.Pointer(p)).Fcompleted++
 42911  	sqlite3.Xsqlite3_thread_cleanup(tls)
 42912  	return uintptr(0)
 42913  }
 42914  
 42915  func parse_thread_id(tls *libc.TLS, interp uintptr, zArg uintptr) int32 {
 42916  	bp := tls.Alloc(16)
 42917  	defer tls.Free(16)
 42918  
 42919  	if zArg == uintptr(0) || int32(*(*int8)(unsafe.Pointer(zArg))) == 0 || int32(*(*int8)(unsafe.Pointer(zArg + 1))) != 0 || !(isupper(tls, int32(uint8(*(*int8)(unsafe.Pointer(zArg))))) != 0) {
 42920  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+25845, 0))
 42921  		return -1
 42922  	}
 42923  	return int32(*(*int8)(unsafe.Pointer(zArg))) - 'A'
 42924  }
 42925  
 42926  func tcl_thread_create(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 42927  	bp := tls.Alloc(96)
 42928  	defer tls.Free(96)
 42929  
 42930  	var i int32
 42931  
 42932  	var rc int32
 42933  
 42934  	if argc != 3 {
 42935  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 42936  			ts+25884, 0))
 42937  		return TCL_ERROR
 42938  	}
 42939  	i = parse_thread_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 42940  	if i < 0 {
 42941  		return TCL_ERROR
 42942  	}
 42943  	if threadset[i].Fbusy != 0 {
 42944  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25897, *(*uintptr)(unsafe.Pointer(argv + 1*8)), ts+25905, 0))
 42945  		return TCL_ERROR
 42946  	}
 42947  	threadset[i].Fbusy = 1
 42948  	sqlite3.Xsqlite3_free(tls, threadset[i].FzFilename)
 42949  	threadset[i].FzFilename = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp+64, *(*uintptr)(unsafe.Pointer(argv + 2*8))))
 42950  	threadset[i].Fopnum = 1
 42951  	threadset[i].Fcompleted = 0
 42952  	rc = libc.Xpthread_create(tls, bp+88, uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 42953  		f func(*libc.TLS, uintptr) uintptr
 42954  	}{test_thread_main})), uintptr(unsafe.Pointer(&threadset))+uintptr(i)*1680)
 42955  	if rc != 0 {
 42956  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+72, ts+25925, 0))
 42957  		sqlite3.Xsqlite3_free(tls, threadset[i].FzFilename)
 42958  		threadset[i].Fbusy = 0
 42959  		return TCL_ERROR
 42960  	}
 42961  	libc.Xpthread_detach(tls, *(*pthread_t)(unsafe.Pointer(bp + 88)))
 42962  	return TCL_OK
 42963  }
 42964  
 42965  func test_thread_wait(tls *libc.TLS, p uintptr) {
 42966  	test_barrier(tls)
 42967  	for (*Thread)(unsafe.Pointer(p)).Fopnum > (*Thread)(unsafe.Pointer(p)).Fcompleted {
 42968  		libc.Xsched_yield(tls)
 42969  	}
 42970  	test_barrier(tls)
 42971  }
 42972  
 42973  func tcl_thread_wait(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 42974  	bp := tls.Alloc(48)
 42975  	defer tls.Free(48)
 42976  
 42977  	var i int32
 42978  
 42979  	if argc != 2 {
 42980  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 42981  			ts+25953, 0))
 42982  		return TCL_ERROR
 42983  	}
 42984  	i = parse_thread_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 42985  	if i < 0 {
 42986  		return TCL_ERROR
 42987  	}
 42988  	if !(threadset[i].Fbusy != 0) {
 42989  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25957, 0))
 42990  		return TCL_ERROR
 42991  	}
 42992  	test_thread_wait(tls, uintptr(unsafe.Pointer(&threadset))+uintptr(i)*1680)
 42993  	return TCL_OK
 42994  }
 42995  
 42996  func test_stop_thread(tls *libc.TLS, p uintptr) {
 42997  	test_thread_wait(tls, p)
 42998  	(*Thread)(unsafe.Pointer(p)).FxOp = uintptr(0)
 42999  	(*Thread)(unsafe.Pointer(p)).Fopnum++
 43000  	test_thread_wait(tls, p)
 43001  	sqlite3.Xsqlite3_free(tls, (*Thread)(unsafe.Pointer(p)).FzArg)
 43002  	(*Thread)(unsafe.Pointer(p)).FzArg = uintptr(0)
 43003  	sqlite3.Xsqlite3_free(tls, (*Thread)(unsafe.Pointer(p)).FzFilename)
 43004  	(*Thread)(unsafe.Pointer(p)).FzFilename = uintptr(0)
 43005  	(*Thread)(unsafe.Pointer(p)).Fbusy = 0
 43006  }
 43007  
 43008  func tcl_thread_halt(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 43009  	bp := tls.Alloc(48)
 43010  	defer tls.Free(48)
 43011  
 43012  	var i int32
 43013  
 43014  	if argc != 2 {
 43015  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 43016  			ts+25953, 0))
 43017  		return TCL_ERROR
 43018  	}
 43019  	if int32(*(*int8)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(argv + 1*8))))) == '*' && int32(*(*int8)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(argv + 1*8)) + 1))) == 0 {
 43020  		for i = 0; i < N_THREAD; i++ {
 43021  			if threadset[i].Fbusy != 0 {
 43022  				test_stop_thread(tls, uintptr(unsafe.Pointer(&threadset))+uintptr(i)*1680)
 43023  			}
 43024  		}
 43025  	} else {
 43026  		i = parse_thread_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 43027  		if i < 0 {
 43028  			return TCL_ERROR
 43029  		}
 43030  		if !(threadset[i].Fbusy != 0) {
 43031  			tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25957, 0))
 43032  			return TCL_ERROR
 43033  		}
 43034  		test_stop_thread(tls, uintptr(unsafe.Pointer(&threadset))+uintptr(i)*1680)
 43035  	}
 43036  	return TCL_OK
 43037  }
 43038  
 43039  func tcl_thread_argc(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 43040  	bp := tls.Alloc(172)
 43041  	defer tls.Free(172)
 43042  
 43043  	var i int32
 43044  
 43045  	if argc != 2 {
 43046  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 43047  			ts+25953, 0))
 43048  		return TCL_ERROR
 43049  	}
 43050  	i = parse_thread_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 43051  	if i < 0 {
 43052  		return TCL_ERROR
 43053  	}
 43054  	if !(threadset[i].Fbusy != 0) {
 43055  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25957, 0))
 43056  		return TCL_ERROR
 43057  	}
 43058  	test_thread_wait(tls, uintptr(unsafe.Pointer(&threadset))+uintptr(i)*1680)
 43059  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([100]int8{})), bp+72, ts+1333, libc.VaList(bp+48, threadset[i].Fargc))
 43060  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+56, bp+72, 0))
 43061  	return TCL_OK
 43062  }
 43063  
 43064  func tcl_thread_argv(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 43065  	bp := tls.Alloc(84)
 43066  	defer tls.Free(84)
 43067  
 43068  	var i int32
 43069  
 43070  	if argc != 3 {
 43071  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 43072  			ts+25972, 0))
 43073  		return TCL_ERROR
 43074  	}
 43075  	i = parse_thread_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 43076  	if i < 0 {
 43077  		return TCL_ERROR
 43078  	}
 43079  	if !(threadset[i].Fbusy != 0) {
 43080  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25957, 0))
 43081  		return TCL_ERROR
 43082  	}
 43083  	if tcl.XTcl_GetInt(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 2*8)), bp+80) != 0 {
 43084  		return TCL_ERROR
 43085  	}
 43086  	test_thread_wait(tls, uintptr(unsafe.Pointer(&threadset))+uintptr(i)*1680)
 43087  	if *(*int32)(unsafe.Pointer(bp + 80)) < 0 || *(*int32)(unsafe.Pointer(bp + 80)) >= threadset[i].Fargc {
 43088  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+48, ts+25978, 0))
 43089  		return TCL_ERROR
 43090  	}
 43091  	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))
 43092  	return TCL_OK
 43093  }
 43094  
 43095  func tcl_thread_colname(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 43096  	bp := tls.Alloc(84)
 43097  	defer tls.Free(84)
 43098  
 43099  	var i int32
 43100  
 43101  	if argc != 3 {
 43102  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 43103  			ts+25972, 0))
 43104  		return TCL_ERROR
 43105  	}
 43106  	i = parse_thread_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 43107  	if i < 0 {
 43108  		return TCL_ERROR
 43109  	}
 43110  	if !(threadset[i].Fbusy != 0) {
 43111  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25957, 0))
 43112  		return TCL_ERROR
 43113  	}
 43114  	if tcl.XTcl_GetInt(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 2*8)), bp+80) != 0 {
 43115  		return TCL_ERROR
 43116  	}
 43117  	test_thread_wait(tls, uintptr(unsafe.Pointer(&threadset))+uintptr(i)*1680)
 43118  	if *(*int32)(unsafe.Pointer(bp + 80)) < 0 || *(*int32)(unsafe.Pointer(bp + 80)) >= threadset[i].Fargc {
 43119  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+48, ts+25978, 0))
 43120  		return TCL_ERROR
 43121  	}
 43122  	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))
 43123  	return TCL_OK
 43124  }
 43125  
 43126  func tcl_thread_result(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 43127  	bp := tls.Alloc(64)
 43128  	defer tls.Free(64)
 43129  
 43130  	var i int32
 43131  	var zName uintptr
 43132  
 43133  	if argc != 2 {
 43134  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 43135  			ts+25953, 0))
 43136  		return TCL_ERROR
 43137  	}
 43138  	i = parse_thread_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 43139  	if i < 0 {
 43140  		return TCL_ERROR
 43141  	}
 43142  	if !(threadset[i].Fbusy != 0) {
 43143  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25957, 0))
 43144  		return TCL_ERROR
 43145  	}
 43146  	test_thread_wait(tls, uintptr(unsafe.Pointer(&threadset))+uintptr(i)*1680)
 43147  	zName = sqlite3.Xsqlite3ErrName(tls, threadset[i].Frc)
 43148  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+48, zName, 0))
 43149  	return TCL_OK
 43150  }
 43151  
 43152  func tcl_thread_error(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 43153  	bp := tls.Alloc(64)
 43154  	defer tls.Free(64)
 43155  
 43156  	var i int32
 43157  
 43158  	if argc != 2 {
 43159  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 43160  			ts+25953, 0))
 43161  		return TCL_ERROR
 43162  	}
 43163  	i = parse_thread_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 43164  	if i < 0 {
 43165  		return TCL_ERROR
 43166  	}
 43167  	if !(threadset[i].Fbusy != 0) {
 43168  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25957, 0))
 43169  		return TCL_ERROR
 43170  	}
 43171  	test_thread_wait(tls, uintptr(unsafe.Pointer(&threadset))+uintptr(i)*1680)
 43172  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+48, threadset[i].FzErr, 0))
 43173  	return TCL_OK
 43174  }
 43175  
 43176  func do_compile(tls *libc.TLS, p uintptr) {
 43177  	if (*Thread)(unsafe.Pointer(p)).Fdb == uintptr(0) {
 43178  		(*Thread)(unsafe.Pointer(p)).FzErr = libc.AssignPtrUintptr(p+64, ts+26005)
 43179  		(*Thread)(unsafe.Pointer(p)).Frc = SQLITE_ERROR
 43180  		return
 43181  	}
 43182  	if (*Thread)(unsafe.Pointer(p)).FpStmt != 0 {
 43183  		sqlite3.Xsqlite3_finalize(tls, (*Thread)(unsafe.Pointer(p)).FpStmt)
 43184  		(*Thread)(unsafe.Pointer(p)).FpStmt = uintptr(0)
 43185  	}
 43186  	(*Thread)(unsafe.Pointer(p)).Frc = sqlite3.Xsqlite3_prepare(tls, (*Thread)(unsafe.Pointer(p)).Fdb, (*Thread)(unsafe.Pointer(p)).FzArg, -1, p+48, uintptr(0))
 43187  }
 43188  
 43189  func tcl_thread_compile(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 43190  	bp := tls.Alloc(56)
 43191  	defer tls.Free(56)
 43192  
 43193  	var i int32
 43194  	if argc != 3 {
 43195  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 43196  			ts+26025, 0))
 43197  		return TCL_ERROR
 43198  	}
 43199  	i = parse_thread_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 43200  	if i < 0 {
 43201  		return TCL_ERROR
 43202  	}
 43203  	if !(threadset[i].Fbusy != 0) {
 43204  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25957, 0))
 43205  		return TCL_ERROR
 43206  	}
 43207  	test_thread_wait(tls, uintptr(unsafe.Pointer(&threadset))+uintptr(i)*1680)
 43208  	threadset[i].FxOp = *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{do_compile}))
 43209  	sqlite3.Xsqlite3_free(tls, threadset[i].FzArg)
 43210  	threadset[i].FzArg = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp+48, *(*uintptr)(unsafe.Pointer(argv + 2*8))))
 43211  	test_barrier(tls)
 43212  	threadset[i].Fopnum++
 43213  	return TCL_OK
 43214  }
 43215  
 43216  func do_step(tls *libc.TLS, p uintptr) {
 43217  	var i int32
 43218  	if (*Thread)(unsafe.Pointer(p)).FpStmt == uintptr(0) {
 43219  		(*Thread)(unsafe.Pointer(p)).FzErr = libc.AssignPtrUintptr(p+64, ts+26033)
 43220  		(*Thread)(unsafe.Pointer(p)).Frc = SQLITE_ERROR
 43221  		return
 43222  	}
 43223  	(*Thread)(unsafe.Pointer(p)).Frc = sqlite3.Xsqlite3_step(tls, (*Thread)(unsafe.Pointer(p)).FpStmt)
 43224  	if (*Thread)(unsafe.Pointer(p)).Frc == SQLITE_ROW {
 43225  		(*Thread)(unsafe.Pointer(p)).Fargc = sqlite3.Xsqlite3_column_count(tls, (*Thread)(unsafe.Pointer(p)).FpStmt)
 43226  		for i = 0; i < sqlite3.Xsqlite3_data_count(tls, (*Thread)(unsafe.Pointer(p)).FpStmt); i++ {
 43227  			*(*uintptr)(unsafe.Pointer(p + 80 + uintptr(i)*8)) = sqlite3.Xsqlite3_column_text(tls, (*Thread)(unsafe.Pointer(p)).FpStmt, i)
 43228  		}
 43229  		for i = 0; i < (*Thread)(unsafe.Pointer(p)).Fargc; i++ {
 43230  			*(*uintptr)(unsafe.Pointer(p + 880 + uintptr(i)*8)) = sqlite3.Xsqlite3_column_name(tls, (*Thread)(unsafe.Pointer(p)).FpStmt, i)
 43231  		}
 43232  	}
 43233  }
 43234  
 43235  func tcl_thread_step(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 43236  	bp := tls.Alloc(48)
 43237  	defer tls.Free(48)
 43238  
 43239  	var i int32
 43240  	if argc != 2 {
 43241  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 43242  			ts+26062, 0))
 43243  		return TCL_ERROR
 43244  	}
 43245  	i = parse_thread_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 43246  	if i < 0 {
 43247  		return TCL_ERROR
 43248  	}
 43249  	if !(threadset[i].Fbusy != 0) {
 43250  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25957, 0))
 43251  		return TCL_ERROR
 43252  	}
 43253  	test_thread_wait(tls, uintptr(unsafe.Pointer(&threadset))+uintptr(i)*1680)
 43254  	threadset[i].FxOp = *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{do_step}))
 43255  	test_barrier(tls)
 43256  	threadset[i].Fopnum++
 43257  	return TCL_OK
 43258  }
 43259  
 43260  func do_finalize(tls *libc.TLS, p uintptr) {
 43261  	if (*Thread)(unsafe.Pointer(p)).FpStmt == uintptr(0) {
 43262  		(*Thread)(unsafe.Pointer(p)).FzErr = libc.AssignPtrUintptr(p+64, ts+26033)
 43263  		(*Thread)(unsafe.Pointer(p)).Frc = SQLITE_ERROR
 43264  		return
 43265  	}
 43266  	(*Thread)(unsafe.Pointer(p)).Frc = sqlite3.Xsqlite3_finalize(tls, (*Thread)(unsafe.Pointer(p)).FpStmt)
 43267  	(*Thread)(unsafe.Pointer(p)).FpStmt = uintptr(0)
 43268  }
 43269  
 43270  func tcl_thread_finalize(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 43271  	bp := tls.Alloc(48)
 43272  	defer tls.Free(48)
 43273  
 43274  	var i int32
 43275  	if argc != 2 {
 43276  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 43277  			ts+26062, 0))
 43278  		return TCL_ERROR
 43279  	}
 43280  	i = parse_thread_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 43281  	if i < 0 {
 43282  		return TCL_ERROR
 43283  	}
 43284  	if !(threadset[i].Fbusy != 0) {
 43285  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25957, 0))
 43286  		return TCL_ERROR
 43287  	}
 43288  	test_thread_wait(tls, uintptr(unsafe.Pointer(&threadset))+uintptr(i)*1680)
 43289  	threadset[i].FxOp = *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{do_finalize}))
 43290  	sqlite3.Xsqlite3_free(tls, threadset[i].FzArg)
 43291  	threadset[i].FzArg = uintptr(0)
 43292  	test_barrier(tls)
 43293  	threadset[i].Fopnum++
 43294  	return TCL_OK
 43295  }
 43296  
 43297  func tcl_thread_swap(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 43298  	bp := tls.Alloc(64)
 43299  	defer tls.Free(64)
 43300  
 43301  	var i int32
 43302  	var j int32
 43303  	var temp uintptr
 43304  	if argc != 3 {
 43305  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 43306  			ts+26067, 0))
 43307  		return TCL_ERROR
 43308  	}
 43309  	i = parse_thread_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 43310  	if i < 0 {
 43311  		return TCL_ERROR
 43312  	}
 43313  	if !(threadset[i].Fbusy != 0) {
 43314  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25957, 0))
 43315  		return TCL_ERROR
 43316  	}
 43317  	test_thread_wait(tls, uintptr(unsafe.Pointer(&threadset))+uintptr(i)*1680)
 43318  	j = parse_thread_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 2*8)))
 43319  	if j < 0 {
 43320  		return TCL_ERROR
 43321  	}
 43322  	if !(threadset[j].Fbusy != 0) {
 43323  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+48, ts+25957, 0))
 43324  		return TCL_ERROR
 43325  	}
 43326  	test_thread_wait(tls, uintptr(unsafe.Pointer(&threadset))+uintptr(j)*1680)
 43327  	temp = threadset[i].Fdb
 43328  	threadset[i].Fdb = threadset[j].Fdb
 43329  	threadset[j].Fdb = temp
 43330  	return TCL_OK
 43331  }
 43332  
 43333  func tcl_thread_db_get(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 43334  	bp := tls.Alloc(164)
 43335  	defer tls.Free(164)
 43336  
 43337  	var i int32
 43338  
 43339  	if argc != 2 {
 43340  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 43341  			ts+25953, 0))
 43342  		return TCL_ERROR
 43343  	}
 43344  	i = parse_thread_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 43345  	if i < 0 {
 43346  		return TCL_ERROR
 43347  	}
 43348  	if !(threadset[i].Fbusy != 0) {
 43349  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25957, 0))
 43350  		return TCL_ERROR
 43351  	}
 43352  	test_thread_wait(tls, uintptr(unsafe.Pointer(&threadset))+uintptr(i)*1680)
 43353  	sqlite3TestMakePointerStr(tls, interp, bp+64, threadset[i].Fdb)
 43354  	threadset[i].Fdb = uintptr(0)
 43355  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+48, bp+64, uintptr(0)))
 43356  	return TCL_OK
 43357  }
 43358  
 43359  func tcl_thread_db_put(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 43360  	bp := tls.Alloc(48)
 43361  	defer tls.Free(48)
 43362  
 43363  	var i int32
 43364  	if argc != 3 {
 43365  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 43366  			ts+26076, 0))
 43367  		return TCL_ERROR
 43368  	}
 43369  	i = parse_thread_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 43370  	if i < 0 {
 43371  		return TCL_ERROR
 43372  	}
 43373  	if !(threadset[i].Fbusy != 0) {
 43374  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25957, 0))
 43375  		return TCL_ERROR
 43376  	}
 43377  	test_thread_wait(tls, uintptr(unsafe.Pointer(&threadset))+uintptr(i)*1680)
 43378  
 43379  	threadset[i].Fdb = sqlite3TestTextToPtr(tls, *(*uintptr)(unsafe.Pointer(argv + 2*8)))
 43380  	return TCL_OK
 43381  }
 43382  
 43383  func tcl_thread_stmt_get(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 43384  	bp := tls.Alloc(164)
 43385  	defer tls.Free(164)
 43386  
 43387  	var i int32
 43388  
 43389  	if argc != 2 {
 43390  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 43391  			ts+25953, 0))
 43392  		return TCL_ERROR
 43393  	}
 43394  	i = parse_thread_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 43395  	if i < 0 {
 43396  		return TCL_ERROR
 43397  	}
 43398  	if !(threadset[i].Fbusy != 0) {
 43399  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25957, 0))
 43400  		return TCL_ERROR
 43401  	}
 43402  	test_thread_wait(tls, uintptr(unsafe.Pointer(&threadset))+uintptr(i)*1680)
 43403  	sqlite3TestMakePointerStr(tls, interp, bp+64, threadset[i].FpStmt)
 43404  	threadset[i].FpStmt = uintptr(0)
 43405  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+48, bp+64, uintptr(0)))
 43406  	return TCL_OK
 43407  }
 43408  
 43409  func Sqlitetest4_Init(tls *libc.TLS, interp uintptr) int32 {
 43410  	var i int32
 43411  
 43412  	for i = 0; uint64(i) < uint64(unsafe.Sizeof(aCmd4))/uint64(unsafe.Sizeof(struct {
 43413  		FzName uintptr
 43414  		FxProc uintptr
 43415  	}{})); i++ {
 43416  		tcl.XTcl_CreateCommand(tls, interp, aCmd4[i].FzName, aCmd4[i].FxProc, uintptr(0), uintptr(0))
 43417  	}
 43418  	return TCL_OK
 43419  }
 43420  
 43421  var aCmd4 = [15]struct {
 43422  	FzName uintptr
 43423  	FxProc uintptr
 43424  }{
 43425  	{FzName: ts + 26083, FxProc: 0},
 43426  	{FzName: ts + 26097, FxProc: 0},
 43427  	{FzName: ts + 26109, FxProc: 0},
 43428  	{FzName: ts + 26121, FxProc: 0},
 43429  	{FzName: ts + 26133, FxProc: 0},
 43430  	{FzName: ts + 26145, FxProc: 0},
 43431  	{FzName: ts + 26160, FxProc: 0},
 43432  	{FzName: ts + 26174, FxProc: 0},
 43433  	{FzName: ts + 26187, FxProc: 0},
 43434  	{FzName: ts + 26202, FxProc: 0},
 43435  	{FzName: ts + 26214, FxProc: 0},
 43436  	{FzName: ts + 26230, FxProc: 0},
 43437  	{FzName: ts + 26242, FxProc: 0},
 43438  	{FzName: ts + 26256, FxProc: 0},
 43439  	{FzName: ts + 26270, FxProc: 0},
 43440  }
 43441  
 43442  func binarize(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 43443  	bp := tls.Alloc(4)
 43444  	defer tls.Free(4)
 43445  
 43446  	var bytes uintptr
 43447  	var pRet uintptr
 43448  
 43449  	bytes = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp)
 43450  	pRet = tcl.XTcl_NewByteArrayObj(tls, bytes, *(*int32)(unsafe.Pointer(bp))+1)
 43451  	tcl.XTcl_SetObjResult(tls, interp, pRet)
 43452  	return TCL_OK
 43453  }
 43454  
 43455  func test_value_overhead(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 43456  	bp := tls.Alloc(96)
 43457  	defer tls.Free(96)
 43458  
 43459  	var i int32
 43460  
 43461  	if objc != 3 {
 43462  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 43463  			tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+26286, 0))
 43464  		return TCL_ERROR
 43465  	}
 43466  
 43467  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp+32) != 0 {
 43468  		return TCL_ERROR
 43469  	}
 43470  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+36) != 0 {
 43471  		return TCL_ERROR
 43472  	}
 43473  
 43474  	(*Mem)(unsafe.Pointer(bp + 40)).Fflags = u16(MEM_Str | MEM_Term | MEM_Static)
 43475  	(*Mem)(unsafe.Pointer(bp + 40)).Fz = ts + 26313
 43476  	(*Mem)(unsafe.Pointer(bp + 40)).Fenc = u8(SQLITE_UTF8)
 43477  
 43478  	for i = 0; i < *(*int32)(unsafe.Pointer(bp + 32)); i++ {
 43479  		if *(*int32)(unsafe.Pointer(bp + 36)) != 0 {
 43480  			sqlite3.Xsqlite3_value_text(tls, bp+40)
 43481  		}
 43482  	}
 43483  
 43484  	return TCL_OK
 43485  }
 43486  
 43487  func name_to_enc(tls *libc.TLS, interp uintptr, pObj uintptr) u8 {
 43488  	bp := tls.Alloc(104)
 43489  	defer tls.Free(104)
 43490  
 43491  	*(*[5]EncName)(unsafe.Pointer(bp + 24)) = [5]EncName{
 43492  		{FzName: ts + 26325, Fenc: u8(SQLITE_UTF8)},
 43493  		{FzName: ts + 26330, Fenc: u8(SQLITE_UTF16LE)},
 43494  		{FzName: ts + 26338, Fenc: u8(SQLITE_UTF16BE)},
 43495  		{FzName: ts + 26346, Fenc: u8(SQLITE_UTF16)},
 43496  		{},
 43497  	}
 43498  	var pEnc uintptr
 43499  	var z uintptr = tcl.XTcl_GetString(tls, pObj)
 43500  	for pEnc = bp + 24; (*EncName)(unsafe.Pointer(pEnc)).FzName != 0; pEnc += 16 {
 43501  		if 0 == sqlite3.Xsqlite3StrICmp(tls, z, (*EncName)(unsafe.Pointer(pEnc)).FzName) {
 43502  			break
 43503  		}
 43504  	}
 43505  	if !(int32((*EncName)(unsafe.Pointer(pEnc)).Fenc) != 0) {
 43506  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+26352, z, 0))
 43507  	}
 43508  	if int32((*EncName)(unsafe.Pointer(pEnc)).Fenc) == SQLITE_UTF16 {
 43509  		return u8(SQLITE_UTF16LE)
 43510  	}
 43511  	return (*EncName)(unsafe.Pointer(pEnc)).Fenc
 43512  }
 43513  
 43514  type EncName = struct {
 43515  	FzName       uintptr
 43516  	Fenc         u8
 43517  	F__ccgo_pad1 [7]byte
 43518  }
 43519  
 43520  func test_translate(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 43521  	bp := tls.Alloc(44)
 43522  	defer tls.Free(44)
 43523  
 43524  	var enc_from u8
 43525  	var enc_to u8
 43526  	var pVal uintptr
 43527  	var z uintptr
 43528  
 43529  	var xDel uintptr = uintptr(0)
 43530  
 43531  	if objc != 4 && objc != 5 {
 43532  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 43533  			tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)),
 43534  			ts+26371, 0))
 43535  		return TCL_ERROR
 43536  	}
 43537  	if objc == 5 {
 43538  		xDel = *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{sqlite3.Xsqlite3_free}))
 43539  	}
 43540  
 43541  	enc_from = name_to_enc(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 43542  	if !(enc_from != 0) {
 43543  		return TCL_ERROR
 43544  	}
 43545  	enc_to = name_to_enc(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)))
 43546  	if !(enc_to != 0) {
 43547  		return TCL_ERROR
 43548  	}
 43549  
 43550  	pVal = sqlite3.Xsqlite3ValueNew(tls, uintptr(0))
 43551  
 43552  	if int32(enc_from) == SQLITE_UTF8 {
 43553  		z = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 43554  		if objc == 5 {
 43555  			z = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp+32, z))
 43556  		}
 43557  		sqlite3.Xsqlite3ValueSetStr(tls, pVal, -1, z, enc_from, xDel)
 43558  	} else {
 43559  		z = tcl.XTcl_GetByteArrayFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp+40)
 43560  		if objc == 5 {
 43561  			var zTmp uintptr = z
 43562  			z = sqlite3.Xsqlite3_malloc(tls, *(*int32)(unsafe.Pointer(bp + 40)))
 43563  			libc.X__builtin___memcpy_chk(tls, z, zTmp, uint64(*(*int32)(unsafe.Pointer(bp + 40))), libc.X__builtin_object_size(tls, z, 0))
 43564  		}
 43565  		sqlite3.Xsqlite3ValueSetStr(tls, pVal, -1, z, enc_from, xDel)
 43566  	}
 43567  
 43568  	z = sqlite3.Xsqlite3ValueText(tls, pVal, enc_to)
 43569  	*(*int32)(unsafe.Pointer(bp + 40)) = sqlite3.Xsqlite3ValueBytes(tls, pVal, enc_to) + func() int32 {
 43570  		if int32(enc_to) == SQLITE_UTF8 {
 43571  			return 1
 43572  		}
 43573  		return 2
 43574  	}()
 43575  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewByteArrayObj(tls, z, *(*int32)(unsafe.Pointer(bp + 40))))
 43576  
 43577  	sqlite3.Xsqlite3ValueFree(tls, pVal)
 43578  
 43579  	return TCL_OK
 43580  }
 43581  
 43582  func test_translate_selftest(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 43583  	sqlite3.Xsqlite3UtfSelfTest(tls)
 43584  	return SQLITE_OK
 43585  }
 43586  
 43587  func Sqlitetest5_Init(tls *libc.TLS, interp uintptr) int32 {
 43588  	var i int32
 43589  	for i = 0; uint64(i) < uint64(unsafe.Sizeof(aCmd5))/uint64(unsafe.Sizeof(struct {
 43590  		FzName uintptr
 43591  		FxProc uintptr
 43592  	}{})); i++ {
 43593  		tcl.XTcl_CreateObjCommand(tls, interp, aCmd5[i].FzName, aCmd5[i].FxProc, uintptr(0), uintptr(0))
 43594  	}
 43595  	return SQLITE_OK
 43596  }
 43597  
 43598  var aCmd5 = [4]struct {
 43599  	FzName uintptr
 43600  	FxProc uintptr
 43601  }{
 43602  	{FzName: ts + 26406, FxProc: 0},
 43603  	{FzName: ts + 26415, FxProc: 0},
 43604  	{FzName: ts + 26435, FxProc: 0},
 43605  	{FzName: ts + 26450, FxProc: 0},
 43606  }
 43607  
 43608  type CrashFile1 = struct {
 43609  	FpMethod     uintptr
 43610  	FpRealFile   uintptr
 43611  	FzName       uintptr
 43612  	Fflags       int32
 43613  	F__ccgo_pad1 [4]byte
 43614  	FzData       uintptr
 43615  	FnData       int32
 43616  	F__ccgo_pad2 [4]byte
 43617  	FiSize       i64
 43618  }
 43619  
 43620  type CrashFile = CrashFile1
 43621  type CrashGlobal1 = struct {
 43622  	FpWriteList             uintptr
 43623  	FpWriteListEnd          uintptr
 43624  	FiSectorSize            int32
 43625  	FiDeviceCharacteristics int32
 43626  	FiCrash                 int32
 43627  	FzCrashFile             [500]int8
 43628  }
 43629  
 43630  type CrashGlobal = CrashGlobal1
 43631  type WriteBuffer1 = struct {
 43632  	FiOffset     i64
 43633  	FnBuf        int32
 43634  	F__ccgo_pad1 [4]byte
 43635  	FzBuf        uintptr
 43636  	FpFile       uintptr
 43637  	FpNext       uintptr
 43638  }
 43639  
 43640  type WriteBuffer = WriteBuffer1
 43641  
 43642  var g = CrashGlobal{FiSectorSize: SQLITE_DEFAULT_SECTOR_SIZE}
 43643  
 43644  var sqlite3CrashTestEnable int32 = 0
 43645  
 43646  func crash_malloc(tls *libc.TLS, nByte int32) uintptr {
 43647  	return tcl.XTcl_AttemptAlloc(tls, uint32(size_t(nByte)))
 43648  }
 43649  
 43650  func crash_free(tls *libc.TLS, p uintptr) {
 43651  	tcl.XTcl_Free(tls, p)
 43652  }
 43653  
 43654  func crash_realloc(tls *libc.TLS, p uintptr, n int32) uintptr {
 43655  	return tcl.XTcl_AttemptRealloc(tls, p, uint32(size_t(n)))
 43656  }
 43657  
 43658  func writeDbFile(tls *libc.TLS, p uintptr, z uintptr, iAmt i64, iOff i64) int32 {
 43659  	var rc int32 = SQLITE_OK
 43660  	var iSkip int32 = 0
 43661  	if iAmt-i64(iSkip) > int64(0) {
 43662  		rc = sqlite3.Xsqlite3OsWrite(tls, (*CrashFile)(unsafe.Pointer(p)).FpRealFile, z+uintptr(iSkip), int32(iAmt-i64(iSkip)), iOff+i64(iSkip))
 43663  	}
 43664  	return rc
 43665  }
 43666  
 43667  func writeListSync(tls *libc.TLS, pFile uintptr, isCrash int32) int32 {
 43668  	bp := tls.Alloc(16)
 43669  	defer tls.Free(16)
 43670  
 43671  	var rc int32 = SQLITE_OK
 43672  	var iDc int32 = g.FiDeviceCharacteristics
 43673  	var pWrite uintptr
 43674  	var ppPtr uintptr
 43675  
 43676  	var pFinal uintptr = uintptr(0)
 43677  	if !(isCrash != 0) {
 43678  		for pWrite = g.FpWriteList; pWrite != 0; pWrite = (*WriteBuffer)(unsafe.Pointer(pWrite)).FpNext {
 43679  			if (*WriteBuffer)(unsafe.Pointer(pWrite)).FpFile == pFile {
 43680  				pFinal = pWrite
 43681  			}
 43682  		}
 43683  	} else if iDc&(SQLITE_IOCAP_SEQUENTIAL|SQLITE_IOCAP_SAFE_APPEND) != 0 {
 43684  		var nWrite int32 = 0
 43685  
 43686  		for pWrite = g.FpWriteList; pWrite != 0; pWrite = (*WriteBuffer)(unsafe.Pointer(pWrite)).FpNext {
 43687  			nWrite++
 43688  		}
 43689  		sqlite3.Xsqlite3_randomness(tls, int32(unsafe.Sizeof(int32(0))), bp)
 43690  		*(*int32)(unsafe.Pointer(bp)) = func() int32 {
 43691  			if *(*int32)(unsafe.Pointer(bp)) < 0 {
 43692  				return -1 * *(*int32)(unsafe.Pointer(bp))
 43693  			}
 43694  			return *(*int32)(unsafe.Pointer(bp))
 43695  		}() % nWrite
 43696  		for pWrite = g.FpWriteList; *(*int32)(unsafe.Pointer(bp)) > 0; pWrite = (*WriteBuffer)(unsafe.Pointer(pWrite)).FpNext {
 43697  			*(*int32)(unsafe.Pointer(bp))--
 43698  		}
 43699  		pFinal = pWrite
 43700  	}
 43701  
 43702  	ppPtr = uintptr(unsafe.Pointer(&g))
 43703  	for pWrite = *(*uintptr)(unsafe.Pointer(ppPtr)); rc == SQLITE_OK && pWrite != 0; pWrite = *(*uintptr)(unsafe.Pointer(ppPtr)) {
 43704  		var pRealFile uintptr = (*CrashFile)(unsafe.Pointer((*WriteBuffer)(unsafe.Pointer(pWrite)).FpFile)).FpRealFile
 43705  
 43706  		var eAction int32 = 0
 43707  		if !(isCrash != 0) {
 43708  			eAction = 2
 43709  			if (*WriteBuffer)(unsafe.Pointer(pWrite)).FpFile == pFile || iDc&SQLITE_IOCAP_SEQUENTIAL != 0 {
 43710  				eAction = 1
 43711  			}
 43712  		} else {
 43713  			sqlite3.Xsqlite3_randomness(tls, 1, bp+4)
 43714  
 43715  			if iDc&SQLITE_IOCAP_ATOMIC != 0 || (*WriteBuffer)(unsafe.Pointer(pWrite)).FzBuf == uintptr(0) {
 43716  				*(*int8)(unsafe.Pointer(bp + 4)) &= int8(0x01)
 43717  			}
 43718  
 43719  			if iDc&SQLITE_IOCAP_SEQUENTIAL != 0 && pWrite != pFinal {
 43720  				*(*int8)(unsafe.Pointer(bp + 4)) = int8(0)
 43721  			}
 43722  
 43723  			if iDc&SQLITE_IOCAP_SAFE_APPEND != 0 && (*WriteBuffer)(unsafe.Pointer(pWrite)).FzBuf != 0 {
 43724  				sqlite3.Xsqlite3OsFileSize(tls, pRealFile, bp+8)
 43725  				if *(*i64)(unsafe.Pointer(bp + 8)) == (*WriteBuffer)(unsafe.Pointer(pWrite)).FiOffset {
 43726  					*(*int8)(unsafe.Pointer(bp + 4)) = int8(0)
 43727  				}
 43728  			}
 43729  
 43730  			if int32(*(*int8)(unsafe.Pointer(bp + 4)))&0x06 == 0x06 {
 43731  				eAction = 3
 43732  			} else {
 43733  				eAction = func() int32 {
 43734  					if int32(*(*int8)(unsafe.Pointer(bp + 4)))&0x01 != 0 {
 43735  						return 2
 43736  					}
 43737  					return 1
 43738  				}()
 43739  			}
 43740  		}
 43741  
 43742  		switch eAction {
 43743  		case 1:
 43744  			{
 43745  				if (*WriteBuffer)(unsafe.Pointer(pWrite)).FzBuf != 0 {
 43746  					rc = writeDbFile(tls,
 43747  						(*WriteBuffer)(unsafe.Pointer(pWrite)).FpFile, (*WriteBuffer)(unsafe.Pointer(pWrite)).FzBuf, int64((*WriteBuffer)(unsafe.Pointer(pWrite)).FnBuf), (*WriteBuffer)(unsafe.Pointer(pWrite)).FiOffset)
 43748  				} else {
 43749  					rc = sqlite3.Xsqlite3OsTruncate(tls, pRealFile, (*WriteBuffer)(unsafe.Pointer(pWrite)).FiOffset)
 43750  				}
 43751  				*(*uintptr)(unsafe.Pointer(ppPtr)) = (*WriteBuffer)(unsafe.Pointer(pWrite)).FpNext
 43752  				crash_free(tls, pWrite)
 43753  				break
 43754  
 43755  			}
 43756  		case 2:
 43757  			{
 43758  				ppPtr = pWrite + 32
 43759  				break
 43760  
 43761  			}
 43762  		case 3:
 43763  			{
 43764  				var zGarbage uintptr
 43765  				var iFirst int32 = int32((*WriteBuffer)(unsafe.Pointer(pWrite)).FiOffset / i64(g.FiSectorSize))
 43766  				var iLast int32 = int32(((*WriteBuffer)(unsafe.Pointer(pWrite)).FiOffset + i64((*WriteBuffer)(unsafe.Pointer(pWrite)).FnBuf) - int64(1)) / i64(g.FiSectorSize))
 43767  
 43768  				zGarbage = crash_malloc(tls, g.FiSectorSize)
 43769  				if zGarbage != 0 {
 43770  					var i sqlite3_int64
 43771  					for i = sqlite3_int64(iFirst); rc == SQLITE_OK && i <= sqlite3_int64(iLast); i++ {
 43772  						sqlite3.Xsqlite3_randomness(tls, g.FiSectorSize, zGarbage)
 43773  						rc = writeDbFile(tls,
 43774  							(*WriteBuffer)(unsafe.Pointer(pWrite)).FpFile, zGarbage, int64(g.FiSectorSize), i*sqlite3_int64(g.FiSectorSize))
 43775  					}
 43776  					crash_free(tls, zGarbage)
 43777  				} else {
 43778  					rc = SQLITE_NOMEM
 43779  				}
 43780  
 43781  				ppPtr = pWrite + 32
 43782  				break
 43783  
 43784  			}
 43785  
 43786  		default:
 43787  		}
 43788  
 43789  		if pWrite == pFinal {
 43790  			break
 43791  		}
 43792  	}
 43793  
 43794  	if rc == SQLITE_OK && isCrash != 0 {
 43795  		libc.Xexit(tls, -1)
 43796  	}
 43797  
 43798  	for pWrite = g.FpWriteList; pWrite != 0 && (*WriteBuffer)(unsafe.Pointer(pWrite)).FpNext != 0; pWrite = (*WriteBuffer)(unsafe.Pointer(pWrite)).FpNext {
 43799  	}
 43800  	g.FpWriteListEnd = pWrite
 43801  
 43802  	return rc
 43803  }
 43804  
 43805  func writeListAppend(tls *libc.TLS, pFile uintptr, iOffset sqlite3_int64, zBuf uintptr, nBuf int32) int32 {
 43806  	var pNew uintptr
 43807  
 43808  	pNew = crash_malloc(tls, int32(uint64(unsafe.Sizeof(WriteBuffer{}))+uint64(nBuf)))
 43809  	if pNew == uintptr(0) {
 43810  		libc.Xfprintf(tls, libc.X__stderrp, ts+26469, 0)
 43811  	}
 43812  	libc.X__builtin___memset_chk(tls, pNew, 0, uint64(unsafe.Sizeof(WriteBuffer{}))+uint64(nBuf), libc.X__builtin_object_size(tls, pNew, 0))
 43813  	(*WriteBuffer)(unsafe.Pointer(pNew)).FiOffset = iOffset
 43814  	(*WriteBuffer)(unsafe.Pointer(pNew)).FnBuf = nBuf
 43815  	(*WriteBuffer)(unsafe.Pointer(pNew)).FpFile = pFile
 43816  	if zBuf != 0 {
 43817  		(*WriteBuffer)(unsafe.Pointer(pNew)).FzBuf = pNew + 1*40
 43818  		libc.X__builtin___memcpy_chk(tls, (*WriteBuffer)(unsafe.Pointer(pNew)).FzBuf, zBuf, uint64(nBuf), libc.X__builtin_object_size(tls, (*WriteBuffer)(unsafe.Pointer(pNew)).FzBuf, 0))
 43819  	}
 43820  
 43821  	if g.FpWriteList != 0 {
 43822  		(*WriteBuffer)(unsafe.Pointer(g.FpWriteListEnd)).FpNext = pNew
 43823  	} else {
 43824  		g.FpWriteList = pNew
 43825  	}
 43826  	g.FpWriteListEnd = pNew
 43827  
 43828  	return SQLITE_OK
 43829  }
 43830  
 43831  func cfClose(tls *libc.TLS, pFile uintptr) int32 {
 43832  	var pCrash uintptr = pFile
 43833  	writeListSync(tls, pCrash, 0)
 43834  	sqlite3.Xsqlite3OsClose(tls, (*CrashFile)(unsafe.Pointer(pCrash)).FpRealFile)
 43835  	return SQLITE_OK
 43836  }
 43837  
 43838  func cfRead(tls *libc.TLS, pFile uintptr, zBuf uintptr, iAmt int32, iOfst sqlite_int64) int32 {
 43839  	var pCrash uintptr = pFile
 43840  	var nCopy int32 = func() int32 {
 43841  		if i64(iAmt) < (*CrashFile)(unsafe.Pointer(pCrash)).FiSize-iOfst {
 43842  			return int32(i64(iAmt))
 43843  		}
 43844  		return int32((*CrashFile)(unsafe.Pointer(pCrash)).FiSize - iOfst)
 43845  	}()
 43846  
 43847  	if nCopy > 0 {
 43848  		libc.X__builtin___memcpy_chk(tls, zBuf, (*CrashFile)(unsafe.Pointer(pCrash)).FzData+uintptr(iOfst), uint64(nCopy), libc.X__builtin_object_size(tls, zBuf, 0))
 43849  	}
 43850  
 43851  	if nCopy < iAmt {
 43852  		return SQLITE_IOERR | int32(2)<<8
 43853  	}
 43854  
 43855  	return SQLITE_OK
 43856  }
 43857  
 43858  func cfWrite(tls *libc.TLS, pFile uintptr, zBuf uintptr, iAmt int32, iOfst sqlite_int64) int32 {
 43859  	var pCrash uintptr = pFile
 43860  	if sqlite_int64(iAmt)+iOfst > (*CrashFile)(unsafe.Pointer(pCrash)).FiSize {
 43861  		(*CrashFile)(unsafe.Pointer(pCrash)).FiSize = i64(int32(sqlite_int64(iAmt) + iOfst))
 43862  	}
 43863  	for (*CrashFile)(unsafe.Pointer(pCrash)).FiSize > i64((*CrashFile)(unsafe.Pointer(pCrash)).FnData) {
 43864  		var zNew uintptr
 43865  		var nNew int32 = (*CrashFile)(unsafe.Pointer(pCrash)).FnData*2 + 4096
 43866  		zNew = crash_realloc(tls, (*CrashFile)(unsafe.Pointer(pCrash)).FzData, nNew)
 43867  		if !(zNew != 0) {
 43868  			return SQLITE_NOMEM
 43869  		}
 43870  		libc.X__builtin___memset_chk(tls, zNew+uintptr((*CrashFile)(unsafe.Pointer(pCrash)).FnData), 0, uint64(nNew-(*CrashFile)(unsafe.Pointer(pCrash)).FnData), libc.X__builtin_object_size(tls, zNew+uintptr((*CrashFile)(unsafe.Pointer(pCrash)).FnData), 0))
 43871  		(*CrashFile)(unsafe.Pointer(pCrash)).FnData = nNew
 43872  		(*CrashFile)(unsafe.Pointer(pCrash)).FzData = zNew
 43873  	}
 43874  	libc.X__builtin___memcpy_chk(tls, (*CrashFile)(unsafe.Pointer(pCrash)).FzData+uintptr(iOfst), zBuf, uint64(iAmt), libc.X__builtin_object_size(tls, (*CrashFile)(unsafe.Pointer(pCrash)).FzData+uintptr(iOfst), 0))
 43875  	return writeListAppend(tls, pFile, iOfst, zBuf, iAmt)
 43876  }
 43877  
 43878  func cfTruncate(tls *libc.TLS, pFile uintptr, size sqlite_int64) int32 {
 43879  	var pCrash uintptr = pFile
 43880  
 43881  	if (*CrashFile)(unsafe.Pointer(pCrash)).FiSize > size {
 43882  		(*CrashFile)(unsafe.Pointer(pCrash)).FiSize = i64(int32(size))
 43883  	}
 43884  	return writeListAppend(tls, pFile, size, uintptr(0), 0)
 43885  }
 43886  
 43887  func cfSync(tls *libc.TLS, pFile uintptr, flags int32) int32 {
 43888  	var pCrash uintptr = pFile
 43889  	var isCrash int32 = 0
 43890  
 43891  	var zName uintptr = (*CrashFile)(unsafe.Pointer(pCrash)).FzName
 43892  	var zCrashFile uintptr = uintptr(unsafe.Pointer(&g)) + 28
 43893  	var nName int32 = int32(libc.Xstrlen(tls, zName))
 43894  	var nCrashFile int32 = int32(libc.Xstrlen(tls, zCrashFile))
 43895  
 43896  	if nCrashFile > 0 && int32(*(*int8)(unsafe.Pointer(zCrashFile + uintptr(nCrashFile-1)))) == '*' {
 43897  		nCrashFile--
 43898  		if nName > nCrashFile {
 43899  			nName = nCrashFile
 43900  		}
 43901  	}
 43902  
 43903  	if nName == nCrashFile && 0 == libc.Xmemcmp(tls, zName, zCrashFile, uint64(nName)) {
 43904  		if libc.PreDecInt32(&g.FiCrash, 1) == 0 {
 43905  			isCrash = 1
 43906  		}
 43907  	}
 43908  
 43909  	return writeListSync(tls, pCrash, isCrash)
 43910  }
 43911  
 43912  func cfFileSize(tls *libc.TLS, pFile uintptr, pSize uintptr) int32 {
 43913  	var pCrash uintptr = pFile
 43914  	*(*sqlite_int64)(unsafe.Pointer(pSize)) = (*CrashFile)(unsafe.Pointer(pCrash)).FiSize
 43915  	return SQLITE_OK
 43916  }
 43917  
 43918  func cfLock(tls *libc.TLS, pFile uintptr, eLock int32) int32 {
 43919  	return sqlite3.Xsqlite3OsLock(tls, (*CrashFile)(unsafe.Pointer(pFile)).FpRealFile, eLock)
 43920  }
 43921  
 43922  func cfUnlock(tls *libc.TLS, pFile uintptr, eLock int32) int32 {
 43923  	return sqlite3.Xsqlite3OsUnlock(tls, (*CrashFile)(unsafe.Pointer(pFile)).FpRealFile, eLock)
 43924  }
 43925  
 43926  func cfCheckReservedLock(tls *libc.TLS, pFile uintptr, pResOut uintptr) int32 {
 43927  	return sqlite3.Xsqlite3OsCheckReservedLock(tls, (*CrashFile)(unsafe.Pointer(pFile)).FpRealFile, pResOut)
 43928  }
 43929  
 43930  func cfFileControl(tls *libc.TLS, pFile uintptr, op int32, pArg uintptr) int32 {
 43931  	if op == SQLITE_FCNTL_SIZE_HINT {
 43932  		var pCrash uintptr = pFile
 43933  		var nByte i64 = *(*i64)(unsafe.Pointer(pArg))
 43934  		if nByte > (*CrashFile)(unsafe.Pointer(pCrash)).FiSize {
 43935  			if SQLITE_OK == writeListAppend(tls, pFile, nByte, uintptr(0), 0) {
 43936  				(*CrashFile)(unsafe.Pointer(pCrash)).FiSize = i64(int32(nByte))
 43937  			}
 43938  		}
 43939  		return SQLITE_OK
 43940  	}
 43941  	return sqlite3.Xsqlite3OsFileControl(tls, (*CrashFile)(unsafe.Pointer(pFile)).FpRealFile, op, pArg)
 43942  }
 43943  
 43944  func cfSectorSize(tls *libc.TLS, pFile uintptr) int32 {
 43945  	return g.FiSectorSize
 43946  }
 43947  
 43948  func cfDeviceCharacteristics(tls *libc.TLS, pFile uintptr) int32 {
 43949  	return g.FiDeviceCharacteristics
 43950  }
 43951  
 43952  func cfShmLock(tls *libc.TLS, pFile uintptr, ofst int32, n int32, flags int32) int32 {
 43953  	var pReal uintptr = (*CrashFile)(unsafe.Pointer(pFile)).FpRealFile
 43954  	return (*struct {
 43955  		f func(*libc.TLS, uintptr, int32, int32, int32) int32
 43956  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pReal)).FpMethods)).FxShmLock})).f(tls, pReal, ofst, n, flags)
 43957  }
 43958  
 43959  func cfShmBarrier(tls *libc.TLS, pFile uintptr) {
 43960  	var pReal uintptr = (*CrashFile)(unsafe.Pointer(pFile)).FpRealFile
 43961  	(*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)
 43962  }
 43963  
 43964  func cfShmUnmap(tls *libc.TLS, pFile uintptr, delFlag int32) int32 {
 43965  	var pReal uintptr = (*CrashFile)(unsafe.Pointer(pFile)).FpRealFile
 43966  	return (*struct {
 43967  		f func(*libc.TLS, uintptr, int32) int32
 43968  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pReal)).FpMethods)).FxShmUnmap})).f(tls, pReal, delFlag)
 43969  }
 43970  
 43971  func cfShmMap(tls *libc.TLS, pFile uintptr, iRegion int32, sz int32, w int32, pp uintptr) int32 {
 43972  	var pReal uintptr = (*CrashFile)(unsafe.Pointer(pFile)).FpRealFile
 43973  	return (*struct {
 43974  		f func(*libc.TLS, uintptr, int32, int32, int32, uintptr) int32
 43975  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pReal)).FpMethods)).FxShmMap})).f(tls, pReal, iRegion, sz, w, pp)
 43976  }
 43977  
 43978  var CrashFileVtab = sqlite3_io_methods{
 43979  	FiVersion:               2,
 43980  	FxClose:                 0,
 43981  	FxRead:                  0,
 43982  	FxWrite:                 0,
 43983  	FxTruncate:              0,
 43984  	FxSync:                  0,
 43985  	FxFileSize:              0,
 43986  	FxLock:                  0,
 43987  	FxUnlock:                0,
 43988  	FxCheckReservedLock:     0,
 43989  	FxFileControl:           0,
 43990  	FxSectorSize:            0,
 43991  	FxDeviceCharacteristics: 0,
 43992  	FxShmMap:                0,
 43993  	FxShmLock:               0,
 43994  	FxShmBarrier:            0,
 43995  	FxShmUnmap:              0,
 43996  }
 43997  
 43998  type crashAppData = struct{ FpOrig uintptr }
 43999  
 44000  func cfOpen(tls *libc.TLS, pCfVfs uintptr, zName uintptr, pFile uintptr, flags int32, pOutFlags uintptr) int32 {
 44001  	bp := tls.Alloc(8)
 44002  	defer tls.Free(8)
 44003  
 44004  	var pVfs uintptr = (*sqlite3_vfs)(unsafe.Pointer(pCfVfs)).FpAppData
 44005  	var rc int32
 44006  	var pWrapper uintptr = pFile
 44007  	var pReal uintptr = pWrapper + 1*56
 44008  
 44009  	libc.X__builtin___memset_chk(tls, pWrapper, 0, uint64(unsafe.Sizeof(CrashFile{})), libc.X__builtin_object_size(tls, pWrapper, 0))
 44010  	rc = sqlite3.Xsqlite3OsOpen(tls, pVfs, zName, pReal, flags, pOutFlags)
 44011  
 44012  	if rc == SQLITE_OK {
 44013  		(*CrashFile)(unsafe.Pointer(pWrapper)).FpMethod = uintptr(unsafe.Pointer(&CrashFileVtab))
 44014  		(*CrashFile)(unsafe.Pointer(pWrapper)).FzName = zName
 44015  		(*CrashFile)(unsafe.Pointer(pWrapper)).FpRealFile = pReal
 44016  		rc = sqlite3.Xsqlite3OsFileSize(tls, pReal, bp)
 44017  		(*CrashFile)(unsafe.Pointer(pWrapper)).FiSize = i64(int32(*(*i64)(unsafe.Pointer(bp))))
 44018  		(*CrashFile)(unsafe.Pointer(pWrapper)).Fflags = flags
 44019  	}
 44020  	if rc == SQLITE_OK {
 44021  		(*CrashFile)(unsafe.Pointer(pWrapper)).FnData = int32(int64(4096) + (*CrashFile)(unsafe.Pointer(pWrapper)).FiSize)
 44022  		(*CrashFile)(unsafe.Pointer(pWrapper)).FzData = crash_malloc(tls, (*CrashFile)(unsafe.Pointer(pWrapper)).FnData)
 44023  		if (*CrashFile)(unsafe.Pointer(pWrapper)).FzData != 0 {
 44024  			var iOff i64
 44025  
 44026  			libc.X__builtin___memset_chk(tls, (*CrashFile)(unsafe.Pointer(pWrapper)).FzData, 0, uint64((*CrashFile)(unsafe.Pointer(pWrapper)).FnData), libc.X__builtin_object_size(tls, (*CrashFile)(unsafe.Pointer(pWrapper)).FzData, 0))
 44027  			for iOff = int64(0); iOff < (*CrashFile)(unsafe.Pointer(pWrapper)).FiSize; iOff = iOff + int64(512) {
 44028  				var nRead int32 = int32((*CrashFile)(unsafe.Pointer(pWrapper)).FiSize - iOff)
 44029  				if nRead > 512 {
 44030  					nRead = 512
 44031  				}
 44032  				rc = sqlite3.Xsqlite3OsRead(tls, pReal, (*CrashFile)(unsafe.Pointer(pWrapper)).FzData+uintptr(iOff), nRead, iOff)
 44033  			}
 44034  		} else {
 44035  			rc = SQLITE_NOMEM
 44036  		}
 44037  	}
 44038  	if rc != SQLITE_OK && (*CrashFile)(unsafe.Pointer(pWrapper)).FpMethod != 0 {
 44039  		sqlite3.Xsqlite3OsClose(tls, pFile)
 44040  	}
 44041  	return rc
 44042  }
 44043  
 44044  func cfDelete(tls *libc.TLS, pCfVfs uintptr, zPath uintptr, dirSync int32) int32 {
 44045  	var pVfs uintptr = (*sqlite3_vfs)(unsafe.Pointer(pCfVfs)).FpAppData
 44046  	return (*struct {
 44047  		f func(*libc.TLS, uintptr, uintptr, int32) int32
 44048  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pVfs)).FxDelete})).f(tls, pVfs, zPath, dirSync)
 44049  }
 44050  
 44051  func cfAccess(tls *libc.TLS, pCfVfs uintptr, zPath uintptr, flags int32, pResOut uintptr) int32 {
 44052  	var pVfs uintptr = (*sqlite3_vfs)(unsafe.Pointer(pCfVfs)).FpAppData
 44053  	return (*struct {
 44054  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 44055  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pVfs)).FxAccess})).f(tls, pVfs, zPath, flags, pResOut)
 44056  }
 44057  
 44058  func cfFullPathname(tls *libc.TLS, pCfVfs uintptr, zPath uintptr, nPathOut int32, zPathOut uintptr) int32 {
 44059  	var pVfs uintptr = (*sqlite3_vfs)(unsafe.Pointer(pCfVfs)).FpAppData
 44060  	return (*struct {
 44061  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 44062  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pVfs)).FxFullPathname})).f(tls, pVfs, zPath, nPathOut, zPathOut)
 44063  }
 44064  
 44065  func cfDlOpen(tls *libc.TLS, pCfVfs uintptr, zPath uintptr) uintptr {
 44066  	var pVfs uintptr = (*sqlite3_vfs)(unsafe.Pointer(pCfVfs)).FpAppData
 44067  	return (*struct {
 44068  		f func(*libc.TLS, uintptr, uintptr) uintptr
 44069  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pVfs)).FxDlOpen})).f(tls, pVfs, zPath)
 44070  }
 44071  
 44072  func cfDlError(tls *libc.TLS, pCfVfs uintptr, nByte int32, zErrMsg uintptr) {
 44073  	var pVfs uintptr = (*sqlite3_vfs)(unsafe.Pointer(pCfVfs)).FpAppData
 44074  	(*struct {
 44075  		f func(*libc.TLS, uintptr, int32, uintptr)
 44076  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pVfs)).FxDlError})).f(tls, pVfs, nByte, zErrMsg)
 44077  }
 44078  
 44079  func cfDlSym(tls *libc.TLS, pCfVfs uintptr, pH uintptr, zSym uintptr) uintptr {
 44080  	var pVfs uintptr = (*sqlite3_vfs)(unsafe.Pointer(pCfVfs)).FpAppData
 44081  	return (*struct {
 44082  		f func(*libc.TLS, uintptr, uintptr, uintptr) uintptr
 44083  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pVfs)).FxDlSym})).f(tls, pVfs, pH, zSym)
 44084  }
 44085  
 44086  func cfDlClose(tls *libc.TLS, pCfVfs uintptr, pHandle uintptr) {
 44087  	var pVfs uintptr = (*sqlite3_vfs)(unsafe.Pointer(pCfVfs)).FpAppData
 44088  	(*struct {
 44089  		f func(*libc.TLS, uintptr, uintptr)
 44090  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pVfs)).FxDlClose})).f(tls, pVfs, pHandle)
 44091  }
 44092  
 44093  func cfRandomness(tls *libc.TLS, pCfVfs uintptr, nByte int32, zBufOut uintptr) int32 {
 44094  	var pVfs uintptr = (*sqlite3_vfs)(unsafe.Pointer(pCfVfs)).FpAppData
 44095  	return (*struct {
 44096  		f func(*libc.TLS, uintptr, int32, uintptr) int32
 44097  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pVfs)).FxRandomness})).f(tls, pVfs, nByte, zBufOut)
 44098  }
 44099  
 44100  func cfSleep(tls *libc.TLS, pCfVfs uintptr, nMicro int32) int32 {
 44101  	var pVfs uintptr = (*sqlite3_vfs)(unsafe.Pointer(pCfVfs)).FpAppData
 44102  	return (*struct {
 44103  		f func(*libc.TLS, uintptr, int32) int32
 44104  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pVfs)).FxSleep})).f(tls, pVfs, nMicro)
 44105  }
 44106  
 44107  func cfCurrentTime(tls *libc.TLS, pCfVfs uintptr, pTimeOut uintptr) int32 {
 44108  	var pVfs uintptr = (*sqlite3_vfs)(unsafe.Pointer(pCfVfs)).FpAppData
 44109  	return (*struct {
 44110  		f func(*libc.TLS, uintptr, uintptr) int32
 44111  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pVfs)).FxCurrentTime})).f(tls, pVfs, pTimeOut)
 44112  }
 44113  
 44114  func cfGetLastError(tls *libc.TLS, pCfVfs uintptr, n int32, z uintptr) int32 {
 44115  	var pVfs uintptr = (*sqlite3_vfs)(unsafe.Pointer(pCfVfs)).FpAppData
 44116  	return (*struct {
 44117  		f func(*libc.TLS, uintptr, int32, uintptr) int32
 44118  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pVfs)).FxGetLastError})).f(tls, pVfs, n, z)
 44119  }
 44120  
 44121  func processDevSymArgs(tls *libc.TLS, interp uintptr, objc int32, objv uintptr, piDeviceChar uintptr, piSectorSize uintptr) int32 {
 44122  	bp := tls.Alloc(316)
 44123  	defer tls.Free(316)
 44124  
 44125  	*(*[14]DeviceFlag)(unsafe.Pointer(bp + 88)) = [14]DeviceFlag{
 44126  		{FzName: ts + 26507, FiValue: SQLITE_IOCAP_ATOMIC},
 44127  		{FzName: ts + 26514, FiValue: SQLITE_IOCAP_ATOMIC512},
 44128  		{FzName: ts + 26524, FiValue: SQLITE_IOCAP_ATOMIC1K},
 44129  		{FzName: ts + 26533, FiValue: SQLITE_IOCAP_ATOMIC2K},
 44130  		{FzName: ts + 26542, FiValue: SQLITE_IOCAP_ATOMIC4K},
 44131  		{FzName: ts + 26551, FiValue: SQLITE_IOCAP_ATOMIC8K},
 44132  		{FzName: ts + 26560, FiValue: SQLITE_IOCAP_ATOMIC16K},
 44133  		{FzName: ts + 26570, FiValue: SQLITE_IOCAP_ATOMIC32K},
 44134  		{FzName: ts + 26580, FiValue: SQLITE_IOCAP_ATOMIC64K},
 44135  		{FzName: ts + 26590, FiValue: SQLITE_IOCAP_SEQUENTIAL},
 44136  		{FzName: ts + 26601, FiValue: SQLITE_IOCAP_SAFE_APPEND},
 44137  		{FzName: ts + 26613, FiValue: SQLITE_IOCAP_POWERSAFE_OVERWRITE},
 44138  		{FzName: ts + 26633, FiValue: SQLITE_IOCAP_BATCH_ATOMIC},
 44139  		{},
 44140  	}
 44141  	var i int32
 44142  	var iDc int32 = 0
 44143  	*(*int32)(unsafe.Pointer(bp + 68)) = 0
 44144  	var setSectorsize int32 = 0
 44145  	var setDeviceChar int32 = 0
 44146  
 44147  	for i = 0; i < objc; i = i + 2 {
 44148  		var zOpt uintptr = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(i)*8)), bp+64)
 44149  
 44150  		if (*(*int32)(unsafe.Pointer(bp + 64)) > 11 || *(*int32)(unsafe.Pointer(bp + 64)) < 2 || libc.Xstrncmp(tls, ts+26646, zOpt, uint64(*(*int32)(unsafe.Pointer(bp + 64)))) != 0) &&
 44151  			(*(*int32)(unsafe.Pointer(bp + 64)) > 16 || *(*int32)(unsafe.Pointer(bp + 64)) < 2 || libc.Xstrncmp(tls, ts+26658, zOpt, uint64(*(*int32)(unsafe.Pointer(bp + 64)))) != 0) {
 44152  			tcl.XTcl_AppendResult(tls, interp,
 44153  				libc.VaList(bp, ts+26675, zOpt,
 44154  					ts+26689, 0))
 44155  			return TCL_ERROR
 44156  		}
 44157  		if i == objc-1 {
 44158  			tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+26737, zOpt, ts+11945, 0))
 44159  			return TCL_ERROR
 44160  		}
 44161  
 44162  		if int32(*(*int8)(unsafe.Pointer(zOpt + 1))) == 's' {
 44163  			if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(i+1)*8)), bp+68) != 0 {
 44164  				return TCL_ERROR
 44165  			}
 44166  			setSectorsize = 1
 44167  		} else {
 44168  			var j int32
 44169  
 44170  			if tcl.XTcl_ListObjGetElements(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(i+1)*8)), bp+72, bp+80) != 0 {
 44171  				return TCL_ERROR
 44172  			}
 44173  			for j = 0; j < *(*int32)(unsafe.Pointer(bp + 72)); j++ {
 44174  				var rc int32
 44175  
 44176  				var pFlag uintptr = tcl.XTcl_DuplicateObj(tls, *(*uintptr)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 80)) + uintptr(j)*8)))
 44177  				(*Tcl_Obj)(unsafe.Pointer(pFlag)).FrefCount++
 44178  				tcl.XTcl_UtfToLower(tls, tcl.XTcl_GetString(tls, pFlag))
 44179  
 44180  				rc = tcl.XTcl_GetIndexFromObjStruct(tls,
 44181  					interp, pFlag, bp+88, int32(unsafe.Sizeof(DeviceFlag{})), ts+26768, 0, bp+312)
 44182  				for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 44183  					if libc.PreDecInt32(&(*Tcl_Obj)(unsafe.Pointer(pFlag)).FrefCount, 1) <= 0 {
 44184  						tcl.XTclFreeObj(tls, pFlag)
 44185  					}
 44186  				}
 44187  				if rc != 0 {
 44188  					return TCL_ERROR
 44189  				}
 44190  
 44191  				iDc = iDc | (*DeviceFlag)(unsafe.Pointer(bp+88+uintptr(*(*int32)(unsafe.Pointer(bp + 312)))*16)).FiValue
 44192  			}
 44193  			setDeviceChar = 1
 44194  		}
 44195  	}
 44196  
 44197  	if setDeviceChar != 0 {
 44198  		*(*int32)(unsafe.Pointer(piDeviceChar)) = iDc
 44199  	}
 44200  	if setSectorsize != 0 {
 44201  		*(*int32)(unsafe.Pointer(piSectorSize)) = *(*int32)(unsafe.Pointer(bp + 68))
 44202  	}
 44203  
 44204  	return TCL_OK
 44205  }
 44206  
 44207  type DeviceFlag = struct {
 44208  	FzName       uintptr
 44209  	FiValue      int32
 44210  	F__ccgo_pad1 [4]byte
 44211  }
 44212  
 44213  func crashNowCmd(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 44214  	if objc != 1 {
 44215  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+584)
 44216  		return TCL_ERROR
 44217  	}
 44218  	writeListSync(tls, uintptr(0), 1)
 44219  
 44220  	return TCL_OK
 44221  }
 44222  
 44223  func crashEnableCmd(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 44224  	bp := tls.Alloc(8)
 44225  	defer tls.Free(8)
 44226  
 44227  	*(*int32)(unsafe.Pointer(bp + 4)) = 0
 44228  
 44229  	if objc != 2 && objc != 3 {
 44230  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+26781)
 44231  		return TCL_ERROR
 44232  	}
 44233  
 44234  	if tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp) != 0 {
 44235  		return TCL_ERROR
 44236  	}
 44237  	if objc == 3 && tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+4) != 0 {
 44238  		return TCL_ERROR
 44239  	}
 44240  
 44241  	if *(*int32)(unsafe.Pointer(bp)) != 0 && crashVfs.FpAppData != 0 || !(*(*int32)(unsafe.Pointer(bp)) != 0) && !(int32(crashVfs.FpAppData) != 0) {
 44242  		return TCL_OK
 44243  	}
 44244  
 44245  	if crashVfs.FpAppData == uintptr(0) {
 44246  		var pOriginalVfs uintptr = sqlite3.Xsqlite3_vfs_find(tls, uintptr(0))
 44247  		crashVfs.FmxPathname = (*sqlite3_vfs)(unsafe.Pointer(pOriginalVfs)).FmxPathname
 44248  		crashVfs.FpAppData = pOriginalVfs
 44249  		crashVfs.FszOsFile = int32(uint64(unsafe.Sizeof(CrashFile{})) + uint64((*sqlite3_vfs)(unsafe.Pointer(pOriginalVfs)).FszOsFile))
 44250  		sqlite3.Xsqlite3_vfs_register(tls, uintptr(unsafe.Pointer(&crashVfs)), *(*int32)(unsafe.Pointer(bp + 4)))
 44251  	} else {
 44252  		crashVfs.FpAppData = uintptr(0)
 44253  		sqlite3.Xsqlite3_vfs_unregister(tls, uintptr(unsafe.Pointer(&crashVfs)))
 44254  	}
 44255  
 44256  	return TCL_OK
 44257  }
 44258  
 44259  var crashVfs = sqlite3_vfs{
 44260  	FiVersion:      2,
 44261  	FzName:         ts + 26798,
 44262  	FxOpen:         0,
 44263  	FxDelete:       0,
 44264  	FxAccess:       0,
 44265  	FxFullPathname: 0,
 44266  	FxDlOpen:       0,
 44267  	FxDlError:      0,
 44268  	FxDlSym:        0,
 44269  	FxDlClose:      0,
 44270  	FxRandomness:   0,
 44271  	FxSleep:        0,
 44272  	FxCurrentTime:  0,
 44273  	FxGetLastError: 0,
 44274  }
 44275  
 44276  func crashParamsObjCmd(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 44277  	bp := tls.Alloc(48)
 44278  	defer tls.Free(48)
 44279  
 44280  	var zCrashFile uintptr
 44281  
 44282  	*(*int32)(unsafe.Pointer(bp + 40)) = -1
 44283  	*(*int32)(unsafe.Pointer(bp + 44)) = -1
 44284  
 44285  	if !(objc < 3) {
 44286  		goto __1
 44287  	}
 44288  	tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+26804)
 44289  	goto error
 44290  __1:
 44291  	;
 44292  	zCrashFile = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(objc-1)*8)), bp+32)
 44293  	if !(uint64(*(*int32)(unsafe.Pointer(bp + 32))) >= uint64(unsafe.Sizeof([500]int8{}))) {
 44294  		goto __2
 44295  	}
 44296  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+26830, zCrashFile, ts+11945, 0))
 44297  	goto error
 44298  __2:
 44299  	;
 44300  	if !(tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(objc-2)*8)), bp+36) != 0) {
 44301  		goto __3
 44302  	}
 44303  	goto error
 44304  __3:
 44305  	;
 44306  	if !(processDevSymArgs(tls, interp, objc-3, objv+1*8, bp+40, bp+44) != 0) {
 44307  		goto __4
 44308  	}
 44309  	return TCL_ERROR
 44310  __4:
 44311  	;
 44312  	if !(*(*int32)(unsafe.Pointer(bp + 40)) >= 0) {
 44313  		goto __5
 44314  	}
 44315  	g.FiDeviceCharacteristics = *(*int32)(unsafe.Pointer(bp + 40))
 44316  __5:
 44317  	;
 44318  	if !(*(*int32)(unsafe.Pointer(bp + 44)) >= 0) {
 44319  		goto __6
 44320  	}
 44321  	g.FiSectorSize = *(*int32)(unsafe.Pointer(bp + 44))
 44322  __6:
 44323  	;
 44324  	g.FiCrash = *(*int32)(unsafe.Pointer(bp + 36))
 44325  	libc.X__builtin___memcpy_chk(tls, uintptr(unsafe.Pointer(&g))+28, zCrashFile, uint64(*(*int32)(unsafe.Pointer(bp + 32))+1), libc.X__builtin_object_size(tls, uintptr(unsafe.Pointer(&g))+28, 0))
 44326  	sqlite3CrashTestEnable = 1
 44327  	return TCL_OK
 44328  
 44329  error:
 44330  	return TCL_ERROR
 44331  }
 44332  
 44333  func devSymObjCmd(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 44334  	bp := tls.Alloc(8)
 44335  	defer tls.Free(8)
 44336  
 44337  	*(*int32)(unsafe.Pointer(bp)) = -1
 44338  	*(*int32)(unsafe.Pointer(bp + 4)) = -1
 44339  
 44340  	if processDevSymArgs(tls, interp, objc-1, objv+1*8, bp, bp+4) != 0 {
 44341  		return TCL_ERROR
 44342  	}
 44343  	devsym_register(tls, *(*int32)(unsafe.Pointer(bp)), *(*int32)(unsafe.Pointer(bp + 4)))
 44344  
 44345  	return TCL_OK
 44346  }
 44347  
 44348  func writeCrashObjCmd(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 44349  	bp := tls.Alloc(4)
 44350  	defer tls.Free(4)
 44351  
 44352  	*(*int32)(unsafe.Pointer(bp)) = 0
 44353  
 44354  	if objc != 2 {
 44355  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+26854)
 44356  		return TCL_ERROR
 44357  	}
 44358  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp) != 0 {
 44359  		return TCL_ERROR
 44360  	}
 44361  
 44362  	devsym_crash_on_write(tls, *(*int32)(unsafe.Pointer(bp)))
 44363  	return TCL_OK
 44364  }
 44365  
 44366  func dsUnregisterObjCmd(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 44367  	if objc != 1 {
 44368  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+584)
 44369  		return TCL_ERROR
 44370  	}
 44371  
 44372  	devsym_unregister(tls)
 44373  	return TCL_OK
 44374  }
 44375  
 44376  func jtObjCmd(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 44377  	bp := tls.Alloc(48)
 44378  	defer tls.Free(48)
 44379  
 44380  	var zParent uintptr = uintptr(0)
 44381  
 44382  	if objc != 2 && objc != 3 {
 44383  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+26861)
 44384  		return TCL_ERROR
 44385  	}
 44386  	zParent = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 44387  	if objc == 3 {
 44388  		if libc.Xstrcmp(tls, zParent, ts+26883) != 0 {
 44389  			tcl.XTcl_AppendResult(tls, interp,
 44390  				libc.VaList(bp, ts+11851, zParent, ts+26892, 0))
 44391  			return TCL_ERROR
 44392  		}
 44393  		zParent = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 44394  	}
 44395  
 44396  	if !(int32(*(*int8)(unsafe.Pointer(zParent))) != 0) {
 44397  		zParent = uintptr(0)
 44398  	}
 44399  	if jt_register(tls, zParent, libc.Bool32(objc == 3)) != 0 {
 44400  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+26912, 0))
 44401  		return TCL_ERROR
 44402  	}
 44403  
 44404  	return TCL_OK
 44405  }
 44406  
 44407  func jtUnregisterObjCmd(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 44408  	if objc != 1 {
 44409  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+584)
 44410  		return TCL_ERROR
 44411  	}
 44412  
 44413  	jt_unregister(tls)
 44414  	return TCL_OK
 44415  }
 44416  
 44417  func Sqlitetest6_Init(tls *libc.TLS, interp uintptr) int32 {
 44418  	tcl.XTcl_CreateObjCommand(tls, interp, ts+26933, *(*uintptr)(unsafe.Pointer(&struct {
 44419  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 44420  	}{crashEnableCmd})), uintptr(0), uintptr(0))
 44421  	tcl.XTcl_CreateObjCommand(tls, interp, ts+26954, *(*uintptr)(unsafe.Pointer(&struct {
 44422  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 44423  	}{crashParamsObjCmd})), uintptr(0), uintptr(0))
 44424  	tcl.XTcl_CreateObjCommand(tls, interp, ts+26974, *(*uintptr)(unsafe.Pointer(&struct {
 44425  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 44426  	}{crashNowCmd})), uintptr(0), uintptr(0))
 44427  	tcl.XTcl_CreateObjCommand(tls, interp, ts+26992, *(*uintptr)(unsafe.Pointer(&struct {
 44428  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 44429  	}{devSymObjCmd})), uintptr(0), uintptr(0))
 44430  	tcl.XTcl_CreateObjCommand(tls, interp, ts+27016, *(*uintptr)(unsafe.Pointer(&struct {
 44431  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 44432  	}{writeCrashObjCmd})), uintptr(0), uintptr(0))
 44433  	tcl.XTcl_CreateObjCommand(tls, interp, ts+27039, *(*uintptr)(unsafe.Pointer(&struct {
 44434  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 44435  	}{dsUnregisterObjCmd})), uintptr(0), uintptr(0))
 44436  	tcl.XTcl_CreateObjCommand(tls, interp, ts+27057, *(*uintptr)(unsafe.Pointer(&struct {
 44437  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 44438  	}{jtObjCmd})), uintptr(0), uintptr(0))
 44439  	tcl.XTcl_CreateObjCommand(tls, interp, ts+27073, *(*uintptr)(unsafe.Pointer(&struct {
 44440  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 44441  	}{jtUnregisterObjCmd})), uintptr(0), uintptr(0))
 44442  	return TCL_OK
 44443  }
 44444  
 44445  type Thread1 = struct {
 44446  	FzFilename   uintptr
 44447  	FxOp         uintptr
 44448  	FzArg        uintptr
 44449  	Fopnum       int32
 44450  	Fbusy        int32
 44451  	Fcompleted   int32
 44452  	F__ccgo_pad1 [4]byte
 44453  	Fdb          uintptr
 44454  	FpStmt       uintptr
 44455  	FzErr        uintptr
 44456  	FzStaticErr  uintptr
 44457  	Frc          int32
 44458  	Fargc        int32
 44459  	Fargv        [100]uintptr
 44460  	Fcolv        [100]uintptr
 44461  	FnServer     int32
 44462  	F__ccgo_pad2 [4]byte
 44463  }
 44464  
 44465  var threadset1 [26]Thread1
 44466  
 44467  func client_main(tls *libc.TLS, pArg uintptr) uintptr {
 44468  	var p uintptr = pArg
 44469  	if (*Thread1)(unsafe.Pointer(p)).Fdb != 0 {
 44470  		sqlite3_client_close(tls, (*Thread1)(unsafe.Pointer(p)).Fdb)
 44471  	}
 44472  	sqlite3_client_open(tls, (*Thread1)(unsafe.Pointer(p)).FzFilename, p+40)
 44473  	if SQLITE_OK != sqlite3.Xsqlite3_errcode(tls, (*Thread1)(unsafe.Pointer(p)).Fdb) {
 44474  		(*Thread1)(unsafe.Pointer(p)).FzErr = libc.Xstrdup(tls, sqlite3.Xsqlite3_errmsg(tls, (*Thread1)(unsafe.Pointer(p)).Fdb))
 44475  		sqlite3_client_close(tls, (*Thread1)(unsafe.Pointer(p)).Fdb)
 44476  		(*Thread1)(unsafe.Pointer(p)).Fdb = uintptr(0)
 44477  	}
 44478  	(*Thread1)(unsafe.Pointer(p)).FpStmt = uintptr(0)
 44479  	(*Thread1)(unsafe.Pointer(p)).Fcompleted = 1
 44480  	for (*Thread1)(unsafe.Pointer(p)).Fopnum <= (*Thread1)(unsafe.Pointer(p)).Fcompleted {
 44481  		libc.Xsched_yield(tls)
 44482  	}
 44483  	for (*Thread1)(unsafe.Pointer(p)).FxOp != 0 {
 44484  		if (*Thread1)(unsafe.Pointer(p)).FzErr != 0 && (*Thread1)(unsafe.Pointer(p)).FzErr != (*Thread1)(unsafe.Pointer(p)).FzStaticErr {
 44485  			sqlite3.Xsqlite3_free(tls, (*Thread1)(unsafe.Pointer(p)).FzErr)
 44486  			(*Thread1)(unsafe.Pointer(p)).FzErr = uintptr(0)
 44487  		}
 44488  		(*struct{ f func(*libc.TLS, uintptr) })(unsafe.Pointer(&struct{ uintptr }{(*Thread1)(unsafe.Pointer(p)).FxOp})).f(tls, p)
 44489  		(*Thread1)(unsafe.Pointer(p)).Fcompleted++
 44490  		for (*Thread1)(unsafe.Pointer(p)).Fopnum <= (*Thread1)(unsafe.Pointer(p)).Fcompleted {
 44491  			libc.Xsched_yield(tls)
 44492  		}
 44493  	}
 44494  	if (*Thread1)(unsafe.Pointer(p)).FpStmt != 0 {
 44495  		sqlite3_client_finalize(tls, (*Thread1)(unsafe.Pointer(p)).FpStmt)
 44496  		(*Thread1)(unsafe.Pointer(p)).FpStmt = uintptr(0)
 44497  	}
 44498  	if (*Thread1)(unsafe.Pointer(p)).Fdb != 0 {
 44499  		sqlite3_client_close(tls, (*Thread1)(unsafe.Pointer(p)).Fdb)
 44500  		(*Thread1)(unsafe.Pointer(p)).Fdb = uintptr(0)
 44501  	}
 44502  	if (*Thread1)(unsafe.Pointer(p)).FzErr != 0 && (*Thread1)(unsafe.Pointer(p)).FzErr != (*Thread1)(unsafe.Pointer(p)).FzStaticErr {
 44503  		sqlite3.Xsqlite3_free(tls, (*Thread1)(unsafe.Pointer(p)).FzErr)
 44504  		(*Thread1)(unsafe.Pointer(p)).FzErr = uintptr(0)
 44505  	}
 44506  	(*Thread1)(unsafe.Pointer(p)).Fcompleted++
 44507  	sqlite3.Xsqlite3_thread_cleanup(tls)
 44508  	return uintptr(0)
 44509  }
 44510  
 44511  func parse_client_id(tls *libc.TLS, interp uintptr, zArg uintptr) int32 {
 44512  	bp := tls.Alloc(16)
 44513  	defer tls.Free(16)
 44514  
 44515  	if zArg == uintptr(0) || int32(*(*int8)(unsafe.Pointer(zArg))) == 0 || int32(*(*int8)(unsafe.Pointer(zArg + 1))) != 0 || !(isupper(tls, int32(uint8(*(*int8)(unsafe.Pointer(zArg))))) != 0) {
 44516  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+25845, 0))
 44517  		return -1
 44518  	}
 44519  	return int32(*(*int8)(unsafe.Pointer(zArg))) - 'A'
 44520  }
 44521  
 44522  func tcl_client_create(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 44523  	bp := tls.Alloc(96)
 44524  	defer tls.Free(96)
 44525  
 44526  	var i int32
 44527  
 44528  	var rc int32
 44529  
 44530  	if argc != 3 {
 44531  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 44532  			ts+25884, 0))
 44533  		return TCL_ERROR
 44534  	}
 44535  	i = parse_client_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 44536  	if i < 0 {
 44537  		return TCL_ERROR
 44538  	}
 44539  	if threadset1[i].Fbusy != 0 {
 44540  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25897, *(*uintptr)(unsafe.Pointer(argv + 1*8)), ts+25905, 0))
 44541  		return TCL_ERROR
 44542  	}
 44543  	threadset1[i].Fbusy = 1
 44544  	sqlite3.Xsqlite3_free(tls, threadset1[i].FzFilename)
 44545  	threadset1[i].FzFilename = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp+64, *(*uintptr)(unsafe.Pointer(argv + 2*8))))
 44546  	threadset1[i].Fopnum = 1
 44547  	threadset1[i].Fcompleted = 0
 44548  	rc = libc.Xpthread_create(tls, bp+88, uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 44549  		f func(*libc.TLS, uintptr) uintptr
 44550  	}{client_main})), uintptr(unsafe.Pointer(&threadset1))+uintptr(i)*1688)
 44551  	if rc != 0 {
 44552  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+72, ts+25925, 0))
 44553  		sqlite3.Xsqlite3_free(tls, threadset1[i].FzFilename)
 44554  		threadset1[i].Fbusy = 0
 44555  		return TCL_ERROR
 44556  	}
 44557  	libc.Xpthread_detach(tls, *(*pthread_t)(unsafe.Pointer(bp + 88)))
 44558  	if threadset1[i].FnServer == 0 {
 44559  		threadset1[i].FnServer = 1
 44560  		sqlite3_server_start2(tls, uintptr(unsafe.Pointer(&threadset1))+uintptr(i)*1688+1680)
 44561  	}
 44562  	return TCL_OK
 44563  }
 44564  
 44565  func client_wait(tls *libc.TLS, p uintptr) {
 44566  	for (*Thread1)(unsafe.Pointer(p)).Fopnum > (*Thread1)(unsafe.Pointer(p)).Fcompleted {
 44567  		libc.Xsched_yield(tls)
 44568  	}
 44569  }
 44570  
 44571  func tcl_client_wait(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 44572  	bp := tls.Alloc(48)
 44573  	defer tls.Free(48)
 44574  
 44575  	var i int32
 44576  
 44577  	if argc != 2 {
 44578  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 44579  			ts+25953, 0))
 44580  		return TCL_ERROR
 44581  	}
 44582  	i = parse_client_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 44583  	if i < 0 {
 44584  		return TCL_ERROR
 44585  	}
 44586  	if !(threadset1[i].Fbusy != 0) {
 44587  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25957, 0))
 44588  		return TCL_ERROR
 44589  	}
 44590  	client_wait(tls, uintptr(unsafe.Pointer(&threadset1))+uintptr(i)*1688)
 44591  	return TCL_OK
 44592  }
 44593  
 44594  func stop_thread(tls *libc.TLS, p uintptr) {
 44595  	client_wait(tls, p)
 44596  	(*Thread1)(unsafe.Pointer(p)).FxOp = uintptr(0)
 44597  	(*Thread1)(unsafe.Pointer(p)).Fopnum++
 44598  	client_wait(tls, p)
 44599  	sqlite3.Xsqlite3_free(tls, (*Thread1)(unsafe.Pointer(p)).FzArg)
 44600  	(*Thread1)(unsafe.Pointer(p)).FzArg = uintptr(0)
 44601  	sqlite3.Xsqlite3_free(tls, (*Thread1)(unsafe.Pointer(p)).FzFilename)
 44602  	(*Thread1)(unsafe.Pointer(p)).FzFilename = uintptr(0)
 44603  	(*Thread1)(unsafe.Pointer(p)).Fbusy = 0
 44604  }
 44605  
 44606  func tcl_client_halt(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 44607  	bp := tls.Alloc(48)
 44608  	defer tls.Free(48)
 44609  
 44610  	var i int32
 44611  
 44612  	if argc != 2 {
 44613  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 44614  			ts+25953, 0))
 44615  		return TCL_ERROR
 44616  	}
 44617  	if int32(*(*int8)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(argv + 1*8))))) == '*' && int32(*(*int8)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(argv + 1*8)) + 1))) == 0 {
 44618  		for i = 0; i < N_THREAD; i++ {
 44619  			if threadset1[i].Fbusy != 0 {
 44620  				stop_thread(tls, uintptr(unsafe.Pointer(&threadset1))+uintptr(i)*1688)
 44621  			}
 44622  		}
 44623  	} else {
 44624  		i = parse_client_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 44625  		if i < 0 {
 44626  			return TCL_ERROR
 44627  		}
 44628  		if !(threadset1[i].Fbusy != 0) {
 44629  			tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25957, 0))
 44630  			return TCL_ERROR
 44631  		}
 44632  		stop_thread(tls, uintptr(unsafe.Pointer(&threadset1))+uintptr(i)*1688)
 44633  	}
 44634  
 44635  	for i = 0; i < N_THREAD && threadset1[i].Fbusy == 0; i++ {
 44636  	}
 44637  	if i >= N_THREAD {
 44638  		sqlite3_server_stop(tls)
 44639  		for 1 != 0 {
 44640  			for i = 0; i < N_THREAD && threadset1[i].FnServer == 0; i++ {
 44641  			}
 44642  			if i == N_THREAD {
 44643  				break
 44644  			}
 44645  			libc.Xsched_yield(tls)
 44646  		}
 44647  	}
 44648  	return TCL_OK
 44649  }
 44650  
 44651  func tcl_client_argc(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 44652  	bp := tls.Alloc(172)
 44653  	defer tls.Free(172)
 44654  
 44655  	var i int32
 44656  
 44657  	if argc != 2 {
 44658  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 44659  			ts+25953, 0))
 44660  		return TCL_ERROR
 44661  	}
 44662  	i = parse_client_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 44663  	if i < 0 {
 44664  		return TCL_ERROR
 44665  	}
 44666  	if !(threadset1[i].Fbusy != 0) {
 44667  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25957, 0))
 44668  		return TCL_ERROR
 44669  	}
 44670  	client_wait(tls, uintptr(unsafe.Pointer(&threadset1))+uintptr(i)*1688)
 44671  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([100]int8{})), bp+72, ts+1333, libc.VaList(bp+48, threadset1[i].Fargc))
 44672  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+56, bp+72, 0))
 44673  	return TCL_OK
 44674  }
 44675  
 44676  func tcl_client_argv(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 44677  	bp := tls.Alloc(84)
 44678  	defer tls.Free(84)
 44679  
 44680  	var i int32
 44681  
 44682  	if argc != 3 {
 44683  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 44684  			ts+25972, 0))
 44685  		return TCL_ERROR
 44686  	}
 44687  	i = parse_client_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 44688  	if i < 0 {
 44689  		return TCL_ERROR
 44690  	}
 44691  	if !(threadset1[i].Fbusy != 0) {
 44692  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25957, 0))
 44693  		return TCL_ERROR
 44694  	}
 44695  	if tcl.XTcl_GetInt(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 2*8)), bp+80) != 0 {
 44696  		return TCL_ERROR
 44697  	}
 44698  	client_wait(tls, uintptr(unsafe.Pointer(&threadset1))+uintptr(i)*1688)
 44699  	if *(*int32)(unsafe.Pointer(bp + 80)) < 0 || *(*int32)(unsafe.Pointer(bp + 80)) >= threadset1[i].Fargc {
 44700  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+48, ts+25978, 0))
 44701  		return TCL_ERROR
 44702  	}
 44703  	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))
 44704  	return TCL_OK
 44705  }
 44706  
 44707  func tcl_client_colname(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 44708  	bp := tls.Alloc(84)
 44709  	defer tls.Free(84)
 44710  
 44711  	var i int32
 44712  
 44713  	if argc != 3 {
 44714  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 44715  			ts+25972, 0))
 44716  		return TCL_ERROR
 44717  	}
 44718  	i = parse_client_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 44719  	if i < 0 {
 44720  		return TCL_ERROR
 44721  	}
 44722  	if !(threadset1[i].Fbusy != 0) {
 44723  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25957, 0))
 44724  		return TCL_ERROR
 44725  	}
 44726  	if tcl.XTcl_GetInt(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 2*8)), bp+80) != 0 {
 44727  		return TCL_ERROR
 44728  	}
 44729  	client_wait(tls, uintptr(unsafe.Pointer(&threadset1))+uintptr(i)*1688)
 44730  	if *(*int32)(unsafe.Pointer(bp + 80)) < 0 || *(*int32)(unsafe.Pointer(bp + 80)) >= threadset1[i].Fargc {
 44731  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+48, ts+25978, 0))
 44732  		return TCL_ERROR
 44733  	}
 44734  	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))
 44735  	return TCL_OK
 44736  }
 44737  
 44738  func tcl_client_result(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 44739  	bp := tls.Alloc(64)
 44740  	defer tls.Free(64)
 44741  
 44742  	var i int32
 44743  	var zName uintptr
 44744  
 44745  	if argc != 2 {
 44746  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 44747  			ts+25953, 0))
 44748  		return TCL_ERROR
 44749  	}
 44750  	i = parse_client_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 44751  	if i < 0 {
 44752  		return TCL_ERROR
 44753  	}
 44754  	if !(threadset1[i].Fbusy != 0) {
 44755  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25957, 0))
 44756  		return TCL_ERROR
 44757  	}
 44758  	client_wait(tls, uintptr(unsafe.Pointer(&threadset1))+uintptr(i)*1688)
 44759  	zName = sqlite3.Xsqlite3ErrName(tls, threadset1[i].Frc)
 44760  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+48, zName, 0))
 44761  	return TCL_OK
 44762  }
 44763  
 44764  func tcl_client_error(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 44765  	bp := tls.Alloc(64)
 44766  	defer tls.Free(64)
 44767  
 44768  	var i int32
 44769  
 44770  	if argc != 2 {
 44771  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 44772  			ts+25953, 0))
 44773  		return TCL_ERROR
 44774  	}
 44775  	i = parse_client_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 44776  	if i < 0 {
 44777  		return TCL_ERROR
 44778  	}
 44779  	if !(threadset1[i].Fbusy != 0) {
 44780  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25957, 0))
 44781  		return TCL_ERROR
 44782  	}
 44783  	client_wait(tls, uintptr(unsafe.Pointer(&threadset1))+uintptr(i)*1688)
 44784  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+48, threadset1[i].FzErr, 0))
 44785  	return TCL_OK
 44786  }
 44787  
 44788  func do_compile1(tls *libc.TLS, p uintptr) {
 44789  	if (*Thread1)(unsafe.Pointer(p)).Fdb == uintptr(0) {
 44790  		(*Thread1)(unsafe.Pointer(p)).FzErr = libc.AssignPtrUintptr(p+64, ts+26005)
 44791  		(*Thread1)(unsafe.Pointer(p)).Frc = SQLITE_ERROR
 44792  		return
 44793  	}
 44794  	if (*Thread1)(unsafe.Pointer(p)).FpStmt != 0 {
 44795  		sqlite3_client_finalize(tls, (*Thread1)(unsafe.Pointer(p)).FpStmt)
 44796  		(*Thread1)(unsafe.Pointer(p)).FpStmt = uintptr(0)
 44797  	}
 44798  	(*Thread1)(unsafe.Pointer(p)).Frc = sqlite3_client_prepare(tls, (*Thread1)(unsafe.Pointer(p)).Fdb, (*Thread1)(unsafe.Pointer(p)).FzArg, -1, p+48, uintptr(0))
 44799  }
 44800  
 44801  func tcl_client_compile(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 44802  	bp := tls.Alloc(56)
 44803  	defer tls.Free(56)
 44804  
 44805  	var i int32
 44806  	if argc != 3 {
 44807  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 44808  			ts+26025, 0))
 44809  		return TCL_ERROR
 44810  	}
 44811  	i = parse_client_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 44812  	if i < 0 {
 44813  		return TCL_ERROR
 44814  	}
 44815  	if !(threadset1[i].Fbusy != 0) {
 44816  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25957, 0))
 44817  		return TCL_ERROR
 44818  	}
 44819  	client_wait(tls, uintptr(unsafe.Pointer(&threadset1))+uintptr(i)*1688)
 44820  	threadset1[i].FxOp = *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{do_compile1}))
 44821  	sqlite3.Xsqlite3_free(tls, threadset1[i].FzArg)
 44822  	threadset1[i].FzArg = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp+48, *(*uintptr)(unsafe.Pointer(argv + 2*8))))
 44823  	threadset1[i].Fopnum++
 44824  	return TCL_OK
 44825  }
 44826  
 44827  func do_step1(tls *libc.TLS, p uintptr) {
 44828  	var i int32
 44829  	if (*Thread1)(unsafe.Pointer(p)).FpStmt == uintptr(0) {
 44830  		(*Thread1)(unsafe.Pointer(p)).FzErr = libc.AssignPtrUintptr(p+64, ts+26033)
 44831  		(*Thread1)(unsafe.Pointer(p)).Frc = SQLITE_ERROR
 44832  		return
 44833  	}
 44834  	(*Thread1)(unsafe.Pointer(p)).Frc = sqlite3_client_step(tls, (*Thread1)(unsafe.Pointer(p)).FpStmt)
 44835  	if (*Thread1)(unsafe.Pointer(p)).Frc == SQLITE_ROW {
 44836  		(*Thread1)(unsafe.Pointer(p)).Fargc = sqlite3.Xsqlite3_column_count(tls, (*Thread1)(unsafe.Pointer(p)).FpStmt)
 44837  		for i = 0; i < sqlite3.Xsqlite3_data_count(tls, (*Thread1)(unsafe.Pointer(p)).FpStmt); i++ {
 44838  			*(*uintptr)(unsafe.Pointer(p + 80 + uintptr(i)*8)) = sqlite3.Xsqlite3_column_text(tls, (*Thread1)(unsafe.Pointer(p)).FpStmt, i)
 44839  		}
 44840  		for i = 0; i < (*Thread1)(unsafe.Pointer(p)).Fargc; i++ {
 44841  			*(*uintptr)(unsafe.Pointer(p + 880 + uintptr(i)*8)) = sqlite3.Xsqlite3_column_name(tls, (*Thread1)(unsafe.Pointer(p)).FpStmt, i)
 44842  		}
 44843  	}
 44844  }
 44845  
 44846  func tcl_client_step(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 44847  	bp := tls.Alloc(48)
 44848  	defer tls.Free(48)
 44849  
 44850  	var i int32
 44851  	if argc != 2 {
 44852  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 44853  			ts+26062, 0))
 44854  		return TCL_ERROR
 44855  	}
 44856  	i = parse_client_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 44857  	if i < 0 {
 44858  		return TCL_ERROR
 44859  	}
 44860  	if !(threadset1[i].Fbusy != 0) {
 44861  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25957, 0))
 44862  		return TCL_ERROR
 44863  	}
 44864  	client_wait(tls, uintptr(unsafe.Pointer(&threadset1))+uintptr(i)*1688)
 44865  	threadset1[i].FxOp = *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{do_step1}))
 44866  	threadset1[i].Fopnum++
 44867  	return TCL_OK
 44868  }
 44869  
 44870  func do_finalize1(tls *libc.TLS, p uintptr) {
 44871  	if (*Thread1)(unsafe.Pointer(p)).FpStmt == uintptr(0) {
 44872  		(*Thread1)(unsafe.Pointer(p)).FzErr = libc.AssignPtrUintptr(p+64, ts+26033)
 44873  		(*Thread1)(unsafe.Pointer(p)).Frc = SQLITE_ERROR
 44874  		return
 44875  	}
 44876  	(*Thread1)(unsafe.Pointer(p)).Frc = sqlite3_client_finalize(tls, (*Thread1)(unsafe.Pointer(p)).FpStmt)
 44877  	(*Thread1)(unsafe.Pointer(p)).FpStmt = uintptr(0)
 44878  }
 44879  
 44880  func tcl_client_finalize(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 44881  	bp := tls.Alloc(48)
 44882  	defer tls.Free(48)
 44883  
 44884  	var i int32
 44885  	if argc != 2 {
 44886  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 44887  			ts+26062, 0))
 44888  		return TCL_ERROR
 44889  	}
 44890  	i = parse_client_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 44891  	if i < 0 {
 44892  		return TCL_ERROR
 44893  	}
 44894  	if !(threadset1[i].Fbusy != 0) {
 44895  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25957, 0))
 44896  		return TCL_ERROR
 44897  	}
 44898  	client_wait(tls, uintptr(unsafe.Pointer(&threadset1))+uintptr(i)*1688)
 44899  	threadset1[i].FxOp = *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{do_finalize1}))
 44900  	sqlite3.Xsqlite3_free(tls, threadset1[i].FzArg)
 44901  	threadset1[i].FzArg = uintptr(0)
 44902  	threadset1[i].Fopnum++
 44903  	return TCL_OK
 44904  }
 44905  
 44906  func do_reset(tls *libc.TLS, p uintptr) {
 44907  	if (*Thread1)(unsafe.Pointer(p)).FpStmt == uintptr(0) {
 44908  		(*Thread1)(unsafe.Pointer(p)).FzErr = libc.AssignPtrUintptr(p+64, ts+26033)
 44909  		(*Thread1)(unsafe.Pointer(p)).Frc = SQLITE_ERROR
 44910  		return
 44911  	}
 44912  	(*Thread1)(unsafe.Pointer(p)).Frc = sqlite3_client_reset(tls, (*Thread1)(unsafe.Pointer(p)).FpStmt)
 44913  	(*Thread1)(unsafe.Pointer(p)).FpStmt = uintptr(0)
 44914  }
 44915  
 44916  func tcl_client_reset(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 44917  	bp := tls.Alloc(48)
 44918  	defer tls.Free(48)
 44919  
 44920  	var i int32
 44921  	if argc != 2 {
 44922  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 44923  			ts+26062, 0))
 44924  		return TCL_ERROR
 44925  	}
 44926  	i = parse_client_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 44927  	if i < 0 {
 44928  		return TCL_ERROR
 44929  	}
 44930  	if !(threadset1[i].Fbusy != 0) {
 44931  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25957, 0))
 44932  		return TCL_ERROR
 44933  	}
 44934  	client_wait(tls, uintptr(unsafe.Pointer(&threadset1))+uintptr(i)*1688)
 44935  	threadset1[i].FxOp = *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{do_reset}))
 44936  	sqlite3.Xsqlite3_free(tls, threadset1[i].FzArg)
 44937  	threadset1[i].FzArg = uintptr(0)
 44938  	threadset1[i].Fopnum++
 44939  	return TCL_OK
 44940  }
 44941  
 44942  func tcl_client_swap(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 44943  	bp := tls.Alloc(64)
 44944  	defer tls.Free(64)
 44945  
 44946  	var i int32
 44947  	var j int32
 44948  	var temp uintptr
 44949  	if argc != 3 {
 44950  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 44951  			ts+26067, 0))
 44952  		return TCL_ERROR
 44953  	}
 44954  	i = parse_client_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 44955  	if i < 0 {
 44956  		return TCL_ERROR
 44957  	}
 44958  	if !(threadset1[i].Fbusy != 0) {
 44959  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25957, 0))
 44960  		return TCL_ERROR
 44961  	}
 44962  	client_wait(tls, uintptr(unsafe.Pointer(&threadset1))+uintptr(i)*1688)
 44963  	j = parse_client_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 2*8)))
 44964  	if j < 0 {
 44965  		return TCL_ERROR
 44966  	}
 44967  	if !(threadset1[j].Fbusy != 0) {
 44968  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+48, ts+25957, 0))
 44969  		return TCL_ERROR
 44970  	}
 44971  	client_wait(tls, uintptr(unsafe.Pointer(&threadset1))+uintptr(j)*1688)
 44972  	temp = threadset1[i].Fdb
 44973  	threadset1[i].Fdb = threadset1[j].Fdb
 44974  	threadset1[j].Fdb = temp
 44975  	return TCL_OK
 44976  }
 44977  
 44978  func Sqlitetest7_Init(tls *libc.TLS, interp uintptr) int32 {
 44979  	var i int32
 44980  
 44981  	for i = 0; uint64(i) < uint64(unsafe.Sizeof(aCmd6))/uint64(unsafe.Sizeof(struct {
 44982  		FzName uintptr
 44983  		FxProc uintptr
 44984  	}{})); i++ {
 44985  		tcl.XTcl_CreateCommand(tls, interp, aCmd6[i].FzName, aCmd6[i].FxProc, uintptr(0), uintptr(0))
 44986  	}
 44987  	return TCL_OK
 44988  }
 44989  
 44990  var aCmd6 = [13]struct {
 44991  	FzName uintptr
 44992  	FxProc uintptr
 44993  }{
 44994  	{FzName: ts + 27091, FxProc: 0},
 44995  	{FzName: ts + 27105, FxProc: 0},
 44996  	{FzName: ts + 27117, FxProc: 0},
 44997  	{FzName: ts + 27129, FxProc: 0},
 44998  	{FzName: ts + 27141, FxProc: 0},
 44999  	{FzName: ts + 27153, FxProc: 0},
 45000  	{FzName: ts + 27168, FxProc: 0},
 45001  	{FzName: ts + 27182, FxProc: 0},
 45002  	{FzName: ts + 27195, FxProc: 0},
 45003  	{FzName: ts + 27210, FxProc: 0},
 45004  	{FzName: ts + 27222, FxProc: 0},
 45005  	{FzName: ts + 27235, FxProc: 0},
 45006  	{FzName: ts + 27251, FxProc: 0},
 45007  }
 45008  
 45009  type echo_vtab1 = struct {
 45010  	Fbase          sqlite3_vtab
 45011  	Finterp        uintptr
 45012  	Fdb            uintptr
 45013  	FisPattern     int32
 45014  	FinTransaction int32
 45015  	FzThis         uintptr
 45016  	FzTableName    uintptr
 45017  	FzLogName      uintptr
 45018  	FnCol          int32
 45019  	F__ccgo_pad1   [4]byte
 45020  	FaIndex        uintptr
 45021  	FaCol          uintptr
 45022  }
 45023  
 45024  type echo_vtab = echo_vtab1
 45025  type echo_cursor1 = struct {
 45026  	Fbase  sqlite3_vtab_cursor
 45027  	FpStmt uintptr
 45028  }
 45029  
 45030  type echo_cursor = echo_cursor1
 45031  
 45032  func simulateVtabError(tls *libc.TLS, p uintptr, zMethod uintptr) int32 {
 45033  	bp := tls.Alloc(152)
 45034  	defer tls.Free(152)
 45035  
 45036  	var zErr uintptr
 45037  
 45038  	*(*int8)(unsafe.Pointer(bp + 24 + 127)) = int8(0)
 45039  	sqlite3.Xsqlite3_snprintf(tls, 127, bp+24, ts+27263, libc.VaList(bp, zMethod, (*echo_vtab)(unsafe.Pointer(p)).FzTableName))
 45040  	zErr = tcl.XTcl_GetVar(tls, (*echo_vtab)(unsafe.Pointer(p)).Finterp, bp+24, TCL_GLOBAL_ONLY)
 45041  	if zErr != 0 {
 45042  		(*echo_vtab)(unsafe.Pointer(p)).Fbase.FzErrMsg = sqlite3.Xsqlite3_mprintf(tls, ts+27287, libc.VaList(bp+16, zErr))
 45043  	}
 45044  	return libc.Bool32(zErr != uintptr(0))
 45045  }
 45046  
 45047  func dequoteString(tls *libc.TLS, z uintptr) {
 45048  	var quote int32
 45049  	var i int32
 45050  	var j int32
 45051  	if z == uintptr(0) {
 45052  		return
 45053  	}
 45054  	quote = int32(*(*int8)(unsafe.Pointer(z)))
 45055  	switch quote {
 45056  	case '\'':
 45057  		break
 45058  	case '"':
 45059  		break
 45060  	case '`':
 45061  		break
 45062  	case '[':
 45063  		quote = ']'
 45064  		break
 45065  	default:
 45066  		return
 45067  	}
 45068  	i = 1
 45069  	j = 0
 45070  	for ; *(*int8)(unsafe.Pointer(z + uintptr(i))) != 0; i++ {
 45071  		if int32(*(*int8)(unsafe.Pointer(z + uintptr(i)))) == quote {
 45072  			if int32(*(*int8)(unsafe.Pointer(z + uintptr(i+1)))) == quote {
 45073  				*(*int8)(unsafe.Pointer(z + uintptr(libc.PostIncInt32(&j, 1)))) = int8(quote)
 45074  				i++
 45075  			} else {
 45076  				*(*int8)(unsafe.Pointer(z + uintptr(libc.PostIncInt32(&j, 1)))) = int8(0)
 45077  				break
 45078  			}
 45079  		} else {
 45080  			*(*int8)(unsafe.Pointer(z + uintptr(libc.PostIncInt32(&j, 1)))) = *(*int8)(unsafe.Pointer(z + uintptr(i)))
 45081  		}
 45082  	}
 45083  }
 45084  
 45085  func getColumnNames(tls *libc.TLS, db uintptr, zTab uintptr, paCol uintptr, pnCol uintptr) int32 {
 45086  	bp := tls.Alloc(24)
 45087  	defer tls.Free(24)
 45088  
 45089  	var aCol uintptr
 45090  	var zSql uintptr
 45091  
 45092  	var rc int32
 45093  	var nCol int32
 45094  	var zName uintptr
 45095  	var ii int32
 45096  	var nBytes int32
 45097  	var zSpace uintptr
 45098  	aCol = uintptr(0)
 45099  	*(*uintptr)(unsafe.Pointer(bp + 16)) = uintptr(0)
 45100  	rc = SQLITE_OK
 45101  	nCol = 0
 45102  
 45103  	zSql = sqlite3.Xsqlite3_mprintf(tls, ts+27307, libc.VaList(bp, zTab))
 45104  	if !!(zSql != 0) {
 45105  		goto __1
 45106  	}
 45107  	rc = SQLITE_NOMEM
 45108  	goto out
 45109  __1:
 45110  	;
 45111  	rc = sqlite3.Xsqlite3_prepare(tls, db, zSql, -1, bp+16, uintptr(0))
 45112  	sqlite3.Xsqlite3_free(tls, zSql)
 45113  
 45114  	if !(rc == SQLITE_OK) {
 45115  		goto __2
 45116  	}
 45117  	nCol = sqlite3.Xsqlite3_column_count(tls, *(*uintptr)(unsafe.Pointer(bp + 16)))
 45118  
 45119  	nBytes = int32(uint64(unsafe.Sizeof(uintptr(0))) * uint64(nCol))
 45120  	ii = 0
 45121  __3:
 45122  	if !(ii < nCol) {
 45123  		goto __5
 45124  	}
 45125  	zName = sqlite3.Xsqlite3_column_name(tls, *(*uintptr)(unsafe.Pointer(bp + 16)), ii)
 45126  	if !!(zName != 0) {
 45127  		goto __6
 45128  	}
 45129  	rc = SQLITE_NOMEM
 45130  	goto out
 45131  __6:
 45132  	;
 45133  	nBytes = nBytes + (int32(libc.Xstrlen(tls, zName)) + 1)
 45134  	goto __4
 45135  __4:
 45136  	ii++
 45137  	goto __3
 45138  	goto __5
 45139  __5:
 45140  	;
 45141  	aCol = sqlite3.Xsqlite3MallocZero(tls, uint64(nBytes))
 45142  	if !!(aCol != 0) {
 45143  		goto __7
 45144  	}
 45145  	rc = SQLITE_NOMEM
 45146  	goto out
 45147  __7:
 45148  	;
 45149  	zSpace = aCol + uintptr(nCol)*8
 45150  	ii = 0
 45151  __8:
 45152  	if !(ii < nCol) {
 45153  		goto __10
 45154  	}
 45155  	*(*uintptr)(unsafe.Pointer(aCol + uintptr(ii)*8)) = zSpace
 45156  	sqlite3.Xsqlite3_snprintf(tls, nBytes, zSpace, ts, libc.VaList(bp+8, sqlite3.Xsqlite3_column_name(tls, *(*uintptr)(unsafe.Pointer(bp + 16)), ii)))
 45157  	zSpace += uintptr(int32(libc.Xstrlen(tls, zSpace)) + 1)
 45158  	goto __9
 45159  __9:
 45160  	ii++
 45161  	goto __8
 45162  	goto __10
 45163  __10:
 45164  	;
 45165  __2:
 45166  	;
 45167  	*(*uintptr)(unsafe.Pointer(paCol)) = aCol
 45168  	*(*int32)(unsafe.Pointer(pnCol)) = nCol
 45169  
 45170  out:
 45171  	sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 16)))
 45172  	return rc
 45173  }
 45174  
 45175  func getIndexArray(tls *libc.TLS, db uintptr, zTab uintptr, nCol int32, paIndex uintptr) int32 {
 45176  	bp := tls.Alloc(32)
 45177  	defer tls.Free(32)
 45178  
 45179  	var aIndex uintptr
 45180  	var rc int32
 45181  	var zSql uintptr
 45182  	var cid int32
 45183  	var zIdx uintptr
 45184  
 45185  	var rc2 int32
 45186  	*(*uintptr)(unsafe.Pointer(bp + 16)) = uintptr(0)
 45187  	aIndex = uintptr(0)
 45188  
 45189  	aIndex = sqlite3.Xsqlite3MallocZero(tls, uint64(unsafe.Sizeof(int32(0)))*uint64(nCol))
 45190  	if !!(aIndex != 0) {
 45191  		goto __1
 45192  	}
 45193  	rc = SQLITE_NOMEM
 45194  	goto get_index_array_out
 45195  __1:
 45196  	;
 45197  	zSql = sqlite3.Xsqlite3_mprintf(tls, ts+27324, libc.VaList(bp, zTab))
 45198  	if !!(zSql != 0) {
 45199  		goto __2
 45200  	}
 45201  	rc = SQLITE_NOMEM
 45202  	goto get_index_array_out
 45203  __2:
 45204  	;
 45205  	rc = sqlite3.Xsqlite3_prepare(tls, db, zSql, -1, bp+16, uintptr(0))
 45206  	sqlite3.Xsqlite3_free(tls, zSql)
 45207  
 45208  __3:
 45209  	if !(*(*uintptr)(unsafe.Pointer(bp + 16)) != 0 && sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp + 16))) == SQLITE_ROW) {
 45210  		goto __4
 45211  	}
 45212  	zIdx = sqlite3.Xsqlite3_column_text(tls, *(*uintptr)(unsafe.Pointer(bp + 16)), 1)
 45213  	*(*uintptr)(unsafe.Pointer(bp + 24)) = uintptr(0)
 45214  	if !(zIdx == uintptr(0)) {
 45215  		goto __5
 45216  	}
 45217  	goto __3
 45218  __5:
 45219  	;
 45220  	zSql = sqlite3.Xsqlite3_mprintf(tls, ts+27346, libc.VaList(bp+8, zIdx))
 45221  	if !!(zSql != 0) {
 45222  		goto __6
 45223  	}
 45224  	rc = SQLITE_NOMEM
 45225  	goto get_index_array_out
 45226  __6:
 45227  	;
 45228  	rc = sqlite3.Xsqlite3_prepare(tls, db, zSql, -1, bp+24, uintptr(0))
 45229  	sqlite3.Xsqlite3_free(tls, zSql)
 45230  	if !(*(*uintptr)(unsafe.Pointer(bp + 24)) != 0 && sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp + 24))) == SQLITE_ROW) {
 45231  		goto __7
 45232  	}
 45233  	cid = sqlite3.Xsqlite3_column_int(tls, *(*uintptr)(unsafe.Pointer(bp + 24)), 1)
 45234  
 45235  	*(*int32)(unsafe.Pointer(aIndex + uintptr(cid)*4)) = 1
 45236  __7:
 45237  	;
 45238  	if !(*(*uintptr)(unsafe.Pointer(bp + 24)) != 0) {
 45239  		goto __8
 45240  	}
 45241  	rc = sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 24)))
 45242  __8:
 45243  	;
 45244  	if !(rc != SQLITE_OK) {
 45245  		goto __9
 45246  	}
 45247  	goto get_index_array_out
 45248  __9:
 45249  	;
 45250  	goto __3
 45251  __4:
 45252  	;
 45253  get_index_array_out:
 45254  	if !(*(*uintptr)(unsafe.Pointer(bp + 16)) != 0) {
 45255  		goto __10
 45256  	}
 45257  	rc2 = sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 16)))
 45258  	if !(rc == SQLITE_OK) {
 45259  		goto __11
 45260  	}
 45261  	rc = rc2
 45262  __11:
 45263  	;
 45264  __10:
 45265  	;
 45266  	if !(rc != SQLITE_OK) {
 45267  		goto __12
 45268  	}
 45269  	sqlite3.Xsqlite3_free(tls, aIndex)
 45270  	aIndex = uintptr(0)
 45271  __12:
 45272  	;
 45273  	*(*uintptr)(unsafe.Pointer(paIndex)) = aIndex
 45274  	return rc
 45275  }
 45276  
 45277  func appendToEchoModule(tls *libc.TLS, interp uintptr, zArg uintptr) {
 45278  	var flags int32 = TCL_APPEND_VALUE | TCL_LIST_ELEMENT | TCL_GLOBAL_ONLY
 45279  	tcl.XTcl_SetVar(tls, interp, ts+27368, func() uintptr {
 45280  		if zArg != 0 {
 45281  			return zArg
 45282  		}
 45283  		return ts + 584
 45284  	}(), flags)
 45285  }
 45286  
 45287  func echoDeclareVtab(tls *libc.TLS, pVtab uintptr, db uintptr) int32 {
 45288  	bp := tls.Alloc(8)
 45289  	defer tls.Free(8)
 45290  
 45291  	var rc int32 = SQLITE_OK
 45292  
 45293  	if (*echo_vtab)(unsafe.Pointer(pVtab)).FzTableName != 0 {
 45294  		*(*uintptr)(unsafe.Pointer(bp)) = uintptr(0)
 45295  		rc = sqlite3.Xsqlite3_prepare(tls, db,
 45296  			ts+27380,
 45297  			-1, bp, uintptr(0))
 45298  		if rc == SQLITE_OK {
 45299  			sqlite3.Xsqlite3_bind_text(tls, *(*uintptr)(unsafe.Pointer(bp)), 1, (*echo_vtab)(unsafe.Pointer(pVtab)).FzTableName, -1, uintptr(0))
 45300  			if sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp))) == SQLITE_ROW {
 45301  				var rc2 int32
 45302  				var zCreateTable uintptr = sqlite3.Xsqlite3_column_text(tls, *(*uintptr)(unsafe.Pointer(bp)), 0)
 45303  				rc = sqlite3.Xsqlite3_declare_vtab(tls, db, zCreateTable)
 45304  				rc2 = sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp)))
 45305  				if rc == SQLITE_OK {
 45306  					rc = rc2
 45307  				}
 45308  			} else {
 45309  				rc = sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp)))
 45310  				if rc == SQLITE_OK {
 45311  					rc = SQLITE_ERROR
 45312  				}
 45313  			}
 45314  			if rc == SQLITE_OK {
 45315  				rc = getColumnNames(tls, db, (*echo_vtab)(unsafe.Pointer(pVtab)).FzTableName, pVtab+88, pVtab+72)
 45316  			}
 45317  			if rc == SQLITE_OK {
 45318  				rc = getIndexArray(tls, db, (*echo_vtab)(unsafe.Pointer(pVtab)).FzTableName, (*echo_vtab)(unsafe.Pointer(pVtab)).FnCol, pVtab+80)
 45319  			}
 45320  		}
 45321  	}
 45322  
 45323  	return rc
 45324  }
 45325  
 45326  func echoDestructor(tls *libc.TLS, pVtab uintptr) int32 {
 45327  	var p uintptr = pVtab
 45328  	sqlite3.Xsqlite3_free(tls, (*echo_vtab)(unsafe.Pointer(p)).FaIndex)
 45329  	sqlite3.Xsqlite3_free(tls, (*echo_vtab)(unsafe.Pointer(p)).FaCol)
 45330  	sqlite3.Xsqlite3_free(tls, (*echo_vtab)(unsafe.Pointer(p)).FzThis)
 45331  	sqlite3.Xsqlite3_free(tls, (*echo_vtab)(unsafe.Pointer(p)).FzTableName)
 45332  	sqlite3.Xsqlite3_free(tls, (*echo_vtab)(unsafe.Pointer(p)).FzLogName)
 45333  	sqlite3.Xsqlite3_free(tls, p)
 45334  	return 0
 45335  }
 45336  
 45337  type EchoModule1 = struct {
 45338  	Finterp uintptr
 45339  	Fdb     uintptr
 45340  }
 45341  
 45342  type EchoModule = EchoModule1
 45343  
 45344  func echoConstructor(tls *libc.TLS, db uintptr, pAux uintptr, argc int32, argv uintptr, ppVtab uintptr, pzErr uintptr) int32 {
 45345  	bp := tls.Alloc(32)
 45346  	defer tls.Free(32)
 45347  
 45348  	var rc int32
 45349  	var i int32
 45350  	var pVtab uintptr
 45351  
 45352  	pVtab = sqlite3.Xsqlite3MallocZero(tls, uint64(unsafe.Sizeof(echo_vtab{})))
 45353  	if !(pVtab != 0) {
 45354  		return SQLITE_NOMEM
 45355  	}
 45356  	(*echo_vtab)(unsafe.Pointer(pVtab)).Finterp = (*EchoModule)(unsafe.Pointer(pAux)).Finterp
 45357  	(*echo_vtab)(unsafe.Pointer(pVtab)).Fdb = db
 45358  
 45359  	(*echo_vtab)(unsafe.Pointer(pVtab)).FzThis = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp, *(*uintptr)(unsafe.Pointer(argv + 2*8))))
 45360  	if !(int32((*echo_vtab)(unsafe.Pointer(pVtab)).FzThis) != 0) {
 45361  		echoDestructor(tls, pVtab)
 45362  		return SQLITE_NOMEM
 45363  	}
 45364  
 45365  	if argc > 3 {
 45366  		(*echo_vtab)(unsafe.Pointer(pVtab)).FzTableName = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp+8, *(*uintptr)(unsafe.Pointer(argv + 3*8))))
 45367  		dequoteString(tls, (*echo_vtab)(unsafe.Pointer(pVtab)).FzTableName)
 45368  		if (*echo_vtab)(unsafe.Pointer(pVtab)).FzTableName != 0 && int32(*(*int8)(unsafe.Pointer((*echo_vtab)(unsafe.Pointer(pVtab)).FzTableName))) == '*' {
 45369  			var z uintptr = sqlite3.Xsqlite3_mprintf(tls, ts+27444, libc.VaList(bp+16, *(*uintptr)(unsafe.Pointer(argv + 2*8)), (*echo_vtab)(unsafe.Pointer(pVtab)).FzTableName+1))
 45370  			sqlite3.Xsqlite3_free(tls, (*echo_vtab)(unsafe.Pointer(pVtab)).FzTableName)
 45371  			(*echo_vtab)(unsafe.Pointer(pVtab)).FzTableName = z
 45372  			(*echo_vtab)(unsafe.Pointer(pVtab)).FisPattern = 1
 45373  		}
 45374  		if !(int32((*echo_vtab)(unsafe.Pointer(pVtab)).FzTableName) != 0) {
 45375  			echoDestructor(tls, pVtab)
 45376  			return SQLITE_NOMEM
 45377  		}
 45378  	}
 45379  
 45380  	for i = 0; i < argc; i++ {
 45381  		appendToEchoModule(tls, (*echo_vtab)(unsafe.Pointer(pVtab)).Finterp, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8)))
 45382  	}
 45383  
 45384  	rc = echoDeclareVtab(tls, pVtab, db)
 45385  	if rc != SQLITE_OK {
 45386  		echoDestructor(tls, pVtab)
 45387  		return rc
 45388  	}
 45389  
 45390  	*(*uintptr)(unsafe.Pointer(ppVtab)) = pVtab
 45391  	return SQLITE_OK
 45392  }
 45393  
 45394  func echoCreate(tls *libc.TLS, db uintptr, pAux uintptr, argc int32, argv uintptr, ppVtab uintptr, pzErr uintptr) int32 {
 45395  	bp := tls.Alloc(24)
 45396  	defer tls.Free(24)
 45397  
 45398  	var rc int32 = SQLITE_OK
 45399  	appendToEchoModule(tls, (*EchoModule)(unsafe.Pointer(pAux)).Finterp, ts+27449)
 45400  	rc = echoConstructor(tls, db, pAux, argc, argv, ppVtab, pzErr)
 45401  
 45402  	if rc == SQLITE_OK && argc == 5 {
 45403  		var zSql uintptr
 45404  		var pVtab uintptr = *(*uintptr)(unsafe.Pointer(ppVtab))
 45405  		(*echo_vtab)(unsafe.Pointer(pVtab)).FzLogName = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp, *(*uintptr)(unsafe.Pointer(argv + 4*8))))
 45406  		zSql = sqlite3.Xsqlite3_mprintf(tls, ts+27457, libc.VaList(bp+8, (*echo_vtab)(unsafe.Pointer(pVtab)).FzLogName))
 45407  		rc = sqlite3.Xsqlite3_exec(tls, db, zSql, uintptr(0), uintptr(0), uintptr(0))
 45408  		sqlite3.Xsqlite3_free(tls, zSql)
 45409  		if rc != SQLITE_OK {
 45410  			*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp+16, sqlite3.Xsqlite3_errmsg(tls, db)))
 45411  		}
 45412  	}
 45413  
 45414  	if *(*uintptr)(unsafe.Pointer(ppVtab)) != 0 && rc != SQLITE_OK {
 45415  		echoDestructor(tls, *(*uintptr)(unsafe.Pointer(ppVtab)))
 45416  		*(*uintptr)(unsafe.Pointer(ppVtab)) = uintptr(0)
 45417  	}
 45418  
 45419  	if rc == SQLITE_OK {
 45420  		(*echo_vtab)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(ppVtab)))).FinTransaction = 1
 45421  	}
 45422  
 45423  	return rc
 45424  }
 45425  
 45426  func echoConnect(tls *libc.TLS, db uintptr, pAux uintptr, argc int32, argv uintptr, ppVtab uintptr, pzErr uintptr) int32 {
 45427  	appendToEchoModule(tls, (*EchoModule)(unsafe.Pointer(pAux)).Finterp, ts+27481)
 45428  	return echoConstructor(tls, db, pAux, argc, argv, ppVtab, pzErr)
 45429  }
 45430  
 45431  func echoDisconnect(tls *libc.TLS, pVtab uintptr) int32 {
 45432  	appendToEchoModule(tls, (*echo_vtab)(unsafe.Pointer(pVtab)).Finterp, ts+27490)
 45433  	return echoDestructor(tls, pVtab)
 45434  }
 45435  
 45436  func echoDestroy(tls *libc.TLS, pVtab uintptr) int32 {
 45437  	bp := tls.Alloc(8)
 45438  	defer tls.Free(8)
 45439  
 45440  	var rc int32 = SQLITE_OK
 45441  	var p uintptr = pVtab
 45442  	appendToEchoModule(tls, (*echo_vtab)(unsafe.Pointer(pVtab)).Finterp, ts+27502)
 45443  
 45444  	if p != 0 && (*echo_vtab)(unsafe.Pointer(p)).FzLogName != 0 {
 45445  		var zSql uintptr
 45446  		zSql = sqlite3.Xsqlite3_mprintf(tls, ts+27511, libc.VaList(bp, (*echo_vtab)(unsafe.Pointer(p)).FzLogName))
 45447  		rc = sqlite3.Xsqlite3_exec(tls, (*echo_vtab)(unsafe.Pointer(p)).Fdb, zSql, uintptr(0), uintptr(0), uintptr(0))
 45448  		sqlite3.Xsqlite3_free(tls, zSql)
 45449  	}
 45450  
 45451  	if rc == SQLITE_OK {
 45452  		rc = echoDestructor(tls, pVtab)
 45453  	}
 45454  	return rc
 45455  }
 45456  
 45457  func echoOpen(tls *libc.TLS, pVTab uintptr, ppCursor uintptr) int32 {
 45458  	var pCur uintptr
 45459  	if simulateVtabError(tls, pVTab, ts+27525) != 0 {
 45460  		return SQLITE_ERROR
 45461  	}
 45462  	pCur = sqlite3.Xsqlite3MallocZero(tls, uint64(unsafe.Sizeof(echo_cursor{})))
 45463  	*(*uintptr)(unsafe.Pointer(ppCursor)) = pCur
 45464  	return func() int32 {
 45465  		if pCur != 0 {
 45466  			return SQLITE_OK
 45467  		}
 45468  		return SQLITE_NOMEM
 45469  	}()
 45470  }
 45471  
 45472  func echoClose(tls *libc.TLS, cur uintptr) int32 {
 45473  	var rc int32
 45474  	var pCur uintptr = cur
 45475  	var pStmt uintptr = (*echo_cursor)(unsafe.Pointer(pCur)).FpStmt
 45476  	(*echo_cursor)(unsafe.Pointer(pCur)).FpStmt = uintptr(0)
 45477  	sqlite3.Xsqlite3_free(tls, pCur)
 45478  	rc = sqlite3.Xsqlite3_finalize(tls, pStmt)
 45479  	return rc
 45480  }
 45481  
 45482  func echoEof(tls *libc.TLS, cur uintptr) int32 {
 45483  	return func() int32 {
 45484  		if (*echo_cursor)(unsafe.Pointer(cur)).FpStmt != 0 {
 45485  			return 0
 45486  		}
 45487  		return 1
 45488  	}()
 45489  }
 45490  
 45491  func echoNext(tls *libc.TLS, cur uintptr) int32 {
 45492  	var rc int32 = SQLITE_OK
 45493  	var pCur uintptr = cur
 45494  
 45495  	if simulateVtabError(tls, (*sqlite3_vtab_cursor)(unsafe.Pointer(cur)).FpVtab, ts+27531) != 0 {
 45496  		return SQLITE_ERROR
 45497  	}
 45498  
 45499  	if (*echo_cursor)(unsafe.Pointer(pCur)).FpStmt != 0 {
 45500  		rc = sqlite3.Xsqlite3_step(tls, (*echo_cursor)(unsafe.Pointer(pCur)).FpStmt)
 45501  		if rc == SQLITE_ROW {
 45502  			rc = SQLITE_OK
 45503  		} else {
 45504  			rc = sqlite3.Xsqlite3_finalize(tls, (*echo_cursor)(unsafe.Pointer(pCur)).FpStmt)
 45505  			(*echo_cursor)(unsafe.Pointer(pCur)).FpStmt = uintptr(0)
 45506  		}
 45507  	}
 45508  
 45509  	return rc
 45510  }
 45511  
 45512  func echoColumn(tls *libc.TLS, cur uintptr, ctx uintptr, i int32) int32 {
 45513  	var iCol int32 = i + 1
 45514  	var pStmt uintptr = (*echo_cursor)(unsafe.Pointer(cur)).FpStmt
 45515  
 45516  	if simulateVtabError(tls, (*sqlite3_vtab_cursor)(unsafe.Pointer(cur)).FpVtab, ts+27537) != 0 {
 45517  		return SQLITE_ERROR
 45518  	}
 45519  
 45520  	if !(pStmt != 0) {
 45521  		sqlite3.Xsqlite3_result_null(tls, ctx)
 45522  	} else {
 45523  		sqlite3.Xsqlite3_result_value(tls, ctx, sqlite3.Xsqlite3_column_value(tls, pStmt, iCol))
 45524  	}
 45525  	return SQLITE_OK
 45526  }
 45527  
 45528  func echoRowid(tls *libc.TLS, cur uintptr, pRowid uintptr) int32 {
 45529  	var pStmt uintptr = (*echo_cursor)(unsafe.Pointer(cur)).FpStmt
 45530  
 45531  	if simulateVtabError(tls, (*sqlite3_vtab_cursor)(unsafe.Pointer(cur)).FpVtab, ts+2304) != 0 {
 45532  		return SQLITE_ERROR
 45533  	}
 45534  
 45535  	*(*sqlite_int64)(unsafe.Pointer(pRowid)) = sqlite3.Xsqlite3_column_int64(tls, pStmt, 0)
 45536  	return SQLITE_OK
 45537  }
 45538  
 45539  func hashString(tls *libc.TLS, zString uintptr) int32 {
 45540  	var val u32 = u32(0)
 45541  	var ii int32
 45542  	for ii = 0; *(*int8)(unsafe.Pointer(zString + uintptr(ii))) != 0; ii++ {
 45543  		val = val<<3 + u32(int32(*(*int8)(unsafe.Pointer(zString + uintptr(ii)))))
 45544  	}
 45545  	return int32(val & u32(0x7fffffff))
 45546  }
 45547  
 45548  func echoFilter(tls *libc.TLS, pVtabCursor uintptr, idxNum int32, idxStr uintptr, argc int32, argv uintptr) int32 {
 45549  	var rc int32
 45550  	var i int32
 45551  
 45552  	var pCur uintptr = pVtabCursor
 45553  	var pVtab uintptr = (*sqlite3_vtab_cursor)(unsafe.Pointer(pVtabCursor)).FpVtab
 45554  	var db uintptr = (*echo_vtab)(unsafe.Pointer(pVtab)).Fdb
 45555  
 45556  	if simulateVtabError(tls, pVtab, ts+27545) != 0 {
 45557  		return SQLITE_ERROR
 45558  	}
 45559  
 45560  	appendToEchoModule(tls, (*echo_vtab)(unsafe.Pointer(pVtab)).Finterp, ts+27545)
 45561  	appendToEchoModule(tls, (*echo_vtab)(unsafe.Pointer(pVtab)).Finterp, idxStr)
 45562  	for i = 0; i < argc; i++ {
 45563  		appendToEchoModule(tls, (*echo_vtab)(unsafe.Pointer(pVtab)).Finterp, sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8))))
 45564  	}
 45565  
 45566  	sqlite3.Xsqlite3_finalize(tls, (*echo_cursor)(unsafe.Pointer(pCur)).FpStmt)
 45567  	(*echo_cursor)(unsafe.Pointer(pCur)).FpStmt = uintptr(0)
 45568  
 45569  	rc = sqlite3.Xsqlite3_prepare(tls, db, idxStr, -1, pCur+8, uintptr(0))
 45570  
 45571  	for i = 0; rc == SQLITE_OK && i < argc; i++ {
 45572  		rc = sqlite3.Xsqlite3_bind_value(tls, (*echo_cursor)(unsafe.Pointer(pCur)).FpStmt, i+1, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8)))
 45573  	}
 45574  
 45575  	if rc == SQLITE_OK {
 45576  		rc = echoNext(tls, pVtabCursor)
 45577  	}
 45578  
 45579  	return rc
 45580  }
 45581  
 45582  func string_concat(tls *libc.TLS, pzStr uintptr, zAppend uintptr, doFree int32, pRc uintptr) {
 45583  	bp := tls.Alloc(24)
 45584  	defer tls.Free(24)
 45585  
 45586  	var zIn uintptr = *(*uintptr)(unsafe.Pointer(pzStr))
 45587  	if !(zAppend != 0) && doFree != 0 && *(*int32)(unsafe.Pointer(pRc)) == SQLITE_OK {
 45588  		*(*int32)(unsafe.Pointer(pRc)) = SQLITE_NOMEM
 45589  	}
 45590  	if *(*int32)(unsafe.Pointer(pRc)) != SQLITE_OK {
 45591  		sqlite3.Xsqlite3_free(tls, zIn)
 45592  		zIn = uintptr(0)
 45593  	} else {
 45594  		if zIn != 0 {
 45595  			var zTemp uintptr = zIn
 45596  			zIn = sqlite3.Xsqlite3_mprintf(tls, ts+27444, libc.VaList(bp, zIn, zAppend))
 45597  			sqlite3.Xsqlite3_free(tls, zTemp)
 45598  		} else {
 45599  			zIn = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp+16, zAppend))
 45600  		}
 45601  		if !(zIn != 0) {
 45602  			*(*int32)(unsafe.Pointer(pRc)) = SQLITE_NOMEM
 45603  		}
 45604  	}
 45605  	*(*uintptr)(unsafe.Pointer(pzStr)) = zIn
 45606  	if doFree != 0 {
 45607  		sqlite3.Xsqlite3_free(tls, zAppend)
 45608  	}
 45609  }
 45610  
 45611  func echoSelectList(tls *libc.TLS, pTab uintptr, pIdxInfo uintptr) uintptr {
 45612  	bp := tls.Alloc(24)
 45613  	defer tls.Free(24)
 45614  
 45615  	var zRet uintptr = uintptr(0)
 45616  	if sqlite3.Xsqlite3_libversion_number(tls) < 3010000 {
 45617  		zRet = sqlite3.Xsqlite3_mprintf(tls, ts+27553, 0)
 45618  	} else {
 45619  		var i int32
 45620  		for i = 0; i < (*echo_vtab)(unsafe.Pointer(pTab)).FnCol; i++ {
 45621  			if (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FcolUsed&(uint64(1)<<func() int32 {
 45622  				if i >= 63 {
 45623  					return 63
 45624  				}
 45625  				return i
 45626  			}()) != 0 {
 45627  				zRet = sqlite3.Xsqlite3_mprintf(tls, ts+27557, libc.VaList(bp, zRet, *(*uintptr)(unsafe.Pointer((*echo_vtab)(unsafe.Pointer(pTab)).FaCol + uintptr(i)*8))))
 45628  			} else {
 45629  				zRet = sqlite3.Xsqlite3_mprintf(tls, ts+27564, libc.VaList(bp+16, zRet))
 45630  			}
 45631  			if !(zRet != 0) {
 45632  				break
 45633  			}
 45634  		}
 45635  	}
 45636  	return zRet
 45637  }
 45638  
 45639  func echoBestIndex(tls *libc.TLS, tab uintptr, pIdxInfo uintptr) int32 {
 45640  	bp := tls.Alloc(100)
 45641  	defer tls.Free(100)
 45642  
 45643  	var ii int32
 45644  	*(*uintptr)(unsafe.Pointer(bp + 88)) = uintptr(0)
 45645  	var zCol uintptr = uintptr(0)
 45646  	var zNew uintptr
 45647  	var nArg int32 = 0
 45648  	var zSep uintptr = ts + 9392
 45649  	var pVtab uintptr = tab
 45650  	*(*uintptr)(unsafe.Pointer(bp + 80)) = uintptr(0)
 45651  	var interp uintptr = (*echo_vtab)(unsafe.Pointer(pVtab)).Finterp
 45652  
 45653  	var nRow int32 = 0
 45654  	var useIdx int32 = 0
 45655  	*(*int32)(unsafe.Pointer(bp + 96)) = SQLITE_OK
 45656  	var useCost int32 = 0
 45657  	var cost float64 = float64(0)
 45658  	var isIgnoreUsable int32 = 0
 45659  	if tcl.XTcl_GetVar(tls, interp, ts+27573, TCL_GLOBAL_ONLY) != 0 {
 45660  		isIgnoreUsable = 1
 45661  	}
 45662  
 45663  	if simulateVtabError(tls, pVtab, ts+27599) != 0 {
 45664  		return SQLITE_ERROR
 45665  	}
 45666  
 45667  	if tcl.XTcl_GetVar(tls, interp, ts+27610, TCL_GLOBAL_ONLY) != 0 {
 45668  		cost = libc.Xatof(tls, tcl.XTcl_GetVar(tls, interp, ts+27610, TCL_GLOBAL_ONLY))
 45669  		useCost = 1
 45670  	} else {
 45671  		*(*uintptr)(unsafe.Pointer(bp + 88)) = sqlite3.Xsqlite3_mprintf(tls, ts+27627, libc.VaList(bp, (*echo_vtab)(unsafe.Pointer(pVtab)).FzTableName))
 45672  		if !(*(*uintptr)(unsafe.Pointer(bp + 88)) != 0) {
 45673  			return SQLITE_NOMEM
 45674  		}
 45675  		*(*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))
 45676  		sqlite3.Xsqlite3_free(tls, *(*uintptr)(unsafe.Pointer(bp + 88)))
 45677  		if *(*int32)(unsafe.Pointer(bp + 96)) != SQLITE_OK {
 45678  			return *(*int32)(unsafe.Pointer(bp + 96))
 45679  		}
 45680  		sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp + 80)))
 45681  		nRow = sqlite3.Xsqlite3_column_int(tls, *(*uintptr)(unsafe.Pointer(bp + 80)), 0)
 45682  		*(*int32)(unsafe.Pointer(bp + 96)) = sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 80)))
 45683  		if *(*int32)(unsafe.Pointer(bp + 96)) != SQLITE_OK {
 45684  			return *(*int32)(unsafe.Pointer(bp + 96))
 45685  		}
 45686  	}
 45687  
 45688  	zCol = echoSelectList(tls, pVtab, pIdxInfo)
 45689  	if !(zCol != 0) {
 45690  		return SQLITE_NOMEM
 45691  	}
 45692  	*(*uintptr)(unsafe.Pointer(bp + 88)) = sqlite3.Xsqlite3_mprintf(tls, ts+27651, libc.VaList(bp+8, zCol, (*echo_vtab)(unsafe.Pointer(pVtab)).FzTableName))
 45693  	if !(*(*uintptr)(unsafe.Pointer(bp + 88)) != 0) {
 45694  		return SQLITE_NOMEM
 45695  	}
 45696  
 45697  	for ii = 0; ii < (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnConstraint; ii++ {
 45698  		var pConstraint uintptr
 45699  		var pUsage uintptr
 45700  		var iCol int32
 45701  
 45702  		pConstraint = (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint + uintptr(ii)*12
 45703  		pUsage = (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(ii)*8
 45704  
 45705  		if !(isIgnoreUsable != 0) && !(int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fusable) != 0) {
 45706  			continue
 45707  		}
 45708  
 45709  		iCol = (*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).FiColumn
 45710  		if iCol < 0 || *(*int32)(unsafe.Pointer((*echo_vtab)(unsafe.Pointer(pVtab)).FaIndex + uintptr(iCol)*4)) != 0 {
 45711  			var zNewCol uintptr
 45712  			if iCol >= 0 {
 45713  				zNewCol = *(*uintptr)(unsafe.Pointer((*echo_vtab)(unsafe.Pointer(pVtab)).FaCol + uintptr(iCol)*8))
 45714  			} else {
 45715  				zNewCol = ts + 6427
 45716  			}
 45717  			var zOp uintptr = uintptr(0)
 45718  			useIdx = 1
 45719  			switch int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) {
 45720  			case SQLITE_INDEX_CONSTRAINT_EQ:
 45721  				zOp = ts + 27674
 45722  				break
 45723  				fallthrough
 45724  			case SQLITE_INDEX_CONSTRAINT_LT:
 45725  				zOp = ts + 27676
 45726  				break
 45727  				fallthrough
 45728  			case SQLITE_INDEX_CONSTRAINT_GT:
 45729  				zOp = ts + 27678
 45730  				break
 45731  				fallthrough
 45732  			case SQLITE_INDEX_CONSTRAINT_LE:
 45733  				zOp = ts + 27680
 45734  				break
 45735  				fallthrough
 45736  			case SQLITE_INDEX_CONSTRAINT_GE:
 45737  				zOp = ts + 27683
 45738  				break
 45739  				fallthrough
 45740  			case SQLITE_INDEX_CONSTRAINT_MATCH:
 45741  				zOp = ts + 27686
 45742  				break
 45743  				fallthrough
 45744  			case SQLITE_INDEX_CONSTRAINT_LIKE:
 45745  				zOp = ts + 27691
 45746  				break
 45747  				fallthrough
 45748  			case SQLITE_INDEX_CONSTRAINT_GLOB:
 45749  				zOp = ts + 27696
 45750  				break
 45751  				fallthrough
 45752  			case SQLITE_INDEX_CONSTRAINT_REGEXP:
 45753  				zOp = ts + 6831
 45754  				break
 45755  			}
 45756  			if zOp != 0 {
 45757  				if int32(*(*int8)(unsafe.Pointer(zOp))) == 'L' {
 45758  					zNew = sqlite3.Xsqlite3_mprintf(tls, ts+27701,
 45759  						libc.VaList(bp+24, zSep, zNewCol))
 45760  				} else {
 45761  					zNew = sqlite3.Xsqlite3_mprintf(tls, ts+27736, libc.VaList(bp+40, zSep, zNewCol, zOp))
 45762  				}
 45763  				string_concat(tls, bp+88, zNew, 1, bp+96)
 45764  				zSep = ts + 9419
 45765  				(*sqlite3_index_constraint_usage)(unsafe.Pointer(pUsage)).FargvIndex = libc.PreIncInt32(&nArg, 1)
 45766  				(*sqlite3_index_constraint_usage)(unsafe.Pointer(pUsage)).Fomit = uint8(1)
 45767  			}
 45768  		}
 45769  	}
 45770  
 45771  	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) {
 45772  		var iCol int32 = (*sqlite3_index_orderby)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaOrderBy)).FiColumn
 45773  		var zNewCol uintptr
 45774  		if iCol >= 0 {
 45775  			zNewCol = *(*uintptr)(unsafe.Pointer((*echo_vtab)(unsafe.Pointer(pVtab)).FaCol + uintptr(iCol)*8))
 45776  		} else {
 45777  			zNewCol = ts + 6427
 45778  		}
 45779  		var zDir uintptr
 45780  		if (*sqlite3_index_orderby)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaOrderBy)).Fdesc != 0 {
 45781  			zDir = ts + 27748
 45782  		} else {
 45783  			zDir = ts + 27753
 45784  		}
 45785  		zNew = sqlite3.Xsqlite3_mprintf(tls, ts+27757, libc.VaList(bp+64, zNewCol, zDir))
 45786  		string_concat(tls, bp+88, zNew, 1, bp+96)
 45787  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).ForderByConsumed = 1
 45788  	}
 45789  
 45790  	appendToEchoModule(tls, (*echo_vtab)(unsafe.Pointer(pVtab)).Finterp, ts+27599)
 45791  
 45792  	appendToEchoModule(tls, (*echo_vtab)(unsafe.Pointer(pVtab)).Finterp, *(*uintptr)(unsafe.Pointer(bp + 88)))
 45793  
 45794  	if !(*(*uintptr)(unsafe.Pointer(bp + 88)) != 0) {
 45795  		return *(*int32)(unsafe.Pointer(bp + 96))
 45796  	}
 45797  	(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxNum = hashString(tls, *(*uintptr)(unsafe.Pointer(bp + 88)))
 45798  	(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxStr = *(*uintptr)(unsafe.Pointer(bp + 88))
 45799  	(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FneedToFreeIdxStr = 1
 45800  	if useCost != 0 {
 45801  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = cost
 45802  	} else if useIdx != 0 {
 45803  		for ii = 0; uint64(ii) < uint64(unsafe.Sizeof(int32(0)))*uint64(8)-uint64(1); ii++ {
 45804  			if nRow&(int32(1)<<ii) != 0 {
 45805  				(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = float64(ii)
 45806  			}
 45807  		}
 45808  	} else {
 45809  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = float64(nRow)
 45810  	}
 45811  	return *(*int32)(unsafe.Pointer(bp + 96))
 45812  }
 45813  
 45814  func echoUpdate(tls *libc.TLS, tab uintptr, nData int32, apData uintptr, pRowid uintptr) int32 {
 45815  	bp := tls.Alloc(136)
 45816  	defer tls.Free(136)
 45817  
 45818  	var pVtab uintptr = tab
 45819  	var db uintptr = (*echo_vtab)(unsafe.Pointer(pVtab)).Fdb
 45820  	*(*int32)(unsafe.Pointer(bp + 104)) = SQLITE_OK
 45821  
 45822  	*(*uintptr)(unsafe.Pointer(bp + 128)) = uintptr(0)
 45823  	*(*uintptr)(unsafe.Pointer(bp + 96)) = uintptr(0)
 45824  	var bindArgZero int32 = 0
 45825  	var bindArgOne int32 = 0
 45826  	var i int32
 45827  
 45828  	if simulateVtabError(tls, pVtab, ts+27773) != 0 {
 45829  		return SQLITE_ERROR
 45830  	}
 45831  
 45832  	if nData > 1 && sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(apData))) == SQLITE_INTEGER {
 45833  		var zSep uintptr = ts + 27781
 45834  		*(*uintptr)(unsafe.Pointer(bp + 96)) = sqlite3.Xsqlite3_mprintf(tls, ts+27786, libc.VaList(bp, (*echo_vtab)(unsafe.Pointer(pVtab)).FzTableName))
 45835  		if !(*(*uintptr)(unsafe.Pointer(bp + 96)) != 0) {
 45836  			*(*int32)(unsafe.Pointer(bp + 104)) = SQLITE_NOMEM
 45837  		}
 45838  
 45839  		bindArgOne = libc.Bool32(*(*uintptr)(unsafe.Pointer(apData + 1*8)) != 0 && sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(apData + 1*8))) == SQLITE_INTEGER)
 45840  		bindArgZero = 1
 45841  
 45842  		if bindArgOne != 0 {
 45843  			string_concat(tls, bp+96, ts+27796, 0, bp+104)
 45844  			zSep = ts + 4758
 45845  		}
 45846  		for i = 2; i < nData; i++ {
 45847  			if *(*uintptr)(unsafe.Pointer(apData + uintptr(i)*8)) == uintptr(0) {
 45848  				continue
 45849  			}
 45850  			string_concat(tls, bp+96, sqlite3.Xsqlite3_mprintf(tls,
 45851  				ts+27811, libc.VaList(bp+8, zSep, *(*uintptr)(unsafe.Pointer((*echo_vtab)(unsafe.Pointer(pVtab)).FaCol + uintptr(i-2)*8)), i)), 1, bp+104)
 45852  			zSep = ts + 4758
 45853  		}
 45854  		string_concat(tls, bp+96, sqlite3.Xsqlite3_mprintf(tls, ts+27821, libc.VaList(bp+32, nData)), 1, bp+104)
 45855  	} else if nData == 1 && sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(apData))) == SQLITE_INTEGER {
 45856  		*(*uintptr)(unsafe.Pointer(bp + 96)) = sqlite3.Xsqlite3_mprintf(tls, ts+27838, libc.VaList(bp+40, (*echo_vtab)(unsafe.Pointer(pVtab)).FzTableName))
 45857  		if !(*(*uintptr)(unsafe.Pointer(bp + 96)) != 0) {
 45858  			*(*int32)(unsafe.Pointer(bp + 104)) = SQLITE_NOMEM
 45859  		}
 45860  		bindArgZero = 1
 45861  	} else if nData > 2 && sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(apData))) == SQLITE_NULL {
 45862  		var ii int32
 45863  		*(*uintptr)(unsafe.Pointer(bp + 112)) = uintptr(0)
 45864  		*(*uintptr)(unsafe.Pointer(bp + 120)) = uintptr(0)
 45865  
 45866  		*(*uintptr)(unsafe.Pointer(bp + 112)) = sqlite3.Xsqlite3_mprintf(tls, ts+27870, libc.VaList(bp+48, (*echo_vtab)(unsafe.Pointer(pVtab)).FzTableName))
 45867  		if !(*(*uintptr)(unsafe.Pointer(bp + 112)) != 0) {
 45868  			*(*int32)(unsafe.Pointer(bp + 104)) = SQLITE_NOMEM
 45869  		}
 45870  		if sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(apData + 1*8))) == SQLITE_INTEGER {
 45871  			bindArgOne = 1
 45872  			*(*uintptr)(unsafe.Pointer(bp + 120)) = sqlite3.Xsqlite3_mprintf(tls, ts+3405, 0)
 45873  			string_concat(tls, bp+112, ts+6427, 0, bp+104)
 45874  		}
 45875  
 45876  		for ii = 2; ii < nData; ii++ {
 45877  			string_concat(tls, bp+112,
 45878  				sqlite3.Xsqlite3_mprintf(tls, ts+27887, libc.VaList(bp+56, func() uintptr {
 45879  					if *(*uintptr)(unsafe.Pointer(bp + 120)) != 0 {
 45880  						return ts + 97
 45881  					}
 45882  					return ts + 584
 45883  				}(), *(*uintptr)(unsafe.Pointer((*echo_vtab)(unsafe.Pointer(pVtab)).FaCol + uintptr(ii-2)*8)))), 1, bp+104)
 45884  			string_concat(tls, bp+120,
 45885  				sqlite3.Xsqlite3_mprintf(tls, ts+27892, libc.VaList(bp+72, func() uintptr {
 45886  					if *(*uintptr)(unsafe.Pointer(bp + 120)) != 0 {
 45887  						return ts + 97
 45888  					}
 45889  					return ts + 584
 45890  				}(), ii)), 1, bp+104)
 45891  		}
 45892  
 45893  		string_concat(tls, bp+96, *(*uintptr)(unsafe.Pointer(bp + 112)), 1, bp+104)
 45894  		string_concat(tls, bp+96, ts+27898, 0, bp+104)
 45895  		string_concat(tls, bp+96, *(*uintptr)(unsafe.Pointer(bp + 120)), 1, bp+104)
 45896  		string_concat(tls, bp+96, ts+585, 0, bp+104)
 45897  	} else {
 45898  		return SQLITE_ERROR
 45899  	}
 45900  
 45901  	if *(*int32)(unsafe.Pointer(bp + 104)) == SQLITE_OK {
 45902  		*(*int32)(unsafe.Pointer(bp + 104)) = sqlite3.Xsqlite3_prepare(tls, db, *(*uintptr)(unsafe.Pointer(bp + 96)), -1, bp+128, uintptr(0))
 45903  	}
 45904  
 45905  	sqlite3.Xsqlite3_free(tls, *(*uintptr)(unsafe.Pointer(bp + 96)))
 45906  	if *(*int32)(unsafe.Pointer(bp + 104)) == SQLITE_OK {
 45907  		if bindArgZero != 0 {
 45908  			sqlite3.Xsqlite3_bind_value(tls, *(*uintptr)(unsafe.Pointer(bp + 128)), nData, *(*uintptr)(unsafe.Pointer(apData)))
 45909  		}
 45910  		if bindArgOne != 0 {
 45911  			sqlite3.Xsqlite3_bind_value(tls, *(*uintptr)(unsafe.Pointer(bp + 128)), 1, *(*uintptr)(unsafe.Pointer(apData + 1*8)))
 45912  		}
 45913  		for i = 2; i < nData && *(*int32)(unsafe.Pointer(bp + 104)) == SQLITE_OK; i++ {
 45914  			if *(*uintptr)(unsafe.Pointer(apData + uintptr(i)*8)) != 0 {
 45915  				*(*int32)(unsafe.Pointer(bp + 104)) = sqlite3.Xsqlite3_bind_value(tls, *(*uintptr)(unsafe.Pointer(bp + 128)), i, *(*uintptr)(unsafe.Pointer(apData + uintptr(i)*8)))
 45916  			}
 45917  		}
 45918  		if *(*int32)(unsafe.Pointer(bp + 104)) == SQLITE_OK {
 45919  			sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp + 128)))
 45920  			*(*int32)(unsafe.Pointer(bp + 104)) = sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 128)))
 45921  		} else {
 45922  			sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 128)))
 45923  		}
 45924  	}
 45925  
 45926  	if pRowid != 0 && *(*int32)(unsafe.Pointer(bp + 104)) == SQLITE_OK {
 45927  		*(*sqlite_int64)(unsafe.Pointer(pRowid)) = sqlite3.Xsqlite3_last_insert_rowid(tls, db)
 45928  	}
 45929  	if *(*int32)(unsafe.Pointer(bp + 104)) != SQLITE_OK {
 45930  		(*sqlite3_vtab)(unsafe.Pointer(tab)).FzErrMsg = sqlite3.Xsqlite3_mprintf(tls, ts+27287, libc.VaList(bp+88, sqlite3.Xsqlite3_errmsg(tls, db)))
 45931  	}
 45932  
 45933  	return *(*int32)(unsafe.Pointer(bp + 104))
 45934  }
 45935  
 45936  func echoTransactionCall(tls *libc.TLS, tab uintptr, zCall uintptr) int32 {
 45937  	bp := tls.Alloc(8)
 45938  	defer tls.Free(8)
 45939  
 45940  	var z uintptr
 45941  	var pVtab uintptr = tab
 45942  	z = sqlite3.Xsqlite3_mprintf(tls, ts+27908, libc.VaList(bp, (*echo_vtab)(unsafe.Pointer(pVtab)).FzTableName))
 45943  	if z == uintptr(0) {
 45944  		return SQLITE_NOMEM
 45945  	}
 45946  	appendToEchoModule(tls, (*echo_vtab)(unsafe.Pointer(pVtab)).Finterp, zCall)
 45947  	appendToEchoModule(tls, (*echo_vtab)(unsafe.Pointer(pVtab)).Finterp, z)
 45948  	sqlite3.Xsqlite3_free(tls, z)
 45949  	return SQLITE_OK
 45950  }
 45951  
 45952  func echoBegin(tls *libc.TLS, tab uintptr) int32 {
 45953  	var rc int32
 45954  	var pVtab uintptr = tab
 45955  	var interp uintptr = (*echo_vtab)(unsafe.Pointer(pVtab)).Finterp
 45956  	var zVal uintptr
 45957  
 45958  	if simulateVtabError(tls, pVtab, ts+27917) != 0 {
 45959  		return SQLITE_ERROR
 45960  	}
 45961  
 45962  	rc = echoTransactionCall(tls, tab, ts+27917)
 45963  
 45964  	if rc == SQLITE_OK {
 45965  		zVal = tcl.XTcl_GetVar(tls, interp, ts+27924, TCL_GLOBAL_ONLY)
 45966  		if zVal != 0 && 0 == libc.Xstrcmp(tls, zVal, (*echo_vtab)(unsafe.Pointer(pVtab)).FzTableName) {
 45967  			rc = SQLITE_ERROR
 45968  		}
 45969  	}
 45970  	if rc == SQLITE_OK {
 45971  		(*echo_vtab)(unsafe.Pointer(pVtab)).FinTransaction = 1
 45972  	}
 45973  	return rc
 45974  }
 45975  
 45976  func echoSync(tls *libc.TLS, tab uintptr) int32 {
 45977  	var rc int32
 45978  	var pVtab uintptr = tab
 45979  	var interp uintptr = (*echo_vtab)(unsafe.Pointer(pVtab)).Finterp
 45980  	var zVal uintptr
 45981  
 45982  	if simulateVtabError(tls, pVtab, ts+27947) != 0 {
 45983  		return SQLITE_ERROR
 45984  	}
 45985  
 45986  	rc = echoTransactionCall(tls, tab, ts+27947)
 45987  
 45988  	if rc == SQLITE_OK {
 45989  		zVal = tcl.XTcl_GetVar(tls, interp, ts+27953, TCL_GLOBAL_ONLY)
 45990  		if zVal != 0 && 0 == libc.Xstrcmp(tls, zVal, (*echo_vtab)(unsafe.Pointer(pVtab)).FzTableName) {
 45991  			rc = -1
 45992  		}
 45993  	}
 45994  	return rc
 45995  }
 45996  
 45997  func echoCommit(tls *libc.TLS, tab uintptr) int32 {
 45998  	var pVtab uintptr = tab
 45999  	var rc int32
 46000  
 46001  	if simulateVtabError(tls, pVtab, ts+27975) != 0 {
 46002  		return SQLITE_ERROR
 46003  	}
 46004  
 46005  	sqlite3.Xsqlite3BeginBenignMalloc(tls)
 46006  	rc = echoTransactionCall(tls, tab, ts+27975)
 46007  	sqlite3.Xsqlite3EndBenignMalloc(tls)
 46008  	(*echo_vtab)(unsafe.Pointer(pVtab)).FinTransaction = 0
 46009  	return rc
 46010  }
 46011  
 46012  func echoRollback(tls *libc.TLS, tab uintptr) int32 {
 46013  	var rc int32
 46014  	var pVtab uintptr = tab
 46015  
 46016  	rc = echoTransactionCall(tls, tab, ts+27983)
 46017  	(*echo_vtab)(unsafe.Pointer(pVtab)).FinTransaction = 0
 46018  	return rc
 46019  }
 46020  
 46021  func overloadedGlobFunction(tls *libc.TLS, pContext uintptr, nArg int32, apArg uintptr) {
 46022  	bp := tls.Alloc(216)
 46023  	defer tls.Free(216)
 46024  
 46025  	var interp uintptr = sqlite3.Xsqlite3_user_data(tls, pContext)
 46026  
 46027  	var i int32
 46028  	var rc int32
 46029  	tcl.XTcl_DStringInit(tls, bp)
 46030  	tcl.XTcl_DStringAppendElement(tls, bp, ts+27993)
 46031  	for i = 0; i < nArg; i++ {
 46032  		tcl.XTcl_DStringAppendElement(tls, bp, sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(apArg + uintptr(i)*8))))
 46033  	}
 46034  	rc = tcl.XTcl_Eval(tls, interp, (*Tcl_DString)(unsafe.Pointer(bp)).Fstring)
 46035  	tcl.XTcl_DStringFree(tls, bp)
 46036  	if rc != 0 {
 46037  		sqlite3.Xsqlite3_result_error(tls, pContext, tcl.XTcl_GetStringResult(tls, interp), -1)
 46038  	} else {
 46039  		sqlite3.Xsqlite3_result_text(tls, pContext, tcl.XTcl_GetStringResult(tls, interp),
 46040  			-1, libc.UintptrFromInt32(-1))
 46041  	}
 46042  	tcl.XTcl_ResetResult(tls, interp)
 46043  }
 46044  
 46045  func echoFindFunction(tls *libc.TLS, vtab uintptr, nArg int32, zFuncName uintptr, pxFunc uintptr, ppArg uintptr) int32 {
 46046  	bp := tls.Alloc(64)
 46047  	defer tls.Free(64)
 46048  
 46049  	var pVtab uintptr = vtab
 46050  	var interp uintptr = (*echo_vtab)(unsafe.Pointer(pVtab)).Finterp
 46051  
 46052  	if libc.Xstrcmp(tls, zFuncName, ts+27696) != 0 {
 46053  		return 0
 46054  	}
 46055  	if tcl.XTcl_GetCommandInfo(tls, interp, ts+27993, bp) == 0 {
 46056  		return 0
 46057  	}
 46058  	*(*uintptr)(unsafe.Pointer(pxFunc)) = *(*uintptr)(unsafe.Pointer(&struct {
 46059  		f func(*libc.TLS, uintptr, int32, uintptr)
 46060  	}{overloadedGlobFunction}))
 46061  	*(*uintptr)(unsafe.Pointer(ppArg)) = interp
 46062  	return 1
 46063  }
 46064  
 46065  func echoRename(tls *libc.TLS, vtab uintptr, zNewName uintptr) int32 {
 46066  	bp := tls.Alloc(24)
 46067  	defer tls.Free(24)
 46068  
 46069  	var rc int32 = SQLITE_OK
 46070  	var p uintptr = vtab
 46071  
 46072  	if simulateVtabError(tls, p, ts+28014) != 0 {
 46073  		return SQLITE_ERROR
 46074  	}
 46075  
 46076  	if (*echo_vtab)(unsafe.Pointer(p)).FisPattern != 0 {
 46077  		var nThis int32 = int32(libc.Xstrlen(tls, (*echo_vtab)(unsafe.Pointer(p)).FzThis))
 46078  		var zSql uintptr = sqlite3.Xsqlite3_mprintf(tls, ts+28022,
 46079  			libc.VaList(bp, (*echo_vtab)(unsafe.Pointer(p)).FzTableName, zNewName, (*echo_vtab)(unsafe.Pointer(p)).FzTableName+uintptr(nThis)))
 46080  		rc = sqlite3.Xsqlite3_exec(tls, (*echo_vtab)(unsafe.Pointer(p)).Fdb, zSql, uintptr(0), uintptr(0), uintptr(0))
 46081  		sqlite3.Xsqlite3_free(tls, zSql)
 46082  	}
 46083  
 46084  	return rc
 46085  }
 46086  
 46087  func echoSavepoint(tls *libc.TLS, pVTab uintptr, iSavepoint int32) int32 {
 46088  	return SQLITE_OK
 46089  }
 46090  
 46091  func echoRelease(tls *libc.TLS, pVTab uintptr, iSavepoint int32) int32 {
 46092  	return SQLITE_OK
 46093  }
 46094  
 46095  func echoRollbackTo(tls *libc.TLS, pVTab uintptr, iSavepoint int32) int32 {
 46096  	return SQLITE_OK
 46097  }
 46098  
 46099  var echoModule = sqlite3_module{
 46100  	FiVersion:      1,
 46101  	FxCreate:       0,
 46102  	FxConnect:      0,
 46103  	FxBestIndex:    0,
 46104  	FxDisconnect:   0,
 46105  	FxDestroy:      0,
 46106  	FxOpen:         0,
 46107  	FxClose:        0,
 46108  	FxFilter:       0,
 46109  	FxNext:         0,
 46110  	FxEof:          0,
 46111  	FxColumn:       0,
 46112  	FxRowid:        0,
 46113  	FxUpdate:       0,
 46114  	FxBegin:        0,
 46115  	FxSync:         0,
 46116  	FxCommit:       0,
 46117  	FxRollback:     0,
 46118  	FxFindFunction: 0,
 46119  	FxRename:       0,
 46120  }
 46121  
 46122  var echoModuleV2 = sqlite3_module{
 46123  	FiVersion:      2,
 46124  	FxCreate:       0,
 46125  	FxConnect:      0,
 46126  	FxBestIndex:    0,
 46127  	FxDisconnect:   0,
 46128  	FxDestroy:      0,
 46129  	FxOpen:         0,
 46130  	FxClose:        0,
 46131  	FxFilter:       0,
 46132  	FxNext:         0,
 46133  	FxEof:          0,
 46134  	FxColumn:       0,
 46135  	FxRowid:        0,
 46136  	FxUpdate:       0,
 46137  	FxBegin:        0,
 46138  	FxSync:         0,
 46139  	FxCommit:       0,
 46140  	FxRollback:     0,
 46141  	FxFindFunction: 0,
 46142  	FxRename:       0,
 46143  	FxSavepoint:    0,
 46144  	FxRelease:      0,
 46145  	FxRollbackTo:   0,
 46146  }
 46147  
 46148  func moduleDestroy(tls *libc.TLS, p uintptr) {
 46149  	var pMod uintptr = p
 46150  	sqlite3.Xsqlite3_create_function(tls, (*EchoModule)(unsafe.Pointer(pMod)).Fdb, ts+28052,
 46151  		SQLITE_ANY, 1, uintptr(0), uintptr(0), uintptr(0), uintptr(0))
 46152  	sqlite3.Xsqlite3_free(tls, p)
 46153  }
 46154  
 46155  func register_echo_module(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 46156  	bp := tls.Alloc(8)
 46157  	defer tls.Free(8)
 46158  
 46159  	var rc int32
 46160  
 46161  	var pMod uintptr
 46162  	if objc != 2 {
 46163  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2050)
 46164  		return TCL_ERROR
 46165  	}
 46166  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 46167  		return TCL_ERROR
 46168  	}
 46169  
 46170  	pMod = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(EchoModule{})))
 46171  	(*EchoModule)(unsafe.Pointer(pMod)).Finterp = interp
 46172  	(*EchoModule)(unsafe.Pointer(pMod)).Fdb = *(*uintptr)(unsafe.Pointer(bp))
 46173  	rc = sqlite3.Xsqlite3_create_module_v2(tls,
 46174  		*(*uintptr)(unsafe.Pointer(bp)), ts+28090, uintptr(unsafe.Pointer(&echoModule)), pMod, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{moduleDestroy})))
 46175  
 46176  	if rc == SQLITE_OK {
 46177  		pMod = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(EchoModule{})))
 46178  		(*EchoModule)(unsafe.Pointer(pMod)).Finterp = interp
 46179  		(*EchoModule)(unsafe.Pointer(pMod)).Fdb = *(*uintptr)(unsafe.Pointer(bp))
 46180  		rc = sqlite3.Xsqlite3_create_module_v2(tls, *(*uintptr)(unsafe.Pointer(bp)), ts+28095,
 46181  			uintptr(unsafe.Pointer(&echoModuleV2)), pMod, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{moduleDestroy})))
 46182  	}
 46183  
 46184  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 46185  	return TCL_OK
 46186  }
 46187  
 46188  func declare_vtab(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 46189  	bp := tls.Alloc(8)
 46190  	defer tls.Free(8)
 46191  
 46192  	var rc int32
 46193  	if objc != 3 {
 46194  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+10061)
 46195  		return TCL_ERROR
 46196  	}
 46197  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 46198  		return TCL_ERROR
 46199  	}
 46200  	rc = sqlite3.Xsqlite3_declare_vtab(tls, *(*uintptr)(unsafe.Pointer(bp)), tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8))))
 46201  	if rc != SQLITE_OK {
 46202  		tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3_errmsg(tls, *(*uintptr)(unsafe.Pointer(bp))), uintptr(1))
 46203  		return TCL_ERROR
 46204  	}
 46205  	return TCL_OK
 46206  }
 46207  
 46208  func Sqlitetest8_Init(tls *libc.TLS, interp uintptr) int32 {
 46209  	var i int32
 46210  	for i = 0; uint64(i) < uint64(unsafe.Sizeof(aObjCmd2))/uint64(unsafe.Sizeof(struct {
 46211  		FzName      uintptr
 46212  		FxProc      uintptr
 46213  		FclientData uintptr
 46214  	}{})); i++ {
 46215  		tcl.XTcl_CreateObjCommand(tls, interp, aObjCmd2[i].FzName,
 46216  			aObjCmd2[i].FxProc, aObjCmd2[i].FclientData, uintptr(0))
 46217  	}
 46218  	return TCL_OK
 46219  }
 46220  
 46221  var aObjCmd2 = [2]struct {
 46222  	FzName      uintptr
 46223  	FxProc      uintptr
 46224  	FclientData uintptr
 46225  }{
 46226  	{FzName: ts + 28103, FxProc: 0},
 46227  	{FzName: ts + 28124, FxProc: 0},
 46228  }
 46229  
 46230  func c_collation_test(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 46231  	bp := tls.Alloc(32)
 46232  	defer tls.Free(32)
 46233  
 46234  	var zErrFunction uintptr
 46235  
 46236  	var rc int32
 46237  	zErrFunction = ts + 28145
 46238  	if !(objc != 1) {
 46239  		goto __1
 46240  	}
 46241  	tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+584)
 46242  	return TCL_ERROR
 46243  __1:
 46244  	;
 46245  	rc = sqlite3.Xsqlite3_open(tls, ts+1757, bp+24)
 46246  	if !(rc != SQLITE_OK) {
 46247  		goto __2
 46248  	}
 46249  	zErrFunction = ts + 21564
 46250  	goto error_out
 46251  __2:
 46252  	;
 46253  	rc = sqlite3.Xsqlite3_create_collation(tls, *(*uintptr)(unsafe.Pointer(bp + 24)), ts+13402, 456, uintptr(0), uintptr(0))
 46254  	if !(rc != SQLITE_MISUSE) {
 46255  		goto __3
 46256  	}
 46257  	sqlite3.Xsqlite3_close(tls, *(*uintptr)(unsafe.Pointer(bp + 24)))
 46258  	zErrFunction = ts + 28149
 46259  	goto error_out
 46260  __3:
 46261  	;
 46262  	sqlite3.Xsqlite3_close(tls, *(*uintptr)(unsafe.Pointer(bp + 24)))
 46263  	return TCL_OK
 46264  
 46265  error_out:
 46266  	tcl.XTcl_ResetResult(tls, interp)
 46267  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+28174, zErrFunction, 0))
 46268  	return TCL_ERROR
 46269  }
 46270  
 46271  func c_realloc_test(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 46272  	bp := tls.Alloc(24)
 46273  	defer tls.Free(24)
 46274  
 46275  	var p uintptr
 46276  	var zErrFunction uintptr
 46277  	zErrFunction = ts + 28145
 46278  
 46279  	if !(objc != 1) {
 46280  		goto __1
 46281  	}
 46282  	tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+584)
 46283  	return TCL_ERROR
 46284  __1:
 46285  	;
 46286  	p = sqlite3.Xsqlite3_malloc(tls, 5)
 46287  	if !!(p != 0) {
 46288  		goto __2
 46289  	}
 46290  	zErrFunction = ts + 28199
 46291  	goto error_out
 46292  __2:
 46293  	;
 46294  	p = sqlite3.Xsqlite3_realloc(tls, p, -1)
 46295  	if !(p != 0) {
 46296  		goto __3
 46297  	}
 46298  	zErrFunction = ts + 28214
 46299  	goto error_out
 46300  __3:
 46301  	;
 46302  	return TCL_OK
 46303  
 46304  error_out:
 46305  	tcl.XTcl_ResetResult(tls, interp)
 46306  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+28174, zErrFunction, 0))
 46307  	return TCL_ERROR
 46308  }
 46309  
 46310  func c_misuse_test(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 46311  	bp := tls.Alloc(40)
 46312  	defer tls.Free(40)
 46313  
 46314  	var zErrFunction uintptr
 46315  
 46316  	var rc int32
 46317  	zErrFunction = ts + 28145
 46318  	*(*uintptr)(unsafe.Pointer(bp + 24)) = uintptr(0)
 46319  
 46320  	if !(objc != 1) {
 46321  		goto __1
 46322  	}
 46323  	tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+584)
 46324  	return TCL_ERROR
 46325  __1:
 46326  	;
 46327  	rc = sqlite3.Xsqlite3_open(tls, ts+1757, bp+24)
 46328  	if !(rc != SQLITE_OK) {
 46329  		goto __2
 46330  	}
 46331  	zErrFunction = ts + 21564
 46332  	goto error_out
 46333  __2:
 46334  	;
 46335  	sqlite3.Xsqlite3_close(tls, *(*uintptr)(unsafe.Pointer(bp + 24)))
 46336  
 46337  	rc = sqlite3.Xsqlite3_errcode(tls, *(*uintptr)(unsafe.Pointer(bp + 24)))
 46338  	if !(rc != SQLITE_MISUSE) {
 46339  		goto __3
 46340  	}
 46341  	zErrFunction = ts + 21470
 46342  	goto error_out
 46343  __3:
 46344  	;
 46345  	*(*uintptr)(unsafe.Pointer(bp + 32)) = uintptr(1234)
 46346  	rc = sqlite3.Xsqlite3_prepare(tls, *(*uintptr)(unsafe.Pointer(bp + 24)), uintptr(0), 0, bp+32, uintptr(0))
 46347  	if !(rc != SQLITE_MISUSE) {
 46348  		goto __4
 46349  	}
 46350  	zErrFunction = ts + 21645
 46351  	goto error_out
 46352  __4:
 46353  	;
 46354  	*(*uintptr)(unsafe.Pointer(bp + 32)) = uintptr(1234)
 46355  	rc = sqlite3.Xsqlite3_prepare_v2(tls, *(*uintptr)(unsafe.Pointer(bp + 24)), uintptr(0), 0, bp+32, uintptr(0))
 46356  	if !(rc != SQLITE_MISUSE) {
 46357  		goto __5
 46358  	}
 46359  	zErrFunction = ts + 21679
 46360  	goto error_out
 46361  __5:
 46362  	;
 46363  	*(*uintptr)(unsafe.Pointer(bp + 32)) = uintptr(1234)
 46364  	rc = sqlite3.Xsqlite3_prepare16(tls, *(*uintptr)(unsafe.Pointer(bp + 24)), uintptr(0), 0, bp+32, uintptr(0))
 46365  	if !(rc != SQLITE_MISUSE) {
 46366  		goto __6
 46367  	}
 46368  	zErrFunction = ts + 21661
 46369  	goto error_out
 46370  __6:
 46371  	;
 46372  	*(*uintptr)(unsafe.Pointer(bp + 32)) = uintptr(1234)
 46373  	rc = sqlite3.Xsqlite3_prepare16_v2(tls, *(*uintptr)(unsafe.Pointer(bp + 24)), uintptr(0), 0, bp+32, uintptr(0))
 46374  	if !(rc != SQLITE_MISUSE) {
 46375  		goto __7
 46376  	}
 46377  	zErrFunction = ts + 21741
 46378  	goto error_out
 46379  __7:
 46380  	;
 46381  	return TCL_OK
 46382  
 46383  error_out:
 46384  	tcl.XTcl_ResetResult(tls, interp)
 46385  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+28174, zErrFunction, 0))
 46386  	return TCL_ERROR
 46387  }
 46388  
 46389  func Sqlitetest9_Init(tls *libc.TLS, interp uintptr) int32 {
 46390  	var i int32
 46391  	for i = 0; uint64(i) < uint64(unsafe.Sizeof(aObjCmd3))/uint64(unsafe.Sizeof(struct {
 46392  		FzName      uintptr
 46393  		FxProc      uintptr
 46394  		FclientData uintptr
 46395  	}{})); i++ {
 46396  		tcl.XTcl_CreateObjCommand(tls, interp, aObjCmd3[i].FzName,
 46397  			aObjCmd3[i].FxProc, aObjCmd3[i].FclientData, uintptr(0))
 46398  	}
 46399  	return TCL_OK
 46400  }
 46401  
 46402  var aObjCmd3 = [3]struct {
 46403  	FzName      uintptr
 46404  	FxProc      uintptr
 46405  	FclientData uintptr
 46406  }{
 46407  	{FzName: ts + 28230, FxProc: 0},
 46408  	{FzName: ts + 28244, FxProc: 0},
 46409  	{FzName: ts + 28259, FxProc: 0},
 46410  }
 46411  
 46412  func Sqlitetestasync_Init(tls *libc.TLS, interp uintptr) int32 {
 46413  	return TCL_OK
 46414  }
 46415  
 46416  func resetAutoExtObjCmd(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 46417  	sqlite3.Xsqlite3_reset_auto_extension(tls)
 46418  	return SQLITE_OK
 46419  }
 46420  
 46421  func Sqlitetest_autoext_Init(tls *libc.TLS, interp uintptr) int32 {
 46422  	tcl.XTcl_CreateObjCommand(tls, interp, ts+28276,
 46423  		*(*uintptr)(unsafe.Pointer(&struct {
 46424  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 46425  		}{resetAutoExtObjCmd})), uintptr(0), uintptr(0))
 46426  	return TCL_OK
 46427  }
 46428  
 46429  func backupTestCmd(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 46430  	bp := tls.Alloc(196)
 46431  	defer tls.Free(196)
 46432  
 46433  	*(*[5]BackupSubCommand)(unsafe.Pointer(bp)) = [5]BackupSubCommand{
 46434  		{FzCmd: ts + 9485, FnArg: 1, FzArg: ts + 28305},
 46435  		{FzCmd: ts + 28311, FeCmd: uint32(1), FzArg: ts + 584},
 46436  		{FzCmd: ts + 28318, FeCmd: uint32(2), FzArg: ts + 584},
 46437  		{FzCmd: ts + 28328, FeCmd: uint32(3), FzArg: ts + 584},
 46438  		{},
 46439  	}
 46440  
 46441  	var p uintptr = clientData
 46442  
 46443  	var rc int32
 46444  
 46445  	rc = tcl.XTcl_GetIndexFromObjStruct(tls,
 46446  		interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp, int32(unsafe.Sizeof(BackupSubCommand{})), ts+11691, 0, bp+120)
 46447  	if rc != TCL_OK {
 46448  		return rc
 46449  	}
 46450  	if objc != 2+(*BackupSubCommand)(unsafe.Pointer(bp+uintptr(*(*int32)(unsafe.Pointer(bp + 120)))*24)).FnArg {
 46451  		tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, (*BackupSubCommand)(unsafe.Pointer(bp+uintptr(*(*int32)(unsafe.Pointer(bp + 120)))*24)).FzArg)
 46452  		return TCL_ERROR
 46453  	}
 46454  
 46455  	switch (*BackupSubCommand)(unsafe.Pointer(bp + uintptr(*(*int32)(unsafe.Pointer(bp + 120)))*24)).FeCmd {
 46456  	case uint32(1):
 46457  		{
 46458  			var zCmdName uintptr
 46459  
 46460  			zCmdName = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv)))
 46461  			tcl.XTcl_GetCommandInfo(tls, interp, zCmdName, bp+128)
 46462  			(*Tcl_CmdInfo)(unsafe.Pointer(bp + 128)).FdeleteProc = uintptr(0)
 46463  			tcl.XTcl_SetCommandInfo(tls, interp, zCmdName, bp+128)
 46464  			tcl.XTcl_DeleteCommand(tls, interp, zCmdName)
 46465  
 46466  			rc = sqlite3.Xsqlite3_backup_finish(tls, p)
 46467  			tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 46468  			break
 46469  
 46470  		}
 46471  
 46472  	case uint32(0):
 46473  		{
 46474  			if TCL_OK != tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+192) {
 46475  				return TCL_ERROR
 46476  			}
 46477  			rc = sqlite3.Xsqlite3_backup_step(tls, p, *(*int32)(unsafe.Pointer(bp + 192)))
 46478  			tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 46479  			break
 46480  
 46481  		}
 46482  
 46483  	case uint32(2):
 46484  		tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, sqlite3.Xsqlite3_backup_remaining(tls, p)))
 46485  		break
 46486  
 46487  	case uint32(3):
 46488  		tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, sqlite3.Xsqlite3_backup_pagecount(tls, p)))
 46489  		break
 46490  	}
 46491  
 46492  	return TCL_OK
 46493  }
 46494  
 46495  type BackupSubCommand = struct {
 46496  	FzCmd uintptr
 46497  	FeCmd uint32
 46498  	FnArg int32
 46499  	FzArg uintptr
 46500  }
 46501  
 46502  func backupTestFinish(tls *libc.TLS, clientData ClientData) {
 46503  	var pBackup uintptr = clientData
 46504  	sqlite3.Xsqlite3_backup_finish(tls, pBackup)
 46505  }
 46506  
 46507  func backupTestInit(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 46508  	bp := tls.Alloc(32)
 46509  	defer tls.Free(32)
 46510  
 46511  	var pBackup uintptr
 46512  
 46513  	var zDestName uintptr
 46514  	var zSrcName uintptr
 46515  	var zCmd uintptr
 46516  
 46517  	if objc != 6 {
 46518  		tcl.XTcl_WrongNumArgs(tls,
 46519  			interp, 1, objv, ts+28338)
 46520  		return TCL_ERROR
 46521  	}
 46522  
 46523  	zCmd = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 46524  	getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8))), bp+16)
 46525  	zDestName = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)))
 46526  	getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 4*8))), bp+24)
 46527  	zSrcName = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 5*8)))
 46528  
 46529  	pBackup = sqlite3.Xsqlite3_backup_init(tls, *(*uintptr)(unsafe.Pointer(bp + 16)), zDestName, *(*uintptr)(unsafe.Pointer(bp + 24)), zSrcName)
 46530  	if !(pBackup != 0) {
 46531  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+28384, 0))
 46532  		return TCL_ERROR
 46533  	}
 46534  
 46535  	tcl.XTcl_CreateObjCommand(tls, interp, zCmd, *(*uintptr)(unsafe.Pointer(&struct {
 46536  		f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
 46537  	}{backupTestCmd})), pBackup, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, ClientData) }{backupTestFinish})))
 46538  	tcl.XTcl_SetObjResult(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 46539  	return TCL_OK
 46540  }
 46541  
 46542  func Sqlitetestbackup_Init(tls *libc.TLS, interp uintptr) int32 {
 46543  	tcl.XTcl_CreateObjCommand(tls, interp, ts+28413, *(*uintptr)(unsafe.Pointer(&struct {
 46544  		f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
 46545  	}{backupTestInit})), uintptr(0), uintptr(0))
 46546  	return TCL_OK
 46547  }
 46548  
 46549  type tcl_vtab1 = struct {
 46550  	Fbase   sqlite3_vtab
 46551  	Finterp uintptr
 46552  	FpCmd   uintptr
 46553  	Fdb     uintptr
 46554  }
 46555  
 46556  type tcl_vtab = tcl_vtab1
 46557  type tcl_cursor1 = struct {
 46558  	Fbase  sqlite3_vtab_cursor
 46559  	FpStmt uintptr
 46560  }
 46561  
 46562  type tcl_cursor = tcl_cursor1
 46563  
 46564  func tclDequote(tls *libc.TLS, z uintptr) {
 46565  	var q int8 = *(*int8)(unsafe.Pointer(z))
 46566  
 46567  	if int32(q) == '[' || int32(q) == '\'' || int32(q) == '"' || int32(q) == '`' {
 46568  		var iIn int32 = 1
 46569  		var iOut int32 = 0
 46570  		if int32(q) == '[' {
 46571  			q = int8(']')
 46572  		}
 46573  
 46574  		for *(*int8)(unsafe.Pointer(z + uintptr(iIn))) != 0 {
 46575  			if int32(*(*int8)(unsafe.Pointer(z + uintptr(iIn)))) == int32(q) {
 46576  				if int32(*(*int8)(unsafe.Pointer(z + uintptr(iIn+1)))) != int32(q) {
 46577  					iIn++
 46578  					break
 46579  				} else {
 46580  					iIn = iIn + 2
 46581  					*(*int8)(unsafe.Pointer(z + uintptr(libc.PostIncInt32(&iOut, 1)))) = q
 46582  				}
 46583  			} else {
 46584  				*(*int8)(unsafe.Pointer(z + uintptr(libc.PostIncInt32(&iOut, 1)))) = *(*int8)(unsafe.Pointer(z + uintptr(libc.PostIncInt32(&iIn, 1))))
 46585  			}
 46586  		}
 46587  
 46588  		*(*int8)(unsafe.Pointer(z + uintptr(iOut))) = int8(0)
 46589  	}
 46590  }
 46591  
 46592  func tclConnect(tls *libc.TLS, db uintptr, pAux uintptr, argc int32, argv uintptr, ppVtab uintptr, pzErr uintptr) int32 {
 46593  	bp := tls.Alloc(8)
 46594  	defer tls.Free(8)
 46595  
 46596  	var interp uintptr = pAux
 46597  	var pTab uintptr = uintptr(0)
 46598  	var zCmd uintptr = uintptr(0)
 46599  	var pScript uintptr = uintptr(0)
 46600  	var rc int32 = SQLITE_OK
 46601  
 46602  	if argc != 4 {
 46603  		*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+28428, 0)
 46604  		return SQLITE_ERROR
 46605  	}
 46606  
 46607  	zCmd = sqlite3.Xsqlite3_malloc64(tls, libc.Xstrlen(tls, *(*uintptr)(unsafe.Pointer(argv + 3*8)))+uint64(1))
 46608  	pTab = sqlite3.Xsqlite3_malloc64(tls, uint64(unsafe.Sizeof(tcl_vtab{})))
 46609  	if zCmd != 0 && pTab != 0 {
 46610  		libc.X__builtin___memcpy_chk(tls, zCmd, *(*uintptr)(unsafe.Pointer(argv + 3*8)), libc.Xstrlen(tls, *(*uintptr)(unsafe.Pointer(argv + 3*8)))+uint64(1), libc.X__builtin_object_size(tls, zCmd, 0))
 46611  		tclDequote(tls, zCmd)
 46612  		libc.X__builtin___memset_chk(tls, pTab, 0, uint64(unsafe.Sizeof(tcl_vtab{})), libc.X__builtin_object_size(tls, pTab, 0))
 46613  
 46614  		(*tcl_vtab)(unsafe.Pointer(pTab)).FpCmd = tcl.XTcl_NewStringObj(tls, zCmd, -1)
 46615  		(*tcl_vtab)(unsafe.Pointer(pTab)).Finterp = interp
 46616  		(*tcl_vtab)(unsafe.Pointer(pTab)).Fdb = db
 46617  		(*Tcl_Obj)(unsafe.Pointer((*tcl_vtab)(unsafe.Pointer(pTab)).FpCmd)).FrefCount++
 46618  
 46619  		pScript = tcl.XTcl_DuplicateObj(tls, (*tcl_vtab)(unsafe.Pointer(pTab)).FpCmd)
 46620  		(*Tcl_Obj)(unsafe.Pointer(pScript)).FrefCount++
 46621  		tcl.XTcl_ListObjAppendElement(tls, interp, pScript, tcl.XTcl_NewStringObj(tls, ts+27481, -1))
 46622  
 46623  		rc = tcl.XTcl_EvalObjEx(tls, interp, pScript, TCL_EVAL_GLOBAL)
 46624  		if rc != TCL_OK {
 46625  			*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp, tcl.XTcl_GetStringResult(tls, interp)))
 46626  			rc = SQLITE_ERROR
 46627  		} else {
 46628  			rc = sqlite3.Xsqlite3_declare_vtab(tls, db, tcl.XTcl_GetStringResult(tls, interp))
 46629  		}
 46630  
 46631  		if rc != SQLITE_OK {
 46632  			sqlite3.Xsqlite3_free(tls, pTab)
 46633  			pTab = uintptr(0)
 46634  		}
 46635  	} else {
 46636  		rc = SQLITE_NOMEM
 46637  	}
 46638  
 46639  	sqlite3.Xsqlite3_free(tls, zCmd)
 46640  	*(*uintptr)(unsafe.Pointer(ppVtab)) = pTab
 46641  	return rc
 46642  }
 46643  
 46644  func tclDisconnect(tls *libc.TLS, pVtab uintptr) int32 {
 46645  	var pTab uintptr = pVtab
 46646  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 46647  		if libc.PreDecInt32(&(*Tcl_Obj)(unsafe.Pointer((*tcl_vtab)(unsafe.Pointer(pTab)).FpCmd)).FrefCount, 1) <= 0 {
 46648  			tcl.XTclFreeObj(tls, (*tcl_vtab)(unsafe.Pointer(pTab)).FpCmd)
 46649  		}
 46650  	}
 46651  	sqlite3.Xsqlite3_free(tls, pTab)
 46652  	return SQLITE_OK
 46653  }
 46654  
 46655  func tclOpen(tls *libc.TLS, pVTab uintptr, ppCursor uintptr) int32 {
 46656  	var pCur uintptr
 46657  	pCur = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(tcl_cursor{})))
 46658  	if pCur == uintptr(0) {
 46659  		return SQLITE_NOMEM
 46660  	}
 46661  	libc.X__builtin___memset_chk(tls, pCur, 0, uint64(unsafe.Sizeof(tcl_cursor{})), libc.X__builtin_object_size(tls, pCur, 0))
 46662  	*(*uintptr)(unsafe.Pointer(ppCursor)) = pCur
 46663  	return SQLITE_OK
 46664  }
 46665  
 46666  func tclClose(tls *libc.TLS, cur uintptr) int32 {
 46667  	var pCur uintptr = cur
 46668  	if pCur != 0 {
 46669  		sqlite3.Xsqlite3_finalize(tls, (*tcl_cursor)(unsafe.Pointer(pCur)).FpStmt)
 46670  		sqlite3.Xsqlite3_free(tls, pCur)
 46671  	}
 46672  	return SQLITE_OK
 46673  }
 46674  
 46675  func tclNext(tls *libc.TLS, pVtabCursor uintptr) int32 {
 46676  	bp := tls.Alloc(8)
 46677  	defer tls.Free(8)
 46678  
 46679  	var pCsr uintptr = pVtabCursor
 46680  	if (*tcl_cursor)(unsafe.Pointer(pCsr)).FpStmt != 0 {
 46681  		var pTab uintptr = (*sqlite3_vtab_cursor)(unsafe.Pointer(pVtabCursor)).FpVtab
 46682  		var rc int32 = sqlite3.Xsqlite3_step(tls, (*tcl_cursor)(unsafe.Pointer(pCsr)).FpStmt)
 46683  		if rc != SQLITE_ROW {
 46684  			var zErr uintptr
 46685  			rc = sqlite3.Xsqlite3_finalize(tls, (*tcl_cursor)(unsafe.Pointer(pCsr)).FpStmt)
 46686  			(*tcl_cursor)(unsafe.Pointer(pCsr)).FpStmt = uintptr(0)
 46687  			if rc != SQLITE_OK {
 46688  				zErr = sqlite3.Xsqlite3_errmsg(tls, (*tcl_vtab)(unsafe.Pointer(pTab)).Fdb)
 46689  				(*tcl_vtab)(unsafe.Pointer(pTab)).Fbase.FzErrMsg = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp, zErr))
 46690  			}
 46691  		}
 46692  	}
 46693  	return SQLITE_OK
 46694  }
 46695  
 46696  func tclFilter(tls *libc.TLS, pVtabCursor uintptr, idxNum int32, idxStr uintptr, argc int32, argv uintptr) int32 {
 46697  	bp := tls.Alloc(56)
 46698  	defer tls.Free(56)
 46699  
 46700  	var pCsr uintptr = pVtabCursor
 46701  	var pTab uintptr = (*sqlite3_vtab_cursor)(unsafe.Pointer(pVtabCursor)).FpVtab
 46702  	var interp uintptr = (*tcl_vtab)(unsafe.Pointer(pTab)).Finterp
 46703  	var pScript uintptr
 46704  	var pArg uintptr
 46705  	var ii int32
 46706  	var rc int32
 46707  
 46708  	pScript = tcl.XTcl_DuplicateObj(tls, (*tcl_vtab)(unsafe.Pointer(pTab)).FpCmd)
 46709  	(*Tcl_Obj)(unsafe.Pointer(pScript)).FrefCount++
 46710  	tcl.XTcl_ListObjAppendElement(tls, interp, pScript, tcl.XTcl_NewStringObj(tls, ts+27545, -1))
 46711  	tcl.XTcl_ListObjAppendElement(tls, interp, pScript, tcl.XTcl_NewIntObj(tls, idxNum))
 46712  	if idxStr != 0 {
 46713  		tcl.XTcl_ListObjAppendElement(tls, interp, pScript, tcl.XTcl_NewStringObj(tls, idxStr, -1))
 46714  	} else {
 46715  		tcl.XTcl_ListObjAppendElement(tls, interp, pScript, tcl.XTcl_NewStringObj(tls, ts+584, -1))
 46716  	}
 46717  
 46718  	pArg = tcl.XTcl_NewObj(tls)
 46719  	(*Tcl_Obj)(unsafe.Pointer(pArg)).FrefCount++
 46720  	for ii = 0; ii < argc; ii++ {
 46721  		var zVal uintptr = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(ii)*8)))
 46722  		var pVal uintptr
 46723  		if zVal == uintptr(0) {
 46724  			pVal = tcl.XTcl_NewObj(tls)
 46725  			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) {
 46726  				var pVal2 uintptr = uintptr(0)
 46727  				zVal = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(bp + 32)))
 46728  				if zVal != 0 {
 46729  					pVal2 = tcl.XTcl_NewStringObj(tls, zVal, -1)
 46730  				} else {
 46731  					pVal2 = tcl.XTcl_NewObj(tls)
 46732  				}
 46733  				tcl.XTcl_ListObjAppendElement(tls, interp, pVal, pVal2)
 46734  			}
 46735  		} else {
 46736  			pVal = tcl.XTcl_NewStringObj(tls, zVal, -1)
 46737  		}
 46738  		tcl.XTcl_ListObjAppendElement(tls, interp, pArg, pVal)
 46739  	}
 46740  	tcl.XTcl_ListObjAppendElement(tls, interp, pScript, pArg)
 46741  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 46742  		if libc.PreDecInt32(&(*Tcl_Obj)(unsafe.Pointer(pArg)).FrefCount, 1) <= 0 {
 46743  			tcl.XTclFreeObj(tls, pArg)
 46744  		}
 46745  	}
 46746  
 46747  	rc = tcl.XTcl_EvalObjEx(tls, interp, pScript, TCL_EVAL_GLOBAL)
 46748  	if rc != TCL_OK {
 46749  		var zErr uintptr = tcl.XTcl_GetStringResult(tls, interp)
 46750  		rc = SQLITE_ERROR
 46751  		(*tcl_vtab)(unsafe.Pointer(pTab)).Fbase.FzErrMsg = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp, zErr))
 46752  	} else {
 46753  		var pRes uintptr = tcl.XTcl_GetObjResult(tls, interp)
 46754  		*(*uintptr)(unsafe.Pointer(bp + 48)) = uintptr(0)
 46755  
 46756  		rc = tcl.XTcl_ListObjGetElements(tls, interp, pRes, bp+40, bp+48)
 46757  		if rc != TCL_OK {
 46758  			var zErr uintptr = tcl.XTcl_GetStringResult(tls, interp)
 46759  			rc = SQLITE_ERROR
 46760  			(*tcl_vtab)(unsafe.Pointer(pTab)).Fbase.FzErrMsg = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp+8, zErr))
 46761  		} else {
 46762  			for ii = 0; rc == SQLITE_OK && ii < *(*int32)(unsafe.Pointer(bp + 40)); ii = ii + 2 {
 46763  				var zCmd uintptr = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 48)) + uintptr(ii)*8)))
 46764  				var p uintptr = *(*uintptr)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 48)) + uintptr(ii+1)*8))
 46765  				if sqlite3.Xsqlite3_stricmp(tls, ts+1947, zCmd) == 0 {
 46766  					var zSql uintptr = tcl.XTcl_GetString(tls, p)
 46767  					rc = sqlite3.Xsqlite3_prepare_v2(tls, (*tcl_vtab)(unsafe.Pointer(pTab)).Fdb, zSql, -1, pCsr+8, uintptr(0))
 46768  					if rc != SQLITE_OK {
 46769  						var zErr uintptr = sqlite3.Xsqlite3_errmsg(tls, (*tcl_vtab)(unsafe.Pointer(pTab)).Fdb)
 46770  						(*tcl_vtab)(unsafe.Pointer(pTab)).Fbase.FzErrMsg = sqlite3.Xsqlite3_mprintf(tls, ts+28454, libc.VaList(bp+16, zErr))
 46771  					}
 46772  				} else {
 46773  					rc = SQLITE_ERROR
 46774  					(*tcl_vtab)(unsafe.Pointer(pTab)).Fbase.FzErrMsg = sqlite3.Xsqlite3_mprintf(tls, ts+28454, libc.VaList(bp+24, zCmd))
 46775  				}
 46776  			}
 46777  		}
 46778  	}
 46779  
 46780  	if rc == SQLITE_OK {
 46781  		rc = tclNext(tls, pVtabCursor)
 46782  	}
 46783  	return rc
 46784  }
 46785  
 46786  func tclColumn(tls *libc.TLS, pVtabCursor uintptr, ctx uintptr, i int32) int32 {
 46787  	var pCsr uintptr = pVtabCursor
 46788  	sqlite3.Xsqlite3_result_value(tls, ctx, sqlite3.Xsqlite3_column_value(tls, (*tcl_cursor)(unsafe.Pointer(pCsr)).FpStmt, i+1))
 46789  	return SQLITE_OK
 46790  }
 46791  
 46792  func tclRowid(tls *libc.TLS, pVtabCursor uintptr, pRowid uintptr) int32 {
 46793  	var pCsr uintptr = pVtabCursor
 46794  	*(*sqlite_int64)(unsafe.Pointer(pRowid)) = sqlite3.Xsqlite3_column_int64(tls, (*tcl_cursor)(unsafe.Pointer(pCsr)).FpStmt, 0)
 46795  	return SQLITE_OK
 46796  }
 46797  
 46798  func tclEof(tls *libc.TLS, pVtabCursor uintptr) int32 {
 46799  	var pCsr uintptr = pVtabCursor
 46800  	return libc.Bool32((*tcl_cursor)(unsafe.Pointer(pCsr)).FpStmt == uintptr(0))
 46801  }
 46802  
 46803  func testBestIndexObjConstraints(tls *libc.TLS, interp uintptr, pIdxInfo uintptr) {
 46804  	var ii int32
 46805  	var pRes uintptr = tcl.XTcl_NewObj(tls)
 46806  	(*Tcl_Obj)(unsafe.Pointer(pRes)).FrefCount++
 46807  	for ii = 0; ii < (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnConstraint; ii++ {
 46808  		var pCons uintptr = (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint + uintptr(ii)*12
 46809  		var pElem uintptr = tcl.XTcl_NewObj(tls)
 46810  		var zOp uintptr = ts + 3405
 46811  
 46812  		(*Tcl_Obj)(unsafe.Pointer(pElem)).FrefCount++
 46813  
 46814  		switch int32((*sqlite3_index_constraint)(unsafe.Pointer(pCons)).Fop) {
 46815  		case SQLITE_INDEX_CONSTRAINT_EQ:
 46816  			zOp = ts + 28469
 46817  			break
 46818  		case SQLITE_INDEX_CONSTRAINT_GT:
 46819  			zOp = ts + 28472
 46820  			break
 46821  		case SQLITE_INDEX_CONSTRAINT_LE:
 46822  			zOp = ts + 28475
 46823  			break
 46824  		case SQLITE_INDEX_CONSTRAINT_LT:
 46825  			zOp = ts + 28478
 46826  			break
 46827  		case SQLITE_INDEX_CONSTRAINT_GE:
 46828  			zOp = ts + 28481
 46829  			break
 46830  		case SQLITE_INDEX_CONSTRAINT_MATCH:
 46831  			zOp = ts + 28484
 46832  			break
 46833  		case SQLITE_INDEX_CONSTRAINT_LIKE:
 46834  			zOp = ts + 27691
 46835  			break
 46836  		case SQLITE_INDEX_CONSTRAINT_GLOB:
 46837  			zOp = ts + 27696
 46838  			break
 46839  		case SQLITE_INDEX_CONSTRAINT_REGEXP:
 46840  			zOp = ts + 6831
 46841  			break
 46842  		case SQLITE_INDEX_CONSTRAINT_NE:
 46843  			zOp = ts + 28490
 46844  			break
 46845  		case SQLITE_INDEX_CONSTRAINT_ISNOT:
 46846  			zOp = ts + 28493
 46847  			break
 46848  		case SQLITE_INDEX_CONSTRAINT_ISNOTNULL:
 46849  			zOp = ts + 28499
 46850  			break
 46851  		case SQLITE_INDEX_CONSTRAINT_ISNULL:
 46852  			zOp = ts + 28509
 46853  			break
 46854  		case SQLITE_INDEX_CONSTRAINT_IS:
 46855  			zOp = ts + 5851
 46856  			break
 46857  		case SQLITE_INDEX_CONSTRAINT_LIMIT:
 46858  			zOp = ts + 28516
 46859  			break
 46860  		case SQLITE_INDEX_CONSTRAINT_OFFSET:
 46861  			zOp = ts + 28522
 46862  			break
 46863  		}
 46864  
 46865  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pElem, tcl.XTcl_NewStringObj(tls, ts+6194, -1))
 46866  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pElem, tcl.XTcl_NewStringObj(tls, zOp, -1))
 46867  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pElem, tcl.XTcl_NewStringObj(tls, ts+28529, -1))
 46868  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pElem, tcl.XTcl_NewIntObj(tls, (*sqlite3_index_constraint)(unsafe.Pointer(pCons)).FiColumn))
 46869  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pElem, tcl.XTcl_NewStringObj(tls, ts+28536, -1))
 46870  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pElem, tcl.XTcl_NewIntObj(tls, int32((*sqlite3_index_constraint)(unsafe.Pointer(pCons)).Fusable)))
 46871  
 46872  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pRes, pElem)
 46873  		for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 46874  			if libc.PreDecInt32(&(*Tcl_Obj)(unsafe.Pointer(pElem)).FrefCount, 1) <= 0 {
 46875  				tcl.XTclFreeObj(tls, pElem)
 46876  			}
 46877  		}
 46878  	}
 46879  
 46880  	tcl.XTcl_SetObjResult(tls, interp, pRes)
 46881  	for __ccgo1 := true; __ccgo1; __ccgo1 = 0 != 0 {
 46882  		if libc.PreDecInt32(&(*Tcl_Obj)(unsafe.Pointer(pRes)).FrefCount, 1) <= 0 {
 46883  			tcl.XTclFreeObj(tls, pRes)
 46884  		}
 46885  	}
 46886  }
 46887  
 46888  func testBestIndexObjOrderby(tls *libc.TLS, interp uintptr, pIdxInfo uintptr) {
 46889  	var ii int32
 46890  	var pRes uintptr = tcl.XTcl_NewObj(tls)
 46891  	(*Tcl_Obj)(unsafe.Pointer(pRes)).FrefCount++
 46892  	for ii = 0; ii < (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnOrderBy; ii++ {
 46893  		var pOrder uintptr = (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaOrderBy + uintptr(ii)*8
 46894  		var pElem uintptr = tcl.XTcl_NewObj(tls)
 46895  		(*Tcl_Obj)(unsafe.Pointer(pElem)).FrefCount++
 46896  
 46897  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pElem, tcl.XTcl_NewStringObj(tls, ts+28529, -1))
 46898  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pElem, tcl.XTcl_NewIntObj(tls, (*sqlite3_index_orderby)(unsafe.Pointer(pOrder)).FiColumn))
 46899  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pElem, tcl.XTcl_NewStringObj(tls, ts+28543, -1))
 46900  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pElem, tcl.XTcl_NewIntObj(tls, int32((*sqlite3_index_orderby)(unsafe.Pointer(pOrder)).Fdesc)))
 46901  
 46902  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pRes, pElem)
 46903  		for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 46904  			if libc.PreDecInt32(&(*Tcl_Obj)(unsafe.Pointer(pElem)).FrefCount, 1) <= 0 {
 46905  				tcl.XTclFreeObj(tls, pElem)
 46906  			}
 46907  		}
 46908  	}
 46909  
 46910  	tcl.XTcl_SetObjResult(tls, interp, pRes)
 46911  	for __ccgo1 := true; __ccgo1; __ccgo1 = 0 != 0 {
 46912  		if libc.PreDecInt32(&(*Tcl_Obj)(unsafe.Pointer(pRes)).FrefCount, 1) <= 0 {
 46913  			tcl.XTclFreeObj(tls, pRes)
 46914  		}
 46915  	}
 46916  }
 46917  
 46918  func testBestIndexObj(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 46919  	bp := tls.Alloc(80)
 46920  	defer tls.Free(80)
 46921  
 46922  	*(*[7]uintptr)(unsafe.Pointer(bp)) = [7]uintptr{
 46923  		ts + 28548,
 46924  		ts + 28560,
 46925  		ts + 28568,
 46926  		ts + 28573,
 46927  		ts + 28582,
 46928  		ts + 28585,
 46929  		uintptr(0),
 46930  	}
 46931  
 46932  	var pIdxInfo uintptr = clientData
 46933  
 46934  	if objc < 2 {
 46935  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2523)
 46936  		return TCL_ERROR
 46937  	}
 46938  	if tcl.XTcl_GetIndexFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp, ts+2014, 0, bp+56) != 0 {
 46939  		return TCL_ERROR
 46940  	}
 46941  
 46942  	if *(*int32)(unsafe.Pointer(bp + 56)) < 4 && objc != 2 {
 46943  		tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+584)
 46944  		return TCL_ERROR
 46945  	}
 46946  	if *(*int32)(unsafe.Pointer(bp + 56)) == 4 && objc != 4 {
 46947  		tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+28595)
 46948  		return TCL_ERROR
 46949  	}
 46950  	if *(*int32)(unsafe.Pointer(bp + 56)) == 5 && objc != 3 && objc != 4 {
 46951  		tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+28609)
 46952  		return TCL_ERROR
 46953  	}
 46954  
 46955  	switch *(*int32)(unsafe.Pointer(bp + 56)) {
 46956  	case 0:
 46957  		testBestIndexObjConstraints(tls, interp, pIdxInfo)
 46958  		break
 46959  
 46960  	case 1:
 46961  		testBestIndexObjOrderby(tls, interp, pIdxInfo)
 46962  		break
 46963  
 46964  	case 2:
 46965  		tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewWideIntObj(tls, int64((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FcolUsed)))
 46966  		break
 46967  
 46968  	case 3:
 46969  		{
 46970  			var bDistinct int32 = sqlite3.Xsqlite3_vtab_distinct(tls, pIdxInfo)
 46971  			tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, bDistinct))
 46972  			break
 46973  
 46974  		}
 46975  
 46976  	case 4:
 46977  		{
 46978  			if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+60) != 0 ||
 46979  				tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+64) != 0 {
 46980  				return TCL_ERROR
 46981  			}
 46982  			tcl.XTcl_SetObjResult(tls, interp,
 46983  				tcl.XTcl_NewIntObj(tls, sqlite3.Xsqlite3_vtab_in(tls, pIdxInfo, *(*int32)(unsafe.Pointer(bp + 60)), *(*int32)(unsafe.Pointer(bp + 64)))))
 46984  			break
 46985  
 46986  		}
 46987  
 46988  	case 5:
 46989  		{
 46990  			*(*int32)(unsafe.Pointer(bp + 68)) = 0
 46991  			var rc int32
 46992  			*(*uintptr)(unsafe.Pointer(bp + 72)) = uintptr(0)
 46993  			var zVal uintptr = ts + 584
 46994  			if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+68) != 0 {
 46995  				return TCL_ERROR
 46996  			}
 46997  			rc = sqlite3.Xsqlite3_vtab_rhs_value(tls, pIdxInfo, *(*int32)(unsafe.Pointer(bp + 68)), bp+72)
 46998  			if rc != SQLITE_OK && rc != SQLITE_NOTFOUND {
 46999  				tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(1))
 47000  				return TCL_ERROR
 47001  			}
 47002  			if *(*uintptr)(unsafe.Pointer(bp + 72)) != 0 {
 47003  				zVal = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(bp + 72)))
 47004  			} else if objc == 4 {
 47005  				zVal = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)))
 47006  			}
 47007  			tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, zVal, -1))
 47008  			break
 47009  
 47010  		}
 47011  	}
 47012  
 47013  	return TCL_OK
 47014  }
 47015  
 47016  func tclBestIndex(tls *libc.TLS, tab uintptr, pIdxInfo uintptr) int32 {
 47017  	bp := tls.Alloc(108)
 47018  	defer tls.Free(108)
 47019  
 47020  	var pTab uintptr = tab
 47021  	var interp uintptr = (*tcl_vtab)(unsafe.Pointer(pTab)).Finterp
 47022  	var rc int32 = SQLITE_OK
 47023  
 47024  	var pScript uintptr
 47025  
 47026  	pScript = tcl.XTcl_DuplicateObj(tls, (*tcl_vtab)(unsafe.Pointer(pTab)).FpCmd)
 47027  	(*Tcl_Obj)(unsafe.Pointer(pScript)).FrefCount++
 47028  	tcl.XTcl_ListObjAppendElement(tls, interp, pScript, tcl.XTcl_NewStringObj(tls, ts+27599, -1))
 47029  
 47030  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([24]int8{})), bp+56, ts+28625, libc.VaList(bp, libc.PostIncInt32(&iNext, 1)))
 47031  	tcl.XTcl_CreateObjCommand(tls, interp, bp+56, *(*uintptr)(unsafe.Pointer(&struct {
 47032  		f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
 47033  	}{testBestIndexObj})), pIdxInfo, uintptr(0))
 47034  	tcl.XTcl_ListObjAppendElement(tls, interp, pScript, tcl.XTcl_NewStringObj(tls, bp+56, -1))
 47035  	rc = tcl.XTcl_EvalObjEx(tls, interp, pScript, TCL_EVAL_GLOBAL)
 47036  	tcl.XTcl_DeleteCommand(tls, interp, bp+56)
 47037  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 47038  		if libc.PreDecInt32(&(*Tcl_Obj)(unsafe.Pointer(pScript)).FrefCount, 1) <= 0 {
 47039  			tcl.XTclFreeObj(tls, pScript)
 47040  		}
 47041  	}
 47042  
 47043  	if rc != TCL_OK {
 47044  		var zErr uintptr = tcl.XTcl_GetStringResult(tls, interp)
 47045  		rc = SQLITE_ERROR
 47046  		(*tcl_vtab)(unsafe.Pointer(pTab)).Fbase.FzErrMsg = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp+8, zErr))
 47047  	} else {
 47048  		var pRes uintptr = tcl.XTcl_GetObjResult(tls, interp)
 47049  		*(*uintptr)(unsafe.Pointer(bp + 88)) = uintptr(0)
 47050  
 47051  		rc = tcl.XTcl_ListObjGetElements(tls, interp, pRes, bp+80, bp+88)
 47052  		if rc != TCL_OK {
 47053  			var zErr uintptr = tcl.XTcl_GetStringResult(tls, interp)
 47054  			rc = SQLITE_ERROR
 47055  			(*tcl_vtab)(unsafe.Pointer(pTab)).Fbase.FzErrMsg = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp+16, zErr))
 47056  		} else {
 47057  			var ii int32
 47058  			var iArgv int32 = 1
 47059  			for ii = 0; rc == SQLITE_OK && ii < *(*int32)(unsafe.Pointer(bp + 80)); ii = ii + 2 {
 47060  				var zCmd uintptr = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 88)) + uintptr(ii)*8)))
 47061  				var p uintptr = *(*uintptr)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 88)) + uintptr(ii+1)*8))
 47062  				if sqlite3.Xsqlite3_stricmp(tls, ts+28637, zCmd) == 0 {
 47063  					rc = tcl.XTcl_GetDoubleFromObj(tls, interp, p, pIdxInfo+64)
 47064  				} else if sqlite3.Xsqlite3_stricmp(tls, ts+28560, zCmd) == 0 {
 47065  					rc = tcl.XTcl_GetIntFromObj(tls, interp, p, pIdxInfo+60)
 47066  				} else if sqlite3.Xsqlite3_stricmp(tls, ts+28642, zCmd) == 0 {
 47067  					rc = tcl.XTcl_GetIntFromObj(tls, interp, p, pIdxInfo+40)
 47068  				} else if sqlite3.Xsqlite3_stricmp(tls, ts+28649, zCmd) == 0 {
 47069  					sqlite3.Xsqlite3_free(tls, (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxStr)
 47070  					(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxStr = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp+24, tcl.XTcl_GetString(tls, p)))
 47071  					(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FneedToFreeIdxStr = 1
 47072  				} else if sqlite3.Xsqlite3_stricmp(tls, ts+28656, zCmd) == 0 {
 47073  					*(*Tcl_WideInt)(unsafe.Pointer(bp + 96)) = int64(0)
 47074  					rc = tcl.XTcl_GetWideIntFromObj(tls, interp, p, bp+96)
 47075  					(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedRows = sqlite3_int64(tRowcnt(*(*Tcl_WideInt)(unsafe.Pointer(bp + 96))))
 47076  				} else if sqlite3.Xsqlite3_stricmp(tls, ts+28661, zCmd) == 0 ||
 47077  					sqlite3.Xsqlite3_stricmp(tls, ts+28665, zCmd) == 0 {
 47078  					rc = tcl.XTcl_GetIntFromObj(tls, interp, p, bp+104)
 47079  					if rc == SQLITE_OK {
 47080  						if *(*int32)(unsafe.Pointer(bp + 104)) < 0 || *(*int32)(unsafe.Pointer(bp + 104)) >= (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnConstraint {
 47081  							rc = SQLITE_ERROR
 47082  							(*tcl_vtab)(unsafe.Pointer(pTab)).Fbase.FzErrMsg = sqlite3.Xsqlite3_mprintf(tls, ts+28670, libc.VaList(bp+32, *(*int32)(unsafe.Pointer(bp + 104))))
 47083  						} else {
 47084  							var bOmit int32 = libc.Bool32(int32(*(*int8)(unsafe.Pointer(zCmd))) == 'o' || int32(*(*int8)(unsafe.Pointer(zCmd))) == 'O')
 47085  							(*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)
 47086  							(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(*(*int32)(unsafe.Pointer(bp + 104)))*8)).Fomit = uint8(bOmit)
 47087  						}
 47088  					}
 47089  				} else {
 47090  					rc = SQLITE_ERROR
 47091  					(*tcl_vtab)(unsafe.Pointer(pTab)).Fbase.FzErrMsg = sqlite3.Xsqlite3_mprintf(tls, ts+28454, libc.VaList(bp+40, zCmd))
 47092  				}
 47093  				if rc != SQLITE_OK && (*tcl_vtab)(unsafe.Pointer(pTab)).Fbase.FzErrMsg == uintptr(0) {
 47094  					var zErr uintptr = tcl.XTcl_GetStringResult(tls, interp)
 47095  					(*tcl_vtab)(unsafe.Pointer(pTab)).Fbase.FzErrMsg = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp+48, zErr))
 47096  				}
 47097  			}
 47098  		}
 47099  	}
 47100  
 47101  	return rc
 47102  }
 47103  
 47104  var iNext int32 = 43
 47105  
 47106  var tclModule = sqlite3_module{
 47107  	FxCreate:     0,
 47108  	FxConnect:    0,
 47109  	FxBestIndex:  0,
 47110  	FxDisconnect: 0,
 47111  	FxDestroy:    0,
 47112  	FxOpen:       0,
 47113  	FxClose:      0,
 47114  	FxFilter:     0,
 47115  	FxNext:       0,
 47116  	FxEof:        0,
 47117  	FxColumn:     0,
 47118  	FxRowid:      0,
 47119  }
 47120  
 47121  func register_tcl_module(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 47122  	bp := tls.Alloc(8)
 47123  	defer tls.Free(8)
 47124  
 47125  	if objc != 2 {
 47126  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2050)
 47127  		return TCL_ERROR
 47128  	}
 47129  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 47130  		return TCL_ERROR
 47131  	}
 47132  	sqlite3.Xsqlite3_create_module(tls, *(*uintptr)(unsafe.Pointer(bp)), ts+28685, uintptr(unsafe.Pointer(&tclModule)), interp)
 47133  	return TCL_OK
 47134  }
 47135  
 47136  func Sqlitetesttcl_Init(tls *libc.TLS, interp uintptr) int32 {
 47137  	var i int32
 47138  	for i = 0; uint64(i) < uint64(unsafe.Sizeof(aObjCmd4))/uint64(unsafe.Sizeof(struct {
 47139  		FzName      uintptr
 47140  		FxProc      uintptr
 47141  		FclientData uintptr
 47142  	}{})); i++ {
 47143  		tcl.XTcl_CreateObjCommand(tls, interp, aObjCmd4[i].FzName,
 47144  			aObjCmd4[i].FxProc, aObjCmd4[i].FclientData, uintptr(0))
 47145  	}
 47146  	return TCL_OK
 47147  }
 47148  
 47149  var aObjCmd4 = [1]struct {
 47150  	FzName      uintptr
 47151  	FxProc      uintptr
 47152  	FclientData uintptr
 47153  }{
 47154  	{FzName: ts + 28689, FxProc: 0},
 47155  }
 47156  
 47157  func ptrToText(tls *libc.TLS, p uintptr) uintptr {
 47158  	bp := tls.Alloc(8)
 47159  	defer tls.Free(8)
 47160  
 47161  	sqlite3.Xsqlite3_snprintf(tls, int32(uint64(unsafe.Sizeof(buf))-uint64(1)), uintptr(unsafe.Pointer(&buf)), ts+9889, libc.VaList(bp, p))
 47162  	return uintptr(unsafe.Pointer(&buf))
 47163  }
 47164  
 47165  var buf [100]int8
 47166  
 47167  func blobHandleFromObj1(tls *libc.TLS, interp uintptr, pObj uintptr, ppBlob uintptr) int32 {
 47168  	bp := tls.Alloc(8)
 47169  	defer tls.Free(8)
 47170  
 47171  	var z uintptr
 47172  
 47173  	z = tcl.XTcl_GetStringFromObj(tls, pObj, bp)
 47174  	if *(*int32)(unsafe.Pointer(bp)) == 0 {
 47175  		*(*uintptr)(unsafe.Pointer(ppBlob)) = uintptr(0)
 47176  	} else if *(*int32)(unsafe.Pointer(bp)) > 9 && 0 == libc.Xmemcmp(tls, ts+28709, z, uint64(9)) {
 47177  		var channel Tcl_Channel
 47178  		var instanceData ClientData
 47179  
 47180  		channel = tcl.XTcl_GetChannel(tls, interp, z, bp+4)
 47181  		if !(channel != 0) {
 47182  			return TCL_ERROR
 47183  		}
 47184  
 47185  		tcl.XTcl_Flush(tls, channel)
 47186  		tcl.XTcl_Seek(tls, channel, int64(0), SEEK_SET)
 47187  
 47188  		instanceData = tcl.XTcl_GetChannelInstanceData(tls, channel)
 47189  		*(*uintptr)(unsafe.Pointer(ppBlob)) = *(*uintptr)(unsafe.Pointer(instanceData))
 47190  	} else {
 47191  		*(*uintptr)(unsafe.Pointer(ppBlob)) = sqlite3TestTextToPtr(tls, z)
 47192  	}
 47193  
 47194  	return TCL_OK
 47195  }
 47196  
 47197  func blobStringFromObj(tls *libc.TLS, pObj uintptr) uintptr {
 47198  	bp := tls.Alloc(4)
 47199  	defer tls.Free(4)
 47200  
 47201  	var z uintptr
 47202  	z = tcl.XTcl_GetStringFromObj(tls, pObj, bp)
 47203  	return func() uintptr {
 47204  		if *(*int32)(unsafe.Pointer(bp)) != 0 {
 47205  			return z
 47206  		}
 47207  		return uintptr(0)
 47208  	}()
 47209  }
 47210  
 47211  func test_blob_open(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 47212  	bp := tls.Alloc(40)
 47213  	defer tls.Free(40)
 47214  
 47215  	var zDb uintptr
 47216  	var zTable uintptr
 47217  	var zColumn uintptr
 47218  
 47219  	var zVarname uintptr
 47220  
 47221  	*(*uintptr)(unsafe.Pointer(bp + 32)) = bp
 47222  	var rc int32
 47223  
 47224  	if objc != 8 {
 47225  		var zUsage uintptr = ts + 28719
 47226  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, zUsage)
 47227  		return TCL_ERROR
 47228  	}
 47229  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+8) != 0 {
 47230  		return TCL_ERROR
 47231  	}
 47232  	zDb = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 47233  	zTable = blobStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)))
 47234  	zColumn = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 4*8)))
 47235  	if tcl.XTcl_GetWideIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 5*8)), bp+16) != 0 {
 47236  		return TCL_ERROR
 47237  	}
 47238  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 6*8)), bp) != 0 {
 47239  		return TCL_ERROR
 47240  	}
 47241  	zVarname = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 7*8)), bp+24)
 47242  
 47243  	if *(*int32)(unsafe.Pointer(bp + 24)) > 0 {
 47244  		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)
 47245  		tcl.XTcl_SetVar(tls, interp, zVarname, ptrToText(tls, *(*uintptr)(unsafe.Pointer(bp + 32))), 0)
 47246  	} else {
 47247  		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))
 47248  	}
 47249  
 47250  	if rc == SQLITE_OK {
 47251  		tcl.XTcl_ResetResult(tls, interp)
 47252  	} else {
 47253  		tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(1))
 47254  		return TCL_ERROR
 47255  	}
 47256  	return TCL_OK
 47257  }
 47258  
 47259  func test_blob_close(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 47260  	bp := tls.Alloc(8)
 47261  	defer tls.Free(8)
 47262  
 47263  	var rc int32
 47264  
 47265  	if objc != 2 {
 47266  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+28764)
 47267  		return TCL_ERROR
 47268  	}
 47269  
 47270  	if blobHandleFromObj1(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp) != 0 {
 47271  		return TCL_ERROR
 47272  	}
 47273  	rc = sqlite3.Xsqlite3_blob_close(tls, *(*uintptr)(unsafe.Pointer(bp)))
 47274  
 47275  	if rc != 0 {
 47276  		tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(1))
 47277  	} else {
 47278  		tcl.XTcl_ResetResult(tls, interp)
 47279  	}
 47280  	return TCL_OK
 47281  }
 47282  
 47283  func test_blob_bytes(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 47284  	bp := tls.Alloc(8)
 47285  	defer tls.Free(8)
 47286  
 47287  	var nByte int32
 47288  
 47289  	if objc != 2 {
 47290  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+28764)
 47291  		return TCL_ERROR
 47292  	}
 47293  
 47294  	if blobHandleFromObj1(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp) != 0 {
 47295  		return TCL_ERROR
 47296  	}
 47297  	nByte = sqlite3.Xsqlite3_blob_bytes(tls, *(*uintptr)(unsafe.Pointer(bp)))
 47298  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, nByte))
 47299  
 47300  	return TCL_OK
 47301  }
 47302  
 47303  func test_blob_read(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 47304  	bp := tls.Alloc(32)
 47305  	defer tls.Free(32)
 47306  
 47307  	var zBuf uintptr = uintptr(0)
 47308  	var rc int32
 47309  
 47310  	if objc != 4 {
 47311  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+28771)
 47312  		return TCL_ERROR
 47313  	}
 47314  
 47315  	if blobHandleFromObj1(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp+16) != 0 {
 47316  		return TCL_ERROR
 47317  	}
 47318  	if TCL_OK != tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+24) ||
 47319  		TCL_OK != tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+28) {
 47320  		return TCL_ERROR
 47321  	}
 47322  
 47323  	if *(*int32)(unsafe.Pointer(bp + 28)) > 0 {
 47324  		zBuf = tcl.XTcl_AttemptAlloc(tls, uint32(*(*int32)(unsafe.Pointer(bp + 28))))
 47325  		if zBuf == uintptr(0) {
 47326  			tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+28788, 0))
 47327  			return TCL_ERROR
 47328  		}
 47329  	}
 47330  	rc = sqlite3.Xsqlite3_blob_read(tls, *(*uintptr)(unsafe.Pointer(bp + 16)), zBuf, *(*int32)(unsafe.Pointer(bp + 28)), *(*int32)(unsafe.Pointer(bp + 24)))
 47331  	if rc == SQLITE_OK {
 47332  		tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewByteArrayObj(tls, zBuf, *(*int32)(unsafe.Pointer(bp + 28))))
 47333  	} else {
 47334  		tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(1))
 47335  	}
 47336  	tcl.XTcl_Free(tls, zBuf)
 47337  
 47338  	return func() int32 {
 47339  		if rc == SQLITE_OK {
 47340  			return TCL_OK
 47341  		}
 47342  		return TCL_ERROR
 47343  	}()
 47344  }
 47345  
 47346  func test_blob_write(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 47347  	bp := tls.Alloc(16)
 47348  	defer tls.Free(16)
 47349  
 47350  	var rc int32
 47351  	var zBuf uintptr
 47352  
 47353  	if objc != 4 && objc != 5 {
 47354  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+28849)
 47355  		return TCL_ERROR
 47356  	}
 47357  
 47358  	if blobHandleFromObj1(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp) != 0 {
 47359  		return TCL_ERROR
 47360  	}
 47361  	if TCL_OK != tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+8) {
 47362  		return TCL_ERROR
 47363  	}
 47364  
 47365  	zBuf = tcl.XTcl_GetByteArrayFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+12)
 47366  	if objc == 5 && tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 4*8)), bp+12) != 0 {
 47367  		return TCL_ERROR
 47368  	}
 47369  	rc = sqlite3.Xsqlite3_blob_write(tls, *(*uintptr)(unsafe.Pointer(bp)), zBuf, *(*int32)(unsafe.Pointer(bp + 12)), *(*int32)(unsafe.Pointer(bp + 8)))
 47370  	if rc != SQLITE_OK {
 47371  		tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(1))
 47372  	}
 47373  
 47374  	return func() int32 {
 47375  		if rc == SQLITE_OK {
 47376  			return TCL_OK
 47377  		}
 47378  		return TCL_ERROR
 47379  	}()
 47380  }
 47381  
 47382  func Sqlitetest_blob_Init(tls *libc.TLS, interp uintptr) int32 {
 47383  	var i int32
 47384  	for i = 0; uint64(i) < uint64(unsafe.Sizeof(aObjCmd5))/uint64(unsafe.Sizeof(struct {
 47385  		FzName uintptr
 47386  		FxProc uintptr
 47387  	}{})); i++ {
 47388  		tcl.XTcl_CreateObjCommand(tls, interp, aObjCmd5[i].FzName, aObjCmd5[i].FxProc, uintptr(0), uintptr(0))
 47389  	}
 47390  	return TCL_OK
 47391  }
 47392  
 47393  var aObjCmd5 = [5]struct {
 47394  	FzName uintptr
 47395  	FxProc uintptr
 47396  }{
 47397  	{FzName: ts + 28876, FxProc: 0},
 47398  	{FzName: ts + 28894, FxProc: 0},
 47399  	{FzName: ts + 28913, FxProc: 0},
 47400  	{FzName: ts + 28932, FxProc: 0},
 47401  	{FzName: ts + 28950, FxProc: 0},
 47402  }
 47403  
 47404  func sqlite3BtreeSharedCacheReport(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 47405  	var pBt uintptr
 47406  	var pRet uintptr = tcl.XTcl_NewObj(tls)
 47407  	for pBt = sqlite3.Xsqlite3SharedCacheList; pBt != 0; pBt = (*BtShared)(unsafe.Pointer(pBt)).FpNext {
 47408  		var zFile uintptr = sqlite3.Xsqlite3PagerFilename(tls, (*BtShared)(unsafe.Pointer(pBt)).FpPager, 1)
 47409  		tcl.XTcl_ListObjAppendElement(tls, interp, pRet, tcl.XTcl_NewStringObj(tls, zFile, -1))
 47410  		tcl.XTcl_ListObjAppendElement(tls, interp, pRet, tcl.XTcl_NewIntObj(tls, (*BtShared)(unsafe.Pointer(pBt)).FnRef))
 47411  	}
 47412  	tcl.XTcl_SetObjResult(tls, interp, pRet)
 47413  	return TCL_OK
 47414  }
 47415  
 47416  func sqlite3BtreeCursorList(tls *libc.TLS, p uintptr) {
 47417  }
 47418  
 47419  func set_options(tls *libc.TLS, interp uintptr) {
 47420  	tcl.XTcl_SetVar2(tls, interp, ts+28969, ts+28984, ts+14193,
 47421  		TCL_GLOBAL_ONLY)
 47422  
 47423  	tcl.XTcl_SetVar2(tls, interp, ts+28969, ts+29003, ts+14193, TCL_GLOBAL_ONLY)
 47424  
 47425  	tcl.XTcl_SetVar2(tls, interp, ts+28969, ts+29011, ts+14193, TCL_GLOBAL_ONLY)
 47426  
 47427  	tcl.XTcl_SetVar2(tls, interp, ts+28969, ts+29029, ts+29042, TCL_GLOBAL_ONLY)
 47428  
 47429  	tcl.XTcl_SetVar2(tls, interp, ts+28969, ts+29046, ts+29053, TCL_GLOBAL_ONLY)
 47430  
 47431  	tcl.XTcl_SetVar2(tls, interp, ts+28969, ts+29055, ts+14193, TCL_GLOBAL_ONLY)
 47432  
 47433  	tcl.XTcl_SetVar2(tls, interp, ts+28969, ts+29067, ts+14193, TCL_GLOBAL_ONLY)
 47434  
 47435  	tcl.XTcl_SetVar2(tls, interp, ts+28969, ts+29073, ts+14193, TCL_GLOBAL_ONLY)
 47436  
 47437  	tcl.XTcl_SetVar2(tls, interp, ts+28969, ts+29095, ts+14193, TCL_GLOBAL_ONLY)
 47438  
 47439  	tcl.XTcl_SetVar2(tls, interp, ts+28969, ts+29107, ts+29053, TCL_GLOBAL_ONLY)
 47440  
 47441  	tcl.XTcl_SetVar2(tls, interp, ts+28969, ts+29115, ts+29053, TCL_GLOBAL_ONLY)
 47442  
 47443  	tcl.XTcl_SetVar2(tls, interp, ts+28969, ts+29119, ts+29053, TCL_GLOBAL_ONLY)
 47444  
 47445  	tcl.XTcl_SetVar2(tls, interp, ts+28969, ts+29144, ts+29053, TCL_GLOBAL_ONLY)
 47446  
 47447  	tcl.XTcl_SetVar2(tls, interp, ts+28969, ts+29149,
 47448  		ts+29164, TCL_GLOBAL_ONLY)
 47449  
 47450  	tcl.XTcl_SetVar2(tls, interp, ts+28969, ts+29166, ts+14193, TCL_GLOBAL_ONLY)
 47451  
 47452  	tcl.XTcl_SetVar2(tls, interp, ts+28969, ts+29175, ts+14193, TCL_GLOBAL_ONLY)
 47453  
 47454  	tcl.XTcl_SetVar2(tls, interp, ts+28969, ts+29185, ts+14193, TCL_GLOBAL_ONLY)
 47455  
 47456  	tcl.XTcl_SetVar2(tls, interp, ts+28969, ts+29197, ts+14193, TCL_GLOBAL_ONLY)
 47457  
 47458  	tcl.XTcl_SetVar2(tls, interp, ts+28969, ts+13460, ts+29053, TCL_GLOBAL_ONLY)
 47459  
 47460  	tcl.XTcl_SetVar2(tls, interp, ts+28969, ts+29211, ts+29053, TCL_GLOBAL_ONLY)
 47461  
 47462  	tcl.XTcl_SetVar2(tls, interp, ts+28969, ts+29219, ts+14193, TCL_GLOBAL_ONLY)
 47463  
 47464  	tcl.XTcl_SetVar2(tls, interp, ts+28969, ts+29224, ts+14193, TCL_GLOBAL_ONLY)
 47465  
 47466  	tcl.XTcl_SetVar2(tls, interp, ts+28969, ts+29229, ts+29053, TCL_GLOBAL_ONLY)
 47467  
 47468  	tcl.XTcl_SetVar2(tls, interp, ts+28969, ts+13580, ts+29053, TCL_GLOBAL_ONLY)
 47469  
 47470  	tcl.XTcl_SetVar2(tls, interp, ts+28969, ts+29245, ts+29053, TCL_GLOBAL_ONLY)
 47471  
 47472  	tcl.XTcl_SetVar2(tls, interp, ts+28969, ts+29254, ts+29053, TCL_GLOBAL_ONLY)
 47473  
 47474  	tcl.XTcl_SetVar2(tls, interp, ts+28969, ts+29260, ts+29053, TCL_GLOBAL_ONLY)
 47475  
 47476  	tcl.XTcl_SetVar2(tls, interp, ts+28969, ts+29271, ts+29053, TCL_GLOBAL_ONLY)
 47477  
 47478  	tcl.XTcl_SetVar2(tls, interp, ts+28969, ts+1957, ts+29053, TCL_GLOBAL_ONLY)
 47479  
 47480  	tcl.XTcl_SetVar2(tls, interp, ts+28969, ts+29282, ts+14193, TCL_GLOBAL_ONLY)
 47481  
 47482  	tcl.XTcl_SetVar2(tls, interp, ts+28969, ts+29292, ts+14193, TCL_GLOBAL_ONLY)
 47483  
 47484  	tcl.XTcl_SetVar2(tls, interp, ts+28969, ts+29304, ts+29053, TCL_GLOBAL_ONLY)
 47485  
 47486  	tcl.XTcl_SetVar2(tls, interp, ts+28969, ts+29312, ts+29053, TCL_GLOBAL_ONLY)
 47487  
 47488  	tcl.XTcl_SetVar2(tls, interp, ts+28969, ts+29318, ts+14193, TCL_GLOBAL_ONLY)
 47489  
 47490  	tcl.XTcl_SetVar2(tls, interp, ts+28969, ts+29328, ts+14193, TCL_GLOBAL_ONLY)
 47491  
 47492  	tcl.XTcl_SetVar2(tls, interp, ts+28969, ts+10121, ts+29053, TCL_GLOBAL_ONLY)
 47493  
 47494  	tcl.XTcl_SetVar2(tls, interp, ts+28969, ts+29345, ts+29053, TCL_GLOBAL_ONLY)
 47495  
 47496  	tcl.XTcl_SetVar2(tls, interp, ts+28969, ts+29350, ts+29053, TCL_GLOBAL_ONLY)
 47497  
 47498  	tcl.XTcl_SetVar2(tls, interp, ts+28969, ts+13044, ts+29053, TCL_GLOBAL_ONLY)
 47499  
 47500  	tcl.XTcl_SetVar2(tls, interp, ts+28969, ts+29358, ts+29053, TCL_GLOBAL_ONLY)
 47501  
 47502  	tcl.XTcl_SetVar2(tls, interp, ts+28969, ts+29368, ts+29053, TCL_GLOBAL_ONLY)
 47503  	tcl.XTcl_SetVar2(tls, interp, ts+28969, ts+29379,
 47504  		ts+14193, TCL_GLOBAL_ONLY)
 47505  
 47506  	tcl.XTcl_SetVar2(tls, interp, ts+28969, ts+29398, ts+29053, TCL_GLOBAL_ONLY)
 47507  
 47508  	tcl.XTcl_SetVar2(tls, interp, ts+28969, ts+29410, ts+29053, TCL_GLOBAL_ONLY)
 47509  
 47510  	tcl.XTcl_SetVar2(tls, interp, ts+28969, ts+29423, ts+29053, TCL_GLOBAL_ONLY)
 47511  
 47512  	tcl.XTcl_SetVar2(tls, interp, ts+28969, ts+29431, ts+29053, TCL_GLOBAL_ONLY)
 47513  
 47514  	tcl.XTcl_SetVar2(tls, interp, ts+28969, ts+29436, ts+29053, TCL_GLOBAL_ONLY)
 47515  
 47516  	tcl.XTcl_SetVar2(tls, interp, ts+28969, ts+29442, ts+29053, TCL_GLOBAL_ONLY)
 47517  
 47518  	tcl.XTcl_SetVar2(tls, interp, ts+28969, ts+29446, ts+29053, TCL_GLOBAL_ONLY)
 47519  
 47520  	tcl.XTcl_SetVar2(tls, interp, ts+28969, ts+29461, ts+14193,
 47521  		TCL_GLOBAL_ONLY)
 47522  
 47523  	tcl.XTcl_SetVar2(tls, interp, ts+28969, ts+29481, ts+29053, TCL_GLOBAL_ONLY)
 47524  
 47525  	tcl.XTcl_SetVar2(tls, interp, ts+28969, ts+13439, ts+29053, TCL_GLOBAL_ONLY)
 47526  
 47527  	tcl.XTcl_SetVar2(tls, interp, ts+28969, ts+29501, ts+29053, TCL_GLOBAL_ONLY)
 47528  
 47529  	tcl.XTcl_SetVar2(tls, interp, ts+28969, ts+29510, ts+29053, TCL_GLOBAL_ONLY)
 47530  	tcl.XTcl_SetVar2(tls, interp, ts+28969, ts+29519, ts+29053, TCL_GLOBAL_ONLY)
 47531  
 47532  	tcl.XTcl_SetVar2(tls, interp, ts+28969, ts+29529, ts+29053, TCL_GLOBAL_ONLY)
 47533  
 47534  	tcl.XTcl_SetVar2(tls, interp, ts+28969, ts+29538, ts+29053, TCL_GLOBAL_ONLY)
 47535  
 47536  	tcl.XTcl_SetVar2(tls, interp, ts+28969, ts+29547, ts+29053, TCL_GLOBAL_ONLY)
 47537  
 47538  	tcl.XTcl_SetVar2(tls, interp, ts+28969, ts+29558, ts+29053, TCL_GLOBAL_ONLY)
 47539  
 47540  	tcl.XTcl_SetVar2(tls, interp, ts+28969, ts+4974, ts+29053, TCL_GLOBAL_ONLY)
 47541  
 47542  	tcl.XTcl_SetVar2(tls, interp, ts+28969, ts+29565, ts+29053, TCL_GLOBAL_ONLY)
 47543  
 47544  	tcl.XTcl_SetVar2(tls, interp, ts+28969, ts+29579, ts+29053, TCL_GLOBAL_ONLY)
 47545  
 47546  	tcl.XTcl_SetVar2(tls, interp, ts+28969, ts+29590, ts+14193, TCL_GLOBAL_ONLY)
 47547  
 47548  	tcl.XTcl_SetVar2(tls, interp, ts+28969, ts+29595, ts+14193, TCL_GLOBAL_ONLY)
 47549  
 47550  	tcl.XTcl_SetVar2(tls, interp, ts+28969, ts+29600, ts+14193, TCL_GLOBAL_ONLY)
 47551  
 47552  	tcl.XTcl_SetVar2(tls, interp, ts+28969, ts+29605, ts+29053, TCL_GLOBAL_ONLY)
 47553  
 47554  	tcl.XTcl_SetVar2(tls, interp, ts+28969, ts+29610, ts+14193, TCL_GLOBAL_ONLY)
 47555  
 47556  	tcl.XTcl_SetVar2(tls, interp, ts+28969, ts+29623, ts+29053, TCL_GLOBAL_ONLY)
 47557  
 47558  	tcl.XTcl_SetVar2(tls, interp, ts+28969, ts+29637, ts+29053, TCL_GLOBAL_ONLY)
 47559  
 47560  	tcl.XTcl_SetVar2(tls, interp, ts+28969, ts+29646, ts+14193, TCL_GLOBAL_ONLY)
 47561  
 47562  	tcl.XTcl_SetVar2(tls, interp, ts+28969, ts+29650, ts+14193, TCL_GLOBAL_ONLY)
 47563  
 47564  	tcl.XTcl_SetVar2(tls, interp, ts+28969, ts+10868, ts+29053, TCL_GLOBAL_ONLY)
 47565  
 47566  	tcl.XTcl_SetVar2(tls, interp, ts+28969, ts+29665, ts+29053, TCL_GLOBAL_ONLY)
 47567  
 47568  	tcl.XTcl_SetVar2(tls, interp, ts+28969, ts+29677, ts+14193, TCL_GLOBAL_ONLY)
 47569  
 47570  	tcl.XTcl_SetVar2(tls, interp, ts+28969, ts+29690, ts+29053, TCL_GLOBAL_ONLY)
 47571  
 47572  	tcl.XTcl_SetVar2(tls, interp, ts+28969, ts+29699, ts+14193, TCL_GLOBAL_ONLY)
 47573  
 47574  	tcl.XTcl_SetVar2(tls, interp, ts+28969, ts+29708, ts+29053, TCL_GLOBAL_ONLY)
 47575  
 47576  	tcl.XTcl_SetVar2(tls, interp, ts+28969, ts+29718, ts+29053, TCL_GLOBAL_ONLY)
 47577  
 47578  	tcl.XTcl_SetVar2(tls, interp, ts+28969, ts+29728,
 47579  		func() uintptr {
 47580  			if uint64(unsafe.Sizeof(float64(0))) > uint64(unsafe.Sizeof(float64(0))) {
 47581  				return ts + 29053
 47582  			}
 47583  			return ts + 14193
 47584  		}(),
 47585  		TCL_GLOBAL_ONLY)
 47586  
 47587  	tcl.XTcl_SetVar2(tls, interp, ts+28969, ts+29740, ts+29053, TCL_GLOBAL_ONLY)
 47588  
 47589  	tcl.XTcl_SetVar2(tls, interp, ts+28969, ts+29749, ts+29053, TCL_GLOBAL_ONLY)
 47590  
 47591  	tcl.XTcl_SetVar2(tls, interp, ts+28969, ts+29762, ts+29053, TCL_GLOBAL_ONLY)
 47592  
 47593  	tcl.XTcl_SetVar2(tls, interp, ts+28969, ts+29772, ts+14193, TCL_GLOBAL_ONLY)
 47594  
 47595  	tcl.XTcl_SetVar2(tls, interp, ts+28969, ts+29782, ts+29053, TCL_GLOBAL_ONLY)
 47596  
 47597  	tcl.XTcl_SetVar2(tls, interp, ts+28969, ts+29789, ts+29053, TCL_GLOBAL_ONLY)
 47598  
 47599  	tcl.XTcl_SetVar2(tls, interp, ts+28969, ts+29793, ts+29053, TCL_GLOBAL_ONLY)
 47600  
 47601  	tcl.XTcl_SetVar2(tls, interp, ts+28969, ts+29807, ts+29053, TCL_GLOBAL_ONLY)
 47602  
 47603  	tcl.XTcl_SetVar2(tls, interp, ts+28969, ts+9564, ts+29053, TCL_GLOBAL_ONLY)
 47604  
 47605  	tcl.XTcl_SetVar2(tls, interp, ts+28969, ts+29814, ts+29053, TCL_GLOBAL_ONLY)
 47606  
 47607  	tcl.XTcl_SetVar2(tls, interp, ts+28969, ts+29822, ts+29053, TCL_GLOBAL_ONLY)
 47608  
 47609  	tcl.XTcl_SetVar2(tls, interp, ts+28969, ts+29828, ts+14193, TCL_GLOBAL_ONLY)
 47610  
 47611  	tcl.XTcl_SetVar2(tls, interp, ts+28969, ts+29843, ts+29053, TCL_GLOBAL_ONLY)
 47612  
 47613  	tcl.XTcl_SetVar2(tls, interp, ts+28969, ts+29858, ts+29053, TCL_GLOBAL_ONLY)
 47614  
 47615  	tcl.XTcl_SetVar2(tls, interp, ts+28969, ts+29873, ts+29053, TCL_GLOBAL_ONLY)
 47616  
 47617  	tcl.XTcl_SetVar2(tls, interp, ts+28969, ts+18896, ts+29053, TCL_GLOBAL_ONLY)
 47618  	tcl.XTcl_SetVar2(tls, interp, ts+28969, ts+29881, ts+29053, TCL_GLOBAL_ONLY)
 47619  
 47620  	tcl.XTcl_SetVar2(tls, interp, ts+28969, ts+29890, ts+14193, TCL_GLOBAL_ONLY)
 47621  
 47622  	tcl.XTcl_SetVar2(tls, interp, ts+28969, ts+29901, ts+29053, TCL_GLOBAL_ONLY)
 47623  	tcl.XTcl_SetVar2(tls, interp, ts+28969, ts+29920, ts+14193, TCL_GLOBAL_ONLY)
 47624  
 47625  	tcl.XTcl_SetVar2(tls, interp, ts+28969, ts+29941, ts+29053, TCL_GLOBAL_ONLY)
 47626  
 47627  	tcl.XTcl_SetVar2(tls, interp, ts+28969, ts+29954, ts+29053, TCL_GLOBAL_ONLY)
 47628  
 47629  	tcl.XTcl_SetVar2(tls, interp, ts+28969, ts+29963, ts+29053, TCL_GLOBAL_ONLY)
 47630  
 47631  	tcl.XTcl_SetVar2(tls, interp, ts+28969, ts+29970,
 47632  		func() uintptr {
 47633  			if 1 != 0 {
 47634  				return ts + 29053
 47635  			}
 47636  			return ts + 14193
 47637  		}(), TCL_GLOBAL_ONLY)
 47638  	tcl.XTcl_SetVar2(tls, interp, ts+28969, ts+29981,
 47639  		func() uintptr {
 47640  			if SQLITE_THREADSAFE == 1 {
 47641  				return ts + 29053
 47642  			}
 47643  			return ts + 14193
 47644  		}(), TCL_GLOBAL_ONLY)
 47645  	tcl.XTcl_SetVar2(tls, interp, ts+28969, ts+29993,
 47646  		func() uintptr {
 47647  			if SQLITE_THREADSAFE == 2 {
 47648  				return ts + 29053
 47649  			}
 47650  			return ts + 14193
 47651  		}(), TCL_GLOBAL_ONLY)
 47652  
 47653  	tcl.XTcl_SetVar2(tls, interp, ts+28969, ts+30005, ts+29053, TCL_GLOBAL_ONLY)
 47654  
 47655  	tcl.XTcl_SetVar2(tls, interp, ts+28969, ts+13665, ts+29053, TCL_GLOBAL_ONLY)
 47656  
 47657  	tcl.XTcl_SetVar2(tls, interp, ts+28969, ts+30012, ts+29053, TCL_GLOBAL_ONLY)
 47658  
 47659  	tcl.XTcl_SetVar2(tls, interp, ts+28969, ts+30020, ts+29053, TCL_GLOBAL_ONLY)
 47660  
 47661  	tcl.XTcl_SetVar2(tls, interp, ts+28969, ts+15733, ts+29053, TCL_GLOBAL_ONLY)
 47662  
 47663  	tcl.XTcl_SetVar2(tls, interp, ts+28969, ts+30033, ts+29053, TCL_GLOBAL_ONLY)
 47664  
 47665  	tcl.XTcl_SetVar2(tls, interp, ts+28969, ts+30040, ts+29053, TCL_GLOBAL_ONLY)
 47666  
 47667  	tcl.XTcl_SetVar2(tls, interp, ts+28969, ts+30045, ts+29053, TCL_GLOBAL_ONLY)
 47668  
 47669  	tcl.XTcl_SetVar2(tls, interp, ts+28969, ts+30050, ts+29053, TCL_GLOBAL_ONLY)
 47670  
 47671  	tcl.XTcl_SetVar2(tls, interp, ts+28969, ts+30054, ts+29053, TCL_GLOBAL_ONLY)
 47672  
 47673  	tcl.XTcl_SetVar2(tls, interp, ts+28969, ts+30058, ts+14193, TCL_GLOBAL_ONLY)
 47674  
 47675  	tcl.XTcl_SetVar2(tls, interp, ts+28969, ts+13692, ts+29053, TCL_GLOBAL_ONLY)
 47676  
 47677  	tcl.XTcl_SetVar2(tls, interp, ts+28969, ts+30078, ts+14193, TCL_GLOBAL_ONLY)
 47678  
 47679  	tcl.XTcl_SetVar2(tls, interp, ts+28969, ts+30097, ts+14193, TCL_GLOBAL_ONLY)
 47680  
 47681  	tcl.XTcl_SetVar2(tls, interp, ts+28969, ts+30111, ts+14193, TCL_GLOBAL_ONLY)
 47682  
 47683  	tcl.XTcl_SetVar2(tls, interp, ts+28969, ts+30120, ts+14193, TCL_GLOBAL_ONLY)
 47684  
 47685  	tcl.XTcl_SetVar2(tls, interp, ts+28969, ts+30144, ts+14193, TCL_GLOBAL_ONLY)
 47686  
 47687  	tcl.XTcl_SetVar2(tls, interp, ts+28969, ts+30165, ts+14193, TCL_GLOBAL_ONLY)
 47688  
 47689  	tcl.XTcl_SetVar2(tls, interp, ts+28969, ts+30172, ts+14193, TCL_GLOBAL_ONLY)
 47690  
 47691  	tcl.XTcl_SetVar2(tls, interp, ts+28969, ts+30185, ts+14193, TCL_GLOBAL_ONLY)
 47692  
 47693  	tcl.XTcl_SetVar2(tls, interp, ts+28969, ts+30195, ts+29053, TCL_GLOBAL_ONLY)
 47694  
 47695  	{
 47696  		tcl.XTcl_LinkVar(tls, interp, ts+30206, uintptr(unsafe.Pointer(&cv_MAX_LENGTH)), TCL_LINK_INT|TCL_LINK_READ_ONLY)
 47697  	}
 47698  
 47699  	{
 47700  		tcl.XTcl_LinkVar(tls, interp, ts+30224, uintptr(unsafe.Pointer(&cv_MAX_COLUMN)), TCL_LINK_INT|TCL_LINK_READ_ONLY)
 47701  	}
 47702  
 47703  	{
 47704  		tcl.XTcl_LinkVar(tls, interp, ts+30242, uintptr(unsafe.Pointer(&cv_MAX_SQL_LENGTH)), TCL_LINK_INT|TCL_LINK_READ_ONLY)
 47705  	}
 47706  
 47707  	{
 47708  		tcl.XTcl_LinkVar(tls, interp, ts+30264, uintptr(unsafe.Pointer(&cv_MAX_EXPR_DEPTH)), TCL_LINK_INT|TCL_LINK_READ_ONLY)
 47709  	}
 47710  
 47711  	{
 47712  		tcl.XTcl_LinkVar(tls, interp, ts+30286, uintptr(unsafe.Pointer(&cv_MAX_COMPOUND_SELECT)), TCL_LINK_INT|TCL_LINK_READ_ONLY)
 47713  	}
 47714  
 47715  	{
 47716  		tcl.XTcl_LinkVar(tls, interp, ts+30313, uintptr(unsafe.Pointer(&cv_MAX_VDBE_OP)), TCL_LINK_INT|TCL_LINK_READ_ONLY)
 47717  	}
 47718  
 47719  	{
 47720  		tcl.XTcl_LinkVar(tls, interp, ts+30332, uintptr(unsafe.Pointer(&cv_MAX_FUNCTION_ARG)), TCL_LINK_INT|TCL_LINK_READ_ONLY)
 47721  	}
 47722  
 47723  	{
 47724  		tcl.XTcl_LinkVar(tls, interp, ts+30356, uintptr(unsafe.Pointer(&cv_MAX_VARIABLE_NUMBER)), TCL_LINK_INT|TCL_LINK_READ_ONLY)
 47725  	}
 47726  
 47727  	{
 47728  		tcl.XTcl_LinkVar(tls, interp, ts+30383, uintptr(unsafe.Pointer(&cv_MAX_PAGE_SIZE)), TCL_LINK_INT|TCL_LINK_READ_ONLY)
 47729  	}
 47730  
 47731  	{
 47732  		tcl.XTcl_LinkVar(tls, interp, ts+30404, uintptr(unsafe.Pointer(&cv_MAX_PAGE_COUNT)), TCL_LINK_INT|TCL_LINK_READ_ONLY)
 47733  	}
 47734  
 47735  	{
 47736  		tcl.XTcl_LinkVar(tls, interp, ts+30426, uintptr(unsafe.Pointer(&cv_MAX_LIKE_PATTERN_LENGTH)), TCL_LINK_INT|TCL_LINK_READ_ONLY)
 47737  	}
 47738  
 47739  	{
 47740  		tcl.XTcl_LinkVar(tls, interp, ts+30457, uintptr(unsafe.Pointer(&cv_MAX_TRIGGER_DEPTH)), TCL_LINK_INT|TCL_LINK_READ_ONLY)
 47741  	}
 47742  
 47743  	{
 47744  		tcl.XTcl_LinkVar(tls, interp, ts+30482, uintptr(unsafe.Pointer(&cv_DEFAULT_CACHE_SIZE)), TCL_LINK_INT|TCL_LINK_READ_ONLY)
 47745  	}
 47746  
 47747  	{
 47748  		tcl.XTcl_LinkVar(tls, interp, ts+30508, uintptr(unsafe.Pointer(&cv_DEFAULT_PAGE_SIZE)), TCL_LINK_INT|TCL_LINK_READ_ONLY)
 47749  	}
 47750  
 47751  	{
 47752  		tcl.XTcl_LinkVar(tls, interp, ts+30533, uintptr(unsafe.Pointer(&cv_DEFAULT_FILE_FORMAT)), TCL_LINK_INT|TCL_LINK_READ_ONLY)
 47753  	}
 47754  
 47755  	{
 47756  		tcl.XTcl_LinkVar(tls, interp, ts+30560, uintptr(unsafe.Pointer(&cv_DEFAULT_SYNCHRONOUS)), TCL_LINK_INT|TCL_LINK_READ_ONLY)
 47757  	}
 47758  
 47759  	{
 47760  		tcl.XTcl_LinkVar(tls, interp, ts+30587, uintptr(unsafe.Pointer(&cv_DEFAULT_WAL_SYNCHRONOUS)), TCL_LINK_INT|TCL_LINK_READ_ONLY)
 47761  	}
 47762  
 47763  	{
 47764  		tcl.XTcl_LinkVar(tls, interp, ts+30618, uintptr(unsafe.Pointer(&cv_MAX_ATTACHED)), TCL_LINK_INT|TCL_LINK_READ_ONLY)
 47765  	}
 47766  
 47767  	{
 47768  		tcl.XTcl_LinkVar(tls, interp, ts+30638, uintptr(unsafe.Pointer(&cv_MAX_DEFAULT_PAGE_SIZE)), TCL_LINK_INT|TCL_LINK_READ_ONLY)
 47769  	}
 47770  
 47771  	{
 47772  		tcl.XTcl_LinkVar(tls, interp, ts+30667, uintptr(unsafe.Pointer(&cv_MAX_WORKER_THREADS)), TCL_LINK_INT|TCL_LINK_READ_ONLY)
 47773  	}
 47774  
 47775  	{
 47776  		tcl.XTcl_LinkVar(tls, interp, ts+30693, uintptr(unsafe.Pointer(&cv_TEMP_STORE)),
 47777  			TCL_LINK_INT|TCL_LINK_READ_ONLY)
 47778  
 47779  	}
 47780  
 47781  	{
 47782  		tcl.XTcl_LinkVar(tls, interp, ts+30704, uintptr(unsafe.Pointer(&cv___GNUC__)),
 47783  			TCL_LINK_INT|TCL_LINK_READ_ONLY)
 47784  
 47785  	}
 47786  }
 47787  
 47788  var cv_MAX_LENGTH int32 = SQLITE_MAX_LENGTH
 47789  var cv_MAX_COLUMN int32 = SQLITE_MAX_COLUMN
 47790  var cv_MAX_SQL_LENGTH int32 = SQLITE_MAX_SQL_LENGTH
 47791  var cv_MAX_EXPR_DEPTH int32 = SQLITE_MAX_EXPR_DEPTH
 47792  var cv_MAX_COMPOUND_SELECT int32 = SQLITE_MAX_COMPOUND_SELECT
 47793  var cv_MAX_VDBE_OP int32 = SQLITE_MAX_VDBE_OP
 47794  var cv_MAX_FUNCTION_ARG int32 = SQLITE_MAX_FUNCTION_ARG
 47795  var cv_MAX_VARIABLE_NUMBER int32 = SQLITE_MAX_VARIABLE_NUMBER
 47796  var cv_MAX_PAGE_SIZE int32 = SQLITE_MAX_PAGE_SIZE
 47797  var cv_MAX_PAGE_COUNT int32 = SQLITE_MAX_PAGE_COUNT
 47798  var cv_MAX_LIKE_PATTERN_LENGTH int32 = SQLITE_MAX_LIKE_PATTERN_LENGTH
 47799  var cv_MAX_TRIGGER_DEPTH int32 = SQLITE_MAX_TRIGGER_DEPTH
 47800  var cv_DEFAULT_CACHE_SIZE int32 = -2000
 47801  var cv_DEFAULT_PAGE_SIZE int32 = SQLITE_DEFAULT_PAGE_SIZE
 47802  var cv_DEFAULT_FILE_FORMAT int32 = SQLITE_DEFAULT_FILE_FORMAT
 47803  var cv_DEFAULT_SYNCHRONOUS int32 = SQLITE_DEFAULT_SYNCHRONOUS
 47804  var cv_DEFAULT_WAL_SYNCHRONOUS int32 = SQLITE_DEFAULT_SYNCHRONOUS
 47805  var cv_MAX_ATTACHED int32 = SQLITE_MAX_ATTACHED
 47806  var cv_MAX_DEFAULT_PAGE_SIZE int32 = SQLITE_MAX_DEFAULT_PAGE_SIZE
 47807  var cv_MAX_WORKER_THREADS int32 = SQLITE_MAX_WORKER_THREADS
 47808  var cv_TEMP_STORE int32 = SQLITE_TEMP_STORE
 47809  var cv___GNUC__ int32 = 1
 47810  
 47811  func Sqliteconfig_Init(tls *libc.TLS, interp uintptr) int32 {
 47812  	set_options(tls, interp)
 47813  	return TCL_OK
 47814  }
 47815  
 47816  func sqlite3Delete83Name(tls *libc.TLS, z uintptr) {
 47817  	var i int32
 47818  	var sz int32
 47819  	sz = int32(libc.Xstrlen(tls, z))
 47820  	for i = sz - 1; i > 0 && int32(*(*int8)(unsafe.Pointer(z + uintptr(i)))) != '/' && int32(*(*int8)(unsafe.Pointer(z + uintptr(i)))) != '.'; i-- {
 47821  	}
 47822  	if int32(*(*int8)(unsafe.Pointer(z + uintptr(i)))) == '.' && sz > i+4 {
 47823  		libc.X__builtin___memmove_chk(tls, z+uintptr(i+1), z+uintptr(sz-3), uint64(4), libc.X__builtin_object_size(tls, z+uintptr(i+1), 0))
 47824  	}
 47825  }
 47826  
 47827  func sqlite3DeleteUnlinkIfExists(tls *libc.TLS, pVfs uintptr, zFile uintptr, pbExists uintptr) int32 {
 47828  	var rc int32 = SQLITE_ERROR
 47829  
 47830  	rc = libc.Xaccess(tls, zFile, F_OK)
 47831  	if rc != 0 {
 47832  		if *(*int32)(unsafe.Pointer(libc.X__error(tls))) == ENOENT {
 47833  			if pbExists != 0 {
 47834  				*(*int32)(unsafe.Pointer(pbExists)) = 0
 47835  			}
 47836  			rc = SQLITE_OK
 47837  		}
 47838  	} else {
 47839  		if pbExists != 0 {
 47840  			*(*int32)(unsafe.Pointer(pbExists)) = 1
 47841  		}
 47842  		rc = libc.Xunlink(tls, zFile)
 47843  	}
 47844  	return rc
 47845  }
 47846  
 47847  func sqlite3_delete_database(tls *libc.TLS, zFile uintptr) int32 {
 47848  	bp := tls.Alloc(156)
 47849  	defer tls.Free(156)
 47850  
 47851  	var zBuf uintptr
 47852  	var nBuf int32
 47853  	var rc int32 = 0
 47854  	var i int32
 47855  
 47856  	*(*[4]uintptr)(unsafe.Pointer(bp + 24)) = [4]uintptr{ts, ts + 30713, ts + 30724, ts + 30731}
 47857  
 47858  	*(*[6]MFile)(unsafe.Pointer(bp + 56)) = [6]MFile{
 47859  		{FzFmt: ts + 30738},
 47860  		{FzFmt: ts + 30745},
 47861  		{FzFmt: ts + 30760},
 47862  		{FzFmt: ts + 30738, Fb83: 1},
 47863  		{FzFmt: ts + 30745, FiOffset: SQLITE_MULTIPLEX_JOURNAL_8_3_OFFSET, Fb83: 1},
 47864  		{FzFmt: ts + 30760, FiOffset: SQLITE_MULTIPLEX_WAL_8_3_OFFSET, Fb83: 1},
 47865  	}
 47866  
 47867  	var pVfs uintptr = uintptr(0)
 47868  
 47869  	nBuf = int32(libc.Xstrlen(tls, zFile)) + 100
 47870  	zBuf = sqlite3.Xsqlite3_malloc(tls, nBuf)
 47871  	if zBuf == uintptr(0) {
 47872  		return SQLITE_NOMEM
 47873  	}
 47874  
 47875  	for i = 0; rc == 0 && uint64(i) < uint64(unsafe.Sizeof([4]uintptr{}))/uint64(unsafe.Sizeof(uintptr(0))); i++ {
 47876  		sqlite3.Xsqlite3_snprintf(tls, nBuf, zBuf, *(*uintptr)(unsafe.Pointer(bp + 24 + uintptr(i)*8)), libc.VaList(bp, zFile))
 47877  		rc = sqlite3DeleteUnlinkIfExists(tls, pVfs, zBuf, uintptr(0))
 47878  		if rc == 0 && i != 0 {
 47879  			sqlite3Delete83Name(tls, zBuf)
 47880  			rc = sqlite3DeleteUnlinkIfExists(tls, pVfs, zBuf, uintptr(0))
 47881  		}
 47882  	}
 47883  
 47884  	for i = 0; rc == 0 && uint64(i) < uint64(unsafe.Sizeof([6]MFile{}))/uint64(unsafe.Sizeof(MFile{})); i++ {
 47885  		var p uintptr = bp + 56 + uintptr(i)*16
 47886  		var iChunk int32
 47887  		for iChunk = 1; iChunk <= MX_CHUNK_NUMBER; iChunk++ {
 47888  			sqlite3.Xsqlite3_snprintf(tls, nBuf, zBuf, (*MFile)(unsafe.Pointer(p)).FzFmt, libc.VaList(bp+8, zFile, iChunk+(*MFile)(unsafe.Pointer(p)).FiOffset))
 47889  			if (*MFile)(unsafe.Pointer(p)).Fb83 != 0 {
 47890  				sqlite3Delete83Name(tls, zBuf)
 47891  			}
 47892  			rc = sqlite3DeleteUnlinkIfExists(tls, pVfs, zBuf, bp+152)
 47893  			if *(*int32)(unsafe.Pointer(bp + 152)) == 0 || rc != 0 {
 47894  				break
 47895  			}
 47896  		}
 47897  	}
 47898  
 47899  	sqlite3.Xsqlite3_free(tls, zBuf)
 47900  	return func() int32 {
 47901  		if rc != 0 {
 47902  			return SQLITE_ERROR
 47903  		}
 47904  		return SQLITE_OK
 47905  	}()
 47906  }
 47907  
 47908  type MFile = struct {
 47909  	FzFmt    uintptr
 47910  	FiOffset int32
 47911  	Fb83     int32
 47912  }
 47913  
 47914  type kauth_cred_t = uintptr
 47915  type posix_cred_t = uintptr
 47916  
 47917  type DemoFile1 = struct {
 47918  	Fbase        sqlite3_file
 47919  	Ffd          int32
 47920  	F__ccgo_pad1 [4]byte
 47921  	FaBuffer     uintptr
 47922  	FnBuffer     int32
 47923  	F__ccgo_pad2 [4]byte
 47924  	FiBufferOfst sqlite3_int64
 47925  }
 47926  
 47927  type DemoFile = DemoFile1
 47928  
 47929  func demoDirectWrite(tls *libc.TLS, p uintptr, zBuf uintptr, iAmt int32, iOfst sqlite_int64) int32 {
 47930  	var ofst off_t
 47931  	var nWrite size_t
 47932  
 47933  	ofst = libc.Xlseek(tls, (*DemoFile)(unsafe.Pointer(p)).Ffd, iOfst, SEEK_SET)
 47934  	if ofst != iOfst {
 47935  		return SQLITE_IOERR | int32(3)<<8
 47936  	}
 47937  
 47938  	nWrite = size_t(libc.Xwrite(tls, (*DemoFile)(unsafe.Pointer(p)).Ffd, zBuf, uint64(iAmt)))
 47939  	if nWrite != size_t(iAmt) {
 47940  		return SQLITE_IOERR | int32(3)<<8
 47941  	}
 47942  
 47943  	return SQLITE_OK
 47944  }
 47945  
 47946  func demoFlushBuffer(tls *libc.TLS, p uintptr) int32 {
 47947  	var rc int32 = SQLITE_OK
 47948  	if (*DemoFile)(unsafe.Pointer(p)).FnBuffer != 0 {
 47949  		rc = demoDirectWrite(tls, p, (*DemoFile)(unsafe.Pointer(p)).FaBuffer, (*DemoFile)(unsafe.Pointer(p)).FnBuffer, (*DemoFile)(unsafe.Pointer(p)).FiBufferOfst)
 47950  		(*DemoFile)(unsafe.Pointer(p)).FnBuffer = 0
 47951  	}
 47952  	return rc
 47953  }
 47954  
 47955  func demoClose(tls *libc.TLS, pFile uintptr) int32 {
 47956  	var rc int32
 47957  	var p uintptr = pFile
 47958  	rc = demoFlushBuffer(tls, p)
 47959  	sqlite3.Xsqlite3_free(tls, (*DemoFile)(unsafe.Pointer(p)).FaBuffer)
 47960  	libc.Xclose(tls, (*DemoFile)(unsafe.Pointer(p)).Ffd)
 47961  	return rc
 47962  }
 47963  
 47964  func demoRead(tls *libc.TLS, pFile uintptr, zBuf uintptr, iAmt int32, iOfst sqlite_int64) int32 {
 47965  	var p uintptr = pFile
 47966  	var ofst off_t
 47967  	var nRead int32
 47968  	var rc int32
 47969  
 47970  	rc = demoFlushBuffer(tls, p)
 47971  	if rc != SQLITE_OK {
 47972  		return rc
 47973  	}
 47974  
 47975  	ofst = libc.Xlseek(tls, (*DemoFile)(unsafe.Pointer(p)).Ffd, iOfst, SEEK_SET)
 47976  	if ofst != iOfst {
 47977  		return SQLITE_IOERR | int32(1)<<8
 47978  	}
 47979  	nRead = int32(libc.Xread(tls, (*DemoFile)(unsafe.Pointer(p)).Ffd, zBuf, uint64(iAmt)))
 47980  
 47981  	if nRead == iAmt {
 47982  		return SQLITE_OK
 47983  	} else if nRead >= 0 {
 47984  		if nRead < iAmt {
 47985  			libc.X__builtin___memset_chk(tls, zBuf+uintptr(nRead), 0, uint64(iAmt-nRead), libc.X__builtin_object_size(tls, zBuf+uintptr(nRead), 0))
 47986  		}
 47987  		return SQLITE_IOERR | int32(2)<<8
 47988  	}
 47989  
 47990  	return SQLITE_IOERR | int32(1)<<8
 47991  }
 47992  
 47993  func demoWrite(tls *libc.TLS, pFile uintptr, zBuf uintptr, iAmt int32, iOfst sqlite_int64) int32 {
 47994  	var p uintptr = pFile
 47995  
 47996  	if (*DemoFile)(unsafe.Pointer(p)).FaBuffer != 0 {
 47997  		var z uintptr = zBuf
 47998  		var n int32 = iAmt
 47999  		var i sqlite3_int64 = iOfst
 48000  
 48001  		for n > 0 {
 48002  			var nCopy int32
 48003  
 48004  			if (*DemoFile)(unsafe.Pointer(p)).FnBuffer == SQLITE_DEMOVFS_BUFFERSZ || (*DemoFile)(unsafe.Pointer(p)).FiBufferOfst+sqlite3_int64((*DemoFile)(unsafe.Pointer(p)).FnBuffer) != i {
 48005  				var rc int32 = demoFlushBuffer(tls, p)
 48006  				if rc != SQLITE_OK {
 48007  					return rc
 48008  				}
 48009  			}
 48010  
 48011  			(*DemoFile)(unsafe.Pointer(p)).FiBufferOfst = i - sqlite3_int64((*DemoFile)(unsafe.Pointer(p)).FnBuffer)
 48012  
 48013  			nCopy = SQLITE_DEMOVFS_BUFFERSZ - (*DemoFile)(unsafe.Pointer(p)).FnBuffer
 48014  			if nCopy > n {
 48015  				nCopy = n
 48016  			}
 48017  			libc.X__builtin___memcpy_chk(tls, (*DemoFile)(unsafe.Pointer(p)).FaBuffer+uintptr((*DemoFile)(unsafe.Pointer(p)).FnBuffer), z, uint64(nCopy), libc.X__builtin_object_size(tls, (*DemoFile)(unsafe.Pointer(p)).FaBuffer+uintptr((*DemoFile)(unsafe.Pointer(p)).FnBuffer), 0))
 48018  			*(*int32)(unsafe.Pointer(p + 24)) += nCopy
 48019  
 48020  			n = n - nCopy
 48021  			i = i + sqlite3_int64(nCopy)
 48022  			z += uintptr(nCopy)
 48023  		}
 48024  	} else {
 48025  		return demoDirectWrite(tls, p, zBuf, iAmt, iOfst)
 48026  	}
 48027  
 48028  	return SQLITE_OK
 48029  }
 48030  
 48031  func demoTruncate(tls *libc.TLS, pFile uintptr, size sqlite_int64) int32 {
 48032  	return SQLITE_OK
 48033  }
 48034  
 48035  func demoSync(tls *libc.TLS, pFile uintptr, flags int32) int32 {
 48036  	var p uintptr = pFile
 48037  	var rc int32
 48038  
 48039  	rc = demoFlushBuffer(tls, p)
 48040  	if rc != SQLITE_OK {
 48041  		return rc
 48042  	}
 48043  
 48044  	rc = libc.Xfsync(tls, (*DemoFile)(unsafe.Pointer(p)).Ffd)
 48045  	return func() int32 {
 48046  		if rc == 0 {
 48047  			return SQLITE_OK
 48048  		}
 48049  		return SQLITE_IOERR | int32(4)<<8
 48050  	}()
 48051  }
 48052  
 48053  func demoFileSize(tls *libc.TLS, pFile uintptr, pSize uintptr) int32 {
 48054  	bp := tls.Alloc(144)
 48055  	defer tls.Free(144)
 48056  
 48057  	var p uintptr = pFile
 48058  	var rc int32
 48059  
 48060  	rc = demoFlushBuffer(tls, p)
 48061  	if rc != SQLITE_OK {
 48062  		return rc
 48063  	}
 48064  
 48065  	rc = libc.Xfstat(tls, (*DemoFile)(unsafe.Pointer(p)).Ffd, bp)
 48066  	if rc != 0 {
 48067  		return SQLITE_IOERR | int32(7)<<8
 48068  	}
 48069  	*(*sqlite_int64)(unsafe.Pointer(pSize)) = (*stat)(unsafe.Pointer(bp)).Fst_size
 48070  	return SQLITE_OK
 48071  }
 48072  
 48073  func demoLock(tls *libc.TLS, pFile uintptr, eLock int32) int32 {
 48074  	return SQLITE_OK
 48075  }
 48076  
 48077  func demoUnlock(tls *libc.TLS, pFile uintptr, eLock int32) int32 {
 48078  	return SQLITE_OK
 48079  }
 48080  
 48081  func demoCheckReservedLock(tls *libc.TLS, pFile uintptr, pResOut uintptr) int32 {
 48082  	*(*int32)(unsafe.Pointer(pResOut)) = 0
 48083  	return SQLITE_OK
 48084  }
 48085  
 48086  func demoFileControl(tls *libc.TLS, pFile uintptr, op int32, pArg uintptr) int32 {
 48087  	return SQLITE_NOTFOUND
 48088  }
 48089  
 48090  func demoSectorSize(tls *libc.TLS, pFile uintptr) int32 {
 48091  	return 0
 48092  }
 48093  
 48094  func demoDeviceCharacteristics(tls *libc.TLS, pFile uintptr) int32 {
 48095  	return 0
 48096  }
 48097  
 48098  func demoOpen(tls *libc.TLS, pVfs uintptr, zName uintptr, pFile uintptr, flags int32, pOutFlags uintptr) int32 {
 48099  	bp := tls.Alloc(8)
 48100  	defer tls.Free(8)
 48101  
 48102  	var p uintptr = pFile
 48103  	var oflags int32 = 0
 48104  	var aBuf uintptr = uintptr(0)
 48105  
 48106  	if zName == uintptr(0) {
 48107  		return SQLITE_IOERR
 48108  	}
 48109  
 48110  	if flags&SQLITE_OPEN_MAIN_JOURNAL != 0 {
 48111  		aBuf = sqlite3.Xsqlite3_malloc(tls, SQLITE_DEMOVFS_BUFFERSZ)
 48112  		if !(aBuf != 0) {
 48113  			return SQLITE_NOMEM
 48114  		}
 48115  	}
 48116  
 48117  	if flags&SQLITE_OPEN_EXCLUSIVE != 0 {
 48118  		oflags = oflags | O_EXCL
 48119  	}
 48120  	if flags&SQLITE_OPEN_CREATE != 0 {
 48121  		oflags = oflags | O_CREAT
 48122  	}
 48123  	if flags&SQLITE_OPEN_READONLY != 0 {
 48124  		oflags = oflags | O_RDONLY
 48125  	}
 48126  	if flags&SQLITE_OPEN_READWRITE != 0 {
 48127  		oflags = oflags | O_RDWR
 48128  	}
 48129  
 48130  	libc.X__builtin___memset_chk(tls, p, 0, uint64(unsafe.Sizeof(DemoFile{})), libc.X__builtin_object_size(tls, p, 0))
 48131  	(*DemoFile)(unsafe.Pointer(p)).Ffd = libc.Xopen(tls, zName, oflags, libc.VaList(bp, 0600))
 48132  	if (*DemoFile)(unsafe.Pointer(p)).Ffd < 0 {
 48133  		sqlite3.Xsqlite3_free(tls, aBuf)
 48134  		return SQLITE_CANTOPEN
 48135  	}
 48136  	(*DemoFile)(unsafe.Pointer(p)).FaBuffer = aBuf
 48137  
 48138  	if pOutFlags != 0 {
 48139  		*(*int32)(unsafe.Pointer(pOutFlags)) = flags
 48140  	}
 48141  	(*DemoFile)(unsafe.Pointer(p)).Fbase.FpMethods = uintptr(unsafe.Pointer(&demoio))
 48142  	return SQLITE_OK
 48143  }
 48144  
 48145  var demoio = sqlite3_io_methods{
 48146  	FiVersion:               1,
 48147  	FxClose:                 0,
 48148  	FxRead:                  0,
 48149  	FxWrite:                 0,
 48150  	FxTruncate:              0,
 48151  	FxSync:                  0,
 48152  	FxFileSize:              0,
 48153  	FxLock:                  0,
 48154  	FxUnlock:                0,
 48155  	FxCheckReservedLock:     0,
 48156  	FxFileControl:           0,
 48157  	FxSectorSize:            0,
 48158  	FxDeviceCharacteristics: 0,
 48159  }
 48160  
 48161  func demoDelete(tls *libc.TLS, pVfs uintptr, zPath uintptr, dirSync int32) int32 {
 48162  	bp := tls.Alloc(529)
 48163  	defer tls.Free(529)
 48164  
 48165  	var rc int32
 48166  
 48167  	rc = libc.Xunlink(tls, zPath)
 48168  	if rc != 0 && *(*int32)(unsafe.Pointer(libc.X__error(tls))) == ENOENT {
 48169  		return SQLITE_OK
 48170  	}
 48171  
 48172  	if rc == 0 && dirSync != 0 {
 48173  		var dfd int32
 48174  		var i int32
 48175  
 48176  		sqlite3.Xsqlite3_snprintf(tls, MAXPATHNAME, bp+16, ts, libc.VaList(bp, zPath))
 48177  		*(*int8)(unsafe.Pointer(bp + 16 + 512)) = int8(0)
 48178  		for i = int32(libc.Xstrlen(tls, bp+16)); i > 1 && int32(*(*int8)(unsafe.Pointer(bp + 16 + uintptr(i)))) != '/'; i++ {
 48179  		}
 48180  		*(*int8)(unsafe.Pointer(bp + 16 + uintptr(i))) = int8(0)
 48181  
 48182  		dfd = libc.Xopen(tls, bp+16, O_RDONLY, libc.VaList(bp+8, 0))
 48183  		if dfd < 0 {
 48184  			rc = -1
 48185  		} else {
 48186  			rc = libc.Xfsync(tls, dfd)
 48187  			libc.Xclose(tls, dfd)
 48188  		}
 48189  	}
 48190  	return func() int32 {
 48191  		if rc == 0 {
 48192  			return SQLITE_OK
 48193  		}
 48194  		return SQLITE_IOERR | int32(10)<<8
 48195  	}()
 48196  }
 48197  
 48198  func demoAccess(tls *libc.TLS, pVfs uintptr, zPath uintptr, flags int32, pResOut uintptr) int32 {
 48199  	var rc int32
 48200  	var eAccess int32 = F_OK
 48201  
 48202  	if flags == SQLITE_ACCESS_READWRITE {
 48203  		eAccess = int32(1)<<2 | int32(1)<<1
 48204  	}
 48205  	if flags == SQLITE_ACCESS_READ {
 48206  		eAccess = int32(1) << 2
 48207  	}
 48208  
 48209  	rc = libc.Xaccess(tls, zPath, eAccess)
 48210  	*(*int32)(unsafe.Pointer(pResOut)) = libc.Bool32(rc == 0)
 48211  	return SQLITE_OK
 48212  }
 48213  
 48214  func demoFullPathname(tls *libc.TLS, pVfs uintptr, zPath uintptr, nPathOut int32, zPathOut uintptr) int32 {
 48215  	bp := tls.Alloc(529)
 48216  	defer tls.Free(529)
 48217  
 48218  	if int32(*(*int8)(unsafe.Pointer(zPath))) == '/' {
 48219  		*(*int8)(unsafe.Pointer(bp + 16)) = int8(0)
 48220  	} else {
 48221  		if libc.Xgetcwd(tls, bp+16, uint64(unsafe.Sizeof([513]int8{}))) == uintptr(0) {
 48222  			return SQLITE_IOERR
 48223  		}
 48224  	}
 48225  	*(*int8)(unsafe.Pointer(bp + 16 + 512)) = int8(0)
 48226  
 48227  	sqlite3.Xsqlite3_snprintf(tls, nPathOut, zPathOut, ts+5206, libc.VaList(bp, bp+16, zPath))
 48228  	*(*int8)(unsafe.Pointer(zPathOut + uintptr(nPathOut-1))) = int8(0)
 48229  
 48230  	return SQLITE_OK
 48231  }
 48232  
 48233  func demoDlOpen(tls *libc.TLS, pVfs uintptr, zPath uintptr) uintptr {
 48234  	return uintptr(0)
 48235  }
 48236  
 48237  func demoDlError(tls *libc.TLS, pVfs uintptr, nByte int32, zErrMsg uintptr) {
 48238  	sqlite3.Xsqlite3_snprintf(tls, nByte, zErrMsg, ts+30771, 0)
 48239  	*(*int8)(unsafe.Pointer(zErrMsg + uintptr(nByte-1))) = int8(0)
 48240  }
 48241  
 48242  func demoDlSym(tls *libc.TLS, pVfs uintptr, pH uintptr, z uintptr) uintptr {
 48243  	return uintptr(0)
 48244  }
 48245  
 48246  func demoDlClose(tls *libc.TLS, pVfs uintptr, pHandle uintptr) {
 48247  	return
 48248  }
 48249  
 48250  func demoRandomness(tls *libc.TLS, pVfs uintptr, nByte int32, zByte uintptr) int32 {
 48251  	return SQLITE_OK
 48252  }
 48253  
 48254  func demoSleep(tls *libc.TLS, pVfs uintptr, nMicro int32) int32 {
 48255  	libc.Xsleep(tls, uint32(nMicro/1000000))
 48256  	libc.Xusleep(tls, uint32(nMicro%1000000))
 48257  	return nMicro
 48258  }
 48259  
 48260  func demoCurrentTime(tls *libc.TLS, pVfs uintptr, pTime uintptr) int32 {
 48261  	var t time_t = libc.Xtime(tls, uintptr(0))
 48262  	*(*float64)(unsafe.Pointer(pTime)) = float64(t)/86400.0 + 2440587.5
 48263  	return SQLITE_OK
 48264  }
 48265  
 48266  func sqlite3_demovfs(tls *libc.TLS) uintptr {
 48267  	return uintptr(unsafe.Pointer(&demovfs))
 48268  }
 48269  
 48270  var demovfs = sqlite3_vfs{
 48271  	FiVersion:      1,
 48272  	FszOsFile:      int32(unsafe.Sizeof(DemoFile{})),
 48273  	FmxPathname:    MAXPATHNAME,
 48274  	FzName:         ts + 30809,
 48275  	FxOpen:         0,
 48276  	FxDelete:       0,
 48277  	FxAccess:       0,
 48278  	FxFullPathname: 0,
 48279  	FxDlOpen:       0,
 48280  	FxDlError:      0,
 48281  	FxDlSym:        0,
 48282  	FxDlClose:      0,
 48283  	FxRandomness:   0,
 48284  	FxSleep:        0,
 48285  	FxCurrentTime:  0,
 48286  }
 48287  
 48288  type Tcl_StatBuf = stat
 48289  
 48290  func register_demovfs(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 48291  	sqlite3.Xsqlite3_vfs_register(tls, sqlite3_demovfs(tls), 1)
 48292  	return TCL_OK
 48293  }
 48294  
 48295  func unregister_demovfs(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 48296  	sqlite3.Xsqlite3_vfs_unregister(tls, sqlite3_demovfs(tls))
 48297  	return TCL_OK
 48298  }
 48299  
 48300  func Sqlitetest_demovfs_Init(tls *libc.TLS, interp uintptr) int32 {
 48301  	tcl.XTcl_CreateObjCommand(tls, interp, ts+30814, *(*uintptr)(unsafe.Pointer(&struct {
 48302  		f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
 48303  	}{register_demovfs})), uintptr(0), uintptr(0))
 48304  	tcl.XTcl_CreateObjCommand(tls, interp, ts+30831, *(*uintptr)(unsafe.Pointer(&struct {
 48305  		f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
 48306  	}{unregister_demovfs})), uintptr(0), uintptr(0))
 48307  	return TCL_OK
 48308  }
 48309  
 48310  type devsym_file1 = struct {
 48311  	Fbase  sqlite3_file
 48312  	FpReal uintptr
 48313  }
 48314  
 48315  type devsym_file = devsym_file1
 48316  
 48317  type DevsymGlobal = struct {
 48318  	FpVfs        uintptr
 48319  	FiDeviceChar int32
 48320  	FiSectorSize int32
 48321  	FnWriteCrash int32
 48322  	F__ccgo_pad1 [4]byte
 48323  }
 48324  
 48325  var g1 = DevsymGlobal{FiSectorSize: 512}
 48326  
 48327  func devsymClose(tls *libc.TLS, pFile uintptr) int32 {
 48328  	var p uintptr = pFile
 48329  	sqlite3.Xsqlite3OsClose(tls, (*devsym_file)(unsafe.Pointer(p)).FpReal)
 48330  	return SQLITE_OK
 48331  }
 48332  
 48333  func devsymRead(tls *libc.TLS, pFile uintptr, zBuf uintptr, iAmt int32, iOfst sqlite_int64) int32 {
 48334  	var p uintptr = pFile
 48335  	return sqlite3.Xsqlite3OsRead(tls, (*devsym_file)(unsafe.Pointer(p)).FpReal, zBuf, iAmt, iOfst)
 48336  }
 48337  
 48338  func devsymWrite(tls *libc.TLS, pFile uintptr, zBuf uintptr, iAmt int32, iOfst sqlite_int64) int32 {
 48339  	var p uintptr = pFile
 48340  	return sqlite3.Xsqlite3OsWrite(tls, (*devsym_file)(unsafe.Pointer(p)).FpReal, zBuf, iAmt, iOfst)
 48341  }
 48342  
 48343  func devsymTruncate(tls *libc.TLS, pFile uintptr, size sqlite_int64) int32 {
 48344  	var p uintptr = pFile
 48345  	return sqlite3.Xsqlite3OsTruncate(tls, (*devsym_file)(unsafe.Pointer(p)).FpReal, size)
 48346  }
 48347  
 48348  func devsymSync(tls *libc.TLS, pFile uintptr, flags int32) int32 {
 48349  	var p uintptr = pFile
 48350  	return sqlite3.Xsqlite3OsSync(tls, (*devsym_file)(unsafe.Pointer(p)).FpReal, flags)
 48351  }
 48352  
 48353  func devsymFileSize(tls *libc.TLS, pFile uintptr, pSize uintptr) int32 {
 48354  	var p uintptr = pFile
 48355  	return sqlite3.Xsqlite3OsFileSize(tls, (*devsym_file)(unsafe.Pointer(p)).FpReal, pSize)
 48356  }
 48357  
 48358  func devsymLock(tls *libc.TLS, pFile uintptr, eLock int32) int32 {
 48359  	var p uintptr = pFile
 48360  	return sqlite3.Xsqlite3OsLock(tls, (*devsym_file)(unsafe.Pointer(p)).FpReal, eLock)
 48361  }
 48362  
 48363  func devsymUnlock(tls *libc.TLS, pFile uintptr, eLock int32) int32 {
 48364  	var p uintptr = pFile
 48365  	return sqlite3.Xsqlite3OsUnlock(tls, (*devsym_file)(unsafe.Pointer(p)).FpReal, eLock)
 48366  }
 48367  
 48368  func devsymCheckReservedLock(tls *libc.TLS, pFile uintptr, pResOut uintptr) int32 {
 48369  	var p uintptr = pFile
 48370  	return sqlite3.Xsqlite3OsCheckReservedLock(tls, (*devsym_file)(unsafe.Pointer(p)).FpReal, pResOut)
 48371  }
 48372  
 48373  func devsymFileControl(tls *libc.TLS, pFile uintptr, op int32, pArg uintptr) int32 {
 48374  	var p uintptr = pFile
 48375  	return sqlite3.Xsqlite3OsFileControl(tls, (*devsym_file)(unsafe.Pointer(p)).FpReal, op, pArg)
 48376  }
 48377  
 48378  func devsymSectorSize(tls *libc.TLS, pFile uintptr) int32 {
 48379  	return g1.FiSectorSize
 48380  }
 48381  
 48382  func devsymDeviceCharacteristics(tls *libc.TLS, pFile uintptr) int32 {
 48383  	return g1.FiDeviceChar
 48384  }
 48385  
 48386  func devsymShmLock(tls *libc.TLS, pFile uintptr, ofst int32, n int32, flags int32) int32 {
 48387  	var p uintptr = pFile
 48388  	return (*struct {
 48389  		f func(*libc.TLS, uintptr, int32, int32, int32) int32
 48390  	})(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)
 48391  }
 48392  
 48393  func devsymShmMap(tls *libc.TLS, pFile uintptr, iRegion int32, szRegion int32, isWrite int32, pp uintptr) int32 {
 48394  	var p uintptr = pFile
 48395  	return (*struct {
 48396  		f func(*libc.TLS, uintptr, int32, int32, int32, uintptr) int32
 48397  	})(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)
 48398  }
 48399  
 48400  func devsymShmBarrier(tls *libc.TLS, pFile uintptr) {
 48401  	var p uintptr = pFile
 48402  	(*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)
 48403  }
 48404  
 48405  func devsymShmUnmap(tls *libc.TLS, pFile uintptr, delFlag int32) int32 {
 48406  	var p uintptr = pFile
 48407  	return (*struct {
 48408  		f func(*libc.TLS, uintptr, int32) int32
 48409  	})(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)
 48410  }
 48411  
 48412  func devsymOpen(tls *libc.TLS, pVfs uintptr, zName uintptr, pFile uintptr, flags int32, pOutFlags uintptr) int32 {
 48413  	var rc int32
 48414  	var p uintptr = pFile
 48415  	(*devsym_file)(unsafe.Pointer(p)).FpReal = p + 1*16
 48416  	rc = sqlite3.Xsqlite3OsOpen(tls, g1.FpVfs, zName, (*devsym_file)(unsafe.Pointer(p)).FpReal, flags, pOutFlags)
 48417  	if (*sqlite3_file)(unsafe.Pointer((*devsym_file)(unsafe.Pointer(p)).FpReal)).FpMethods != 0 {
 48418  		(*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods = uintptr(unsafe.Pointer(&devsym_io_methods))
 48419  	}
 48420  	return rc
 48421  }
 48422  
 48423  var devsym_io_methods = sqlite3_io_methods{
 48424  	FiVersion:               2,
 48425  	FxClose:                 0,
 48426  	FxRead:                  0,
 48427  	FxWrite:                 0,
 48428  	FxTruncate:              0,
 48429  	FxSync:                  0,
 48430  	FxFileSize:              0,
 48431  	FxLock:                  0,
 48432  	FxUnlock:                0,
 48433  	FxCheckReservedLock:     0,
 48434  	FxFileControl:           0,
 48435  	FxSectorSize:            0,
 48436  	FxDeviceCharacteristics: 0,
 48437  	FxShmMap:                0,
 48438  	FxShmLock:               0,
 48439  	FxShmBarrier:            0,
 48440  	FxShmUnmap:              0,
 48441  }
 48442  
 48443  func devsymDelete(tls *libc.TLS, pVfs uintptr, zPath uintptr, dirSync int32) int32 {
 48444  	return sqlite3.Xsqlite3OsDelete(tls, g1.FpVfs, zPath, dirSync)
 48445  }
 48446  
 48447  func devsymAccess(tls *libc.TLS, pVfs uintptr, zPath uintptr, flags int32, pResOut uintptr) int32 {
 48448  	return sqlite3.Xsqlite3OsAccess(tls, g1.FpVfs, zPath, flags, pResOut)
 48449  }
 48450  
 48451  func devsymFullPathname(tls *libc.TLS, pVfs uintptr, zPath uintptr, nOut int32, zOut uintptr) int32 {
 48452  	return sqlite3.Xsqlite3OsFullPathname(tls, g1.FpVfs, zPath, nOut, zOut)
 48453  }
 48454  
 48455  func devsymRandomness(tls *libc.TLS, pVfs uintptr, nByte int32, zBufOut uintptr) int32 {
 48456  	return sqlite3.Xsqlite3OsRandomness(tls, g1.FpVfs, nByte, zBufOut)
 48457  }
 48458  
 48459  func devsymSleep(tls *libc.TLS, pVfs uintptr, nMicro int32) int32 {
 48460  	return sqlite3.Xsqlite3OsSleep(tls, g1.FpVfs, nMicro)
 48461  }
 48462  
 48463  func devsymCurrentTime(tls *libc.TLS, pVfs uintptr, pTimeOut uintptr) int32 {
 48464  	return (*struct {
 48465  		f func(*libc.TLS, uintptr, uintptr) int32
 48466  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(g1.FpVfs)).FxCurrentTime})).f(tls, g1.FpVfs, pTimeOut)
 48467  }
 48468  
 48469  func writecrashSectorSize(tls *libc.TLS, pFile uintptr) int32 {
 48470  	var p uintptr = pFile
 48471  	return sqlite3.Xsqlite3OsSectorSize(tls, (*devsym_file)(unsafe.Pointer(p)).FpReal)
 48472  }
 48473  
 48474  func writecrashDeviceCharacteristics(tls *libc.TLS, pFile uintptr) int32 {
 48475  	var p uintptr = pFile
 48476  	return sqlite3.Xsqlite3OsDeviceCharacteristics(tls, (*devsym_file)(unsafe.Pointer(p)).FpReal)
 48477  }
 48478  
 48479  func writecrashWrite(tls *libc.TLS, pFile uintptr, zBuf uintptr, iAmt int32, iOfst sqlite_int64) int32 {
 48480  	var p uintptr = pFile
 48481  	if g1.FnWriteCrash > 0 {
 48482  		g1.FnWriteCrash--
 48483  		if g1.FnWriteCrash == 0 {
 48484  			libc.Xabort(tls)
 48485  		}
 48486  	}
 48487  	return sqlite3.Xsqlite3OsWrite(tls, (*devsym_file)(unsafe.Pointer(p)).FpReal, zBuf, iAmt, iOfst)
 48488  }
 48489  
 48490  func writecrashOpen(tls *libc.TLS, pVfs uintptr, zName uintptr, pFile uintptr, flags int32, pOutFlags uintptr) int32 {
 48491  	var rc int32
 48492  	var p uintptr = pFile
 48493  	(*devsym_file)(unsafe.Pointer(p)).FpReal = p + 1*16
 48494  	rc = sqlite3.Xsqlite3OsOpen(tls, g1.FpVfs, zName, (*devsym_file)(unsafe.Pointer(p)).FpReal, flags, pOutFlags)
 48495  	if (*sqlite3_file)(unsafe.Pointer((*devsym_file)(unsafe.Pointer(p)).FpReal)).FpMethods != 0 {
 48496  		(*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods = uintptr(unsafe.Pointer(&writecrash_io_methods))
 48497  	}
 48498  	return rc
 48499  }
 48500  
 48501  var writecrash_io_methods = sqlite3_io_methods{
 48502  	FiVersion:               2,
 48503  	FxClose:                 0,
 48504  	FxRead:                  0,
 48505  	FxWrite:                 0,
 48506  	FxTruncate:              0,
 48507  	FxSync:                  0,
 48508  	FxFileSize:              0,
 48509  	FxLock:                  0,
 48510  	FxUnlock:                0,
 48511  	FxCheckReservedLock:     0,
 48512  	FxFileControl:           0,
 48513  	FxSectorSize:            0,
 48514  	FxDeviceCharacteristics: 0,
 48515  	FxShmMap:                0,
 48516  	FxShmLock:               0,
 48517  	FxShmBarrier:            0,
 48518  	FxShmUnmap:              0,
 48519  }
 48520  
 48521  var devsym_vfs = sqlite3_vfs{
 48522  	FiVersion:      2,
 48523  	FszOsFile:      int32(unsafe.Sizeof(devsym_file{})),
 48524  	FmxPathname:    DEVSYM_MAX_PATHNAME,
 48525  	FzName:         ts + 30850,
 48526  	FxOpen:         0,
 48527  	FxDelete:       0,
 48528  	FxAccess:       0,
 48529  	FxFullPathname: 0,
 48530  	FxRandomness:   0,
 48531  	FxSleep:        0,
 48532  	FxCurrentTime:  0,
 48533  }
 48534  
 48535  var writecrash_vfs = sqlite3_vfs{
 48536  	FiVersion:      2,
 48537  	FszOsFile:      int32(unsafe.Sizeof(devsym_file{})),
 48538  	FmxPathname:    DEVSYM_MAX_PATHNAME,
 48539  	FzName:         ts + 30857,
 48540  	FxOpen:         0,
 48541  	FxDelete:       0,
 48542  	FxAccess:       0,
 48543  	FxFullPathname: 0,
 48544  	FxRandomness:   0,
 48545  	FxSleep:        0,
 48546  	FxCurrentTime:  0,
 48547  }
 48548  
 48549  func devsym_register(tls *libc.TLS, iDeviceChar int32, iSectorSize int32) {
 48550  	if g1.FpVfs == uintptr(0) {
 48551  		g1.FpVfs = sqlite3.Xsqlite3_vfs_find(tls, uintptr(0))
 48552  		*(*int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&devsym_vfs)) + 4)) += (*sqlite3_vfs)(unsafe.Pointer(g1.FpVfs)).FszOsFile
 48553  		*(*int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&writecrash_vfs)) + 4)) += (*sqlite3_vfs)(unsafe.Pointer(g1.FpVfs)).FszOsFile
 48554  		sqlite3.Xsqlite3_vfs_register(tls, uintptr(unsafe.Pointer(&devsym_vfs)), 0)
 48555  		sqlite3.Xsqlite3_vfs_register(tls, uintptr(unsafe.Pointer(&writecrash_vfs)), 0)
 48556  	}
 48557  	if iDeviceChar >= 0 {
 48558  		g1.FiDeviceChar = iDeviceChar
 48559  	} else {
 48560  		g1.FiDeviceChar = 0
 48561  	}
 48562  	if iSectorSize >= 0 {
 48563  		g1.FiSectorSize = iSectorSize
 48564  	} else {
 48565  		g1.FiSectorSize = 512
 48566  	}
 48567  }
 48568  
 48569  func devsym_unregister(tls *libc.TLS) {
 48570  	sqlite3.Xsqlite3_vfs_unregister(tls, uintptr(unsafe.Pointer(&devsym_vfs)))
 48571  	sqlite3.Xsqlite3_vfs_unregister(tls, uintptr(unsafe.Pointer(&writecrash_vfs)))
 48572  	g1.FpVfs = uintptr(0)
 48573  	g1.FiDeviceChar = 0
 48574  	g1.FiSectorSize = 0
 48575  }
 48576  
 48577  func devsym_crash_on_write(tls *libc.TLS, nWrite int32) {
 48578  	if g1.FpVfs == uintptr(0) {
 48579  		g1.FpVfs = sqlite3.Xsqlite3_vfs_find(tls, uintptr(0))
 48580  		*(*int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&devsym_vfs)) + 4)) += (*sqlite3_vfs)(unsafe.Pointer(g1.FpVfs)).FszOsFile
 48581  		*(*int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&writecrash_vfs)) + 4)) += (*sqlite3_vfs)(unsafe.Pointer(g1.FpVfs)).FszOsFile
 48582  		sqlite3.Xsqlite3_vfs_register(tls, uintptr(unsafe.Pointer(&devsym_vfs)), 0)
 48583  		sqlite3.Xsqlite3_vfs_register(tls, uintptr(unsafe.Pointer(&writecrash_vfs)), 0)
 48584  	}
 48585  	g1.FnWriteCrash = nWrite
 48586  }
 48587  
 48588  type fs_vtab1 = struct {
 48589  	Fbase sqlite3_vtab
 48590  	Fdb   uintptr
 48591  	FzDb  uintptr
 48592  	FzTbl uintptr
 48593  }
 48594  
 48595  type fs_vtab = fs_vtab1
 48596  type fs_cursor1 = struct {
 48597  	Fbase   sqlite3_vtab_cursor
 48598  	FpStmt  uintptr
 48599  	FzBuf   uintptr
 48600  	FnBuf   int32
 48601  	FnAlloc int32
 48602  }
 48603  
 48604  type fs_cursor = fs_cursor1
 48605  
 48606  type FsdirVtab1 = struct{ Fbase sqlite3_vtab }
 48607  
 48608  type FsdirVtab = FsdirVtab1
 48609  type FsdirCsr1 = struct {
 48610  	Fbase   sqlite3_vtab_cursor
 48611  	FzDir   uintptr
 48612  	FpDir   uintptr
 48613  	FiRowid sqlite3_int64
 48614  	FpEntry uintptr
 48615  }
 48616  
 48617  type FsdirCsr = FsdirCsr1
 48618  
 48619  func fsdirConnect1(tls *libc.TLS, db uintptr, pAux uintptr, argc int32, argv uintptr, ppVtab uintptr, pzErr uintptr) int32 {
 48620  	var pTab uintptr
 48621  
 48622  	if argc != 3 {
 48623  		*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+28428, 0)
 48624  		return SQLITE_ERROR
 48625  	}
 48626  
 48627  	pTab = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(FsdirVtab{})))
 48628  	if !(pTab != 0) {
 48629  		return SQLITE_NOMEM
 48630  	}
 48631  	libc.X__builtin___memset_chk(tls, pTab, 0, uint64(unsafe.Sizeof(FsdirVtab{})), libc.X__builtin_object_size(tls, pTab, 0))
 48632  
 48633  	*(*uintptr)(unsafe.Pointer(ppVtab)) = pTab
 48634  	sqlite3.Xsqlite3_declare_vtab(tls, db, ts+30868)
 48635  
 48636  	return SQLITE_OK
 48637  }
 48638  
 48639  func fsdirDisconnect1(tls *libc.TLS, pVtab uintptr) int32 {
 48640  	sqlite3.Xsqlite3_free(tls, pVtab)
 48641  	return SQLITE_OK
 48642  }
 48643  
 48644  func fsdirBestIndex1(tls *libc.TLS, tab uintptr, pIdxInfo uintptr) int32 {
 48645  	var ii int32
 48646  
 48647  	(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = 1000000000.0
 48648  
 48649  	for ii = 0; ii < (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnConstraint; ii++ {
 48650  		var p uintptr = (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint + uintptr(ii)*12
 48651  		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 {
 48652  			var pUsage uintptr
 48653  			pUsage = (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(ii)*8
 48654  			(*sqlite3_index_constraint_usage)(unsafe.Pointer(pUsage)).Fomit = uint8(1)
 48655  			(*sqlite3_index_constraint_usage)(unsafe.Pointer(pUsage)).FargvIndex = 1
 48656  			(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxNum = 1
 48657  			(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = 1.0
 48658  			break
 48659  		}
 48660  	}
 48661  
 48662  	return SQLITE_OK
 48663  }
 48664  
 48665  func fsdirOpen1(tls *libc.TLS, pVTab uintptr, ppCursor uintptr) int32 {
 48666  	var pCur uintptr
 48667  
 48668  	pCur = sqlite3.Xsqlite3_malloc(tls, int32(uint64(unsafe.Sizeof(FsdirCsr{}))+uint64(256)))
 48669  	if pCur == uintptr(0) {
 48670  		return SQLITE_NOMEM
 48671  	}
 48672  	libc.X__builtin___memset_chk(tls, pCur, 0, uint64(unsafe.Sizeof(FsdirCsr{})), libc.X__builtin_object_size(tls, pCur, 0))
 48673  	*(*uintptr)(unsafe.Pointer(ppCursor)) = pCur
 48674  	return SQLITE_OK
 48675  }
 48676  
 48677  func fsdirClose1(tls *libc.TLS, cur uintptr) int32 {
 48678  	var pCur uintptr = cur
 48679  	if (*FsdirCsr)(unsafe.Pointer(pCur)).FpDir != 0 {
 48680  		libc.Xclosedir(tls, (*FsdirCsr)(unsafe.Pointer(pCur)).FpDir)
 48681  	}
 48682  	sqlite3.Xsqlite3_free(tls, (*FsdirCsr)(unsafe.Pointer(pCur)).FzDir)
 48683  	sqlite3.Xsqlite3_free(tls, pCur)
 48684  	return SQLITE_OK
 48685  }
 48686  
 48687  func fsdirNext1(tls *libc.TLS, cur uintptr) int32 {
 48688  	var pCsr uintptr = cur
 48689  
 48690  	if (*FsdirCsr)(unsafe.Pointer(pCsr)).FpDir != 0 {
 48691  		(*FsdirCsr)(unsafe.Pointer(pCsr)).FpEntry = libc.Xreaddir(tls, (*FsdirCsr)(unsafe.Pointer(pCsr)).FpDir)
 48692  		if (*FsdirCsr)(unsafe.Pointer(pCsr)).FpEntry == uintptr(0) {
 48693  			libc.Xclosedir(tls, (*FsdirCsr)(unsafe.Pointer(pCsr)).FpDir)
 48694  			(*FsdirCsr)(unsafe.Pointer(pCsr)).FpDir = uintptr(0)
 48695  		}
 48696  		(*FsdirCsr)(unsafe.Pointer(pCsr)).FiRowid++
 48697  	}
 48698  
 48699  	return SQLITE_OK
 48700  }
 48701  
 48702  func fsdirFilter1(tls *libc.TLS, pVtabCursor uintptr, idxNum int32, idxStr uintptr, argc int32, argv uintptr) int32 {
 48703  	var pCsr uintptr = pVtabCursor
 48704  	var zDir uintptr
 48705  	var nDir int32
 48706  
 48707  	if idxNum != 1 || argc != 1 {
 48708  		return SQLITE_ERROR
 48709  	}
 48710  
 48711  	(*FsdirCsr)(unsafe.Pointer(pCsr)).FiRowid = int64(0)
 48712  	sqlite3.Xsqlite3_free(tls, (*FsdirCsr)(unsafe.Pointer(pCsr)).FzDir)
 48713  	if (*FsdirCsr)(unsafe.Pointer(pCsr)).FpDir != 0 {
 48714  		libc.Xclosedir(tls, (*FsdirCsr)(unsafe.Pointer(pCsr)).FpDir)
 48715  		(*FsdirCsr)(unsafe.Pointer(pCsr)).FpDir = uintptr(0)
 48716  	}
 48717  
 48718  	zDir = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 48719  	nDir = sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(argv)))
 48720  	(*FsdirCsr)(unsafe.Pointer(pCsr)).FzDir = sqlite3.Xsqlite3_malloc(tls, nDir+1)
 48721  	if (*FsdirCsr)(unsafe.Pointer(pCsr)).FzDir == uintptr(0) {
 48722  		return SQLITE_NOMEM
 48723  	}
 48724  	libc.X__builtin___memcpy_chk(tls, (*FsdirCsr)(unsafe.Pointer(pCsr)).FzDir, zDir, uint64(nDir+1), libc.X__builtin_object_size(tls, (*FsdirCsr)(unsafe.Pointer(pCsr)).FzDir, 0))
 48725  
 48726  	(*FsdirCsr)(unsafe.Pointer(pCsr)).FpDir = libc.Xopendir(tls, (*FsdirCsr)(unsafe.Pointer(pCsr)).FzDir)
 48727  	return fsdirNext1(tls, pVtabCursor)
 48728  }
 48729  
 48730  func fsdirEof1(tls *libc.TLS, cur uintptr) int32 {
 48731  	var pCsr uintptr = cur
 48732  	return libc.Bool32((*FsdirCsr)(unsafe.Pointer(pCsr)).FpDir == uintptr(0))
 48733  }
 48734  
 48735  func fsdirColumn1(tls *libc.TLS, cur uintptr, ctx uintptr, i int32) int32 {
 48736  	var pCsr uintptr = cur
 48737  	switch i {
 48738  	case 0:
 48739  		sqlite3.Xsqlite3_result_text(tls, ctx, (*FsdirCsr)(unsafe.Pointer(pCsr)).FzDir, -1, uintptr(0))
 48740  		break
 48741  
 48742  	case 1:
 48743  		sqlite3.Xsqlite3_result_text(tls, ctx, (*FsdirCsr)(unsafe.Pointer(pCsr)).FpEntry+21, -1, libc.UintptrFromInt32(-1))
 48744  		break
 48745  
 48746  	default:
 48747  	}
 48748  
 48749  	return SQLITE_OK
 48750  }
 48751  
 48752  func fsdirRowid1(tls *libc.TLS, cur uintptr, pRowid uintptr) int32 {
 48753  	var pCsr uintptr = cur
 48754  	*(*sqlite_int64)(unsafe.Pointer(pRowid)) = (*FsdirCsr)(unsafe.Pointer(pCsr)).FiRowid
 48755  	return SQLITE_OK
 48756  }
 48757  
 48758  type FstreeVtab1 = struct {
 48759  	Fbase sqlite3_vtab
 48760  	Fdb   uintptr
 48761  }
 48762  
 48763  type FstreeVtab = FstreeVtab1
 48764  type FstreeCsr1 = struct {
 48765  	Fbase        sqlite3_vtab_cursor
 48766  	FpStmt       uintptr
 48767  	Ffd          int32
 48768  	F__ccgo_pad1 [4]byte
 48769  }
 48770  
 48771  type FstreeCsr = FstreeCsr1
 48772  
 48773  func fstreeConnect(tls *libc.TLS, db uintptr, pAux uintptr, argc int32, argv uintptr, ppVtab uintptr, pzErr uintptr) int32 {
 48774  	var pTab uintptr
 48775  
 48776  	if argc != 3 {
 48777  		*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+28428, 0)
 48778  		return SQLITE_ERROR
 48779  	}
 48780  
 48781  	pTab = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(FstreeVtab{})))
 48782  	if !(pTab != 0) {
 48783  		return SQLITE_NOMEM
 48784  	}
 48785  	libc.X__builtin___memset_chk(tls, pTab, 0, uint64(unsafe.Sizeof(FstreeVtab{})), libc.X__builtin_object_size(tls, pTab, 0))
 48786  	(*FstreeVtab)(unsafe.Pointer(pTab)).Fdb = db
 48787  
 48788  	*(*uintptr)(unsafe.Pointer(ppVtab)) = pTab
 48789  	sqlite3.Xsqlite3_declare_vtab(tls, db, ts+30897)
 48790  
 48791  	return SQLITE_OK
 48792  }
 48793  
 48794  func fstreeDisconnect(tls *libc.TLS, pVtab uintptr) int32 {
 48795  	sqlite3.Xsqlite3_free(tls, pVtab)
 48796  	return SQLITE_OK
 48797  }
 48798  
 48799  func fstreeBestIndex(tls *libc.TLS, tab uintptr, pIdxInfo uintptr) int32 {
 48800  	var ii int32
 48801  
 48802  	for ii = 0; ii < (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnConstraint; ii++ {
 48803  		var p uintptr = (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint + uintptr(ii)*12
 48804  		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 ||
 48805  			int32((*sqlite3_index_constraint)(unsafe.Pointer(p)).Fop) == SQLITE_INDEX_CONSTRAINT_LIKE ||
 48806  			int32((*sqlite3_index_constraint)(unsafe.Pointer(p)).Fop) == SQLITE_INDEX_CONSTRAINT_EQ) {
 48807  			var pUsage uintptr
 48808  			pUsage = (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(ii)*8
 48809  			(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxNum = int32((*sqlite3_index_constraint)(unsafe.Pointer(p)).Fop)
 48810  			(*sqlite3_index_constraint_usage)(unsafe.Pointer(pUsage)).FargvIndex = 1
 48811  			(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = 100000.0
 48812  			return SQLITE_OK
 48813  		}
 48814  	}
 48815  
 48816  	(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = 1000000000.0
 48817  	return SQLITE_OK
 48818  }
 48819  
 48820  func fstreeOpen(tls *libc.TLS, pVTab uintptr, ppCursor uintptr) int32 {
 48821  	var pCur uintptr
 48822  	pCur = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(FstreeCsr{})))
 48823  	if pCur == uintptr(0) {
 48824  		return SQLITE_NOMEM
 48825  	}
 48826  	libc.X__builtin___memset_chk(tls, pCur, 0, uint64(unsafe.Sizeof(FstreeCsr{})), libc.X__builtin_object_size(tls, pCur, 0))
 48827  	(*FstreeCsr)(unsafe.Pointer(pCur)).Ffd = -1
 48828  	*(*uintptr)(unsafe.Pointer(ppCursor)) = pCur
 48829  	return SQLITE_OK
 48830  }
 48831  
 48832  func fstreeCloseFd(tls *libc.TLS, pCsr uintptr) {
 48833  	if (*FstreeCsr)(unsafe.Pointer(pCsr)).Ffd >= 0 {
 48834  		libc.Xclose(tls, (*FstreeCsr)(unsafe.Pointer(pCsr)).Ffd)
 48835  		(*FstreeCsr)(unsafe.Pointer(pCsr)).Ffd = -1
 48836  	}
 48837  }
 48838  
 48839  func fstreeClose(tls *libc.TLS, cur uintptr) int32 {
 48840  	var pCsr uintptr = cur
 48841  	sqlite3.Xsqlite3_finalize(tls, (*FstreeCsr)(unsafe.Pointer(pCsr)).FpStmt)
 48842  	fstreeCloseFd(tls, pCsr)
 48843  	sqlite3.Xsqlite3_free(tls, pCsr)
 48844  	return SQLITE_OK
 48845  }
 48846  
 48847  func fstreeNext(tls *libc.TLS, cur uintptr) int32 {
 48848  	var pCsr uintptr = cur
 48849  	var rc int32
 48850  
 48851  	fstreeCloseFd(tls, pCsr)
 48852  	rc = sqlite3.Xsqlite3_step(tls, (*FstreeCsr)(unsafe.Pointer(pCsr)).FpStmt)
 48853  	if rc != SQLITE_ROW {
 48854  		rc = sqlite3.Xsqlite3_finalize(tls, (*FstreeCsr)(unsafe.Pointer(pCsr)).FpStmt)
 48855  		(*FstreeCsr)(unsafe.Pointer(pCsr)).FpStmt = uintptr(0)
 48856  	} else {
 48857  		rc = SQLITE_OK
 48858  		(*FstreeCsr)(unsafe.Pointer(pCsr)).Ffd = libc.Xopen(tls, sqlite3.Xsqlite3_column_text(tls, (*FstreeCsr)(unsafe.Pointer(pCsr)).FpStmt, 0), O_RDONLY, 0)
 48859  	}
 48860  
 48861  	return rc
 48862  }
 48863  
 48864  func fstreeFilter(tls *libc.TLS, pVtabCursor uintptr, idxNum int32, idxStr uintptr, argc int32, argv uintptr) int32 {
 48865  	bp := tls.Alloc(2)
 48866  	defer tls.Free(2)
 48867  
 48868  	var pCsr uintptr = pVtabCursor
 48869  	var pTab uintptr = (*FstreeCsr)(unsafe.Pointer(pCsr)).Fbase.FpVtab
 48870  	var rc int32
 48871  	var zSql uintptr = ts + 30933
 48872  	var zRoot uintptr
 48873  	var nRoot int32
 48874  	var zPrefix uintptr
 48875  	var nPrefix int32
 48876  	var zDir uintptr
 48877  	var nDir int32
 48878  	*(*[2]int8)(unsafe.Pointer(bp)) = [2]int8{int8(0), int8(0)}
 48879  
 48880  	zRoot = ts + 31165
 48881  	nRoot = 1
 48882  	zPrefix = ts + 584
 48883  	nPrefix = 0
 48884  
 48885  	zDir = zRoot
 48886  	nDir = nRoot
 48887  
 48888  	fstreeCloseFd(tls, pCsr)
 48889  	sqlite3.Xsqlite3_finalize(tls, (*FstreeCsr)(unsafe.Pointer(pCsr)).FpStmt)
 48890  	(*FstreeCsr)(unsafe.Pointer(pCsr)).FpStmt = uintptr(0)
 48891  	rc = sqlite3.Xsqlite3_prepare_v2(tls, (*FstreeVtab)(unsafe.Pointer(pTab)).Fdb, zSql, -1, pCsr+8, uintptr(0))
 48892  	if rc != SQLITE_OK {
 48893  		return rc
 48894  	}
 48895  
 48896  	if idxNum != 0 {
 48897  		var zQuery uintptr = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 48898  		switch idxNum {
 48899  		case SQLITE_INDEX_CONSTRAINT_GLOB:
 48900  			*(*int8)(unsafe.Pointer(bp)) = int8('*')
 48901  			*(*int8)(unsafe.Pointer(bp + 1)) = int8('?')
 48902  			break
 48903  			fallthrough
 48904  		case SQLITE_INDEX_CONSTRAINT_LIKE:
 48905  			*(*int8)(unsafe.Pointer(bp)) = int8('_')
 48906  			*(*int8)(unsafe.Pointer(bp + 1)) = int8('%')
 48907  			break
 48908  		}
 48909  
 48910  		if sqlite3.Xsqlite3_strnicmp(tls, zQuery, zPrefix, nPrefix) == 0 {
 48911  			var i int32
 48912  			for i = nPrefix; *(*int8)(unsafe.Pointer(zQuery + uintptr(i))) != 0; i++ {
 48913  				if int32(*(*int8)(unsafe.Pointer(zQuery + uintptr(i)))) == int32(*(*int8)(unsafe.Pointer(bp))) || int32(*(*int8)(unsafe.Pointer(zQuery + uintptr(i)))) == int32(*(*int8)(unsafe.Pointer(bp + 1))) {
 48914  					break
 48915  				}
 48916  				if int32(*(*int8)(unsafe.Pointer(zQuery + uintptr(i)))) == '/' {
 48917  					nDir = i
 48918  				}
 48919  			}
 48920  			zDir = zQuery
 48921  		}
 48922  	}
 48923  	if nDir == 0 {
 48924  		nDir = 1
 48925  	}
 48926  
 48927  	sqlite3.Xsqlite3_bind_text(tls, (*FstreeCsr)(unsafe.Pointer(pCsr)).FpStmt, 1, zDir, nDir, libc.UintptrFromInt32(-1))
 48928  	sqlite3.Xsqlite3_bind_text(tls, (*FstreeCsr)(unsafe.Pointer(pCsr)).FpStmt, 2, zRoot, nRoot, libc.UintptrFromInt32(-1))
 48929  	sqlite3.Xsqlite3_bind_text(tls, (*FstreeCsr)(unsafe.Pointer(pCsr)).FpStmt, 3, zPrefix, nPrefix, libc.UintptrFromInt32(-1))
 48930  
 48931  	return fstreeNext(tls, pVtabCursor)
 48932  }
 48933  
 48934  func fstreeEof(tls *libc.TLS, cur uintptr) int32 {
 48935  	var pCsr uintptr = cur
 48936  	return libc.Bool32((*FstreeCsr)(unsafe.Pointer(pCsr)).FpStmt == uintptr(0))
 48937  }
 48938  
 48939  func fstreeColumn(tls *libc.TLS, cur uintptr, ctx uintptr, i int32) int32 {
 48940  	bp := tls.Alloc(144)
 48941  	defer tls.Free(144)
 48942  
 48943  	var pCsr uintptr = cur
 48944  	if i == 0 {
 48945  		sqlite3.Xsqlite3_result_value(tls, ctx, sqlite3.Xsqlite3_column_value(tls, (*FstreeCsr)(unsafe.Pointer(pCsr)).FpStmt, 0))
 48946  	} else {
 48947  		libc.Xfstat(tls, (*FstreeCsr)(unsafe.Pointer(pCsr)).Ffd, bp)
 48948  
 48949  		if int32((*stat)(unsafe.Pointer(bp)).Fst_mode)&S_IFMT == S_IFREG {
 48950  			if i == 1 {
 48951  				sqlite3.Xsqlite3_result_int64(tls, ctx, (*stat)(unsafe.Pointer(bp)).Fst_size)
 48952  			} else {
 48953  				var nRead int32
 48954  				var aBuf uintptr = sqlite3.Xsqlite3_malloc(tls, int32((*stat)(unsafe.Pointer(bp)).Fst_mode)+1)
 48955  				if !(aBuf != 0) {
 48956  					return SQLITE_NOMEM
 48957  				}
 48958  				nRead = int32(libc.Xread(tls, (*FstreeCsr)(unsafe.Pointer(pCsr)).Ffd, aBuf, uint64((*stat)(unsafe.Pointer(bp)).Fst_mode)))
 48959  				if nRead != int32((*stat)(unsafe.Pointer(bp)).Fst_mode) {
 48960  					return SQLITE_IOERR
 48961  				}
 48962  				sqlite3.Xsqlite3_result_blob(tls, ctx, aBuf, nRead, libc.UintptrFromInt32(-1))
 48963  				sqlite3.Xsqlite3_free(tls, aBuf)
 48964  			}
 48965  		}
 48966  	}
 48967  
 48968  	return SQLITE_OK
 48969  }
 48970  
 48971  func fstreeRowid(tls *libc.TLS, cur uintptr, pRowid uintptr) int32 {
 48972  	*(*sqlite_int64)(unsafe.Pointer(pRowid)) = int64(0)
 48973  	return SQLITE_OK
 48974  }
 48975  
 48976  func fsConnect(tls *libc.TLS, db uintptr, pAux uintptr, argc int32, argv uintptr, ppVtab uintptr, pzErr uintptr) int32 {
 48977  	var pVtab uintptr
 48978  	var nByte int32
 48979  	var zTbl uintptr
 48980  	var zDb uintptr = *(*uintptr)(unsafe.Pointer(argv + 1*8))
 48981  
 48982  	if argc != 4 {
 48983  		*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+28428, 0)
 48984  		return SQLITE_ERROR
 48985  	}
 48986  	zTbl = *(*uintptr)(unsafe.Pointer(argv + 3*8))
 48987  
 48988  	nByte = int32(uint64(unsafe.Sizeof(fs_vtab{})) + uint64(int32(libc.Xstrlen(tls, zTbl))) + uint64(1) + uint64(int32(libc.Xstrlen(tls, zDb))) + uint64(1))
 48989  	pVtab = sqlite3.Xsqlite3MallocZero(tls, uint64(nByte))
 48990  	if !(pVtab != 0) {
 48991  		return SQLITE_NOMEM
 48992  	}
 48993  
 48994  	(*fs_vtab)(unsafe.Pointer(pVtab)).FzTbl = pVtab + 1*48
 48995  	(*fs_vtab)(unsafe.Pointer(pVtab)).FzDb = (*fs_vtab)(unsafe.Pointer(pVtab)).FzTbl + uintptr(libc.Xstrlen(tls, zTbl)+uint64(1))
 48996  	(*fs_vtab)(unsafe.Pointer(pVtab)).Fdb = db
 48997  	libc.X__builtin___memcpy_chk(tls, (*fs_vtab)(unsafe.Pointer(pVtab)).FzTbl, zTbl, libc.Xstrlen(tls, zTbl), libc.X__builtin_object_size(tls, (*fs_vtab)(unsafe.Pointer(pVtab)).FzTbl, 0))
 48998  	libc.X__builtin___memcpy_chk(tls, (*fs_vtab)(unsafe.Pointer(pVtab)).FzDb, zDb, libc.Xstrlen(tls, zDb), libc.X__builtin_object_size(tls, (*fs_vtab)(unsafe.Pointer(pVtab)).FzDb, 0))
 48999  	*(*uintptr)(unsafe.Pointer(ppVtab)) = pVtab
 49000  	sqlite3.Xsqlite3_declare_vtab(tls, db, ts+31167)
 49001  
 49002  	return SQLITE_OK
 49003  }
 49004  
 49005  func fsDisconnect(tls *libc.TLS, pVtab uintptr) int32 {
 49006  	sqlite3.Xsqlite3_free(tls, pVtab)
 49007  	return SQLITE_OK
 49008  }
 49009  
 49010  func fsOpen(tls *libc.TLS, pVTab uintptr, ppCursor uintptr) int32 {
 49011  	var pCur uintptr
 49012  	pCur = sqlite3.Xsqlite3MallocZero(tls, uint64(unsafe.Sizeof(fs_cursor{})))
 49013  	*(*uintptr)(unsafe.Pointer(ppCursor)) = pCur
 49014  	return SQLITE_OK
 49015  }
 49016  
 49017  func fsClose(tls *libc.TLS, cur uintptr) int32 {
 49018  	var pCur uintptr = cur
 49019  	sqlite3.Xsqlite3_finalize(tls, (*fs_cursor)(unsafe.Pointer(pCur)).FpStmt)
 49020  	sqlite3.Xsqlite3_free(tls, (*fs_cursor)(unsafe.Pointer(pCur)).FzBuf)
 49021  	sqlite3.Xsqlite3_free(tls, pCur)
 49022  	return SQLITE_OK
 49023  }
 49024  
 49025  func fsNext(tls *libc.TLS, cur uintptr) int32 {
 49026  	var pCur uintptr = cur
 49027  	var rc int32
 49028  
 49029  	rc = sqlite3.Xsqlite3_step(tls, (*fs_cursor)(unsafe.Pointer(pCur)).FpStmt)
 49030  	if rc == SQLITE_ROW || rc == SQLITE_DONE {
 49031  		rc = SQLITE_OK
 49032  	}
 49033  
 49034  	return rc
 49035  }
 49036  
 49037  func fsFilter(tls *libc.TLS, pVtabCursor uintptr, idxNum int32, idxStr uintptr, argc int32, argv uintptr) int32 {
 49038  	bp := tls.Alloc(32)
 49039  	defer tls.Free(32)
 49040  
 49041  	var rc int32
 49042  	var pCur uintptr = pVtabCursor
 49043  	var p uintptr = (*sqlite3_vtab_cursor)(unsafe.Pointer(pVtabCursor)).FpVtab
 49044  
 49045  	if idxNum == 1 {
 49046  		var zStmt uintptr = sqlite3.Xsqlite3_mprintf(tls,
 49047  			ts+31204, libc.VaList(bp, (*fs_vtab)(unsafe.Pointer(p)).FzDb, (*fs_vtab)(unsafe.Pointer(p)).FzTbl))
 49048  		if !(zStmt != 0) {
 49049  			return SQLITE_NOMEM
 49050  		}
 49051  		rc = sqlite3.Xsqlite3_prepare_v2(tls, (*fs_vtab)(unsafe.Pointer(p)).Fdb, zStmt, -1, pCur+8, uintptr(0))
 49052  		sqlite3.Xsqlite3_free(tls, zStmt)
 49053  		if rc == SQLITE_OK {
 49054  			sqlite3.Xsqlite3_bind_value(tls, (*fs_cursor)(unsafe.Pointer(pCur)).FpStmt, 1, *(*uintptr)(unsafe.Pointer(argv)))
 49055  		}
 49056  	} else {
 49057  		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))
 49058  		if !(zStmt != 0) {
 49059  			return SQLITE_NOMEM
 49060  		}
 49061  		rc = sqlite3.Xsqlite3_prepare_v2(tls, (*fs_vtab)(unsafe.Pointer(p)).Fdb, zStmt, -1, pCur+8, uintptr(0))
 49062  		sqlite3.Xsqlite3_free(tls, zStmt)
 49063  	}
 49064  
 49065  	if rc == SQLITE_OK {
 49066  		rc = fsNext(tls, pVtabCursor)
 49067  	}
 49068  	return rc
 49069  }
 49070  
 49071  func fsColumn(tls *libc.TLS, cur uintptr, ctx uintptr, i int32) int32 {
 49072  	bp := tls.Alloc(144)
 49073  	defer tls.Free(144)
 49074  
 49075  	var pCur uintptr = cur
 49076  
 49077  	if i == 0 {
 49078  		sqlite3.Xsqlite3_result_value(tls, ctx, sqlite3.Xsqlite3_column_value(tls, (*fs_cursor)(unsafe.Pointer(pCur)).FpStmt, 0))
 49079  	} else {
 49080  		var zFile uintptr = sqlite3.Xsqlite3_column_text(tls, (*fs_cursor)(unsafe.Pointer(pCur)).FpStmt, 1)
 49081  
 49082  		var fd int32
 49083  		var n int32
 49084  		fd = libc.Xopen(tls, zFile, O_RDONLY, 0)
 49085  		if fd < 0 {
 49086  			return SQLITE_IOERR
 49087  		}
 49088  		libc.Xfstat(tls, fd, bp)
 49089  
 49090  		if (*stat)(unsafe.Pointer(bp)).Fst_size >= off_t((*fs_cursor)(unsafe.Pointer(pCur)).FnAlloc) {
 49091  			var nNew sqlite3_int64 = (*stat)(unsafe.Pointer(bp)).Fst_size * int64(2)
 49092  			var zNew uintptr
 49093  			if nNew < int64(1024) {
 49094  				nNew = int64(1024)
 49095  			}
 49096  
 49097  			zNew = sqlite3.Xsqlite3Realloc(tls, (*fs_cursor)(unsafe.Pointer(pCur)).FzBuf, uint64(nNew))
 49098  			if zNew == uintptr(0) {
 49099  				libc.Xclose(tls, fd)
 49100  				return SQLITE_NOMEM
 49101  			}
 49102  			(*fs_cursor)(unsafe.Pointer(pCur)).FzBuf = zNew
 49103  			(*fs_cursor)(unsafe.Pointer(pCur)).FnAlloc = int32(nNew)
 49104  		}
 49105  
 49106  		n = int32(libc.Xread(tls, fd, (*fs_cursor)(unsafe.Pointer(pCur)).FzBuf, uint64((*stat)(unsafe.Pointer(bp)).Fst_size)))
 49107  		libc.Xclose(tls, fd)
 49108  		if off_t(n) != (*stat)(unsafe.Pointer(bp)).Fst_size {
 49109  			return SQLITE_ERROR
 49110  		}
 49111  		(*fs_cursor)(unsafe.Pointer(pCur)).FnBuf = int32((*stat)(unsafe.Pointer(bp)).Fst_size)
 49112  		*(*int8)(unsafe.Pointer((*fs_cursor)(unsafe.Pointer(pCur)).FzBuf + uintptr((*fs_cursor)(unsafe.Pointer(pCur)).FnBuf))) = int8(0)
 49113  
 49114  		sqlite3.Xsqlite3_result_text(tls, ctx, (*fs_cursor)(unsafe.Pointer(pCur)).FzBuf, -1, libc.UintptrFromInt32(-1))
 49115  	}
 49116  	return SQLITE_OK
 49117  }
 49118  
 49119  func fsRowid(tls *libc.TLS, cur uintptr, pRowid uintptr) int32 {
 49120  	var pCur uintptr = cur
 49121  	*(*sqlite_int64)(unsafe.Pointer(pRowid)) = sqlite3.Xsqlite3_column_int64(tls, (*fs_cursor)(unsafe.Pointer(pCur)).FpStmt, 0)
 49122  	return SQLITE_OK
 49123  }
 49124  
 49125  func fsEof(tls *libc.TLS, cur uintptr) int32 {
 49126  	var pCur uintptr = cur
 49127  	return libc.Bool32(sqlite3.Xsqlite3_data_count(tls, (*fs_cursor)(unsafe.Pointer(pCur)).FpStmt) == 0)
 49128  }
 49129  
 49130  func fsBestIndex(tls *libc.TLS, tab uintptr, pIdxInfo uintptr) int32 {
 49131  	var ii int32
 49132  
 49133  	for ii = 0; ii < (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnConstraint; ii++ {
 49134  		var pCons uintptr = (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint + uintptr(ii)*12
 49135  		if (*sqlite3_index_constraint)(unsafe.Pointer(pCons)).FiColumn < 0 && (*sqlite3_index_constraint)(unsafe.Pointer(pCons)).Fusable != 0 &&
 49136  			int32((*sqlite3_index_constraint)(unsafe.Pointer(pCons)).Fop) == SQLITE_INDEX_CONSTRAINT_EQ {
 49137  			var pUsage uintptr
 49138  			pUsage = (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(ii)*8
 49139  			(*sqlite3_index_constraint_usage)(unsafe.Pointer(pUsage)).Fomit = uint8(0)
 49140  			(*sqlite3_index_constraint_usage)(unsafe.Pointer(pUsage)).FargvIndex = 1
 49141  			(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxNum = 1
 49142  			(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = 1.0
 49143  			break
 49144  		}
 49145  	}
 49146  
 49147  	return SQLITE_OK
 49148  }
 49149  
 49150  var fsModule = sqlite3_module{
 49151  	FxCreate:     0,
 49152  	FxConnect:    0,
 49153  	FxBestIndex:  0,
 49154  	FxDisconnect: 0,
 49155  	FxDestroy:    0,
 49156  	FxOpen:       0,
 49157  	FxClose:      0,
 49158  	FxFilter:     0,
 49159  	FxNext:       0,
 49160  	FxEof:        0,
 49161  	FxColumn:     0,
 49162  	FxRowid:      0,
 49163  }
 49164  
 49165  var fsdirModule = sqlite3_module{
 49166  	FxCreate:     0,
 49167  	FxConnect:    0,
 49168  	FxBestIndex:  0,
 49169  	FxDisconnect: 0,
 49170  	FxDestroy:    0,
 49171  	FxOpen:       0,
 49172  	FxClose:      0,
 49173  	FxFilter:     0,
 49174  	FxNext:       0,
 49175  	FxEof:        0,
 49176  	FxColumn:     0,
 49177  	FxRowid:      0,
 49178  }
 49179  
 49180  var fstreeModule = sqlite3_module{
 49181  	FxCreate:     0,
 49182  	FxConnect:    0,
 49183  	FxBestIndex:  0,
 49184  	FxDisconnect: 0,
 49185  	FxDestroy:    0,
 49186  	FxOpen:       0,
 49187  	FxClose:      0,
 49188  	FxFilter:     0,
 49189  	FxNext:       0,
 49190  	FxEof:        0,
 49191  	FxColumn:     0,
 49192  	FxRowid:      0,
 49193  }
 49194  
 49195  func register_fs_module(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 49196  	bp := tls.Alloc(8)
 49197  	defer tls.Free(8)
 49198  
 49199  	if objc != 2 {
 49200  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2050)
 49201  		return TCL_ERROR
 49202  	}
 49203  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 49204  		return TCL_ERROR
 49205  	}
 49206  	sqlite3.Xsqlite3_create_module(tls, *(*uintptr)(unsafe.Pointer(bp)), ts+31238, uintptr(unsafe.Pointer(&fsModule)), interp)
 49207  	sqlite3.Xsqlite3_create_module(tls, *(*uintptr)(unsafe.Pointer(bp)), ts+5325, uintptr(unsafe.Pointer(&fsdirModule)), uintptr(0))
 49208  	sqlite3.Xsqlite3_create_module(tls, *(*uintptr)(unsafe.Pointer(bp)), ts+31241, uintptr(unsafe.Pointer(&fstreeModule)), uintptr(0))
 49209  	return TCL_OK
 49210  }
 49211  
 49212  func Sqlitetestfs_Init(tls *libc.TLS, interp uintptr) int32 {
 49213  	var i int32
 49214  	for i = 0; uint64(i) < uint64(unsafe.Sizeof(aObjCmd6))/uint64(unsafe.Sizeof(struct {
 49215  		FzName      uintptr
 49216  		FxProc      uintptr
 49217  		FclientData uintptr
 49218  	}{})); i++ {
 49219  		tcl.XTcl_CreateObjCommand(tls, interp, aObjCmd6[i].FzName,
 49220  			aObjCmd6[i].FxProc, aObjCmd6[i].FclientData, uintptr(0))
 49221  	}
 49222  	return TCL_OK
 49223  }
 49224  
 49225  var aObjCmd6 = [1]struct {
 49226  	FzName      uintptr
 49227  	FxProc      uintptr
 49228  	FclientData uintptr
 49229  }{
 49230  	{FzName: ts + 31248, FxProc: 0},
 49231  }
 49232  
 49233  func testContextMalloc(tls *libc.TLS, context uintptr, nByte int32) uintptr {
 49234  	var z uintptr = sqlite3.Xsqlite3_malloc(tls, nByte)
 49235  	if !(z != 0) && nByte > 0 {
 49236  		sqlite3.Xsqlite3_result_error_nomem(tls, context)
 49237  	}
 49238  	return z
 49239  }
 49240  
 49241  func randStr(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 49242  	bp := tls.Alloc(1004)
 49243  	defer tls.Free(1004)
 49244  
 49245  	var iMin int32
 49246  	var iMax int32
 49247  	var n int32
 49248  
 49249  	var i int32
 49250  
 49251  	iMin = sqlite3.Xsqlite3_value_int(tls, *(*uintptr)(unsafe.Pointer(argv)))
 49252  	if iMin < 0 {
 49253  		iMin = 0
 49254  	}
 49255  	if uint64(iMin) >= uint64(unsafe.Sizeof([1000]uint8{})) {
 49256  		iMin = int32(uint64(unsafe.Sizeof([1000]uint8{})) - uint64(1))
 49257  	}
 49258  	iMax = sqlite3.Xsqlite3_value_int(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 49259  	if iMax < iMin {
 49260  		iMax = iMin
 49261  	}
 49262  	if uint64(iMax) >= uint64(unsafe.Sizeof([1000]uint8{})) {
 49263  		iMax = int32(uint64(unsafe.Sizeof([1000]uint8{})) - uint64(1))
 49264  	}
 49265  	n = iMin
 49266  	if iMax > iMin {
 49267  		sqlite3.Xsqlite3_randomness(tls, int32(unsafe.Sizeof(int32(0))), bp)
 49268  		*(*int32)(unsafe.Pointer(bp)) &= 0x7fffffff
 49269  		n = n + *(*int32)(unsafe.Pointer(bp))%(iMax+1-iMin)
 49270  	}
 49271  
 49272  	sqlite3.Xsqlite3_randomness(tls, n, bp+4)
 49273  	for i = 0; i < n; i++ {
 49274  		*(*uint8)(unsafe.Pointer(bp + 4 + uintptr(i))) = zSrc[uint64(*(*uint8)(unsafe.Pointer(bp + 4 + uintptr(i))))%(uint64(unsafe.Sizeof(zSrc))-uint64(1))]
 49275  	}
 49276  	*(*uint8)(unsafe.Pointer(bp + 4 + uintptr(n))) = uint8(0)
 49277  	sqlite3.Xsqlite3_result_text(tls, context, bp+4, n, libc.UintptrFromInt32(-1))
 49278  }
 49279  
 49280  var zSrc = *(*[79]uint8)(unsafe.Pointer(ts + 31267))
 49281  
 49282  var test_destructor_count_var int32 = 0
 49283  
 49284  func destructor(tls *libc.TLS, p uintptr) {
 49285  	var zVal uintptr = p
 49286  
 49287  	zVal--
 49288  	sqlite3.Xsqlite3_free(tls, zVal)
 49289  	test_destructor_count_var--
 49290  }
 49291  
 49292  func test_destructor(tls *libc.TLS, pCtx uintptr, nArg int32, argv uintptr) {
 49293  	var zVal uintptr
 49294  	var len int32
 49295  
 49296  	test_destructor_count_var++
 49297  
 49298  	if sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(argv))) == SQLITE_NULL {
 49299  		return
 49300  	}
 49301  	len = sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(argv)))
 49302  	zVal = testContextMalloc(tls, pCtx, len+3)
 49303  	if !(zVal != 0) {
 49304  		return
 49305  	}
 49306  	*(*int8)(unsafe.Pointer(zVal + uintptr(len+1))) = int8(0)
 49307  	*(*int8)(unsafe.Pointer(zVal + uintptr(len+2))) = int8(0)
 49308  	zVal++
 49309  	libc.X__builtin___memcpy_chk(tls, zVal, sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv))), uint64(len), libc.X__builtin_object_size(tls, zVal, 0))
 49310  	sqlite3.Xsqlite3_result_text(tls, pCtx, zVal, -1, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{destructor})))
 49311  }
 49312  
 49313  func test_destructor16(tls *libc.TLS, pCtx uintptr, nArg int32, argv uintptr) {
 49314  	var zVal uintptr
 49315  	var len int32
 49316  
 49317  	test_destructor_count_var++
 49318  
 49319  	if sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(argv))) == SQLITE_NULL {
 49320  		return
 49321  	}
 49322  	len = sqlite3.Xsqlite3_value_bytes16(tls, *(*uintptr)(unsafe.Pointer(argv)))
 49323  	zVal = testContextMalloc(tls, pCtx, len+3)
 49324  	if !(zVal != 0) {
 49325  		return
 49326  	}
 49327  	*(*int8)(unsafe.Pointer(zVal + uintptr(len+1))) = int8(0)
 49328  	*(*int8)(unsafe.Pointer(zVal + uintptr(len+2))) = int8(0)
 49329  	zVal++
 49330  	libc.X__builtin___memcpy_chk(tls, zVal, sqlite3.Xsqlite3_value_text16(tls, *(*uintptr)(unsafe.Pointer(argv))), uint64(len), libc.X__builtin_object_size(tls, zVal, 0))
 49331  	sqlite3.Xsqlite3_result_text16(tls, pCtx, zVal, -1, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{destructor})))
 49332  }
 49333  
 49334  func test_destructor_count(tls *libc.TLS, pCtx uintptr, nArg int32, argv uintptr) {
 49335  	sqlite3.Xsqlite3_result_int(tls, pCtx, test_destructor_count_var)
 49336  }
 49337  
 49338  func test_agg_errmsg16_step(tls *libc.TLS, a uintptr, b int32, c uintptr) {
 49339  }
 49340  
 49341  func test_agg_errmsg16_final(tls *libc.TLS, ctx uintptr) {
 49342  	var z uintptr
 49343  	var db uintptr = sqlite3.Xsqlite3_context_db_handle(tls, ctx)
 49344  	sqlite3.Xsqlite3_aggregate_context(tls, ctx, 2048)
 49345  	z = sqlite3.Xsqlite3_errmsg16(tls, db)
 49346  	sqlite3.Xsqlite3_result_text16(tls, ctx, z, -1, libc.UintptrFromInt32(-1))
 49347  }
 49348  
 49349  func free_test_auxdata(tls *libc.TLS, p uintptr) {
 49350  	sqlite3.Xsqlite3_free(tls, p)
 49351  }
 49352  
 49353  func test_auxdata(tls *libc.TLS, pCtx uintptr, nArg int32, argv uintptr) {
 49354  	var i int32
 49355  	var zRet uintptr = testContextMalloc(tls, pCtx, nArg*2)
 49356  	if !(zRet != 0) {
 49357  		return
 49358  	}
 49359  	libc.X__builtin___memset_chk(tls, zRet, 0, uint64(nArg*2), libc.X__builtin_object_size(tls, zRet, 0))
 49360  	for i = 0; i < nArg; i++ {
 49361  		var z uintptr = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8)))
 49362  		if z != 0 {
 49363  			var n int32
 49364  			var zAux uintptr = sqlite3.Xsqlite3_get_auxdata(tls, pCtx, i)
 49365  			if zAux != 0 {
 49366  				*(*int8)(unsafe.Pointer(zRet + uintptr(i*2))) = int8('1')
 49367  
 49368  			} else {
 49369  				*(*int8)(unsafe.Pointer(zRet + uintptr(i*2))) = int8('0')
 49370  			}
 49371  			n = int32(libc.Xstrlen(tls, z)) + 1
 49372  			zAux = testContextMalloc(tls, pCtx, n)
 49373  			if zAux != 0 {
 49374  				libc.X__builtin___memcpy_chk(tls, zAux, z, uint64(n), libc.X__builtin_object_size(tls, zAux, 0))
 49375  				sqlite3.Xsqlite3_set_auxdata(tls, pCtx, i, zAux, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{free_test_auxdata})))
 49376  			}
 49377  			*(*int8)(unsafe.Pointer(zRet + uintptr(i*2+1))) = int8(' ')
 49378  		}
 49379  	}
 49380  	sqlite3.Xsqlite3_result_text(tls, pCtx, zRet, 2*nArg-1, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{free_test_auxdata})))
 49381  }
 49382  
 49383  func test_error(tls *libc.TLS, pCtx uintptr, nArg int32, argv uintptr) {
 49384  	sqlite3.Xsqlite3_result_error(tls, pCtx, sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv))), -1)
 49385  	if nArg == 2 {
 49386  		sqlite3.Xsqlite3_result_error_code(tls, pCtx, sqlite3.Xsqlite3_value_int(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8))))
 49387  	}
 49388  }
 49389  
 49390  func counterFunc(tls *libc.TLS, pCtx uintptr, nArg int32, argv uintptr) {
 49391  	var pCounter uintptr = sqlite3.Xsqlite3_get_auxdata(tls, pCtx, 0)
 49392  	if pCounter == uintptr(0) {
 49393  		pCounter = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(int32(0))))
 49394  		if pCounter == uintptr(0) {
 49395  			sqlite3.Xsqlite3_result_error_nomem(tls, pCtx)
 49396  			return
 49397  		}
 49398  		*(*int32)(unsafe.Pointer(pCounter)) = sqlite3.Xsqlite3_value_int(tls, *(*uintptr)(unsafe.Pointer(argv)))
 49399  		sqlite3.Xsqlite3_set_auxdata(tls, pCtx, 0, pCounter, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{sqlite3.Xsqlite3_free})))
 49400  	} else {
 49401  		*(*int32)(unsafe.Pointer(pCounter))++
 49402  	}
 49403  	sqlite3.Xsqlite3_result_int(tls, pCtx, *(*int32)(unsafe.Pointer(pCounter)))
 49404  }
 49405  
 49406  func test_isolation(tls *libc.TLS, pCtx uintptr, nArg int32, argv uintptr) {
 49407  	sqlite3.Xsqlite3_value_text16(tls, *(*uintptr)(unsafe.Pointer(argv)))
 49408  	sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 49409  	sqlite3.Xsqlite3_value_text16(tls, *(*uintptr)(unsafe.Pointer(argv)))
 49410  	sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 49411  	sqlite3.Xsqlite3_result_value(tls, pCtx, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 49412  }
 49413  
 49414  func test_eval(tls *libc.TLS, pCtx uintptr, nArg int32, argv uintptr) {
 49415  	bp := tls.Alloc(16)
 49416  	defer tls.Free(16)
 49417  
 49418  	var rc int32
 49419  	var db uintptr = sqlite3.Xsqlite3_context_db_handle(tls, pCtx)
 49420  	var zSql uintptr
 49421  
 49422  	zSql = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 49423  	rc = sqlite3.Xsqlite3_prepare_v2(tls, db, zSql, -1, bp+8, uintptr(0))
 49424  	if rc == SQLITE_OK {
 49425  		rc = sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp + 8)))
 49426  		if rc == SQLITE_ROW {
 49427  			sqlite3.Xsqlite3_result_value(tls, pCtx, sqlite3.Xsqlite3_column_value(tls, *(*uintptr)(unsafe.Pointer(bp + 8)), 0))
 49428  		}
 49429  		rc = sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 8)))
 49430  	}
 49431  	if rc != 0 {
 49432  		var zErr uintptr
 49433  
 49434  		zErr = sqlite3.Xsqlite3_mprintf(tls, ts+31346, libc.VaList(bp, sqlite3.Xsqlite3_errmsg(tls, db)))
 49435  		sqlite3.Xsqlite3_result_text(tls, pCtx, zErr, -1, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{sqlite3.Xsqlite3_free})))
 49436  		sqlite3.Xsqlite3_result_error_code(tls, pCtx, rc)
 49437  	}
 49438  }
 49439  
 49440  func testHexChar(tls *libc.TLS, c int8) int32 {
 49441  	if int32(c) >= '0' && int32(c) <= '9' {
 49442  		return int32(c) - '0'
 49443  	} else if int32(c) >= 'a' && int32(c) <= 'f' {
 49444  		return int32(c) - 'a' + 10
 49445  	} else if int32(c) >= 'A' && int32(c) <= 'F' {
 49446  		return int32(c) - 'A' + 10
 49447  	}
 49448  	return 0
 49449  }
 49450  
 49451  func testHexToBin(tls *libc.TLS, zIn uintptr, zOut uintptr) {
 49452  	for *(*int8)(unsafe.Pointer(zIn)) != 0 && *(*int8)(unsafe.Pointer(zIn + 1)) != 0 {
 49453  		*(*int8)(unsafe.Pointer(libc.PostIncUintptr(&zOut, 1))) = int8(testHexChar(tls, *(*int8)(unsafe.Pointer(zIn)))<<4 + testHexChar(tls, *(*int8)(unsafe.Pointer(zIn + 1))))
 49454  		zIn += uintptr(2)
 49455  	}
 49456  }
 49457  
 49458  func testHexToUtf16be(tls *libc.TLS, pCtx uintptr, nArg int32, argv uintptr) {
 49459  	var n int32
 49460  	var zIn uintptr
 49461  	var zOut uintptr
 49462  
 49463  	n = sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(argv)))
 49464  	zIn = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 49465  	zOut = sqlite3.Xsqlite3_malloc(tls, n/2)
 49466  	if zOut == uintptr(0) {
 49467  		sqlite3.Xsqlite3_result_error_nomem(tls, pCtx)
 49468  	} else {
 49469  		testHexToBin(tls, zIn, zOut)
 49470  		sqlite3.Xsqlite3_result_text16be(tls, pCtx, zOut, n/2, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{sqlite3.Xsqlite3_free})))
 49471  	}
 49472  }
 49473  
 49474  func testHexToUtf8(tls *libc.TLS, pCtx uintptr, nArg int32, argv uintptr) {
 49475  	var n int32
 49476  	var zIn uintptr
 49477  	var zOut uintptr
 49478  
 49479  	n = sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(argv)))
 49480  	zIn = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 49481  	zOut = sqlite3.Xsqlite3_malloc(tls, n/2)
 49482  	if zOut == uintptr(0) {
 49483  		sqlite3.Xsqlite3_result_error_nomem(tls, pCtx)
 49484  	} else {
 49485  		testHexToBin(tls, zIn, zOut)
 49486  		sqlite3.Xsqlite3_result_text(tls, pCtx, zOut, n/2, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{sqlite3.Xsqlite3_free})))
 49487  	}
 49488  }
 49489  
 49490  func testHexToUtf16le(tls *libc.TLS, pCtx uintptr, nArg int32, argv uintptr) {
 49491  	var n int32
 49492  	var zIn uintptr
 49493  	var zOut uintptr
 49494  
 49495  	n = sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(argv)))
 49496  	zIn = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 49497  	zOut = sqlite3.Xsqlite3_malloc(tls, n/2)
 49498  	if zOut == uintptr(0) {
 49499  		sqlite3.Xsqlite3_result_error_nomem(tls, pCtx)
 49500  	} else {
 49501  		testHexToBin(tls, zIn, zOut)
 49502  		sqlite3.Xsqlite3_result_text16le(tls, pCtx, zOut, n/2, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{sqlite3.Xsqlite3_free})))
 49503  	}
 49504  }
 49505  
 49506  func real2hex(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 49507  	bp := tls.Alloc(28)
 49508  	defer tls.Free(28)
 49509  
 49510  	var i int32
 49511  	var bigEndian int32
 49512  	*(*sqlite3_uint64)(unsafe.Pointer(bp)) = uint64(1)
 49513  	bigEndian = libc.Bool32(int32(*(*uint8)(unsafe.Pointer(bp))) == 0)
 49514  	*(*float64)(unsafe.Pointer(bp)) = sqlite3.Xsqlite3_value_double(tls, *(*uintptr)(unsafe.Pointer(argv)))
 49515  	for i = 0; i < 8; i++ {
 49516  		if bigEndian != 0 {
 49517  			*(*int8)(unsafe.Pointer(bp + 8 + uintptr(i*2))) = *(*int8)(unsafe.Pointer(ts + 31377 + uintptr(int32(*(*uint8)(unsafe.Pointer(bp + uintptr(i))))>>4)))
 49518  			*(*int8)(unsafe.Pointer(bp + 8 + uintptr(i*2+1))) = *(*int8)(unsafe.Pointer(ts + 31377 + uintptr(int32(*(*uint8)(unsafe.Pointer(bp + uintptr(i))))&0xf)))
 49519  		} else {
 49520  			*(*int8)(unsafe.Pointer(bp + 8 + uintptr(14-i*2))) = *(*int8)(unsafe.Pointer(ts + 31377 + uintptr(int32(*(*uint8)(unsafe.Pointer(bp + uintptr(i))))>>4)))
 49521  			*(*int8)(unsafe.Pointer(bp + 8 + uintptr(14-i*2+1))) = *(*int8)(unsafe.Pointer(ts + 31377 + uintptr(int32(*(*uint8)(unsafe.Pointer(bp + uintptr(i))))&0xf)))
 49522  		}
 49523  	}
 49524  	*(*int8)(unsafe.Pointer(bp + 8 + 16)) = int8(0)
 49525  	sqlite3.Xsqlite3_result_text(tls, context, bp+8, -1, libc.UintptrFromInt32(-1))
 49526  }
 49527  
 49528  func test_extract(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 49529  	bp := tls.Alloc(72)
 49530  	defer tls.Free(72)
 49531  
 49532  	var db uintptr = sqlite3.Xsqlite3_context_db_handle(tls, context)
 49533  	var pRec uintptr
 49534  	var pEndHdr uintptr
 49535  	var pHdr uintptr
 49536  	var pBody uintptr
 49537  
 49538  	var iIdx int32
 49539  	var iCurrent int32 = 0
 49540  
 49541  	pRec = sqlite3.Xsqlite3_value_blob(tls, *(*uintptr)(unsafe.Pointer(argv)))
 49542  	iIdx = sqlite3.Xsqlite3_value_int(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 49543  
 49544  	pHdr = pRec + uintptr(sqlite3.Xsqlite3GetVarint(tls, pRec, bp))
 49545  	pBody = libc.AssignUintptr(&pEndHdr, pRec+uintptr(*(*u64)(unsafe.Pointer(bp))))
 49546  
 49547  	for iCurrent = 0; pHdr < pEndHdr && iCurrent <= iIdx; iCurrent++ {
 49548  		libc.X__builtin___memset_chk(tls, bp+8, 0, uint64(unsafe.Sizeof(Mem{})), libc.X__builtin_object_size(tls, bp+8, 0))
 49549  		(*Mem)(unsafe.Pointer(bp + 8)).Fdb = db
 49550  		(*Mem)(unsafe.Pointer(bp + 8)).Fenc = (*sqlite31)(unsafe.Pointer(db)).Fenc
 49551  		pHdr += uintptr(sqlite3.Xsqlite3GetVarint(tls, pHdr, bp+64))
 49552  		sqlite3.Xsqlite3VdbeSerialGet(tls, pBody, u32(*(*u64)(unsafe.Pointer(bp + 64))), bp+8)
 49553  		pBody += uintptr(sqlite3.Xsqlite3VdbeSerialTypeLen(tls, u32(*(*u64)(unsafe.Pointer(bp + 64)))))
 49554  
 49555  		if iCurrent == iIdx {
 49556  			sqlite3.Xsqlite3_result_value(tls, context, bp+8)
 49557  		}
 49558  
 49559  		if (*Mem)(unsafe.Pointer(bp+8)).FszMalloc != 0 {
 49560  			sqlite3.Xsqlite3DbFree(tls, db, (*Mem)(unsafe.Pointer(bp+8)).FzMalloc)
 49561  		}
 49562  	}
 49563  }
 49564  
 49565  func test_decode(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 49566  	bp := tls.Alloc(123)
 49567  	defer tls.Free(123)
 49568  
 49569  	var db uintptr = sqlite3.Xsqlite3_context_db_handle(tls, context)
 49570  	var pRec uintptr
 49571  	var pEndHdr uintptr
 49572  	var pHdr uintptr
 49573  	var pBody uintptr
 49574  
 49575  	var pRet uintptr
 49576  
 49577  	pRet = tcl.XTcl_NewObj(tls)
 49578  	(*Tcl_Obj)(unsafe.Pointer(pRet)).FrefCount++
 49579  
 49580  	pRec = sqlite3.Xsqlite3_value_blob(tls, *(*uintptr)(unsafe.Pointer(argv)))
 49581  
 49582  	pHdr = pRec + uintptr(sqlite3.Xsqlite3GetVarint(tls, pRec, bp+32))
 49583  	pBody = libc.AssignUintptr(&pEndHdr, pRec+uintptr(*(*u64)(unsafe.Pointer(bp + 32))))
 49584  	for pHdr < pEndHdr {
 49585  		var pVal uintptr = uintptr(0)
 49586  
 49587  		libc.X__builtin___memset_chk(tls, bp+40, 0, uint64(unsafe.Sizeof(Mem{})), libc.X__builtin_object_size(tls, bp+40, 0))
 49588  		(*Mem)(unsafe.Pointer(bp + 40)).Fdb = db
 49589  		(*Mem)(unsafe.Pointer(bp + 40)).Fenc = (*sqlite31)(unsafe.Pointer(db)).Fenc
 49590  		pHdr += uintptr(sqlite3.Xsqlite3GetVarint(tls, pHdr, bp+96))
 49591  		sqlite3.Xsqlite3VdbeSerialGet(tls, pBody, u32(*(*u64)(unsafe.Pointer(bp + 96))), bp+40)
 49592  		pBody += uintptr(sqlite3.Xsqlite3VdbeSerialTypeLen(tls, u32(*(*u64)(unsafe.Pointer(bp + 96)))))
 49593  
 49594  		switch sqlite3.Xsqlite3_value_type(tls, bp+40) {
 49595  		case SQLITE_TEXT:
 49596  			pVal = tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3_value_text(tls, bp+40), -1)
 49597  			break
 49598  
 49599  		case SQLITE_BLOB:
 49600  			{
 49601  				*(*[16]int8)(unsafe.Pointer(bp + 107)) = [16]int8{
 49602  					int8('0'), int8('1'), int8('2'), int8('3'), int8('4'), int8('5'), int8('6'), int8('7'),
 49603  					int8('8'), int8('9'), int8('a'), int8('b'), int8('c'), int8('d'), int8('e'), int8('f'),
 49604  				}
 49605  				var n int32 = sqlite3.Xsqlite3_value_bytes(tls, bp+40)
 49606  				var z uintptr = sqlite3.Xsqlite3_value_blob(tls, bp+40)
 49607  				var i int32
 49608  				pVal = tcl.XTcl_NewStringObj(tls, ts+6334, -1)
 49609  				for i = 0; i < n; i++ {
 49610  					*(*int8)(unsafe.Pointer(bp + 104)) = *(*int8)(unsafe.Pointer(bp + 107 + uintptr(int32(*(*u8)(unsafe.Pointer(z + uintptr(i))))>>4&0x0F)))
 49611  					*(*int8)(unsafe.Pointer(bp + 104 + 1)) = *(*int8)(unsafe.Pointer(bp + 107 + uintptr(int32(*(*u8)(unsafe.Pointer(z + uintptr(i))))&0x0F)))
 49612  					*(*int8)(unsafe.Pointer(bp + 104 + 2)) = int8(0)
 49613  					tcl.XTcl_AppendStringsToObj(tls, pVal, libc.VaList(bp, bp+104, 0))
 49614  				}
 49615  				tcl.XTcl_AppendStringsToObj(tls, pVal, libc.VaList(bp+16, ts+5624, 0))
 49616  				break
 49617  
 49618  			}
 49619  
 49620  		case SQLITE_FLOAT:
 49621  			pVal = tcl.XTcl_NewDoubleObj(tls, sqlite3.Xsqlite3_value_double(tls, bp+40))
 49622  			break
 49623  
 49624  		case SQLITE_INTEGER:
 49625  			pVal = tcl.XTcl_NewWideIntObj(tls, sqlite3.Xsqlite3_value_int64(tls, bp+40))
 49626  			break
 49627  
 49628  		case SQLITE_NULL:
 49629  			pVal = tcl.XTcl_NewStringObj(tls, ts+5846, -1)
 49630  			break
 49631  
 49632  		default:
 49633  		}
 49634  
 49635  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pRet, pVal)
 49636  
 49637  		if (*Mem)(unsafe.Pointer(bp+40)).FszMalloc != 0 {
 49638  			sqlite3.Xsqlite3DbFree(tls, db, (*Mem)(unsafe.Pointer(bp+40)).FzMalloc)
 49639  		}
 49640  	}
 49641  
 49642  	sqlite3.Xsqlite3_result_text(tls, context, tcl.XTcl_GetString(tls, pRet), -1, libc.UintptrFromInt32(-1))
 49643  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 49644  		if libc.PreDecInt32(&(*Tcl_Obj)(unsafe.Pointer(pRet)).FrefCount, 1) <= 0 {
 49645  			tcl.XTclFreeObj(tls, pRet)
 49646  		}
 49647  	}
 49648  }
 49649  
 49650  func test_zeroblob(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 49651  	var nZero int32 = sqlite3.Xsqlite3_value_int(tls, *(*uintptr)(unsafe.Pointer(argv)))
 49652  	sqlite3.Xsqlite3_result_zeroblob(tls, context, nZero)
 49653  }
 49654  
 49655  func test_getsubtype(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 49656  	sqlite3.Xsqlite3_result_int(tls, context, int32(sqlite3.Xsqlite3_value_subtype(tls, *(*uintptr)(unsafe.Pointer(argv)))))
 49657  }
 49658  
 49659  func test_frombind(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 49660  	var m sqlite3_uint64 = uint64(0)
 49661  	var i int32
 49662  	for i = 0; i < argc && i < 63; i++ {
 49663  		if sqlite3.Xsqlite3_value_frombind(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8))) != 0 {
 49664  			m = m | uint64(1)<<i
 49665  		}
 49666  	}
 49667  	sqlite3.Xsqlite3_result_int64(tls, context, sqlite3_int64(m))
 49668  }
 49669  
 49670  func test_setsubtype(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 49671  	sqlite3.Xsqlite3_result_value(tls, context, *(*uintptr)(unsafe.Pointer(argv)))
 49672  	sqlite3.Xsqlite3_result_subtype(tls, context, uint32(sqlite3.Xsqlite3_value_int(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))))
 49673  }
 49674  
 49675  func registerTestFunctions(tls *libc.TLS, db uintptr, pzErrMsg uintptr, pThunk uintptr) int32 {
 49676  	var i int32
 49677  
 49678  	for i = 0; uint64(i) < uint64(unsafe.Sizeof(aFuncs))/uint64(unsafe.Sizeof(struct {
 49679  		FzName       uintptr
 49680  		FnArg        int8
 49681  		F__ccgo_pad1 [3]byte
 49682  		FeTextRep    uint32
 49683  		FxFunc       uintptr
 49684  	}{})); i++ {
 49685  		sqlite3.Xsqlite3_create_function(tls, db, aFuncs[i].FzName, int32(aFuncs[i].FnArg),
 49686  			int32(aFuncs[i].FeTextRep), uintptr(0), aFuncs[i].FxFunc, uintptr(0), uintptr(0))
 49687  	}
 49688  
 49689  	sqlite3.Xsqlite3_create_function(tls, db, ts+31394, 0, SQLITE_ANY, uintptr(0), uintptr(0),
 49690  		*(*uintptr)(unsafe.Pointer(&struct {
 49691  			f func(*libc.TLS, uintptr, int32, uintptr)
 49692  		}{test_agg_errmsg16_step})), *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{test_agg_errmsg16_final})))
 49693  
 49694  	return SQLITE_OK
 49695  }
 49696  
 49697  var aFuncs = [20]struct {
 49698  	FzName       uintptr
 49699  	FnArg        int8
 49700  	F__ccgo_pad1 [3]byte
 49701  	FeTextRep    uint32
 49702  	FxFunc       uintptr
 49703  }{
 49704  	{FzName: ts + 31412, FnArg: int8(2), FeTextRep: uint32(SQLITE_UTF8), FxFunc: 0},
 49705  	{FzName: ts + 31420, FnArg: int8(1), FeTextRep: uint32(SQLITE_UTF8), FxFunc: 0},
 49706  	{FzName: ts + 31436, FnArg: int8(1), FeTextRep: uint32(SQLITE_UTF8), FxFunc: 0},
 49707  	{FzName: ts + 31454, FnArg: int8(1), FeTextRep: uint32(SQLITE_UTF8), FxFunc: 0},
 49708  	{FzName: ts + 31469, FnArg: int8(1), FeTextRep: uint32(SQLITE_UTF8), FxFunc: 0},
 49709  	{FzName: ts + 31484, FnArg: int8(1), FeTextRep: uint32(SQLITE_UTF8), FxFunc: 0},
 49710  	{FzName: ts + 31496, FeTextRep: uint32(SQLITE_UTF8), FxFunc: 0},
 49711  	{FzName: ts + 31518, FnArg: int8(-1), FeTextRep: uint32(SQLITE_UTF8), FxFunc: 0},
 49712  	{FzName: ts + 31531, FnArg: int8(1), FeTextRep: uint32(SQLITE_UTF8), FxFunc: 0},
 49713  	{FzName: ts + 31531, FnArg: int8(2), FeTextRep: uint32(SQLITE_UTF8), FxFunc: 0},
 49714  	{FzName: ts + 31542, FnArg: int8(1), FeTextRep: uint32(SQLITE_UTF8), FxFunc: 0},
 49715  	{FzName: ts + 31552, FnArg: int8(2), FeTextRep: uint32(SQLITE_UTF8), FxFunc: 0},
 49716  	{FzName: ts + 31567, FnArg: int8(1), FeTextRep: uint32(SQLITE_UTF8), FxFunc: 0},
 49717  	{FzName: ts + 31580, FnArg: int8(1), FeTextRep: uint32(SQLITE_UTF8), FxFunc: 0},
 49718  	{FzName: ts + 31589, FnArg: int8(1), FeTextRep: uint32(SQLITE_UTF8), FxFunc: 0},
 49719  	{FzName: ts + 31601, FnArg: int8(2), FeTextRep: uint32(SQLITE_UTF8), FxFunc: 0},
 49720  	{FzName: ts + 31614, FnArg: int8(1), FeTextRep: uint32(SQLITE_UTF8 | SQLITE_DETERMINISTIC), FxFunc: 0},
 49721  	{FzName: ts + 31628, FnArg: int8(1), FeTextRep: uint32(SQLITE_UTF8), FxFunc: 0},
 49722  	{FzName: ts + 31644, FnArg: int8(2), FeTextRep: uint32(SQLITE_UTF8), FxFunc: 0},
 49723  	{FzName: ts + 31660, FnArg: int8(-1), FeTextRep: uint32(SQLITE_UTF8), FxFunc: 0},
 49724  }
 49725  
 49726  func autoinstall_test_funcs(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 49727  	var rc int32 = sqlite3.Xsqlite3_auto_extension(tls, *(*uintptr)(unsafe.Pointer(&struct {
 49728  		f func(*libc.TLS, uintptr, uintptr, uintptr) int32
 49729  	}{registerTestFunctions})))
 49730  	if rc == SQLITE_OK {
 49731  		rc = sqlite3.Xsqlite3_auto_extension(tls, *(*uintptr)(unsafe.Pointer(&struct {
 49732  			f func(*libc.TLS, uintptr, uintptr, uintptr) int32
 49733  		}{Md5_Register})))
 49734  	}
 49735  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, rc))
 49736  	return TCL_OK
 49737  }
 49738  
 49739  func tStep(tls *libc.TLS, a uintptr, b int32, c uintptr) {
 49740  }
 49741  
 49742  func tFinal(tls *libc.TLS, a uintptr) {
 49743  }
 49744  
 49745  func abuse_create_function(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 49746  	bp := tls.Alloc(24)
 49747  	defer tls.Free(24)
 49748  
 49749  	var rc int32
 49750  	var mxArg int32
 49751  
 49752  	if !(getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+16) != 0) {
 49753  		goto __1
 49754  	}
 49755  	return TCL_ERROR
 49756  __1:
 49757  	;
 49758  	rc = sqlite3.Xsqlite3_create_function(tls, *(*uintptr)(unsafe.Pointer(bp + 16)), ts+31674, 1, SQLITE_UTF8, uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 49759  		f func(*libc.TLS, uintptr, int32, uintptr)
 49760  	}{tStep})), *(*uintptr)(unsafe.Pointer(&struct {
 49761  		f func(*libc.TLS, uintptr, int32, uintptr)
 49762  	}{tStep})), *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{tFinal})))
 49763  	if !(rc != SQLITE_MISUSE) {
 49764  		goto __2
 49765  	}
 49766  	goto abuse_err
 49767  __2:
 49768  	;
 49769  	rc = sqlite3.Xsqlite3_create_function(tls, *(*uintptr)(unsafe.Pointer(bp + 16)), ts+31674, 1, SQLITE_UTF8, uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 49770  		f func(*libc.TLS, uintptr, int32, uintptr)
 49771  	}{tStep})), *(*uintptr)(unsafe.Pointer(&struct {
 49772  		f func(*libc.TLS, uintptr, int32, uintptr)
 49773  	}{tStep})), uintptr(0))
 49774  	if !(rc != SQLITE_MISUSE) {
 49775  		goto __3
 49776  	}
 49777  	goto abuse_err
 49778  __3:
 49779  	;
 49780  	rc = sqlite3.Xsqlite3_create_function(tls, *(*uintptr)(unsafe.Pointer(bp + 16)), ts+31674, 1, SQLITE_UTF8, uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 49781  		f func(*libc.TLS, uintptr, int32, uintptr)
 49782  	}{tStep})), uintptr(0), *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{tFinal})))
 49783  	if !(rc != SQLITE_MISUSE) {
 49784  		goto __4
 49785  	}
 49786  	goto abuse_err
 49787  __4:
 49788  	;
 49789  	rc = sqlite3.Xsqlite3_create_function(tls, *(*uintptr)(unsafe.Pointer(bp + 16)), ts+31674, 1, SQLITE_UTF8, uintptr(0), uintptr(0), uintptr(0), *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{tFinal})))
 49790  	if !(rc != SQLITE_MISUSE) {
 49791  		goto __5
 49792  	}
 49793  	goto abuse_err
 49794  __5:
 49795  	;
 49796  	rc = sqlite3.Xsqlite3_create_function(tls, *(*uintptr)(unsafe.Pointer(bp + 16)), ts+31674, 1, SQLITE_UTF8, uintptr(0), uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 49797  		f func(*libc.TLS, uintptr, int32, uintptr)
 49798  	}{tStep})), uintptr(0))
 49799  	if !(rc != SQLITE_MISUSE) {
 49800  		goto __6
 49801  	}
 49802  	goto abuse_err
 49803  __6:
 49804  	;
 49805  	rc = sqlite3.Xsqlite3_create_function(tls, *(*uintptr)(unsafe.Pointer(bp + 16)), ts+31674, -2, SQLITE_UTF8, uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 49806  		f func(*libc.TLS, uintptr, int32, uintptr)
 49807  	}{tStep})), uintptr(0), uintptr(0))
 49808  	if !(rc != SQLITE_MISUSE) {
 49809  		goto __7
 49810  	}
 49811  	goto abuse_err
 49812  __7:
 49813  	;
 49814  	rc = sqlite3.Xsqlite3_create_function(tls, *(*uintptr)(unsafe.Pointer(bp + 16)), ts+31674, 128, SQLITE_UTF8, uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 49815  		f func(*libc.TLS, uintptr, int32, uintptr)
 49816  	}{tStep})), uintptr(0), uintptr(0))
 49817  	if !(rc != SQLITE_MISUSE) {
 49818  		goto __8
 49819  	}
 49820  	goto abuse_err
 49821  __8:
 49822  	;
 49823  	rc = sqlite3.Xsqlite3_create_function(tls, *(*uintptr)(unsafe.Pointer(bp + 16)),
 49824  		ts+31677,
 49825  		1, SQLITE_UTF8, uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 49826  			f func(*libc.TLS, uintptr, int32, uintptr)
 49827  		}{tStep})), uintptr(0), uintptr(0))
 49828  	if !(rc != SQLITE_MISUSE) {
 49829  		goto __9
 49830  	}
 49831  	goto abuse_err
 49832  __9:
 49833  	;
 49834  	sqlite3.Xsqlite3_limit(tls, *(*uintptr)(unsafe.Pointer(bp + 16)), SQLITE_LIMIT_FUNCTION_ARG, 10000)
 49835  	mxArg = sqlite3.Xsqlite3_limit(tls, *(*uintptr)(unsafe.Pointer(bp + 16)), SQLITE_LIMIT_FUNCTION_ARG, -1)
 49836  	rc = sqlite3.Xsqlite3_create_function(tls, *(*uintptr)(unsafe.Pointer(bp + 16)),
 49837  		ts+31934,
 49838  		mxArg, SQLITE_UTF8, uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 49839  			f func(*libc.TLS, uintptr, int32, uintptr)
 49840  		}{tStep})), uintptr(0), uintptr(0))
 49841  	if !(rc != SQLITE_OK) {
 49842  		goto __10
 49843  	}
 49844  	goto abuse_err
 49845  __10:
 49846  	;
 49847  	return TCL_OK
 49848  
 49849  abuse_err:
 49850  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+32190,
 49851  		uintptr(0)))
 49852  	return TCL_ERROR
 49853  }
 49854  
 49855  func rankfunc(tls *libc.TLS, pCtx uintptr, nVal int32, apVal uintptr) {
 49856  	var aMatchinfo uintptr
 49857  	var nMatchinfo int32
 49858  	var nCol int32
 49859  	var nPhrase int32
 49860  	var iPhrase int32
 49861  	var score float64
 49862  	var nHitCount int32
 49863  	var nGlobalHitCount int32
 49864  	var weight float64
 49865  	var iCol int32
 49866  
 49867  	var aPhraseinfo uintptr
 49868  	nCol = 0
 49869  	nPhrase = 0
 49870  	score = 0.0
 49871  
 49872  	if !(nVal < 1) {
 49873  		goto __1
 49874  	}
 49875  	goto wrong_number_args
 49876  __1:
 49877  	;
 49878  	aMatchinfo = sqlite3.Xsqlite3_value_blob(tls, *(*uintptr)(unsafe.Pointer(apVal)))
 49879  	nMatchinfo = int32(uint64(sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(apVal)))) / uint64(unsafe.Sizeof(int32(0))))
 49880  	if !(nMatchinfo >= 2) {
 49881  		goto __2
 49882  	}
 49883  	nPhrase = *(*int32)(unsafe.Pointer(aMatchinfo))
 49884  	nCol = *(*int32)(unsafe.Pointer(aMatchinfo + 1*4))
 49885  __2:
 49886  	;
 49887  	if !(nMatchinfo != 2+3*nCol*nPhrase) {
 49888  		goto __3
 49889  	}
 49890  	sqlite3.Xsqlite3_result_error(tls, pCtx,
 49891  		ts+32233, -1)
 49892  	return
 49893  __3:
 49894  	;
 49895  	if !(nVal != 1+nCol) {
 49896  		goto __4
 49897  	}
 49898  	goto wrong_number_args
 49899  __4:
 49900  	;
 49901  	iPhrase = 0
 49902  __5:
 49903  	if !(iPhrase < nPhrase) {
 49904  		goto __7
 49905  	}
 49906  
 49907  	aPhraseinfo = aMatchinfo + uintptr(2+iPhrase*nCol*3)*4
 49908  	iCol = 0
 49909  __8:
 49910  	if !(iCol < nCol) {
 49911  		goto __10
 49912  	}
 49913  	nHitCount = *(*int32)(unsafe.Pointer(aPhraseinfo + uintptr(3*iCol)*4))
 49914  	nGlobalHitCount = *(*int32)(unsafe.Pointer(aPhraseinfo + uintptr(3*iCol+1)*4))
 49915  	weight = sqlite3.Xsqlite3_value_double(tls, *(*uintptr)(unsafe.Pointer(apVal + uintptr(iCol+1)*8)))
 49916  	if !(nHitCount > 0) {
 49917  		goto __11
 49918  	}
 49919  	score = score + float64(nHitCount)/float64(nGlobalHitCount)*weight
 49920  __11:
 49921  	;
 49922  	goto __9
 49923  __9:
 49924  	iCol++
 49925  	goto __8
 49926  	goto __10
 49927  __10:
 49928  	;
 49929  	goto __6
 49930  __6:
 49931  	iPhrase++
 49932  	goto __5
 49933  	goto __7
 49934  __7:
 49935  	;
 49936  	sqlite3.Xsqlite3_result_double(tls, pCtx, score)
 49937  	return
 49938  
 49939  wrong_number_args:
 49940  	sqlite3.Xsqlite3_result_error(tls, pCtx, ts+32282, -1)
 49941  }
 49942  
 49943  func install_fts3_rank_function(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 49944  	bp := tls.Alloc(8)
 49945  	defer tls.Free(8)
 49946  
 49947  	if objc != 2 {
 49948  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2050)
 49949  		return TCL_ERROR
 49950  	}
 49951  
 49952  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 49953  		return TCL_ERROR
 49954  	}
 49955  	sqlite3.Xsqlite3_create_function(tls, *(*uintptr)(unsafe.Pointer(bp)), ts+32327, -1, SQLITE_UTF8, uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 49956  		f func(*libc.TLS, uintptr, int32, uintptr)
 49957  	}{rankfunc})), uintptr(0), uintptr(0))
 49958  	return TCL_OK
 49959  }
 49960  
 49961  func Sqlitetest_func_Init(tls *libc.TLS, interp uintptr) int32 {
 49962  	var i int32
 49963  
 49964  	for i = 0; uint64(i) < uint64(unsafe.Sizeof(aObjCmd7))/uint64(unsafe.Sizeof(struct {
 49965  		FzName uintptr
 49966  		FxProc uintptr
 49967  	}{})); i++ {
 49968  		tcl.XTcl_CreateObjCommand(tls, interp, aObjCmd7[i].FzName, aObjCmd7[i].FxProc, uintptr(0), uintptr(0))
 49969  	}
 49970  	sqlite3.Xsqlite3_initialize(tls)
 49971  	sqlite3.Xsqlite3_auto_extension(tls, *(*uintptr)(unsafe.Pointer(&struct {
 49972  		f func(*libc.TLS, uintptr, uintptr, uintptr) int32
 49973  	}{registerTestFunctions})))
 49974  	sqlite3.Xsqlite3_auto_extension(tls, *(*uintptr)(unsafe.Pointer(&struct {
 49975  		f func(*libc.TLS, uintptr, uintptr, uintptr) int32
 49976  	}{Md5_Register})))
 49977  	return TCL_OK
 49978  }
 49979  
 49980  var aObjCmd7 = [3]struct {
 49981  	FzName uintptr
 49982  	FxProc uintptr
 49983  }{
 49984  	{FzName: ts + 32332, FxProc: 0},
 49985  	{FzName: ts + 32359, FxProc: 0},
 49986  	{FzName: ts + 32381, FxProc: 0},
 49987  }
 49988  
 49989  func sqlite3TestBinToHex(tls *libc.TLS, zBuf uintptr, N int32) {
 49990  	bp := tls.Alloc(17)
 49991  	defer tls.Free(17)
 49992  
 49993  	*(*[17]uint8)(unsafe.Pointer(bp)) = *(*[17]uint8)(unsafe.Pointer(ts + 32408))
 49994  	var i int32
 49995  	var j int32
 49996  	var c uint8
 49997  	i = N * 2
 49998  	*(*uint8)(unsafe.Pointer(zBuf + uintptr(libc.PostDecInt32(&i, 1)))) = uint8(0)
 49999  	for j = N - 1; j >= 0; j-- {
 50000  		c = *(*uint8)(unsafe.Pointer(zBuf + uintptr(j)))
 50001  		*(*uint8)(unsafe.Pointer(zBuf + uintptr(libc.PostDecInt32(&i, 1)))) = *(*uint8)(unsafe.Pointer(bp + uintptr(int32(c)&0xf)))
 50002  		*(*uint8)(unsafe.Pointer(zBuf + uintptr(libc.PostDecInt32(&i, 1)))) = *(*uint8)(unsafe.Pointer(bp + uintptr(int32(c)>>4)))
 50003  	}
 50004  
 50005  }
 50006  
 50007  func sqlite3TestHexToBin(tls *libc.TLS, zIn uintptr, N int32, aOut uintptr) int32 {
 50008  	bp := tls.Alloc(256)
 50009  	defer tls.Free(256)
 50010  
 50011  	*(*[256]uint8)(unsafe.Pointer(bp)) = [256]uint8{
 50012  		uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0),
 50013  		uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0),
 50014  		uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0),
 50015  		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),
 50016  		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),
 50017  		uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0),
 50018  		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),
 50019  		uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0),
 50020  		uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0),
 50021  		uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0),
 50022  		uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0),
 50023  		uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0),
 50024  		uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0),
 50025  		uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0),
 50026  		uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0),
 50027  		uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0),
 50028  	}
 50029  	var i int32
 50030  	var j int32
 50031  	var hi int32 = 1
 50032  	var c uint8
 50033  
 50034  	for i = libc.AssignInt32(&j, 0); i < N; i++ {
 50035  		c = *(*uint8)(unsafe.Pointer(bp + uintptr(*(*uint8)(unsafe.Pointer(zIn + uintptr(i))))))
 50036  		if int32(c) == 0 {
 50037  			continue
 50038  		}
 50039  		if hi != 0 {
 50040  			*(*uint8)(unsafe.Pointer(aOut + uintptr(j))) = uint8((int32(c) - 1) << 4)
 50041  			hi = 0
 50042  		} else {
 50043  			*(*uint8)(unsafe.Pointer(aOut + uintptr(libc.PostIncInt32(&j, 1)))) |= uint8(int32(c) - 1)
 50044  			hi = 1
 50045  		}
 50046  	}
 50047  	return j
 50048  }
 50049  
 50050  func hexio_read(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 50051  	bp := tls.Alloc(48)
 50052  	defer tls.Free(48)
 50053  
 50054  	var got int32
 50055  	var zFile uintptr
 50056  	var zBuf uintptr
 50057  	var in uintptr
 50058  
 50059  	if objc != 4 {
 50060  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+32425)
 50061  		return TCL_ERROR
 50062  	}
 50063  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+40) != 0 {
 50064  		return TCL_ERROR
 50065  	}
 50066  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+44) != 0 {
 50067  		return TCL_ERROR
 50068  	}
 50069  	zFile = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 50070  	zBuf = sqlite3.Xsqlite3_malloc(tls, *(*int32)(unsafe.Pointer(bp + 44))*2+1)
 50071  	if zBuf == uintptr(0) {
 50072  		return TCL_ERROR
 50073  	}
 50074  	in = libc.Xfopen(tls, zFile, ts+4402)
 50075  	if in == uintptr(0) {
 50076  		in = libc.Xfopen(tls, zFile, ts+32445)
 50077  	}
 50078  	if in == uintptr(0) {
 50079  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+32447, zFile, 0))
 50080  		return TCL_ERROR
 50081  	}
 50082  	libc.Xfseek(tls, in, int64(*(*int32)(unsafe.Pointer(bp + 40))), SEEK_SET)
 50083  	got = int32(libc.Xfread(tls, zBuf, uint64(1), uint64(*(*int32)(unsafe.Pointer(bp + 44))), in))
 50084  	libc.Xfclose(tls, in)
 50085  	if got < 0 {
 50086  		got = 0
 50087  	}
 50088  	sqlite3TestBinToHex(tls, zBuf, got)
 50089  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+24, zBuf, 0))
 50090  	sqlite3.Xsqlite3_free(tls, zBuf)
 50091  	return TCL_OK
 50092  }
 50093  
 50094  func hexio_write(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 50095  	bp := tls.Alloc(32)
 50096  	defer tls.Free(32)
 50097  
 50098  	var nOut int32
 50099  	var written int32
 50100  	var zFile uintptr
 50101  	var zIn uintptr
 50102  	var aOut uintptr
 50103  	var out uintptr
 50104  
 50105  	if objc != 4 {
 50106  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+32471)
 50107  		return TCL_ERROR
 50108  	}
 50109  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+24) != 0 {
 50110  		return TCL_ERROR
 50111  	}
 50112  	zFile = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 50113  	zIn = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+28)
 50114  	aOut = sqlite3.Xsqlite3_malloc(tls, 1+*(*int32)(unsafe.Pointer(bp + 28))/2)
 50115  	if aOut == uintptr(0) {
 50116  		return TCL_ERROR
 50117  	}
 50118  	nOut = sqlite3TestHexToBin(tls, zIn, *(*int32)(unsafe.Pointer(bp + 28)), aOut)
 50119  	out = libc.Xfopen(tls, zFile, ts+32495)
 50120  	if out == uintptr(0) {
 50121  		out = libc.Xfopen(tls, zFile, ts+32499)
 50122  	}
 50123  	if out == uintptr(0) {
 50124  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+32502, zFile, 0))
 50125  		return TCL_ERROR
 50126  	}
 50127  	libc.Xfseek(tls, out, int64(*(*int32)(unsafe.Pointer(bp + 24))), SEEK_SET)
 50128  	written = int32(libc.Xfwrite(tls, aOut, uint64(1), uint64(nOut), out))
 50129  	sqlite3.Xsqlite3_free(tls, aOut)
 50130  	libc.Xfclose(tls, out)
 50131  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, written))
 50132  	return TCL_OK
 50133  }
 50134  
 50135  func hexio_get_int(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 50136  	bp := tls.Alloc(8)
 50137  	defer tls.Free(8)
 50138  
 50139  	var val int32
 50140  
 50141  	var nOut int32
 50142  	var zIn uintptr
 50143  	var aOut uintptr
 50144  
 50145  	if objc != 2 {
 50146  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+32527)
 50147  		return TCL_ERROR
 50148  	}
 50149  	zIn = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp)
 50150  	aOut = sqlite3.Xsqlite3_malloc(tls, 1+*(*int32)(unsafe.Pointer(bp))/2)
 50151  	if aOut == uintptr(0) {
 50152  		return TCL_ERROR
 50153  	}
 50154  	nOut = sqlite3TestHexToBin(tls, zIn, *(*int32)(unsafe.Pointer(bp)), aOut)
 50155  	if nOut >= 4 {
 50156  		libc.X__builtin___memcpy_chk(tls, bp+4, aOut, uint64(4), libc.X__builtin_object_size(tls, bp+4, 0))
 50157  	} else {
 50158  		libc.X__builtin___memset_chk(tls, bp+4, 0, uint64(unsafe.Sizeof([4]uint8{})), libc.X__builtin_object_size(tls, bp+4, 0))
 50159  		libc.X__builtin___memcpy_chk(tls, bp+4+uintptr(4-nOut), aOut, uint64(nOut), libc.X__builtin_object_size(tls, bp+4+uintptr(4-nOut), 0))
 50160  	}
 50161  	sqlite3.Xsqlite3_free(tls, aOut)
 50162  	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)))
 50163  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, val))
 50164  	return TCL_OK
 50165  }
 50166  
 50167  func hexio_render_int16(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 50168  	bp := tls.Alloc(14)
 50169  	defer tls.Free(14)
 50170  
 50171  	if objc != 2 {
 50172  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2413)
 50173  		return TCL_ERROR
 50174  	}
 50175  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp) != 0 {
 50176  		return TCL_ERROR
 50177  	}
 50178  	*(*uint8)(unsafe.Pointer(bp + 4)) = uint8(*(*int32)(unsafe.Pointer(bp)) >> 8)
 50179  	*(*uint8)(unsafe.Pointer(bp + 4 + 1)) = uint8(*(*int32)(unsafe.Pointer(bp)))
 50180  	sqlite3TestBinToHex(tls, bp+4, 2)
 50181  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, bp+4, 4))
 50182  	return TCL_OK
 50183  }
 50184  
 50185  func hexio_render_int32(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 50186  	bp := tls.Alloc(14)
 50187  	defer tls.Free(14)
 50188  
 50189  	if objc != 2 {
 50190  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2413)
 50191  		return TCL_ERROR
 50192  	}
 50193  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp) != 0 {
 50194  		return TCL_ERROR
 50195  	}
 50196  	*(*uint8)(unsafe.Pointer(bp + 4)) = uint8(*(*int32)(unsafe.Pointer(bp)) >> 24)
 50197  	*(*uint8)(unsafe.Pointer(bp + 4 + 1)) = uint8(*(*int32)(unsafe.Pointer(bp)) >> 16)
 50198  	*(*uint8)(unsafe.Pointer(bp + 4 + 2)) = uint8(*(*int32)(unsafe.Pointer(bp)) >> 8)
 50199  	*(*uint8)(unsafe.Pointer(bp + 4 + 3)) = uint8(*(*int32)(unsafe.Pointer(bp)))
 50200  	sqlite3TestBinToHex(tls, bp+4, 4)
 50201  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, bp+4, 8))
 50202  	return TCL_OK
 50203  }
 50204  
 50205  func utf8_to_utf8(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 50206  	bp := tls.Alloc(16)
 50207  	defer tls.Free(16)
 50208  
 50209  	tcl.XTcl_AppendResult(tls, interp,
 50210  		libc.VaList(bp, ts+32535, 0))
 50211  	return TCL_ERROR
 50212  }
 50213  
 50214  func getFts3Varint(tls *libc.TLS, p uintptr, v uintptr) int32 {
 50215  	var q uintptr = p
 50216  	var x sqlite_uint64 = uint64(0)
 50217  	var y sqlite_uint64 = uint64(1)
 50218  	for int32(*(*uint8)(unsafe.Pointer(q)))&0x80 == 0x80 {
 50219  		x = x + y*sqlite_uint64(int32(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&q, 1))))&0x7f)
 50220  		y <<= 7
 50221  	}
 50222  	x = x + y*sqlite_uint64(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&q, 1))))
 50223  	*(*sqlite_int64)(unsafe.Pointer(v)) = sqlite_int64(x)
 50224  	return int32((int64(q) - int64(p)) / 1)
 50225  }
 50226  
 50227  func putFts3Varint(tls *libc.TLS, p uintptr, v sqlite_int64) int32 {
 50228  	var q uintptr = p
 50229  	var vu sqlite_uint64 = sqlite_uint64(v)
 50230  	for __ccgo := true; __ccgo; __ccgo = vu != uint64(0) {
 50231  		*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&q, 1))) = uint8(vu&uint64(0x7f) | uint64(0x80))
 50232  		vu >>= 7
 50233  	}
 50234  	*(*uint8)(unsafe.Pointer(q + libc.UintptrFromInt32(-1))) &= uint8(0x7f)
 50235  
 50236  	return int32((int64(q) - int64(p)) / 1)
 50237  }
 50238  
 50239  func read_fts3varint(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 50240  	bp := tls.Alloc(16)
 50241  	defer tls.Free(16)
 50242  
 50243  	var zBlob uintptr
 50244  
 50245  	var nVal int32
 50246  
 50247  	if objc != 3 {
 50248  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+32589)
 50249  		return TCL_ERROR
 50250  	}
 50251  	zBlob = tcl.XTcl_GetByteArrayFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp)
 50252  
 50253  	nVal = getFts3Varint(tls, zBlob, bp+8)
 50254  	tcl.XTcl_ObjSetVar2(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), uintptr(0), tcl.XTcl_NewWideIntObj(tls, *(*sqlite3_int64)(unsafe.Pointer(bp + 8))), 0)
 50255  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, nVal))
 50256  	return TCL_OK
 50257  }
 50258  
 50259  func make_fts3record(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 50260  	bp := tls.Alloc(28)
 50261  	defer tls.Free(28)
 50262  
 50263  	*(*uintptr)(unsafe.Pointer(bp + 8)) = uintptr(0)
 50264  	*(*int32)(unsafe.Pointer(bp)) = 0
 50265  	var aOut uintptr = uintptr(0)
 50266  	var nOut int32 = 0
 50267  	var nAlloc int32 = 0
 50268  	var i int32
 50269  
 50270  	if objc != 2 {
 50271  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+32602)
 50272  		return TCL_ERROR
 50273  	}
 50274  	if tcl.XTcl_ListObjGetElements(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp, bp+8) != 0 {
 50275  		return TCL_ERROR
 50276  	}
 50277  
 50278  	for i = 0; i < *(*int32)(unsafe.Pointer(bp)); i++ {
 50279  		if TCL_OK == tcl.XTcl_GetWideIntFromObj(tls, uintptr(0), *(*uintptr)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 8)) + uintptr(i)*8)), bp+16) {
 50280  			if nOut+10 > nAlloc {
 50281  				var nNew int32
 50282  				if nAlloc != 0 {
 50283  					nNew = nAlloc * 2
 50284  				} else {
 50285  					nNew = 128
 50286  				}
 50287  				var aNew uintptr = sqlite3.Xsqlite3_realloc(tls, aOut, nNew)
 50288  				if aNew == uintptr(0) {
 50289  					sqlite3.Xsqlite3_free(tls, aOut)
 50290  					return TCL_ERROR
 50291  				}
 50292  				aOut = aNew
 50293  				nAlloc = nNew
 50294  			}
 50295  			nOut = nOut + putFts3Varint(tls, aOut+uintptr(nOut), *(*sqlite3_int64)(unsafe.Pointer(bp + 16)))
 50296  		} else {
 50297  			*(*int32)(unsafe.Pointer(bp + 24)) = 0
 50298  			var zVal uintptr = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 8)) + uintptr(i)*8)), bp+24)
 50299  			for nOut+*(*int32)(unsafe.Pointer(bp + 24)) > nAlloc {
 50300  				var nNew int32
 50301  				if nAlloc != 0 {
 50302  					nNew = nAlloc * 2
 50303  				} else {
 50304  					nNew = 128
 50305  				}
 50306  				var aNew uintptr = sqlite3.Xsqlite3_realloc(tls, aOut, nNew)
 50307  				if aNew == uintptr(0) {
 50308  					sqlite3.Xsqlite3_free(tls, aOut)
 50309  					return TCL_ERROR
 50310  				}
 50311  				aOut = aNew
 50312  				nAlloc = nNew
 50313  			}
 50314  			libc.X__builtin___memcpy_chk(tls, aOut+uintptr(nOut), zVal, uint64(*(*int32)(unsafe.Pointer(bp + 24))), libc.X__builtin_object_size(tls, aOut+uintptr(nOut), 0))
 50315  			nOut = nOut + *(*int32)(unsafe.Pointer(bp + 24))
 50316  		}
 50317  	}
 50318  
 50319  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewByteArrayObj(tls, aOut, nOut))
 50320  	sqlite3.Xsqlite3_free(tls, aOut)
 50321  	return TCL_OK
 50322  }
 50323  
 50324  func Sqlitetest_hexio_Init(tls *libc.TLS, interp uintptr) int32 {
 50325  	var i int32
 50326  	for i = 0; uint64(i) < uint64(unsafe.Sizeof(aObjCmd8))/uint64(unsafe.Sizeof(struct {
 50327  		FzName uintptr
 50328  		FxProc uintptr
 50329  	}{})); i++ {
 50330  		tcl.XTcl_CreateObjCommand(tls, interp, aObjCmd8[i].FzName, aObjCmd8[i].FxProc, uintptr(0), uintptr(0))
 50331  	}
 50332  	return TCL_OK
 50333  }
 50334  
 50335  var aObjCmd8 = [8]struct {
 50336  	FzName uintptr
 50337  	FxProc uintptr
 50338  }{
 50339  	{FzName: ts + 32607, FxProc: 0},
 50340  	{FzName: ts + 32618, FxProc: 0},
 50341  	{FzName: ts + 32630, FxProc: 0},
 50342  	{FzName: ts + 32644, FxProc: 0},
 50343  	{FzName: ts + 32663, FxProc: 0},
 50344  	{FzName: ts + 32682, FxProc: 0},
 50345  	{FzName: ts + 32695, FxProc: 0},
 50346  	{FzName: ts + 32711, FxProc: 0},
 50347  }
 50348  
 50349  type Wrapped = struct {
 50350  	Fpcache      sqlite3_pcache_methods2
 50351  	Fmem         sqlite3_mem_methods
 50352  	Fmutex       sqlite3_mutex_methods
 50353  	Fmem_init    int32
 50354  	Fmem_fail    int32
 50355  	Fmutex_init  int32
 50356  	Fmutex_fail  int32
 50357  	Fpcache_init int32
 50358  	Fpcache_fail int32
 50359  }
 50360  
 50361  var wrapped Wrapped
 50362  
 50363  func wrMemInit(tls *libc.TLS, pAppData uintptr) int32 {
 50364  	var rc int32
 50365  	if wrapped.Fmem_fail != 0 {
 50366  		rc = SQLITE_ERROR
 50367  	} else {
 50368  		rc = (*struct {
 50369  			f func(*libc.TLS, uintptr) int32
 50370  		})(unsafe.Pointer(&struct{ uintptr }{wrapped.Fmem.FxInit})).f(tls, wrapped.Fmem.FpAppData)
 50371  	}
 50372  	if rc == SQLITE_OK {
 50373  		wrapped.Fmem_init = 1
 50374  	}
 50375  	return rc
 50376  }
 50377  
 50378  func wrMemShutdown(tls *libc.TLS, pAppData uintptr) {
 50379  	(*struct{ f func(*libc.TLS, uintptr) })(unsafe.Pointer(&struct{ uintptr }{wrapped.Fmem.FxShutdown})).f(tls, wrapped.Fmem.FpAppData)
 50380  	wrapped.Fmem_init = 0
 50381  }
 50382  
 50383  func wrMemMalloc(tls *libc.TLS, n int32) uintptr {
 50384  	return (*struct {
 50385  		f func(*libc.TLS, int32) uintptr
 50386  	})(unsafe.Pointer(&struct{ uintptr }{wrapped.Fmem.FxMalloc})).f(tls, n)
 50387  }
 50388  
 50389  func wrMemFree(tls *libc.TLS, p uintptr) {
 50390  	(*struct{ f func(*libc.TLS, uintptr) })(unsafe.Pointer(&struct{ uintptr }{wrapped.Fmem.FxFree})).f(tls, p)
 50391  }
 50392  
 50393  func wrMemRealloc(tls *libc.TLS, p uintptr, n int32) uintptr {
 50394  	return (*struct {
 50395  		f func(*libc.TLS, uintptr, int32) uintptr
 50396  	})(unsafe.Pointer(&struct{ uintptr }{wrapped.Fmem.FxRealloc})).f(tls, p, n)
 50397  }
 50398  
 50399  func wrMemSize(tls *libc.TLS, p uintptr) int32 {
 50400  	return (*struct {
 50401  		f func(*libc.TLS, uintptr) int32
 50402  	})(unsafe.Pointer(&struct{ uintptr }{wrapped.Fmem.FxSize})).f(tls, p)
 50403  }
 50404  
 50405  func wrMemRoundup(tls *libc.TLS, n int32) int32 {
 50406  	return (*struct{ f func(*libc.TLS, int32) int32 })(unsafe.Pointer(&struct{ uintptr }{wrapped.Fmem.FxRoundup})).f(tls, n)
 50407  }
 50408  
 50409  func wrMutexInit(tls *libc.TLS) int32 {
 50410  	var rc int32
 50411  	if wrapped.Fmutex_fail != 0 {
 50412  		rc = SQLITE_ERROR
 50413  	} else {
 50414  		rc = (*struct{ f func(*libc.TLS) int32 })(unsafe.Pointer(&struct{ uintptr }{wrapped.Fmutex.FxMutexInit})).f(tls)
 50415  	}
 50416  	if rc == SQLITE_OK {
 50417  		wrapped.Fmutex_init = 1
 50418  	}
 50419  	return rc
 50420  }
 50421  
 50422  func wrMutexEnd(tls *libc.TLS) int32 {
 50423  	(*struct{ f func(*libc.TLS) int32 })(unsafe.Pointer(&struct{ uintptr }{wrapped.Fmutex.FxMutexEnd})).f(tls)
 50424  	wrapped.Fmutex_init = 0
 50425  	return SQLITE_OK
 50426  }
 50427  
 50428  func wrMutexAlloc(tls *libc.TLS, e int32) uintptr {
 50429  	return (*struct {
 50430  		f func(*libc.TLS, int32) uintptr
 50431  	})(unsafe.Pointer(&struct{ uintptr }{wrapped.Fmutex.FxMutexAlloc})).f(tls, e)
 50432  }
 50433  
 50434  func wrMutexFree(tls *libc.TLS, p uintptr) {
 50435  	(*struct{ f func(*libc.TLS, uintptr) })(unsafe.Pointer(&struct{ uintptr }{wrapped.Fmutex.FxMutexFree})).f(tls, p)
 50436  }
 50437  
 50438  func wrMutexEnter(tls *libc.TLS, p uintptr) {
 50439  	(*struct{ f func(*libc.TLS, uintptr) })(unsafe.Pointer(&struct{ uintptr }{wrapped.Fmutex.FxMutexEnter})).f(tls, p)
 50440  }
 50441  
 50442  func wrMutexTry(tls *libc.TLS, p uintptr) int32 {
 50443  	return (*struct {
 50444  		f func(*libc.TLS, uintptr) int32
 50445  	})(unsafe.Pointer(&struct{ uintptr }{wrapped.Fmutex.FxMutexTry})).f(tls, p)
 50446  }
 50447  
 50448  func wrMutexLeave(tls *libc.TLS, p uintptr) {
 50449  	(*struct{ f func(*libc.TLS, uintptr) })(unsafe.Pointer(&struct{ uintptr }{wrapped.Fmutex.FxMutexLeave})).f(tls, p)
 50450  }
 50451  
 50452  func wrMutexHeld(tls *libc.TLS, p uintptr) int32 {
 50453  	return (*struct {
 50454  		f func(*libc.TLS, uintptr) int32
 50455  	})(unsafe.Pointer(&struct{ uintptr }{wrapped.Fmutex.FxMutexHeld})).f(tls, p)
 50456  }
 50457  
 50458  func wrMutexNotheld(tls *libc.TLS, p uintptr) int32 {
 50459  	return (*struct {
 50460  		f func(*libc.TLS, uintptr) int32
 50461  	})(unsafe.Pointer(&struct{ uintptr }{wrapped.Fmutex.FxMutexNotheld})).f(tls, p)
 50462  }
 50463  
 50464  func wrPCacheInit(tls *libc.TLS, pArg uintptr) int32 {
 50465  	var rc int32
 50466  	if wrapped.Fpcache_fail != 0 {
 50467  		rc = SQLITE_ERROR
 50468  	} else {
 50469  		rc = (*struct {
 50470  			f func(*libc.TLS, uintptr) int32
 50471  		})(unsafe.Pointer(&struct{ uintptr }{wrapped.Fpcache.FxInit})).f(tls, wrapped.Fpcache.FpArg)
 50472  	}
 50473  	if rc == SQLITE_OK {
 50474  		wrapped.Fpcache_init = 1
 50475  	}
 50476  	return rc
 50477  }
 50478  
 50479  func wrPCacheShutdown(tls *libc.TLS, pArg uintptr) {
 50480  	(*struct{ f func(*libc.TLS, uintptr) })(unsafe.Pointer(&struct{ uintptr }{wrapped.Fpcache.FxShutdown})).f(tls, wrapped.Fpcache.FpArg)
 50481  	wrapped.Fpcache_init = 0
 50482  }
 50483  
 50484  func wrPCacheCreate(tls *libc.TLS, a int32, b int32, c int32) uintptr {
 50485  	return (*struct {
 50486  		f func(*libc.TLS, int32, int32, int32) uintptr
 50487  	})(unsafe.Pointer(&struct{ uintptr }{wrapped.Fpcache.FxCreate})).f(tls, a, b, c)
 50488  }
 50489  
 50490  func wrPCacheCachesize(tls *libc.TLS, p uintptr, n int32) {
 50491  	(*struct {
 50492  		f func(*libc.TLS, uintptr, int32)
 50493  	})(unsafe.Pointer(&struct{ uintptr }{wrapped.Fpcache.FxCachesize})).f(tls, p, n)
 50494  }
 50495  
 50496  func wrPCachePagecount(tls *libc.TLS, p uintptr) int32 {
 50497  	return (*struct {
 50498  		f func(*libc.TLS, uintptr) int32
 50499  	})(unsafe.Pointer(&struct{ uintptr }{wrapped.Fpcache.FxPagecount})).f(tls, p)
 50500  }
 50501  
 50502  func wrPCacheFetch(tls *libc.TLS, p uintptr, a uint32, b int32) uintptr {
 50503  	return (*struct {
 50504  		f func(*libc.TLS, uintptr, uint32, int32) uintptr
 50505  	})(unsafe.Pointer(&struct{ uintptr }{wrapped.Fpcache.FxFetch})).f(tls, p, a, b)
 50506  }
 50507  
 50508  func wrPCacheUnpin(tls *libc.TLS, p uintptr, a uintptr, b int32) {
 50509  	(*struct {
 50510  		f func(*libc.TLS, uintptr, uintptr, int32)
 50511  	})(unsafe.Pointer(&struct{ uintptr }{wrapped.Fpcache.FxUnpin})).f(tls, p, a, b)
 50512  }
 50513  
 50514  func wrPCacheRekey(tls *libc.TLS, p uintptr, a uintptr, b uint32, c uint32) {
 50515  	(*struct {
 50516  		f func(*libc.TLS, uintptr, uintptr, uint32, uint32)
 50517  	})(unsafe.Pointer(&struct{ uintptr }{wrapped.Fpcache.FxRekey})).f(tls, p, a, b, c)
 50518  }
 50519  
 50520  func wrPCacheTruncate(tls *libc.TLS, p uintptr, a uint32) {
 50521  	(*struct {
 50522  		f func(*libc.TLS, uintptr, uint32)
 50523  	})(unsafe.Pointer(&struct{ uintptr }{wrapped.Fpcache.FxTruncate})).f(tls, p, a)
 50524  }
 50525  
 50526  func wrPCacheDestroy(tls *libc.TLS, p uintptr) {
 50527  	(*struct{ f func(*libc.TLS, uintptr) })(unsafe.Pointer(&struct{ uintptr }{wrapped.Fpcache.FxDestroy})).f(tls, p)
 50528  }
 50529  
 50530  func installInitWrappers(tls *libc.TLS) {
 50531  	bp := tls.Alloc(288)
 50532  	defer tls.Free(288)
 50533  
 50534  	*(*sqlite3_mutex_methods)(unsafe.Pointer(bp + 48)) = sqlite3_mutex_methods{
 50535  		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 {
 50536  			f func(*libc.TLS, int32) uintptr
 50537  		}{wrMutexAlloc})),
 50538  		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 {
 50539  			f func(*libc.TLS, uintptr) int32
 50540  		}{wrMutexTry})),
 50541  		FxMutexLeave: *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{wrMutexLeave})), FxMutexHeld: *(*uintptr)(unsafe.Pointer(&struct {
 50542  			f func(*libc.TLS, uintptr) int32
 50543  		}{wrMutexHeld})), FxMutexNotheld: *(*uintptr)(unsafe.Pointer(&struct {
 50544  			f func(*libc.TLS, uintptr) int32
 50545  		}{wrMutexNotheld})),
 50546  	}
 50547  	*(*sqlite3_pcache_methods2)(unsafe.Pointer(bp + 184)) = sqlite3_pcache_methods2{
 50548  		FiVersion: 1,
 50549  		FxInit: *(*uintptr)(unsafe.Pointer(&struct {
 50550  			f func(*libc.TLS, uintptr) int32
 50551  		}{wrPCacheInit})), FxShutdown: *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{wrPCacheShutdown})), FxCreate: *(*uintptr)(unsafe.Pointer(&struct {
 50552  			f func(*libc.TLS, int32, int32, int32) uintptr
 50553  		}{wrPCacheCreate})),
 50554  		FxCachesize: *(*uintptr)(unsafe.Pointer(&struct {
 50555  			f func(*libc.TLS, uintptr, int32)
 50556  		}{wrPCacheCachesize})), FxPagecount: *(*uintptr)(unsafe.Pointer(&struct {
 50557  			f func(*libc.TLS, uintptr) int32
 50558  		}{wrPCachePagecount})), FxFetch: *(*uintptr)(unsafe.Pointer(&struct {
 50559  			f func(*libc.TLS, uintptr, uint32, int32) uintptr
 50560  		}{wrPCacheFetch})),
 50561  		FxUnpin: *(*uintptr)(unsafe.Pointer(&struct {
 50562  			f func(*libc.TLS, uintptr, uintptr, int32)
 50563  		}{wrPCacheUnpin})), FxRekey: *(*uintptr)(unsafe.Pointer(&struct {
 50564  			f func(*libc.TLS, uintptr, uintptr, uint32, uint32)
 50565  		}{wrPCacheRekey})), FxTruncate: *(*uintptr)(unsafe.Pointer(&struct {
 50566  			f func(*libc.TLS, uintptr, uint32)
 50567  		}{wrPCacheTruncate})),
 50568  		FxDestroy: *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{wrPCacheDestroy})),
 50569  	}
 50570  	*(*sqlite3_mem_methods)(unsafe.Pointer(bp + 120)) = sqlite3_mem_methods{
 50571  		FxMalloc: *(*uintptr)(unsafe.Pointer(&struct {
 50572  			f func(*libc.TLS, int32) uintptr
 50573  		}{wrMemMalloc})), FxFree: *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{wrMemFree})), FxRealloc: *(*uintptr)(unsafe.Pointer(&struct {
 50574  			f func(*libc.TLS, uintptr, int32) uintptr
 50575  		}{wrMemRealloc})),
 50576  		FxSize: *(*uintptr)(unsafe.Pointer(&struct {
 50577  			f func(*libc.TLS, uintptr) int32
 50578  		}{wrMemSize})), FxRoundup: *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, int32) int32 }{wrMemRoundup})), FxInit: *(*uintptr)(unsafe.Pointer(&struct {
 50579  			f func(*libc.TLS, uintptr) int32
 50580  		}{wrMemInit})),
 50581  		FxShutdown: *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{wrMemShutdown})),
 50582  	}
 50583  
 50584  	libc.X__builtin___memset_chk(tls, uintptr(unsafe.Pointer(&wrapped)), 0, uint64(unsafe.Sizeof(wrapped)), libc.X__builtin_object_size(tls, uintptr(unsafe.Pointer(&wrapped)), 0))
 50585  
 50586  	sqlite3.Xsqlite3_shutdown(tls)
 50587  	sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_GETMUTEX, libc.VaList(bp, uintptr(unsafe.Pointer(&wrapped))+168))
 50588  	sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_GETMALLOC, libc.VaList(bp+8, uintptr(unsafe.Pointer(&wrapped))+104))
 50589  	sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_GETPCACHE2, libc.VaList(bp+16, uintptr(unsafe.Pointer(&wrapped))))
 50590  	sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_MUTEX, libc.VaList(bp+24, bp+48))
 50591  	sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_MALLOC, libc.VaList(bp+32, bp+120))
 50592  	sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_PCACHE2, libc.VaList(bp+40, bp+184))
 50593  }
 50594  
 50595  func init_wrapper_install(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 50596  	bp := tls.Alloc(24)
 50597  	defer tls.Free(24)
 50598  
 50599  	var i int32
 50600  	installInitWrappers(tls)
 50601  	for i = 1; i < objc; i++ {
 50602  		var z uintptr = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(i)*8)))
 50603  		if libc.Xstrcmp(tls, z, ts+32727) == 0 {
 50604  			wrapped.Fmem_fail = 1
 50605  		} else if libc.Xstrcmp(tls, z, ts+29254) == 0 {
 50606  			wrapped.Fmutex_fail = 1
 50607  		} else if libc.Xstrcmp(tls, z, ts+32731) == 0 {
 50608  			wrapped.Fpcache_fail = 1
 50609  		} else {
 50610  			tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+32738, z, ts+11945))
 50611  			return TCL_ERROR
 50612  		}
 50613  	}
 50614  	return TCL_OK
 50615  }
 50616  
 50617  func init_wrapper_uninstall(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 50618  	bp := tls.Alloc(24)
 50619  	defer tls.Free(24)
 50620  
 50621  	if objc != 1 {
 50622  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+584)
 50623  		return TCL_ERROR
 50624  	}
 50625  
 50626  	sqlite3.Xsqlite3_shutdown(tls)
 50627  	sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_MUTEX, libc.VaList(bp, uintptr(unsafe.Pointer(&wrapped))+168))
 50628  	sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_MALLOC, libc.VaList(bp+8, uintptr(unsafe.Pointer(&wrapped))+104))
 50629  	sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_PCACHE2, libc.VaList(bp+16, uintptr(unsafe.Pointer(&wrapped))))
 50630  	return TCL_OK
 50631  }
 50632  
 50633  func init_wrapper_clear(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 50634  	if objc != 1 {
 50635  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+584)
 50636  		return TCL_ERROR
 50637  	}
 50638  
 50639  	wrapped.Fmem_fail = 0
 50640  	wrapped.Fmutex_fail = 0
 50641  	wrapped.Fpcache_fail = 0
 50642  	return TCL_OK
 50643  }
 50644  
 50645  func init_wrapper_query(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 50646  	var pRet uintptr
 50647  
 50648  	if objc != 1 {
 50649  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+584)
 50650  		return TCL_ERROR
 50651  	}
 50652  
 50653  	pRet = tcl.XTcl_NewObj(tls)
 50654  	if wrapped.Fmutex_init != 0 {
 50655  		tcl.XTcl_ListObjAppendElement(tls, interp, pRet, tcl.XTcl_NewStringObj(tls, ts+29254, -1))
 50656  	}
 50657  	if wrapped.Fmem_init != 0 {
 50658  		tcl.XTcl_ListObjAppendElement(tls, interp, pRet, tcl.XTcl_NewStringObj(tls, ts+32727, -1))
 50659  	}
 50660  	if wrapped.Fpcache_init != 0 {
 50661  		tcl.XTcl_ListObjAppendElement(tls, interp, pRet, tcl.XTcl_NewStringObj(tls, ts+32731, -1))
 50662  	}
 50663  
 50664  	tcl.XTcl_SetObjResult(tls, interp, pRet)
 50665  	return TCL_OK
 50666  }
 50667  
 50668  func Sqlitetest_init_Init(tls *libc.TLS, interp uintptr) int32 {
 50669  	var i int32
 50670  
 50671  	for i = 0; uint64(i) < uint64(unsafe.Sizeof(aObjCmd9))/uint64(unsafe.Sizeof(struct {
 50672  		FzName uintptr
 50673  		FxProc uintptr
 50674  	}{})); i++ {
 50675  		tcl.XTcl_CreateObjCommand(tls, interp, aObjCmd9[i].FzName, aObjCmd9[i].FxProc, uintptr(0), uintptr(0))
 50676  	}
 50677  
 50678  	return TCL_OK
 50679  }
 50680  
 50681  var aObjCmd9 = [4]struct {
 50682  	FzName uintptr
 50683  	FxProc uintptr
 50684  }{
 50685  	{FzName: ts + 32758, FxProc: 0},
 50686  	{FzName: ts + 32779, FxProc: 0},
 50687  	{FzName: ts + 32798, FxProc: 0},
 50688  	{FzName: ts + 32821, FxProc: 0},
 50689  }
 50690  
 50691  type sqlite3_intarray1 = struct {
 50692  	Fn           int32
 50693  	F__ccgo_pad1 [4]byte
 50694  	Fa           uintptr
 50695  	FxFree       uintptr
 50696  }
 50697  
 50698  type sqlite3_intarray = sqlite3_intarray1
 50699  
 50700  type intarray_vtab1 = struct {
 50701  	Fbase     sqlite3_vtab
 50702  	FpContent uintptr
 50703  }
 50704  
 50705  type intarray_vtab = intarray_vtab1
 50706  type intarray_cursor1 = struct {
 50707  	Fbase        sqlite3_vtab_cursor
 50708  	Fi           int32
 50709  	F__ccgo_pad1 [4]byte
 50710  }
 50711  
 50712  type intarray_cursor = intarray_cursor1
 50713  
 50714  func intarrayFree(tls *libc.TLS, p uintptr) {
 50715  	if (*sqlite3_intarray)(unsafe.Pointer(p)).FxFree != 0 {
 50716  		(*struct{ f func(*libc.TLS, uintptr) })(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_intarray)(unsafe.Pointer(p)).FxFree})).f(tls, (*sqlite3_intarray)(unsafe.Pointer(p)).Fa)
 50717  	}
 50718  	sqlite3.Xsqlite3_free(tls, p)
 50719  }
 50720  
 50721  func intarrayDestroy(tls *libc.TLS, p uintptr) int32 {
 50722  	var pVtab uintptr = p
 50723  	sqlite3.Xsqlite3_free(tls, pVtab)
 50724  	return 0
 50725  }
 50726  
 50727  func intarrayCreate(tls *libc.TLS, db uintptr, pAux uintptr, argc int32, argv uintptr, ppVtab uintptr, pzErr uintptr) int32 {
 50728  	var rc int32 = SQLITE_NOMEM
 50729  	var pVtab uintptr = sqlite3.Xsqlite3_malloc64(tls, uint64(unsafe.Sizeof(intarray_vtab{})))
 50730  
 50731  	if pVtab != 0 {
 50732  		libc.X__builtin___memset_chk(tls, pVtab, 0, uint64(unsafe.Sizeof(intarray_vtab{})), libc.X__builtin_object_size(tls, pVtab, 0))
 50733  		(*intarray_vtab)(unsafe.Pointer(pVtab)).FpContent = pAux
 50734  		rc = sqlite3.Xsqlite3_declare_vtab(tls, db, ts+32840)
 50735  	}
 50736  	*(*uintptr)(unsafe.Pointer(ppVtab)) = pVtab
 50737  	return rc
 50738  }
 50739  
 50740  func intarrayOpen(tls *libc.TLS, pVTab uintptr, ppCursor uintptr) int32 {
 50741  	var rc int32 = SQLITE_NOMEM
 50742  	var pCur uintptr
 50743  	pCur = sqlite3.Xsqlite3_malloc64(tls, uint64(unsafe.Sizeof(intarray_cursor{})))
 50744  	if pCur != 0 {
 50745  		libc.X__builtin___memset_chk(tls, pCur, 0, uint64(unsafe.Sizeof(intarray_cursor{})), libc.X__builtin_object_size(tls, pCur, 0))
 50746  		*(*uintptr)(unsafe.Pointer(ppCursor)) = pCur
 50747  		rc = SQLITE_OK
 50748  	}
 50749  	return rc
 50750  }
 50751  
 50752  func intarrayClose(tls *libc.TLS, cur uintptr) int32 {
 50753  	var pCur uintptr = cur
 50754  	sqlite3.Xsqlite3_free(tls, pCur)
 50755  	return SQLITE_OK
 50756  }
 50757  
 50758  func intarrayColumn(tls *libc.TLS, cur uintptr, ctx uintptr, i int32) int32 {
 50759  	var pCur uintptr = cur
 50760  	var pVtab uintptr = (*sqlite3_vtab_cursor)(unsafe.Pointer(cur)).FpVtab
 50761  	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 {
 50762  		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)))
 50763  	}
 50764  	return SQLITE_OK
 50765  }
 50766  
 50767  func intarrayRowid(tls *libc.TLS, cur uintptr, pRowid uintptr) int32 {
 50768  	var pCur uintptr = cur
 50769  	*(*sqlite_int64)(unsafe.Pointer(pRowid)) = sqlite_int64((*intarray_cursor)(unsafe.Pointer(pCur)).Fi)
 50770  	return SQLITE_OK
 50771  }
 50772  
 50773  func intarrayEof(tls *libc.TLS, cur uintptr) int32 {
 50774  	var pCur uintptr = cur
 50775  	var pVtab uintptr = (*sqlite3_vtab_cursor)(unsafe.Pointer(cur)).FpVtab
 50776  	return libc.Bool32((*intarray_cursor)(unsafe.Pointer(pCur)).Fi >= (*sqlite3_intarray)(unsafe.Pointer((*intarray_vtab)(unsafe.Pointer(pVtab)).FpContent)).Fn)
 50777  }
 50778  
 50779  func intarrayNext(tls *libc.TLS, cur uintptr) int32 {
 50780  	var pCur uintptr = cur
 50781  	(*intarray_cursor)(unsafe.Pointer(pCur)).Fi++
 50782  	return SQLITE_OK
 50783  }
 50784  
 50785  func intarrayFilter(tls *libc.TLS, pVtabCursor uintptr, idxNum int32, idxStr uintptr, argc int32, argv uintptr) int32 {
 50786  	var pCur uintptr = pVtabCursor
 50787  	(*intarray_cursor)(unsafe.Pointer(pCur)).Fi = 0
 50788  	return SQLITE_OK
 50789  }
 50790  
 50791  func intarrayBestIndex(tls *libc.TLS, tab uintptr, pIdxInfo uintptr) int32 {
 50792  	return SQLITE_OK
 50793  }
 50794  
 50795  var intarrayModule = sqlite3_module{
 50796  	FxCreate:     0,
 50797  	FxConnect:    0,
 50798  	FxBestIndex:  0,
 50799  	FxDisconnect: 0,
 50800  	FxDestroy:    0,
 50801  	FxOpen:       0,
 50802  	FxClose:      0,
 50803  	FxFilter:     0,
 50804  	FxNext:       0,
 50805  	FxEof:        0,
 50806  	FxColumn:     0,
 50807  	FxRowid:      0,
 50808  }
 50809  
 50810  func sqlite3_intarray_create(tls *libc.TLS, db uintptr, zName uintptr, ppReturn uintptr) int32 {
 50811  	bp := tls.Alloc(16)
 50812  	defer tls.Free(16)
 50813  
 50814  	var rc int32 = SQLITE_OK
 50815  	var p uintptr
 50816  
 50817  	*(*uintptr)(unsafe.Pointer(ppReturn)) = libc.AssignUintptr(&p, sqlite3.Xsqlite3_malloc64(tls, uint64(unsafe.Sizeof(sqlite3_intarray{}))))
 50818  	if p == uintptr(0) {
 50819  		return SQLITE_NOMEM
 50820  	}
 50821  	libc.X__builtin___memset_chk(tls, p, 0, uint64(unsafe.Sizeof(sqlite3_intarray{})), libc.X__builtin_object_size(tls, p, 0))
 50822  	rc = sqlite3.Xsqlite3_create_module_v2(tls, db, zName, uintptr(unsafe.Pointer(&intarrayModule)), p,
 50823  		*(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{intarrayFree})))
 50824  	if rc == SQLITE_OK {
 50825  		var zSql uintptr
 50826  		zSql = sqlite3.Xsqlite3_mprintf(tls, ts+32882,
 50827  			libc.VaList(bp, zName, zName))
 50828  		rc = sqlite3.Xsqlite3_exec(tls, db, zSql, uintptr(0), uintptr(0), uintptr(0))
 50829  		sqlite3.Xsqlite3_free(tls, zSql)
 50830  	}
 50831  	return rc
 50832  }
 50833  
 50834  func sqlite3_intarray_bind(tls *libc.TLS, pIntArray uintptr, nElements int32, aElements uintptr, xFree uintptr) int32 {
 50835  	if (*sqlite3_intarray)(unsafe.Pointer(pIntArray)).FxFree != 0 {
 50836  		(*struct{ f func(*libc.TLS, uintptr) })(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_intarray)(unsafe.Pointer(pIntArray)).FxFree})).f(tls, (*sqlite3_intarray)(unsafe.Pointer(pIntArray)).Fa)
 50837  	}
 50838  	(*sqlite3_intarray)(unsafe.Pointer(pIntArray)).Fn = nElements
 50839  	(*sqlite3_intarray)(unsafe.Pointer(pIntArray)).Fa = aElements
 50840  	(*sqlite3_intarray)(unsafe.Pointer(pIntArray)).FxFree = xFree
 50841  	return SQLITE_OK
 50842  }
 50843  
 50844  func test_intarray_create(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 50845  	bp := tls.Alloc(148)
 50846  	defer tls.Free(148)
 50847  
 50848  	var zName uintptr
 50849  
 50850  	var rc int32 = SQLITE_OK
 50851  
 50852  	if objc != 3 {
 50853  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2050)
 50854  		return TCL_ERROR
 50855  	}
 50856  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0 {
 50857  		return TCL_ERROR
 50858  	}
 50859  	zName = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 50860  	rc = sqlite3_intarray_create(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), zName, bp+40)
 50861  	if rc != SQLITE_OK {
 50862  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0)))
 50863  		return TCL_ERROR
 50864  	}
 50865  	sqlite3TestMakePointerStr(tls, interp, bp+48, *(*uintptr)(unsafe.Pointer(bp + 40)))
 50866  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+16, bp+48, uintptr(0)))
 50867  	return TCL_OK
 50868  }
 50869  
 50870  func test_intarray_bind(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 50871  	bp := tls.Alloc(40)
 50872  	defer tls.Free(40)
 50873  
 50874  	var pArray uintptr
 50875  	var rc int32 = SQLITE_OK
 50876  	var i int32
 50877  	var n int32
 50878  	var a uintptr
 50879  
 50880  	if objc < 2 {
 50881  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+32920)
 50882  		return TCL_ERROR
 50883  	}
 50884  	pArray = sqlite3TestTextToPtr(tls, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))))
 50885  	n = objc - 2
 50886  	a = sqlite3.Xsqlite3_malloc64(tls, uint64(unsafe.Sizeof(sqlite3_int64(0)))*uint64(n))
 50887  	if a == uintptr(0) {
 50888  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+32929, uintptr(0)))
 50889  		return TCL_ERROR
 50890  	}
 50891  	for i = 0; i < n; i++ {
 50892  		*(*Tcl_WideInt)(unsafe.Pointer(bp + 32)) = int64(0)
 50893  		tcl.XTcl_GetWideIntFromObj(tls, uintptr(0), *(*uintptr)(unsafe.Pointer(objv + uintptr(i+2)*8)), bp+32)
 50894  		*(*sqlite3_int64)(unsafe.Pointer(a + uintptr(i)*8)) = *(*Tcl_WideInt)(unsafe.Pointer(bp + 32))
 50895  	}
 50896  	rc = sqlite3_intarray_bind(tls, pArray, n, a, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{sqlite3.Xsqlite3_free})))
 50897  	if rc != SQLITE_OK {
 50898  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+16, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0)))
 50899  		return TCL_ERROR
 50900  	}
 50901  	return TCL_OK
 50902  }
 50903  
 50904  func Sqlitetestintarray_Init(tls *libc.TLS, interp uintptr) int32 {
 50905  	var i int32
 50906  	for i = 0; uint64(i) < uint64(unsafe.Sizeof(aObjCmd10))/uint64(unsafe.Sizeof(struct {
 50907  		FzName      uintptr
 50908  		FxProc      uintptr
 50909  		FclientData uintptr
 50910  	}{})); i++ {
 50911  		tcl.XTcl_CreateObjCommand(tls, interp, aObjCmd10[i].FzName,
 50912  			aObjCmd10[i].FxProc, aObjCmd10[i].FclientData, uintptr(0))
 50913  	}
 50914  	return TCL_OK
 50915  }
 50916  
 50917  var aObjCmd10 = [2]struct {
 50918  	FzName      uintptr
 50919  	FxProc      uintptr
 50920  	FclientData uintptr
 50921  }{
 50922  	{FzName: ts + 32942, FxProc: 0},
 50923  	{FzName: ts + 32966, FxProc: 0},
 50924  }
 50925  
 50926  type jt_file1 = struct {
 50927  	Fbase        sqlite3_file
 50928  	FzName       uintptr
 50929  	Fflags       int32
 50930  	FeLock       int32
 50931  	FnPage       u32
 50932  	FnPagesize   u32
 50933  	FpWritable   uintptr
 50934  	FaCksum      uintptr
 50935  	FnSync       int32
 50936  	F__ccgo_pad1 [4]byte
 50937  	FiMaxOff     sqlite3_int64
 50938  	FpNext       uintptr
 50939  	FpReal       uintptr
 50940  }
 50941  
 50942  type jt_file = jt_file1
 50943  
 50944  var jt_vfs = sqlite3_vfs{
 50945  	FiVersion:          2,
 50946  	FszOsFile:          int32(unsafe.Sizeof(jt_file{})),
 50947  	FmxPathname:        JT_MAX_PATHNAME,
 50948  	FzName:             ts + 32988,
 50949  	FxOpen:             0,
 50950  	FxDelete:           0,
 50951  	FxAccess:           0,
 50952  	FxFullPathname:     0,
 50953  	FxDlOpen:           0,
 50954  	FxDlError:          0,
 50955  	FxDlSym:            0,
 50956  	FxDlClose:          0,
 50957  	FxRandomness:       0,
 50958  	FxSleep:            0,
 50959  	FxCurrentTime:      0,
 50960  	FxGetLastError:     0,
 50961  	FxCurrentTimeInt64: 0,
 50962  }
 50963  
 50964  var jt_io_methods = sqlite3_io_methods{
 50965  	FiVersion:               1,
 50966  	FxClose:                 0,
 50967  	FxRead:                  0,
 50968  	FxWrite:                 0,
 50969  	FxTruncate:              0,
 50970  	FxSync:                  0,
 50971  	FxFileSize:              0,
 50972  	FxLock:                  0,
 50973  	FxUnlock:                0,
 50974  	FxCheckReservedLock:     0,
 50975  	FxFileControl:           0,
 50976  	FxSectorSize:            0,
 50977  	FxDeviceCharacteristics: 0,
 50978  }
 50979  
 50980  type JtGlobal = struct {
 50981  	FpVfs  uintptr
 50982  	FpList uintptr
 50983  }
 50984  
 50985  var g2 = JtGlobal{}
 50986  
 50987  func enterJtMutex(tls *libc.TLS) {
 50988  	sqlite3.Xsqlite3_mutex_enter(tls, sqlite3.Xsqlite3_mutex_alloc(tls, SQLITE_MUTEX_STATIC_PRNG))
 50989  }
 50990  
 50991  func leaveJtMutex(tls *libc.TLS) {
 50992  	sqlite3.Xsqlite3_mutex_leave(tls, sqlite3.Xsqlite3_mutex_alloc(tls, SQLITE_MUTEX_STATIC_PRNG))
 50993  }
 50994  
 50995  func stop_ioerr_simulation(tls *libc.TLS, piSave uintptr, piSave2 uintptr) {
 50996  	*(*int32)(unsafe.Pointer(piSave)) = libc.AtomicLoadInt32(&sqlite3.Xsqlite3_io_error_pending)
 50997  	*(*int32)(unsafe.Pointer(piSave2)) = sqlite3.Xsqlite3_io_error_hit
 50998  	libc.AtomicStoreInt32(&sqlite3.Xsqlite3_io_error_pending, int32(-1))
 50999  	sqlite3.Xsqlite3_io_error_hit = 0
 51000  }
 51001  
 51002  func start_ioerr_simulation(tls *libc.TLS, iSave int32, iSave2 int32) {
 51003  	libc.AtomicStoreInt32(&sqlite3.Xsqlite3_io_error_pending, iSave)
 51004  	sqlite3.Xsqlite3_io_error_hit = iSave2
 51005  }
 51006  
 51007  func closeTransaction(tls *libc.TLS, p uintptr) {
 51008  	sqlite3.Xsqlite3BitvecDestroy(tls, (*jt_file)(unsafe.Pointer(p)).FpWritable)
 51009  	sqlite3.Xsqlite3_free(tls, (*jt_file)(unsafe.Pointer(p)).FaCksum)
 51010  	(*jt_file)(unsafe.Pointer(p)).FpWritable = uintptr(0)
 51011  	(*jt_file)(unsafe.Pointer(p)).FaCksum = uintptr(0)
 51012  	(*jt_file)(unsafe.Pointer(p)).FnSync = 0
 51013  }
 51014  
 51015  func jtClose(tls *libc.TLS, pFile uintptr) int32 {
 51016  	var pp uintptr
 51017  	var p uintptr = pFile
 51018  
 51019  	closeTransaction(tls, p)
 51020  	enterJtMutex(tls)
 51021  	if (*jt_file)(unsafe.Pointer(p)).FzName != 0 {
 51022  		for pp = uintptr(unsafe.Pointer(&g2)) + 8; *(*uintptr)(unsafe.Pointer(pp)) != p; pp = *(*uintptr)(unsafe.Pointer(pp)) + 64 {
 51023  		}
 51024  		*(*uintptr)(unsafe.Pointer(pp)) = (*jt_file)(unsafe.Pointer(p)).FpNext
 51025  	}
 51026  	leaveJtMutex(tls)
 51027  	sqlite3.Xsqlite3OsClose(tls, (*jt_file)(unsafe.Pointer(p)).FpReal)
 51028  	return SQLITE_OK
 51029  }
 51030  
 51031  func jtRead(tls *libc.TLS, pFile uintptr, zBuf uintptr, iAmt int32, iOfst sqlite_int64) int32 {
 51032  	var p uintptr = pFile
 51033  	return sqlite3.Xsqlite3OsRead(tls, (*jt_file)(unsafe.Pointer(p)).FpReal, zBuf, iAmt, iOfst)
 51034  }
 51035  
 51036  func locateDatabaseHandle(tls *libc.TLS, zJournal uintptr, noLock int32) uintptr {
 51037  	var pMain uintptr = uintptr(0)
 51038  	enterJtMutex(tls)
 51039  	for pMain = g2.FpList; pMain != 0; pMain = (*jt_file)(unsafe.Pointer(pMain)).FpNext {
 51040  		var nName int32 = int32(libc.Xstrlen(tls, zJournal) - libc.Xstrlen(tls, ts+32991))
 51041  		if (*jt_file)(unsafe.Pointer(pMain)).Fflags&SQLITE_OPEN_MAIN_DB != 0 &&
 51042  			int32(libc.Xstrlen(tls, (*jt_file)(unsafe.Pointer(pMain)).FzName)) == nName &&
 51043  			0 == libc.Xmemcmp(tls, (*jt_file)(unsafe.Pointer(pMain)).FzName, zJournal, uint64(nName)) &&
 51044  			((*jt_file)(unsafe.Pointer(pMain)).FeLock >= SQLITE_LOCK_RESERVED || noLock != 0) {
 51045  			break
 51046  		}
 51047  	}
 51048  	leaveJtMutex(tls)
 51049  	return pMain
 51050  }
 51051  
 51052  func decodeUint32(tls *libc.TLS, z uintptr) u32 {
 51053  	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))))
 51054  }
 51055  
 51056  func genCksum(tls *libc.TLS, z uintptr, n int32) u32 {
 51057  	var i int32
 51058  	var cksum u32 = u32(0)
 51059  	for i = 0; i < n; i++ {
 51060  		cksum = cksum + u32(*(*uint8)(unsafe.Pointer(z + uintptr(i)))) + cksum<<3
 51061  	}
 51062  	return cksum
 51063  }
 51064  
 51065  func decodeJournalHdr(tls *libc.TLS, zBuf uintptr, pnRec uintptr, pnPage uintptr, pnSector uintptr, pnPagesize uintptr) int32 {
 51066  	bp := tls.Alloc(8)
 51067  	defer tls.Free(8)
 51068  
 51069  	*(*[8]uint8)(unsafe.Pointer(bp)) = [8]uint8{uint8(0xd9), uint8(0xd5), uint8(0x05), uint8(0xf9), uint8(0x20), uint8(0xa1), uint8(0x63), uint8(0xd7)}
 51070  	if libc.Xmemcmp(tls, bp, zBuf, uint64(8)) != 0 {
 51071  		return SQLITE_ERROR
 51072  	}
 51073  	if pnRec != 0 {
 51074  		*(*u32)(unsafe.Pointer(pnRec)) = decodeUint32(tls, zBuf+8)
 51075  	}
 51076  	if pnPage != 0 {
 51077  		*(*u32)(unsafe.Pointer(pnPage)) = decodeUint32(tls, zBuf+16)
 51078  	}
 51079  	if pnSector != 0 {
 51080  		*(*u32)(unsafe.Pointer(pnSector)) = decodeUint32(tls, zBuf+20)
 51081  	}
 51082  	if pnPagesize != 0 {
 51083  		*(*u32)(unsafe.Pointer(pnPagesize)) = decodeUint32(tls, zBuf+24)
 51084  	}
 51085  	return SQLITE_OK
 51086  }
 51087  
 51088  func openTransaction(tls *libc.TLS, pMain uintptr, pJournal uintptr) int32 {
 51089  	bp := tls.Alloc(8)
 51090  	defer tls.Free(8)
 51091  
 51092  	var aData uintptr
 51093  	var p uintptr = (*jt_file)(unsafe.Pointer(pMain)).FpReal
 51094  	var rc int32 = SQLITE_OK
 51095  
 51096  	closeTransaction(tls, pMain)
 51097  	aData = sqlite3.Xsqlite3_malloc(tls, int32((*jt_file)(unsafe.Pointer(pMain)).FnPagesize))
 51098  	(*jt_file)(unsafe.Pointer(pMain)).FpWritable = sqlite3.Xsqlite3BitvecCreate(tls, (*jt_file)(unsafe.Pointer(pMain)).FnPage)
 51099  	(*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))))
 51100  	(*jt_file)(unsafe.Pointer(pJournal)).FiMaxOff = int64(0)
 51101  
 51102  	if !(int32((*jt_file)(unsafe.Pointer(pMain)).FpWritable) != 0) || !(int32((*jt_file)(unsafe.Pointer(pMain)).FaCksum) != 0) || !(aData != 0) {
 51103  		rc = SQLITE_IOERR | int32(12)<<8
 51104  	} else if (*jt_file)(unsafe.Pointer(pMain)).FnPage > u32(0) {
 51105  		var iTrunk u32
 51106  
 51107  		stop_ioerr_simulation(tls, bp, bp+4)
 51108  
 51109  		rc = sqlite3.Xsqlite3OsRead(tls, p, aData, int32((*jt_file)(unsafe.Pointer(pMain)).FnPagesize), int64(0))
 51110  		if rc == SQLITE_OK {
 51111  			var nDbsize u32 = decodeUint32(tls, aData+28)
 51112  			if nDbsize > u32(0) && libc.Xmemcmp(tls, aData+24, aData+92, uint64(4)) == 0 {
 51113  				var iPg u32
 51114  				for iPg = nDbsize + u32(1); iPg <= (*jt_file)(unsafe.Pointer(pMain)).FnPage; iPg++ {
 51115  					sqlite3.Xsqlite3BitvecSet(tls, (*jt_file)(unsafe.Pointer(pMain)).FpWritable, iPg)
 51116  				}
 51117  			}
 51118  		}
 51119  		iTrunk = decodeUint32(tls, aData+32)
 51120  		for rc == SQLITE_OK && iTrunk > u32(0) {
 51121  			var nLeaf u32
 51122  			var iLeaf u32
 51123  			var iOff sqlite3_int64 = i64(iTrunk-u32(1)) * i64((*jt_file)(unsafe.Pointer(pMain)).FnPagesize)
 51124  			rc = sqlite3.Xsqlite3OsRead(tls, p, aData, int32((*jt_file)(unsafe.Pointer(pMain)).FnPagesize), iOff)
 51125  			nLeaf = decodeUint32(tls, aData+4)
 51126  			for iLeaf = u32(0); rc == SQLITE_OK && iLeaf < nLeaf; iLeaf++ {
 51127  				var pgno u32 = decodeUint32(tls, aData+uintptr(u32(8)+u32(4)*iLeaf))
 51128  				sqlite3.Xsqlite3BitvecSet(tls, (*jt_file)(unsafe.Pointer(pMain)).FpWritable, pgno)
 51129  			}
 51130  			iTrunk = decodeUint32(tls, aData)
 51131  		}
 51132  
 51133  		if rc == SQLITE_OK {
 51134  			var ii int32
 51135  			for ii = 0; rc == SQLITE_OK && ii < int32((*jt_file)(unsafe.Pointer(pMain)).FnPage); ii++ {
 51136  				var iOff i64 = i64((*jt_file)(unsafe.Pointer(pMain)).FnPagesize) * i64(ii)
 51137  				if iOff == i64(sqlite3.Xsqlite3PendingByte) {
 51138  					continue
 51139  				}
 51140  				rc = sqlite3.Xsqlite3OsRead(tls, (*jt_file)(unsafe.Pointer(pMain)).FpReal, aData, int32((*jt_file)(unsafe.Pointer(pMain)).FnPagesize), iOff)
 51141  				*(*u32)(unsafe.Pointer((*jt_file)(unsafe.Pointer(pMain)).FaCksum + uintptr(ii)*4)) = genCksum(tls, aData, int32((*jt_file)(unsafe.Pointer(pMain)).FnPagesize))
 51142  				if ii+1 == int32((*jt_file)(unsafe.Pointer(pMain)).FnPage) && rc == SQLITE_IOERR|int32(2)<<8 {
 51143  					rc = SQLITE_OK
 51144  				}
 51145  			}
 51146  		}
 51147  
 51148  		start_ioerr_simulation(tls, *(*int32)(unsafe.Pointer(bp)), *(*int32)(unsafe.Pointer(bp + 4)))
 51149  	}
 51150  
 51151  	sqlite3.Xsqlite3_free(tls, aData)
 51152  	return rc
 51153  }
 51154  
 51155  func readJournalFile(tls *libc.TLS, p uintptr, pMain uintptr) int32 {
 51156  	bp := tls.Alloc(52)
 51157  	defer tls.Free(52)
 51158  
 51159  	var rc int32
 51160  
 51161  	var pReal uintptr
 51162  	var iOff sqlite3_int64
 51163  	var iSize sqlite3_int64
 51164  	var aPage uintptr
 51165  
 51166  	var cksum u32
 51167  	_ = cksum
 51168  	var pgno u32
 51169  
 51170  	var ii u32
 51171  	rc = SQLITE_OK
 51172  	pReal = (*jt_file)(unsafe.Pointer(p)).FpReal
 51173  	iOff = int64(0)
 51174  	iSize = (*jt_file)(unsafe.Pointer(p)).FiMaxOff
 51175  
 51176  	aPage = sqlite3.Xsqlite3_malloc(tls, int32((*jt_file)(unsafe.Pointer(pMain)).FnPagesize))
 51177  	if !!(aPage != 0) {
 51178  		goto __1
 51179  	}
 51180  	return SQLITE_IOERR | int32(12)<<8
 51181  __1:
 51182  	;
 51183  	stop_ioerr_simulation(tls, bp, bp+4)
 51184  
 51185  __2:
 51186  	if !(rc == SQLITE_OK && iOff < iSize) {
 51187  		goto __3
 51188  	}
 51189  
 51190  	rc = sqlite3.Xsqlite3OsRead(tls, pReal, bp+8, 28, iOff)
 51191  	if !(rc != SQLITE_OK ||
 51192  		decodeJournalHdr(tls, bp+8, bp+36, bp+40, bp+44, bp+48) != 0) {
 51193  		goto __4
 51194  	}
 51195  	goto finish_rjf
 51196  __4:
 51197  	;
 51198  	iOff = iOff + sqlite3_int64(*(*u32)(unsafe.Pointer(bp + 44)))
 51199  
 51200  	if !(*(*u32)(unsafe.Pointer(bp + 36)) == u32(0)) {
 51201  		goto __5
 51202  	}
 51203  
 51204  	if !(iSize >= iOff+sqlite3_int64(*(*u32)(unsafe.Pointer(bp + 44)))) {
 51205  		goto __6
 51206  	}
 51207  	rc = sqlite3.Xsqlite3OsRead(tls, pReal, bp+8, 28, iOff)
 51208  	if !(rc != SQLITE_OK || 0 == decodeJournalHdr(tls, bp+8, uintptr(0), uintptr(0), uintptr(0), uintptr(0))) {
 51209  		goto __7
 51210  	}
 51211  	goto __2
 51212  __7:
 51213  	;
 51214  __6:
 51215  	;
 51216  	*(*u32)(unsafe.Pointer(bp + 36)) = u32((iSize - iOff) / sqlite3_int64((*jt_file)(unsafe.Pointer(pMain)).FnPagesize+u32(8)))
 51217  __5:
 51218  	;
 51219  	ii = u32(0)
 51220  __8:
 51221  	if !(rc == SQLITE_OK && ii < *(*u32)(unsafe.Pointer(bp + 36)) && iOff < iSize) {
 51222  		goto __10
 51223  	}
 51224  	rc = sqlite3.Xsqlite3OsRead(tls, pReal, bp+8, 4, iOff)
 51225  	if !(rc == SQLITE_OK) {
 51226  		goto __11
 51227  	}
 51228  	pgno = decodeUint32(tls, bp+8)
 51229  	if !(pgno > u32(0) && pgno <= (*jt_file)(unsafe.Pointer(pMain)).FnPage) {
 51230  		goto __12
 51231  	}
 51232  	if !(0 == sqlite3.Xsqlite3BitvecTest(tls, (*jt_file)(unsafe.Pointer(pMain)).FpWritable, pgno)) {
 51233  		goto __13
 51234  	}
 51235  	rc = sqlite3.Xsqlite3OsRead(tls, pReal, aPage, int32((*jt_file)(unsafe.Pointer(pMain)).FnPagesize), iOff+int64(4))
 51236  	if !(rc == SQLITE_OK) {
 51237  		goto __14
 51238  	}
 51239  	cksum = genCksum(tls, aPage, int32((*jt_file)(unsafe.Pointer(pMain)).FnPagesize))
 51240  
 51241  __14:
 51242  	;
 51243  __13:
 51244  	;
 51245  	sqlite3.Xsqlite3BitvecSet(tls, (*jt_file)(unsafe.Pointer(pMain)).FpWritable, pgno)
 51246  __12:
 51247  	;
 51248  	iOff = iOff + sqlite3_int64(u32(8)+(*jt_file)(unsafe.Pointer(pMain)).FnPagesize)
 51249  __11:
 51250  	;
 51251  	goto __9
 51252  __9:
 51253  	ii++
 51254  	goto __8
 51255  	goto __10
 51256  __10:
 51257  	;
 51258  	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)))
 51259  	goto __2
 51260  __3:
 51261  	;
 51262  finish_rjf:
 51263  	start_ioerr_simulation(tls, *(*int32)(unsafe.Pointer(bp)), *(*int32)(unsafe.Pointer(bp + 4)))
 51264  	sqlite3.Xsqlite3_free(tls, aPage)
 51265  	if !(rc == SQLITE_IOERR|int32(2)<<8) {
 51266  		goto __15
 51267  	}
 51268  	rc = SQLITE_OK
 51269  __15:
 51270  	;
 51271  	return rc
 51272  }
 51273  
 51274  func jtWrite(tls *libc.TLS, pFile uintptr, zBuf uintptr, iAmt int32, iOfst sqlite_int64) int32 {
 51275  	var rc int32
 51276  	var p uintptr = pFile
 51277  	if (*jt_file)(unsafe.Pointer(p)).Fflags&SQLITE_OPEN_MAIN_JOURNAL != 0 {
 51278  		if iOfst == int64(0) {
 51279  			var pMain uintptr = locateDatabaseHandle(tls, (*jt_file)(unsafe.Pointer(p)).FzName, 0)
 51280  
 51281  			if iAmt == 28 {
 51282  				closeTransaction(tls, pMain)
 51283  			} else if iAmt != 12 {
 51284  				var z uintptr = zBuf
 51285  				(*jt_file)(unsafe.Pointer(pMain)).FnPage = decodeUint32(tls, z+16)
 51286  				(*jt_file)(unsafe.Pointer(pMain)).FnPagesize = decodeUint32(tls, z+24)
 51287  				if SQLITE_OK != libc.AssignInt32(&rc, openTransaction(tls, pMain, p)) {
 51288  					return rc
 51289  				}
 51290  			}
 51291  		}
 51292  		if (*jt_file)(unsafe.Pointer(p)).FiMaxOff < iOfst+sqlite_int64(iAmt) {
 51293  			(*jt_file)(unsafe.Pointer(p)).FiMaxOff = iOfst + sqlite_int64(iAmt)
 51294  		}
 51295  	}
 51296  
 51297  	if (*jt_file)(unsafe.Pointer(p)).Fflags&SQLITE_OPEN_MAIN_DB != 0 && (*jt_file)(unsafe.Pointer(p)).FpWritable != 0 {
 51298  		if iAmt < int32((*jt_file)(unsafe.Pointer(p)).FnPagesize) &&
 51299  			(*jt_file)(unsafe.Pointer(p)).FnPagesize%u32(iAmt) == u32(0) &&
 51300  			iOfst >= sqlite_int64(sqlite3.Xsqlite3PendingByte+512) &&
 51301  			iOfst+sqlite_int64(iAmt) <= sqlite_int64(u32(sqlite3.Xsqlite3PendingByte)+(*jt_file)(unsafe.Pointer(p)).FnPagesize) {
 51302  		} else {
 51303  			var pgno u32 = u32(iOfst/sqlite_int64((*jt_file)(unsafe.Pointer(p)).FnPagesize) + int64(1))
 51304  			_ = pgno
 51305  
 51306  		}
 51307  	}
 51308  
 51309  	rc = sqlite3.Xsqlite3OsWrite(tls, (*jt_file)(unsafe.Pointer(p)).FpReal, zBuf, iAmt, iOfst)
 51310  	if (*jt_file)(unsafe.Pointer(p)).Fflags&SQLITE_OPEN_MAIN_JOURNAL != 0 && iAmt == 12 {
 51311  		var pMain uintptr = locateDatabaseHandle(tls, (*jt_file)(unsafe.Pointer(p)).FzName, 0)
 51312  		var rc2 int32 = readJournalFile(tls, p, pMain)
 51313  		if rc == SQLITE_OK {
 51314  			rc = rc2
 51315  		}
 51316  	}
 51317  	return rc
 51318  }
 51319  
 51320  func jtTruncate(tls *libc.TLS, pFile uintptr, size sqlite_int64) int32 {
 51321  	var p uintptr = pFile
 51322  	if (*jt_file)(unsafe.Pointer(p)).Fflags&SQLITE_OPEN_MAIN_JOURNAL != 0 && size == int64(0) {
 51323  		var pMain uintptr = locateDatabaseHandle(tls, (*jt_file)(unsafe.Pointer(p)).FzName, 0)
 51324  		closeTransaction(tls, pMain)
 51325  	}
 51326  	if (*jt_file)(unsafe.Pointer(p)).Fflags&SQLITE_OPEN_MAIN_DB != 0 && (*jt_file)(unsafe.Pointer(p)).FpWritable != 0 {
 51327  		var pgno u32
 51328  		var locking_page u32 = u32(sqlite3.Xsqlite3PendingByte)/(*jt_file)(unsafe.Pointer(p)).FnPagesize + u32(1)
 51329  		_ = locking_page
 51330  		for pgno = u32(size/sqlite_int64((*jt_file)(unsafe.Pointer(p)).FnPagesize) + int64(1)); pgno <= (*jt_file)(unsafe.Pointer(p)).FnPage; pgno++ {
 51331  		}
 51332  	}
 51333  	return sqlite3.Xsqlite3OsTruncate(tls, (*jt_file)(unsafe.Pointer(p)).FpReal, size)
 51334  }
 51335  
 51336  func jtSync(tls *libc.TLS, pFile uintptr, flags int32) int32 {
 51337  	var p uintptr = pFile
 51338  
 51339  	if (*jt_file)(unsafe.Pointer(p)).Fflags&SQLITE_OPEN_MAIN_JOURNAL != 0 {
 51340  		var rc int32
 51341  		var pMain uintptr
 51342  
 51343  		pMain = locateDatabaseHandle(tls, (*jt_file)(unsafe.Pointer(p)).FzName, 0)
 51344  
 51345  		if pMain != 0 && (*jt_file)(unsafe.Pointer(pMain)).FpWritable != 0 {
 51346  			(*jt_file)(unsafe.Pointer(pMain)).FnSync++
 51347  			rc = readJournalFile(tls, p, pMain)
 51348  			if rc != SQLITE_OK {
 51349  				return rc
 51350  			}
 51351  		}
 51352  	}
 51353  
 51354  	return sqlite3.Xsqlite3OsSync(tls, (*jt_file)(unsafe.Pointer(p)).FpReal, flags)
 51355  }
 51356  
 51357  func jtFileSize(tls *libc.TLS, pFile uintptr, pSize uintptr) int32 {
 51358  	var p uintptr = pFile
 51359  	return sqlite3.Xsqlite3OsFileSize(tls, (*jt_file)(unsafe.Pointer(p)).FpReal, pSize)
 51360  }
 51361  
 51362  func jtLock(tls *libc.TLS, pFile uintptr, eLock int32) int32 {
 51363  	var rc int32
 51364  	var p uintptr = pFile
 51365  	rc = sqlite3.Xsqlite3OsLock(tls, (*jt_file)(unsafe.Pointer(p)).FpReal, eLock)
 51366  	if rc == SQLITE_OK && eLock > (*jt_file)(unsafe.Pointer(p)).FeLock {
 51367  		(*jt_file)(unsafe.Pointer(p)).FeLock = eLock
 51368  	}
 51369  	return rc
 51370  }
 51371  
 51372  func jtUnlock(tls *libc.TLS, pFile uintptr, eLock int32) int32 {
 51373  	var rc int32
 51374  	var p uintptr = pFile
 51375  	rc = sqlite3.Xsqlite3OsUnlock(tls, (*jt_file)(unsafe.Pointer(p)).FpReal, eLock)
 51376  	if rc == SQLITE_OK && eLock < (*jt_file)(unsafe.Pointer(p)).FeLock {
 51377  		(*jt_file)(unsafe.Pointer(p)).FeLock = eLock
 51378  	}
 51379  	return rc
 51380  }
 51381  
 51382  func jtCheckReservedLock(tls *libc.TLS, pFile uintptr, pResOut uintptr) int32 {
 51383  	var p uintptr = pFile
 51384  	return sqlite3.Xsqlite3OsCheckReservedLock(tls, (*jt_file)(unsafe.Pointer(p)).FpReal, pResOut)
 51385  }
 51386  
 51387  func jtFileControl(tls *libc.TLS, pFile uintptr, op int32, pArg uintptr) int32 {
 51388  	var p uintptr = pFile
 51389  	return (*struct {
 51390  		f func(*libc.TLS, uintptr, int32, uintptr) int32
 51391  	})(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)
 51392  }
 51393  
 51394  func jtSectorSize(tls *libc.TLS, pFile uintptr) int32 {
 51395  	var p uintptr = pFile
 51396  	return sqlite3.Xsqlite3OsSectorSize(tls, (*jt_file)(unsafe.Pointer(p)).FpReal)
 51397  }
 51398  
 51399  func jtDeviceCharacteristics(tls *libc.TLS, pFile uintptr) int32 {
 51400  	var p uintptr = pFile
 51401  	return sqlite3.Xsqlite3OsDeviceCharacteristics(tls, (*jt_file)(unsafe.Pointer(p)).FpReal)
 51402  }
 51403  
 51404  func jtOpen(tls *libc.TLS, pVfs uintptr, zName uintptr, pFile uintptr, flags int32, pOutFlags uintptr) int32 {
 51405  	var rc int32
 51406  	var p uintptr = pFile
 51407  	(*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods = uintptr(0)
 51408  	(*jt_file)(unsafe.Pointer(p)).FpReal = p + 1*80
 51409  	(*sqlite3_file)(unsafe.Pointer((*jt_file)(unsafe.Pointer(p)).FpReal)).FpMethods = uintptr(0)
 51410  	rc = sqlite3.Xsqlite3OsOpen(tls, g2.FpVfs, zName, (*jt_file)(unsafe.Pointer(p)).FpReal, flags, pOutFlags)
 51411  
 51412  	if rc == SQLITE_OK {
 51413  		(*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods = uintptr(unsafe.Pointer(&jt_io_methods))
 51414  		(*jt_file)(unsafe.Pointer(p)).FeLock = 0
 51415  		(*jt_file)(unsafe.Pointer(p)).FzName = zName
 51416  		(*jt_file)(unsafe.Pointer(p)).Fflags = flags
 51417  		(*jt_file)(unsafe.Pointer(p)).FpNext = uintptr(0)
 51418  		(*jt_file)(unsafe.Pointer(p)).FpWritable = uintptr(0)
 51419  		(*jt_file)(unsafe.Pointer(p)).FaCksum = uintptr(0)
 51420  		enterJtMutex(tls)
 51421  		if zName != 0 {
 51422  			(*jt_file)(unsafe.Pointer(p)).FpNext = g2.FpList
 51423  			g2.FpList = p
 51424  		}
 51425  		leaveJtMutex(tls)
 51426  	}
 51427  	return rc
 51428  }
 51429  
 51430  func jtDelete(tls *libc.TLS, pVfs uintptr, zPath uintptr, dirSync int32) int32 {
 51431  	var nPath int32 = int32(libc.Xstrlen(tls, zPath))
 51432  	if nPath > 8 && 0 == libc.Xstrcmp(tls, ts+32991, zPath+uintptr(nPath-8)) {
 51433  		var pMain uintptr = locateDatabaseHandle(tls, zPath, 0)
 51434  		if pMain != 0 {
 51435  			closeTransaction(tls, pMain)
 51436  		}
 51437  	}
 51438  
 51439  	return sqlite3.Xsqlite3OsDelete(tls, g2.FpVfs, zPath, dirSync)
 51440  }
 51441  
 51442  func jtAccess(tls *libc.TLS, pVfs uintptr, zPath uintptr, flags int32, pResOut uintptr) int32 {
 51443  	return sqlite3.Xsqlite3OsAccess(tls, g2.FpVfs, zPath, flags, pResOut)
 51444  }
 51445  
 51446  func jtFullPathname(tls *libc.TLS, pVfs uintptr, zPath uintptr, nOut int32, zOut uintptr) int32 {
 51447  	return sqlite3.Xsqlite3OsFullPathname(tls, g2.FpVfs, zPath, nOut, zOut)
 51448  }
 51449  
 51450  func jtDlOpen(tls *libc.TLS, pVfs uintptr, zPath uintptr) uintptr {
 51451  	return (*struct {
 51452  		f func(*libc.TLS, uintptr, uintptr) uintptr
 51453  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(g2.FpVfs)).FxDlOpen})).f(tls, g2.FpVfs, zPath)
 51454  }
 51455  
 51456  func jtDlError(tls *libc.TLS, pVfs uintptr, nByte int32, zErrMsg uintptr) {
 51457  	(*struct {
 51458  		f func(*libc.TLS, uintptr, int32, uintptr)
 51459  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(g2.FpVfs)).FxDlError})).f(tls, g2.FpVfs, nByte, zErrMsg)
 51460  }
 51461  
 51462  func jtDlSym(tls *libc.TLS, pVfs uintptr, p uintptr, zSym uintptr) uintptr {
 51463  	return (*struct {
 51464  		f func(*libc.TLS, uintptr, uintptr, uintptr) uintptr
 51465  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(g2.FpVfs)).FxDlSym})).f(tls, g2.FpVfs, p, zSym)
 51466  }
 51467  
 51468  func jtDlClose(tls *libc.TLS, pVfs uintptr, pHandle uintptr) {
 51469  	(*struct {
 51470  		f func(*libc.TLS, uintptr, uintptr)
 51471  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(g2.FpVfs)).FxDlClose})).f(tls, g2.FpVfs, pHandle)
 51472  }
 51473  
 51474  func jtRandomness(tls *libc.TLS, pVfs uintptr, nByte int32, zBufOut uintptr) int32 {
 51475  	return sqlite3.Xsqlite3OsRandomness(tls, g2.FpVfs, nByte, zBufOut)
 51476  }
 51477  
 51478  func jtSleep(tls *libc.TLS, pVfs uintptr, nMicro int32) int32 {
 51479  	return sqlite3.Xsqlite3OsSleep(tls, g2.FpVfs, nMicro)
 51480  }
 51481  
 51482  func jtCurrentTime(tls *libc.TLS, pVfs uintptr, pTimeOut uintptr) int32 {
 51483  	return (*struct {
 51484  		f func(*libc.TLS, uintptr, uintptr) int32
 51485  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(g2.FpVfs)).FxCurrentTime})).f(tls, g2.FpVfs, pTimeOut)
 51486  }
 51487  
 51488  func jtCurrentTimeInt64(tls *libc.TLS, pVfs uintptr, pTimeOut uintptr) int32 {
 51489  	return (*struct {
 51490  		f func(*libc.TLS, uintptr, uintptr) int32
 51491  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(g2.FpVfs)).FxCurrentTimeInt64})).f(tls, g2.FpVfs, pTimeOut)
 51492  }
 51493  
 51494  func jtGetLastError(tls *libc.TLS, pVfs uintptr, n int32, z uintptr) int32 {
 51495  	return (*struct {
 51496  		f func(*libc.TLS, uintptr, int32, uintptr) int32
 51497  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(g2.FpVfs)).FxGetLastError})).f(tls, g2.FpVfs, n, z)
 51498  }
 51499  
 51500  func jt_register(tls *libc.TLS, zWrap uintptr, isDefault int32) int32 {
 51501  	g2.FpVfs = sqlite3.Xsqlite3_vfs_find(tls, zWrap)
 51502  	if g2.FpVfs == uintptr(0) {
 51503  		return SQLITE_ERROR
 51504  	}
 51505  	jt_vfs.FszOsFile = int32(uint64(unsafe.Sizeof(jt_file{})) + uint64((*sqlite3_vfs)(unsafe.Pointer(g2.FpVfs)).FszOsFile))
 51506  	if (*sqlite3_vfs)(unsafe.Pointer(g2.FpVfs)).FiVersion == 1 {
 51507  		jt_vfs.FiVersion = 1
 51508  	} else if (*sqlite3_vfs)(unsafe.Pointer(g2.FpVfs)).FxCurrentTimeInt64 == uintptr(0) {
 51509  		jt_vfs.FxCurrentTimeInt64 = uintptr(0)
 51510  	}
 51511  	sqlite3.Xsqlite3_vfs_register(tls, uintptr(unsafe.Pointer(&jt_vfs)), isDefault)
 51512  	return SQLITE_OK
 51513  }
 51514  
 51515  func jt_unregister(tls *libc.TLS) {
 51516  	sqlite3.Xsqlite3_vfs_unregister(tls, uintptr(unsafe.Pointer(&jt_vfs)))
 51517  }
 51518  
 51519  type MemFault = struct {
 51520  	FiCountdown   int32
 51521  	FnRepeat      int32
 51522  	FnBenign      int32
 51523  	FnFail        int32
 51524  	FnOkBefore    int32
 51525  	FnOkAfter     int32
 51526  	Fenable       u8
 51527  	F__ccgo_pad1  [3]byte
 51528  	FisInstalled  int32
 51529  	FisBenignMode int32
 51530  	F__ccgo_pad2  [4]byte
 51531  	Fm            sqlite3_mem_methods
 51532  }
 51533  
 51534  var memfault MemFault
 51535  
 51536  func sqlite3Fault(tls *libc.TLS) {
 51537  	cnt1++
 51538  }
 51539  
 51540  var cnt1 int32 = 0
 51541  
 51542  func sqlite3FirstFault(tls *libc.TLS) {
 51543  	cnt2++
 51544  }
 51545  
 51546  var cnt2 int32 = 0
 51547  
 51548  func faultsimStep(tls *libc.TLS) int32 {
 51549  	if !(int32(memfault.Fenable) != 0) {
 51550  		memfault.FnOkAfter++
 51551  		return 0
 51552  	}
 51553  	if memfault.FiCountdown > 0 {
 51554  		memfault.FiCountdown--
 51555  		memfault.FnOkBefore++
 51556  		return 0
 51557  	}
 51558  	if memfault.FnFail == 0 {
 51559  		sqlite3FirstFault(tls)
 51560  	}
 51561  	sqlite3Fault(tls)
 51562  	memfault.FnFail++
 51563  	if memfault.FisBenignMode > 0 {
 51564  		memfault.FnBenign++
 51565  	}
 51566  	memfault.FnRepeat--
 51567  	if memfault.FnRepeat <= 0 {
 51568  		memfault.Fenable = u8(0)
 51569  	}
 51570  	return 1
 51571  }
 51572  
 51573  func faultsimMalloc(tls *libc.TLS, n int32) uintptr {
 51574  	var p uintptr = uintptr(0)
 51575  	if !(faultsimStep(tls) != 0) {
 51576  		p = (*struct {
 51577  			f func(*libc.TLS, int32) uintptr
 51578  		})(unsafe.Pointer(&struct{ uintptr }{memfault.Fm.FxMalloc})).f(tls, n)
 51579  	}
 51580  	return p
 51581  }
 51582  
 51583  func faultsimRealloc(tls *libc.TLS, pOld uintptr, n int32) uintptr {
 51584  	var p uintptr = uintptr(0)
 51585  	if !(faultsimStep(tls) != 0) {
 51586  		p = (*struct {
 51587  			f func(*libc.TLS, uintptr, int32) uintptr
 51588  		})(unsafe.Pointer(&struct{ uintptr }{memfault.Fm.FxRealloc})).f(tls, pOld, n)
 51589  	}
 51590  	return p
 51591  }
 51592  
 51593  func faultsimConfig(tls *libc.TLS, nDelay int32, nRepeat int32) {
 51594  	memfault.FiCountdown = nDelay
 51595  	memfault.FnRepeat = nRepeat
 51596  	memfault.FnBenign = 0
 51597  	memfault.FnFail = 0
 51598  	memfault.FnOkBefore = 0
 51599  	memfault.FnOkAfter = 0
 51600  	memfault.Fenable = u8(libc.Bool32(nDelay >= 0))
 51601  
 51602  	memfault.FisBenignMode = 0
 51603  }
 51604  
 51605  func faultsimFailures(tls *libc.TLS) int32 {
 51606  	return memfault.FnFail
 51607  }
 51608  
 51609  func faultsimBenignFailures(tls *libc.TLS) int32 {
 51610  	return memfault.FnBenign
 51611  }
 51612  
 51613  func faultsimPending(tls *libc.TLS) int32 {
 51614  	if memfault.Fenable != 0 {
 51615  		return memfault.FiCountdown
 51616  	} else {
 51617  		return -1
 51618  	}
 51619  	return int32(0)
 51620  }
 51621  
 51622  func faultsimBeginBenign(tls *libc.TLS) {
 51623  	memfault.FisBenignMode++
 51624  }
 51625  
 51626  func faultsimEndBenign(tls *libc.TLS) {
 51627  	memfault.FisBenignMode--
 51628  }
 51629  
 51630  func faultsimInstall(tls *libc.TLS, install int32) int32 {
 51631  	bp := tls.Alloc(200)
 51632  	defer tls.Free(200)
 51633  
 51634  	var rc int32
 51635  
 51636  	install = func() int32 {
 51637  		if install != 0 {
 51638  			return 1
 51639  		}
 51640  		return 0
 51641  	}()
 51642  
 51643  	if install == memfault.FisInstalled {
 51644  		return SQLITE_ERROR
 51645  	}
 51646  
 51647  	if install != 0 {
 51648  		rc = sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_GETMALLOC, libc.VaList(bp, uintptr(unsafe.Pointer(&memfault))+40))
 51649  
 51650  		if rc == SQLITE_OK {
 51651  			*(*sqlite3_mem_methods)(unsafe.Pointer(bp + 72)) = memfault.Fm
 51652  			(*sqlite3_mem_methods)(unsafe.Pointer(bp + 72)).FxMalloc = *(*uintptr)(unsafe.Pointer(&struct {
 51653  				f func(*libc.TLS, int32) uintptr
 51654  			}{faultsimMalloc}))
 51655  			(*sqlite3_mem_methods)(unsafe.Pointer(bp + 72)).FxRealloc = *(*uintptr)(unsafe.Pointer(&struct {
 51656  				f func(*libc.TLS, uintptr, int32) uintptr
 51657  			}{faultsimRealloc}))
 51658  			rc = sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_MALLOC, libc.VaList(bp+8, bp+72))
 51659  		}
 51660  		sqlite3.Xsqlite3_test_control(tls, SQLITE_TESTCTRL_BENIGN_MALLOC_HOOKS,
 51661  			libc.VaList(bp+16, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS) }{faultsimBeginBenign})), *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS) }{faultsimEndBenign}))))
 51662  	} else {
 51663  		libc.X__builtin___memset_chk(tls, bp+136, 0, uint64(unsafe.Sizeof(sqlite3_mem_methods{})), libc.X__builtin_object_size(tls, bp+136, 0))
 51664  		sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_MALLOC, libc.VaList(bp+32, bp+136))
 51665  		sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_GETMALLOC, libc.VaList(bp+40, bp+136))
 51666  
 51667  		rc = sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_MALLOC, libc.VaList(bp+48, uintptr(unsafe.Pointer(&memfault))+40))
 51668  		sqlite3.Xsqlite3_test_control(tls, SQLITE_TESTCTRL_BENIGN_MALLOC_HOOKS,
 51669  			libc.VaList(bp+56, uintptr(0), uintptr(0)))
 51670  	}
 51671  
 51672  	if rc == SQLITE_OK {
 51673  		memfault.FisInstalled = 1
 51674  	}
 51675  	return rc
 51676  }
 51677  
 51678  func pointerToText(tls *libc.TLS, p uintptr, z uintptr) {
 51679  	bp := tls.Alloc(20)
 51680  	defer tls.Free(20)
 51681  	*(*uintptr)(unsafe.Pointer(bp + 8)) = p
 51682  
 51683  	var i int32
 51684  	var k int32
 51685  
 51686  	if *(*uintptr)(unsafe.Pointer(bp + 8)) == uintptr(0) {
 51687  		libc.X__builtin___strcpy_chk(tls, z, ts+14193, libc.X__builtin_object_size(tls, z, func() int32 {
 51688  			if X_USE_FORTIFY_LEVEL > 1 {
 51689  				return 1
 51690  			}
 51691  			return 0
 51692  		}()))
 51693  		return
 51694  	}
 51695  	if uint64(unsafe.Sizeof(sqlite3_uint64(0))) == uint64(unsafe.Sizeof(uintptr(0))) {
 51696  		libc.X__builtin___memcpy_chk(tls, bp, bp+8, uint64(unsafe.Sizeof(uintptr(0))), libc.X__builtin_object_size(tls, bp, 0))
 51697  	} else if uint64(unsafe.Sizeof(uint32(0))) == uint64(unsafe.Sizeof(uintptr(0))) {
 51698  		libc.X__builtin___memcpy_chk(tls, bp+16, bp+8, uint64(unsafe.Sizeof(uint32(0))), libc.X__builtin_object_size(tls, bp+16, 0))
 51699  		*(*sqlite3_uint64)(unsafe.Pointer(bp)) = sqlite3_uint64(*(*uint32)(unsafe.Pointer(bp + 16)))
 51700  	} else {
 51701  	}
 51702  	i = 0
 51703  	k = int32(uint64(unsafe.Sizeof(uintptr(0)))*uint64(2) - uint64(1))
 51704  __1:
 51705  	if !(uint64(i) < uint64(unsafe.Sizeof(uintptr(0)))*uint64(2)) {
 51706  		goto __3
 51707  	}
 51708  	{
 51709  		*(*int8)(unsafe.Pointer(z + uintptr(k))) = zHex[*(*sqlite3_uint64)(unsafe.Pointer(bp))&uint64(0xf)]
 51710  		*(*sqlite3_uint64)(unsafe.Pointer(bp)) >>= 4
 51711  
 51712  	}
 51713  	goto __2
 51714  __2:
 51715  	i++
 51716  	k--
 51717  	goto __1
 51718  	goto __3
 51719  __3:
 51720  	;
 51721  	*(*int8)(unsafe.Pointer(z + 16)) = int8(0)
 51722  }
 51723  
 51724  var zHex = *(*[17]int8)(unsafe.Pointer(ts + 31377))
 51725  
 51726  func hexToInt(tls *libc.TLS, h int32) int32 {
 51727  	if h >= '0' && h <= '9' {
 51728  		return h - '0'
 51729  	} else if h >= 'a' && h <= 'f' {
 51730  		return h - 'a' + 10
 51731  	} else {
 51732  		return -1
 51733  	}
 51734  	return int32(0)
 51735  }
 51736  
 51737  func textToPointer(tls *libc.TLS, z uintptr, pp uintptr) int32 {
 51738  	bp := tls.Alloc(12)
 51739  	defer tls.Free(12)
 51740  
 51741  	*(*sqlite3_uint64)(unsafe.Pointer(bp)) = uint64(0)
 51742  	var i int32
 51743  
 51744  	for i = 0; uint64(i) < uint64(unsafe.Sizeof(uintptr(0)))*uint64(2) && *(*int8)(unsafe.Pointer(z)) != 0; i++ {
 51745  		var v int32
 51746  		v = hexToInt(tls, int32(*(*int8)(unsafe.Pointer(libc.PostIncUintptr(&z, 1)))))
 51747  		if v < 0 {
 51748  			return TCL_ERROR
 51749  		}
 51750  		*(*sqlite3_uint64)(unsafe.Pointer(bp)) = *(*sqlite3_uint64)(unsafe.Pointer(bp))*uint64(16) + sqlite3_uint64(v)
 51751  	}
 51752  	if int32(*(*int8)(unsafe.Pointer(z))) != 0 {
 51753  		return TCL_ERROR
 51754  	}
 51755  	if uint64(unsafe.Sizeof(sqlite3_uint64(0))) == uint64(unsafe.Sizeof(uintptr(0))) {
 51756  		libc.X__builtin___memcpy_chk(tls, pp, bp, uint64(unsafe.Sizeof(sqlite3_uint64(0))), libc.X__builtin_object_size(tls, pp, 0))
 51757  	} else if uint64(unsafe.Sizeof(uint32(0))) == uint64(unsafe.Sizeof(uintptr(0))) {
 51758  		*(*uint32)(unsafe.Pointer(bp + 8)) = uint32(*(*sqlite3_uint64)(unsafe.Pointer(bp)))
 51759  		libc.X__builtin___memcpy_chk(tls, pp, bp+8, uint64(unsafe.Sizeof(uint32(0))), libc.X__builtin_object_size(tls, pp, 0))
 51760  	} else {
 51761  	}
 51762  	return TCL_OK
 51763  }
 51764  
 51765  func test_malloc(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 51766  	bp := tls.Alloc(120)
 51767  	defer tls.Free(120)
 51768  
 51769  	var p uintptr
 51770  
 51771  	if objc != 2 {
 51772  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+33000)
 51773  		return TCL_ERROR
 51774  	}
 51775  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp+16) != 0 {
 51776  		return TCL_ERROR
 51777  	}
 51778  	p = sqlite3.Xsqlite3_malloc(tls, int32(uint32(*(*int32)(unsafe.Pointer(bp + 16)))))
 51779  	pointerToText(tls, p, bp+20)
 51780  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, bp+20, uintptr(0)))
 51781  	return TCL_OK
 51782  }
 51783  
 51784  func test_realloc(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 51785  	bp := tls.Alloc(156)
 51786  	defer tls.Free(156)
 51787  
 51788  	var p uintptr
 51789  
 51790  	if objc != 3 {
 51791  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+33007)
 51792  		return TCL_ERROR
 51793  	}
 51794  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+40) != 0 {
 51795  		return TCL_ERROR
 51796  	}
 51797  	if textToPointer(tls, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+48) != 0 {
 51798  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+33020, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), uintptr(0)))
 51799  		return TCL_ERROR
 51800  	}
 51801  	p = sqlite3.Xsqlite3_realloc(tls, *(*uintptr)(unsafe.Pointer(bp + 48)), int32(uint32(*(*int32)(unsafe.Pointer(bp + 40)))))
 51802  	pointerToText(tls, p, bp+56)
 51803  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+24, bp+56, uintptr(0)))
 51804  	return TCL_OK
 51805  }
 51806  
 51807  func test_free(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 51808  	bp := tls.Alloc(32)
 51809  	defer tls.Free(32)
 51810  
 51811  	if objc != 2 {
 51812  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+33034)
 51813  		return TCL_ERROR
 51814  	}
 51815  	if textToPointer(tls, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+24) != 0 {
 51816  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+33020, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), uintptr(0)))
 51817  		return TCL_ERROR
 51818  	}
 51819  	sqlite3.Xsqlite3_free(tls, *(*uintptr)(unsafe.Pointer(bp + 24)))
 51820  	return TCL_OK
 51821  }
 51822  
 51823  func test_memset(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 51824  	bp := tls.Alloc(172)
 51825  	defer tls.Free(172)
 51826  
 51827  	var i int32
 51828  	var zHex uintptr
 51829  	var zOut uintptr
 51830  
 51831  	if objc != 4 {
 51832  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+33040)
 51833  		return TCL_ERROR
 51834  	}
 51835  	if textToPointer(tls, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+56) != 0 {
 51836  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+33020, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), uintptr(0)))
 51837  		return TCL_ERROR
 51838  	}
 51839  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+64) != 0 {
 51840  		return TCL_ERROR
 51841  	}
 51842  	if *(*int32)(unsafe.Pointer(bp + 64)) <= 0 {
 51843  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+24, ts+33057, uintptr(0)))
 51844  		return TCL_ERROR
 51845  	}
 51846  	zHex = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+68)
 51847  	if uint64(*(*int32)(unsafe.Pointer(bp + 68))) > uint64(unsafe.Sizeof([100]int8{}))*uint64(2) {
 51848  		*(*int32)(unsafe.Pointer(bp + 68)) = int32(uint64(unsafe.Sizeof([100]int8{})) * uint64(2))
 51849  	}
 51850  	*(*int32)(unsafe.Pointer(bp + 68)) = sqlite3TestHexToBin(tls, zHex, *(*int32)(unsafe.Pointer(bp + 68)), bp+72)
 51851  	if *(*int32)(unsafe.Pointer(bp + 68)) == 0 {
 51852  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+40, ts+33079, uintptr(0)))
 51853  		return TCL_ERROR
 51854  	}
 51855  	zOut = *(*uintptr)(unsafe.Pointer(bp + 56))
 51856  	for i = 0; i < *(*int32)(unsafe.Pointer(bp + 64)); i++ {
 51857  		*(*int8)(unsafe.Pointer(zOut + uintptr(i))) = *(*int8)(unsafe.Pointer(bp + 72 + uintptr(i%*(*int32)(unsafe.Pointer(bp + 68)))))
 51858  	}
 51859  	return TCL_OK
 51860  }
 51861  
 51862  func test_memget(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 51863  	bp := tls.Alloc(168)
 51864  	defer tls.Free(168)
 51865  
 51866  	var n int32
 51867  	var zBin uintptr
 51868  
 51869  	if objc != 3 {
 51870  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+33087)
 51871  		return TCL_ERROR
 51872  	}
 51873  	if textToPointer(tls, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+56) != 0 {
 51874  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+33020, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), uintptr(0)))
 51875  		return TCL_ERROR
 51876  	}
 51877  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+64) != 0 {
 51878  		return TCL_ERROR
 51879  	}
 51880  	if *(*int32)(unsafe.Pointer(bp + 64)) <= 0 {
 51881  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+24, ts+33057, uintptr(0)))
 51882  		return TCL_ERROR
 51883  	}
 51884  	zBin = *(*uintptr)(unsafe.Pointer(bp + 56))
 51885  	for *(*int32)(unsafe.Pointer(bp + 64)) > 0 {
 51886  		if uint64(*(*int32)(unsafe.Pointer(bp + 64))) > (uint64(unsafe.Sizeof([100]int8{}))-uint64(1))/uint64(2) {
 51887  			n = int32((uint64(unsafe.Sizeof([100]int8{})) - uint64(1)) / uint64(2))
 51888  		} else {
 51889  			n = *(*int32)(unsafe.Pointer(bp + 64))
 51890  		}
 51891  		libc.X__builtin___memcpy_chk(tls, bp+68, zBin, uint64(n), libc.X__builtin_object_size(tls, bp+68, 0))
 51892  		zBin += uintptr(n)
 51893  		*(*int32)(unsafe.Pointer(bp + 64)) -= n
 51894  		sqlite3TestBinToHex(tls, bp+68, n)
 51895  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+40, bp+68, uintptr(0)))
 51896  	}
 51897  	return TCL_OK
 51898  }
 51899  
 51900  func test_memory_used(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 51901  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewWideIntObj(tls, sqlite3.Xsqlite3_memory_used(tls)))
 51902  	return TCL_OK
 51903  }
 51904  
 51905  func test_memory_highwater(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 51906  	bp := tls.Alloc(4)
 51907  	defer tls.Free(4)
 51908  
 51909  	*(*int32)(unsafe.Pointer(bp)) = 0
 51910  	if objc != 1 && objc != 2 {
 51911  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+33100)
 51912  		return TCL_ERROR
 51913  	}
 51914  	if objc == 2 {
 51915  		if tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp) != 0 {
 51916  			return TCL_ERROR
 51917  		}
 51918  	}
 51919  	tcl.XTcl_SetObjResult(tls, interp,
 51920  		tcl.XTcl_NewWideIntObj(tls, sqlite3.Xsqlite3_memory_highwater(tls, *(*int32)(unsafe.Pointer(bp)))))
 51921  	return TCL_OK
 51922  }
 51923  
 51924  func test_memdebug_backtrace(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 51925  	bp := tls.Alloc(4)
 51926  	defer tls.Free(4)
 51927  
 51928  	if objc != 2 {
 51929  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+33108)
 51930  		return TCL_ERROR
 51931  	}
 51932  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp) != 0 {
 51933  		return TCL_ERROR
 51934  	}
 51935  	return TCL_OK
 51936  }
 51937  
 51938  func test_memdebug_dump(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 51939  	if objc != 2 {
 51940  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+33113)
 51941  		return TCL_ERROR
 51942  	}
 51943  	return TCL_OK
 51944  }
 51945  
 51946  func test_memdebug_malloc_count(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 51947  	var nMalloc int32 = -1
 51948  	if objc != 1 {
 51949  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+584)
 51950  		return TCL_ERROR
 51951  	}
 51952  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, nMalloc))
 51953  	return TCL_OK
 51954  }
 51955  
 51956  func test_memdebug_fail(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 51957  	bp := tls.Alloc(36)
 51958  	defer tls.Free(36)
 51959  
 51960  	var ii int32
 51961  
 51962  	*(*int32)(unsafe.Pointer(bp + 32)) = 1
 51963  	var pBenignCnt uintptr = uintptr(0)
 51964  	var nBenign int32
 51965  	var nFail int32 = 0
 51966  
 51967  	if objc < 2 {
 51968  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+33122)
 51969  		return TCL_ERROR
 51970  	}
 51971  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp+24) != 0 {
 51972  		return TCL_ERROR
 51973  	}
 51974  
 51975  	for ii = 2; ii < objc; ii = ii + 2 {
 51976  		var zOption uintptr = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(ii)*8)), bp+28)
 51977  		var zErr uintptr = uintptr(0)
 51978  
 51979  		if *(*int32)(unsafe.Pointer(bp + 28)) > 1 && libc.Xstrncmp(tls, zOption, ts+33140, uint64(*(*int32)(unsafe.Pointer(bp + 28)))) == 0 {
 51980  			if ii == objc-1 {
 51981  				zErr = ts + 12638
 51982  			} else {
 51983  				if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(ii+1)*8)), bp+32) != 0 {
 51984  					return TCL_ERROR
 51985  				}
 51986  			}
 51987  		} else if *(*int32)(unsafe.Pointer(bp + 28)) > 1 && libc.Xstrncmp(tls, zOption, ts+33148, uint64(*(*int32)(unsafe.Pointer(bp + 28)))) == 0 {
 51988  			if ii == objc-1 {
 51989  				zErr = ts + 12638
 51990  			} else {
 51991  				pBenignCnt = *(*uintptr)(unsafe.Pointer(objv + uintptr(ii+1)*8))
 51992  			}
 51993  		} else {
 51994  			zErr = ts + 12444
 51995  		}
 51996  
 51997  		if zErr != 0 {
 51998  			tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, zErr, zOption, 0))
 51999  			return TCL_ERROR
 52000  		}
 52001  	}
 52002  
 52003  	nBenign = faultsimBenignFailures(tls)
 52004  	nFail = faultsimFailures(tls)
 52005  	faultsimConfig(tls, *(*int32)(unsafe.Pointer(bp + 24)), *(*int32)(unsafe.Pointer(bp + 32)))
 52006  
 52007  	if pBenignCnt != 0 {
 52008  		tcl.XTcl_ObjSetVar2(tls, interp, pBenignCnt, uintptr(0), tcl.XTcl_NewIntObj(tls, nBenign), 0)
 52009  	}
 52010  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, nFail))
 52011  	return TCL_OK
 52012  }
 52013  
 52014  func test_memdebug_pending(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 52015  	var nPending int32
 52016  	if objc != 1 {
 52017  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+584)
 52018  		return TCL_ERROR
 52019  	}
 52020  	nPending = faultsimPending(tls)
 52021  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, nPending))
 52022  	return TCL_OK
 52023  }
 52024  
 52025  var sqlite3_memdebug_title_count int32 = 0
 52026  
 52027  func test_memdebug_settitle(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 52028  	sqlite3_memdebug_title_count++
 52029  	if objc != 2 {
 52030  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+33159)
 52031  		return TCL_ERROR
 52032  	}
 52033  	return TCL_OK
 52034  }
 52035  
 52036  var aMallocLog Tcl_HashTable
 52037  var mallocLogEnabled int32 = 0
 52038  
 52039  type MallocLog1 = struct {
 52040  	FnCall int32
 52041  	FnByte int32
 52042  }
 52043  
 52044  type MallocLog = MallocLog1
 52045  
 52046  func test_memdebug_log_clear(tls *libc.TLS) {
 52047  	bp := tls.Alloc(24)
 52048  	defer tls.Free(24)
 52049  
 52050  	var pEntry uintptr
 52051  	for pEntry = tcl.XTcl_FirstHashEntry(tls, uintptr(unsafe.Pointer(&aMallocLog)), bp); pEntry != 0; pEntry = tcl.XTcl_NextHashEntry(tls, bp) {
 52052  		var pLog uintptr = (*Tcl_HashEntry)(unsafe.Pointer(pEntry)).FclientData
 52053  		tcl.XTcl_Free(tls, pLog)
 52054  	}
 52055  	tcl.XTcl_DeleteHashTable(tls, uintptr(unsafe.Pointer(&aMallocLog)))
 52056  	tcl.XTcl_InitHashTable(tls, uintptr(unsafe.Pointer(&aMallocLog)), int32(uint64(10)*func() uint64 {
 52057  		if uint64(unsafe.Sizeof(int32(0))) >= uint64(unsafe.Sizeof(uintptr(0))) {
 52058  			return uint64(1)
 52059  		}
 52060  		return uint64(unsafe.Sizeof(uintptr(0))) / uint64(unsafe.Sizeof(int32(0)))
 52061  	}()))
 52062  }
 52063  
 52064  func test_memdebug_log(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 52065  	bp := tls.Alloc(128)
 52066  	defer tls.Free(128)
 52067  
 52068  	if !(isInit != 0) {
 52069  		tcl.XTcl_InitHashTable(tls, uintptr(unsafe.Pointer(&aMallocLog)), int32(uint64(10)*func() uint64 {
 52070  			if uint64(unsafe.Sizeof(int32(0))) >= uint64(unsafe.Sizeof(uintptr(0))) {
 52071  				return uint64(1)
 52072  			}
 52073  			return uint64(unsafe.Sizeof(uintptr(0))) / uint64(unsafe.Sizeof(int32(0)))
 52074  		}()))
 52075  		isInit = 1
 52076  	}
 52077  
 52078  	if objc < 2 {
 52079  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+33165)
 52080  	}
 52081  	if tcl.XTcl_GetIndexFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), uintptr(unsafe.Pointer(&MB_strs)), ts+2014, 0, bp) != 0 {
 52082  		return TCL_ERROR
 52083  	}
 52084  
 52085  	switch uint32(*(*int32)(unsafe.Pointer(bp))) {
 52086  	case uint32(0):
 52087  		mallocLogEnabled = 1
 52088  		break
 52089  	case uint32(1):
 52090  		mallocLogEnabled = 0
 52091  		break
 52092  	case uint32(2):
 52093  		{
 52094  			var pEntry uintptr
 52095  			var pRet uintptr = tcl.XTcl_NewObj(tls)
 52096  
 52097  			for pEntry = tcl.XTcl_FirstHashEntry(tls, uintptr(unsafe.Pointer(&aMallocLog)), bp+8); pEntry != 0; pEntry = tcl.XTcl_NextHashEntry(tls, bp+8) {
 52098  				var pLog uintptr = (*Tcl_HashEntry)(unsafe.Pointer(pEntry)).FclientData
 52099  				var aKey uintptr = func() uintptr {
 52100  					if (*Tcl_HashTable)(unsafe.Pointer(uintptr(unsafe.Pointer(&aMallocLog)))).FkeyType == TCL_ONE_WORD_KEYS || (*Tcl_HashTable)(unsafe.Pointer(uintptr(unsafe.Pointer(&aMallocLog)))).FkeyType == -1 {
 52101  						return *(*uintptr)(unsafe.Pointer(pEntry + 32))
 52102  					}
 52103  					return pEntry + 32
 52104  				}()
 52105  				var ii int32
 52106  
 52107  				*(*uintptr)(unsafe.Pointer(bp + 32)) = tcl.XTcl_NewIntObj(tls, (*MallocLog)(unsafe.Pointer(pLog)).FnCall)
 52108  				*(*uintptr)(unsafe.Pointer(bp + 32 + 1*8)) = tcl.XTcl_NewIntObj(tls, (*MallocLog)(unsafe.Pointer(pLog)).FnByte)
 52109  				for ii = 0; ii < MALLOC_LOG_FRAMES; ii++ {
 52110  					*(*uintptr)(unsafe.Pointer(bp + 32 + uintptr(ii+2)*8)) = tcl.XTcl_NewWideIntObj(tls, *(*Tcl_WideInt)(unsafe.Pointer(aKey + uintptr(ii)*8)))
 52111  				}
 52112  
 52113  				tcl.XTcl_ListObjAppendElement(tls, interp, pRet,
 52114  					tcl.XTcl_NewListObj(tls, MALLOC_LOG_FRAMES+2, bp+32))
 52115  			}
 52116  
 52117  			tcl.XTcl_SetObjResult(tls, interp, pRet)
 52118  			break
 52119  
 52120  		}
 52121  	case uint32(3):
 52122  		{
 52123  			test_memdebug_log_clear(tls)
 52124  			break
 52125  
 52126  		}
 52127  
 52128  	case uint32(4):
 52129  		{
 52130  			break
 52131  
 52132  		}
 52133  	}
 52134  
 52135  	return TCL_OK
 52136  }
 52137  
 52138  var isInit int32 = 0
 52139  var MB_strs = [5]uintptr{ts + 33181, ts + 33187, ts + 33192, ts + 33197, ts + 33203}
 52140  
 52141  func test_config_pagecache(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 52142  	bp := tls.Alloc(56)
 52143  	defer tls.Free(56)
 52144  
 52145  	var pRes uintptr
 52146  	if objc != 3 {
 52147  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+33208)
 52148  		return TCL_ERROR
 52149  	}
 52150  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp+48) != 0 {
 52151  		return TCL_ERROR
 52152  	}
 52153  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+52) != 0 {
 52154  		return TCL_ERROR
 52155  	}
 52156  	libc.Xfree(tls, buf1)
 52157  	buf1 = uintptr(0)
 52158  
 52159  	pRes = tcl.XTcl_NewObj(tls)
 52160  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pRes, tcl.XTcl_NewIntObj(tls, sqlite3.Xsqlite3Config.FszPage))
 52161  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pRes, tcl.XTcl_NewIntObj(tls, sqlite3.Xsqlite3Config.FnPage))
 52162  	tcl.XTcl_SetObjResult(tls, interp, pRes)
 52163  
 52164  	if *(*int32)(unsafe.Pointer(bp + 48)) < 0 {
 52165  		sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_PAGECACHE, libc.VaList(bp, uintptr(0), 0, 0))
 52166  	} else {
 52167  		buf1 = libc.Xmalloc(tls, uint64(*(*int32)(unsafe.Pointer(bp + 48))**(*int32)(unsafe.Pointer(bp + 52))))
 52168  		sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_PAGECACHE, libc.VaList(bp+24, buf1, *(*int32)(unsafe.Pointer(bp + 48)), *(*int32)(unsafe.Pointer(bp + 52))))
 52169  	}
 52170  	return TCL_OK
 52171  }
 52172  
 52173  var buf1 uintptr = uintptr(0)
 52174  
 52175  func test_alt_pcache(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 52176  	bp := tls.Alloc(32)
 52177  	defer tls.Free(32)
 52178  
 52179  	*(*int32)(unsafe.Pointer(bp + 20)) = 0
 52180  	*(*int32)(unsafe.Pointer(bp + 24)) = 0
 52181  	*(*int32)(unsafe.Pointer(bp + 28)) = 0
 52182  	if objc < 2 || objc > 5 {
 52183  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv,
 52184  			ts+33215)
 52185  		return TCL_ERROR
 52186  	}
 52187  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp+16) != 0 {
 52188  		return TCL_ERROR
 52189  	}
 52190  	if objc >= 3 && tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+20) != 0 {
 52191  		return TCL_ERROR
 52192  	}
 52193  	if objc >= 4 && tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+24) != 0 {
 52194  		return TCL_ERROR
 52195  	}
 52196  	if objc >= 5 && tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 4*8)), bp+28) != 0 {
 52197  		return TCL_ERROR
 52198  	}
 52199  	if *(*int32)(unsafe.Pointer(bp + 20)) < 0 || *(*int32)(unsafe.Pointer(bp + 20)) > 100 {
 52200  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+33262,
 52201  			uintptr(0)))
 52202  		return TCL_ERROR
 52203  	}
 52204  	installTestPCache(tls, *(*int32)(unsafe.Pointer(bp + 16)), uint32(*(*int32)(unsafe.Pointer(bp + 20))), uint32(*(*int32)(unsafe.Pointer(bp + 24))),
 52205  		uint32(*(*int32)(unsafe.Pointer(bp + 28))))
 52206  	return TCL_OK
 52207  }
 52208  
 52209  func test_config_memstatus(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 52210  	bp := tls.Alloc(12)
 52211  	defer tls.Free(12)
 52212  
 52213  	var rc int32
 52214  	if objc != 2 {
 52215  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+18324)
 52216  		return TCL_ERROR
 52217  	}
 52218  	if tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp+8) != 0 {
 52219  		return TCL_ERROR
 52220  	}
 52221  	rc = sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_MEMSTATUS, libc.VaList(bp, *(*int32)(unsafe.Pointer(bp + 8))))
 52222  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, rc))
 52223  	return TCL_OK
 52224  }
 52225  
 52226  func test_config_lookaside(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 52227  	bp := tls.Alloc(24)
 52228  	defer tls.Free(24)
 52229  
 52230  	var pRet uintptr
 52231  	if objc != 3 {
 52232  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+33305)
 52233  		return TCL_ERROR
 52234  	}
 52235  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp+16) != 0 {
 52236  		return TCL_ERROR
 52237  	}
 52238  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+20) != 0 {
 52239  		return TCL_ERROR
 52240  	}
 52241  	pRet = tcl.XTcl_NewObj(tls)
 52242  	tcl.XTcl_ListObjAppendElement(tls,
 52243  		interp, pRet, tcl.XTcl_NewIntObj(tls, sqlite3.Xsqlite3Config.FszLookaside))
 52244  	tcl.XTcl_ListObjAppendElement(tls,
 52245  		interp, pRet, tcl.XTcl_NewIntObj(tls, sqlite3.Xsqlite3Config.FnLookaside))
 52246  	sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_LOOKASIDE, libc.VaList(bp, *(*int32)(unsafe.Pointer(bp + 16)), *(*int32)(unsafe.Pointer(bp + 20))))
 52247  	tcl.XTcl_SetObjResult(tls, interp, pRet)
 52248  	return TCL_OK
 52249  }
 52250  
 52251  func test_db_config_lookaside(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 52252  	bp := tls.Alloc(84)
 52253  	defer tls.Free(84)
 52254  
 52255  	var rc int32
 52256  
 52257  	if objc != 5 {
 52258  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+33316)
 52259  		return TCL_ERROR
 52260  	}
 52261  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+64) != 0 {
 52262  		return TCL_ERROR
 52263  	}
 52264  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+72) != 0 {
 52265  		return TCL_ERROR
 52266  	}
 52267  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+76) != 0 {
 52268  		return TCL_ERROR
 52269  	}
 52270  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 4*8)), bp+80) != 0 {
 52271  		return TCL_ERROR
 52272  	}
 52273  	if *(*int32)(unsafe.Pointer(bp + 72)) == 0 {
 52274  		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))))
 52275  	} else if *(*int32)(unsafe.Pointer(bp + 72)) >= 1 && *(*int32)(unsafe.Pointer(bp + 72)) <= 2 && uint64(*(*int32)(unsafe.Pointer(bp + 76))**(*int32)(unsafe.Pointer(bp + 80))) <= uint64(unsafe.Sizeof([10000]int8{})) {
 52276  		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))))
 52277  	} else {
 52278  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+48, ts+33333, uintptr(0)))
 52279  		return TCL_ERROR
 52280  	}
 52281  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, rc))
 52282  	return TCL_OK
 52283  }
 52284  
 52285  var azBuf [2][10000]int8
 52286  
 52287  func test_config_heap(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 52288  	bp := tls.Alloc(56)
 52289  	defer tls.Free(56)
 52290  
 52291  	var rc int32
 52292  
 52293  	var aArg uintptr = objv + 1*8
 52294  	var nArg int32 = objc - 1
 52295  
 52296  	if nArg != 2 {
 52297  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+33371)
 52298  		return TCL_ERROR
 52299  	}
 52300  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(aArg)), bp+48) != 0 {
 52301  		return TCL_ERROR
 52302  	}
 52303  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(aArg + 1*8)), bp+52) != 0 {
 52304  		return TCL_ERROR
 52305  	}
 52306  
 52307  	if *(*int32)(unsafe.Pointer(bp + 48)) == 0 {
 52308  		libc.Xfree(tls, zBuf)
 52309  		zBuf = uintptr(0)
 52310  		rc = sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_HEAP, libc.VaList(bp, uintptr(0), 0, 0))
 52311  	} else {
 52312  		zBuf = libc.Xrealloc(tls, zBuf, uint64(*(*int32)(unsafe.Pointer(bp + 48))))
 52313  		rc = sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_HEAP, libc.VaList(bp+24, zBuf, *(*int32)(unsafe.Pointer(bp + 48)), *(*int32)(unsafe.Pointer(bp + 52))))
 52314  	}
 52315  
 52316  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(1))
 52317  	return TCL_OK
 52318  }
 52319  
 52320  var zBuf uintptr
 52321  
 52322  func test_config_heap_size(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 52323  	bp := tls.Alloc(12)
 52324  	defer tls.Free(12)
 52325  
 52326  	var rc int32
 52327  
 52328  	var aArg uintptr = objv + 1*8
 52329  	var nArg int32 = objc - 1
 52330  
 52331  	if nArg != 1 {
 52332  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+16219)
 52333  		return TCL_ERROR
 52334  	}
 52335  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(aArg)), bp+8) != 0 {
 52336  		return TCL_ERROR
 52337  	}
 52338  
 52339  	rc = sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_WIN32_HEAPSIZE, libc.VaList(bp, *(*int32)(unsafe.Pointer(bp + 8))))
 52340  
 52341  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(1))
 52342  	return TCL_OK
 52343  }
 52344  
 52345  func test_config_error(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 52346  	bp := tls.Alloc(40)
 52347  	defer tls.Free(40)
 52348  
 52349  	if objc != 2 && objc != 1 {
 52350  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+33387)
 52351  		return TCL_ERROR
 52352  	}
 52353  	if objc == 2 {
 52354  		if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0 {
 52355  			return TCL_ERROR
 52356  		}
 52357  		if sqlite3.Xsqlite3_db_config(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), 99999, 0) != SQLITE_ERROR {
 52358  			tcl.XTcl_AppendResult(tls, interp,
 52359  				libc.VaList(bp, ts+33392,
 52360  					uintptr(0)))
 52361  			return TCL_ERROR
 52362  		}
 52363  	} else {
 52364  		if sqlite3.Xsqlite3_config(tls, 99999, 0) != SQLITE_ERROR {
 52365  			tcl.XTcl_AppendResult(tls, interp,
 52366  				libc.VaList(bp+16, ts+33450,
 52367  					uintptr(0)))
 52368  			return TCL_ERROR
 52369  		}
 52370  	}
 52371  	return TCL_OK
 52372  }
 52373  
 52374  func test_config_uri(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 52375  	bp := tls.Alloc(12)
 52376  	defer tls.Free(12)
 52377  
 52378  	var rc int32
 52379  
 52380  	if objc != 2 {
 52381  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+10152)
 52382  		return TCL_ERROR
 52383  	}
 52384  	if tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp+8) != 0 {
 52385  		return TCL_ERROR
 52386  	}
 52387  
 52388  	rc = sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_URI, libc.VaList(bp, *(*int32)(unsafe.Pointer(bp + 8))))
 52389  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(1))
 52390  
 52391  	return TCL_OK
 52392  }
 52393  
 52394  func test_config_cis(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 52395  	bp := tls.Alloc(12)
 52396  	defer tls.Free(12)
 52397  
 52398  	var rc int32
 52399  
 52400  	if objc != 2 {
 52401  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+10152)
 52402  		return TCL_ERROR
 52403  	}
 52404  	if tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp+8) != 0 {
 52405  		return TCL_ERROR
 52406  	}
 52407  
 52408  	rc = sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_COVERING_INDEX_SCAN, libc.VaList(bp, *(*int32)(unsafe.Pointer(bp + 8))))
 52409  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(1))
 52410  
 52411  	return TCL_OK
 52412  }
 52413  
 52414  func test_config_pmasz(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 52415  	bp := tls.Alloc(12)
 52416  	defer tls.Free(12)
 52417  
 52418  	var rc int32
 52419  
 52420  	if objc != 2 {
 52421  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+10152)
 52422  		return TCL_ERROR
 52423  	}
 52424  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp+8) != 0 {
 52425  		return TCL_ERROR
 52426  	}
 52427  
 52428  	rc = sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_PMASZ, libc.VaList(bp, *(*int32)(unsafe.Pointer(bp + 8))))
 52429  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(1))
 52430  
 52431  	return TCL_OK
 52432  }
 52433  
 52434  func test_dump_memsys3(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 52435  	if objc != 2 {
 52436  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+33113)
 52437  		return TCL_ERROR
 52438  	}
 52439  
 52440  	switch int32(clientData) {
 52441  	case 3:
 52442  		{
 52443  		}
 52444  		fallthrough
 52445  	case 5:
 52446  		{
 52447  		}
 52448  	}
 52449  	return TCL_OK
 52450  }
 52451  
 52452  func test_status(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 52453  	bp := tls.Alloc(16)
 52454  	defer tls.Free(16)
 52455  
 52456  	var rc int32
 52457  
 52458  	var i int32
 52459  	*(*int32)(unsafe.Pointer(bp)) = 0
 52460  
 52461  	var zOpName uintptr
 52462  	var pResult uintptr
 52463  	if objc != 3 {
 52464  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+33501)
 52465  		return TCL_ERROR
 52466  	}
 52467  	zOpName = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 52468  	for i = 0; i < int32(uint64(unsafe.Sizeof(aOp1))/uint64(unsafe.Sizeof(struct {
 52469  		FzName       uintptr
 52470  		Fop          int32
 52471  		F__ccgo_pad1 [4]byte
 52472  	}{}))); i++ {
 52473  		if libc.Xstrcmp(tls, aOp1[i].FzName, zOpName) == 0 {
 52474  			*(*int32)(unsafe.Pointer(bp)) = aOp1[i].Fop
 52475  			break
 52476  		}
 52477  	}
 52478  	if i >= int32(uint64(unsafe.Sizeof(aOp1))/uint64(unsafe.Sizeof(struct {
 52479  		FzName       uintptr
 52480  		Fop          int32
 52481  		F__ccgo_pad1 [4]byte
 52482  	}{}))) {
 52483  		if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp) != 0 {
 52484  			return TCL_ERROR
 52485  		}
 52486  	}
 52487  	if tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+4) != 0 {
 52488  		return TCL_ERROR
 52489  	}
 52490  	*(*int32)(unsafe.Pointer(bp + 8)) = 0
 52491  	*(*int32)(unsafe.Pointer(bp + 12)) = 0
 52492  	rc = sqlite3.Xsqlite3_status(tls, *(*int32)(unsafe.Pointer(bp)), bp+8, bp+12, *(*int32)(unsafe.Pointer(bp + 4)))
 52493  	pResult = tcl.XTcl_NewObj(tls)
 52494  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pResult, tcl.XTcl_NewIntObj(tls, rc))
 52495  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pResult, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 8))))
 52496  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pResult, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 12))))
 52497  	tcl.XTcl_SetObjResult(tls, interp, pResult)
 52498  	return TCL_OK
 52499  }
 52500  
 52501  var aOp1 = [10]struct {
 52502  	FzName       uintptr
 52503  	Fop          int32
 52504  	F__ccgo_pad1 [4]byte
 52505  }{
 52506  	{FzName: ts + 33521},
 52507  	{FzName: ts + 33547, Fop: SQLITE_STATUS_MALLOC_SIZE},
 52508  	{FzName: ts + 33573, Fop: SQLITE_STATUS_PAGECACHE_USED},
 52509  	{FzName: ts + 33602, Fop: SQLITE_STATUS_PAGECACHE_OVERFLOW},
 52510  	{FzName: ts + 33635, Fop: SQLITE_STATUS_PAGECACHE_SIZE},
 52511  	{FzName: ts + 33664, Fop: SQLITE_STATUS_SCRATCH_USED},
 52512  	{FzName: ts + 33691, Fop: SQLITE_STATUS_SCRATCH_OVERFLOW},
 52513  	{FzName: ts + 33722, Fop: SQLITE_STATUS_SCRATCH_SIZE},
 52514  	{FzName: ts + 33749, Fop: SQLITE_STATUS_PARSER_STACK},
 52515  	{FzName: ts + 33776, Fop: SQLITE_STATUS_MALLOC_COUNT},
 52516  }
 52517  
 52518  func test_db_status(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 52519  	bp := tls.Alloc(24)
 52520  	defer tls.Free(24)
 52521  
 52522  	var rc int32
 52523  
 52524  	var i int32
 52525  	*(*int32)(unsafe.Pointer(bp + 8)) = 0
 52526  
 52527  	var zOpName uintptr
 52528  
 52529  	var pResult uintptr
 52530  	if objc != 4 {
 52531  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+33803)
 52532  		return TCL_ERROR
 52533  	}
 52534  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 52535  		return TCL_ERROR
 52536  	}
 52537  	zOpName = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 52538  	if libc.Xmemcmp(tls, zOpName, ts+33826, uint64(7)) == 0 {
 52539  		zOpName += uintptr(7)
 52540  	}
 52541  	if libc.Xmemcmp(tls, zOpName, ts+33834, uint64(9)) == 0 {
 52542  		zOpName += uintptr(9)
 52543  	}
 52544  	for i = 0; i < int32(uint64(unsafe.Sizeof(aOp2))/uint64(unsafe.Sizeof(struct {
 52545  		FzName       uintptr
 52546  		Fop          int32
 52547  		F__ccgo_pad1 [4]byte
 52548  	}{}))); i++ {
 52549  		if libc.Xstrcmp(tls, aOp2[i].FzName, zOpName) == 0 {
 52550  			*(*int32)(unsafe.Pointer(bp + 8)) = aOp2[i].Fop
 52551  			break
 52552  		}
 52553  	}
 52554  	if i >= int32(uint64(unsafe.Sizeof(aOp2))/uint64(unsafe.Sizeof(struct {
 52555  		FzName       uintptr
 52556  		Fop          int32
 52557  		F__ccgo_pad1 [4]byte
 52558  	}{}))) {
 52559  		if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+8) != 0 {
 52560  			return TCL_ERROR
 52561  		}
 52562  	}
 52563  	if tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+12) != 0 {
 52564  		return TCL_ERROR
 52565  	}
 52566  	*(*int32)(unsafe.Pointer(bp + 16)) = 0
 52567  	*(*int32)(unsafe.Pointer(bp + 20)) = 0
 52568  	rc = sqlite3.Xsqlite3_db_status(tls, *(*uintptr)(unsafe.Pointer(bp)), *(*int32)(unsafe.Pointer(bp + 8)), bp+16, bp+20, *(*int32)(unsafe.Pointer(bp + 12)))
 52569  	pResult = tcl.XTcl_NewObj(tls)
 52570  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pResult, tcl.XTcl_NewIntObj(tls, rc))
 52571  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pResult, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 16))))
 52572  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pResult, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 20))))
 52573  	tcl.XTcl_SetObjResult(tls, interp, pResult)
 52574  	return TCL_OK
 52575  }
 52576  
 52577  var aOp2 = [13]struct {
 52578  	FzName       uintptr
 52579  	Fop          int32
 52580  	F__ccgo_pad1 [4]byte
 52581  }{
 52582  	{FzName: ts + 33844},
 52583  	{FzName: ts + 33859, Fop: SQLITE_DBSTATUS_CACHE_USED},
 52584  	{FzName: ts + 33870, Fop: SQLITE_DBSTATUS_SCHEMA_USED},
 52585  	{FzName: ts + 33882, Fop: SQLITE_DBSTATUS_STMT_USED},
 52586  	{FzName: ts + 33892, Fop: SQLITE_DBSTATUS_LOOKASIDE_HIT},
 52587  	{FzName: ts + 33906, Fop: SQLITE_DBSTATUS_LOOKASIDE_MISS_SIZE},
 52588  	{FzName: ts + 33926, Fop: SQLITE_DBSTATUS_LOOKASIDE_MISS_FULL},
 52589  	{FzName: ts + 33946, Fop: SQLITE_DBSTATUS_CACHE_HIT},
 52590  	{FzName: ts + 33956, Fop: SQLITE_DBSTATUS_CACHE_MISS},
 52591  	{FzName: ts + 33967, Fop: SQLITE_DBSTATUS_CACHE_WRITE},
 52592  	{FzName: ts + 33979, Fop: SQLITE_DBSTATUS_DEFERRED_FKS},
 52593  	{FzName: ts + 33992, Fop: SQLITE_DBSTATUS_CACHE_USED_SHARED},
 52594  	{FzName: ts + 34010, Fop: SQLITE_DBSTATUS_CACHE_SPILL},
 52595  }
 52596  
 52597  func test_install_malloc_faultsim(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 52598  	bp := tls.Alloc(4)
 52599  	defer tls.Free(4)
 52600  
 52601  	var rc int32
 52602  
 52603  	if objc != 2 {
 52604  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+18324)
 52605  		return TCL_ERROR
 52606  	}
 52607  	if TCL_OK != tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp) {
 52608  		return TCL_ERROR
 52609  	}
 52610  	rc = faultsimInstall(tls, *(*int32)(unsafe.Pointer(bp)))
 52611  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(1))
 52612  	return TCL_OK
 52613  }
 52614  
 52615  func test_install_memsys3(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 52616  	var rc int32 = SQLITE_MISUSE
 52617  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(1))
 52618  	return TCL_OK
 52619  }
 52620  
 52621  func test_vfs_oom_test(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 52622  	bp := tls.Alloc(4)
 52623  	defer tls.Free(4)
 52624  
 52625  	if objc > 2 {
 52626  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+34022)
 52627  		return TCL_ERROR
 52628  	} else if objc == 2 {
 52629  		if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp) != 0 {
 52630  			return TCL_ERROR
 52631  		}
 52632  		sqlite3.Xsqlite3_memdebug_vfs_oom_test = *(*int32)(unsafe.Pointer(bp))
 52633  	}
 52634  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, sqlite3.Xsqlite3_memdebug_vfs_oom_test))
 52635  	return TCL_OK
 52636  }
 52637  
 52638  func Sqlitetest_malloc_Init(tls *libc.TLS, interp uintptr) int32 {
 52639  	var i int32
 52640  	for i = 0; uint64(i) < uint64(unsafe.Sizeof(aObjCmd11))/uint64(unsafe.Sizeof(struct {
 52641  		FzName       uintptr
 52642  		FxProc       uintptr
 52643  		FclientData  int32
 52644  		F__ccgo_pad1 [4]byte
 52645  	}{})); i++ {
 52646  		var c ClientData = uintptr(intptr_t(aObjCmd11[i].FclientData))
 52647  		tcl.XTcl_CreateObjCommand(tls, interp, aObjCmd11[i].FzName, aObjCmd11[i].FxProc, c, uintptr(0))
 52648  	}
 52649  	return TCL_OK
 52650  }
 52651  
 52652  var aObjCmd11 = [32]struct {
 52653  	FzName       uintptr
 52654  	FxProc       uintptr
 52655  	FclientData  int32
 52656  	F__ccgo_pad1 [4]byte
 52657  }{
 52658  	{FzName: ts + 28199, FxProc: 0},
 52659  	{FzName: ts + 28214, FxProc: 0},
 52660  	{FzName: ts + 34032, FxProc: 0},
 52661  	{FzName: ts + 34045, FxProc: 0},
 52662  	{FzName: ts + 34052, FxProc: 0},
 52663  	{FzName: ts + 34059, FxProc: 0},
 52664  	{FzName: ts + 34079, FxProc: 0},
 52665  	{FzName: ts + 34104, FxProc: 0},
 52666  	{FzName: ts + 34131, FxProc: 0},
 52667  	{FzName: ts + 34153, FxProc: 0},
 52668  	{FzName: ts + 34175, FxProc: 0},
 52669  	{FzName: ts + 34200, FxProc: 0},
 52670  	{FzName: ts + 34226, FxProc: 0},
 52671  	{FzName: ts + 34256, FxProc: 0},
 52672  	{FzName: ts + 34277, FxProc: 0},
 52673  	{FzName: ts + 34302, FxProc: 0},
 52674  	{FzName: ts + 34328, FxProc: 0},
 52675  	{FzName: ts + 34343, FxProc: 0},
 52676  	{FzName: ts + 34361, FxProc: 0},
 52677  	{FzName: ts + 34385, FxProc: 0},
 52678  	{FzName: ts + 34405, FxProc: 0},
 52679  	{FzName: ts + 34430, FxProc: 0},
 52680  	{FzName: ts + 34455, FxProc: 0},
 52681  	{FzName: ts + 34480, FxProc: 0},
 52682  	{FzName: ts + 34501, FxProc: 0},
 52683  	{FzName: ts + 34520, FxProc: 0},
 52684  	{FzName: ts + 34539, FxProc: 0},
 52685  	{FzName: ts + 34560, FxProc: 0},
 52686  	{FzName: ts + 34588, FxProc: 0, FclientData: 3},
 52687  	{FzName: ts + 34609, FxProc: 0, FclientData: 5},
 52688  	{FzName: ts + 34630, FxProc: 0},
 52689  	{FzName: ts + 34654, FxProc: 0},
 52690  }
 52691  
 52692  type MD5Context1 = struct {
 52693  	FisInit int32
 52694  	Fbuf    [4]uint32
 52695  	Fbits   [2]uint32
 52696  	Fin     [64]uint8
 52697  }
 52698  
 52699  type MD5Context = MD5Context1
 52700  
 52701  func byteReverse(tls *libc.TLS, buf uintptr, longs uint32) {
 52702  	var t uint32
 52703  	for __ccgo := true; __ccgo; __ccgo = libc.PreDecUint32(&longs, 1) != 0 {
 52704  		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))))
 52705  		*(*uint32)(unsafe.Pointer(buf)) = t
 52706  		buf += uintptr(4)
 52707  	}
 52708  }
 52709  
 52710  func MD5Transform(tls *libc.TLS, buf uintptr, in uintptr) {
 52711  	var a uint32
 52712  	var b uint32
 52713  	var c uint32
 52714  	var d uint32
 52715  
 52716  	a = *(*uint32)(unsafe.Pointer(buf))
 52717  	b = *(*uint32)(unsafe.Pointer(buf + 1*4))
 52718  	c = *(*uint32)(unsafe.Pointer(buf + 2*4))
 52719  	d = *(*uint32)(unsafe.Pointer(buf + 3*4))
 52720  
 52721  	a = a + (d ^ b&(c^d) + *(*uint32)(unsafe.Pointer(in)) + 0xd76aa478)
 52722  	a = a<<7 | a>>(32-7)
 52723  	a = a + b
 52724  	d = d + (c ^ a&(b^c) + *(*uint32)(unsafe.Pointer(in + 1*4)) + 0xe8c7b756)
 52725  	d = d<<12 | d>>(32-12)
 52726  	d = d + a
 52727  	c = c + (b ^ d&(a^b) + *(*uint32)(unsafe.Pointer(in + 2*4)) + uint32(0x242070db))
 52728  	c = c<<17 | c>>(32-17)
 52729  	c = c + d
 52730  	b = b + (a ^ c&(d^a) + *(*uint32)(unsafe.Pointer(in + 3*4)) + 0xc1bdceee)
 52731  	b = b<<22 | b>>(32-22)
 52732  	b = b + c
 52733  	a = a + (d ^ b&(c^d) + *(*uint32)(unsafe.Pointer(in + 4*4)) + 0xf57c0faf)
 52734  	a = a<<7 | a>>(32-7)
 52735  	a = a + b
 52736  	d = d + (c ^ a&(b^c) + *(*uint32)(unsafe.Pointer(in + 5*4)) + uint32(0x4787c62a))
 52737  	d = d<<12 | d>>(32-12)
 52738  	d = d + a
 52739  	c = c + (b ^ d&(a^b) + *(*uint32)(unsafe.Pointer(in + 6*4)) + 0xa8304613)
 52740  	c = c<<17 | c>>(32-17)
 52741  	c = c + d
 52742  	b = b + (a ^ c&(d^a) + *(*uint32)(unsafe.Pointer(in + 7*4)) + 0xfd469501)
 52743  	b = b<<22 | b>>(32-22)
 52744  	b = b + c
 52745  	a = a + (d ^ b&(c^d) + *(*uint32)(unsafe.Pointer(in + 8*4)) + uint32(0x698098d8))
 52746  	a = a<<7 | a>>(32-7)
 52747  	a = a + b
 52748  	d = d + (c ^ a&(b^c) + *(*uint32)(unsafe.Pointer(in + 9*4)) + 0x8b44f7af)
 52749  	d = d<<12 | d>>(32-12)
 52750  	d = d + a
 52751  	c = c + (b ^ d&(a^b) + *(*uint32)(unsafe.Pointer(in + 10*4)) + 0xffff5bb1)
 52752  	c = c<<17 | c>>(32-17)
 52753  	c = c + d
 52754  	b = b + (a ^ c&(d^a) + *(*uint32)(unsafe.Pointer(in + 11*4)) + 0x895cd7be)
 52755  	b = b<<22 | b>>(32-22)
 52756  	b = b + c
 52757  	a = a + (d ^ b&(c^d) + *(*uint32)(unsafe.Pointer(in + 12*4)) + uint32(0x6b901122))
 52758  	a = a<<7 | a>>(32-7)
 52759  	a = a + b
 52760  	d = d + (c ^ a&(b^c) + *(*uint32)(unsafe.Pointer(in + 13*4)) + 0xfd987193)
 52761  	d = d<<12 | d>>(32-12)
 52762  	d = d + a
 52763  	c = c + (b ^ d&(a^b) + *(*uint32)(unsafe.Pointer(in + 14*4)) + 0xa679438e)
 52764  	c = c<<17 | c>>(32-17)
 52765  	c = c + d
 52766  	b = b + (a ^ c&(d^a) + *(*uint32)(unsafe.Pointer(in + 15*4)) + uint32(0x49b40821))
 52767  	b = b<<22 | b>>(32-22)
 52768  	b = b + c
 52769  
 52770  	a = a + (c ^ d&(b^c) + *(*uint32)(unsafe.Pointer(in + 1*4)) + 0xf61e2562)
 52771  	a = a<<5 | a>>(32-5)
 52772  	a = a + b
 52773  	d = d + (b ^ c&(a^b) + *(*uint32)(unsafe.Pointer(in + 6*4)) + 0xc040b340)
 52774  	d = d<<9 | d>>(32-9)
 52775  	d = d + a
 52776  	c = c + (a ^ b&(d^a) + *(*uint32)(unsafe.Pointer(in + 11*4)) + uint32(0x265e5a51))
 52777  	c = c<<14 | c>>(32-14)
 52778  	c = c + d
 52779  	b = b + (d ^ a&(c^d) + *(*uint32)(unsafe.Pointer(in)) + 0xe9b6c7aa)
 52780  	b = b<<20 | b>>(32-20)
 52781  	b = b + c
 52782  	a = a + (c ^ d&(b^c) + *(*uint32)(unsafe.Pointer(in + 5*4)) + 0xd62f105d)
 52783  	a = a<<5 | a>>(32-5)
 52784  	a = a + b
 52785  	d = d + (b ^ c&(a^b) + *(*uint32)(unsafe.Pointer(in + 10*4)) + uint32(0x02441453))
 52786  	d = d<<9 | d>>(32-9)
 52787  	d = d + a
 52788  	c = c + (a ^ b&(d^a) + *(*uint32)(unsafe.Pointer(in + 15*4)) + 0xd8a1e681)
 52789  	c = c<<14 | c>>(32-14)
 52790  	c = c + d
 52791  	b = b + (d ^ a&(c^d) + *(*uint32)(unsafe.Pointer(in + 4*4)) + 0xe7d3fbc8)
 52792  	b = b<<20 | b>>(32-20)
 52793  	b = b + c
 52794  	a = a + (c ^ d&(b^c) + *(*uint32)(unsafe.Pointer(in + 9*4)) + uint32(0x21e1cde6))
 52795  	a = a<<5 | a>>(32-5)
 52796  	a = a + b
 52797  	d = d + (b ^ c&(a^b) + *(*uint32)(unsafe.Pointer(in + 14*4)) + 0xc33707d6)
 52798  	d = d<<9 | d>>(32-9)
 52799  	d = d + a
 52800  	c = c + (a ^ b&(d^a) + *(*uint32)(unsafe.Pointer(in + 3*4)) + 0xf4d50d87)
 52801  	c = c<<14 | c>>(32-14)
 52802  	c = c + d
 52803  	b = b + (d ^ a&(c^d) + *(*uint32)(unsafe.Pointer(in + 8*4)) + uint32(0x455a14ed))
 52804  	b = b<<20 | b>>(32-20)
 52805  	b = b + c
 52806  	a = a + (c ^ d&(b^c) + *(*uint32)(unsafe.Pointer(in + 13*4)) + 0xa9e3e905)
 52807  	a = a<<5 | a>>(32-5)
 52808  	a = a + b
 52809  	d = d + (b ^ c&(a^b) + *(*uint32)(unsafe.Pointer(in + 2*4)) + 0xfcefa3f8)
 52810  	d = d<<9 | d>>(32-9)
 52811  	d = d + a
 52812  	c = c + (a ^ b&(d^a) + *(*uint32)(unsafe.Pointer(in + 7*4)) + uint32(0x676f02d9))
 52813  	c = c<<14 | c>>(32-14)
 52814  	c = c + d
 52815  	b = b + (d ^ a&(c^d) + *(*uint32)(unsafe.Pointer(in + 12*4)) + 0x8d2a4c8a)
 52816  	b = b<<20 | b>>(32-20)
 52817  	b = b + c
 52818  
 52819  	a = a + (b ^ c ^ d + *(*uint32)(unsafe.Pointer(in + 5*4)) + 0xfffa3942)
 52820  	a = a<<4 | a>>(32-4)
 52821  	a = a + b
 52822  	d = d + (a ^ b ^ c + *(*uint32)(unsafe.Pointer(in + 8*4)) + 0x8771f681)
 52823  	d = d<<11 | d>>(32-11)
 52824  	d = d + a
 52825  	c = c + (d ^ a ^ b + *(*uint32)(unsafe.Pointer(in + 11*4)) + uint32(0x6d9d6122))
 52826  	c = c<<16 | c>>(32-16)
 52827  	c = c + d
 52828  	b = b + (c ^ d ^ a + *(*uint32)(unsafe.Pointer(in + 14*4)) + 0xfde5380c)
 52829  	b = b<<23 | b>>(32-23)
 52830  	b = b + c
 52831  	a = a + (b ^ c ^ d + *(*uint32)(unsafe.Pointer(in + 1*4)) + 0xa4beea44)
 52832  	a = a<<4 | a>>(32-4)
 52833  	a = a + b
 52834  	d = d + (a ^ b ^ c + *(*uint32)(unsafe.Pointer(in + 4*4)) + uint32(0x4bdecfa9))
 52835  	d = d<<11 | d>>(32-11)
 52836  	d = d + a
 52837  	c = c + (d ^ a ^ b + *(*uint32)(unsafe.Pointer(in + 7*4)) + 0xf6bb4b60)
 52838  	c = c<<16 | c>>(32-16)
 52839  	c = c + d
 52840  	b = b + (c ^ d ^ a + *(*uint32)(unsafe.Pointer(in + 10*4)) + 0xbebfbc70)
 52841  	b = b<<23 | b>>(32-23)
 52842  	b = b + c
 52843  	a = a + (b ^ c ^ d + *(*uint32)(unsafe.Pointer(in + 13*4)) + uint32(0x289b7ec6))
 52844  	a = a<<4 | a>>(32-4)
 52845  	a = a + b
 52846  	d = d + (a ^ b ^ c + *(*uint32)(unsafe.Pointer(in)) + 0xeaa127fa)
 52847  	d = d<<11 | d>>(32-11)
 52848  	d = d + a
 52849  	c = c + (d ^ a ^ b + *(*uint32)(unsafe.Pointer(in + 3*4)) + 0xd4ef3085)
 52850  	c = c<<16 | c>>(32-16)
 52851  	c = c + d
 52852  	b = b + (c ^ d ^ a + *(*uint32)(unsafe.Pointer(in + 6*4)) + uint32(0x04881d05))
 52853  	b = b<<23 | b>>(32-23)
 52854  	b = b + c
 52855  	a = a + (b ^ c ^ d + *(*uint32)(unsafe.Pointer(in + 9*4)) + 0xd9d4d039)
 52856  	a = a<<4 | a>>(32-4)
 52857  	a = a + b
 52858  	d = d + (a ^ b ^ c + *(*uint32)(unsafe.Pointer(in + 12*4)) + 0xe6db99e5)
 52859  	d = d<<11 | d>>(32-11)
 52860  	d = d + a
 52861  	c = c + (d ^ a ^ b + *(*uint32)(unsafe.Pointer(in + 15*4)) + uint32(0x1fa27cf8))
 52862  	c = c<<16 | c>>(32-16)
 52863  	c = c + d
 52864  	b = b + (c ^ d ^ a + *(*uint32)(unsafe.Pointer(in + 2*4)) + 0xc4ac5665)
 52865  	b = b<<23 | b>>(32-23)
 52866  	b = b + c
 52867  
 52868  	a = a + (c ^ (b | ^d) + *(*uint32)(unsafe.Pointer(in)) + 0xf4292244)
 52869  	a = a<<6 | a>>(32-6)
 52870  	a = a + b
 52871  	d = d + (b ^ (a | ^c) + *(*uint32)(unsafe.Pointer(in + 7*4)) + uint32(0x432aff97))
 52872  	d = d<<10 | d>>(32-10)
 52873  	d = d + a
 52874  	c = c + (a ^ (d | ^b) + *(*uint32)(unsafe.Pointer(in + 14*4)) + 0xab9423a7)
 52875  	c = c<<15 | c>>(32-15)
 52876  	c = c + d
 52877  	b = b + (d ^ (c | ^a) + *(*uint32)(unsafe.Pointer(in + 5*4)) + 0xfc93a039)
 52878  	b = b<<21 | b>>(32-21)
 52879  	b = b + c
 52880  	a = a + (c ^ (b | ^d) + *(*uint32)(unsafe.Pointer(in + 12*4)) + uint32(0x655b59c3))
 52881  	a = a<<6 | a>>(32-6)
 52882  	a = a + b
 52883  	d = d + (b ^ (a | ^c) + *(*uint32)(unsafe.Pointer(in + 3*4)) + 0x8f0ccc92)
 52884  	d = d<<10 | d>>(32-10)
 52885  	d = d + a
 52886  	c = c + (a ^ (d | ^b) + *(*uint32)(unsafe.Pointer(in + 10*4)) + 0xffeff47d)
 52887  	c = c<<15 | c>>(32-15)
 52888  	c = c + d
 52889  	b = b + (d ^ (c | ^a) + *(*uint32)(unsafe.Pointer(in + 1*4)) + 0x85845dd1)
 52890  	b = b<<21 | b>>(32-21)
 52891  	b = b + c
 52892  	a = a + (c ^ (b | ^d) + *(*uint32)(unsafe.Pointer(in + 8*4)) + uint32(0x6fa87e4f))
 52893  	a = a<<6 | a>>(32-6)
 52894  	a = a + b
 52895  	d = d + (b ^ (a | ^c) + *(*uint32)(unsafe.Pointer(in + 15*4)) + 0xfe2ce6e0)
 52896  	d = d<<10 | d>>(32-10)
 52897  	d = d + a
 52898  	c = c + (a ^ (d | ^b) + *(*uint32)(unsafe.Pointer(in + 6*4)) + 0xa3014314)
 52899  	c = c<<15 | c>>(32-15)
 52900  	c = c + d
 52901  	b = b + (d ^ (c | ^a) + *(*uint32)(unsafe.Pointer(in + 13*4)) + uint32(0x4e0811a1))
 52902  	b = b<<21 | b>>(32-21)
 52903  	b = b + c
 52904  	a = a + (c ^ (b | ^d) + *(*uint32)(unsafe.Pointer(in + 4*4)) + 0xf7537e82)
 52905  	a = a<<6 | a>>(32-6)
 52906  	a = a + b
 52907  	d = d + (b ^ (a | ^c) + *(*uint32)(unsafe.Pointer(in + 11*4)) + 0xbd3af235)
 52908  	d = d<<10 | d>>(32-10)
 52909  	d = d + a
 52910  	c = c + (a ^ (d | ^b) + *(*uint32)(unsafe.Pointer(in + 2*4)) + uint32(0x2ad7d2bb))
 52911  	c = c<<15 | c>>(32-15)
 52912  	c = c + d
 52913  	b = b + (d ^ (c | ^a) + *(*uint32)(unsafe.Pointer(in + 9*4)) + 0xeb86d391)
 52914  	b = b<<21 | b>>(32-21)
 52915  	b = b + c
 52916  
 52917  	*(*uint32)(unsafe.Pointer(buf)) += a
 52918  	*(*uint32)(unsafe.Pointer(buf + 1*4)) += b
 52919  	*(*uint32)(unsafe.Pointer(buf + 2*4)) += c
 52920  	*(*uint32)(unsafe.Pointer(buf + 3*4)) += d
 52921  }
 52922  
 52923  func MD5Init(tls *libc.TLS, ctx uintptr) {
 52924  	(*MD5Context)(unsafe.Pointer(ctx)).FisInit = 1
 52925  	*(*uint32)(unsafe.Pointer(ctx + 4)) = uint32(0x67452301)
 52926  	*(*uint32)(unsafe.Pointer(ctx + 4 + 1*4)) = 0xefcdab89
 52927  	*(*uint32)(unsafe.Pointer(ctx + 4 + 2*4)) = 0x98badcfe
 52928  	*(*uint32)(unsafe.Pointer(ctx + 4 + 3*4)) = uint32(0x10325476)
 52929  	*(*uint32)(unsafe.Pointer(ctx + 20)) = uint32(0)
 52930  	*(*uint32)(unsafe.Pointer(ctx + 20 + 1*4)) = uint32(0)
 52931  }
 52932  
 52933  func MD5Update(tls *libc.TLS, ctx uintptr, buf uintptr, len uint32) {
 52934  	var t uint32
 52935  
 52936  	t = *(*uint32)(unsafe.Pointer(ctx + 20))
 52937  	if libc.AssignPtrUint32(ctx+20, t+len<<3) < t {
 52938  		*(*uint32)(unsafe.Pointer(ctx + 20 + 1*4))++
 52939  	}
 52940  	*(*uint32)(unsafe.Pointer(ctx + 20 + 1*4)) += len >> 29
 52941  
 52942  	t = t >> 3 & uint32(0x3f)
 52943  
 52944  	if t != 0 {
 52945  		var p uintptr = ctx + 28 + uintptr(t)
 52946  
 52947  		t = uint32(64) - t
 52948  		if len < t {
 52949  			libc.X__builtin___memcpy_chk(tls, p, buf, uint64(len), libc.X__builtin_object_size(tls, p, 0))
 52950  			return
 52951  		}
 52952  		libc.X__builtin___memcpy_chk(tls, p, buf, uint64(t), libc.X__builtin_object_size(tls, p, 0))
 52953  		byteReverse(tls, ctx+28, uint32(16))
 52954  		MD5Transform(tls, ctx+4, ctx+28)
 52955  		buf += uintptr(t)
 52956  		len = len - t
 52957  	}
 52958  
 52959  	for len >= uint32(64) {
 52960  		libc.X__builtin___memcpy_chk(tls, ctx+28, buf, uint64(64), libc.X__builtin_object_size(tls, ctx+28, 0))
 52961  		byteReverse(tls, ctx+28, uint32(16))
 52962  		MD5Transform(tls, ctx+4, ctx+28)
 52963  		buf += uintptr(64)
 52964  		len = len - uint32(64)
 52965  	}
 52966  
 52967  	libc.X__builtin___memcpy_chk(tls, ctx+28, buf, uint64(len), libc.X__builtin_object_size(tls, ctx+28, 0))
 52968  }
 52969  
 52970  func MD5Final(tls *libc.TLS, digest uintptr, ctx uintptr) {
 52971  	var count uint32
 52972  	var p uintptr
 52973  
 52974  	count = *(*uint32)(unsafe.Pointer(ctx + 20)) >> 3 & uint32(0x3F)
 52975  
 52976  	p = ctx + 28 + uintptr(count)
 52977  	*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&p, 1))) = uint8(0x80)
 52978  
 52979  	count = uint32(64-1) - count
 52980  
 52981  	if count < uint32(8) {
 52982  		libc.X__builtin___memset_chk(tls, p, 0, uint64(count), libc.X__builtin_object_size(tls, p, 0))
 52983  		byteReverse(tls, ctx+28, uint32(16))
 52984  		MD5Transform(tls, ctx+4, ctx+28)
 52985  
 52986  		libc.X__builtin___memset_chk(tls, ctx+28, 0, uint64(56), libc.X__builtin_object_size(tls, ctx+28, 0))
 52987  	} else {
 52988  		libc.X__builtin___memset_chk(tls, p, 0, uint64(count-uint32(8)), libc.X__builtin_object_size(tls, p, 0))
 52989  	}
 52990  	byteReverse(tls, ctx+28, uint32(14))
 52991  
 52992  	libc.X__builtin___memcpy_chk(tls, ctx+28+uintptr(14*4), ctx+20, uint64(8), libc.X__builtin_object_size(tls, ctx+28+uintptr(14*4), 0))
 52993  
 52994  	MD5Transform(tls, ctx+4, ctx+28)
 52995  	byteReverse(tls, ctx+4, uint32(4))
 52996  	libc.X__builtin___memcpy_chk(tls, digest, ctx+4, uint64(16), libc.X__builtin_object_size(tls, digest, 0))
 52997  }
 52998  
 52999  func MD5DigestToBase16(tls *libc.TLS, digest uintptr, zBuf uintptr) {
 53000  	var i int32
 53001  	var j int32
 53002  
 53003  	for j = libc.AssignInt32(&i, 0); i < 16; i++ {
 53004  		var a int32 = int32(*(*uint8)(unsafe.Pointer(digest + uintptr(i))))
 53005  		*(*int8)(unsafe.Pointer(zBuf + uintptr(libc.PostIncInt32(&j, 1)))) = zEncode[a>>4&0xf]
 53006  		*(*int8)(unsafe.Pointer(zBuf + uintptr(libc.PostIncInt32(&j, 1)))) = zEncode[a&0xf]
 53007  	}
 53008  	*(*int8)(unsafe.Pointer(zBuf + uintptr(j))) = int8(0)
 53009  }
 53010  
 53011  var zEncode = *(*[17]int8)(unsafe.Pointer(ts + 31377))
 53012  
 53013  func MD5DigestToBase10x8(tls *libc.TLS, digest uintptr, zDigest uintptr) {
 53014  	bp := tls.Alloc(8)
 53015  	defer tls.Free(8)
 53016  
 53017  	var i int32
 53018  	var j int32
 53019  	var x uint32
 53020  	for i = libc.AssignInt32(&j, 0); i < 16; i = i + 2 {
 53021  		x = uint32(int32(*(*uint8)(unsafe.Pointer(digest + uintptr(i))))*256 + int32(*(*uint8)(unsafe.Pointer(digest + uintptr(i+1)))))
 53022  		if i > 0 {
 53023  			*(*int8)(unsafe.Pointer(zDigest + uintptr(libc.PostIncInt32(&j, 1)))) = int8('-')
 53024  		}
 53025  		sqlite3.Xsqlite3_snprintf(tls, 50-j, zDigest+uintptr(j), ts+34684, libc.VaList(bp, x))
 53026  		j = j + 5
 53027  	}
 53028  	*(*int8)(unsafe.Pointer(zDigest + uintptr(j))) = int8(0)
 53029  }
 53030  
 53031  func md5_cmd(tls *libc.TLS, cd uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 53032  	bp := tls.Alloc(206)
 53033  	defer tls.Free(206)
 53034  
 53035  	var converter uintptr
 53036  
 53037  	if argc != 2 {
 53038  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 53039  			ts+15307, uintptr(0)))
 53040  		return TCL_ERROR
 53041  	}
 53042  	MD5Init(tls, bp+48)
 53043  	MD5Update(tls, bp+48, *(*uintptr)(unsafe.Pointer(argv + 1*8)), uint32(libc.Xstrlen(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))))
 53044  	MD5Final(tls, bp+140, bp+48)
 53045  	converter = cd
 53046  	(*struct {
 53047  		f func(*libc.TLS, uintptr, uintptr)
 53048  	})(unsafe.Pointer(&struct{ uintptr }{converter})).f(tls, bp+140, bp+156)
 53049  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, bp+156, uintptr(0)))
 53050  	return TCL_OK
 53051  }
 53052  
 53053  func md5file_cmd(tls *libc.TLS, cd uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 53054  	bp := tls.Alloc(10428)
 53055  	defer tls.Free(10428)
 53056  
 53057  	var in uintptr
 53058  	var ofst int32
 53059  	var amt int32
 53060  
 53061  	var converter uintptr
 53062  
 53063  	if argc != 2 && argc != 4 {
 53064  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 53065  			ts+34689, uintptr(0)))
 53066  		return TCL_ERROR
 53067  	}
 53068  	if argc == 4 {
 53069  		ofst = libc.Xatoi(tls, *(*uintptr)(unsafe.Pointer(argv + 2*8)))
 53070  		amt = libc.Xatoi(tls, *(*uintptr)(unsafe.Pointer(argv + 3*8)))
 53071  	} else {
 53072  		ofst = 0
 53073  		amt = 2147483647
 53074  	}
 53075  	in = libc.Xfopen(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)), ts+4402)
 53076  	if in == uintptr(0) {
 53077  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+34713, *(*uintptr)(unsafe.Pointer(argv + 1*8)),
 53078  			ts+34735, uintptr(0)))
 53079  		return TCL_ERROR
 53080  	}
 53081  	libc.Xfseek(tls, in, int64(ofst), SEEK_SET)
 53082  	MD5Init(tls, bp+80)
 53083  	for amt > 0 {
 53084  		var n int32
 53085  		n = int32(libc.Xfread(tls, bp+172, uint64(1), func() uint64 {
 53086  			if uint64(unsafe.Sizeof([10240]int8{})) <= uint64(amt) {
 53087  				return uint64(unsafe.Sizeof([10240]int8{}))
 53088  			}
 53089  			return uint64(amt)
 53090  		}(), in))
 53091  		if n <= 0 {
 53092  			break
 53093  		}
 53094  		MD5Update(tls, bp+80, bp+172, uint32(n))
 53095  		amt = amt - n
 53096  	}
 53097  	libc.Xfclose(tls, in)
 53098  	MD5Final(tls, bp+10412, bp+80)
 53099  	converter = cd
 53100  	(*struct {
 53101  		f func(*libc.TLS, uintptr, uintptr)
 53102  	})(unsafe.Pointer(&struct{ uintptr }{converter})).f(tls, bp+10412, bp+172)
 53103  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+64, bp+172, uintptr(0)))
 53104  	return TCL_OK
 53105  }
 53106  
 53107  func Md5_Init(tls *libc.TLS, interp uintptr) int32 {
 53108  	tcl.XTcl_CreateCommand(tls, interp, ts+34749, *(*uintptr)(unsafe.Pointer(&struct {
 53109  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 53110  	}{md5_cmd})),
 53111  		*(*uintptr)(unsafe.Pointer(&struct {
 53112  			f func(*libc.TLS, uintptr, uintptr)
 53113  		}{MD5DigestToBase16})), uintptr(0))
 53114  	tcl.XTcl_CreateCommand(tls, interp, ts+34753, *(*uintptr)(unsafe.Pointer(&struct {
 53115  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 53116  	}{md5_cmd})),
 53117  		*(*uintptr)(unsafe.Pointer(&struct {
 53118  			f func(*libc.TLS, uintptr, uintptr)
 53119  		}{MD5DigestToBase10x8})), uintptr(0))
 53120  	tcl.XTcl_CreateCommand(tls, interp, ts+34762, *(*uintptr)(unsafe.Pointer(&struct {
 53121  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 53122  	}{md5file_cmd})),
 53123  		*(*uintptr)(unsafe.Pointer(&struct {
 53124  			f func(*libc.TLS, uintptr, uintptr)
 53125  		}{MD5DigestToBase16})), uintptr(0))
 53126  	tcl.XTcl_CreateCommand(tls, interp, ts+34770, *(*uintptr)(unsafe.Pointer(&struct {
 53127  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 53128  	}{md5file_cmd})),
 53129  		*(*uintptr)(unsafe.Pointer(&struct {
 53130  			f func(*libc.TLS, uintptr, uintptr)
 53131  		}{MD5DigestToBase10x8})), uintptr(0))
 53132  	return TCL_OK
 53133  }
 53134  
 53135  func md5step(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 53136  	var p uintptr
 53137  	var i int32
 53138  	if argc < 1 {
 53139  		return
 53140  	}
 53141  	p = sqlite3.Xsqlite3_aggregate_context(tls, context, int32(unsafe.Sizeof(MD5Context{})))
 53142  	if p == uintptr(0) {
 53143  		return
 53144  	}
 53145  	if !((*MD5Context)(unsafe.Pointer(p)).FisInit != 0) {
 53146  		MD5Init(tls, p)
 53147  	}
 53148  	for i = 0; i < argc; i++ {
 53149  		var zData uintptr = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8)))
 53150  		if zData != 0 {
 53151  			MD5Update(tls, p, zData, uint32(int32(libc.Xstrlen(tls, zData))))
 53152  		}
 53153  	}
 53154  }
 53155  
 53156  func md5finalize(tls *libc.TLS, context uintptr) {
 53157  	bp := tls.Alloc(49)
 53158  	defer tls.Free(49)
 53159  
 53160  	var p uintptr
 53161  
 53162  	p = sqlite3.Xsqlite3_aggregate_context(tls, context, int32(unsafe.Sizeof(MD5Context{})))
 53163  	MD5Final(tls, bp, p)
 53164  	MD5DigestToBase16(tls, bp, bp+16)
 53165  	sqlite3.Xsqlite3_result_text(tls, context, bp+16, -1, libc.UintptrFromInt32(-1))
 53166  }
 53167  
 53168  func Md5_Register(tls *libc.TLS, db uintptr, pzErrMsg uintptr, pThunk uintptr) int32 {
 53169  	var rc int32 = sqlite3.Xsqlite3_create_function(tls, db, ts+34783, -1, SQLITE_UTF8, uintptr(0), uintptr(0),
 53170  		*(*uintptr)(unsafe.Pointer(&struct {
 53171  			f func(*libc.TLS, uintptr, int32, uintptr)
 53172  		}{md5step})), *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{md5finalize})))
 53173  	sqlite3.Xsqlite3_overload_function(tls, db, ts+34783, -1)
 53174  	return rc
 53175  }
 53176  
 53177  type multiplexGroup1 = struct {
 53178  	FaReal       uintptr
 53179  	FnReal       int32
 53180  	F__ccgo_pad1 [4]byte
 53181  	FzName       uintptr
 53182  	FnName       int32
 53183  	Fflags       int32
 53184  	FszChunk     uint32
 53185  	FbEnabled    uint8
 53186  	FbTruncate   uint8
 53187  	F__ccgo_pad2 [2]byte
 53188  }
 53189  
 53190  type multiplexGroup = multiplexGroup1
 53191  type multiplexConn1 = struct {
 53192  	Fbase   sqlite3_file
 53193  	FpGroup uintptr
 53194  }
 53195  
 53196  type multiplexConn = multiplexConn1
 53197  
 53198  type multiplexReal = struct {
 53199  	Fp uintptr
 53200  	Fz uintptr
 53201  }
 53202  
 53203  var gMultiplex struct {
 53204  	FpOrigVfs      uintptr
 53205  	FsThisVfs      sqlite3_vfs
 53206  	FsIoMethodsV1  sqlite3_io_methods
 53207  	FsIoMethodsV2  sqlite3_io_methods
 53208  	FisInitialized int32
 53209  	F__ccgo_pad1   [4]byte
 53210  }
 53211  
 53212  func multiplexStrlen30(tls *libc.TLS, z uintptr) int32 {
 53213  	var z2 uintptr = z
 53214  	if z == uintptr(0) {
 53215  		return 0
 53216  	}
 53217  	for *(*int8)(unsafe.Pointer(z2)) != 0 {
 53218  		z2++
 53219  	}
 53220  	return 0x3fffffff & int32((int64(z2)-int64(z))/1)
 53221  }
 53222  
 53223  func multiplexFilename(tls *libc.TLS, zBase uintptr, nBase int32, flags int32, iChunk int32, zOut uintptr) {
 53224  	bp := tls.Alloc(8)
 53225  	defer tls.Free(8)
 53226  
 53227  	var n int32 = nBase
 53228  	libc.X__builtin___memcpy_chk(tls, zOut, zBase, uint64(n+1), libc.X__builtin_object_size(tls, zOut, 0))
 53229  	if iChunk != 0 && iChunk <= MX_CHUNK_NUMBER {
 53230  		sqlite3.Xsqlite3_snprintf(tls, 4, zOut+uintptr(n), ts+34790, libc.VaList(bp, iChunk))
 53231  		n = n + 3
 53232  	}
 53233  
 53234  	*(*int8)(unsafe.Pointer(zOut + uintptr(n+1))) = int8(0)
 53235  }
 53236  
 53237  func multiplexSubFilename(tls *libc.TLS, pGroup uintptr, iChunk int32) int32 {
 53238  	if iChunk >= (*multiplexGroup)(unsafe.Pointer(pGroup)).FnReal {
 53239  		var p uintptr
 53240  		p = sqlite3.Xsqlite3_realloc64(tls, (*multiplexGroup)(unsafe.Pointer(pGroup)).FaReal, uint64(iChunk+1)*uint64(unsafe.Sizeof(multiplexReal{})))
 53241  		if p == uintptr(0) {
 53242  			return SQLITE_NOMEM
 53243  		}
 53244  		libc.X__builtin___memset_chk(tls, p+uintptr((*multiplexGroup)(unsafe.Pointer(pGroup)).FnReal)*16, 0, uint64(unsafe.Sizeof(multiplexReal{}))*uint64(iChunk+1-(*multiplexGroup)(unsafe.Pointer(pGroup)).FnReal), libc.X__builtin_object_size(tls, p+uintptr((*multiplexGroup)(unsafe.Pointer(pGroup)).FnReal)*16, 0))
 53245  		(*multiplexGroup)(unsafe.Pointer(pGroup)).FaReal = p
 53246  		(*multiplexGroup)(unsafe.Pointer(pGroup)).FnReal = iChunk + 1
 53247  	}
 53248  	if (*multiplexGroup)(unsafe.Pointer(pGroup)).FzName != 0 && (*multiplexReal)(unsafe.Pointer((*multiplexGroup)(unsafe.Pointer(pGroup)).FaReal+uintptr(iChunk)*16)).Fz == uintptr(0) {
 53249  		var z uintptr
 53250  		var n int32 = (*multiplexGroup)(unsafe.Pointer(pGroup)).FnName
 53251  		z = sqlite3.Xsqlite3_malloc64(tls, uint64(n+5))
 53252  		if z == uintptr(0) {
 53253  			return SQLITE_NOMEM
 53254  		}
 53255  		multiplexFilename(tls, (*multiplexGroup)(unsafe.Pointer(pGroup)).FzName, (*multiplexGroup)(unsafe.Pointer(pGroup)).FnName, (*multiplexGroup)(unsafe.Pointer(pGroup)).Fflags, iChunk, z)
 53256  		(*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))
 53257  		sqlite3.Xsqlite3_free(tls, z)
 53258  		if (*multiplexReal)(unsafe.Pointer((*multiplexGroup)(unsafe.Pointer(pGroup)).FaReal+uintptr(iChunk)*16)).Fz == uintptr(0) {
 53259  			return SQLITE_NOMEM
 53260  		}
 53261  	}
 53262  	return SQLITE_OK
 53263  }
 53264  
 53265  func multiplexSubOpen(tls *libc.TLS, pGroup uintptr, iChunk int32, rc uintptr, pOutFlags uintptr, createFlag int32) uintptr {
 53266  	bp := tls.Alloc(20)
 53267  	defer tls.Free(20)
 53268  
 53269  	var pSubOpen uintptr = uintptr(0)
 53270  	var pOrigVfs uintptr = gMultiplex.FpOrigVfs
 53271  
 53272  	*(*int32)(unsafe.Pointer(rc)) = multiplexSubFilename(tls, pGroup, iChunk)
 53273  	if *(*int32)(unsafe.Pointer(rc)) == SQLITE_OK && libc.AssignUintptr(&pSubOpen, (*multiplexReal)(unsafe.Pointer((*multiplexGroup)(unsafe.Pointer(pGroup)).FaReal+uintptr(iChunk)*16)).Fp) == uintptr(0) {
 53274  		var flags int32
 53275  
 53276  		flags = (*multiplexGroup)(unsafe.Pointer(pGroup)).Fflags
 53277  		if createFlag != 0 {
 53278  			flags = flags | SQLITE_OPEN_CREATE
 53279  		} else if iChunk == 0 {
 53280  		} else if (*multiplexReal)(unsafe.Pointer((*multiplexGroup)(unsafe.Pointer(pGroup)).FaReal+uintptr(iChunk)*16)).Fz == uintptr(0) {
 53281  			return uintptr(0)
 53282  		} else {
 53283  			*(*int32)(unsafe.Pointer(rc)) = (*struct {
 53284  				f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 53285  			})(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,
 53286  				SQLITE_ACCESS_EXISTS, bp+16)
 53287  			if *(*int32)(unsafe.Pointer(rc)) != 0 || !(*(*int32)(unsafe.Pointer(bp + 16)) != 0) {
 53288  				if *(*int32)(unsafe.Pointer(rc)) != 0 {
 53289  					sqlite3.Xsqlite3_log(tls, *(*int32)(unsafe.Pointer(rc)), ts+34795,
 53290  						libc.VaList(bp, (*multiplexReal)(unsafe.Pointer((*multiplexGroup)(unsafe.Pointer(pGroup)).FaReal+uintptr(iChunk)*16)).Fz))
 53291  				}
 53292  				return uintptr(0)
 53293  			}
 53294  			flags = flags & libc.CplInt32(SQLITE_OPEN_CREATE)
 53295  		}
 53296  		pSubOpen = sqlite3.Xsqlite3_malloc64(tls, uint64((*sqlite3_vfs)(unsafe.Pointer(pOrigVfs)).FszOsFile))
 53297  		if pSubOpen == uintptr(0) {
 53298  			*(*int32)(unsafe.Pointer(rc)) = SQLITE_IOERR | int32(12)<<8
 53299  			return uintptr(0)
 53300  		}
 53301  		(*multiplexReal)(unsafe.Pointer((*multiplexGroup)(unsafe.Pointer(pGroup)).FaReal + uintptr(iChunk)*16)).Fp = pSubOpen
 53302  		*(*int32)(unsafe.Pointer(rc)) = (*struct {
 53303  			f func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr) int32
 53304  		})(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,
 53305  			flags, pOutFlags)
 53306  		if *(*int32)(unsafe.Pointer(rc)) != SQLITE_OK {
 53307  			sqlite3.Xsqlite3_log(tls, *(*int32)(unsafe.Pointer(rc)), ts+34829,
 53308  				libc.VaList(bp+8, (*multiplexReal)(unsafe.Pointer((*multiplexGroup)(unsafe.Pointer(pGroup)).FaReal+uintptr(iChunk)*16)).Fz))
 53309  			sqlite3.Xsqlite3_free(tls, pSubOpen)
 53310  			(*multiplexReal)(unsafe.Pointer((*multiplexGroup)(unsafe.Pointer(pGroup)).FaReal + uintptr(iChunk)*16)).Fp = uintptr(0)
 53311  			return uintptr(0)
 53312  		}
 53313  	}
 53314  	return pSubOpen
 53315  }
 53316  
 53317  func multiplexSubSize(tls *libc.TLS, pGroup uintptr, iChunk int32, rc uintptr) sqlite3_int64 {
 53318  	bp := tls.Alloc(8)
 53319  	defer tls.Free(8)
 53320  
 53321  	var pSub uintptr
 53322  	*(*sqlite3_int64)(unsafe.Pointer(bp)) = int64(0)
 53323  
 53324  	if *(*int32)(unsafe.Pointer(rc)) != 0 {
 53325  		return int64(0)
 53326  	}
 53327  	pSub = multiplexSubOpen(tls, pGroup, iChunk, rc, uintptr(0), 0)
 53328  	if pSub == uintptr(0) {
 53329  		return int64(0)
 53330  	}
 53331  	*(*int32)(unsafe.Pointer(rc)) = (*struct {
 53332  		f func(*libc.TLS, uintptr, uintptr) int32
 53333  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSub)).FpMethods)).FxFileSize})).f(tls, pSub, bp)
 53334  	return *(*sqlite3_int64)(unsafe.Pointer(bp))
 53335  }
 53336  
 53337  func multiplexControlFunc(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 53338  	bp := tls.Alloc(4)
 53339  	defer tls.Free(4)
 53340  
 53341  	var rc int32 = SQLITE_OK
 53342  	var db uintptr = sqlite3.Xsqlite3_context_db_handle(tls, context)
 53343  	var op int32 = 0
 53344  
 53345  	if !(db != 0) || argc != 2 {
 53346  		rc = SQLITE_ERROR
 53347  	} else {
 53348  		op = sqlite3.Xsqlite3_value_int(tls, *(*uintptr)(unsafe.Pointer(argv)))
 53349  		*(*int32)(unsafe.Pointer(bp)) = sqlite3.Xsqlite3_value_int(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 53350  
 53351  		switch op {
 53352  		case 1:
 53353  			op = MULTIPLEX_CTRL_ENABLE
 53354  			break
 53355  			fallthrough
 53356  		case 2:
 53357  			op = MULTIPLEX_CTRL_SET_CHUNK_SIZE
 53358  			break
 53359  			fallthrough
 53360  		case 3:
 53361  			op = MULTIPLEX_CTRL_SET_MAX_CHUNKS
 53362  			break
 53363  			fallthrough
 53364  		default:
 53365  			rc = SQLITE_NOTFOUND
 53366  			break
 53367  		}
 53368  	}
 53369  	if rc == SQLITE_OK {
 53370  		rc = sqlite3.Xsqlite3_file_control(tls, db, uintptr(0), op, bp)
 53371  	}
 53372  	sqlite3.Xsqlite3_result_error_code(tls, context, rc)
 53373  }
 53374  
 53375  func multiplexFuncInit(tls *libc.TLS, db uintptr, pzErrMsg uintptr, pApi uintptr) int32 {
 53376  	var rc int32
 53377  	rc = sqlite3.Xsqlite3_create_function(tls, db, ts+34861, 2, SQLITE_ANY,
 53378  		uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 53379  			f func(*libc.TLS, uintptr, int32, uintptr)
 53380  		}{multiplexControlFunc})), uintptr(0), uintptr(0))
 53381  	return rc
 53382  }
 53383  
 53384  func multiplexSubClose(tls *libc.TLS, pGroup uintptr, iChunk int32, pOrigVfs uintptr) {
 53385  	var pSubOpen uintptr = (*multiplexReal)(unsafe.Pointer((*multiplexGroup)(unsafe.Pointer(pGroup)).FaReal + uintptr(iChunk)*16)).Fp
 53386  	if pSubOpen != 0 {
 53387  		(*struct {
 53388  			f func(*libc.TLS, uintptr) int32
 53389  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxClose})).f(tls, pSubOpen)
 53390  		if pOrigVfs != 0 && (*multiplexReal)(unsafe.Pointer((*multiplexGroup)(unsafe.Pointer(pGroup)).FaReal+uintptr(iChunk)*16)).Fz != 0 {
 53391  			(*struct {
 53392  				f func(*libc.TLS, uintptr, uintptr, int32) int32
 53393  			})(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)
 53394  		}
 53395  		sqlite3.Xsqlite3_free(tls, (*multiplexReal)(unsafe.Pointer((*multiplexGroup)(unsafe.Pointer(pGroup)).FaReal+uintptr(iChunk)*16)).Fp)
 53396  	}
 53397  	sqlite3.Xsqlite3_free_filename(tls, (*multiplexReal)(unsafe.Pointer((*multiplexGroup)(unsafe.Pointer(pGroup)).FaReal+uintptr(iChunk)*16)).Fz)
 53398  	libc.X__builtin___memset_chk(tls, (*multiplexGroup)(unsafe.Pointer(pGroup)).FaReal+uintptr(iChunk)*16, 0, uint64(unsafe.Sizeof(multiplexReal{})), libc.X__builtin_object_size(tls, (*multiplexGroup)(unsafe.Pointer(pGroup)).FaReal+uintptr(iChunk)*16, 0))
 53399  }
 53400  
 53401  func multiplexFreeComponents(tls *libc.TLS, pGroup uintptr) {
 53402  	var i int32
 53403  	for i = 0; i < (*multiplexGroup)(unsafe.Pointer(pGroup)).FnReal; i++ {
 53404  		multiplexSubClose(tls, pGroup, i, uintptr(0))
 53405  	}
 53406  	sqlite3.Xsqlite3_free(tls, (*multiplexGroup)(unsafe.Pointer(pGroup)).FaReal)
 53407  	(*multiplexGroup)(unsafe.Pointer(pGroup)).FaReal = uintptr(0)
 53408  	(*multiplexGroup)(unsafe.Pointer(pGroup)).FnReal = 0
 53409  }
 53410  
 53411  func multiplexOpen(tls *libc.TLS, pVfs uintptr, zName uintptr, pConn uintptr, flags int32, pOutFlags uintptr) int32 {
 53412  	bp := tls.Alloc(20)
 53413  	defer tls.Free(20)
 53414  
 53415  	*(*int32)(unsafe.Pointer(bp)) = SQLITE_OK
 53416  	var pMultiplexOpen uintptr
 53417  	var pGroup uintptr = uintptr(0)
 53418  	var pSubOpen uintptr = uintptr(0)
 53419  	var pOrigVfs uintptr = gMultiplex.FpOrigVfs
 53420  	var nName int32 = 0
 53421  	var sz int32 = 0
 53422  	var zToFree uintptr = uintptr(0)
 53423  
 53424  	_ = pVfs
 53425  	libc.X__builtin___memset_chk(tls, pConn, 0, uint64((*sqlite3_vfs)(unsafe.Pointer(pVfs)).FszOsFile), libc.X__builtin_object_size(tls, pConn, 0))
 53426  
 53427  	pMultiplexOpen = pConn
 53428  
 53429  	if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK {
 53430  		if zName != 0 {
 53431  			nName = multiplexStrlen30(tls, zName)
 53432  		} else {
 53433  			nName = 0
 53434  		}
 53435  		sz = int32(uint64(unsafe.Sizeof(multiplexGroup{})) +
 53436  			uint64(nName) + uint64(1))
 53437  		pGroup = sqlite3.Xsqlite3_malloc64(tls, uint64(sz))
 53438  		if pGroup == uintptr(0) {
 53439  			*(*int32)(unsafe.Pointer(bp)) = SQLITE_NOMEM
 53440  		}
 53441  	}
 53442  
 53443  	if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK {
 53444  		var zUri uintptr
 53445  		if flags&SQLITE_OPEN_URI != 0 {
 53446  			zUri = zName
 53447  		} else {
 53448  			zUri = uintptr(0)
 53449  		}
 53450  
 53451  		libc.X__builtin___memset_chk(tls, pGroup, 0, uint64(sz), libc.X__builtin_object_size(tls, pGroup, 0))
 53452  		(*multiplexConn)(unsafe.Pointer(pMultiplexOpen)).FpGroup = pGroup
 53453  		(*multiplexGroup)(unsafe.Pointer(pGroup)).FbEnabled = libc.Uint8(libc.Uint8FromInt32(-1))
 53454  		(*multiplexGroup)(unsafe.Pointer(pGroup)).FbTruncate = uint8(sqlite3.Xsqlite3_uri_boolean(tls, zUri, ts+18390,
 53455  			libc.Bool32(flags&SQLITE_OPEN_MAIN_DB == 0)))
 53456  		(*multiplexGroup)(unsafe.Pointer(pGroup)).FszChunk = uint32(int32(sqlite3.Xsqlite3_uri_int64(tls, zUri, ts+34879,
 53457  			int64(SQLITE_MULTIPLEX_CHUNK_SIZE))))
 53458  		(*multiplexGroup)(unsafe.Pointer(pGroup)).FszChunk = ((*multiplexGroup)(unsafe.Pointer(pGroup)).FszChunk + uint32(0xffff)) & libc.Uint32FromInt32(libc.CplInt32(0xffff))
 53459  		if zName != 0 {
 53460  			var p uintptr = pGroup + 1*40
 53461  			(*multiplexGroup)(unsafe.Pointer(pGroup)).FzName = p
 53462  			libc.X__builtin___memcpy_chk(tls, (*multiplexGroup)(unsafe.Pointer(pGroup)).FzName, zName, uint64(nName+1), libc.X__builtin_object_size(tls, (*multiplexGroup)(unsafe.Pointer(pGroup)).FzName, 0))
 53463  			(*multiplexGroup)(unsafe.Pointer(pGroup)).FnName = nName
 53464  		}
 53465  		if (*multiplexGroup)(unsafe.Pointer(pGroup)).FbEnabled != 0 {
 53466  			for uint32(sqlite3.Xsqlite3PendingByte)%(*multiplexGroup)(unsafe.Pointer(pGroup)).FszChunk >= (*multiplexGroup)(unsafe.Pointer(pGroup)).FszChunk-uint32(65536) {
 53467  				*(*uint32)(unsafe.Pointer(pGroup + 32)) += uint32(65536)
 53468  			}
 53469  		}
 53470  		(*multiplexGroup)(unsafe.Pointer(pGroup)).Fflags = flags & libc.CplInt32(SQLITE_OPEN_URI)
 53471  		*(*int32)(unsafe.Pointer(bp)) = multiplexSubFilename(tls, pGroup, 1)
 53472  		if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK {
 53473  			pSubOpen = multiplexSubOpen(tls, pGroup, 0, bp, pOutFlags, 0)
 53474  			if pSubOpen == uintptr(0) && *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK {
 53475  				*(*int32)(unsafe.Pointer(bp)) = SQLITE_CANTOPEN
 53476  			}
 53477  		}
 53478  		if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK {
 53479  			*(*int32)(unsafe.Pointer(bp)) = (*struct {
 53480  				f func(*libc.TLS, uintptr, uintptr) int32
 53481  			})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxFileSize})).f(tls, pSubOpen, bp+8)
 53482  			if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK && zName != 0 {
 53483  				if flags&SQLITE_OPEN_SUPER_JOURNAL != 0 {
 53484  					(*multiplexGroup)(unsafe.Pointer(pGroup)).FbEnabled = uint8(0)
 53485  				} else if *(*sqlite3_int64)(unsafe.Pointer(bp + 8)) == int64(0) {
 53486  					if flags&SQLITE_OPEN_MAIN_JOURNAL != 0 {
 53487  						var iChunk int32 = 1
 53488  						for __ccgo := true; __ccgo; __ccgo = *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK && *(*int32)(unsafe.Pointer(bp + 16)) != 0 {
 53489  							*(*int32)(unsafe.Pointer(bp)) = (*struct {
 53490  								f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 53491  							})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pOrigVfs)).FxAccess})).f(tls, pOrigVfs,
 53492  								(*multiplexReal)(unsafe.Pointer((*multiplexGroup)(unsafe.Pointer(pGroup)).FaReal+uintptr(iChunk)*16)).Fz, SQLITE_ACCESS_EXISTS, bp+16)
 53493  							if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK && *(*int32)(unsafe.Pointer(bp + 16)) != 0 {
 53494  								*(*int32)(unsafe.Pointer(bp)) = (*struct {
 53495  									f func(*libc.TLS, uintptr, uintptr, int32) int32
 53496  								})(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)
 53497  								if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK {
 53498  									*(*int32)(unsafe.Pointer(bp)) = multiplexSubFilename(tls, pGroup, libc.PreIncInt32(&iChunk, 1))
 53499  								}
 53500  							}
 53501  						}
 53502  					}
 53503  				} else {
 53504  					*(*int32)(unsafe.Pointer(bp)) = (*struct {
 53505  						f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 53506  					})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pOrigVfs)).FxAccess})).f(tls, pOrigVfs, (*multiplexReal)(unsafe.Pointer((*multiplexGroup)(unsafe.Pointer(pGroup)).FaReal+1*16)).Fz,
 53507  						SQLITE_ACCESS_EXISTS, bp+16)
 53508  					*(*int32)(unsafe.Pointer(bp + 16)) = libc.Bool32(multiplexSubSize(tls, pGroup, 1, bp) > int64(0))
 53509  					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) &&
 53510  						*(*sqlite3_int64)(unsafe.Pointer(bp + 8)) != sqlite3_int64((*multiplexGroup)(unsafe.Pointer(pGroup)).FszChunk) {
 53511  						(*multiplexGroup)(unsafe.Pointer(pGroup)).FszChunk = uint32(int32(*(*sqlite3_int64)(unsafe.Pointer(bp + 8))))
 53512  					} 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) {
 53513  						(*multiplexGroup)(unsafe.Pointer(pGroup)).FbEnabled = uint8(0)
 53514  					}
 53515  				}
 53516  			}
 53517  		}
 53518  
 53519  		if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK {
 53520  			if (*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FiVersion == 1 {
 53521  				(*sqlite3_file)(unsafe.Pointer(pConn)).FpMethods = uintptr(unsafe.Pointer(&gMultiplex)) + 176
 53522  			} else {
 53523  				(*sqlite3_file)(unsafe.Pointer(pConn)).FpMethods = uintptr(unsafe.Pointer(&gMultiplex)) + 328
 53524  			}
 53525  		} else {
 53526  			multiplexFreeComponents(tls, pGroup)
 53527  			sqlite3.Xsqlite3_free(tls, pGroup)
 53528  		}
 53529  	}
 53530  	sqlite3.Xsqlite3_free(tls, zToFree)
 53531  	return *(*int32)(unsafe.Pointer(bp))
 53532  }
 53533  
 53534  func multiplexDelete(tls *libc.TLS, pVfs uintptr, zName uintptr, syncDir int32) int32 {
 53535  	bp := tls.Alloc(4)
 53536  	defer tls.Free(4)
 53537  
 53538  	var rc int32
 53539  	var pOrigVfs uintptr = gMultiplex.FpOrigVfs
 53540  	rc = (*struct {
 53541  		f func(*libc.TLS, uintptr, uintptr, int32) int32
 53542  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pOrigVfs)).FxDelete})).f(tls, pOrigVfs, zName, syncDir)
 53543  	if rc == SQLITE_OK {
 53544  		var nName int32 = int32(libc.Xstrlen(tls, zName))
 53545  		var z uintptr
 53546  		z = sqlite3.Xsqlite3_malloc64(tls, uint64(nName+5))
 53547  		if z == uintptr(0) {
 53548  			rc = SQLITE_IOERR | int32(12)<<8
 53549  		} else {
 53550  			var iChunk int32 = 0
 53551  
 53552  			for __ccgo := true; __ccgo; __ccgo = rc == SQLITE_OK && *(*int32)(unsafe.Pointer(bp)) != 0 {
 53553  				multiplexFilename(tls, zName, nName, SQLITE_OPEN_MAIN_JOURNAL, libc.PreIncInt32(&iChunk, 1), z)
 53554  				rc = (*struct {
 53555  					f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 53556  				})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pOrigVfs)).FxAccess})).f(tls, pOrigVfs, z, SQLITE_ACCESS_EXISTS, bp)
 53557  			}
 53558  			for rc == SQLITE_OK && iChunk > 1 {
 53559  				multiplexFilename(tls, zName, nName, SQLITE_OPEN_MAIN_JOURNAL, libc.PreDecInt32(&iChunk, 1), z)
 53560  				rc = (*struct {
 53561  					f func(*libc.TLS, uintptr, uintptr, int32) int32
 53562  				})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pOrigVfs)).FxDelete})).f(tls, pOrigVfs, z, syncDir)
 53563  			}
 53564  			if rc == SQLITE_OK {
 53565  				iChunk = 0
 53566  				for __ccgo1 := true; __ccgo1; __ccgo1 = rc == SQLITE_OK && *(*int32)(unsafe.Pointer(bp)) != 0 {
 53567  					multiplexFilename(tls, zName, nName, SQLITE_OPEN_WAL, libc.PreIncInt32(&iChunk, 1), z)
 53568  					rc = (*struct {
 53569  						f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 53570  					})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pOrigVfs)).FxAccess})).f(tls, pOrigVfs, z, SQLITE_ACCESS_EXISTS, bp)
 53571  				}
 53572  				for rc == SQLITE_OK && iChunk > 1 {
 53573  					multiplexFilename(tls, zName, nName, SQLITE_OPEN_WAL, libc.PreDecInt32(&iChunk, 1), z)
 53574  					rc = (*struct {
 53575  						f func(*libc.TLS, uintptr, uintptr, int32) int32
 53576  					})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pOrigVfs)).FxDelete})).f(tls, pOrigVfs, z, syncDir)
 53577  				}
 53578  			}
 53579  		}
 53580  		sqlite3.Xsqlite3_free(tls, z)
 53581  	}
 53582  	return rc
 53583  }
 53584  
 53585  func multiplexAccess(tls *libc.TLS, a uintptr, b uintptr, c int32, d uintptr) int32 {
 53586  	return (*struct {
 53587  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 53588  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(gMultiplex.FpOrigVfs)).FxAccess})).f(tls, gMultiplex.FpOrigVfs, b, c, d)
 53589  }
 53590  
 53591  func multiplexFullPathname(tls *libc.TLS, a uintptr, b uintptr, c int32, d uintptr) int32 {
 53592  	return (*struct {
 53593  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 53594  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(gMultiplex.FpOrigVfs)).FxFullPathname})).f(tls, gMultiplex.FpOrigVfs, b, c, d)
 53595  }
 53596  
 53597  func multiplexDlOpen(tls *libc.TLS, a uintptr, b uintptr) uintptr {
 53598  	return (*struct {
 53599  		f func(*libc.TLS, uintptr, uintptr) uintptr
 53600  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(gMultiplex.FpOrigVfs)).FxDlOpen})).f(tls, gMultiplex.FpOrigVfs, b)
 53601  }
 53602  
 53603  func multiplexDlError(tls *libc.TLS, a uintptr, b int32, c uintptr) {
 53604  	(*struct {
 53605  		f func(*libc.TLS, uintptr, int32, uintptr)
 53606  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(gMultiplex.FpOrigVfs)).FxDlError})).f(tls, gMultiplex.FpOrigVfs, b, c)
 53607  }
 53608  
 53609  func multiplexDlSym(tls *libc.TLS, a uintptr, b uintptr, c uintptr) uintptr {
 53610  	return (*struct {
 53611  		f func(*libc.TLS, uintptr, uintptr, uintptr) uintptr
 53612  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(gMultiplex.FpOrigVfs)).FxDlSym})).f(tls, gMultiplex.FpOrigVfs, b, c)
 53613  }
 53614  
 53615  func multiplexDlClose(tls *libc.TLS, a uintptr, b uintptr) {
 53616  	(*struct {
 53617  		f func(*libc.TLS, uintptr, uintptr)
 53618  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(gMultiplex.FpOrigVfs)).FxDlClose})).f(tls, gMultiplex.FpOrigVfs, b)
 53619  }
 53620  
 53621  func multiplexRandomness(tls *libc.TLS, a uintptr, b int32, c uintptr) int32 {
 53622  	return (*struct {
 53623  		f func(*libc.TLS, uintptr, int32, uintptr) int32
 53624  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(gMultiplex.FpOrigVfs)).FxRandomness})).f(tls, gMultiplex.FpOrigVfs, b, c)
 53625  }
 53626  
 53627  func multiplexSleep(tls *libc.TLS, a uintptr, b int32) int32 {
 53628  	return (*struct {
 53629  		f func(*libc.TLS, uintptr, int32) int32
 53630  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(gMultiplex.FpOrigVfs)).FxSleep})).f(tls, gMultiplex.FpOrigVfs, b)
 53631  }
 53632  
 53633  func multiplexCurrentTime(tls *libc.TLS, a uintptr, b uintptr) int32 {
 53634  	return (*struct {
 53635  		f func(*libc.TLS, uintptr, uintptr) int32
 53636  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(gMultiplex.FpOrigVfs)).FxCurrentTime})).f(tls, gMultiplex.FpOrigVfs, b)
 53637  }
 53638  
 53639  func multiplexGetLastError(tls *libc.TLS, a uintptr, b int32, c uintptr) int32 {
 53640  	if (*sqlite3_vfs)(unsafe.Pointer(gMultiplex.FpOrigVfs)).FxGetLastError != 0 {
 53641  		return (*struct {
 53642  			f func(*libc.TLS, uintptr, int32, uintptr) int32
 53643  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(gMultiplex.FpOrigVfs)).FxGetLastError})).f(tls, gMultiplex.FpOrigVfs, b, c)
 53644  	} else {
 53645  		return 0
 53646  	}
 53647  	return int32(0)
 53648  }
 53649  
 53650  func multiplexCurrentTimeInt64(tls *libc.TLS, a uintptr, b uintptr) int32 {
 53651  	return (*struct {
 53652  		f func(*libc.TLS, uintptr, uintptr) int32
 53653  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(gMultiplex.FpOrigVfs)).FxCurrentTimeInt64})).f(tls, gMultiplex.FpOrigVfs, b)
 53654  }
 53655  
 53656  func multiplexClose(tls *libc.TLS, pConn uintptr) int32 {
 53657  	var p uintptr = pConn
 53658  	var pGroup uintptr = (*multiplexConn)(unsafe.Pointer(p)).FpGroup
 53659  	var rc int32 = SQLITE_OK
 53660  	multiplexFreeComponents(tls, pGroup)
 53661  	sqlite3.Xsqlite3_free(tls, pGroup)
 53662  	return rc
 53663  }
 53664  
 53665  func multiplexRead(tls *libc.TLS, pConn uintptr, pBuf uintptr, iAmt int32, iOfst sqlite3_int64) int32 {
 53666  	bp := tls.Alloc(4)
 53667  	defer tls.Free(4)
 53668  
 53669  	var p uintptr = pConn
 53670  	var pGroup uintptr = (*multiplexConn)(unsafe.Pointer(p)).FpGroup
 53671  	*(*int32)(unsafe.Pointer(bp)) = SQLITE_OK
 53672  	if !(int32((*multiplexGroup)(unsafe.Pointer(pGroup)).FbEnabled) != 0) {
 53673  		var pSubOpen uintptr = multiplexSubOpen(tls, pGroup, 0, bp, uintptr(0), 0)
 53674  		if pSubOpen == uintptr(0) {
 53675  			*(*int32)(unsafe.Pointer(bp)) = SQLITE_IOERR | int32(1)<<8
 53676  		} else {
 53677  			*(*int32)(unsafe.Pointer(bp)) = (*struct {
 53678  				f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 53679  			})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxRead})).f(tls, pSubOpen, pBuf, iAmt, iOfst)
 53680  		}
 53681  	} else {
 53682  		for iAmt > 0 {
 53683  			var i int32 = int32(iOfst / sqlite3_int64((*multiplexGroup)(unsafe.Pointer(pGroup)).FszChunk))
 53684  			var pSubOpen uintptr
 53685  			pSubOpen = multiplexSubOpen(tls, pGroup, i, bp, uintptr(0), 1)
 53686  			if pSubOpen != 0 {
 53687  				var extra int32 = int32(uint32(int32(iOfst%sqlite3_int64((*multiplexGroup)(unsafe.Pointer(pGroup)).FszChunk))+iAmt) - (*multiplexGroup)(unsafe.Pointer(pGroup)).FszChunk)
 53688  				if extra < 0 {
 53689  					extra = 0
 53690  				}
 53691  				iAmt = iAmt - extra
 53692  				*(*int32)(unsafe.Pointer(bp)) = (*struct {
 53693  					f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 53694  				})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxRead})).f(tls, pSubOpen, pBuf, iAmt,
 53695  					iOfst%sqlite3_int64((*multiplexGroup)(unsafe.Pointer(pGroup)).FszChunk))
 53696  				if *(*int32)(unsafe.Pointer(bp)) != SQLITE_OK {
 53697  					break
 53698  				}
 53699  				pBuf = pBuf + uintptr(iAmt)
 53700  				iOfst = iOfst + sqlite3_int64(iAmt)
 53701  				iAmt = extra
 53702  			} else {
 53703  				*(*int32)(unsafe.Pointer(bp)) = SQLITE_IOERR | int32(1)<<8
 53704  				break
 53705  			}
 53706  		}
 53707  	}
 53708  
 53709  	return *(*int32)(unsafe.Pointer(bp))
 53710  }
 53711  
 53712  func multiplexWrite(tls *libc.TLS, pConn uintptr, pBuf uintptr, iAmt int32, iOfst sqlite3_int64) int32 {
 53713  	bp := tls.Alloc(4)
 53714  	defer tls.Free(4)
 53715  
 53716  	var p uintptr = pConn
 53717  	var pGroup uintptr = (*multiplexConn)(unsafe.Pointer(p)).FpGroup
 53718  	*(*int32)(unsafe.Pointer(bp)) = SQLITE_OK
 53719  	if !(int32((*multiplexGroup)(unsafe.Pointer(pGroup)).FbEnabled) != 0) {
 53720  		var pSubOpen uintptr = multiplexSubOpen(tls, pGroup, 0, bp, uintptr(0), 0)
 53721  		if pSubOpen == uintptr(0) {
 53722  			*(*int32)(unsafe.Pointer(bp)) = SQLITE_IOERR | int32(3)<<8
 53723  		} else {
 53724  			*(*int32)(unsafe.Pointer(bp)) = (*struct {
 53725  				f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 53726  			})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxWrite})).f(tls, pSubOpen, pBuf, iAmt, iOfst)
 53727  		}
 53728  	} else {
 53729  		for *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK && iAmt > 0 {
 53730  			var i int32 = int32(iOfst / sqlite3_int64((*multiplexGroup)(unsafe.Pointer(pGroup)).FszChunk))
 53731  			var pSubOpen uintptr = multiplexSubOpen(tls, pGroup, i, bp, uintptr(0), 1)
 53732  			if pSubOpen != 0 {
 53733  				var extra int32 = int32(uint32(int32(iOfst%sqlite3_int64((*multiplexGroup)(unsafe.Pointer(pGroup)).FszChunk))+iAmt) - (*multiplexGroup)(unsafe.Pointer(pGroup)).FszChunk)
 53734  				if extra < 0 {
 53735  					extra = 0
 53736  				}
 53737  				iAmt = iAmt - extra
 53738  				*(*int32)(unsafe.Pointer(bp)) = (*struct {
 53739  					f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 53740  				})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxWrite})).f(tls, pSubOpen, pBuf, iAmt,
 53741  					iOfst%sqlite3_int64((*multiplexGroup)(unsafe.Pointer(pGroup)).FszChunk))
 53742  				pBuf = pBuf + uintptr(iAmt)
 53743  				iOfst = iOfst + sqlite3_int64(iAmt)
 53744  				iAmt = extra
 53745  			}
 53746  		}
 53747  	}
 53748  	return *(*int32)(unsafe.Pointer(bp))
 53749  }
 53750  
 53751  func multiplexTruncate(tls *libc.TLS, pConn uintptr, size sqlite3_int64) int32 {
 53752  	bp := tls.Alloc(4)
 53753  	defer tls.Free(4)
 53754  
 53755  	var p uintptr = pConn
 53756  	var pGroup uintptr = (*multiplexConn)(unsafe.Pointer(p)).FpGroup
 53757  	*(*int32)(unsafe.Pointer(bp)) = SQLITE_OK
 53758  	if !(int32((*multiplexGroup)(unsafe.Pointer(pGroup)).FbEnabled) != 0) {
 53759  		var pSubOpen uintptr = multiplexSubOpen(tls, pGroup, 0, bp, uintptr(0), 0)
 53760  		if pSubOpen == uintptr(0) {
 53761  			*(*int32)(unsafe.Pointer(bp)) = SQLITE_IOERR | int32(6)<<8
 53762  		} else {
 53763  			*(*int32)(unsafe.Pointer(bp)) = (*struct {
 53764  				f func(*libc.TLS, uintptr, sqlite3_int64) int32
 53765  			})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxTruncate})).f(tls, pSubOpen, size)
 53766  		}
 53767  	} else {
 53768  		var i int32
 53769  		var iBaseGroup int32 = int32(size / sqlite3_int64((*multiplexGroup)(unsafe.Pointer(pGroup)).FszChunk))
 53770  		var pSubOpen uintptr
 53771  		var pOrigVfs uintptr = gMultiplex.FpOrigVfs
 53772  
 53773  		for i = (*multiplexGroup)(unsafe.Pointer(pGroup)).FnReal - 1; i > iBaseGroup && *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK; i-- {
 53774  			if (*multiplexGroup)(unsafe.Pointer(pGroup)).FbTruncate != 0 {
 53775  				multiplexSubClose(tls, pGroup, i, pOrigVfs)
 53776  			} else {
 53777  				pSubOpen = multiplexSubOpen(tls, pGroup, i, bp, uintptr(0), 0)
 53778  				if pSubOpen != 0 {
 53779  					*(*int32)(unsafe.Pointer(bp)) = (*struct {
 53780  						f func(*libc.TLS, uintptr, sqlite3_int64) int32
 53781  					})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxTruncate})).f(tls, pSubOpen, int64(0))
 53782  				}
 53783  			}
 53784  		}
 53785  		if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK {
 53786  			pSubOpen = multiplexSubOpen(tls, pGroup, iBaseGroup, bp, uintptr(0), 0)
 53787  			if pSubOpen != 0 {
 53788  				*(*int32)(unsafe.Pointer(bp)) = (*struct {
 53789  					f func(*libc.TLS, uintptr, sqlite3_int64) int32
 53790  				})(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))
 53791  			}
 53792  		}
 53793  		if *(*int32)(unsafe.Pointer(bp)) != 0 {
 53794  			*(*int32)(unsafe.Pointer(bp)) = SQLITE_IOERR | int32(6)<<8
 53795  		}
 53796  	}
 53797  	return *(*int32)(unsafe.Pointer(bp))
 53798  }
 53799  
 53800  func multiplexSync(tls *libc.TLS, pConn uintptr, flags int32) int32 {
 53801  	var p uintptr = pConn
 53802  	var pGroup uintptr = (*multiplexConn)(unsafe.Pointer(p)).FpGroup
 53803  	var rc int32 = SQLITE_OK
 53804  	var i int32
 53805  	for i = 0; i < (*multiplexGroup)(unsafe.Pointer(pGroup)).FnReal; i++ {
 53806  		var pSubOpen uintptr = (*multiplexReal)(unsafe.Pointer((*multiplexGroup)(unsafe.Pointer(pGroup)).FaReal + uintptr(i)*16)).Fp
 53807  		if pSubOpen != 0 {
 53808  			var rc2 int32 = (*struct {
 53809  				f func(*libc.TLS, uintptr, int32) int32
 53810  			})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxSync})).f(tls, pSubOpen, flags)
 53811  			if rc2 != SQLITE_OK {
 53812  				rc = rc2
 53813  			}
 53814  		}
 53815  	}
 53816  	return rc
 53817  }
 53818  
 53819  func multiplexFileSize(tls *libc.TLS, pConn uintptr, pSize uintptr) int32 {
 53820  	bp := tls.Alloc(4)
 53821  	defer tls.Free(4)
 53822  
 53823  	var p uintptr = pConn
 53824  	var pGroup uintptr = (*multiplexConn)(unsafe.Pointer(p)).FpGroup
 53825  	*(*int32)(unsafe.Pointer(bp)) = SQLITE_OK
 53826  	var i int32
 53827  	if !(int32((*multiplexGroup)(unsafe.Pointer(pGroup)).FbEnabled) != 0) {
 53828  		var pSubOpen uintptr = multiplexSubOpen(tls, pGroup, 0, bp, uintptr(0), 0)
 53829  		if pSubOpen == uintptr(0) {
 53830  			*(*int32)(unsafe.Pointer(bp)) = SQLITE_IOERR | int32(7)<<8
 53831  		} else {
 53832  			*(*int32)(unsafe.Pointer(bp)) = (*struct {
 53833  				f func(*libc.TLS, uintptr, uintptr) int32
 53834  			})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxFileSize})).f(tls, pSubOpen, pSize)
 53835  		}
 53836  	} else {
 53837  		*(*sqlite3_int64)(unsafe.Pointer(pSize)) = int64(0)
 53838  		for i = 0; *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK; i++ {
 53839  			var sz sqlite3_int64 = multiplexSubSize(tls, pGroup, i, bp)
 53840  			if sz == int64(0) {
 53841  				break
 53842  			}
 53843  			*(*sqlite3_int64)(unsafe.Pointer(pSize)) = sqlite3_int64(i)*sqlite3_int64((*multiplexGroup)(unsafe.Pointer(pGroup)).FszChunk) + sz
 53844  		}
 53845  	}
 53846  	return *(*int32)(unsafe.Pointer(bp))
 53847  }
 53848  
 53849  func multiplexLock(tls *libc.TLS, pConn uintptr, lock int32) int32 {
 53850  	bp := tls.Alloc(4)
 53851  	defer tls.Free(4)
 53852  
 53853  	var p uintptr = pConn
 53854  
 53855  	var pSubOpen uintptr = multiplexSubOpen(tls, (*multiplexConn)(unsafe.Pointer(p)).FpGroup, 0, bp, uintptr(0), 0)
 53856  	if pSubOpen != 0 {
 53857  		return (*struct {
 53858  			f func(*libc.TLS, uintptr, int32) int32
 53859  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxLock})).f(tls, pSubOpen, lock)
 53860  	}
 53861  	return SQLITE_BUSY
 53862  }
 53863  
 53864  func multiplexUnlock(tls *libc.TLS, pConn uintptr, lock int32) int32 {
 53865  	bp := tls.Alloc(4)
 53866  	defer tls.Free(4)
 53867  
 53868  	var p uintptr = pConn
 53869  
 53870  	var pSubOpen uintptr = multiplexSubOpen(tls, (*multiplexConn)(unsafe.Pointer(p)).FpGroup, 0, bp, uintptr(0), 0)
 53871  	if pSubOpen != 0 {
 53872  		return (*struct {
 53873  			f func(*libc.TLS, uintptr, int32) int32
 53874  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxUnlock})).f(tls, pSubOpen, lock)
 53875  	}
 53876  	return SQLITE_IOERR | int32(8)<<8
 53877  }
 53878  
 53879  func multiplexCheckReservedLock(tls *libc.TLS, pConn uintptr, pResOut uintptr) int32 {
 53880  	bp := tls.Alloc(4)
 53881  	defer tls.Free(4)
 53882  
 53883  	var p uintptr = pConn
 53884  
 53885  	var pSubOpen uintptr = multiplexSubOpen(tls, (*multiplexConn)(unsafe.Pointer(p)).FpGroup, 0, bp, uintptr(0), 0)
 53886  	if pSubOpen != 0 {
 53887  		return (*struct {
 53888  			f func(*libc.TLS, uintptr, uintptr) int32
 53889  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxCheckReservedLock})).f(tls, pSubOpen, pResOut)
 53890  	}
 53891  	return SQLITE_IOERR | int32(14)<<8
 53892  }
 53893  
 53894  func multiplexFileControl(tls *libc.TLS, pConn uintptr, op int32, pArg uintptr) int32 {
 53895  	bp := tls.Alloc(44)
 53896  	defer tls.Free(44)
 53897  
 53898  	var p uintptr = pConn
 53899  	var pGroup uintptr = (*multiplexConn)(unsafe.Pointer(p)).FpGroup
 53900  	*(*int32)(unsafe.Pointer(bp + 40)) = SQLITE_ERROR
 53901  	var pSubOpen uintptr
 53902  
 53903  	if !(gMultiplex.FisInitialized != 0) {
 53904  		return SQLITE_MISUSE
 53905  	}
 53906  	switch op {
 53907  	case MULTIPLEX_CTRL_ENABLE:
 53908  		if pArg != 0 {
 53909  			var bEnabled int32 = *(*int32)(unsafe.Pointer(pArg))
 53910  			(*multiplexGroup)(unsafe.Pointer(pGroup)).FbEnabled = uint8(bEnabled)
 53911  			*(*int32)(unsafe.Pointer(bp + 40)) = SQLITE_OK
 53912  		}
 53913  		break
 53914  	case MULTIPLEX_CTRL_SET_CHUNK_SIZE:
 53915  		if pArg != 0 {
 53916  			var szChunk uint32 = *(*uint32)(unsafe.Pointer(pArg))
 53917  			if szChunk < uint32(1) {
 53918  				*(*int32)(unsafe.Pointer(bp + 40)) = SQLITE_MISUSE
 53919  			} else {
 53920  				szChunk = szChunk + uint32(MAX_PAGE_SIZE-1)
 53921  				szChunk = szChunk & libc.Uint32FromInt32(libc.CplInt32(MAX_PAGE_SIZE-1))
 53922  				(*multiplexGroup)(unsafe.Pointer(pGroup)).FszChunk = szChunk
 53923  				*(*int32)(unsafe.Pointer(bp + 40)) = SQLITE_OK
 53924  			}
 53925  		}
 53926  		break
 53927  	case MULTIPLEX_CTRL_SET_MAX_CHUNKS:
 53928  		*(*int32)(unsafe.Pointer(bp + 40)) = SQLITE_OK
 53929  		break
 53930  	case SQLITE_FCNTL_SIZE_HINT:
 53931  		fallthrough
 53932  	case SQLITE_FCNTL_CHUNK_SIZE:
 53933  		*(*int32)(unsafe.Pointer(bp + 40)) = SQLITE_OK
 53934  		break
 53935  	case SQLITE_FCNTL_PRAGMA:
 53936  		{
 53937  			var aFcntl uintptr = pArg
 53938  
 53939  			if *(*uintptr)(unsafe.Pointer(aFcntl + 1*8)) != 0 && sqlite3.Xsqlite3_strnicmp(tls, *(*uintptr)(unsafe.Pointer(aFcntl + 1*8)), ts+34889, 10) == 0 {
 53940  				*(*sqlite3_int64)(unsafe.Pointer(bp + 32)) = int64(0)
 53941  				multiplexFileSize(tls, pConn, bp+32)
 53942  
 53943  				if sqlite3.Xsqlite3_stricmp(tls, *(*uintptr)(unsafe.Pointer(aFcntl + 1*8)), ts+34900) == 0 {
 53944  					if *(*uintptr)(unsafe.Pointer(aFcntl + 2*8)) != 0 && *(*int8)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(aFcntl + 2*8)))) != 0 {
 53945  						if sqlite3.Xsqlite3_stricmp(tls, *(*uintptr)(unsafe.Pointer(aFcntl + 2*8)), ts+4178) == 0 ||
 53946  							sqlite3.Xsqlite3_stricmp(tls, *(*uintptr)(unsafe.Pointer(aFcntl + 2*8)), ts+29053) == 0 {
 53947  							(*multiplexGroup)(unsafe.Pointer(pGroup)).FbTruncate = uint8(1)
 53948  						} else if sqlite3.Xsqlite3_stricmp(tls, *(*uintptr)(unsafe.Pointer(aFcntl + 2*8)), ts+4542) == 0 ||
 53949  							sqlite3.Xsqlite3_stricmp(tls, *(*uintptr)(unsafe.Pointer(aFcntl + 2*8)), ts+14193) == 0 {
 53950  							(*multiplexGroup)(unsafe.Pointer(pGroup)).FbTruncate = uint8(0)
 53951  						}
 53952  					}
 53953  
 53954  					*(*uintptr)(unsafe.Pointer(aFcntl)) = sqlite3.Xsqlite3_mprintf(tls, func() uintptr {
 53955  						if (*multiplexGroup)(unsafe.Pointer(pGroup)).FbTruncate != 0 {
 53956  							return ts + 4178
 53957  						}
 53958  						return ts + 4542
 53959  					}(), 0)
 53960  					*(*int32)(unsafe.Pointer(bp + 40)) = SQLITE_OK
 53961  					break
 53962  				}
 53963  
 53964  				if sqlite3.Xsqlite3_stricmp(tls, *(*uintptr)(unsafe.Pointer(aFcntl + 1*8)), ts+34919) == 0 {
 53965  					*(*uintptr)(unsafe.Pointer(aFcntl)) = sqlite3.Xsqlite3_mprintf(tls, ts+1333, libc.VaList(bp, libc.Bool32(int32((*multiplexGroup)(unsafe.Pointer(pGroup)).FbEnabled) != 0)))
 53966  					*(*int32)(unsafe.Pointer(bp + 40)) = SQLITE_OK
 53967  					break
 53968  				}
 53969  
 53970  				if sqlite3.Xsqlite3_stricmp(tls, *(*uintptr)(unsafe.Pointer(aFcntl + 1*8)), ts+34937) == 0 &&
 53971  					(*multiplexGroup)(unsafe.Pointer(pGroup)).FbEnabled != 0 {
 53972  					*(*uintptr)(unsafe.Pointer(aFcntl)) = sqlite3.Xsqlite3_mprintf(tls, ts+17791, libc.VaList(bp+8, (*multiplexGroup)(unsafe.Pointer(pGroup)).FszChunk))
 53973  					*(*int32)(unsafe.Pointer(bp + 40)) = SQLITE_OK
 53974  					break
 53975  				}
 53976  
 53977  				if sqlite3.Xsqlite3_stricmp(tls, *(*uintptr)(unsafe.Pointer(aFcntl + 1*8)), ts+34957) == 0 {
 53978  					var n int32 = 0
 53979  					var ii int32
 53980  					for ii = 0; ii < (*multiplexGroup)(unsafe.Pointer(pGroup)).FnReal; ii++ {
 53981  						if (*multiplexReal)(unsafe.Pointer((*multiplexGroup)(unsafe.Pointer(pGroup)).FaReal+uintptr(ii)*16)).Fp != uintptr(0) {
 53982  							n++
 53983  						}
 53984  					}
 53985  					*(*uintptr)(unsafe.Pointer(aFcntl)) = sqlite3.Xsqlite3_mprintf(tls, ts+1333, libc.VaList(bp+16, n))
 53986  					*(*int32)(unsafe.Pointer(bp + 40)) = SQLITE_OK
 53987  					break
 53988  				}
 53989  			}
 53990  
 53991  		}
 53992  		fallthrough
 53993  	default:
 53994  		pSubOpen = multiplexSubOpen(tls, pGroup, 0, bp+40, uintptr(0), 0)
 53995  		if pSubOpen != 0 {
 53996  			*(*int32)(unsafe.Pointer(bp + 40)) = (*struct {
 53997  				f func(*libc.TLS, uintptr, int32, uintptr) int32
 53998  			})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxFileControl})).f(tls, pSubOpen, op, pArg)
 53999  			if op == SQLITE_FCNTL_VFSNAME && *(*int32)(unsafe.Pointer(bp + 40)) == SQLITE_OK {
 54000  				*(*uintptr)(unsafe.Pointer(pArg)) = sqlite3.Xsqlite3_mprintf(tls, ts+34977, libc.VaList(bp+24, *(*uintptr)(unsafe.Pointer(pArg))))
 54001  			}
 54002  		}
 54003  		break
 54004  	}
 54005  	return *(*int32)(unsafe.Pointer(bp + 40))
 54006  }
 54007  
 54008  func multiplexSectorSize(tls *libc.TLS, pConn uintptr) int32 {
 54009  	bp := tls.Alloc(4)
 54010  	defer tls.Free(4)
 54011  
 54012  	var p uintptr = pConn
 54013  
 54014  	var pSubOpen uintptr = multiplexSubOpen(tls, (*multiplexConn)(unsafe.Pointer(p)).FpGroup, 0, bp, uintptr(0), 0)
 54015  	if pSubOpen != 0 && (*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxSectorSize != 0 {
 54016  		return (*struct {
 54017  			f func(*libc.TLS, uintptr) int32
 54018  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxSectorSize})).f(tls, pSubOpen)
 54019  	}
 54020  	return DEFAULT_SECTOR_SIZE
 54021  }
 54022  
 54023  func multiplexDeviceCharacteristics(tls *libc.TLS, pConn uintptr) int32 {
 54024  	bp := tls.Alloc(4)
 54025  	defer tls.Free(4)
 54026  
 54027  	var p uintptr = pConn
 54028  
 54029  	var pSubOpen uintptr = multiplexSubOpen(tls, (*multiplexConn)(unsafe.Pointer(p)).FpGroup, 0, bp, uintptr(0), 0)
 54030  	if pSubOpen != 0 {
 54031  		return (*struct {
 54032  			f func(*libc.TLS, uintptr) int32
 54033  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxDeviceCharacteristics})).f(tls, pSubOpen)
 54034  	}
 54035  	return 0
 54036  }
 54037  
 54038  func multiplexShmMap(tls *libc.TLS, pConn uintptr, iRegion int32, szRegion int32, bExtend int32, pp uintptr) int32 {
 54039  	bp := tls.Alloc(4)
 54040  	defer tls.Free(4)
 54041  
 54042  	var p uintptr = pConn
 54043  
 54044  	var pSubOpen uintptr = multiplexSubOpen(tls, (*multiplexConn)(unsafe.Pointer(p)).FpGroup, 0, bp, uintptr(0), 0)
 54045  	if pSubOpen != 0 {
 54046  		return (*struct {
 54047  			f func(*libc.TLS, uintptr, int32, int32, int32, uintptr) int32
 54048  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxShmMap})).f(tls, pSubOpen, iRegion, szRegion, bExtend, pp)
 54049  	}
 54050  	return SQLITE_IOERR
 54051  }
 54052  
 54053  func multiplexShmLock(tls *libc.TLS, pConn uintptr, ofst int32, n int32, flags int32) int32 {
 54054  	bp := tls.Alloc(4)
 54055  	defer tls.Free(4)
 54056  
 54057  	var p uintptr = pConn
 54058  
 54059  	var pSubOpen uintptr = multiplexSubOpen(tls, (*multiplexConn)(unsafe.Pointer(p)).FpGroup, 0, bp, uintptr(0), 0)
 54060  	if pSubOpen != 0 {
 54061  		return (*struct {
 54062  			f func(*libc.TLS, uintptr, int32, int32, int32) int32
 54063  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxShmLock})).f(tls, pSubOpen, ofst, n, flags)
 54064  	}
 54065  	return SQLITE_BUSY
 54066  }
 54067  
 54068  func multiplexShmBarrier(tls *libc.TLS, pConn uintptr) {
 54069  	bp := tls.Alloc(4)
 54070  	defer tls.Free(4)
 54071  
 54072  	var p uintptr = pConn
 54073  
 54074  	var pSubOpen uintptr = multiplexSubOpen(tls, (*multiplexConn)(unsafe.Pointer(p)).FpGroup, 0, bp, uintptr(0), 0)
 54075  	if pSubOpen != 0 {
 54076  		(*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)
 54077  	}
 54078  }
 54079  
 54080  func multiplexShmUnmap(tls *libc.TLS, pConn uintptr, deleteFlag int32) int32 {
 54081  	bp := tls.Alloc(4)
 54082  	defer tls.Free(4)
 54083  
 54084  	var p uintptr = pConn
 54085  
 54086  	var pSubOpen uintptr = multiplexSubOpen(tls, (*multiplexConn)(unsafe.Pointer(p)).FpGroup, 0, bp, uintptr(0), 0)
 54087  	if pSubOpen != 0 {
 54088  		return (*struct {
 54089  			f func(*libc.TLS, uintptr, int32) int32
 54090  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxShmUnmap})).f(tls, pSubOpen, deleteFlag)
 54091  	}
 54092  	return SQLITE_OK
 54093  }
 54094  
 54095  func sqlite3_multiplex_initialize(tls *libc.TLS, zOrigVfsName uintptr, makeDefault int32) int32 {
 54096  	var pOrigVfs uintptr
 54097  	if gMultiplex.FisInitialized != 0 {
 54098  		return SQLITE_MISUSE
 54099  	}
 54100  	pOrigVfs = sqlite3.Xsqlite3_vfs_find(tls, zOrigVfsName)
 54101  	if pOrigVfs == uintptr(0) {
 54102  		return SQLITE_ERROR
 54103  	}
 54104  
 54105  	gMultiplex.FisInitialized = 1
 54106  	gMultiplex.FpOrigVfs = pOrigVfs
 54107  	gMultiplex.FsThisVfs = *(*sqlite3_vfs)(unsafe.Pointer(pOrigVfs))
 54108  	*(*int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&gMultiplex)) + 8 + 4)) += int32(uint64(unsafe.Sizeof(multiplexConn{})))
 54109  	gMultiplex.FsThisVfs.FzName = ts + 34990
 54110  	gMultiplex.FsThisVfs.FxOpen = *(*uintptr)(unsafe.Pointer(&struct {
 54111  		f func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr) int32
 54112  	}{multiplexOpen}))
 54113  	gMultiplex.FsThisVfs.FxDelete = *(*uintptr)(unsafe.Pointer(&struct {
 54114  		f func(*libc.TLS, uintptr, uintptr, int32) int32
 54115  	}{multiplexDelete}))
 54116  	gMultiplex.FsThisVfs.FxAccess = *(*uintptr)(unsafe.Pointer(&struct {
 54117  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 54118  	}{multiplexAccess}))
 54119  	gMultiplex.FsThisVfs.FxFullPathname = *(*uintptr)(unsafe.Pointer(&struct {
 54120  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 54121  	}{multiplexFullPathname}))
 54122  	gMultiplex.FsThisVfs.FxDlOpen = *(*uintptr)(unsafe.Pointer(&struct {
 54123  		f func(*libc.TLS, uintptr, uintptr) uintptr
 54124  	}{multiplexDlOpen}))
 54125  	gMultiplex.FsThisVfs.FxDlError = *(*uintptr)(unsafe.Pointer(&struct {
 54126  		f func(*libc.TLS, uintptr, int32, uintptr)
 54127  	}{multiplexDlError}))
 54128  	gMultiplex.FsThisVfs.FxDlSym = *(*uintptr)(unsafe.Pointer(&struct {
 54129  		f func(*libc.TLS, uintptr, uintptr, uintptr) uintptr
 54130  	}{multiplexDlSym}))
 54131  	gMultiplex.FsThisVfs.FxDlClose = *(*uintptr)(unsafe.Pointer(&struct {
 54132  		f func(*libc.TLS, uintptr, uintptr)
 54133  	}{multiplexDlClose}))
 54134  	gMultiplex.FsThisVfs.FxRandomness = *(*uintptr)(unsafe.Pointer(&struct {
 54135  		f func(*libc.TLS, uintptr, int32, uintptr) int32
 54136  	}{multiplexRandomness}))
 54137  	gMultiplex.FsThisVfs.FxSleep = *(*uintptr)(unsafe.Pointer(&struct {
 54138  		f func(*libc.TLS, uintptr, int32) int32
 54139  	}{multiplexSleep}))
 54140  	gMultiplex.FsThisVfs.FxCurrentTime = *(*uintptr)(unsafe.Pointer(&struct {
 54141  		f func(*libc.TLS, uintptr, uintptr) int32
 54142  	}{multiplexCurrentTime}))
 54143  	gMultiplex.FsThisVfs.FxGetLastError = *(*uintptr)(unsafe.Pointer(&struct {
 54144  		f func(*libc.TLS, uintptr, int32, uintptr) int32
 54145  	}{multiplexGetLastError}))
 54146  	gMultiplex.FsThisVfs.FxCurrentTimeInt64 = *(*uintptr)(unsafe.Pointer(&struct {
 54147  		f func(*libc.TLS, uintptr, uintptr) int32
 54148  	}{multiplexCurrentTimeInt64}))
 54149  
 54150  	gMultiplex.FsIoMethodsV1.FiVersion = 1
 54151  	gMultiplex.FsIoMethodsV1.FxClose = *(*uintptr)(unsafe.Pointer(&struct {
 54152  		f func(*libc.TLS, uintptr) int32
 54153  	}{multiplexClose}))
 54154  	gMultiplex.FsIoMethodsV1.FxRead = *(*uintptr)(unsafe.Pointer(&struct {
 54155  		f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 54156  	}{multiplexRead}))
 54157  	gMultiplex.FsIoMethodsV1.FxWrite = *(*uintptr)(unsafe.Pointer(&struct {
 54158  		f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 54159  	}{multiplexWrite}))
 54160  	gMultiplex.FsIoMethodsV1.FxTruncate = *(*uintptr)(unsafe.Pointer(&struct {
 54161  		f func(*libc.TLS, uintptr, sqlite3_int64) int32
 54162  	}{multiplexTruncate}))
 54163  	gMultiplex.FsIoMethodsV1.FxSync = *(*uintptr)(unsafe.Pointer(&struct {
 54164  		f func(*libc.TLS, uintptr, int32) int32
 54165  	}{multiplexSync}))
 54166  	gMultiplex.FsIoMethodsV1.FxFileSize = *(*uintptr)(unsafe.Pointer(&struct {
 54167  		f func(*libc.TLS, uintptr, uintptr) int32
 54168  	}{multiplexFileSize}))
 54169  	gMultiplex.FsIoMethodsV1.FxLock = *(*uintptr)(unsafe.Pointer(&struct {
 54170  		f func(*libc.TLS, uintptr, int32) int32
 54171  	}{multiplexLock}))
 54172  	gMultiplex.FsIoMethodsV1.FxUnlock = *(*uintptr)(unsafe.Pointer(&struct {
 54173  		f func(*libc.TLS, uintptr, int32) int32
 54174  	}{multiplexUnlock}))
 54175  	gMultiplex.FsIoMethodsV1.FxCheckReservedLock = *(*uintptr)(unsafe.Pointer(&struct {
 54176  		f func(*libc.TLS, uintptr, uintptr) int32
 54177  	}{multiplexCheckReservedLock}))
 54178  	gMultiplex.FsIoMethodsV1.FxFileControl = *(*uintptr)(unsafe.Pointer(&struct {
 54179  		f func(*libc.TLS, uintptr, int32, uintptr) int32
 54180  	}{multiplexFileControl}))
 54181  	gMultiplex.FsIoMethodsV1.FxSectorSize = *(*uintptr)(unsafe.Pointer(&struct {
 54182  		f func(*libc.TLS, uintptr) int32
 54183  	}{multiplexSectorSize}))
 54184  	gMultiplex.FsIoMethodsV1.FxDeviceCharacteristics = *(*uintptr)(unsafe.Pointer(&struct {
 54185  		f func(*libc.TLS, uintptr) int32
 54186  	}{multiplexDeviceCharacteristics}))
 54187  	gMultiplex.FsIoMethodsV2 = gMultiplex.FsIoMethodsV1
 54188  	gMultiplex.FsIoMethodsV2.FiVersion = 2
 54189  	gMultiplex.FsIoMethodsV2.FxShmMap = *(*uintptr)(unsafe.Pointer(&struct {
 54190  		f func(*libc.TLS, uintptr, int32, int32, int32, uintptr) int32
 54191  	}{multiplexShmMap}))
 54192  	gMultiplex.FsIoMethodsV2.FxShmLock = *(*uintptr)(unsafe.Pointer(&struct {
 54193  		f func(*libc.TLS, uintptr, int32, int32, int32) int32
 54194  	}{multiplexShmLock}))
 54195  	gMultiplex.FsIoMethodsV2.FxShmBarrier = *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{multiplexShmBarrier}))
 54196  	gMultiplex.FsIoMethodsV2.FxShmUnmap = *(*uintptr)(unsafe.Pointer(&struct {
 54197  		f func(*libc.TLS, uintptr, int32) int32
 54198  	}{multiplexShmUnmap}))
 54199  	sqlite3.Xsqlite3_vfs_register(tls, uintptr(unsafe.Pointer(&gMultiplex))+8, makeDefault)
 54200  
 54201  	sqlite3.Xsqlite3_auto_extension(tls, *(*uintptr)(unsafe.Pointer(&struct {
 54202  		f func(*libc.TLS, uintptr, uintptr, uintptr) int32
 54203  	}{multiplexFuncInit})))
 54204  
 54205  	return SQLITE_OK
 54206  }
 54207  
 54208  func sqlite3_multiplex_shutdown(tls *libc.TLS, eForce int32) int32 {
 54209  	var rc int32 = SQLITE_OK
 54210  	if gMultiplex.FisInitialized == 0 {
 54211  		return SQLITE_MISUSE
 54212  	}
 54213  	gMultiplex.FisInitialized = 0
 54214  	sqlite3.Xsqlite3_vfs_unregister(tls, uintptr(unsafe.Pointer(&gMultiplex))+8)
 54215  	libc.X__builtin___memset_chk(tls, uintptr(unsafe.Pointer(&gMultiplex)), 0, uint64(unsafe.Sizeof(gMultiplex)), libc.X__builtin_object_size(tls, uintptr(unsafe.Pointer(&gMultiplex)), 0))
 54216  	return rc
 54217  }
 54218  
 54219  func test_multiplex_initialize(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 54220  	bp := tls.Alloc(4)
 54221  	defer tls.Free(4)
 54222  
 54223  	var zName uintptr
 54224  
 54225  	var rc int32
 54226  
 54227  	_ = clientData
 54228  
 54229  	if objc != 3 {
 54230  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+35000)
 54231  		return TCL_ERROR
 54232  	}
 54233  	zName = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 54234  	if tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp) != 0 {
 54235  		return TCL_ERROR
 54236  	}
 54237  	if int32(*(*int8)(unsafe.Pointer(zName))) == 0 {
 54238  		zName = uintptr(0)
 54239  	}
 54240  
 54241  	rc = sqlite3_multiplex_initialize(tls, zName, *(*int32)(unsafe.Pointer(bp)))
 54242  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 54243  
 54244  	return TCL_OK
 54245  }
 54246  
 54247  func test_multiplex_shutdown(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 54248  	var rc int32
 54249  
 54250  	_ = clientData
 54251  
 54252  	if objc == 2 && libc.Xstrcmp(tls, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), ts+35017) != 0 {
 54253  		objc = 3
 54254  	}
 54255  	if objc != 1 && objc != 2 {
 54256  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+35024)
 54257  		return TCL_ERROR
 54258  	}
 54259  
 54260  	rc = sqlite3_multiplex_shutdown(tls, libc.Bool32(objc == 2))
 54261  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 54262  
 54263  	return TCL_OK
 54264  }
 54265  
 54266  func test_multiplex_control(tls *libc.TLS, cd ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 54267  	bp := tls.Alloc(176)
 54268  	defer tls.Free(176)
 54269  
 54270  	var rc int32
 54271  
 54272  	var db uintptr
 54273  	*(*int32)(unsafe.Pointer(bp + 172)) = 0
 54274  	var pArg uintptr = uintptr(0)
 54275  
 54276  	*(*[4]struct {
 54277  		FzName   uintptr
 54278  		Fop      int32
 54279  		Fargtype int32
 54280  	})(unsafe.Pointer(bp + 104)) = [4]struct {
 54281  		FzName   uintptr
 54282  		Fop      int32
 54283  		Fargtype int32
 54284  	}{
 54285  		{FzName: ts + 10145, Fop: MULTIPLEX_CTRL_ENABLE, Fargtype: 1},
 54286  		{FzName: ts + 35033, Fop: MULTIPLEX_CTRL_SET_CHUNK_SIZE, Fargtype: 1},
 54287  		{FzName: ts + 35044, Fop: MULTIPLEX_CTRL_SET_MAX_CHUNKS, Fargtype: 1},
 54288  		{},
 54289  	}
 54290  
 54291  	if objc != 5 {
 54292  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+35055)
 54293  		return TCL_ERROR
 54294  	}
 54295  
 54296  	if 0 == tcl.XTcl_GetCommandInfo(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+40) {
 54297  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+35091, 0))
 54298  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+16, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), ts+11945, 0))
 54299  		return TCL_ERROR
 54300  	} else {
 54301  		db = *(*uintptr)(unsafe.Pointer((*Tcl_CmdInfo)(unsafe.Pointer(bp + 40)).FobjClientData))
 54302  	}
 54303  
 54304  	rc = tcl.XTcl_GetIndexFromObjStruct(tls,
 54305  		interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+104, int32(unsafe.Sizeof(struct {
 54306  			FzName   uintptr
 54307  			Fop      int32
 54308  			Fargtype int32
 54309  		}{})), ts+2014, 0, bp+168)
 54310  	if rc != TCL_OK {
 54311  		return rc
 54312  	}
 54313  
 54314  	switch (*struct {
 54315  		FzName   uintptr
 54316  		Fop      int32
 54317  		Fargtype int32
 54318  	})(unsafe.Pointer(bp + 104 + uintptr(*(*int32)(unsafe.Pointer(bp + 168)))*16)).Fargtype {
 54319  	case 1:
 54320  		if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 4*8)), bp+172) != 0 {
 54321  			return TCL_ERROR
 54322  		}
 54323  		pArg = bp + 172
 54324  		break
 54325  	default:
 54326  		tcl.XTcl_WrongNumArgs(tls, interp, 4, objv, ts+2523)
 54327  		return TCL_ERROR
 54328  	}
 54329  
 54330  	rc = sqlite3.Xsqlite3_file_control(tls, db, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8))), (*struct {
 54331  		FzName   uintptr
 54332  		Fop      int32
 54333  		Fargtype int32
 54334  	})(unsafe.Pointer(bp+104+uintptr(*(*int32)(unsafe.Pointer(bp + 168)))*16)).Fop, pArg)
 54335  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 54336  	if rc == SQLITE_OK {
 54337  		return TCL_OK
 54338  	}
 54339  	return TCL_ERROR
 54340  }
 54341  
 54342  func Sqlitemultiplex_Init(tls *libc.TLS, interp uintptr) int32 {
 54343  	var i int32
 54344  
 54345  	for i = 0; uint64(i) < uint64(unsafe.Sizeof(aCmd7))/uint64(unsafe.Sizeof(struct {
 54346  		FzName uintptr
 54347  		FxProc uintptr
 54348  	}{})); i++ {
 54349  		tcl.XTcl_CreateObjCommand(tls, interp, aCmd7[i].FzName, aCmd7[i].FxProc, uintptr(0), uintptr(0))
 54350  	}
 54351  
 54352  	return TCL_OK
 54353  }
 54354  
 54355  var aCmd7 = [3]struct {
 54356  	FzName uintptr
 54357  	FxProc uintptr
 54358  }{
 54359  	{FzName: ts + 35123, FxProc: 0},
 54360  	{FzName: ts + 35152, FxProc: 0},
 54361  	{FzName: ts + 35179, FxProc: 0},
 54362  }
 54363  
 54364  type sqlite3_mutex = sqlite3_mutex1
 54365  
 54366  var aName = [15]uintptr{
 54367  	ts + 35205, ts + 35210, ts + 35220, ts + 35232,
 54368  	ts + 35243, ts + 35255, ts + 35267, ts + 35278,
 54369  	ts + 35290, ts + 35302, ts + 35314, ts + 35326,
 54370  	ts + 35338, ts + 35350, uintptr(0),
 54371  }
 54372  
 54373  type test_mutex_globals = struct {
 54374  	FisInstalled int32
 54375  	FdisableInit int32
 54376  	FdisableTry  int32
 54377  	FisInit      int32
 54378  	Fm           sqlite3_mutex_methods
 54379  	FaCounter    [14]int32
 54380  	FaStatic     [12]sqlite3_mutex
 54381  }
 54382  
 54383  var g3 = test_mutex_globals{}
 54384  
 54385  func counterMutexHeld(tls *libc.TLS, p uintptr) int32 {
 54386  	return (*struct {
 54387  		f func(*libc.TLS, uintptr) int32
 54388  	})(unsafe.Pointer(&struct{ uintptr }{g3.Fm.FxMutexHeld})).f(tls, (*sqlite3_mutex)(unsafe.Pointer(p)).FpReal)
 54389  }
 54390  
 54391  func counterMutexNotheld(tls *libc.TLS, p uintptr) int32 {
 54392  	return (*struct {
 54393  		f func(*libc.TLS, uintptr) int32
 54394  	})(unsafe.Pointer(&struct{ uintptr }{g3.Fm.FxMutexNotheld})).f(tls, (*sqlite3_mutex)(unsafe.Pointer(p)).FpReal)
 54395  }
 54396  
 54397  func counterMutexInit(tls *libc.TLS) int32 {
 54398  	var rc int32
 54399  	if g3.FdisableInit != 0 {
 54400  		return g3.FdisableInit
 54401  	}
 54402  	rc = (*struct{ f func(*libc.TLS) int32 })(unsafe.Pointer(&struct{ uintptr }{g3.Fm.FxMutexInit})).f(tls)
 54403  	g3.FisInit = 1
 54404  	return rc
 54405  }
 54406  
 54407  func counterMutexEnd(tls *libc.TLS) int32 {
 54408  	g3.FisInit = 0
 54409  	return (*struct{ f func(*libc.TLS) int32 })(unsafe.Pointer(&struct{ uintptr }{g3.Fm.FxMutexEnd})).f(tls)
 54410  }
 54411  
 54412  func counterMutexAlloc(tls *libc.TLS, eType int32) uintptr {
 54413  	var pReal uintptr
 54414  	var pRet uintptr = uintptr(0)
 54415  
 54416  	pReal = (*struct {
 54417  		f func(*libc.TLS, int32) uintptr
 54418  	})(unsafe.Pointer(&struct{ uintptr }{g3.Fm.FxMutexAlloc})).f(tls, eType)
 54419  	if !(pReal != 0) {
 54420  		return uintptr(0)
 54421  	}
 54422  
 54423  	if eType == SQLITE_MUTEX_FAST || eType == SQLITE_MUTEX_RECURSIVE {
 54424  		pRet = libc.Xmalloc(tls, uint64(unsafe.Sizeof(sqlite3_mutex{})))
 54425  	} else {
 54426  		var eStaticType int32 = eType - (SQLITE_MUTEX_STATIC_VFS3 + 1 - (SQLITE_MUTEX_STATIC_VFS3 + 1 - (SQLITE_MUTEX_RECURSIVE + 1)))
 54427  
 54428  		pRet = uintptr(unsafe.Pointer(&g3)) + 144 + uintptr(eStaticType)*16
 54429  	}
 54430  
 54431  	(*sqlite3_mutex)(unsafe.Pointer(pRet)).FeType = eType
 54432  	(*sqlite3_mutex)(unsafe.Pointer(pRet)).FpReal = pReal
 54433  	return pRet
 54434  }
 54435  
 54436  func counterMutexFree(tls *libc.TLS, p uintptr) {
 54437  	(*struct{ f func(*libc.TLS, uintptr) })(unsafe.Pointer(&struct{ uintptr }{g3.Fm.FxMutexFree})).f(tls, (*sqlite3_mutex)(unsafe.Pointer(p)).FpReal)
 54438  	if (*sqlite3_mutex)(unsafe.Pointer(p)).FeType == SQLITE_MUTEX_FAST || (*sqlite3_mutex)(unsafe.Pointer(p)).FeType == SQLITE_MUTEX_RECURSIVE {
 54439  		libc.Xfree(tls, p)
 54440  	}
 54441  }
 54442  
 54443  func counterMutexEnter(tls *libc.TLS, p uintptr) {
 54444  	*(*int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&g3)) + 88 + uintptr((*sqlite3_mutex)(unsafe.Pointer(p)).FeType)*4))++
 54445  	(*struct{ f func(*libc.TLS, uintptr) })(unsafe.Pointer(&struct{ uintptr }{g3.Fm.FxMutexEnter})).f(tls, (*sqlite3_mutex)(unsafe.Pointer(p)).FpReal)
 54446  }
 54447  
 54448  func counterMutexTry(tls *libc.TLS, p uintptr) int32 {
 54449  	*(*int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&g3)) + 88 + uintptr((*sqlite3_mutex)(unsafe.Pointer(p)).FeType)*4))++
 54450  	if g3.FdisableTry != 0 {
 54451  		return SQLITE_BUSY
 54452  	}
 54453  	return (*struct {
 54454  		f func(*libc.TLS, uintptr) int32
 54455  	})(unsafe.Pointer(&struct{ uintptr }{g3.Fm.FxMutexTry})).f(tls, (*sqlite3_mutex)(unsafe.Pointer(p)).FpReal)
 54456  }
 54457  
 54458  func counterMutexLeave(tls *libc.TLS, p uintptr) {
 54459  	(*struct{ f func(*libc.TLS, uintptr) })(unsafe.Pointer(&struct{ uintptr }{g3.Fm.FxMutexLeave})).f(tls, (*sqlite3_mutex)(unsafe.Pointer(p)).FpReal)
 54460  }
 54461  
 54462  func test_shutdown(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 54463  	var rc int32
 54464  
 54465  	if objc != 1 {
 54466  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+584)
 54467  		return TCL_ERROR
 54468  	}
 54469  
 54470  	rc = sqlite3.Xsqlite3_shutdown(tls)
 54471  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(1))
 54472  	return TCL_OK
 54473  }
 54474  
 54475  func test_initialize(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 54476  	var rc int32
 54477  
 54478  	if objc != 1 {
 54479  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+584)
 54480  		return TCL_ERROR
 54481  	}
 54482  
 54483  	rc = sqlite3.Xsqlite3_initialize(tls)
 54484  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(1))
 54485  	return TCL_OK
 54486  }
 54487  
 54488  func test_install_mutex_counters(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 54489  	bp := tls.Alloc(136)
 54490  	defer tls.Free(136)
 54491  
 54492  	var rc int32 = SQLITE_OK
 54493  
 54494  	*(*sqlite3_mutex_methods)(unsafe.Pointer(bp + 64)) = sqlite3_mutex_methods{
 54495  		FxMutexInit: *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS) int32 }{counterMutexInit})),
 54496  		FxMutexEnd:  *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS) int32 }{counterMutexEnd})),
 54497  		FxMutexAlloc: *(*uintptr)(unsafe.Pointer(&struct {
 54498  			f func(*libc.TLS, int32) uintptr
 54499  		}{counterMutexAlloc})),
 54500  		FxMutexFree:  *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{counterMutexFree})),
 54501  		FxMutexEnter: *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{counterMutexEnter})),
 54502  		FxMutexTry: *(*uintptr)(unsafe.Pointer(&struct {
 54503  			f func(*libc.TLS, uintptr) int32
 54504  		}{counterMutexTry})),
 54505  		FxMutexLeave: *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{counterMutexLeave})),
 54506  		FxMutexHeld: *(*uintptr)(unsafe.Pointer(&struct {
 54507  			f func(*libc.TLS, uintptr) int32
 54508  		}{counterMutexHeld})),
 54509  		FxMutexNotheld: *(*uintptr)(unsafe.Pointer(&struct {
 54510  			f func(*libc.TLS, uintptr) int32
 54511  		}{counterMutexNotheld})),
 54512  	}
 54513  
 54514  	if objc != 2 {
 54515  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+18324)
 54516  		return TCL_ERROR
 54517  	}
 54518  	if TCL_OK != tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp+56) {
 54519  		return TCL_ERROR
 54520  	}
 54521  
 54522  	if *(*int32)(unsafe.Pointer(bp + 56)) == g3.FisInstalled {
 54523  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+35362, 0))
 54524  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+16, func() uintptr {
 54525  			if *(*int32)(unsafe.Pointer(bp + 56)) != 0 {
 54526  				return ts + 35382
 54527  			}
 54528  			return ts + 35400
 54529  		}(), 0))
 54530  		return TCL_ERROR
 54531  	}
 54532  
 54533  	if *(*int32)(unsafe.Pointer(bp + 56)) != 0 {
 54534  		rc = sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_GETMUTEX, libc.VaList(bp+32, uintptr(unsafe.Pointer(&g3))+16))
 54535  		if rc == SQLITE_OK {
 54536  			sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_MUTEX, libc.VaList(bp+40, bp+64))
 54537  		}
 54538  		g3.FdisableTry = 0
 54539  	} else {
 54540  		rc = sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_MUTEX, libc.VaList(bp+48, uintptr(unsafe.Pointer(&g3))+16))
 54541  		libc.X__builtin___memset_chk(tls, uintptr(unsafe.Pointer(&g3))+16, 0, uint64(unsafe.Sizeof(sqlite3_mutex_methods{})), libc.X__builtin_object_size(tls, uintptr(unsafe.Pointer(&g3))+16, 0))
 54542  	}
 54543  
 54544  	if rc == SQLITE_OK {
 54545  		g3.FisInstalled = *(*int32)(unsafe.Pointer(bp + 56))
 54546  	}
 54547  
 54548  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(1))
 54549  	return TCL_OK
 54550  }
 54551  
 54552  func test_read_mutex_counters(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 54553  	var pRet uintptr
 54554  	var ii int32
 54555  
 54556  	if objc != 1 {
 54557  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+584)
 54558  		return TCL_ERROR
 54559  	}
 54560  
 54561  	pRet = tcl.XTcl_NewObj(tls)
 54562  	(*Tcl_Obj)(unsafe.Pointer(pRet)).FrefCount++
 54563  	for ii = 0; ii < SQLITE_MUTEX_STATIC_VFS3+1; ii++ {
 54564  		tcl.XTcl_ListObjAppendElement(tls, interp, pRet, tcl.XTcl_NewStringObj(tls, aName[ii], -1))
 54565  		tcl.XTcl_ListObjAppendElement(tls, interp, pRet, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&g3)) + 88 + uintptr(ii)*4))))
 54566  	}
 54567  	tcl.XTcl_SetObjResult(tls, interp, pRet)
 54568  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 54569  		if libc.PreDecInt32(&(*Tcl_Obj)(unsafe.Pointer(pRet)).FrefCount, 1) <= 0 {
 54570  			tcl.XTclFreeObj(tls, pRet)
 54571  		}
 54572  	}
 54573  
 54574  	return TCL_OK
 54575  }
 54576  
 54577  func test_clear_mutex_counters(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 54578  	var ii int32
 54579  
 54580  	if objc != 1 {
 54581  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+584)
 54582  		return TCL_ERROR
 54583  	}
 54584  
 54585  	for ii = 0; ii < SQLITE_MUTEX_STATIC_VFS3+1; ii++ {
 54586  		*(*int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&g3)) + 88 + uintptr(ii)*4)) = 0
 54587  	}
 54588  	return TCL_OK
 54589  }
 54590  
 54591  func test_alloc_mutex(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 54592  	bp := tls.Alloc(124)
 54593  	defer tls.Free(124)
 54594  
 54595  	var p uintptr = sqlite3.Xsqlite3_mutex_alloc(tls, SQLITE_MUTEX_FAST)
 54596  
 54597  	sqlite3.Xsqlite3_mutex_free(tls, p)
 54598  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([100]int8{})), bp+24, ts+9889, libc.VaList(bp, p))
 54599  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+8, bp+24, uintptr(0)))
 54600  	return TCL_OK
 54601  }
 54602  
 54603  func test_config(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 54604  	bp := tls.Alloc(68)
 54605  	defer tls.Free(68)
 54606  
 54607  	*(*[4]ConfigOption)(unsafe.Pointer(bp)) = [4]ConfigOption{
 54608  		{FzName: ts + 35414, FiValue: SQLITE_CONFIG_SINGLETHREAD},
 54609  		{FzName: ts + 35427, FiValue: SQLITE_CONFIG_MULTITHREAD},
 54610  		{FzName: ts + 35439, FiValue: SQLITE_CONFIG_SERIALIZED},
 54611  		{},
 54612  	}
 54613  	var s int32 = int32(unsafe.Sizeof(ConfigOption{}))
 54614  
 54615  	var rc int32
 54616  
 54617  	if objc != 2 {
 54618  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+584)
 54619  		return TCL_ERROR
 54620  	}
 54621  
 54622  	if tcl.XTcl_GetIndexFromObjStruct(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp, s, ts+17631, 0, bp+64) != 0 {
 54623  		if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp+64) != 0 {
 54624  			return TCL_ERROR
 54625  		}
 54626  	} else {
 54627  		*(*int32)(unsafe.Pointer(bp + 64)) = (*ConfigOption)(unsafe.Pointer(bp + uintptr(*(*int32)(unsafe.Pointer(bp + 64)))*16)).FiValue
 54628  	}
 54629  
 54630  	rc = sqlite3.Xsqlite3_config(tls, *(*int32)(unsafe.Pointer(bp + 64)), 0)
 54631  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(1))
 54632  	return TCL_OK
 54633  }
 54634  
 54635  type ConfigOption = struct {
 54636  	FzName       uintptr
 54637  	FiValue      int32
 54638  	F__ccgo_pad1 [4]byte
 54639  }
 54640  
 54641  func getDbPointer1(tls *libc.TLS, pInterp uintptr, pObj uintptr) uintptr {
 54642  	bp := tls.Alloc(64)
 54643  	defer tls.Free(64)
 54644  
 54645  	var db uintptr
 54646  
 54647  	var zCmd uintptr = tcl.XTcl_GetString(tls, pObj)
 54648  	if tcl.XTcl_GetCommandInfo(tls, pInterp, zCmd, bp) != 0 {
 54649  		db = *(*uintptr)(unsafe.Pointer((*Tcl_CmdInfo)(unsafe.Pointer(bp)).FobjClientData))
 54650  	} else {
 54651  		db = sqlite3TestTextToPtr(tls, zCmd)
 54652  	}
 54653  
 54654  	return db
 54655  }
 54656  
 54657  func getStaticMutexPointer(tls *libc.TLS, pInterp uintptr, pObj uintptr) uintptr {
 54658  	bp := tls.Alloc(4)
 54659  	defer tls.Free(4)
 54660  
 54661  	if tcl.XTcl_GetIndexFromObj(tls, pInterp, pObj, uintptr(unsafe.Pointer(&aName)), ts+35450, 0, bp) != 0 {
 54662  		return uintptr(0)
 54663  	}
 54664  
 54665  	return counterMutexAlloc(tls, *(*int32)(unsafe.Pointer(bp)))
 54666  }
 54667  
 54668  func test_enter_static_mutex(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 54669  	var pMutex uintptr
 54670  	if objc != 2 {
 54671  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+9762)
 54672  		return TCL_ERROR
 54673  	}
 54674  	pMutex = getStaticMutexPointer(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 54675  	if !(pMutex != 0) {
 54676  		return TCL_ERROR
 54677  	}
 54678  	sqlite3.Xsqlite3_mutex_enter(tls, pMutex)
 54679  	return TCL_OK
 54680  }
 54681  
 54682  func test_leave_static_mutex(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 54683  	var pMutex uintptr
 54684  	if objc != 2 {
 54685  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+9762)
 54686  		return TCL_ERROR
 54687  	}
 54688  	pMutex = getStaticMutexPointer(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 54689  	if !(pMutex != 0) {
 54690  		return TCL_ERROR
 54691  	}
 54692  	sqlite3.Xsqlite3_mutex_leave(tls, pMutex)
 54693  	return TCL_OK
 54694  }
 54695  
 54696  func test_enter_db_mutex(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 54697  	var db uintptr
 54698  	if objc != 2 {
 54699  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2050)
 54700  		return TCL_ERROR
 54701  	}
 54702  	db = getDbPointer1(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 54703  	if !(db != 0) {
 54704  		return TCL_ERROR
 54705  	}
 54706  	sqlite3.Xsqlite3_mutex_enter(tls, sqlite3.Xsqlite3_db_mutex(tls, db))
 54707  	return TCL_OK
 54708  }
 54709  
 54710  func test_leave_db_mutex(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 54711  	var db uintptr
 54712  	if objc != 2 {
 54713  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2050)
 54714  		return TCL_ERROR
 54715  	}
 54716  	db = getDbPointer1(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 54717  	if !(db != 0) {
 54718  		return TCL_ERROR
 54719  	}
 54720  	sqlite3.Xsqlite3_mutex_leave(tls, sqlite3.Xsqlite3_db_mutex(tls, db))
 54721  	return TCL_OK
 54722  }
 54723  
 54724  func Sqlitetest_mutex_Init(tls *libc.TLS, interp uintptr) int32 {
 54725  	var i int32
 54726  	for i = 0; uint64(i) < uint64(unsafe.Sizeof(aCmd8))/uint64(unsafe.Sizeof(struct {
 54727  		FzName uintptr
 54728  		FxProc uintptr
 54729  	}{})); i++ {
 54730  		tcl.XTcl_CreateObjCommand(tls, interp, aCmd8[i].FzName, aCmd8[i].FxProc, uintptr(0), uintptr(0))
 54731  	}
 54732  
 54733  	tcl.XTcl_LinkVar(tls, interp, ts+35461,
 54734  		uintptr(unsafe.Pointer(&g3))+4, TCL_LINK_INT)
 54735  	tcl.XTcl_LinkVar(tls, interp, ts+35480,
 54736  		uintptr(unsafe.Pointer(&g3))+8, TCL_LINK_INT)
 54737  	return SQLITE_OK
 54738  }
 54739  
 54740  var aCmd8 = [11]struct {
 54741  	FzName uintptr
 54742  	FxProc uintptr
 54743  }{
 54744  	{FzName: ts + 35498, FxProc: 0},
 54745  	{FzName: ts + 35515, FxProc: 0},
 54746  	{FzName: ts + 35534, FxProc: 0},
 54747  	{FzName: ts + 35549, FxProc: 0},
 54748  	{FzName: ts + 35568, FxProc: 0},
 54749  	{FzName: ts + 35587, FxProc: 0},
 54750  	{FzName: ts + 35602, FxProc: 0},
 54751  	{FzName: ts + 35617, FxProc: 0},
 54752  	{FzName: ts + 35637, FxProc: 0},
 54753  	{FzName: ts + 35660, FxProc: 0},
 54754  	{FzName: ts + 35680, FxProc: 0},
 54755  }
 54756  
 54757  type fs_real_file1 = struct {
 54758  	FpFile     uintptr
 54759  	FzName     uintptr
 54760  	FnDatabase int32
 54761  	FnJournal  int32
 54762  	FnBlob     int32
 54763  	FnRef      int32
 54764  	FpNext     uintptr
 54765  	FppThis    uintptr
 54766  }
 54767  
 54768  type fs_real_file = fs_real_file1
 54769  
 54770  type fs_file1 = struct {
 54771  	Fbase        sqlite3_file
 54772  	FeType       int32
 54773  	F__ccgo_pad1 [4]byte
 54774  	FpReal       uintptr
 54775  }
 54776  
 54777  type fs_file = fs_file1
 54778  
 54779  type tmp_file1 = struct {
 54780  	Fbase   sqlite3_file
 54781  	FnSize  int32
 54782  	FnAlloc int32
 54783  	FzAlloc uintptr
 54784  }
 54785  
 54786  type tmp_file = tmp_file1
 54787  
 54788  type fs_vfs_t1 = struct {
 54789  	Fbase      sqlite3_vfs
 54790  	FpFileList uintptr
 54791  	FpParent   uintptr
 54792  }
 54793  
 54794  type fs_vfs_t = fs_vfs_t1
 54795  
 54796  var fs_vfs = fs_vfs_t{
 54797  	Fbase: sqlite3_vfs{
 54798  		FiVersion:      1,
 54799  		FzName:         ts + 31238,
 54800  		FxOpen:         0,
 54801  		FxDelete:       0,
 54802  		FxAccess:       0,
 54803  		FxFullPathname: 0,
 54804  		FxDlOpen:       0,
 54805  		FxDlError:      0,
 54806  		FxDlSym:        0,
 54807  		FxDlClose:      0,
 54808  		FxRandomness:   0,
 54809  		FxSleep:        0,
 54810  		FxCurrentTime:  0,
 54811  	},
 54812  }
 54813  
 54814  var fs_io_methods = sqlite3_io_methods{
 54815  	FiVersion:               1,
 54816  	FxClose:                 0,
 54817  	FxRead:                  0,
 54818  	FxWrite:                 0,
 54819  	FxTruncate:              0,
 54820  	FxSync:                  0,
 54821  	FxFileSize:              0,
 54822  	FxLock:                  0,
 54823  	FxUnlock:                0,
 54824  	FxCheckReservedLock:     0,
 54825  	FxFileControl:           0,
 54826  	FxSectorSize:            0,
 54827  	FxDeviceCharacteristics: 0,
 54828  }
 54829  
 54830  var tmp_io_methods = sqlite3_io_methods{
 54831  	FiVersion:               1,
 54832  	FxClose:                 0,
 54833  	FxRead:                  0,
 54834  	FxWrite:                 0,
 54835  	FxTruncate:              0,
 54836  	FxSync:                  0,
 54837  	FxFileSize:              0,
 54838  	FxLock:                  0,
 54839  	FxUnlock:                0,
 54840  	FxCheckReservedLock:     0,
 54841  	FxFileControl:           0,
 54842  	FxSectorSize:            0,
 54843  	FxDeviceCharacteristics: 0,
 54844  }
 54845  
 54846  func tmpClose(tls *libc.TLS, pFile uintptr) int32 {
 54847  	var pTmp uintptr = pFile
 54848  	sqlite3.Xsqlite3_free(tls, (*tmp_file)(unsafe.Pointer(pTmp)).FzAlloc)
 54849  	return SQLITE_OK
 54850  }
 54851  
 54852  func tmpRead(tls *libc.TLS, pFile uintptr, zBuf uintptr, iAmt int32, iOfst sqlite_int64) int32 {
 54853  	var pTmp uintptr = pFile
 54854  	if sqlite_int64(iAmt)+iOfst > sqlite_int64((*tmp_file)(unsafe.Pointer(pTmp)).FnSize) {
 54855  		return SQLITE_IOERR | int32(2)<<8
 54856  	}
 54857  	libc.X__builtin___memcpy_chk(tls, zBuf, (*tmp_file)(unsafe.Pointer(pTmp)).FzAlloc+uintptr(iOfst), uint64(iAmt), libc.X__builtin_object_size(tls, zBuf, 0))
 54858  	return SQLITE_OK
 54859  }
 54860  
 54861  func tmpWrite(tls *libc.TLS, pFile uintptr, zBuf uintptr, iAmt int32, iOfst sqlite_int64) int32 {
 54862  	var pTmp uintptr = pFile
 54863  	if sqlite_int64(iAmt)+iOfst > sqlite_int64((*tmp_file)(unsafe.Pointer(pTmp)).FnAlloc) {
 54864  		var nNew int32 = int32(int64(2) * (sqlite_int64(iAmt) + iOfst + sqlite_int64((*tmp_file)(unsafe.Pointer(pTmp)).FnAlloc)))
 54865  		var zNew uintptr = sqlite3.Xsqlite3_realloc(tls, (*tmp_file)(unsafe.Pointer(pTmp)).FzAlloc, nNew)
 54866  		if !(zNew != 0) {
 54867  			return SQLITE_NOMEM
 54868  		}
 54869  		(*tmp_file)(unsafe.Pointer(pTmp)).FzAlloc = zNew
 54870  		(*tmp_file)(unsafe.Pointer(pTmp)).FnAlloc = nNew
 54871  	}
 54872  	libc.X__builtin___memcpy_chk(tls, (*tmp_file)(unsafe.Pointer(pTmp)).FzAlloc+uintptr(iOfst), zBuf, uint64(iAmt), libc.X__builtin_object_size(tls, (*tmp_file)(unsafe.Pointer(pTmp)).FzAlloc+uintptr(iOfst), 0))
 54873  	(*tmp_file)(unsafe.Pointer(pTmp)).FnSize = func() int32 {
 54874  		if sqlite_int64((*tmp_file)(unsafe.Pointer(pTmp)).FnSize) > iOfst+sqlite_int64(iAmt) {
 54875  			return (*tmp_file)(unsafe.Pointer(pTmp)).FnSize
 54876  		}
 54877  		return int32(iOfst + sqlite_int64(iAmt))
 54878  	}()
 54879  	return SQLITE_OK
 54880  }
 54881  
 54882  func tmpTruncate(tls *libc.TLS, pFile uintptr, size sqlite_int64) int32 {
 54883  	var pTmp uintptr = pFile
 54884  	(*tmp_file)(unsafe.Pointer(pTmp)).FnSize = func() int32 {
 54885  		if sqlite_int64((*tmp_file)(unsafe.Pointer(pTmp)).FnSize) < size {
 54886  			return (*tmp_file)(unsafe.Pointer(pTmp)).FnSize
 54887  		}
 54888  		return int32(size)
 54889  	}()
 54890  	return SQLITE_OK
 54891  }
 54892  
 54893  func tmpSync(tls *libc.TLS, pFile uintptr, flags int32) int32 {
 54894  	return SQLITE_OK
 54895  }
 54896  
 54897  func tmpFileSize(tls *libc.TLS, pFile uintptr, pSize uintptr) int32 {
 54898  	var pTmp uintptr = pFile
 54899  	*(*sqlite_int64)(unsafe.Pointer(pSize)) = sqlite_int64((*tmp_file)(unsafe.Pointer(pTmp)).FnSize)
 54900  	return SQLITE_OK
 54901  }
 54902  
 54903  func tmpLock(tls *libc.TLS, pFile uintptr, eLock int32) int32 {
 54904  	return SQLITE_OK
 54905  }
 54906  
 54907  func tmpUnlock(tls *libc.TLS, pFile uintptr, eLock int32) int32 {
 54908  	return SQLITE_OK
 54909  }
 54910  
 54911  func tmpCheckReservedLock(tls *libc.TLS, pFile uintptr, pResOut uintptr) int32 {
 54912  	*(*int32)(unsafe.Pointer(pResOut)) = 0
 54913  	return SQLITE_OK
 54914  }
 54915  
 54916  func tmpFileControl(tls *libc.TLS, pFile uintptr, op int32, pArg uintptr) int32 {
 54917  	return SQLITE_OK
 54918  }
 54919  
 54920  func tmpSectorSize(tls *libc.TLS, pFile uintptr) int32 {
 54921  	return 0
 54922  }
 54923  
 54924  func tmpDeviceCharacteristics(tls *libc.TLS, pFile uintptr) int32 {
 54925  	return 0
 54926  }
 54927  
 54928  func fsClose1(tls *libc.TLS, pFile uintptr) int32 {
 54929  	var rc int32 = SQLITE_OK
 54930  	var p uintptr = pFile
 54931  	var pReal uintptr = (*fs_file)(unsafe.Pointer(p)).FpReal
 54932  
 54933  	(*fs_real_file)(unsafe.Pointer(pReal)).FnRef--
 54934  
 54935  	if (*fs_real_file)(unsafe.Pointer(pReal)).FnRef == 0 {
 54936  		*(*uintptr)(unsafe.Pointer((*fs_real_file)(unsafe.Pointer(pReal)).FppThis)) = (*fs_real_file)(unsafe.Pointer(pReal)).FpNext
 54937  		if (*fs_real_file)(unsafe.Pointer(pReal)).FpNext != 0 {
 54938  			(*fs_real_file)(unsafe.Pointer((*fs_real_file)(unsafe.Pointer(pReal)).FpNext)).FppThis = (*fs_real_file)(unsafe.Pointer(pReal)).FppThis
 54939  		}
 54940  		rc = (*struct {
 54941  			f func(*libc.TLS, uintptr) int32
 54942  		})(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)
 54943  		sqlite3.Xsqlite3_free(tls, pReal)
 54944  	}
 54945  
 54946  	return rc
 54947  }
 54948  
 54949  func fsRead(tls *libc.TLS, pFile uintptr, zBuf uintptr, iAmt int32, iOfst sqlite_int64) int32 {
 54950  	var rc int32 = SQLITE_OK
 54951  	var p uintptr = pFile
 54952  	var pReal uintptr = (*fs_file)(unsafe.Pointer(p)).FpReal
 54953  	var pF uintptr = (*fs_real_file)(unsafe.Pointer(pReal)).FpFile
 54954  
 54955  	if (*fs_file)(unsafe.Pointer(p)).FeType == DATABASE_FILE && sqlite_int64(iAmt)+iOfst > sqlite_int64((*fs_real_file)(unsafe.Pointer(pReal)).FnDatabase) ||
 54956  		(*fs_file)(unsafe.Pointer(p)).FeType == JOURNAL_FILE && sqlite_int64(iAmt)+iOfst > sqlite_int64((*fs_real_file)(unsafe.Pointer(pReal)).FnJournal) {
 54957  		rc = SQLITE_IOERR | int32(2)<<8
 54958  	} else if (*fs_file)(unsafe.Pointer(p)).FeType == DATABASE_FILE {
 54959  		rc = (*struct {
 54960  			f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 54961  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pF)).FpMethods)).FxRead})).f(tls, pF, zBuf, iAmt, iOfst+int64(BLOCKSIZE))
 54962  	} else {
 54963  		var iRem int32 = iAmt
 54964  		var iBuf int32 = 0
 54965  		var ii int32 = int32(iOfst)
 54966  		for iRem > 0 && rc == SQLITE_OK {
 54967  			var iRealOff int32 = (*fs_real_file)(unsafe.Pointer(pReal)).FnBlob - BLOCKSIZE*(ii/BLOCKSIZE+1) + ii%BLOCKSIZE
 54968  			var iRealAmt int32 = func() int32 {
 54969  				if iRem < BLOCKSIZE-iRealOff%BLOCKSIZE {
 54970  					return iRem
 54971  				}
 54972  				return BLOCKSIZE - iRealOff%BLOCKSIZE
 54973  			}()
 54974  
 54975  			rc = (*struct {
 54976  				f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 54977  			})(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))
 54978  			ii = ii + iRealAmt
 54979  			iBuf = iBuf + iRealAmt
 54980  			iRem = iRem - iRealAmt
 54981  		}
 54982  	}
 54983  
 54984  	return rc
 54985  }
 54986  
 54987  func fsWrite(tls *libc.TLS, pFile uintptr, zBuf uintptr, iAmt int32, iOfst sqlite_int64) int32 {
 54988  	var rc int32 = SQLITE_OK
 54989  	var p uintptr = pFile
 54990  	var pReal uintptr = (*fs_file)(unsafe.Pointer(p)).FpReal
 54991  	var pF uintptr = (*fs_real_file)(unsafe.Pointer(pReal)).FpFile
 54992  
 54993  	if (*fs_file)(unsafe.Pointer(p)).FeType == DATABASE_FILE {
 54994  		if sqlite_int64(iAmt)+iOfst+int64(BLOCKSIZE) > sqlite_int64((*fs_real_file)(unsafe.Pointer(pReal)).FnBlob-(*fs_real_file)(unsafe.Pointer(pReal)).FnJournal) {
 54995  			rc = SQLITE_FULL
 54996  		} else {
 54997  			rc = (*struct {
 54998  				f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 54999  			})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pF)).FpMethods)).FxWrite})).f(tls, pF, zBuf, iAmt, iOfst+int64(BLOCKSIZE))
 55000  			if rc == SQLITE_OK {
 55001  				(*fs_real_file)(unsafe.Pointer(pReal)).FnDatabase = func() int32 {
 55002  					if sqlite_int64((*fs_real_file)(unsafe.Pointer(pReal)).FnDatabase) > sqlite_int64(iAmt)+iOfst {
 55003  						return (*fs_real_file)(unsafe.Pointer(pReal)).FnDatabase
 55004  					}
 55005  					return int32(sqlite_int64(iAmt) + iOfst)
 55006  				}()
 55007  			}
 55008  		}
 55009  	} else {
 55010  		var iRem int32 = iAmt
 55011  		var iBuf int32 = 0
 55012  		var ii int32 = int32(iOfst)
 55013  		for iRem > 0 && rc == SQLITE_OK {
 55014  			var iRealOff int32 = (*fs_real_file)(unsafe.Pointer(pReal)).FnBlob - BLOCKSIZE*(ii/BLOCKSIZE+1) + ii%BLOCKSIZE
 55015  			var iRealAmt int32 = func() int32 {
 55016  				if iRem < BLOCKSIZE-iRealOff%BLOCKSIZE {
 55017  					return iRem
 55018  				}
 55019  				return BLOCKSIZE - iRealOff%BLOCKSIZE
 55020  			}()
 55021  
 55022  			if iRealOff < (*fs_real_file)(unsafe.Pointer(pReal)).FnDatabase+BLOCKSIZE {
 55023  				rc = SQLITE_FULL
 55024  			} else {
 55025  				rc = (*struct {
 55026  					f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 55027  				})(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))
 55028  				ii = ii + iRealAmt
 55029  				iBuf = iBuf + iRealAmt
 55030  				iRem = iRem - iRealAmt
 55031  			}
 55032  		}
 55033  		if rc == SQLITE_OK {
 55034  			(*fs_real_file)(unsafe.Pointer(pReal)).FnJournal = func() int32 {
 55035  				if sqlite_int64((*fs_real_file)(unsafe.Pointer(pReal)).FnJournal) > sqlite_int64(iAmt)+iOfst {
 55036  					return (*fs_real_file)(unsafe.Pointer(pReal)).FnJournal
 55037  				}
 55038  				return int32(sqlite_int64(iAmt) + iOfst)
 55039  			}()
 55040  		}
 55041  	}
 55042  
 55043  	return rc
 55044  }
 55045  
 55046  func fsTruncate(tls *libc.TLS, pFile uintptr, size sqlite_int64) int32 {
 55047  	var p uintptr = pFile
 55048  	var pReal uintptr = (*fs_file)(unsafe.Pointer(p)).FpReal
 55049  	if (*fs_file)(unsafe.Pointer(p)).FeType == DATABASE_FILE {
 55050  		(*fs_real_file)(unsafe.Pointer(pReal)).FnDatabase = func() int32 {
 55051  			if sqlite_int64((*fs_real_file)(unsafe.Pointer(pReal)).FnDatabase) < size {
 55052  				return (*fs_real_file)(unsafe.Pointer(pReal)).FnDatabase
 55053  			}
 55054  			return int32(size)
 55055  		}()
 55056  	} else {
 55057  		(*fs_real_file)(unsafe.Pointer(pReal)).FnJournal = func() int32 {
 55058  			if sqlite_int64((*fs_real_file)(unsafe.Pointer(pReal)).FnJournal) < size {
 55059  				return (*fs_real_file)(unsafe.Pointer(pReal)).FnJournal
 55060  			}
 55061  			return int32(size)
 55062  		}()
 55063  	}
 55064  	return SQLITE_OK
 55065  }
 55066  
 55067  func fsSync(tls *libc.TLS, pFile uintptr, flags int32) int32 {
 55068  	bp := tls.Alloc(4)
 55069  	defer tls.Free(4)
 55070  
 55071  	var p uintptr = pFile
 55072  	var pReal uintptr = (*fs_file)(unsafe.Pointer(p)).FpReal
 55073  	var pRealFile uintptr = (*fs_real_file)(unsafe.Pointer(pReal)).FpFile
 55074  	var rc int32 = SQLITE_OK
 55075  
 55076  	if (*fs_file)(unsafe.Pointer(p)).FeType == DATABASE_FILE {
 55077  		*(*uint8)(unsafe.Pointer(bp)) = uint8(uint32((*fs_real_file)(unsafe.Pointer(pReal)).FnDatabase) & 0xFF000000 >> 24)
 55078  		*(*uint8)(unsafe.Pointer(bp + 1)) = uint8((*fs_real_file)(unsafe.Pointer(pReal)).FnDatabase & 0x00FF0000 >> 16)
 55079  		*(*uint8)(unsafe.Pointer(bp + 2)) = uint8((*fs_real_file)(unsafe.Pointer(pReal)).FnDatabase & 0x0000FF00 >> 8)
 55080  		*(*uint8)(unsafe.Pointer(bp + 3)) = uint8((*fs_real_file)(unsafe.Pointer(pReal)).FnDatabase & 0x000000FF)
 55081  		rc = (*struct {
 55082  			f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 55083  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pRealFile)).FpMethods)).FxWrite})).f(tls, pRealFile, bp, 4, int64(0))
 55084  	}
 55085  	if rc == SQLITE_OK {
 55086  		rc = (*struct {
 55087  			f func(*libc.TLS, uintptr, int32) int32
 55088  		})(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))
 55089  	}
 55090  
 55091  	return rc
 55092  }
 55093  
 55094  func fsFileSize(tls *libc.TLS, pFile uintptr, pSize uintptr) int32 {
 55095  	var p uintptr = pFile
 55096  	var pReal uintptr = (*fs_file)(unsafe.Pointer(p)).FpReal
 55097  	if (*fs_file)(unsafe.Pointer(p)).FeType == DATABASE_FILE {
 55098  		*(*sqlite_int64)(unsafe.Pointer(pSize)) = sqlite_int64((*fs_real_file)(unsafe.Pointer(pReal)).FnDatabase)
 55099  	} else {
 55100  		*(*sqlite_int64)(unsafe.Pointer(pSize)) = sqlite_int64((*fs_real_file)(unsafe.Pointer(pReal)).FnJournal)
 55101  	}
 55102  	return SQLITE_OK
 55103  }
 55104  
 55105  func fsLock(tls *libc.TLS, pFile uintptr, eLock int32) int32 {
 55106  	return SQLITE_OK
 55107  }
 55108  
 55109  func fsUnlock(tls *libc.TLS, pFile uintptr, eLock int32) int32 {
 55110  	return SQLITE_OK
 55111  }
 55112  
 55113  func fsCheckReservedLock(tls *libc.TLS, pFile uintptr, pResOut uintptr) int32 {
 55114  	*(*int32)(unsafe.Pointer(pResOut)) = 0
 55115  	return SQLITE_OK
 55116  }
 55117  
 55118  func fsFileControl(tls *libc.TLS, pFile uintptr, op int32, pArg uintptr) int32 {
 55119  	if op == SQLITE_FCNTL_PRAGMA {
 55120  		return SQLITE_NOTFOUND
 55121  	}
 55122  	return SQLITE_OK
 55123  }
 55124  
 55125  func fsSectorSize(tls *libc.TLS, pFile uintptr) int32 {
 55126  	return BLOCKSIZE
 55127  }
 55128  
 55129  func fsDeviceCharacteristics(tls *libc.TLS, pFile uintptr) int32 {
 55130  	return 0
 55131  }
 55132  
 55133  func fsOpen1(tls *libc.TLS, pVfs uintptr, zName uintptr, pFile uintptr, flags int32, pOutFlags uintptr) int32 {
 55134  	bp := tls.Alloc(12)
 55135  	defer tls.Free(12)
 55136  
 55137  	var pFsVfs uintptr
 55138  	var p uintptr
 55139  	var pReal uintptr
 55140  	var eType int32
 55141  	var nName int32
 55142  	var rc int32
 55143  	var p2 uintptr
 55144  
 55145  	var real_flags int32
 55146  
 55147  	var pRealFile uintptr
 55148  	var pParent uintptr
 55149  	pFsVfs = pVfs
 55150  	p = pFile
 55151  	pReal = uintptr(0)
 55152  	rc = SQLITE_OK
 55153  
 55154  	if !(0 == flags&(SQLITE_OPEN_MAIN_DB|SQLITE_OPEN_MAIN_JOURNAL)) {
 55155  		goto __1
 55156  	}
 55157  	p2 = pFile
 55158  	libc.X__builtin___memset_chk(tls, p2, 0, uint64(unsafe.Sizeof(tmp_file{})), libc.X__builtin_object_size(tls, p2, 0))
 55159  	(*tmp_file)(unsafe.Pointer(p2)).Fbase.FpMethods = uintptr(unsafe.Pointer(&tmp_io_methods))
 55160  	return SQLITE_OK
 55161  __1:
 55162  	;
 55163  	eType = func() int32 {
 55164  		if flags&SQLITE_OPEN_MAIN_DB != 0 {
 55165  			return DATABASE_FILE
 55166  		}
 55167  		return JOURNAL_FILE
 55168  	}()
 55169  	(*fs_file)(unsafe.Pointer(p)).Fbase.FpMethods = uintptr(unsafe.Pointer(&fs_io_methods))
 55170  	(*fs_file)(unsafe.Pointer(p)).FeType = eType
 55171  
 55172  	nName = int32(libc.Xstrlen(tls, zName)) - func() int32 {
 55173  		if eType == JOURNAL_FILE {
 55174  			return 8
 55175  		}
 55176  		return 0
 55177  	}()
 55178  	pReal = (*fs_vfs_t)(unsafe.Pointer(pFsVfs)).FpFileList
 55179  __2:
 55180  	if !(pReal != 0 && libc.Xstrncmp(tls, (*fs_real_file)(unsafe.Pointer(pReal)).FzName, zName, uint64(nName)) != 0) {
 55181  		goto __4
 55182  	}
 55183  	goto __3
 55184  __3:
 55185  	pReal = (*fs_real_file)(unsafe.Pointer(pReal)).FpNext
 55186  	goto __2
 55187  	goto __4
 55188  __4:
 55189  	;
 55190  	if !!(pReal != 0) {
 55191  		goto __5
 55192  	}
 55193  	real_flags = flags&libc.CplInt32(SQLITE_OPEN_MAIN_DB) | SQLITE_OPEN_TEMP_DB
 55194  	pParent = (*fs_vfs_t)(unsafe.Pointer(pFsVfs)).FpParent
 55195  
 55196  	pReal = sqlite3.Xsqlite3_malloc(tls, int32(uint64(unsafe.Sizeof(fs_real_file{}))+uint64((*sqlite3_vfs)(unsafe.Pointer(pParent)).FszOsFile)))
 55197  	if !!(pReal != 0) {
 55198  		goto __6
 55199  	}
 55200  	rc = SQLITE_NOMEM
 55201  	goto open_out
 55202  __6:
 55203  	;
 55204  	libc.X__builtin___memset_chk(tls, pReal, 0, uint64(unsafe.Sizeof(fs_real_file{}))+uint64((*sqlite3_vfs)(unsafe.Pointer(pParent)).FszOsFile), libc.X__builtin_object_size(tls, pReal, 0))
 55205  	(*fs_real_file)(unsafe.Pointer(pReal)).FzName = zName
 55206  	(*fs_real_file)(unsafe.Pointer(pReal)).FpFile = pReal + 1*48
 55207  
 55208  	rc = (*struct {
 55209  		f func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr) int32
 55210  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pParent)).FxOpen})).f(tls, pParent, zName, (*fs_real_file)(unsafe.Pointer(pReal)).FpFile, real_flags, pOutFlags)
 55211  	if !(rc != SQLITE_OK) {
 55212  		goto __7
 55213  	}
 55214  	goto open_out
 55215  __7:
 55216  	;
 55217  	pRealFile = (*fs_real_file)(unsafe.Pointer(pReal)).FpFile
 55218  
 55219  	rc = (*struct {
 55220  		f func(*libc.TLS, uintptr, uintptr) int32
 55221  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pRealFile)).FpMethods)).FxFileSize})).f(tls, pRealFile, bp)
 55222  	if !(rc != SQLITE_OK) {
 55223  		goto __8
 55224  	}
 55225  	goto open_out
 55226  __8:
 55227  	;
 55228  	if !(*(*sqlite3_int64)(unsafe.Pointer(bp)) == int64(0)) {
 55229  		goto __9
 55230  	}
 55231  	rc = (*struct {
 55232  		f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 55233  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pRealFile)).FpMethods)).FxWrite})).f(tls, pRealFile, ts+35701, 1, int64(BLOBSIZE-1))
 55234  	(*fs_real_file)(unsafe.Pointer(pReal)).FnBlob = BLOBSIZE
 55235  	goto __10
 55236  __9:
 55237  	(*fs_real_file)(unsafe.Pointer(pReal)).FnBlob = int32(*(*sqlite3_int64)(unsafe.Pointer(bp)))
 55238  	rc = (*struct {
 55239  		f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 55240  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pRealFile)).FpMethods)).FxRead})).f(tls, pRealFile, bp+8, 4, int64(0))
 55241  	(*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)))
 55242  	if !(rc == SQLITE_OK) {
 55243  		goto __11
 55244  	}
 55245  	rc = (*struct {
 55246  		f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 55247  	})(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))
 55248  	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) {
 55249  		goto __12
 55250  	}
 55251  	(*fs_real_file)(unsafe.Pointer(pReal)).FnJournal = (*fs_real_file)(unsafe.Pointer(pReal)).FnBlob
 55252  __12:
 55253  	;
 55254  __11:
 55255  	;
 55256  __10:
 55257  	;
 55258  	if !(rc == SQLITE_OK) {
 55259  		goto __13
 55260  	}
 55261  	(*fs_real_file)(unsafe.Pointer(pReal)).FpNext = (*fs_vfs_t)(unsafe.Pointer(pFsVfs)).FpFileList
 55262  	if !((*fs_real_file)(unsafe.Pointer(pReal)).FpNext != 0) {
 55263  		goto __14
 55264  	}
 55265  	(*fs_real_file)(unsafe.Pointer((*fs_real_file)(unsafe.Pointer(pReal)).FpNext)).FppThis = pReal + 32
 55266  __14:
 55267  	;
 55268  	(*fs_real_file)(unsafe.Pointer(pReal)).FppThis = pFsVfs + 168
 55269  	(*fs_vfs_t)(unsafe.Pointer(pFsVfs)).FpFileList = pReal
 55270  __13:
 55271  	;
 55272  __5:
 55273  	;
 55274  open_out:
 55275  	if !(pReal != 0) {
 55276  		goto __15
 55277  	}
 55278  	if !(rc == SQLITE_OK) {
 55279  		goto __16
 55280  	}
 55281  	(*fs_file)(unsafe.Pointer(p)).FpReal = pReal
 55282  	(*fs_real_file)(unsafe.Pointer(pReal)).FnRef++
 55283  	goto __17
 55284  __16:
 55285  	if !((*sqlite3_file)(unsafe.Pointer((*fs_real_file)(unsafe.Pointer(pReal)).FpFile)).FpMethods != 0) {
 55286  		goto __18
 55287  	}
 55288  	(*struct {
 55289  		f func(*libc.TLS, uintptr) int32
 55290  	})(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)
 55291  __18:
 55292  	;
 55293  	sqlite3.Xsqlite3_free(tls, pReal)
 55294  __17:
 55295  	;
 55296  __15:
 55297  	;
 55298  	return rc
 55299  }
 55300  
 55301  func fsDelete(tls *libc.TLS, pVfs uintptr, zPath uintptr, dirSync int32) int32 {
 55302  	var rc int32 = SQLITE_OK
 55303  	var pFsVfs uintptr = pVfs
 55304  	var pReal uintptr
 55305  	var pF uintptr
 55306  	var nName int32 = int32(libc.Xstrlen(tls, zPath)) - 8
 55307  
 55308  	pReal = (*fs_vfs_t)(unsafe.Pointer(pFsVfs)).FpFileList
 55309  	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 {
 55310  	}
 55311  	if pReal != 0 {
 55312  		pF = (*fs_real_file)(unsafe.Pointer(pReal)).FpFile
 55313  		rc = (*struct {
 55314  			f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 55315  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pF)).FpMethods)).FxWrite})).f(tls, pF, ts+35703, 4, int64((*fs_real_file)(unsafe.Pointer(pReal)).FnBlob-BLOCKSIZE))
 55316  		if rc == SQLITE_OK {
 55317  			(*fs_real_file)(unsafe.Pointer(pReal)).FnJournal = 0
 55318  		}
 55319  	}
 55320  	return rc
 55321  }
 55322  
 55323  func fsAccess(tls *libc.TLS, pVfs uintptr, zPath uintptr, flags int32, pResOut uintptr) int32 {
 55324  	var pFsVfs uintptr = pVfs
 55325  	var pReal uintptr
 55326  	var isJournal int32 = 0
 55327  	var nName int32 = int32(libc.Xstrlen(tls, zPath))
 55328  
 55329  	if flags != SQLITE_ACCESS_EXISTS {
 55330  		var pParent uintptr = (*fs_vfs_t)(unsafe.Pointer(pVfs)).FpParent
 55331  		return (*struct {
 55332  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 55333  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pParent)).FxAccess})).f(tls, pParent, zPath, flags, pResOut)
 55334  	}
 55335  
 55336  	if nName > 8 && libc.Xstrcmp(tls, ts+32991, zPath+uintptr(nName-8)) == 0 {
 55337  		nName = nName - 8
 55338  		isJournal = 1
 55339  	}
 55340  
 55341  	pReal = (*fs_vfs_t)(unsafe.Pointer(pFsVfs)).FpFileList
 55342  	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 {
 55343  	}
 55344  
 55345  	*(*int32)(unsafe.Pointer(pResOut)) = libc.Bool32(pReal != 0 && (!(isJournal != 0) || (*fs_real_file)(unsafe.Pointer(pReal)).FnJournal > 0))
 55346  	return SQLITE_OK
 55347  }
 55348  
 55349  func fsFullPathname(tls *libc.TLS, pVfs uintptr, zPath uintptr, nOut int32, zOut uintptr) int32 {
 55350  	var pParent uintptr = (*fs_vfs_t)(unsafe.Pointer(pVfs)).FpParent
 55351  	return (*struct {
 55352  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 55353  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pParent)).FxFullPathname})).f(tls, pParent, zPath, nOut, zOut)
 55354  }
 55355  
 55356  func fsDlOpen(tls *libc.TLS, pVfs uintptr, zPath uintptr) uintptr {
 55357  	var pParent uintptr = (*fs_vfs_t)(unsafe.Pointer(pVfs)).FpParent
 55358  	return (*struct {
 55359  		f func(*libc.TLS, uintptr, uintptr) uintptr
 55360  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pParent)).FxDlOpen})).f(tls, pParent, zPath)
 55361  }
 55362  
 55363  func fsDlError(tls *libc.TLS, pVfs uintptr, nByte int32, zErrMsg uintptr) {
 55364  	var pParent uintptr = (*fs_vfs_t)(unsafe.Pointer(pVfs)).FpParent
 55365  	(*struct {
 55366  		f func(*libc.TLS, uintptr, int32, uintptr)
 55367  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pParent)).FxDlError})).f(tls, pParent, nByte, zErrMsg)
 55368  }
 55369  
 55370  func fsDlSym(tls *libc.TLS, pVfs uintptr, pH uintptr, zSym uintptr) uintptr {
 55371  	var pParent uintptr = (*fs_vfs_t)(unsafe.Pointer(pVfs)).FpParent
 55372  	return (*struct {
 55373  		f func(*libc.TLS, uintptr, uintptr, uintptr) uintptr
 55374  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pParent)).FxDlSym})).f(tls, pParent, pH, zSym)
 55375  }
 55376  
 55377  func fsDlClose(tls *libc.TLS, pVfs uintptr, pHandle uintptr) {
 55378  	var pParent uintptr = (*fs_vfs_t)(unsafe.Pointer(pVfs)).FpParent
 55379  	(*struct {
 55380  		f func(*libc.TLS, uintptr, uintptr)
 55381  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pParent)).FxDlClose})).f(tls, pParent, pHandle)
 55382  }
 55383  
 55384  func fsRandomness(tls *libc.TLS, pVfs uintptr, nByte int32, zBufOut uintptr) int32 {
 55385  	var pParent uintptr = (*fs_vfs_t)(unsafe.Pointer(pVfs)).FpParent
 55386  	return (*struct {
 55387  		f func(*libc.TLS, uintptr, int32, uintptr) int32
 55388  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pParent)).FxRandomness})).f(tls, pParent, nByte, zBufOut)
 55389  }
 55390  
 55391  func fsSleep(tls *libc.TLS, pVfs uintptr, nMicro int32) int32 {
 55392  	var pParent uintptr = (*fs_vfs_t)(unsafe.Pointer(pVfs)).FpParent
 55393  	return (*struct {
 55394  		f func(*libc.TLS, uintptr, int32) int32
 55395  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pParent)).FxSleep})).f(tls, pParent, nMicro)
 55396  }
 55397  
 55398  func fsCurrentTime(tls *libc.TLS, pVfs uintptr, pTimeOut uintptr) int32 {
 55399  	var pParent uintptr = (*fs_vfs_t)(unsafe.Pointer(pVfs)).FpParent
 55400  	return (*struct {
 55401  		f func(*libc.TLS, uintptr, uintptr) int32
 55402  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pParent)).FxCurrentTime})).f(tls, pParent, pTimeOut)
 55403  }
 55404  
 55405  func fs_register(tls *libc.TLS) int32 {
 55406  	if fs_vfs.FpParent != 0 {
 55407  		return SQLITE_OK
 55408  	}
 55409  	fs_vfs.FpParent = sqlite3.Xsqlite3_vfs_find(tls, uintptr(0))
 55410  	fs_vfs.Fbase.FmxPathname = (*sqlite3_vfs)(unsafe.Pointer(fs_vfs.FpParent)).FmxPathname
 55411  	fs_vfs.Fbase.FszOsFile = func() int32 {
 55412  		if uint64(unsafe.Sizeof(tmp_file{})) > uint64(unsafe.Sizeof(fs_file{})) {
 55413  			return int32(unsafe.Sizeof(tmp_file{}))
 55414  		}
 55415  		return int32(unsafe.Sizeof(fs_file{}))
 55416  	}()
 55417  	return sqlite3.Xsqlite3_vfs_register(tls, uintptr(unsafe.Pointer(&fs_vfs)), 0)
 55418  }
 55419  
 55420  func SqlitetestOnefile_Init(tls *libc.TLS) int32 {
 55421  	return fs_register(tls)
 55422  }
 55423  
 55424  type VfslogVfs1 = struct {
 55425  	Fbase        sqlite3_vfs
 55426  	FpVfs        uintptr
 55427  	FiNextFileId int32
 55428  	F__ccgo_pad1 [4]byte
 55429  	FpLog        uintptr
 55430  	FiOffset     sqlite3_int64
 55431  	FnBuf        int32
 55432  	FaBuf        [8192]int8
 55433  	F__ccgo_pad2 [4]byte
 55434  }
 55435  
 55436  type VfslogVfs = VfslogVfs1
 55437  type VfslogFile1 = struct {
 55438  	Fbase        sqlite3_file
 55439  	FpReal       uintptr
 55440  	FpVfslog     uintptr
 55441  	FiFileId     int32
 55442  	F__ccgo_pad1 [4]byte
 55443  }
 55444  
 55445  type VfslogFile = VfslogFile1
 55446  
 55447  var vfslog_vfs = sqlite3_vfs{
 55448  	FiVersion:          1,
 55449  	FszOsFile:          int32(unsafe.Sizeof(VfslogFile{})),
 55450  	FmxPathname:        INST_MAX_PATHNAME,
 55451  	FxOpen:             0,
 55452  	FxDelete:           0,
 55453  	FxAccess:           0,
 55454  	FxFullPathname:     0,
 55455  	FxDlOpen:           0,
 55456  	FxDlError:          0,
 55457  	FxDlSym:            0,
 55458  	FxDlClose:          0,
 55459  	FxRandomness:       0,
 55460  	FxSleep:            0,
 55461  	FxCurrentTime:      0,
 55462  	FxGetLastError:     0,
 55463  	FxCurrentTimeInt64: 0,
 55464  }
 55465  
 55466  var vfslog_io_methods = sqlite3_io_methods{
 55467  	FiVersion:               2,
 55468  	FxClose:                 0,
 55469  	FxRead:                  0,
 55470  	FxWrite:                 0,
 55471  	FxTruncate:              0,
 55472  	FxSync:                  0,
 55473  	FxFileSize:              0,
 55474  	FxLock:                  0,
 55475  	FxUnlock:                0,
 55476  	FxCheckReservedLock:     0,
 55477  	FxFileControl:           0,
 55478  	FxSectorSize:            0,
 55479  	FxDeviceCharacteristics: 0,
 55480  	FxShmMap:                0,
 55481  	FxShmLock:               0,
 55482  	FxShmBarrier:            0,
 55483  	FxShmUnmap:              0,
 55484  }
 55485  
 55486  func vfslog_time(tls *libc.TLS) sqlite3_uint64 {
 55487  	bp := tls.Alloc(16)
 55488  	defer tls.Free(16)
 55489  
 55490  	libc.Xgettimeofday(tls, bp, uintptr(0))
 55491  	return sqlite3_uint64((*timeval)(unsafe.Pointer(bp)).Ftv_usec) + sqlite3_uint64((*timeval)(unsafe.Pointer(bp)).Ftv_sec)*uint64(1000000)
 55492  }
 55493  
 55494  func vfslogClose(tls *libc.TLS, pFile uintptr) int32 {
 55495  	var t sqlite3_uint64
 55496  	var rc int32 = SQLITE_OK
 55497  	var p uintptr = pFile
 55498  
 55499  	t = vfslog_time(tls)
 55500  	if (*sqlite3_file)(unsafe.Pointer((*VfslogFile)(unsafe.Pointer(p)).FpReal)).FpMethods != 0 {
 55501  		rc = (*struct {
 55502  			f func(*libc.TLS, uintptr) int32
 55503  		})(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)
 55504  	}
 55505  	t = vfslog_time(tls) - t
 55506  	vfslog_call(tls, (*VfslogFile)(unsafe.Pointer(p)).FpVfslog, OS_CLOSE, (*VfslogFile)(unsafe.Pointer(p)).FiFileId, int64(t), rc, 0, 0)
 55507  	return rc
 55508  }
 55509  
 55510  func vfslogRead(tls *libc.TLS, pFile uintptr, zBuf uintptr, iAmt int32, iOfst sqlite_int64) int32 {
 55511  	var rc int32
 55512  	var t sqlite3_uint64
 55513  	var p uintptr = pFile
 55514  	t = vfslog_time(tls)
 55515  	rc = (*struct {
 55516  		f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 55517  	})(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)
 55518  	t = vfslog_time(tls) - t
 55519  	vfslog_call(tls, (*VfslogFile)(unsafe.Pointer(p)).FpVfslog, OS_READ, (*VfslogFile)(unsafe.Pointer(p)).FiFileId, int64(t), rc, iAmt, int32(iOfst))
 55520  	return rc
 55521  }
 55522  
 55523  func vfslogWrite(tls *libc.TLS, pFile uintptr, z uintptr, iAmt int32, iOfst sqlite_int64) int32 {
 55524  	var rc int32
 55525  	var t sqlite3_uint64
 55526  	var p uintptr = pFile
 55527  	t = vfslog_time(tls)
 55528  	rc = (*struct {
 55529  		f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 55530  	})(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)
 55531  	t = vfslog_time(tls) - t
 55532  	vfslog_call(tls, (*VfslogFile)(unsafe.Pointer(p)).FpVfslog, OS_WRITE, (*VfslogFile)(unsafe.Pointer(p)).FiFileId, int64(t), rc, iAmt, int32(iOfst))
 55533  	return rc
 55534  }
 55535  
 55536  func vfslogTruncate(tls *libc.TLS, pFile uintptr, size sqlite_int64) int32 {
 55537  	var rc int32
 55538  	var t sqlite3_uint64
 55539  	var p uintptr = pFile
 55540  	t = vfslog_time(tls)
 55541  	rc = (*struct {
 55542  		f func(*libc.TLS, uintptr, sqlite3_int64) int32
 55543  	})(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)
 55544  	t = vfslog_time(tls) - t
 55545  	vfslog_call(tls, (*VfslogFile)(unsafe.Pointer(p)).FpVfslog, OS_TRUNCATE, (*VfslogFile)(unsafe.Pointer(p)).FiFileId, int64(t), rc, 0, int32(size))
 55546  	return rc
 55547  }
 55548  
 55549  func vfslogSync(tls *libc.TLS, pFile uintptr, flags int32) int32 {
 55550  	var rc int32
 55551  	var t sqlite3_uint64
 55552  	var p uintptr = pFile
 55553  	t = vfslog_time(tls)
 55554  	rc = (*struct {
 55555  		f func(*libc.TLS, uintptr, int32) int32
 55556  	})(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)
 55557  	t = vfslog_time(tls) - t
 55558  	vfslog_call(tls, (*VfslogFile)(unsafe.Pointer(p)).FpVfslog, OS_SYNC, (*VfslogFile)(unsafe.Pointer(p)).FiFileId, int64(t), rc, flags, 0)
 55559  	return rc
 55560  }
 55561  
 55562  func vfslogFileSize(tls *libc.TLS, pFile uintptr, pSize uintptr) int32 {
 55563  	var rc int32
 55564  	var t sqlite3_uint64
 55565  	var p uintptr = pFile
 55566  	t = vfslog_time(tls)
 55567  	rc = (*struct {
 55568  		f func(*libc.TLS, uintptr, uintptr) int32
 55569  	})(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)
 55570  	t = vfslog_time(tls) - t
 55571  	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))))
 55572  	return rc
 55573  }
 55574  
 55575  func vfslogLock(tls *libc.TLS, pFile uintptr, eLock int32) int32 {
 55576  	var rc int32
 55577  	var t sqlite3_uint64
 55578  	var p uintptr = pFile
 55579  	t = vfslog_time(tls)
 55580  	rc = (*struct {
 55581  		f func(*libc.TLS, uintptr, int32) int32
 55582  	})(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)
 55583  	t = vfslog_time(tls) - t
 55584  	vfslog_call(tls, (*VfslogFile)(unsafe.Pointer(p)).FpVfslog, OS_LOCK, (*VfslogFile)(unsafe.Pointer(p)).FiFileId, int64(t), rc, eLock, 0)
 55585  	return rc
 55586  }
 55587  
 55588  func vfslogUnlock(tls *libc.TLS, pFile uintptr, eLock int32) int32 {
 55589  	var rc int32
 55590  	var t sqlite3_uint64
 55591  	var p uintptr = pFile
 55592  	t = vfslog_time(tls)
 55593  	rc = (*struct {
 55594  		f func(*libc.TLS, uintptr, int32) int32
 55595  	})(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)
 55596  	t = vfslog_time(tls) - t
 55597  	vfslog_call(tls, (*VfslogFile)(unsafe.Pointer(p)).FpVfslog, OS_UNLOCK, (*VfslogFile)(unsafe.Pointer(p)).FiFileId, int64(t), rc, eLock, 0)
 55598  	return rc
 55599  }
 55600  
 55601  func vfslogCheckReservedLock(tls *libc.TLS, pFile uintptr, pResOut uintptr) int32 {
 55602  	var rc int32
 55603  	var t sqlite3_uint64
 55604  	var p uintptr = pFile
 55605  	t = vfslog_time(tls)
 55606  	rc = (*struct {
 55607  		f func(*libc.TLS, uintptr, uintptr) int32
 55608  	})(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)
 55609  	t = vfslog_time(tls) - t
 55610  	vfslog_call(tls, (*VfslogFile)(unsafe.Pointer(p)).FpVfslog, OS_CHECKRESERVEDLOCK, (*VfslogFile)(unsafe.Pointer(p)).FiFileId, int64(t), rc, *(*int32)(unsafe.Pointer(pResOut)), 0)
 55611  	return rc
 55612  }
 55613  
 55614  func vfslogFileControl(tls *libc.TLS, pFile uintptr, op int32, pArg uintptr) int32 {
 55615  	bp := tls.Alloc(8)
 55616  	defer tls.Free(8)
 55617  
 55618  	var p uintptr = pFile
 55619  	var rc int32 = (*struct {
 55620  		f func(*libc.TLS, uintptr, int32, uintptr) int32
 55621  	})(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)
 55622  	if op == SQLITE_FCNTL_VFSNAME && rc == SQLITE_OK {
 55623  		*(*uintptr)(unsafe.Pointer(pArg)) = sqlite3.Xsqlite3_mprintf(tls, ts+35708, libc.VaList(bp, *(*uintptr)(unsafe.Pointer(pArg))))
 55624  	}
 55625  	return rc
 55626  }
 55627  
 55628  func vfslogSectorSize(tls *libc.TLS, pFile uintptr) int32 {
 55629  	var rc int32
 55630  	var t sqlite3_uint64
 55631  	var p uintptr = pFile
 55632  	t = vfslog_time(tls)
 55633  	rc = (*struct {
 55634  		f func(*libc.TLS, uintptr) int32
 55635  	})(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)
 55636  	t = vfslog_time(tls) - t
 55637  	vfslog_call(tls, (*VfslogFile)(unsafe.Pointer(p)).FpVfslog, OS_SECTORSIZE, (*VfslogFile)(unsafe.Pointer(p)).FiFileId, int64(t), rc, 0, 0)
 55638  	return rc
 55639  }
 55640  
 55641  func vfslogDeviceCharacteristics(tls *libc.TLS, pFile uintptr) int32 {
 55642  	var rc int32
 55643  	var t sqlite3_uint64
 55644  	var p uintptr = pFile
 55645  	t = vfslog_time(tls)
 55646  	rc = (*struct {
 55647  		f func(*libc.TLS, uintptr) int32
 55648  	})(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)
 55649  	t = vfslog_time(tls) - t
 55650  	vfslog_call(tls, (*VfslogFile)(unsafe.Pointer(p)).FpVfslog, OS_DEVCHAR, (*VfslogFile)(unsafe.Pointer(p)).FiFileId, int64(t), rc, 0, 0)
 55651  	return rc
 55652  }
 55653  
 55654  func vfslogShmLock(tls *libc.TLS, pFile uintptr, ofst int32, n int32, flags int32) int32 {
 55655  	var rc int32
 55656  	var t sqlite3_uint64
 55657  	var p uintptr = pFile
 55658  	t = vfslog_time(tls)
 55659  	rc = (*struct {
 55660  		f func(*libc.TLS, uintptr, int32, int32, int32) int32
 55661  	})(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)
 55662  	t = vfslog_time(tls) - t
 55663  	vfslog_call(tls, (*VfslogFile)(unsafe.Pointer(p)).FpVfslog, OS_SHMLOCK, (*VfslogFile)(unsafe.Pointer(p)).FiFileId, int64(t), rc, 0, 0)
 55664  	return rc
 55665  }
 55666  
 55667  func vfslogShmMap(tls *libc.TLS, pFile uintptr, iRegion int32, szRegion int32, isWrite int32, pp uintptr) int32 {
 55668  	var rc int32
 55669  	var t sqlite3_uint64
 55670  	var p uintptr = pFile
 55671  	t = vfslog_time(tls)
 55672  	rc = (*struct {
 55673  		f func(*libc.TLS, uintptr, int32, int32, int32, uintptr) int32
 55674  	})(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)
 55675  	t = vfslog_time(tls) - t
 55676  	vfslog_call(tls, (*VfslogFile)(unsafe.Pointer(p)).FpVfslog, OS_SHMMAP, (*VfslogFile)(unsafe.Pointer(p)).FiFileId, int64(t), rc, 0, 0)
 55677  	return rc
 55678  }
 55679  
 55680  func vfslogShmBarrier(tls *libc.TLS, pFile uintptr) {
 55681  	var t sqlite3_uint64
 55682  	var p uintptr = pFile
 55683  	t = vfslog_time(tls)
 55684  	(*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)
 55685  	t = vfslog_time(tls) - t
 55686  	vfslog_call(tls, (*VfslogFile)(unsafe.Pointer(p)).FpVfslog, OS_SHMBARRIER, (*VfslogFile)(unsafe.Pointer(p)).FiFileId, int64(t), SQLITE_OK, 0, 0)
 55687  }
 55688  
 55689  func vfslogShmUnmap(tls *libc.TLS, pFile uintptr, deleteFlag int32) int32 {
 55690  	var rc int32
 55691  	var t sqlite3_uint64
 55692  	var p uintptr = pFile
 55693  	t = vfslog_time(tls)
 55694  	rc = (*struct {
 55695  		f func(*libc.TLS, uintptr, int32) int32
 55696  	})(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)
 55697  	t = vfslog_time(tls) - t
 55698  	vfslog_call(tls, (*VfslogFile)(unsafe.Pointer(p)).FpVfslog, OS_SHMUNMAP, (*VfslogFile)(unsafe.Pointer(p)).FiFileId, int64(t), rc, 0, 0)
 55699  	return rc
 55700  }
 55701  
 55702  func vfslogOpen(tls *libc.TLS, pVfs uintptr, zName uintptr, pFile uintptr, flags int32, pOutFlags uintptr) int32 {
 55703  	var rc int32
 55704  	var t sqlite3_uint64
 55705  	var p uintptr = pFile
 55706  	var pLog uintptr = pVfs
 55707  
 55708  	(*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods = uintptr(unsafe.Pointer(&vfslog_io_methods))
 55709  	(*VfslogFile)(unsafe.Pointer(p)).FpReal = p + 1*32
 55710  	(*VfslogFile)(unsafe.Pointer(p)).FpVfslog = pVfs
 55711  	(*VfslogFile)(unsafe.Pointer(p)).FiFileId = libc.PreIncInt32(&(*VfslogVfs)(unsafe.Pointer(pLog)).FiNextFileId, 1)
 55712  
 55713  	t = vfslog_time(tls)
 55714  	rc = (*struct {
 55715  		f func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr) int32
 55716  	})(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)
 55717  	t = vfslog_time(tls) - t
 55718  
 55719  	vfslog_call(tls, pVfs, OS_OPEN, (*VfslogFile)(unsafe.Pointer(p)).FiFileId, int64(t), rc, 0, 0)
 55720  	vfslog_string(tls, pVfs, zName)
 55721  	return rc
 55722  }
 55723  
 55724  func vfslogDelete(tls *libc.TLS, pVfs uintptr, zPath uintptr, dirSync int32) int32 {
 55725  	var rc int32
 55726  	var t sqlite3_uint64
 55727  	t = vfslog_time(tls)
 55728  	rc = (*struct {
 55729  		f func(*libc.TLS, uintptr, uintptr, int32) int32
 55730  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*VfslogVfs)(unsafe.Pointer(pVfs)).FpVfs)).FxDelete})).f(tls, (*VfslogVfs)(unsafe.Pointer(pVfs)).FpVfs, zPath, dirSync)
 55731  	t = vfslog_time(tls) - t
 55732  	vfslog_call(tls, pVfs, OS_DELETE, 0, int64(t), rc, dirSync, 0)
 55733  	vfslog_string(tls, pVfs, zPath)
 55734  	return rc
 55735  }
 55736  
 55737  func vfslogAccess(tls *libc.TLS, pVfs uintptr, zPath uintptr, flags int32, pResOut uintptr) int32 {
 55738  	var rc int32
 55739  	var t sqlite3_uint64
 55740  	t = vfslog_time(tls)
 55741  	rc = (*struct {
 55742  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 55743  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*VfslogVfs)(unsafe.Pointer(pVfs)).FpVfs)).FxAccess})).f(tls, (*VfslogVfs)(unsafe.Pointer(pVfs)).FpVfs, zPath, flags, pResOut)
 55744  	t = vfslog_time(tls) - t
 55745  	vfslog_call(tls, pVfs, OS_ACCESS, 0, int64(t), rc, flags, *(*int32)(unsafe.Pointer(pResOut)))
 55746  	vfslog_string(tls, pVfs, zPath)
 55747  	return rc
 55748  }
 55749  
 55750  func vfslogFullPathname(tls *libc.TLS, pVfs uintptr, zPath uintptr, nOut int32, zOut uintptr) int32 {
 55751  	return (*struct {
 55752  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 55753  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*VfslogVfs)(unsafe.Pointer(pVfs)).FpVfs)).FxFullPathname})).f(tls, (*VfslogVfs)(unsafe.Pointer(pVfs)).FpVfs, zPath, nOut, zOut)
 55754  }
 55755  
 55756  func vfslogDlOpen(tls *libc.TLS, pVfs uintptr, zPath uintptr) uintptr {
 55757  	return (*struct {
 55758  		f func(*libc.TLS, uintptr, uintptr) uintptr
 55759  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*VfslogVfs)(unsafe.Pointer(pVfs)).FpVfs)).FxDlOpen})).f(tls, (*VfslogVfs)(unsafe.Pointer(pVfs)).FpVfs, zPath)
 55760  }
 55761  
 55762  func vfslogDlError(tls *libc.TLS, pVfs uintptr, nByte int32, zErrMsg uintptr) {
 55763  	(*struct {
 55764  		f func(*libc.TLS, uintptr, int32, uintptr)
 55765  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*VfslogVfs)(unsafe.Pointer(pVfs)).FpVfs)).FxDlError})).f(tls, (*VfslogVfs)(unsafe.Pointer(pVfs)).FpVfs, nByte, zErrMsg)
 55766  }
 55767  
 55768  func vfslogDlSym(tls *libc.TLS, pVfs uintptr, p uintptr, zSym uintptr) uintptr {
 55769  	return (*struct {
 55770  		f func(*libc.TLS, uintptr, uintptr, uintptr) uintptr
 55771  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*VfslogVfs)(unsafe.Pointer(pVfs)).FpVfs)).FxDlSym})).f(tls, (*VfslogVfs)(unsafe.Pointer(pVfs)).FpVfs, p, zSym)
 55772  }
 55773  
 55774  func vfslogDlClose(tls *libc.TLS, pVfs uintptr, pHandle uintptr) {
 55775  	(*struct {
 55776  		f func(*libc.TLS, uintptr, uintptr)
 55777  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*VfslogVfs)(unsafe.Pointer(pVfs)).FpVfs)).FxDlClose})).f(tls, (*VfslogVfs)(unsafe.Pointer(pVfs)).FpVfs, pHandle)
 55778  }
 55779  
 55780  func vfslogRandomness(tls *libc.TLS, pVfs uintptr, nByte int32, zBufOut uintptr) int32 {
 55781  	return (*struct {
 55782  		f func(*libc.TLS, uintptr, int32, uintptr) int32
 55783  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*VfslogVfs)(unsafe.Pointer(pVfs)).FpVfs)).FxRandomness})).f(tls, (*VfslogVfs)(unsafe.Pointer(pVfs)).FpVfs, nByte, zBufOut)
 55784  }
 55785  
 55786  func vfslogSleep(tls *libc.TLS, pVfs uintptr, nMicro int32) int32 {
 55787  	return (*struct {
 55788  		f func(*libc.TLS, uintptr, int32) int32
 55789  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*VfslogVfs)(unsafe.Pointer(pVfs)).FpVfs)).FxSleep})).f(tls, (*VfslogVfs)(unsafe.Pointer(pVfs)).FpVfs, nMicro)
 55790  }
 55791  
 55792  func vfslogCurrentTime(tls *libc.TLS, pVfs uintptr, pTimeOut uintptr) int32 {
 55793  	return (*struct {
 55794  		f func(*libc.TLS, uintptr, uintptr) int32
 55795  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*VfslogVfs)(unsafe.Pointer(pVfs)).FpVfs)).FxCurrentTime})).f(tls, (*VfslogVfs)(unsafe.Pointer(pVfs)).FpVfs, pTimeOut)
 55796  }
 55797  
 55798  func vfslogGetLastError(tls *libc.TLS, pVfs uintptr, a int32, b uintptr) int32 {
 55799  	return (*struct {
 55800  		f func(*libc.TLS, uintptr, int32, uintptr) int32
 55801  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*VfslogVfs)(unsafe.Pointer(pVfs)).FpVfs)).FxGetLastError})).f(tls, (*VfslogVfs)(unsafe.Pointer(pVfs)).FpVfs, a, b)
 55802  }
 55803  
 55804  func vfslogCurrentTimeInt64(tls *libc.TLS, pVfs uintptr, p uintptr) int32 {
 55805  	return (*struct {
 55806  		f func(*libc.TLS, uintptr, uintptr) int32
 55807  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*VfslogVfs)(unsafe.Pointer(pVfs)).FpVfs)).FxCurrentTimeInt64})).f(tls, (*VfslogVfs)(unsafe.Pointer(pVfs)).FpVfs, p)
 55808  }
 55809  
 55810  func vfslog_flush(tls *libc.TLS, p uintptr) {
 55811  	var pending int32 = libc.AtomicLoadInt32(&sqlite3.Xsqlite3_io_error_pending)
 55812  	var persist int32 = sqlite3.Xsqlite3_io_error_persist
 55813  	var diskfull int32 = sqlite3.Xsqlite3_diskfull_pending
 55814  
 55815  	libc.AtomicStoreInt32(&sqlite3.Xsqlite3_io_error_pending, int32(0))
 55816  	sqlite3.Xsqlite3_io_error_persist = 0
 55817  	sqlite3.Xsqlite3_diskfull_pending = 0
 55818  
 55819  	if (*VfslogVfs)(unsafe.Pointer(p)).FnBuf != 0 {
 55820  		(*struct {
 55821  			f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 55822  		})(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)
 55823  		*(*sqlite3_int64)(unsafe.Pointer(p + 192)) += sqlite3_int64((*VfslogVfs)(unsafe.Pointer(p)).FnBuf)
 55824  		(*VfslogVfs)(unsafe.Pointer(p)).FnBuf = 0
 55825  	}
 55826  
 55827  	libc.AtomicStoreInt32(&sqlite3.Xsqlite3_io_error_pending, pending)
 55828  	sqlite3.Xsqlite3_io_error_persist = persist
 55829  	sqlite3.Xsqlite3_diskfull_pending = diskfull
 55830  }
 55831  
 55832  func put32bits(tls *libc.TLS, p uintptr, v uint32) {
 55833  	*(*uint8)(unsafe.Pointer(p)) = uint8(v >> 24)
 55834  	*(*uint8)(unsafe.Pointer(p + 1)) = uint8(v >> 16)
 55835  	*(*uint8)(unsafe.Pointer(p + 2)) = uint8(v >> 8)
 55836  	*(*uint8)(unsafe.Pointer(p + 3)) = uint8(v)
 55837  }
 55838  
 55839  func vfslog_call(tls *libc.TLS, pVfs uintptr, eEvent int32, iFileid int32, nClick sqlite3_int64, return_code int32, size int32, offset int32) {
 55840  	var p uintptr = pVfs
 55841  	var zRec uintptr
 55842  	if uint64(24+(*VfslogVfs)(unsafe.Pointer(p)).FnBuf) > uint64(unsafe.Sizeof([8192]int8{})) {
 55843  		vfslog_flush(tls, p)
 55844  	}
 55845  	zRec = p + 204 + uintptr((*VfslogVfs)(unsafe.Pointer(p)).FnBuf)
 55846  	put32bits(tls, zRec, uint32(eEvent))
 55847  	put32bits(tls, zRec+4, uint32(iFileid))
 55848  	put32bits(tls, zRec+8, uint32(nClick&int64(0xffff)))
 55849  	put32bits(tls, zRec+12, uint32(return_code))
 55850  	put32bits(tls, zRec+16, uint32(size))
 55851  	put32bits(tls, zRec+20, uint32(offset))
 55852  	*(*int32)(unsafe.Pointer(p + 200)) += 24
 55853  }
 55854  
 55855  func vfslog_string(tls *libc.TLS, pVfs uintptr, zStr uintptr) {
 55856  	var p uintptr = pVfs
 55857  	var zRec uintptr
 55858  	var nStr int32
 55859  	if zStr != 0 {
 55860  		nStr = int32(libc.Xstrlen(tls, zStr))
 55861  	} else {
 55862  		nStr = 0
 55863  	}
 55864  	if uint64(4+nStr+(*VfslogVfs)(unsafe.Pointer(p)).FnBuf) > uint64(unsafe.Sizeof([8192]int8{})) {
 55865  		vfslog_flush(tls, p)
 55866  	}
 55867  	zRec = p + 204 + uintptr((*VfslogVfs)(unsafe.Pointer(p)).FnBuf)
 55868  	put32bits(tls, zRec, uint32(nStr))
 55869  	if zStr != 0 {
 55870  		libc.X__builtin___memcpy_chk(tls, zRec+4, zStr, uint64(nStr), libc.X__builtin_object_size(tls, zRec+4, 0))
 55871  	}
 55872  	*(*int32)(unsafe.Pointer(p + 200)) += 4 + nStr
 55873  }
 55874  
 55875  func vfslog_finalize(tls *libc.TLS, p uintptr) {
 55876  	if (*sqlite3_file)(unsafe.Pointer((*VfslogVfs)(unsafe.Pointer(p)).FpLog)).FpMethods != 0 {
 55877  		vfslog_flush(tls, p)
 55878  		(*struct {
 55879  			f func(*libc.TLS, uintptr) int32
 55880  		})(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)
 55881  	}
 55882  	sqlite3.Xsqlite3_free(tls, p)
 55883  }
 55884  
 55885  func sqlite3_vfslog_finalize(tls *libc.TLS, zVfs uintptr) int32 {
 55886  	var pVfs uintptr
 55887  	pVfs = sqlite3.Xsqlite3_vfs_find(tls, zVfs)
 55888  	if !(pVfs != 0) || (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FxOpen != *(*uintptr)(unsafe.Pointer(&struct {
 55889  		f func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr) int32
 55890  	}{vfslogOpen})) {
 55891  		return SQLITE_ERROR
 55892  	}
 55893  	sqlite3.Xsqlite3_vfs_unregister(tls, pVfs)
 55894  	vfslog_finalize(tls, pVfs)
 55895  	return SQLITE_OK
 55896  }
 55897  
 55898  func sqlite3_vfslog_new(tls *libc.TLS, zVfs uintptr, zParentVfs uintptr, zLog uintptr) int32 {
 55899  	bp := tls.Alloc(4)
 55900  	defer tls.Free(4)
 55901  
 55902  	var p uintptr
 55903  	var pParent uintptr
 55904  	var nByte int32
 55905  
 55906  	var rc int32
 55907  	var zFile uintptr
 55908  	var nVfs int32
 55909  
 55910  	pParent = sqlite3.Xsqlite3_vfs_find(tls, zParentVfs)
 55911  	if !(pParent != 0) {
 55912  		return SQLITE_ERROR
 55913  	}
 55914  
 55915  	nVfs = int32(libc.Xstrlen(tls, zVfs))
 55916  	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))
 55917  	p = sqlite3.Xsqlite3_malloc(tls, nByte)
 55918  	libc.X__builtin___memset_chk(tls, p, 0, uint64(nByte), libc.X__builtin_object_size(tls, p, 0))
 55919  
 55920  	(*VfslogVfs)(unsafe.Pointer(p)).FpVfs = pParent
 55921  	(*VfslogVfs)(unsafe.Pointer(p)).FpLog = p + 1*8400
 55922  	libc.X__builtin___memcpy_chk(tls, p, uintptr(unsafe.Pointer(&vfslog_vfs)), uint64(unsafe.Sizeof(sqlite3_vfs{})), libc.X__builtin_object_size(tls, p, 0))
 55923  	(*VfslogVfs)(unsafe.Pointer(p)).Fbase.FzName = (*VfslogVfs)(unsafe.Pointer(p)).FpLog + uintptr((*sqlite3_vfs)(unsafe.Pointer(pParent)).FszOsFile)
 55924  	*(*int32)(unsafe.Pointer(p + 4)) += (*sqlite3_vfs)(unsafe.Pointer(pParent)).FszOsFile
 55925  	libc.X__builtin___memcpy_chk(tls, (*VfslogVfs)(unsafe.Pointer(p)).Fbase.FzName, zVfs, uint64(nVfs), libc.X__builtin_object_size(tls, (*VfslogVfs)(unsafe.Pointer(p)).Fbase.FzName, 0))
 55926  
 55927  	zFile = (*VfslogVfs)(unsafe.Pointer(p)).Fbase.FzName + uintptr(nVfs+1)
 55928  	(*struct {
 55929  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 55930  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pParent)).FxFullPathname})).f(tls, pParent, zLog, (*sqlite3_vfs)(unsafe.Pointer(pParent)).FmxPathname, zFile)
 55931  
 55932  	*(*int32)(unsafe.Pointer(bp)) = SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE | SQLITE_OPEN_SUPER_JOURNAL
 55933  	(*struct {
 55934  		f func(*libc.TLS, uintptr, uintptr, int32) int32
 55935  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pParent)).FxDelete})).f(tls, pParent, zFile, 0)
 55936  	rc = (*struct {
 55937  		f func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr) int32
 55938  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pParent)).FxOpen})).f(tls, pParent, zFile, (*VfslogVfs)(unsafe.Pointer(p)).FpLog, *(*int32)(unsafe.Pointer(bp)), bp)
 55939  	if rc == SQLITE_OK {
 55940  		libc.X__builtin___memcpy_chk(tls, p+204, ts+35718, uint64(20), libc.X__builtin_object_size(tls, p+204, 0))
 55941  		(*VfslogVfs)(unsafe.Pointer(p)).FiOffset = int64(0)
 55942  		(*VfslogVfs)(unsafe.Pointer(p)).FnBuf = 20
 55943  		rc = sqlite3.Xsqlite3_vfs_register(tls, p, 1)
 55944  	}
 55945  	if rc != 0 {
 55946  		vfslog_finalize(tls, p)
 55947  	}
 55948  	return rc
 55949  }
 55950  
 55951  func sqlite3_vfslog_annotate(tls *libc.TLS, zVfs uintptr, zMsg uintptr) int32 {
 55952  	var pVfs uintptr
 55953  	pVfs = sqlite3.Xsqlite3_vfs_find(tls, zVfs)
 55954  	if !(pVfs != 0) || (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FxOpen != *(*uintptr)(unsafe.Pointer(&struct {
 55955  		f func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr) int32
 55956  	}{vfslogOpen})) {
 55957  		return SQLITE_ERROR
 55958  	}
 55959  	vfslog_call(tls, pVfs, OS_ANNOTATE, 0, int64(0), 0, 0, 0)
 55960  	vfslog_string(tls, pVfs, zMsg)
 55961  	return SQLITE_OK
 55962  }
 55963  
 55964  func vfslog_eventname(tls *libc.TLS, eEvent int32) uintptr {
 55965  	var zEvent uintptr = uintptr(0)
 55966  
 55967  	switch eEvent {
 55968  	case OS_CLOSE:
 55969  		zEvent = ts + 35739
 55970  		break
 55971  	case OS_READ:
 55972  		zEvent = ts + 35746
 55973  		break
 55974  	case OS_WRITE:
 55975  		zEvent = ts + 35752
 55976  		break
 55977  	case OS_TRUNCATE:
 55978  		zEvent = ts + 35759
 55979  		break
 55980  	case OS_SYNC:
 55981  		zEvent = ts + 27947
 55982  		break
 55983  	case OS_FILESIZE:
 55984  		zEvent = ts + 35769
 55985  		break
 55986  	case OS_LOCK:
 55987  		zEvent = ts + 35779
 55988  		break
 55989  	case OS_UNLOCK:
 55990  		zEvent = ts + 35785
 55991  		break
 55992  	case OS_CHECKRESERVEDLOCK:
 55993  		zEvent = ts + 35793
 55994  		break
 55995  	case OS_FILECONTROL:
 55996  		zEvent = ts + 35807
 55997  		break
 55998  	case OS_SECTORSIZE:
 55999  		zEvent = ts + 35820
 56000  		break
 56001  	case OS_DEVCHAR:
 56002  		zEvent = ts + 35832
 56003  		break
 56004  	case OS_OPEN:
 56005  		zEvent = ts + 27525
 56006  		break
 56007  	case OS_DELETE:
 56008  		zEvent = ts + 35844
 56009  		break
 56010  	case OS_ACCESS:
 56011  		zEvent = ts + 35852
 56012  		break
 56013  	case OS_FULLPATHNAME:
 56014  		zEvent = ts + 35860
 56015  		break
 56016  	case OS_RANDOMNESS:
 56017  		zEvent = ts + 35874
 56018  		break
 56019  	case OS_SLEEP:
 56020  		zEvent = ts + 35886
 56021  		break
 56022  	case OS_CURRENTTIME:
 56023  		zEvent = ts + 35893
 56024  		break
 56025  
 56026  	case OS_SHMUNMAP:
 56027  		zEvent = ts + 35906
 56028  		break
 56029  	case OS_SHMLOCK:
 56030  		zEvent = ts + 35916
 56031  		break
 56032  	case OS_SHMBARRIER:
 56033  		zEvent = ts + 35925
 56034  		break
 56035  	case OS_SHMMAP:
 56036  		zEvent = ts + 35937
 56037  		break
 56038  
 56039  	case OS_ANNOTATE:
 56040  		zEvent = ts + 35945
 56041  		break
 56042  	}
 56043  
 56044  	return zEvent
 56045  }
 56046  
 56047  type VfslogVtab1 = struct {
 56048  	Fbase  sqlite3_vtab
 56049  	FpFd   uintptr
 56050  	FnByte sqlite3_int64
 56051  	FzFile uintptr
 56052  }
 56053  
 56054  type VfslogVtab = VfslogVtab1
 56055  type VfslogCsr1 = struct {
 56056  	Fbase        sqlite3_vtab_cursor
 56057  	FiRowid      sqlite3_int64
 56058  	FiOffset     sqlite3_int64
 56059  	FzTransient  uintptr
 56060  	FnFile       int32
 56061  	F__ccgo_pad1 [4]byte
 56062  	FazFile      uintptr
 56063  	FaBuf        [1024]uint8
 56064  }
 56065  
 56066  type VfslogCsr = VfslogCsr1
 56067  
 56068  func get32bits(tls *libc.TLS, p uintptr) uint32 {
 56069  	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))))
 56070  }
 56071  
 56072  func dequote(tls *libc.TLS, z uintptr) {
 56073  	var quote int8
 56074  	quote = *(*int8)(unsafe.Pointer(z))
 56075  	if int32(quote) == '[' || int32(quote) == '\'' || int32(quote) == '"' || int32(quote) == '`' {
 56076  		var iIn int32 = 1
 56077  		var iOut int32 = 0
 56078  		if int32(quote) == '[' {
 56079  			quote = int8(']')
 56080  		}
 56081  		for *(*int8)(unsafe.Pointer(z + uintptr(iIn))) != 0 {
 56082  			if int32(*(*int8)(unsafe.Pointer(z + uintptr(iIn)))) == int32(quote) {
 56083  				if int32(*(*int8)(unsafe.Pointer(z + uintptr(iIn+1)))) != int32(quote) {
 56084  					break
 56085  				}
 56086  				*(*int8)(unsafe.Pointer(z + uintptr(libc.PostIncInt32(&iOut, 1)))) = quote
 56087  				iIn = iIn + 2
 56088  			} else {
 56089  				*(*int8)(unsafe.Pointer(z + uintptr(libc.PostIncInt32(&iOut, 1)))) = *(*int8)(unsafe.Pointer(z + uintptr(libc.PostIncInt32(&iIn, 1))))
 56090  			}
 56091  		}
 56092  		*(*int8)(unsafe.Pointer(z + uintptr(iOut))) = int8(0)
 56093  	}
 56094  }
 56095  
 56096  func vlogConnect(tls *libc.TLS, db uintptr, pAux uintptr, argc int32, argv uintptr, ppVtab uintptr, pzErr uintptr) int32 {
 56097  	bp := tls.Alloc(12)
 56098  	defer tls.Free(12)
 56099  
 56100  	var pVfs uintptr
 56101  
 56102  	var p uintptr
 56103  	var rc int32
 56104  	var nByte int32
 56105  	var zFile uintptr
 56106  
 56107  	*(*uintptr)(unsafe.Pointer(ppVtab)) = uintptr(0)
 56108  	pVfs = sqlite3.Xsqlite3_vfs_find(tls, uintptr(0))
 56109  	nByte = int32(uint64(unsafe.Sizeof(VfslogVtab{})) + uint64((*sqlite3_vfs)(unsafe.Pointer(pVfs)).FszOsFile) + uint64((*sqlite3_vfs)(unsafe.Pointer(pVfs)).FmxPathname))
 56110  	p = sqlite3.Xsqlite3_malloc(tls, nByte)
 56111  	if p == uintptr(0) {
 56112  		return SQLITE_NOMEM
 56113  	}
 56114  	libc.X__builtin___memset_chk(tls, p, 0, uint64(nByte), libc.X__builtin_object_size(tls, p, 0))
 56115  
 56116  	(*VfslogVtab)(unsafe.Pointer(p)).FpFd = p + 1*48
 56117  	(*VfslogVtab)(unsafe.Pointer(p)).FzFile = (*VfslogVtab)(unsafe.Pointer(p)).FpFd + uintptr((*sqlite3_vfs)(unsafe.Pointer(pVfs)).FszOsFile)
 56118  
 56119  	zFile = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp, *(*uintptr)(unsafe.Pointer(argv + 3*8))))
 56120  	if !(zFile != 0) {
 56121  		sqlite3.Xsqlite3_free(tls, p)
 56122  		return SQLITE_NOMEM
 56123  	}
 56124  	dequote(tls, zFile)
 56125  	(*struct {
 56126  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 56127  	})(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)
 56128  	sqlite3.Xsqlite3_free(tls, zFile)
 56129  
 56130  	*(*int32)(unsafe.Pointer(bp + 8)) = SQLITE_OPEN_READWRITE | SQLITE_OPEN_SUPER_JOURNAL
 56131  	rc = (*struct {
 56132  		f func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr) int32
 56133  	})(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)
 56134  
 56135  	if rc == SQLITE_OK {
 56136  		(*struct {
 56137  			f func(*libc.TLS, uintptr, uintptr) int32
 56138  		})(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)
 56139  		sqlite3.Xsqlite3_declare_vtab(tls, db,
 56140  			ts+35956)
 56141  		*(*uintptr)(unsafe.Pointer(ppVtab)) = p
 56142  	} else {
 56143  		sqlite3.Xsqlite3_free(tls, p)
 56144  	}
 56145  
 56146  	return rc
 56147  }
 56148  
 56149  func vlogBestIndex(tls *libc.TLS, tab uintptr, pIdxInfo uintptr) int32 {
 56150  	(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = 10.0
 56151  	return SQLITE_OK
 56152  }
 56153  
 56154  func vlogDisconnect(tls *libc.TLS, pVtab uintptr) int32 {
 56155  	var p uintptr = pVtab
 56156  	if (*sqlite3_file)(unsafe.Pointer((*VfslogVtab)(unsafe.Pointer(p)).FpFd)).FpMethods != 0 {
 56157  		(*struct {
 56158  			f func(*libc.TLS, uintptr) int32
 56159  		})(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)
 56160  		(*sqlite3_file)(unsafe.Pointer((*VfslogVtab)(unsafe.Pointer(p)).FpFd)).FpMethods = uintptr(0)
 56161  	}
 56162  	sqlite3.Xsqlite3_free(tls, p)
 56163  	return SQLITE_OK
 56164  }
 56165  
 56166  func vlogOpen(tls *libc.TLS, pVTab uintptr, ppCursor uintptr) int32 {
 56167  	var pCsr uintptr
 56168  
 56169  	pCsr = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(VfslogCsr{})))
 56170  	if !(pCsr != 0) {
 56171  		return SQLITE_NOMEM
 56172  	}
 56173  	libc.X__builtin___memset_chk(tls, pCsr, 0, uint64(unsafe.Sizeof(VfslogCsr{})), libc.X__builtin_object_size(tls, pCsr, 0))
 56174  	*(*uintptr)(unsafe.Pointer(ppCursor)) = pCsr
 56175  	return SQLITE_OK
 56176  }
 56177  
 56178  func vlogClose(tls *libc.TLS, pCursor uintptr) int32 {
 56179  	var p uintptr = pCursor
 56180  	var i int32
 56181  	for i = 0; i < (*VfslogCsr)(unsafe.Pointer(p)).FnFile; i++ {
 56182  		sqlite3.Xsqlite3_free(tls, *(*uintptr)(unsafe.Pointer((*VfslogCsr)(unsafe.Pointer(p)).FazFile + uintptr(i)*8)))
 56183  	}
 56184  	sqlite3.Xsqlite3_free(tls, (*VfslogCsr)(unsafe.Pointer(p)).FazFile)
 56185  	sqlite3.Xsqlite3_free(tls, (*VfslogCsr)(unsafe.Pointer(p)).FzTransient)
 56186  	sqlite3.Xsqlite3_free(tls, p)
 56187  	return SQLITE_OK
 56188  }
 56189  
 56190  func vlogNext(tls *libc.TLS, pCursor uintptr) int32 {
 56191  	bp := tls.Alloc(4)
 56192  	defer tls.Free(4)
 56193  
 56194  	var pCsr uintptr = pCursor
 56195  	var p uintptr = (*sqlite3_vtab_cursor)(unsafe.Pointer(pCursor)).FpVtab
 56196  	var rc int32 = SQLITE_OK
 56197  	var nRead int32
 56198  
 56199  	sqlite3.Xsqlite3_free(tls, (*VfslogCsr)(unsafe.Pointer(pCsr)).FzTransient)
 56200  	(*VfslogCsr)(unsafe.Pointer(pCsr)).FzTransient = uintptr(0)
 56201  
 56202  	nRead = 24
 56203  	if (*VfslogCsr)(unsafe.Pointer(pCsr)).FiOffset+sqlite3_int64(nRead) <= (*VfslogVtab)(unsafe.Pointer(p)).FnByte {
 56204  		var eEvent int32
 56205  		rc = (*struct {
 56206  			f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 56207  		})(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)
 56208  
 56209  		eEvent = int32(get32bits(tls, pCsr+48))
 56210  		if rc == SQLITE_OK &&
 56211  			(eEvent == OS_OPEN || eEvent == OS_DELETE || eEvent == OS_ACCESS) {
 56212  			rc = (*struct {
 56213  				f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 56214  			})(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))
 56215  			nRead = nRead + 4
 56216  			if rc == SQLITE_OK {
 56217  				var nStr int32 = int32(get32bits(tls, bp))
 56218  				var zStr uintptr = sqlite3.Xsqlite3_malloc(tls, nStr+1)
 56219  				rc = (*struct {
 56220  					f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 56221  				})(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))
 56222  				*(*int8)(unsafe.Pointer(zStr + uintptr(nStr))) = int8(0)
 56223  				nRead = nRead + nStr
 56224  
 56225  				if eEvent == OS_OPEN {
 56226  					var iFileid int32 = int32(get32bits(tls, pCsr+48+4))
 56227  					if iFileid >= (*VfslogCsr)(unsafe.Pointer(pCsr)).FnFile {
 56228  						var nNew int32 = int32(uint64(unsafe.Sizeof(uintptr(0))) * uint64(iFileid+1))
 56229  						(*VfslogCsr)(unsafe.Pointer(pCsr)).FazFile = sqlite3.Xsqlite3_realloc(tls, (*VfslogCsr)(unsafe.Pointer(pCsr)).FazFile, nNew)
 56230  						nNew = int32(uint64(nNew) - uint64(unsafe.Sizeof(uintptr(0)))*uint64((*VfslogCsr)(unsafe.Pointer(pCsr)).FnFile))
 56231  						libc.X__builtin___memset_chk(tls, (*VfslogCsr)(unsafe.Pointer(pCsr)).FazFile+uintptr((*VfslogCsr)(unsafe.Pointer(pCsr)).FnFile)*8, 0, uint64(nNew), libc.X__builtin_object_size(tls, (*VfslogCsr)(unsafe.Pointer(pCsr)).FazFile+uintptr((*VfslogCsr)(unsafe.Pointer(pCsr)).FnFile)*8, 0))
 56232  						(*VfslogCsr)(unsafe.Pointer(pCsr)).FnFile = iFileid + 1
 56233  					}
 56234  					sqlite3.Xsqlite3_free(tls, *(*uintptr)(unsafe.Pointer((*VfslogCsr)(unsafe.Pointer(pCsr)).FazFile + uintptr(iFileid)*8)))
 56235  					*(*uintptr)(unsafe.Pointer((*VfslogCsr)(unsafe.Pointer(pCsr)).FazFile + uintptr(iFileid)*8)) = zStr
 56236  				} else {
 56237  					(*VfslogCsr)(unsafe.Pointer(pCsr)).FzTransient = zStr
 56238  				}
 56239  			}
 56240  		}
 56241  	}
 56242  
 56243  	*(*sqlite3_int64)(unsafe.Pointer(pCsr + 8)) += int64(1)
 56244  	*(*sqlite3_int64)(unsafe.Pointer(pCsr + 16)) += sqlite3_int64(nRead)
 56245  	return rc
 56246  }
 56247  
 56248  func vlogEof(tls *libc.TLS, pCursor uintptr) int32 {
 56249  	var pCsr uintptr = pCursor
 56250  	var p uintptr = (*sqlite3_vtab_cursor)(unsafe.Pointer(pCursor)).FpVtab
 56251  	return libc.Bool32((*VfslogCsr)(unsafe.Pointer(pCsr)).FiOffset >= (*VfslogVtab)(unsafe.Pointer(p)).FnByte)
 56252  }
 56253  
 56254  func vlogFilter(tls *libc.TLS, pCursor uintptr, idxNum int32, idxStr uintptr, argc int32, argv uintptr) int32 {
 56255  	var pCsr uintptr = pCursor
 56256  	(*VfslogCsr)(unsafe.Pointer(pCsr)).FiRowid = int64(0)
 56257  	(*VfslogCsr)(unsafe.Pointer(pCsr)).FiOffset = int64(20)
 56258  	return vlogNext(tls, pCursor)
 56259  }
 56260  
 56261  func vlogColumn(tls *libc.TLS, pCursor uintptr, ctx uintptr, i int32) int32 {
 56262  	var val uint32
 56263  	var pCsr uintptr = pCursor
 56264  
 56265  	val = get32bits(tls, pCsr+48+uintptr(4*i))
 56266  
 56267  	switch i {
 56268  	case 0:
 56269  		{
 56270  			sqlite3.Xsqlite3_result_text(tls, ctx, vfslog_eventname(tls, int32(val)), -1, uintptr(0))
 56271  			break
 56272  
 56273  		}
 56274  	case 1:
 56275  		{
 56276  			var zStr uintptr = (*VfslogCsr)(unsafe.Pointer(pCsr)).FzTransient
 56277  			if val != uint32(0) && val < uint32((*VfslogCsr)(unsafe.Pointer(pCsr)).FnFile) {
 56278  				zStr = *(*uintptr)(unsafe.Pointer((*VfslogCsr)(unsafe.Pointer(pCsr)).FazFile + uintptr(val)*8))
 56279  			}
 56280  			sqlite3.Xsqlite3_result_text(tls, ctx, zStr, -1, libc.UintptrFromInt32(-1))
 56281  			break
 56282  
 56283  		}
 56284  	default:
 56285  		sqlite3.Xsqlite3_result_int(tls, ctx, int32(val))
 56286  		break
 56287  	}
 56288  
 56289  	return SQLITE_OK
 56290  }
 56291  
 56292  func vlogRowid(tls *libc.TLS, pCursor uintptr, pRowid uintptr) int32 {
 56293  	var pCsr uintptr = pCursor
 56294  	*(*sqlite_int64)(unsafe.Pointer(pRowid)) = (*VfslogCsr)(unsafe.Pointer(pCsr)).FiRowid
 56295  	return SQLITE_OK
 56296  }
 56297  
 56298  func sqlite3_vfslog_register(tls *libc.TLS, db uintptr) int32 {
 56299  	sqlite3.Xsqlite3_create_module(tls, db, ts+36011, uintptr(unsafe.Pointer(&vfslog_module)), uintptr(0))
 56300  	return SQLITE_OK
 56301  }
 56302  
 56303  var vfslog_module = sqlite3_module{
 56304  	FxCreate:     0,
 56305  	FxConnect:    0,
 56306  	FxBestIndex:  0,
 56307  	FxDisconnect: 0,
 56308  	FxDestroy:    0,
 56309  	FxOpen:       0,
 56310  	FxClose:      0,
 56311  	FxFilter:     0,
 56312  	FxNext:       0,
 56313  	FxEof:        0,
 56314  	FxColumn:     0,
 56315  	FxRowid:      0,
 56316  }
 56317  
 56318  func test_vfslog(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 56319  	bp := tls.Alloc(144)
 56320  	defer tls.Free(144)
 56321  
 56322  	var db uintptr
 56323  
 56324  	var rc int32 = SQLITE_ERROR
 56325  
 56326  	if objc < 2 {
 56327  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+33165)
 56328  		return TCL_ERROR
 56329  	}
 56330  	if tcl.XTcl_GetIndexFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), uintptr(unsafe.Pointer(&strs)), ts+2014, 0, bp+72) != 0 {
 56331  		return TCL_ERROR
 56332  	}
 56333  
 56334  	switch uint32(*(*int32)(unsafe.Pointer(bp + 72))) {
 56335  	case uint32(0):
 56336  		{
 56337  			var zVfs uintptr
 56338  			var zMsg uintptr
 56339  			if objc != 4 {
 56340  				tcl.XTcl_WrongNumArgs(tls, interp, 3, objv, ts+36018)
 56341  				return TCL_ERROR
 56342  			}
 56343  			zVfs = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 56344  			zMsg = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)))
 56345  			rc = sqlite3_vfslog_annotate(tls, zVfs, zMsg)
 56346  			if rc != SQLITE_OK {
 56347  				tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+36022, 0))
 56348  				return TCL_ERROR
 56349  			}
 56350  			break
 56351  
 56352  		}
 56353  	case uint32(1):
 56354  		{
 56355  			var zVfs uintptr
 56356  			if objc != 3 {
 56357  				tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+36018)
 56358  				return TCL_ERROR
 56359  			}
 56360  			zVfs = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 56361  			rc = sqlite3_vfslog_finalize(tls, zVfs)
 56362  			if rc != SQLITE_OK {
 56363  				tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+16, ts+36022, 0))
 56364  				return TCL_ERROR
 56365  			}
 56366  			break
 56367  
 56368  		}
 56369  
 56370  	case uint32(2):
 56371  		{
 56372  			var zVfs uintptr
 56373  			var zParent uintptr
 56374  			var zLog uintptr
 56375  			if objc != 5 {
 56376  				tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+36029)
 56377  				return TCL_ERROR
 56378  			}
 56379  			zVfs = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 56380  			zParent = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)))
 56381  			zLog = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 4*8)))
 56382  			if int32(*(*int8)(unsafe.Pointer(zParent))) == 0 {
 56383  				zParent = uintptr(0)
 56384  			}
 56385  			rc = sqlite3_vfslog_new(tls, zVfs, zParent, zLog)
 56386  			if rc != SQLITE_OK {
 56387  				tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+36022, 0))
 56388  				return TCL_ERROR
 56389  			}
 56390  			break
 56391  
 56392  		}
 56393  
 56394  	case uint32(3):
 56395  		{
 56396  			var zDb uintptr
 56397  			if objc != 3 {
 56398  				tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+2050)
 56399  				return TCL_ERROR
 56400  			}
 56401  			zDb = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 56402  			if tcl.XTcl_GetCommandInfo(tls, interp, zDb, bp+80) != 0 {
 56403  				db = (*struct{ Fdb uintptr })(unsafe.Pointer((*Tcl_CmdInfo)(unsafe.Pointer(bp + 80)).FobjClientData)).Fdb
 56404  				rc = sqlite3_vfslog_register(tls, db)
 56405  			}
 56406  			if rc != SQLITE_OK {
 56407  				tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+48, ts+36048, zDb, uintptr(0)))
 56408  				return TCL_ERROR
 56409  			}
 56410  			break
 56411  
 56412  		}
 56413  	}
 56414  
 56415  	return TCL_OK
 56416  }
 56417  
 56418  var strs = [5]uintptr{ts + 36069, ts + 36078, ts + 14009, ts + 36087, uintptr(0)}
 56419  
 56420  func SqlitetestOsinst_Init(tls *libc.TLS, interp uintptr) int32 {
 56421  	tcl.XTcl_CreateObjCommand(tls, interp, ts+36011, *(*uintptr)(unsafe.Pointer(&struct {
 56422  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 56423  	}{test_vfslog})), uintptr(0), uintptr(0))
 56424  	return TCL_OK
 56425  }
 56426  
 56427  type testpcacheGlobalType1 = struct {
 56428  	FpDummy        uintptr
 56429  	FnInstance     int32
 56430  	FdiscardChance uint32
 56431  	FprngSeed      uint32
 56432  	FhighStress    uint32
 56433  }
 56434  
 56435  type testpcacheGlobalType = testpcacheGlobalType1
 56436  
 56437  var testpcacheGlobal testpcacheGlobalType
 56438  
 56439  func testpcacheInit(tls *libc.TLS, pArg uintptr) int32 {
 56440  	testpcacheGlobal.FpDummy = sqlite3.Xsqlite3_malloc(tls, 10)
 56441  	if testpcacheGlobal.FpDummy == uintptr(0) {
 56442  		return SQLITE_NOMEM
 56443  	}
 56444  	return SQLITE_OK
 56445  }
 56446  
 56447  func testpcacheShutdown(tls *libc.TLS, pArg uintptr) {
 56448  	sqlite3.Xsqlite3_free(tls, testpcacheGlobal.FpDummy)
 56449  	testpcacheGlobal.FpDummy = uintptr(0)
 56450  }
 56451  
 56452  type testpcache1 = struct {
 56453  	FszPage      int32
 56454  	FszExtra     int32
 56455  	FbPurgeable  int32
 56456  	FnFree       int32
 56457  	FnPinned     int32
 56458  	FiRand       uint32
 56459  	FiMagic      uint32
 56460  	F__ccgo_pad1 [4]byte
 56461  	Fa           [217]struct {
 56462  		Fpage     sqlite3_pcache_page
 56463  		Fkey      uint32
 56464  		FisPinned int32
 56465  	}
 56466  }
 56467  
 56468  type testpcache = testpcache1
 56469  type testpcachePage = struct {
 56470  	Fpage     sqlite3_pcache_page
 56471  	Fkey      uint32
 56472  	FisPinned int32
 56473  }
 56474  
 56475  func testpcacheRandom(tls *libc.TLS, p uintptr) uint32 {
 56476  	var x uint32 = uint32(0)
 56477  	var i int32
 56478  	for i = 0; i < 4; i++ {
 56479  		(*testpcache)(unsafe.Pointer(p)).FiRand = (*testpcache)(unsafe.Pointer(p)).FiRand*uint32(69069) + uint32(5)
 56480  		x = x<<8 | (*testpcache)(unsafe.Pointer(p)).FiRand>>16&uint32(0xff)
 56481  	}
 56482  	return x
 56483  }
 56484  
 56485  func testpcacheCreate(tls *libc.TLS, szPage int32, szExtra int32, bPurgeable int32) uintptr {
 56486  	var nMem int32
 56487  	var x uintptr
 56488  	var p uintptr
 56489  	var i int32
 56490  
 56491  	szPage = (szPage + 7) & libc.CplInt32(7)
 56492  	nMem = int32(uint64(unsafe.Sizeof(testpcache{})) + uint64(TESTPCACHE_NPAGE*(szPage+szExtra)))
 56493  	p = sqlite3.Xsqlite3_malloc(tls, nMem)
 56494  	if p == uintptr(0) {
 56495  		return uintptr(0)
 56496  	}
 56497  	x = p + 1*5240
 56498  	(*testpcache)(unsafe.Pointer(p)).FszPage = szPage
 56499  	(*testpcache)(unsafe.Pointer(p)).FszExtra = szExtra
 56500  	(*testpcache)(unsafe.Pointer(p)).FnFree = TESTPCACHE_NPAGE
 56501  	(*testpcache)(unsafe.Pointer(p)).FnPinned = 0
 56502  	(*testpcache)(unsafe.Pointer(p)).FiRand = testpcacheGlobal.FprngSeed
 56503  	(*testpcache)(unsafe.Pointer(p)).FbPurgeable = bPurgeable
 56504  	(*testpcache)(unsafe.Pointer(p)).FiMagic = uint32(TESTPCACHE_VALID)
 56505  	i = 0
 56506  __1:
 56507  	if !(i < TESTPCACHE_NPAGE) {
 56508  		goto __3
 56509  	}
 56510  	{
 56511  		(*testpcachePage)(unsafe.Pointer(p + 32 + uintptr(i)*24)).Fkey = uint32(0)
 56512  		(*testpcachePage)(unsafe.Pointer(p + 32 + uintptr(i)*24)).FisPinned = 0
 56513  		(*testpcachePage)(unsafe.Pointer(p + 32 + uintptr(i)*24)).Fpage.FpBuf = x
 56514  		(*testpcachePage)(unsafe.Pointer(p + 32 + uintptr(i)*24)).Fpage.FpExtra = x + uintptr(szPage)
 56515  
 56516  	}
 56517  	goto __2
 56518  __2:
 56519  	i++
 56520  	x += uintptr(szPage + szExtra)
 56521  	goto __1
 56522  	goto __3
 56523  __3:
 56524  	;
 56525  	testpcacheGlobal.FnInstance++
 56526  	return p
 56527  }
 56528  
 56529  func testpcacheCachesize(tls *libc.TLS, pCache uintptr, newSize int32) {
 56530  	var p uintptr = pCache
 56531  	_ = p
 56532  
 56533  }
 56534  
 56535  func testpcachePagecount(tls *libc.TLS, pCache uintptr) int32 {
 56536  	var p uintptr = pCache
 56537  
 56538  	return TESTPCACHE_NPAGE - (*testpcache)(unsafe.Pointer(p)).FnFree
 56539  }
 56540  
 56541  func testpcacheFetch(tls *libc.TLS, pCache uintptr, key uint32, createFlag int32) uintptr {
 56542  	var p uintptr = pCache
 56543  	var i int32
 56544  	var j int32
 56545  
 56546  	for i = 0; i < TESTPCACHE_NPAGE; i++ {
 56547  		if (*testpcachePage)(unsafe.Pointer(p+32+uintptr(i)*24)).Fkey == key {
 56548  			if !((*testpcachePage)(unsafe.Pointer(p+32+uintptr(i)*24)).FisPinned != 0) {
 56549  				(*testpcache)(unsafe.Pointer(p)).FnPinned++
 56550  
 56551  				(*testpcachePage)(unsafe.Pointer(p + 32 + uintptr(i)*24)).FisPinned = 1
 56552  			}
 56553  			return p + 32 + uintptr(i)*24
 56554  		}
 56555  	}
 56556  
 56557  	if createFlag == 0 {
 56558  		return uintptr(0)
 56559  	}
 56560  
 56561  	if (*testpcache)(unsafe.Pointer(p)).FnPinned == TESTPCACHE_NPAGE {
 56562  		return uintptr(0)
 56563  	}
 56564  
 56565  	if (*testpcache)(unsafe.Pointer(p)).FnPinned >= TESTPCACHE_NPAGE-TESTPCACHE_RESERVE && createFlag < 2 {
 56566  		return uintptr(0)
 56567  	}
 56568  
 56569  	if testpcacheGlobal.FhighStress != 0 && createFlag < 2 {
 56570  		return uintptr(0)
 56571  	}
 56572  
 56573  	if (*testpcache)(unsafe.Pointer(p)).FnFree > TESTPCACHE_RESERVE || createFlag == 2 && (*testpcache)(unsafe.Pointer(p)).FnFree > 0 {
 56574  		j = int32(testpcacheRandom(tls, p) % uint32(TESTPCACHE_NPAGE))
 56575  		i = 0
 56576  	__1:
 56577  		if !(i < TESTPCACHE_NPAGE) {
 56578  			goto __3
 56579  		}
 56580  		{
 56581  			if (*testpcachePage)(unsafe.Pointer(p+32+uintptr(j)*24)).Fkey == uint32(0) {
 56582  				(*testpcachePage)(unsafe.Pointer(p + 32 + uintptr(j)*24)).Fkey = key
 56583  				(*testpcachePage)(unsafe.Pointer(p + 32 + uintptr(j)*24)).FisPinned = 1
 56584  				libc.X__builtin___memset_chk(tls, (*testpcachePage)(unsafe.Pointer(p+32+uintptr(j)*24)).Fpage.FpBuf, 0, uint64((*testpcache)(unsafe.Pointer(p)).FszPage), libc.X__builtin_object_size(tls, (*testpcachePage)(unsafe.Pointer(p+32+uintptr(j)*24)).Fpage.FpBuf, 0))
 56585  				libc.X__builtin___memset_chk(tls, (*testpcachePage)(unsafe.Pointer(p+32+uintptr(j)*24)).Fpage.FpExtra, 0, uint64((*testpcache)(unsafe.Pointer(p)).FszExtra), libc.X__builtin_object_size(tls, (*testpcachePage)(unsafe.Pointer(p+32+uintptr(j)*24)).Fpage.FpExtra, 0))
 56586  				(*testpcache)(unsafe.Pointer(p)).FnPinned++
 56587  				(*testpcache)(unsafe.Pointer(p)).FnFree--
 56588  
 56589  				return p + 32 + uintptr(j)*24
 56590  			}
 56591  
 56592  		}
 56593  		goto __2
 56594  	__2:
 56595  		i++
 56596  		j = (j + 1) % TESTPCACHE_NPAGE
 56597  		goto __1
 56598  		goto __3
 56599  	__3:
 56600  	}
 56601  
 56602  	if (*testpcache)(unsafe.Pointer(p)).FbPurgeable == 0 {
 56603  		return uintptr(0)
 56604  	}
 56605  
 56606  	j = int32(testpcacheRandom(tls, p) % uint32(TESTPCACHE_NPAGE))
 56607  	i = 0
 56608  __4:
 56609  	if !(i < TESTPCACHE_NPAGE) {
 56610  		goto __6
 56611  	}
 56612  	{
 56613  		if (*testpcachePage)(unsafe.Pointer(p+32+uintptr(j)*24)).Fkey > uint32(0) && (*testpcachePage)(unsafe.Pointer(p+32+uintptr(j)*24)).FisPinned == 0 {
 56614  			(*testpcachePage)(unsafe.Pointer(p + 32 + uintptr(j)*24)).Fkey = key
 56615  			(*testpcachePage)(unsafe.Pointer(p + 32 + uintptr(j)*24)).FisPinned = 1
 56616  			libc.X__builtin___memset_chk(tls, (*testpcachePage)(unsafe.Pointer(p+32+uintptr(j)*24)).Fpage.FpBuf, 0, uint64((*testpcache)(unsafe.Pointer(p)).FszPage), libc.X__builtin_object_size(tls, (*testpcachePage)(unsafe.Pointer(p+32+uintptr(j)*24)).Fpage.FpBuf, 0))
 56617  			libc.X__builtin___memset_chk(tls, (*testpcachePage)(unsafe.Pointer(p+32+uintptr(j)*24)).Fpage.FpExtra, 0, uint64((*testpcache)(unsafe.Pointer(p)).FszExtra), libc.X__builtin_object_size(tls, (*testpcachePage)(unsafe.Pointer(p+32+uintptr(j)*24)).Fpage.FpExtra, 0))
 56618  			(*testpcache)(unsafe.Pointer(p)).FnPinned++
 56619  
 56620  			return p + 32 + uintptr(j)*24
 56621  		}
 56622  
 56623  	}
 56624  	goto __5
 56625  __5:
 56626  	i++
 56627  	j = (j + 1) % TESTPCACHE_NPAGE
 56628  	goto __4
 56629  	goto __6
 56630  __6:
 56631  	;
 56632  	return uintptr(0)
 56633  }
 56634  
 56635  func testpcacheUnpin(tls *libc.TLS, pCache uintptr, pOldPage uintptr, discard int32) {
 56636  	var p uintptr = pCache
 56637  	var i int32
 56638  
 56639  	if (*testpcache)(unsafe.Pointer(p)).FbPurgeable != 0 &&
 56640  		uint32(100)-testpcacheGlobal.FdiscardChance <= testpcacheRandom(tls, p)%uint32(100) {
 56641  		discard = 1
 56642  	}
 56643  
 56644  	for i = 0; i < TESTPCACHE_NPAGE; i++ {
 56645  		if p+32+uintptr(i)*24 == pOldPage {
 56646  			(*testpcachePage)(unsafe.Pointer(p + 32 + uintptr(i)*24)).FisPinned = 0
 56647  			(*testpcache)(unsafe.Pointer(p)).FnPinned--
 56648  
 56649  			if discard != 0 {
 56650  				(*testpcachePage)(unsafe.Pointer(p + 32 + uintptr(i)*24)).Fkey = uint32(0)
 56651  				(*testpcache)(unsafe.Pointer(p)).FnFree++
 56652  
 56653  			}
 56654  			return
 56655  		}
 56656  	}
 56657  
 56658  }
 56659  
 56660  func testpcacheRekey(tls *libc.TLS, pCache uintptr, pOldPage uintptr, oldKey uint32, newKey uint32) {
 56661  	var p uintptr = pCache
 56662  	var i int32
 56663  
 56664  	for i = 0; i < TESTPCACHE_NPAGE; i++ {
 56665  		if (*testpcachePage)(unsafe.Pointer(p+32+uintptr(i)*24)).Fkey == newKey {
 56666  			(*testpcachePage)(unsafe.Pointer(p + 32 + uintptr(i)*24)).Fkey = uint32(0)
 56667  			(*testpcache)(unsafe.Pointer(p)).FnFree++
 56668  
 56669  			break
 56670  		}
 56671  	}
 56672  
 56673  	for i = 0; i < TESTPCACHE_NPAGE; i++ {
 56674  		if (*testpcachePage)(unsafe.Pointer(p+32+uintptr(i)*24)).Fkey == oldKey {
 56675  			(*testpcachePage)(unsafe.Pointer(p + 32 + uintptr(i)*24)).Fkey = newKey
 56676  			return
 56677  		}
 56678  	}
 56679  
 56680  }
 56681  
 56682  func testpcacheTruncate(tls *libc.TLS, pCache uintptr, iLimit uint32) {
 56683  	var p uintptr = pCache
 56684  	var i uint32
 56685  
 56686  	for i = uint32(0); i < uint32(TESTPCACHE_NPAGE); i++ {
 56687  		if (*testpcachePage)(unsafe.Pointer(p+32+uintptr(i)*24)).Fkey >= iLimit {
 56688  			(*testpcachePage)(unsafe.Pointer(p + 32 + uintptr(i)*24)).Fkey = uint32(0)
 56689  			if (*testpcachePage)(unsafe.Pointer(p+32+uintptr(i)*24)).FisPinned != 0 {
 56690  				(*testpcache)(unsafe.Pointer(p)).FnPinned--
 56691  
 56692  			}
 56693  			(*testpcache)(unsafe.Pointer(p)).FnFree++
 56694  
 56695  		}
 56696  	}
 56697  }
 56698  
 56699  func testpcacheDestroy(tls *libc.TLS, pCache uintptr) {
 56700  	var p uintptr = pCache
 56701  
 56702  	(*testpcache)(unsafe.Pointer(p)).FiMagic = TESTPCACHE_CLEAR
 56703  	sqlite3.Xsqlite3_free(tls, p)
 56704  	testpcacheGlobal.FnInstance--
 56705  }
 56706  
 56707  func installTestPCache(tls *libc.TLS, installFlag int32, discardChance uint32, prngSeed uint32, highStress uint32) {
 56708  	bp := tls.Alloc(24)
 56709  	defer tls.Free(24)
 56710  
 56711  	testpcacheGlobal.FdiscardChance = discardChance
 56712  	testpcacheGlobal.FprngSeed = prngSeed ^ prngSeed<<16
 56713  	testpcacheGlobal.FhighStress = highStress
 56714  	if installFlag != isInstalled {
 56715  		if installFlag != 0 {
 56716  			sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_GETPCACHE2, libc.VaList(bp, uintptr(unsafe.Pointer(&defaultPcache))))
 56717  
 56718  			sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_PCACHE2, libc.VaList(bp+8, uintptr(unsafe.Pointer(&testPcache))))
 56719  		} else {
 56720  			sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_PCACHE2, libc.VaList(bp+16, uintptr(unsafe.Pointer(&defaultPcache))))
 56721  		}
 56722  		isInstalled = installFlag
 56723  	}
 56724  }
 56725  
 56726  var testPcache = sqlite3_pcache_methods2{
 56727  	FiVersion:   1,
 56728  	FpArg:       0,
 56729  	FxInit:      0,
 56730  	FxShutdown:  0,
 56731  	FxCreate:    0,
 56732  	FxCachesize: 0,
 56733  	FxPagecount: 0,
 56734  	FxFetch:     0,
 56735  	FxUnpin:     0,
 56736  	FxRekey:     0,
 56737  	FxTruncate:  0,
 56738  	FxDestroy:   0,
 56739  }
 56740  var defaultPcache sqlite3_pcache_methods2
 56741  var isInstalled int32 = 0
 56742  
 56743  type quota_FILE1 = struct {
 56744  	Ff     uintptr
 56745  	FiOfst sqlite3_int64
 56746  	FpFile uintptr
 56747  }
 56748  
 56749  type quota_FILE = quota_FILE1
 56750  
 56751  type quotaGroup1 = struct {
 56752  	FzPattern  uintptr
 56753  	FiLimit    sqlite3_int64
 56754  	FiSize     sqlite3_int64
 56755  	FxCallback uintptr
 56756  	FpArg      uintptr
 56757  	FxDestroy  uintptr
 56758  	FpNext     uintptr
 56759  	FppPrev    uintptr
 56760  	FpFiles    uintptr
 56761  }
 56762  
 56763  type quotaGroup = quotaGroup1
 56764  type quotaConn1 = struct {
 56765  	Fbase  sqlite3_file
 56766  	FpFile uintptr
 56767  }
 56768  
 56769  type quotaConn = quotaConn1
 56770  type quotaFile1 = struct {
 56771  	FzFilename     uintptr
 56772  	FpGroup        uintptr
 56773  	FiSize         sqlite3_int64
 56774  	FnRef          int32
 56775  	FdeleteOnClose int32
 56776  	FpNext         uintptr
 56777  	FppPrev        uintptr
 56778  }
 56779  
 56780  type quotaFile = quotaFile1
 56781  
 56782  var gQuota struct {
 56783  	FpOrigVfs      uintptr
 56784  	FsThisVfs      sqlite3_vfs
 56785  	FsIoMethodsV1  sqlite3_io_methods
 56786  	FsIoMethodsV2  sqlite3_io_methods
 56787  	FisInitialized int32
 56788  	F__ccgo_pad1   [4]byte
 56789  	FpMutex        uintptr
 56790  	FpGroup        uintptr
 56791  }
 56792  
 56793  func quotaEnter(tls *libc.TLS) {
 56794  	sqlite3.Xsqlite3_mutex_enter(tls, gQuota.FpMutex)
 56795  }
 56796  
 56797  func quotaLeave(tls *libc.TLS) {
 56798  	sqlite3.Xsqlite3_mutex_leave(tls, gQuota.FpMutex)
 56799  }
 56800  
 56801  func quotaGroupOpenFileCount(tls *libc.TLS, pGroup uintptr) int32 {
 56802  	var N int32 = 0
 56803  	var pFile uintptr = (*quotaGroup)(unsafe.Pointer(pGroup)).FpFiles
 56804  	for pFile != 0 {
 56805  		if (*quotaFile)(unsafe.Pointer(pFile)).FnRef != 0 {
 56806  			N++
 56807  		}
 56808  		pFile = (*quotaFile)(unsafe.Pointer(pFile)).FpNext
 56809  	}
 56810  	return N
 56811  }
 56812  
 56813  func quotaRemoveFile(tls *libc.TLS, pFile uintptr) {
 56814  	var pGroup uintptr = (*quotaFile)(unsafe.Pointer(pFile)).FpGroup
 56815  	*(*sqlite3_int64)(unsafe.Pointer(pGroup + 16)) -= (*quotaFile)(unsafe.Pointer(pFile)).FiSize
 56816  	*(*uintptr)(unsafe.Pointer((*quotaFile)(unsafe.Pointer(pFile)).FppPrev)) = (*quotaFile)(unsafe.Pointer(pFile)).FpNext
 56817  	if (*quotaFile)(unsafe.Pointer(pFile)).FpNext != 0 {
 56818  		(*quotaFile)(unsafe.Pointer((*quotaFile)(unsafe.Pointer(pFile)).FpNext)).FppPrev = (*quotaFile)(unsafe.Pointer(pFile)).FppPrev
 56819  	}
 56820  	sqlite3.Xsqlite3_free(tls, pFile)
 56821  }
 56822  
 56823  func quotaRemoveAllFiles(tls *libc.TLS, pGroup uintptr) {
 56824  	for (*quotaGroup)(unsafe.Pointer(pGroup)).FpFiles != 0 {
 56825  		quotaRemoveFile(tls, (*quotaGroup)(unsafe.Pointer(pGroup)).FpFiles)
 56826  	}
 56827  }
 56828  
 56829  func quotaGroupDeref(tls *libc.TLS, pGroup uintptr) {
 56830  	if (*quotaGroup)(unsafe.Pointer(pGroup)).FiLimit == int64(0) && quotaGroupOpenFileCount(tls, pGroup) == 0 {
 56831  		quotaRemoveAllFiles(tls, pGroup)
 56832  		*(*uintptr)(unsafe.Pointer((*quotaGroup)(unsafe.Pointer(pGroup)).FppPrev)) = (*quotaGroup)(unsafe.Pointer(pGroup)).FpNext
 56833  		if (*quotaGroup)(unsafe.Pointer(pGroup)).FpNext != 0 {
 56834  			(*quotaGroup)(unsafe.Pointer((*quotaGroup)(unsafe.Pointer(pGroup)).FpNext)).FppPrev = (*quotaGroup)(unsafe.Pointer(pGroup)).FppPrev
 56835  		}
 56836  		if (*quotaGroup)(unsafe.Pointer(pGroup)).FxDestroy != 0 {
 56837  			(*struct{ f func(*libc.TLS, uintptr) })(unsafe.Pointer(&struct{ uintptr }{(*quotaGroup)(unsafe.Pointer(pGroup)).FxDestroy})).f(tls, (*quotaGroup)(unsafe.Pointer(pGroup)).FpArg)
 56838  		}
 56839  		sqlite3.Xsqlite3_free(tls, pGroup)
 56840  	}
 56841  }
 56842  
 56843  func quotaStrglob(tls *libc.TLS, zGlob uintptr, z uintptr) int32 {
 56844  	var c int32
 56845  	var c2 int32
 56846  	var cx int32
 56847  	var invert int32
 56848  	var seen int32
 56849  
 56850  	for libc.AssignInt32(&c, int32(*(*int8)(unsafe.Pointer(libc.PostIncUintptr(&zGlob, 1))))) != 0 {
 56851  		if c == '*' {
 56852  			for libc.AssignInt32(&c, int32(*(*int8)(unsafe.Pointer(libc.PostIncUintptr(&zGlob, 1))))) == '*' || c == '?' {
 56853  				if c == '?' && int32(*(*int8)(unsafe.Pointer(libc.PostIncUintptr(&z, 1)))) == 0 {
 56854  					return 0
 56855  				}
 56856  			}
 56857  			if c == 0 {
 56858  				return 1
 56859  			} else if c == '[' {
 56860  				for *(*int8)(unsafe.Pointer(z)) != 0 && quotaStrglob(tls, zGlob-uintptr(1), z) == 0 {
 56861  					z++
 56862  				}
 56863  				return libc.Bool32(int32(*(*int8)(unsafe.Pointer(z))) != 0)
 56864  			}
 56865  			if c == '/' {
 56866  				cx = '\\'
 56867  			} else {
 56868  				cx = c
 56869  			}
 56870  			for libc.AssignInt32(&c2, int32(*(*int8)(unsafe.Pointer(libc.PostIncUintptr(&z, 1))))) != 0 {
 56871  				for c2 != c && c2 != cx {
 56872  					c2 = int32(*(*int8)(unsafe.Pointer(libc.PostIncUintptr(&z, 1))))
 56873  					if c2 == 0 {
 56874  						return 0
 56875  					}
 56876  				}
 56877  				if quotaStrglob(tls, zGlob, z) != 0 {
 56878  					return 1
 56879  				}
 56880  			}
 56881  			return 0
 56882  		} else if c == '?' {
 56883  			if int32(*(*int8)(unsafe.Pointer(libc.PostIncUintptr(&z, 1)))) == 0 {
 56884  				return 0
 56885  			}
 56886  		} else if c == '[' {
 56887  			var prior_c int32 = 0
 56888  			seen = 0
 56889  			invert = 0
 56890  			c = int32(*(*int8)(unsafe.Pointer(libc.PostIncUintptr(&z, 1))))
 56891  			if c == 0 {
 56892  				return 0
 56893  			}
 56894  			c2 = int32(*(*int8)(unsafe.Pointer(libc.PostIncUintptr(&zGlob, 1))))
 56895  			if c2 == '^' {
 56896  				invert = 1
 56897  				c2 = int32(*(*int8)(unsafe.Pointer(libc.PostIncUintptr(&zGlob, 1))))
 56898  			}
 56899  			if c2 == ']' {
 56900  				if c == ']' {
 56901  					seen = 1
 56902  				}
 56903  				c2 = int32(*(*int8)(unsafe.Pointer(libc.PostIncUintptr(&zGlob, 1))))
 56904  			}
 56905  			for c2 != 0 && c2 != ']' {
 56906  				if c2 == '-' && int32(*(*int8)(unsafe.Pointer(zGlob))) != ']' && int32(*(*int8)(unsafe.Pointer(zGlob))) != 0 && prior_c > 0 {
 56907  					c2 = int32(*(*int8)(unsafe.Pointer(libc.PostIncUintptr(&zGlob, 1))))
 56908  					if c >= prior_c && c <= c2 {
 56909  						seen = 1
 56910  					}
 56911  					prior_c = 0
 56912  				} else {
 56913  					if c == c2 {
 56914  						seen = 1
 56915  					}
 56916  					prior_c = c2
 56917  				}
 56918  				c2 = int32(*(*int8)(unsafe.Pointer(libc.PostIncUintptr(&zGlob, 1))))
 56919  			}
 56920  			if c2 == 0 || seen^invert == 0 {
 56921  				return 0
 56922  			}
 56923  		} else if c == '/' {
 56924  			if int32(*(*int8)(unsafe.Pointer(z))) != '/' && int32(*(*int8)(unsafe.Pointer(z))) != '\\' {
 56925  				return 0
 56926  			}
 56927  			z++
 56928  		} else {
 56929  			if c != int32(*(*int8)(unsafe.Pointer(libc.PostIncUintptr(&z, 1)))) {
 56930  				return 0
 56931  			}
 56932  		}
 56933  	}
 56934  	return libc.Bool32(int32(*(*int8)(unsafe.Pointer(z))) == 0)
 56935  }
 56936  
 56937  func quotaGroupFind(tls *libc.TLS, zFilename uintptr) uintptr {
 56938  	var p uintptr
 56939  	for p = gQuota.FpGroup; p != 0 && quotaStrglob(tls, (*quotaGroup)(unsafe.Pointer(p)).FzPattern, zFilename) == 0; p = (*quotaGroup)(unsafe.Pointer(p)).FpNext {
 56940  	}
 56941  	return p
 56942  }
 56943  
 56944  func quotaSubOpen(tls *libc.TLS, pConn uintptr) uintptr {
 56945  	var p uintptr = pConn
 56946  	return p + 1*16
 56947  }
 56948  
 56949  func quotaFindFile(tls *libc.TLS, pGroup uintptr, zName uintptr, createFlag int32) uintptr {
 56950  	var pFile uintptr = (*quotaGroup)(unsafe.Pointer(pGroup)).FpFiles
 56951  	for pFile != 0 && libc.Xstrcmp(tls, (*quotaFile)(unsafe.Pointer(pFile)).FzFilename, zName) != 0 {
 56952  		pFile = (*quotaFile)(unsafe.Pointer(pFile)).FpNext
 56953  	}
 56954  	if pFile == uintptr(0) && createFlag != 0 {
 56955  		var nName int32 = int32(libc.Xstrlen(tls, zName) & uint64(0x3fffffff))
 56956  		pFile = sqlite3.Xsqlite3_malloc(tls, int32(uint64(unsafe.Sizeof(quotaFile{}))+uint64(nName)+uint64(1)))
 56957  		if pFile != 0 {
 56958  			libc.X__builtin___memset_chk(tls, pFile, 0, uint64(unsafe.Sizeof(quotaFile{})), libc.X__builtin_object_size(tls, pFile, 0))
 56959  			(*quotaFile)(unsafe.Pointer(pFile)).FzFilename = pFile + 1*48
 56960  			libc.X__builtin___memcpy_chk(tls, (*quotaFile)(unsafe.Pointer(pFile)).FzFilename, zName, uint64(nName+1), libc.X__builtin_object_size(tls, (*quotaFile)(unsafe.Pointer(pFile)).FzFilename, 0))
 56961  			(*quotaFile)(unsafe.Pointer(pFile)).FpNext = (*quotaGroup)(unsafe.Pointer(pGroup)).FpFiles
 56962  			if (*quotaGroup)(unsafe.Pointer(pGroup)).FpFiles != 0 {
 56963  				(*quotaFile)(unsafe.Pointer((*quotaGroup)(unsafe.Pointer(pGroup)).FpFiles)).FppPrev = pFile + 32
 56964  			}
 56965  			(*quotaFile)(unsafe.Pointer(pFile)).FppPrev = pGroup + 64
 56966  			(*quotaGroup)(unsafe.Pointer(pGroup)).FpFiles = pFile
 56967  			(*quotaFile)(unsafe.Pointer(pFile)).FpGroup = pGroup
 56968  		}
 56969  	}
 56970  	return pFile
 56971  }
 56972  
 56973  func quota_utf8_to_mbcs(tls *libc.TLS, zUtf8 uintptr) uintptr {
 56974  	return zUtf8
 56975  }
 56976  
 56977  func quota_mbcs_free(tls *libc.TLS, zOld uintptr) {
 56978  }
 56979  
 56980  func quotaOpen(tls *libc.TLS, pVfs uintptr, zName uintptr, pConn uintptr, flags int32, pOutFlags uintptr) int32 {
 56981  	var rc int32
 56982  	var pQuotaOpen uintptr
 56983  	var pFile uintptr
 56984  	var pGroup uintptr
 56985  	var pSubOpen uintptr
 56986  	var pOrigVfs uintptr = gQuota.FpOrigVfs
 56987  
 56988  	if flags&(SQLITE_OPEN_MAIN_DB|SQLITE_OPEN_WAL) == 0 {
 56989  		return (*struct {
 56990  			f func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr) int32
 56991  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pOrigVfs)).FxOpen})).f(tls, pOrigVfs, zName, pConn, flags, pOutFlags)
 56992  	}
 56993  
 56994  	quotaEnter(tls)
 56995  	pGroup = quotaGroupFind(tls, zName)
 56996  	if pGroup == uintptr(0) {
 56997  		rc = (*struct {
 56998  			f func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr) int32
 56999  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pOrigVfs)).FxOpen})).f(tls, pOrigVfs, zName, pConn, flags, pOutFlags)
 57000  	} else {
 57001  		pQuotaOpen = pConn
 57002  		pSubOpen = quotaSubOpen(tls, pConn)
 57003  		rc = (*struct {
 57004  			f func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr) int32
 57005  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pOrigVfs)).FxOpen})).f(tls, pOrigVfs, zName, pSubOpen, flags, pOutFlags)
 57006  		if rc == SQLITE_OK {
 57007  			pFile = quotaFindFile(tls, pGroup, zName, 1)
 57008  			if pFile == uintptr(0) {
 57009  				quotaLeave(tls)
 57010  				(*struct {
 57011  					f func(*libc.TLS, uintptr) int32
 57012  				})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxClose})).f(tls, pSubOpen)
 57013  				return SQLITE_NOMEM
 57014  			}
 57015  			(*quotaFile)(unsafe.Pointer(pFile)).FdeleteOnClose = libc.Bool32(flags&SQLITE_OPEN_DELETEONCLOSE != 0)
 57016  			(*quotaFile)(unsafe.Pointer(pFile)).FnRef++
 57017  			(*quotaConn)(unsafe.Pointer(pQuotaOpen)).FpFile = pFile
 57018  			if (*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FiVersion == 1 {
 57019  				(*quotaConn)(unsafe.Pointer(pQuotaOpen)).Fbase.FpMethods = uintptr(unsafe.Pointer(&gQuota)) + 176
 57020  			} else {
 57021  				(*quotaConn)(unsafe.Pointer(pQuotaOpen)).Fbase.FpMethods = uintptr(unsafe.Pointer(&gQuota)) + 328
 57022  			}
 57023  		}
 57024  	}
 57025  	quotaLeave(tls)
 57026  	return rc
 57027  }
 57028  
 57029  func quotaDelete(tls *libc.TLS, pVfs uintptr, zName uintptr, syncDir int32) int32 {
 57030  	var rc int32
 57031  	var pFile uintptr
 57032  	var pGroup uintptr
 57033  	var pOrigVfs uintptr = gQuota.FpOrigVfs
 57034  
 57035  	rc = (*struct {
 57036  		f func(*libc.TLS, uintptr, uintptr, int32) int32
 57037  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pOrigVfs)).FxDelete})).f(tls, pOrigVfs, zName, syncDir)
 57038  
 57039  	if rc == SQLITE_OK {
 57040  		quotaEnter(tls)
 57041  		pGroup = quotaGroupFind(tls, zName)
 57042  		if pGroup != 0 {
 57043  			pFile = quotaFindFile(tls, pGroup, zName, 0)
 57044  			if pFile != 0 {
 57045  				if (*quotaFile)(unsafe.Pointer(pFile)).FnRef != 0 {
 57046  					(*quotaFile)(unsafe.Pointer(pFile)).FdeleteOnClose = 1
 57047  				} else {
 57048  					quotaRemoveFile(tls, pFile)
 57049  					quotaGroupDeref(tls, pGroup)
 57050  				}
 57051  			}
 57052  		}
 57053  		quotaLeave(tls)
 57054  	}
 57055  	return rc
 57056  }
 57057  
 57058  func quotaClose(tls *libc.TLS, pConn uintptr) int32 {
 57059  	var p uintptr = pConn
 57060  	var pFile uintptr = (*quotaConn)(unsafe.Pointer(p)).FpFile
 57061  	var pSubOpen uintptr = quotaSubOpen(tls, pConn)
 57062  	var rc int32
 57063  	rc = (*struct {
 57064  		f func(*libc.TLS, uintptr) int32
 57065  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxClose})).f(tls, pSubOpen)
 57066  	quotaEnter(tls)
 57067  	(*quotaFile)(unsafe.Pointer(pFile)).FnRef--
 57068  	if (*quotaFile)(unsafe.Pointer(pFile)).FnRef == 0 {
 57069  		var pGroup uintptr = (*quotaFile)(unsafe.Pointer(pFile)).FpGroup
 57070  		if (*quotaFile)(unsafe.Pointer(pFile)).FdeleteOnClose != 0 {
 57071  			(*struct {
 57072  				f func(*libc.TLS, uintptr, uintptr, int32) int32
 57073  			})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(gQuota.FpOrigVfs)).FxDelete})).f(tls, gQuota.FpOrigVfs, (*quotaFile)(unsafe.Pointer(pFile)).FzFilename, 0)
 57074  			quotaRemoveFile(tls, pFile)
 57075  		}
 57076  		quotaGroupDeref(tls, pGroup)
 57077  	}
 57078  	quotaLeave(tls)
 57079  	return rc
 57080  }
 57081  
 57082  func quotaRead(tls *libc.TLS, pConn uintptr, pBuf uintptr, iAmt int32, iOfst sqlite3_int64) int32 {
 57083  	var pSubOpen uintptr = quotaSubOpen(tls, pConn)
 57084  	return (*struct {
 57085  		f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 57086  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxRead})).f(tls, pSubOpen, pBuf, iAmt, iOfst)
 57087  }
 57088  
 57089  func quotaWrite(tls *libc.TLS, pConn uintptr, pBuf uintptr, iAmt int32, iOfst sqlite3_int64) int32 {
 57090  	var p uintptr = pConn
 57091  	var pSubOpen uintptr = quotaSubOpen(tls, pConn)
 57092  	var iEnd sqlite3_int64 = iOfst + sqlite3_int64(iAmt)
 57093  	var pGroup uintptr
 57094  	var pFile uintptr = (*quotaConn)(unsafe.Pointer(p)).FpFile
 57095  	var szNew sqlite3_int64
 57096  
 57097  	if (*quotaFile)(unsafe.Pointer(pFile)).FiSize < iEnd {
 57098  		pGroup = (*quotaFile)(unsafe.Pointer(pFile)).FpGroup
 57099  		quotaEnter(tls)
 57100  		szNew = (*quotaGroup)(unsafe.Pointer(pGroup)).FiSize - (*quotaFile)(unsafe.Pointer(pFile)).FiSize + iEnd
 57101  		if szNew > (*quotaGroup)(unsafe.Pointer(pGroup)).FiLimit && (*quotaGroup)(unsafe.Pointer(pGroup)).FiLimit > int64(0) {
 57102  			if (*quotaGroup)(unsafe.Pointer(pGroup)).FxCallback != 0 {
 57103  				(*struct {
 57104  					f func(*libc.TLS, uintptr, uintptr, sqlite3_int64, uintptr)
 57105  				})(unsafe.Pointer(&struct{ uintptr }{(*quotaGroup)(unsafe.Pointer(pGroup)).FxCallback})).f(tls, (*quotaFile)(unsafe.Pointer(pFile)).FzFilename, pGroup+8, szNew,
 57106  					(*quotaGroup)(unsafe.Pointer(pGroup)).FpArg)
 57107  			}
 57108  			if szNew > (*quotaGroup)(unsafe.Pointer(pGroup)).FiLimit && (*quotaGroup)(unsafe.Pointer(pGroup)).FiLimit > int64(0) {
 57109  				quotaLeave(tls)
 57110  				return SQLITE_FULL
 57111  			}
 57112  		}
 57113  		(*quotaGroup)(unsafe.Pointer(pGroup)).FiSize = szNew
 57114  		(*quotaFile)(unsafe.Pointer(pFile)).FiSize = iEnd
 57115  		quotaLeave(tls)
 57116  	}
 57117  	return (*struct {
 57118  		f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 57119  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxWrite})).f(tls, pSubOpen, pBuf, iAmt, iOfst)
 57120  }
 57121  
 57122  func quotaTruncate(tls *libc.TLS, pConn uintptr, size sqlite3_int64) int32 {
 57123  	var p uintptr = pConn
 57124  	var pSubOpen uintptr = quotaSubOpen(tls, pConn)
 57125  	var rc int32 = (*struct {
 57126  		f func(*libc.TLS, uintptr, sqlite3_int64) int32
 57127  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxTruncate})).f(tls, pSubOpen, size)
 57128  	var pFile uintptr = (*quotaConn)(unsafe.Pointer(p)).FpFile
 57129  	var pGroup uintptr
 57130  	if rc == SQLITE_OK {
 57131  		quotaEnter(tls)
 57132  		pGroup = (*quotaFile)(unsafe.Pointer(pFile)).FpGroup
 57133  		*(*sqlite3_int64)(unsafe.Pointer(pGroup + 16)) -= (*quotaFile)(unsafe.Pointer(pFile)).FiSize
 57134  		(*quotaFile)(unsafe.Pointer(pFile)).FiSize = size
 57135  		*(*sqlite3_int64)(unsafe.Pointer(pGroup + 16)) += size
 57136  		quotaLeave(tls)
 57137  	}
 57138  	return rc
 57139  }
 57140  
 57141  func quotaSync(tls *libc.TLS, pConn uintptr, flags int32) int32 {
 57142  	var pSubOpen uintptr = quotaSubOpen(tls, pConn)
 57143  	return (*struct {
 57144  		f func(*libc.TLS, uintptr, int32) int32
 57145  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxSync})).f(tls, pSubOpen, flags)
 57146  }
 57147  
 57148  func quotaFileSize(tls *libc.TLS, pConn uintptr, pSize uintptr) int32 {
 57149  	bp := tls.Alloc(8)
 57150  	defer tls.Free(8)
 57151  
 57152  	var p uintptr = pConn
 57153  	var pSubOpen uintptr = quotaSubOpen(tls, pConn)
 57154  	var pFile uintptr = (*quotaConn)(unsafe.Pointer(p)).FpFile
 57155  	var pGroup uintptr
 57156  
 57157  	var rc int32
 57158  
 57159  	rc = (*struct {
 57160  		f func(*libc.TLS, uintptr, uintptr) int32
 57161  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxFileSize})).f(tls, pSubOpen, bp)
 57162  	if rc == SQLITE_OK {
 57163  		quotaEnter(tls)
 57164  		pGroup = (*quotaFile)(unsafe.Pointer(pFile)).FpGroup
 57165  		*(*sqlite3_int64)(unsafe.Pointer(pGroup + 16)) -= (*quotaFile)(unsafe.Pointer(pFile)).FiSize
 57166  		(*quotaFile)(unsafe.Pointer(pFile)).FiSize = *(*sqlite3_int64)(unsafe.Pointer(bp))
 57167  		*(*sqlite3_int64)(unsafe.Pointer(pGroup + 16)) += *(*sqlite3_int64)(unsafe.Pointer(bp))
 57168  		quotaLeave(tls)
 57169  		*(*sqlite3_int64)(unsafe.Pointer(pSize)) = *(*sqlite3_int64)(unsafe.Pointer(bp))
 57170  	}
 57171  	return rc
 57172  }
 57173  
 57174  func quotaLock(tls *libc.TLS, pConn uintptr, lock int32) int32 {
 57175  	var pSubOpen uintptr = quotaSubOpen(tls, pConn)
 57176  	return (*struct {
 57177  		f func(*libc.TLS, uintptr, int32) int32
 57178  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxLock})).f(tls, pSubOpen, lock)
 57179  }
 57180  
 57181  func quotaUnlock(tls *libc.TLS, pConn uintptr, lock int32) int32 {
 57182  	var pSubOpen uintptr = quotaSubOpen(tls, pConn)
 57183  	return (*struct {
 57184  		f func(*libc.TLS, uintptr, int32) int32
 57185  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxUnlock})).f(tls, pSubOpen, lock)
 57186  }
 57187  
 57188  func quotaCheckReservedLock(tls *libc.TLS, pConn uintptr, pResOut uintptr) int32 {
 57189  	var pSubOpen uintptr = quotaSubOpen(tls, pConn)
 57190  	return (*struct {
 57191  		f func(*libc.TLS, uintptr, uintptr) int32
 57192  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxCheckReservedLock})).f(tls, pSubOpen, pResOut)
 57193  }
 57194  
 57195  func quotaFileControl(tls *libc.TLS, pConn uintptr, op int32, pArg uintptr) int32 {
 57196  	bp := tls.Alloc(8)
 57197  	defer tls.Free(8)
 57198  
 57199  	var pSubOpen uintptr = quotaSubOpen(tls, pConn)
 57200  	var rc int32 = (*struct {
 57201  		f func(*libc.TLS, uintptr, int32, uintptr) int32
 57202  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxFileControl})).f(tls, pSubOpen, op, pArg)
 57203  	if op == SQLITE_FCNTL_VFSNAME && rc == SQLITE_OK {
 57204  		*(*uintptr)(unsafe.Pointer(pArg)) = sqlite3.Xsqlite3_mprintf(tls, ts+36096, libc.VaList(bp, *(*uintptr)(unsafe.Pointer(pArg))))
 57205  	}
 57206  	return rc
 57207  }
 57208  
 57209  func quotaSectorSize(tls *libc.TLS, pConn uintptr) int32 {
 57210  	var pSubOpen uintptr = quotaSubOpen(tls, pConn)
 57211  	return (*struct {
 57212  		f func(*libc.TLS, uintptr) int32
 57213  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxSectorSize})).f(tls, pSubOpen)
 57214  }
 57215  
 57216  func quotaDeviceCharacteristics(tls *libc.TLS, pConn uintptr) int32 {
 57217  	var pSubOpen uintptr = quotaSubOpen(tls, pConn)
 57218  	return (*struct {
 57219  		f func(*libc.TLS, uintptr) int32
 57220  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxDeviceCharacteristics})).f(tls, pSubOpen)
 57221  }
 57222  
 57223  func quotaShmMap(tls *libc.TLS, pConn uintptr, iRegion int32, szRegion int32, bExtend int32, pp uintptr) int32 {
 57224  	var pSubOpen uintptr = quotaSubOpen(tls, pConn)
 57225  	return (*struct {
 57226  		f func(*libc.TLS, uintptr, int32, int32, int32, uintptr) int32
 57227  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxShmMap})).f(tls, pSubOpen, iRegion, szRegion, bExtend, pp)
 57228  }
 57229  
 57230  func quotaShmLock(tls *libc.TLS, pConn uintptr, ofst int32, n int32, flags int32) int32 {
 57231  	var pSubOpen uintptr = quotaSubOpen(tls, pConn)
 57232  	return (*struct {
 57233  		f func(*libc.TLS, uintptr, int32, int32, int32) int32
 57234  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxShmLock})).f(tls, pSubOpen, ofst, n, flags)
 57235  }
 57236  
 57237  func quotaShmBarrier(tls *libc.TLS, pConn uintptr) {
 57238  	var pSubOpen uintptr = quotaSubOpen(tls, pConn)
 57239  	(*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)
 57240  }
 57241  
 57242  func quotaShmUnmap(tls *libc.TLS, pConn uintptr, deleteFlag int32) int32 {
 57243  	var pSubOpen uintptr = quotaSubOpen(tls, pConn)
 57244  	return (*struct {
 57245  		f func(*libc.TLS, uintptr, int32) int32
 57246  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxShmUnmap})).f(tls, pSubOpen, deleteFlag)
 57247  }
 57248  
 57249  func sqlite3_quota_initialize(tls *libc.TLS, zOrigVfsName uintptr, makeDefault int32) int32 {
 57250  	var pOrigVfs uintptr
 57251  	if gQuota.FisInitialized != 0 {
 57252  		return SQLITE_MISUSE
 57253  	}
 57254  	pOrigVfs = sqlite3.Xsqlite3_vfs_find(tls, zOrigVfsName)
 57255  	if pOrigVfs == uintptr(0) {
 57256  		return SQLITE_ERROR
 57257  	}
 57258  
 57259  	gQuota.FpMutex = sqlite3.Xsqlite3_mutex_alloc(tls, SQLITE_MUTEX_FAST)
 57260  	if !(int32(gQuota.FpMutex) != 0) {
 57261  		return SQLITE_NOMEM
 57262  	}
 57263  	gQuota.FisInitialized = 1
 57264  	gQuota.FpOrigVfs = pOrigVfs
 57265  	gQuota.FsThisVfs = *(*sqlite3_vfs)(unsafe.Pointer(pOrigVfs))
 57266  	gQuota.FsThisVfs.FxOpen = *(*uintptr)(unsafe.Pointer(&struct {
 57267  		f func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr) int32
 57268  	}{quotaOpen}))
 57269  	gQuota.FsThisVfs.FxDelete = *(*uintptr)(unsafe.Pointer(&struct {
 57270  		f func(*libc.TLS, uintptr, uintptr, int32) int32
 57271  	}{quotaDelete}))
 57272  	*(*int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&gQuota)) + 8 + 4)) += int32(uint64(unsafe.Sizeof(quotaConn{})))
 57273  	gQuota.FsThisVfs.FzName = ts + 36105
 57274  	gQuota.FsIoMethodsV1.FiVersion = 1
 57275  	gQuota.FsIoMethodsV1.FxClose = *(*uintptr)(unsafe.Pointer(&struct {
 57276  		f func(*libc.TLS, uintptr) int32
 57277  	}{quotaClose}))
 57278  	gQuota.FsIoMethodsV1.FxRead = *(*uintptr)(unsafe.Pointer(&struct {
 57279  		f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 57280  	}{quotaRead}))
 57281  	gQuota.FsIoMethodsV1.FxWrite = *(*uintptr)(unsafe.Pointer(&struct {
 57282  		f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 57283  	}{quotaWrite}))
 57284  	gQuota.FsIoMethodsV1.FxTruncate = *(*uintptr)(unsafe.Pointer(&struct {
 57285  		f func(*libc.TLS, uintptr, sqlite3_int64) int32
 57286  	}{quotaTruncate}))
 57287  	gQuota.FsIoMethodsV1.FxSync = *(*uintptr)(unsafe.Pointer(&struct {
 57288  		f func(*libc.TLS, uintptr, int32) int32
 57289  	}{quotaSync}))
 57290  	gQuota.FsIoMethodsV1.FxFileSize = *(*uintptr)(unsafe.Pointer(&struct {
 57291  		f func(*libc.TLS, uintptr, uintptr) int32
 57292  	}{quotaFileSize}))
 57293  	gQuota.FsIoMethodsV1.FxLock = *(*uintptr)(unsafe.Pointer(&struct {
 57294  		f func(*libc.TLS, uintptr, int32) int32
 57295  	}{quotaLock}))
 57296  	gQuota.FsIoMethodsV1.FxUnlock = *(*uintptr)(unsafe.Pointer(&struct {
 57297  		f func(*libc.TLS, uintptr, int32) int32
 57298  	}{quotaUnlock}))
 57299  	gQuota.FsIoMethodsV1.FxCheckReservedLock = *(*uintptr)(unsafe.Pointer(&struct {
 57300  		f func(*libc.TLS, uintptr, uintptr) int32
 57301  	}{quotaCheckReservedLock}))
 57302  	gQuota.FsIoMethodsV1.FxFileControl = *(*uintptr)(unsafe.Pointer(&struct {
 57303  		f func(*libc.TLS, uintptr, int32, uintptr) int32
 57304  	}{quotaFileControl}))
 57305  	gQuota.FsIoMethodsV1.FxSectorSize = *(*uintptr)(unsafe.Pointer(&struct {
 57306  		f func(*libc.TLS, uintptr) int32
 57307  	}{quotaSectorSize}))
 57308  	gQuota.FsIoMethodsV1.FxDeviceCharacteristics = *(*uintptr)(unsafe.Pointer(&struct {
 57309  		f func(*libc.TLS, uintptr) int32
 57310  	}{quotaDeviceCharacteristics}))
 57311  	gQuota.FsIoMethodsV2 = gQuota.FsIoMethodsV1
 57312  	gQuota.FsIoMethodsV2.FiVersion = 2
 57313  	gQuota.FsIoMethodsV2.FxShmMap = *(*uintptr)(unsafe.Pointer(&struct {
 57314  		f func(*libc.TLS, uintptr, int32, int32, int32, uintptr) int32
 57315  	}{quotaShmMap}))
 57316  	gQuota.FsIoMethodsV2.FxShmLock = *(*uintptr)(unsafe.Pointer(&struct {
 57317  		f func(*libc.TLS, uintptr, int32, int32, int32) int32
 57318  	}{quotaShmLock}))
 57319  	gQuota.FsIoMethodsV2.FxShmBarrier = *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{quotaShmBarrier}))
 57320  	gQuota.FsIoMethodsV2.FxShmUnmap = *(*uintptr)(unsafe.Pointer(&struct {
 57321  		f func(*libc.TLS, uintptr, int32) int32
 57322  	}{quotaShmUnmap}))
 57323  	sqlite3.Xsqlite3_vfs_register(tls, uintptr(unsafe.Pointer(&gQuota))+8, makeDefault)
 57324  	return SQLITE_OK
 57325  }
 57326  
 57327  func sqlite3_quota_shutdown(tls *libc.TLS) int32 {
 57328  	var pGroup uintptr
 57329  	if gQuota.FisInitialized == 0 {
 57330  		return SQLITE_MISUSE
 57331  	}
 57332  	for pGroup = gQuota.FpGroup; pGroup != 0; pGroup = (*quotaGroup)(unsafe.Pointer(pGroup)).FpNext {
 57333  		if quotaGroupOpenFileCount(tls, pGroup) > 0 {
 57334  			return SQLITE_MISUSE
 57335  		}
 57336  	}
 57337  	for gQuota.FpGroup != 0 {
 57338  		pGroup = gQuota.FpGroup
 57339  		gQuota.FpGroup = (*quotaGroup)(unsafe.Pointer(pGroup)).FpNext
 57340  		(*quotaGroup)(unsafe.Pointer(pGroup)).FiLimit = int64(0)
 57341  
 57342  		quotaGroupDeref(tls, pGroup)
 57343  	}
 57344  	gQuota.FisInitialized = 0
 57345  	sqlite3.Xsqlite3_mutex_free(tls, gQuota.FpMutex)
 57346  	sqlite3.Xsqlite3_vfs_unregister(tls, uintptr(unsafe.Pointer(&gQuota))+8)
 57347  	libc.X__builtin___memset_chk(tls, uintptr(unsafe.Pointer(&gQuota)), 0, uint64(unsafe.Sizeof(gQuota)), libc.X__builtin_object_size(tls, uintptr(unsafe.Pointer(&gQuota)), 0))
 57348  	return SQLITE_OK
 57349  }
 57350  
 57351  func sqlite3_quota_set(tls *libc.TLS, zPattern uintptr, iLimit sqlite3_int64, xCallback uintptr, pArg uintptr, xDestroy uintptr) int32 {
 57352  	var pGroup uintptr
 57353  	quotaEnter(tls)
 57354  	pGroup = gQuota.FpGroup
 57355  	for pGroup != 0 && libc.Xstrcmp(tls, (*quotaGroup)(unsafe.Pointer(pGroup)).FzPattern, zPattern) != 0 {
 57356  		pGroup = (*quotaGroup)(unsafe.Pointer(pGroup)).FpNext
 57357  	}
 57358  	if pGroup == uintptr(0) {
 57359  		var nPattern int32 = int32(libc.Xstrlen(tls, zPattern) & uint64(0x3fffffff))
 57360  		if iLimit <= int64(0) {
 57361  			quotaLeave(tls)
 57362  			return SQLITE_OK
 57363  		}
 57364  		pGroup = sqlite3.Xsqlite3_malloc(tls, int32(uint64(unsafe.Sizeof(quotaGroup{}))+uint64(nPattern)+uint64(1)))
 57365  		if pGroup == uintptr(0) {
 57366  			quotaLeave(tls)
 57367  			return SQLITE_NOMEM
 57368  		}
 57369  		libc.X__builtin___memset_chk(tls, pGroup, 0, uint64(unsafe.Sizeof(quotaGroup{})), libc.X__builtin_object_size(tls, pGroup, 0))
 57370  		(*quotaGroup)(unsafe.Pointer(pGroup)).FzPattern = pGroup + 1*72
 57371  		libc.X__builtin___memcpy_chk(tls, (*quotaGroup)(unsafe.Pointer(pGroup)).FzPattern, zPattern, uint64(nPattern+1), libc.X__builtin_object_size(tls, (*quotaGroup)(unsafe.Pointer(pGroup)).FzPattern, 0))
 57372  		if gQuota.FpGroup != 0 {
 57373  			(*quotaGroup)(unsafe.Pointer(gQuota.FpGroup)).FppPrev = pGroup + 48
 57374  		}
 57375  		(*quotaGroup)(unsafe.Pointer(pGroup)).FpNext = gQuota.FpGroup
 57376  		(*quotaGroup)(unsafe.Pointer(pGroup)).FppPrev = uintptr(unsafe.Pointer(&gQuota)) + 496
 57377  		gQuota.FpGroup = pGroup
 57378  	}
 57379  	(*quotaGroup)(unsafe.Pointer(pGroup)).FiLimit = iLimit
 57380  	(*quotaGroup)(unsafe.Pointer(pGroup)).FxCallback = xCallback
 57381  	if (*quotaGroup)(unsafe.Pointer(pGroup)).FxDestroy != 0 && (*quotaGroup)(unsafe.Pointer(pGroup)).FpArg != pArg {
 57382  		(*struct{ f func(*libc.TLS, uintptr) })(unsafe.Pointer(&struct{ uintptr }{(*quotaGroup)(unsafe.Pointer(pGroup)).FxDestroy})).f(tls, (*quotaGroup)(unsafe.Pointer(pGroup)).FpArg)
 57383  	}
 57384  	(*quotaGroup)(unsafe.Pointer(pGroup)).FpArg = pArg
 57385  	(*quotaGroup)(unsafe.Pointer(pGroup)).FxDestroy = xDestroy
 57386  	quotaGroupDeref(tls, pGroup)
 57387  	quotaLeave(tls)
 57388  	return SQLITE_OK
 57389  }
 57390  
 57391  func sqlite3_quota_file(tls *libc.TLS, zFilename uintptr) int32 {
 57392  	bp := tls.Alloc(16)
 57393  	defer tls.Free(16)
 57394  
 57395  	var zFull uintptr = uintptr(0)
 57396  	var fd uintptr
 57397  	var rc int32
 57398  	*(*int32)(unsafe.Pointer(bp)) = 0
 57399  
 57400  	var nAlloc int32 = gQuota.FsThisVfs.FszOsFile + gQuota.FsThisVfs.FmxPathname + 2
 57401  
 57402  	fd = sqlite3.Xsqlite3_malloc(tls, nAlloc)
 57403  	if fd == uintptr(0) {
 57404  		rc = SQLITE_NOMEM
 57405  	} else {
 57406  		zFull = fd + uintptr(gQuota.FsThisVfs.FszOsFile)
 57407  		rc = (*struct {
 57408  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 57409  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(gQuota.FpOrigVfs)).FxFullPathname})).f(tls, gQuota.FpOrigVfs, zFilename,
 57410  			gQuota.FsThisVfs.FmxPathname+1, zFull)
 57411  	}
 57412  
 57413  	if rc == SQLITE_OK {
 57414  		*(*int8)(unsafe.Pointer(zFull + uintptr(libc.Xstrlen(tls, zFull)+uint64(1)))) = int8(0)
 57415  		rc = quotaOpen(tls, uintptr(unsafe.Pointer(&gQuota))+8, zFull, fd,
 57416  			SQLITE_OPEN_READONLY|SQLITE_OPEN_MAIN_DB, bp)
 57417  		if rc == SQLITE_OK {
 57418  			(*struct {
 57419  				f func(*libc.TLS, uintptr, uintptr) int32
 57420  			})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(fd)).FpMethods)).FxFileSize})).f(tls, fd, bp+8)
 57421  			(*struct {
 57422  				f func(*libc.TLS, uintptr) int32
 57423  			})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(fd)).FpMethods)).FxClose})).f(tls, fd)
 57424  		} else if rc == SQLITE_CANTOPEN {
 57425  			var pGroup uintptr
 57426  			var pFile uintptr
 57427  			quotaEnter(tls)
 57428  			pGroup = quotaGroupFind(tls, zFull)
 57429  			if pGroup != 0 {
 57430  				pFile = quotaFindFile(tls, pGroup, zFull, 0)
 57431  				if pFile != 0 {
 57432  					quotaRemoveFile(tls, pFile)
 57433  				}
 57434  			}
 57435  			quotaLeave(tls)
 57436  		}
 57437  	}
 57438  
 57439  	sqlite3.Xsqlite3_free(tls, fd)
 57440  	return rc
 57441  }
 57442  
 57443  func sqlite3_quota_fopen(tls *libc.TLS, zFilename uintptr, zMode uintptr) uintptr {
 57444  	var p uintptr
 57445  	var zFull uintptr
 57446  	var zFullTranslated uintptr
 57447  	var rc int32
 57448  	var pGroup uintptr
 57449  	var pFile uintptr
 57450  	p = uintptr(0)
 57451  	zFull = uintptr(0)
 57452  	zFullTranslated = uintptr(0)
 57453  
 57454  	zFull = sqlite3.Xsqlite3_malloc(tls, gQuota.FsThisVfs.FmxPathname+1)
 57455  	if !(zFull == uintptr(0)) {
 57456  		goto __1
 57457  	}
 57458  	return uintptr(0)
 57459  __1:
 57460  	;
 57461  	rc = (*struct {
 57462  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 57463  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(gQuota.FpOrigVfs)).FxFullPathname})).f(tls, gQuota.FpOrigVfs, zFilename,
 57464  		gQuota.FsThisVfs.FmxPathname+1, zFull)
 57465  	if !(rc != 0) {
 57466  		goto __2
 57467  	}
 57468  	goto quota_fopen_error
 57469  __2:
 57470  	;
 57471  	p = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(quota_FILE{})))
 57472  	if !(p == uintptr(0)) {
 57473  		goto __3
 57474  	}
 57475  	goto quota_fopen_error
 57476  __3:
 57477  	;
 57478  	libc.X__builtin___memset_chk(tls, p, 0, uint64(unsafe.Sizeof(quota_FILE{})), libc.X__builtin_object_size(tls, p, 0))
 57479  	zFullTranslated = quota_utf8_to_mbcs(tls, zFull)
 57480  	if !(zFullTranslated == uintptr(0)) {
 57481  		goto __4
 57482  	}
 57483  	goto quota_fopen_error
 57484  __4:
 57485  	;
 57486  	(*quota_FILE)(unsafe.Pointer(p)).Ff = libc.Xfopen(tls, zFullTranslated, zMode)
 57487  	if !((*quota_FILE)(unsafe.Pointer(p)).Ff == uintptr(0)) {
 57488  		goto __5
 57489  	}
 57490  	goto quota_fopen_error
 57491  __5:
 57492  	;
 57493  	quotaEnter(tls)
 57494  	pGroup = quotaGroupFind(tls, zFull)
 57495  	if !(pGroup != 0) {
 57496  		goto __6
 57497  	}
 57498  	pFile = quotaFindFile(tls, pGroup, zFull, 1)
 57499  	if !(pFile == uintptr(0)) {
 57500  		goto __7
 57501  	}
 57502  	quotaLeave(tls)
 57503  	goto quota_fopen_error
 57504  __7:
 57505  	;
 57506  	(*quotaFile)(unsafe.Pointer(pFile)).FnRef++
 57507  	(*quota_FILE)(unsafe.Pointer(p)).FpFile = pFile
 57508  __6:
 57509  	;
 57510  	quotaLeave(tls)
 57511  	sqlite3.Xsqlite3_free(tls, zFull)
 57512  	return p
 57513  
 57514  quota_fopen_error:
 57515  	quota_mbcs_free(tls, zFullTranslated)
 57516  	sqlite3.Xsqlite3_free(tls, zFull)
 57517  	if !(p != 0 && (*quota_FILE)(unsafe.Pointer(p)).Ff != 0) {
 57518  		goto __8
 57519  	}
 57520  	libc.Xfclose(tls, (*quota_FILE)(unsafe.Pointer(p)).Ff)
 57521  __8:
 57522  	;
 57523  	sqlite3.Xsqlite3_free(tls, p)
 57524  	return uintptr(0)
 57525  }
 57526  
 57527  func sqlite3_quota_fread(tls *libc.TLS, pBuf uintptr, size size_t, nmemb size_t, p uintptr) size_t {
 57528  	return libc.Xfread(tls, pBuf, size, nmemb, (*quota_FILE)(unsafe.Pointer(p)).Ff)
 57529  }
 57530  
 57531  func sqlite3_quota_fwrite(tls *libc.TLS, pBuf uintptr, size size_t, nmemb size_t, p uintptr) size_t {
 57532  	var iOfst sqlite3_int64
 57533  	var iEnd sqlite3_int64
 57534  	var szNew sqlite3_int64
 57535  	var pFile uintptr
 57536  	var rc size_t
 57537  
 57538  	iOfst = libc.Xftell(tls, (*quota_FILE)(unsafe.Pointer(p)).Ff)
 57539  	iEnd = sqlite3_int64(uint64(iOfst) + size*nmemb)
 57540  	pFile = (*quota_FILE)(unsafe.Pointer(p)).FpFile
 57541  	if pFile != 0 && (*quotaFile)(unsafe.Pointer(pFile)).FiSize < iEnd {
 57542  		var pGroup uintptr = (*quotaFile)(unsafe.Pointer(pFile)).FpGroup
 57543  		quotaEnter(tls)
 57544  		szNew = (*quotaGroup)(unsafe.Pointer(pGroup)).FiSize - (*quotaFile)(unsafe.Pointer(pFile)).FiSize + iEnd
 57545  		if szNew > (*quotaGroup)(unsafe.Pointer(pGroup)).FiLimit && (*quotaGroup)(unsafe.Pointer(pGroup)).FiLimit > int64(0) {
 57546  			if (*quotaGroup)(unsafe.Pointer(pGroup)).FxCallback != 0 {
 57547  				(*struct {
 57548  					f func(*libc.TLS, uintptr, uintptr, sqlite3_int64, uintptr)
 57549  				})(unsafe.Pointer(&struct{ uintptr }{(*quotaGroup)(unsafe.Pointer(pGroup)).FxCallback})).f(tls, (*quotaFile)(unsafe.Pointer(pFile)).FzFilename, pGroup+8, szNew,
 57550  					(*quotaGroup)(unsafe.Pointer(pGroup)).FpArg)
 57551  			}
 57552  			if szNew > (*quotaGroup)(unsafe.Pointer(pGroup)).FiLimit && (*quotaGroup)(unsafe.Pointer(pGroup)).FiLimit > int64(0) {
 57553  				iEnd = (*quotaGroup)(unsafe.Pointer(pGroup)).FiLimit - (*quotaGroup)(unsafe.Pointer(pGroup)).FiSize + (*quotaFile)(unsafe.Pointer(pFile)).FiSize
 57554  				nmemb = uint64(iEnd-iOfst) / size
 57555  				iEnd = sqlite3_int64(uint64(iOfst) + size*nmemb)
 57556  				szNew = (*quotaGroup)(unsafe.Pointer(pGroup)).FiSize - (*quotaFile)(unsafe.Pointer(pFile)).FiSize + iEnd
 57557  			}
 57558  		}
 57559  		(*quotaGroup)(unsafe.Pointer(pGroup)).FiSize = szNew
 57560  		(*quotaFile)(unsafe.Pointer(pFile)).FiSize = iEnd
 57561  		quotaLeave(tls)
 57562  	} else {
 57563  		pFile = uintptr(0)
 57564  	}
 57565  	rc = libc.Xfwrite(tls, pBuf, size, nmemb, (*quota_FILE)(unsafe.Pointer(p)).Ff)
 57566  
 57567  	if rc < nmemb && pFile != 0 {
 57568  		var nWritten size_t = rc
 57569  		var iNewEnd sqlite3_int64 = sqlite3_int64(uint64(iOfst) + size*nWritten)
 57570  		if iNewEnd < iEnd {
 57571  			iNewEnd = iEnd
 57572  		}
 57573  		quotaEnter(tls)
 57574  		*(*sqlite3_int64)(unsafe.Pointer((*quotaFile)(unsafe.Pointer(pFile)).FpGroup + 16)) += iNewEnd - (*quotaFile)(unsafe.Pointer(pFile)).FiSize
 57575  		(*quotaFile)(unsafe.Pointer(pFile)).FiSize = iNewEnd
 57576  		quotaLeave(tls)
 57577  	}
 57578  	return rc
 57579  }
 57580  
 57581  func sqlite3_quota_fclose(tls *libc.TLS, p uintptr) int32 {
 57582  	var rc int32
 57583  	var pFile uintptr
 57584  	rc = libc.Xfclose(tls, (*quota_FILE)(unsafe.Pointer(p)).Ff)
 57585  	pFile = (*quota_FILE)(unsafe.Pointer(p)).FpFile
 57586  	if pFile != 0 {
 57587  		quotaEnter(tls)
 57588  		(*quotaFile)(unsafe.Pointer(pFile)).FnRef--
 57589  		if (*quotaFile)(unsafe.Pointer(pFile)).FnRef == 0 {
 57590  			var pGroup uintptr = (*quotaFile)(unsafe.Pointer(pFile)).FpGroup
 57591  			if (*quotaFile)(unsafe.Pointer(pFile)).FdeleteOnClose != 0 {
 57592  				(*struct {
 57593  					f func(*libc.TLS, uintptr, uintptr, int32) int32
 57594  				})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(gQuota.FpOrigVfs)).FxDelete})).f(tls, gQuota.FpOrigVfs, (*quotaFile)(unsafe.Pointer(pFile)).FzFilename, 0)
 57595  				quotaRemoveFile(tls, pFile)
 57596  			}
 57597  			quotaGroupDeref(tls, pGroup)
 57598  		}
 57599  		quotaLeave(tls)
 57600  	}
 57601  	sqlite3.Xsqlite3_free(tls, p)
 57602  	return rc
 57603  }
 57604  
 57605  func sqlite3_quota_fflush(tls *libc.TLS, p uintptr, doFsync int32) int32 {
 57606  	var rc int32
 57607  	rc = libc.Xfflush(tls, (*quota_FILE)(unsafe.Pointer(p)).Ff)
 57608  	if rc == 0 && doFsync != 0 {
 57609  		rc = libc.Xfsync(tls, libc.Xfileno(tls, (*quota_FILE)(unsafe.Pointer(p)).Ff))
 57610  	}
 57611  	return libc.Bool32(rc != 0)
 57612  }
 57613  
 57614  func sqlite3_quota_fseek(tls *libc.TLS, p uintptr, offset int64, whence int32) int32 {
 57615  	return libc.Xfseek(tls, (*quota_FILE)(unsafe.Pointer(p)).Ff, offset, whence)
 57616  }
 57617  
 57618  func sqlite3_quota_rewind(tls *libc.TLS, p uintptr) {
 57619  	libc.Xrewind(tls, (*quota_FILE)(unsafe.Pointer(p)).Ff)
 57620  }
 57621  
 57622  func sqlite3_quota_ftell(tls *libc.TLS, p uintptr) int64 {
 57623  	return libc.Xftell(tls, (*quota_FILE)(unsafe.Pointer(p)).Ff)
 57624  }
 57625  
 57626  func sqlite3_quota_ferror(tls *libc.TLS, p uintptr) int32 {
 57627  	return libc.Xferror(tls, (*quota_FILE)(unsafe.Pointer(p)).Ff)
 57628  }
 57629  
 57630  func sqlite3_quota_ftruncate(tls *libc.TLS, p uintptr, szNew sqlite3_int64) int32 {
 57631  	var pFile uintptr = (*quota_FILE)(unsafe.Pointer(p)).FpFile
 57632  	var rc int32
 57633  	if libc.AssignUintptr(&pFile, (*quota_FILE)(unsafe.Pointer(p)).FpFile) != uintptr(0) && (*quotaFile)(unsafe.Pointer(pFile)).FiSize < szNew {
 57634  		var pGroup uintptr
 57635  		if (*quotaFile)(unsafe.Pointer(pFile)).FiSize < szNew {
 57636  			return -1
 57637  		}
 57638  		pGroup = (*quotaFile)(unsafe.Pointer(pFile)).FpGroup
 57639  		quotaEnter(tls)
 57640  		*(*sqlite3_int64)(unsafe.Pointer(pGroup + 16)) += szNew - (*quotaFile)(unsafe.Pointer(pFile)).FiSize
 57641  		quotaLeave(tls)
 57642  	}
 57643  	rc = libc.Xftruncate(tls, libc.Xfileno(tls, (*quota_FILE)(unsafe.Pointer(p)).Ff), szNew)
 57644  	if pFile != 0 && rc == 0 {
 57645  		var pGroup uintptr = (*quotaFile)(unsafe.Pointer(pFile)).FpGroup
 57646  		quotaEnter(tls)
 57647  		*(*sqlite3_int64)(unsafe.Pointer(pGroup + 16)) += szNew - (*quotaFile)(unsafe.Pointer(pFile)).FiSize
 57648  		(*quotaFile)(unsafe.Pointer(pFile)).FiSize = szNew
 57649  		quotaLeave(tls)
 57650  	}
 57651  	return rc
 57652  }
 57653  
 57654  func sqlite3_quota_file_mtime(tls *libc.TLS, p uintptr, pTime uintptr) int32 {
 57655  	bp := tls.Alloc(144)
 57656  	defer tls.Free(144)
 57657  
 57658  	var rc int32
 57659  
 57660  	rc = libc.Xfstat(tls, libc.Xfileno(tls, (*quota_FILE)(unsafe.Pointer(p)).Ff), bp)
 57661  	if rc == 0 {
 57662  		*(*time_t)(unsafe.Pointer(pTime)) = (*stat)(unsafe.Pointer(bp)).Fst_mtimespec.Ftv_sec
 57663  	}
 57664  	return rc
 57665  }
 57666  
 57667  func sqlite3_quota_file_truesize(tls *libc.TLS, p uintptr) sqlite3_int64 {
 57668  	bp := tls.Alloc(144)
 57669  	defer tls.Free(144)
 57670  
 57671  	var rc int32
 57672  
 57673  	rc = libc.Xfstat(tls, libc.Xfileno(tls, (*quota_FILE)(unsafe.Pointer(p)).Ff), bp)
 57674  	if rc == 0 {
 57675  		return (*stat)(unsafe.Pointer(bp)).Fst_size
 57676  	}
 57677  	return int64(-1)
 57678  }
 57679  
 57680  func sqlite3_quota_file_size(tls *libc.TLS, p uintptr) sqlite3_int64 {
 57681  	if (*quota_FILE)(unsafe.Pointer(p)).FpFile != 0 {
 57682  		return (*quotaFile)(unsafe.Pointer((*quota_FILE)(unsafe.Pointer(p)).FpFile)).FiSize
 57683  	}
 57684  	return int64(-1)
 57685  }
 57686  
 57687  func sqlite3_quota_file_available(tls *libc.TLS, p uintptr) int64 {
 57688  	var f uintptr = (*quota_FILE)(unsafe.Pointer(p)).Ff
 57689  	var pos1 int64
 57690  	var pos2 int64
 57691  	var rc int32
 57692  	pos1 = libc.Xftell(tls, f)
 57693  	if pos1 < int64(0) {
 57694  		return int64(-1)
 57695  	}
 57696  	rc = libc.Xfseek(tls, f, int64(0), SEEK_END)
 57697  	if rc != 0 {
 57698  		return int64(-1)
 57699  	}
 57700  	pos2 = libc.Xftell(tls, f)
 57701  	if pos2 < int64(0) {
 57702  		return int64(-1)
 57703  	}
 57704  	rc = libc.Xfseek(tls, f, pos1, SEEK_SET)
 57705  	if rc != 0 {
 57706  		return int64(-1)
 57707  	}
 57708  	return pos2 - pos1
 57709  }
 57710  
 57711  func sqlite3_quota_remove(tls *libc.TLS, zFilename uintptr) int32 {
 57712  	var zFull uintptr
 57713  	var nFull size_t
 57714  	var rc int32
 57715  	var pGroup uintptr
 57716  	var pFile uintptr
 57717  	var pNextFile uintptr
 57718  	var diff int32
 57719  	var c int8
 57720  
 57721  	zFull = sqlite3.Xsqlite3_malloc(tls, gQuota.FsThisVfs.FmxPathname+1)
 57722  	if zFull == uintptr(0) {
 57723  		return SQLITE_NOMEM
 57724  	}
 57725  	rc = (*struct {
 57726  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 57727  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(gQuota.FpOrigVfs)).FxFullPathname})).f(tls, gQuota.FpOrigVfs, zFilename,
 57728  		gQuota.FsThisVfs.FmxPathname+1, zFull)
 57729  	if rc != 0 {
 57730  		sqlite3.Xsqlite3_free(tls, zFull)
 57731  		return rc
 57732  	}
 57733  
 57734  	nFull = libc.Xstrlen(tls, zFull)
 57735  	if nFull > uint64(0) && (int32(*(*int8)(unsafe.Pointer(zFull + uintptr(nFull-uint64(1))))) == '/' || int32(*(*int8)(unsafe.Pointer(zFull + uintptr(nFull-uint64(1))))) == '\\') {
 57736  		nFull--
 57737  		*(*int8)(unsafe.Pointer(zFull + uintptr(nFull))) = int8(0)
 57738  	}
 57739  
 57740  	quotaEnter(tls)
 57741  	pGroup = quotaGroupFind(tls, zFull)
 57742  	if pGroup != 0 {
 57743  		for pFile = (*quotaGroup)(unsafe.Pointer(pGroup)).FpFiles; pFile != 0 && rc == SQLITE_OK; pFile = pNextFile {
 57744  			pNextFile = (*quotaFile)(unsafe.Pointer(pFile)).FpNext
 57745  			diff = libc.Xstrncmp(tls, zFull, (*quotaFile)(unsafe.Pointer(pFile)).FzFilename, nFull)
 57746  			if diff == 0 && (int32(libc.AssignInt8(&c, *(*int8)(unsafe.Pointer((*quotaFile)(unsafe.Pointer(pFile)).FzFilename + uintptr(nFull))))) == 0 || int32(c) == '/' || int32(c) == '\\') {
 57747  				if (*quotaFile)(unsafe.Pointer(pFile)).FnRef != 0 {
 57748  					(*quotaFile)(unsafe.Pointer(pFile)).FdeleteOnClose = 1
 57749  				} else {
 57750  					rc = (*struct {
 57751  						f func(*libc.TLS, uintptr, uintptr, int32) int32
 57752  					})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(gQuota.FpOrigVfs)).FxDelete})).f(tls, gQuota.FpOrigVfs, (*quotaFile)(unsafe.Pointer(pFile)).FzFilename, 0)
 57753  					quotaRemoveFile(tls, pFile)
 57754  					quotaGroupDeref(tls, pGroup)
 57755  				}
 57756  			}
 57757  		}
 57758  	}
 57759  	quotaLeave(tls)
 57760  	sqlite3.Xsqlite3_free(tls, zFull)
 57761  	return rc
 57762  }
 57763  
 57764  type TclQuotaCallback1 = struct {
 57765  	Finterp  uintptr
 57766  	FpScript uintptr
 57767  }
 57768  
 57769  type TclQuotaCallback = TclQuotaCallback1
 57770  
 57771  func tclQuotaCallback(tls *libc.TLS, zFilename uintptr, piLimit uintptr, iSize sqlite3_int64, pArg uintptr) {
 57772  	bp := tls.Alloc(16)
 57773  	defer tls.Free(16)
 57774  
 57775  	var p uintptr
 57776  	var pEval uintptr
 57777  	var pVarname uintptr
 57778  
 57779  	var rc int32
 57780  
 57781  	p = pArg
 57782  	if p == uintptr(0) {
 57783  		return
 57784  	}
 57785  
 57786  	pVarname = tcl.XTcl_NewStringObj(tls, ts+36111, -1)
 57787  	(*Tcl_Obj)(unsafe.Pointer(pVarname)).FrefCount++
 57788  	sqlite3.Xsqlite3_randomness(tls, int32(unsafe.Sizeof(uint32(0))), bp)
 57789  	tcl.XTcl_AppendObjToObj(tls, pVarname, tcl.XTcl_NewIntObj(tls, int32(*(*uint32)(unsafe.Pointer(bp))&uint32(0x7FFFFFFF))))
 57790  	tcl.XTcl_ObjSetVar2(tls, (*TclQuotaCallback)(unsafe.Pointer(p)).Finterp, pVarname, uintptr(0), tcl.XTcl_NewWideIntObj(tls, *(*sqlite3_int64)(unsafe.Pointer(piLimit))), 0)
 57791  
 57792  	pEval = tcl.XTcl_DuplicateObj(tls, (*TclQuotaCallback)(unsafe.Pointer(p)).FpScript)
 57793  	(*Tcl_Obj)(unsafe.Pointer(pEval)).FrefCount++
 57794  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pEval, tcl.XTcl_NewStringObj(tls, zFilename, -1))
 57795  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pEval, pVarname)
 57796  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pEval, tcl.XTcl_NewWideIntObj(tls, iSize))
 57797  	rc = tcl.XTcl_EvalObjEx(tls, (*TclQuotaCallback)(unsafe.Pointer(p)).Finterp, pEval, TCL_EVAL_GLOBAL)
 57798  
 57799  	if rc == TCL_OK {
 57800  		var pLimit uintptr = tcl.XTcl_ObjGetVar2(tls, (*TclQuotaCallback)(unsafe.Pointer(p)).Finterp, pVarname, uintptr(0), 0)
 57801  		rc = tcl.XTcl_GetWideIntFromObj(tls, (*TclQuotaCallback)(unsafe.Pointer(p)).Finterp, pLimit, bp+8)
 57802  		*(*sqlite3_int64)(unsafe.Pointer(piLimit)) = *(*Tcl_WideInt)(unsafe.Pointer(bp + 8))
 57803  		tcl.XTcl_UnsetVar(tls, (*TclQuotaCallback)(unsafe.Pointer(p)).Finterp, tcl.XTcl_GetString(tls, pVarname), 0)
 57804  	}
 57805  
 57806  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 57807  		if libc.PreDecInt32(&(*Tcl_Obj)(unsafe.Pointer(pEval)).FrefCount, 1) <= 0 {
 57808  			tcl.XTclFreeObj(tls, pEval)
 57809  		}
 57810  	}
 57811  	for __ccgo1 := true; __ccgo1; __ccgo1 = 0 != 0 {
 57812  		if libc.PreDecInt32(&(*Tcl_Obj)(unsafe.Pointer(pVarname)).FrefCount, 1) <= 0 {
 57813  			tcl.XTclFreeObj(tls, pVarname)
 57814  		}
 57815  	}
 57816  	if rc != TCL_OK {
 57817  		tcl.XTcl_BackgroundError(tls, (*TclQuotaCallback)(unsafe.Pointer(p)).Finterp)
 57818  	}
 57819  }
 57820  
 57821  func tclCallbackDestructor(tls *libc.TLS, pObj uintptr) {
 57822  	var p uintptr = pObj
 57823  	if p != 0 {
 57824  		for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 57825  			if libc.PreDecInt32(&(*Tcl_Obj)(unsafe.Pointer((*TclQuotaCallback)(unsafe.Pointer(p)).FpScript)).FrefCount, 1) <= 0 {
 57826  				tcl.XTclFreeObj(tls, (*TclQuotaCallback)(unsafe.Pointer(p)).FpScript)
 57827  			}
 57828  		}
 57829  		sqlite3.Xsqlite3_free(tls, p)
 57830  	}
 57831  }
 57832  
 57833  func test_quota_initialize(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 57834  	bp := tls.Alloc(4)
 57835  	defer tls.Free(4)
 57836  
 57837  	var zName uintptr
 57838  
 57839  	var rc int32
 57840  
 57841  	if objc != 3 {
 57842  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+35000)
 57843  		return TCL_ERROR
 57844  	}
 57845  	zName = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 57846  	if tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp) != 0 {
 57847  		return TCL_ERROR
 57848  	}
 57849  	if int32(*(*int8)(unsafe.Pointer(zName))) == 0 {
 57850  		zName = uintptr(0)
 57851  	}
 57852  
 57853  	rc = sqlite3_quota_initialize(tls, zName, *(*int32)(unsafe.Pointer(bp)))
 57854  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 57855  
 57856  	return TCL_OK
 57857  }
 57858  
 57859  func test_quota_shutdown(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 57860  	var rc int32
 57861  
 57862  	if objc != 1 {
 57863  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+584)
 57864  		return TCL_ERROR
 57865  	}
 57866  
 57867  	rc = sqlite3_quota_shutdown(tls)
 57868  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 57869  
 57870  	return TCL_OK
 57871  }
 57872  
 57873  func test_quota_set(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 57874  	bp := tls.Alloc(12)
 57875  	defer tls.Free(12)
 57876  
 57877  	var zPattern uintptr
 57878  
 57879  	var pScript uintptr
 57880  	var rc int32
 57881  	var p uintptr
 57882  
 57883  	var xDestroy uintptr
 57884  	var xCallback uintptr
 57885  
 57886  	if objc != 4 {
 57887  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+36122)
 57888  		return TCL_ERROR
 57889  	}
 57890  	zPattern = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 57891  	if tcl.XTcl_GetWideIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp) != 0 {
 57892  		return TCL_ERROR
 57893  	}
 57894  	pScript = *(*uintptr)(unsafe.Pointer(objv + 3*8))
 57895  	tcl.XTcl_GetStringFromObj(tls, pScript, bp+8)
 57896  
 57897  	if *(*int32)(unsafe.Pointer(bp + 8)) > 0 {
 57898  		p = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(TclQuotaCallback{})))
 57899  		if !(p != 0) {
 57900  			tcl.XTcl_SetResult(tls, interp, ts+32929, uintptr(0))
 57901  			return TCL_OK
 57902  		}
 57903  		libc.X__builtin___memset_chk(tls, p, 0, uint64(unsafe.Sizeof(TclQuotaCallback{})), libc.X__builtin_object_size(tls, p, 0))
 57904  		(*TclQuotaCallback)(unsafe.Pointer(p)).Finterp = interp
 57905  		(*Tcl_Obj)(unsafe.Pointer(pScript)).FrefCount++
 57906  		(*TclQuotaCallback)(unsafe.Pointer(p)).FpScript = pScript
 57907  		xDestroy = *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{tclCallbackDestructor}))
 57908  		xCallback = *(*uintptr)(unsafe.Pointer(&struct {
 57909  			f func(*libc.TLS, uintptr, uintptr, sqlite3_int64, uintptr)
 57910  		}{tclQuotaCallback}))
 57911  	} else {
 57912  		p = uintptr(0)
 57913  		xDestroy = uintptr(0)
 57914  		xCallback = uintptr(0)
 57915  	}
 57916  
 57917  	rc = sqlite3_quota_set(tls, zPattern, *(*Tcl_WideInt)(unsafe.Pointer(bp)), xCallback, p, xDestroy)
 57918  
 57919  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 57920  	return TCL_OK
 57921  }
 57922  
 57923  func test_quota_file(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 57924  	var zFilename uintptr
 57925  	var rc int32
 57926  
 57927  	if objc != 2 {
 57928  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+33113)
 57929  		return TCL_ERROR
 57930  	}
 57931  	zFilename = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 57932  
 57933  	rc = sqlite3_quota_file(tls, zFilename)
 57934  
 57935  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 57936  	return TCL_OK
 57937  }
 57938  
 57939  func test_quota_dump(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 57940  	bp := tls.Alloc(1008)
 57941  	defer tls.Free(1008)
 57942  
 57943  	var pResult uintptr
 57944  	var pGroupTerm uintptr
 57945  	var pFileTerm uintptr
 57946  	var pGroup uintptr
 57947  	var pFile uintptr
 57948  
 57949  	pResult = tcl.XTcl_NewObj(tls)
 57950  	quotaEnter(tls)
 57951  	for pGroup = gQuota.FpGroup; pGroup != 0; pGroup = (*quotaGroup)(unsafe.Pointer(pGroup)).FpNext {
 57952  		pGroupTerm = tcl.XTcl_NewObj(tls)
 57953  		tcl.XTcl_ListObjAppendElement(tls, interp, pGroupTerm,
 57954  			tcl.XTcl_NewStringObj(tls, (*quotaGroup)(unsafe.Pointer(pGroup)).FzPattern, -1))
 57955  		tcl.XTcl_ListObjAppendElement(tls, interp, pGroupTerm,
 57956  			tcl.XTcl_NewWideIntObj(tls, (*quotaGroup)(unsafe.Pointer(pGroup)).FiLimit))
 57957  		tcl.XTcl_ListObjAppendElement(tls, interp, pGroupTerm,
 57958  			tcl.XTcl_NewWideIntObj(tls, (*quotaGroup)(unsafe.Pointer(pGroup)).FiSize))
 57959  		for pFile = (*quotaGroup)(unsafe.Pointer(pGroup)).FpFiles; pFile != 0; pFile = (*quotaFile)(unsafe.Pointer(pFile)).FpNext {
 57960  			var i int32
 57961  
 57962  			pFileTerm = tcl.XTcl_NewObj(tls)
 57963  			sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([1000]int8{})), bp+8, ts, libc.VaList(bp, (*quotaFile)(unsafe.Pointer(pFile)).FzFilename))
 57964  			for i = 0; *(*int8)(unsafe.Pointer(bp + 8 + uintptr(i))) != 0; i++ {
 57965  				if int32(*(*int8)(unsafe.Pointer(bp + 8 + uintptr(i)))) == '\\' {
 57966  					*(*int8)(unsafe.Pointer(bp + 8 + uintptr(i))) = int8('/')
 57967  				}
 57968  			}
 57969  			tcl.XTcl_ListObjAppendElement(tls, interp, pFileTerm,
 57970  				tcl.XTcl_NewStringObj(tls, bp+8, -1))
 57971  			tcl.XTcl_ListObjAppendElement(tls, interp, pFileTerm,
 57972  				tcl.XTcl_NewWideIntObj(tls, (*quotaFile)(unsafe.Pointer(pFile)).FiSize))
 57973  			tcl.XTcl_ListObjAppendElement(tls, interp, pFileTerm,
 57974  				tcl.XTcl_NewWideIntObj(tls, int64((*quotaFile)(unsafe.Pointer(pFile)).FnRef)))
 57975  			tcl.XTcl_ListObjAppendElement(tls, interp, pFileTerm,
 57976  				tcl.XTcl_NewWideIntObj(tls, int64((*quotaFile)(unsafe.Pointer(pFile)).FdeleteOnClose)))
 57977  			tcl.XTcl_ListObjAppendElement(tls, interp, pGroupTerm, pFileTerm)
 57978  		}
 57979  		tcl.XTcl_ListObjAppendElement(tls, interp, pResult, pGroupTerm)
 57980  	}
 57981  	quotaLeave(tls)
 57982  	tcl.XTcl_SetObjResult(tls, interp, pResult)
 57983  	return TCL_OK
 57984  }
 57985  
 57986  func test_quota_fopen(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 57987  	bp := tls.Alloc(58)
 57988  	defer tls.Free(58)
 57989  
 57990  	var zFilename uintptr
 57991  	var zMode uintptr
 57992  	var p uintptr
 57993  
 57994  	if objc != 3 {
 57995  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+36143)
 57996  		return TCL_ERROR
 57997  	}
 57998  	zFilename = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 57999  	zMode = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 58000  	p = sqlite3_quota_fopen(tls, zFilename, zMode)
 58001  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([50]int8{})), bp+8, ts+9889, libc.VaList(bp, p))
 58002  	tcl.XTcl_SetResult(tls, interp, bp+8, uintptr(1))
 58003  	return TCL_OK
 58004  }
 58005  
 58006  func test_quota_fread(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 58007  	bp := tls.Alloc(8)
 58008  	defer tls.Free(8)
 58009  
 58010  	var p uintptr
 58011  	var zBuf uintptr
 58012  
 58013  	var got size_t
 58014  
 58015  	if objc != 4 {
 58016  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+36157)
 58017  		return TCL_ERROR
 58018  	}
 58019  	p = sqlite3TestTextToPtr(tls, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))))
 58020  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp) != 0 {
 58021  		return TCL_ERROR
 58022  	}
 58023  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+4) != 0 {
 58024  		return TCL_ERROR
 58025  	}
 58026  	zBuf = sqlite3.Xsqlite3_malloc(tls, *(*int32)(unsafe.Pointer(bp))**(*int32)(unsafe.Pointer(bp + 4))+1)
 58027  	if zBuf == uintptr(0) {
 58028  		tcl.XTcl_SetResult(tls, interp, ts+2069, uintptr(0))
 58029  		return TCL_ERROR
 58030  	}
 58031  	got = sqlite3_quota_fread(tls, zBuf, uint64(*(*int32)(unsafe.Pointer(bp))), uint64(*(*int32)(unsafe.Pointer(bp + 4))), p)
 58032  	*(*int8)(unsafe.Pointer(zBuf + uintptr(got*size_t(*(*int32)(unsafe.Pointer(bp)))))) = int8(0)
 58033  	tcl.XTcl_SetResult(tls, interp, zBuf, uintptr(1))
 58034  	sqlite3.Xsqlite3_free(tls, zBuf)
 58035  	return TCL_OK
 58036  }
 58037  
 58038  func test_quota_fwrite(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 58039  	bp := tls.Alloc(8)
 58040  	defer tls.Free(8)
 58041  
 58042  	var p uintptr
 58043  	var zBuf uintptr
 58044  
 58045  	var got size_t
 58046  
 58047  	if objc != 5 {
 58048  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+36175)
 58049  		return TCL_ERROR
 58050  	}
 58051  	p = sqlite3TestTextToPtr(tls, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))))
 58052  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp) != 0 {
 58053  		return TCL_ERROR
 58054  	}
 58055  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+4) != 0 {
 58056  		return TCL_ERROR
 58057  	}
 58058  	zBuf = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 4*8)))
 58059  	got = sqlite3_quota_fwrite(tls, zBuf, uint64(*(*int32)(unsafe.Pointer(bp))), uint64(*(*int32)(unsafe.Pointer(bp + 4))), p)
 58060  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewWideIntObj(tls, int64(got)))
 58061  	return TCL_OK
 58062  }
 58063  
 58064  func test_quota_fclose(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 58065  	var p uintptr
 58066  	var rc int32
 58067  
 58068  	if objc != 2 {
 58069  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+28764)
 58070  		return TCL_ERROR
 58071  	}
 58072  	p = sqlite3TestTextToPtr(tls, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))))
 58073  	rc = sqlite3_quota_fclose(tls, p)
 58074  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, rc))
 58075  	return TCL_OK
 58076  }
 58077  
 58078  func test_quota_fflush(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 58079  	bp := tls.Alloc(4)
 58080  	defer tls.Free(4)
 58081  
 58082  	var p uintptr
 58083  	var rc int32
 58084  	*(*int32)(unsafe.Pointer(bp)) = 0
 58085  
 58086  	if objc != 2 && objc != 3 {
 58087  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+36201)
 58088  		return TCL_ERROR
 58089  	}
 58090  	p = sqlite3TestTextToPtr(tls, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))))
 58091  	if objc == 3 {
 58092  		if tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp) != 0 {
 58093  			return TCL_ERROR
 58094  		}
 58095  	}
 58096  	rc = sqlite3_quota_fflush(tls, p, *(*int32)(unsafe.Pointer(bp)))
 58097  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, rc))
 58098  	return TCL_OK
 58099  }
 58100  
 58101  func test_quota_fseek(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 58102  	bp := tls.Alloc(20)
 58103  	defer tls.Free(20)
 58104  
 58105  	var p uintptr
 58106  
 58107  	var zWhence uintptr
 58108  	var whence int32
 58109  	var rc int32
 58110  
 58111  	if objc != 4 {
 58112  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+36219)
 58113  		return TCL_ERROR
 58114  	}
 58115  	p = sqlite3TestTextToPtr(tls, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))))
 58116  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+16) != 0 {
 58117  		return TCL_ERROR
 58118  	}
 58119  	zWhence = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)))
 58120  	if libc.Xstrcmp(tls, zWhence, ts+36240) == 0 {
 58121  		whence = SEEK_SET
 58122  	} else if libc.Xstrcmp(tls, zWhence, ts+36249) == 0 {
 58123  		whence = SEEK_CUR
 58124  	} else if libc.Xstrcmp(tls, zWhence, ts+36258) == 0 {
 58125  		whence = SEEK_END
 58126  	} else {
 58127  		tcl.XTcl_AppendResult(tls, interp,
 58128  			libc.VaList(bp, ts+36267, uintptr(0)))
 58129  		return TCL_ERROR
 58130  	}
 58131  	rc = sqlite3_quota_fseek(tls, p, int64(*(*int32)(unsafe.Pointer(bp + 16))), whence)
 58132  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, rc))
 58133  	return TCL_OK
 58134  }
 58135  
 58136  func test_quota_rewind(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 58137  	var p uintptr
 58138  	if objc != 2 {
 58139  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+28764)
 58140  		return TCL_ERROR
 58141  	}
 58142  	p = sqlite3TestTextToPtr(tls, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))))
 58143  	sqlite3_quota_rewind(tls, p)
 58144  	return TCL_OK
 58145  }
 58146  
 58147  func test_quota_ftell(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 58148  	var p uintptr
 58149  	var x sqlite3_int64
 58150  	if objc != 2 {
 58151  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+28764)
 58152  		return TCL_ERROR
 58153  	}
 58154  	p = sqlite3TestTextToPtr(tls, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))))
 58155  	x = sqlite3_quota_ftell(tls, p)
 58156  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewWideIntObj(tls, x))
 58157  	return TCL_OK
 58158  }
 58159  
 58160  func test_quota_ftruncate(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 58161  	bp := tls.Alloc(8)
 58162  	defer tls.Free(8)
 58163  
 58164  	var p uintptr
 58165  	var x sqlite3_int64
 58166  
 58167  	var rc int32
 58168  	if objc != 3 {
 58169  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+36316)
 58170  		return TCL_ERROR
 58171  	}
 58172  	p = sqlite3TestTextToPtr(tls, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))))
 58173  	if tcl.XTcl_GetWideIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp) != 0 {
 58174  		return TCL_ERROR
 58175  	}
 58176  	x = *(*Tcl_WideInt)(unsafe.Pointer(bp))
 58177  	rc = sqlite3_quota_ftruncate(tls, p, x)
 58178  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, rc))
 58179  	return TCL_OK
 58180  }
 58181  
 58182  func test_quota_file_size(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 58183  	var p uintptr
 58184  	var x sqlite3_int64
 58185  	if objc != 2 {
 58186  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+28764)
 58187  		return TCL_ERROR
 58188  	}
 58189  	p = sqlite3TestTextToPtr(tls, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))))
 58190  	x = sqlite3_quota_file_size(tls, p)
 58191  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewWideIntObj(tls, x))
 58192  	return TCL_OK
 58193  }
 58194  
 58195  func test_quota_file_truesize(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 58196  	var p uintptr
 58197  	var x sqlite3_int64
 58198  	if objc != 2 {
 58199  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+28764)
 58200  		return TCL_ERROR
 58201  	}
 58202  	p = sqlite3TestTextToPtr(tls, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))))
 58203  	x = sqlite3_quota_file_truesize(tls, p)
 58204  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewWideIntObj(tls, x))
 58205  	return TCL_OK
 58206  }
 58207  
 58208  func test_quota_file_mtime(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 58209  	bp := tls.Alloc(8)
 58210  	defer tls.Free(8)
 58211  
 58212  	var p uintptr
 58213  
 58214  	if objc != 2 {
 58215  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+28764)
 58216  		return TCL_ERROR
 58217  	}
 58218  	p = sqlite3TestTextToPtr(tls, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))))
 58219  	*(*time_t)(unsafe.Pointer(bp)) = int64(0)
 58220  	sqlite3_quota_file_mtime(tls, p, bp)
 58221  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewWideIntObj(tls, *(*time_t)(unsafe.Pointer(bp))))
 58222  	return TCL_OK
 58223  }
 58224  
 58225  func test_quota_remove(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 58226  	var zFilename uintptr
 58227  	var rc int32
 58228  	if objc != 2 {
 58229  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+33113)
 58230  		return TCL_ERROR
 58231  	}
 58232  	zFilename = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 58233  	rc = sqlite3_quota_remove(tls, zFilename)
 58234  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, rc))
 58235  	return TCL_OK
 58236  }
 58237  
 58238  func test_quota_glob(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 58239  	var zPattern uintptr
 58240  	var zText uintptr
 58241  	var rc int32
 58242  	if objc != 3 {
 58243  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+36328)
 58244  		return TCL_ERROR
 58245  	}
 58246  	zPattern = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 58247  	zText = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 58248  	rc = quotaStrglob(tls, zPattern, zText)
 58249  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, rc))
 58250  	return TCL_OK
 58251  }
 58252  
 58253  func test_quota_file_available(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 58254  	var p uintptr
 58255  	var x sqlite3_int64
 58256  	if objc != 2 {
 58257  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+28764)
 58258  		return TCL_ERROR
 58259  	}
 58260  	p = sqlite3TestTextToPtr(tls, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))))
 58261  	x = sqlite3_quota_file_available(tls, p)
 58262  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewWideIntObj(tls, x))
 58263  	return TCL_OK
 58264  }
 58265  
 58266  func test_quota_ferror(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 58267  	var p uintptr
 58268  	var x int32
 58269  	if objc != 2 {
 58270  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+28764)
 58271  		return TCL_ERROR
 58272  	}
 58273  	p = sqlite3TestTextToPtr(tls, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))))
 58274  	x = sqlite3_quota_ferror(tls, p)
 58275  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, x))
 58276  	return TCL_OK
 58277  }
 58278  
 58279  func Sqlitequota_Init(tls *libc.TLS, interp uintptr) int32 {
 58280  	var i int32
 58281  
 58282  	for i = 0; uint64(i) < uint64(unsafe.Sizeof(aCmd9))/uint64(unsafe.Sizeof(struct {
 58283  		FzName uintptr
 58284  		FxProc uintptr
 58285  	}{})); i++ {
 58286  		tcl.XTcl_CreateObjCommand(tls, interp, aCmd9[i].FzName, aCmd9[i].FxProc, uintptr(0), uintptr(0))
 58287  	}
 58288  
 58289  	return TCL_OK
 58290  }
 58291  
 58292  var aCmd9 = [21]struct {
 58293  	FzName uintptr
 58294  	FxProc uintptr
 58295  }{
 58296  	{FzName: ts + 36341, FxProc: 0},
 58297  	{FzName: ts + 36366, FxProc: 0},
 58298  	{FzName: ts + 36389, FxProc: 0},
 58299  	{FzName: ts + 36407, FxProc: 0},
 58300  	{FzName: ts + 36426, FxProc: 0},
 58301  	{FzName: ts + 36445, FxProc: 0},
 58302  	{FzName: ts + 36465, FxProc: 0},
 58303  	{FzName: ts + 36485, FxProc: 0},
 58304  	{FzName: ts + 36506, FxProc: 0},
 58305  	{FzName: ts + 36527, FxProc: 0},
 58306  	{FzName: ts + 36548, FxProc: 0},
 58307  	{FzName: ts + 36568, FxProc: 0},
 58308  	{FzName: ts + 36589, FxProc: 0},
 58309  	{FzName: ts + 36609, FxProc: 0},
 58310  	{FzName: ts + 36633, FxProc: 0},
 58311  	{FzName: ts + 36657, FxProc: 0},
 58312  	{FzName: ts + 36685, FxProc: 0},
 58313  	{FzName: ts + 36710, FxProc: 0},
 58314  	{FzName: ts + 36731, FxProc: 0},
 58315  	{FzName: ts + 36750, FxProc: 0},
 58316  	{FzName: ts + 36779, FxProc: 0},
 58317  }
 58318  
 58319  type Circle1 = struct {
 58320  	FaBox [2]struct {
 58321  		Fxmin float64
 58322  		Fxmax float64
 58323  		Fymin float64
 58324  		Fymax float64
 58325  	}
 58326  	Fcenterx     float64
 58327  	Fcentery     float64
 58328  	Fradius      float64
 58329  	FmxArea      float64
 58330  	FeScoreType  int32
 58331  	F__ccgo_pad1 [4]byte
 58332  }
 58333  
 58334  type Circle = Circle1
 58335  type Box = struct {
 58336  	Fxmin float64
 58337  	Fxmax float64
 58338  	Fymin float64
 58339  	Fymax float64
 58340  }
 58341  
 58342  func circle_del(tls *libc.TLS, p uintptr) {
 58343  	sqlite3.Xsqlite3_free(tls, p)
 58344  }
 58345  
 58346  func circle_geom(tls *libc.TLS, p uintptr, nCoord int32, aCoord uintptr, pRes uintptr) int32 {
 58347  	var i int32
 58348  	var pCircle uintptr
 58349  	var xmin float64
 58350  	var xmax float64
 58351  	var ymin float64
 58352  	var ymax float64
 58353  
 58354  	xmin = *(*sqlite3_rtree_dbl)(unsafe.Pointer(aCoord))
 58355  	xmax = *(*sqlite3_rtree_dbl)(unsafe.Pointer(aCoord + 1*8))
 58356  	ymin = *(*sqlite3_rtree_dbl)(unsafe.Pointer(aCoord + 2*8))
 58357  	ymax = *(*sqlite3_rtree_dbl)(unsafe.Pointer(aCoord + 3*8))
 58358  	pCircle = (*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FpUser
 58359  	if pCircle == uintptr(0) {
 58360  		if nCoord != 4 {
 58361  			return SQLITE_ERROR
 58362  		}
 58363  
 58364  		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 {
 58365  			return SQLITE_ERROR
 58366  		}
 58367  
 58368  		pCircle = libc.AssignPtrUintptr(p+24, sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(Circle{}))))
 58369  		if !(pCircle != 0) {
 58370  			return SQLITE_NOMEM
 58371  		}
 58372  		(*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FxDelUser = *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{circle_del}))
 58373  
 58374  		(*Circle)(unsafe.Pointer(pCircle)).Fcenterx = *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FaParam))
 58375  		(*Circle)(unsafe.Pointer(pCircle)).Fcentery = *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FaParam + 1*8))
 58376  		(*Circle)(unsafe.Pointer(pCircle)).Fradius = *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FaParam + 2*8))
 58377  
 58378  		(*Box)(unsafe.Pointer(pCircle)).Fxmin = (*Circle)(unsafe.Pointer(pCircle)).Fcenterx
 58379  		(*Box)(unsafe.Pointer(pCircle)).Fxmax = (*Circle)(unsafe.Pointer(pCircle)).Fcenterx
 58380  		(*Box)(unsafe.Pointer(pCircle)).Fymin = (*Circle)(unsafe.Pointer(pCircle)).Fcentery + (*Circle)(unsafe.Pointer(pCircle)).Fradius
 58381  		(*Box)(unsafe.Pointer(pCircle)).Fymax = (*Circle)(unsafe.Pointer(pCircle)).Fcentery - (*Circle)(unsafe.Pointer(pCircle)).Fradius
 58382  		(*Box)(unsafe.Pointer(pCircle + 1*32)).Fxmin = (*Circle)(unsafe.Pointer(pCircle)).Fcenterx + (*Circle)(unsafe.Pointer(pCircle)).Fradius
 58383  		(*Box)(unsafe.Pointer(pCircle + 1*32)).Fxmax = (*Circle)(unsafe.Pointer(pCircle)).Fcenterx - (*Circle)(unsafe.Pointer(pCircle)).Fradius
 58384  		(*Box)(unsafe.Pointer(pCircle + 1*32)).Fymin = (*Circle)(unsafe.Pointer(pCircle)).Fcentery
 58385  		(*Box)(unsafe.Pointer(pCircle + 1*32)).Fymax = (*Circle)(unsafe.Pointer(pCircle)).Fcentery
 58386  		(*Circle)(unsafe.Pointer(pCircle)).FmxArea = (xmax-xmin)*(ymax-ymin) + 1.0
 58387  	}
 58388  
 58389  	for i = 0; i < 4; i++ {
 58390  		var x float64
 58391  		if i&0x01 != 0 {
 58392  			x = xmax
 58393  		} else {
 58394  			x = xmin
 58395  		}
 58396  		var y float64
 58397  		if i&0x02 != 0 {
 58398  			y = ymax
 58399  		} else {
 58400  			y = ymin
 58401  		}
 58402  		var d2 float64
 58403  
 58404  		d2 = (x - (*Circle)(unsafe.Pointer(pCircle)).Fcenterx) * (x - (*Circle)(unsafe.Pointer(pCircle)).Fcenterx)
 58405  		d2 = d2 + (y-(*Circle)(unsafe.Pointer(pCircle)).Fcentery)*(y-(*Circle)(unsafe.Pointer(pCircle)).Fcentery)
 58406  		if d2 < (*Circle)(unsafe.Pointer(pCircle)).Fradius*(*Circle)(unsafe.Pointer(pCircle)).Fradius {
 58407  			*(*int32)(unsafe.Pointer(pRes)) = 1
 58408  			return SQLITE_OK
 58409  		}
 58410  	}
 58411  
 58412  	for i = 0; i < 2; i++ {
 58413  		if xmin <= (*Box)(unsafe.Pointer(pCircle+uintptr(i)*32)).Fxmin &&
 58414  			xmax >= (*Box)(unsafe.Pointer(pCircle+uintptr(i)*32)).Fxmax &&
 58415  			ymin <= (*Box)(unsafe.Pointer(pCircle+uintptr(i)*32)).Fymin &&
 58416  			ymax >= (*Box)(unsafe.Pointer(pCircle+uintptr(i)*32)).Fymax {
 58417  			*(*int32)(unsafe.Pointer(pRes)) = 1
 58418  			return SQLITE_OK
 58419  		}
 58420  	}
 58421  
 58422  	*(*int32)(unsafe.Pointer(pRes)) = 0
 58423  	return SQLITE_OK
 58424  }
 58425  
 58426  func circle_query_func(tls *libc.TLS, p uintptr) int32 {
 58427  	var i int32
 58428  	var pCircle uintptr
 58429  	var xmin float64
 58430  	var xmax float64
 58431  	var ymin float64
 58432  	var ymax float64
 58433  	var nWithin int32 = 0
 58434  
 58435  	xmin = *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FaCoord))
 58436  	xmax = *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FaCoord + 1*8))
 58437  	ymin = *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FaCoord + 2*8))
 58438  	ymax = *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FaCoord + 3*8))
 58439  	pCircle = (*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FpUser
 58440  	if pCircle == uintptr(0) {
 58441  		if (*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FnCoord != 4 {
 58442  			return SQLITE_ERROR
 58443  		}
 58444  
 58445  		if (*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FnParam != 4 && (*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FnParam != 1 {
 58446  			return SQLITE_ERROR
 58447  		}
 58448  
 58449  		pCircle = libc.AssignPtrUintptr(p+24, sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(Circle{}))))
 58450  		if !(pCircle != 0) {
 58451  			return SQLITE_NOMEM
 58452  		}
 58453  		(*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FxDelUser = *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{circle_del}))
 58454  
 58455  		if (*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FnParam == 4 {
 58456  			(*Circle)(unsafe.Pointer(pCircle)).Fcenterx = *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FaParam))
 58457  			(*Circle)(unsafe.Pointer(pCircle)).Fcentery = *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FaParam + 1*8))
 58458  			(*Circle)(unsafe.Pointer(pCircle)).Fradius = *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FaParam + 2*8))
 58459  			(*Circle)(unsafe.Pointer(pCircle)).FeScoreType = libc.Int32FromFloat64(*(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FaParam + 3*8)))
 58460  		} else {
 58461  			var z uintptr = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer((*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FapSqlParam)))
 58462  			(*Circle)(unsafe.Pointer(pCircle)).Fcenterx = 0.0
 58463  			(*Circle)(unsafe.Pointer(pCircle)).Fcentery = 0.0
 58464  			(*Circle)(unsafe.Pointer(pCircle)).Fradius = 0.0
 58465  			(*Circle)(unsafe.Pointer(pCircle)).FeScoreType = 0
 58466  			for z != 0 && *(*int8)(unsafe.Pointer(z)) != 0 {
 58467  				if int32(*(*int8)(unsafe.Pointer(z))) == 'r' && int32(*(*int8)(unsafe.Pointer(z + 1))) == ':' {
 58468  					(*Circle)(unsafe.Pointer(pCircle)).Fradius = libc.Xatof(tls, z+2)
 58469  				} else if int32(*(*int8)(unsafe.Pointer(z))) == 'x' && int32(*(*int8)(unsafe.Pointer(z + 1))) == ':' {
 58470  					(*Circle)(unsafe.Pointer(pCircle)).Fcenterx = libc.Xatof(tls, z+2)
 58471  				} else if int32(*(*int8)(unsafe.Pointer(z))) == 'y' && int32(*(*int8)(unsafe.Pointer(z + 1))) == ':' {
 58472  					(*Circle)(unsafe.Pointer(pCircle)).Fcentery = libc.Xatof(tls, z+2)
 58473  				} else if int32(*(*int8)(unsafe.Pointer(z))) == 'e' && int32(*(*int8)(unsafe.Pointer(z + 1))) == ':' {
 58474  					(*Circle)(unsafe.Pointer(pCircle)).FeScoreType = libc.Int32FromFloat64(libc.Xatof(tls, z+2))
 58475  				} else if int32(*(*int8)(unsafe.Pointer(z))) == ' ' {
 58476  					z++
 58477  					continue
 58478  				}
 58479  				for int32(*(*int8)(unsafe.Pointer(z))) != 0 && int32(*(*int8)(unsafe.Pointer(z))) != ' ' {
 58480  					z++
 58481  				}
 58482  				for int32(*(*int8)(unsafe.Pointer(z))) == ' ' {
 58483  					z++
 58484  				}
 58485  			}
 58486  		}
 58487  		if (*Circle)(unsafe.Pointer(pCircle)).Fradius < 0.0 {
 58488  			sqlite3.Xsqlite3_free(tls, pCircle)
 58489  			return SQLITE_NOMEM
 58490  		}
 58491  
 58492  		(*Box)(unsafe.Pointer(pCircle)).Fxmin = (*Circle)(unsafe.Pointer(pCircle)).Fcenterx
 58493  		(*Box)(unsafe.Pointer(pCircle)).Fxmax = (*Circle)(unsafe.Pointer(pCircle)).Fcenterx
 58494  		(*Box)(unsafe.Pointer(pCircle)).Fymin = (*Circle)(unsafe.Pointer(pCircle)).Fcentery + (*Circle)(unsafe.Pointer(pCircle)).Fradius
 58495  		(*Box)(unsafe.Pointer(pCircle)).Fymax = (*Circle)(unsafe.Pointer(pCircle)).Fcentery - (*Circle)(unsafe.Pointer(pCircle)).Fradius
 58496  		(*Box)(unsafe.Pointer(pCircle + 1*32)).Fxmin = (*Circle)(unsafe.Pointer(pCircle)).Fcenterx + (*Circle)(unsafe.Pointer(pCircle)).Fradius
 58497  		(*Box)(unsafe.Pointer(pCircle + 1*32)).Fxmax = (*Circle)(unsafe.Pointer(pCircle)).Fcenterx - (*Circle)(unsafe.Pointer(pCircle)).Fradius
 58498  		(*Box)(unsafe.Pointer(pCircle + 1*32)).Fymin = (*Circle)(unsafe.Pointer(pCircle)).Fcentery
 58499  		(*Box)(unsafe.Pointer(pCircle + 1*32)).Fymax = (*Circle)(unsafe.Pointer(pCircle)).Fcentery
 58500  		(*Circle)(unsafe.Pointer(pCircle)).FmxArea = float64(200.0) * 200.0
 58501  	}
 58502  
 58503  	for i = 0; i < 4; i++ {
 58504  		var x float64
 58505  		if i&0x01 != 0 {
 58506  			x = xmax
 58507  		} else {
 58508  			x = xmin
 58509  		}
 58510  		var y float64
 58511  		if i&0x02 != 0 {
 58512  			y = ymax
 58513  		} else {
 58514  			y = ymin
 58515  		}
 58516  		var d2 float64
 58517  
 58518  		d2 = (x - (*Circle)(unsafe.Pointer(pCircle)).Fcenterx) * (x - (*Circle)(unsafe.Pointer(pCircle)).Fcenterx)
 58519  		d2 = d2 + (y-(*Circle)(unsafe.Pointer(pCircle)).Fcentery)*(y-(*Circle)(unsafe.Pointer(pCircle)).Fcentery)
 58520  		if d2 < (*Circle)(unsafe.Pointer(pCircle)).Fradius*(*Circle)(unsafe.Pointer(pCircle)).Fradius {
 58521  			nWithin++
 58522  		}
 58523  	}
 58524  
 58525  	if nWithin == 0 {
 58526  		for i = 0; i < 2; i++ {
 58527  			if xmin <= (*Box)(unsafe.Pointer(pCircle+uintptr(i)*32)).Fxmin &&
 58528  				xmax >= (*Box)(unsafe.Pointer(pCircle+uintptr(i)*32)).Fxmax &&
 58529  				ymin <= (*Box)(unsafe.Pointer(pCircle+uintptr(i)*32)).Fymin &&
 58530  				ymax >= (*Box)(unsafe.Pointer(pCircle+uintptr(i)*32)).Fymax {
 58531  				nWithin = 1
 58532  				break
 58533  			}
 58534  		}
 58535  	}
 58536  
 58537  	if (*Circle)(unsafe.Pointer(pCircle)).FeScoreType == 1 {
 58538  		(*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FrScore = sqlite3_rtree_dbl((*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FiLevel)
 58539  	} else if (*Circle)(unsafe.Pointer(pCircle)).FeScoreType == 2 {
 58540  		(*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FrScore = sqlite3_rtree_dbl(100 - (*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FiLevel)
 58541  	} else if (*Circle)(unsafe.Pointer(pCircle)).FeScoreType == 3 {
 58542  		if (*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FiLevel == 1 {
 58543  			(*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FrScore = 1.0 - (xmax-xmin)*(ymax-ymin)/(*Circle)(unsafe.Pointer(pCircle)).FmxArea
 58544  			if (*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FrScore < 0.01 {
 58545  				(*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FrScore = 0.01
 58546  			}
 58547  		} else {
 58548  			(*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FrScore = 0.0
 58549  		}
 58550  	} else if (*Circle)(unsafe.Pointer(pCircle)).FeScoreType == 4 {
 58551  		(*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FrScore = sqlite3_rtree_dbl((*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FiLevel)
 58552  		if (*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FiRowid&int64(1) != 0 {
 58553  			nWithin = 0
 58554  		}
 58555  	} else {
 58556  		(*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FrScore = sqlite3_rtree_dbl(100 - (*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FiLevel)
 58557  		if (*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FiRowid&int64(1) != 0 {
 58558  			nWithin = 0
 58559  		}
 58560  	}
 58561  	if nWithin == 0 {
 58562  		(*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FeWithin = NOT_WITHIN
 58563  	} else if nWithin >= 4 {
 58564  		(*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FeWithin = FULLY_WITHIN
 58565  	} else {
 58566  		(*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FeWithin = PARTLY_WITHIN
 58567  	}
 58568  	return SQLITE_OK
 58569  }
 58570  
 58571  func bfs_query_func(tls *libc.TLS, p uintptr) int32 {
 58572  	var x0 float64
 58573  	var x1 float64
 58574  	var y0 float64
 58575  	var y1 float64
 58576  	var bx0 float64
 58577  	var bx1 float64
 58578  	var by0 float64
 58579  	var by1 float64
 58580  
 58581  	if (*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FnParam != 4 {
 58582  		return SQLITE_ERROR
 58583  	}
 58584  	x0 = *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FaCoord))
 58585  	x1 = *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FaCoord + 1*8))
 58586  	y0 = *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FaCoord + 2*8))
 58587  	y1 = *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FaCoord + 3*8))
 58588  	bx0 = *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FaParam))
 58589  	bx1 = *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FaParam + 1*8))
 58590  	by0 = *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FaParam + 2*8))
 58591  	by1 = *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FaParam + 3*8))
 58592  	(*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FrScore = sqlite3_rtree_dbl(100 - (*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FiLevel)
 58593  	if (*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FeParentWithin == FULLY_WITHIN {
 58594  		(*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FeWithin = FULLY_WITHIN
 58595  	} else if x0 >= bx0 && x1 <= bx1 && y0 >= by0 && y1 <= by1 {
 58596  		(*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FeWithin = FULLY_WITHIN
 58597  	} else if x1 >= bx0 && x0 <= bx1 && y1 >= by0 && y0 <= by1 {
 58598  		(*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FeWithin = PARTLY_WITHIN
 58599  	} else {
 58600  		(*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FeWithin = NOT_WITHIN
 58601  	}
 58602  	return SQLITE_OK
 58603  }
 58604  
 58605  type Cube1 = struct {
 58606  	Fx      float64
 58607  	Fy      float64
 58608  	Fz      float64
 58609  	Fwidth  float64
 58610  	Fheight float64
 58611  	Fdepth  float64
 58612  }
 58613  
 58614  type Cube = Cube1
 58615  
 58616  func cube_context_free(tls *libc.TLS, p uintptr) {
 58617  	sqlite3.Xsqlite3_free(tls, p)
 58618  }
 58619  
 58620  var gHere int32 = 42
 58621  
 58622  func cube_geom(tls *libc.TLS, p uintptr, nCoord int32, aCoord uintptr, piRes uintptr) int32 {
 58623  	var pCube uintptr = (*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FpUser
 58624  
 58625  	if pCube == uintptr(0) {
 58626  		if (*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FnParam != 6 || nCoord != 6 ||
 58627  			*(*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 {
 58628  			return SQLITE_ERROR
 58629  		}
 58630  		pCube = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(Cube{})))
 58631  		if !(pCube != 0) {
 58632  			return SQLITE_NOMEM
 58633  		}
 58634  		(*Cube)(unsafe.Pointer(pCube)).Fx = *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FaParam))
 58635  		(*Cube)(unsafe.Pointer(pCube)).Fy = *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FaParam + 1*8))
 58636  		(*Cube)(unsafe.Pointer(pCube)).Fz = *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FaParam + 2*8))
 58637  		(*Cube)(unsafe.Pointer(pCube)).Fwidth = *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FaParam + 3*8))
 58638  		(*Cube)(unsafe.Pointer(pCube)).Fheight = *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FaParam + 4*8))
 58639  		(*Cube)(unsafe.Pointer(pCube)).Fdepth = *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FaParam + 5*8))
 58640  
 58641  		(*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FpUser = pCube
 58642  		(*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FxDelUser = *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{cube_context_free}))
 58643  	}
 58644  
 58645  	*(*int32)(unsafe.Pointer(piRes)) = 0
 58646  	if *(*sqlite3_rtree_dbl)(unsafe.Pointer(aCoord)) <= (*Cube)(unsafe.Pointer(pCube)).Fx+(*Cube)(unsafe.Pointer(pCube)).Fwidth &&
 58647  		*(*sqlite3_rtree_dbl)(unsafe.Pointer(aCoord + 1*8)) >= (*Cube)(unsafe.Pointer(pCube)).Fx &&
 58648  		*(*sqlite3_rtree_dbl)(unsafe.Pointer(aCoord + 2*8)) <= (*Cube)(unsafe.Pointer(pCube)).Fy+(*Cube)(unsafe.Pointer(pCube)).Fheight &&
 58649  		*(*sqlite3_rtree_dbl)(unsafe.Pointer(aCoord + 3*8)) >= (*Cube)(unsafe.Pointer(pCube)).Fy &&
 58650  		*(*sqlite3_rtree_dbl)(unsafe.Pointer(aCoord + 4*8)) <= (*Cube)(unsafe.Pointer(pCube)).Fz+(*Cube)(unsafe.Pointer(pCube)).Fdepth &&
 58651  		*(*sqlite3_rtree_dbl)(unsafe.Pointer(aCoord + 5*8)) >= (*Cube)(unsafe.Pointer(pCube)).Fz {
 58652  		*(*int32)(unsafe.Pointer(piRes)) = 1
 58653  	}
 58654  
 58655  	return SQLITE_OK
 58656  }
 58657  
 58658  func register_cube_geom(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 58659  	bp := tls.Alloc(8)
 58660  	defer tls.Free(8)
 58661  
 58662  	var rc int32
 58663  
 58664  	if objc != 2 {
 58665  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2050)
 58666  		return TCL_ERROR
 58667  	}
 58668  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 58669  		return TCL_ERROR
 58670  	}
 58671  	rc = sqlite3.Xsqlite3_rtree_geometry_callback(tls, *(*uintptr)(unsafe.Pointer(bp)), ts+36800, *(*uintptr)(unsafe.Pointer(&struct {
 58672  		f func(*libc.TLS, uintptr, int32, uintptr, uintptr) int32
 58673  	}{cube_geom})), uintptr(unsafe.Pointer(&gHere)))
 58674  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 58675  	return TCL_OK
 58676  }
 58677  
 58678  func register_circle_geom(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 58679  	bp := tls.Alloc(8)
 58680  	defer tls.Free(8)
 58681  
 58682  	var rc int32
 58683  
 58684  	if objc != 2 {
 58685  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2050)
 58686  		return TCL_ERROR
 58687  	}
 58688  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 58689  		return TCL_ERROR
 58690  	}
 58691  	rc = sqlite3.Xsqlite3_rtree_geometry_callback(tls, *(*uintptr)(unsafe.Pointer(bp)), ts+36805, *(*uintptr)(unsafe.Pointer(&struct {
 58692  		f func(*libc.TLS, uintptr, int32, uintptr, uintptr) int32
 58693  	}{circle_geom})), uintptr(0))
 58694  	if rc == SQLITE_OK {
 58695  		rc = sqlite3.Xsqlite3_rtree_query_callback(tls, *(*uintptr)(unsafe.Pointer(bp)), ts+36812,
 58696  			*(*uintptr)(unsafe.Pointer(&struct {
 58697  				f func(*libc.TLS, uintptr) int32
 58698  			}{circle_query_func})), uintptr(0), uintptr(0))
 58699  	}
 58700  	if rc == SQLITE_OK {
 58701  		rc = sqlite3.Xsqlite3_rtree_query_callback(tls, *(*uintptr)(unsafe.Pointer(bp)), ts+36820,
 58702  			*(*uintptr)(unsafe.Pointer(&struct {
 58703  				f func(*libc.TLS, uintptr) int32
 58704  			}{bfs_query_func})), uintptr(0), uintptr(0))
 58705  	}
 58706  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 58707  	return TCL_OK
 58708  }
 58709  
 58710  func Sqlitetestrtree_Init(tls *libc.TLS, interp uintptr) int32 {
 58711  	tcl.XTcl_CreateObjCommand(tls, interp, ts+36839, *(*uintptr)(unsafe.Pointer(&struct {
 58712  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 58713  	}{register_cube_geom})), uintptr(0), uintptr(0))
 58714  	tcl.XTcl_CreateObjCommand(tls, interp, ts+36858, *(*uintptr)(unsafe.Pointer(&struct {
 58715  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 58716  	}{register_circle_geom})), uintptr(0), uintptr(0))
 58717  	return TCL_OK
 58718  }
 58719  
 58720  type schema_vtab1 = struct {
 58721  	Fbase sqlite3_vtab
 58722  	Fdb   uintptr
 58723  }
 58724  
 58725  type schema_vtab = schema_vtab1
 58726  type schema_cursor1 = struct {
 58727  	Fbase        sqlite3_vtab_cursor
 58728  	FpDbList     uintptr
 58729  	FpTableList  uintptr
 58730  	FpColumnList uintptr
 58731  	Frowid       int32
 58732  	F__ccgo_pad1 [4]byte
 58733  }
 58734  
 58735  type schema_cursor = schema_cursor1
 58736  
 58737  func schemaDestroy(tls *libc.TLS, pVtab uintptr) int32 {
 58738  	sqlite3.Xsqlite3_free(tls, pVtab)
 58739  	return 0
 58740  }
 58741  
 58742  func schemaCreate(tls *libc.TLS, db uintptr, pAux uintptr, argc int32, argv uintptr, ppVtab uintptr, pzErr uintptr) int32 {
 58743  	var rc int32 = SQLITE_NOMEM
 58744  	var pVtab uintptr = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(schema_vtab{})))
 58745  	if pVtab != 0 {
 58746  		libc.X__builtin___memset_chk(tls, pVtab, 0, uint64(unsafe.Sizeof(schema_vtab{})), libc.X__builtin_object_size(tls, pVtab, 0))
 58747  		(*schema_vtab)(unsafe.Pointer(pVtab)).Fdb = db
 58748  		rc = sqlite3.Xsqlite3_declare_vtab(tls, db, ts+36879)
 58749  	}
 58750  	*(*uintptr)(unsafe.Pointer(ppVtab)) = pVtab
 58751  	return rc
 58752  }
 58753  
 58754  func schemaOpen(tls *libc.TLS, pVTab uintptr, ppCursor uintptr) int32 {
 58755  	var rc int32 = SQLITE_NOMEM
 58756  	var pCur uintptr
 58757  	pCur = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(schema_cursor{})))
 58758  	if pCur != 0 {
 58759  		libc.X__builtin___memset_chk(tls, pCur, 0, uint64(unsafe.Sizeof(schema_cursor{})), libc.X__builtin_object_size(tls, pCur, 0))
 58760  		*(*uintptr)(unsafe.Pointer(ppCursor)) = pCur
 58761  		rc = SQLITE_OK
 58762  	}
 58763  	return rc
 58764  }
 58765  
 58766  func schemaClose(tls *libc.TLS, cur uintptr) int32 {
 58767  	var pCur uintptr = cur
 58768  	sqlite3.Xsqlite3_finalize(tls, (*schema_cursor)(unsafe.Pointer(pCur)).FpDbList)
 58769  	sqlite3.Xsqlite3_finalize(tls, (*schema_cursor)(unsafe.Pointer(pCur)).FpTableList)
 58770  	sqlite3.Xsqlite3_finalize(tls, (*schema_cursor)(unsafe.Pointer(pCur)).FpColumnList)
 58771  	sqlite3.Xsqlite3_free(tls, pCur)
 58772  	return SQLITE_OK
 58773  }
 58774  
 58775  func schemaColumn(tls *libc.TLS, cur uintptr, ctx uintptr, i int32) int32 {
 58776  	var pCur uintptr = cur
 58777  	switch i {
 58778  	case 0:
 58779  		sqlite3.Xsqlite3_result_value(tls, ctx, sqlite3.Xsqlite3_column_value(tls, (*schema_cursor)(unsafe.Pointer(pCur)).FpDbList, 1))
 58780  		break
 58781  	case 1:
 58782  		sqlite3.Xsqlite3_result_value(tls, ctx, sqlite3.Xsqlite3_column_value(tls, (*schema_cursor)(unsafe.Pointer(pCur)).FpTableList, 0))
 58783  		break
 58784  	default:
 58785  		sqlite3.Xsqlite3_result_value(tls, ctx, sqlite3.Xsqlite3_column_value(tls, (*schema_cursor)(unsafe.Pointer(pCur)).FpColumnList, i-2))
 58786  		break
 58787  	}
 58788  	return SQLITE_OK
 58789  }
 58790  
 58791  func schemaRowid(tls *libc.TLS, cur uintptr, pRowid uintptr) int32 {
 58792  	var pCur uintptr = cur
 58793  	*(*sqlite_int64)(unsafe.Pointer(pRowid)) = sqlite_int64((*schema_cursor)(unsafe.Pointer(pCur)).Frowid)
 58794  	return SQLITE_OK
 58795  }
 58796  
 58797  func finalize(tls *libc.TLS, ppStmt uintptr) int32 {
 58798  	var rc int32 = sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(ppStmt)))
 58799  	*(*uintptr)(unsafe.Pointer(ppStmt)) = uintptr(0)
 58800  	return rc
 58801  }
 58802  
 58803  func schemaEof(tls *libc.TLS, cur uintptr) int32 {
 58804  	var pCur uintptr = cur
 58805  	return func() int32 {
 58806  		if (*schema_cursor)(unsafe.Pointer(pCur)).FpDbList != 0 {
 58807  			return 0
 58808  		}
 58809  		return 1
 58810  	}()
 58811  }
 58812  
 58813  func schemaNext(tls *libc.TLS, cur uintptr) int32 {
 58814  	bp := tls.Alloc(24)
 58815  	defer tls.Free(24)
 58816  
 58817  	var rc int32
 58818  	var pCur uintptr
 58819  	var pVtab uintptr
 58820  	var zSql uintptr
 58821  	var pDbList uintptr
 58822  	rc = SQLITE_OK
 58823  	pCur = cur
 58824  	pVtab = (*sqlite3_vtab_cursor)(unsafe.Pointer(cur)).FpVtab
 58825  	zSql = uintptr(0)
 58826  
 58827  __1:
 58828  	if !(!(int32((*schema_cursor)(unsafe.Pointer(pCur)).FpColumnList) != 0) || SQLITE_ROW != sqlite3.Xsqlite3_step(tls, (*schema_cursor)(unsafe.Pointer(pCur)).FpColumnList)) {
 58829  		goto __2
 58830  	}
 58831  	if !(SQLITE_OK != libc.AssignInt32(&rc, finalize(tls, pCur+24))) {
 58832  		goto __3
 58833  	}
 58834  	goto next_exit
 58835  __3:
 58836  	;
 58837  __4:
 58838  	if !(!(int32((*schema_cursor)(unsafe.Pointer(pCur)).FpTableList) != 0) || SQLITE_ROW != sqlite3.Xsqlite3_step(tls, (*schema_cursor)(unsafe.Pointer(pCur)).FpTableList)) {
 58839  		goto __5
 58840  	}
 58841  	if !(SQLITE_OK != libc.AssignInt32(&rc, finalize(tls, pCur+16))) {
 58842  		goto __6
 58843  	}
 58844  	goto next_exit
 58845  __6:
 58846  	;
 58847  __7:
 58848  	if !(SQLITE_ROW != sqlite3.Xsqlite3_step(tls, (*schema_cursor)(unsafe.Pointer(pCur)).FpDbList)) {
 58849  		goto __8
 58850  	}
 58851  	rc = finalize(tls, pCur+8)
 58852  	goto next_exit
 58853  	goto __7
 58854  __8:
 58855  	;
 58856  	if !(sqlite3.Xsqlite3_column_int(tls, (*schema_cursor)(unsafe.Pointer(pCur)).FpDbList, 0) == 1) {
 58857  		goto __9
 58858  	}
 58859  	zSql = sqlite3.Xsqlite3_mprintf(tls,
 58860  		ts+36951, 0)
 58861  	goto __10
 58862  __9:
 58863  	pDbList = (*schema_cursor)(unsafe.Pointer(pCur)).FpDbList
 58864  	zSql = sqlite3.Xsqlite3_mprintf(tls,
 58865  		ts+37006,
 58866  		libc.VaList(bp, sqlite3.Xsqlite3_column_text(tls, pDbList, 1)))
 58867  __10:
 58868  	;
 58869  	if !!(zSql != 0) {
 58870  		goto __11
 58871  	}
 58872  	rc = SQLITE_NOMEM
 58873  	goto next_exit
 58874  __11:
 58875  	;
 58876  	rc = sqlite3.Xsqlite3_prepare(tls, (*schema_vtab)(unsafe.Pointer(pVtab)).Fdb, zSql, -1, pCur+16, uintptr(0))
 58877  	sqlite3.Xsqlite3_free(tls, zSql)
 58878  	if !(rc != SQLITE_OK) {
 58879  		goto __12
 58880  	}
 58881  	goto next_exit
 58882  __12:
 58883  	;
 58884  	goto __4
 58885  __5:
 58886  	;
 58887  	zSql = sqlite3.Xsqlite3_mprintf(tls, ts+37059,
 58888  		libc.VaList(bp+8, sqlite3.Xsqlite3_column_text(tls, (*schema_cursor)(unsafe.Pointer(pCur)).FpDbList, 1),
 58889  			sqlite3.Xsqlite3_column_text(tls, (*schema_cursor)(unsafe.Pointer(pCur)).FpTableList, 0)))
 58890  
 58891  	if !!(zSql != 0) {
 58892  		goto __13
 58893  	}
 58894  	rc = SQLITE_NOMEM
 58895  	goto next_exit
 58896  __13:
 58897  	;
 58898  	rc = sqlite3.Xsqlite3_prepare(tls, (*schema_vtab)(unsafe.Pointer(pVtab)).Fdb, zSql, -1, pCur+24, uintptr(0))
 58899  	sqlite3.Xsqlite3_free(tls, zSql)
 58900  	if !(rc != SQLITE_OK) {
 58901  		goto __14
 58902  	}
 58903  	goto next_exit
 58904  __14:
 58905  	;
 58906  	goto __1
 58907  __2:
 58908  	;
 58909  	(*schema_cursor)(unsafe.Pointer(pCur)).Frowid++
 58910  
 58911  next_exit:
 58912  	return rc
 58913  }
 58914  
 58915  func schemaFilter(tls *libc.TLS, pVtabCursor uintptr, idxNum int32, idxStr uintptr, argc int32, argv uintptr) int32 {
 58916  	var rc int32
 58917  	var pVtab uintptr = (*sqlite3_vtab_cursor)(unsafe.Pointer(pVtabCursor)).FpVtab
 58918  	var pCur uintptr = pVtabCursor
 58919  	(*schema_cursor)(unsafe.Pointer(pCur)).Frowid = 0
 58920  	finalize(tls, pCur+16)
 58921  	finalize(tls, pCur+24)
 58922  	finalize(tls, pCur+8)
 58923  	rc = sqlite3.Xsqlite3_prepare(tls, (*schema_vtab)(unsafe.Pointer(pVtab)).Fdb, ts+37084, -1, pCur+8, uintptr(0))
 58924  	return func() int32 {
 58925  		if rc == SQLITE_OK {
 58926  			return schemaNext(tls, pVtabCursor)
 58927  		}
 58928  		return rc
 58929  	}()
 58930  }
 58931  
 58932  func schemaBestIndex(tls *libc.TLS, tab uintptr, pIdxInfo uintptr) int32 {
 58933  	return SQLITE_OK
 58934  }
 58935  
 58936  var schemaModule = sqlite3_module{
 58937  	FxCreate:     0,
 58938  	FxConnect:    0,
 58939  	FxBestIndex:  0,
 58940  	FxDisconnect: 0,
 58941  	FxDestroy:    0,
 58942  	FxOpen:       0,
 58943  	FxClose:      0,
 58944  	FxFilter:     0,
 58945  	FxNext:       0,
 58946  	FxEof:        0,
 58947  	FxColumn:     0,
 58948  	FxRowid:      0,
 58949  }
 58950  
 58951  func register_schema_module(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 58952  	bp := tls.Alloc(8)
 58953  	defer tls.Free(8)
 58954  
 58955  	if objc != 2 {
 58956  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2050)
 58957  		return TCL_ERROR
 58958  	}
 58959  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 58960  		return TCL_ERROR
 58961  	}
 58962  	sqlite3.Xsqlite3_create_module(tls, *(*uintptr)(unsafe.Pointer(bp)), ts+4808, uintptr(unsafe.Pointer(&schemaModule)), uintptr(0))
 58963  	return TCL_OK
 58964  }
 58965  
 58966  func Sqlitetestschema_Init(tls *libc.TLS, interp uintptr) int32 {
 58967  	var i int32
 58968  	for i = 0; uint64(i) < uint64(unsafe.Sizeof(aObjCmd12))/uint64(unsafe.Sizeof(struct {
 58969  		FzName      uintptr
 58970  		FxProc      uintptr
 58971  		FclientData uintptr
 58972  	}{})); i++ {
 58973  		tcl.XTcl_CreateObjCommand(tls, interp, aObjCmd12[i].FzName,
 58974  			aObjCmd12[i].FxProc, aObjCmd12[i].FclientData, uintptr(0))
 58975  	}
 58976  	return TCL_OK
 58977  }
 58978  
 58979  var aObjCmd12 = [1]struct {
 58980  	FzName      uintptr
 58981  	FxProc      uintptr
 58982  	FclientData uintptr
 58983  }{
 58984  	{FzName: ts + 37105, FxProc: 0},
 58985  }
 58986  
 58987  type SqlMessage1 = struct {
 58988  	Fop           int32
 58989  	F__ccgo_pad1  [4]byte
 58990  	FpDb          uintptr
 58991  	FpStmt        uintptr
 58992  	FerrCode      int32
 58993  	F__ccgo_pad2  [4]byte
 58994  	FzIn          uintptr
 58995  	FnByte        int32
 58996  	F__ccgo_pad3  [4]byte
 58997  	FzOut         uintptr
 58998  	FpNext        uintptr
 58999  	FpPrev        uintptr
 59000  	FclientMutex  pthread_mutex_t
 59001  	FclientWakeup pthread_cond_t
 59002  }
 59003  
 59004  type SqlMessage = SqlMessage1
 59005  
 59006  type ServerState = struct {
 59007  	FqueueMutex   pthread_mutex_t
 59008  	FserverMutex  pthread_mutex_t
 59009  	FserverWakeup pthread_cond_t
 59010  	FserverHalt   int32
 59011  	F__ccgo_pad1  [4]byte
 59012  	FpQueueHead   uintptr
 59013  	FpQueueTail   uintptr
 59014  }
 59015  
 59016  var g4 = ServerState{
 59017  	FqueueMutex:   pthread_mutex_t{F__sig: int64(X_PTHREAD_MUTEX_SIG_init)},
 59018  	FserverMutex:  pthread_mutex_t{F__sig: int64(X_PTHREAD_MUTEX_SIG_init)},
 59019  	FserverWakeup: pthread_cond_t{F__sig: int64(X_PTHREAD_COND_SIG_init)}}
 59020  
 59021  func sendToServer(tls *libc.TLS, pMsg uintptr) {
 59022  	libc.Xpthread_mutex_init(tls, pMsg+72, uintptr(0))
 59023  	libc.Xpthread_cond_init(tls, pMsg+136, uintptr(0))
 59024  
 59025  	libc.Xpthread_mutex_lock(tls, uintptr(unsafe.Pointer(&g4)))
 59026  	(*SqlMessage)(unsafe.Pointer(pMsg)).FpNext = g4.FpQueueHead
 59027  	if g4.FpQueueHead == uintptr(0) {
 59028  		g4.FpQueueTail = pMsg
 59029  	} else {
 59030  		(*SqlMessage)(unsafe.Pointer(g4.FpQueueHead)).FpPrev = pMsg
 59031  	}
 59032  	(*SqlMessage)(unsafe.Pointer(pMsg)).FpPrev = uintptr(0)
 59033  	g4.FpQueueHead = pMsg
 59034  	libc.Xpthread_mutex_unlock(tls, uintptr(unsafe.Pointer(&g4)))
 59035  
 59036  	libc.Xpthread_mutex_lock(tls, pMsg+72)
 59037  	libc.Xpthread_cond_signal(tls, uintptr(unsafe.Pointer(&g4))+128)
 59038  	for (*SqlMessage)(unsafe.Pointer(pMsg)).Fop != MSG_Done {
 59039  		libc.Xpthread_cond_wait(tls, pMsg+136, pMsg+72)
 59040  	}
 59041  	libc.Xpthread_mutex_unlock(tls, pMsg+72)
 59042  
 59043  	libc.Xpthread_mutex_destroy(tls, pMsg+72)
 59044  	libc.Xpthread_cond_destroy(tls, pMsg+136)
 59045  }
 59046  
 59047  func sqlite3_client_open(tls *libc.TLS, zDatabaseName uintptr, ppDb uintptr) int32 {
 59048  	bp := tls.Alloc(184)
 59049  	defer tls.Free(184)
 59050  
 59051  	(*SqlMessage)(unsafe.Pointer(bp)).Fop = MSG_Open
 59052  	(*SqlMessage)(unsafe.Pointer(bp)).FzIn = zDatabaseName
 59053  	sendToServer(tls, bp)
 59054  	*(*uintptr)(unsafe.Pointer(ppDb)) = (*SqlMessage)(unsafe.Pointer(bp)).FpDb
 59055  	return (*SqlMessage)(unsafe.Pointer(bp)).FerrCode
 59056  }
 59057  
 59058  func sqlite3_client_prepare(tls *libc.TLS, pDb uintptr, zSql uintptr, nByte int32, ppStmt uintptr, pzTail uintptr) int32 {
 59059  	bp := tls.Alloc(184)
 59060  	defer tls.Free(184)
 59061  
 59062  	(*SqlMessage)(unsafe.Pointer(bp)).Fop = MSG_Prepare
 59063  	(*SqlMessage)(unsafe.Pointer(bp)).FpDb = pDb
 59064  	(*SqlMessage)(unsafe.Pointer(bp)).FzIn = zSql
 59065  	(*SqlMessage)(unsafe.Pointer(bp)).FnByte = nByte
 59066  	sendToServer(tls, bp)
 59067  	*(*uintptr)(unsafe.Pointer(ppStmt)) = (*SqlMessage)(unsafe.Pointer(bp)).FpStmt
 59068  	if pzTail != 0 {
 59069  		*(*uintptr)(unsafe.Pointer(pzTail)) = (*SqlMessage)(unsafe.Pointer(bp)).FzOut
 59070  	}
 59071  	return (*SqlMessage)(unsafe.Pointer(bp)).FerrCode
 59072  }
 59073  
 59074  func sqlite3_client_step(tls *libc.TLS, pStmt uintptr) int32 {
 59075  	bp := tls.Alloc(184)
 59076  	defer tls.Free(184)
 59077  
 59078  	(*SqlMessage)(unsafe.Pointer(bp)).Fop = MSG_Step
 59079  	(*SqlMessage)(unsafe.Pointer(bp)).FpStmt = pStmt
 59080  	sendToServer(tls, bp)
 59081  	return (*SqlMessage)(unsafe.Pointer(bp)).FerrCode
 59082  }
 59083  
 59084  func sqlite3_client_reset(tls *libc.TLS, pStmt uintptr) int32 {
 59085  	bp := tls.Alloc(184)
 59086  	defer tls.Free(184)
 59087  
 59088  	(*SqlMessage)(unsafe.Pointer(bp)).Fop = MSG_Reset
 59089  	(*SqlMessage)(unsafe.Pointer(bp)).FpStmt = pStmt
 59090  	sendToServer(tls, bp)
 59091  	return (*SqlMessage)(unsafe.Pointer(bp)).FerrCode
 59092  }
 59093  
 59094  func sqlite3_client_finalize(tls *libc.TLS, pStmt uintptr) int32 {
 59095  	bp := tls.Alloc(184)
 59096  	defer tls.Free(184)
 59097  
 59098  	(*SqlMessage)(unsafe.Pointer(bp)).Fop = MSG_Finalize
 59099  	(*SqlMessage)(unsafe.Pointer(bp)).FpStmt = pStmt
 59100  	sendToServer(tls, bp)
 59101  	return (*SqlMessage)(unsafe.Pointer(bp)).FerrCode
 59102  }
 59103  
 59104  func sqlite3_client_close(tls *libc.TLS, pDb uintptr) int32 {
 59105  	bp := tls.Alloc(184)
 59106  	defer tls.Free(184)
 59107  
 59108  	(*SqlMessage)(unsafe.Pointer(bp)).Fop = MSG_Close
 59109  	(*SqlMessage)(unsafe.Pointer(bp)).FpDb = pDb
 59110  	sendToServer(tls, bp)
 59111  	return (*SqlMessage)(unsafe.Pointer(bp)).FerrCode
 59112  }
 59113  
 59114  func sqlite3_server(tls *libc.TLS, NotUsed uintptr) uintptr {
 59115  	if libc.Xpthread_mutex_trylock(tls, uintptr(unsafe.Pointer(&g4))+64) != 0 {
 59116  		return uintptr(0)
 59117  	}
 59118  	sqlite3.Xsqlite3_enable_shared_cache(tls, 1)
 59119  	for !(g4.FserverHalt != 0) {
 59120  		var pMsg uintptr
 59121  
 59122  		libc.Xpthread_mutex_lock(tls, uintptr(unsafe.Pointer(&g4)))
 59123  		for g4.FpQueueTail == uintptr(0) && g4.FserverHalt == 0 {
 59124  			libc.Xpthread_cond_wait(tls, uintptr(unsafe.Pointer(&g4))+128, uintptr(unsafe.Pointer(&g4)))
 59125  		}
 59126  		pMsg = g4.FpQueueTail
 59127  		if pMsg != 0 {
 59128  			if (*SqlMessage)(unsafe.Pointer(pMsg)).FpPrev != 0 {
 59129  				(*SqlMessage)(unsafe.Pointer((*SqlMessage)(unsafe.Pointer(pMsg)).FpPrev)).FpNext = uintptr(0)
 59130  			} else {
 59131  				g4.FpQueueHead = uintptr(0)
 59132  			}
 59133  			g4.FpQueueTail = (*SqlMessage)(unsafe.Pointer(pMsg)).FpPrev
 59134  		}
 59135  		libc.Xpthread_mutex_unlock(tls, uintptr(unsafe.Pointer(&g4)))
 59136  		if pMsg == uintptr(0) {
 59137  			break
 59138  		}
 59139  
 59140  		libc.Xpthread_mutex_lock(tls, pMsg+72)
 59141  		switch (*SqlMessage)(unsafe.Pointer(pMsg)).Fop {
 59142  		case MSG_Open:
 59143  			{
 59144  				(*SqlMessage)(unsafe.Pointer(pMsg)).FerrCode = sqlite3.Xsqlite3_open(tls, (*SqlMessage)(unsafe.Pointer(pMsg)).FzIn, pMsg+8)
 59145  				break
 59146  
 59147  			}
 59148  		case MSG_Prepare:
 59149  			{
 59150  				(*SqlMessage)(unsafe.Pointer(pMsg)).FerrCode = sqlite3.Xsqlite3_prepare(tls, (*SqlMessage)(unsafe.Pointer(pMsg)).FpDb, (*SqlMessage)(unsafe.Pointer(pMsg)).FzIn, (*SqlMessage)(unsafe.Pointer(pMsg)).FnByte,
 59151  					pMsg+16, pMsg+48)
 59152  				break
 59153  
 59154  			}
 59155  		case MSG_Step:
 59156  			{
 59157  				(*SqlMessage)(unsafe.Pointer(pMsg)).FerrCode = sqlite3.Xsqlite3_step(tls, (*SqlMessage)(unsafe.Pointer(pMsg)).FpStmt)
 59158  				break
 59159  
 59160  			}
 59161  		case MSG_Reset:
 59162  			{
 59163  				(*SqlMessage)(unsafe.Pointer(pMsg)).FerrCode = sqlite3.Xsqlite3_reset(tls, (*SqlMessage)(unsafe.Pointer(pMsg)).FpStmt)
 59164  				break
 59165  
 59166  			}
 59167  		case MSG_Finalize:
 59168  			{
 59169  				(*SqlMessage)(unsafe.Pointer(pMsg)).FerrCode = sqlite3.Xsqlite3_finalize(tls, (*SqlMessage)(unsafe.Pointer(pMsg)).FpStmt)
 59170  				break
 59171  
 59172  			}
 59173  		case MSG_Close:
 59174  			{
 59175  				(*SqlMessage)(unsafe.Pointer(pMsg)).FerrCode = sqlite3.Xsqlite3_close(tls, (*SqlMessage)(unsafe.Pointer(pMsg)).FpDb)
 59176  				break
 59177  
 59178  			}
 59179  		}
 59180  
 59181  		(*SqlMessage)(unsafe.Pointer(pMsg)).Fop = MSG_Done
 59182  		libc.Xpthread_mutex_unlock(tls, pMsg+72)
 59183  		libc.Xpthread_cond_signal(tls, pMsg+136)
 59184  	}
 59185  	libc.Xpthread_mutex_unlock(tls, uintptr(unsafe.Pointer(&g4))+64)
 59186  	return uintptr(0)
 59187  }
 59188  
 59189  func sqlite3_server_start(tls *libc.TLS) {
 59190  	bp := tls.Alloc(8)
 59191  	defer tls.Free(8)
 59192  
 59193  	var rc int32
 59194  	g4.FserverHalt = 0
 59195  	rc = libc.Xpthread_create(tls, bp, uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 59196  		f func(*libc.TLS, uintptr) uintptr
 59197  	}{sqlite3_server})), uintptr(0))
 59198  	if rc == 0 {
 59199  		libc.Xpthread_detach(tls, *(*pthread_t)(unsafe.Pointer(bp)))
 59200  	}
 59201  }
 59202  
 59203  func serverWrapper(tls *libc.TLS, pnDecr uintptr) uintptr {
 59204  	var p uintptr = sqlite3_server(tls, uintptr(0))
 59205  	*(*int32)(unsafe.Pointer(pnDecr))--
 59206  	return p
 59207  }
 59208  
 59209  func sqlite3_server_start2(tls *libc.TLS, pnDecr uintptr) {
 59210  	bp := tls.Alloc(8)
 59211  	defer tls.Free(8)
 59212  
 59213  	var rc int32
 59214  	g4.FserverHalt = 0
 59215  	rc = libc.Xpthread_create(tls, bp, uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 59216  		f func(*libc.TLS, uintptr) uintptr
 59217  	}{serverWrapper})), pnDecr)
 59218  	if rc == 0 {
 59219  		libc.Xpthread_detach(tls, *(*pthread_t)(unsafe.Pointer(bp)))
 59220  	}
 59221  }
 59222  
 59223  func sqlite3_server_stop(tls *libc.TLS) {
 59224  	g4.FserverHalt = 1
 59225  	libc.Xpthread_cond_broadcast(tls, uintptr(unsafe.Pointer(&g4))+128)
 59226  	libc.Xpthread_mutex_lock(tls, uintptr(unsafe.Pointer(&g4))+64)
 59227  	libc.Xpthread_mutex_unlock(tls, uintptr(unsafe.Pointer(&g4))+64)
 59228  }
 59229  
 59230  type SuperlockBusy1 = struct {
 59231  	FxBusy       uintptr
 59232  	FpBusyArg    uintptr
 59233  	FnBusy       int32
 59234  	F__ccgo_pad1 [4]byte
 59235  }
 59236  
 59237  type SuperlockBusy = SuperlockBusy1
 59238  
 59239  type Superlock1 = struct {
 59240  	Fdb          uintptr
 59241  	FbWal        int32
 59242  	F__ccgo_pad1 [4]byte
 59243  }
 59244  
 59245  type Superlock = Superlock1
 59246  
 59247  func superlockBusyHandler(tls *libc.TLS, pCtx uintptr, UNUSED int32) int32 {
 59248  	var pBusy uintptr = pCtx
 59249  	if (*SuperlockBusy)(unsafe.Pointer(pBusy)).FxBusy == uintptr(0) {
 59250  		return 0
 59251  	}
 59252  	return (*struct {
 59253  		f func(*libc.TLS, uintptr, int32) int32
 59254  	})(unsafe.Pointer(&struct{ uintptr }{(*SuperlockBusy)(unsafe.Pointer(pBusy)).FxBusy})).f(tls, (*SuperlockBusy)(unsafe.Pointer(pBusy)).FpBusyArg, libc.PostIncInt32(&(*SuperlockBusy)(unsafe.Pointer(pBusy)).FnBusy, 1))
 59255  }
 59256  
 59257  func superlockIsWal(tls *libc.TLS, pLock uintptr) int32 {
 59258  	bp := tls.Alloc(8)
 59259  	defer tls.Free(8)
 59260  
 59261  	var rc int32
 59262  
 59263  	rc = sqlite3.Xsqlite3_prepare(tls, (*Superlock)(unsafe.Pointer(pLock)).Fdb, ts+37128, -1, bp, uintptr(0))
 59264  	if rc != SQLITE_OK {
 59265  		return rc
 59266  	}
 59267  
 59268  	(*Superlock)(unsafe.Pointer(pLock)).FbWal = 0
 59269  	if SQLITE_ROW == sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp))) {
 59270  		var zMode uintptr = sqlite3.Xsqlite3_column_text(tls, *(*uintptr)(unsafe.Pointer(bp)), 0)
 59271  		if zMode != 0 && libc.Xstrlen(tls, zMode) == uint64(3) && sqlite3.Xsqlite3_strnicmp(tls, ts+30050, zMode, 3) == 0 {
 59272  			(*Superlock)(unsafe.Pointer(pLock)).FbWal = 1
 59273  		}
 59274  	}
 59275  
 59276  	return sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp)))
 59277  }
 59278  
 59279  func superlockShmLock(tls *libc.TLS, fd uintptr, idx int32, nByte int32, pBusy uintptr) int32 {
 59280  	var rc int32
 59281  	var xShmLock uintptr = (*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(fd)).FpMethods)).FxShmLock
 59282  	for __ccgo := true; __ccgo; __ccgo = rc == SQLITE_BUSY && superlockBusyHandler(tls, pBusy, 0) != 0 {
 59283  		rc = (*struct {
 59284  			f func(*libc.TLS, uintptr, int32, int32, int32) int32
 59285  		})(unsafe.Pointer(&struct{ uintptr }{xShmLock})).f(tls, fd, idx, nByte, SQLITE_SHM_LOCK|SQLITE_SHM_EXCLUSIVE)
 59286  	}
 59287  	return rc
 59288  }
 59289  
 59290  func superlockWalLock(tls *libc.TLS, db uintptr, pBusy uintptr) int32 {
 59291  	bp := tls.Alloc(16)
 59292  	defer tls.Free(16)
 59293  
 59294  	var rc int32
 59295  	*(*uintptr)(unsafe.Pointer(bp)) = uintptr(0)
 59296  	*(*uintptr)(unsafe.Pointer(bp + 8)) = uintptr(0)
 59297  
 59298  	rc = sqlite3.Xsqlite3_file_control(tls, db, ts+85, SQLITE_FCNTL_FILE_POINTER, bp)
 59299  	if rc != SQLITE_OK {
 59300  		return rc
 59301  	}
 59302  
 59303  	rc = superlockShmLock(tls, *(*uintptr)(unsafe.Pointer(bp)), 2, 1, pBusy)
 59304  	if rc != SQLITE_OK {
 59305  		return rc
 59306  	}
 59307  
 59308  	rc = (*struct {
 59309  		f func(*libc.TLS, uintptr, int32, int32, int32, uintptr) int32
 59310  	})(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)
 59311  	if rc != SQLITE_OK {
 59312  		return rc
 59313  	}
 59314  	libc.X__builtin___memset_chk(tls, *(*uintptr)(unsafe.Pointer(bp + 8)), 0, uint64(32), libc.X__builtin_object_size(tls, *(*uintptr)(unsafe.Pointer(bp + 8)), 0))
 59315  
 59316  	rc = superlockShmLock(tls, *(*uintptr)(unsafe.Pointer(bp)), 3, SQLITE_SHM_NLOCK-3, pBusy)
 59317  	return rc
 59318  }
 59319  
 59320  func sqlite3demo_superunlock(tls *libc.TLS, pLock uintptr) {
 59321  	bp := tls.Alloc(8)
 59322  	defer tls.Free(8)
 59323  
 59324  	var p uintptr = pLock
 59325  	if (*Superlock)(unsafe.Pointer(p)).FbWal != 0 {
 59326  		var rc int32
 59327  		var flags int32 = SQLITE_SHM_UNLOCK | SQLITE_SHM_EXCLUSIVE
 59328  		*(*uintptr)(unsafe.Pointer(bp)) = uintptr(0)
 59329  		rc = sqlite3.Xsqlite3_file_control(tls, (*Superlock)(unsafe.Pointer(p)).Fdb, ts+85, SQLITE_FCNTL_FILE_POINTER, bp)
 59330  		if rc == SQLITE_OK {
 59331  			(*struct {
 59332  				f func(*libc.TLS, uintptr, int32, int32, int32) int32
 59333  			})(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)
 59334  			(*struct {
 59335  				f func(*libc.TLS, uintptr, int32, int32, int32) int32
 59336  			})(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)
 59337  		}
 59338  	}
 59339  	sqlite3.Xsqlite3_close(tls, (*Superlock)(unsafe.Pointer(p)).Fdb)
 59340  	sqlite3.Xsqlite3_free(tls, p)
 59341  }
 59342  
 59343  func sqlite3demo_superlock(tls *libc.TLS, zPath uintptr, zVfs uintptr, xBusy uintptr, pBusyArg uintptr, ppLock uintptr) int32 {
 59344  	bp := tls.Alloc(24)
 59345  	defer tls.Free(24)
 59346  
 59347  	*(*SuperlockBusy)(unsafe.Pointer(bp)) = SuperlockBusy{}
 59348  	var rc int32
 59349  	var pLock uintptr
 59350  
 59351  	pLock = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(Superlock{})))
 59352  	if !(pLock != 0) {
 59353  		return SQLITE_NOMEM
 59354  	}
 59355  	libc.X__builtin___memset_chk(tls, pLock, 0, uint64(unsafe.Sizeof(Superlock{})), libc.X__builtin_object_size(tls, pLock, 0))
 59356  
 59357  	rc = sqlite3.Xsqlite3_open_v2(tls,
 59358  		zPath, pLock, SQLITE_OPEN_READWRITE|SQLITE_OPEN_CREATE, zVfs)
 59359  
 59360  	if rc == SQLITE_OK {
 59361  		(*SuperlockBusy)(unsafe.Pointer(bp)).FxBusy = xBusy
 59362  		(*SuperlockBusy)(unsafe.Pointer(bp)).FpBusyArg = pBusyArg
 59363  		sqlite3.Xsqlite3_busy_handler(tls, (*Superlock)(unsafe.Pointer(pLock)).Fdb, *(*uintptr)(unsafe.Pointer(&struct {
 59364  			f func(*libc.TLS, uintptr, int32) int32
 59365  		}{superlockBusyHandler})), bp)
 59366  		rc = sqlite3.Xsqlite3_exec(tls, (*Superlock)(unsafe.Pointer(pLock)).Fdb, ts+13217, uintptr(0), uintptr(0), uintptr(0))
 59367  	}
 59368  
 59369  	if rc == SQLITE_OK {
 59370  		if SQLITE_OK == libc.AssignInt32(&rc, superlockIsWal(tls, pLock)) && (*Superlock)(unsafe.Pointer(pLock)).FbWal != 0 {
 59371  			rc = sqlite3.Xsqlite3_exec(tls, (*Superlock)(unsafe.Pointer(pLock)).Fdb, ts+11628, uintptr(0), uintptr(0), uintptr(0))
 59372  			if rc == SQLITE_OK {
 59373  				rc = superlockWalLock(tls, (*Superlock)(unsafe.Pointer(pLock)).Fdb, bp)
 59374  			}
 59375  		}
 59376  	}
 59377  
 59378  	if rc != SQLITE_OK {
 59379  		sqlite3demo_superunlock(tls, pLock)
 59380  		*(*uintptr)(unsafe.Pointer(ppLock)) = uintptr(0)
 59381  	} else {
 59382  		*(*uintptr)(unsafe.Pointer(ppLock)) = pLock
 59383  	}
 59384  
 59385  	return rc
 59386  }
 59387  
 59388  type InterpAndScript1 = struct {
 59389  	Finterp  uintptr
 59390  	FpScript uintptr
 59391  }
 59392  
 59393  type InterpAndScript = InterpAndScript1
 59394  
 59395  func superunlock_del(tls *libc.TLS, cd ClientData) {
 59396  	sqlite3demo_superunlock(tls, cd)
 59397  }
 59398  
 59399  func superunlock_cmd(tls *libc.TLS, cd ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 59400  	if objc != 1 {
 59401  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+584)
 59402  		return TCL_ERROR
 59403  	}
 59404  	tcl.XTcl_DeleteCommand(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))))
 59405  	return TCL_OK
 59406  }
 59407  
 59408  func superlock_busy(tls *libc.TLS, pCtx uintptr, nBusy int32) int32 {
 59409  	bp := tls.Alloc(4)
 59410  	defer tls.Free(4)
 59411  
 59412  	var p uintptr = pCtx
 59413  	var pEval uintptr
 59414  	*(*int32)(unsafe.Pointer(bp)) = 0
 59415  
 59416  	pEval = tcl.XTcl_DuplicateObj(tls, (*InterpAndScript)(unsafe.Pointer(p)).FpScript)
 59417  	(*Tcl_Obj)(unsafe.Pointer(pEval)).FrefCount++
 59418  	tcl.XTcl_ListObjAppendElement(tls, (*InterpAndScript)(unsafe.Pointer(p)).Finterp, pEval, tcl.XTcl_NewIntObj(tls, nBusy))
 59419  	tcl.XTcl_EvalObjEx(tls, (*InterpAndScript)(unsafe.Pointer(p)).Finterp, pEval, TCL_EVAL_GLOBAL)
 59420  	tcl.XTcl_GetIntFromObj(tls, (*InterpAndScript)(unsafe.Pointer(p)).Finterp, tcl.XTcl_GetObjResult(tls, (*InterpAndScript)(unsafe.Pointer(p)).Finterp), bp)
 59421  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 59422  		if libc.PreDecInt32(&(*Tcl_Obj)(unsafe.Pointer(pEval)).FrefCount, 1) <= 0 {
 59423  			tcl.XTclFreeObj(tls, pEval)
 59424  		}
 59425  	}
 59426  
 59427  	return *(*int32)(unsafe.Pointer(bp))
 59428  }
 59429  
 59430  func superlock_cmd(tls *libc.TLS, cd ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 59431  	bp := tls.Alloc(40)
 59432  	defer tls.Free(40)
 59433  
 59434  	var zPath uintptr
 59435  	var zVfs uintptr = uintptr(0)
 59436  	*(*InterpAndScript)(unsafe.Pointer(bp + 16)) = InterpAndScript{}
 59437  	var xBusy uintptr = uintptr(0)
 59438  	var rc int32
 59439  
 59440  	if objc < 3 || objc > 5 {
 59441  		tcl.XTcl_WrongNumArgs(tls,
 59442  			interp, 1, objv, ts+37153)
 59443  		return TCL_ERROR
 59444  	}
 59445  
 59446  	zPath = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 59447  
 59448  	if objc > 3 {
 59449  		zVfs = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)))
 59450  		if libc.Xstrlen(tls, zVfs) == uint64(0) {
 59451  			zVfs = uintptr(0)
 59452  		}
 59453  	}
 59454  	if objc > 4 {
 59455  		(*InterpAndScript)(unsafe.Pointer(bp + 16)).Finterp = interp
 59456  		(*InterpAndScript)(unsafe.Pointer(bp + 16)).FpScript = *(*uintptr)(unsafe.Pointer(objv + 4*8))
 59457  		xBusy = *(*uintptr)(unsafe.Pointer(&struct {
 59458  			f func(*libc.TLS, uintptr, int32) int32
 59459  		}{superlock_busy}))
 59460  	}
 59461  
 59462  	rc = sqlite3demo_superlock(tls, zPath, zVfs, xBusy, bp+16, bp+32)
 59463  
 59464  	if rc != SQLITE_OK {
 59465  		tcl.XTcl_ResetResult(tls, interp)
 59466  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, sqlite3.Xsqlite3ErrStr(tls, rc), 0))
 59467  		return TCL_ERROR
 59468  	}
 59469  
 59470  	tcl.XTcl_CreateObjCommand(tls,
 59471  		interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), *(*uintptr)(unsafe.Pointer(&struct {
 59472  			f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
 59473  		}{superunlock_cmd})), *(*uintptr)(unsafe.Pointer(bp + 32)), *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, ClientData) }{superunlock_del})))
 59474  	tcl.XTcl_SetObjResult(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 59475  	return TCL_OK
 59476  }
 59477  
 59478  func SqliteSuperlock_Init(tls *libc.TLS, interp uintptr) int32 {
 59479  	tcl.XTcl_CreateObjCommand(tls, interp, ts+37194, *(*uintptr)(unsafe.Pointer(&struct {
 59480  		f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
 59481  	}{superlock_cmd})), uintptr(0), uintptr(0))
 59482  	return TCL_OK
 59483  }
 59484  
 59485  type TestSyscallGlobal = struct {
 59486  	FbPersist         int32
 59487  	FnCount           int32
 59488  	FnFail            int32
 59489  	Fpgsz             int32
 59490  	Forig_getpagesize sqlite3_syscall_ptr
 59491  }
 59492  
 59493  var gSyscall = TestSyscallGlobal{}
 59494  
 59495  type TestSyscallArray = struct {
 59496  	FzName         uintptr
 59497  	FxTest         sqlite3_syscall_ptr
 59498  	FxOrig         sqlite3_syscall_ptr
 59499  	Fdefault_errno int32
 59500  	Fcustom_errno  int32
 59501  }
 59502  
 59503  var aSyscall = [19]TestSyscallArray{
 59504  	{FzName: ts + 37216, FxTest: 0, Fdefault_errno: EACCES},
 59505  	{FzName: ts + 9490, FxTest: 0},
 59506  	{FzName: ts + 37221, FxTest: 0},
 59507  	{FzName: ts + 37228, FxTest: 0},
 59508  	{FzName: ts + 37235, FxTest: 0},
 59509  	{FzName: ts + 37240, FxTest: 0},
 59510  	{FzName: ts + 37246, FxTest: 0, Fdefault_errno: EIO},
 59511  	{FzName: ts + 37256, FxTest: 0, Fdefault_errno: EACCES},
 59512  	{FzName: ts + 25230, FxTest: 0},
 59513  	{FzName: ts + 37262, FxTest: 0},
 59514  	{FzName: ts + 37268, FxTest: 0},
 59515  	{FzName: ts + 25235, FxTest: 0},
 59516  	{FzName: ts + 37276, FxTest: 0},
 59517  	{FzName: ts + 37283, FxTest: 0},
 59518  	{FzName: ts + 37292, FxTest: 0},
 59519  	{FzName: ts + 37299, FxTest: 0},
 59520  	{FzName: ts + 29144, FxTest: 0},
 59521  	{FzName: ts + 37309, FxTest: 0},
 59522  	{},
 59523  }
 59524  
 59525  func tsIsFail(tls *libc.TLS) int32 {
 59526  	gSyscall.FnCount--
 59527  	if gSyscall.FnCount == 0 || gSyscall.FnFail != 0 && gSyscall.FbPersist != 0 {
 59528  		gSyscall.FnFail++
 59529  		return 1
 59530  	}
 59531  	return 0
 59532  }
 59533  
 59534  func tsErrno(tls *libc.TLS, zFunc uintptr) int32 {
 59535  	var i int32
 59536  	var nFunc int32 = int32(libc.Xstrlen(tls, zFunc))
 59537  	for i = 0; aSyscall[i].FzName != 0; i++ {
 59538  		if libc.Xstrlen(tls, aSyscall[i].FzName) != size_t(nFunc) {
 59539  			continue
 59540  		}
 59541  		if libc.Xmemcmp(tls, aSyscall[i].FzName, zFunc, uint64(nFunc)) != 0 {
 59542  			continue
 59543  		}
 59544  		return aSyscall[i].Fcustom_errno
 59545  	}
 59546  
 59547  	return 0
 59548  }
 59549  
 59550  func tsIsFailErrno(tls *libc.TLS, zFunc uintptr) int32 {
 59551  	if tsIsFail(tls) != 0 {
 59552  		*(*int32)(unsafe.Pointer(libc.X__error(tls))) = tsErrno(tls, zFunc)
 59553  		return 1
 59554  	}
 59555  	return 0
 59556  }
 59557  
 59558  func ts_open(tls *libc.TLS, zFile uintptr, flags int32, mode int32) int32 {
 59559  	if tsIsFailErrno(tls, ts+37216) != 0 {
 59560  		return -1
 59561  	}
 59562  	return (*(*func(*libc.TLS, uintptr, int32, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 16)))(tls, zFile, flags, mode)
 59563  }
 59564  
 59565  func ts_close(tls *libc.TLS, fd int32) int32 {
 59566  	if tsIsFail(tls) != 0 {
 59567  		(*(*func(*libc.TLS, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 1*32 + 16)))(tls, fd)
 59568  		return -1
 59569  	}
 59570  	return (*(*func(*libc.TLS, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 1*32 + 16)))(tls, fd)
 59571  }
 59572  
 59573  func ts_access(tls *libc.TLS, zPath uintptr, mode int32) int32 {
 59574  	if tsIsFail(tls) != 0 {
 59575  		return -1
 59576  	}
 59577  	return (*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 2*32 + 16)))(tls, zPath, mode)
 59578  }
 59579  
 59580  func ts_getcwd(tls *libc.TLS, zPath uintptr, nPath size_t) uintptr {
 59581  	if tsIsFail(tls) != 0 {
 59582  		return uintptr(0)
 59583  	}
 59584  	return (*(*func(*libc.TLS, uintptr, size_t) uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 3*32 + 16)))(tls, zPath, nPath)
 59585  }
 59586  
 59587  func ts_stat(tls *libc.TLS, zPath uintptr, p uintptr) int32 {
 59588  	if tsIsFail(tls) != 0 {
 59589  		return -1
 59590  	}
 59591  	return (*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 4*32 + 16)))(tls, zPath, p)
 59592  }
 59593  
 59594  func ts_fstat(tls *libc.TLS, fd int32, p uintptr) int32 {
 59595  	if tsIsFailErrno(tls, ts+37240) != 0 {
 59596  		return -1
 59597  	}
 59598  	return (*(*func(*libc.TLS, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 5*32 + 16)))(tls, fd, p)
 59599  }
 59600  
 59601  func ts_ftruncate(tls *libc.TLS, fd int32, n off_t) int32 {
 59602  	if tsIsFailErrno(tls, ts+37246) != 0 {
 59603  		return -1
 59604  	}
 59605  	return (*(*func(*libc.TLS, int32, off_t) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 6*32 + 16)))(tls, fd, n)
 59606  }
 59607  
 59608  func ts_fcntl(tls *libc.TLS, fd int32, cmd int32, va uintptr) int32 {
 59609  	bp := tls.Alloc(8)
 59610  	defer tls.Free(8)
 59611  
 59612  	var ap va_list
 59613  	_ = ap
 59614  	var pArg uintptr
 59615  	if tsIsFailErrno(tls, ts+37256) != 0 {
 59616  		return -1
 59617  	}
 59618  	ap = va
 59619  	pArg = libc.VaUintptr(&ap)
 59620  	return (*(*func(*libc.TLS, int32, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 7*32 + 16)))(tls, fd, cmd, libc.VaList(bp, pArg))
 59621  }
 59622  
 59623  func ts_read(tls *libc.TLS, fd int32, aBuf uintptr, nBuf size_t) int32 {
 59624  	if tsIsFailErrno(tls, ts+25230) != 0 {
 59625  		return -1
 59626  	}
 59627  	return int32((*(*func(*libc.TLS, int32, uintptr, size_t) ssize_t)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 8*32 + 16)))(tls, fd, aBuf, nBuf))
 59628  }
 59629  
 59630  func ts_pread(tls *libc.TLS, fd int32, aBuf uintptr, nBuf size_t, off off_t) int32 {
 59631  	if tsIsFailErrno(tls, ts+37262) != 0 {
 59632  		return -1
 59633  	}
 59634  	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))
 59635  }
 59636  
 59637  func ts_pread64(tls *libc.TLS, fd int32, aBuf uintptr, nBuf size_t, off sqlite3_uint64) int32 {
 59638  	if tsIsFailErrno(tls, ts+37268) != 0 {
 59639  		return -1
 59640  	}
 59641  	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))
 59642  }
 59643  
 59644  func ts_write(tls *libc.TLS, fd int32, aBuf uintptr, nBuf size_t) int32 {
 59645  	if tsIsFailErrno(tls, ts+25235) != 0 {
 59646  		if tsErrno(tls, ts+25235) == EINTR {
 59647  			(*(*func(*libc.TLS, int32, uintptr, size_t) ssize_t)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 11*32 + 16)))(tls, fd, aBuf, nBuf/uint64(2))
 59648  		}
 59649  		return -1
 59650  	}
 59651  	return int32((*(*func(*libc.TLS, int32, uintptr, size_t) ssize_t)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 11*32 + 16)))(tls, fd, aBuf, nBuf))
 59652  }
 59653  
 59654  func ts_pwrite(tls *libc.TLS, fd int32, aBuf uintptr, nBuf size_t, off off_t) int32 {
 59655  	if tsIsFailErrno(tls, ts+37276) != 0 {
 59656  		return -1
 59657  	}
 59658  	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))
 59659  }
 59660  
 59661  func ts_pwrite64(tls *libc.TLS, fd int32, aBuf uintptr, nBuf size_t, off sqlite3_uint64) int32 {
 59662  	if tsIsFailErrno(tls, ts+37283) != 0 {
 59663  		return -1
 59664  	}
 59665  	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))
 59666  }
 59667  
 59668  func ts_fchmod(tls *libc.TLS, fd int32, mode mode_t) int32 {
 59669  	if tsIsFail(tls) != 0 {
 59670  		return -1
 59671  	}
 59672  	return (*(*func(*libc.TLS, int32, mode_t) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 14*32 + 16)))(tls, fd, mode)
 59673  }
 59674  
 59675  func ts_fallocate(tls *libc.TLS, fd int32, off off_t, len off_t) int32 {
 59676  	if tsIsFail(tls) != 0 {
 59677  		return tsErrno(tls, ts+37299)
 59678  	}
 59679  	return (*(*func(*libc.TLS, int32, off_t, off_t) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 15*32 + 16)))(tls, fd, off, len)
 59680  }
 59681  
 59682  func ts_mmap(tls *libc.TLS, pAddr uintptr, nByte size_t, prot int32, flags int32, fd int32, iOff off_t) uintptr {
 59683  	if tsIsFailErrno(tls, ts+29144) != 0 {
 59684  		return libc.UintptrFromInt32(-1)
 59685  	}
 59686  	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)
 59687  }
 59688  
 59689  func ts_mremap(tls *libc.TLS, a uintptr, b size_t, c size_t, d int32, va uintptr) uintptr {
 59690  	bp := tls.Alloc(8)
 59691  	defer tls.Free(8)
 59692  
 59693  	var ap va_list
 59694  	_ = ap
 59695  	var pArg uintptr
 59696  	if tsIsFailErrno(tls, ts+37309) != 0 {
 59697  		return libc.UintptrFromInt32(-1)
 59698  	}
 59699  	ap = va
 59700  	pArg = libc.VaUintptr(&ap)
 59701  	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))
 59702  }
 59703  
 59704  func test_syscall_install(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 59705  	bp := tls.Alloc(20)
 59706  	defer tls.Free(20)
 59707  
 59708  	var pVfs uintptr
 59709  
 59710  	var i int32
 59711  
 59712  	if objc != 3 {
 59713  		tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+37316)
 59714  		return TCL_ERROR
 59715  	}
 59716  	if tcl.XTcl_ListObjGetElements(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp, bp+8) != 0 {
 59717  		return TCL_ERROR
 59718  	}
 59719  	pVfs = sqlite3.Xsqlite3_vfs_find(tls, uintptr(0))
 59720  
 59721  	for i = 0; i < *(*int32)(unsafe.Pointer(bp)); i++ {
 59722  		var rc int32 = tcl.XTcl_GetIndexFromObjStruct(tls, interp,
 59723  			*(*uintptr)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 8)) + uintptr(i)*8)), uintptr(unsafe.Pointer(&aSyscall)), int32(unsafe.Sizeof(TestSyscallArray{})), ts+37329, 0, bp+16)
 59724  		if rc != 0 {
 59725  			return rc
 59726  		}
 59727  		if aSyscall[*(*int32)(unsafe.Pointer(bp + 16))].FxOrig == uintptr(0) {
 59728  			aSyscall[*(*int32)(unsafe.Pointer(bp + 16))].FxOrig = (*struct {
 59729  				f func(*libc.TLS, uintptr, uintptr) sqlite3_syscall_ptr
 59730  			})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pVfs)).FxGetSystemCall})).f(tls, pVfs, aSyscall[*(*int32)(unsafe.Pointer(bp + 16))].FzName)
 59731  			(*struct {
 59732  				f func(*libc.TLS, uintptr, uintptr, sqlite3_syscall_ptr) int32
 59733  			})(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)
 59734  		}
 59735  		aSyscall[*(*int32)(unsafe.Pointer(bp + 16))].Fcustom_errno = aSyscall[*(*int32)(unsafe.Pointer(bp + 16))].Fdefault_errno
 59736  	}
 59737  
 59738  	return TCL_OK
 59739  }
 59740  
 59741  func test_syscall_uninstall(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 59742  	var pVfs uintptr
 59743  	var i int32
 59744  
 59745  	if objc != 2 {
 59746  		tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+584)
 59747  		return TCL_ERROR
 59748  	}
 59749  
 59750  	pVfs = sqlite3.Xsqlite3_vfs_find(tls, uintptr(0))
 59751  	for i = 0; aSyscall[i].FzName != 0; i++ {
 59752  		if aSyscall[i].FxOrig != 0 {
 59753  			(*struct {
 59754  				f func(*libc.TLS, uintptr, uintptr, sqlite3_syscall_ptr) int32
 59755  			})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pVfs)).FxSetSystemCall})).f(tls, pVfs, aSyscall[i].FzName, uintptr(0))
 59756  			aSyscall[i].FxOrig = uintptr(0)
 59757  		}
 59758  	}
 59759  	return TCL_OK
 59760  }
 59761  
 59762  func test_syscall_reset(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 59763  	bp := tls.Alloc(4)
 59764  	defer tls.Free(4)
 59765  
 59766  	var pVfs uintptr
 59767  	var i int32
 59768  	var rc int32
 59769  
 59770  	if objc != 2 && objc != 3 {
 59771  		tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+584)
 59772  		return TCL_ERROR
 59773  	}
 59774  
 59775  	pVfs = sqlite3.Xsqlite3_vfs_find(tls, uintptr(0))
 59776  	if objc == 2 {
 59777  		rc = (*struct {
 59778  			f func(*libc.TLS, uintptr, uintptr, sqlite3_syscall_ptr) int32
 59779  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pVfs)).FxSetSystemCall})).f(tls, pVfs, uintptr(0), uintptr(0))
 59780  		for i = 0; aSyscall[i].FzName != 0; i++ {
 59781  			aSyscall[i].FxOrig = uintptr(0)
 59782  		}
 59783  	} else {
 59784  		var zFunc uintptr = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp)
 59785  		rc = (*struct {
 59786  			f func(*libc.TLS, uintptr, uintptr, sqlite3_syscall_ptr) int32
 59787  		})(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))
 59788  		for i = 0; rc == SQLITE_OK && aSyscall[i].FzName != 0; i++ {
 59789  			if libc.Xstrlen(tls, aSyscall[i].FzName) != size_t(*(*int32)(unsafe.Pointer(bp))) {
 59790  				continue
 59791  			}
 59792  			if libc.Xmemcmp(tls, aSyscall[i].FzName, zFunc, uint64(*(*int32)(unsafe.Pointer(bp)))) != 0 {
 59793  				continue
 59794  			}
 59795  			aSyscall[i].FxOrig = uintptr(0)
 59796  		}
 59797  	}
 59798  	if rc != SQLITE_OK {
 59799  		tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3ErrName(tls, rc), -1))
 59800  		return TCL_ERROR
 59801  	}
 59802  
 59803  	tcl.XTcl_ResetResult(tls, interp)
 59804  	return TCL_OK
 59805  }
 59806  
 59807  func test_syscall_exists(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 59808  	var pVfs uintptr
 59809  	var x sqlite3_syscall_ptr
 59810  
 59811  	if objc != 3 {
 59812  		tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+584)
 59813  		return TCL_ERROR
 59814  	}
 59815  
 59816  	pVfs = sqlite3.Xsqlite3_vfs_find(tls, uintptr(0))
 59817  	x = (*struct {
 59818  		f func(*libc.TLS, uintptr, uintptr) sqlite3_syscall_ptr
 59819  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pVfs)).FxGetSystemCall})).f(tls, pVfs, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8))))
 59820  
 59821  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewBooleanObj(tls, libc.Bool32(x != uintptr(0))))
 59822  	return TCL_OK
 59823  }
 59824  
 59825  func test_syscall_fault(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 59826  	bp := tls.Alloc(8)
 59827  	defer tls.Free(8)
 59828  
 59829  	*(*int32)(unsafe.Pointer(bp)) = 0
 59830  	*(*int32)(unsafe.Pointer(bp + 4)) = 0
 59831  
 59832  	if objc != 2 && objc != 4 {
 59833  		tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+37341)
 59834  		return TCL_ERROR
 59835  	}
 59836  
 59837  	if objc == 4 {
 59838  		if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp) != 0 ||
 59839  			tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+4) != 0 {
 59840  			return TCL_ERROR
 59841  		}
 59842  	}
 59843  
 59844  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, gSyscall.FnFail))
 59845  	gSyscall.FnCount = *(*int32)(unsafe.Pointer(bp))
 59846  	gSyscall.FbPersist = *(*int32)(unsafe.Pointer(bp + 4))
 59847  	gSyscall.FnFail = 0
 59848  	return TCL_OK
 59849  }
 59850  
 59851  func test_syscall_errno(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 59852  	bp := tls.Alloc(204)
 59853  	defer tls.Free(204)
 59854  
 59855  	var rc int32
 59856  
 59857  	*(*[12]Errno)(unsafe.Pointer(bp + 8)) = [12]Errno{
 59858  		{Fz: ts + 37357, Fi: EACCES},
 59859  		{Fz: ts + 37364, Fi: EINTR},
 59860  		{Fz: ts + 37370, Fi: EIO},
 59861  		{Fz: ts + 37374, Fi: EOVERFLOW},
 59862  		{Fz: ts + 37384, Fi: ENOMEM},
 59863  		{Fz: ts + 37391, Fi: EAGAIN},
 59864  		{Fz: ts + 37398, Fi: ETIMEDOUT},
 59865  		{Fz: ts + 37408, Fi: EBUSY},
 59866  		{Fz: ts + 37414, Fi: EPERM},
 59867  		{Fz: ts + 37420, Fi: EDEADLK},
 59868  		{Fz: ts + 37428, Fi: ENOLCK},
 59869  		{},
 59870  	}
 59871  
 59872  	if objc != 4 {
 59873  		tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+37435)
 59874  		return TCL_ERROR
 59875  	}
 59876  
 59877  	rc = tcl.XTcl_GetIndexFromObjStruct(tls, interp,
 59878  		*(*uintptr)(unsafe.Pointer(objv + 2*8)), uintptr(unsafe.Pointer(&aSyscall)), int32(unsafe.Sizeof(TestSyscallArray{})), ts+37329, 0, bp)
 59879  	if rc != TCL_OK {
 59880  		return rc
 59881  	}
 59882  	rc = tcl.XTcl_GetIndexFromObjStruct(tls, interp,
 59883  		*(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+8, int32(unsafe.Sizeof(Errno{})), ts+37449, 0, bp+200)
 59884  	if rc != TCL_OK {
 59885  		return rc
 59886  	}
 59887  
 59888  	aSyscall[*(*int32)(unsafe.Pointer(bp))].Fcustom_errno = (*Errno)(unsafe.Pointer(bp + 8 + uintptr(*(*int32)(unsafe.Pointer(bp + 200)))*16)).Fi
 59889  	return TCL_OK
 59890  }
 59891  
 59892  type Errno = struct {
 59893  	Fz           uintptr
 59894  	Fi           int32
 59895  	F__ccgo_pad1 [4]byte
 59896  }
 59897  
 59898  func test_syscall_list(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 59899  	var zSys uintptr
 59900  	var pVfs uintptr
 59901  	var pList uintptr
 59902  
 59903  	if objc != 2 {
 59904  		tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+584)
 59905  		return TCL_ERROR
 59906  	}
 59907  
 59908  	pVfs = sqlite3.Xsqlite3_vfs_find(tls, uintptr(0))
 59909  	pList = tcl.XTcl_NewObj(tls)
 59910  	(*Tcl_Obj)(unsafe.Pointer(pList)).FrefCount++
 59911  	for zSys = (*struct {
 59912  		f func(*libc.TLS, uintptr, uintptr) uintptr
 59913  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pVfs)).FxNextSystemCall})).f(tls, pVfs, uintptr(0)); zSys != uintptr(0); zSys = (*struct {
 59914  		f func(*libc.TLS, uintptr, uintptr) uintptr
 59915  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pVfs)).FxNextSystemCall})).f(tls, pVfs, zSys) {
 59916  		tcl.XTcl_ListObjAppendElement(tls, interp, pList, tcl.XTcl_NewStringObj(tls, zSys, -1))
 59917  	}
 59918  
 59919  	tcl.XTcl_SetObjResult(tls, interp, pList)
 59920  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 59921  		if libc.PreDecInt32(&(*Tcl_Obj)(unsafe.Pointer(pList)).FrefCount, 1) <= 0 {
 59922  			tcl.XTclFreeObj(tls, pList)
 59923  		}
 59924  	}
 59925  	return TCL_OK
 59926  }
 59927  
 59928  func test_syscall_defaultvfs(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 59929  	var pVfs uintptr
 59930  
 59931  	if objc != 2 {
 59932  		tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+584)
 59933  		return TCL_ERROR
 59934  	}
 59935  
 59936  	pVfs = sqlite3.Xsqlite3_vfs_find(tls, uintptr(0))
 59937  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FzName, -1))
 59938  	return TCL_OK
 59939  }
 59940  
 59941  func ts_getpagesize(tls *libc.TLS) int32 {
 59942  	return gSyscall.Fpgsz
 59943  }
 59944  
 59945  func test_syscall_pagesize(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 59946  	bp := tls.Alloc(20)
 59947  	defer tls.Free(20)
 59948  
 59949  	var pVfs uintptr = sqlite3.Xsqlite3_vfs_find(tls, uintptr(0))
 59950  
 59951  	if objc != 3 {
 59952  		tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+37455)
 59953  		return TCL_ERROR
 59954  	}
 59955  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+16) != 0 {
 59956  		return TCL_ERROR
 59957  	}
 59958  
 59959  	if *(*int32)(unsafe.Pointer(bp + 16)) < 0 {
 59960  		if gSyscall.Forig_getpagesize != 0 {
 59961  			(*struct {
 59962  				f func(*libc.TLS, uintptr, uintptr, sqlite3_syscall_ptr) int32
 59963  			})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pVfs)).FxSetSystemCall})).f(tls, pVfs, ts+37460, gSyscall.Forig_getpagesize)
 59964  		}
 59965  	} else {
 59966  		if *(*int32)(unsafe.Pointer(bp + 16)) < 512 || *(*int32)(unsafe.Pointer(bp + 16))&(*(*int32)(unsafe.Pointer(bp + 16))-1) != 0 {
 59967  			tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+37472, 0))
 59968  			return TCL_ERROR
 59969  		}
 59970  		gSyscall.Forig_getpagesize = (*struct {
 59971  			f func(*libc.TLS, uintptr, uintptr) sqlite3_syscall_ptr
 59972  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pVfs)).FxGetSystemCall})).f(tls, pVfs, ts+37460)
 59973  		gSyscall.Fpgsz = *(*int32)(unsafe.Pointer(bp + 16))
 59974  		(*struct {
 59975  			f func(*libc.TLS, uintptr, uintptr, sqlite3_syscall_ptr) int32
 59976  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pVfs)).FxSetSystemCall})).f(tls,
 59977  			pVfs, ts+37460, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS) int32 }{ts_getpagesize})))
 59978  	}
 59979  
 59980  	return TCL_OK
 59981  }
 59982  
 59983  func test_syscall(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 59984  	bp := tls.Alloc(180)
 59985  	defer tls.Free(180)
 59986  
 59987  	*(*[10]SyscallCmd)(unsafe.Pointer(bp + 16)) = [10]SyscallCmd{
 59988  		{FzName: ts + 37490, FxCmd: *(*uintptr)(unsafe.Pointer(&struct {
 59989  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59990  		}{test_syscall_fault}))},
 59991  		{FzName: ts + 37496, FxCmd: *(*uintptr)(unsafe.Pointer(&struct {
 59992  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59993  		}{test_syscall_install}))},
 59994  		{FzName: ts + 37504, FxCmd: *(*uintptr)(unsafe.Pointer(&struct {
 59995  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59996  		}{test_syscall_uninstall}))},
 59997  		{FzName: ts + 7933, FxCmd: *(*uintptr)(unsafe.Pointer(&struct {
 59998  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59999  		}{test_syscall_reset}))},
 60000  		{FzName: ts + 37449, FxCmd: *(*uintptr)(unsafe.Pointer(&struct {
 60001  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60002  		}{test_syscall_errno}))},
 60003  		{FzName: ts + 13516, FxCmd: *(*uintptr)(unsafe.Pointer(&struct {
 60004  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60005  		}{test_syscall_exists}))},
 60006  		{FzName: ts + 37514, FxCmd: *(*uintptr)(unsafe.Pointer(&struct {
 60007  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60008  		}{test_syscall_list}))},
 60009  		{FzName: ts + 37519, FxCmd: *(*uintptr)(unsafe.Pointer(&struct {
 60010  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60011  		}{test_syscall_defaultvfs}))},
 60012  		{FzName: ts + 37530, FxCmd: *(*uintptr)(unsafe.Pointer(&struct {
 60013  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60014  		}{test_syscall_pagesize}))},
 60015  		{},
 60016  	}
 60017  
 60018  	var rc int32
 60019  	var pVfs uintptr = sqlite3.Xsqlite3_vfs_find(tls, uintptr(0))
 60020  
 60021  	if objc < 2 {
 60022  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+33165)
 60023  		return TCL_ERROR
 60024  	}
 60025  	if (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FiVersion < 3 || (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FxSetSystemCall == uintptr(0) {
 60026  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+37539, 0))
 60027  		rc = TCL_ERROR
 60028  	} else {
 60029  		rc = tcl.XTcl_GetIndexFromObjStruct(tls, interp,
 60030  			*(*uintptr)(unsafe.Pointer(objv + 1*8)), bp+16, int32(unsafe.Sizeof(SyscallCmd{})), ts+2014, 0, bp+176)
 60031  	}
 60032  	if rc != TCL_OK {
 60033  		return rc
 60034  	}
 60035  	return (*struct {
 60036  		f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
 60037  	})(unsafe.Pointer(&struct{ uintptr }{(*SyscallCmd)(unsafe.Pointer(bp + 16 + uintptr(*(*int32)(unsafe.Pointer(bp + 176)))*16)).FxCmd})).f(tls, clientData, interp, objc, objv)
 60038  }
 60039  
 60040  type SyscallCmd = struct {
 60041  	FzName uintptr
 60042  	FxCmd  uintptr
 60043  }
 60044  
 60045  func SqlitetestSyscall_Init(tls *libc.TLS, interp uintptr) int32 {
 60046  	bp := tls.Alloc(16)
 60047  	defer tls.Free(16)
 60048  
 60049  	*(*[1]SyscallCmd)(unsafe.Pointer(bp)) = [1]SyscallCmd{
 60050  		{FzName: ts + 37575, FxCmd: *(*uintptr)(unsafe.Pointer(&struct {
 60051  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60052  		}{test_syscall}))},
 60053  	}
 60054  	var i int32
 60055  
 60056  	for i = 0; uint64(i) < uint64(unsafe.Sizeof([1]SyscallCmd{}))/uint64(unsafe.Sizeof(SyscallCmd{})); i++ {
 60057  		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))
 60058  	}
 60059  	return TCL_OK
 60060  }
 60061  
 60062  func sqlite3TestInit(tls *libc.TLS, interp uintptr) uintptr {
 60063  	bp := tls.Alloc(64)
 60064  	defer tls.Free(64)
 60065  
 60066  	if tcl.XTcl_GetCommandInfo(tls, interp, ts+14267, bp) == 0 {
 60067  		Sqlite3_Init(tls, interp)
 60068  	}
 60069  	Md5_Init(tls, interp)
 60070  	Sqliteconfig_Init(tls, interp)
 60071  	Sqlitetest1_Init(tls, interp)
 60072  	Sqlitetest2_Init(tls, interp)
 60073  	Sqlitetest3_Init(tls, interp)
 60074  	Sqlitetest4_Init(tls, interp)
 60075  	Sqlitetest5_Init(tls, interp)
 60076  	Sqlitetest6_Init(tls, interp)
 60077  	Sqlitetest7_Init(tls, interp)
 60078  	Sqlitetest8_Init(tls, interp)
 60079  	Sqlitetest9_Init(tls, interp)
 60080  	Sqlitetestasync_Init(tls, interp)
 60081  	Sqlitetest_autoext_Init(tls, interp)
 60082  	Sqlitetest_blob_Init(tls, interp)
 60083  	Sqlitetest_demovfs_Init(tls, interp)
 60084  	Sqlitetest_func_Init(tls, interp)
 60085  	Sqlitetest_hexio_Init(tls, interp)
 60086  	Sqlitetest_init_Init(tls, interp)
 60087  	Sqlitetest_malloc_Init(tls, interp)
 60088  	Sqlitetest_mutex_Init(tls, interp)
 60089  	Sqlitetestschema_Init(tls, interp)
 60090  	Sqlitetesttclvar_Init(tls, interp)
 60091  	Sqlitetestfs_Init(tls, interp)
 60092  	SqlitetestThread_Init(tls, interp)
 60093  	SqlitetestOnefile_Init(tls)
 60094  	SqlitetestOsinst_Init(tls, interp)
 60095  	Sqlitetestbackup_Init(tls, interp)
 60096  	Sqlitetestintarray_Init(tls, interp)
 60097  	Sqlitetestvfs_Init(tls, interp)
 60098  	Sqlitetestrtree_Init(tls, interp)
 60099  	Sqlitetestrtreedoc_Init(tls, interp)
 60100  	Sqlitequota_Init(tls, interp)
 60101  	Sqlitemultiplex_Init(tls, interp)
 60102  	SqliteSuperlock_Init(tls, interp)
 60103  	SqlitetestSyscall_Init(tls, interp)
 60104  	TestSession_Init(tls, interp)
 60105  	Fts5tcl_Init(tls, interp)
 60106  	SqliteRbu_Init(tls, interp)
 60107  	Sqlitetesttcl_Init(tls, interp)
 60108  
 60109  	TestExpert_Init(tls, interp)
 60110  	Sqlitetest_window_Init(tls, interp)
 60111  	Sqlitetestvdbecov_Init(tls, interp)
 60112  
 60113  	tcl.XTcl_CreateObjCommand(tls,
 60114  		interp, ts+37588, *(*uintptr)(unsafe.Pointer(&struct {
 60115  			f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
 60116  		}{load_testfixture_extensions})), uintptr(0), uintptr(0))
 60117  	return uintptr(0)
 60118  }
 60119  
 60120  func load_testfixture_extensions(tls *libc.TLS, cd ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 60121  	var slave uintptr
 60122  	if objc != 2 {
 60123  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+37616)
 60124  		return TCL_ERROR
 60125  	}
 60126  
 60127  	slave = tcl.XTcl_GetSlave(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))))
 60128  	if !(slave != 0) {
 60129  		return TCL_ERROR
 60130  	}
 60131  
 60132  	sqlite3TestInit(tls, slave)
 60133  	return TCL_OK
 60134  }
 60135  
 60136  type tclvar_vtab1 = struct {
 60137  	Fbase   sqlite3_vtab
 60138  	Finterp uintptr
 60139  }
 60140  
 60141  type tclvar_vtab = tclvar_vtab1
 60142  type tclvar_cursor1 = struct {
 60143  	Fbase   sqlite3_vtab_cursor
 60144  	FpList1 uintptr
 60145  	FpList2 uintptr
 60146  	Fi1     int32
 60147  	Fi2     int32
 60148  }
 60149  
 60150  type tclvar_cursor = tclvar_cursor1
 60151  
 60152  func tclvarConnect(tls *libc.TLS, db uintptr, pAux uintptr, argc int32, argv uintptr, ppVtab uintptr, pzErr uintptr) int32 {
 60153  	var pVtab uintptr
 60154  	pVtab = sqlite3.Xsqlite3MallocZero(tls, uint64(unsafe.Sizeof(tclvar_vtab{})))
 60155  	if pVtab == uintptr(0) {
 60156  		return SQLITE_NOMEM
 60157  	}
 60158  	*(*uintptr)(unsafe.Pointer(ppVtab)) = pVtab
 60159  	(*tclvar_vtab)(unsafe.Pointer(pVtab)).Finterp = pAux
 60160  	sqlite3.Xsqlite3_declare_vtab(tls, db, uintptr(unsafe.Pointer(&zSchema)))
 60161  	return SQLITE_OK
 60162  }
 60163  
 60164  var zSchema = *(*[100]int8)(unsafe.Pointer(ts + 37622))
 60165  
 60166  func tclvarDisconnect(tls *libc.TLS, pVtab uintptr) int32 {
 60167  	sqlite3.Xsqlite3_free(tls, pVtab)
 60168  	return SQLITE_OK
 60169  }
 60170  
 60171  func tclvarOpen(tls *libc.TLS, pVTab uintptr, ppCursor uintptr) int32 {
 60172  	var pCur uintptr
 60173  	pCur = sqlite3.Xsqlite3MallocZero(tls, uint64(unsafe.Sizeof(tclvar_cursor{})))
 60174  	*(*uintptr)(unsafe.Pointer(ppCursor)) = pCur
 60175  	return SQLITE_OK
 60176  }
 60177  
 60178  func tclvarClose(tls *libc.TLS, cur uintptr) int32 {
 60179  	var pCur uintptr = cur
 60180  	if (*tclvar_cursor)(unsafe.Pointer(pCur)).FpList1 != 0 {
 60181  		for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 60182  			if libc.PreDecInt32(&(*Tcl_Obj)(unsafe.Pointer((*tclvar_cursor)(unsafe.Pointer(pCur)).FpList1)).FrefCount, 1) <= 0 {
 60183  				tcl.XTclFreeObj(tls, (*tclvar_cursor)(unsafe.Pointer(pCur)).FpList1)
 60184  			}
 60185  		}
 60186  	}
 60187  	if (*tclvar_cursor)(unsafe.Pointer(pCur)).FpList2 != 0 {
 60188  		for __ccgo1 := true; __ccgo1; __ccgo1 = 0 != 0 {
 60189  			if libc.PreDecInt32(&(*Tcl_Obj)(unsafe.Pointer((*tclvar_cursor)(unsafe.Pointer(pCur)).FpList2)).FrefCount, 1) <= 0 {
 60190  				tcl.XTclFreeObj(tls, (*tclvar_cursor)(unsafe.Pointer(pCur)).FpList2)
 60191  			}
 60192  		}
 60193  	}
 60194  	sqlite3.Xsqlite3_free(tls, pCur)
 60195  	return SQLITE_OK
 60196  }
 60197  
 60198  func next2(tls *libc.TLS, interp uintptr, pCur uintptr, pObj uintptr) int32 {
 60199  	bp := tls.Alloc(4)
 60200  	defer tls.Free(4)
 60201  
 60202  	var p uintptr
 60203  
 60204  	if pObj != 0 {
 60205  		if !(int32((*tclvar_cursor)(unsafe.Pointer(pCur)).FpList2) != 0) {
 60206  			p = tcl.XTcl_NewStringObj(tls, ts+37722, -1)
 60207  			(*Tcl_Obj)(unsafe.Pointer(p)).FrefCount++
 60208  			tcl.XTcl_ListObjAppendElement(tls, uintptr(0), p, pObj)
 60209  			tcl.XTcl_EvalObjEx(tls, interp, p, TCL_EVAL_GLOBAL)
 60210  			for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 60211  				if libc.PreDecInt32(&(*Tcl_Obj)(unsafe.Pointer(p)).FrefCount, 1) <= 0 {
 60212  					tcl.XTclFreeObj(tls, p)
 60213  				}
 60214  			}
 60215  			(*tclvar_cursor)(unsafe.Pointer(pCur)).FpList2 = tcl.XTcl_GetObjResult(tls, interp)
 60216  			(*Tcl_Obj)(unsafe.Pointer((*tclvar_cursor)(unsafe.Pointer(pCur)).FpList2)).FrefCount++
 60217  
 60218  		} else {
 60219  			*(*int32)(unsafe.Pointer(bp)) = 0
 60220  			(*tclvar_cursor)(unsafe.Pointer(pCur)).Fi2++
 60221  			tcl.XTcl_ListObjLength(tls, uintptr(0), (*tclvar_cursor)(unsafe.Pointer(pCur)).FpList2, bp)
 60222  			if (*tclvar_cursor)(unsafe.Pointer(pCur)).Fi2 >= *(*int32)(unsafe.Pointer(bp)) {
 60223  				for __ccgo1 := true; __ccgo1; __ccgo1 = 0 != 0 {
 60224  					if libc.PreDecInt32(&(*Tcl_Obj)(unsafe.Pointer((*tclvar_cursor)(unsafe.Pointer(pCur)).FpList2)).FrefCount, 1) <= 0 {
 60225  						tcl.XTclFreeObj(tls, (*tclvar_cursor)(unsafe.Pointer(pCur)).FpList2)
 60226  					}
 60227  				}
 60228  				(*tclvar_cursor)(unsafe.Pointer(pCur)).FpList2 = uintptr(0)
 60229  				(*tclvar_cursor)(unsafe.Pointer(pCur)).Fi2 = 0
 60230  				return 0
 60231  			}
 60232  		}
 60233  	}
 60234  
 60235  	return 1
 60236  }
 60237  
 60238  func tclvarNext(tls *libc.TLS, cur uintptr) int32 {
 60239  	bp := tls.Alloc(16)
 60240  	defer tls.Free(16)
 60241  
 60242  	*(*int32)(unsafe.Pointer(bp)) = 0
 60243  	var ok int32 = 0
 60244  
 60245  	var pCur uintptr = cur
 60246  	var interp uintptr = (*tclvar_vtab)(unsafe.Pointer((*sqlite3_vtab_cursor)(unsafe.Pointer(cur)).FpVtab)).Finterp
 60247  
 60248  	tcl.XTcl_ListObjLength(tls, uintptr(0), (*tclvar_cursor)(unsafe.Pointer(pCur)).FpList1, bp)
 60249  	for !(ok != 0) && (*tclvar_cursor)(unsafe.Pointer(pCur)).Fi1 < *(*int32)(unsafe.Pointer(bp)) {
 60250  		tcl.XTcl_ListObjIndex(tls, uintptr(0), (*tclvar_cursor)(unsafe.Pointer(pCur)).FpList1, (*tclvar_cursor)(unsafe.Pointer(pCur)).Fi1, bp+8)
 60251  		ok = next2(tls, interp, pCur, *(*uintptr)(unsafe.Pointer(bp + 8)))
 60252  		if !(ok != 0) {
 60253  			(*tclvar_cursor)(unsafe.Pointer(pCur)).Fi1++
 60254  		}
 60255  	}
 60256  
 60257  	return 0
 60258  }
 60259  
 60260  func tclvarFilter(tls *libc.TLS, pVtabCursor uintptr, idxNum int32, idxStr uintptr, argc int32, argv uintptr) int32 {
 60261  	var pCur uintptr = pVtabCursor
 60262  	var interp uintptr = (*tclvar_vtab)(unsafe.Pointer((*sqlite3_vtab_cursor)(unsafe.Pointer(pVtabCursor)).FpVtab)).Finterp
 60263  	var p uintptr = tcl.XTcl_NewStringObj(tls, ts+37734, -1)
 60264  
 60265  	var zEq uintptr = ts + 584
 60266  	var zMatch uintptr = ts + 584
 60267  	var zGlob uintptr = ts + 584
 60268  	var zRegexp uintptr = ts + 584
 60269  	var zLike uintptr = ts + 584
 60270  	var i int32
 60271  
 60272  	for i = 0; *(*int8)(unsafe.Pointer(idxStr + uintptr(i))) != 0; i++ {
 60273  		switch int32(*(*int8)(unsafe.Pointer(idxStr + uintptr(i)))) {
 60274  		case 'e':
 60275  			zEq = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8)))
 60276  			break
 60277  		case 'm':
 60278  			zMatch = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8)))
 60279  			break
 60280  		case 'g':
 60281  			zGlob = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8)))
 60282  			break
 60283  		case 'r':
 60284  			zRegexp = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8)))
 60285  			break
 60286  		case 'l':
 60287  			zLike = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8)))
 60288  			break
 60289  		default:
 60290  		}
 60291  	}
 60292  
 60293  	(*Tcl_Obj)(unsafe.Pointer(p)).FrefCount++
 60294  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), p, tcl.XTcl_NewStringObj(tls, zEq, -1))
 60295  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), p, tcl.XTcl_NewStringObj(tls, zMatch, -1))
 60296  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), p, tcl.XTcl_NewStringObj(tls, zGlob, -1))
 60297  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), p, tcl.XTcl_NewStringObj(tls, zRegexp, -1))
 60298  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), p, tcl.XTcl_NewStringObj(tls, zLike, -1))
 60299  
 60300  	tcl.XTcl_EvalObjEx(tls, interp, p, TCL_EVAL_GLOBAL)
 60301  	if (*tclvar_cursor)(unsafe.Pointer(pCur)).FpList1 != 0 {
 60302  		for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 60303  			if libc.PreDecInt32(&(*Tcl_Obj)(unsafe.Pointer((*tclvar_cursor)(unsafe.Pointer(pCur)).FpList1)).FrefCount, 1) <= 0 {
 60304  				tcl.XTclFreeObj(tls, (*tclvar_cursor)(unsafe.Pointer(pCur)).FpList1)
 60305  			}
 60306  		}
 60307  	}
 60308  	if (*tclvar_cursor)(unsafe.Pointer(pCur)).FpList2 != 0 {
 60309  		for __ccgo1 := true; __ccgo1; __ccgo1 = 0 != 0 {
 60310  			if libc.PreDecInt32(&(*Tcl_Obj)(unsafe.Pointer((*tclvar_cursor)(unsafe.Pointer(pCur)).FpList2)).FrefCount, 1) <= 0 {
 60311  				tcl.XTclFreeObj(tls, (*tclvar_cursor)(unsafe.Pointer(pCur)).FpList2)
 60312  			}
 60313  		}
 60314  		(*tclvar_cursor)(unsafe.Pointer(pCur)).FpList2 = uintptr(0)
 60315  	}
 60316  	(*tclvar_cursor)(unsafe.Pointer(pCur)).Fi1 = 0
 60317  	(*tclvar_cursor)(unsafe.Pointer(pCur)).Fi2 = 0
 60318  	(*tclvar_cursor)(unsafe.Pointer(pCur)).FpList1 = tcl.XTcl_GetObjResult(tls, interp)
 60319  	(*Tcl_Obj)(unsafe.Pointer((*tclvar_cursor)(unsafe.Pointer(pCur)).FpList1)).FrefCount++
 60320  
 60321  	for __ccgo2 := true; __ccgo2; __ccgo2 = 0 != 0 {
 60322  		if libc.PreDecInt32(&(*Tcl_Obj)(unsafe.Pointer(p)).FrefCount, 1) <= 0 {
 60323  			tcl.XTclFreeObj(tls, p)
 60324  		}
 60325  	}
 60326  	return tclvarNext(tls, pVtabCursor)
 60327  }
 60328  
 60329  func tclvarColumn(tls *libc.TLS, cur uintptr, ctx uintptr, i int32) int32 {
 60330  	bp := tls.Alloc(32)
 60331  	defer tls.Free(32)
 60332  
 60333  	var z1 uintptr
 60334  	var z2 uintptr = ts + 584
 60335  	var pCur uintptr = cur
 60336  	var interp uintptr = (*tclvar_vtab)(unsafe.Pointer((*sqlite3_vtab_cursor)(unsafe.Pointer(cur)).FpVtab)).Finterp
 60337  
 60338  	tcl.XTcl_ListObjIndex(tls, interp, (*tclvar_cursor)(unsafe.Pointer(pCur)).FpList1, (*tclvar_cursor)(unsafe.Pointer(pCur)).Fi1, bp+16)
 60339  	tcl.XTcl_ListObjIndex(tls, interp, (*tclvar_cursor)(unsafe.Pointer(pCur)).FpList2, (*tclvar_cursor)(unsafe.Pointer(pCur)).Fi2, bp+24)
 60340  	z1 = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(bp + 16)))
 60341  	if *(*uintptr)(unsafe.Pointer(bp + 24)) != 0 {
 60342  		z2 = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(bp + 24)))
 60343  	}
 60344  	switch i {
 60345  	case 0:
 60346  		{
 60347  			sqlite3.Xsqlite3_result_text(tls, ctx, z1, -1, libc.UintptrFromInt32(-1))
 60348  			break
 60349  
 60350  		}
 60351  	case 1:
 60352  		{
 60353  			sqlite3.Xsqlite3_result_text(tls, ctx, z2, -1, libc.UintptrFromInt32(-1))
 60354  			break
 60355  
 60356  		}
 60357  	case 2:
 60358  		{
 60359  			var pVal uintptr = tcl.XTcl_GetVar2Ex(tls, interp, z1, func() uintptr {
 60360  				if *(*int8)(unsafe.Pointer(z2)) != 0 {
 60361  					return z2
 60362  				}
 60363  				return uintptr(0)
 60364  			}(), TCL_GLOBAL_ONLY)
 60365  			sqlite3.Xsqlite3_result_text(tls, ctx, tcl.XTcl_GetString(tls, pVal), -1, libc.UintptrFromInt32(-1))
 60366  			break
 60367  
 60368  		}
 60369  	case 3:
 60370  		{
 60371  			var z3 uintptr
 60372  			if *(*uintptr)(unsafe.Pointer(bp + 24)) != 0 {
 60373  				z3 = sqlite3.Xsqlite3_mprintf(tls, ts+37752, libc.VaList(bp, z1, z2))
 60374  				sqlite3.Xsqlite3_result_text(tls, ctx, z3, -1, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{sqlite3.Xsqlite3_free})))
 60375  			} else {
 60376  				sqlite3.Xsqlite3_result_text(tls, ctx, z1, -1, libc.UintptrFromInt32(-1))
 60377  			}
 60378  			break
 60379  
 60380  		}
 60381  	}
 60382  	return SQLITE_OK
 60383  }
 60384  
 60385  func tclvarRowid(tls *libc.TLS, cur uintptr, pRowid uintptr) int32 {
 60386  	*(*sqlite_int64)(unsafe.Pointer(pRowid)) = int64(0)
 60387  	return SQLITE_OK
 60388  }
 60389  
 60390  func tclvarEof(tls *libc.TLS, cur uintptr) int32 {
 60391  	var pCur uintptr = cur
 60392  	return func() int32 {
 60393  		if (*tclvar_cursor)(unsafe.Pointer(pCur)).FpList2 != 0 {
 60394  			return 0
 60395  		}
 60396  		return 1
 60397  	}()
 60398  }
 60399  
 60400  func tclvarAddToIdxstr(tls *libc.TLS, zStr uintptr, x int8) int32 {
 60401  	var i int32
 60402  	for i = 0; *(*int8)(unsafe.Pointer(zStr + uintptr(i))) != 0; i++ {
 60403  		if int32(*(*int8)(unsafe.Pointer(zStr + uintptr(i)))) == int32(x) {
 60404  			return 1
 60405  		}
 60406  	}
 60407  	*(*int8)(unsafe.Pointer(zStr + uintptr(i))) = x
 60408  	*(*int8)(unsafe.Pointer(zStr + uintptr(i+1))) = int8(0)
 60409  	return 0
 60410  }
 60411  
 60412  func tclvarSetOmit(tls *libc.TLS, interp uintptr) int32 {
 60413  	bp := tls.Alloc(4)
 60414  	defer tls.Free(4)
 60415  
 60416  	var rc int32
 60417  	*(*int32)(unsafe.Pointer(bp)) = 0
 60418  	var pRes uintptr
 60419  	rc = tcl.XTcl_Eval(tls, interp,
 60420  		ts+37759)
 60421  	if rc == TCL_OK {
 60422  		pRes = tcl.XTcl_GetObjResult(tls, interp)
 60423  		rc = tcl.XTcl_GetBooleanFromObj(tls, uintptr(0), pRes, bp)
 60424  	}
 60425  	return libc.Bool32(rc == TCL_OK && *(*int32)(unsafe.Pointer(bp)) != 0)
 60426  }
 60427  
 60428  func tclvarBestIndex(tls *libc.TLS, tab uintptr, pIdxInfo uintptr) int32 {
 60429  	var pTab uintptr = tab
 60430  	var ii int32
 60431  	var zStr uintptr = sqlite3.Xsqlite3_malloc(tls, 32)
 60432  	var iStr int32 = 0
 60433  
 60434  	if zStr == uintptr(0) {
 60435  		return SQLITE_NOMEM
 60436  	}
 60437  	*(*int8)(unsafe.Pointer(zStr)) = int8(0)
 60438  
 60439  	for ii = 0; ii < (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnConstraint; ii++ {
 60440  		var pCons uintptr = (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint + uintptr(ii)*12
 60441  		var pUsage uintptr
 60442  
 60443  		pUsage = (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(ii)*8
 60444  		if (*sqlite3_index_constraint)(unsafe.Pointer(pCons)).Fusable != 0 {
 60445  			if int32((*sqlite3_index_constraint)(unsafe.Pointer(pCons)).Fop) == SQLITE_INDEX_CONSTRAINT_EQ && (*sqlite3_index_constraint)(unsafe.Pointer(pCons)).FiColumn == 0 {
 60446  				if 0 == tclvarAddToIdxstr(tls, zStr, int8('e')) {
 60447  					(*sqlite3_index_constraint_usage)(unsafe.Pointer(pUsage)).FargvIndex = libc.PreIncInt32(&iStr, 1)
 60448  					(*sqlite3_index_constraint_usage)(unsafe.Pointer(pUsage)).Fomit = uint8(0)
 60449  				}
 60450  			}
 60451  
 60452  			if int32((*sqlite3_index_constraint)(unsafe.Pointer(pCons)).Fop) == SQLITE_INDEX_CONSTRAINT_MATCH && (*sqlite3_index_constraint)(unsafe.Pointer(pCons)).FiColumn == 0 {
 60453  				if 0 == tclvarAddToIdxstr(tls, zStr, int8('m')) {
 60454  					(*sqlite3_index_constraint_usage)(unsafe.Pointer(pUsage)).FargvIndex = libc.PreIncInt32(&iStr, 1)
 60455  					(*sqlite3_index_constraint_usage)(unsafe.Pointer(pUsage)).Fomit = uint8(1)
 60456  				}
 60457  			}
 60458  
 60459  			if int32((*sqlite3_index_constraint)(unsafe.Pointer(pCons)).Fop) == SQLITE_INDEX_CONSTRAINT_GLOB && (*sqlite3_index_constraint)(unsafe.Pointer(pCons)).FiColumn == 2 {
 60460  				if 0 == tclvarAddToIdxstr(tls, zStr, int8('g')) {
 60461  					(*sqlite3_index_constraint_usage)(unsafe.Pointer(pUsage)).FargvIndex = libc.PreIncInt32(&iStr, 1)
 60462  					(*sqlite3_index_constraint_usage)(unsafe.Pointer(pUsage)).Fomit = uint8(tclvarSetOmit(tls, (*tclvar_vtab)(unsafe.Pointer(pTab)).Finterp))
 60463  				}
 60464  			}
 60465  
 60466  			if int32((*sqlite3_index_constraint)(unsafe.Pointer(pCons)).Fop) == SQLITE_INDEX_CONSTRAINT_REGEXP && (*sqlite3_index_constraint)(unsafe.Pointer(pCons)).FiColumn == 2 {
 60467  				if 0 == tclvarAddToIdxstr(tls, zStr, int8('r')) {
 60468  					(*sqlite3_index_constraint_usage)(unsafe.Pointer(pUsage)).FargvIndex = libc.PreIncInt32(&iStr, 1)
 60469  					(*sqlite3_index_constraint_usage)(unsafe.Pointer(pUsage)).Fomit = uint8(tclvarSetOmit(tls, (*tclvar_vtab)(unsafe.Pointer(pTab)).Finterp))
 60470  				}
 60471  			}
 60472  
 60473  			if int32((*sqlite3_index_constraint)(unsafe.Pointer(pCons)).Fop) == SQLITE_INDEX_CONSTRAINT_LIKE && (*sqlite3_index_constraint)(unsafe.Pointer(pCons)).FiColumn == 2 {
 60474  				if 0 == tclvarAddToIdxstr(tls, zStr, int8('l')) {
 60475  					(*sqlite3_index_constraint_usage)(unsafe.Pointer(pUsage)).FargvIndex = libc.PreIncInt32(&iStr, 1)
 60476  					(*sqlite3_index_constraint_usage)(unsafe.Pointer(pUsage)).Fomit = uint8(tclvarSetOmit(tls, (*tclvar_vtab)(unsafe.Pointer(pTab)).Finterp))
 60477  				}
 60478  			}
 60479  		}
 60480  	}
 60481  	(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxStr = zStr
 60482  	(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FneedToFreeIdxStr = 1
 60483  
 60484  	return SQLITE_OK
 60485  }
 60486  
 60487  func tclvarUpdate(tls *libc.TLS, tab uintptr, argc int32, argv uintptr, pRowid uintptr) int32 {
 60488  	var pTab uintptr = tab
 60489  	if argc == 1 {
 60490  		var zVar uintptr = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 60491  		tcl.XTcl_UnsetVar(tls, (*tclvar_vtab)(unsafe.Pointer(pTab)).Finterp, zVar, TCL_GLOBAL_ONLY)
 60492  		return SQLITE_OK
 60493  	}
 60494  	if sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(argv))) == SQLITE_NULL {
 60495  		var zValue uintptr = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + 4*8)))
 60496  		var zName uintptr
 60497  		if sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(argv + 5*8))) != SQLITE_TEXT {
 60498  			(*sqlite3_vtab)(unsafe.Pointer(tab)).FzErrMsg = sqlite3.Xsqlite3_mprintf(tls, ts+37820, 0)
 60499  			return SQLITE_ERROR
 60500  		}
 60501  		zName = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + 5*8)))
 60502  		if zValue != 0 {
 60503  			tcl.XTcl_SetVar(tls, (*tclvar_vtab)(unsafe.Pointer(pTab)).Finterp, zName, zValue, TCL_GLOBAL_ONLY)
 60504  		} else {
 60505  			tcl.XTcl_UnsetVar(tls, (*tclvar_vtab)(unsafe.Pointer(pTab)).Finterp, zName, TCL_GLOBAL_ONLY)
 60506  		}
 60507  		return SQLITE_OK
 60508  	}
 60509  	if sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(argv))) == SQLITE_TEXT &&
 60510  		sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8))) == SQLITE_TEXT {
 60511  		var zOldName uintptr = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 60512  		var zNewName uintptr = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 60513  		var zValue uintptr = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + 4*8)))
 60514  
 60515  		if libc.Xstrcmp(tls, zOldName, zNewName) != 0 || zValue == uintptr(0) {
 60516  			tcl.XTcl_UnsetVar(tls, (*tclvar_vtab)(unsafe.Pointer(pTab)).Finterp, zOldName, TCL_GLOBAL_ONLY)
 60517  		}
 60518  		if zValue != uintptr(0) {
 60519  			tcl.XTcl_SetVar(tls, (*tclvar_vtab)(unsafe.Pointer(pTab)).Finterp, zNewName, zValue, TCL_GLOBAL_ONLY)
 60520  		}
 60521  		return SQLITE_OK
 60522  	}
 60523  	(*sqlite3_vtab)(unsafe.Pointer(tab)).FzErrMsg = sqlite3.Xsqlite3_mprintf(tls, ts+37855, 0)
 60524  	return SQLITE_ERROR
 60525  }
 60526  
 60527  var tclvarModule = sqlite3_module{
 60528  	FxCreate:     0,
 60529  	FxConnect:    0,
 60530  	FxBestIndex:  0,
 60531  	FxDisconnect: 0,
 60532  	FxDestroy:    0,
 60533  	FxOpen:       0,
 60534  	FxClose:      0,
 60535  	FxFilter:     0,
 60536  	FxNext:       0,
 60537  	FxEof:        0,
 60538  	FxColumn:     0,
 60539  	FxRowid:      0,
 60540  	FxUpdate:     0,
 60541  }
 60542  
 60543  func register_tclvar_module(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 60544  	bp := tls.Alloc(8)
 60545  	defer tls.Free(8)
 60546  
 60547  	var rc int32 = TCL_OK
 60548  
 60549  	if objc != 2 {
 60550  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2050)
 60551  		return TCL_ERROR
 60552  	}
 60553  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 60554  		return TCL_ERROR
 60555  	}
 60556  	sqlite3.Xsqlite3_create_module(tls, *(*uintptr)(unsafe.Pointer(bp)), ts+29963, uintptr(unsafe.Pointer(&tclvarModule)), interp)
 60557  	rc = tcl.XTcl_Eval(tls, interp,
 60558  		ts+37886)
 60559  	return rc
 60560  }
 60561  
 60562  func Sqlitetesttclvar_Init(tls *libc.TLS, interp uintptr) int32 {
 60563  	var i int32
 60564  	for i = 0; uint64(i) < uint64(unsafe.Sizeof(aObjCmd13))/uint64(unsafe.Sizeof(struct {
 60565  		FzName      uintptr
 60566  		FxProc      uintptr
 60567  		FclientData uintptr
 60568  	}{})); i++ {
 60569  		tcl.XTcl_CreateObjCommand(tls, interp, aObjCmd13[i].FzName,
 60570  			aObjCmd13[i].FxProc, aObjCmd13[i].FclientData, uintptr(0))
 60571  	}
 60572  	return TCL_OK
 60573  }
 60574  
 60575  var aObjCmd13 = [1]struct {
 60576  	FzName      uintptr
 60577  	FxProc      uintptr
 60578  	FclientData uintptr
 60579  }{
 60580  	{FzName: ts + 38422, FxProc: 0},
 60581  }
 60582  
 60583  type SqlThread1 = struct {
 60584  	Fparent   Tcl_ThreadId
 60585  	Finterp   uintptr
 60586  	FzScript  uintptr
 60587  	FzVarname uintptr
 60588  }
 60589  
 60590  type SqlThread = SqlThread1
 60591  
 60592  type EvalEvent1 = struct {
 60593  	Fbase    Tcl_Event
 60594  	FzScript uintptr
 60595  	Finterp  uintptr
 60596  }
 60597  
 60598  type EvalEvent = EvalEvent1
 60599  
 60600  func tclScriptEvent(tls *libc.TLS, evPtr uintptr, flags int32) int32 {
 60601  	var rc int32
 60602  	var p uintptr = evPtr
 60603  	rc = tcl.XTcl_Eval(tls, (*EvalEvent)(unsafe.Pointer(p)).Finterp, (*EvalEvent)(unsafe.Pointer(p)).FzScript)
 60604  	if rc != TCL_OK {
 60605  		tcl.XTcl_BackgroundError(tls, (*EvalEvent)(unsafe.Pointer(p)).Finterp)
 60606  	}
 60607  	_ = flags
 60608  	return 1
 60609  }
 60610  
 60611  func postToParent(tls *libc.TLS, p uintptr, pScript uintptr) {
 60612  	bp := tls.Alloc(4)
 60613  	defer tls.Free(4)
 60614  
 60615  	var pEvent uintptr
 60616  	var zMsg uintptr
 60617  
 60618  	zMsg = tcl.XTcl_GetStringFromObj(tls, pScript, bp)
 60619  	pEvent = tcl.XTcl_Alloc(tls, uint32(uint64(unsafe.Sizeof(EvalEvent{}))+uint64(*(*int32)(unsafe.Pointer(bp)))+uint64(1)))
 60620  	(*EvalEvent)(unsafe.Pointer(pEvent)).Fbase.FnextPtr = uintptr(0)
 60621  	(*EvalEvent)(unsafe.Pointer(pEvent)).Fbase.Fproc = *(*uintptr)(unsafe.Pointer(&struct {
 60622  		f func(*libc.TLS, uintptr, int32) int32
 60623  	}{tclScriptEvent}))
 60624  	(*EvalEvent)(unsafe.Pointer(pEvent)).FzScript = pEvent + 1*32
 60625  	libc.X__builtin___memcpy_chk(tls, (*EvalEvent)(unsafe.Pointer(pEvent)).FzScript, zMsg, uint64(*(*int32)(unsafe.Pointer(bp))+1), libc.X__builtin_object_size(tls, (*EvalEvent)(unsafe.Pointer(pEvent)).FzScript, 0))
 60626  	(*EvalEvent)(unsafe.Pointer(pEvent)).Finterp = (*SqlThread)(unsafe.Pointer(p)).Finterp
 60627  
 60628  	tcl.XTcl_ThreadQueueEvent(tls, (*SqlThread)(unsafe.Pointer(p)).Fparent, pEvent, TCL_QUEUE_TAIL)
 60629  	tcl.XTcl_ThreadAlert(tls, (*SqlThread)(unsafe.Pointer(p)).Fparent)
 60630  }
 60631  
 60632  func tclScriptThread(tls *libc.TLS, pSqlThread ClientData) {
 60633  	var interp uintptr
 60634  	var pRes uintptr
 60635  	var pList uintptr
 60636  	var rc int32
 60637  	var p uintptr = pSqlThread
 60638  
 60639  	interp = tcl.XTcl_CreateInterp(tls)
 60640  	tcl.XTcl_CreateObjCommand(tls, interp, ts+38445, *(*uintptr)(unsafe.Pointer(&struct {
 60641  		f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
 60642  	}{clock_seconds_proc})), uintptr(0), uintptr(0))
 60643  	tcl.XTcl_CreateObjCommand(tls, interp, ts+38459, *(*uintptr)(unsafe.Pointer(&struct {
 60644  		f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
 60645  	}{sqlthread_proc})), pSqlThread, uintptr(0))
 60646  	tcl.XTcl_CreateObjCommand(tls, interp, ts+38469, *(*uintptr)(unsafe.Pointer(&struct {
 60647  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60648  	}{blocking_step_proc})), uintptr(0), uintptr(0))
 60649  	tcl.XTcl_CreateObjCommand(tls, interp,
 60650  		ts+38491, *(*uintptr)(unsafe.Pointer(&struct {
 60651  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60652  		}{blocking_prepare_v2_proc})), uintptr(1), uintptr(0))
 60653  	tcl.XTcl_CreateObjCommand(tls, interp,
 60654  		ts+38519, *(*uintptr)(unsafe.Pointer(&struct {
 60655  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60656  		}{blocking_prepare_v2_proc})), uintptr(0), uintptr(0))
 60657  	Sqlitetest1_Init(tls, interp)
 60658  	Sqlitetest_mutex_Init(tls, interp)
 60659  	Sqlite3_Init(tls, interp)
 60660  
 60661  	rc = tcl.XTcl_Eval(tls, interp, (*SqlThread)(unsafe.Pointer(p)).FzScript)
 60662  	pRes = tcl.XTcl_GetObjResult(tls, interp)
 60663  	pList = tcl.XTcl_NewObj(tls)
 60664  	(*Tcl_Obj)(unsafe.Pointer(pList)).FrefCount++
 60665  	(*Tcl_Obj)(unsafe.Pointer(pRes)).FrefCount++
 60666  
 60667  	if rc != TCL_OK {
 60668  		tcl.XTcl_ListObjAppendElement(tls, interp, pList, tcl.XTcl_NewStringObj(tls, ts+9674, -1))
 60669  		tcl.XTcl_ListObjAppendElement(tls, interp, pList, pRes)
 60670  		postToParent(tls, p, pList)
 60671  		for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 60672  			if libc.PreDecInt32(&(*Tcl_Obj)(unsafe.Pointer(pList)).FrefCount, 1) <= 0 {
 60673  				tcl.XTclFreeObj(tls, pList)
 60674  			}
 60675  		}
 60676  		pList = tcl.XTcl_NewObj(tls)
 60677  	}
 60678  
 60679  	tcl.XTcl_ListObjAppendElement(tls, interp, pList, tcl.XTcl_NewStringObj(tls, ts+38550, -1))
 60680  	tcl.XTcl_ListObjAppendElement(tls, interp, pList, tcl.XTcl_NewStringObj(tls, (*SqlThread)(unsafe.Pointer(p)).FzVarname, -1))
 60681  	tcl.XTcl_ListObjAppendElement(tls, interp, pList, pRes)
 60682  	postToParent(tls, p, pList)
 60683  
 60684  	tcl.XTcl_Free(tls, p)
 60685  	for __ccgo1 := true; __ccgo1; __ccgo1 = 0 != 0 {
 60686  		if libc.PreDecInt32(&(*Tcl_Obj)(unsafe.Pointer(pList)).FrefCount, 1) <= 0 {
 60687  			tcl.XTclFreeObj(tls, pList)
 60688  		}
 60689  	}
 60690  	for __ccgo2 := true; __ccgo2; __ccgo2 = 0 != 0 {
 60691  		if libc.PreDecInt32(&(*Tcl_Obj)(unsafe.Pointer(pRes)).FrefCount, 1) <= 0 {
 60692  			tcl.XTclFreeObj(tls, pRes)
 60693  		}
 60694  	}
 60695  	tcl.XTcl_DeleteInterp(tls, interp)
 60696  	for tcl.XTcl_DoOneEvent(tls, libc.CplInt32(int32(1)<<1)|int32(1)<<1) != 0 {
 60697  	}
 60698  	tcl.XTcl_ExitThread(tls, 0)
 60699  
 60700  }
 60701  
 60702  func sqlthread_spawn(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 60703  	bp := tls.Alloc(32)
 60704  	defer tls.Free(32)
 60705  
 60706  	var pNew uintptr
 60707  	var rc int32
 60708  
 60709  	var zVarname uintptr
 60710  
 60711  	var zScript uintptr
 60712  
 60713  	var nStack int32 = 0
 60714  	var flags int32 = 0000
 60715  
 60716  	_ = clientData
 60717  	_ = objc
 60718  
 60719  	zVarname = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+16)
 60720  	zScript = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+20)
 60721  
 60722  	pNew = tcl.XTcl_Alloc(tls, uint32(uint64(unsafe.Sizeof(SqlThread{}))+uint64(*(*int32)(unsafe.Pointer(bp + 16)))+uint64(*(*int32)(unsafe.Pointer(bp + 20)))+uint64(2)))
 60723  	(*SqlThread)(unsafe.Pointer(pNew)).FzVarname = pNew + 1*32
 60724  	(*SqlThread)(unsafe.Pointer(pNew)).FzScript = (*SqlThread)(unsafe.Pointer(pNew)).FzVarname + uintptr(*(*int32)(unsafe.Pointer(bp + 16))+1)
 60725  	libc.X__builtin___memcpy_chk(tls, (*SqlThread)(unsafe.Pointer(pNew)).FzVarname, zVarname, uint64(*(*int32)(unsafe.Pointer(bp + 16))+1), libc.X__builtin_object_size(tls, (*SqlThread)(unsafe.Pointer(pNew)).FzVarname, 0))
 60726  	libc.X__builtin___memcpy_chk(tls, (*SqlThread)(unsafe.Pointer(pNew)).FzScript, zScript, uint64(*(*int32)(unsafe.Pointer(bp + 20))+1), libc.X__builtin_object_size(tls, (*SqlThread)(unsafe.Pointer(pNew)).FzScript, 0))
 60727  	(*SqlThread)(unsafe.Pointer(pNew)).Fparent = tcl.XTcl_GetCurrentThread(tls)
 60728  	(*SqlThread)(unsafe.Pointer(pNew)).Finterp = interp
 60729  
 60730  	rc = tcl.XTcl_CreateThread(tls, bp+24, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, ClientData) }{tclScriptThread})), pNew, nStack, flags)
 60731  	if rc != TCL_OK {
 60732  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+38554, 0))
 60733  		tcl.XTcl_Free(tls, pNew)
 60734  		return TCL_ERROR
 60735  	}
 60736  
 60737  	return TCL_OK
 60738  }
 60739  
 60740  func sqlthread_parent(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 60741  	bp := tls.Alloc(20)
 60742  	defer tls.Free(20)
 60743  
 60744  	var pEvent uintptr
 60745  	var zMsg uintptr
 60746  
 60747  	var p uintptr = clientData
 60748  
 60749  	_ = objc
 60750  
 60751  	if p == uintptr(0) {
 60752  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+38582, 0))
 60753  		return TCL_ERROR
 60754  	}
 60755  
 60756  	zMsg = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+16)
 60757  	pEvent = tcl.XTcl_Alloc(tls, uint32(uint64(unsafe.Sizeof(EvalEvent{}))+uint64(*(*int32)(unsafe.Pointer(bp + 16)))+uint64(1)))
 60758  	(*EvalEvent)(unsafe.Pointer(pEvent)).Fbase.FnextPtr = uintptr(0)
 60759  	(*EvalEvent)(unsafe.Pointer(pEvent)).Fbase.Fproc = *(*uintptr)(unsafe.Pointer(&struct {
 60760  		f func(*libc.TLS, uintptr, int32) int32
 60761  	}{tclScriptEvent}))
 60762  	(*EvalEvent)(unsafe.Pointer(pEvent)).FzScript = pEvent + 1*32
 60763  	libc.X__builtin___memcpy_chk(tls, (*EvalEvent)(unsafe.Pointer(pEvent)).FzScript, zMsg, uint64(*(*int32)(unsafe.Pointer(bp + 16))+1), libc.X__builtin_object_size(tls, (*EvalEvent)(unsafe.Pointer(pEvent)).FzScript, 0))
 60764  	(*EvalEvent)(unsafe.Pointer(pEvent)).Finterp = (*SqlThread)(unsafe.Pointer(p)).Finterp
 60765  	tcl.XTcl_ThreadQueueEvent(tls, (*SqlThread)(unsafe.Pointer(p)).Fparent, pEvent, TCL_QUEUE_TAIL)
 60766  	tcl.XTcl_ThreadAlert(tls, (*SqlThread)(unsafe.Pointer(p)).Fparent)
 60767  
 60768  	return TCL_OK
 60769  }
 60770  
 60771  func xBusy(tls *libc.TLS, pArg uintptr, nBusy int32) int32 {
 60772  	_ = pArg
 60773  	_ = nBusy
 60774  	sqlite3.Xsqlite3_sleep(tls, 50)
 60775  	return 1
 60776  }
 60777  
 60778  func sqlthread_open(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 60779  	bp := tls.Alloc(124)
 60780  	defer tls.Free(124)
 60781  
 60782  	var zFilename uintptr
 60783  
 60784  	_ = clientData
 60785  	_ = objc
 60786  
 60787  	zFilename = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 60788  	sqlite3.Xsqlite3_open(tls, zFilename, bp+16)
 60789  	Md5_Register(tls, *(*uintptr)(unsafe.Pointer(bp + 16)), uintptr(0), uintptr(0))
 60790  	sqlite3.Xsqlite3_busy_handler(tls, *(*uintptr)(unsafe.Pointer(bp + 16)), *(*uintptr)(unsafe.Pointer(&struct {
 60791  		f func(*libc.TLS, uintptr, int32) int32
 60792  	}{xBusy})), uintptr(0))
 60793  
 60794  	if sqlite3TestMakePointerStr(tls, interp, bp+24, *(*uintptr)(unsafe.Pointer(bp + 16))) != 0 {
 60795  		return TCL_ERROR
 60796  	}
 60797  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, bp+24, 0))
 60798  
 60799  	return TCL_OK
 60800  }
 60801  
 60802  func sqlthread_id(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 60803  	var id Tcl_ThreadId = tcl.XTcl_GetCurrentThread(tls)
 60804  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, int32(id)))
 60805  	_ = clientData
 60806  	_ = objc
 60807  	_ = objv
 60808  	return TCL_OK
 60809  }
 60810  
 60811  func sqlthread_proc(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 60812  	bp := tls.Alloc(164)
 60813  	defer tls.Free(164)
 60814  
 60815  	*(*[5]struct {
 60816  		FzName       uintptr
 60817  		FxProc       uintptr
 60818  		FnArg        int32
 60819  		F__ccgo_pad1 [4]byte
 60820  		FzUsage      uintptr
 60821  	})(unsafe.Pointer(bp)) = [5]struct {
 60822  		FzName       uintptr
 60823  		FxProc       uintptr
 60824  		FnArg        int32
 60825  		F__ccgo_pad1 [4]byte
 60826  		FzUsage      uintptr
 60827  	}{
 60828  		{FzName: ts + 38599, FxProc: *(*uintptr)(unsafe.Pointer(&struct {
 60829  			f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
 60830  		}{sqlthread_parent})), FnArg: 1, FzUsage: ts + 10187},
 60831  		{FzName: ts + 38606, FxProc: *(*uintptr)(unsafe.Pointer(&struct {
 60832  			f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
 60833  		}{sqlthread_spawn})), FnArg: 2, FzUsage: ts + 38612},
 60834  		{FzName: ts + 37216, FxProc: *(*uintptr)(unsafe.Pointer(&struct {
 60835  			f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
 60836  		}{sqlthread_open})), FnArg: 1, FzUsage: ts + 38627},
 60837  		{FzName: ts + 38634, FxProc: *(*uintptr)(unsafe.Pointer(&struct {
 60838  			f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
 60839  		}{sqlthread_id})), FzUsage: ts + 584},
 60840  		{},
 60841  	}
 60842  	var pSub uintptr
 60843  	var rc int32
 60844  
 60845  	if objc < 2 {
 60846  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2523)
 60847  		return TCL_ERROR
 60848  	}
 60849  
 60850  	rc = tcl.XTcl_GetIndexFromObjStruct(tls,
 60851  		interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp, int32(unsafe.Sizeof(struct {
 60852  			FzName       uintptr
 60853  			FxProc       uintptr
 60854  			FnArg        int32
 60855  			F__ccgo_pad1 [4]byte
 60856  			FzUsage      uintptr
 60857  		}{})), ts+2014, 0, bp+160)
 60858  	if rc != TCL_OK {
 60859  		return rc
 60860  	}
 60861  	pSub = bp + uintptr(*(*int32)(unsafe.Pointer(bp + 160)))*32
 60862  
 60863  	if objc < (*struct {
 60864  		FzName       uintptr
 60865  		FxProc       uintptr
 60866  		FnArg        int32
 60867  		F__ccgo_pad1 [4]byte
 60868  		FzUsage      uintptr
 60869  	})(unsafe.Pointer(pSub)).FnArg+2 {
 60870  		tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, (*struct {
 60871  			FzName       uintptr
 60872  			FxProc       uintptr
 60873  			FnArg        int32
 60874  			F__ccgo_pad1 [4]byte
 60875  			FzUsage      uintptr
 60876  		})(unsafe.Pointer(pSub)).FzUsage)
 60877  		return TCL_ERROR
 60878  	}
 60879  
 60880  	return (*struct {
 60881  		f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
 60882  	})(unsafe.Pointer(&struct{ uintptr }{(*struct {
 60883  		FzName       uintptr
 60884  		FxProc       uintptr
 60885  		FnArg        int32
 60886  		F__ccgo_pad1 [4]byte
 60887  		FzUsage      uintptr
 60888  	})(unsafe.Pointer(pSub)).FxProc})).f(tls, clientData, interp, objc, objv)
 60889  }
 60890  
 60891  func clock_seconds_proc(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 60892  	bp := tls.Alloc(16)
 60893  	defer tls.Free(16)
 60894  
 60895  	tcl.XTcl_GetTime(tls, bp)
 60896  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, int32((*Tcl_Time)(unsafe.Pointer(bp)).Fsec)))
 60897  	_ = clientData
 60898  	_ = objc
 60899  	_ = objv
 60900  	return TCL_OK
 60901  }
 60902  
 60903  type UnlockNotification1 = struct {
 60904  	Ffired       int32
 60905  	F__ccgo_pad1 [4]byte
 60906  	Fcond        pthread_cond_t
 60907  	Fmutex       pthread_mutex_t
 60908  }
 60909  
 60910  type UnlockNotification = UnlockNotification1
 60911  
 60912  func unlock_notify_cb(tls *libc.TLS, apArg uintptr, nArg int32) {
 60913  	var i int32
 60914  	for i = 0; i < nArg; i++ {
 60915  		var p uintptr = *(*uintptr)(unsafe.Pointer(apArg + uintptr(i)*8))
 60916  		libc.Xpthread_mutex_lock(tls, p+56)
 60917  		(*UnlockNotification)(unsafe.Pointer(p)).Ffired = 1
 60918  		libc.Xpthread_cond_signal(tls, p+8)
 60919  		libc.Xpthread_mutex_unlock(tls, p+56)
 60920  	}
 60921  }
 60922  
 60923  func wait_for_unlock_notify(tls *libc.TLS, db uintptr) int32 {
 60924  	bp := tls.Alloc(120)
 60925  	defer tls.Free(120)
 60926  
 60927  	var rc int32
 60928  
 60929  	(*UnlockNotification)(unsafe.Pointer(bp)).Ffired = 0
 60930  	libc.Xpthread_mutex_init(tls, bp+56, uintptr(0))
 60931  	libc.Xpthread_cond_init(tls, bp+8, uintptr(0))
 60932  
 60933  	rc = sqlite3.Xsqlite3_unlock_notify(tls, db, *(*uintptr)(unsafe.Pointer(&struct {
 60934  		f func(*libc.TLS, uintptr, int32)
 60935  	}{unlock_notify_cb})), bp)
 60936  
 60937  	if rc == SQLITE_OK {
 60938  		libc.Xpthread_mutex_lock(tls, bp+56)
 60939  		if !((*UnlockNotification)(unsafe.Pointer(bp)).Ffired != 0) {
 60940  			libc.Xpthread_cond_wait(tls, bp+8, bp+56)
 60941  		}
 60942  		libc.Xpthread_mutex_unlock(tls, bp+56)
 60943  	}
 60944  
 60945  	libc.Xpthread_cond_destroy(tls, bp+8)
 60946  	libc.Xpthread_mutex_destroy(tls, bp+56)
 60947  
 60948  	return rc
 60949  }
 60950  
 60951  func sqlite3_blocking_step(tls *libc.TLS, pStmt uintptr) int32 {
 60952  	var rc int32
 60953  	for SQLITE_LOCKED == libc.AssignInt32(&rc, sqlite3.Xsqlite3_step(tls, pStmt)) {
 60954  		rc = wait_for_unlock_notify(tls, sqlite3.Xsqlite3_db_handle(tls, pStmt))
 60955  		if rc != SQLITE_OK {
 60956  			break
 60957  		}
 60958  		sqlite3.Xsqlite3_reset(tls, pStmt)
 60959  	}
 60960  	return rc
 60961  }
 60962  
 60963  func sqlite3_blocking_prepare_v2(tls *libc.TLS, db uintptr, zSql uintptr, nSql int32, ppStmt uintptr, pz uintptr) int32 {
 60964  	var rc int32
 60965  	for SQLITE_LOCKED == libc.AssignInt32(&rc, sqlite3.Xsqlite3_prepare_v2(tls, db, zSql, nSql, ppStmt, pz)) {
 60966  		rc = wait_for_unlock_notify(tls, db)
 60967  		if rc != SQLITE_OK {
 60968  			break
 60969  		}
 60970  	}
 60971  	return rc
 60972  }
 60973  
 60974  func blocking_step_proc(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 60975  	var pStmt uintptr
 60976  	var rc int32
 60977  
 60978  	if objc != 2 {
 60979  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+17042)
 60980  		return TCL_ERROR
 60981  	}
 60982  
 60983  	pStmt = sqlite3TestTextToPtr(tls, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))))
 60984  	rc = sqlite3_blocking_step(tls, pStmt)
 60985  
 60986  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 60987  	return TCL_OK
 60988  }
 60989  
 60990  func blocking_prepare_v2_proc(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 60991  	bp := tls.Alloc(162)
 60992  	defer tls.Free(162)
 60993  
 60994  	var zSql uintptr
 60995  
 60996  	*(*uintptr)(unsafe.Pointer(bp + 104)) = uintptr(0)
 60997  	*(*uintptr)(unsafe.Pointer(bp + 96)) = uintptr(0)
 60998  
 60999  	var rc int32
 61000  	var isBlocking int32 = libc.BoolInt32(!(clientData == uintptr(0)))
 61001  
 61002  	if objc != 5 && objc != 4 {
 61003  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 61004  			tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))), ts+17088, 0))
 61005  		return TCL_ERROR
 61006  	}
 61007  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+80) != 0 {
 61008  		return TCL_ERROR
 61009  	}
 61010  	zSql = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 61011  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+88) != 0 {
 61012  		return TCL_ERROR
 61013  	}
 61014  
 61015  	if isBlocking != 0 {
 61016  		rc = sqlite3_blocking_prepare_v2(tls, *(*uintptr)(unsafe.Pointer(bp + 80)), zSql, *(*int32)(unsafe.Pointer(bp + 88)), bp+96, bp+104)
 61017  	} else {
 61018  		rc = sqlite3.Xsqlite3_prepare_v2(tls, *(*uintptr)(unsafe.Pointer(bp + 80)), zSql, *(*int32)(unsafe.Pointer(bp + 88)), bp+96, bp+104)
 61019  	}
 61020  
 61021  	if *(*uintptr)(unsafe.Pointer(bp + 104)) != 0 && objc >= 5 {
 61022  		if *(*int32)(unsafe.Pointer(bp + 88)) >= 0 {
 61023  			*(*int32)(unsafe.Pointer(bp + 88)) = int32(int64(*(*int32)(unsafe.Pointer(bp + 88))) - (int64(*(*uintptr)(unsafe.Pointer(bp + 104)))-int64(zSql))/1)
 61024  		}
 61025  		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)
 61026  	}
 61027  	if rc != SQLITE_OK {
 61028  		sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([50]int8{})), bp+112, ts+38637, libc.VaList(bp+32, sqlite3.Xsqlite3ErrName(tls, rc)))
 61029  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+40, bp+112, sqlite3.Xsqlite3_errmsg(tls, *(*uintptr)(unsafe.Pointer(bp + 80))), 0))
 61030  		return TCL_ERROR
 61031  	}
 61032  
 61033  	if *(*uintptr)(unsafe.Pointer(bp + 96)) != 0 {
 61034  		if sqlite3TestMakePointerStr(tls, interp, bp+112, *(*uintptr)(unsafe.Pointer(bp + 96))) != 0 {
 61035  			return TCL_ERROR
 61036  		}
 61037  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+64, bp+112, 0))
 61038  	}
 61039  	return TCL_OK
 61040  }
 61041  
 61042  func SqlitetestThread_Init(tls *libc.TLS, interp uintptr) int32 {
 61043  	tcl.XTcl_CreateObjCommand(tls, interp, ts+38459, *(*uintptr)(unsafe.Pointer(&struct {
 61044  		f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
 61045  	}{sqlthread_proc})), uintptr(0), uintptr(0))
 61046  	tcl.XTcl_CreateObjCommand(tls, interp, ts+38445, *(*uintptr)(unsafe.Pointer(&struct {
 61047  		f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
 61048  	}{clock_seconds_proc})), uintptr(0), uintptr(0))
 61049  	tcl.XTcl_CreateObjCommand(tls, interp, ts+38469, *(*uintptr)(unsafe.Pointer(&struct {
 61050  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 61051  	}{blocking_step_proc})), uintptr(0), uintptr(0))
 61052  	tcl.XTcl_CreateObjCommand(tls, interp,
 61053  		ts+38491, *(*uintptr)(unsafe.Pointer(&struct {
 61054  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 61055  		}{blocking_prepare_v2_proc})), uintptr(1), uintptr(0))
 61056  	tcl.XTcl_CreateObjCommand(tls, interp,
 61057  		ts+38519, *(*uintptr)(unsafe.Pointer(&struct {
 61058  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 61059  		}{blocking_prepare_v2_proc})), uintptr(0), uintptr(0))
 61060  	return TCL_OK
 61061  }
 61062  
 61063  func Sqlitetestvdbecov_Init(tls *libc.TLS, interp uintptr) int32 {
 61064  	return TCL_OK
 61065  }
 61066  
 61067  type Testvfs1 = struct {
 61068  	FzName        uintptr
 61069  	FpParent      uintptr
 61070  	FpVfs         uintptr
 61071  	Finterp       uintptr
 61072  	FpScript      uintptr
 61073  	FpBuffer      uintptr
 61074  	FisNoshm      int32
 61075  	FisFullshm    int32
 61076  	Fmask         int32
 61077  	Fioerr_err    TestFaultInject
 61078  	Ffull_err     TestFaultInject
 61079  	Fcantopen_err TestFaultInject
 61080  	FiDevchar     int32
 61081  	FiSectorsize  int32
 61082  }
 61083  
 61084  type Testvfs = Testvfs1
 61085  type TestvfsBuffer1 = struct {
 61086  	FzFile       uintptr
 61087  	Fpgsz        int32
 61088  	F__ccgo_pad1 [4]byte
 61089  	FaPage       [1024]uintptr
 61090  	FpFile       uintptr
 61091  	FpNext       uintptr
 61092  }
 61093  
 61094  type TestvfsBuffer = TestvfsBuffer1
 61095  type TestvfsFile1 = struct {
 61096  	Fbase sqlite3_file
 61097  	FpFd  uintptr
 61098  }
 61099  
 61100  type TestvfsFile = TestvfsFile1
 61101  type TestvfsFd1 = struct {
 61102  	FpVfs       uintptr
 61103  	FzFilename  uintptr
 61104  	FpReal      uintptr
 61105  	FpShmId     uintptr
 61106  	FpShm       uintptr
 61107  	Fexcllock   u32
 61108  	Fsharedlock u32
 61109  	FpNext      uintptr
 61110  }
 61111  
 61112  type TestvfsFd = TestvfsFd1
 61113  
 61114  type TestFaultInject1 = struct {
 61115  	FiCnt   int32
 61116  	FeFault int32
 61117  	FnFail  int32
 61118  }
 61119  
 61120  type TestFaultInject = TestFaultInject1
 61121  
 61122  var tvfs_io_methods = sqlite3_io_methods{
 61123  	FiVersion:               3,
 61124  	FxClose:                 0,
 61125  	FxRead:                  0,
 61126  	FxWrite:                 0,
 61127  	FxTruncate:              0,
 61128  	FxSync:                  0,
 61129  	FxFileSize:              0,
 61130  	FxLock:                  0,
 61131  	FxUnlock:                0,
 61132  	FxCheckReservedLock:     0,
 61133  	FxFileControl:           0,
 61134  	FxSectorSize:            0,
 61135  	FxDeviceCharacteristics: 0,
 61136  	FxShmMap:                0,
 61137  	FxShmLock:               0,
 61138  	FxShmBarrier:            0,
 61139  	FxShmUnmap:              0,
 61140  	FxFetch:                 0,
 61141  	FxUnfetch:               0,
 61142  }
 61143  
 61144  func tvfsResultCode(tls *libc.TLS, p uintptr, pRc uintptr) int32 {
 61145  	bp := tls.Alloc(144)
 61146  	defer tls.Free(144)
 61147  
 61148  	*(*[9]errcode)(unsafe.Pointer(bp)) = [9]errcode{
 61149  		{FzCode: ts + 2127},
 61150  		{FeCode: SQLITE_ERROR, FzCode: ts + 2114},
 61151  		{FeCode: SQLITE_IOERR, FzCode: ts + 38641},
 61152  		{FeCode: SQLITE_LOCKED, FzCode: ts + 38654},
 61153  		{FeCode: SQLITE_BUSY, FzCode: ts + 38668},
 61154  		{FeCode: SQLITE_READONLY, FzCode: ts + 38680},
 61155  		{FeCode: SQLITE_READONLY | int32(5)<<8, FzCode: ts + 38696},
 61156  		{FeCode: SQLITE_NOTFOUND, FzCode: ts + 38721},
 61157  		{FeCode: -1, FzCode: ts + 38737},
 61158  	}
 61159  	var z uintptr
 61160  	var i int32
 61161  
 61162  	z = tcl.XTcl_GetStringResult(tls, (*Testvfs)(unsafe.Pointer(p)).Finterp)
 61163  	for i = 0; i < int32(uint64(unsafe.Sizeof([9]errcode{}))/uint64(unsafe.Sizeof(errcode{}))); i++ {
 61164  		if 0 == libc.Xstrcmp(tls, z, (*errcode)(unsafe.Pointer(bp+uintptr(i)*16)).FzCode) {
 61165  			*(*int32)(unsafe.Pointer(pRc)) = (*errcode)(unsafe.Pointer(bp + uintptr(i)*16)).FeCode
 61166  			return 1
 61167  		}
 61168  	}
 61169  
 61170  	return 0
 61171  }
 61172  
 61173  type errcode = struct {
 61174  	FeCode       int32
 61175  	F__ccgo_pad1 [4]byte
 61176  	FzCode       uintptr
 61177  }
 61178  
 61179  func tvfsInjectFault(tls *libc.TLS, p uintptr) int32 {
 61180  	var ret int32 = 0
 61181  	if (*TestFaultInject)(unsafe.Pointer(p)).FeFault != 0 {
 61182  		(*TestFaultInject)(unsafe.Pointer(p)).FiCnt--
 61183  		if (*TestFaultInject)(unsafe.Pointer(p)).FiCnt == 0 || (*TestFaultInject)(unsafe.Pointer(p)).FiCnt < 0 && (*TestFaultInject)(unsafe.Pointer(p)).FeFault == FAULT_INJECT_PERSISTENT {
 61184  			ret = 1
 61185  			(*TestFaultInject)(unsafe.Pointer(p)).FnFail++
 61186  		}
 61187  	}
 61188  	return ret
 61189  }
 61190  
 61191  func tvfsInjectIoerr(tls *libc.TLS, p uintptr) int32 {
 61192  	return tvfsInjectFault(tls, p+60)
 61193  }
 61194  
 61195  func tvfsInjectFullerr(tls *libc.TLS, p uintptr) int32 {
 61196  	return tvfsInjectFault(tls, p+72)
 61197  }
 61198  
 61199  func tvfsInjectCantopenerr(tls *libc.TLS, p uintptr) int32 {
 61200  	return tvfsInjectFault(tls, p+84)
 61201  }
 61202  
 61203  func tvfsExecTcl(tls *libc.TLS, p uintptr, zMethod uintptr, arg1 uintptr, arg2 uintptr, arg3 uintptr, arg4 uintptr) {
 61204  	var rc int32
 61205  	var pEval uintptr
 61206  
 61207  	pEval = tcl.XTcl_DuplicateObj(tls, (*Testvfs)(unsafe.Pointer(p)).FpScript)
 61208  	(*Tcl_Obj)(unsafe.Pointer((*Testvfs)(unsafe.Pointer(p)).FpScript)).FrefCount++
 61209  	tcl.XTcl_ListObjAppendElement(tls, (*Testvfs)(unsafe.Pointer(p)).Finterp, pEval, tcl.XTcl_NewStringObj(tls, zMethod, -1))
 61210  	if arg1 != 0 {
 61211  		tcl.XTcl_ListObjAppendElement(tls, (*Testvfs)(unsafe.Pointer(p)).Finterp, pEval, arg1)
 61212  	}
 61213  	if arg2 != 0 {
 61214  		tcl.XTcl_ListObjAppendElement(tls, (*Testvfs)(unsafe.Pointer(p)).Finterp, pEval, arg2)
 61215  	}
 61216  	if arg3 != 0 {
 61217  		tcl.XTcl_ListObjAppendElement(tls, (*Testvfs)(unsafe.Pointer(p)).Finterp, pEval, arg3)
 61218  	}
 61219  	if arg4 != 0 {
 61220  		tcl.XTcl_ListObjAppendElement(tls, (*Testvfs)(unsafe.Pointer(p)).Finterp, pEval, arg4)
 61221  	}
 61222  
 61223  	rc = tcl.XTcl_EvalObjEx(tls, (*Testvfs)(unsafe.Pointer(p)).Finterp, pEval, TCL_EVAL_GLOBAL)
 61224  	if rc != TCL_OK {
 61225  		tcl.XTcl_BackgroundError(tls, (*Testvfs)(unsafe.Pointer(p)).Finterp)
 61226  		tcl.XTcl_ResetResult(tls, (*Testvfs)(unsafe.Pointer(p)).Finterp)
 61227  	}
 61228  }
 61229  
 61230  func tvfsClose(tls *libc.TLS, pFile uintptr) int32 {
 61231  	var pTestfile uintptr = pFile
 61232  	var pFd uintptr = (*TestvfsFile)(unsafe.Pointer(pTestfile)).FpFd
 61233  	var p uintptr = (*sqlite3_vfs)(unsafe.Pointer((*TestvfsFd)(unsafe.Pointer(pFd)).FpVfs)).FpAppData
 61234  
 61235  	if (*Testvfs)(unsafe.Pointer(p)).FpScript != 0 && (*Testvfs)(unsafe.Pointer(p)).Fmask&TESTVFS_CLOSE_MASK != 0 {
 61236  		tvfsExecTcl(tls, p, ts+35739,
 61237  			tcl.XTcl_NewStringObj(tls, (*TestvfsFd)(unsafe.Pointer(pFd)).FzFilename, -1), (*TestvfsFd)(unsafe.Pointer(pFd)).FpShmId, uintptr(0), uintptr(0))
 61238  	}
 61239  
 61240  	if (*TestvfsFd)(unsafe.Pointer(pFd)).FpShmId != 0 {
 61241  		for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 61242  			if libc.PreDecInt32(&(*Tcl_Obj)(unsafe.Pointer((*TestvfsFd)(unsafe.Pointer(pFd)).FpShmId)).FrefCount, 1) <= 0 {
 61243  				tcl.XTclFreeObj(tls, (*TestvfsFd)(unsafe.Pointer(pFd)).FpShmId)
 61244  			}
 61245  		}
 61246  		(*TestvfsFd)(unsafe.Pointer(pFd)).FpShmId = uintptr(0)
 61247  	}
 61248  	if (*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods != 0 {
 61249  		tcl.XTcl_Free(tls, (*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)
 61250  	}
 61251  	sqlite3.Xsqlite3OsClose(tls, (*TestvfsFd)(unsafe.Pointer(pFd)).FpReal)
 61252  	tcl.XTcl_Free(tls, pFd)
 61253  	(*TestvfsFile)(unsafe.Pointer(pTestfile)).FpFd = uintptr(0)
 61254  	return SQLITE_OK
 61255  }
 61256  
 61257  func tvfsRead(tls *libc.TLS, pFile uintptr, zBuf uintptr, iAmt int32, iOfst sqlite_int64) int32 {
 61258  	bp := tls.Alloc(4)
 61259  	defer tls.Free(4)
 61260  
 61261  	*(*int32)(unsafe.Pointer(bp)) = SQLITE_OK
 61262  	var pFd uintptr = (*TestvfsFile)(unsafe.Pointer(pFile)).FpFd
 61263  	var p uintptr = (*sqlite3_vfs)(unsafe.Pointer((*TestvfsFd)(unsafe.Pointer(pFd)).FpVfs)).FpAppData
 61264  	if (*Testvfs)(unsafe.Pointer(p)).FpScript != 0 && (*Testvfs)(unsafe.Pointer(p)).Fmask&TESTVFS_READ_MASK != 0 {
 61265  		tvfsExecTcl(tls, p, ts+35746,
 61266  			tcl.XTcl_NewStringObj(tls, (*TestvfsFd)(unsafe.Pointer(pFd)).FzFilename, -1), (*TestvfsFd)(unsafe.Pointer(pFd)).FpShmId, uintptr(0), uintptr(0))
 61267  		tvfsResultCode(tls, p, bp)
 61268  	}
 61269  	if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK && (*Testvfs)(unsafe.Pointer(p)).Fmask&TESTVFS_READ_MASK != 0 && tvfsInjectIoerr(tls, p) != 0 {
 61270  		*(*int32)(unsafe.Pointer(bp)) = SQLITE_IOERR
 61271  	}
 61272  	if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK {
 61273  		*(*int32)(unsafe.Pointer(bp)) = sqlite3.Xsqlite3OsRead(tls, (*TestvfsFd)(unsafe.Pointer(pFd)).FpReal, zBuf, iAmt, iOfst)
 61274  	}
 61275  	return *(*int32)(unsafe.Pointer(bp))
 61276  }
 61277  
 61278  func tvfsWrite(tls *libc.TLS, pFile uintptr, zBuf uintptr, iAmt int32, iOfst sqlite_int64) int32 {
 61279  	bp := tls.Alloc(4)
 61280  	defer tls.Free(4)
 61281  
 61282  	*(*int32)(unsafe.Pointer(bp)) = SQLITE_OK
 61283  	var pFd uintptr = (*TestvfsFile)(unsafe.Pointer(pFile)).FpFd
 61284  	var p uintptr = (*sqlite3_vfs)(unsafe.Pointer((*TestvfsFd)(unsafe.Pointer(pFd)).FpVfs)).FpAppData
 61285  
 61286  	if (*Testvfs)(unsafe.Pointer(p)).FpScript != 0 && (*Testvfs)(unsafe.Pointer(p)).Fmask&TESTVFS_WRITE_MASK != 0 {
 61287  		tvfsExecTcl(tls, p, ts+35752,
 61288  			tcl.XTcl_NewStringObj(tls, (*TestvfsFd)(unsafe.Pointer(pFd)).FzFilename, -1), (*TestvfsFd)(unsafe.Pointer(pFd)).FpShmId,
 61289  			tcl.XTcl_NewWideIntObj(tls, iOfst), tcl.XTcl_NewIntObj(tls, iAmt))
 61290  		tvfsResultCode(tls, p, bp)
 61291  		if *(*int32)(unsafe.Pointer(bp)) < 0 {
 61292  			return SQLITE_OK
 61293  		}
 61294  	}
 61295  
 61296  	if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK && tvfsInjectFullerr(tls, p) != 0 {
 61297  		*(*int32)(unsafe.Pointer(bp)) = SQLITE_FULL
 61298  	}
 61299  	if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK && (*Testvfs)(unsafe.Pointer(p)).Fmask&TESTVFS_WRITE_MASK != 0 && tvfsInjectIoerr(tls, p) != 0 {
 61300  		*(*int32)(unsafe.Pointer(bp)) = SQLITE_IOERR
 61301  	}
 61302  
 61303  	if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK {
 61304  		*(*int32)(unsafe.Pointer(bp)) = sqlite3.Xsqlite3OsWrite(tls, (*TestvfsFd)(unsafe.Pointer(pFd)).FpReal, zBuf, iAmt, iOfst)
 61305  	}
 61306  	return *(*int32)(unsafe.Pointer(bp))
 61307  }
 61308  
 61309  func tvfsTruncate(tls *libc.TLS, pFile uintptr, size sqlite_int64) int32 {
 61310  	bp := tls.Alloc(4)
 61311  	defer tls.Free(4)
 61312  
 61313  	*(*int32)(unsafe.Pointer(bp)) = SQLITE_OK
 61314  	var pFd uintptr = (*TestvfsFile)(unsafe.Pointer(pFile)).FpFd
 61315  	var p uintptr = (*sqlite3_vfs)(unsafe.Pointer((*TestvfsFd)(unsafe.Pointer(pFd)).FpVfs)).FpAppData
 61316  
 61317  	if (*Testvfs)(unsafe.Pointer(p)).FpScript != 0 && (*Testvfs)(unsafe.Pointer(p)).Fmask&TESTVFS_TRUNCATE_MASK != 0 {
 61318  		tvfsExecTcl(tls, p, ts+35759,
 61319  			tcl.XTcl_NewStringObj(tls, (*TestvfsFd)(unsafe.Pointer(pFd)).FzFilename, -1), (*TestvfsFd)(unsafe.Pointer(pFd)).FpShmId, uintptr(0), uintptr(0))
 61320  		tvfsResultCode(tls, p, bp)
 61321  	}
 61322  
 61323  	if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK {
 61324  		*(*int32)(unsafe.Pointer(bp)) = sqlite3.Xsqlite3OsTruncate(tls, (*TestvfsFd)(unsafe.Pointer(pFd)).FpReal, size)
 61325  	}
 61326  	return *(*int32)(unsafe.Pointer(bp))
 61327  }
 61328  
 61329  func tvfsSync(tls *libc.TLS, pFile uintptr, flags int32) int32 {
 61330  	bp := tls.Alloc(4)
 61331  	defer tls.Free(4)
 61332  
 61333  	*(*int32)(unsafe.Pointer(bp)) = SQLITE_OK
 61334  	var pFd uintptr = (*TestvfsFile)(unsafe.Pointer(pFile)).FpFd
 61335  	var p uintptr = (*sqlite3_vfs)(unsafe.Pointer((*TestvfsFd)(unsafe.Pointer(pFd)).FpVfs)).FpAppData
 61336  
 61337  	if (*Testvfs)(unsafe.Pointer(p)).FpScript != 0 && (*Testvfs)(unsafe.Pointer(p)).Fmask&TESTVFS_SYNC_MASK != 0 {
 61338  		var zFlags uintptr = uintptr(0)
 61339  
 61340  		switch flags {
 61341  		case SQLITE_SYNC_NORMAL:
 61342  			zFlags = ts + 16397
 61343  			break
 61344  			fallthrough
 61345  		case SQLITE_SYNC_FULL:
 61346  			zFlags = ts + 18377
 61347  			break
 61348  			fallthrough
 61349  		case SQLITE_SYNC_NORMAL | SQLITE_SYNC_DATAONLY:
 61350  			zFlags = ts + 38749
 61351  			break
 61352  			fallthrough
 61353  		case SQLITE_SYNC_FULL | SQLITE_SYNC_DATAONLY:
 61354  			zFlags = ts + 38765
 61355  			break
 61356  			fallthrough
 61357  		default:
 61358  		}
 61359  
 61360  		tvfsExecTcl(tls, p, ts+27947,
 61361  			tcl.XTcl_NewStringObj(tls, (*TestvfsFd)(unsafe.Pointer(pFd)).FzFilename, -1), (*TestvfsFd)(unsafe.Pointer(pFd)).FpShmId,
 61362  			tcl.XTcl_NewStringObj(tls, zFlags, -1), uintptr(0))
 61363  		tvfsResultCode(tls, p, bp)
 61364  	}
 61365  
 61366  	if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK && tvfsInjectFullerr(tls, p) != 0 {
 61367  		*(*int32)(unsafe.Pointer(bp)) = SQLITE_FULL
 61368  	}
 61369  
 61370  	if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK {
 61371  		*(*int32)(unsafe.Pointer(bp)) = sqlite3.Xsqlite3OsSync(tls, (*TestvfsFd)(unsafe.Pointer(pFd)).FpReal, flags)
 61372  	}
 61373  
 61374  	return *(*int32)(unsafe.Pointer(bp))
 61375  }
 61376  
 61377  func tvfsFileSize(tls *libc.TLS, pFile uintptr, pSize uintptr) int32 {
 61378  	var p uintptr = (*TestvfsFile)(unsafe.Pointer(pFile)).FpFd
 61379  	return sqlite3.Xsqlite3OsFileSize(tls, (*TestvfsFd)(unsafe.Pointer(p)).FpReal, pSize)
 61380  }
 61381  
 61382  func tvfsLock(tls *libc.TLS, pFile uintptr, eLock int32) int32 {
 61383  	bp := tls.Alloc(38)
 61384  	defer tls.Free(38)
 61385  
 61386  	var pFd uintptr = (*TestvfsFile)(unsafe.Pointer(pFile)).FpFd
 61387  	var p uintptr = (*sqlite3_vfs)(unsafe.Pointer((*TestvfsFd)(unsafe.Pointer(pFd)).FpVfs)).FpAppData
 61388  	if (*Testvfs)(unsafe.Pointer(p)).FpScript != 0 && (*Testvfs)(unsafe.Pointer(p)).Fmask&TESTVFS_LOCK_MASK != 0 {
 61389  		sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([30]int8{})), bp+8, ts+1333, libc.VaList(bp, eLock))
 61390  		tvfsExecTcl(tls, p, ts+35779, tcl.XTcl_NewStringObj(tls, (*TestvfsFd)(unsafe.Pointer(pFd)).FzFilename, -1),
 61391  			tcl.XTcl_NewStringObj(tls, bp+8, -1), uintptr(0), uintptr(0))
 61392  	}
 61393  	return sqlite3.Xsqlite3OsLock(tls, (*TestvfsFd)(unsafe.Pointer(pFd)).FpReal, eLock)
 61394  }
 61395  
 61396  func tvfsUnlock(tls *libc.TLS, pFile uintptr, eLock int32) int32 {
 61397  	bp := tls.Alloc(38)
 61398  	defer tls.Free(38)
 61399  
 61400  	var pFd uintptr = (*TestvfsFile)(unsafe.Pointer(pFile)).FpFd
 61401  	var p uintptr = (*sqlite3_vfs)(unsafe.Pointer((*TestvfsFd)(unsafe.Pointer(pFd)).FpVfs)).FpAppData
 61402  	if (*Testvfs)(unsafe.Pointer(p)).FpScript != 0 && (*Testvfs)(unsafe.Pointer(p)).Fmask&TESTVFS_UNLOCK_MASK != 0 {
 61403  		sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([30]int8{})), bp+8, ts+1333, libc.VaList(bp, eLock))
 61404  		tvfsExecTcl(tls, p, ts+35785, tcl.XTcl_NewStringObj(tls, (*TestvfsFd)(unsafe.Pointer(pFd)).FzFilename, -1),
 61405  			tcl.XTcl_NewStringObj(tls, bp+8, -1), uintptr(0), uintptr(0))
 61406  	}
 61407  	if (*Testvfs)(unsafe.Pointer(p)).Fmask&TESTVFS_WRITE_MASK != 0 && tvfsInjectIoerr(tls, p) != 0 {
 61408  		return SQLITE_IOERR | int32(8)<<8
 61409  	}
 61410  	return sqlite3.Xsqlite3OsUnlock(tls, (*TestvfsFd)(unsafe.Pointer(pFd)).FpReal, eLock)
 61411  }
 61412  
 61413  func tvfsCheckReservedLock(tls *libc.TLS, pFile uintptr, pResOut uintptr) int32 {
 61414  	var pFd uintptr = (*TestvfsFile)(unsafe.Pointer(pFile)).FpFd
 61415  	var p uintptr = (*sqlite3_vfs)(unsafe.Pointer((*TestvfsFd)(unsafe.Pointer(pFd)).FpVfs)).FpAppData
 61416  	if (*Testvfs)(unsafe.Pointer(p)).FpScript != 0 && (*Testvfs)(unsafe.Pointer(p)).Fmask&TESTVFS_CKLOCK_MASK != 0 {
 61417  		tvfsExecTcl(tls, p, ts+38779, tcl.XTcl_NewStringObj(tls, (*TestvfsFd)(unsafe.Pointer(pFd)).FzFilename, -1),
 61418  			uintptr(0), uintptr(0), uintptr(0))
 61419  	}
 61420  	return sqlite3.Xsqlite3OsCheckReservedLock(tls, (*TestvfsFd)(unsafe.Pointer(pFd)).FpReal, pResOut)
 61421  }
 61422  
 61423  func tvfsFileControl(tls *libc.TLS, pFile uintptr, op int32, pArg uintptr) int32 {
 61424  	bp := tls.Alloc(68)
 61425  	defer tls.Free(68)
 61426  
 61427  	var pFd uintptr = (*TestvfsFile)(unsafe.Pointer(pFile)).FpFd
 61428  	var p uintptr = (*sqlite3_vfs)(unsafe.Pointer((*TestvfsFd)(unsafe.Pointer(pFd)).FpVfs)).FpAppData
 61429  	if op == SQLITE_FCNTL_PRAGMA {
 61430  		var argv uintptr = pArg
 61431  		if sqlite3.Xsqlite3_stricmp(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)), ts+9674) == 0 {
 61432  			var rc int32 = SQLITE_ERROR
 61433  			if *(*uintptr)(unsafe.Pointer(argv + 2*8)) != 0 {
 61434  				var z uintptr = *(*uintptr)(unsafe.Pointer(argv + 2*8))
 61435  				var x int32 = libc.Xatoi(tls, z)
 61436  				if x != 0 {
 61437  					rc = x
 61438  					for int32(sqlite3.Xsqlite3CtypeMap[uint8(*(*int8)(unsafe.Pointer(z)))])&0x04 != 0 {
 61439  						z++
 61440  					}
 61441  					for int32(sqlite3.Xsqlite3CtypeMap[uint8(*(*int8)(unsafe.Pointer(z)))])&0x01 != 0 {
 61442  						z++
 61443  					}
 61444  				}
 61445  				if *(*int8)(unsafe.Pointer(z)) != 0 {
 61446  					*(*uintptr)(unsafe.Pointer(argv)) = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp, z))
 61447  				}
 61448  			}
 61449  			return rc
 61450  		}
 61451  		if sqlite3.Xsqlite3_stricmp(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)), ts+4794) == 0 {
 61452  			*(*uintptr)(unsafe.Pointer(argv)) = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp+8, (*TestvfsFd)(unsafe.Pointer(pFd)).FzFilename))
 61453  			return SQLITE_OK
 61454  		}
 61455  	}
 61456  	if (*Testvfs)(unsafe.Pointer(p)).FpScript != 0 && (*Testvfs)(unsafe.Pointer(p)).Fmask&TESTVFS_FCNTL_MASK != 0 {
 61457  		*(*[3]Fcntl)(unsafe.Pointer(bp + 16)) = [3]Fcntl{
 61458  			{FiFnctl: SQLITE_FCNTL_BEGIN_ATOMIC_WRITE, FzFnctl: ts + 38798},
 61459  			{FiFnctl: SQLITE_FCNTL_COMMIT_ATOMIC_WRITE, FzFnctl: ts + 38817},
 61460  			{FiFnctl: SQLITE_FCNTL_ZIPVFS, FzFnctl: ts + 38837},
 61461  		}
 61462  		var i int32
 61463  		for i = 0; uint64(i) < uint64(unsafe.Sizeof([3]Fcntl{}))/uint64(unsafe.Sizeof(Fcntl{})); i++ {
 61464  			if op == (*Fcntl)(unsafe.Pointer(bp+16+uintptr(i)*16)).FiFnctl {
 61465  				break
 61466  			}
 61467  		}
 61468  		if uint64(i) < uint64(unsafe.Sizeof([3]Fcntl{}))/uint64(unsafe.Sizeof(Fcntl{})) {
 61469  			*(*int32)(unsafe.Pointer(bp + 64)) = 0
 61470  			tvfsExecTcl(tls, p, ts+35807,
 61471  				tcl.XTcl_NewStringObj(tls, (*TestvfsFd)(unsafe.Pointer(pFd)).FzFilename, -1),
 61472  				tcl.XTcl_NewStringObj(tls, (*Fcntl)(unsafe.Pointer(bp+16+uintptr(i)*16)).FzFnctl, -1),
 61473  				uintptr(0), uintptr(0))
 61474  			tvfsResultCode(tls, p, bp+64)
 61475  			if *(*int32)(unsafe.Pointer(bp + 64)) != 0 {
 61476  				return func() int32 {
 61477  					if *(*int32)(unsafe.Pointer(bp + 64)) < 0 {
 61478  						return SQLITE_OK
 61479  					}
 61480  					return *(*int32)(unsafe.Pointer(bp + 64))
 61481  				}()
 61482  			}
 61483  		}
 61484  	}
 61485  	return sqlite3.Xsqlite3OsFileControl(tls, (*TestvfsFd)(unsafe.Pointer(pFd)).FpReal, op, pArg)
 61486  }
 61487  
 61488  type Fcntl = struct {
 61489  	FiFnctl      int32
 61490  	F__ccgo_pad1 [4]byte
 61491  	FzFnctl      uintptr
 61492  }
 61493  
 61494  func tvfsSectorSize(tls *libc.TLS, pFile uintptr) int32 {
 61495  	var pFd uintptr = (*TestvfsFile)(unsafe.Pointer(pFile)).FpFd
 61496  	var p uintptr = (*sqlite3_vfs)(unsafe.Pointer((*TestvfsFd)(unsafe.Pointer(pFd)).FpVfs)).FpAppData
 61497  	if (*Testvfs)(unsafe.Pointer(p)).FiSectorsize >= 0 {
 61498  		return (*Testvfs)(unsafe.Pointer(p)).FiSectorsize
 61499  	}
 61500  	return sqlite3.Xsqlite3OsSectorSize(tls, (*TestvfsFd)(unsafe.Pointer(pFd)).FpReal)
 61501  }
 61502  
 61503  func tvfsDeviceCharacteristics(tls *libc.TLS, pFile uintptr) int32 {
 61504  	var pFd uintptr = (*TestvfsFile)(unsafe.Pointer(pFile)).FpFd
 61505  	var p uintptr = (*sqlite3_vfs)(unsafe.Pointer((*TestvfsFd)(unsafe.Pointer(pFd)).FpVfs)).FpAppData
 61506  	if (*Testvfs)(unsafe.Pointer(p)).FiDevchar >= 0 {
 61507  		return (*Testvfs)(unsafe.Pointer(p)).FiDevchar
 61508  	}
 61509  	return sqlite3.Xsqlite3OsDeviceCharacteristics(tls, (*TestvfsFd)(unsafe.Pointer(pFd)).FpReal)
 61510  }
 61511  
 61512  func tvfsOpen(tls *libc.TLS, pVfs uintptr, zName uintptr, pFile uintptr, flags int32, pOutFlags uintptr) int32 {
 61513  	bp := tls.Alloc(4)
 61514  	defer tls.Free(4)
 61515  
 61516  	var pTestfile uintptr = pFile
 61517  	var pFd uintptr
 61518  	var pId uintptr = uintptr(0)
 61519  	var p uintptr = (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData
 61520  
 61521  	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)))
 61522  	libc.X__builtin___memset_chk(tls, pFd, 0, uint64(unsafe.Sizeof(TestvfsFd{}))+uint64((*sqlite3_vfs)(unsafe.Pointer((*Testvfs)(unsafe.Pointer((*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData)).FpParent)).FszOsFile), libc.X__builtin_object_size(tls, pFd, 0))
 61523  	(*TestvfsFd)(unsafe.Pointer(pFd)).FpShm = uintptr(0)
 61524  	(*TestvfsFd)(unsafe.Pointer(pFd)).FpShmId = uintptr(0)
 61525  	(*TestvfsFd)(unsafe.Pointer(pFd)).FzFilename = zName
 61526  	(*TestvfsFd)(unsafe.Pointer(pFd)).FpVfs = pVfs
 61527  	(*TestvfsFd)(unsafe.Pointer(pFd)).FpReal = pFd + 1*56
 61528  	libc.X__builtin___memset_chk(tls, pTestfile, 0, uint64(unsafe.Sizeof(TestvfsFile{})), libc.X__builtin_object_size(tls, pTestfile, 0))
 61529  	(*TestvfsFile)(unsafe.Pointer(pTestfile)).FpFd = pFd
 61530  
 61531  	tcl.XTcl_ResetResult(tls, (*Testvfs)(unsafe.Pointer(p)).Finterp)
 61532  	if (*Testvfs)(unsafe.Pointer(p)).FpScript != 0 && (*Testvfs)(unsafe.Pointer(p)).Fmask&TESTVFS_OPEN_MASK != 0 {
 61533  		var pArg uintptr = tcl.XTcl_NewObj(tls)
 61534  		(*Tcl_Obj)(unsafe.Pointer(pArg)).FrefCount++
 61535  		if flags&SQLITE_OPEN_MAIN_DB != 0 {
 61536  			var z uintptr = zName + uintptr(libc.Xstrlen(tls, zName)+uint64(1))
 61537  			for *(*int8)(unsafe.Pointer(z)) != 0 {
 61538  				tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pArg, tcl.XTcl_NewStringObj(tls, z, -1))
 61539  				z += uintptr(libc.Xstrlen(tls, z) + uint64(1))
 61540  				tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pArg, tcl.XTcl_NewStringObj(tls, z, -1))
 61541  				z += uintptr(libc.Xstrlen(tls, z) + uint64(1))
 61542  			}
 61543  		}
 61544  		tvfsExecTcl(tls, p, ts+27525, tcl.XTcl_NewStringObj(tls, (*TestvfsFd)(unsafe.Pointer(pFd)).FzFilename, -1), pArg, uintptr(0), uintptr(0))
 61545  		for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 61546  			if libc.PreDecInt32(&(*Tcl_Obj)(unsafe.Pointer(pArg)).FrefCount, 1) <= 0 {
 61547  				tcl.XTclFreeObj(tls, pArg)
 61548  			}
 61549  		}
 61550  		if tvfsResultCode(tls, p, bp) != 0 {
 61551  			if *(*int32)(unsafe.Pointer(bp)) != SQLITE_OK {
 61552  				return *(*int32)(unsafe.Pointer(bp))
 61553  			}
 61554  		} else {
 61555  			pId = tcl.XTcl_GetObjResult(tls, (*Testvfs)(unsafe.Pointer(p)).Finterp)
 61556  		}
 61557  	}
 61558  
 61559  	if (*Testvfs)(unsafe.Pointer(p)).Fmask&TESTVFS_OPEN_MASK != 0 && tvfsInjectIoerr(tls, p) != 0 {
 61560  		return SQLITE_IOERR
 61561  	}
 61562  	if tvfsInjectCantopenerr(tls, p) != 0 {
 61563  		return SQLITE_CANTOPEN
 61564  	}
 61565  	if tvfsInjectFullerr(tls, p) != 0 {
 61566  		return SQLITE_FULL
 61567  	}
 61568  
 61569  	if !(pId != 0) {
 61570  		pId = tcl.XTcl_NewStringObj(tls, ts+38844, -1)
 61571  	}
 61572  	(*Tcl_Obj)(unsafe.Pointer(pId)).FrefCount++
 61573  	(*TestvfsFd)(unsafe.Pointer(pFd)).FpShmId = pId
 61574  	tcl.XTcl_ResetResult(tls, (*Testvfs)(unsafe.Pointer(p)).Finterp)
 61575  
 61576  	*(*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)
 61577  	if (*sqlite3_file)(unsafe.Pointer((*TestvfsFd)(unsafe.Pointer(pFd)).FpReal)).FpMethods != 0 {
 61578  		var pMethods uintptr
 61579  		var nByte int32
 61580  
 61581  		if (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FiVersion > 1 {
 61582  			nByte = int32(unsafe.Sizeof(sqlite3_io_methods{}))
 61583  		} else {
 61584  			nByte = int32(uintptr(0) + 104)
 61585  		}
 61586  
 61587  		pMethods = tcl.XTcl_Alloc(tls, uint32(nByte))
 61588  		libc.X__builtin___memcpy_chk(tls, pMethods, uintptr(unsafe.Pointer(&tvfs_io_methods)), uint64(nByte), libc.X__builtin_object_size(tls, pMethods, 0))
 61589  		(*sqlite3_io_methods)(unsafe.Pointer(pMethods)).FiVersion = (*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer((*TestvfsFd)(unsafe.Pointer(pFd)).FpReal)).FpMethods)).FiVersion
 61590  		if (*sqlite3_io_methods)(unsafe.Pointer(pMethods)).FiVersion > (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FiVersion {
 61591  			(*sqlite3_io_methods)(unsafe.Pointer(pMethods)).FiVersion = (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FiVersion
 61592  		}
 61593  		if (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FiVersion > 1 && (*Testvfs)(unsafe.Pointer((*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData)).FisNoshm != 0 {
 61594  			(*sqlite3_io_methods)(unsafe.Pointer(pMethods)).FxShmUnmap = uintptr(0)
 61595  			(*sqlite3_io_methods)(unsafe.Pointer(pMethods)).FxShmLock = uintptr(0)
 61596  			(*sqlite3_io_methods)(unsafe.Pointer(pMethods)).FxShmBarrier = uintptr(0)
 61597  			(*sqlite3_io_methods)(unsafe.Pointer(pMethods)).FxShmMap = uintptr(0)
 61598  		}
 61599  		(*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods = pMethods
 61600  	}
 61601  
 61602  	return *(*int32)(unsafe.Pointer(bp))
 61603  }
 61604  
 61605  func tvfsDelete(tls *libc.TLS, pVfs uintptr, zPath uintptr, dirSync int32) int32 {
 61606  	bp := tls.Alloc(4)
 61607  	defer tls.Free(4)
 61608  
 61609  	*(*int32)(unsafe.Pointer(bp)) = SQLITE_OK
 61610  	var p uintptr = (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData
 61611  
 61612  	if (*Testvfs)(unsafe.Pointer(p)).FpScript != 0 && (*Testvfs)(unsafe.Pointer(p)).Fmask&TESTVFS_DELETE_MASK != 0 {
 61613  		tvfsExecTcl(tls, p, ts+35844,
 61614  			tcl.XTcl_NewStringObj(tls, zPath, -1), tcl.XTcl_NewIntObj(tls, dirSync), uintptr(0), uintptr(0))
 61615  		tvfsResultCode(tls, p, bp)
 61616  	}
 61617  	if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK {
 61618  		*(*int32)(unsafe.Pointer(bp)) = sqlite3.Xsqlite3OsDelete(tls, (*Testvfs)(unsafe.Pointer((*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData)).FpParent, zPath, dirSync)
 61619  	}
 61620  	return *(*int32)(unsafe.Pointer(bp))
 61621  }
 61622  
 61623  func tvfsAccess(tls *libc.TLS, pVfs uintptr, zPath uintptr, flags int32, pResOut uintptr) int32 {
 61624  	bp := tls.Alloc(4)
 61625  	defer tls.Free(4)
 61626  
 61627  	var p uintptr = (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData
 61628  	if (*Testvfs)(unsafe.Pointer(p)).FpScript != 0 && (*Testvfs)(unsafe.Pointer(p)).Fmask&TESTVFS_ACCESS_MASK != 0 {
 61629  		var zArg uintptr = uintptr(0)
 61630  		if flags == SQLITE_ACCESS_EXISTS {
 61631  			zArg = ts + 38849
 61632  		}
 61633  		if flags == SQLITE_ACCESS_READWRITE {
 61634  			zArg = ts + 38870
 61635  		}
 61636  		if flags == SQLITE_ACCESS_READ {
 61637  			zArg = ts + 38894
 61638  		}
 61639  		tvfsExecTcl(tls, p, ts+35852,
 61640  			tcl.XTcl_NewStringObj(tls, zPath, -1), tcl.XTcl_NewStringObj(tls, zArg, -1), uintptr(0), uintptr(0))
 61641  		if tvfsResultCode(tls, p, bp) != 0 {
 61642  			if *(*int32)(unsafe.Pointer(bp)) != SQLITE_OK {
 61643  				return *(*int32)(unsafe.Pointer(bp))
 61644  			}
 61645  		} else {
 61646  			var interp uintptr = (*Testvfs)(unsafe.Pointer(p)).Finterp
 61647  			if TCL_OK == tcl.XTcl_GetBooleanFromObj(tls, uintptr(0), tcl.XTcl_GetObjResult(tls, interp), pResOut) {
 61648  				return SQLITE_OK
 61649  			}
 61650  		}
 61651  	}
 61652  	return sqlite3.Xsqlite3OsAccess(tls, (*Testvfs)(unsafe.Pointer((*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData)).FpParent, zPath, flags, pResOut)
 61653  }
 61654  
 61655  func tvfsFullPathname(tls *libc.TLS, pVfs uintptr, zPath uintptr, nOut int32, zOut uintptr) int32 {
 61656  	bp := tls.Alloc(4)
 61657  	defer tls.Free(4)
 61658  
 61659  	var p uintptr = (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData
 61660  	if (*Testvfs)(unsafe.Pointer(p)).FpScript != 0 && (*Testvfs)(unsafe.Pointer(p)).Fmask&TESTVFS_FULLPATHNAME_MASK != 0 {
 61661  		tvfsExecTcl(tls, p, ts+35860, tcl.XTcl_NewStringObj(tls, zPath, -1), uintptr(0), uintptr(0), uintptr(0))
 61662  		if tvfsResultCode(tls, p, bp) != 0 {
 61663  			if *(*int32)(unsafe.Pointer(bp)) != SQLITE_OK {
 61664  				return *(*int32)(unsafe.Pointer(bp))
 61665  			}
 61666  		}
 61667  	}
 61668  	return sqlite3.Xsqlite3OsFullPathname(tls, (*Testvfs)(unsafe.Pointer((*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData)).FpParent, zPath, nOut, zOut)
 61669  }
 61670  
 61671  func tvfsRandomness(tls *libc.TLS, pVfs uintptr, nByte int32, zBufOut uintptr) int32 {
 61672  	return sqlite3.Xsqlite3OsRandomness(tls, (*Testvfs)(unsafe.Pointer((*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData)).FpParent, nByte, zBufOut)
 61673  }
 61674  
 61675  func tvfsSleep(tls *libc.TLS, pVfs uintptr, nMicro int32) int32 {
 61676  	return sqlite3.Xsqlite3OsSleep(tls, (*Testvfs)(unsafe.Pointer((*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData)).FpParent, nMicro)
 61677  }
 61678  
 61679  func tvfsCurrentTime(tls *libc.TLS, pVfs uintptr, pTimeOut uintptr) int32 {
 61680  	return (*struct {
 61681  		f func(*libc.TLS, uintptr, uintptr) int32
 61682  	})(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)
 61683  }
 61684  
 61685  func tvfsShmOpen(tls *libc.TLS, pFile uintptr) int32 {
 61686  	bp := tls.Alloc(4)
 61687  	defer tls.Free(4)
 61688  
 61689  	var p uintptr
 61690  	*(*int32)(unsafe.Pointer(bp)) = SQLITE_OK
 61691  	var pBuffer uintptr
 61692  	var pFd uintptr
 61693  
 61694  	pFd = (*TestvfsFile)(unsafe.Pointer(pFile)).FpFd
 61695  	p = (*sqlite3_vfs)(unsafe.Pointer((*TestvfsFd)(unsafe.Pointer(pFd)).FpVfs)).FpAppData
 61696  
 61697  	tcl.XTcl_ResetResult(tls, (*Testvfs)(unsafe.Pointer(p)).Finterp)
 61698  	if (*Testvfs)(unsafe.Pointer(p)).FpScript != 0 && (*Testvfs)(unsafe.Pointer(p)).Fmask&TESTVFS_SHMOPEN_MASK != 0 {
 61699  		tvfsExecTcl(tls, p, ts+38913, tcl.XTcl_NewStringObj(tls, (*TestvfsFd)(unsafe.Pointer(pFd)).FzFilename, -1), uintptr(0), uintptr(0), uintptr(0))
 61700  		if tvfsResultCode(tls, p, bp) != 0 {
 61701  			if *(*int32)(unsafe.Pointer(bp)) != SQLITE_OK {
 61702  				return *(*int32)(unsafe.Pointer(bp))
 61703  			}
 61704  		}
 61705  	}
 61706  
 61707  	if (*Testvfs)(unsafe.Pointer(p)).Fmask&TESTVFS_SHMOPEN_MASK != 0 && tvfsInjectIoerr(tls, p) != 0 {
 61708  		return SQLITE_IOERR
 61709  	}
 61710  
 61711  	for pBuffer = (*Testvfs)(unsafe.Pointer(p)).FpBuffer; pBuffer != 0; pBuffer = (*TestvfsBuffer)(unsafe.Pointer(pBuffer)).FpNext {
 61712  		if 0 == libc.Xstrcmp(tls, (*TestvfsFd)(unsafe.Pointer(pFd)).FzFilename, (*TestvfsBuffer)(unsafe.Pointer(pBuffer)).FzFile) {
 61713  			break
 61714  		}
 61715  	}
 61716  	if !(pBuffer != 0) {
 61717  		var szName int32 = int32(libc.Xstrlen(tls, (*TestvfsFd)(unsafe.Pointer(pFd)).FzFilename))
 61718  		var nByte int32 = int32(uint64(unsafe.Sizeof(TestvfsBuffer{})) + uint64(szName) + uint64(1))
 61719  		pBuffer = tcl.XTcl_Alloc(tls, uint32(nByte))
 61720  		libc.X__builtin___memset_chk(tls, pBuffer, 0, uint64(nByte), libc.X__builtin_object_size(tls, pBuffer, 0))
 61721  		(*TestvfsBuffer)(unsafe.Pointer(pBuffer)).FzFile = pBuffer + 1*8224
 61722  		libc.X__builtin___memcpy_chk(tls, (*TestvfsBuffer)(unsafe.Pointer(pBuffer)).FzFile, (*TestvfsFd)(unsafe.Pointer(pFd)).FzFilename, uint64(szName+1), libc.X__builtin_object_size(tls, (*TestvfsBuffer)(unsafe.Pointer(pBuffer)).FzFile, 0))
 61723  		(*TestvfsBuffer)(unsafe.Pointer(pBuffer)).FpNext = (*Testvfs)(unsafe.Pointer(p)).FpBuffer
 61724  		(*Testvfs)(unsafe.Pointer(p)).FpBuffer = pBuffer
 61725  	}
 61726  
 61727  	(*TestvfsFd)(unsafe.Pointer(pFd)).FpNext = (*TestvfsBuffer)(unsafe.Pointer(pBuffer)).FpFile
 61728  	(*TestvfsBuffer)(unsafe.Pointer(pBuffer)).FpFile = pFd
 61729  	(*TestvfsFd)(unsafe.Pointer(pFd)).FpShm = pBuffer
 61730  	return *(*int32)(unsafe.Pointer(bp))
 61731  }
 61732  
 61733  func tvfsAllocPage(tls *libc.TLS, p uintptr, iPage int32, pgsz int32) {
 61734  	if *(*uintptr)(unsafe.Pointer(p + 16 + uintptr(iPage)*8)) == uintptr(0) {
 61735  		*(*uintptr)(unsafe.Pointer(p + 16 + uintptr(iPage)*8)) = tcl.XTcl_Alloc(tls, uint32(pgsz))
 61736  		libc.X__builtin___memset_chk(tls, *(*uintptr)(unsafe.Pointer(p + 16 + uintptr(iPage)*8)), 0, uint64(pgsz), libc.X__builtin_object_size(tls, *(*uintptr)(unsafe.Pointer(p + 16 + uintptr(iPage)*8)), 0))
 61737  		(*TestvfsBuffer)(unsafe.Pointer(p)).Fpgsz = pgsz
 61738  	}
 61739  }
 61740  
 61741  func tvfsShmMap(tls *libc.TLS, pFile uintptr, iPage int32, pgsz int32, isWrite int32, pp uintptr) int32 {
 61742  	bp := tls.Alloc(4)
 61743  	defer tls.Free(4)
 61744  
 61745  	*(*int32)(unsafe.Pointer(bp)) = SQLITE_OK
 61746  	var pFd uintptr = (*TestvfsFile)(unsafe.Pointer(pFile)).FpFd
 61747  	var p uintptr = (*sqlite3_vfs)(unsafe.Pointer((*TestvfsFd)(unsafe.Pointer(pFd)).FpVfs)).FpAppData
 61748  
 61749  	if (*Testvfs)(unsafe.Pointer(p)).FisFullshm != 0 {
 61750  		var pReal uintptr = (*TestvfsFd)(unsafe.Pointer(pFd)).FpReal
 61751  		return (*struct {
 61752  			f func(*libc.TLS, uintptr, int32, int32, int32, uintptr) int32
 61753  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pReal)).FpMethods)).FxShmMap})).f(tls, pReal, iPage, pgsz, isWrite, pp)
 61754  	}
 61755  
 61756  	if uintptr(0) == (*TestvfsFd)(unsafe.Pointer(pFd)).FpShm {
 61757  		*(*int32)(unsafe.Pointer(bp)) = tvfsShmOpen(tls, pFile)
 61758  		if *(*int32)(unsafe.Pointer(bp)) != SQLITE_OK {
 61759  			return *(*int32)(unsafe.Pointer(bp))
 61760  		}
 61761  	}
 61762  
 61763  	if (*Testvfs)(unsafe.Pointer(p)).FpScript != 0 && (*Testvfs)(unsafe.Pointer(p)).Fmask&TESTVFS_SHMMAP_MASK != 0 {
 61764  		var pArg uintptr = tcl.XTcl_NewObj(tls)
 61765  		(*Tcl_Obj)(unsafe.Pointer(pArg)).FrefCount++
 61766  		tcl.XTcl_ListObjAppendElement(tls, (*Testvfs)(unsafe.Pointer(p)).Finterp, pArg, tcl.XTcl_NewIntObj(tls, iPage))
 61767  		tcl.XTcl_ListObjAppendElement(tls, (*Testvfs)(unsafe.Pointer(p)).Finterp, pArg, tcl.XTcl_NewIntObj(tls, pgsz))
 61768  		tcl.XTcl_ListObjAppendElement(tls, (*Testvfs)(unsafe.Pointer(p)).Finterp, pArg, tcl.XTcl_NewIntObj(tls, isWrite))
 61769  		tvfsExecTcl(tls, p, ts+35937,
 61770  			tcl.XTcl_NewStringObj(tls, (*TestvfsBuffer)(unsafe.Pointer((*TestvfsFd)(unsafe.Pointer(pFd)).FpShm)).FzFile, -1), (*TestvfsFd)(unsafe.Pointer(pFd)).FpShmId, pArg, uintptr(0))
 61771  		tvfsResultCode(tls, p, bp)
 61772  		for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 61773  			if libc.PreDecInt32(&(*Tcl_Obj)(unsafe.Pointer(pArg)).FrefCount, 1) <= 0 {
 61774  				tcl.XTclFreeObj(tls, pArg)
 61775  			}
 61776  		}
 61777  	}
 61778  	if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK && (*Testvfs)(unsafe.Pointer(p)).Fmask&TESTVFS_SHMMAP_MASK != 0 && tvfsInjectIoerr(tls, p) != 0 {
 61779  		*(*int32)(unsafe.Pointer(bp)) = SQLITE_IOERR
 61780  	}
 61781  
 61782  	if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK && isWrite != 0 && !(int32(*(*uintptr)(unsafe.Pointer((*TestvfsFd)(unsafe.Pointer(pFd)).FpShm + 16 + uintptr(iPage)*8))) != 0) {
 61783  		tvfsAllocPage(tls, (*TestvfsFd)(unsafe.Pointer(pFd)).FpShm, iPage, pgsz)
 61784  	}
 61785  	if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK || *(*int32)(unsafe.Pointer(bp)) == SQLITE_READONLY {
 61786  		*(*uintptr)(unsafe.Pointer(pp)) = *(*uintptr)(unsafe.Pointer((*TestvfsFd)(unsafe.Pointer(pFd)).FpShm + 16 + uintptr(iPage)*8))
 61787  	}
 61788  
 61789  	return *(*int32)(unsafe.Pointer(bp))
 61790  }
 61791  
 61792  func tvfsShmLock(tls *libc.TLS, pFile uintptr, ofst int32, n int32, flags int32) int32 {
 61793  	bp := tls.Alloc(100)
 61794  	defer tls.Free(100)
 61795  
 61796  	*(*int32)(unsafe.Pointer(bp + 96)) = SQLITE_OK
 61797  	var pFd uintptr = (*TestvfsFile)(unsafe.Pointer(pFile)).FpFd
 61798  	var p uintptr = (*sqlite3_vfs)(unsafe.Pointer((*TestvfsFd)(unsafe.Pointer(pFd)).FpVfs)).FpAppData
 61799  	var nLock int32
 61800  
 61801  	if (*Testvfs)(unsafe.Pointer(p)).FisFullshm != 0 {
 61802  		var pReal uintptr = (*TestvfsFd)(unsafe.Pointer(pFd)).FpReal
 61803  		return (*struct {
 61804  			f func(*libc.TLS, uintptr, int32, int32, int32) int32
 61805  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pReal)).FpMethods)).FxShmLock})).f(tls, pReal, ofst, n, flags)
 61806  	}
 61807  
 61808  	if (*Testvfs)(unsafe.Pointer(p)).FpScript != 0 && (*Testvfs)(unsafe.Pointer(p)).Fmask&TESTVFS_SHMLOCK_MASK != 0 {
 61809  		sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([80]int8{})), bp+16, ts+17912, libc.VaList(bp, ofst, n))
 61810  		nLock = int32(libc.Xstrlen(tls, bp+16))
 61811  		if flags&SQLITE_SHM_LOCK != 0 {
 61812  			libc.X__builtin___strcpy_chk(tls, bp+16+uintptr(nLock), ts+38922, libc.X__builtin_object_size(tls, bp+16+uintptr(nLock), func() int32 {
 61813  				if X_USE_FORTIFY_LEVEL > 1 {
 61814  					return 1
 61815  				}
 61816  				return 0
 61817  			}()))
 61818  		} else {
 61819  			libc.X__builtin___strcpy_chk(tls, bp+16+uintptr(nLock), ts+38928, libc.X__builtin_object_size(tls, bp+16+uintptr(nLock), func() int32 {
 61820  				if X_USE_FORTIFY_LEVEL > 1 {
 61821  					return 1
 61822  				}
 61823  				return 0
 61824  			}()))
 61825  		}
 61826  		nLock = nLock + int32(libc.Xstrlen(tls, bp+16+uintptr(nLock)))
 61827  		if flags&SQLITE_SHM_SHARED != 0 {
 61828  			libc.X__builtin___strcpy_chk(tls, bp+16+uintptr(nLock), ts+38936, libc.X__builtin_object_size(tls, bp+16+uintptr(nLock), func() int32 {
 61829  				if X_USE_FORTIFY_LEVEL > 1 {
 61830  					return 1
 61831  				}
 61832  				return 0
 61833  			}()))
 61834  		} else {
 61835  			libc.X__builtin___strcpy_chk(tls, bp+16+uintptr(nLock), ts+38944, libc.X__builtin_object_size(tls, bp+16+uintptr(nLock), func() int32 {
 61836  				if X_USE_FORTIFY_LEVEL > 1 {
 61837  					return 1
 61838  				}
 61839  				return 0
 61840  			}()))
 61841  		}
 61842  		tvfsExecTcl(tls, p, ts+35916,
 61843  			tcl.XTcl_NewStringObj(tls, (*TestvfsBuffer)(unsafe.Pointer((*TestvfsFd)(unsafe.Pointer(pFd)).FpShm)).FzFile, -1), (*TestvfsFd)(unsafe.Pointer(pFd)).FpShmId,
 61844  			tcl.XTcl_NewStringObj(tls, bp+16, -1), uintptr(0))
 61845  		tvfsResultCode(tls, p, bp+96)
 61846  	}
 61847  
 61848  	if *(*int32)(unsafe.Pointer(bp + 96)) == SQLITE_OK && (*Testvfs)(unsafe.Pointer(p)).Fmask&TESTVFS_SHMLOCK_MASK != 0 && tvfsInjectIoerr(tls, p) != 0 {
 61849  		*(*int32)(unsafe.Pointer(bp + 96)) = SQLITE_IOERR
 61850  	}
 61851  
 61852  	if *(*int32)(unsafe.Pointer(bp + 96)) == SQLITE_OK {
 61853  		var isLock int32 = flags & SQLITE_SHM_LOCK
 61854  		var isExcl int32 = flags & SQLITE_SHM_EXCLUSIVE
 61855  		var mask u32 = u32((int32(1)<<n - 1) << ofst)
 61856  		if isLock != 0 {
 61857  			var p2 uintptr
 61858  			for p2 = (*TestvfsBuffer)(unsafe.Pointer((*TestvfsFd)(unsafe.Pointer(pFd)).FpShm)).FpFile; p2 != 0; p2 = (*TestvfsFd)(unsafe.Pointer(p2)).FpNext {
 61859  				if p2 == pFd {
 61860  					continue
 61861  				}
 61862  				if (*TestvfsFd)(unsafe.Pointer(p2)).Fexcllock&mask != 0 || isExcl != 0 && (*TestvfsFd)(unsafe.Pointer(p2)).Fsharedlock&mask != 0 {
 61863  					*(*int32)(unsafe.Pointer(bp + 96)) = SQLITE_BUSY
 61864  					break
 61865  				}
 61866  			}
 61867  			if *(*int32)(unsafe.Pointer(bp + 96)) == SQLITE_OK {
 61868  				if isExcl != 0 {
 61869  					*(*u32)(unsafe.Pointer(pFd + 40)) |= mask
 61870  				}
 61871  				if !(isExcl != 0) {
 61872  					*(*u32)(unsafe.Pointer(pFd + 44)) |= mask
 61873  				}
 61874  			}
 61875  		} else {
 61876  			if isExcl != 0 {
 61877  				*(*u32)(unsafe.Pointer(pFd + 40)) &= ^mask
 61878  			}
 61879  			if !(isExcl != 0) {
 61880  				*(*u32)(unsafe.Pointer(pFd + 44)) &= ^mask
 61881  			}
 61882  		}
 61883  	}
 61884  
 61885  	return *(*int32)(unsafe.Pointer(bp + 96))
 61886  }
 61887  
 61888  func tvfsShmBarrier(tls *libc.TLS, pFile uintptr) {
 61889  	var pFd uintptr = (*TestvfsFile)(unsafe.Pointer(pFile)).FpFd
 61890  	var p uintptr = (*sqlite3_vfs)(unsafe.Pointer((*TestvfsFd)(unsafe.Pointer(pFd)).FpVfs)).FpAppData
 61891  
 61892  	if (*Testvfs)(unsafe.Pointer(p)).FpScript != 0 && (*Testvfs)(unsafe.Pointer(p)).Fmask&TESTVFS_SHMBARRIER_MASK != 0 {
 61893  		var z uintptr
 61894  		if (*TestvfsFd)(unsafe.Pointer(pFd)).FpShm != 0 {
 61895  			z = (*TestvfsBuffer)(unsafe.Pointer((*TestvfsFd)(unsafe.Pointer(pFd)).FpShm)).FzFile
 61896  		} else {
 61897  			z = ts + 584
 61898  		}
 61899  		tvfsExecTcl(tls, p, ts+35925, tcl.XTcl_NewStringObj(tls, z, -1), (*TestvfsFd)(unsafe.Pointer(pFd)).FpShmId, uintptr(0), uintptr(0))
 61900  	}
 61901  
 61902  	if (*Testvfs)(unsafe.Pointer(p)).FisFullshm != 0 {
 61903  		var pReal uintptr = (*TestvfsFd)(unsafe.Pointer(pFd)).FpReal
 61904  		(*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)
 61905  		return
 61906  	}
 61907  }
 61908  
 61909  func tvfsShmUnmap(tls *libc.TLS, pFile uintptr, deleteFlag int32) int32 {
 61910  	bp := tls.Alloc(4)
 61911  	defer tls.Free(4)
 61912  
 61913  	*(*int32)(unsafe.Pointer(bp)) = SQLITE_OK
 61914  	var pFd uintptr = (*TestvfsFile)(unsafe.Pointer(pFile)).FpFd
 61915  	var p uintptr = (*sqlite3_vfs)(unsafe.Pointer((*TestvfsFd)(unsafe.Pointer(pFd)).FpVfs)).FpAppData
 61916  	var pBuffer uintptr = (*TestvfsFd)(unsafe.Pointer(pFd)).FpShm
 61917  	var ppFd uintptr
 61918  
 61919  	if (*Testvfs)(unsafe.Pointer(p)).FisFullshm != 0 {
 61920  		var pReal uintptr = (*TestvfsFd)(unsafe.Pointer(pFd)).FpReal
 61921  		return (*struct {
 61922  			f func(*libc.TLS, uintptr, int32) int32
 61923  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pReal)).FpMethods)).FxShmUnmap})).f(tls, pReal, deleteFlag)
 61924  	}
 61925  
 61926  	if !(pBuffer != 0) {
 61927  		return SQLITE_OK
 61928  	}
 61929  
 61930  	if (*Testvfs)(unsafe.Pointer(p)).FpScript != 0 && (*Testvfs)(unsafe.Pointer(p)).Fmask&TESTVFS_SHMCLOSE_MASK != 0 {
 61931  		tvfsExecTcl(tls, p, ts+35906,
 61932  			tcl.XTcl_NewStringObj(tls, (*TestvfsBuffer)(unsafe.Pointer((*TestvfsFd)(unsafe.Pointer(pFd)).FpShm)).FzFile, -1), (*TestvfsFd)(unsafe.Pointer(pFd)).FpShmId, uintptr(0), uintptr(0))
 61933  		tvfsResultCode(tls, p, bp)
 61934  	}
 61935  
 61936  	for ppFd = pBuffer + 8208; *(*uintptr)(unsafe.Pointer(ppFd)) != pFd; ppFd = *(*uintptr)(unsafe.Pointer(ppFd)) + 48 {
 61937  	}
 61938  
 61939  	*(*uintptr)(unsafe.Pointer(ppFd)) = (*TestvfsFd)(unsafe.Pointer(pFd)).FpNext
 61940  	(*TestvfsFd)(unsafe.Pointer(pFd)).FpNext = uintptr(0)
 61941  
 61942  	if (*TestvfsBuffer)(unsafe.Pointer(pBuffer)).FpFile == uintptr(0) {
 61943  		var i int32
 61944  		var pp uintptr
 61945  		for pp = p + 40; *(*uintptr)(unsafe.Pointer(pp)) != pBuffer; pp = *(*uintptr)(unsafe.Pointer(pp)) + 8216 {
 61946  		}
 61947  		*(*uintptr)(unsafe.Pointer(pp)) = (*TestvfsBuffer)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(pp)))).FpNext
 61948  		for i = 0; *(*uintptr)(unsafe.Pointer(pBuffer + 16 + uintptr(i)*8)) != 0; i++ {
 61949  			tcl.XTcl_Free(tls, *(*uintptr)(unsafe.Pointer(pBuffer + 16 + uintptr(i)*8)))
 61950  		}
 61951  		tcl.XTcl_Free(tls, pBuffer)
 61952  	}
 61953  	(*TestvfsFd)(unsafe.Pointer(pFd)).FpShm = uintptr(0)
 61954  
 61955  	return *(*int32)(unsafe.Pointer(bp))
 61956  }
 61957  
 61958  func tvfsFetch(tls *libc.TLS, pFile uintptr, iOfst sqlite3_int64, iAmt int32, pp uintptr) int32 {
 61959  	var pFd uintptr = (*TestvfsFile)(unsafe.Pointer(pFile)).FpFd
 61960  	return sqlite3.Xsqlite3OsFetch(tls, (*TestvfsFd)(unsafe.Pointer(pFd)).FpReal, iOfst, iAmt, pp)
 61961  }
 61962  
 61963  func tvfsUnfetch(tls *libc.TLS, pFile uintptr, iOfst sqlite3_int64, p uintptr) int32 {
 61964  	var pFd uintptr = (*TestvfsFile)(unsafe.Pointer(pFile)).FpFd
 61965  	return sqlite3.Xsqlite3OsUnfetch(tls, (*TestvfsFd)(unsafe.Pointer(pFd)).FpReal, iOfst, p)
 61966  }
 61967  
 61968  func testvfs_obj_cmd(tls *libc.TLS, cd ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 61969  	bp := tls.Alloc(568)
 61970  	defer tls.Free(568)
 61971  
 61972  	var p uintptr = cd
 61973  	*(*[10]TestvfsSubcmd)(unsafe.Pointer(bp + 96)) = [10]TestvfsSubcmd{
 61974  		{FzName: ts + 38955},
 61975  		{FzName: ts + 10138, FeCmd: uint32(1)},
 61976  		{FzName: ts + 38959, FeCmd: uint32(2)},
 61977  		{FzName: ts + 38966, FeCmd: uint32(3)},
 61978  		{FzName: ts + 38972, FeCmd: uint32(7)},
 61979  		{FzName: ts + 38980, FeCmd: uint32(8)},
 61980  		{FzName: ts + 38992, FeCmd: uint32(4)},
 61981  		{FzName: ts + 38999, FeCmd: uint32(5)},
 61982  		{FzName: ts + 39007, FeCmd: uint32(6)},
 61983  		{},
 61984  	}
 61985  
 61986  	if objc < 2 {
 61987  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+1999)
 61988  		return TCL_ERROR
 61989  	}
 61990  	if tcl.XTcl_GetIndexFromObjStruct(tls,
 61991  		interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp+96, int32(unsafe.Sizeof(TestvfsSubcmd{})), ts+39018, 0, bp+256) != 0 {
 61992  		return TCL_ERROR
 61993  	}
 61994  	tcl.XTcl_ResetResult(tls, interp)
 61995  
 61996  	switch (*TestvfsSubcmd)(unsafe.Pointer(bp + 96 + uintptr(*(*int32)(unsafe.Pointer(bp + 256)))*16)).FeCmd {
 61997  	case uint32(0):
 61998  		{
 61999  			var pObj uintptr
 62000  			var rc int32
 62001  			var pBuffer uintptr
 62002  			var zName uintptr
 62003  			if objc != 3 && objc != 4 {
 62004  				tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+39029)
 62005  				return TCL_ERROR
 62006  			}
 62007  			zName = tcl.XTcl_Alloc(tls, uint32((*sqlite3_vfs)(unsafe.Pointer((*Testvfs)(unsafe.Pointer(p)).FpParent)).FmxPathname))
 62008  			rc = (*struct {
 62009  				f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 62010  			})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*Testvfs)(unsafe.Pointer(p)).FpParent)).FxFullPathname})).f(tls,
 62011  				(*Testvfs)(unsafe.Pointer(p)).FpParent, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8))),
 62012  				(*sqlite3_vfs)(unsafe.Pointer((*Testvfs)(unsafe.Pointer(p)).FpParent)).FmxPathname, zName)
 62013  			if rc != SQLITE_OK {
 62014  				tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+39042,
 62015  					tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8))), 0))
 62016  				tcl.XTcl_Free(tls, zName)
 62017  				return TCL_ERROR
 62018  			}
 62019  			for pBuffer = (*Testvfs)(unsafe.Pointer(p)).FpBuffer; pBuffer != 0; pBuffer = (*TestvfsBuffer)(unsafe.Pointer(pBuffer)).FpNext {
 62020  				if 0 == libc.Xstrcmp(tls, (*TestvfsBuffer)(unsafe.Pointer(pBuffer)).FzFile, zName) {
 62021  					break
 62022  				}
 62023  			}
 62024  			tcl.XTcl_Free(tls, zName)
 62025  			if !(pBuffer != 0) {
 62026  				tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+24, ts+39068, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8))), 0))
 62027  				return TCL_ERROR
 62028  			}
 62029  			if objc == 4 {
 62030  				var a uintptr = tcl.XTcl_GetByteArrayFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+260)
 62031  				var pgsz int32 = (*TestvfsBuffer)(unsafe.Pointer(pBuffer)).Fpgsz
 62032  				if pgsz == 0 {
 62033  					pgsz = 65536
 62034  				}
 62035  				for *(*int32)(unsafe.Pointer(bp + 256)) = 0; *(*int32)(unsafe.Pointer(bp + 256))*pgsz < *(*int32)(unsafe.Pointer(bp + 260)); *(*int32)(unsafe.Pointer(bp + 256))++ {
 62036  					var nByte int32 = pgsz
 62037  					tvfsAllocPage(tls, pBuffer, *(*int32)(unsafe.Pointer(bp + 256)), pgsz)
 62038  					if *(*int32)(unsafe.Pointer(bp + 260))-*(*int32)(unsafe.Pointer(bp + 256))*pgsz < pgsz {
 62039  						nByte = *(*int32)(unsafe.Pointer(bp + 260))
 62040  					}
 62041  					libc.X__builtin___memcpy_chk(tls, *(*uintptr)(unsafe.Pointer(pBuffer + 16 + uintptr(*(*int32)(unsafe.Pointer(bp + 256)))*8)), a+uintptr(*(*int32)(unsafe.Pointer(bp + 256))*pgsz), uint64(nByte), libc.X__builtin_object_size(tls, *(*uintptr)(unsafe.Pointer(pBuffer + 16 + uintptr(*(*int32)(unsafe.Pointer(bp + 256)))*8)), 0))
 62042  				}
 62043  			}
 62044  
 62045  			pObj = tcl.XTcl_NewObj(tls)
 62046  			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))++ {
 62047  				var pgsz int32 = (*TestvfsBuffer)(unsafe.Pointer(pBuffer)).Fpgsz
 62048  				if pgsz == 0 {
 62049  					pgsz = 65536
 62050  				}
 62051  				tcl.XTcl_AppendObjToObj(tls, pObj, tcl.XTcl_NewByteArrayObj(tls, *(*uintptr)(unsafe.Pointer(pBuffer + 16 + uintptr(*(*int32)(unsafe.Pointer(bp + 256)))*8)), pgsz))
 62052  			}
 62053  			tcl.XTcl_SetObjResult(tls, interp, pObj)
 62054  			break
 62055  
 62056  		}
 62057  
 62058  	case uint32(2):
 62059  		{
 62060  			*(*uintptr)(unsafe.Pointer(bp + 272)) = uintptr(0)
 62061  			*(*int32)(unsafe.Pointer(bp + 264)) = 0
 62062  			var mask int32 = 0
 62063  			if objc != 3 {
 62064  				tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+32602)
 62065  				return TCL_ERROR
 62066  			}
 62067  			if tcl.XTcl_ListObjGetElements(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+264, bp+272) != 0 {
 62068  				return TCL_ERROR
 62069  			}
 62070  			tcl.XTcl_ResetResult(tls, interp)
 62071  			for *(*int32)(unsafe.Pointer(bp + 256)) = 0; *(*int32)(unsafe.Pointer(bp + 256)) < *(*int32)(unsafe.Pointer(bp + 264)); *(*int32)(unsafe.Pointer(bp + 256))++ {
 62072  				var iMethod int32
 62073  				var zElem uintptr = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 272)) + uintptr(*(*int32)(unsafe.Pointer(bp + 256)))*8)))
 62074  				for iMethod = 0; iMethod < int32(uint64(unsafe.Sizeof(vfsmethod))/uint64(unsafe.Sizeof(VfsMethod{}))); iMethod++ {
 62075  					if libc.Xstrcmp(tls, zElem, vfsmethod[iMethod].FzName) == 0 {
 62076  						mask = mask | vfsmethod[iMethod].Fmask
 62077  						break
 62078  					}
 62079  				}
 62080  				if iMethod == int32(uint64(unsafe.Sizeof(vfsmethod))/uint64(unsafe.Sizeof(VfsMethod{}))) {
 62081  					tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+48, ts+39083, zElem, 0))
 62082  					return TCL_ERROR
 62083  				}
 62084  			}
 62085  			(*Testvfs)(unsafe.Pointer(p)).Fmask = mask
 62086  			break
 62087  
 62088  		}
 62089  
 62090  	case uint32(4):
 62091  		{
 62092  			if objc == 3 {
 62093  				if (*Testvfs)(unsafe.Pointer(p)).FpScript != 0 {
 62094  					for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 62095  						if libc.PreDecInt32(&(*Tcl_Obj)(unsafe.Pointer((*Testvfs)(unsafe.Pointer(p)).FpScript)).FrefCount, 1) <= 0 {
 62096  							tcl.XTclFreeObj(tls, (*Testvfs)(unsafe.Pointer(p)).FpScript)
 62097  						}
 62098  					}
 62099  					(*Testvfs)(unsafe.Pointer(p)).FpScript = uintptr(0)
 62100  				}
 62101  				tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+280)
 62102  				if *(*int32)(unsafe.Pointer(bp + 280)) > 0 {
 62103  					(*Testvfs)(unsafe.Pointer(p)).FpScript = tcl.XTcl_DuplicateObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 62104  					(*Tcl_Obj)(unsafe.Pointer((*Testvfs)(unsafe.Pointer(p)).FpScript)).FrefCount++
 62105  				}
 62106  			} else if objc != 2 {
 62107  				tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+13249)
 62108  				return TCL_ERROR
 62109  			}
 62110  
 62111  			tcl.XTcl_ResetResult(tls, interp)
 62112  			if (*Testvfs)(unsafe.Pointer(p)).FpScript != 0 {
 62113  				tcl.XTcl_SetObjResult(tls, interp, (*Testvfs)(unsafe.Pointer(p)).FpScript)
 62114  			}
 62115  
 62116  			break
 62117  
 62118  		}
 62119  
 62120  	case uint32(8):
 62121  		fallthrough
 62122  	case uint32(3):
 62123  		fallthrough
 62124  	case uint32(7):
 62125  		{
 62126  			var pTest uintptr = uintptr(0)
 62127  			var iRet int32
 62128  
 62129  			switch (*TestvfsSubcmd)(unsafe.Pointer(bp + 96 + uintptr(*(*int32)(unsafe.Pointer(bp + 256)))*16)).FeCmd {
 62130  			case uint32(3):
 62131  				pTest = p + 60
 62132  				break
 62133  			case uint32(7):
 62134  				pTest = p + 72
 62135  				break
 62136  			case uint32(8):
 62137  				pTest = p + 84
 62138  				break
 62139  			default:
 62140  			}
 62141  			iRet = (*TestFaultInject)(unsafe.Pointer(pTest)).FnFail
 62142  			(*TestFaultInject)(unsafe.Pointer(pTest)).FnFail = 0
 62143  			(*TestFaultInject)(unsafe.Pointer(pTest)).FeFault = 0
 62144  			(*TestFaultInject)(unsafe.Pointer(pTest)).FiCnt = 0
 62145  
 62146  			if objc == 4 {
 62147  				if TCL_OK != tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+284) ||
 62148  					TCL_OK != tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+288) {
 62149  					return TCL_ERROR
 62150  				}
 62151  				(*TestFaultInject)(unsafe.Pointer(pTest)).FeFault = func() int32 {
 62152  					if *(*int32)(unsafe.Pointer(bp + 288)) != 0 {
 62153  						return FAULT_INJECT_PERSISTENT
 62154  					}
 62155  					return FAULT_INJECT_TRANSIENT
 62156  				}()
 62157  				(*TestFaultInject)(unsafe.Pointer(pTest)).FiCnt = *(*int32)(unsafe.Pointer(bp + 284))
 62158  			} else if objc != 2 {
 62159  				tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+39100)
 62160  				return TCL_ERROR
 62161  			}
 62162  			tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, iRet))
 62163  			break
 62164  
 62165  		}
 62166  
 62167  	case uint32(1):
 62168  		{
 62169  			tcl.XTcl_DeleteCommand(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))))
 62170  			break
 62171  
 62172  		}
 62173  
 62174  	case uint32(5):
 62175  		{
 62176  			*(*[16]DeviceFlag)(unsafe.Pointer(bp + 304)) = [16]DeviceFlag{
 62177  				{FzName: ts + 39114, FiValue: -1},
 62178  				{FzName: ts + 26507, FiValue: SQLITE_IOCAP_ATOMIC},
 62179  				{FzName: ts + 26514, FiValue: SQLITE_IOCAP_ATOMIC512},
 62180  				{FzName: ts + 26524, FiValue: SQLITE_IOCAP_ATOMIC1K},
 62181  				{FzName: ts + 26533, FiValue: SQLITE_IOCAP_ATOMIC2K},
 62182  				{FzName: ts + 26542, FiValue: SQLITE_IOCAP_ATOMIC4K},
 62183  				{FzName: ts + 26551, FiValue: SQLITE_IOCAP_ATOMIC8K},
 62184  				{FzName: ts + 26560, FiValue: SQLITE_IOCAP_ATOMIC16K},
 62185  				{FzName: ts + 26570, FiValue: SQLITE_IOCAP_ATOMIC32K},
 62186  				{FzName: ts + 26580, FiValue: SQLITE_IOCAP_ATOMIC64K},
 62187  				{FzName: ts + 26590, FiValue: SQLITE_IOCAP_SEQUENTIAL},
 62188  				{FzName: ts + 26601, FiValue: SQLITE_IOCAP_SAFE_APPEND},
 62189  				{FzName: ts + 39122, FiValue: SQLITE_IOCAP_UNDELETABLE_WHEN_OPEN},
 62190  				{FzName: ts + 26613, FiValue: SQLITE_IOCAP_POWERSAFE_OVERWRITE},
 62191  				{FzName: ts + 39144, FiValue: SQLITE_IOCAP_IMMUTABLE},
 62192  				{},
 62193  			}
 62194  			var pRet uintptr
 62195  			var iFlag int32
 62196  
 62197  			if objc > 3 {
 62198  				tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+39154)
 62199  				return TCL_ERROR
 62200  			}
 62201  			if objc == 3 {
 62202  				var j int32
 62203  				var iNew int32 = 0
 62204  				*(*uintptr)(unsafe.Pointer(bp + 296)) = uintptr(0)
 62205  				*(*int32)(unsafe.Pointer(bp + 292)) = 0
 62206  
 62207  				if tcl.XTcl_ListObjGetElements(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+292, bp+296) != 0 {
 62208  					return TCL_ERROR
 62209  				}
 62210  
 62211  				for j = 0; j < *(*int32)(unsafe.Pointer(bp + 292)); j++ {
 62212  					*(*int32)(unsafe.Pointer(bp + 560)) = 0
 62213  					if tcl.XTcl_GetIndexFromObjStruct(tls, interp, *(*uintptr)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 296)) + uintptr(j)*8)), bp+304,
 62214  						int32(unsafe.Sizeof(DeviceFlag{})), ts+17631, 0, bp+560) != 0 {
 62215  						return TCL_ERROR
 62216  					}
 62217  					if (*DeviceFlag)(unsafe.Pointer(bp+304+uintptr(*(*int32)(unsafe.Pointer(bp + 560)))*16)).FiValue < 0 && *(*int32)(unsafe.Pointer(bp + 292)) > 1 {
 62218  						tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+72, ts+39166, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8))), 0))
 62219  						return TCL_ERROR
 62220  					}
 62221  					iNew = iNew | (*DeviceFlag)(unsafe.Pointer(bp+304+uintptr(*(*int32)(unsafe.Pointer(bp + 560)))*16)).FiValue
 62222  				}
 62223  
 62224  				(*Testvfs)(unsafe.Pointer(p)).FiDevchar = iNew | 0x10000000
 62225  			}
 62226  
 62227  			pRet = tcl.XTcl_NewObj(tls)
 62228  			for iFlag = 0; uint64(iFlag) < uint64(unsafe.Sizeof([16]DeviceFlag{}))/uint64(unsafe.Sizeof(DeviceFlag{})); iFlag++ {
 62229  				if (*Testvfs)(unsafe.Pointer(p)).FiDevchar&(*DeviceFlag)(unsafe.Pointer(bp+304+uintptr(iFlag)*16)).FiValue != 0 {
 62230  					tcl.XTcl_ListObjAppendElement(tls,
 62231  						interp, pRet, tcl.XTcl_NewStringObj(tls, (*DeviceFlag)(unsafe.Pointer(bp+304+uintptr(iFlag)*16)).FzName, -1))
 62232  				}
 62233  			}
 62234  			tcl.XTcl_SetObjResult(tls, interp, pRet)
 62235  
 62236  			break
 62237  
 62238  		}
 62239  
 62240  	case uint32(6):
 62241  		{
 62242  			if objc > 3 {
 62243  				tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+39178)
 62244  				return TCL_ERROR
 62245  			}
 62246  			if objc == 3 {
 62247  				*(*int32)(unsafe.Pointer(bp + 564)) = 0
 62248  				if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+564) != 0 {
 62249  					return TCL_ERROR
 62250  				}
 62251  				(*Testvfs)(unsafe.Pointer(p)).FiSectorsize = *(*int32)(unsafe.Pointer(bp + 564))
 62252  			}
 62253  			tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, (*Testvfs)(unsafe.Pointer(p)).FiSectorsize))
 62254  			break
 62255  
 62256  		}
 62257  	}
 62258  
 62259  	return TCL_OK
 62260  }
 62261  
 62262  type TestvfsSubcmd = struct {
 62263  	FzName       uintptr
 62264  	FeCmd        uint32
 62265  	F__ccgo_pad1 [4]byte
 62266  }
 62267  
 62268  type VfsMethod = struct {
 62269  	FzName       uintptr
 62270  	Fmask        int32
 62271  	F__ccgo_pad1 [4]byte
 62272  }
 62273  
 62274  var vfsmethod = [18]VfsMethod{
 62275  	{FzName: ts + 38913, Fmask: TESTVFS_SHMOPEN_MASK},
 62276  	{FzName: ts + 35916, Fmask: TESTVFS_SHMLOCK_MASK},
 62277  	{FzName: ts + 35925, Fmask: TESTVFS_SHMBARRIER_MASK},
 62278  	{FzName: ts + 35906, Fmask: TESTVFS_SHMCLOSE_MASK},
 62279  	{FzName: ts + 35937, Fmask: TESTVFS_SHMMAP_MASK},
 62280  	{FzName: ts + 27947, Fmask: TESTVFS_SYNC_MASK},
 62281  	{FzName: ts + 35844, Fmask: TESTVFS_DELETE_MASK},
 62282  	{FzName: ts + 35752, Fmask: TESTVFS_WRITE_MASK},
 62283  	{FzName: ts + 35746, Fmask: TESTVFS_READ_MASK},
 62284  	{FzName: ts + 35759, Fmask: TESTVFS_TRUNCATE_MASK},
 62285  	{FzName: ts + 27525, Fmask: TESTVFS_OPEN_MASK},
 62286  	{FzName: ts + 35739, Fmask: TESTVFS_CLOSE_MASK},
 62287  	{FzName: ts + 35852, Fmask: TESTVFS_ACCESS_MASK},
 62288  	{FzName: ts + 35860, Fmask: TESTVFS_FULLPATHNAME_MASK},
 62289  	{FzName: ts + 35785, Fmask: TESTVFS_UNLOCK_MASK},
 62290  	{FzName: ts + 35779, Fmask: TESTVFS_LOCK_MASK},
 62291  	{FzName: ts + 38779, Fmask: TESTVFS_CKLOCK_MASK},
 62292  	{FzName: ts + 35807, Fmask: TESTVFS_FCNTL_MASK},
 62293  }
 62294  
 62295  func testvfs_obj_del(tls *libc.TLS, cd ClientData) {
 62296  	var p uintptr = cd
 62297  	if (*Testvfs)(unsafe.Pointer(p)).FpScript != 0 {
 62298  		for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 62299  			if libc.PreDecInt32(&(*Tcl_Obj)(unsafe.Pointer((*Testvfs)(unsafe.Pointer(p)).FpScript)).FrefCount, 1) <= 0 {
 62300  				tcl.XTclFreeObj(tls, (*Testvfs)(unsafe.Pointer(p)).FpScript)
 62301  			}
 62302  		}
 62303  	}
 62304  	sqlite3.Xsqlite3_vfs_unregister(tls, (*Testvfs)(unsafe.Pointer(p)).FpVfs)
 62305  	libc.X__builtin___memset_chk(tls, (*Testvfs)(unsafe.Pointer(p)).FpVfs, 0, uint64(unsafe.Sizeof(sqlite3_vfs{})), libc.X__builtin_object_size(tls, (*Testvfs)(unsafe.Pointer(p)).FpVfs, 0))
 62306  	tcl.XTcl_Free(tls, (*Testvfs)(unsafe.Pointer(p)).FpVfs)
 62307  	libc.X__builtin___memset_chk(tls, p, 0, uint64(unsafe.Sizeof(Testvfs{})), libc.X__builtin_object_size(tls, p, 0))
 62308  	tcl.XTcl_Free(tls, p)
 62309  }
 62310  
 62311  func testvfs_cmd(tls *libc.TLS, cd ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 62312  	bp := tls.Alloc(28)
 62313  	defer tls.Free(28)
 62314  
 62315  	var p uintptr
 62316  	var pVfs uintptr
 62317  	var zVfs uintptr
 62318  	var nByte int32
 62319  
 62320  	var i int32
 62321  
 62322  	var zSwitch uintptr
 62323  	*(*int32)(unsafe.Pointer(bp + 4)) = 0
 62324  	*(*int32)(unsafe.Pointer(bp + 24)) = 0
 62325  	*(*int32)(unsafe.Pointer(bp + 8)) = 0
 62326  	*(*int32)(unsafe.Pointer(bp + 12)) = 0
 62327  	*(*int32)(unsafe.Pointer(bp + 16)) = -1
 62328  	*(*int32)(unsafe.Pointer(bp + 20)) = 3
 62329  
 62330  	if !(objc < 2 || 0 != objc%2) {
 62331  		goto __1
 62332  	}
 62333  	goto bad_args
 62334  __1:
 62335  	;
 62336  	i = 2
 62337  __2:
 62338  	if !(i < objc) {
 62339  		goto __4
 62340  	}
 62341  	zSwitch = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(i)*8)), bp)
 62342  
 62343  	if !(*(*int32)(unsafe.Pointer(bp)) > 2 && 0 == libc.Xstrncmp(tls, ts+39186, zSwitch, uint64(*(*int32)(unsafe.Pointer(bp))))) {
 62344  		goto __5
 62345  	}
 62346  	if !(tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(i+1)*8)), bp+4) != 0) {
 62347  		goto __7
 62348  	}
 62349  	return TCL_ERROR
 62350  __7:
 62351  	;
 62352  	if !(*(*int32)(unsafe.Pointer(bp + 4)) != 0) {
 62353  		goto __8
 62354  	}
 62355  	*(*int32)(unsafe.Pointer(bp + 24)) = 0
 62356  __8:
 62357  	;
 62358  	goto __6
 62359  __5:
 62360  	if !(*(*int32)(unsafe.Pointer(bp)) > 2 && 0 == libc.Xstrncmp(tls, ts+26883, zSwitch, uint64(*(*int32)(unsafe.Pointer(bp))))) {
 62361  		goto __9
 62362  	}
 62363  	if !(tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(i+1)*8)), bp+8) != 0) {
 62364  		goto __11
 62365  	}
 62366  	return TCL_ERROR
 62367  __11:
 62368  	;
 62369  	goto __10
 62370  __9:
 62371  	if !(*(*int32)(unsafe.Pointer(bp)) > 2 && 0 == libc.Xstrncmp(tls, ts+39193, zSwitch, uint64(*(*int32)(unsafe.Pointer(bp))))) {
 62372  		goto __12
 62373  	}
 62374  	if !(tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(i+1)*8)), bp+12) != 0) {
 62375  		goto __14
 62376  	}
 62377  	return TCL_ERROR
 62378  __14:
 62379  	;
 62380  	goto __13
 62381  __12:
 62382  	if !(*(*int32)(unsafe.Pointer(bp)) > 2 && 0 == libc.Xstrncmp(tls, ts+39203, zSwitch, uint64(*(*int32)(unsafe.Pointer(bp))))) {
 62383  		goto __15
 62384  	}
 62385  	if !(tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(i+1)*8)), bp+16) != 0) {
 62386  		goto __17
 62387  	}
 62388  	return TCL_ERROR
 62389  __17:
 62390  	;
 62391  	goto __16
 62392  __15:
 62393  	if !(*(*int32)(unsafe.Pointer(bp)) > 2 && 0 == libc.Xstrncmp(tls, ts+39215, zSwitch, uint64(*(*int32)(unsafe.Pointer(bp))))) {
 62394  		goto __18
 62395  	}
 62396  	if !(tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(i+1)*8)), bp+20) != 0) {
 62397  		goto __20
 62398  	}
 62399  	return TCL_ERROR
 62400  __20:
 62401  	;
 62402  	goto __19
 62403  __18:
 62404  	if !(*(*int32)(unsafe.Pointer(bp)) > 2 && 0 == libc.Xstrncmp(tls, ts+39225, zSwitch, uint64(*(*int32)(unsafe.Pointer(bp))))) {
 62405  		goto __21
 62406  	}
 62407  	if !(tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(i+1)*8)), bp+24) != 0) {
 62408  		goto __23
 62409  	}
 62410  	return TCL_ERROR
 62411  __23:
 62412  	;
 62413  	if !(*(*int32)(unsafe.Pointer(bp + 24)) != 0) {
 62414  		goto __24
 62415  	}
 62416  	*(*int32)(unsafe.Pointer(bp + 4)) = 0
 62417  __24:
 62418  	;
 62419  	goto __22
 62420  __21:
 62421  	goto bad_args
 62422  __22:
 62423  	;
 62424  __19:
 62425  	;
 62426  __16:
 62427  	;
 62428  __13:
 62429  	;
 62430  __10:
 62431  	;
 62432  __6:
 62433  	;
 62434  	goto __3
 62435  __3:
 62436  	i = i + 2
 62437  	goto __2
 62438  	goto __4
 62439  __4:
 62440  	;
 62441  	if !(uint64(*(*int32)(unsafe.Pointer(bp + 12))) < uint64(unsafe.Sizeof(TestvfsFile{}))) {
 62442  		goto __25
 62443  	}
 62444  	*(*int32)(unsafe.Pointer(bp + 12)) = int32(unsafe.Sizeof(TestvfsFile{}))
 62445  __25:
 62446  	;
 62447  	zVfs = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 62448  	nByte = int32(uint64(unsafe.Sizeof(Testvfs{})) + uint64(int32(libc.Xstrlen(tls, zVfs))) + uint64(1))
 62449  	p = tcl.XTcl_Alloc(tls, uint32(nByte))
 62450  	libc.X__builtin___memset_chk(tls, p, 0, uint64(nByte), libc.X__builtin_object_size(tls, p, 0))
 62451  	(*Testvfs)(unsafe.Pointer(p)).FiDevchar = -1
 62452  	(*Testvfs)(unsafe.Pointer(p)).FiSectorsize = -1
 62453  
 62454  	tcl.XTcl_CreateObjCommand(tls, interp, zVfs, *(*uintptr)(unsafe.Pointer(&struct {
 62455  		f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
 62456  	}{testvfs_obj_cmd})), p, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, ClientData) }{testvfs_obj_del})))
 62457  	(*Testvfs)(unsafe.Pointer(p)).FpParent = sqlite3.Xsqlite3_vfs_find(tls, uintptr(0))
 62458  	(*Testvfs)(unsafe.Pointer(p)).Finterp = interp
 62459  
 62460  	(*Testvfs)(unsafe.Pointer(p)).FzName = p + 1*104
 62461  	libc.X__builtin___memcpy_chk(tls, (*Testvfs)(unsafe.Pointer(p)).FzName, zVfs, libc.Xstrlen(tls, zVfs)+uint64(1), libc.X__builtin_object_size(tls, (*Testvfs)(unsafe.Pointer(p)).FzName, 0))
 62462  
 62463  	pVfs = tcl.XTcl_Alloc(tls, uint32(unsafe.Sizeof(sqlite3_vfs{})))
 62464  	libc.X__builtin___memcpy_chk(tls, pVfs, uintptr(unsafe.Pointer(&tvfs_vfs)), uint64(unsafe.Sizeof(sqlite3_vfs{})), libc.X__builtin_object_size(tls, pVfs, 0))
 62465  	(*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData = p
 62466  	(*sqlite3_vfs)(unsafe.Pointer(pVfs)).FiVersion = *(*int32)(unsafe.Pointer(bp + 20))
 62467  	(*sqlite3_vfs)(unsafe.Pointer(pVfs)).FzName = (*Testvfs)(unsafe.Pointer(p)).FzName
 62468  	(*sqlite3_vfs)(unsafe.Pointer(pVfs)).FmxPathname = (*sqlite3_vfs)(unsafe.Pointer((*Testvfs)(unsafe.Pointer(p)).FpParent)).FmxPathname
 62469  	if !(*(*int32)(unsafe.Pointer(bp + 16)) >= 0 && *(*int32)(unsafe.Pointer(bp + 16)) < (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FmxPathname) {
 62470  		goto __26
 62471  	}
 62472  	(*sqlite3_vfs)(unsafe.Pointer(pVfs)).FmxPathname = *(*int32)(unsafe.Pointer(bp + 16))
 62473  __26:
 62474  	;
 62475  	(*sqlite3_vfs)(unsafe.Pointer(pVfs)).FszOsFile = *(*int32)(unsafe.Pointer(bp + 12))
 62476  	(*Testvfs)(unsafe.Pointer(p)).FpVfs = pVfs
 62477  	(*Testvfs)(unsafe.Pointer(p)).FisNoshm = *(*int32)(unsafe.Pointer(bp + 4))
 62478  	(*Testvfs)(unsafe.Pointer(p)).FisFullshm = *(*int32)(unsafe.Pointer(bp + 24))
 62479  	(*Testvfs)(unsafe.Pointer(p)).Fmask = TESTVFS_ALL_MASK
 62480  
 62481  	sqlite3.Xsqlite3_vfs_register(tls, pVfs, *(*int32)(unsafe.Pointer(bp + 8)))
 62482  
 62483  	return TCL_OK
 62484  
 62485  bad_args:
 62486  	tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+39234)
 62487  	return TCL_ERROR
 62488  }
 62489  
 62490  var tvfs_vfs = sqlite3_vfs{
 62491  	FiVersion:      3,
 62492  	FxOpen:         0,
 62493  	FxDelete:       0,
 62494  	FxAccess:       0,
 62495  	FxFullPathname: 0,
 62496  	FxRandomness:   0,
 62497  	FxSleep:        0,
 62498  	FxCurrentTime:  0,
 62499  }
 62500  
 62501  func test_vfs_shmlock(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 62502  	bp := tls.Alloc(88)
 62503  	defer tls.Free(88)
 62504  
 62505  	*(*[3]uintptr)(unsafe.Pointer(bp + 8)) = [3]uintptr{ts + 39338, ts + 13978, uintptr(0)}
 62506  	*(*[3]uintptr)(unsafe.Pointer(bp + 40)) = [3]uintptr{ts + 39345, ts + 39350, uintptr(0)}
 62507  	*(*uintptr)(unsafe.Pointer(bp)) = uintptr(0)
 62508  	var rc int32 = SQLITE_OK
 62509  	var zDbname uintptr = uintptr(0)
 62510  	*(*int32)(unsafe.Pointer(bp + 32)) = 0
 62511  	*(*int32)(unsafe.Pointer(bp + 64)) = 0
 62512  	*(*int32)(unsafe.Pointer(bp + 68)) = 0
 62513  	*(*int32)(unsafe.Pointer(bp + 72)) = 0
 62514  
 62515  	if objc != 7 {
 62516  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv,
 62517  			ts+39357)
 62518  		return TCL_ERROR
 62519  	}
 62520  
 62521  	zDbname = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 62522  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 ||
 62523  		tcl.XTcl_GetIndexFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+8, ts+39409, 0, bp+32) != 0 ||
 62524  		tcl.XTcl_GetIndexFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 4*8)), bp+40, ts+39409, 0, bp+64) != 0 ||
 62525  		tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 5*8)), bp+68) != 0 ||
 62526  		tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 6*8)), bp+72) != 0 {
 62527  		return TCL_ERROR
 62528  	}
 62529  
 62530  	sqlite3.Xsqlite3_file_control(tls, *(*uintptr)(unsafe.Pointer(bp)), zDbname, SQLITE_FCNTL_FILE_POINTER, bp+80)
 62531  	if *(*uintptr)(unsafe.Pointer(bp + 80)) == uintptr(0) {
 62532  		return TCL_ERROR
 62533  	}
 62534  	rc = (*struct {
 62535  		f func(*libc.TLS, uintptr, int32, int32, int32) int32
 62536  	})(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)),
 62537  		func() int32 {
 62538  			if *(*int32)(unsafe.Pointer(bp + 32)) == 0 {
 62539  				return SQLITE_SHM_SHARED
 62540  			}
 62541  			return SQLITE_SHM_EXCLUSIVE
 62542  		}()|
 62543  			func() int32 {
 62544  				if *(*int32)(unsafe.Pointer(bp + 64)) == 0 {
 62545  					return SQLITE_SHM_LOCK
 62546  				}
 62547  				return SQLITE_SHM_UNLOCK
 62548  			}())
 62549  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3ErrName(tls, rc), -1))
 62550  	return TCL_OK
 62551  }
 62552  
 62553  func test_vfs_set_readmark(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 62554  	bp := tls.Alloc(48)
 62555  	defer tls.Free(48)
 62556  
 62557  	*(*uintptr)(unsafe.Pointer(bp + 16)) = uintptr(0)
 62558  	var rc int32 = SQLITE_OK
 62559  	var zDbname uintptr = uintptr(0)
 62560  	*(*int32)(unsafe.Pointer(bp + 24)) = 0
 62561  	*(*int32)(unsafe.Pointer(bp + 28)) = -1
 62562  
 62563  	*(*uintptr)(unsafe.Pointer(bp + 40)) = uintptr(0)
 62564  	var aShm uintptr
 62565  	var iOff int32
 62566  
 62567  	if objc != 4 && objc != 5 {
 62568  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+39413)
 62569  		return TCL_ERROR
 62570  	}
 62571  
 62572  	zDbname = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 62573  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+16) != 0 ||
 62574  		tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+24) != 0 ||
 62575  		objc == 5 && tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 4*8)), bp+28) != 0 {
 62576  		return TCL_ERROR
 62577  	}
 62578  
 62579  	sqlite3.Xsqlite3_file_control(tls, *(*uintptr)(unsafe.Pointer(bp + 16)), zDbname, SQLITE_FCNTL_FILE_POINTER, bp+32)
 62580  	if *(*uintptr)(unsafe.Pointer(bp + 32)) == uintptr(0) {
 62581  		return TCL_ERROR
 62582  	}
 62583  	rc = (*struct {
 62584  		f func(*libc.TLS, uintptr, int32, int32, int32, uintptr) int32
 62585  	})(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)
 62586  	if rc != SQLITE_OK {
 62587  		tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3ErrName(tls, rc), -1))
 62588  		return TCL_ERROR
 62589  	}
 62590  	if *(*uintptr)(unsafe.Pointer(bp + 40)) == uintptr(0) {
 62591  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+39436, 0))
 62592  		return TCL_ERROR
 62593  	}
 62594  	aShm = *(*uintptr)(unsafe.Pointer(bp + 40))
 62595  	iOff = 12*2 + 1 + *(*int32)(unsafe.Pointer(bp + 24))
 62596  
 62597  	if objc == 5 {
 62598  		*(*u32)(unsafe.Pointer(aShm + uintptr(iOff)*4)) = u32(*(*int32)(unsafe.Pointer(bp + 28)))
 62599  	}
 62600  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, int32(*(*u32)(unsafe.Pointer(aShm + uintptr(iOff)*4)))))
 62601  
 62602  	return TCL_OK
 62603  }
 62604  
 62605  func Sqlitetestvfs_Init(tls *libc.TLS, interp uintptr) int32 {
 62606  	tcl.XTcl_CreateObjCommand(tls, interp, ts+39460, *(*uintptr)(unsafe.Pointer(&struct {
 62607  		f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
 62608  	}{testvfs_cmd})), uintptr(0), uintptr(0))
 62609  	tcl.XTcl_CreateObjCommand(tls, interp, ts+39468, *(*uintptr)(unsafe.Pointer(&struct {
 62610  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 62611  	}{test_vfs_shmlock})), uintptr(0), uintptr(0))
 62612  	tcl.XTcl_CreateObjCommand(tls, interp, ts+39480, *(*uintptr)(unsafe.Pointer(&struct {
 62613  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 62614  	}{test_vfs_set_readmark})), uintptr(0), uintptr(0))
 62615  	return TCL_OK
 62616  }
 62617  
 62618  type TestWindow1 = struct {
 62619  	FxStep    uintptr
 62620  	FxFinal   uintptr
 62621  	FxValue   uintptr
 62622  	FxInverse uintptr
 62623  	Finterp   uintptr
 62624  }
 62625  
 62626  type TestWindow = TestWindow1
 62627  
 62628  type TestWindowCtx1 = struct{ FpVal uintptr }
 62629  
 62630  type TestWindowCtx = TestWindowCtx1
 62631  
 62632  func doTestWindowStep(tls *libc.TLS, bInverse int32, ctx uintptr, nArg int32, apArg uintptr) {
 62633  	var i int32
 62634  	var p uintptr = sqlite3.Xsqlite3_user_data(tls, ctx)
 62635  	var pEval uintptr = tcl.XTcl_DuplicateObj(tls, func() uintptr {
 62636  		if bInverse != 0 {
 62637  			return (*TestWindow)(unsafe.Pointer(p)).FxInverse
 62638  		}
 62639  		return (*TestWindow)(unsafe.Pointer(p)).FxStep
 62640  	}())
 62641  	var pCtx uintptr = sqlite3.Xsqlite3_aggregate_context(tls, ctx, int32(unsafe.Sizeof(TestWindowCtx{})))
 62642  
 62643  	(*Tcl_Obj)(unsafe.Pointer(pEval)).FrefCount++
 62644  	if pCtx != 0 {
 62645  		var zResult uintptr
 62646  		var rc int32
 62647  		if (*TestWindowCtx)(unsafe.Pointer(pCtx)).FpVal != 0 {
 62648  			tcl.XTcl_ListObjAppendElement(tls, (*TestWindow)(unsafe.Pointer(p)).Finterp, pEval, tcl.XTcl_DuplicateObj(tls, (*TestWindowCtx)(unsafe.Pointer(pCtx)).FpVal))
 62649  		} else {
 62650  			tcl.XTcl_ListObjAppendElement(tls, (*TestWindow)(unsafe.Pointer(p)).Finterp, pEval, tcl.XTcl_NewStringObj(tls, ts+584, -1))
 62651  		}
 62652  		for i = 0; i < nArg; i++ {
 62653  			var pArg uintptr
 62654  			pArg = tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(apArg + uintptr(i)*8))), -1)
 62655  			tcl.XTcl_ListObjAppendElement(tls, (*TestWindow)(unsafe.Pointer(p)).Finterp, pEval, pArg)
 62656  		}
 62657  		rc = tcl.XTcl_EvalObjEx(tls, (*TestWindow)(unsafe.Pointer(p)).Finterp, pEval, TCL_EVAL_GLOBAL)
 62658  		if rc != TCL_OK {
 62659  			zResult = tcl.XTcl_GetStringResult(tls, (*TestWindow)(unsafe.Pointer(p)).Finterp)
 62660  			sqlite3.Xsqlite3_result_error(tls, ctx, zResult, -1)
 62661  		} else {
 62662  			if (*TestWindowCtx)(unsafe.Pointer(pCtx)).FpVal != 0 {
 62663  				for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 62664  					if libc.PreDecInt32(&(*Tcl_Obj)(unsafe.Pointer((*TestWindowCtx)(unsafe.Pointer(pCtx)).FpVal)).FrefCount, 1) <= 0 {
 62665  						tcl.XTclFreeObj(tls, (*TestWindowCtx)(unsafe.Pointer(pCtx)).FpVal)
 62666  					}
 62667  				}
 62668  			}
 62669  			(*TestWindowCtx)(unsafe.Pointer(pCtx)).FpVal = tcl.XTcl_DuplicateObj(tls, tcl.XTcl_GetObjResult(tls, (*TestWindow)(unsafe.Pointer(p)).Finterp))
 62670  			(*Tcl_Obj)(unsafe.Pointer((*TestWindowCtx)(unsafe.Pointer(pCtx)).FpVal)).FrefCount++
 62671  		}
 62672  	}
 62673  	for __ccgo1 := true; __ccgo1; __ccgo1 = 0 != 0 {
 62674  		if libc.PreDecInt32(&(*Tcl_Obj)(unsafe.Pointer(pEval)).FrefCount, 1) <= 0 {
 62675  			tcl.XTclFreeObj(tls, pEval)
 62676  		}
 62677  	}
 62678  }
 62679  
 62680  func doTestWindowFinalize(tls *libc.TLS, bValue int32, ctx uintptr) {
 62681  	var p uintptr = sqlite3.Xsqlite3_user_data(tls, ctx)
 62682  	var pEval uintptr = tcl.XTcl_DuplicateObj(tls, func() uintptr {
 62683  		if bValue != 0 {
 62684  			return (*TestWindow)(unsafe.Pointer(p)).FxValue
 62685  		}
 62686  		return (*TestWindow)(unsafe.Pointer(p)).FxFinal
 62687  	}())
 62688  	var pCtx uintptr = sqlite3.Xsqlite3_aggregate_context(tls, ctx, int32(unsafe.Sizeof(TestWindowCtx{})))
 62689  
 62690  	(*Tcl_Obj)(unsafe.Pointer(pEval)).FrefCount++
 62691  	if pCtx != 0 {
 62692  		var zResult uintptr
 62693  		var rc int32
 62694  		if (*TestWindowCtx)(unsafe.Pointer(pCtx)).FpVal != 0 {
 62695  			tcl.XTcl_ListObjAppendElement(tls, (*TestWindow)(unsafe.Pointer(p)).Finterp, pEval, tcl.XTcl_DuplicateObj(tls, (*TestWindowCtx)(unsafe.Pointer(pCtx)).FpVal))
 62696  		} else {
 62697  			tcl.XTcl_ListObjAppendElement(tls, (*TestWindow)(unsafe.Pointer(p)).Finterp, pEval, tcl.XTcl_NewStringObj(tls, ts+584, -1))
 62698  		}
 62699  
 62700  		rc = tcl.XTcl_EvalObjEx(tls, (*TestWindow)(unsafe.Pointer(p)).Finterp, pEval, TCL_EVAL_GLOBAL)
 62701  		zResult = tcl.XTcl_GetStringResult(tls, (*TestWindow)(unsafe.Pointer(p)).Finterp)
 62702  		if rc != TCL_OK {
 62703  			sqlite3.Xsqlite3_result_error(tls, ctx, zResult, -1)
 62704  		} else {
 62705  			sqlite3.Xsqlite3_result_text(tls, ctx, zResult, -1, libc.UintptrFromInt32(-1))
 62706  		}
 62707  
 62708  		if bValue == 0 {
 62709  			if (*TestWindowCtx)(unsafe.Pointer(pCtx)).FpVal != 0 {
 62710  				for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 62711  					if libc.PreDecInt32(&(*Tcl_Obj)(unsafe.Pointer((*TestWindowCtx)(unsafe.Pointer(pCtx)).FpVal)).FrefCount, 1) <= 0 {
 62712  						tcl.XTclFreeObj(tls, (*TestWindowCtx)(unsafe.Pointer(pCtx)).FpVal)
 62713  					}
 62714  				}
 62715  			}
 62716  			(*TestWindowCtx)(unsafe.Pointer(pCtx)).FpVal = uintptr(0)
 62717  		}
 62718  	}
 62719  	for __ccgo1 := true; __ccgo1; __ccgo1 = 0 != 0 {
 62720  		if libc.PreDecInt32(&(*Tcl_Obj)(unsafe.Pointer(pEval)).FrefCount, 1) <= 0 {
 62721  			tcl.XTclFreeObj(tls, pEval)
 62722  		}
 62723  	}
 62724  }
 62725  
 62726  func testWindowStep(tls *libc.TLS, ctx uintptr, nArg int32, apArg uintptr) {
 62727  	doTestWindowStep(tls, 0, ctx, nArg, apArg)
 62728  }
 62729  
 62730  func testWindowInverse(tls *libc.TLS, ctx uintptr, nArg int32, apArg uintptr) {
 62731  	doTestWindowStep(tls, 1, ctx, nArg, apArg)
 62732  }
 62733  
 62734  func testWindowFinal(tls *libc.TLS, ctx uintptr) {
 62735  	doTestWindowFinalize(tls, 0, ctx)
 62736  }
 62737  
 62738  func testWindowValue(tls *libc.TLS, ctx uintptr) {
 62739  	doTestWindowFinalize(tls, 1, ctx)
 62740  }
 62741  
 62742  func testWindowDestroy(tls *libc.TLS, pCtx uintptr) {
 62743  	tcl.XTcl_Free(tls, pCtx)
 62744  }
 62745  
 62746  func test_create_window(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 62747  	bp := tls.Alloc(8)
 62748  	defer tls.Free(8)
 62749  
 62750  	var pNew uintptr
 62751  
 62752  	var zName uintptr
 62753  	var rc int32
 62754  
 62755  	if objc != 7 {
 62756  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+39497)
 62757  		return TCL_ERROR
 62758  	}
 62759  
 62760  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 62761  		return TCL_ERROR
 62762  	}
 62763  	zName = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 62764  	pNew = tcl.XTcl_Alloc(tls, uint32(unsafe.Sizeof(TestWindow{})))
 62765  	libc.X__builtin___memset_chk(tls, pNew, 0, uint64(unsafe.Sizeof(TestWindow{})), libc.X__builtin_object_size(tls, pNew, 0))
 62766  	(*TestWindow)(unsafe.Pointer(pNew)).FxStep = tcl.XTcl_DuplicateObj(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)))
 62767  	(*TestWindow)(unsafe.Pointer(pNew)).FxFinal = tcl.XTcl_DuplicateObj(tls, *(*uintptr)(unsafe.Pointer(objv + 4*8)))
 62768  	(*TestWindow)(unsafe.Pointer(pNew)).FxValue = tcl.XTcl_DuplicateObj(tls, *(*uintptr)(unsafe.Pointer(objv + 5*8)))
 62769  	(*TestWindow)(unsafe.Pointer(pNew)).FxInverse = tcl.XTcl_DuplicateObj(tls, *(*uintptr)(unsafe.Pointer(objv + 6*8)))
 62770  	(*TestWindow)(unsafe.Pointer(pNew)).Finterp = interp
 62771  
 62772  	(*Tcl_Obj)(unsafe.Pointer((*TestWindow)(unsafe.Pointer(pNew)).FxStep)).FrefCount++
 62773  	(*Tcl_Obj)(unsafe.Pointer((*TestWindow)(unsafe.Pointer(pNew)).FxFinal)).FrefCount++
 62774  	(*Tcl_Obj)(unsafe.Pointer((*TestWindow)(unsafe.Pointer(pNew)).FxValue)).FrefCount++
 62775  	(*Tcl_Obj)(unsafe.Pointer((*TestWindow)(unsafe.Pointer(pNew)).FxInverse)).FrefCount++
 62776  
 62777  	rc = sqlite3.Xsqlite3_create_window_function(tls, *(*uintptr)(unsafe.Pointer(bp)), zName, -1, SQLITE_UTF8, pNew,
 62778  		*(*uintptr)(unsafe.Pointer(&struct {
 62779  			f func(*libc.TLS, uintptr, int32, uintptr)
 62780  		}{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 {
 62781  			f func(*libc.TLS, uintptr, int32, uintptr)
 62782  		}{testWindowInverse})),
 62783  		*(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{testWindowDestroy})))
 62784  	if rc != SQLITE_OK {
 62785  		tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3ErrName(tls, rc), -1))
 62786  		return TCL_ERROR
 62787  	}
 62788  
 62789  	return TCL_OK
 62790  }
 62791  
 62792  func test_create_window_misuse(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 62793  	bp := tls.Alloc(8)
 62794  	defer tls.Free(8)
 62795  
 62796  	var rc int32
 62797  
 62798  	if !(objc != 2) {
 62799  		goto __1
 62800  	}
 62801  	tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2050)
 62802  	return TCL_ERROR
 62803  __1:
 62804  	;
 62805  	if !(getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0) {
 62806  		goto __2
 62807  	}
 62808  	return TCL_ERROR
 62809  __2:
 62810  	;
 62811  	rc = sqlite3.Xsqlite3_create_window_function(tls, *(*uintptr)(unsafe.Pointer(bp)), ts+39534, -1, SQLITE_UTF8, uintptr(0),
 62812  		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 {
 62813  			f func(*libc.TLS, uintptr, int32, uintptr)
 62814  		}{testWindowInverse})),
 62815  		uintptr(0))
 62816  	if !(rc != SQLITE_MISUSE) {
 62817  		goto __3
 62818  	}
 62819  	goto error
 62820  __3:
 62821  	;
 62822  	rc = sqlite3.Xsqlite3_create_window_function(tls, *(*uintptr)(unsafe.Pointer(bp)), ts+39534, -1, SQLITE_UTF8, uintptr(0),
 62823  		*(*uintptr)(unsafe.Pointer(&struct {
 62824  			f func(*libc.TLS, uintptr, int32, uintptr)
 62825  		}{testWindowStep})), uintptr(0), *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{testWindowValue})), *(*uintptr)(unsafe.Pointer(&struct {
 62826  			f func(*libc.TLS, uintptr, int32, uintptr)
 62827  		}{testWindowInverse})),
 62828  		uintptr(0))
 62829  	if !(rc != SQLITE_MISUSE) {
 62830  		goto __4
 62831  	}
 62832  	goto error
 62833  __4:
 62834  	;
 62835  	rc = sqlite3.Xsqlite3_create_window_function(tls, *(*uintptr)(unsafe.Pointer(bp)), ts+39534, -1, SQLITE_UTF8, uintptr(0),
 62836  		*(*uintptr)(unsafe.Pointer(&struct {
 62837  			f func(*libc.TLS, uintptr, int32, uintptr)
 62838  		}{testWindowStep})), *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{testWindowFinal})), uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 62839  			f func(*libc.TLS, uintptr, int32, uintptr)
 62840  		}{testWindowInverse})),
 62841  		uintptr(0))
 62842  	if !(rc != SQLITE_MISUSE) {
 62843  		goto __5
 62844  	}
 62845  	goto error
 62846  __5:
 62847  	;
 62848  	rc = sqlite3.Xsqlite3_create_window_function(tls, *(*uintptr)(unsafe.Pointer(bp)), ts+39534, -1, SQLITE_UTF8, uintptr(0),
 62849  		*(*uintptr)(unsafe.Pointer(&struct {
 62850  			f func(*libc.TLS, uintptr, int32, uintptr)
 62851  		}{testWindowStep})), *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{testWindowFinal})), *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{testWindowValue})), uintptr(0),
 62852  		uintptr(0))
 62853  	if !(rc != SQLITE_MISUSE) {
 62854  		goto __6
 62855  	}
 62856  	goto error
 62857  __6:
 62858  	;
 62859  	return TCL_OK
 62860  
 62861  error:
 62862  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, ts+39538, -1))
 62863  	return TCL_ERROR
 62864  }
 62865  
 62866  func sumintStep(tls *libc.TLS, ctx uintptr, nArg int32, apArg uintptr) {
 62867  	var pInt uintptr
 62868  
 62869  	if sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(apArg))) != SQLITE_INTEGER {
 62870  		sqlite3.Xsqlite3_result_error(tls, ctx, ts+39556, -1)
 62871  		return
 62872  	}
 62873  	pInt = sqlite3.Xsqlite3_aggregate_context(tls, ctx, int32(unsafe.Sizeof(sqlite3_int64(0))))
 62874  	if pInt != 0 {
 62875  		*(*sqlite3_int64)(unsafe.Pointer(pInt)) += sqlite3.Xsqlite3_value_int64(tls, *(*uintptr)(unsafe.Pointer(apArg)))
 62876  	}
 62877  }
 62878  
 62879  func sumintInverse(tls *libc.TLS, ctx uintptr, nArg int32, apArg uintptr) {
 62880  	var pInt uintptr
 62881  	pInt = sqlite3.Xsqlite3_aggregate_context(tls, ctx, int32(unsafe.Sizeof(sqlite3_int64(0))))
 62882  	*(*sqlite3_int64)(unsafe.Pointer(pInt)) -= sqlite3.Xsqlite3_value_int64(tls, *(*uintptr)(unsafe.Pointer(apArg)))
 62883  }
 62884  
 62885  func sumintFinal(tls *libc.TLS, ctx uintptr) {
 62886  	var res sqlite3_int64 = int64(0)
 62887  	var pInt uintptr
 62888  	pInt = sqlite3.Xsqlite3_aggregate_context(tls, ctx, 0)
 62889  	if pInt != 0 {
 62890  		res = *(*sqlite3_int64)(unsafe.Pointer(pInt))
 62891  	}
 62892  	sqlite3.Xsqlite3_result_int64(tls, ctx, res)
 62893  }
 62894  
 62895  func sumintValue(tls *libc.TLS, ctx uintptr) {
 62896  	var res sqlite3_int64 = int64(0)
 62897  	var pInt uintptr
 62898  	pInt = sqlite3.Xsqlite3_aggregate_context(tls, ctx, 0)
 62899  	if pInt != 0 {
 62900  		res = *(*sqlite3_int64)(unsafe.Pointer(pInt))
 62901  	}
 62902  	sqlite3.Xsqlite3_result_int64(tls, ctx, res)
 62903  }
 62904  
 62905  func test_create_sumint(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 62906  	bp := tls.Alloc(8)
 62907  	defer tls.Free(8)
 62908  
 62909  	var rc int32
 62910  
 62911  	if objc != 2 {
 62912  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2050)
 62913  		return TCL_ERROR
 62914  	}
 62915  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 62916  		return TCL_ERROR
 62917  	}
 62918  
 62919  	rc = sqlite3.Xsqlite3_create_window_function(tls, *(*uintptr)(unsafe.Pointer(bp)), ts+39573, 1, SQLITE_UTF8, uintptr(0),
 62920  		*(*uintptr)(unsafe.Pointer(&struct {
 62921  			f func(*libc.TLS, uintptr, int32, uintptr)
 62922  		}{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 {
 62923  			f func(*libc.TLS, uintptr, int32, uintptr)
 62924  		}{sumintInverse})),
 62925  		uintptr(0))
 62926  
 62927  	if rc != SQLITE_OK {
 62928  		tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3ErrName(tls, rc), -1))
 62929  		return TCL_ERROR
 62930  	}
 62931  	return TCL_OK
 62932  }
 62933  
 62934  func test_override_sum(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 62935  	bp := tls.Alloc(8)
 62936  	defer tls.Free(8)
 62937  
 62938  	var rc int32
 62939  
 62940  	if objc != 2 {
 62941  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2050)
 62942  		return TCL_ERROR
 62943  	}
 62944  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 62945  		return TCL_ERROR
 62946  	}
 62947  
 62948  	rc = sqlite3.Xsqlite3_create_function(tls, *(*uintptr)(unsafe.Pointer(bp)), ts+39580, -1, SQLITE_UTF8, uintptr(0),
 62949  		uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 62950  			f func(*libc.TLS, uintptr, int32, uintptr)
 62951  		}{sumintStep})), *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{sumintFinal})))
 62952  
 62953  	if rc != SQLITE_OK {
 62954  		tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3ErrName(tls, rc), -1))
 62955  		return TCL_ERROR
 62956  	}
 62957  	return TCL_OK
 62958  }
 62959  
 62960  func Sqlitetest_window_Init(tls *libc.TLS, interp uintptr) int32 {
 62961  	var i int32
 62962  	for i = 0; uint64(i) < uint64(unsafe.Sizeof(aObjCmd14))/uint64(unsafe.Sizeof(struct {
 62963  		FzName       uintptr
 62964  		FxProc       uintptr
 62965  		FclientData  int32
 62966  		F__ccgo_pad1 [4]byte
 62967  	}{})); i++ {
 62968  		var c ClientData = uintptr(intptr_t(aObjCmd14[i].FclientData))
 62969  		tcl.XTcl_CreateObjCommand(tls, interp, aObjCmd14[i].FzName, aObjCmd14[i].FxProc, c, uintptr(0))
 62970  	}
 62971  	return TCL_OK
 62972  }
 62973  
 62974  var aObjCmd14 = [4]struct {
 62975  	FzName       uintptr
 62976  	FxProc       uintptr
 62977  	FclientData  int32
 62978  	F__ccgo_pad1 [4]byte
 62979  }{
 62980  	{FzName: ts + 39584, FxProc: 0},
 62981  	{FzName: ts + 39615, FxProc: 0},
 62982  	{FzName: ts + 39650, FxProc: 0},
 62983  	{FzName: ts + 39669, FxProc: 0},
 62984  }
 62985  
 62986  func init() {
 62987  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CrashFileVtab)) + 8)) = cfClose
 62988  	*(*func(*libc.TLS, uintptr, uintptr, int32, sqlite_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CrashFileVtab)) + 16)) = cfRead
 62989  	*(*func(*libc.TLS, uintptr, uintptr, int32, sqlite_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CrashFileVtab)) + 24)) = cfWrite
 62990  	*(*func(*libc.TLS, uintptr, sqlite_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CrashFileVtab)) + 32)) = cfTruncate
 62991  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CrashFileVtab)) + 40)) = cfSync
 62992  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CrashFileVtab)) + 48)) = cfFileSize
 62993  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CrashFileVtab)) + 56)) = cfLock
 62994  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CrashFileVtab)) + 64)) = cfUnlock
 62995  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CrashFileVtab)) + 72)) = cfCheckReservedLock
 62996  	*(*func(*libc.TLS, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CrashFileVtab)) + 80)) = cfFileControl
 62997  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CrashFileVtab)) + 88)) = cfSectorSize
 62998  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CrashFileVtab)) + 96)) = cfDeviceCharacteristics
 62999  	*(*func(*libc.TLS, uintptr, int32, int32, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CrashFileVtab)) + 104)) = cfShmMap
 63000  	*(*func(*libc.TLS, uintptr, int32, int32, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CrashFileVtab)) + 112)) = cfShmLock
 63001  	*(*func(*libc.TLS, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&CrashFileVtab)) + 120)) = cfShmBarrier
 63002  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CrashFileVtab)) + 128)) = cfShmUnmap
 63003  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CsvModule)) + 8)) = csvtabCreate
 63004  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CsvModule)) + 16)) = csvtabConnect
 63005  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CsvModule)) + 24)) = csvtabBestIndex
 63006  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CsvModule)) + 32)) = csvtabDisconnect
 63007  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CsvModule)) + 40)) = csvtabDisconnect
 63008  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CsvModule)) + 48)) = csvtabOpen
 63009  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CsvModule)) + 56)) = csvtabClose
 63010  	*(*func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CsvModule)) + 64)) = csvtabFilter
 63011  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CsvModule)) + 72)) = csvtabNext
 63012  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CsvModule)) + 80)) = csvtabEof
 63013  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CsvModule)) + 88)) = csvtabColumn
 63014  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CsvModule)) + 96)) = csvtabRowid
 63015  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CsvModuleFauxWrite)) + 8)) = csvtabCreate
 63016  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CsvModuleFauxWrite)) + 16)) = csvtabConnect
 63017  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CsvModuleFauxWrite)) + 24)) = csvtabBestIndex
 63018  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CsvModuleFauxWrite)) + 32)) = csvtabDisconnect
 63019  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CsvModuleFauxWrite)) + 40)) = csvtabDisconnect
 63020  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CsvModuleFauxWrite)) + 48)) = csvtabOpen
 63021  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CsvModuleFauxWrite)) + 56)) = csvtabClose
 63022  	*(*func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CsvModuleFauxWrite)) + 64)) = csvtabFilter
 63023  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CsvModuleFauxWrite)) + 72)) = csvtabNext
 63024  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CsvModuleFauxWrite)) + 80)) = csvtabEof
 63025  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CsvModuleFauxWrite)) + 88)) = csvtabColumn
 63026  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CsvModuleFauxWrite)) + 96)) = csvtabRowid
 63027  	*(*func(*libc.TLS, uintptr, int32, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CsvModuleFauxWrite)) + 104)) = csvtabUpdate
 63028  	*(*func(*libc.TLS, ClientData, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&IncrblobChannelType)) + 16)) = incrblobClose
 63029  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&IncrblobChannelType)) + 24)) = incrblobInput
 63030  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&IncrblobChannelType)) + 32)) = incrblobOutput
 63031  	*(*func(*libc.TLS, ClientData, int64, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&IncrblobChannelType)) + 40)) = incrblobSeek
 63032  	*(*func(*libc.TLS, ClientData, int32))(unsafe.Pointer(uintptr(unsafe.Pointer(&IncrblobChannelType)) + 64)) = incrblobWatch
 63033  	*(*func(*libc.TLS, ClientData, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&IncrblobChannelType)) + 72)) = incrblobHandle
 63034  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd)) + 8)) = f5tCreateTokenizer
 63035  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd)) + 32)) = f5tTokenizerReturn
 63036  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd)) + 56)) = f5tTokenize
 63037  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd)) + 80)) = f5tCreateFunction
 63038  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd)) + 104)) = f5tMayBeCorrupt
 63039  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd)) + 128)) = f5tTokenHash
 63040  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd)) + 152)) = f5tRegisterMatchinfo
 63041  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd)) + 176)) = f5tRegisterTok
 63042  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 8)) = *(*uintptr)(unsafe.Pointer(&struct {
 63043  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 63044  	}{db_enter}))
 63045  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 24)) = *(*uintptr)(unsafe.Pointer(&struct {
 63046  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 63047  	}{db_leave}))
 63048  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 40)) = *(*uintptr)(unsafe.Pointer(&struct {
 63049  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 63050  	}{sqlite3_mprintf_int}))
 63051  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 56)) = *(*uintptr)(unsafe.Pointer(&struct {
 63052  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 63053  	}{sqlite3_mprintf_int64}))
 63054  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 72)) = *(*uintptr)(unsafe.Pointer(&struct {
 63055  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 63056  	}{sqlite3_mprintf_long}))
 63057  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 88)) = *(*uintptr)(unsafe.Pointer(&struct {
 63058  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 63059  	}{sqlite3_mprintf_str}))
 63060  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 104)) = *(*uintptr)(unsafe.Pointer(&struct {
 63061  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 63062  	}{sqlite3_snprintf_str}))
 63063  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 120)) = *(*uintptr)(unsafe.Pointer(&struct {
 63064  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 63065  	}{sqlite3_mprintf_stronly}))
 63066  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 136)) = *(*uintptr)(unsafe.Pointer(&struct {
 63067  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 63068  	}{sqlite3_mprintf_double}))
 63069  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 152)) = *(*uintptr)(unsafe.Pointer(&struct {
 63070  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 63071  	}{sqlite3_mprintf_scaled}))
 63072  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 168)) = *(*uintptr)(unsafe.Pointer(&struct {
 63073  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 63074  	}{sqlite3_mprintf_hexdouble}))
 63075  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 184)) = *(*uintptr)(unsafe.Pointer(&struct {
 63076  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 63077  	}{test_mprintf_z}))
 63078  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 200)) = *(*uintptr)(unsafe.Pointer(&struct {
 63079  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 63080  	}{test_mprintf_n}))
 63081  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 216)) = *(*uintptr)(unsafe.Pointer(&struct {
 63082  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 63083  	}{test_snprintf_int}))
 63084  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 232)) = *(*uintptr)(unsafe.Pointer(&struct {
 63085  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 63086  	}{test_last_rowid}))
 63087  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 248)) = *(*uintptr)(unsafe.Pointer(&struct {
 63088  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 63089  	}{test_exec_printf}))
 63090  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 264)) = *(*uintptr)(unsafe.Pointer(&struct {
 63091  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 63092  	}{test_exec_hex}))
 63093  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 280)) = *(*uintptr)(unsafe.Pointer(&struct {
 63094  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 63095  	}{test_exec}))
 63096  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 296)) = *(*uintptr)(unsafe.Pointer(&struct {
 63097  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 63098  	}{test_exec_nr}))
 63099  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 312)) = *(*uintptr)(unsafe.Pointer(&struct {
 63100  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 63101  	}{test_get_table_printf}))
 63102  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 328)) = *(*uintptr)(unsafe.Pointer(&struct {
 63103  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 63104  	}{sqlite_test_close}))
 63105  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 344)) = *(*uintptr)(unsafe.Pointer(&struct {
 63106  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 63107  	}{sqlite_test_close_v2}))
 63108  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 360)) = *(*uintptr)(unsafe.Pointer(&struct {
 63109  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 63110  	}{test_create_function}))
 63111  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 376)) = *(*uintptr)(unsafe.Pointer(&struct {
 63112  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 63113  	}{test_create_aggregate}))
 63114  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 392)) = *(*uintptr)(unsafe.Pointer(&struct {
 63115  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 63116  	}{test_drop_modules}))
 63117  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 408)) = *(*uintptr)(unsafe.Pointer(&struct {
 63118  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 63119  	}{test_register_func}))
 63120  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 424)) = *(*uintptr)(unsafe.Pointer(&struct {
 63121  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 63122  	}{sqlite_abort}))
 63123  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 440)) = *(*uintptr)(unsafe.Pointer(&struct {
 63124  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 63125  	}{test_bind}))
 63126  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 456)) = *(*uintptr)(unsafe.Pointer(&struct {
 63127  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 63128  	}{test_breakpoint}))
 63129  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 472)) = *(*uintptr)(unsafe.Pointer(&struct {
 63130  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 63131  	}{test_key}))
 63132  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 488)) = *(*uintptr)(unsafe.Pointer(&struct {
 63133  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 63134  	}{test_rekey}))
 63135  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 504)) = *(*uintptr)(unsafe.Pointer(&struct {
 63136  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 63137  	}{test_interrupt}))
 63138  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 520)) = *(*uintptr)(unsafe.Pointer(&struct {
 63139  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 63140  	}{delete_function}))
 63141  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 536)) = *(*uintptr)(unsafe.Pointer(&struct {
 63142  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 63143  	}{delete_collation}))
 63144  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 552)) = *(*uintptr)(unsafe.Pointer(&struct {
 63145  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 63146  	}{get_autocommit}))
 63147  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 568)) = *(*uintptr)(unsafe.Pointer(&struct {
 63148  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 63149  	}{test_busy_timeout}))
 63150  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 584)) = *(*uintptr)(unsafe.Pointer(&struct {
 63151  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 63152  	}{test_printf}))
 63153  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 600)) = *(*uintptr)(unsafe.Pointer(&struct {
 63154  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 63155  	}{test_io_trace}))
 63156  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 616)) = *(*uintptr)(unsafe.Pointer(&struct {
 63157  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 63158  	}{clang_sanitize_address}))
 63159  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd2)) + 8)) = *(*uintptr)(unsafe.Pointer(&struct {
 63160  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 63161  	}{pager_open}))
 63162  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd2)) + 24)) = *(*uintptr)(unsafe.Pointer(&struct {
 63163  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 63164  	}{pager_close}))
 63165  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd2)) + 40)) = *(*uintptr)(unsafe.Pointer(&struct {
 63166  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 63167  	}{pager_commit}))
 63168  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd2)) + 56)) = *(*uintptr)(unsafe.Pointer(&struct {
 63169  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 63170  	}{pager_rollback}))
 63171  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd2)) + 72)) = *(*uintptr)(unsafe.Pointer(&struct {
 63172  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 63173  	}{pager_stmt_begin}))
 63174  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd2)) + 88)) = *(*uintptr)(unsafe.Pointer(&struct {
 63175  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 63176  	}{pager_stmt_commit}))
 63177  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd2)) + 104)) = *(*uintptr)(unsafe.Pointer(&struct {
 63178  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 63179  	}{pager_stmt_rollback}))
 63180  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd2)) + 120)) = *(*uintptr)(unsafe.Pointer(&struct {
 63181  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 63182  	}{pager_stats}))
 63183  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd2)) + 136)) = *(*uintptr)(unsafe.Pointer(&struct {
 63184  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 63185  	}{pager_pagecount}))
 63186  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd2)) + 152)) = *(*uintptr)(unsafe.Pointer(&struct {
 63187  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 63188  	}{page_get}))
 63189  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd2)) + 168)) = *(*uintptr)(unsafe.Pointer(&struct {
 63190  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 63191  	}{page_lookup}))
 63192  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd2)) + 184)) = *(*uintptr)(unsafe.Pointer(&struct {
 63193  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 63194  	}{page_unref}))
 63195  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd2)) + 200)) = *(*uintptr)(unsafe.Pointer(&struct {
 63196  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 63197  	}{page_read}))
 63198  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd2)) + 216)) = *(*uintptr)(unsafe.Pointer(&struct {
 63199  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 63200  	}{page_write}))
 63201  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd2)) + 232)) = *(*uintptr)(unsafe.Pointer(&struct {
 63202  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 63203  	}{page_number}))
 63204  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd2)) + 248)) = *(*uintptr)(unsafe.Pointer(&struct {
 63205  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 63206  	}{pager_truncate}))
 63207  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd2)) + 264)) = *(*uintptr)(unsafe.Pointer(&struct {
 63208  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 63209  	}{fake_big_file}))
 63210  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd2)) + 280)) = *(*uintptr)(unsafe.Pointer(&struct {
 63211  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 63212  	}{testBitvecBuiltinTest}))
 63213  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd2)) + 296)) = *(*uintptr)(unsafe.Pointer(&struct {
 63214  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 63215  	}{testPendingByte}))
 63216  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd2)) + 312)) = *(*uintptr)(unsafe.Pointer(&struct {
 63217  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 63218  	}{faultInstallCmd}))
 63219  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd3)) + 8)) = *(*uintptr)(unsafe.Pointer(&struct {
 63220  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 63221  	}{btree_open}))
 63222  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd3)) + 24)) = *(*uintptr)(unsafe.Pointer(&struct {
 63223  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 63224  	}{btree_close}))
 63225  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd3)) + 40)) = *(*uintptr)(unsafe.Pointer(&struct {
 63226  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 63227  	}{btree_begin_transaction}))
 63228  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd3)) + 56)) = *(*uintptr)(unsafe.Pointer(&struct {
 63229  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 63230  	}{btree_pager_stats}))
 63231  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd3)) + 72)) = *(*uintptr)(unsafe.Pointer(&struct {
 63232  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 63233  	}{btree_cursor}))
 63234  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd3)) + 88)) = *(*uintptr)(unsafe.Pointer(&struct {
 63235  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 63236  	}{btree_close_cursor}))
 63237  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd3)) + 104)) = *(*uintptr)(unsafe.Pointer(&struct {
 63238  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 63239  	}{btree_next}))
 63240  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd3)) + 120)) = *(*uintptr)(unsafe.Pointer(&struct {
 63241  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 63242  	}{btree_eof}))
 63243  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd3)) + 136)) = *(*uintptr)(unsafe.Pointer(&struct {
 63244  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 63245  	}{btree_payload_size}))
 63246  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd3)) + 152)) = *(*uintptr)(unsafe.Pointer(&struct {
 63247  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 63248  	}{btree_first}))
 63249  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd3)) + 168)) = *(*uintptr)(unsafe.Pointer(&struct {
 63250  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 63251  	}{btree_varint_test}))
 63252  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd3)) + 184)) = *(*uintptr)(unsafe.Pointer(&struct {
 63253  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 63254  	}{btree_from_db}))
 63255  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd3)) + 200)) = *(*uintptr)(unsafe.Pointer(&struct {
 63256  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 63257  	}{btree_ismemdb}))
 63258  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd3)) + 216)) = *(*uintptr)(unsafe.Pointer(&struct {
 63259  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 63260  	}{btree_set_cache_size}))
 63261  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd4)) + 8)) = *(*uintptr)(unsafe.Pointer(&struct {
 63262  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 63263  	}{tcl_thread_create}))
 63264  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd4)) + 24)) = *(*uintptr)(unsafe.Pointer(&struct {
 63265  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 63266  	}{tcl_thread_wait}))
 63267  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd4)) + 40)) = *(*uintptr)(unsafe.Pointer(&struct {
 63268  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 63269  	}{tcl_thread_halt}))
 63270  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd4)) + 56)) = *(*uintptr)(unsafe.Pointer(&struct {
 63271  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 63272  	}{tcl_thread_argc}))
 63273  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd4)) + 72)) = *(*uintptr)(unsafe.Pointer(&struct {
 63274  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 63275  	}{tcl_thread_argv}))
 63276  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd4)) + 88)) = *(*uintptr)(unsafe.Pointer(&struct {
 63277  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 63278  	}{tcl_thread_colname}))
 63279  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd4)) + 104)) = *(*uintptr)(unsafe.Pointer(&struct {
 63280  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 63281  	}{tcl_thread_result}))
 63282  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd4)) + 120)) = *(*uintptr)(unsafe.Pointer(&struct {
 63283  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 63284  	}{tcl_thread_error}))
 63285  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd4)) + 136)) = *(*uintptr)(unsafe.Pointer(&struct {
 63286  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 63287  	}{tcl_thread_compile}))
 63288  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd4)) + 152)) = *(*uintptr)(unsafe.Pointer(&struct {
 63289  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 63290  	}{tcl_thread_step}))
 63291  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd4)) + 168)) = *(*uintptr)(unsafe.Pointer(&struct {
 63292  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 63293  	}{tcl_thread_finalize}))
 63294  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd4)) + 184)) = *(*uintptr)(unsafe.Pointer(&struct {
 63295  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 63296  	}{tcl_thread_swap}))
 63297  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd4)) + 200)) = *(*uintptr)(unsafe.Pointer(&struct {
 63298  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 63299  	}{tcl_thread_db_get}))
 63300  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd4)) + 216)) = *(*uintptr)(unsafe.Pointer(&struct {
 63301  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 63302  	}{tcl_thread_db_put}))
 63303  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd4)) + 232)) = *(*uintptr)(unsafe.Pointer(&struct {
 63304  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 63305  	}{tcl_thread_stmt_get}))
 63306  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd5)) + 8)) = *(*uintptr)(unsafe.Pointer(&struct {
 63307  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 63308  	}{binarize}))
 63309  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd5)) + 24)) = *(*uintptr)(unsafe.Pointer(&struct {
 63310  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 63311  	}{test_value_overhead}))
 63312  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd5)) + 40)) = *(*uintptr)(unsafe.Pointer(&struct {
 63313  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 63314  	}{test_translate}))
 63315  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd5)) + 56)) = *(*uintptr)(unsafe.Pointer(&struct {
 63316  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 63317  	}{test_translate_selftest}))
 63318  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd6)) + 8)) = *(*uintptr)(unsafe.Pointer(&struct {
 63319  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 63320  	}{tcl_client_create}))
 63321  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd6)) + 24)) = *(*uintptr)(unsafe.Pointer(&struct {
 63322  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 63323  	}{tcl_client_wait}))
 63324  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd6)) + 40)) = *(*uintptr)(unsafe.Pointer(&struct {
 63325  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 63326  	}{tcl_client_halt}))
 63327  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd6)) + 56)) = *(*uintptr)(unsafe.Pointer(&struct {
 63328  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 63329  	}{tcl_client_argc}))
 63330  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd6)) + 72)) = *(*uintptr)(unsafe.Pointer(&struct {
 63331  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 63332  	}{tcl_client_argv}))
 63333  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd6)) + 88)) = *(*uintptr)(unsafe.Pointer(&struct {
 63334  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 63335  	}{tcl_client_colname}))
 63336  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd6)) + 104)) = *(*uintptr)(unsafe.Pointer(&struct {
 63337  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 63338  	}{tcl_client_result}))
 63339  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd6)) + 120)) = *(*uintptr)(unsafe.Pointer(&struct {
 63340  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 63341  	}{tcl_client_error}))
 63342  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd6)) + 136)) = *(*uintptr)(unsafe.Pointer(&struct {
 63343  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 63344  	}{tcl_client_compile}))
 63345  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd6)) + 152)) = *(*uintptr)(unsafe.Pointer(&struct {
 63346  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 63347  	}{tcl_client_step}))
 63348  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd6)) + 168)) = *(*uintptr)(unsafe.Pointer(&struct {
 63349  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 63350  	}{tcl_client_reset}))
 63351  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd6)) + 184)) = *(*uintptr)(unsafe.Pointer(&struct {
 63352  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 63353  	}{tcl_client_finalize}))
 63354  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd6)) + 200)) = *(*uintptr)(unsafe.Pointer(&struct {
 63355  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 63356  	}{tcl_client_swap}))
 63357  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd7)) + 8)) = test_multiplex_initialize
 63358  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd7)) + 24)) = test_multiplex_shutdown
 63359  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd7)) + 40)) = test_multiplex_control
 63360  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd8)) + 8)) = *(*uintptr)(unsafe.Pointer(&struct {
 63361  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 63362  	}{test_shutdown}))
 63363  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd8)) + 24)) = *(*uintptr)(unsafe.Pointer(&struct {
 63364  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 63365  	}{test_initialize}))
 63366  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd8)) + 40)) = *(*uintptr)(unsafe.Pointer(&struct {
 63367  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 63368  	}{test_config}))
 63369  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd8)) + 56)) = *(*uintptr)(unsafe.Pointer(&struct {
 63370  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 63371  	}{test_enter_static_mutex}))
 63372  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd8)) + 72)) = *(*uintptr)(unsafe.Pointer(&struct {
 63373  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 63374  	}{test_leave_static_mutex}))
 63375  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd8)) + 88)) = *(*uintptr)(unsafe.Pointer(&struct {
 63376  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 63377  	}{test_enter_db_mutex}))
 63378  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd8)) + 104)) = *(*uintptr)(unsafe.Pointer(&struct {
 63379  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 63380  	}{test_leave_db_mutex}))
 63381  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd8)) + 120)) = *(*uintptr)(unsafe.Pointer(&struct {
 63382  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 63383  	}{test_alloc_mutex}))
 63384  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd8)) + 136)) = *(*uintptr)(unsafe.Pointer(&struct {
 63385  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 63386  	}{test_install_mutex_counters}))
 63387  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd8)) + 152)) = *(*uintptr)(unsafe.Pointer(&struct {
 63388  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 63389  	}{test_read_mutex_counters}))
 63390  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd8)) + 168)) = *(*uintptr)(unsafe.Pointer(&struct {
 63391  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 63392  	}{test_clear_mutex_counters}))
 63393  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd9)) + 8)) = test_quota_initialize
 63394  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd9)) + 24)) = test_quota_shutdown
 63395  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd9)) + 40)) = test_quota_set
 63396  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd9)) + 56)) = test_quota_file
 63397  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd9)) + 72)) = test_quota_dump
 63398  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd9)) + 88)) = test_quota_fopen
 63399  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd9)) + 104)) = test_quota_fread
 63400  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd9)) + 120)) = test_quota_fwrite
 63401  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd9)) + 136)) = test_quota_fclose
 63402  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd9)) + 152)) = test_quota_fflush
 63403  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd9)) + 168)) = test_quota_fseek
 63404  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd9)) + 184)) = test_quota_rewind
 63405  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd9)) + 200)) = test_quota_ftell
 63406  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd9)) + 216)) = test_quota_ftruncate
 63407  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd9)) + 232)) = test_quota_file_size
 63408  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd9)) + 248)) = test_quota_file_truesize
 63409  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd9)) + 264)) = test_quota_file_mtime
 63410  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd9)) + 280)) = test_quota_remove
 63411  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd9)) + 296)) = test_quota_glob
 63412  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd9)) + 312)) = test_quota_file_available
 63413  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd9)) + 328)) = test_quota_ferror
 63414  	*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aExtension)) + 8)) = sqlite3_amatch_init
 63415  	*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aExtension)) + 24)) = sqlite3_appendvfs_init
 63416  	*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aExtension)) + 40)) = sqlite3_carray_init
 63417  	*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aExtension)) + 56)) = sqlite3_closure_init
 63418  	*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aExtension)) + 72)) = sqlite3_csv_init
 63419  	*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aExtension)) + 88)) = sqlite3_decimal_init
 63420  	*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aExtension)) + 104)) = sqlite3_eval_init
 63421  	*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aExtension)) + 120)) = sqlite3_explain_init
 63422  	*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aExtension)) + 136)) = sqlite3_fileio_init
 63423  	*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aExtension)) + 152)) = sqlite3_fuzzer_init
 63424  	*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aExtension)) + 168)) = sqlite3_ieee_init
 63425  	*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aExtension)) + 184)) = sqlite3_nextchar_init
 63426  	*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aExtension)) + 200)) = sqlite3_percentile_init
 63427  	*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aExtension)) + 216)) = sqlite3_prefixes_init
 63428  	*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aExtension)) + 232)) = sqlite3_qpvtab_init
 63429  	*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aExtension)) + 248)) = sqlite3_regexp_init
 63430  	*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aExtension)) + 264)) = sqlite3_remember_init
 63431  	*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aExtension)) + 280)) = sqlite3_series_init
 63432  	*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aExtension)) + 296)) = sqlite3_spellfix_init
 63433  	*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aExtension)) + 312)) = sqlite3_totype_init
 63434  	*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aExtension)) + 328)) = sqlite3_unionvtab_init
 63435  	*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aExtension)) + 344)) = sqlite3_wholenumber_init
 63436  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFunc)) + 16)) = decimalFunc
 63437  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFunc)) + 40)) = decimalCmpFunc
 63438  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFunc)) + 64)) = decimalAddFunc
 63439  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFunc)) + 88)) = decimalSubFunc
 63440  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFunc)) + 112)) = decimalMulFunc
 63441  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFunc1)) + 16)) = ieee754func
 63442  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFunc1)) + 40)) = ieee754func
 63443  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFunc1)) + 64)) = ieee754func
 63444  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFunc1)) + 88)) = ieee754func
 63445  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFunc1)) + 112)) = ieee754func_to_blob
 63446  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFunc1)) + 136)) = ieee754func_from_blob
 63447  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFuncs)) + 16)) = randStr
 63448  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFuncs)) + 40)) = test_destructor
 63449  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFuncs)) + 64)) = test_destructor16
 63450  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFuncs)) + 88)) = testHexToUtf16be
 63451  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFuncs)) + 112)) = testHexToUtf16le
 63452  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFuncs)) + 136)) = testHexToUtf8
 63453  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFuncs)) + 160)) = test_destructor_count
 63454  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFuncs)) + 184)) = test_auxdata
 63455  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFuncs)) + 208)) = test_error
 63456  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFuncs)) + 232)) = test_error
 63457  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFuncs)) + 256)) = test_eval
 63458  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFuncs)) + 280)) = test_isolation
 63459  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFuncs)) + 304)) = counterFunc
 63460  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFuncs)) + 328)) = real2hex
 63461  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFuncs)) + 352)) = test_decode
 63462  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFuncs)) + 376)) = test_extract
 63463  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFuncs)) + 400)) = test_zeroblob
 63464  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFuncs)) + 424)) = test_getsubtype
 63465  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFuncs)) + 448)) = test_setsubtype
 63466  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFuncs)) + 472)) = test_frombind
 63467  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd)) + 8)) = test_sqlite3rbu
 63468  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd)) + 24)) = test_sqlite3rbu_vacuum
 63469  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd)) + 40)) = test_sqlite3rbu_create_vfs
 63470  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd)) + 56)) = test_sqlite3rbu_destroy_vfs
 63471  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd)) + 72)) = test_sqlite3rbu_internal_test
 63472  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 8)) = test_sqlite3_db_config
 63473  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 32)) = test_sqlite3_txn_state
 63474  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 56)) = test_bad_behavior
 63475  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 64)) = uintptr(unsafe.Pointer(&iZero))
 63476  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 80)) = test_register_dbstat_vtab
 63477  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 104)) = get_sqlite_pointer
 63478  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 128)) = test_intarray_addr
 63479  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 152)) = test_int64array_addr
 63480  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 176)) = test_doublearray_addr
 63481  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 200)) = test_textarray_addr
 63482  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 224)) = test_bind_int
 63483  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 248)) = test_bind_zeroblob
 63484  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 272)) = test_bind_zeroblob64
 63485  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 296)) = test_bind_int64
 63486  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 320)) = test_bind_double
 63487  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 344)) = test_bind_null
 63488  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 368)) = test_bind_text
 63489  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 392)) = test_bind_text16
 63490  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 416)) = test_bind_blob
 63491  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 440)) = test_bind_value_from_select
 63492  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 464)) = test_bind_value_from_preupdate
 63493  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 488)) = test_carray_bind
 63494  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 512)) = test_bind_parameter_count
 63495  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 536)) = test_bind_parameter_name
 63496  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 560)) = test_bind_parameter_index
 63497  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 584)) = test_clear_bindings
 63498  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 608)) = test_sleep
 63499  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 632)) = test_errcode
 63500  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 656)) = test_ex_errcode
 63501  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 680)) = test_errmsg
 63502  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 704)) = test_error_offset
 63503  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 728)) = test_errmsg16
 63504  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 752)) = test_open
 63505  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 776)) = test_open16
 63506  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 800)) = test_open_v2
 63507  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 824)) = test_complete16
 63508  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 848)) = test_normalize
 63509  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 872)) = test_prepare
 63510  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 896)) = test_prepare16
 63511  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 920)) = test_prepare_v2
 63512  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 944)) = test_prepare_v3
 63513  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 968)) = test_prepare_tkt3134
 63514  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 992)) = test_prepare16_v2
 63515  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1016)) = test_finalize
 63516  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1040)) = test_stmt_status
 63517  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1064)) = test_reset
 63518  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1088)) = test_expired
 63519  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1112)) = test_transfer_bind
 63520  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1136)) = test_changes
 63521  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1160)) = test_step
 63522  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1184)) = test_sql
 63523  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1208)) = test_ex_sql
 63524  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1232)) = test_next_stmt
 63525  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1256)) = test_stmt_readonly
 63526  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1280)) = test_stmt_isexplain
 63527  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1304)) = test_stmt_busy
 63528  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1328)) = uses_stmt_journal
 63529  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1352)) = test_release_memory
 63530  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1376)) = test_db_release_memory
 63531  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1400)) = test_db_cacheflush
 63532  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1424)) = test_system_errno
 63533  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1448)) = test_db_filename
 63534  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1472)) = test_db_readonly
 63535  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1496)) = test_soft_heap_limit
 63536  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1520)) = test_soft_heap_limit
 63537  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1544)) = test_hard_heap_limit
 63538  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1568)) = test_thread_cleanup
 63539  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1592)) = test_pager_refcounts
 63540  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1616)) = test_load_extension
 63541  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1640)) = test_enable_load
 63542  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1664)) = test_extended_result_codes
 63543  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1688)) = test_limit
 63544  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1712)) = test_dbconfig_maindbname_icecube
 63545  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1736)) = save_prng_state
 63546  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1760)) = restore_prng_state
 63547  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1784)) = reset_prng_state
 63548  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1808)) = prng_seed
 63549  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1832)) = extra_schema_checks
 63550  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1856)) = database_never_corrupt
 63551  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1880)) = database_may_be_corrupt
 63552  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1904)) = optimization_control
 63553  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1928)) = runAsObjProc
 63554  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1952)) = test_column_count
 63555  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1976)) = test_data_count
 63556  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2000)) = test_column_type
 63557  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2024)) = test_column_blob
 63558  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2048)) = test_column_double
 63559  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2072)) = test_column_int64
 63560  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2096)) = test_stmt_utf8
 63561  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2104)) = *(*uintptr)(unsafe.Pointer(&struct {
 63562  		f func(*libc.TLS, uintptr, int32) uintptr
 63563  	}{sqlite3.Xsqlite3_column_text}))
 63564  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2120)) = test_stmt_utf8
 63565  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2128)) = *(*uintptr)(unsafe.Pointer(&struct {
 63566  		f func(*libc.TLS, uintptr, int32) uintptr
 63567  	}{sqlite3.Xsqlite3_column_name}))
 63568  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2144)) = test_stmt_int
 63569  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2152)) = *(*uintptr)(unsafe.Pointer(&struct {
 63570  		f func(*libc.TLS, uintptr, int32) int32
 63571  	}{sqlite3.Xsqlite3_column_int}))
 63572  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2168)) = test_stmt_int
 63573  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2176)) = *(*uintptr)(unsafe.Pointer(&struct {
 63574  		f func(*libc.TLS, uintptr, int32) int32
 63575  	}{sqlite3.Xsqlite3_column_bytes}))
 63576  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2192)) = test_stmt_utf8
 63577  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2200)) = *(*uintptr)(unsafe.Pointer(&struct {
 63578  		f func(*libc.TLS, uintptr, int32) uintptr
 63579  	}{sqlite3.Xsqlite3_column_decltype}))
 63580  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2216)) = test_stmt_utf8
 63581  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2224)) = *(*uintptr)(unsafe.Pointer(&struct {
 63582  		f func(*libc.TLS, uintptr, int32) uintptr
 63583  	}{sqlite3.Xsqlite3_column_database_name}))
 63584  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2240)) = test_stmt_utf8
 63585  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2248)) = *(*uintptr)(unsafe.Pointer(&struct {
 63586  		f func(*libc.TLS, uintptr, int32) uintptr
 63587  	}{sqlite3.Xsqlite3_column_table_name}))
 63588  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2264)) = test_stmt_utf8
 63589  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2272)) = *(*uintptr)(unsafe.Pointer(&struct {
 63590  		f func(*libc.TLS, uintptr, int32) uintptr
 63591  	}{sqlite3.Xsqlite3_column_origin_name}))
 63592  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2288)) = test_stmt_int
 63593  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2296)) = *(*uintptr)(unsafe.Pointer(&struct {
 63594  		f func(*libc.TLS, uintptr, int32) int32
 63595  	}{sqlite3.Xsqlite3_column_bytes16}))
 63596  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2312)) = test_stmt_utf16
 63597  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2320)) = *(*uintptr)(unsafe.Pointer(&struct {
 63598  		f func(*libc.TLS, uintptr, int32) uintptr
 63599  	}{sqlite3.Xsqlite3_column_text16}))
 63600  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2336)) = test_stmt_utf16
 63601  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2344)) = *(*uintptr)(unsafe.Pointer(&struct {
 63602  		f func(*libc.TLS, uintptr, int32) uintptr
 63603  	}{sqlite3.Xsqlite3_column_name16}))
 63604  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2360)) = add_alignment_test_collations
 63605  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2384)) = test_stmt_utf16
 63606  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2392)) = *(*uintptr)(unsafe.Pointer(&struct {
 63607  		f func(*libc.TLS, uintptr, int32) uintptr
 63608  	}{sqlite3.Xsqlite3_column_decltype16}))
 63609  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2408)) = test_stmt_utf16
 63610  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2416)) = *(*uintptr)(unsafe.Pointer(&struct {
 63611  		f func(*libc.TLS, uintptr, int32) uintptr
 63612  	}{sqlite3.Xsqlite3_column_database_name16}))
 63613  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2432)) = test_stmt_utf16
 63614  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2440)) = *(*uintptr)(unsafe.Pointer(&struct {
 63615  		f func(*libc.TLS, uintptr, int32) uintptr
 63616  	}{sqlite3.Xsqlite3_column_table_name16}))
 63617  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2456)) = test_stmt_utf16
 63618  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2464)) = *(*uintptr)(unsafe.Pointer(&struct {
 63619  		f func(*libc.TLS, uintptr, int32) uintptr
 63620  	}{sqlite3.Xsqlite3_column_origin_name16}))
 63621  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2480)) = test_create_collation_v2
 63622  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2504)) = test_global_recover
 63623  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2528)) = working_64bit_int
 63624  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2552)) = vfs_unlink_test
 63625  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2576)) = vfs_initfail_test
 63626  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2600)) = vfs_unregister_all
 63627  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2624)) = vfs_reregister_all
 63628  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2648)) = file_control_test
 63629  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2672)) = file_control_lasterrno_test
 63630  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2696)) = file_control_lockproxy_test
 63631  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2720)) = file_control_chunksize_test
 63632  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2744)) = file_control_sizehint_test
 63633  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2768)) = file_control_data_version
 63634  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2792)) = file_control_persist_wal
 63635  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2816)) = file_control_powersafe_overwrite
 63636  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2840)) = file_control_vfsname
 63637  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2864)) = file_control_reservebytes
 63638  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2888)) = file_control_tempfilename
 63639  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2912)) = file_control_external_reader
 63640  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2936)) = vfs_list
 63641  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2960)) = test_create_function_v2
 63642  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2984)) = test_collate
 63643  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3008)) = test_collate_needed
 63644  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3032)) = test_function
 63645  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3056)) = test_utf16bin_collate
 63646  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3080)) = test_errstr
 63647  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3104)) = tcl_variable_type
 63648  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3128)) = test_enable_shared
 63649  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3152)) = sqlite3BtreeSharedCacheReport
 63650  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3176)) = test_libversion_number
 63651  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3200)) = test_table_column_metadata
 63652  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3224)) = test_blob_reopen
 63653  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3248)) = test_pcache_stats
 63654  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3272)) = test_unlock_notify
 63655  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3296)) = test_wal_checkpoint
 63656  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3320)) = test_wal_checkpoint_v2
 63657  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3344)) = test_wal_autocheckpoint
 63658  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3368)) = test_sqlite3_log
 63659  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3392)) = test_print_eqp
 63660  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3416)) = test_test_control
 63661  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3440)) = test_getrusage
 63662  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3464)) = tclLoadStaticExtensionCmd
 63663  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3488)) = sorter_test_fakeheap
 63664  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3512)) = sorter_test_sort4_helper
 63665  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3536)) = vfsCurrentTimeInt64
 63666  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3560)) = test_snapshot_get
 63667  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3584)) = test_snapshot_open
 63668  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3608)) = test_snapshot_free
 63669  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3632)) = test_snapshot_cmp
 63670  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3656)) = test_snapshot_recover
 63671  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3680)) = test_snapshot_get_blob
 63672  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3704)) = test_snapshot_open_blob
 63673  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3728)) = test_snapshot_cmp_blob
 63674  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3752)) = test_delete_database
 63675  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3776)) = test_atomic_batch_write
 63676  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3800)) = test_mmap_warm
 63677  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3824)) = test_config_sorterref
 63678  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3848)) = test_autovacuum_pages
 63679  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3872)) = test_decode_hexdb
 63680  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3896)) = test_write_db
 63681  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3920)) = test_register_cksumvfs
 63682  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3944)) = test_unregister_cksumvfs
 63683  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd10)) + 8)) = test_intarray_create
 63684  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd10)) + 32)) = test_intarray_bind
 63685  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 8)) = test_malloc
 63686  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 32)) = test_realloc
 63687  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 56)) = test_free
 63688  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 80)) = test_memset
 63689  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 104)) = test_memget
 63690  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 128)) = test_memory_used
 63691  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 152)) = test_memory_highwater
 63692  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 176)) = test_memdebug_backtrace
 63693  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 200)) = test_memdebug_dump
 63694  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 224)) = test_memdebug_fail
 63695  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 248)) = test_memdebug_pending
 63696  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 272)) = test_memdebug_settitle
 63697  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 296)) = test_memdebug_malloc_count
 63698  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 320)) = test_memdebug_log
 63699  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 344)) = test_config_pagecache
 63700  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 368)) = test_alt_pcache
 63701  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 392)) = test_status
 63702  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 416)) = test_db_status
 63703  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 440)) = test_install_malloc_faultsim
 63704  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 464)) = test_config_heap
 63705  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 488)) = test_config_heap_size
 63706  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 512)) = test_config_memstatus
 63707  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 536)) = test_config_lookaside
 63708  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 560)) = test_config_error
 63709  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 584)) = test_config_uri
 63710  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 608)) = test_config_cis
 63711  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 632)) = test_config_pmasz
 63712  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 656)) = test_db_config_lookaside
 63713  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 680)) = test_dump_memsys3
 63714  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 704)) = test_dump_memsys3
 63715  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 728)) = test_install_memsys3
 63716  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 752)) = test_vfs_oom_test
 63717  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd12)) + 8)) = register_schema_module
 63718  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd13)) + 8)) = register_tclvar_module
 63719  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd14)) + 8)) = test_create_window
 63720  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd14)) + 32)) = test_create_window_misuse
 63721  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd14)) + 56)) = test_create_sumint
 63722  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd14)) + 80)) = test_override_sum
 63723  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd2)) + 8)) = register_echo_module
 63724  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd2)) + 32)) = declare_vtab
 63725  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd3)) + 8)) = c_misuse_test
 63726  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd3)) + 32)) = c_realloc_test
 63727  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd3)) + 56)) = c_collation_test
 63728  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd4)) + 8)) = register_tcl_module
 63729  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd5)) + 8)) = test_blob_open
 63730  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd5)) + 24)) = test_blob_close
 63731  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd5)) + 40)) = test_blob_bytes
 63732  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd5)) + 56)) = test_blob_read
 63733  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd5)) + 72)) = test_blob_write
 63734  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd6)) + 8)) = register_fs_module
 63735  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd7)) + 8)) = autoinstall_test_funcs
 63736  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd7)) + 24)) = abuse_create_function
 63737  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd7)) + 40)) = install_fts3_rank_function
 63738  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd8)) + 8)) = hexio_read
 63739  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd8)) + 24)) = hexio_write
 63740  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd8)) + 40)) = hexio_get_int
 63741  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd8)) + 56)) = hexio_render_int16
 63742  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd8)) + 72)) = hexio_render_int32
 63743  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd8)) + 88)) = utf8_to_utf8
 63744  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd8)) + 104)) = read_fts3varint
 63745  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd8)) + 120)) = make_fts3record
 63746  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd9)) + 8)) = init_wrapper_install
 63747  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd9)) + 24)) = init_wrapper_query
 63748  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd9)) + 40)) = init_wrapper_uninstall
 63749  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd9)) + 56)) = init_wrapper_clear
 63750  	*(*sqlite3_syscall_ptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 8)) = *(*uintptr)(unsafe.Pointer(&struct {
 63751  		f func(*libc.TLS, uintptr, int32, int32) int32
 63752  	}{ts_open}))
 63753  	*(*sqlite3_syscall_ptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 40)) = *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, int32) int32 }{ts_close}))
 63754  	*(*sqlite3_syscall_ptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 72)) = *(*uintptr)(unsafe.Pointer(&struct {
 63755  		f func(*libc.TLS, uintptr, int32) int32
 63756  	}{ts_access}))
 63757  	*(*sqlite3_syscall_ptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 104)) = *(*uintptr)(unsafe.Pointer(&struct {
 63758  		f func(*libc.TLS, uintptr, size_t) uintptr
 63759  	}{ts_getcwd}))
 63760  	*(*sqlite3_syscall_ptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 136)) = *(*uintptr)(unsafe.Pointer(&struct {
 63761  		f func(*libc.TLS, uintptr, uintptr) int32
 63762  	}{ts_stat}))
 63763  	*(*sqlite3_syscall_ptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 168)) = *(*uintptr)(unsafe.Pointer(&struct {
 63764  		f func(*libc.TLS, int32, uintptr) int32
 63765  	}{ts_fstat}))
 63766  	*(*sqlite3_syscall_ptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 200)) = *(*uintptr)(unsafe.Pointer(&struct {
 63767  		f func(*libc.TLS, int32, off_t) int32
 63768  	}{ts_ftruncate}))
 63769  	*(*sqlite3_syscall_ptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 232)) = *(*uintptr)(unsafe.Pointer(&struct {
 63770  		f func(*libc.TLS, int32, int32, uintptr) int32
 63771  	}{ts_fcntl}))
 63772  	*(*sqlite3_syscall_ptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 264)) = *(*uintptr)(unsafe.Pointer(&struct {
 63773  		f func(*libc.TLS, int32, uintptr, size_t) int32
 63774  	}{ts_read}))
 63775  	*(*sqlite3_syscall_ptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 296)) = *(*uintptr)(unsafe.Pointer(&struct {
 63776  		f func(*libc.TLS, int32, uintptr, size_t, off_t) int32
 63777  	}{ts_pread}))
 63778  	*(*sqlite3_syscall_ptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 328)) = *(*uintptr)(unsafe.Pointer(&struct {
 63779  		f func(*libc.TLS, int32, uintptr, size_t, sqlite3_uint64) int32
 63780  	}{ts_pread64}))
 63781  	*(*sqlite3_syscall_ptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 360)) = *(*uintptr)(unsafe.Pointer(&struct {
 63782  		f func(*libc.TLS, int32, uintptr, size_t) int32
 63783  	}{ts_write}))
 63784  	*(*sqlite3_syscall_ptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 392)) = *(*uintptr)(unsafe.Pointer(&struct {
 63785  		f func(*libc.TLS, int32, uintptr, size_t, off_t) int32
 63786  	}{ts_pwrite}))
 63787  	*(*sqlite3_syscall_ptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 424)) = *(*uintptr)(unsafe.Pointer(&struct {
 63788  		f func(*libc.TLS, int32, uintptr, size_t, sqlite3_uint64) int32
 63789  	}{ts_pwrite64}))
 63790  	*(*sqlite3_syscall_ptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 456)) = *(*uintptr)(unsafe.Pointer(&struct {
 63791  		f func(*libc.TLS, int32, mode_t) int32
 63792  	}{ts_fchmod}))
 63793  	*(*sqlite3_syscall_ptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 488)) = *(*uintptr)(unsafe.Pointer(&struct {
 63794  		f func(*libc.TLS, int32, off_t, off_t) int32
 63795  	}{ts_fallocate}))
 63796  	*(*sqlite3_syscall_ptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 520)) = *(*uintptr)(unsafe.Pointer(&struct {
 63797  		f func(*libc.TLS, uintptr, size_t, int32, int32, int32, off_t) uintptr
 63798  	}{ts_mmap}))
 63799  	*(*sqlite3_syscall_ptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 552)) = *(*uintptr)(unsafe.Pointer(&struct {
 63800  		f func(*libc.TLS, uintptr, size_t, size_t, int32, uintptr) uintptr
 63801  	}{ts_mremap}))
 63802  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&amatchModule)) + 8)) = amatchConnect
 63803  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&amatchModule)) + 16)) = amatchConnect
 63804  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&amatchModule)) + 24)) = amatchBestIndex
 63805  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&amatchModule)) + 32)) = amatchDisconnect
 63806  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&amatchModule)) + 40)) = amatchDisconnect
 63807  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&amatchModule)) + 48)) = amatchOpen
 63808  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&amatchModule)) + 56)) = amatchClose
 63809  	*(*func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&amatchModule)) + 64)) = amatchFilter
 63810  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&amatchModule)) + 72)) = amatchNext
 63811  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&amatchModule)) + 80)) = amatchEof
 63812  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&amatchModule)) + 88)) = amatchColumn
 63813  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&amatchModule)) + 96)) = amatchRowid
 63814  	*(*func(*libc.TLS, uintptr, int32, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&amatchModule)) + 104)) = amatchUpdate
 63815  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_io_methods)) + 8)) = apndClose
 63816  	*(*func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_io_methods)) + 16)) = apndRead
 63817  	*(*func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_io_methods)) + 24)) = apndWrite
 63818  	*(*func(*libc.TLS, uintptr, sqlite3_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_io_methods)) + 32)) = apndTruncate
 63819  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_io_methods)) + 40)) = apndSync
 63820  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_io_methods)) + 48)) = apndFileSize
 63821  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_io_methods)) + 56)) = apndLock
 63822  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_io_methods)) + 64)) = apndUnlock
 63823  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_io_methods)) + 72)) = apndCheckReservedLock
 63824  	*(*func(*libc.TLS, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_io_methods)) + 80)) = apndFileControl
 63825  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_io_methods)) + 88)) = apndSectorSize
 63826  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_io_methods)) + 96)) = apndDeviceCharacteristics
 63827  	*(*func(*libc.TLS, uintptr, int32, int32, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_io_methods)) + 104)) = apndShmMap
 63828  	*(*func(*libc.TLS, uintptr, int32, int32, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_io_methods)) + 112)) = apndShmLock
 63829  	*(*func(*libc.TLS, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_io_methods)) + 120)) = apndShmBarrier
 63830  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_io_methods)) + 128)) = apndShmUnmap
 63831  	*(*func(*libc.TLS, uintptr, sqlite3_int64, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_io_methods)) + 136)) = apndFetch
 63832  	*(*func(*libc.TLS, uintptr, sqlite3_int64, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_io_methods)) + 144)) = apndUnfetch
 63833  	*(*func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_vfs)) + 40)) = apndOpen
 63834  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_vfs)) + 48)) = apndDelete
 63835  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_vfs)) + 56)) = apndAccess
 63836  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_vfs)) + 64)) = apndFullPathname
 63837  	*(*func(*libc.TLS, uintptr, uintptr) uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_vfs)) + 72)) = apndDlOpen
 63838  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_vfs)) + 80)) = apndDlError
 63839  	*(*func(*libc.TLS, uintptr, uintptr, uintptr) uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_vfs)) + 88)) = apndDlSym
 63840  	*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_vfs)) + 96)) = apndDlClose
 63841  	*(*func(*libc.TLS, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_vfs)) + 104)) = apndRandomness
 63842  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_vfs)) + 112)) = apndSleep
 63843  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_vfs)) + 120)) = apndCurrentTime
 63844  	*(*func(*libc.TLS, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_vfs)) + 128)) = apndGetLastError
 63845  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_vfs)) + 136)) = apndCurrentTimeInt64
 63846  	*(*func(*libc.TLS, uintptr, uintptr, sqlite3_syscall_ptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_vfs)) + 144)) = apndSetSystemCall
 63847  	*(*func(*libc.TLS, uintptr, uintptr) sqlite3_syscall_ptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_vfs)) + 152)) = apndGetSystemCall
 63848  	*(*func(*libc.TLS, uintptr, uintptr) uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_vfs)) + 160)) = apndNextSystemCall
 63849  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&carrayModule)) + 16)) = carrayConnect
 63850  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&carrayModule)) + 24)) = carrayBestIndex
 63851  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&carrayModule)) + 32)) = carrayDisconnect
 63852  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&carrayModule)) + 48)) = carrayOpen
 63853  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&carrayModule)) + 56)) = carrayClose
 63854  	*(*func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&carrayModule)) + 64)) = carrayFilter
 63855  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&carrayModule)) + 72)) = carrayNext
 63856  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&carrayModule)) + 80)) = carrayEof
 63857  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&carrayModule)) + 88)) = carrayColumn
 63858  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&carrayModule)) + 96)) = carrayRowid
 63859  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_io_methods)) + 8)) = cksmClose
 63860  	*(*func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_io_methods)) + 16)) = cksmRead
 63861  	*(*func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_io_methods)) + 24)) = cksmWrite
 63862  	*(*func(*libc.TLS, uintptr, sqlite3_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_io_methods)) + 32)) = cksmTruncate
 63863  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_io_methods)) + 40)) = cksmSync
 63864  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_io_methods)) + 48)) = cksmFileSize
 63865  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_io_methods)) + 56)) = cksmLock
 63866  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_io_methods)) + 64)) = cksmUnlock
 63867  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_io_methods)) + 72)) = cksmCheckReservedLock
 63868  	*(*func(*libc.TLS, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_io_methods)) + 80)) = cksmFileControl
 63869  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_io_methods)) + 88)) = cksmSectorSize
 63870  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_io_methods)) + 96)) = cksmDeviceCharacteristics
 63871  	*(*func(*libc.TLS, uintptr, int32, int32, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_io_methods)) + 104)) = cksmShmMap
 63872  	*(*func(*libc.TLS, uintptr, int32, int32, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_io_methods)) + 112)) = cksmShmLock
 63873  	*(*func(*libc.TLS, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_io_methods)) + 120)) = cksmShmBarrier
 63874  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_io_methods)) + 128)) = cksmShmUnmap
 63875  	*(*func(*libc.TLS, uintptr, sqlite3_int64, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_io_methods)) + 136)) = cksmFetch
 63876  	*(*func(*libc.TLS, uintptr, sqlite3_int64, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_io_methods)) + 144)) = cksmUnfetch
 63877  	*(*func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_vfs)) + 40)) = cksmOpen
 63878  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_vfs)) + 48)) = cksmDelete
 63879  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_vfs)) + 56)) = cksmAccess
 63880  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_vfs)) + 64)) = cksmFullPathname
 63881  	*(*func(*libc.TLS, uintptr, uintptr) uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_vfs)) + 72)) = cksmDlOpen
 63882  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_vfs)) + 80)) = cksmDlError
 63883  	*(*func(*libc.TLS, uintptr, uintptr, uintptr) uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_vfs)) + 88)) = cksmDlSym
 63884  	*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_vfs)) + 96)) = cksmDlClose
 63885  	*(*func(*libc.TLS, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_vfs)) + 104)) = cksmRandomness
 63886  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_vfs)) + 112)) = cksmSleep
 63887  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_vfs)) + 120)) = cksmCurrentTime
 63888  	*(*func(*libc.TLS, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_vfs)) + 128)) = cksmGetLastError
 63889  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_vfs)) + 136)) = cksmCurrentTimeInt64
 63890  	*(*func(*libc.TLS, uintptr, uintptr, sqlite3_syscall_ptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_vfs)) + 144)) = cksmSetSystemCall
 63891  	*(*func(*libc.TLS, uintptr, uintptr) sqlite3_syscall_ptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_vfs)) + 152)) = cksmGetSystemCall
 63892  	*(*func(*libc.TLS, uintptr, uintptr) uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_vfs)) + 160)) = cksmNextSystemCall
 63893  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&closureModule)) + 8)) = closureConnect
 63894  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&closureModule)) + 16)) = closureConnect
 63895  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&closureModule)) + 24)) = closureBestIndex
 63896  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&closureModule)) + 32)) = closureDisconnect
 63897  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&closureModule)) + 40)) = closureDisconnect
 63898  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&closureModule)) + 48)) = closureOpen
 63899  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&closureModule)) + 56)) = closureClose
 63900  	*(*func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&closureModule)) + 64)) = closureFilter
 63901  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&closureModule)) + 72)) = closureNext
 63902  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&closureModule)) + 80)) = closureEof
 63903  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&closureModule)) + 88)) = closureColumn
 63904  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&closureModule)) + 96)) = closureRowid
 63905  	*(*func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&crashVfs)) + 40)) = cfOpen
 63906  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&crashVfs)) + 48)) = cfDelete
 63907  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&crashVfs)) + 56)) = cfAccess
 63908  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&crashVfs)) + 64)) = cfFullPathname
 63909  	*(*func(*libc.TLS, uintptr, uintptr) uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&crashVfs)) + 72)) = cfDlOpen
 63910  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&crashVfs)) + 80)) = cfDlError
 63911  	*(*func(*libc.TLS, uintptr, uintptr, uintptr) uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&crashVfs)) + 88)) = cfDlSym
 63912  	*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&crashVfs)) + 96)) = cfDlClose
 63913  	*(*func(*libc.TLS, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&crashVfs)) + 104)) = cfRandomness
 63914  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&crashVfs)) + 112)) = cfSleep
 63915  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&crashVfs)) + 120)) = cfCurrentTime
 63916  	*(*func(*libc.TLS, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&crashVfs)) + 128)) = cfGetLastError
 63917  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&demoio)) + 8)) = demoClose
 63918  	*(*func(*libc.TLS, uintptr, uintptr, int32, sqlite_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&demoio)) + 16)) = demoRead
 63919  	*(*func(*libc.TLS, uintptr, uintptr, int32, sqlite_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&demoio)) + 24)) = demoWrite
 63920  	*(*func(*libc.TLS, uintptr, sqlite_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&demoio)) + 32)) = demoTruncate
 63921  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&demoio)) + 40)) = demoSync
 63922  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&demoio)) + 48)) = demoFileSize
 63923  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&demoio)) + 56)) = demoLock
 63924  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&demoio)) + 64)) = demoUnlock
 63925  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&demoio)) + 72)) = demoCheckReservedLock
 63926  	*(*func(*libc.TLS, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&demoio)) + 80)) = demoFileControl
 63927  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&demoio)) + 88)) = demoSectorSize
 63928  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&demoio)) + 96)) = demoDeviceCharacteristics
 63929  	*(*func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&demovfs)) + 40)) = demoOpen
 63930  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&demovfs)) + 48)) = demoDelete
 63931  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&demovfs)) + 56)) = demoAccess
 63932  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&demovfs)) + 64)) = demoFullPathname
 63933  	*(*func(*libc.TLS, uintptr, uintptr) uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&demovfs)) + 72)) = demoDlOpen
 63934  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&demovfs)) + 80)) = demoDlError
 63935  	*(*func(*libc.TLS, uintptr, uintptr, uintptr) uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&demovfs)) + 88)) = demoDlSym
 63936  	*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&demovfs)) + 96)) = demoDlClose
 63937  	*(*func(*libc.TLS, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&demovfs)) + 104)) = demoRandomness
 63938  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&demovfs)) + 112)) = demoSleep
 63939  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&demovfs)) + 120)) = demoCurrentTime
 63940  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&devsym_io_methods)) + 8)) = devsymClose
 63941  	*(*func(*libc.TLS, uintptr, uintptr, int32, sqlite_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&devsym_io_methods)) + 16)) = devsymRead
 63942  	*(*func(*libc.TLS, uintptr, uintptr, int32, sqlite_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&devsym_io_methods)) + 24)) = devsymWrite
 63943  	*(*func(*libc.TLS, uintptr, sqlite_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&devsym_io_methods)) + 32)) = devsymTruncate
 63944  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&devsym_io_methods)) + 40)) = devsymSync
 63945  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&devsym_io_methods)) + 48)) = devsymFileSize
 63946  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&devsym_io_methods)) + 56)) = devsymLock
 63947  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&devsym_io_methods)) + 64)) = devsymUnlock
 63948  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&devsym_io_methods)) + 72)) = devsymCheckReservedLock
 63949  	*(*func(*libc.TLS, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&devsym_io_methods)) + 80)) = devsymFileControl
 63950  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&devsym_io_methods)) + 88)) = devsymSectorSize
 63951  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&devsym_io_methods)) + 96)) = devsymDeviceCharacteristics
 63952  	*(*func(*libc.TLS, uintptr, int32, int32, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&devsym_io_methods)) + 104)) = devsymShmMap
 63953  	*(*func(*libc.TLS, uintptr, int32, int32, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&devsym_io_methods)) + 112)) = devsymShmLock
 63954  	*(*func(*libc.TLS, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&devsym_io_methods)) + 120)) = devsymShmBarrier
 63955  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&devsym_io_methods)) + 128)) = devsymShmUnmap
 63956  	*(*func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&devsym_vfs)) + 40)) = devsymOpen
 63957  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&devsym_vfs)) + 48)) = devsymDelete
 63958  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&devsym_vfs)) + 56)) = devsymAccess
 63959  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&devsym_vfs)) + 64)) = devsymFullPathname
 63960  	*(*func(*libc.TLS, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&devsym_vfs)) + 104)) = devsymRandomness
 63961  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&devsym_vfs)) + 112)) = devsymSleep
 63962  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&devsym_vfs)) + 120)) = devsymCurrentTime
 63963  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModule)) + 8)) = echoCreate
 63964  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModule)) + 16)) = echoConnect
 63965  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModule)) + 24)) = echoBestIndex
 63966  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModule)) + 32)) = echoDisconnect
 63967  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModule)) + 40)) = echoDestroy
 63968  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModule)) + 48)) = echoOpen
 63969  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModule)) + 56)) = echoClose
 63970  	*(*func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModule)) + 64)) = echoFilter
 63971  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModule)) + 72)) = echoNext
 63972  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModule)) + 80)) = echoEof
 63973  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModule)) + 88)) = echoColumn
 63974  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModule)) + 96)) = echoRowid
 63975  	*(*func(*libc.TLS, uintptr, int32, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModule)) + 104)) = echoUpdate
 63976  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModule)) + 112)) = echoBegin
 63977  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModule)) + 120)) = echoSync
 63978  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModule)) + 128)) = echoCommit
 63979  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModule)) + 136)) = echoRollback
 63980  	*(*func(*libc.TLS, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModule)) + 144)) = echoFindFunction
 63981  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModule)) + 152)) = echoRename
 63982  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModuleV2)) + 8)) = echoCreate
 63983  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModuleV2)) + 16)) = echoConnect
 63984  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModuleV2)) + 24)) = echoBestIndex
 63985  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModuleV2)) + 32)) = echoDisconnect
 63986  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModuleV2)) + 40)) = echoDestroy
 63987  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModuleV2)) + 48)) = echoOpen
 63988  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModuleV2)) + 56)) = echoClose
 63989  	*(*func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModuleV2)) + 64)) = echoFilter
 63990  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModuleV2)) + 72)) = echoNext
 63991  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModuleV2)) + 80)) = echoEof
 63992  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModuleV2)) + 88)) = echoColumn
 63993  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModuleV2)) + 96)) = echoRowid
 63994  	*(*func(*libc.TLS, uintptr, int32, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModuleV2)) + 104)) = echoUpdate
 63995  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModuleV2)) + 112)) = echoBegin
 63996  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModuleV2)) + 120)) = echoSync
 63997  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModuleV2)) + 128)) = echoCommit
 63998  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModuleV2)) + 136)) = echoRollback
 63999  	*(*func(*libc.TLS, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModuleV2)) + 144)) = echoFindFunction
 64000  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModuleV2)) + 152)) = echoRename
 64001  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModuleV2)) + 160)) = echoSavepoint
 64002  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModuleV2)) + 168)) = echoRelease
 64003  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModuleV2)) + 176)) = echoRollbackTo
 64004  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&expertModule)) + 8)) = expertConnect
 64005  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&expertModule)) + 16)) = expertConnect
 64006  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&expertModule)) + 24)) = expertBestIndex
 64007  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&expertModule)) + 32)) = expertDisconnect
 64008  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&expertModule)) + 40)) = expertDisconnect
 64009  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&expertModule)) + 48)) = expertOpen
 64010  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&expertModule)) + 56)) = expertClose
 64011  	*(*func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&expertModule)) + 64)) = expertFilter
 64012  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&expertModule)) + 72)) = expertNext
 64013  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&expertModule)) + 80)) = expertEof
 64014  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&expertModule)) + 88)) = expertColumn
 64015  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&expertModule)) + 96)) = expertRowid
 64016  	*(*func(*libc.TLS, uintptr, int32, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&expertModule)) + 104)) = expertUpdate
 64017  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&explainModule)) + 16)) = explainConnect
 64018  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&explainModule)) + 24)) = explainBestIndex
 64019  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&explainModule)) + 32)) = explainDisconnect
 64020  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&explainModule)) + 48)) = explainOpen
 64021  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&explainModule)) + 56)) = explainClose
 64022  	*(*func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&explainModule)) + 64)) = explainFilter
 64023  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&explainModule)) + 72)) = explainNext
 64024  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&explainModule)) + 80)) = explainEof
 64025  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&explainModule)) + 88)) = explainColumn
 64026  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&explainModule)) + 96)) = explainRowid
 64027  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsModule)) + 8)) = fsConnect
 64028  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsModule)) + 16)) = fsConnect
 64029  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsModule)) + 24)) = fsBestIndex
 64030  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsModule)) + 32)) = fsDisconnect
 64031  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsModule)) + 40)) = fsDisconnect
 64032  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsModule)) + 48)) = fsOpen
 64033  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsModule)) + 56)) = fsClose
 64034  	*(*func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsModule)) + 64)) = fsFilter
 64035  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsModule)) + 72)) = fsNext
 64036  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsModule)) + 80)) = fsEof
 64037  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsModule)) + 88)) = fsColumn
 64038  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsModule)) + 96)) = fsRowid
 64039  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fs_io_methods)) + 8)) = fsClose1
 64040  	*(*func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fs_io_methods)) + 16)) = fsRead
 64041  	*(*func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fs_io_methods)) + 24)) = fsWrite
 64042  	*(*func(*libc.TLS, uintptr, sqlite3_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fs_io_methods)) + 32)) = fsTruncate
 64043  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fs_io_methods)) + 40)) = fsSync
 64044  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fs_io_methods)) + 48)) = fsFileSize
 64045  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fs_io_methods)) + 56)) = fsLock
 64046  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fs_io_methods)) + 64)) = fsUnlock
 64047  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fs_io_methods)) + 72)) = fsCheckReservedLock
 64048  	*(*func(*libc.TLS, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fs_io_methods)) + 80)) = fsFileControl
 64049  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fs_io_methods)) + 88)) = fsSectorSize
 64050  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fs_io_methods)) + 96)) = fsDeviceCharacteristics
 64051  	*(*func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fs_vfs)) + 40)) = fsOpen1
 64052  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fs_vfs)) + 48)) = fsDelete
 64053  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fs_vfs)) + 56)) = fsAccess
 64054  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fs_vfs)) + 64)) = fsFullPathname
 64055  	*(*func(*libc.TLS, uintptr, uintptr) uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&fs_vfs)) + 72)) = fsDlOpen
 64056  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&fs_vfs)) + 80)) = fsDlError
 64057  	*(*func(*libc.TLS, uintptr, uintptr, uintptr) uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&fs_vfs)) + 88)) = fsDlSym
 64058  	*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&fs_vfs)) + 96)) = fsDlClose
 64059  	*(*func(*libc.TLS, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fs_vfs)) + 104)) = fsRandomness
 64060  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fs_vfs)) + 112)) = fsSleep
 64061  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fs_vfs)) + 120)) = fsCurrentTime
 64062  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsdirModule)) + 8)) = fsdirConnect1
 64063  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsdirModule)) + 16)) = fsdirConnect1
 64064  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsdirModule)) + 24)) = fsdirBestIndex1
 64065  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsdirModule)) + 32)) = fsdirDisconnect1
 64066  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsdirModule)) + 40)) = fsdirDisconnect1
 64067  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsdirModule)) + 48)) = fsdirOpen1
 64068  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsdirModule)) + 56)) = fsdirClose1
 64069  	*(*func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsdirModule)) + 64)) = fsdirFilter1
 64070  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsdirModule)) + 72)) = fsdirNext1
 64071  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsdirModule)) + 80)) = fsdirEof1
 64072  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsdirModule)) + 88)) = fsdirColumn1
 64073  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsdirModule)) + 96)) = fsdirRowid1
 64074  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsdirModule1)) + 16)) = fsdirConnect
 64075  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsdirModule1)) + 24)) = fsdirBestIndex
 64076  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsdirModule1)) + 32)) = fsdirDisconnect
 64077  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsdirModule1)) + 48)) = fsdirOpen
 64078  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsdirModule1)) + 56)) = fsdirClose
 64079  	*(*func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsdirModule1)) + 64)) = fsdirFilter
 64080  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsdirModule1)) + 72)) = fsdirNext
 64081  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsdirModule1)) + 80)) = fsdirEof
 64082  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsdirModule1)) + 88)) = fsdirColumn
 64083  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsdirModule1)) + 96)) = fsdirRowid
 64084  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fstreeModule)) + 8)) = fstreeConnect
 64085  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fstreeModule)) + 16)) = fstreeConnect
 64086  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fstreeModule)) + 24)) = fstreeBestIndex
 64087  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fstreeModule)) + 32)) = fstreeDisconnect
 64088  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fstreeModule)) + 40)) = fstreeDisconnect
 64089  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fstreeModule)) + 48)) = fstreeOpen
 64090  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fstreeModule)) + 56)) = fstreeClose
 64091  	*(*func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fstreeModule)) + 64)) = fstreeFilter
 64092  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fstreeModule)) + 72)) = fstreeNext
 64093  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fstreeModule)) + 80)) = fstreeEof
 64094  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fstreeModule)) + 88)) = fstreeColumn
 64095  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fstreeModule)) + 96)) = fstreeRowid
 64096  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fts5tok_module)) + 8)) = fts5tokConnectMethod
 64097  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fts5tok_module)) + 16)) = fts5tokConnectMethod
 64098  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fts5tok_module)) + 24)) = fts5tokBestIndexMethod
 64099  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fts5tok_module)) + 32)) = fts5tokDisconnectMethod
 64100  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fts5tok_module)) + 40)) = fts5tokDisconnectMethod
 64101  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fts5tok_module)) + 48)) = fts5tokOpenMethod
 64102  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fts5tok_module)) + 56)) = fts5tokCloseMethod
 64103  	*(*func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fts5tok_module)) + 64)) = fts5tokFilterMethod
 64104  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fts5tok_module)) + 72)) = fts5tokNextMethod
 64105  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fts5tok_module)) + 80)) = fts5tokEofMethod
 64106  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fts5tok_module)) + 88)) = fts5tokColumnMethod
 64107  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fts5tok_module)) + 96)) = fts5tokRowidMethod
 64108  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fuzzerModule)) + 8)) = fuzzerConnect
 64109  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fuzzerModule)) + 16)) = fuzzerConnect
 64110  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fuzzerModule)) + 24)) = fuzzerBestIndex
 64111  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fuzzerModule)) + 32)) = fuzzerDisconnect
 64112  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fuzzerModule)) + 40)) = fuzzerDisconnect
 64113  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fuzzerModule)) + 48)) = fuzzerOpen
 64114  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fuzzerModule)) + 56)) = fuzzerClose
 64115  	*(*func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fuzzerModule)) + 64)) = fuzzerFilter
 64116  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fuzzerModule)) + 72)) = fuzzerNext
 64117  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fuzzerModule)) + 80)) = fuzzerEof
 64118  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fuzzerModule)) + 88)) = fuzzerColumn
 64119  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fuzzerModule)) + 96)) = fuzzerRowid
 64120  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&intarrayModule)) + 8)) = intarrayCreate
 64121  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&intarrayModule)) + 16)) = intarrayCreate
 64122  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&intarrayModule)) + 24)) = intarrayBestIndex
 64123  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&intarrayModule)) + 32)) = intarrayDestroy
 64124  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&intarrayModule)) + 40)) = intarrayDestroy
 64125  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&intarrayModule)) + 48)) = intarrayOpen
 64126  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&intarrayModule)) + 56)) = intarrayClose
 64127  	*(*func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&intarrayModule)) + 64)) = intarrayFilter
 64128  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&intarrayModule)) + 72)) = intarrayNext
 64129  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&intarrayModule)) + 80)) = intarrayEof
 64130  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&intarrayModule)) + 88)) = intarrayColumn
 64131  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&intarrayModule)) + 96)) = intarrayRowid
 64132  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&jt_io_methods)) + 8)) = jtClose
 64133  	*(*func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&jt_io_methods)) + 16)) = jtRead
 64134  	*(*func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&jt_io_methods)) + 24)) = jtWrite
 64135  	*(*func(*libc.TLS, uintptr, sqlite3_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&jt_io_methods)) + 32)) = jtTruncate
 64136  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&jt_io_methods)) + 40)) = jtSync
 64137  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&jt_io_methods)) + 48)) = jtFileSize
 64138  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&jt_io_methods)) + 56)) = jtLock
 64139  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&jt_io_methods)) + 64)) = jtUnlock
 64140  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&jt_io_methods)) + 72)) = jtCheckReservedLock
 64141  	*(*func(*libc.TLS, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&jt_io_methods)) + 80)) = jtFileControl
 64142  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&jt_io_methods)) + 88)) = jtSectorSize
 64143  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&jt_io_methods)) + 96)) = jtDeviceCharacteristics
 64144  	*(*func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&jt_vfs)) + 40)) = jtOpen
 64145  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&jt_vfs)) + 48)) = jtDelete
 64146  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&jt_vfs)) + 56)) = jtAccess
 64147  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&jt_vfs)) + 64)) = jtFullPathname
 64148  	*(*func(*libc.TLS, uintptr, uintptr) uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&jt_vfs)) + 72)) = jtDlOpen
 64149  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&jt_vfs)) + 80)) = jtDlError
 64150  	*(*func(*libc.TLS, uintptr, uintptr, uintptr) uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&jt_vfs)) + 88)) = jtDlSym
 64151  	*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&jt_vfs)) + 96)) = jtDlClose
 64152  	*(*func(*libc.TLS, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&jt_vfs)) + 104)) = jtRandomness
 64153  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&jt_vfs)) + 112)) = jtSleep
 64154  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&jt_vfs)) + 120)) = jtCurrentTime
 64155  	*(*func(*libc.TLS, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&jt_vfs)) + 128)) = jtGetLastError
 64156  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&jt_vfs)) + 136)) = jtCurrentTimeInt64
 64157  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&prefixesModule)) + 16)) = prefixesConnect
 64158  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&prefixesModule)) + 24)) = prefixesBestIndex
 64159  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&prefixesModule)) + 32)) = prefixesDisconnect
 64160  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&prefixesModule)) + 48)) = prefixesOpen
 64161  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&prefixesModule)) + 56)) = prefixesClose
 64162  	*(*func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&prefixesModule)) + 64)) = prefixesFilter
 64163  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&prefixesModule)) + 72)) = prefixesNext
 64164  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&prefixesModule)) + 80)) = prefixesEof
 64165  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&prefixesModule)) + 88)) = prefixesColumn
 64166  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&prefixesModule)) + 96)) = prefixesRowid
 64167  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&pzNeededCollation)) + 0)) = uintptr(unsafe.Pointer(&zNeededCollation))
 64168  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&qpvtabModule)) + 16)) = qpvtabConnect
 64169  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&qpvtabModule)) + 24)) = qpvtabBestIndex
 64170  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&qpvtabModule)) + 32)) = qpvtabDisconnect
 64171  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&qpvtabModule)) + 48)) = qpvtabOpen
 64172  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&qpvtabModule)) + 56)) = qpvtabClose
 64173  	*(*func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&qpvtabModule)) + 64)) = qpvtabFilter
 64174  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&qpvtabModule)) + 72)) = qpvtabNext
 64175  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&qpvtabModule)) + 80)) = qpvtabEof
 64176  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&qpvtabModule)) + 88)) = qpvtabColumn
 64177  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&qpvtabModule)) + 96)) = qpvtabRowid
 64178  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&schemaModule)) + 8)) = schemaCreate
 64179  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&schemaModule)) + 16)) = schemaCreate
 64180  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&schemaModule)) + 24)) = schemaBestIndex
 64181  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&schemaModule)) + 32)) = schemaDestroy
 64182  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&schemaModule)) + 40)) = schemaDestroy
 64183  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&schemaModule)) + 48)) = schemaOpen
 64184  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&schemaModule)) + 56)) = schemaClose
 64185  	*(*func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&schemaModule)) + 64)) = schemaFilter
 64186  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&schemaModule)) + 72)) = schemaNext
 64187  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&schemaModule)) + 80)) = schemaEof
 64188  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&schemaModule)) + 88)) = schemaColumn
 64189  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&schemaModule)) + 96)) = schemaRowid
 64190  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&seriesModule)) + 16)) = seriesConnect
 64191  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&seriesModule)) + 24)) = seriesBestIndex
 64192  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&seriesModule)) + 32)) = seriesDisconnect
 64193  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&seriesModule)) + 48)) = seriesOpen
 64194  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&seriesModule)) + 56)) = seriesClose
 64195  	*(*func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&seriesModule)) + 64)) = seriesFilter
 64196  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&seriesModule)) + 72)) = seriesNext
 64197  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&seriesModule)) + 80)) = seriesEof
 64198  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&seriesModule)) + 88)) = seriesColumn
 64199  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&seriesModule)) + 96)) = seriesRowid
 64200  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&spellfix1Module)) + 8)) = spellfix1Create
 64201  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&spellfix1Module)) + 16)) = spellfix1Connect
 64202  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&spellfix1Module)) + 24)) = spellfix1BestIndex
 64203  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&spellfix1Module)) + 32)) = spellfix1Disconnect
 64204  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&spellfix1Module)) + 40)) = spellfix1Destroy
 64205  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&spellfix1Module)) + 48)) = spellfix1Open
 64206  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&spellfix1Module)) + 56)) = spellfix1Close
 64207  	*(*func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&spellfix1Module)) + 64)) = spellfix1Filter
 64208  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&spellfix1Module)) + 72)) = spellfix1Next
 64209  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&spellfix1Module)) + 80)) = spellfix1Eof
 64210  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&spellfix1Module)) + 88)) = spellfix1Column
 64211  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&spellfix1Module)) + 96)) = spellfix1Rowid
 64212  	*(*func(*libc.TLS, uintptr, int32, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&spellfix1Module)) + 104)) = spellfix1Update
 64213  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&spellfix1Module)) + 152)) = spellfix1Rename
 64214  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tclModule)) + 8)) = tclConnect
 64215  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tclModule)) + 16)) = tclConnect
 64216  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tclModule)) + 24)) = tclBestIndex
 64217  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tclModule)) + 32)) = tclDisconnect
 64218  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tclModule)) + 40)) = tclDisconnect
 64219  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tclModule)) + 48)) = tclOpen
 64220  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tclModule)) + 56)) = tclClose
 64221  	*(*func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tclModule)) + 64)) = tclFilter
 64222  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tclModule)) + 72)) = tclNext
 64223  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tclModule)) + 80)) = tclEof
 64224  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tclModule)) + 88)) = tclColumn
 64225  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tclModule)) + 96)) = tclRowid
 64226  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tclvarModule)) + 8)) = tclvarConnect
 64227  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tclvarModule)) + 16)) = tclvarConnect
 64228  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tclvarModule)) + 24)) = tclvarBestIndex
 64229  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tclvarModule)) + 32)) = tclvarDisconnect
 64230  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tclvarModule)) + 40)) = tclvarDisconnect
 64231  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tclvarModule)) + 48)) = tclvarOpen
 64232  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tclvarModule)) + 56)) = tclvarClose
 64233  	*(*func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tclvarModule)) + 64)) = tclvarFilter
 64234  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tclvarModule)) + 72)) = tclvarNext
 64235  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tclvarModule)) + 80)) = tclvarEof
 64236  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tclvarModule)) + 88)) = tclvarColumn
 64237  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tclvarModule)) + 96)) = tclvarRowid
 64238  	*(*func(*libc.TLS, uintptr, int32, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tclvarModule)) + 104)) = tclvarUpdate
 64239  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&testPcache)) + 8)) = uintptr(unsafe.Pointer(&testpcacheGlobal))
 64240  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&testPcache)) + 16)) = testpcacheInit
 64241  	*(*func(*libc.TLS, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&testPcache)) + 24)) = testpcacheShutdown
 64242  	*(*func(*libc.TLS, int32, int32, int32) uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&testPcache)) + 32)) = testpcacheCreate
 64243  	*(*func(*libc.TLS, uintptr, int32))(unsafe.Pointer(uintptr(unsafe.Pointer(&testPcache)) + 40)) = testpcacheCachesize
 64244  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&testPcache)) + 48)) = testpcachePagecount
 64245  	*(*func(*libc.TLS, uintptr, uint32, int32) uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&testPcache)) + 56)) = testpcacheFetch
 64246  	*(*func(*libc.TLS, uintptr, uintptr, int32))(unsafe.Pointer(uintptr(unsafe.Pointer(&testPcache)) + 64)) = testpcacheUnpin
 64247  	*(*func(*libc.TLS, uintptr, uintptr, uint32, uint32))(unsafe.Pointer(uintptr(unsafe.Pointer(&testPcache)) + 72)) = testpcacheRekey
 64248  	*(*func(*libc.TLS, uintptr, uint32))(unsafe.Pointer(uintptr(unsafe.Pointer(&testPcache)) + 80)) = testpcacheTruncate
 64249  	*(*func(*libc.TLS, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&testPcache)) + 88)) = testpcacheDestroy
 64250  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tmp_io_methods)) + 8)) = tmpClose
 64251  	*(*func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tmp_io_methods)) + 16)) = tmpRead
 64252  	*(*func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tmp_io_methods)) + 24)) = tmpWrite
 64253  	*(*func(*libc.TLS, uintptr, sqlite3_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tmp_io_methods)) + 32)) = tmpTruncate
 64254  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tmp_io_methods)) + 40)) = tmpSync
 64255  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tmp_io_methods)) + 48)) = tmpFileSize
 64256  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tmp_io_methods)) + 56)) = tmpLock
 64257  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tmp_io_methods)) + 64)) = tmpUnlock
 64258  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tmp_io_methods)) + 72)) = tmpCheckReservedLock
 64259  	*(*func(*libc.TLS, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tmp_io_methods)) + 80)) = tmpFileControl
 64260  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tmp_io_methods)) + 88)) = tmpSectorSize
 64261  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tmp_io_methods)) + 96)) = tmpDeviceCharacteristics
 64262  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tvfs_io_methods)) + 8)) = tvfsClose
 64263  	*(*func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tvfs_io_methods)) + 16)) = tvfsRead
 64264  	*(*func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tvfs_io_methods)) + 24)) = tvfsWrite
 64265  	*(*func(*libc.TLS, uintptr, sqlite3_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tvfs_io_methods)) + 32)) = tvfsTruncate
 64266  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tvfs_io_methods)) + 40)) = tvfsSync
 64267  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tvfs_io_methods)) + 48)) = tvfsFileSize
 64268  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tvfs_io_methods)) + 56)) = tvfsLock
 64269  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tvfs_io_methods)) + 64)) = tvfsUnlock
 64270  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tvfs_io_methods)) + 72)) = tvfsCheckReservedLock
 64271  	*(*func(*libc.TLS, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tvfs_io_methods)) + 80)) = tvfsFileControl
 64272  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tvfs_io_methods)) + 88)) = tvfsSectorSize
 64273  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tvfs_io_methods)) + 96)) = tvfsDeviceCharacteristics
 64274  	*(*func(*libc.TLS, uintptr, int32, int32, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tvfs_io_methods)) + 104)) = tvfsShmMap
 64275  	*(*func(*libc.TLS, uintptr, int32, int32, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tvfs_io_methods)) + 112)) = tvfsShmLock
 64276  	*(*func(*libc.TLS, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&tvfs_io_methods)) + 120)) = tvfsShmBarrier
 64277  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tvfs_io_methods)) + 128)) = tvfsShmUnmap
 64278  	*(*func(*libc.TLS, uintptr, sqlite3_int64, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tvfs_io_methods)) + 136)) = tvfsFetch
 64279  	*(*func(*libc.TLS, uintptr, sqlite3_int64, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tvfs_io_methods)) + 144)) = tvfsUnfetch
 64280  	*(*func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tvfs_vfs)) + 40)) = tvfsOpen
 64281  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tvfs_vfs)) + 48)) = tvfsDelete
 64282  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tvfs_vfs)) + 56)) = tvfsAccess
 64283  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tvfs_vfs)) + 64)) = tvfsFullPathname
 64284  	*(*func(*libc.TLS, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tvfs_vfs)) + 104)) = tvfsRandomness
 64285  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tvfs_vfs)) + 112)) = tvfsSleep
 64286  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tvfs_vfs)) + 120)) = tvfsCurrentTime
 64287  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&unionModule)) + 8)) = unionConnect
 64288  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&unionModule)) + 16)) = unionConnect
 64289  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&unionModule)) + 24)) = unionBestIndex
 64290  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&unionModule)) + 32)) = unionDisconnect
 64291  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&unionModule)) + 40)) = unionDisconnect
 64292  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&unionModule)) + 48)) = unionOpen
 64293  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&unionModule)) + 56)) = unionClose
 64294  	*(*func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&unionModule)) + 64)) = unionFilter
 64295  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&unionModule)) + 72)) = unionNext
 64296  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&unionModule)) + 80)) = unionEof
 64297  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&unionModule)) + 88)) = unionColumn
 64298  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&unionModule)) + 96)) = unionRowid
 64299  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_io_methods)) + 8)) = vfslogClose
 64300  	*(*func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_io_methods)) + 16)) = vfslogRead
 64301  	*(*func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_io_methods)) + 24)) = vfslogWrite
 64302  	*(*func(*libc.TLS, uintptr, sqlite3_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_io_methods)) + 32)) = vfslogTruncate
 64303  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_io_methods)) + 40)) = vfslogSync
 64304  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_io_methods)) + 48)) = vfslogFileSize
 64305  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_io_methods)) + 56)) = vfslogLock
 64306  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_io_methods)) + 64)) = vfslogUnlock
 64307  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_io_methods)) + 72)) = vfslogCheckReservedLock
 64308  	*(*func(*libc.TLS, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_io_methods)) + 80)) = vfslogFileControl
 64309  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_io_methods)) + 88)) = vfslogSectorSize
 64310  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_io_methods)) + 96)) = vfslogDeviceCharacteristics
 64311  	*(*func(*libc.TLS, uintptr, int32, int32, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_io_methods)) + 104)) = vfslogShmMap
 64312  	*(*func(*libc.TLS, uintptr, int32, int32, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_io_methods)) + 112)) = vfslogShmLock
 64313  	*(*func(*libc.TLS, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_io_methods)) + 120)) = vfslogShmBarrier
 64314  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_io_methods)) + 128)) = vfslogShmUnmap
 64315  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_module)) + 8)) = vlogConnect
 64316  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_module)) + 16)) = vlogConnect
 64317  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_module)) + 24)) = vlogBestIndex
 64318  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_module)) + 32)) = vlogDisconnect
 64319  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_module)) + 40)) = vlogDisconnect
 64320  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_module)) + 48)) = vlogOpen
 64321  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_module)) + 56)) = vlogClose
 64322  	*(*func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_module)) + 64)) = vlogFilter
 64323  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_module)) + 72)) = vlogNext
 64324  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_module)) + 80)) = vlogEof
 64325  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_module)) + 88)) = vlogColumn
 64326  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_module)) + 96)) = vlogRowid
 64327  	*(*func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_vfs)) + 40)) = vfslogOpen
 64328  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_vfs)) + 48)) = vfslogDelete
 64329  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_vfs)) + 56)) = vfslogAccess
 64330  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_vfs)) + 64)) = vfslogFullPathname
 64331  	*(*func(*libc.TLS, uintptr, uintptr) uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_vfs)) + 72)) = vfslogDlOpen
 64332  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_vfs)) + 80)) = vfslogDlError
 64333  	*(*func(*libc.TLS, uintptr, uintptr, uintptr) uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_vfs)) + 88)) = vfslogDlSym
 64334  	*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_vfs)) + 96)) = vfslogDlClose
 64335  	*(*func(*libc.TLS, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_vfs)) + 104)) = vfslogRandomness
 64336  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_vfs)) + 112)) = vfslogSleep
 64337  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_vfs)) + 120)) = vfslogCurrentTime
 64338  	*(*func(*libc.TLS, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_vfs)) + 128)) = vfslogGetLastError
 64339  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_vfs)) + 136)) = vfslogCurrentTimeInt64
 64340  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&wholenumberModule)) + 8)) = wholenumberConnect
 64341  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&wholenumberModule)) + 16)) = wholenumberConnect
 64342  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&wholenumberModule)) + 24)) = wholenumberBestIndex
 64343  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&wholenumberModule)) + 32)) = wholenumberDisconnect
 64344  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&wholenumberModule)) + 40)) = wholenumberDisconnect
 64345  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&wholenumberModule)) + 48)) = wholenumberOpen
 64346  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&wholenumberModule)) + 56)) = wholenumberClose
 64347  	*(*func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&wholenumberModule)) + 64)) = wholenumberFilter
 64348  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&wholenumberModule)) + 72)) = wholenumberNext
 64349  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&wholenumberModule)) + 80)) = wholenumberEof
 64350  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&wholenumberModule)) + 88)) = wholenumberColumn
 64351  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&wholenumberModule)) + 96)) = wholenumberRowid
 64352  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&writecrash_io_methods)) + 8)) = devsymClose
 64353  	*(*func(*libc.TLS, uintptr, uintptr, int32, sqlite_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&writecrash_io_methods)) + 16)) = devsymRead
 64354  	*(*func(*libc.TLS, uintptr, uintptr, int32, sqlite_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&writecrash_io_methods)) + 24)) = writecrashWrite
 64355  	*(*func(*libc.TLS, uintptr, sqlite_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&writecrash_io_methods)) + 32)) = devsymTruncate
 64356  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&writecrash_io_methods)) + 40)) = devsymSync
 64357  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&writecrash_io_methods)) + 48)) = devsymFileSize
 64358  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&writecrash_io_methods)) + 56)) = devsymLock
 64359  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&writecrash_io_methods)) + 64)) = devsymUnlock
 64360  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&writecrash_io_methods)) + 72)) = devsymCheckReservedLock
 64361  	*(*func(*libc.TLS, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&writecrash_io_methods)) + 80)) = devsymFileControl
 64362  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&writecrash_io_methods)) + 88)) = writecrashSectorSize
 64363  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&writecrash_io_methods)) + 96)) = writecrashDeviceCharacteristics
 64364  	*(*func(*libc.TLS, uintptr, int32, int32, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&writecrash_io_methods)) + 104)) = devsymShmMap
 64365  	*(*func(*libc.TLS, uintptr, int32, int32, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&writecrash_io_methods)) + 112)) = devsymShmLock
 64366  	*(*func(*libc.TLS, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&writecrash_io_methods)) + 120)) = devsymShmBarrier
 64367  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&writecrash_io_methods)) + 128)) = devsymShmUnmap
 64368  	*(*func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&writecrash_vfs)) + 40)) = writecrashOpen
 64369  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&writecrash_vfs)) + 48)) = devsymDelete
 64370  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&writecrash_vfs)) + 56)) = devsymAccess
 64371  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&writecrash_vfs)) + 64)) = devsymFullPathname
 64372  	*(*func(*libc.TLS, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&writecrash_vfs)) + 104)) = devsymRandomness
 64373  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&writecrash_vfs)) + 112)) = devsymSleep
 64374  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&writecrash_vfs)) + 120)) = devsymCurrentTime
 64375  }
 64376  
 64377  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\x00PWD too big\x00%s/test.proxy\x00Lock proxy file did not match the previously assigned value\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\x00sqlite_hostid_num\x00sqlite3_xferopt_count\x00sqlite3_pager_readdb_count\x00sqlite3_pager_writedb_count\x00sqlite3_pager_writej_count\x00unaligned_string_counter\x00sqlite_last_needed_collation\x00sqlite_query_plan\x00sqlite_opentemp_count\x00sqlite_static_bind_value\x00sqlite_static_bind_nbyte\x00sqlite_temp_directory\x00sqlite_data_directory\x00bitmask_size\x00longdouble_size\x00sqlite_sync_count\x00sqlite_fullsync_count\x00db_enter\x00db_leave\x00sqlite3_mprintf_int\x00sqlite3_mprintf_int64\x00sqlite3_mprintf_long\x00sqlite3_mprintf_str\x00sqlite3_snprintf_str\x00sqlite3_mprintf_stronly\x00sqlite3_mprintf_double\x00sqlite3_mprintf_scaled\x00sqlite3_mprintf_hexdouble\x00sqlite3_mprintf_z_test\x00sqlite3_mprintf_n_test\x00sqlite3_snprintf_int\x00sqlite3_last_insert_rowid\x00sqlite3_exec_printf\x00sqlite3_exec_hex\x00sqlite3_exec\x00sqlite3_exec_nr\x00sqlite3_get_table_printf\x00sqlite3_close\x00sqlite3_close_v2\x00sqlite3_create_function\x00sqlite3_create_aggregate\x00sqlite3_drop_modules\x00sqlite_register_test_function\x00sqlite_abort\x00sqlite_bind\x00breakpoint\x00sqlite3_key\x00sqlite3_rekey\x00sqlite3_interrupt\x00sqlite_delete_function\x00sqlite_delete_collation\x00sqlite3_get_autocommit\x00sqlite3_busy_timeout\x00printf\x00sqlite3IoTrace\x00clang_sanitize_address\x00sqlite3_db_config\x00sqlite3_txn_state\x00bad_behavior\x00register_dbstat_vtab\x00sqlite3_connection_pointer\x00intarray_addr\x00int64array_addr\x00doublearray_addr\x00textarray_addr\x00sqlite3_bind_int\x00sqlite3_bind_zeroblob\x00sqlite3_bind_zeroblob64\x00sqlite3_bind_int64\x00sqlite3_bind_double\x00sqlite3_bind_null\x00sqlite3_bind_text\x00sqlite3_bind_text16\x00sqlite3_bind_blob\x00sqlite3_bind_value_from_select\x00sqlite3_bind_value_from_preupdate\x00sqlite3_carray_bind\x00sqlite3_bind_parameter_count\x00sqlite3_bind_parameter_name\x00sqlite3_bind_parameter_index\x00sqlite3_clear_bindings\x00sqlite3_sleep\x00sqlite3_errcode\x00sqlite3_extended_errcode\x00sqlite3_errmsg\x00sqlite3_error_offset\x00sqlite3_errmsg16\x00sqlite3_open\x00sqlite3_open16\x00sqlite3_open_v2\x00sqlite3_complete16\x00sqlite3_normalize\x00sqlite3_prepare\x00sqlite3_prepare16\x00sqlite3_prepare_v2\x00sqlite3_prepare_v3\x00sqlite3_prepare_tkt3134\x00sqlite3_prepare16_v2\x00sqlite3_finalize\x00sqlite3_stmt_status\x00sqlite3_reset\x00sqlite3_expired\x00sqlite3_transfer_bindings\x00sqlite3_changes\x00sqlite3_step\x00sqlite3_sql\x00sqlite3_expanded_sql\x00sqlite3_next_stmt\x00sqlite3_stmt_readonly\x00sqlite3_stmt_isexplain\x00sqlite3_stmt_busy\x00uses_stmt_journal\x00sqlite3_release_memory\x00sqlite3_db_release_memory\x00sqlite3_db_cacheflush\x00sqlite3_system_errno\x00sqlite3_db_filename\x00sqlite3_db_readonly\x00sqlite3_soft_heap_limit\x00sqlite3_soft_heap_limit64\x00sqlite3_hard_heap_limit64\x00sqlite3_thread_cleanup\x00sqlite3_pager_refcounts\x00sqlite3_load_extension\x00sqlite3_enable_load_extension\x00sqlite3_extended_result_codes\x00sqlite3_limit\x00dbconfig_maindbname_icecube\x00save_prng_state\x00restore_prng_state\x00reset_prng_state\x00prng_seed\x00extra_schema_checks\x00database_never_corrupt\x00database_may_be_corrupt\x00optimization_control\x00tcl_objproc\x00sqlite3_column_count\x00sqlite3_data_count\x00sqlite3_column_type\x00sqlite3_column_blob\x00sqlite3_column_double\x00sqlite3_column_int64\x00sqlite3_column_text\x00sqlite3_column_name\x00sqlite3_column_int\x00sqlite3_column_bytes\x00sqlite3_column_decltype\x00sqlite3_column_database_name\x00sqlite3_column_table_name\x00sqlite3_column_origin_name\x00sqlite3_column_bytes16\x00sqlite3_column_text16\x00sqlite3_column_name16\x00add_alignment_test_collations\x00sqlite3_column_decltype16\x00sqlite3_column_database_name16\x00sqlite3_column_table_name16\x00sqlite3_column_origin_name16\x00sqlite3_create_collation_v2\x00sqlite3_global_recover\x00working_64bit_int\x00vfs_unlink_test\x00vfs_initfail_test\x00vfs_unregister_all\x00vfs_reregister_all\x00file_control_test\x00file_control_lasterrno_test\x00file_control_lockproxy_test\x00file_control_chunksize_test\x00file_control_sizehint_test\x00file_control_data_version\x00file_control_persist_wal\x00file_control_powersafe_overwrite\x00file_control_vfsname\x00file_control_reservebytes\x00file_control_tempfilename\x00file_control_external_reader\x00sqlite3_vfs_list\x00sqlite3_create_function_v2\x00add_test_collate\x00add_test_collate_needed\x00add_test_function\x00add_test_utf16bin_collate\x00sqlite3_test_errstr\x00tcl_variable_type\x00sqlite3_enable_shared_cache\x00sqlite3_shared_cache_report\x00sqlite3_libversion_number\x00sqlite3_table_column_metadata\x00sqlite3_blob_reopen\x00pcache_stats\x00sqlite3_unlock_notify\x00sqlite3_wal_checkpoint\x00sqlite3_wal_checkpoint_v2\x00sqlite3_wal_autocheckpoint\x00test_sqlite3_log\x00print_explain_query_plan\x00sqlite3_test_control\x00getrusage\x00load_static_extension\x00sorter_test_fakeheap\x00sorter_test_sort4_helper\x00vfs_current_time_int64\x00sqlite3_snapshot_get\x00sqlite3_snapshot_open\x00sqlite3_snapshot_free\x00sqlite3_snapshot_cmp\x00sqlite3_snapshot_recover\x00sqlite3_snapshot_get_blob\x00sqlite3_snapshot_open_blob\x00sqlite3_snapshot_cmp_blob\x00sqlite3_delete_database\x00atomic_batch_write\x00sqlite3_mmap_warm\x00sqlite3_config_sorterref\x00sqlite3_autovacuum_pages\x00decode_hexdb\x00test_write_db\x00sqlite3_register_cksumvfs\x00sqlite3_unregister_cksumvfs\x00*** OBSOLETE VARIABLE ***\x00 FILENAME N-PAGE\"\x00 ID\"\x00ref\x00page\x00err\x00hit\x00miss\x00ovfl\x00 ID PGNO\"\x00 PAGE\"\x00 PAGE DATA\"\x00 N-MEGABYTES FILE\"\x00open failed: \x00Hello, World!\x00write failed: \x00 PENDING-BYTE\"\x00fault simulator script failed: [%s]\x00 SCRIPT\"\x00 SIZE PROGRAM\"\x00sqlite_io_error_pending\x00sqlite_io_error_persist\x00sqlite_io_error_hit\x00sqlite_io_error_hardhit\x00sqlite_diskfull_pending\x00sqlite_diskfull\x00sqlite_pending_byte\x00pager_open\x00pager_close\x00pager_commit\x00pager_rollback\x00pager_stmt_begin\x00pager_stmt_commit\x00pager_stmt_rollback\x00pager_stats\x00pager_pagecount\x00page_get\x00page_lookup\x00page_unref\x00page_read\x00page_write\x00page_number\x00pager_truncate\x00fake_big_file\x00sqlite3BitvecBuiltinTest\x00sqlite3_test_control_pending_byte\x00sqlite3_test_control_fault_install\x00 FILENAME NCACHE FLAGS\"\x00read\x00write\x00 ID TABLENUM WRITEABLE\"\x00 START MULTIPLIER COUNT INCREMENT\"\x00putVarint returned %d - should be between 1 and 9\x00putVarint returned %d and getVarint returned %d\x00Wrote 0x%016llx and got back 0x%016llx\x00putVarint returned %d and GetVarint32 returned %d\x00Wrote 0x%016llx and got back 0x%016llx from GetVarint32\x00 DB-HANDLE ?N?\"\x00No such db-handle: \"\x00 BT NCACHE\"\x00?-intkey? CSR KEY VALUE\x00btree_insert\x00btree_open\x00btree_close\x00btree_begin_transaction\x00btree_pager_stats\x00btree_cursor\x00btree_close_cursor\x00btree_next\x00btree_eof\x00btree_payload_size\x00btree_first\x00btree_varint_test\x00btree_from_db\x00btree_ismemdb\x00btree_set_cache_size\x00thread ID must be an upper case letter\x00 ID FILENAME\x00thread \x00 is already running\x00failed to create the thread\x00 ID\x00no such thread\x00 ID N\x00column number out of range\x00no database is open\x00 ID SQL\x00no virtual machine available\x00 IDL\x00 ID1 ID2\x00 ID DB\x00thread_create\x00thread_wait\x00thread_halt\x00thread_argc\x00thread_argv\x00thread_colname\x00thread_result\x00thread_error\x00thread_compile\x00thread_step\x00thread_finalize\x00thread_swap\x00thread_db_get\x00thread_db_put\x00thread_stmt_get\x00 <repeat-count> <do-calls>\x00hello world\x00UTF8\x00UTF16LE\x00UTF16BE\x00UTF16\x00No such encoding: \x00 <string/blob> <from enc> <to enc>\x00binarize\x00test_value_overhead\x00test_translate\x00translate_selftest\x00out of memory in the crash simulator\n\x00atomic\x00atomic512\x00atomic1k\x00atomic2k\x00atomic4k\x00atomic8k\x00atomic16k\x00atomic32k\x00atomic64k\x00sequential\x00safe_append\x00powersafe_overwrite\x00batch-atomic\x00-sectorsize\x00-characteristics\x00Bad option: \"\x00\" - must be \"-characteristics\" or \"-sectorsize\"\x00Option requires an argument: \"\x00no such flag\x00ENABLE ?DEFAULT?\x00crash\x00?OPTIONS? DELAY CRASHFILE\x00Filename is too long: \"\x00NWRITE\x00?-default? PARENT-VFS\x00-default\x00\": must be -default\x00Error in jt_register\x00sqlite3_crash_enable\x00sqlite3_crashparams\x00sqlite3_crash_now\x00sqlite3_simulate_device\x00sqlite3_crash_on_write\x00unregister_devsim\x00register_jt_vfs\x00unregister_jt_vfs\x00client_create\x00client_wait\x00client_halt\x00client_argc\x00client_argv\x00client_colname\x00client_result\x00client_error\x00client_compile\x00client_step\x00client_reset\x00client_finalize\x00client_swap\x00echo_module_fail(%s,%s)\x00echo-vtab-error: %s\x00SELECT * FROM %Q\x00PRAGMA index_list(%s)\x00PRAGMA index_info(%s)\x00echo_module\x00SELECT sql FROM sqlite_schema WHERE type = 'table' AND name = ?\x00%s%s\x00xCreate\x00CREATE TABLE %Q(logmsg)\x00xConnect\x00xDisconnect\x00xDestroy\x00DROP TABLE %Q\x00xOpen\x00xNext\x00xColumn\x00xFilter\x00, *\x00%z, %s\x00%z, NULL\x00echo_module_ignore_usable\x00xBestIndex\x00echo_module_cost\x00SELECT count(*) FROM %Q\x00SELECT rowid%z FROM %Q\x00=\x00<\x00>\x00<=\x00>=\x00LIKE\x00like\x00glob\x00 %s %s LIKE (SELECT '%%'||?||'%%')\x00 %s %s %s ?\x00DESC\x00ASC\x00 ORDER BY %s %s\x00xUpdate\x00 SET\x00UPDATE %Q\x00 SET rowid=?1 \x00%s %Q=?%d\x00 WHERE rowid=?%d\x00DELETE FROM %Q WHERE rowid = ?1\x00INSERT INTO %Q (\x00%s%Q\x00%s?%d\x00) VALUES(\x00echo(%s)\x00xBegin\x00echo_module_begin_fail\x00xSync\x00echo_module_sync_fail\x00xCommit\x00xRollback\x00::echo_glob_overload\x00xRename\x00ALTER TABLE %s RENAME TO %s%s\x00function_that_does_not_exist_0982ma98\x00echo\x00echo_v2\x00register_echo_module\x00sqlite3_declare_vtab\x00N/A\x00sqlite3_create_collation\x00Error testing function: \x00sqlite3_malloc\x00sqlite3_realloc\x00c_misuse_test\x00c_realloc_test\x00c_collation_test\x00sqlite3_reset_auto_extension\x00npage\x00finish\x00remaining\x00pagecount\x00CMDNAME DESTHANDLE DESTNAME SRCHANDLE SRCNAME\x00sqlite3_backup_init() failed\x00sqlite3_backup\x00wrong number of arguments\x00unexpected: %s\x00eq\x00gt\x00le\x00lt\x00ge\x00match\x00ne\x00isnot\x00isnotnull\x00isnull\x00limit\x00offset\x00column\x00usable\x00desc\x00constraints\x00orderby\x00mask\x00distinct\x00in\x00rhs_value\x00INDEX BOOLEAN\x00INDEX ?DEFAULT?\x00bestindex%d\x00cost\x00idxnum\x00idxstr\x00rows\x00use\x00omit\x00unexpected: %d\x00tcl\x00register_tcl_module\x00incrblob_\x00DB DATABASE TABLE COLUMN ROWID FLAGS VARNAME\x00HANDLE\x00CHANNEL OFFSET N\x00out of memory in testdata/sqlite-src-3390300/src/test_blob.c\x00HANDLE OFFSET DATA ?NDATA?\x00sqlite3_blob_open\x00sqlite3_blob_close\x00sqlite3_blob_bytes\x00sqlite3_blob_read\x00sqlite3_blob_write\x00sqlite_options\x00malloc_usable_size\x00rowid32\x00casesensitivelike\x00configslower\x001.0\x00curdir\x001\x00win32malloc\x00debug\x00default_ckptfullfsync\x00direct_read\x00dirsync\x00lfs\x00pagecache_overflow_stats\x00mmap\x00worker_threads\x008\x00memdebug\x008_3_names\x00cursorhints\x00hiddencolumns\x00mathlib\x00mem3\x00mem5\x00offset_sql_func\x00snapshot\x00mutex\x00mutex_noop\x00altertable\x00api_armor\x00atomicwrite\x00geopoly\x00json1\x00has_codec\x00like_match_blobs\x00auth\x00autoinc\x00autoreset\x00autovacuum\x00default_autovacuum\x00between_opt\x00builtin_test\x00bloblit\x00cast\x00check\x00cte\x00columnmetadata\x00oversize_cell_check\x00compileoption_diags\x00compound\x00conflict\x00crashtest\x00datetime\x00decltype\x00deprecated\x00diskio\x00floatingpoint\x00foreignkey\x00fts1\x00fts2\x00fts3\x00fts5\x00fts3_unicode\x00fts4_deferred\x00gettable\x00icu\x00icu_collations\x00integrityck\x00legacyformat\x00like_opt\x00load_ext\x00localtime\x00lookaside\x00long_double\x00memorydb\x00memorymanage\x00mergesort\x00null_trim\x00or_opt\x00rbu\x00pager_pragmas\x00pragma\x00reindex\x00rtree\x00rtree_int_only\x00schema_pragmas\x00schema_version\x00session\x00stmtvtab\x00scanstatus\x00lock_proxy_pragmas\x00prefer_proxy_locking\x00shared_cache\x00subquery\x00tclvar\x00threadsafe\x00threadsafe1\x00threadsafe2\x00tempdb\x00trigger\x00truncate_opt\x00vacuum\x00view\x00vtab\x00wal\x00wsd\x00update_delete_limit\x00fast_secure_delete\x00secure_delete\x00userauth\x00multiplex_ext_overwrite\x00yytrackmaxstackdepth\x00sqllog\x00uri_00_error\x00normalize\x00windowfunc\x00SQLITE_MAX_LENGTH\x00SQLITE_MAX_COLUMN\x00SQLITE_MAX_SQL_LENGTH\x00SQLITE_MAX_EXPR_DEPTH\x00SQLITE_MAX_COMPOUND_SELECT\x00SQLITE_MAX_VDBE_OP\x00SQLITE_MAX_FUNCTION_ARG\x00SQLITE_MAX_VARIABLE_NUMBER\x00SQLITE_MAX_PAGE_SIZE\x00SQLITE_MAX_PAGE_COUNT\x00SQLITE_MAX_LIKE_PATTERN_LENGTH\x00SQLITE_MAX_TRIGGER_DEPTH\x00SQLITE_DEFAULT_CACHE_SIZE\x00SQLITE_DEFAULT_PAGE_SIZE\x00SQLITE_DEFAULT_FILE_FORMAT\x00SQLITE_DEFAULT_SYNCHRONOUS\x00SQLITE_DEFAULT_WAL_SYNCHRONOUS\x00SQLITE_MAX_ATTACHED\x00SQLITE_MAX_DEFAULT_PAGE_SIZE\x00SQLITE_MAX_WORKER_THREADS\x00TEMP_STORE\x00__GNUC__\x00%s-journal\x00%s-wal\x00%s-shm\x00%s%03d\x00%s-journal%03d\x00%s-wal%03d\x00Loadable extensions are not supported\x00demo\x00register_demovfs\x00unregister_demovfs\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"
 64378  var ts = (*reflect.StringHeader)(unsafe.Pointer(&ts1)).Data