// File: Wombozo[P]harmony/src/Scale.cpp
// Function: Scale::Scale(Note*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&)
Scale::Scale(Note *t, const std::string &n) : tonic(t), name(n)
{
    if (!n.compare("Major"))
    {
        intervals = {Interval("major second"),
                     Interval("major third"),
                     Interval("perfect fourth"),
                     Interval("perfect fifth"),
                     Interval("major sixth"),
                     Interval("major seventh")};
        setNotes();
    }
    else if (!n.compare("Minor"))
    {
        intervals = {Interval("major second"),
                     Interval("minor third"),
                     Interval("perfect fourth"),
                     Interval("perfect fifth"),
                     Interval("minor sixth"),
                     Interval("minor seventh")};
        setNotes();
    }
    else
        throw E_SCALE_UNKNOWN;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x570, %rsp            # imm = 0x570
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq -0x8(%rbp), %rdi
movq %rdi, -0x428(%rbp)
movq %rdi, %rax
movq %rax, -0x430(%rbp)
callq 0xf520
movq -0x428(%rbp), %rdi
movq -0x10(%rbp), %rax
movq %rax, 0x18(%rdi)
addq $0x20, %rdi
movq %rdi, -0x420(%rbp)
movq -0x18(%rbp), %rsi
callq 0x3100
jmp 0x16a46
movq -0x430(%rbp), %rdi
addq $0x40, %rdi
movq %rdi, -0x438(%rbp)
callq 0x72c0
movq -0x18(%rbp), %rdi
leaq 0x287a(%rip), %rsi      # 0x192e2
callq 0x30b0
cmpl $0x0, %eax
jne 0x16fd7
movb $0x1, -0x21a(%rbp)
leaq -0x128(%rbp), %rax
movq %rax, -0x130(%rbp)
leaq -0x151(%rbp), %rdi
movq %rdi, -0x440(%rbp)
callq 0x33e0
movq -0x440(%rbp), %rdx
leaq 0x2716(%rip), %rsi      # 0x191c2
leaq -0x150(%rbp), %rdi
callq 0x7340
jmp 0x16aba
leaq -0x128(%rbp), %rdi
leaq -0x150(%rbp), %rsi
callq 0xc590
jmp 0x16acf
leaq -0x100(%rbp), %rax
movq %rax, -0x450(%rbp)
movq %rax, -0x130(%rbp)
leaq -0x179(%rbp), %rdi
movq %rdi, -0x448(%rbp)
callq 0x33e0
movq -0x448(%rbp), %rdx
leaq 0x26f8(%rip), %rsi      # 0x191fd
leaq -0x178(%rbp), %rdi
callq 0x7340
jmp 0x16b13
movq -0x450(%rbp), %rdi
leaq -0x178(%rbp), %rsi
callq 0xc590
jmp 0x16b28
leaq -0xd8(%rbp), %rax
movq %rax, -0x460(%rbp)
movq %rax, -0x130(%rbp)
leaq -0x1a1(%rbp), %rdi
movq %rdi, -0x458(%rbp)
callq 0x33e0
movq -0x458(%rbp), %rdx
leaq 0x26cd(%rip), %rsi      # 0x1922b
leaq -0x1a0(%rbp), %rdi
callq 0x7340
jmp 0x16b6c
movq -0x460(%rbp), %rdi
leaq -0x1a0(%rbp), %rsi
callq 0xc590
jmp 0x16b81
leaq -0xb0(%rbp), %rax
movq %rax, -0x470(%rbp)
movq %rax, -0x130(%rbp)
leaq -0x1c9(%rbp), %rdi
movq %rdi, -0x468(%rbp)
callq 0x33e0
movq -0x468(%rbp), %rdx
leaq 0x26a5(%rip), %rsi      # 0x1925c
leaq -0x1c8(%rbp), %rdi
callq 0x7340
jmp 0x16bc5
movq -0x470(%rbp), %rdi
leaq -0x1c8(%rbp), %rsi
callq 0xc590
jmp 0x16bda
leaq -0x88(%rbp), %rax
movq %rax, -0x480(%rbp)
movq %rax, -0x130(%rbp)
leaq -0x1f1(%rbp), %rdi
movq %rdi, -0x478(%rbp)
callq 0x33e0
movq -0x478(%rbp), %rdx
leaq 0x2687(%rip), %rsi      # 0x19297
leaq -0x1f0(%rbp), %rdi
callq 0x7340
jmp 0x16c1e
movq -0x480(%rbp), %rdi
leaq -0x1f0(%rbp), %rsi
callq 0xc590
jmp 0x16c33
leaq -0x60(%rbp), %rax
movq %rax, -0x490(%rbp)
movq %rax, -0x130(%rbp)
leaq -0x219(%rbp), %rdi
movq %rdi, -0x488(%rbp)
callq 0x33e0
movq -0x488(%rbp), %rdx
leaq 0x266e(%rip), %rsi      # 0x192d4
leaq -0x218(%rbp), %rdi
callq 0x7340
jmp 0x16c74
movq -0x490(%rbp), %rdi
leaq -0x218(%rbp), %rsi
callq 0xc590
jmp 0x16c89
movq -0x430(%rbp), %rdi
movb $0x0, -0x21a(%rbp)
leaq -0x128(%rbp), %rax
movq %rax, -0x38(%rbp)
movq $0x6, -0x30(%rbp)
movq -0x38(%rbp), %rsi
movq -0x30(%rbp), %rdx
callq 0x15ef0
jmp 0x16cb9
leaq -0x128(%rbp), %rax
movq %rax, -0x4a0(%rbp)
addq $0xf0, %rax
movq %rax, -0x498(%rbp)
movq -0x498(%rbp), %rdi
addq $-0x28, %rdi
movq %rdi, -0x4a8(%rbp)
callq 0xc990
movq -0x4a0(%rbp), %rcx
movq -0x4a8(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x498(%rbp)
jne 0x16cd4
leaq -0x218(%rbp), %rdi
callq 0x3190
leaq -0x219(%rbp), %rdi
callq 0x3270
leaq -0x1f0(%rbp), %rdi
callq 0x3190
leaq -0x1f1(%rbp), %rdi
callq 0x3270
leaq -0x1c8(%rbp), %rdi
callq 0x3190
leaq -0x1c9(%rbp), %rdi
callq 0x3270
leaq -0x1a0(%rbp), %rdi
callq 0x3190
leaq -0x1a1(%rbp), %rdi
callq 0x3270
leaq -0x178(%rbp), %rdi
callq 0x3190
leaq -0x179(%rbp), %rdi
callq 0x3270
leaq -0x150(%rbp), %rdi
callq 0x3190
leaq -0x151(%rbp), %rdi
callq 0x3270
movq -0x430(%rbp), %rdi
callq 0x168d0
jmp 0x16da3
jmp 0x17562
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
jmp 0x17583
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
jmp 0x16f5d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
jmp 0x16f51
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
jmp 0x16f45
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
jmp 0x16f39
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
jmp 0x16f2d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
jmp 0x16f21
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
jmp 0x16f15
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
jmp 0x16f09
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
jmp 0x16efd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
jmp 0x16ef1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
jmp 0x16ee5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
jmp 0x16ed9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
leaq -0x128(%rbp), %rax
movq %rax, -0x4b8(%rbp)
addq $0xf0, %rax
movq %rax, -0x4b0(%rbp)
movq -0x4b0(%rbp), %rdi
addq $-0x28, %rdi
movq %rdi, -0x4c0(%rbp)
callq 0xc990
movq -0x4b8(%rbp), %rcx
movq -0x4c0(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x4b0(%rbp)
jne 0x16ea6
jmp 0x16ed9
leaq -0x218(%rbp), %rdi
callq 0x3190
leaq -0x219(%rbp), %rdi
callq 0x3270
leaq -0x1f0(%rbp), %rdi
callq 0x3190
leaq -0x1f1(%rbp), %rdi
callq 0x3270
leaq -0x1c8(%rbp), %rdi
callq 0x3190
leaq -0x1c9(%rbp), %rdi
callq 0x3270
leaq -0x1a0(%rbp), %rdi
callq 0x3190
leaq -0x1a1(%rbp), %rdi
callq 0x3270
leaq -0x178(%rbp), %rdi
callq 0x3190
leaq -0x179(%rbp), %rdi
callq 0x3270
leaq -0x150(%rbp), %rdi
callq 0x3190
leaq -0x151(%rbp), %rdi
callq 0x3270
testb $0x1, -0x21a(%rbp)
jne 0x16f74
jmp 0x16fc1
movq -0x130(%rbp), %rax
leaq -0x128(%rbp), %rcx
cmpq %rax, %rcx
movq %rax, -0x4c8(%rbp)
je 0x16fbf
movq -0x4c8(%rbp), %rdi
addq $-0x28, %rdi
movq %rdi, -0x4d0(%rbp)
callq 0xc990
movq -0x4d0(%rbp), %rax
leaq -0x128(%rbp), %rcx
cmpq %rcx, %rax
movq %rax, -0x4c8(%rbp)
jne 0x16f8e
jmp 0x16fc1
jmp 0x1756b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
jmp 0x1756b
movq -0x18(%rbp), %rdi
leaq 0x2306(%rip), %rsi      # 0x192e8
callq 0x30b0
cmpl $0x0, %eax
jne 0x1753b
movb $0x1, -0x412(%rbp)
leaq -0x320(%rbp), %rax
movq %rax, -0x328(%rbp)
leaq -0x349(%rbp), %rdi
movq %rdi, -0x4d8(%rbp)
callq 0x33e0
movq -0x4d8(%rbp), %rdx
leaq 0x219c(%rip), %rsi      # 0x191c2
leaq -0x348(%rbp), %rdi
callq 0x7340
jmp 0x17034
leaq -0x320(%rbp), %rdi
leaq -0x348(%rbp), %rsi
callq 0xc590
jmp 0x17049
leaq -0x2f8(%rbp), %rax
movq %rax, -0x4e8(%rbp)
movq %rax, -0x328(%rbp)
leaq -0x371(%rbp), %rdi
movq %rdi, -0x4e0(%rbp)
callq 0x33e0
movq -0x4e0(%rbp), %rdx
leaq 0x2172(%rip), %rsi      # 0x191f1
leaq -0x370(%rbp), %rdi
callq 0x7340
jmp 0x1708d
movq -0x4e8(%rbp), %rdi
leaq -0x370(%rbp), %rsi
callq 0xc590
jmp 0x170a2
leaq -0x2d0(%rbp), %rax
movq %rax, -0x4f8(%rbp)
movq %rax, -0x328(%rbp)
leaq -0x399(%rbp), %rdi
movq %rdi, -0x4f0(%rbp)
callq 0x33e0
movq -0x4f0(%rbp), %rdx
leaq 0x2153(%rip), %rsi      # 0x1922b
leaq -0x398(%rbp), %rdi
callq 0x7340
jmp 0x170e6
movq -0x4f8(%rbp), %rdi
leaq -0x398(%rbp), %rsi
callq 0xc590
jmp 0x170fb
leaq -0x2a8(%rbp), %rax
movq %rax, -0x508(%rbp)
movq %rax, -0x328(%rbp)
leaq -0x3c1(%rbp), %rdi
movq %rdi, -0x500(%rbp)
callq 0x33e0
movq -0x500(%rbp), %rdx
leaq 0x212b(%rip), %rsi      # 0x1925c
leaq -0x3c0(%rbp), %rdi
callq 0x7340
jmp 0x1713f
movq -0x508(%rbp), %rdi
leaq -0x3c0(%rbp), %rsi
callq 0xc590
jmp 0x17154
leaq -0x280(%rbp), %rax
movq %rax, -0x518(%rbp)
movq %rax, -0x328(%rbp)
leaq -0x3e9(%rbp), %rdi
movq %rdi, -0x510(%rbp)
callq 0x33e0
movq -0x510(%rbp), %rdx
leaq 0x2101(%rip), %rsi      # 0x1928b
leaq -0x3e8(%rbp), %rdi
callq 0x7340
jmp 0x17198
movq -0x518(%rbp), %rdi
leaq -0x3e8(%rbp), %rsi
callq 0xc590
jmp 0x171ad
leaq -0x258(%rbp), %rax
movq %rax, -0x528(%rbp)
movq %rax, -0x328(%rbp)
leaq -0x411(%rbp), %rdi
movq %rdi, -0x520(%rbp)
callq 0x33e0
movq -0x520(%rbp), %rdx
leaq 0x20e3(%rip), %rsi      # 0x192c6
leaq -0x410(%rbp), %rdi
callq 0x7340
jmp 0x171f1
movq -0x528(%rbp), %rdi
leaq -0x410(%rbp), %rsi
callq 0xc590
jmp 0x17206
movq -0x430(%rbp), %rdi
movb $0x0, -0x412(%rbp)
leaq -0x320(%rbp), %rax
movq %rax, -0x230(%rbp)
movq $0x6, -0x228(%rbp)
movq -0x230(%rbp), %rsi
movq -0x228(%rbp), %rdx
callq 0x15ef0
jmp 0x17242
leaq -0x320(%rbp), %rax
movq %rax, -0x538(%rbp)
addq $0xf0, %rax
movq %rax, -0x530(%rbp)
movq -0x530(%rbp), %rdi
addq $-0x28, %rdi
movq %rdi, -0x540(%rbp)
callq 0xc990
movq -0x538(%rbp), %rcx
movq -0x540(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x530(%rbp)
jne 0x1725d
leaq -0x410(%rbp), %rdi
callq 0x3190
leaq -0x411(%rbp), %rdi
callq 0x3270
leaq -0x3e8(%rbp), %rdi
callq 0x3190
leaq -0x3e9(%rbp), %rdi
callq 0x3270
leaq -0x3c0(%rbp), %rdi
callq 0x3190
leaq -0x3c1(%rbp), %rdi
callq 0x3270
leaq -0x398(%rbp), %rdi
callq 0x3190
leaq -0x399(%rbp), %rdi
callq 0x3270
leaq -0x370(%rbp), %rdi
callq 0x3190
leaq -0x371(%rbp), %rdi
callq 0x3270
leaq -0x348(%rbp), %rdi
callq 0x3190
leaq -0x349(%rbp), %rdi
callq 0x3270
movq -0x430(%rbp), %rdi
callq 0x168d0
jmp 0x1732c
jmp 0x17560
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
jmp 0x174d5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
jmp 0x174c9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
jmp 0x174bd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
jmp 0x174b1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
jmp 0x174a5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
jmp 0x17499
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
jmp 0x1748d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
jmp 0x17481
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
jmp 0x17475
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
jmp 0x17469
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
jmp 0x1745d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
jmp 0x17451
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
leaq -0x320(%rbp), %rax
movq %rax, -0x550(%rbp)
addq $0xf0, %rax
movq %rax, -0x548(%rbp)
movq -0x548(%rbp), %rdi
addq $-0x28, %rdi
movq %rdi, -0x558(%rbp)
callq 0xc990
movq -0x550(%rbp), %rcx
movq -0x558(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x548(%rbp)
jne 0x1741e
jmp 0x17451
leaq -0x410(%rbp), %rdi
callq 0x3190
leaq -0x411(%rbp), %rdi
callq 0x3270
leaq -0x3e8(%rbp), %rdi
callq 0x3190
leaq -0x3e9(%rbp), %rdi
callq 0x3270
leaq -0x3c0(%rbp), %rdi
callq 0x3190
leaq -0x3c1(%rbp), %rdi
callq 0x3270
leaq -0x398(%rbp), %rdi
callq 0x3190
leaq -0x399(%rbp), %rdi
callq 0x3270
leaq -0x370(%rbp), %rdi
callq 0x3190
leaq -0x371(%rbp), %rdi
callq 0x3270
leaq -0x348(%rbp), %rdi
callq 0x3190
leaq -0x349(%rbp), %rdi
callq 0x3270
testb $0x1, -0x412(%rbp)
jne 0x174ec
jmp 0x17539
movq -0x328(%rbp), %rax
leaq -0x320(%rbp), %rcx
cmpq %rax, %rcx
movq %rax, -0x560(%rbp)
je 0x17537
movq -0x560(%rbp), %rdi
addq $-0x28, %rdi
movq %rdi, -0x568(%rbp)
callq 0xc990
movq -0x568(%rbp), %rax
leaq -0x320(%rbp), %rcx
cmpq %rcx, %rax
movq %rax, -0x560(%rbp)
jne 0x17506
jmp 0x17539
jmp 0x1756b
movl $0x4, %edi
callq 0x3140
movq %rax, %rdi
movl $0x3, (%rdi)
leaq 0x92e3(%rip), %rsi      # 0x20838
xorl %eax, %eax
movl %eax, %edx
callq 0x33a0
jmp 0x17598
jmp 0x17562
addq $0x570, %rsp            # imm = 0x570
popq %rbp
retq
movq -0x438(%rbp), %rdi
callq 0x72e0
movq -0x420(%rbp), %rdi
callq 0x3190
movq -0x428(%rbp), %rdi
callq 0xf660
movq -0x20(%rbp), %rdi
callq 0x33d0
nopl (%rax,%rax)