// File: /workspace/github_cpp_makefile_star2_O2/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
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x1c8, %rsp            # imm = 0x1C8
movq %rdx, %r15
movq %rdi, %rbx
andq $0x0, 0x10(%rdi)
xorps %xmm0, %xmm0
movups %xmm0, (%rdi)
movq %rsi, 0x18(%rdi)
leaq 0x20(%rdi), %r14
movq %r14, %rdi
movq %rdx, %rsi
callq 0x31f0
xorps %xmm0, %xmm0
movups %xmm0, 0x40(%rbx)
andq $0x0, 0x50(%rbx)
leaq 0x2147(%rip), %rsi      # 0xc2e2
movq %r15, %rdi
callq 0x3080
testl %eax, %eax
je 0xa2ff
leaq 0x2136(%rip), %rsi      # 0xc2e8
movq %r15, %rdi
callq 0x3080
testl %eax, %eax
jne 0xa493
leaq 0x1ff9(%rip), %rsi      # 0xc1c2
leaq -0xf8(%rbp), %rdi
leaq -0x36(%rbp), %rdx
callq 0x4d30
leaq -0x1e8(%rbp), %r13
leaq -0xf8(%rbp), %rsi
movq %r13, %rdi
callq 0x6840
leaq -0x1c0(%rbp), %r12
leaq 0x1ff4(%rip), %rsi      # 0xc1f1
leaq -0xd8(%rbp), %rdi
leaq -0x35(%rbp), %rdx
callq 0x4d30
leaq -0xd8(%rbp), %rsi
movq %r12, %rdi
callq 0x6840
leaq -0x198(%rbp), %r12
leaq 0x2001(%rip), %rsi      # 0xc22b
leaq -0xb8(%rbp), %rdi
leaq -0x34(%rbp), %rdx
callq 0x4d30
leaq -0xb8(%rbp), %rsi
movq %r12, %rdi
callq 0x6840
leaq -0x170(%rbp), %r12
leaq 0x2005(%rip), %rsi      # 0xc25c
leaq -0x98(%rbp), %rdi
leaq -0x33(%rbp), %rdx
callq 0x4d30
leaq -0x98(%rbp), %rsi
movq %r12, %rdi
callq 0x6840
leaq -0x148(%rbp), %r12
leaq 0x2007(%rip), %rsi      # 0xc28b
leaq -0x78(%rbp), %rdi
leaq -0x32(%rbp), %rdx
callq 0x4d30
leaq -0x78(%rbp), %rsi
movq %r12, %rdi
callq 0x6840
leaq -0x120(%rbp), %r12
leaq 0x201b(%rip), %rsi      # 0xc2c6
leaq -0x58(%rbp), %rdi
leaq -0x31(%rbp), %rdx
callq 0x4d30
leaq -0x58(%rbp), %rsi
movq %r12, %rdi
callq 0x6840
leaq -0xf8(%rbp), %rdx
leaq -0x1e8(%rbp), %rsi
movq %rbx, %rdi
callq 0x9e80
movl $0xc8, %r15d
leaq (%r15,%rbp), %rdi
addq $-0x1e8, %rdi           # imm = 0xFE18
callq 0x6ab4
addq $-0x28, %r15
cmpq $-0x28, %r15
jne 0xa2e0
jmp 0xa437
leaq 0x1ebc(%rip), %rsi      # 0xc1c2
leaq -0xf8(%rbp), %rdi
leaq -0x36(%rbp), %rdx
callq 0x4d30
leaq -0x1e8(%rbp), %r13
leaq -0xf8(%rbp), %rsi
movq %r13, %rdi
callq 0x6840
leaq -0x1c0(%rbp), %r12
leaq 0x1ec3(%rip), %rsi      # 0xc1fd
leaq -0xd8(%rbp), %rdi
leaq -0x35(%rbp), %rdx
callq 0x4d30
leaq -0xd8(%rbp), %rsi
movq %r12, %rdi
callq 0x6840
leaq -0x198(%rbp), %r12
leaq 0x1ec4(%rip), %rsi      # 0xc22b
leaq -0xb8(%rbp), %rdi
leaq -0x34(%rbp), %rdx
callq 0x4d30
leaq -0xb8(%rbp), %rsi
movq %r12, %rdi
callq 0x6840
leaq -0x170(%rbp), %r12
leaq 0x1ec8(%rip), %rsi      # 0xc25c
leaq -0x98(%rbp), %rdi
leaq -0x33(%rbp), %rdx
callq 0x4d30
leaq -0x98(%rbp), %rsi
movq %r12, %rdi
callq 0x6840
leaq -0x148(%rbp), %r12
leaq 0x1ed6(%rip), %rsi      # 0xc297
leaq -0x78(%rbp), %rdi
leaq -0x32(%rbp), %rdx
callq 0x4d30
leaq -0x78(%rbp), %rsi
movq %r12, %rdi
callq 0x6840
leaq -0x120(%rbp), %r12
leaq 0x1eec(%rip), %rsi      # 0xc2d4
leaq -0x58(%rbp), %rdi
leaq -0x31(%rbp), %rdx
callq 0x4d30
leaq -0x58(%rbp), %rsi
movq %r12, %rdi
callq 0x6840
leaq -0xf8(%rbp), %rdx
leaq -0x1e8(%rbp), %rsi
movq %rbx, %rdi
callq 0x9e80
movl $0xc8, %r15d
leaq (%r15,%rbp), %rdi
addq $-0x1e8, %rdi           # imm = 0xFE18
callq 0x6ab4
addq $-0x28, %r15
cmpq $-0x28, %r15
jne 0xa41d
leaq -0x58(%rbp), %rdi
callq 0x30d0
leaq -0x78(%rbp), %rdi
callq 0x30d0
leaq -0x98(%rbp), %rdi
callq 0x30d0
leaq -0xb8(%rbp), %rdi
callq 0x30d0
leaq -0xd8(%rbp), %rdi
callq 0x30d0
leaq -0xf8(%rbp), %rdi
callq 0x30d0
movq %rbx, %rdi
callq 0xa0ac
addq $0x1c8, %rsp            # imm = 0x1C8
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
pushq $0x4
popq %rdi
callq 0x30f0
movl $0x3, (%rax)
leaq 0x73d0(%rip), %rsi      # 0x11878
movq %rax, %rdi
xorl %edx, %edx
callq 0x3290
movq %rax, -0x30(%rbp)
movl $0xc8, %r15d
leaq (%r15,%rbp), %rdi
addq $-0x1e8, %rdi           # imm = 0xFE18
callq 0x6ab4
addq $-0x28, %r15
cmpq $-0x28, %r15
jne 0xa4bc
movb $0x1, %r15b
jmp 0xa4e2
movq %rax, -0x30(%rbp)
xorl %r15d, %r15d
leaq -0x58(%rbp), %rdi
callq 0x30d0
jmp 0xa4f6
jmp 0xa4ef
movq %rax, -0x30(%rbp)
xorl %r15d, %r15d
leaq -0x78(%rbp), %rdi
callq 0x30d0
jmp 0xa50a
jmp 0xa503
movq %rax, -0x30(%rbp)
xorl %r15d, %r15d
leaq -0x98(%rbp), %rdi
callq 0x30d0
jmp 0xa521
jmp 0xa51a
movq %rax, -0x30(%rbp)
xorl %r15d, %r15d
leaq -0xb8(%rbp), %rdi
callq 0x30d0
jmp 0xa538
jmp 0xa531
movq %rax, -0x30(%rbp)
xorl %r15d, %r15d
leaq -0xd8(%rbp), %rdi
callq 0x30d0
leaq -0xf8(%rbp), %rdi
callq 0x30d0
cmpq %r12, %r13
sete %al
testb %r15b, %r15b
jne 0xa686
testb %al, %al
jne 0xa686
leaq -0x1e8(%rbp), %r15
addq $-0x28, %r12
movq %r12, %rdi
callq 0x6ab4
cmpq %r15, %r12
jne 0xa56e
jmp 0xa686
movq %rax, -0x30(%rbp)
xorl %r15d, %r15d
jmp 0xa544
movq %rax, -0x30(%rbp)
xorl %r15d, %r15d
movq %r13, %r12
jmp 0xa544
jmp 0xa682
movq %rax, -0x30(%rbp)
movl $0xc8, %r15d
leaq (%r15,%rbp), %rdi
addq $-0x1e8, %rdi           # imm = 0xFE18
callq 0x6ab4
addq $-0x28, %r15
cmpq $-0x28, %r15
jne 0xa5a8
movb $0x1, %r15b
jmp 0xa5ce
movq %rax, -0x30(%rbp)
xorl %r15d, %r15d
leaq -0x58(%rbp), %rdi
callq 0x30d0
jmp 0xa5e2
jmp 0xa5db
movq %rax, -0x30(%rbp)
xorl %r15d, %r15d
leaq -0x78(%rbp), %rdi
callq 0x30d0
jmp 0xa5f6
jmp 0xa5ef
movq %rax, -0x30(%rbp)
xorl %r15d, %r15d
leaq -0x98(%rbp), %rdi
callq 0x30d0
jmp 0xa60d
jmp 0xa606
movq %rax, -0x30(%rbp)
xorl %r15d, %r15d
leaq -0xb8(%rbp), %rdi
callq 0x30d0
jmp 0xa624
jmp 0xa61d
movq %rax, -0x30(%rbp)
xorl %r15d, %r15d
leaq -0xd8(%rbp), %rdi
callq 0x30d0
leaq -0xf8(%rbp), %rdi
callq 0x30d0
cmpq %r12, %r13
sete %al
testb %r15b, %r15b
jne 0xa686
testb %al, %al
jne 0xa686
leaq -0x1e8(%rbp), %r15
addq $-0x28, %r12
movq %r12, %rdi
callq 0x6ab4
cmpq %r15, %r12
jne 0xa652
jmp 0xa686
movq %rax, -0x30(%rbp)
xorl %r15d, %r15d
jmp 0xa630
movq %rax, -0x30(%rbp)
xorl %r15d, %r15d
movq %r13, %r12
jmp 0xa630
jmp 0xa682
movq %rax, -0x30(%rbp)
jmp 0xa697
movq %rax, -0x30(%rbp)
leaq 0x40(%rbx), %rdi
callq 0x4d7a
movq %r14, %rdi
callq 0x30d0
movq %rbx, %rdi
callq 0x7d02
movq -0x30(%rbp), %rdi
callq 0x32b0