// File: /workspace/github_cpp_makefile_star2_O2/Cell-veto[P]postlhc/./ecmc.hpp
// Function: ChainRunner<IPL, Monodisperse2D>::dump_statistics(std::ostream&)
virtual
    void dump_statistics (std::ostream &os)
    {
        using boost::format;

        // some of these are physics data, so increase precision
        os.precision (15);
        // dump performance metrics
        uint64_t num_events = sum_uivector (all_events);
        os
            << "# new-style logfile -- episode dump\n"
            << "perfstat walltime "
            << walltime*1e-6 << " seconds\n"
            << "perfstat num_events "
            << num_events << "\n"
            << "perfstat events_per_hour "
            << format ("%.3e\n") % (3600. * num_events / walltime * 1e6)
            << "perfstat ratio_lr_events "
            << fdivide (sum_uivector (longrange_events), num_events) << "\n"
            << "perfstat predicts_per_event "
            << fdivide (shortrange_predicts, num_events) << " sr "
            << fdivide (longrange_predicts, num_events) << " lr\n";

        // EC dynamics
        os
            << "ecstat cumulative_disp "
            << cumulative_disp << "\n"
            << "ecstat cumulative_xdisp "
            << cumulative_xdisp << "\n"
            << "ecstat mean_free_path "
            << elementwise_fdivide (cumulative_disp, all_events) << "\n"
            << "ecstat mean_xdisp "
            << elementwise_fdivide (cumulative_xdisp, all_events) << "\n"
            << "ecstat mean_events_per_chain "
            << elementwise_fdivide (all_events, chainend_events) << "\n"
            << "ecstat scaled_mean_events_per_chain "
            << elementwise_fdivide (all_events,
                elementwise_product (chainend_events, target_epc)) << "\n"
            << "ecstat mean_tdisp_per_chain "
            << elementwise_fdivide (cumulative_disp + cumulative_xdisp, chainend_events) << "\n"
            << "ecstat scaled_mean_tdisp_per_chain "
            << elementwise_fdivide (cumulative_disp + cumulative_xdisp,
                elementwise_product (chainend_events, target_tdisppc)) << "\n";

        // compressibility factor: beta pressure / rho
        if (!inter.poison_xdisp_pressure ())
        {
            os
                << "compressib_factor instantaneous "
                << elementwise_fdivide (cumulative_disp + cumulative_xdisp, cumulative_disp) << "\n";
        }

        // zero
        os << "# new-style logfile -- clearing counters\n";
        reset_statistics ();
    }

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x188, %rsp            # imm = 0x188
movq %rsi, %r13
movq %rdi, %rbx
movq (%rsi), %rax
movq -0x18(%rax), %rax
movq $0xf, 0x8(%rsi,%rax)
movq 0xce8(%rdi), %r14
addq 0xcf0(%rdi), %r14
leaq 0x1a366a(%rip), %rsi    # 0x5bf344
movq %r13, %rdi
callq 0x4a4910
leaq 0x1a3680(%rip), %rsi    # 0x5bf369
movq %rax, %rdi
callq 0x4a4910
movsd 0xcc0(%rbx), %xmm1
unpcklps 0x1a3340(%rip), %xmm1   # xmm1 = xmm1[0],mem[0],xmm1[1],mem[1]
subpd 0x1a3348(%rip), %xmm1   # 0x5bf050
movapd %xmm1, %xmm0
unpckhpd %xmm1, %xmm0            # xmm0 = xmm0[1],xmm1[1]
addsd %xmm1, %xmm0
mulsd 0x1a33bc(%rip), %xmm0   # 0x5bf0d8
movq %rax, %rdi
callq 0x4a5640
leaq 0x1a3651(%rip), %rsi    # 0x5bf37c
movq %rax, %rdi
callq 0x4a4910
leaq 0x1a364c(%rip), %rsi    # 0x5bf386
movq %rax, %rdi
callq 0x4a4910
movq %rax, %rdi
movq %r14, %rsi
callq 0x4a4ce0
leaq 0x1b46b6(%rip), %rsi    # 0x5d040a
movq %rax, %rdi
callq 0x4a4910
leaq 0x1a3638(%rip), %rsi    # 0x5bf39b
movq %rax, %rdi
callq 0x4a4910
movq %rax, %r15
leaq 0x1a3640(%rip), %rsi    # 0x5bf3b5
leaq 0xa8(%rsp), %r12
movq %r12, %rdi
callq 0x40608e
movq %r14, %xmm0
movq 0x1a32ae(%rip), %xmm2   # 0x5bf040
punpckldq %xmm2, %xmm0    # xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1]
movapd 0x1a32b2(%rip), %xmm3   # 0x5bf050
subpd %xmm3, %xmm0
movapd %xmm0, %xmm1
unpckhpd %xmm0, %xmm1            # xmm1 = xmm1[1],xmm0[1]
addsd %xmm0, %xmm1
movsd 0x1a332a(%rip), %xmm0   # 0x5bf0e0
movapd %xmm1, (%rsp)
mulsd %xmm1, %xmm0
movq 0xcc0(%rbx), %xmm1
punpckldq %xmm2, %xmm1    # xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1]
subpd %xmm3, %xmm1
movapd %xmm1, %xmm2
unpckhpd %xmm1, %xmm2            # xmm2 = xmm2[1],xmm1[1]
addsd %xmm1, %xmm2
divsd %xmm2, %xmm0
mulsd 0x1a3301(%rip), %xmm0   # 0x5bf0e8
leaq 0x18(%rsp), %rsi
movsd %xmm0, (%rsi)
movq %r12, %rdi
callq 0x40baec
movq %r15, %rdi
movq %rax, %rsi
callq 0x40b7fc
leaq 0x1a35b1(%rip), %rsi    # 0x5bf3bb
movq %rax, %rdi
callq 0x4a4910
movq 0xcf8(%rbx), %rcx
addq 0xd00(%rbx), %rcx
movq %rcx, %xmm1
punpckldq 0x1a3213(%rip), %xmm1 # xmm1 = xmm1[0],mem[0],xmm1[1],mem[1]
subpd 0x1a321b(%rip), %xmm1   # 0x5bf050
movapd %xmm1, %xmm0
unpckhpd %xmm1, %xmm0            # xmm0 = xmm0[1],xmm1[1]
addsd %xmm1, %xmm0
divsd (%rsp), %xmm0
movq %rax, %rdi
callq 0x4a5640
leaq 0x1b45b5(%rip), %rsi    # 0x5d040a
movq %rax, %rdi
callq 0x4a4910
leaq 0x1a3571(%rip), %rsi    # 0x5bf3d5
movq %rax, %rdi
callq 0x4a4910
movsd 0xd20(%rbx), %xmm1
unpcklps 0x1a31c5(%rip), %xmm1   # xmm1 = xmm1[0],mem[0],xmm1[1],mem[1]
subpd 0x1a31cd(%rip), %xmm1   # 0x5bf050
movapd %xmm1, %xmm0
unpckhpd %xmm1, %xmm0            # xmm0 = xmm0[1],xmm1[1]
addsd %xmm1, %xmm0
divsd (%rsp), %xmm0
movq %rax, %rdi
callq 0x4a5640
leaq 0x1a354f(%rip), %rsi    # 0x5bf3f2
movq %rax, %rdi
callq 0x4a4910
movsd 0xd18(%rbx), %xmm1
unpcklps 0x1a3186(%rip), %xmm1   # xmm1 = xmm1[0],mem[0],xmm1[1],mem[1]
subpd 0x1a318e(%rip), %xmm1   # 0x5bf050
movapd %xmm1, %xmm0
unpckhpd %xmm1, %xmm0            # xmm0 = xmm0[1],xmm1[1]
addsd %xmm1, %xmm0
divsd (%rsp), %xmm0
movq %rax, %rdi
callq 0x4a5640
leaq 0x1a3515(%rip), %rsi    # 0x5bf3f7
movq %rax, %rdi
callq 0x4a4910
leaq 0xce8(%rbx), %r14
leaq 0xa8(%rsp), %rdi
callq 0x406170
leaq 0x1a34f7(%rip), %rsi    # 0x5bf3fc
movq %r13, %rdi
callq 0x4a4910
leaq 0xcc8(%rbx), %r12
movq %rax, %rdi
movq %r12, %rsi
callq 0x40b917
leaq 0x1b44e4(%rip), %r15    # 0x5d040a
movq %rax, %rdi
movq %r15, %rsi
callq 0x4a4910
leaq 0x1a34dc(%rip), %rsi    # 0x5bf414
movq %rax, %rdi
callq 0x4a4910
movq %r13, (%rsp)
leaq 0xcd8(%rbx), %rbp
movq %rax, %rdi
movq %rbp, %rsi
movq %rbp, 0x10(%rsp)
callq 0x40b917
movq %rax, %rdi
movq %r15, %rsi
movq %r15, %r13
callq 0x4a4910
leaq 0x1a34bd(%rip), %rsi    # 0x5bf42d
movq %rax, %rdi
callq 0x4a4910
movq %rax, %r15
movq %r12, %rdi
movq %r14, %rsi
callq 0x40b949
leaq 0xa8(%rsp), %rax
movsd %xmm0, (%rax)
movsd %xmm1, 0x8(%rax)
leaq 0xa8(%rsp), %rsi
movq %r15, %rdi
callq 0x40b917
movq %rax, %rdi
movq %r13, %rsi
callq 0x4a4910
leaq 0x1a348b(%rip), %rsi    # 0x5bf444
movq %rax, %rdi
callq 0x4a4910
movq %rax, %r15
movq %rbp, %rdi
movq %r14, %rsi
callq 0x40b949
leaq 0x18(%rsp), %rsi
movsd %xmm0, (%rsi)
movsd %xmm1, 0x8(%rsi)
movq %r15, %rdi
callq 0x40b917
movq %rax, %rdi
movq %r13, %rsi
callq 0x4a4910
leaq 0x1a3460(%rip), %rsi    # 0x5bf457
movq %rax, %rdi
callq 0x4a4910
movq %rax, %r15
leaq 0xd08(%rbx), %rbp
movq %r14, %rdi
movq %rbp, %rsi
callq 0x40b99a
leaq 0x98(%rsp), %rsi
movsd %xmm0, (%rsi)
movsd %xmm1, 0x8(%rsi)
movq %r15, %rdi
callq 0x40b917
movq %rax, %rdi
movq %r13, %rsi
callq 0x4a4910
leaq 0x1a3436(%rip), %rsi    # 0x5bf475
movq %rax, %rdi
callq 0x4a4910
movq %rax, %r15
leaq 0xca0(%rbx), %rsi
movq %rbp, %rdi
callq 0x40ba4b
leaq 0x78(%rsp), %rsi
movsd %xmm0, (%rsi)
movsd %xmm1, 0x8(%rsi)
movq %r14, %rdi
callq 0x40b9fe
leaq 0x88(%rsp), %rsi
movsd %xmm0, (%rsi)
movsd %xmm1, 0x8(%rsi)
movq %r15, %rdi
callq 0x40b917
movq %rax, %rdi
movq %r13, %r15
movq %r13, %rsi
callq 0x4a4910
leaq 0x1a33fd(%rip), %rsi    # 0x5bf49a
movq %rax, %rdi
callq 0x4a4910
movq %rax, %r14
movq %r12, %rdi
movq 0x10(%rsp), %r13
movq %r13, %rsi
callq 0x40ba98
leaq 0x58(%rsp), %rdi
movsd %xmm0, (%rdi)
movsd %xmm1, 0x8(%rdi)
movq %rbp, %rsi
callq 0x40b949
leaq 0x68(%rsp), %rsi
movsd %xmm0, (%rsi)
movsd %xmm1, 0x8(%rsi)
movq %r14, %rdi
callq 0x40b917
movq %rax, %rdi
movq %r15, %rsi
callq 0x4a4910
leaq 0x1a33c1(%rip), %rsi    # 0x5bf4b7
movq %rax, %rdi
callq 0x4a4910
movq %rax, %r14
movq %r12, %rdi
movq %r13, %rsi
callq 0x40ba98
leaq 0x38(%rsp), %r15
movsd %xmm0, (%r15)
movsd %xmm1, 0x8(%r15)
leaq 0xcb0(%rbx), %rsi
movq %rbp, %rdi
callq 0x40ba4b
leaq 0x28(%rsp), %rsi
movsd %xmm0, (%rsi)
movsd %xmm1, 0x8(%rsi)
movq %r15, %rdi
callq 0x40bac2
leaq 0x48(%rsp), %rsi
movsd %xmm0, (%rsi)
movsd %xmm1, 0x8(%rsi)
movq %r14, %rdi
callq 0x40b917
movq %rax, %rdi
leaq 0x1b42a9(%rip), %rbp    # 0x5d040a
movq %rbp, %rsi
callq 0x4a4910
leaq 0x1a641d(%rip), %rsi    # 0x5c258d
movq (%rsp), %r15
movq %r15, %rdi
callq 0x4a4910
movq %rax, %r14
movq %r12, %rdi
movq %r13, %rsi
callq 0x40ba98
leaq 0x18(%rsp), %rax
movsd %xmm0, (%rax)
movsd %xmm1, 0x8(%rax)
leaq 0x18(%rsp), %rdi
movq %r12, %rsi
callq 0x40bac2
leaq 0xa8(%rsp), %rax
movsd %xmm0, (%rax)
movsd %xmm1, 0x8(%rax)
leaq 0xa8(%rsp), %rsi
movq %r14, %rdi
callq 0x40b917
movq %rax, %rdi
movq %rbp, %rsi
callq 0x4a4910
leaq 0x1a3303(%rip), %rsi    # 0x5bf4db
movq %r15, %rdi
callq 0x4a4910
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x20(%rax)
addq $0x188, %rsp            # imm = 0x188
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %rbx
leaq 0xa8(%rsp), %rdi
callq 0x406170
movq %rbx, %rdi
callq 0x4eb220
nop