// File: Wombozo[P]harmony/src/Interval.cpp
// Function: Interval::Interval(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&)
Interval::Interval(const std::string &str) : name(str)
{
    if (!str.compare("minor second"))
    {
        type = 2;
        semitones = 1;
    }
    else if (!str.compare("major second"))
    {
        type = 2;
        semitones = 2;
    }
    else if (!str.compare("augmented second"))
    {
        type = 2;
        semitones = 3;
    }
    else if (!str.compare("diminished third"))
    {
        type = 3;
        semitones = 2;
    }
    else if (!str.compare("minor third"))
    {
        type = 3;
        semitones = 3;
    }
    else if (!str.compare("major third"))
    {
        type = 3;
        semitones = 4;
    }
    else if (!str.compare("augmented third"))
    {
        type = 3;
        semitones = 5;
    }
    else if (!str.compare("diminished fourth"))
    {
        type = 4;
        semitones = 4;
    }
    else if (!str.compare("perfect fourth"))
    {
        type = 4;
        semitones = 5;
    }
    else if (!str.compare("augmented fourth"))
    {
        type = 4;
        semitones = 6;
    }
    else if (!str.compare("diminished fifth"))
    {
        type = 5;
        semitones = 6;
    }
    else if (!str.compare("perfect fifth"))
    {
        type = 5;
        semitones = 7;
    }
    else if (!str.compare("augmented fifth"))
    {
        type = 5;
        semitones = 8;
    }
    else if (!str.compare("diminished sixth"))
    {
        type = 6;
        semitones = 7;
    }
    else if (!str.compare("minor sixth"))
    {
        type = 6;
        semitones = 8;
    }
    else if (!str.compare("major sixth"))
    {
        type = 6;
        semitones = 9;
    }
    else if (!str.compare("augmented sixth"))
    {
        type = 6;
        semitones = 10;
    }
    else if (!str.compare("diminished seventh"))
    {
        type = 7;
        semitones = 9;
    }
    else if (!str.compare("minor seventh"))
    {
        type = 7;
        semitones = 10;
    }
    else if (!str.compare("major seventh"))
    {
        type = 7;
        semitones = 11;
    }
    else
    {
        throw E_INTERVAL;
    }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x8(%rbp), %rdi
movq %rdi, -0x28(%rbp)
movq -0x10(%rbp), %rsi
callq 0x3100
movq -0x10(%rbp), %rdi
leaq 0xcbf9(%rip), %rsi      # 0x191b5
callq 0x30b0
cmpl $0x0, %eax
jne 0xc5dd
movq -0x28(%rbp), %rax
movl $0x2, 0x20(%rax)
movl $0x1, 0x24(%rax)
jmp 0xc97d
movq -0x10(%rbp), %rdi
leaq 0xcbda(%rip), %rsi      # 0x191c2
callq 0x30b0
cmpl $0x0, %eax
jne 0xc609
movq -0x28(%rbp), %rax
movl $0x2, 0x20(%rax)
movl $0x2, 0x24(%rax)
jmp 0xc97b
movq -0x10(%rbp), %rdi
leaq 0xcbbb(%rip), %rsi      # 0x191cf
callq 0x30b0
cmpl $0x0, %eax
jne 0xc635
movq -0x28(%rbp), %rax
movl $0x2, 0x20(%rax)
movl $0x3, 0x24(%rax)
jmp 0xc979
movq -0x10(%rbp), %rdi
leaq 0xcba0(%rip), %rsi      # 0x191e0
callq 0x30b0
cmpl $0x0, %eax
jne 0xc661
movq -0x28(%rbp), %rax
movl $0x3, 0x20(%rax)
movl $0x2, 0x24(%rax)
jmp 0xc977
movq -0x10(%rbp), %rdi
leaq 0xcb85(%rip), %rsi      # 0x191f1
callq 0x30b0
cmpl $0x0, %eax
jne 0xc68d
movq -0x28(%rbp), %rax
movl $0x3, 0x20(%rax)
movl $0x3, 0x24(%rax)
jmp 0xc975
movq -0x10(%rbp), %rdi
leaq 0xcb65(%rip), %rsi      # 0x191fd
callq 0x30b0
cmpl $0x0, %eax
jne 0xc6b9
movq -0x28(%rbp), %rax
movl $0x3, 0x20(%rax)
movl $0x4, 0x24(%rax)
jmp 0xc973
movq -0x10(%rbp), %rdi
leaq 0xcb45(%rip), %rsi      # 0x19209
callq 0x30b0
cmpl $0x0, %eax
jne 0xc6e5
movq -0x28(%rbp), %rax
movl $0x3, 0x20(%rax)
movl $0x5, 0x24(%rax)
jmp 0xc971
movq -0x10(%rbp), %rdi
leaq 0xcb29(%rip), %rsi      # 0x19219
callq 0x30b0
cmpl $0x0, %eax
jne 0xc711
movq -0x28(%rbp), %rax
movl $0x4, 0x20(%rax)
movl $0x4, 0x24(%rax)
jmp 0xc96f
movq -0x10(%rbp), %rdi
leaq 0xcb0f(%rip), %rsi      # 0x1922b
callq 0x30b0
cmpl $0x0, %eax
jne 0xc73d
movq -0x28(%rbp), %rax
movl $0x4, 0x20(%rax)
movl $0x5, 0x24(%rax)
jmp 0xc96d
movq -0x10(%rbp), %rdi
leaq 0xcaf2(%rip), %rsi      # 0x1923a
callq 0x30b0
cmpl $0x0, %eax
jne 0xc769
movq -0x28(%rbp), %rax
movl $0x4, 0x20(%rax)
movl $0x6, 0x24(%rax)
jmp 0xc96b
movq -0x10(%rbp), %rdi
leaq 0xcad7(%rip), %rsi      # 0x1924b
callq 0x30b0
cmpl $0x0, %eax
jne 0xc795
movq -0x28(%rbp), %rax
movl $0x5, 0x20(%rax)
movl $0x6, 0x24(%rax)
jmp 0xc969
movq -0x10(%rbp), %rdi
leaq 0xcabc(%rip), %rsi      # 0x1925c
callq 0x30b0
cmpl $0x0, %eax
jne 0xc7c1
movq -0x28(%rbp), %rax
movl $0x5, 0x20(%rax)
movl $0x7, 0x24(%rax)
jmp 0xc967
movq -0x10(%rbp), %rdi
leaq 0xca9e(%rip), %rsi      # 0x1926a
callq 0x30b0
cmpl $0x0, %eax
jne 0xc7ed
movq -0x28(%rbp), %rax
movl $0x5, 0x20(%rax)
movl $0x8, 0x24(%rax)
jmp 0xc965
movq -0x10(%rbp), %rdi
leaq 0xca82(%rip), %rsi      # 0x1927a
callq 0x30b0
cmpl $0x0, %eax
jne 0xc819
movq -0x28(%rbp), %rax
movl $0x6, 0x20(%rax)
movl $0x7, 0x24(%rax)
jmp 0xc963
movq -0x10(%rbp), %rdi
leaq 0xca67(%rip), %rsi      # 0x1928b
callq 0x30b0
cmpl $0x0, %eax
jne 0xc845
movq -0x28(%rbp), %rax
movl $0x6, 0x20(%rax)
movl $0x8, 0x24(%rax)
jmp 0xc961
movq -0x10(%rbp), %rdi
leaq 0xca47(%rip), %rsi      # 0x19297
callq 0x30b0
cmpl $0x0, %eax
jne 0xc871
movq -0x28(%rbp), %rax
movl $0x6, 0x20(%rax)
movl $0x9, 0x24(%rax)
jmp 0xc95f
movq -0x10(%rbp), %rdi
leaq 0xca27(%rip), %rsi      # 0x192a3
callq 0x30b0
cmpl $0x0, %eax
jne 0xc89d
movq -0x28(%rbp), %rax
movl $0x6, 0x20(%rax)
movl $0xa, 0x24(%rax)
jmp 0xc95d
movq -0x10(%rbp), %rdi
leaq 0xca0b(%rip), %rsi      # 0x192b3
callq 0x30b0
cmpl $0x0, %eax
jne 0xc8c9
movq -0x28(%rbp), %rax
movl $0x7, 0x20(%rax)
movl $0x9, 0x24(%rax)
jmp 0xc95b
movq -0x10(%rbp), %rdi
leaq 0xc9f2(%rip), %rsi      # 0x192c6
callq 0x30b0
cmpl $0x0, %eax
jne 0xc8f2
movq -0x28(%rbp), %rax
movl $0x7, 0x20(%rax)
movl $0xa, 0x24(%rax)
jmp 0xc959
movq -0x10(%rbp), %rdi
leaq 0xc9d7(%rip), %rsi      # 0x192d4
callq 0x30b0
cmpl $0x0, %eax
jne 0xc91b
movq -0x28(%rbp), %rax
movl $0x7, 0x20(%rax)
movl $0xb, 0x24(%rax)
jmp 0xc957
movl $0x4, %edi
callq 0x3140
movq %rax, %rdi
movl $0x0, (%rdi)
leaq 0x13f03(%rip), %rsi     # 0x20838
xorl %eax, %eax
movl %eax, %edx
callq 0x33a0
jmp 0xc98c
movq -0x28(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
callq 0x3190
jmp 0xc983
jmp 0xc959
jmp 0xc95b
jmp 0xc95d
jmp 0xc95f
jmp 0xc961
jmp 0xc963
jmp 0xc965
jmp 0xc967
jmp 0xc969
jmp 0xc96b
jmp 0xc96d
jmp 0xc96f
jmp 0xc971
jmp 0xc973
jmp 0xc975
jmp 0xc977
jmp 0xc979
jmp 0xc97b
jmp 0xc97d
addq $0x30, %rsp
popq %rbp
retq
movq -0x18(%rbp), %rdi
callq 0x33d0
nopl (%rax)