// File: /workspace/github_c_makefile_star2_O2/shifengbin[P]bishe/Output/../Persistence/sqlite3.c
// Function: sqlite3ExprCodeExprList
SQLITE_PRIVATE int sqlite3ExprCodeExprList(
  Parse *pParse,     /* Parsing context */
  ExprList *pList,   /* The expression list to be coded */
  int target,        /* Where to write results */
  int srcReg,        /* Source registers if SQLITE_ECEL_REF */
  u8 flags           /* SQLITE_ECEL_* flags */
){
  struct ExprList_item *pItem;
  int i, j, n;
  u8 copyOp = (flags & SQLITE_ECEL_DUP) ? OP_Copy : OP_SCopy;
  Vdbe *v = pParse->pVdbe;
  assert( pList!=0 );
  assert( target>0 );
  assert( pParse->pVdbe!=0 );  /* Never gets this far otherwise */
  n = pList->nExpr;
  if( !ConstFactorOk(pParse) ) flags &= ~SQLITE_ECEL_FACTOR;
  for(pItem=pList->a, i=0; i<n; i++, pItem++){
    Expr *pExpr = pItem->pExpr;
    if( (flags & SQLITE_ECEL_REF)!=0 && (j = pList->a[i].u.x.iOrderByCol)>0 ){
      sqlite3VdbeAddOp2(v, copyOp, j+srcReg-1, target+i);
    }else if( (flags & SQLITE_ECEL_FACTOR)!=0 && sqlite3ExprIsConstant(pExpr) ){
      sqlite3ExprCodeAtInit(pParse, pExpr, target+i, 0);
    }else{
      int inReg = sqlite3ExprCodeTarget(pParse, pExpr, target+i);
      if( inReg!=target+i ){
        VdbeOp *pOp;
        if( copyOp==OP_Copy
         && (pOp=sqlite3VdbeGetOp(v, -1))->opcode==OP_Copy
         && pOp->p1+pOp->p3+1==inReg
         && pOp->p2+pOp->p3+1==target+i
        ){
          pOp->p3++;
        }else{
          sqlite3VdbeAddOp2(v, copyOp, inReg, target+i);
        }
      }
    }
  }
  return n;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x38, %rsp
movl %edx, %r15d
movl %r8d, %eax
andl $0x1, %eax
pushq $0x20
popq %rdx
subl %eax, %edx
movl %edx, -0x2c(%rbp)
movq 0x10(%rdi), %rax
movq %rax, -0x38(%rbp)
movl %r8d, %eax
andb $0x7d, %al
movq %rdi, -0x48(%rbp)
cmpb $0x0, 0x23(%rdi)
movl (%rsi), %ebx
movzbl %al, %r14d
movl %r8d, -0x3c(%rbp)
cmovnel %r8d, %r14d
movq %rsi, -0x50(%rbp)
movq 0x8(%rsi), %rax
movq %rax, -0x58(%rbp)
decl %ecx
movl %ecx, -0x40(%rbp)
xorl %r13d, %r13d
testl %ebx, %ebx
cmovlel %r13d, %ebx
shlq $0x5, %rbx
cmpq %r13, %rbx
je 0x4bdad
movq -0x58(%rbp), %rax
movq (%rax,%r13), %r12
testb $0x4, %r14b
je 0x4bd1e
movq -0x50(%rbp), %rax
movq 0x8(%rax), %rax
movzwl 0x1c(%rax,%r13), %edx
testl %edx, %edx
je 0x4bd1e
addl -0x40(%rbp), %edx
movq -0x38(%rbp), %rdi
movl -0x2c(%rbp), %esi
jmp 0x4bd99
testb $0x2, %r14b
je 0x4bd43
movq %r12, %rdi
callq 0x4bafa
testl %eax, %eax
je 0x4bd43
movq -0x48(%rbp), %rdi
movq %r12, %rsi
movl %r15d, %edx
xorl %ecx, %ecx
callq 0x4d0cc
jmp 0x4bda1
movq -0x48(%rbp), %rdi
movq %r12, %rsi
movl %r15d, %edx
callq 0x4a69e
cmpl %eax, %r15d
je 0x4bda1
movl %eax, %r12d
testb $0x1, -0x3c(%rbp)
je 0x4bd8f
movq -0x38(%rbp), %rdi
pushq $-0x1
popq %rsi
callq 0x386ca
cmpb $0x1f, (%rax)
jne 0x4bd8f
movl 0xc(%rax), %ecx
incl %ecx
movl 0x4(%rax), %edx
addl %ecx, %edx
cmpl %r12d, %edx
jne 0x4bd8f
movl 0x8(%rax), %edx
addl %ecx, %edx
cmpl %edx, %r15d
jne 0x4bd8f
movl %ecx, 0xc(%rax)
jmp 0x4bda1
movq -0x38(%rbp), %rdi
movl -0x2c(%rbp), %esi
movl %r12d, %edx
movl %r15d, %ecx
callq 0x4a1ab
incl %r15d
addq $0x20, %r13
jmp 0x4bce9
addq $0x38, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq