// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/external/sqlite-3.33.0/sqlite3.c
// Function: codeDeferredSeek
static void codeDeferredSeek(
  WhereInfo *pWInfo,              /* Where clause context */
  Index *pIdx,                    /* Index scan is using */
  int iCur,                       /* Cursor for IPK b-tree */
  int iIdxCur                     /* Index cursor */
){
  Parse *pParse = pWInfo->pParse; /* Parse context */
  Vdbe *v = pParse->pVdbe;        /* Vdbe to generate code within */

  assert( iIdxCur>0 );
  assert( pIdx->aiColumn[pIdx->nColumn-1]==-1 );

  pWInfo->bDeferredSeek = 1;
  sqlite3VdbeAddOp3(v, OP_DeferredSeek, iIdxCur, 0, iCur);
  if( (pWInfo->wctrlFlags & WHERE_OR_SUBCLAUSE)
   && DbMaskAllZero(sqlite3ParseToplevel(pParse)->writeMask)
  ){
    int i;
    Table *pTab = pIdx->pTable;
    u32 *ai = (u32*)sqlite3DbMallocZero(pParse->db, sizeof(u32)*(pTab->nCol+1));
    if( ai ){
      ai[0] = pTab->nCol;
      for(i=0; i<pIdx->nColumn-1; i++){
        int x1, x2;
        assert( pIdx->aiColumn[i]<pTab->nCol );
        x1 = pIdx->aiColumn[i];
        x2 = sqlite3TableColumnToStorage(pTab, x1);
        testcase( x1!=x2 );
        if( x1>=0 ) ai[x2+1] = i+1;
      }
      sqlite3VdbeChangeP4(v, -1, (char*)ai, P4_INTARRAY);
    }
  }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x50, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movl %edx, -0x14(%rbp)
movl %ecx, -0x18(%rbp)
movq -0x8(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x20(%rbp)
movq -0x20(%rbp), %rax
movq 0x10(%rax), %rax
movq %rax, -0x28(%rbp)
movq -0x8(%rbp), %rax
movb 0x44(%rax), %cl
andb $-0x2, %cl
orb $0x1, %cl
movb %cl, 0x44(%rax)
movq -0x28(%rbp), %rdi
movl -0x18(%rbp), %edx
movl -0x14(%rbp), %r8d
movl $0x85, %esi
xorl %ecx, %ecx
callq 0x410130
movq -0x8(%rbp), %rax
movzwl 0x3c(%rax), %eax
andl $0x20, %eax
cmpl $0x0, %eax
je 0x456d85
movq -0x20(%rbp), %rax
cmpq $0x0, 0xa0(%rax)
je 0x456ca7
movq -0x20(%rbp), %rax
movq 0xa0(%rax), %rax
movq %rax, -0x50(%rbp)
jmp 0x456caf
movq -0x20(%rbp), %rax
movq %rax, -0x50(%rbp)
movq -0x50(%rbp), %rax
cmpl $0x0, 0x70(%rax)
jne 0x456d85
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rax
movq %rax, -0x38(%rbp)
movq -0x20(%rbp), %rax
movq (%rax), %rdi
movq -0x38(%rbp), %rax
movswl 0x46(%rax), %eax
addl $0x1, %eax
movslq %eax, %rsi
shlq $0x2, %rsi
callq 0x3c9520
movq %rax, -0x40(%rbp)
cmpq $0x0, -0x40(%rbp)
je 0x456d83
movq -0x38(%rbp), %rax
movswl 0x46(%rax), %ecx
movq -0x40(%rbp), %rax
movl %ecx, (%rax)
movl $0x0, -0x2c(%rbp)
movl -0x2c(%rbp), %eax
movq -0x10(%rbp), %rcx
movzwl 0x60(%rcx), %ecx
subl $0x1, %ecx
cmpl %ecx, %eax
jge 0x456d6c
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rax
movslq -0x2c(%rbp), %rcx
movswl (%rax,%rcx,2), %eax
movl %eax, -0x44(%rbp)
movq -0x38(%rbp), %rdi
movl -0x44(%rbp), %eax
movswl %ax, %esi
callq 0x42bae0
cwtl
movl %eax, -0x48(%rbp)
cmpl $0x0, -0x44(%rbp)
jl 0x456d5f
movl -0x2c(%rbp), %edx
addl $0x1, %edx
movq -0x40(%rbp), %rax
movl -0x48(%rbp), %ecx
addl $0x1, %ecx
movslq %ecx, %rcx
movl %edx, (%rax,%rcx,4)
jmp 0x456d61
movl -0x2c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x2c(%rbp)
jmp 0x456d0b
movq -0x28(%rbp), %rdi
movq -0x40(%rbp), %rdx
movl $0xffffffff, %esi       # imm = 0xFFFFFFFF
movl $0xfffffff1, %ecx       # imm = 0xFFFFFFF1
callq 0x3cbc30
jmp 0x456d85
addq $0x50, %rsp
popq %rbp
retq
nopl (%rax,%rax)