// File: /workspace/github_c_makefile_star2_O0/barabo[P]advanced-shell-history/src/sqlite3.c
// Function: whereOrInsert
static int whereOrInsert(
  WhereOrSet *pSet,      /* The WhereOrSet to be updated */
  Bitmask prereq,        /* Prerequisites of the new entry */
  WhereCost rRun,        /* Run-cost of the new entry */
  WhereCost nOut         /* Number of outputs for the new entry */
){
  u16 i;
  WhereOrCost *p;
  for(i=pSet->n, p=pSet->a; i>0; i--, p++){
    if( rRun<=p->rRun && (prereq & p->prereq)==prereq ){
      goto whereOrInsert_done;
    }
    if( p->rRun<=rRun && (p->prereq & prereq)==p->prereq ){
      return 0;
    }
  }
  if( pSet->n<N_OR_COST ){
    p = &pSet->a[pSet->n++];
    p->nOut = nOut;
  }else{
    p = pSet->a;
    for(i=1; i<pSet->n; i++){
      if( p->rRun>pSet->a[i].rRun ) p = pSet->a + i;
    }
    if( p->rRun<=rRun ) return 0;
  }
whereOrInsert_done:
  p->prereq = prereq;
  p->rRun = rRun;
  if( p->nOut>nOut ) p->nOut = nOut;
  return 1;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
movw %cx, %ax
movw %dx, %cx
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movw %cx, -0x1a(%rbp)
movw %ax, -0x1c(%rbp)
movq -0x10(%rbp), %rax
movw (%rax), %ax
movw %ax, -0x1e(%rbp)
movq -0x10(%rbp), %rax
addq $0x8, %rax
movq %rax, -0x28(%rbp)
movzwl -0x1e(%rbp), %eax
cmpl $0x0, %eax
jle 0x7964c
movzwl -0x1a(%rbp), %eax
movq -0x28(%rbp), %rcx
movzwl 0x8(%rcx), %ecx
cmpl %ecx, %eax
jg 0x79600
movq -0x18(%rbp), %rax
movq -0x28(%rbp), %rcx
andq (%rcx), %rax
cmpq -0x18(%rbp), %rax
jne 0x79600
jmp 0x7971b
movq -0x28(%rbp), %rax
movzwl 0x8(%rax), %eax
movzwl -0x1a(%rbp), %ecx
cmpl %ecx, %eax
jg 0x79630
movq -0x28(%rbp), %rax
movq (%rax), %rax
andq -0x18(%rbp), %rax
movq -0x28(%rbp), %rcx
cmpq (%rcx), %rax
jne 0x79630
movl $0x0, -0x4(%rbp)
jmp 0x79755
jmp 0x79632
movw -0x1e(%rbp), %ax
addw $-0x1, %ax
movw %ax, -0x1e(%rbp)
movq -0x28(%rbp), %rax
addq $0x10, %rax
movq %rax, -0x28(%rbp)
jmp 0x795d1
movq -0x10(%rbp), %rax
movzwl (%rax), %eax
cmpl $0x3, %eax
jge 0x79690
movq -0x10(%rbp), %rax
addq $0x8, %rax
movq -0x10(%rbp), %rdx
movw (%rdx), %cx
movw %cx, %si
addw $0x1, %si
movw %si, (%rdx)
movzwl %cx, %ecx
shlq $0x4, %rcx
addq %rcx, %rax
movq %rax, -0x28(%rbp)
movw -0x1c(%rbp), %cx
movq -0x28(%rbp), %rax
movw %cx, 0xa(%rax)
jmp 0x79719
movq -0x10(%rbp), %rax
addq $0x8, %rax
movq %rax, -0x28(%rbp)
movw $0x1, -0x1e(%rbp)
movzwl -0x1e(%rbp), %eax
movq -0x10(%rbp), %rcx
movzwl (%rcx), %ecx
cmpl %ecx, %eax
jge 0x796fe
movq -0x28(%rbp), %rax
movzwl 0x8(%rax), %eax
movq -0x10(%rbp), %rcx
addq $0x8, %rcx
movzwl -0x1e(%rbp), %edx
shlq $0x4, %rdx
addq %rdx, %rcx
movzwl 0x8(%rcx), %ecx
cmpl %ecx, %eax
jle 0x796ee
movq -0x10(%rbp), %rax
addq $0x8, %rax
movzwl -0x1e(%rbp), %ecx
movslq %ecx, %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movq %rax, -0x28(%rbp)
jmp 0x796f0
movw -0x1e(%rbp), %ax
addw $0x1, %ax
movw %ax, -0x1e(%rbp)
jmp 0x796a2
movq -0x28(%rbp), %rax
movzwl 0x8(%rax), %eax
movzwl -0x1a(%rbp), %ecx
cmpl %ecx, %eax
jg 0x79717
movl $0x0, -0x4(%rbp)
jmp 0x79755
jmp 0x79719
jmp 0x7971b
movq -0x18(%rbp), %rcx
movq -0x28(%rbp), %rax
movq %rcx, (%rax)
movw -0x1a(%rbp), %cx
movq -0x28(%rbp), %rax
movw %cx, 0x8(%rax)
movq -0x28(%rbp), %rax
movzwl 0xa(%rax), %eax
movzwl -0x1c(%rbp), %ecx
cmpl %ecx, %eax
jle 0x7974e
movw -0x1c(%rbp), %cx
movq -0x28(%rbp), %rax
movw %cx, 0xa(%rax)
movl $0x1, -0x4(%rbp)
movl -0x4(%rbp), %eax
popq %rbp
retq
nopw (%rax,%rax)