// File: 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
subq $0x440, %rsp            # imm = 0x440
movq %rdi, -0x10(%rbp)
movb $0x1, -0x23c(%rbp)
leaq -0x210(%rbp), %rax
movq %rax, -0x308(%rbp)
movq %rax, -0x218(%rbp)
leaq -0x219(%rbp), %rdi
movq %rdi, -0x300(%rbp)
callq 0x33e0
movq -0x308(%rbp), %rdi
movq -0x300(%rbp), %rdx
leaq 0xfccb(%rip), %rsi      # 0x192ee
callq 0x7340
jmp 0x962a
leaq -0x1f0(%rbp), %rax
movq %rax, -0x318(%rbp)
movq %rax, -0x218(%rbp)
leaq -0x22d(%rbp), %rdi
movq %rdi, -0x310(%rbp)
callq 0x33e0
movq -0x318(%rbp), %rdi
movq -0x310(%rbp), %rdx
leaq 0xfc8b(%rip), %rsi      # 0x192f2
callq 0x7340
jmp 0x966e
leaq -0x1d0(%rbp), %rax
movq %rax, -0x328(%rbp)
movq %rax, -0x218(%rbp)
leaq -0x22e(%rbp), %rdi
movq %rdi, -0x320(%rbp)
callq 0x33e0
movq -0x328(%rbp), %rdi
movq -0x320(%rbp), %rdx
leaq 0xfc45(%rip), %rsi      # 0x192f0
callq 0x7340
jmp 0x96b2
leaq -0x1b0(%rbp), %rax
movq %rax, -0x338(%rbp)
movq %rax, -0x218(%rbp)
leaq -0x22f(%rbp), %rdi
movq %rdi, -0x330(%rbp)
callq 0x33e0
movq -0x338(%rbp), %rdi
movq -0x330(%rbp), %rdx
leaq 0xfc05(%rip), %rsi      # 0x192f4
callq 0x7340
jmp 0x96f6
leaq -0x190(%rbp), %rax
movq %rax, -0x348(%rbp)
movq %rax, -0x218(%rbp)
leaq -0x230(%rbp), %rdi
movq %rdi, -0x340(%rbp)
callq 0x33e0
movq -0x348(%rbp), %rdi
movq -0x340(%rbp), %rdx
leaq 0xfbc6(%rip), %rsi      # 0x192f9
callq 0x7340
jmp 0x973a
leaq -0x170(%rbp), %rax
movq %rax, -0x358(%rbp)
movq %rax, -0x218(%rbp)
leaq -0x231(%rbp), %rdi
movq %rdi, -0x350(%rbp)
callq 0x33e0
movq -0x358(%rbp), %rdi
movq -0x350(%rbp), %rdx
leaq 0xfb81(%rip), %rsi      # 0x192f8
callq 0x7340
jmp 0x977e
leaq -0x150(%rbp), %rax
movq %rax, -0x368(%rbp)
movq %rax, -0x218(%rbp)
leaq -0x232(%rbp), %rdi
movq %rdi, -0x360(%rbp)
callq 0x33e0
movq -0x368(%rbp), %rdi
movq -0x360(%rbp), %rdx
leaq 0xfb43(%rip), %rsi      # 0x192fe
callq 0x7340
jmp 0x97c2
leaq -0x130(%rbp), %rax
movq %rax, -0x378(%rbp)
movq %rax, -0x218(%rbp)
leaq -0x233(%rbp), %rdi
movq %rdi, -0x370(%rbp)
callq 0x33e0
movq -0x378(%rbp), %rdi
movq -0x370(%rbp), %rdx
leaq 0xfb11(%rip), %rsi      # 0x19310
callq 0x7340
jmp 0x9806
leaq -0x110(%rbp), %rax
movq %rax, -0x388(%rbp)
movq %rax, -0x218(%rbp)
leaq -0x234(%rbp), %rdi
movq %rdi, -0x380(%rbp)
callq 0x33e0
movq -0x388(%rbp), %rdi
movq -0x380(%rbp), %rdx
leaq 0xfac6(%rip), %rsi      # 0x19309
callq 0x7340
jmp 0x984a
leaq -0xf0(%rbp), %rax
movq %rax, -0x398(%rbp)
movq %rax, -0x218(%rbp)
leaq -0x235(%rbp), %rdi
movq %rdi, -0x390(%rbp)
callq 0x33e0
movq -0x398(%rbp), %rdi
movq -0x390(%rbp), %rdx
leaq 0xfa7f(%rip), %rsi      # 0x19306
callq 0x7340
jmp 0x988e
leaq -0xd0(%rbp), %rax
movq %rax, -0x3a8(%rbp)
movq %rax, -0x218(%rbp)
leaq -0x236(%rbp), %rdi
movq %rdi, -0x3a0(%rbp)
callq 0x33e0
movq -0x3a8(%rbp), %rdi
movq -0x3a0(%rbp), %rdx
leaq 0xfa38(%rip), %rsi      # 0x19303
callq 0x7340
jmp 0x98d2
leaq -0xb0(%rbp), %rax
movq %rax, -0x3b8(%rbp)
movq %rax, -0x218(%rbp)
leaq -0x237(%rbp), %rdi
movq %rdi, -0x3b0(%rbp)
callq 0x33e0
movq -0x3b8(%rbp), %rdi
movq -0x3b0(%rbp), %rdx
leaq 0xf9fd(%rip), %rsi      # 0x1930c
callq 0x7340
jmp 0x9916
leaq -0x90(%rbp), %rax
movq %rax, -0x3c8(%rbp)
movq %rax, -0x218(%rbp)
leaq -0x238(%rbp), %rdi
movq %rdi, -0x3c0(%rbp)
callq 0x33e0
movq -0x3c8(%rbp), %rdi
movq -0x3c0(%rbp), %rdx
leaq 0xf9b8(%rip), %rsi      # 0x1930b
callq 0x7340
jmp 0x995a
leaq -0x70(%rbp), %rax
movq %rax, -0x3d8(%rbp)
movq %rax, -0x218(%rbp)
leaq -0x239(%rbp), %rdi
movq %rdi, -0x3d0(%rbp)
callq 0x33e0
movq -0x3d8(%rbp), %rdi
movq -0x3d0(%rbp), %rdx
leaq 0xf980(%rip), %rsi      # 0x19314
callq 0x7340
jmp 0x999b
leaq -0x50(%rbp), %rax
movq %rax, -0x3e8(%rbp)
movq %rax, -0x218(%rbp)
leaq -0x23a(%rbp), %rdi
movq %rdi, -0x3e0(%rbp)
callq 0x33e0
movq -0x3e8(%rbp), %rdi
movq -0x3e0(%rbp), %rdx
leaq 0xf939(%rip), %rsi      # 0x1930e
callq 0x7340
jmp 0x99dc
leaq -0x30(%rbp), %rax
movq %rax, -0x3f8(%rbp)
movq %rax, -0x218(%rbp)
leaq -0x23b(%rbp), %rdi
movq %rdi, -0x3f0(%rbp)
callq 0x33e0
movq -0x3f8(%rbp), %rdi
movq -0x3f0(%rbp), %rdx
leaq 0xf8fd(%rip), %rsi      # 0x19313
callq 0x7340
jmp 0x9a1d
movb $0x0, -0x23c(%rbp)
leaq -0x23b(%rbp), %rdi
callq 0x3270
leaq -0x23a(%rbp), %rdi
callq 0x3270
leaq -0x239(%rbp), %rdi
callq 0x3270
leaq -0x238(%rbp), %rdi
callq 0x3270
leaq -0x237(%rbp), %rdi
callq 0x3270
leaq -0x236(%rbp), %rdi
callq 0x3270
leaq -0x235(%rbp), %rdi
callq 0x3270
leaq -0x234(%rbp), %rdi
callq 0x3270
leaq -0x233(%rbp), %rdi
callq 0x3270
leaq -0x232(%rbp), %rdi
callq 0x3270
leaq -0x231(%rbp), %rdi
callq 0x3270
leaq -0x230(%rbp), %rdi
callq 0x3270
leaq -0x22f(%rbp), %rdi
callq 0x3270
leaq -0x22e(%rbp), %rdi
callq 0x3270
leaq -0x22d(%rbp), %rdi
callq 0x3270
leaq -0x219(%rbp), %rdi
callq 0x3270
leaq -0x210(%rbp), %rax
movq %rax, -0x248(%rbp)
movq -0x248(%rbp), %rax
movq %rax, -0x250(%rbp)
movq -0x248(%rbp), %rax
addq $0x200, %rax            # imm = 0x200
movq %rax, -0x258(%rbp)
movq -0x250(%rbp), %rax
cmpq -0x258(%rbp), %rax
je 0x9e6c
movq -0x250(%rbp), %rsi
leaq -0x278(%rbp), %rdi
callq 0x3100
jmp 0x9b3d
movq -0x10(%rbp), %rsi
leaq -0x278(%rbp), %rdi
callq 0x3040
movl %eax, -0x3fc(%rbp)
jmp 0x9b55
movl -0x3fc(%rbp), %eax
cmpl $0x0, %eax
jne 0x9e2d
movb $0x1, -0x1(%rbp)
movl $0x1, -0x27c(%rbp)
jmp 0x9e37
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x228(%rbp)
movl %eax, -0x22c(%rbp)
jmp 0x9d8a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x228(%rbp)
movl %eax, -0x22c(%rbp)
jmp 0x9d7e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x228(%rbp)
movl %eax, -0x22c(%rbp)
jmp 0x9d72
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x228(%rbp)
movl %eax, -0x22c(%rbp)
jmp 0x9d66
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x228(%rbp)
movl %eax, -0x22c(%rbp)
jmp 0x9d5a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x228(%rbp)
movl %eax, -0x22c(%rbp)
jmp 0x9d4e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x228(%rbp)
movl %eax, -0x22c(%rbp)
jmp 0x9d42
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x228(%rbp)
movl %eax, -0x22c(%rbp)
jmp 0x9d36
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x228(%rbp)
movl %eax, -0x22c(%rbp)
jmp 0x9d2a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x228(%rbp)
movl %eax, -0x22c(%rbp)
jmp 0x9d1e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x228(%rbp)
movl %eax, -0x22c(%rbp)
jmp 0x9d12
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x228(%rbp)
movl %eax, -0x22c(%rbp)
jmp 0x9d06
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x228(%rbp)
movl %eax, -0x22c(%rbp)
jmp 0x9cfa
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x228(%rbp)
movl %eax, -0x22c(%rbp)
jmp 0x9cee
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x228(%rbp)
movl %eax, -0x22c(%rbp)
jmp 0x9ce2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x228(%rbp)
movl %eax, -0x22c(%rbp)
leaq -0x23b(%rbp), %rdi
callq 0x3270
leaq -0x23a(%rbp), %rdi
callq 0x3270
leaq -0x239(%rbp), %rdi
callq 0x3270
leaq -0x238(%rbp), %rdi
callq 0x3270
leaq -0x237(%rbp), %rdi
callq 0x3270
leaq -0x236(%rbp), %rdi
callq 0x3270
leaq -0x235(%rbp), %rdi
callq 0x3270
leaq -0x234(%rbp), %rdi
callq 0x3270
leaq -0x233(%rbp), %rdi
callq 0x3270
leaq -0x232(%rbp), %rdi
callq 0x3270
leaq -0x231(%rbp), %rdi
callq 0x3270
leaq -0x230(%rbp), %rdi
callq 0x3270
leaq -0x22f(%rbp), %rdi
callq 0x3270
leaq -0x22e(%rbp), %rdi
callq 0x3270
leaq -0x22d(%rbp), %rdi
callq 0x3270
leaq -0x219(%rbp), %rdi
callq 0x3270
testb $0x1, -0x23c(%rbp)
jne 0x9da1
jmp 0x9dee
movq -0x218(%rbp), %rax
leaq -0x210(%rbp), %rcx
cmpq %rax, %rcx
movq %rax, -0x408(%rbp)
je 0x9dec
movq -0x408(%rbp), %rdi
addq $-0x20, %rdi
movq %rdi, -0x410(%rbp)
callq 0x3190
movq -0x410(%rbp), %rax
leaq -0x210(%rbp), %rcx
cmpq %rcx, %rax
movq %rax, -0x408(%rbp)
jne 0x9dbb
jmp 0x9dee
jmp 0xa08d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x228(%rbp)
movl %eax, -0x22c(%rbp)
jmp 0xa03f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x228(%rbp)
movl %eax, -0x22c(%rbp)
leaq -0x278(%rbp), %rdi
callq 0x3190
jmp 0xa03f
movl $0x0, -0x27c(%rbp)
leaq -0x278(%rbp), %rdi
callq 0x3190
movl -0x27c(%rbp), %eax
testl %eax, %eax
jne 0x9fe5
jmp 0x9e53
jmp 0x9e55
movq -0x250(%rbp), %rax
addq $0x20, %rax
movq %rax, -0x250(%rbp)
jmp 0x9b14
movq 0x1715d(%rip), %rdi     # 0x20fd0
leaq 0xf322(%rip), %rsi      # 0x1919c
callq 0x3220
jmp 0x9e81
leaq -0x210(%rbp), %rax
movq %rax, -0x288(%rbp)
movq -0x288(%rbp), %rax
movq %rax, -0x290(%rbp)
movq -0x288(%rbp), %rax
addq $0x200, %rax            # imm = 0x200
movq %rax, -0x298(%rbp)
movq -0x290(%rbp), %rax
cmpq -0x298(%rbp), %rax
je 0x9fc2
movq -0x290(%rbp), %rsi
leaq -0x2b8(%rbp), %rdi
callq 0x3100
jmp 0x9eda
leaq 0xf2d1(%rip), %rsi      # 0x191b2
leaq -0x2f8(%rbp), %rdi
leaq -0x2b8(%rbp), %rdx
callq 0xa380
jmp 0x9ef6
leaq 0xf2b4(%rip), %rdx      # 0x191b1
leaq -0x2d8(%rbp), %rdi
leaq -0x2f8(%rbp), %rsi
callq 0xa330
jmp 0x9f12
movq 0x170b7(%rip), %rdi     # 0x20fd0
leaq -0x2d8(%rbp), %rsi
callq 0x3210
jmp 0x9f27
leaq -0x2d8(%rbp), %rdi
callq 0x3190
leaq -0x2f8(%rbp), %rdi
callq 0x3190
leaq -0x2b8(%rbp), %rdi
callq 0x3190
movq -0x290(%rbp), %rax
addq $0x20, %rax
movq %rax, -0x290(%rbp)
jmp 0x9eb1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x228(%rbp)
movl %eax, -0x22c(%rbp)
jmp 0x9fb4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x228(%rbp)
movl %eax, -0x22c(%rbp)
jmp 0x9fa8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x228(%rbp)
movl %eax, -0x22c(%rbp)
leaq -0x2d8(%rbp), %rdi
callq 0x3190
leaq -0x2f8(%rbp), %rdi
callq 0x3190
leaq -0x2b8(%rbp), %rdi
callq 0x3190
jmp 0xa03f
movq 0x17007(%rip), %rdi     # 0x20fd0
movq 0x16fe8(%rip), %rsi     # 0x20fb8
callq 0x3250
jmp 0x9fd7
movb $0x0, -0x1(%rbp)
movl $0x1, -0x27c(%rbp)
leaq -0x210(%rbp), %rax
movq %rax, -0x420(%rbp)
addq $0x200, %rax            # imm = 0x200
movq %rax, -0x418(%rbp)
movq -0x418(%rbp), %rdi
addq $-0x20, %rdi
movq %rdi, -0x428(%rbp)
callq 0x3190
movq -0x420(%rbp), %rcx
movq -0x428(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x418(%rbp)
jne 0xa000
movb -0x1(%rbp), %al
andb $0x1, %al
addq $0x440, %rsp            # imm = 0x440
popq %rbp
retq
leaq -0x210(%rbp), %rax
movq %rax, -0x438(%rbp)
addq $0x200, %rax            # imm = 0x200
movq %rax, -0x430(%rbp)
movq -0x430(%rbp), %rdi
addq $-0x20, %rdi
movq %rdi, -0x440(%rbp)
callq 0x3190
movq -0x438(%rbp), %rcx
movq -0x440(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x430(%rbp)
jne 0xa05a
jmp 0xa08d
movq -0x228(%rbp), %rdi
callq 0x33d0
nopl (%rax)