// File: /workspace/github_c_makefile_star2_O2/barabo[P]advanced-shell-history/src/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 || NEVER(v==0) || db->mallocFailed ) return;
  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) && pTabList ){
      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{
      sqlite3VdbeSetColName(v, i, COLNAME_NAME, 
          sqlite3DbStrDup(db, pEList->a[i].zSpan), SQLITE_DYNAMIC);
    }
  }
  generateColumnTypes(pParse, pTabList, pEList);
}

// Assembly:
cmpb $0x0, 0x200(%rdi)
je 0x4dec8
retq
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x58, %rsp
movq %rdi, %r14
movq 0x10(%rdi), %r12
cmpb $0x0, 0x1c(%rdi)
setne %al
testq %r12, %r12
sete %cl
orb %al, %cl
jne 0x4defa
movq (%r14), %rax
cmpb $0x0, 0x50(%rax)
je 0x4df09
addq $0x58, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rdx, %rbx
movq %rsi, %r15
movb $0x1, 0x1c(%r14)
movq %rax, -0x30(%rbp)
movl 0x2c(%rax), %eax
movl %eax, -0x34(%rbp)
movl (%rdx), %esi
movq %r12, %rdi
callq 0x31d90
leaq 0x8(%r15), %rax
movq %rax, -0x48(%rbp)
leaq 0x44(%r15), %rax
movq %rax, -0x40(%rbp)
xorl %r13d, %r13d
movslq (%rbx), %rax
cmpq %rax, %r13
jge 0x4e051
movq 0x8(%rbx), %rax
movq %r13, %rdx
shlq $0x5, %rdx
movq (%rax,%rdx), %rsi
testq %rsi, %rsi
je 0x4e049
leaq (%rax,%rdx), %rcx
movq 0x8(%rcx), %rcx
testq %rcx, %rcx
je 0x4df7d
movq %r12, %rdi
movl %r13d, %esi
xorl %edx, %edx
pushq $-0x1
popq %r8
jmp 0x4e044
movb (%rsi), %cl
cmpb $-0x68, %cl
jne 0x4df8e
testq %r15, %r15
jne 0x4dfa0
jmp 0x4e024
testq %r15, %r15
je 0x4e024
cmpb $-0x66, %cl
jne 0x4e024
movzwl 0x30(%rsi), %edi
movzbl (%r15), %ecx
movq -0x40(%rbp), %r9
xorl %r8d, %r8d
cmpq %r8, %rcx
je 0x4dfc9
movl (%r9), %r10d
cmpl 0x2c(%rsi), %r10d
je 0x4dfc6
incq %r8
addq $0x68, %r9
jmp 0x4dfaf
movq %r8, %rcx
imulq $0x68, %rcx, %rcx
movq -0x48(%rbp), %rsi
movq 0x20(%rsi,%rcx), %rsi
testw %di, %di
jns 0x4dfeb
movzwl 0x40(%rsi), %edi
leaq 0x1dfae(%rip), %rcx     # 0x6bf94
testw %di, %di
js 0x4dffa
movzwl %di, %ecx
movq 0x8(%rsi), %rdi
imulq $0x30, %rcx, %rcx
movq (%rdi,%rcx), %rcx
movl -0x34(%rbp), %edi
testb $0x60, %dil
je 0x4e024
testb $0x20, %dil
je 0x4df6c
movq (%rsi), %rdx
movq -0x30(%rbp), %rdi
leaq 0x1ea13(%rip), %rsi     # 0x6ca2e
xorl %eax, %eax
callq 0x10594
jmp 0x4e032
movq 0x10(%rax,%rdx), %rsi
movq -0x30(%rbp), %rdi
callq 0xf173
movq %r12, %rdi
movl %r13d, %esi
xorl %edx, %edx
movq %rax, %rcx
leaq -0x44ccd(%rip), %r8     # 0x9377
callq 0x31dfc
incq %r13
jmp 0x4df3b
movq 0x10(%r14), %r12
leaq -0x80(%rbp), %rcx
movq %r15, 0x8(%rcx)
movq %r14, (%rcx)
xorl %r14d, %r14d
pushq $-0x1
popq %r15
xorl %r13d, %r13d
cltq
cmpq %rax, %r13
jge 0x4defa
movq 0x8(%rbx), %rax
movq (%rax,%r14), %rsi
leaq -0x80(%rbp), %rdi
xorl %edx, %edx
xorl %ecx, %ecx
xorl %r8d, %r8d
callq 0x464c1
movq %r12, %rdi
movl %r13d, %esi
pushq $0x1
popq %rdx
movq %rax, %rcx
movq %r15, %r8
callq 0x31dfc
incq %r13
movl (%rbx), %eax
addq $0x20, %r14
jmp 0x4e06a