// File: /workspace/github_c_makefile_star2_O3/shifengbin[P]bishe/Output/../Persistence/sqlite3.c
// Function: generateColumnNames
static void generateColumnNames(
  Parse *pParse,      /* Parser context */
  SrcList *pTabList,  /* List of tables */
  ExprList *pEList    /* Expressions defining the result set */
){
  Vdbe *v = pParse->pVdbe;
  int i, j;
  sqlite3 *db = pParse->db;
  int fullNames, shortNames;

#ifndef SQLITE_OMIT_EXPLAIN
  /* If this is an EXPLAIN, skip this step */
  if( pParse->explain ){
    return;
  }
#endif

  if( pParse->colNamesSet || db->mallocFailed ) return;
  assert( v!=0 );
  assert( pTabList!=0 );
  pParse->colNamesSet = 1;
  fullNames = (db->flags & SQLITE_FullColNames)!=0;
  shortNames = (db->flags & SQLITE_ShortColNames)!=0;
  sqlite3VdbeSetNumCols(v, pEList->nExpr);
  for(i=0; i<pEList->nExpr; i++){
    Expr *p;
    p = pEList->a[i].pExpr;
    if( NEVER(p==0) ) continue;
    if( pEList->a[i].zName ){
      char *zName = pEList->a[i].zName;
      sqlite3VdbeSetColName(v, i, COLNAME_NAME, zName, SQLITE_TRANSIENT);
    }else if( p->op==TK_COLUMN || p->op==TK_AGG_COLUMN ){
      Table *pTab;
      char *zCol;
      int iCol = p->iColumn;
      for(j=0; ALWAYS(j<pTabList->nSrc); j++){
        if( pTabList->a[j].iCursor==p->iTable ) break;
      }
      assert( j<pTabList->nSrc );
      pTab = pTabList->a[j].pTab;
      if( iCol<0 ) iCol = pTab->iPKey;
      assert( iCol==-1 || (iCol>=0 && iCol<pTab->nCol) );
      if( iCol<0 ){
        zCol = "rowid";
      }else{
        zCol = pTab->aCol[iCol].zName;
      }
      if( !shortNames && !fullNames ){
        sqlite3VdbeSetColName(v, i, COLNAME_NAME, 
            sqlite3DbStrDup(db, pEList->a[i].zSpan), SQLITE_DYNAMIC);
      }else if( fullNames ){
        char *zName = 0;
        zName = sqlite3MPrintf(db, "%s.%s", pTab->zName, zCol);
        sqlite3VdbeSetColName(v, i, COLNAME_NAME, zName, SQLITE_DYNAMIC);
      }else{
        sqlite3VdbeSetColName(v, i, COLNAME_NAME, zCol, SQLITE_TRANSIENT);
      }
    }else{
      const char *z = pEList->a[i].zSpan;
      z = z==0 ? sqlite3MPrintf(db, "column%d", i+1) : sqlite3DbStrDup(db, z);
      sqlite3VdbeSetColName(v, i, COLNAME_NAME, z, SQLITE_DYNAMIC);
    }
  }
  generateColumnTypes(pParse, pTabList, pEList);
}

