// File: /workspace/github_cpp_makefile_star2_O2/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 %rbx
subq $0x30, %rsp
movq %rdi, %rbx
leaq 0xcacc(%rip), %rsi      # 0xf084
leaq 0x10(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x20a0
leaq 0x10(%rsp), %rsi
movq %rbx, %rdi
callq 0x3936
leaq -0x148(%rip), %rcx      # 0x2493
movq %rcx, (%rax)
leaq 0x10(%rsp), %rdi
callq 0x21c0
leaq 0xca9e(%rip), %rsi      # 0xf08d
leaq 0x10(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x20a0
leaq 0x10(%rsp), %rsi
movq %rbx, %rdi
callq 0x3936
leaq -0x173(%rip), %rcx      # 0x249f
movq %rcx, (%rax)
leaq 0x10(%rsp), %rdi
callq 0x21c0
leaq 0xca71(%rip), %rsi      # 0xf097
leaq 0x10(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x20a0
leaq 0x10(%rsp), %rsi
movq %rbx, %rdi
callq 0x3936
leaq -0x19e(%rip), %rcx      # 0x24ab
movq %rcx, (%rax)
leaq 0x10(%rsp), %rdi
callq 0x21c0
leaq 0xca44(%rip), %rsi      # 0xf0a1
leaq 0x10(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x20a0
leaq 0x10(%rsp), %rsi
movq %rbx, %rdi
callq 0x3936
leaq -0x1bd(%rip), %rcx      # 0x24c3
movq %rcx, (%rax)
leaq 0x10(%rsp), %rdi
callq 0x21c0
leaq 0xca19(%rip), %rsi      # 0xf0ad
leaq 0x10(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x20a0
leaq 0x10(%rsp), %rsi
movq %rbx, %rdi
callq 0x3936
leaq -0x1dc(%rip), %rcx      # 0x24db
movq %rcx, (%rax)
leaq 0x10(%rsp), %rdi
callq 0x21c0
leaq 0xc9ed(%rip), %rsi      # 0xf0b8
leaq 0x10(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x20a0
leaq 0x10(%rsp), %rsi
movq %rbx, %rdi
callq 0x3936
leaq -0x207(%rip), %rcx      # 0x24e7
movq %rcx, (%rax)
leaq 0x10(%rsp), %rdi
callq 0x21c0
leaq 0xc9c0(%rip), %rsi      # 0xf0c2
leaq 0x10(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x20a0
leaq 0x10(%rsp), %rsi
movq %rbx, %rdi
callq 0x3936
leaq -0x202(%rip), %rcx      # 0x2523
movq %rcx, (%rax)
leaq 0x10(%rsp), %rdi
callq 0x21c0
leaq 0xc993(%rip), %rsi      # 0xf0cc
leaq 0x10(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x20a0
leaq 0x10(%rsp), %rsi
movq %rbx, %rdi
callq 0x3936
leaq -0x269(%rip), %rcx      # 0x24f3
movq %rcx, (%rax)
leaq 0x10(%rsp), %rdi
callq 0x21c0
leaq 0xc964(%rip), %rsi      # 0xf0d4
leaq 0x10(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x20a0
leaq 0x10(%rsp), %rsi
movq %rbx, %rdi
callq 0x3936
leaq -0x294(%rip), %rcx      # 0x24ff
movq %rcx, (%rax)
leaq 0x10(%rsp), %rdi
callq 0x21c0
leaq 0xc939(%rip), %rsi      # 0xf0e0
leaq 0x10(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x20a0
leaq 0x10(%rsp), %rsi
movq %rbx, %rdi
callq 0x3936
leaq -0x29b(%rip), %rcx      # 0x252f
movq %rcx, (%rax)
leaq 0x10(%rsp), %rdi
callq 0x21c0
leaq 0xc90f(%rip), %rsi      # 0xf0ed
leaq 0x10(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x20a0
leaq 0x10(%rsp), %rsi
movq %rbx, %rdi
callq 0x3936
leaq -0x2ae(%rip), %rcx      # 0x2553
movq %rcx, (%rax)
leaq 0x10(%rsp), %rdi
callq 0x21c0
leaq 0xc8e3(%rip), %rsi      # 0xf0f8
leaq 0x10(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x20a0
leaq 0x10(%rsp), %rsi
movq %rbx, %rdi
callq 0x3936
leaq -0x2d9(%rip), %rcx      # 0x255f
movq %rcx, (%rax)
leaq 0x10(%rsp), %rdi
callq 0x21c0
leaq 0xc8b6(%rip), %rsi      # 0xf102
leaq 0x10(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x20a0
leaq 0x10(%rsp), %rsi
movq %rbx, %rdi
callq 0x3936
leaq -0x400(%rip), %rcx      # 0x246f
movq %rcx, (%rax)
leaq 0x10(%rsp), %rdi
callq 0x21c0
leaq 0xc889(%rip), %rsi      # 0xf10c
leaq 0x10(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x20a0
leaq 0x10(%rsp), %rsi
movq %rbx, %rdi
callq 0x3936
leaq -0x443(%rip), %rcx      # 0x2463
movq %rcx, (%rax)
leaq 0x10(%rsp), %rdi
callq 0x21c0
leaq 0xc85e(%rip), %rsi      # 0xf118
leaq 0x10(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x20a0
leaq 0x10(%rsp), %rsi
movq %rbx, %rdi
callq 0x3936
leaq -0x495(%rip), %rcx      # 0x2448
movq %rcx, (%rax)
leaq 0x10(%rsp), %rdi
callq 0x21c0
leaq 0xc831(%rip), %rsi      # 0xf122
leaq 0x10(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x20a0
leaq 0x10(%rsp), %rsi
movq %rbx, %rdi
callq 0x3936
leaq -0x4bd(%rip), %rcx      # 0x2457
movq %rcx, (%rax)
leaq 0x10(%rsp), %rdi
callq 0x21c0
addq $0x30, %rsp
popq %rbx
retq
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0x21c0
jmp 0x2a53
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0x21c0
jmp 0x2a53
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0x21c0
jmp 0x2a53
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0x21c0
jmp 0x2a53
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0x21c0
jmp 0x2a53
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0x21c0
jmp 0x2a53
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0x21c0
jmp 0x2a53
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0x21c0
jmp 0x2a53
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0x21c0
jmp 0x2a53
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0x21c0
jmp 0x2a53
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0x21c0
jmp 0x2a53
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0x21c0
jmp 0x2a53
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0x21c0
jmp 0x2a53
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0x21c0
jmp 0x2a53
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0x21c0
jmp 0x2a53
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0x21c0
jmp 0x2a53
jmp 0x2a50
jmp 0x2a50
jmp 0x2a50
jmp 0x2a50
jmp 0x2a50
jmp 0x2a50
jmp 0x2a50
jmp 0x2a50
jmp 0x2a50
jmp 0x2a50
jmp 0x2a50
jmp 0x2a50
jmp 0x2a50
jmp 0x2a50
jmp 0x2a50
movq %rax, %rbx
movq %rbx, %rdi
callq 0x2250
movq %rax, %rdi
callq 0x39c6