// File: /workspace/github_cpp_makefile_star2_O1/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 0x1187a(%rip), %rsi     # 0x14094
leaq 0x1187b(%rip), %rdx     # 0x1409c
leaq 0x8(%rsp), %rdi
callq 0x12376
leaq 0x8(%rsp), %rsi
movq %rbx, %rdi
callq 0x3fb8
leaq -0x28c(%rip), %rcx      # 0x25b3
movq %rcx, (%rax)
movq 0x8(%rsp), %rdi
cmpq %r14, %rdi
je 0x2851
callq 0x2180
leaq 0x8(%rsp), %rdi
movq %r14, (%rdi)
leaq 0x1183d(%rip), %rsi     # 0x1409d
leaq 0x1183f(%rip), %rdx     # 0x140a6
callq 0x12376
leaq 0x8(%rsp), %rsi
movq %rbx, %rdi
callq 0x3fb8
leaq -0x2c1(%rip), %rcx      # 0x25bf
movq %rcx, (%rax)
movq 0x8(%rsp), %rdi
cmpq %r14, %rdi
je 0x2892
callq 0x2180
leaq 0x8(%rsp), %rdi
movq %r14, (%rdi)
leaq 0x11806(%rip), %rsi     # 0x140a7
leaq 0x11808(%rip), %rdx     # 0x140b0
callq 0x12376
leaq 0x8(%rsp), %rsi
movq %rbx, %rdi
callq 0x3fb8
leaq -0x2f6(%rip), %rcx      # 0x25cb
movq %rcx, (%rax)
movq 0x8(%rsp), %rdi
cmpq %r14, %rdi
je 0x28d3
callq 0x2180
leaq 0x8(%rsp), %rdi
movq %r14, (%rdi)
leaq 0x117cf(%rip), %rsi     # 0x140b1
leaq 0x117d3(%rip), %rdx     # 0x140bc
callq 0x12376
leaq 0x8(%rsp), %rsi
movq %rbx, %rdi
callq 0x3fb8
leaq -0x31f(%rip), %rcx      # 0x25e3
movq %rcx, (%rax)
movq 0x8(%rsp), %rdi
cmpq %r14, %rdi
je 0x2914
callq 0x2180
leaq 0x8(%rsp), %rdi
movq %r14, (%rdi)
leaq 0x1179a(%rip), %rsi     # 0x140bd
leaq 0x1179d(%rip), %rdx     # 0x140c7
callq 0x12376
leaq 0x8(%rsp), %rsi
movq %rbx, %rdi
callq 0x3fb8
leaq -0x33e(%rip), %rcx      # 0x2605
movq %rcx, (%rax)
movq 0x8(%rsp), %rdi
cmpq %r14, %rdi
je 0x2955
callq 0x2180
leaq 0x8(%rsp), %rdi
movq %r14, (%rdi)
leaq 0x11764(%rip), %rsi     # 0x140c8
leaq 0x11766(%rip), %rdx     # 0x140d1
callq 0x12376
leaq 0x8(%rsp), %rsi
movq %rbx, %rdi
callq 0x3fb8
leaq -0x362(%rip), %rcx      # 0x2622
movq %rcx, (%rax)
movq 0x8(%rsp), %rdi
cmpq %r14, %rdi
je 0x2996
callq 0x2180
leaq 0x8(%rsp), %rdi
movq %r14, (%rdi)
leaq 0x1172d(%rip), %rsi     # 0x140d2
leaq 0x1172f(%rip), %rdx     # 0x140db
callq 0x12376
leaq 0x8(%rsp), %rsi
movq %rbx, %rdi
callq 0x3fb8
leaq -0x29c(%rip), %rcx      # 0x2729
movq %rcx, (%rax)
movq 0x8(%rsp), %rdi
cmpq %r14, %rdi
je 0x29d7
callq 0x2180
leaq 0x8(%rsp), %rdi
movq %r14, (%rdi)
leaq 0x116f6(%rip), %rsi     # 0x140dc
leaq 0x116f6(%rip), %rdx     # 0x140e3
callq 0x12376
leaq 0x8(%rsp), %rsi
movq %rbx, %rdi
callq 0x3fb8
leaq -0x3d1(%rip), %rcx      # 0x2635
movq %rcx, (%rax)
movq 0x8(%rsp), %rdi
cmpq %r14, %rdi
je 0x2a18
callq 0x2180
leaq 0x8(%rsp), %rdi
movq %r14, (%rdi)
leaq 0x116bd(%rip), %rsi     # 0x140e4
leaq 0x116c1(%rip), %rdx     # 0x140ef
callq 0x12376
leaq 0x8(%rsp), %rsi
movq %rbx, %rdi
callq 0x3fb8
leaq -0x403(%rip), %rcx      # 0x2644
movq %rcx, (%rax)
movq 0x8(%rsp), %rdi
cmpq %r14, %rdi
je 0x2a59
callq 0x2180
leaq 0x8(%rsp), %rdi
movq %r14, (%rdi)
leaq 0x11688(%rip), %rsi     # 0x140f0
leaq 0x1168d(%rip), %rdx     # 0x140fc
callq 0x12376
leaq 0x8(%rsp), %rsi
movq %rbx, %rdi
callq 0x3fb8
leaq -0x353(%rip), %rcx      # 0x2735
movq %rcx, (%rax)
movq 0x8(%rsp), %rdi
cmpq %r14, %rdi
je 0x2a9a
callq 0x2180
leaq 0x8(%rsp), %rdi
movq %r14, (%rdi)
leaq 0x11654(%rip), %rsi     # 0x140fd
leaq 0x11657(%rip), %rdx     # 0x14107
callq 0x12376
leaq 0x8(%rsp), %rsi
movq %rbx, %rdi
callq 0x3fb8
leaq -0x32d(%rip), %rcx      # 0x279c
movq %rcx, (%rax)
movq 0x8(%rsp), %rdi
cmpq %r14, %rdi
je 0x2adb
callq 0x2180
leaq 0x8(%rsp), %rdi
movq %r14, (%rdi)
leaq 0x1161e(%rip), %rsi     # 0x14108
leaq 0x11620(%rip), %rdx     # 0x14111
callq 0x12376
leaq 0x8(%rsp), %rsi
movq %rbx, %rdi
callq 0x3fb8
leaq -0x362(%rip), %rcx      # 0x27a8
movq %rcx, (%rax)
movq 0x8(%rsp), %rdi
cmpq %r14, %rdi
je 0x2b1c
callq 0x2180
leaq 0x8(%rsp), %rdi
movq %r14, (%rdi)
leaq 0x115e7(%rip), %rsi     # 0x14112
leaq 0x115e9(%rip), %rdx     # 0x1411b
callq 0x12376
leaq 0x8(%rsp), %rsi
movq %rbx, %rdi
callq 0x3fb8
leaq -0x5e6(%rip), %rcx      # 0x2565
movq %rcx, (%rax)
movq 0x8(%rsp), %rdi
cmpq %r14, %rdi
je 0x2b5d
callq 0x2180
leaq 0x8(%rsp), %rdi
movq %r14, (%rdi)
leaq 0x115b0(%rip), %rsi     # 0x1411c
leaq 0x115b4(%rip), %rdx     # 0x14127
callq 0x12376
leaq 0x8(%rsp), %rsi
movq %rbx, %rdi
callq 0x3fb8
leaq -0x6b3(%rip), %rcx      # 0x24d9
movq %rcx, (%rax)
movq 0x8(%rsp), %rdi
cmpq %r14, %rdi
je 0x2b9e
callq 0x2180
leaq 0x8(%rsp), %rdi
movq %r14, (%rdi)
leaq 0x1157b(%rip), %rsi     # 0x14128
leaq 0x1157d(%rip), %rdx     # 0x14131
callq 0x12376
leaq 0x8(%rsp), %rsi
movq %rbx, %rdi
callq 0x3fb8
leaq -0x743(%rip), %rcx      # 0x248a
movq %rcx, (%rax)
movq 0x8(%rsp), %rdi
cmpq %r14, %rdi
je 0x2bdf
callq 0x2180
leaq 0x8(%rsp), %rdi
movq %r14, (%rdi)
leaq 0x11544(%rip), %rsi     # 0x14132
leaq 0x11546(%rip), %rdx     # 0x1413b
callq 0x12376
leaq 0x8(%rsp), %rsi
movq %rbx, %rdi
callq 0x3fb8
leaq -0x773(%rip), %rcx      # 0x249b
movq %rcx, (%rax)
movq 0x8(%rsp), %rdi
cmpq %r14, %rdi
je 0x2c20
callq 0x2180
addq $0x28, %rsp
popq %rbx
popq %r14
retq
jmp 0x2c64
jmp 0x2c78
jmp 0x2c64
jmp 0x2c78
jmp 0x2c64
jmp 0x2c78
jmp 0x2c64
jmp 0x2c78
jmp 0x2c64
jmp 0x2c78
jmp 0x2c64
jmp 0x2c78
jmp 0x2c64
jmp 0x2c78
jmp 0x2c64
jmp 0x2c78
jmp 0x2c64
jmp 0x2c78
jmp 0x2c64
jmp 0x2c78
jmp 0x2c64
jmp 0x2c78
jmp 0x2c64
jmp 0x2c78
jmp 0x2c64
jmp 0x2c78
jmp 0x2c64
jmp 0x2c78
jmp 0x2c64
jmp 0x2c78
movq %rax, %rbx
movq 0x8(%rsp), %rdi
cmpq %r14, %rdi
je 0x2c7b
callq 0x2180
jmp 0x2c7b
movq %rax, %rbx
movq %rbx, %rdi
callq 0x2240