// File: Wombozo[P]harmony/src/Interval.cpp
// Function: Interval::Interval(int, int)
Interval::Interval(int t, int s) : type(t), semitones(s)
{
    if (t == 2 && s == 1)
        name = "minor second";
    else if (t == 2 && s == 2)
        name = "major second";
    else if (t == 2 && s == 3)
        name = "augmented second";
    else if (t == 3 && s == 2)
        name = "diminished third";
    else if (t == 3 && s == 3)
        name = "minor third";
    else if (t == 3 && s == 4)
        name = "major third";
    else if (t == 3 && s == 5)
        name = "augmented third";
    else if (t == 4 && s == 4)
        name = "diminished fourth";
    else if (t == 4 && s == 5)
        name = "perfect fourth";
    else if (t == 4 && s == 6)
        name = "augmented fourth";
    else if (t == 5 && s == 6)
        name = "diminished fifth";
    else if (t == 5 && s == 7)
        name = "perfect fifth";
    else if (t == 5 && s == 8)
        name = "augmented fifth";
    else if (t == 6 && s == 7)
        name = "diminished sixth";
    else if (t == 6 && s == 8)
        name = "minor sixth";
    else if (t == 6 && s == 9)
        name = "major sixth";
    else if (t == 6 && s == 10)
        name = "augmented sixth";
    else if (t == 7 && s == 9)
        name = "diminished seventh";
    else if (t == 7 && s == 10)
        name = "minor seventh";
    else if (t == 7 && s == 11)
        name = "major seventh";
    else
        throw E_INTERVAL;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movq %rdi, -0x8(%rbp)
movl %esi, -0xc(%rbp)
movl %edx, -0x10(%rbp)
movq -0x8(%rbp), %rdi
movq %rdi, -0x28(%rbp)
callq 0x3300
movq -0x28(%rbp), %rax
movl -0xc(%rbp), %ecx
movl %ecx, 0x20(%rax)
movl -0x10(%rbp), %ecx
movl %ecx, 0x24(%rax)
cmpl $0x2, -0xc(%rbp)
jne 0xc29c
cmpl $0x1, -0x10(%rbp)
jne 0xc29c
movq -0x28(%rbp), %rdi
leaq 0xcf3f(%rip), %rsi      # 0x191b5
callq 0x32f0
jmp 0xc27d
jmp 0xc577
movq -0x28(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
callq 0x3190
jmp 0xc57d
cmpl $0x2, -0xc(%rbp)
jne 0xc2bf
cmpl $0x2, -0x10(%rbp)
jne 0xc2bf
movq -0x28(%rbp), %rdi
leaq 0xcf0f(%rip), %rsi      # 0x191c2
callq 0x32f0
jmp 0xc2ba
jmp 0xc575
cmpl $0x2, -0xc(%rbp)
jne 0xc2e2
cmpl $0x3, -0x10(%rbp)
jne 0xc2e2
movq -0x28(%rbp), %rdi
leaq 0xcef9(%rip), %rsi      # 0x191cf
callq 0x32f0
jmp 0xc2dd
jmp 0xc573
cmpl $0x3, -0xc(%rbp)
jne 0xc305
cmpl $0x2, -0x10(%rbp)
jne 0xc305
movq -0x28(%rbp), %rdi
leaq 0xcee7(%rip), %rsi      # 0x191e0
callq 0x32f0
jmp 0xc300
jmp 0xc571
cmpl $0x3, -0xc(%rbp)
jne 0xc328
cmpl $0x3, -0x10(%rbp)
jne 0xc328
movq -0x28(%rbp), %rdi
leaq 0xced5(%rip), %rsi      # 0x191f1
callq 0x32f0
jmp 0xc323
jmp 0xc56f
cmpl $0x3, -0xc(%rbp)
jne 0xc34b
cmpl $0x4, -0x10(%rbp)
jne 0xc34b
movq -0x28(%rbp), %rdi
leaq 0xcebe(%rip), %rsi      # 0x191fd
callq 0x32f0
jmp 0xc346
jmp 0xc56d
cmpl $0x3, -0xc(%rbp)
jne 0xc36e
cmpl $0x5, -0x10(%rbp)
jne 0xc36e
movq -0x28(%rbp), %rdi
leaq 0xcea7(%rip), %rsi      # 0x19209
callq 0x32f0
jmp 0xc369
jmp 0xc56b
cmpl $0x4, -0xc(%rbp)
jne 0xc391
cmpl $0x4, -0x10(%rbp)
jne 0xc391
movq -0x28(%rbp), %rdi
leaq 0xce94(%rip), %rsi      # 0x19219
callq 0x32f0
jmp 0xc38c
jmp 0xc569
cmpl $0x4, -0xc(%rbp)
jne 0xc3b4
cmpl $0x5, -0x10(%rbp)
jne 0xc3b4
movq -0x28(%rbp), %rdi
leaq 0xce83(%rip), %rsi      # 0x1922b
callq 0x32f0
jmp 0xc3af
jmp 0xc567
cmpl $0x4, -0xc(%rbp)
jne 0xc3d7
cmpl $0x6, -0x10(%rbp)
jne 0xc3d7
movq -0x28(%rbp), %rdi
leaq 0xce6f(%rip), %rsi      # 0x1923a
callq 0x32f0
jmp 0xc3d2
jmp 0xc565
cmpl $0x5, -0xc(%rbp)
jne 0xc3fa
cmpl $0x6, -0x10(%rbp)
jne 0xc3fa
movq -0x28(%rbp), %rdi
leaq 0xce5d(%rip), %rsi      # 0x1924b
callq 0x32f0
jmp 0xc3f5
jmp 0xc563
cmpl $0x5, -0xc(%rbp)
jne 0xc41d
cmpl $0x7, -0x10(%rbp)
jne 0xc41d
movq -0x28(%rbp), %rdi
leaq 0xce4b(%rip), %rsi      # 0x1925c
callq 0x32f0
jmp 0xc418
jmp 0xc561
cmpl $0x5, -0xc(%rbp)
jne 0xc440
cmpl $0x8, -0x10(%rbp)
jne 0xc440
movq -0x28(%rbp), %rdi
leaq 0xce36(%rip), %rsi      # 0x1926a
callq 0x32f0
jmp 0xc43b
jmp 0xc55f
cmpl $0x6, -0xc(%rbp)
jne 0xc463
cmpl $0x7, -0x10(%rbp)
jne 0xc463
movq -0x28(%rbp), %rdi
leaq 0xce23(%rip), %rsi      # 0x1927a
callq 0x32f0
jmp 0xc45e
jmp 0xc55d
cmpl $0x6, -0xc(%rbp)
jne 0xc486
cmpl $0x8, -0x10(%rbp)
jne 0xc486
movq -0x28(%rbp), %rdi
leaq 0xce11(%rip), %rsi      # 0x1928b
callq 0x32f0
jmp 0xc481
jmp 0xc55b
cmpl $0x6, -0xc(%rbp)
jne 0xc4a9
cmpl $0x9, -0x10(%rbp)
jne 0xc4a9
movq -0x28(%rbp), %rdi
leaq 0xcdfa(%rip), %rsi      # 0x19297
callq 0x32f0
jmp 0xc4a4
jmp 0xc559
cmpl $0x6, -0xc(%rbp)
jne 0xc4cc
cmpl $0xa, -0x10(%rbp)
jne 0xc4cc
movq -0x28(%rbp), %rdi
leaq 0xcde3(%rip), %rsi      # 0x192a3
callq 0x32f0
jmp 0xc4c7
jmp 0xc557
cmpl $0x7, -0xc(%rbp)
jne 0xc4ec
cmpl $0x9, -0x10(%rbp)
jne 0xc4ec
movq -0x28(%rbp), %rdi
leaq 0xcdd0(%rip), %rsi      # 0x192b3
callq 0x32f0
jmp 0xc4ea
jmp 0xc555
cmpl $0x7, -0xc(%rbp)
jne 0xc50c
cmpl $0xa, -0x10(%rbp)
jne 0xc50c
movq -0x28(%rbp), %rdi
leaq 0xcdc3(%rip), %rsi      # 0x192c6
callq 0x32f0
jmp 0xc50a
jmp 0xc553
cmpl $0x7, -0xc(%rbp)
jne 0xc52c
cmpl $0xb, -0x10(%rbp)
jne 0xc52c
movq -0x28(%rbp), %rdi
leaq 0xcdb1(%rip), %rsi      # 0x192d4
callq 0x32f0
jmp 0xc52a
jmp 0xc551
movl $0x4, %edi
callq 0x3140
movq %rax, %rdi
movl $0x0, (%rdi)
leaq 0x142f2(%rip), %rsi     # 0x20838
xorl %eax, %eax
movl %eax, %edx
callq 0x33a0
jmp 0xc586
jmp 0xc553
jmp 0xc555
jmp 0xc557
jmp 0xc559
jmp 0xc55b
jmp 0xc55d
jmp 0xc55f
jmp 0xc561
jmp 0xc563
jmp 0xc565
jmp 0xc567
jmp 0xc569
jmp 0xc56b
jmp 0xc56d
jmp 0xc56f
jmp 0xc571
jmp 0xc573
jmp 0xc575
jmp 0xc577
addq $0x30, %rsp
popq %rbp
retq
movq -0x18(%rbp), %rdi
callq 0x33d0
nopw %cs:(%rax,%rax)