// File: /workspace/github_c_makefile_star2_O1/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 0x2fe2
xorpd %xmm1, %xmm1
ucomisd %xmm1, %xmm0
jb 0x46dc
movq 0x3be0(%rbx), %rcx
movslq %ecx, %rax
imulq $0x10624dd3, %rax, %r15 # imm = 0x10624DD3
movq %r15, %rax
shrq $0x3f, %rax
sarq $0x26, %r15
movq %rcx, %xmm0
movq 0x6d00(%rip), %xmm2     # 0xb0c0
punpckldq %xmm2, %xmm0    # xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1]
movapd 0x6d04(%rip), %xmm3     # 0xb0d0
subpd %xmm3, %xmm0
movapd %xmm0, %xmm4
unpckhpd %xmm0, %xmm4            # xmm4 = xmm4[1],xmm0[1]
addsd %xmm0, %xmm4
movq 0x3bd8(%rbx), %xmm0
punpckldq %xmm2, %xmm0    # xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1]
subpd %xmm3, %xmm0
movapd %xmm0, %xmm1
unpckhpd %xmm0, %xmm1            # xmm1 = xmm1[1],xmm0[1]
addsd %xmm0, %xmm1
divsd %xmm1, %xmm4
movq 0x3e8(%rbx), %rcx
movsd 0x6c1d(%rip), %xmm5     # 0xb028
movapd %xmm5, %xmm6
testq %rcx, %rcx
je 0x443c
xorps %xmm6, %xmm6
cvtsi2sdl 0x3f8(%rbx), %xmm6
movq %rcx, %xmm0
punpckldq %xmm2, %xmm0    # xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1]
subpd %xmm3, %xmm0
movapd %xmm0, %xmm1
unpckhpd %xmm0, %xmm1            # xmm1 = xmm1[1],xmm0[1]
addsd %xmm0, %xmm1
divsd %xmm1, %xmm6
movsd %xmm6, 0x8(%rsp)
mulsd 0x6c36(%rip), %xmm4     # 0xb080
movapd %xmm4, 0x10(%rsp)
addl %eax, %r15d
movsd 0x3bc0(%rbx), %xmm0
movsd %xmm0, 0x28(%rsp)
movq 0x2348(%rbx), %rax
testq %rax, %rax
je 0x4492
movsd 0x2358(%rbx), %xmm5
movq %rax, %xmm0
punpckldq %xmm2, %xmm0    # xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1]
subpd %xmm3, %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 0x2fe2
movapd %xmm0, %xmm4
leaq 0x6ed8(%rip), %rdi      # 0xb383
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 0x2040
cmpb $0x1, 0x2431(%rbx)
jne 0x4676
xorps %xmm3, %xmm3
cvtsi2sd %r14d, %xmm3
movapd %xmm3, %xmm0
subsd 0x3c10(%rbx), %xmm0
movsd 0x3c08(%rbx), %xmm1
movsd 0x6b8f(%rip), %xmm2     # 0xb090
cmpltpd %xmm1, %xmm2
movsd 0x6b02(%rip), %xmm1     # 0xb010
cmpltpd %xmm0, %xmm1
orpd %xmm2, %xmm1
movd %xmm1, %eax
orb %bpl, %al
testb $0x1, %al
jne 0x4536
movq 0x3be0(%rbx), %rax
cmpq 0x3bd8(%rbx), %rax
jb 0x4676
movsd %xmm3, 0x8(%rsp)
movq %rbx, %rdi
callq 0x48ae
movq %rax, %r14
movq 0x2368(%rbx), %rdi
callq 0x6e40
movq %rax, %r15
movl $0xf8, %edi
addq 0x2368(%rbx), %rdi
callq 0x6e40
movq %rax, %r12
cmpl %r12d, %r15d
jne 0x46fb
movq %r14, %xmm0
movq 0x6b40(%rip), %xmm1     # 0xb0c0
punpckldq %xmm1, %xmm0    # xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
movapd 0x6b44(%rip), %xmm1     # 0xb0d0
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 0x6e40
movq 0x2370(%rbx), %rcx
subq 0x2368(%rbx), %rcx
sarq $0x3, %rcx
movabsq $-0x1084210842108421, %rdx # imm = 0xEF7BDEF7BDEF7BDF
imulq %rax, %rdx
imulq %rcx, %rdx
movq %rdx, %xmm0
punpckldq 0x6ae1(%rip), %xmm0 # xmm0 = xmm0[0],mem[0],xmm0[1],mem[1]
subpd 0x6ae9(%rip), %xmm0     # 0xb0d0
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 0x6a65(%rip), %xmm0     # 0xb080
movapd %xmm2, 0x10(%rsp)
mulsd %xmm2, %xmm0
leaq 0x6da2(%rip), %rdi      # 0xb3ce
movl %r14d, %esi
movl %r15d, %edx
movl %r12d, %ecx
movb $0x1, %al
callq 0x2040
testb %bpl, %bpl
je 0x4676
leaq 0x6db3(%rip), %rdi      # 0xb3fb
xorl %eax, %eax
callq 0x2040
movapd 0x10(%rsp), %xmm0
ucomisd 0x6a3b(%rip), %xmm0     # 0xb098
leaq 0x6dad(%rip), %rax      # 0xb411
leaq 0x6dac(%rip), %rdi      # 0xb417
cmovaq %rax, %rdi
xorl %eax, %eax
callq 0x2040
movq 0xb94b(%rip), %r14      # 0xffc8
leaq 0x6f09(%rip), %rsi      # 0xb58d
movl $0x1, %edx
movq %r14, %rdi
callq 0x22b0
movq 0x3be8(%rbx), %rsi
movq %r14, %rdi
callq 0x2190
movq %rax, %r14
leaq 0x6d79(%rip), %rsi      # 0xb423
movl $0x2, %edx
movq %rax, %rdi
callq 0x22b0
movq 0x3bf0(%rbx), %rsi
movq %r14, %rdi
callq 0x2190
movl $0xa, %edi
addq $0x30, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
jmp 0x2310
leaq 0x6c63(%rip), %rdi      # 0xb346
leaq 0x6a79(%rip), %rsi      # 0xb163
leaq 0x6c6c(%rip), %rcx      # 0xb35d
movl $0x1af, %edx            # imm = 0x1AF
callq 0x2180
leaq 0x6cb9(%rip), %rdi      # 0xb3bb
leaq 0x6a5a(%rip), %rsi      # 0xb163
leaq 0x6c4d(%rip), %rcx      # 0xb35d
movl $0x1b5, %edx            # imm = 0x1B5
callq 0x2180