// File: /workspace/github_cpp_makefile_star2_O2/Wombozo[P]harmony/src/utils.cpp
// Function: valid_user_type_chord_input(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&)
bool valid_user_type_chord_input(const std::string &str)
{
    std::string stypes[] = {"M",
                            "m",
                            "dim",
                            "aug",
                            "sus4",
                            "7sus4",
                            "sus2",
                            "m7",
                            "7",
                            "maj7",
                            "minmaj7",
                            "6",
                            "m6",
                            "7b5",
                            "dim7",
                            "m7b5"};
    for (auto stype : stypes)
    {
        if (!stype.compare(str))
            return true;
    }
    std::cout << "Available answers : ";
    for (auto stype : stypes)
    {
        std::cout << "| " + stype + " | ";
    }
    std::cout << std::endl;
    return false;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x278, %rsp            # imm = 0x278
movq %rdi, %r15
leaq 0x6bf4(%rip), %rsi      # 0xc2ee
leaq -0x2a0(%rbp), %rbx
leaq -0x58(%rbp), %rdx
movq %rbx, %rdi
callq 0x4d30
leaq -0x280(%rbp), %r14
leaq 0x6bd7(%rip), %rsi      # 0xc2f2
leaq -0x98(%rbp), %rdx
movq %r14, %rdi
callq 0x4d30
leaq -0x260(%rbp), %r14
leaq 0x6bb8(%rip), %rsi      # 0xc2f0
leaq -0x78(%rbp), %rdx
movq %r14, %rdi
callq 0x4d30
leaq -0x240(%rbp), %r14
leaq 0x6ba2(%rip), %rsi      # 0xc2f4
leaq -0x35(%rbp), %rdx
movq %r14, %rdi
callq 0x4d30
leaq -0x220(%rbp), %r14
leaq 0x6b8d(%rip), %rsi      # 0xc2f9
leaq -0x34(%rbp), %rdx
movq %r14, %rdi
callq 0x4d30
leaq -0x200(%rbp), %r14
leaq 0x6b72(%rip), %rsi      # 0xc2f8
leaq -0x33(%rbp), %rdx
movq %r14, %rdi
callq 0x4d30
leaq -0x1e0(%rbp), %r14
leaq 0x6b5e(%rip), %rsi      # 0xc2fe
leaq -0x32(%rbp), %rdx
movq %r14, %rdi
callq 0x4d30
leaq -0x1c0(%rbp), %r14
leaq 0x6b56(%rip), %rsi      # 0xc310
leaq -0x31(%rbp), %rdx
movq %r14, %rdi
callq 0x4d30
leaq -0x1a0(%rbp), %r14
leaq 0x6b35(%rip), %rsi      # 0xc309
leaq -0x30(%rbp), %rdx
movq %r14, %rdi
callq 0x4d30
leaq -0x180(%rbp), %r14
leaq 0x6b18(%rip), %rsi      # 0xc306
leaq -0x2f(%rbp), %rdx
movq %r14, %rdi
callq 0x4d30
leaq -0x160(%rbp), %r14
leaq 0x6afb(%rip), %rsi      # 0xc303
leaq -0x2e(%rbp), %rdx
movq %r14, %rdi
callq 0x4d30
leaq -0x140(%rbp), %r14
leaq 0x6aea(%rip), %rsi      # 0xc30c
leaq -0x2d(%rbp), %rdx
movq %r14, %rdi
callq 0x4d30
leaq -0x120(%rbp), %r14
leaq 0x6acf(%rip), %rsi      # 0xc30b
leaq -0x2c(%rbp), %rdx
movq %r14, %rdi
callq 0x4d30
leaq -0x100(%rbp), %r14
leaq 0x6abe(%rip), %rsi      # 0xc314
leaq -0x2b(%rbp), %rdx
movq %r14, %rdi
callq 0x4d30
leaq -0xe0(%rbp), %r14
leaq 0x6a9e(%rip), %rsi      # 0xc30e
leaq -0x2a(%rbp), %rdx
movq %r14, %rdi
callq 0x4d30
leaq -0xc0(%rbp), %r14
leaq 0x6a89(%rip), %rsi      # 0xc313
leaq -0x29(%rbp), %rdx
movq %r14, %rdi
callq 0x4d30
xorl %eax, %eax
leaq -0x58(%rbp), %rbx
movq %rax, %r12
cmpq $0x200, %rax            # imm = 0x200
je 0x58df
leaq (%r12,%rbp), %rsi
addq $-0x2a0, %rsi           # imm = 0xFD60
movq %rbx, %rdi
callq 0x31f0
movq %rbx, %rdi
movq %r15, %rsi
callq 0x3030
movl %eax, %r14d
movq %rbx, %rdi
callq 0x30d0
leaq 0x20(%r12), %rax
testl %r14d, %r14d
jne 0x589c
jmp 0x597d
movq 0xc6e2(%rip), %rdi      # 0x11fc8
leaq 0x68af(%rip), %rsi      # 0xc19c
callq 0x3190
xorl %r14d, %r14d
leaq -0x58(%rbp), %rbx
leaq -0x78(%rbp), %r15
leaq -0x98(%rbp), %r13
cmpq $0x200, %r14            # imm = 0x200
je 0x5971
leaq (%r14,%rbp), %rsi
addq $-0x2a0, %rsi           # imm = 0xFD60
movq %rbx, %rdi
callq 0x31f0
movq %r15, %rdi
leaq 0x6888(%rip), %rsi      # 0xc1b2
movq %rbx, %rdx
callq 0x5b4e
movq %r13, %rdi
movq %r15, %rsi
leaq 0x6872(%rip), %rdx      # 0xc1b1
callq 0x5b25
movq 0xc67d(%rip), %rdi      # 0x11fc8
movq %r13, %rsi
callq 0x3180
movq %r13, %rdi
callq 0x30d0
movq %r15, %rdi
callq 0x30d0
movq %rbx, %rdi
callq 0x30d0
addq $0x20, %r14
jmp 0x5904
movq 0xc650(%rip), %rdi      # 0x11fc8
callq 0x30e0
movl $0x1e0, %ebx            # imm = 0x1E0
leaq (%rbx,%rbp), %rdi
addq $-0x2a0, %rdi           # imm = 0xFD60
callq 0x30d0
addq $-0x20, %rbx
cmpq $-0x20, %rbx
jne 0x5982
cmpq $0x200, %r12            # imm = 0x200
setne %al
addq $0x278, %rsp            # imm = 0x278
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x59d4
jmp 0x59d4
jmp 0x59d4
jmp 0x59d4
jmp 0x59d4
jmp 0x59d4
jmp 0x59d4
jmp 0x59d4
jmp 0x59d4
jmp 0x59d4
jmp 0x59d4
jmp 0x59d4
jmp 0x59d4
jmp 0x59d4
movq %rax, %r15
addq $-0x20, %r14
movq %r14, %rdi
callq 0x30d0
cmpq %rbx, %r14
jne 0x59d7
jmp 0x5a3f
jmp 0x5a0f
jmp 0x5a0f
jmp 0x5a14
movq %rax, %r15
jmp 0x5a04
movq %rax, %r15
leaq -0x98(%rbp), %rdi
callq 0x30d0
leaq -0x78(%rbp), %rdi
callq 0x30d0
jmp 0x5a17
movq %rax, %r15
jmp 0x5a20
movq %rax, %r15
leaq -0x58(%rbp), %rdi
callq 0x30d0
movl $0x1e0, %ebx            # imm = 0x1E0
leaq (%rbx,%rbp), %rdi
addq $-0x2a0, %rdi           # imm = 0xFD60
callq 0x30d0
addq $-0x20, %rbx
cmpq $-0x20, %rbx
jne 0x5a25
movq %r15, %rdi
callq 0x32b0