// File: /workspace/github_c_makefile_star2_O2/waynebhayes[P]SAHap/src/Genome.cpp
// Function: SAHap::Genome::Report(int, bool)
void Genome::Report(int cpuSeconds, bool final) {
    assert(this->windowMEC() >= 0);
    printf("%2dk (%.1f%%,%ds)  T %.3f  fA %.3f  pBad %.4f  MEC %.2f", (int)this->curIteration/1000, (100*fracTime()),
	cpuSeconds, this->t, this->fAccept.getAverage(), this->pBad.getAverage(), this->windowMEC());
    if (this->file.hasGroundTruth && ((cpuSeconds-lastCpuTime>1 || lastErrorRate > .25) || final || this->curIteration>=this->maxIterations)) {
	    auto gt = this->compareGroundTruth();
	    int hapSize0=this->haplotypes[0].size(),hapSize1=this->haplotypes[1].size();
	    assert(hapSize0==hapSize1); // don't multiply by this->haplotypes.size()
	    double he = (double)gt / (this->haplotypes[0].size() * haplotypes.size());
		this->lastErrorRate = he;
		this->lastCpuTime = cpuSeconds;
	    printf("  ( Err_vs_truth %5d Err_Pct %.2f%% [%d %d])", (int)gt, 100*he,hapSize0,hapSize1);
	    if(final) {
		printf("\nEnding ground truth ");
		if(he > 1.3 * READ_ERROR_RATE) printf("Fail!");
		else printf("Good enough");
	    }
    }
	cout << " " << range.start << "->" << range.end;
    printf("\n");
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
subq $0x30, %rsp
movl %edx, %ebp
movl %esi, %r14d
movq %rdi, %rbx
callq 0x2a88
xorpd %xmm1, %xmm1
ucomisd %xmm1, %xmm0
jb 0x3e75
movdqu 0x3bd8(%rbx), %xmm0
movl 0x3be0(%rbx), %eax
movl $0x3e8, %ecx            # imm = 0x3E8
cltd
movdqa 0x64dd(%rip), %xmm1     # 0xa050
pand %xmm0, %xmm1
por 0x64e1(%rip), %xmm1     # 0xa060
psrlq $0x20, %xmm0
por 0x64e4(%rip), %xmm0     # 0xa070
subpd 0x64ec(%rip), %xmm0     # 0xa080
idivl %ecx
movl %eax, %r15d
addpd %xmm1, %xmm0
movapd %xmm0, %xmm4
unpckhpd %xmm0, %xmm4            # xmm4 = xmm4[1],xmm0[1]
divsd %xmm0, %xmm4
movq 0x3e8(%rbx), %rax
movq 0x6468(%rip), %xmm3     # 0xa020
movapd 0x6470(%rip), %xmm2     # 0xa030
movsd 0x6508(%rip), %xmm5     # 0xa0d0
movapd %xmm5, %xmm6
testq %rax, %rax
je 0x3bf6
cvtsi2sdl 0x3f8(%rbx), %xmm6
movq %rax, %xmm0
punpckldq %xmm3, %xmm0    # xmm0 = xmm0[0],xmm3[0],xmm0[1],xmm3[1]
subpd %xmm2, %xmm0
movapd %xmm0, %xmm1
unpckhpd %xmm0, %xmm1            # xmm1 = xmm1[1],xmm0[1]
addsd %xmm0, %xmm1
divsd %xmm1, %xmm6
movsd %xmm6, 0x8(%rsp)
mulsd 0x651c(%rip), %xmm4     # 0xa120
movapd %xmm4, 0x10(%rsp)
movsd 0x3bc0(%rbx), %xmm0
movsd %xmm0, 0x28(%rsp)
movq 0x2348(%rbx), %rax
testq %rax, %rax
je 0x3c49
movsd 0x2358(%rbx), %xmm5
movq %rax, %xmm0
punpckldq %xmm3, %xmm0    # xmm0 = xmm0[0],xmm3[0],xmm0[1],xmm3[1]
subpd %xmm2, %xmm0
movapd %xmm0, %xmm1
unpckhpd %xmm0, %xmm1            # xmm1 = xmm1[1],xmm0[1]
addsd %xmm0, %xmm1
divsd %xmm1, %xmm5
movsd %xmm5, 0x20(%rsp)
movq %rbx, %rdi
callq 0x2a88
movapd %xmm0, %xmm4
leaq 0x6781(%rip), %rdi      # 0xa3e3
movl %r15d, %esi
movapd 0x10(%rsp), %xmm0
movl %r14d, %edx
movsd 0x28(%rsp), %xmm1
movsd 0x8(%rsp), %xmm2
movsd 0x20(%rsp), %xmm3
movb $0x5, %al
callq 0x2030
cmpb $0x1, 0x2431(%rbx)
jne 0x3e21
cvtsi2sd %r14d, %xmm3
movapd %xmm3, %xmm0
subsd 0x3c10(%rbx), %xmm0
movsd 0x3c08(%rbx), %xmm1
movsd 0x647b(%rip), %xmm2     # 0xa130
cmpltpd %xmm1, %xmm2
movsd 0x63ee(%rip), %xmm1     # 0xa0b0
cmpltpd %xmm0, %xmm1
orpd %xmm2, %xmm1
movd %xmm1, %eax
orb %bpl, %al
testb $0x1, %al
jne 0x3cea
movq 0x3be0(%rbx), %rax
cmpq 0x3bd8(%rbx), %rax
jb 0x3e21
movsd %xmm3, 0x8(%rsp)
movq %rbx, %rdi
callq 0x3ff0
movq %rax, %r14
movq 0x2368(%rbx), %rdi
callq 0x6632
movq %rax, %r15
movl $0xf8, %r12d
movq 0x2368(%rbx), %rdi
addq %r12, %rdi
callq 0x6632
cmpl %eax, %r15d
jne 0x3e94
movq %r14, %xmm0
movq 0x62eb(%rip), %xmm1     # 0xa020
punpckldq %xmm1, %xmm0    # xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
movapd 0x62ef(%rip), %xmm1     # 0xa030
subpd %xmm1, %xmm0
movapd %xmm0, %xmm1
unpckhpd %xmm0, %xmm1            # xmm1 = xmm1[1],xmm0[1]
addsd %xmm0, %xmm1
movapd %xmm1, 0x10(%rsp)
movq 0x2368(%rbx), %rdi
callq 0x6632
movq %rax, %rcx
movq 0x2370(%rbx), %rax
subq 0x2368(%rbx), %rax
cqto
idivq %r12
imulq %rcx, %rax
movq %rax, %xmm0
punpckldq 0x6296(%rip), %xmm0 # xmm0 = xmm0[0],mem[0],xmm0[1],mem[1]
subpd 0x629e(%rip), %xmm0     # 0xa030
movapd %xmm0, %xmm1
unpckhpd %xmm0, %xmm1            # xmm1 = xmm1[1],xmm0[1]
addsd %xmm0, %xmm1
movapd 0x10(%rsp), %xmm2
divsd %xmm1, %xmm2
movsd %xmm2, 0x3c08(%rbx)
movsd 0x8(%rsp), %xmm0
movsd %xmm0, 0x3c10(%rbx)
movsd 0x635a(%rip), %xmm0     # 0xa120
movapd %xmm2, 0x10(%rsp)
mulsd %xmm2, %xmm0
leaq 0x6657(%rip), %rdi      # 0xa42e
movl %r14d, %esi
movl %r15d, %edx
movl %r15d, %ecx
movb $0x1, %al
callq 0x2030
testb %bpl, %bpl
je 0x3e21
leaq 0x6668(%rip), %rdi      # 0xa45b
xorl %eax, %eax
callq 0x2030
movapd 0x10(%rsp), %xmm0
ucomisd 0x6330(%rip), %xmm0     # 0xa138
leaq 0x6662(%rip), %rax      # 0xa471
leaq 0x6661(%rip), %rdi      # 0xa477
cmovaq %rax, %rdi
xorl %eax, %eax
callq 0x2030
movq 0xc1a0(%rip), %rdi      # 0xffc8
leaq 0x67be(%rip), %rsi      # 0xa5ed
callq 0x2230
movq 0x3be8(%rbx), %rsi
movq %rax, %rdi
callq 0x2190
leaq 0x6639(%rip), %rsi      # 0xa483
movq %rax, %rdi
callq 0x2230
movq 0x3bf0(%rbx), %rsi
movq %rax, %rdi
callq 0x2190
pushq $0xa
popq %rdi
addq $0x30, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
jmp 0x22f0
leaq 0x652a(%rip), %rdi      # 0xa3a6
leaq 0x6340(%rip), %rsi      # 0xa1c3
leaq 0x6533(%rip), %rcx      # 0xa3bd
movl $0x1af, %edx            # imm = 0x1AF
callq 0x2180
leaq 0x6580(%rip), %rdi      # 0xa41b
leaq 0x6321(%rip), %rsi      # 0xa1c3
leaq 0x6514(%rip), %rcx      # 0xa3bd
movl $0x1b5, %edx            # imm = 0x1B5
callq 0x2180
nop