// File: wichtounet[P]articles/src/vector_list_update_1/bench.cpp
// Function: bench_emplace_back<Trivial<8>>::run()
static void run(){
        new_graph<T>("emplace_back", "us");

        auto sizes = { 100000, 200000, 300000, 400000, 500000, 600000, 700000, 800000, 900000, 1000000 };
        bench<std::vector<T>, microseconds, Empty, EmplaceBack>("vector", sizes);
        bench<std::list<T>,   microseconds, Empty, EmplaceBack>("list",   sizes);
        bench<std::deque<T>,  microseconds, Empty, EmplaceBack>("deque",  sizes);
        bench<plf::colony<T>, microseconds, Empty, EmplaceInsertSimple>("colony",  sizes);
        bench<std::vector<T>, microseconds, Empty, ReserveSize, EmplaceBack>("vector_reserve", sizes);
        bench<plf::colony<T>, microseconds, Empty, ReserveSize, EmplaceInsertSimple>("colony_reserve",  sizes);
    }

// Assembly:
subq $0x1c8, %rsp            # imm = 0x1C8
leaq 0x1a7(%rsp), %rdi
movq %rdi, 0x38(%rsp)
callq 0x5370
movq 0x38(%rsp), %rdx
leaq 0x130a51(%rip), %rsi    # 0x17f566
leaq 0x1a8(%rsp), %rdi
callq 0x52a0
jmp 0x4eb24
leaq 0x16f(%rsp), %rdi
movq %rdi, 0x30(%rsp)
callq 0x5370
movq 0x30(%rsp), %rdx
leaq 0x13098c(%rip), %rsi    # 0x17f4ce
leaq 0x170(%rsp), %rdi
callq 0x52a0
jmp 0x4eb51
leaq 0x1a8(%rsp), %rdi
leaq 0x170(%rsp), %rsi
callq 0x12830
jmp 0x4eb68
leaq 0x170(%rsp), %rdi
callq 0x5150
leaq 0x16f(%rsp), %rdi
callq 0x5240
leaq 0x1a8(%rsp), %rdi
callq 0x5150
leaq 0x1a7(%rsp), %rdi
callq 0x5240
movabsq $0xf4240000dbba0, %rax  # imm = 0xF4240000DBBA0
movq %rax, 0x150(%rsp)
vmovdqu 0x130c36(%rip), %ymm0   # 0x17f7ec
vmovdqu %ymm0, 0x130(%rsp)
leaq 0x130(%rsp), %rax
movq %rax, 0x158(%rsp)
movq $0xa, 0x160(%rsp)
leaq 0x10f(%rsp), %rdi
movq %rdi, 0x28(%rsp)
vzeroupper
callq 0x5370
movq 0x28(%rsp), %rdx
leaq 0x1308d5(%rip), %rsi    # 0x17f4d1
leaq 0x110(%rsp), %rdi
callq 0x52a0
jmp 0x4ec0b
leaq 0x110(%rsp), %rdi
leaq 0x158(%rsp), %rsi
callq 0x4f030
jmp 0x4ec22
leaq 0x110(%rsp), %rdi
callq 0x5150
leaq 0x10f(%rsp), %rdi
callq 0x5240
leaq 0xe7(%rsp), %rdi
movq %rdi, 0x20(%rsp)
callq 0x5370
movq 0x20(%rsp), %rdx
leaq 0x13087e(%rip), %rsi    # 0x17f4d8
leaq 0xe8(%rsp), %rdi
callq 0x52a0
jmp 0x4ec69
leaq 0xe8(%rsp), %rdi
leaq 0x158(%rsp), %rsi
callq 0x4f260
jmp 0x4ec80
leaq 0xe8(%rsp), %rdi
callq 0x5150
leaq 0xe7(%rsp), %rdi
callq 0x5240
leaq 0xbf(%rsp), %rdi
movq %rdi, 0x18(%rsp)
callq 0x5370
movq 0x18(%rsp), %rdx
leaq 0x130825(%rip), %rsi    # 0x17f4dd
leaq 0xc0(%rsp), %rdi
callq 0x52a0
jmp 0x4ecc7
leaq 0xc0(%rsp), %rdi
leaq 0x158(%rsp), %rsi
callq 0x4f490
jmp 0x4ecde
leaq 0xc0(%rsp), %rdi
callq 0x5150
leaq 0xbf(%rsp), %rdi
callq 0x5240
leaq 0x97(%rsp), %rdi
movq %rdi, 0x10(%rsp)
callq 0x5370
movq 0x10(%rsp), %rdx
leaq 0x1307dc(%rip), %rsi    # 0x17f4f2
leaq 0x98(%rsp), %rdi
callq 0x52a0
jmp 0x4ed25
leaq 0x98(%rsp), %rdi
leaq 0x158(%rsp), %rsi
callq 0x4f6d0
jmp 0x4ed3c
leaq 0x98(%rsp), %rdi
callq 0x5150
leaq 0x97(%rsp), %rdi
callq 0x5240
leaq 0x6f(%rsp), %rdi
movq %rdi, 0x8(%rsp)
callq 0x5370
movq 0x8(%rsp), %rdx
leaq 0x130772(%rip), %rsi    # 0x17f4e3
leaq 0x70(%rsp), %rdi
callq 0x52a0
jmp 0x4ed7d
leaq 0x70(%rsp), %rdi
leaq 0x158(%rsp), %rsi
callq 0x4f910
jmp 0x4ed91
leaq 0x70(%rsp), %rdi
callq 0x5150
leaq 0x6f(%rsp), %rdi
callq 0x5240
leaq 0x47(%rsp), %rdi
movq %rdi, (%rsp)
callq 0x5370
movq (%rsp), %rdx
leaq 0x13073b(%rip), %rsi    # 0x17f4f9
leaq 0x48(%rsp), %rdi
callq 0x52a0
jmp 0x4edca
leaq 0x48(%rsp), %rdi
leaq 0x158(%rsp), %rsi
callq 0x4fb40
jmp 0x4edde
leaq 0x48(%rsp), %rdi
callq 0x5150
leaq 0x47(%rsp), %rdi
callq 0x5240
addq $0x1c8, %rsp            # imm = 0x1C8
retq
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x198(%rsp)
movl %eax, 0x194(%rsp)
jmp 0x4ee61
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x198(%rsp)
movl %eax, 0x194(%rsp)
jmp 0x4ee47
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x198(%rsp)
movl %eax, 0x194(%rsp)
leaq 0x170(%rsp), %rdi
callq 0x5150
leaq 0x16f(%rsp), %rdi
callq 0x5240
leaq 0x1a8(%rsp), %rdi
callq 0x5150
leaq 0x1a7(%rsp), %rdi
callq 0x5240
jmp 0x4f012
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x198(%rsp)
movl %eax, 0x194(%rsp)
jmp 0x4eeaa
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x198(%rsp)
movl %eax, 0x194(%rsp)
leaq 0x110(%rsp), %rdi
callq 0x5150
leaq 0x10f(%rsp), %rdi
callq 0x5240
jmp 0x4f012
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x198(%rsp)
movl %eax, 0x194(%rsp)
jmp 0x4eef3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x198(%rsp)
movl %eax, 0x194(%rsp)
leaq 0xe8(%rsp), %rdi
callq 0x5150
leaq 0xe7(%rsp), %rdi
callq 0x5240
jmp 0x4f012
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x198(%rsp)
movl %eax, 0x194(%rsp)
jmp 0x4ef3c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x198(%rsp)
movl %eax, 0x194(%rsp)
leaq 0xc0(%rsp), %rdi
callq 0x5150
leaq 0xbf(%rsp), %rdi
callq 0x5240
jmp 0x4f012
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x198(%rsp)
movl %eax, 0x194(%rsp)
jmp 0x4ef85
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x198(%rsp)
movl %eax, 0x194(%rsp)
leaq 0x98(%rsp), %rdi
callq 0x5150
leaq 0x97(%rsp), %rdi
callq 0x5240
jmp 0x4f012
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x198(%rsp)
movl %eax, 0x194(%rsp)
jmp 0x4efc8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x198(%rsp)
movl %eax, 0x194(%rsp)
leaq 0x70(%rsp), %rdi
callq 0x5150
leaq 0x6f(%rsp), %rdi
callq 0x5240
jmp 0x4f012
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x198(%rsp)
movl %eax, 0x194(%rsp)
jmp 0x4f008
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x198(%rsp)
movl %eax, 0x194(%rsp)
leaq 0x48(%rsp), %rdi
callq 0x5150
leaq 0x47(%rsp), %rdi
callq 0x5240
movq 0x198(%rsp), %rdi
callq 0x5360
nop