// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/external/sqlite-3.33.0/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;
#ifdef SQLITE_ENABLE_SORTER_REFERENCES
    if( pItem->bSorterRef ){
      i--;
      n--;
    }else
#endif
    if( (flags & SQLITE_ECEL_REF)!=0 && (j = pItem->u.x.iOrderByCol)>0 ){
      if( flags & SQLITE_ECEL_OMITREF ){
        i--;
        n--;
      }else{
        sqlite3VdbeAddOp2(v, copyOp, j+srcReg-1, target+i);
      }
    }else if( (flags & SQLITE_ECEL_FACTOR)!=0
           && sqlite3ExprIsConstantNotJoin(pExpr)
    ){
      sqlite3ExprCodeRunJustOnce(pParse, pExpr, target+i);
    }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->p5==0  /* The do-not-merge flag must be clear */
        ){
          pOp->p3++;
        }else{
          sqlite3VdbeAddOp2(v, copyOp, inReg, target+i);
        }
      }
    }
  }
  return n;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x60, %rsp
movb %r8b, %al
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movl %edx, -0x14(%rbp)
movl %ecx, -0x18(%rbp)
movb %al, -0x19(%rbp)
movzbl -0x19(%rbp), %edx
andl $0x1, %edx
movl $0x4e, %eax
movl $0x4d, %ecx
cmpl $0x0, %edx
cmovnel %ecx, %eax
movb %al, -0x35(%rbp)
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rax
movq %rax, -0x40(%rbp)
movq -0x10(%rbp), %rax
movl (%rax), %eax
movl %eax, -0x34(%rbp)
movq -0x8(%rbp), %rax
cmpb $0x0, 0x23(%rax)
jne 0x42cc1f
movzbl -0x19(%rbp), %eax
andl $-0x3, %eax
movb %al, -0x19(%rbp)
movq -0x10(%rbp), %rax
addq $0x8, %rax
movq %rax, -0x28(%rbp)
movl $0x0, -0x2c(%rbp)
movl -0x2c(%rbp), %eax
cmpl -0x34(%rbp), %eax
jge 0x42cda7
movq -0x28(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x48(%rbp)
movzbl -0x19(%rbp), %eax
andl $0x4, %eax
cmpl $0x0, %eax
je 0x42cca6
movq -0x28(%rbp), %rax
movzwl 0x14(%rax), %eax
movl %eax, -0x30(%rbp)
cmpl $0x0, %eax
jle 0x42cca6
movzbl -0x19(%rbp), %eax
andl $0x8, %eax
cmpl $0x0, %eax
je 0x42cc85
movl -0x2c(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0x2c(%rbp)
movl -0x34(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0x34(%rbp)
jmp 0x42cca1
movq -0x40(%rbp), %rdi
movzbl -0x35(%rbp), %esi
movl -0x30(%rbp), %edx
addl -0x18(%rbp), %edx
subl $0x1, %edx
movl -0x14(%rbp), %ecx
addl -0x2c(%rbp), %ecx
callq 0x410100
jmp 0x42cd8b
movzbl -0x19(%rbp), %eax
andl $0x2, %eax
cmpl $0x0, %eax
je 0x42ccd8
movq -0x48(%rbp), %rdi
callq 0x42c650
cmpl $0x0, %eax
je 0x42ccd8
movq -0x8(%rbp), %rdi
movq -0x48(%rbp), %rsi
movl -0x14(%rbp), %edx
addl -0x2c(%rbp), %edx
callq 0x42c680
jmp 0x42cd89
movq -0x8(%rbp), %rdi
movq -0x48(%rbp), %rsi
movl -0x14(%rbp), %edx
addl -0x2c(%rbp), %edx
callq 0x42a500
movl %eax, -0x4c(%rbp)
movl -0x4c(%rbp), %eax
movl -0x14(%rbp), %ecx
addl -0x2c(%rbp), %ecx
cmpl %ecx, %eax
je 0x42cd87
movzbl -0x35(%rbp), %eax
cmpl $0x4d, %eax
jne 0x42cd6f
movq -0x40(%rbp), %rdi
movl $0xffffffff, %esi       # imm = 0xFFFFFFFF
callq 0x429e10
movq %rax, -0x58(%rbp)
movzbl (%rax), %eax
cmpl $0x4d, %eax
jne 0x42cd6f
movq -0x58(%rbp), %rax
movl 0x4(%rax), %eax
movq -0x58(%rbp), %rcx
addl 0xc(%rcx), %eax
addl $0x1, %eax
cmpl -0x4c(%rbp), %eax
jne 0x42cd6f
movq -0x58(%rbp), %rax
movl 0x8(%rax), %eax
movq -0x58(%rbp), %rcx
addl 0xc(%rcx), %eax
addl $0x1, %eax
movl -0x14(%rbp), %ecx
addl -0x2c(%rbp), %ecx
cmpl %ecx, %eax
jne 0x42cd6f
movq -0x58(%rbp), %rax
movzwl 0x2(%rax), %eax
cmpl $0x0, %eax
jne 0x42cd6f
movq -0x58(%rbp), %rax
movl 0xc(%rax), %ecx
addl $0x1, %ecx
movl %ecx, 0xc(%rax)
jmp 0x42cd85
movq -0x40(%rbp), %rdi
movzbl -0x35(%rbp), %esi
movl -0x4c(%rbp), %edx
movl -0x14(%rbp), %ecx
addl -0x2c(%rbp), %ecx
callq 0x410100
jmp 0x42cd87
jmp 0x42cd89
jmp 0x42cd8b
jmp 0x42cd8d
movl -0x2c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x2c(%rbp)
movq -0x28(%rbp), %rax
addq $0x18, %rax
movq %rax, -0x28(%rbp)
jmp 0x42cc32
movl -0x34(%rbp), %eax
addq $0x60, %rsp
popq %rbp
retq