// File: /workspace/github_cpp_makefile_star2_O3/Baobaobear[P]sort/sorttest.cpp
// Function: init_test_func_map(std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, void (*)(baobao::TestClass*, unsigned long), std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const, void (*)(baobao::TestClass*, unsigned long)>>>&)
void init_test_func_map(std::map<std::string, arrar_function_t> &test_func_map)
{
    // Baobaobear's function
    {
        //test_func_map["bao_insert"] = baobao_warp::baobao_insert_sort;
        test_func_map["bao_heap"] = baobao_warp::baobao_heap_sort;
        test_func_map["bao_shell"] = baobao_warp::baobao_shell_sort;
        test_func_map["bao_merge"] = baobao_warp::baobao_merge_sort;
        test_func_map["bao_mer_buf"] = baobao_warp::baobao_merge_sort_buffer;
        test_func_map["bao_mer_in"] = baobao_warp::baobao_merge_sort_in_place;
        test_func_map["bao_qsort"] = baobao_warp::baobao_quick_sort;
        test_func_map["bao_indir"] = baobao_warp::baobao_indirect_qsort;
        test_func_map["bao_tim"] = baobao_warp::baobao_tim_sort;
        test_func_map["bao_tim_buf"] = baobao_warp::baobao_tim_sort_buffer;
#if TEST_TYPE_SIMPLE < 2
        test_func_map["bao_radix_in"] = baobao_warp::baobao_radix_sort_in_place;
#endif
    }
    // https://github.com/Mrrl/GrailSort
    {
        //test_func_map["grail_in"] = baobao_warp::grail_sort_in_place;
        //test_func_map["grail_buf"] = baobao_warp::grail_sort_buf;
        test_func_map["grail_sort"] = baobao_warp::grail_sort_dynbuf;
    }
    // https://github.com/BonzaiThePenguin/WikiSort
    {
        test_func_map["wiki_sort"] = baobao_warp::wiki_sort;
    }
    // std function
    {
#ifdef BAOBAO_UNIX_STDLIB_SORT
        test_func_map["unix_heap"] = stdsort::c_heap_sort;
        test_func_map["unix_merge"] = stdsort::c_merge_sort;
#endif
        test_func_map["std::heap"] = stdsort::std_heap_sort;
        test_func_map["std::stable"] = stdsort::std_stable_sort;
        test_func_map["std_qsort"] = stdsort::c_quick_sort;
        test_func_map["std::sort"] = stdsort::std_sort;
    }
}