// Assembly:
cmpb $0x0, 0x1ed(%rdi)
je 0x5fff0
retq
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x58, %rsp
movq %rdi, %r14
cmpb $0x0, 0x1c(%rdi)
jne 0x60015
movq (%r14), %r12
cmpb $0x0, 0x51(%r12)
je 0x60024
addq $0x58, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rdx, %rbx
movq %rsi, %r15
movq 0x10(%r14), %r13
movb $0x1, 0x1c(%r14)
movl 0x2c(%r12), %eax
movl %eax, -0x34(%rbp)
movl (%rdx), %esi
movq %r13, %rdi
callq 0x3f6b1
cmpl $0x0, (%rbx)
jle 0x60015
movq %r12, -0x30(%rbp)
leaq 0x8(%r15), %rax
movq %rax, -0x48(%rbp)
leaq 0x4c(%r15), %rax
movq %rax, -0x40(%rbp)
xorl %r12d, %r12d
movq 0x8(%rbx), %rax
movq %r12, %rdx
shlq $0x5, %rdx
movq (%rax,%rdx), %rcx
testq %rcx, %rcx
je 0x601c4
leaq (%rax,%rdx), %rdi
movq 0x8(%rdi), %rsi
testq %rsi, %rsi
je 0x600b2
movq (%r13), %rax
cmpb $0x0, 0x51(%rax)
jne 0x601c4
imulq $0x38, %r12, %rdi
addq 0x20(%r13), %rdi
movl $0xffffffff, %edx       # imm = 0xFFFFFFFF
movl $0x1, %ecx
movq $-0x1, %r8
jmp 0x601bf
movzbl (%rcx), %esi
orl $0x2, %esi
cmpl $0x9a, %esi
jne 0x600e8
movl (%r15), %esi
testl %esi, %esi
jle 0x60111
movl 0x2c(%rcx), %r8d
movq -0x40(%rbp), %r9
xorl %edi, %edi
cmpl %r8d, (%r9)
je 0x600e4
incq %rdi
addq $0x70, %r9
cmpq %rdi, %rsi
jne 0x600d1
movl %esi, %edi
movl %edi, %esi
jmp 0x60113
movq 0x10(%rdi), %rsi
testq %rsi, %rsi
jne 0x60179
leal 0x1(%r12), %edx
movq -0x30(%rbp), %rdi
leaq 0x1db04(%rip), %rsi     # 0x7dc09
xorl %eax, %eax
callq 0x1494e
jmp 0x60199
xorl %esi, %esi
movzwl 0x30(%rcx), %edi
imulq $0x70, %rsi, %rcx
movq -0x48(%rbp), %rsi
movq 0x20(%rsi,%rcx), %rsi
testw %di, %di
jns 0x60139
movzwl 0x3c(%rsi), %edi
leaq 0x1bc0c(%rip), %rcx     # 0x7bd40
testw %di, %di
js 0x6014b
movzwl %di, %ecx
movq 0x8(%rsi), %rdi
leaq (%rcx,%rcx,2), %rcx
shll $0x4, %ecx
movq (%rdi,%rcx), %rcx
movl -0x34(%rbp), %edi
testb $0x60, %dil
je 0x60174
testb $0x20, %dil
jne 0x60184
movq (%r13), %rax
cmpb $0x0, 0x51(%rax)
jne 0x601c4
imulq $0x38, %r12, %rdi
addq 0x20(%r13), %rdi
movq %rcx, %rsi
jmp 0x6009c
movq 0x10(%rax,%rdx), %rsi
movq -0x30(%rbp), %rdi
callq 0x12d65
jmp 0x60199
movq (%rsi), %rdx
movq -0x30(%rbp), %rdi
leaq 0x1b057(%rip), %rsi     # 0x7b1e9
xorl %eax, %eax
callq 0x1494e
movq (%r13), %rcx
cmpb $0x0, 0x51(%rcx)
jne 0x601c4
imulq $0x38, %r12, %rdi
addq 0x20(%r13), %rdi
movq %rax, %rsi
movl $0xffffffff, %edx       # imm = 0xFFFFFFFF
movl $0x1, %ecx
leaq -0x53f0e(%rip), %r8     # 0xc2b1
callq 0x11bc0
incq %r12
movslq (%rbx), %rax
cmpq %rax, %r12
jl 0x60061
movq 0x10(%r14), %r12
movq %r15, -0x78(%rbp)
movq %r14, -0x80(%rbp)
testl %eax, %eax
jle 0x60015
xorl %r15d, %r15d
xorl %r13d, %r13d
xorl %r14d, %r14d
movq 0x8(%rbx), %rax
movq (%rax,%r15), %rsi
leaq -0x80(%rbp), %rdi
xorl %edx, %edx
callq 0x5975b
movq (%r12), %rcx
cmpb $0x0, 0x51(%rcx)
jne 0x6023b
movzwl 0x88(%r12), %ecx
imulq $0x38, %rcx, %rdi
addq 0x20(%r12), %rdi
addq %r13, %rdi
movq %rax, %rsi
movl $0xffffffff, %edx       # imm = 0xFFFFFFFF
movl $0x1, %ecx
movq $-0x1, %r8
callq 0x11bc0
incq %r14
movslq (%rbx), %rax
addq $0x38, %r13
addq $0x20, %r15
cmpq %rax, %r14
jl 0x601f0
jmp 0x60015