// File: /workspace/github_c_makefile_star2_O0/shifengbin[P]bishe/Output/../Persistence/sqlite3.c
// Function: analysisLoader
static int analysisLoader(void *pData, int argc, char **argv, char **NotUsed){
  analysisInfo *pInfo = (analysisInfo*)pData;
  Index *pIndex;
  Table *pTable;
  const char *z;

  assert( argc==3 );
  UNUSED_PARAMETER2(NotUsed, argc);

  if( argv==0 || argv[0]==0 || argv[2]==0 ){
    return 0;
  }
  pTable = sqlite3FindTable(pInfo->db, argv[0], pInfo->zDatabase);
  if( pTable==0 ){
    return 0;
  }
  if( argv[1]==0 ){
    pIndex = 0;
  }else if( sqlite3_stricmp(argv[0],argv[1])==0 ){
    pIndex = sqlite3PrimaryKeyIndex(pTable);
  }else{
    pIndex = sqlite3FindIndex(pInfo->db, argv[1], pInfo->zDatabase);
  }
  z = argv[2];

  if( pIndex ){
    tRowcnt *aiRowEst = 0;
    int nCol = pIndex->nKeyCol+1;
#ifdef SQLITE_ENABLE_STAT3_OR_STAT4
    /* Index.aiRowEst may already be set here if there are duplicate 
    ** sqlite_stat1 entries for this index. In that case just clobber
    ** the old data with the new instead of allocating a new array.  */
    if( pIndex->aiRowEst==0 ){
      pIndex->aiRowEst = (tRowcnt*)sqlite3MallocZero(sizeof(tRowcnt) * nCol);
      if( pIndex->aiRowEst==0 ) pInfo->db->mallocFailed = 1;
    }
    aiRowEst = pIndex->aiRowEst;
#endif
    pIndex->bUnordered = 0;
    decodeIntArray((char*)z, nCol, aiRowEst, pIndex->aiRowLogEst, pIndex);
    if( pIndex->pPartIdxWhere==0 ) pTable->nRowLogEst = pIndex->aiRowLogEst[0];
  }else{
    Index fakeIdx;
    fakeIdx.szIdxRow = pTable->szTabRow;
#ifdef SQLITE_ENABLE_COSTMULT
    fakeIdx.pTable = pTable;
#endif
    decodeIntArray((char*)z, 1, 0, &pTable->nRowLogEst, &fakeIdx);
    pTable->szTabRow = fakeIdx.szIdxRow;
  }

  return 0;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xc0, %rsp
movq %rdi, -0x10(%rbp)
movl %esi, -0x14(%rbp)
movq %rdx, -0x20(%rbp)
movq %rcx, -0x28(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x30(%rbp)
cmpq $0x0, -0x20(%rbp)
je 0x52d0e
movq -0x20(%rbp), %rax
cmpq $0x0, (%rax)
je 0x52d0e
movq -0x20(%rbp), %rax
cmpq $0x0, 0x10(%rax)
jne 0x52d1a
movl $0x0, -0x4(%rbp)
jmp 0x52e60
movq -0x30(%rbp), %rax
movq (%rax), %rdi
movq -0x20(%rbp), %rax
movq (%rax), %rsi
movq -0x30(%rbp), %rax
movq 0x8(%rax), %rdx
callq 0x1f7b0
movq %rax, -0x40(%rbp)
cmpq $0x0, -0x40(%rbp)
jne 0x52d4c
movl $0x0, -0x4(%rbp)
jmp 0x52e60
movq -0x20(%rbp), %rax
cmpq $0x0, 0x8(%rax)
jne 0x52d61
movq $0x0, -0x38(%rbp)
jmp 0x52dab
movq -0x20(%rbp), %rax
movq (%rax), %rdi
movq -0x20(%rbp), %rax
movq 0x8(%rax), %rsi
callq 0xb5c0
cmpl $0x0, %eax
jne 0x52d89
movq -0x40(%rbp), %rdi
callq 0x52e70
movq %rax, -0x38(%rbp)
jmp 0x52da9
movq -0x30(%rbp), %rax
movq (%rax), %rdi
movq -0x20(%rbp), %rax
movq 0x8(%rax), %rsi
movq -0x30(%rbp), %rax
movq 0x8(%rax), %rdx
callq 0x526e0
movq %rax, -0x38(%rbp)
jmp 0x52dab
movq -0x20(%rbp), %rax
movq 0x10(%rax), %rax
movq %rax, -0x48(%rbp)
cmpq $0x0, -0x38(%rbp)
je 0x52e20
movq $0x0, -0x50(%rbp)
movq -0x38(%rbp), %rax
movzwl 0x5e(%rax), %eax
addl $0x1, %eax
movl %eax, -0x54(%rbp)
movq -0x38(%rbp), %rax
movb 0x63(%rax), %cl
andb $-0x5, %cl
orb $0x0, %cl
movb %cl, 0x63(%rax)
movq -0x48(%rbp), %rdi
movl -0x54(%rbp), %esi
movq -0x50(%rbp), %rdx
movq -0x38(%rbp), %rax
movq 0x10(%rax), %rcx
movq -0x38(%rbp), %r8
callq 0x52ed0
movq -0x38(%rbp), %rax
cmpq $0x0, 0x48(%rax)
jne 0x52e1e
movq -0x38(%rbp), %rax
movq 0x10(%rax), %rax
movw (%rax), %cx
movq -0x40(%rbp), %rax
movw %cx, 0x42(%rax)
jmp 0x52e59
movq -0x40(%rbp), %rax
movw 0x44(%rax), %ax
movw %ax, -0x64(%rbp)
movq -0x48(%rbp), %rdi
movq -0x40(%rbp), %rcx
addq $0x42, %rcx
movl $0x1, %esi
xorl %eax, %eax
movl %eax, %edx
leaq -0xc0(%rbp), %r8
callq 0x52ed0
movw -0x64(%rbp), %cx
movq -0x40(%rbp), %rax
movw %cx, 0x44(%rax)
movl $0x0, -0x4(%rbp)
movl -0x4(%rbp), %eax
addq $0xc0, %rsp
popq %rbp
retq
nopl (%rax)