// File: Wombozo[P]harmony/src/user.cpp
// Function: handle_id()
static void handle_id()
{
    std::string root, sint;
    do
    {
        std::cin.clear();
        std::cout << "Select the first note of the interval : ";
        std::cin >> root;
    } while (!valid_user_note_input(root));
    do
    {
        std::cin.clear();
        std::cout << "Select the interval : ";
        std::cin >> std::ws;
        std::getline(std::cin, sint);
    } while (!valid_user_type_interval_input(sint));
    Note *tmp = u_parse_note(root);
    Interval i(sint);
    std::cout << "The " + sint + " above " << tmp->display() << " is " << i.getNext(tmp)->display() << std::endl;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x140, %rsp            # imm = 0x140
leaq -0x20(%rbp), %rdi
callq 0x3300
leaq -0x40(%rbp), %rdi
callq 0x3300
movq 0x904c(%rip), %rdi      # 0x20fe0
movq (%rdi), %rax
movq -0x18(%rax), %rax
addq %rax, %rdi
xorl %esi, %esi
callq 0x3390
jmp 0x17fa7
movq 0x9022(%rip), %rdi      # 0x20fd0
leaq 0x160f(%rip), %rsi      # 0x195c4
callq 0x3220
jmp 0x17fbc
movq 0x901d(%rip), %rdi      # 0x20fe0
leaq -0x20(%rbp), %rsi
callq 0x32c0
jmp 0x17fce
jmp 0x17fd0
leaq -0x20(%rbp), %rdi
callq 0x82c0
movb %al, -0x101(%rbp)
jmp 0x17fe1
movb -0x101(%rbp), %al
xorb $-0x1, %al
testb $0x1, %al
jne 0x17f8d
jmp 0x17fef
movq 0x8fea(%rip), %rdi      # 0x20fe0
movq (%rdi), %rax
movq -0x18(%rax), %rax
addq %rax, %rdi
xorl %esi, %esi
callq 0x3390
jmp 0x18009
movq 0x8fc0(%rip), %rdi      # 0x20fd0
leaq 0x15d6(%rip), %rsi      # 0x195ed
callq 0x3220
jmp 0x1801e
movq 0x8fbb(%rip), %rdi      # 0x20fe0
movq 0x8f9c(%rip), %rsi      # 0x20fc8
callq 0x30c0
jmp 0x18033
movq 0x8fa6(%rip), %rdi      # 0x20fe0
leaq -0x40(%rbp), %rsi
callq 0x3080
jmp 0x18045
jmp 0x18047
leaq -0x40(%rbp), %rdi
callq 0x8520
movb %al, -0x102(%rbp)
jmp 0x18058
movb -0x102(%rbp), %al
xorb $-0x1, %al
testb $0x1, %al
jne 0x17fef
leaq -0x20(%rbp), %rdi
callq 0xa0a0
movq %rax, -0x110(%rbp)
jmp 0x18076
movq -0x110(%rbp), %rax
movq %rax, -0x58(%rbp)
leaq -0x80(%rbp), %rdi
leaq -0x40(%rbp), %rsi
callq 0xc590
jmp 0x18090
leaq 0x156d(%rip), %rsi      # 0x19604
leaq -0xc0(%rbp), %rdi
leaq -0x40(%rbp), %rdx
callq 0xa380
jmp 0x180a9
leaq 0x1559(%rip), %rdx      # 0x19609
leaq -0xa0(%rbp), %rdi
leaq -0xc0(%rbp), %rsi
callq 0xa330
jmp 0x180c5
movq 0x8f04(%rip), %rdi      # 0x20fd0
leaq -0xa0(%rbp), %rsi
callq 0x3210
movq %rax, -0x118(%rbp)
jmp 0x180e1
movq -0x58(%rbp), %rsi
movq (%rsi), %rax
movq (%rax), %rax
leaq -0xe0(%rbp), %rdi
callq *%rax
jmp 0x180f6
movq -0x118(%rbp), %rdi
leaq -0xe0(%rbp), %rsi
callq 0x3210
movq %rax, -0x120(%rbp)
jmp 0x18112
movq -0x120(%rbp), %rdi
leaq 0x14f1(%rip), %rsi      # 0x19611
callq 0x3220
movq %rax, -0x128(%rbp)
jmp 0x1812e
movq -0x58(%rbp), %rsi
leaq -0x80(%rbp), %rdi
callq 0xbee0
movq %rax, -0x130(%rbp)
jmp 0x18144
movq -0x130(%rbp), %rsi
movq (%rsi), %rax
movq (%rax), %rax
leaq -0x100(%rbp), %rdi
callq *%rax
jmp 0x1815c
movq -0x128(%rbp), %rdi
leaq -0x100(%rbp), %rsi
callq 0x3210
movq %rax, -0x138(%rbp)
jmp 0x18178
movq -0x138(%rbp), %rdi
movq 0x8e32(%rip), %rsi      # 0x20fb8
callq 0x3250
jmp 0x1818d
leaq -0x100(%rbp), %rdi
callq 0x3190
leaq -0xe0(%rbp), %rdi
callq 0x3190
leaq -0xa0(%rbp), %rdi
callq 0x3190
leaq -0xc0(%rbp), %rdi
callq 0x3190
leaq -0x80(%rbp), %rdi
callq 0xc990
leaq -0x40(%rbp), %rdi
callq 0x3190
leaq -0x20(%rbp), %rdi
callq 0x3190
addq $0x140, %rsp            # imm = 0x140
popq %rbp
retq
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x1826c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x18263
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x18257
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x1824b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x1823f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x100(%rbp), %rdi
callq 0x3190
leaq -0xe0(%rbp), %rdi
callq 0x3190
leaq -0xa0(%rbp), %rdi
callq 0x3190
leaq -0xc0(%rbp), %rdi
callq 0x3190
leaq -0x80(%rbp), %rdi
callq 0xc990
leaq -0x40(%rbp), %rdi
callq 0x3190
leaq -0x20(%rbp), %rdi
callq 0x3190
movq -0x48(%rbp), %rdi
callq 0x33d0
nopw (%rax,%rax)