// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/external/sqlite-3.33.0/sqlite3.c
// Function: sqlite3Analyze
SQLITE_PRIVATE void sqlite3Analyze(Parse *pParse, Token *pName1, Token *pName2){
  sqlite3 *db = pParse->db;
  int iDb;
  int i;
  char *z, *zDb;
  Table *pTab;
  Index *pIdx;
  Token *pTableName;
  Vdbe *v;

  /* Read the database schema. If an error occurs, leave an error message
  ** and code in pParse and return NULL. */
  assert( sqlite3BtreeHoldsAllMutexes(pParse->db) );
  if( SQLITE_OK!=sqlite3ReadSchema(pParse) ){
    return;
  }

  assert( pName2!=0 || pName1==0 );
  if( pName1==0 ){
    /* Form 1:  Analyze everything */
    for(i=0; i<db->nDb; i++){
      if( i==1 ) continue;  /* Do not analyze the TEMP database */
      analyzeDatabase(pParse, i);
    }
  }else if( pName2->n==0 && (iDb = sqlite3FindDb(db, pName1))>=0 ){
    /* Analyze the schema named as the argument */
    analyzeDatabase(pParse, iDb);
  }else{
    /* Form 3: Analyze the table or index named as an argument */
    iDb = sqlite3TwoPartName(pParse, pName1, pName2, &pTableName);
    if( iDb>=0 ){
      zDb = pName2->n ? db->aDb[iDb].zDbSName : 0;
      z = sqlite3NameFromToken(db, pTableName);
      if( z ){
        if( (pIdx = sqlite3FindIndex(db, z, zDb))!=0 ){
          analyzeTable(pParse, pIdx->pTable, pIdx);
        }else if( (pTab = sqlite3LocateTable(pParse, 0, z, zDb))!=0 ){
          analyzeTable(pParse, pTab, 0);
        }
        sqlite3DbFree(db, z);
      }
    }
  }
  if( db->nSqlExec==0 && (v = sqlite3GetVdbe(pParse))!=0 ){
    sqlite3VdbeAddOp0(v, OP_Expire);
  }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x60, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq -0x8(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x20(%rbp)
movq -0x8(%rbp), %rdi
callq 0x4109b0
movl %eax, %ecx
xorl %eax, %eax
cmpl %ecx, %eax
je 0x4280d5
jmp 0x428256
cmpq $0x0, -0x10(%rbp)
jne 0x428113
movl $0x0, -0x28(%rbp)
movl -0x28(%rbp), %eax
movq -0x20(%rbp), %rcx
cmpl 0x28(%rcx), %eax
jge 0x42810e
cmpl $0x1, -0x28(%rbp)
jne 0x4280f7
jmp 0x428103
movq -0x8(%rbp), %rdi
movl -0x28(%rbp), %esi
callq 0x464770
movl -0x28(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x28(%rbp)
jmp 0x4280e3
jmp 0x428228
movq -0x18(%rbp), %rax
cmpl $0x0, 0x8(%rax)
jne 0x428143
movq -0x20(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x433ce0
movl %eax, -0x24(%rbp)
cmpl $0x0, %eax
jl 0x428143
movq -0x8(%rbp), %rdi
movl -0x24(%rbp), %esi
callq 0x464770
jmp 0x428226
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
movq -0x18(%rbp), %rdx
leaq -0x50(%rbp), %rcx
callq 0x4339d0
movl %eax, -0x24(%rbp)
cmpl $0x0, -0x24(%rbp)
jl 0x428224
movq -0x18(%rbp), %rax
cmpl $0x0, 0x8(%rax)
je 0x42818b
movq -0x20(%rbp), %rax
movq 0x20(%rax), %rax
movslq -0x24(%rbp), %rcx
shlq $0x5, %rcx
addq %rcx, %rax
movq (%rax), %rax
movq %rax, -0x60(%rbp)
jmp 0x428193
xorl %eax, %eax
movq %rax, -0x60(%rbp)
jmp 0x428193
movq -0x60(%rbp), %rax
movq %rax, -0x38(%rbp)
movq -0x20(%rbp), %rdi
movq -0x50(%rbp), %rsi
callq 0x41db70
movq %rax, -0x30(%rbp)
cmpq $0x0, -0x30(%rbp)
je 0x428222
movq -0x20(%rbp), %rdi
movq -0x30(%rbp), %rsi
movq -0x38(%rbp), %rdx
callq 0x40b960
movq %rax, -0x48(%rbp)
cmpq $0x0, %rax
je 0x4281e5
movq -0x8(%rbp), %rdi
movq -0x48(%rbp), %rax
movq 0x18(%rax), %rsi
movq -0x48(%rbp), %rdx
callq 0x464860
jmp 0x428215
movq -0x8(%rbp), %rdi
movq -0x30(%rbp), %rdx
movq -0x38(%rbp), %rcx
xorl %esi, %esi
callq 0x3cb4b0
movq %rax, -0x40(%rbp)
cmpq $0x0, %rax
je 0x428213
movq -0x8(%rbp), %rdi
movq -0x40(%rbp), %rsi
xorl %eax, %eax
movl %eax, %edx
callq 0x464860
jmp 0x428215
movq -0x20(%rbp), %rdi
movq -0x30(%rbp), %rsi
callq 0x3c00a0
jmp 0x428224
jmp 0x428226
jmp 0x428228
movq -0x20(%rbp), %rax
movzbl 0x6a(%rax), %eax
cmpl $0x0, %eax
jne 0x428256
movq -0x8(%rbp), %rdi
callq 0x4299d0
movq %rax, -0x58(%rbp)
cmpq $0x0, %rax
je 0x428256
movq -0x58(%rbp), %rdi
movl $0x9e, %esi
callq 0x429a40
addq $0x60, %rsp
popq %rbp
retq
nopl (%rax)