// File: /workspace/github_c_makefile_star2_O1/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 $0x68, %rsp
movl %r8d, -0x2c(%rbp)
movl %ecx, -0x30(%rbp)
movq %rdi, -0x48(%rbp)
movq %rsi, -0x50(%rbp)
movslq (%rsi), %r14
testq %r14, %r14
jle 0x52d14
movl %edx, %r15d
movq -0x48(%rbp), %rsi
movq 0x10(%rsi), %rax
movq %rax, -0x40(%rbp)
movl -0x2c(%rbp), %edx
movl %edx, %eax
andb $0x1, %al
movl %edx, %ecx
andb $0x7d, %cl
cmpb $0x0, 0x23(%rsi)
movzbl %dl, %edx
movzbl %cl, %r13d
cmovnel %edx, %r13d
movq -0x50(%rbp), %rcx
movq 0x8(%rcx), %rcx
movq %rcx, -0x58(%rbp)
movzbl %al, %eax
movl $0x20, %ecx
subl %eax, %ecx
movl %ecx, -0x34(%rbp)
decl -0x30(%rbp)
shlq $0x5, %r14
xorl %ebx, %ebx
movq -0x58(%rbp), %rax
movq (%rax,%rbx), %r12
testb $0x4, %r13b
je 0x52c1a
movq -0x50(%rbp), %rax
movq 0x8(%rax), %rax
movzwl 0x1c(%rax,%rbx), %edx
testl %edx, %edx
je 0x52c1a
addl -0x30(%rbp), %edx
movq -0x40(%rbp), %rdi
movl -0x34(%rbp), %esi
jmp 0x52cf9
testb $0x2, %r13b
je 0x52c84
xorps %xmm0, %xmm0
movaps %xmm0, -0x70(%rbp)
movaps %xmm0, -0x90(%rbp)
movaps %xmm0, -0x80(%rbp)
movb $0x1, -0x6c(%rbp)
leaq 0x1afa(%rip), %rax      # 0x54737
movq %rax, -0x90(%rbp)
leaq 0x1b62(%rip), %rax      # 0x547ad
movq %rax, -0x88(%rbp)
movl $0x0, -0x68(%rbp)
leaq -0x90(%rbp), %rdi
movq %r12, %rsi
callq 0x547bc
cmpb $0x0, -0x6c(%rbp)
je 0x52c84
movq -0x48(%rbp), %rdi
movq %r12, %rsi
movl %r15d, %edx
xorl %ecx, %ecx
callq 0x546c4
jmp 0x52d04
movq -0x48(%rbp), %rdi
movq %r12, %rsi
movl %r15d, %edx
callq 0x511a2
cmpl %eax, %r15d
je 0x52d04
testb $0x1, -0x2c(%rbp)
je 0x52cf0
movq -0x40(%rbp), %rcx
movq (%rcx), %rcx
cmpb $0x0, 0x51(%rcx)
leaq 0x42838(%rip), %rcx     # 0x954e8
jne 0x52cca
movq -0x40(%rbp), %rdx
movslq 0x3c(%rdx), %rcx
movq 0x8(%rdx), %rdx
leaq (%rcx,%rcx,2), %rcx
leaq (%rdx,%rcx,8), %rcx
addq $-0x18, %rcx
cmpb $0x1f, (%rcx)
jne 0x52cf0
movl 0x4(%rcx), %esi
movl 0xc(%rcx), %edx
addl %edx, %esi
incl %esi
cmpl %eax, %esi
jne 0x52cf0
movl 0x8(%rcx), %esi
addl %edx, %esi
incl %esi
cmpl %esi, %r15d
jne 0x52cf0
incl %edx
movl %edx, 0xc(%rcx)
jmp 0x52d04
movq -0x40(%rbp), %rdi
movl -0x34(%rbp), %esi
movl %eax, %edx
movl %r15d, %ecx
xorl %r8d, %r8d
callq 0x3fa9e
incl %r15d
addq $0x20, %rbx
cmpq %rbx, %r14
jne 0x52bec
addq $0x68, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq