// File: Cell-veto[P]postlhc/./ecmc.hpp
// Function: ChainRunner<Jellium3, 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
movq %rsp, %rbp
subq $0x2b0, %rsp            # imm = 0x2B0
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x208(%rbp)
movq -0x10(%rbp), %rdi
movq (%rdi), %rax
movq -0x18(%rax), %rax
addq %rax, %rdi
movl $0xf, %esi
callq 0x4133d0
movq -0x208(%rbp), %rdi
addq $0x24c8, %rdi           # imm = 0x24C8
callq 0x418580
movq %rax, -0x18(%rbp)
movq -0x10(%rbp), %rdi
leaq 0x1e64c4(%rip), %rsi    # 0x5fc51c
callq 0x4e1b60
movq %rax, %rdi
leaq 0x1e64da(%rip), %rsi    # 0x5fc541
callq 0x4e1b60
movq %rax, %rdi
movq -0x208(%rbp), %rax
movq 0x24a0(%rax), %xmm0
movaps 0x1e631b(%rip), %xmm1   # 0x5fc3a0
movaps %xmm1, -0x200(%rbp)
punpckldq %xmm1, %xmm0    # xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
movapd 0x1e6318(%rip), %xmm1   # 0x5fc3b0
movaps %xmm1, -0x1f0(%rbp)
subpd %xmm1, %xmm0
movaps %xmm0, %xmm1
unpckhpd %xmm0, %xmm0            # xmm0 = xmm0[1,1]
addsd %xmm1, %xmm0
movsd 0x1e61d2(%rip), %xmm1   # 0x5fc288
mulsd %xmm1, %xmm0
callq 0x4e2ad0
movq %rax, %rdi
leaq 0x1e648b(%rip), %rsi    # 0x5fc554
callq 0x4e1b60
movq %rax, %rdi
leaq 0x1e6486(%rip), %rsi    # 0x5fc55e
callq 0x4e1b60
movq %rax, %rdi
movq -0x18(%rbp), %rsi
callq 0x4e2170
movq %rax, %rdi
leaq 0x1f8317(%rip), %rsi    # 0x60e40a
callq 0x4e1b60
movq %rax, %rdi
leaq 0x1e6471(%rip), %rsi    # 0x5fc573
callq 0x4e1b60
movq %rax, -0x210(%rbp)
leaq 0x1e6478(%rip), %rsi    # 0x5fc58d
leaq -0xf8(%rbp), %rdi
movq %rdi, -0x1e0(%rbp)
callq 0x407ce0
movq -0x208(%rbp), %rax
movaps -0x200(%rbp), %xmm3
movaps -0x1f0(%rbp), %xmm2
movq -0x1e0(%rbp), %rdi
movq -0x18(%rbp), %xmm0
punpckldq %xmm3, %xmm0    # xmm0 = xmm0[0],xmm3[0],xmm0[1],xmm3[1]
subpd %xmm2, %xmm0
movaps %xmm0, %xmm1
unpckhpd %xmm0, %xmm0            # xmm0 = xmm0[1,1]
addsd %xmm1, %xmm0
movsd 0x1e612c(%rip), %xmm1   # 0x5fc290
mulsd %xmm1, %xmm0
movq 0x24a0(%rax), %xmm1
punpckldq %xmm3, %xmm1    # xmm1 = xmm1[0],xmm3[0],xmm1[1],xmm3[1]
subpd %xmm2, %xmm1
movaps %xmm1, %xmm2
unpckhpd %xmm1, %xmm1            # xmm1 = xmm1[1,1]
addsd %xmm2, %xmm1
divsd %xmm1, %xmm0
movsd 0x1e6109(%rip), %xmm1   # 0x5fc298
mulsd %xmm1, %xmm0
movsd %xmm0, -0x100(%rbp)
leaq -0x100(%rbp), %rsi
callq 0x4187a0
movq %rax, -0x1d8(%rbp)
jmp 0x4161b0
movq -0x1d8(%rbp), %rsi
movq -0x210(%rbp), %rdi
callq 0x418600
movq %rax, -0x218(%rbp)
jmp 0x4161cc
movq -0x218(%rbp), %rdi
leaq 0x1e63b9(%rip), %rsi    # 0x5fc593
callq 0x4e1b60
movq %rax, -0x220(%rbp)
jmp 0x4161e8
movq -0x208(%rbp), %rdi
addq $0x24d8, %rdi           # imm = 0x24D8
callq 0x418580
movq %rax, -0x228(%rbp)
jmp 0x416204
movq -0x228(%rbp), %rax
movq %rax, %xmm0
movaps 0x1e6189(%rip), %xmm3   # 0x5fc3a0
punpckldq %xmm3, %xmm0    # xmm0 = xmm0[0],xmm3[0],xmm0[1],xmm3[1]
movapd 0x1e618d(%rip), %xmm2   # 0x5fc3b0
subpd %xmm2, %xmm0
movaps %xmm0, %xmm1
unpckhpd %xmm0, %xmm0            # xmm0 = xmm0[1,1]
addsd %xmm1, %xmm0
movq -0x18(%rbp), %xmm1
punpckldq %xmm3, %xmm1    # xmm1 = xmm1[0],xmm3[0],xmm1[1],xmm3[1]
subpd %xmm2, %xmm1
movaps %xmm1, %xmm2
unpckhpd %xmm1, %xmm1            # xmm1 = xmm1[1,1]
addsd %xmm2, %xmm1
callq 0x4187d0
movsd %xmm0, -0x230(%rbp)
jmp 0x416259
movsd -0x230(%rbp), %xmm0
movq -0x220(%rbp), %rdi
callq 0x4e2ad0
movq %rax, -0x238(%rbp)
jmp 0x416276
movq -0x238(%rbp), %rdi
leaq 0x1f8186(%rip), %rsi    # 0x60e40a
callq 0x4e1b60
movq %rax, -0x240(%rbp)
jmp 0x416292
movq -0x240(%rbp), %rdi
leaq 0x1e630d(%rip), %rsi    # 0x5fc5ad
callq 0x4e1b60
movq %rax, -0x248(%rbp)
jmp 0x4162ae
movq -0x208(%rbp), %rax
movq 0x2500(%rax), %xmm0
movaps 0x1e60dc(%rip), %xmm3   # 0x5fc3a0
punpckldq %xmm3, %xmm0    # xmm0 = xmm0[0],xmm3[0],xmm0[1],xmm3[1]
movapd 0x1e60e0(%rip), %xmm2   # 0x5fc3b0
subpd %xmm2, %xmm0
movaps %xmm0, %xmm1
unpckhpd %xmm0, %xmm0            # xmm0 = xmm0[1,1]
addsd %xmm1, %xmm0
movq -0x18(%rbp), %xmm1
punpckldq %xmm3, %xmm1    # xmm1 = xmm1[0],xmm3[0],xmm1[1],xmm3[1]
subpd %xmm2, %xmm1
movaps %xmm1, %xmm2
unpckhpd %xmm1, %xmm1            # xmm1 = xmm1[1,1]
addsd %xmm2, %xmm1
callq 0x4187d0
movsd %xmm0, -0x250(%rbp)
jmp 0x416306
movsd -0x250(%rbp), %xmm0
movq -0x248(%rbp), %rdi
callq 0x4e2ad0
movq %rax, -0x258(%rbp)
jmp 0x416323
movq -0x258(%rbp), %rdi
leaq 0x1e6299(%rip), %rsi    # 0x5fc5ca
callq 0x4e1b60
movq %rax, -0x260(%rbp)
jmp 0x41633f
movq -0x208(%rbp), %rax
movq 0x24f8(%rax), %xmm0
movaps 0x1e604b(%rip), %xmm3   # 0x5fc3a0
punpckldq %xmm3, %xmm0    # xmm0 = xmm0[0],xmm3[0],xmm0[1],xmm3[1]
movapd 0x1e604f(%rip), %xmm2   # 0x5fc3b0
subpd %xmm2, %xmm0
movaps %xmm0, %xmm1
unpckhpd %xmm0, %xmm0            # xmm0 = xmm0[1,1]
addsd %xmm1, %xmm0
movq -0x18(%rbp), %xmm1
punpckldq %xmm3, %xmm1    # xmm1 = xmm1[0],xmm3[0],xmm1[1],xmm3[1]
subpd %xmm2, %xmm1
movaps %xmm1, %xmm2
unpckhpd %xmm1, %xmm1            # xmm1 = xmm1[1,1]
addsd %xmm2, %xmm1
callq 0x4187d0
movsd %xmm0, -0x268(%rbp)
jmp 0x416397
movsd -0x268(%rbp), %xmm0
movq -0x260(%rbp), %rdi
callq 0x4e2ad0
movq %rax, -0x270(%rbp)
jmp 0x4163b4
movq -0x270(%rbp), %rdi
leaq 0x1e620d(%rip), %rsi    # 0x5fc5cf
callq 0x4e1b60
jmp 0x4163c9
leaq -0xf8(%rbp), %rdi
callq 0x407e90
movq -0x10(%rbp), %rdi
leaq 0x1e61f4(%rip), %rsi    # 0x5fc5d4
callq 0x4e1b60
movq -0x208(%rbp), %rsi
movq %rax, %rdi
addq $0x24a8, %rsi           # imm = 0x24A8
callq 0x4187f0
movq %rax, %rdi
leaq 0x1f8005(%rip), %rsi    # 0x60e40a
callq 0x4e1b60
movq %rax, %rdi
leaq 0x1e61d8(%rip), %rsi    # 0x5fc5ec
callq 0x4e1b60
movq -0x208(%rbp), %rsi
movq %rax, %rdi
addq $0x24b8, %rsi           # imm = 0x24B8
callq 0x4187f0
movq %rax, %rdi
leaq 0x1f7fd1(%rip), %rsi    # 0x60e40a
callq 0x4e1b60
movq %rax, %rdi
leaq 0x1e61bd(%rip), %rsi    # 0x5fc605
callq 0x4e1b60
movq -0x208(%rbp), %rsi
movq %rax, -0x2a8(%rbp)
movq %rsi, %rdi
addq $0x24a8, %rdi           # imm = 0x24A8
addq $0x24c8, %rsi           # imm = 0x24C8
callq 0x418880
movq -0x2a8(%rbp), %rdi
movsd %xmm0, -0x120(%rbp)
movsd %xmm1, -0x118(%rbp)
leaq -0x120(%rbp), %rsi
callq 0x4187f0
movq %rax, %rdi
leaq 0x1f7f6c(%rip), %rsi    # 0x60e40a
callq 0x4e1b60
movq %rax, %rdi
leaq 0x1e616f(%rip), %rsi    # 0x5fc61c
callq 0x4e1b60
movq -0x208(%rbp), %rsi
movq %rax, -0x2a0(%rbp)
movq %rsi, %rdi
addq $0x24b8, %rdi           # imm = 0x24B8
addq $0x24c8, %rsi           # imm = 0x24C8
callq 0x418880
movq -0x2a0(%rbp), %rdi
movsd %xmm0, -0x130(%rbp)
movsd %xmm1, -0x128(%rbp)
leaq -0x130(%rbp), %rsi
callq 0x4187f0
movq %rax, %rdi
leaq 0x1f7f07(%rip), %rsi    # 0x60e40a
callq 0x4e1b60
movq %rax, %rdi
leaq 0x1e611d(%rip), %rsi    # 0x5fc62f
callq 0x4e1b60
movq -0x208(%rbp), %rsi
movq %rax, -0x298(%rbp)
movq %rsi, %rdi
addq $0x24c8, %rdi           # imm = 0x24C8
addq $0x24e8, %rsi           # imm = 0x24E8
callq 0x418930
movq -0x298(%rbp), %rdi
movsd %xmm0, -0x140(%rbp)
movsd %xmm1, -0x138(%rbp)
leaq -0x140(%rbp), %rsi
callq 0x4187f0
movq %rax, %rdi
leaq 0x1f7ea2(%rip), %rsi    # 0x60e40a
callq 0x4e1b60
movq %rax, %rdi
leaq 0x1e60d6(%rip), %rsi    # 0x5fc64d
callq 0x4e1b60
movq -0x208(%rbp), %rsi
movq %rax, -0x288(%rbp)
movq %rsi, %rax
addq $0x24c8, %rax           # imm = 0x24C8
movq %rax, -0x290(%rbp)
movq %rsi, %rdi
addq $0x24e8, %rdi           # imm = 0x24E8
addq $0x2480, %rsi           # imm = 0x2480
callq 0x418ac0
movq -0x290(%rbp), %rdi
movsd %xmm0, -0x160(%rbp)
movsd %xmm1, -0x158(%rbp)
leaq -0x160(%rbp), %rsi
callq 0x418a10
movq -0x288(%rbp), %rdi
movsd %xmm0, -0x150(%rbp)
movsd %xmm1, -0x148(%rbp)
leaq -0x150(%rbp), %rsi
callq 0x4187f0
movq %rax, %rdi
leaq 0x1f7e0a(%rip), %rsi    # 0x60e40a
callq 0x4e1b60
movq %rax, %rdi
leaq 0x1e6063(%rip), %rsi    # 0x5fc672
callq 0x4e1b60
movq -0x208(%rbp), %rsi
movq %rax, -0x280(%rbp)
movq %rsi, %rdi
addq $0x24a8, %rdi           # imm = 0x24A8
addq $0x24b8, %rsi           # imm = 0x24B8
callq 0x418b70
movq -0x208(%rbp), %rsi
movsd %xmm0, -0x180(%rbp)
movsd %xmm1, -0x178(%rbp)
addq $0x24e8, %rsi           # imm = 0x24E8
leaq -0x180(%rbp), %rdi
callq 0x418880
movq -0x280(%rbp), %rdi
movsd %xmm0, -0x170(%rbp)
movsd %xmm1, -0x168(%rbp)
leaq -0x170(%rbp), %rsi
callq 0x4187f0
movq %rax, %rdi
leaq 0x1f7d7b(%rip), %rsi    # 0x60e40a
callq 0x4e1b60
movq %rax, %rdi
leaq 0x1e5ff1(%rip), %rsi    # 0x5fc68f
callq 0x4e1b60
movq -0x208(%rbp), %rsi
movq %rax, -0x278(%rbp)
movq %rsi, %rdi
addq $0x24a8, %rdi           # imm = 0x24A8
addq $0x24b8, %rsi           # imm = 0x24B8
callq 0x418b70
movq -0x208(%rbp), %rsi
movsd %xmm0, -0x1a0(%rbp)
movsd %xmm1, -0x198(%rbp)
movq %rsi, %rdi
addq $0x24e8, %rdi           # imm = 0x24E8
addq $0x2490, %rsi           # imm = 0x2490
callq 0x418ac0
movsd %xmm0, -0x1b0(%rbp)
movsd %xmm1, -0x1a8(%rbp)
leaq -0x1a0(%rbp), %rdi
leaq -0x1b0(%rbp), %rsi
callq 0x418c00
movq -0x278(%rbp), %rdi
movsd %xmm0, -0x190(%rbp)
movsd %xmm1, -0x188(%rbp)
leaq -0x190(%rbp), %rsi
callq 0x4187f0
movq %rax, %rdi
leaq 0x1f7cc6(%rip), %rsi    # 0x60e40a
callq 0x4e1b60
callq 0x418c90
testb $0x1, %al
jne 0x416808
movq -0x10(%rbp), %rdi
leaq 0x1e5f52(%rip), %rsi    # 0x5fc6b3
callq 0x4e1b60
movq -0x208(%rbp), %rsi
movq %rax, -0x2b0(%rbp)
movq %rsi, %rdi
addq $0x24a8, %rdi           # imm = 0x24A8
addq $0x24b8, %rsi           # imm = 0x24B8
callq 0x418b70
movq -0x208(%rbp), %rsi
movsd %xmm0, -0x1d0(%rbp)
movsd %xmm1, -0x1c8(%rbp)
addq $0x24a8, %rsi           # imm = 0x24A8
leaq -0x1d0(%rbp), %rdi
callq 0x418c00
movq -0x2b0(%rbp), %rdi
movsd %xmm0, -0x1c0(%rbp)
movsd %xmm1, -0x1b8(%rbp)
leaq -0x1c0(%rbp), %rsi
callq 0x4187f0
movq %rax, %rdi
leaq 0x1f7c29(%rip), %rsi    # 0x60e40a
callq 0x4e1b60
jmp 0x416808
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x108(%rbp)
movl %eax, -0x10c(%rbp)
leaq -0xf8(%rbp), %rdi
callq 0x407e90
jmp 0x41682e
movq -0x10(%rbp), %rdi
leaq 0x1e5ec1(%rip), %rsi    # 0x5fc6d4
callq 0x4e1b60
movq -0x208(%rbp), %rdi
movq (%rdi), %rax
callq *0x20(%rax)
addq $0x2b0, %rsp            # imm = 0x2B0
popq %rbp
retq
movq -0x108(%rbp), %rdi
callq 0x5283c0
nopw (%rax,%rax)