// File: grogers0[P]dots_and_boxes/Board.cpp
// Function: Board::set_move_decider(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&)
void Board::set_move_decider(const std::string &solver)
{
    std::string base = basename_str(solver);
    if (base == "random") {
        decider = &Board::decide_move_random;
    } else if (base == "first") {
        decider = &Board::decide_move_first;
    } else if (base == "invalid") {
        decider = &Board::decide_move_invalid;
    } else if (base == "timeout") {
        decider = &Board::decide_move_timeout;
    } else if (base == "crash") {
        exit(1);
    } else if (base == "nocheap") {
        decider = &Board::decide_move_nocheap;
    } else {
        fprintf(stderr, "dots solver run with command: %s, cannot decide which move decider to use\n", base.c_str());
        exit(1);
    }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x60, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x50(%rbp)
movq -0x10(%rbp), %rsi
leaq -0x30(%rbp), %rdi
movq %rdi, -0x48(%rbp)
callq 0x2dd0
movq -0x48(%rbp), %rdi
leaq 0x74f1(%rip), %rsi      # 0xa3b5
callq 0x35c0
movb %al, -0x3d(%rbp)
jmp 0x2ece
movb -0x3d(%rbp), %al
testb $0x1, %al
jne 0x2ed7
jmp 0x2f0d
movq -0x50(%rbp), %rax
leaq 0x3ede(%rip), %rcx      # 0x6dc0
movq %rcx, 0x38(%rax)
movq $0x0, 0x40(%rax)
jmp 0x305a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0x30(%rbp), %rdi
callq 0x2140
jmp 0x3069
leaq 0x7149(%rip), %rsi      # 0xa05d
leaq -0x30(%rbp), %rdi
callq 0x35c0
movb %al, -0x51(%rbp)
jmp 0x2f22
movb -0x51(%rbp), %al
testb $0x1, %al
jne 0x2f2b
jmp 0x2f47
movq -0x50(%rbp), %rax
leaq 0x410a(%rip), %rcx      # 0x7040
movq %rcx, 0x38(%rax)
movq $0x0, 0x40(%rax)
jmp 0x3058
leaq 0x7115(%rip), %rsi      # 0xa063
leaq -0x30(%rbp), %rdi
callq 0x35c0
movb %al, -0x52(%rbp)
jmp 0x2f5c
movb -0x52(%rbp), %al
testb $0x1, %al
jne 0x2f65
jmp 0x2f81
movq -0x50(%rbp), %rax
leaq 0x42c0(%rip), %rcx      # 0x7230
movq %rcx, 0x38(%rax)
movq $0x0, 0x40(%rax)
jmp 0x3056
leaq 0x70e3(%rip), %rsi      # 0xa06b
leaq -0x30(%rbp), %rdi
callq 0x35c0
movb %al, -0x53(%rbp)
jmp 0x2f96
movb -0x53(%rbp), %al
testb $0x1, %al
jne 0x2f9f
jmp 0x2fbb
movq -0x50(%rbp), %rax
leaq 0x42b6(%rip), %rcx      # 0x7260
movq %rcx, 0x38(%rax)
movq $0x0, 0x40(%rax)
jmp 0x3054
leaq 0x70b1(%rip), %rsi      # 0xa073
leaq -0x30(%rbp), %rdi
callq 0x35c0
movb %al, -0x54(%rbp)
jmp 0x2fd0
movb -0x54(%rbp), %al
testb $0x1, %al
jne 0x2fd9
jmp 0x2fe3
movl $0x1, %edi
callq 0x22e0
leaq 0x708f(%rip), %rsi      # 0xa079
leaq -0x30(%rbp), %rdi
callq 0x35c0
movb %al, -0x55(%rbp)
jmp 0x2ff8
movb -0x55(%rbp), %al
testb $0x1, %al
jne 0x3001
jmp 0x301a
movq -0x50(%rbp), %rax
leaq 0x4294(%rip), %rcx      # 0x72a0
movq %rcx, 0x38(%rax)
movq $0x0, 0x40(%rax)
jmp 0x3050
movq 0xbfb7(%rip), %rax      # 0xefd8
movq (%rax), %rax
movq %rax, -0x60(%rbp)
leaq -0x30(%rbp), %rdi
callq 0x20e0
movq -0x60(%rbp), %rdi
movq %rax, %rdx
leaq 0x7042(%rip), %rsi      # 0xa081
movb $0x0, %al
callq 0x2340
movl $0x1, %edi
callq 0x22e0
jmp 0x3052
jmp 0x3054
jmp 0x3056
jmp 0x3058
jmp 0x305a
leaq -0x30(%rbp), %rdi
callq 0x2140
addq $0x60, %rsp
popq %rbp
retq
movq -0x38(%rbp), %rdi
callq 0x2400
nopw %cs:(%rax,%rax)