// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/external/sqlite-3.33.0/sqlite3.c
// Function: pragmaVtabFilter
static int pragmaVtabFilter(
  sqlite3_vtab_cursor *pVtabCursor,
  int idxNum, const char *idxStr,
  int argc, sqlite3_value **argv
){
  PragmaVtabCursor *pCsr = (PragmaVtabCursor*)pVtabCursor;
  PragmaVtab *pTab = (PragmaVtab*)(pVtabCursor->pVtab);
  int rc;
  int i, j;
  StrAccum acc;
  char *zSql;

  UNUSED_PARAMETER(idxNum);
  UNUSED_PARAMETER(idxStr);
  pragmaVtabCursorClear(pCsr);
  j = (pTab->pName->mPragFlg & PragFlg_Result1)!=0 ? 0 : 1;
  for(i=0; i<argc; i++, j++){
    const char *zText = (const char*)sqlite3_value_text(argv[i]);
    assert( j<ArraySize(pCsr->azArg) );
    assert( pCsr->azArg[j]==0 );
    if( zText ){
      pCsr->azArg[j] = sqlite3_mprintf("%s", zText);
      if( pCsr->azArg[j]==0 ){
        return SQLITE_NOMEM;
      }
    }
  }
  sqlite3StrAccumInit(&acc, 0, 0, 0, pTab->db->aLimit[SQLITE_LIMIT_SQL_LENGTH]);
  sqlite3_str_appendall(&acc, "PRAGMA ");
  if( pCsr->azArg[1] ){
    sqlite3_str_appendf(&acc, "%Q.", pCsr->azArg[1]);
  }
  sqlite3_str_appendall(&acc, pTab->pName->zName);
  if( pCsr->azArg[0] ){
    sqlite3_str_appendf(&acc, "=%Q", pCsr->azArg[0]);
  }
  zSql = sqlite3StrAccumFinish(&acc);
  if( zSql==0 ) return SQLITE_NOMEM;
  rc = sqlite3_prepare_v2(pTab->db, zSql, -1, &pCsr->pPragma, 0);
  sqlite3_free(zSql);
  if( rc!=SQLITE_OK ){
    pTab->base.zErrMsg = sqlite3_mprintf("%s", sqlite3_errmsg(pTab->db));
    return rc;
  }
  return pragmaVtabNext(pVtabCursor);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x80, %rsp
movq %rdi, -0x10(%rbp)
movl %esi, -0x14(%rbp)
movq %rdx, -0x20(%rbp)
movl %ecx, -0x24(%rbp)
movq %r8, -0x30(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x38(%rbp)
movq -0x10(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x40(%rbp)
movq -0x38(%rbp), %rdi
callq 0x411730
movq -0x40(%rbp), %rax
movq 0x20(%rax), %rax
movzbl 0x9(%rax), %edx
andl $0x20, %edx
movl $0x1, %eax
xorl %ecx, %ecx
cmpl $0x0, %edx
cmovnel %ecx, %eax
movl %eax, -0x4c(%rbp)
movl $0x0, -0x48(%rbp)
movl -0x48(%rbp), %eax
cmpl -0x24(%rbp), %eax
jge 0x411479
movq -0x30(%rbp), %rax
movslq -0x48(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
callq 0x3c7880
movq %rax, -0x80(%rbp)
cmpq $0x0, -0x80(%rbp)
je 0x411463
movq -0x80(%rbp), %rsi
leaq 0x18abf3(%rip), %rdi    # 0x59c021
movb $0x0, %al
callq 0x3c3780
movq %rax, %rdx
movq -0x38(%rbp), %rax
movslq -0x4c(%rbp), %rcx
movq %rdx, 0x18(%rax,%rcx,8)
movq -0x38(%rbp), %rax
movslq -0x4c(%rbp), %rcx
cmpq $0x0, 0x18(%rax,%rcx,8)
jne 0x411461
movl $0x7, -0x4(%rbp)
jmp 0x411597
jmp 0x411463
jmp 0x411465
movl -0x48(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x48(%rbp)
movl -0x4c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x4c(%rbp)
jmp 0x4113ff
movq -0x40(%rbp), %rax
movq 0x18(%rax), %rax
movl 0x80(%rax), %r8d
leaq -0x70(%rbp), %rdi
xorl %eax, %eax
movl %eax, %edx
xorl %ecx, %ecx
movq %rdx, %rsi
callq 0x3c36a0
leaq -0x70(%rbp), %rdi
leaq 0x19b27b(%rip), %rsi    # 0x5ac720
callq 0x3c3170
movq -0x38(%rbp), %rax
cmpq $0x0, 0x20(%rax)
je 0x4114cf
movq -0x38(%rbp), %rax
movq 0x20(%rax), %rdx
leaq -0x70(%rbp), %rdi
leaq 0x19b260(%rip), %rsi    # 0x5ac728
movb $0x0, %al
callq 0x3c3ac0
movq -0x40(%rbp), %rax
movq 0x20(%rax), %rax
movq (%rax), %rsi
leaq -0x70(%rbp), %rdi
callq 0x3c3170
movq -0x38(%rbp), %rax
cmpq $0x0, 0x18(%rax)
je 0x411508
movq -0x38(%rbp), %rax
movq 0x18(%rax), %rdx
leaq -0x70(%rbp), %rdi
leaq 0x19c59a(%rip), %rsi    # 0x5ada9b
movb $0x0, %al
callq 0x3c3ac0
leaq -0x70(%rbp), %rdi
callq 0x3c3490
movq %rax, -0x78(%rbp)
cmpq $0x0, -0x78(%rbp)
jne 0x411525
movl $0x7, -0x4(%rbp)
jmp 0x411597
movq -0x40(%rbp), %rax
movq 0x18(%rax), %rdi
movq -0x78(%rbp), %rsi
movq -0x38(%rbp), %rcx
addq $0x8, %rcx
movl $0xffffffff, %edx       # imm = 0xFFFFFFFF
xorl %eax, %eax
movl %eax, %r8d
callq 0x3cd350
movl %eax, -0x44(%rbp)
movq -0x78(%rbp), %rdi
callq 0x3c0800
cmpl $0x0, -0x44(%rbp)
je 0x41158b
movq -0x40(%rbp), %rax
movq 0x18(%rax), %rdi
callq 0x3cd3f0
movq %rax, %rsi
leaq 0x18aab0(%rip), %rdi    # 0x59c021
movb $0x0, %al
callq 0x3c3780
movq %rax, %rcx
movq -0x40(%rbp), %rax
movq %rcx, 0x10(%rax)
movl -0x44(%rbp), %eax
movl %eax, -0x4(%rbp)
jmp 0x411597
movq -0x10(%rbp), %rdi
callq 0x4115b0
movl %eax, -0x4(%rbp)
movl -0x4(%rbp), %eax
addq $0x80, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)