// File: biotomas[P]ipasir/sat/picosat961/picosat-961/picosat.c
// Function: picosat_stats
void
picosat_stats (PS * ps)
{
  unsigned redlits;
#ifdef STATS
  check_ready (ps);
  assert (ps->sdecisions + ps->rdecisions + ps->assumptions == ps->decisions);
#endif
  if (ps->calls > 1)
     fprintf (ps->out, "%s%u calls\n", ps->prefix, ps->calls);
  if (ps->contexts)
    {
       fprintf (ps->out, "%s%u contexts", ps->prefix, ps->contexts);
#ifdef STATS
       fprintf (ps->out, " %u internal variables", ps->internals);
#endif
       fprintf (ps->out, "\n");
    }
   fprintf (ps->out, "%s%u iterations\n", ps->prefix, ps->iterations);
   fprintf (ps->out, "%s%u restarts", ps->prefix, ps->restarts);
#ifdef STATS
   fprintf (ps->out, " (%u skipped)", ps->skippedrestarts);
#endif
  fputc ('\n', ps->out);
#ifndef NFL
   fprintf (ps->out, "%s%u failed literals", ps->prefix, ps->failedlits);
#ifdef STATS
   fprintf (ps->out,
           ", %u calls, %u rounds, %llu propagations",
           ps->flcalls, ps->flrounds, ps->flprops);
#endif
  fputc ('\n', ps->out);
#ifdef STATS
   fprintf (ps->out, 
    "%sfl: %u = %.1f%% implicit, %llu oopsed, %llu tried, %llu skipped\n", 
    ps->prefix, 
    ps->ifailedlits, PERCENT (ps->ifailedlits, ps->failedlits),
    ps->floopsed, ps->fltried, ps->flskipped);
#endif
#endif
   fprintf (ps->out, "%s%u conflicts", ps->prefix, ps->conflicts);
#ifdef STATS
   fprintf (ps->out, " (%u uips = %.1f%%)\n", ps->uips, PERCENT(ps->uips,ps->conflicts));
#else
  fputc ('\n', ps->out);
#endif
#ifndef NADC
   fprintf (ps->out, "%s%u adc conflicts\n", ps->prefix, ps->adoconflicts);
#endif
#ifdef STATS
   fprintf (ps->out, "%s%llu dereferenced literals\n", ps->prefix, ps->derefs);
#endif
   fprintf (ps->out, "%s%u decisions", ps->prefix, ps->decisions);
#ifdef STATS
   fprintf (ps->out, " (%u random = %.2f%%",
           ps->rdecisions, PERCENT (ps->rdecisions, ps->decisions));
   fprintf (ps->out, ", %u assumptions", ps->assumptions);
  fputc (')', ps->out);
#endif
  fputc ('\n', ps->out);
#ifdef STATS
   fprintf (ps->out,
           "%s%u static phase decisions (%.1f%% of all variables)\n",
	   ps->prefix,
	   ps->staticphasedecisions, PERCENT (ps->staticphasedecisions, ps->max_var));
#endif
   fprintf (ps->out, "%s%u fixed variables\n", ps->prefix, ps->fixed);
  assert (ps->nonminimizedllits >= ps->minimizedllits);
  redlits = ps->nonminimizedllits - ps->minimizedllits;
   fprintf (ps->out, "%s%u learned literals\n", ps->prefix, ps->llitsadded);
   fprintf (ps->out, "%s%.1f%% deleted literals\n",
     ps->prefix, PERCENT (redlits, ps->nonminimizedllits));

#ifdef STATS
#ifdef TRACE
   fprintf (ps->out,
	   "%s%llu antecedents (%.1f antecedents per clause",
	   ps->prefix, ps->antecedents, AVERAGE (ps->antecedents, ps->conflicts));
  if (ps->trace)
     fprintf (ps->out, ", %.1f bytes/antecedent)", AVERAGE (ps->znts, ps->antecedents));
  fputs (")\n", ps->out);
#endif

   fprintf (ps->out, "%s%llu propagations (%.1f propagations per decision)\n",
           ps->prefix, ps->propagations, AVERAGE (ps->propagations, ps->decisions));
   fprintf (ps->out, "%s%llu visits (%.1f per propagation)\n",
	   ps->prefix, ps->visits, AVERAGE (ps->visits, ps->propagations));
   fprintf (ps->out, 
           "%s%llu binary clauses visited (%.1f%% %.1f per propagation)\n",
	   ps->prefix, ps->bvisits, 
	   PERCENT (ps->bvisits, ps->visits),
	   AVERAGE (ps->bvisits, ps->propagations));
   fprintf (ps->out, 
           "%s%llu ternary clauses visited (%.1f%% %.1f per propagation)\n",
	   ps->prefix, ps->tvisits, 
	   PERCENT (ps->tvisits, ps->visits),
	   AVERAGE (ps->tvisits, ps->propagations));
   fprintf (ps->out, 
           "%s%llu large clauses visited (%.1f%% %.1f per propagation)\n",
	   ps->prefix, ps->lvisits, 
	   PERCENT (ps->lvisits, ps->visits),
	   AVERAGE (ps->lvisits, ps->propagations));
   fprintf (ps->out, "%s%llu other true (%.1f%% of visited clauses)\n",
	   ps->prefix, ps->othertrue, PERCENT (ps->othertrue, ps->visits));
   fprintf (ps->out, 
           "%s%llu other true in binary clauses (%.1f%%)"
	   ", %llu upper (%.1f%%)\n",
           ps->prefix, ps->othertrue2, PERCENT (ps->othertrue2, ps->othertrue),
	   ps->othertrue2u, PERCENT (ps->othertrue2u, ps->othertrue2));
   fprintf (ps->out, 
           "%s%llu other true in large clauses (%.1f%%)"
	   ", %llu upper (%.1f%%)\n",
           ps->prefix, ps->othertruel, PERCENT (ps->othertruel, ps->othertrue),
	   ps->othertruelu, PERCENT (ps->othertruelu, ps->othertruel));
   fprintf (ps->out, "%s%llu ternary and large traversals (%.1f per visit)\n",
	   ps->prefix, ps->traversals, AVERAGE (ps->traversals, ps->visits));
   fprintf (ps->out, "%s%llu large traversals (%.1f per large visit)\n",
	   ps->prefix, ps->ltraversals, AVERAGE (ps->ltraversals, ps->lvisits));
   fprintf (ps->out, "%s%llu assignments\n", ps->prefix, ps->assignments);
#else
   fprintf (ps->out, "%s%llu propagations\n", ps->prefix, picosat_propagations (ps));
   fprintf (ps->out, "%s%llu visits\n", ps->prefix, picosat_visits (ps));
#endif
   fprintf (ps->out, "%s%.1f%% variables used\n", ps->prefix, PERCENT (ps->vused, ps->max_var));

  sflush (ps);
   fprintf (ps->out, "%s%.1f seconds in library\n", ps->prefix, ps->seconds);
   fprintf (ps->out, "%s%.1f megaprops/second\n",
	   ps->prefix, AVERAGE (ps->propagations / 1e6f, ps->seconds));
   fprintf (ps->out, "%s%.1f megavisits/second\n",
	   ps->prefix, AVERAGE (ps->visits / 1e6f, ps->seconds));
   fprintf (ps->out, "%sprobing %.1f seconds %.0f%%\n",
           ps->prefix, ps->flseconds, PERCENT (ps->flseconds, ps->seconds));
#ifdef STATS
   fprintf (ps->out,
	   "%srecycled %.1f MB in %u reductions\n",
	   ps->prefix, ps->rrecycled / (double) (1 << 20), ps->reductions);
   fprintf (ps->out,
	   "%srecycled %.1f MB in %u simplifications\n",
	   ps->prefix, ps->srecycled / (double) (1 << 20), ps->simps);
#else
   fprintf (ps->out, "%s%u simplifications\n", ps->prefix, ps->simps);
   fprintf (ps->out, "%s%u reductions\n", ps->prefix, ps->reductions);
   fprintf (ps->out, "%s%.1f MB recycled\n", ps->prefix, ps->recycled / (double) (1 << 20));
#endif
   fprintf (ps->out, "%s%.1f MB maximally allocated\n",
	    ps->prefix, picosat_max_bytes_allocated (ps) / (double) (1 << 20));
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xf0, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
cmpl $0x1, 0x38c(%rax)
jbe 0xac34
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rdi
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rdx
movq -0x8(%rbp), %rax
movl 0x38c(%rax), %ecx
leaq 0x12ec1(%rip), %rsi     # 0x1daee
movb $0x0, %al
callq 0x1130
movq -0x8(%rbp), %rax
cmpl $0x0, 0x420(%rax)
je 0xac7f
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rdi
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rdx
movq -0x8(%rbp), %rax
movl 0x420(%rax), %ecx
leaq 0x12e98(%rip), %rsi     # 0x1dafa
movb $0x0, %al
callq 0x1130
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rdi
leaq 0x13017(%rip), %rsi     # 0x1dc8f
movb $0x0, %al
callq 0x1130
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rdi
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rdx
movq -0x8(%rbp), %rax
movl 0x380(%rax), %ecx
leaq 0x12e68(%rip), %rsi     # 0x1db08
movb $0x0, %al
callq 0x1130
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rdi
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rdx
movq -0x8(%rbp), %rax
movl 0x394(%rax), %ecx
leaq 0x12e51(%rip), %rsi     # 0x1db19
movb $0x0, %al
callq 0x1130
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rsi
movl $0xa, %edi
callq 0x10f0
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rdi
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rdx
movq -0x8(%rbp), %rax
movl 0x3ec(%rax), %ecx
leaq 0x12e25(%rip), %rsi     # 0x1db27
movb $0x0, %al
callq 0x1130
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rsi
movl $0xa, %edi
callq 0x10f0
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rdi
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rdx
movq -0x8(%rbp), %rax
movl 0x41c(%rax), %ecx
leaq 0x12e00(%rip), %rsi     # 0x1db3c
movb $0x0, %al
callq 0x1130
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rsi
movl $0xa, %edi
callq 0x10f0
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rdi
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rdx
movq -0x8(%rbp), %rax
movl 0x390(%rax), %ecx
leaq 0x12dd5(%rip), %rsi     # 0x1db4b
movb $0x0, %al
callq 0x1130
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rsi
movl $0xa, %edi
callq 0x10f0
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rdi
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rdx
movq -0x8(%rbp), %rax
movl 0x3e8(%rax), %ecx
leaq 0x12daa(%rip), %rsi     # 0x1db5a
movb $0x0, %al
callq 0x1130
movq -0x8(%rbp), %rax
movl 0x464(%rax), %eax
movq -0x8(%rbp), %rcx
cmpl 0x460(%rcx), %eax
jb 0xadcf
jmp 0xadee
leaq 0x12d9a(%rip), %rdi     # 0x1db70
leaq 0x124c7(%rip), %rsi     # 0x1d2a4
movl $0x1f5b, %edx           # imm = 0x1F5B
leaq 0x12db3(%rip), %rcx     # 0x1db9c
callq 0x10b0
movq -0x8(%rbp), %rax
movl 0x464(%rax), %eax
movq -0x8(%rbp), %rcx
subl 0x460(%rcx), %eax
movl %eax, -0xc(%rbp)
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rdi
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rdx
movq -0x8(%rbp), %rax
movl 0x450(%rax), %ecx
leaq 0x12d8f(%rip), %rsi     # 0x1dbb5
movb $0x0, %al
callq 0x1130
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rax
movq %rax, -0x20(%rbp)
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movq %rax, -0x18(%rbp)
movq -0x8(%rbp), %rax
cmpl $0x0, 0x464(%rax)
je 0xae74
movl -0xc(%rbp), %eax
cvtsi2sd %rax, %xmm0
movq -0x8(%rbp), %rax
movl 0x464(%rax), %eax
cvtsi2sd %rax, %xmm1
divsd %xmm1, %xmm0
movsd %xmm0, -0x28(%rbp)
jmp 0xae7e
xorps %xmm0, %xmm0
movsd %xmm0, -0x28(%rbp)
jmp 0xae7e
movq -0x18(%rbp), %rdx
movq -0x20(%rbp), %rdi
movsd -0x28(%rbp), %xmm1
movsd 0x1225d(%rip), %xmm0    # 0x1d0f0
mulsd %xmm1, %xmm0
leaq 0x12d2e(%rip), %rsi     # 0x1dbcc
movb $0x1, %al
callq 0x1130
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rax
movq %rax, -0x58(%rbp)
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movq %rax, -0x50(%rbp)
movq -0x8(%rbp), %rdi
callq 0xab30
movq -0x58(%rbp), %rdi
movq -0x50(%rbp), %rdx
movq %rax, %rcx
leaq 0x12d0f(%rip), %rsi     # 0x1dbe7
movb $0x0, %al
callq 0x1130
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rax
movq %rax, -0x48(%rbp)
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movq %rax, -0x40(%rbp)
movq -0x8(%rbp), %rdi
callq 0xab50
movq -0x48(%rbp), %rdi
movq -0x40(%rbp), %rdx
movq %rax, %rcx
leaq 0x12cea(%rip), %rsi     # 0x1dbfc
movb $0x0, %al
callq 0x1130
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rax
movq %rax, -0x38(%rbp)
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movq %rax, -0x30(%rbp)
movq -0x8(%rbp), %rax
cmpl $0x0, 0x2c(%rax)
je 0xaf5d
movq -0x8(%rbp), %rax
movl 0x44c(%rax), %ecx
cvtsi2sd %rcx, %xmm0
movl 0x2c(%rax), %eax
cvtsi2sd %rax, %xmm1
divsd %xmm1, %xmm0
movsd %xmm0, -0x60(%rbp)
jmp 0xaf67
xorps %xmm0, %xmm0
movsd %xmm0, -0x60(%rbp)
jmp 0xaf67
movq -0x30(%rbp), %rdx
movq -0x38(%rbp), %rdi
movsd -0x60(%rbp), %xmm1
movsd 0x12174(%rip), %xmm0    # 0x1d0f0
mulsd %xmm1, %xmm0
leaq 0x12c84(%rip), %rsi     # 0x1dc0b
movb $0x1, %al
callq 0x1130
movq -0x8(%rbp), %rdi
callq 0xb2f0
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rdi
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rdx
movq -0x8(%rbp), %rax
movsd 0x340(%rax), %xmm0
leaq 0x12c6a(%rip), %rsi     # 0x1dc24
movb $0x1, %al
callq 0x1130
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rax
movq %rax, -0x70(%rbp)
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movq %rax, -0x68(%rbp)
movq -0x8(%rbp), %rax
movsd 0x340(%rax), %xmm0
xorps %xmm1, %xmm1
ucomisd %xmm1, %xmm0
jne 0xaff2
jp 0xaff2
jmp 0xb03f
movq -0x8(%rbp), %rax
movq 0x3d8(%rax), %xmm0
movaps 0x1214b(%rip), %xmm1    # 0x1d150
punpckldq %xmm1, %xmm0    # xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
movapd 0x1214f(%rip), %xmm1    # 0x1d160
subpd %xmm1, %xmm0
movaps %xmm0, %xmm1
unpckhpd %xmm0, %xmm0            # xmm0 = xmm0[1,1]
addsd %xmm1, %xmm0
movsd 0x120d0(%rip), %xmm1    # 0x1d0f8
divsd %xmm1, %xmm0
movq -0x8(%rbp), %rax
divsd 0x340(%rax), %xmm0
movsd %xmm0, -0x78(%rbp)
jmp 0xb049
xorps %xmm0, %xmm0
movsd %xmm0, -0x78(%rbp)
jmp 0xb049
movq -0x68(%rbp), %rdx
movq -0x70(%rbp), %rdi
movsd -0x78(%rbp), %xmm0
leaq 0x12be2(%rip), %rsi     # 0x1dc3f
movb $0x1, %al
callq 0x1130
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rax
movq %rax, -0x88(%rbp)
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movq %rax, -0x80(%rbp)
movq -0x8(%rbp), %rax
movsd 0x340(%rax), %xmm0
xorps %xmm1, %xmm1
ucomisd %xmm1, %xmm0
jne 0xb098
jp 0xb098
jmp 0xb0e8
movq -0x8(%rbp), %rax
movq 0x458(%rax), %xmm0
movaps 0x120a5(%rip), %xmm1    # 0x1d150
punpckldq %xmm1, %xmm0    # xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
movapd 0x120a9(%rip), %xmm1    # 0x1d160
subpd %xmm1, %xmm0
movaps %xmm0, %xmm1
unpckhpd %xmm0, %xmm0            # xmm0 = xmm0[1,1]
addsd %xmm1, %xmm0
movsd 0x1202a(%rip), %xmm1    # 0x1d0f8
divsd %xmm1, %xmm0
movq -0x8(%rbp), %rax
divsd 0x340(%rax), %xmm0
movsd %xmm0, -0x90(%rbp)
jmp 0xb0f5
xorps %xmm0, %xmm0
movsd %xmm0, -0x90(%rbp)
jmp 0xb0f5
movq -0x80(%rbp), %rdx
movq -0x88(%rbp), %rdi
movsd -0x90(%rbp), %xmm0
leaq 0x12b49(%rip), %rsi     # 0x1dc58
movb $0x1, %al
callq 0x1130
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rax
movq %rax, -0xa8(%rbp)
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movq %rax, -0xa0(%rbp)
movq -0x8(%rbp), %rax
movsd 0x348(%rax), %xmm0
movsd %xmm0, -0x98(%rbp)
movq -0x8(%rbp), %rax
movsd 0x340(%rax), %xmm0
xorps %xmm1, %xmm1
ucomisd %xmm1, %xmm0
jne 0xb161
jp 0xb161
jmp 0xb183
movq -0x8(%rbp), %rax
movsd 0x348(%rax), %xmm0
movq -0x8(%rbp), %rax
divsd 0x340(%rax), %xmm0
movsd %xmm0, -0xb0(%rbp)
jmp 0xb190
xorps %xmm0, %xmm0
movsd %xmm0, -0xb0(%rbp)
jmp 0xb190
movsd -0x98(%rbp), %xmm0
movq -0xa0(%rbp), %rdx
movq -0xa8(%rbp), %rdi
movsd -0xb0(%rbp), %xmm1
movsd 0x11f3a(%rip), %xmm2    # 0x1d0f0
mulsd %xmm2, %xmm1
leaq 0x12ab1(%rip), %rsi     # 0x1dc72
movb $0x2, %al
callq 0x1130
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rdi
movq 0x18(%rax), %rdx
movl 0x398(%rax), %ecx
leaq 0x12ab0(%rip), %rsi     # 0x1dc91
xorl %eax, %eax
movb %al, -0xe1(%rbp)
callq 0x1130
movb -0xe1(%rbp), %al
movq -0x8(%rbp), %rcx
movq 0x10(%rcx), %rdi
movq 0x18(%rcx), %rdx
movl 0x3a4(%rcx), %ecx
leaq 0x12a9a(%rip), %rsi     # 0x1dca7
callq 0x1130
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rdi
movq 0x18(%rax), %rdx
movq 0x338(%rax), %xmm0
movaps 0x11f23(%rip), %xmm1    # 0x1d150
movaps %xmm1, -0xe0(%rbp)
punpckldq %xmm1, %xmm0    # xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
movapd 0x11f20(%rip), %xmm1    # 0x1d160
movaps %xmm1, -0xd0(%rbp)
subpd %xmm1, %xmm0
movaps %xmm0, %xmm1
unpckhpd %xmm0, %xmm0            # xmm0 = xmm0[1,1]
addsd %xmm1, %xmm0
movsd 0x11eaa(%rip), %xmm1    # 0x1d108
mulsd %xmm1, %xmm0
leaq 0x12a4f(%rip), %rsi     # 0x1dcb8
movb $0x1, %al
callq 0x1130
movq -0x8(%rbp), %rdi
movq 0x10(%rdi), %rax
movq %rax, -0xc0(%rbp)
movq 0x18(%rdi), %rax
movq %rax, -0xb8(%rbp)
callq 0xaae0
movaps -0xe0(%rbp), %xmm2
movaps -0xd0(%rbp), %xmm1
movq -0xc0(%rbp), %rdi
movq -0xb8(%rbp), %rdx
movq %rax, %xmm0
punpckldq %xmm2, %xmm0    # xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1]
subpd %xmm1, %xmm0
movaps %xmm0, %xmm1
unpckhpd %xmm0, %xmm0            # xmm0 = xmm0[1,1]
addsd %xmm1, %xmm0
movsd 0x11e35(%rip), %xmm1    # 0x1d100
divsd %xmm1, %xmm0
leaq 0x129f6(%rip), %rsi     # 0x1dccc
movb $0x1, %al
callq 0x1130
addq $0xf0, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)