// Assembly:
pushq %r14
pushq %rbx
subq $0x28, %rsp
movq %rdi, %rbx
leaq 0x18(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x118ca(%rip), %rsi     # 0x14084
leaq 0x118cb(%rip), %rdx     # 0x1408c
leaq 0x8(%rsp), %rdi
callq 0x12210
leaq 0x8(%rsp), %rsi
movq %rbx, %rdi
callq 0x3f26
leaq -0x23c(%rip), %rcx      # 0x25a3
movq %rcx, (%rax)
movq 0x8(%rsp), %rdi
cmpq %r14, %rdi
je 0x27f1
callq 0x2170
leaq 0x8(%rsp), %rdi
movq %r14, (%rdi)
leaq 0x1188d(%rip), %rsi     # 0x1408d
leaq 0x1188f(%rip), %rdx     # 0x14096
callq 0x12210
leaq 0x8(%rsp), %rsi
movq %rbx, %rdi
callq 0x3f26
leaq -0x271(%rip), %rcx      # 0x25af
movq %rcx, (%rax)
movq 0x8(%rsp), %rdi
cmpq %r14, %rdi
je 0x2832
callq 0x2170
leaq 0x8(%rsp), %rdi
movq %r14, (%rdi)
leaq 0x11856(%rip), %rsi     # 0x14097
leaq 0x11858(%rip), %rdx     # 0x140a0
callq 0x12210
leaq 0x8(%rsp), %rsi
movq %rbx, %rdi
callq 0x3f26
leaq -0x2a6(%rip), %rcx      # 0x25bb
movq %rcx, (%rax)
movq 0x8(%rsp), %rdi
cmpq %r14, %rdi
je 0x2873
callq 0x2170
leaq 0x8(%rsp), %rdi
movq %r14, (%rdi)
leaq 0x1181f(%rip), %rsi     # 0x140a1
leaq 0x11823(%rip), %rdx     # 0x140ac
callq 0x12210
leaq 0x8(%rsp), %rsi
movq %rbx, %rdi
callq 0x3f26
leaq -0x2cf(%rip), %rcx      # 0x25d3
movq %rcx, (%rax)
movq 0x8(%rsp), %rdi
cmpq %r14, %rdi
je 0x28b4
callq 0x2170
leaq 0x8(%rsp), %rdi
movq %r14, (%rdi)
leaq 0x117ea(%rip), %rsi     # 0x140ad
leaq 0x117ed(%rip), %rdx     # 0x140b7
callq 0x12210
leaq 0x8(%rsp), %rsi
movq %rbx, %rdi
callq 0x3f26
leaq -0x2ee(%rip), %rcx      # 0x25f5
movq %rcx, (%rax)
movq 0x8(%rsp), %rdi
cmpq %r14, %rdi
je 0x28f5
callq 0x2170
leaq 0x8(%rsp), %rdi
movq %r14, (%rdi)
leaq 0x117b4(%rip), %rsi     # 0x140b8
leaq 0x117b6(%rip), %rdx     # 0x140c1
callq 0x12210
leaq 0x8(%rsp), %rsi
movq %rbx, %rdi
callq 0x3f26
leaq -0x312(%rip), %rcx      # 0x2612
movq %rcx, (%rax)
movq 0x8(%rsp), %rdi
cmpq %r14, %rdi
je 0x2936
callq 0x2170
leaq 0x8(%rsp), %rdi
movq %r14, (%rdi)
leaq 0x1177d(%rip), %rsi     # 0x140c2
leaq 0x1177f(%rip), %rdx     # 0x140cb
callq 0x12210
leaq 0x8(%rsp), %rsi
movq %rbx, %rdi
callq 0x3f26
leaq -0x29c(%rip), %rcx      # 0x26c9
movq %rcx, (%rax)
movq 0x8(%rsp), %rdi
cmpq %r14, %rdi
je 0x2977
callq 0x2170
leaq 0x8(%rsp), %rdi
movq %r14, (%rdi)
leaq 0x11746(%rip), %rsi     # 0x140cc
leaq 0x11746(%rip), %rdx     # 0x140d3
callq 0x12210
leaq 0x8(%rsp), %rsi
movq %rbx, %rdi
callq 0x3f26
leaq -0x381(%rip), %rcx      # 0x2625
movq %rcx, (%rax)
movq 0x8(%rsp), %rdi
cmpq %r14, %rdi
je 0x29b8
callq 0x2170
leaq 0x8(%rsp), %rdi
movq %r14, (%rdi)
leaq 0x1170d(%rip), %rsi     # 0x140d4
leaq 0x11711(%rip), %rdx     # 0x140df
callq 0x12210
leaq 0x8(%rsp), %rsi
movq %rbx, %rdi
callq 0x3f26
leaq -0x3b3(%rip), %rcx      # 0x2634
movq %rcx, (%rax)
movq 0x8(%rsp), %rdi
cmpq %r14, %rdi
je 0x29f9
callq 0x2170
leaq 0x8(%rsp), %rdi
movq %r14, (%rdi)
leaq 0x116d8(%rip), %rsi     # 0x140e0
leaq 0x116dd(%rip), %rdx     # 0x140ec
callq 0x12210
leaq 0x8(%rsp), %rsi
movq %rbx, %rdi
callq 0x3f26
leaq -0x353(%rip), %rcx      # 0x26d5
movq %rcx, (%rax)
movq 0x8(%rsp), %rdi
cmpq %r14, %rdi
je 0x2a3a
callq 0x2170
leaq 0x8(%rsp), %rdi
movq %r14, (%rdi)
leaq 0x116a4(%rip), %rsi     # 0x140ed
leaq 0x116a7(%rip), %rdx     # 0x140f7
callq 0x12210
leaq 0x8(%rsp), %rsi
movq %rbx, %rdi
callq 0x3f26
leaq -0x32d(%rip), %rcx      # 0x273c
movq %rcx, (%rax)
movq 0x8(%rsp), %rdi
cmpq %r14, %rdi
je 0x2a7b
callq 0x2170
leaq 0x8(%rsp), %rdi
movq %r14, (%rdi)
leaq 0x1166e(%rip), %rsi     # 0x140f8
leaq 0x11670(%rip), %rdx     # 0x14101
callq 0x12210
leaq 0x8(%rsp), %rsi
movq %rbx, %rdi
callq 0x3f26
leaq -0x362(%rip), %rcx      # 0x2748
movq %rcx, (%rax)
movq 0x8(%rsp), %rdi
cmpq %r14, %rdi
je 0x2abc
callq 0x2170
leaq 0x8(%rsp), %rdi
movq %r14, (%rdi)
leaq 0x11637(%rip), %rsi     # 0x14102
leaq 0x11639(%rip), %rdx     # 0x1410b
callq 0x12210
leaq 0x8(%rsp), %rsi
movq %rbx, %rdi
callq 0x3f26
leaq -0x596(%rip), %rcx      # 0x2555
movq %rcx, (%rax)
movq 0x8(%rsp), %rdi
cmpq %r14, %rdi
je 0x2afd
callq 0x2170
leaq 0x8(%rsp), %rdi
movq %r14, (%rdi)
leaq 0x11600(%rip), %rsi     # 0x1410c
leaq 0x11604(%rip), %rdx     # 0x14117
callq 0x12210
leaq 0x8(%rsp), %rsi
movq %rbx, %rdi
callq 0x3f26
leaq -0x663(%rip), %rcx      # 0x24c9
movq %rcx, (%rax)
movq 0x8(%rsp), %rdi
cmpq %r14, %rdi
je 0x2b3e
callq 0x2170
leaq 0x8(%rsp), %rdi
movq %r14, (%rdi)
leaq 0x115cb(%rip), %rsi     # 0x14118
leaq 0x115cd(%rip), %rdx     # 0x14121
callq 0x12210
leaq 0x8(%rsp), %rsi
movq %rbx, %rdi
callq 0x3f26
leaq -0x6f3(%rip), %rcx      # 0x247a
movq %rcx, (%rax)
movq 0x8(%rsp), %rdi
cmpq %r14, %rdi
je 0x2b7f
callq 0x2170
leaq 0x8(%rsp), %rdi
movq %r14, (%rdi)
leaq 0x11594(%rip), %rsi     # 0x14122
leaq 0x11596(%rip), %rdx     # 0x1412b
callq 0x12210
leaq 0x8(%rsp), %rsi
movq %rbx, %rdi
callq 0x3f26
leaq -0x723(%rip), %rcx      # 0x248b
movq %rcx, (%rax)
movq 0x8(%rsp), %rdi
cmpq %r14, %rdi
je 0x2bc0
callq 0x2170
addq $0x28, %rsp
popq %rbx
popq %r14
retq
jmp 0x2c04
jmp 0x2c18
jmp 0x2c04
jmp 0x2c18
jmp 0x2c04
jmp 0x2c18
jmp 0x2c04
jmp 0x2c18
jmp 0x2c04
jmp 0x2c18
jmp 0x2c04
jmp 0x2c18
jmp 0x2c04
jmp 0x2c18
jmp 0x2c04
jmp 0x2c18
jmp 0x2c04
jmp 0x2c18
jmp 0x2c04
jmp 0x2c18
jmp 0x2c04
jmp 0x2c18
jmp 0x2c04
jmp 0x2c18
jmp 0x2c04
jmp 0x2c18
jmp 0x2c04
jmp 0x2c18
jmp 0x2c04
jmp 0x2c18
movq %rax, %rbx
movq 0x8(%rsp), %rdi
cmpq %r14, %rdi
je 0x2c1b
callq 0x2170
jmp 0x2c1b
movq %rax, %rbx
movq %rbx, %rdi
callq 0x2230