// File: /workspace/github_cpp_makefile_star2_O3/Wombozo[P]harmony/src/Triad.cpp
// Function: Triad::Triad(Note*, std::vector<Interval, std::allocator<Interval>>)
Triad::Triad(Note *n, std::vector<Interval> ints) : root(n), bass(n), inversion(0)
{
    std::string str;
    if (ints.size() < 2)
        throw E_CHORD_UNKNOWN;
    
    intervals = {ints.at(0), ints.at(1)};
    if (!ints.at(0).getName().compare("major third") && !ints.at(1).getName().compare("perfect fifth"))
    {
        str = triads[0];
    }
    else if (!ints.at(0).getName().compare("minor third") && !ints.at(1).getName().compare("perfect fifth"))
    {
        str = triads[1];
    }
    else if (!ints.at(0).getName().compare("major third") && !ints.at(1).getName().compare("augmtented fifth"))
    {
        str = triads[2];
    }
    else if (!ints.at(0).getName().compare("minor third") && !ints.at(1).getName().compare("diminished fifth"))
    {
        str = triads[3];
    }
    else if (!ints.at(0).getName().compare("perfect fourth") && !ints.at(1).getName().compare("perfect fifth"))
    {
        str = triads[4];
    }
    else if (!ints.at(0).getName().compare("major second") && !ints.at(1).getName().compare("perfect fifth"))
    {
        str = triads[5];
    }
    else if (!ints.at(0).getName().compare("major third") && !ints.at(1).getName().compare("diminished fifth"))
    {
        str = triads[6];
    }
    else if (!ints.at(0).getName().compare("minor third") && !ints.at(1).getName().compare("augmented fifth"))
    {
        str = triads[7];
    }
    else
        throw E_CHORD_UNKNOWN;
    _setNotes(this, &ints);
    name = n->display() + str;
    typeName = str;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0xb8, %rsp
movq %rdi, %r15
movq %rsi, (%rdi)
movq %rsi, 0x8(%rdi)
leaq 0x10(%rdi), %rax
movq %rax, -0xb8(%rbp)
leaq 0x20(%rdi), %rax
movq %rax, -0xa8(%rbp)
movq %rax, 0x10(%rdi)
xorl %eax, %eax
movq %rax, 0x18(%rdi)
movb %al, 0x20(%rdi)
leaq 0x30(%rdi), %rcx
movq %rcx, -0xb0(%rbp)
leaq 0x40(%rdi), %rcx
movq %rcx, -0xa0(%rbp)
movq %rcx, 0x30(%rdi)
movq %rax, 0x38(%rdi)
movb %al, 0x40(%rdi)
movl $0x0, 0x50(%rdi)
leaq 0x58(%rdi), %r12
xorps %xmm0, %xmm0
movups %xmm0, 0x58(%rdi)
movups %xmm0, 0x68(%rdi)
movups %xmm0, 0x78(%rdi)
leaq -0xc8(%rbp), %rcx
movq %rcx, -0x10(%rcx)
movq %rax, -0x8(%rcx)
movb %al, (%rcx)
movq (%rdx), %r14
movq 0x8(%rdx), %rax
subq %r14, %rax
sarq $0x3, %rax
movabsq $-0x3333333333333333, %rcx # imm = 0xCCCCCCCCCCCCCCCD
imulq %rcx, %rax
cmpq $0x2, %rax
movq %r12, -0xe0(%rbp)
jb 0xb375
movq %rdx, %rbx
movq %rsi, %r13
leaq -0x88(%rbp), %rax
movq %rax, -0x10(%rax)
movq (%r14), %rsi
movq 0x8(%r14), %rdx
addq %rsi, %rdx
leaq -0x98(%rbp), %rdi
callq 0x663a
movq 0x20(%r14), %rax
movq %rax, -0x78(%rbp)
movq (%rbx), %r14
movq 0x8(%rbx), %rdx
subq %r14, %rdx
sarq $0x3, %rdx
movabsq $-0x3333333333333333, %rax # imm = 0xCCCCCCCCCCCCCCCD
imulq %rax, %rdx
cmpq $0x1, %rdx
jbe 0xb396
leaq -0x70(%rbp), %rdi
leaq -0x60(%rbp), %rax
movq %rax, -0x10(%rax)
movq 0x28(%r14), %rsi
movq 0x30(%r14), %rdx
addq %rsi, %rdx
callq 0x663a
movq 0x48(%r14), %rax
leaq -0x48(%rbp), %rdx
movq %rax, -0x8(%rdx)
leaq -0x98(%rbp), %rsi
movq %r12, %rdi
callq 0xb9c6
movl $0x28, %r14d
leaq (%r14,%rbp), %rdi
addq $-0x98, %rdi
callq 0x780a
addq $-0x28, %r14
cmpq $-0x28, %r14
jne 0xabe6
movq (%rbx), %rsi
cmpq %rsi, 0x8(%rbx)
je 0xb3a9
leaq -0x98(%rbp), %rdi
callq 0x782c
leaq -0x88(%rbp), %r14
leaq 0x35ac(%rip), %rsi      # 0xe1d3
leaq -0x98(%rbp), %rdi
callq 0x3070
testl %eax, %eax
je 0xac3c
xorl %r12d, %r12d
jmp 0xaca7
movq (%rbx), %rsi
movq 0x8(%rbx), %rdx
subq %rsi, %rdx
sarq $0x3, %rdx
movabsq $-0x3333333333333333, %rax # imm = 0xCCCCCCCCCCCCCCCD
imulq %rax, %rdx
cmpq $0x1, %rdx
jbe 0xb3cd
addq $0x28, %rsi
leaq -0x48(%rbp), %rdi
callq 0x782c
leaq 0x35bc(%rip), %rsi      # 0xe232
leaq -0x48(%rbp), %r14
movq %r14, %rdi
callq 0x3070
testl %eax, %eax
sete %r12b
movq (%r14), %rdi
leaq -0x38(%rbp), %rax
cmpq %rax, %rdi
je 0xaca0
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x3190
leaq -0x88(%rbp), %r14
movq -0x98(%rbp), %rdi
cmpq %r14, %rdi
je 0xacc2
movq -0x88(%rbp), %rsi
incq %rsi
callq 0x3190
testb %r12b, %r12b
je 0xacd3
leaq 0x8782(%rip), %rsi      # 0x13450
jmp 0xb266
movq (%rbx), %rsi
cmpq %rsi, 0x8(%rbx)
je 0xb3bb
leaq -0x98(%rbp), %rdi
callq 0x782c
leaq 0x34d4(%rip), %rsi      # 0xe1c7
leaq -0x98(%rbp), %rdi
callq 0x3070
testl %eax, %eax
je 0xad08
xorl %r12d, %r12d
jmp 0xad73
movq (%rbx), %rsi
movq 0x8(%rbx), %rdx
subq %rsi, %rdx
sarq $0x3, %rdx
movabsq $-0x3333333333333333, %rax # imm = 0xCCCCCCCCCCCCCCCD
imulq %rax, %rdx
cmpq $0x1, %rdx
jbe 0xb3f2
addq $0x28, %rsi
leaq -0x48(%rbp), %rdi
callq 0x782c
leaq 0x34f0(%rip), %rsi      # 0xe232
leaq -0x48(%rbp), %r14
movq %r14, %rdi
callq 0x3070
testl %eax, %eax
sete %r12b
movq (%r14), %rdi
leaq -0x38(%rbp), %rax
cmpq %rax, %rdi
je 0xad6c
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x3190
leaq -0x88(%rbp), %r14
movq -0x98(%rbp), %rdi
cmpq %r14, %rdi
je 0xad8e
movq -0x88(%rbp), %rsi
incq %rsi
callq 0x3190
testb %r12b, %r12b
je 0xad9f
leaq 0x86d6(%rip), %rsi      # 0x13470
jmp 0xb266
movq (%rbx), %rsi
cmpq %rsi, 0x8(%rbx)
je 0xb3e0
leaq -0x98(%rbp), %rdi
callq 0x782c
leaq 0x3414(%rip), %rsi      # 0xe1d3
leaq -0x98(%rbp), %rdi
callq 0x3070
testl %eax, %eax
je 0xadd4
xorl %r12d, %r12d
jmp 0xae3f
movq (%rbx), %rsi
movq 0x8(%rbx), %rdx
subq %rsi, %rdx
sarq $0x3, %rdx
movabsq $-0x3333333333333333, %rax # imm = 0xCCCCCCCCCCCCCCCD
imulq %rax, %rdx
cmpq $0x1, %rdx
jbe 0xb417
addq $0x28, %rsi
leaq -0x48(%rbp), %rdi
callq 0x782c
leaq 0x366e(%rip), %rsi      # 0xe47c
leaq -0x48(%rbp), %r14
movq %r14, %rdi
callq 0x3070
testl %eax, %eax
sete %r12b
movq (%r14), %rdi
leaq -0x38(%rbp), %rax
cmpq %rax, %rdi
je 0xae38
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x3190
leaq -0x88(%rbp), %r14
movq -0x98(%rbp), %rdi
cmpq %r14, %rdi
je 0xae5a
movq -0x88(%rbp), %rsi
incq %rsi
callq 0x3190
testb %r12b, %r12b
je 0xae6b
leaq 0x862a(%rip), %rsi      # 0x13490
jmp 0xb266
movq (%rbx), %rsi
cmpq %rsi, 0x8(%rbx)
je 0xb405
leaq -0x98(%rbp), %rdi
callq 0x782c
leaq 0x333c(%rip), %rsi      # 0xe1c7
leaq -0x98(%rbp), %rdi
callq 0x3070
testl %eax, %eax
je 0xaea0
xorl %r12d, %r12d
jmp 0xaf0b
movq (%rbx), %rsi
movq 0x8(%rbx), %rdx
subq %rsi, %rdx
sarq $0x3, %rdx
movabsq $-0x3333333333333333, %rax # imm = 0xCCCCCCCCCCCCCCCD
imulq %rax, %rdx
cmpq $0x1, %rdx
jbe 0xb43c
addq $0x28, %rsi
leaq -0x48(%rbp), %rdi
callq 0x782c
leaq 0x3347(%rip), %rsi      # 0xe221
leaq -0x48(%rbp), %r14
movq %r14, %rdi
callq 0x3070
testl %eax, %eax
sete %r12b
movq (%r14), %rdi
leaq -0x38(%rbp), %rax
cmpq %rax, %rdi
je 0xaf04
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x3190
leaq -0x88(%rbp), %r14
movq -0x98(%rbp), %rdi
cmpq %r14, %rdi
je 0xaf26
movq -0x88(%rbp), %rsi
incq %rsi
callq 0x3190
testb %r12b, %r12b
je 0xaf37
leaq 0x857e(%rip), %rsi      # 0x134b0
jmp 0xb266
movq (%rbx), %rsi
cmpq %rsi, 0x8(%rbx)
je 0xb42a
leaq -0x98(%rbp), %rdi
callq 0x782c
leaq 0x32aa(%rip), %rsi      # 0xe201
leaq -0x98(%rbp), %rdi
callq 0x3070
testl %eax, %eax
je 0xaf6c
xorl %r12d, %r12d
jmp 0xafd7
movq (%rbx), %rsi
movq 0x8(%rbx), %rdx
subq %rsi, %rdx
sarq $0x3, %rdx
movabsq $-0x3333333333333333, %rax # imm = 0xCCCCCCCCCCCCCCCD
imulq %rax, %rdx
cmpq $0x1, %rdx
jbe 0xb461
addq $0x28, %rsi
leaq -0x48(%rbp), %rdi
callq 0x782c
leaq 0x328c(%rip), %rsi      # 0xe232
leaq -0x48(%rbp), %r14
movq %r14, %rdi
callq 0x3070
testl %eax, %eax
sete %r12b
movq (%r14), %rdi
leaq -0x38(%rbp), %rax
cmpq %rax, %rdi
je 0xafd0
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x3190
leaq -0x88(%rbp), %r14
movq -0x98(%rbp), %rdi
cmpq %r14, %rdi
je 0xaff2
movq -0x88(%rbp), %rsi
incq %rsi
callq 0x3190
testb %r12b, %r12b
je 0xb003
leaq 0x84d2(%rip), %rsi      # 0x134d0
jmp 0xb266
movq (%rbx), %rsi
cmpq %rsi, 0x8(%rbx)
je 0xb44f
leaq -0x98(%rbp), %rdi
callq 0x782c
leaq 0x3175(%rip), %rsi      # 0xe198
leaq -0x98(%rbp), %rdi
callq 0x3070
testl %eax, %eax
je 0xb038
xorl %r12d, %r12d
jmp 0xb0a3
movq (%rbx), %rsi
movq 0x8(%rbx), %rdx
subq %rsi, %rdx
sarq $0x3, %rdx
movabsq $-0x3333333333333333, %rax # imm = 0xCCCCCCCCCCCCCCCD
imulq %rax, %rdx
cmpq $0x1, %rdx
jbe 0xb486
addq $0x28, %rsi
leaq -0x48(%rbp), %rdi
callq 0x782c
leaq 0x31c0(%rip), %rsi      # 0xe232
leaq -0x48(%rbp), %r14
movq %r14, %rdi
callq 0x3070
testl %eax, %eax
sete %r12b
movq (%r14), %rdi
leaq -0x38(%rbp), %rax
cmpq %rax, %rdi
je 0xb09c
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x3190
leaq -0x88(%rbp), %r14
movq -0x98(%rbp), %rdi
cmpq %r14, %rdi
je 0xb0be
movq -0x88(%rbp), %rsi
incq %rsi
callq 0x3190
testb %r12b, %r12b
je 0xb0cf
leaq 0x8426(%rip), %rsi      # 0x134f0
jmp 0xb266
movq (%rbx), %rsi
cmpq %rsi, 0x8(%rbx)
je 0xb474
leaq -0x98(%rbp), %rdi
callq 0x782c
leaq 0x30e4(%rip), %rsi      # 0xe1d3
leaq -0x98(%rbp), %rdi
callq 0x3070
testl %eax, %eax
je 0xb104
xorl %r12d, %r12d
jmp 0xb16f
movq (%rbx), %rsi
movq 0x8(%rbx), %rdx
subq %rsi, %rdx
sarq $0x3, %rdx
movabsq $-0x3333333333333333, %rax # imm = 0xCCCCCCCCCCCCCCCD
imulq %rax, %rdx
cmpq $0x1, %rdx
jbe 0xb4ab
addq $0x28, %rsi
leaq -0x48(%rbp), %rdi
callq 0x782c
leaq 0x30e3(%rip), %rsi      # 0xe221
leaq -0x48(%rbp), %r14
movq %r14, %rdi
callq 0x3070
testl %eax, %eax
sete %r12b
movq (%r14), %rdi
leaq -0x38(%rbp), %rax
cmpq %rax, %rdi
je 0xb168
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x3190
leaq -0x88(%rbp), %r14
movq -0x98(%rbp), %rdi
cmpq %r14, %rdi
je 0xb18a
movq -0x88(%rbp), %rsi
incq %rsi
callq 0x3190
testb %r12b, %r12b
je 0xb19b
leaq 0x837a(%rip), %rsi      # 0x13510
jmp 0xb266
movq (%rbx), %rsi
cmpq %rsi, 0x8(%rbx)
je 0xb499
leaq -0x98(%rbp), %rdi
callq 0x782c
leaq 0x300c(%rip), %rsi      # 0xe1c7
leaq -0x98(%rbp), %rdi
callq 0x3070
testl %eax, %eax
je 0xb1d0
xorl %r12d, %r12d
jmp 0xb23b
movq (%rbx), %rsi
movq 0x8(%rbx), %rdx
subq %rsi, %rdx
sarq $0x3, %rdx
movabsq $-0x3333333333333333, %rax # imm = 0xCCCCCCCCCCCCCCCD
imulq %rax, %rdx
cmpq $0x1, %rdx
jbe 0xb4be
addq $0x28, %rsi
leaq -0x48(%rbp), %rdi
callq 0x782c
leaq 0x3036(%rip), %rsi      # 0xe240
leaq -0x48(%rbp), %r14
movq %r14, %rdi
callq 0x3070
testl %eax, %eax
sete %r12b
movq (%r14), %rdi
leaq -0x38(%rbp), %rax
cmpq %rax, %rdi
je 0xb234
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x3190
leaq -0x88(%rbp), %r14
movq -0x98(%rbp), %rdi
cmpq %r14, %rdi
je 0xb256
movq -0x88(%rbp), %rsi
incq %rsi
callq 0x3190
testb %r12b, %r12b
je 0xb375
leaq 0x82ca(%rip), %rsi      # 0x13530
leaq -0xd8(%rbp), %rdi
callq 0x30f0
movq %r15, %rdi
movq %rbx, %rsi
callq 0xb60d
movq (%r13), %rax
leaq -0x48(%rbp), %rdi
movq %r13, %rsi
callq *(%rax)
movq -0xd8(%rbp), %rsi
movq -0xd0(%rbp), %rdx
leaq -0x48(%rbp), %rdi
callq 0x3080
movq %r14, -0x98(%rbp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0xb2ca
movq %rdx, -0x98(%rbp)
movq (%rcx), %rdx
movq %rdx, -0x88(%rbp)
jmp 0xb2d1
movups (%rcx), %xmm0
movups %xmm0, (%r14)
movq 0x8(%rax), %rdx
leaq -0x98(%rbp), %rbx
movq %rdx, 0x8(%rbx)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq -0xb8(%rbp), %rdi
movq %rbx, %rsi
callq 0x31d0
movq (%rbx), %rdi
cmpq %r14, %rdi
je 0xb315
movq -0x88(%rbp), %rsi
incq %rsi
callq 0x3190
leaq -0x38(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xb32e
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x3190
leaq -0xd8(%rbp), %rsi
movq -0xb0(%rbp), %rdi
callq 0x30f0
movq -0xd8(%rbp), %rdi
leaq -0xc8(%rbp), %rax
cmpq %rax, %rdi
je 0xb363
movq -0xc8(%rbp), %rsi
incq %rsi
callq 0x3190
addq $0xb8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movl $0x4, %edi
callq 0x30d0
movl $0x1, (%rax)
leaq 0x74ec(%rip), %rsi      # 0x12878
movq %rax, %rdi
xorl %edx, %edx
callq 0x3290
leaq 0x2f51(%rip), %rdi      # 0xe2ee
movl $0x1, %esi
xorl %eax, %eax
callq 0x3210
leaq 0x2f3e(%rip), %rdi      # 0xe2ee
xorl %esi, %esi
xorl %edx, %edx
xorl %eax, %eax
callq 0x3210
leaq 0x2f2c(%rip), %rdi      # 0xe2ee
xorl %esi, %esi
xorl %edx, %edx
xorl %eax, %eax
callq 0x3210
leaq 0x2f1a(%rip), %rdi      # 0xe2ee
movl $0x1, %esi
xorl %eax, %eax
callq 0x3210
leaq 0x2f07(%rip), %rdi      # 0xe2ee
xorl %esi, %esi
xorl %edx, %edx
xorl %eax, %eax
callq 0x3210
leaq 0x2ef5(%rip), %rdi      # 0xe2ee
movl $0x1, %esi
xorl %eax, %eax
callq 0x3210
leaq 0x2ee2(%rip), %rdi      # 0xe2ee
xorl %esi, %esi
xorl %edx, %edx
xorl %eax, %eax
callq 0x3210
leaq 0x2ed0(%rip), %rdi      # 0xe2ee
movl $0x1, %esi
xorl %eax, %eax
callq 0x3210
leaq 0x2ebd(%rip), %rdi      # 0xe2ee
xorl %esi, %esi
xorl %edx, %edx
xorl %eax, %eax
callq 0x3210
leaq 0x2eab(%rip), %rdi      # 0xe2ee
movl $0x1, %esi
xorl %eax, %eax
callq 0x3210
leaq 0x2e98(%rip), %rdi      # 0xe2ee
xorl %esi, %esi
xorl %edx, %edx
xorl %eax, %eax
callq 0x3210
leaq 0x2e86(%rip), %rdi      # 0xe2ee
movl $0x1, %esi
xorl %eax, %eax
callq 0x3210
leaq 0x2e73(%rip), %rdi      # 0xe2ee
xorl %esi, %esi
xorl %edx, %edx
xorl %eax, %eax
callq 0x3210
leaq 0x2e61(%rip), %rdi      # 0xe2ee
movl $0x1, %esi
xorl %eax, %eax
callq 0x3210
leaq 0x2e4e(%rip), %rdi      # 0xe2ee
xorl %esi, %esi
xorl %edx, %edx
xorl %eax, %eax
callq 0x3210
leaq 0x2e3c(%rip), %rdi      # 0xe2ee
movl $0x1, %esi
xorl %eax, %eax
callq 0x3210
leaq 0x2e29(%rip), %rdi      # 0xe2ee
movl $0x1, %esi
xorl %eax, %eax
callq 0x3210
jmp 0xb4f7
jmp 0xb4f7
jmp 0xb572
jmp 0xb4f7
jmp 0xb572
jmp 0xb4f7
jmp 0xb572
jmp 0xb4f7
jmp 0xb572
jmp 0xb4f7
jmp 0xb572
jmp 0xb4f7
jmp 0xb572
movq %rax, %rbx
movq -0x98(%rbp), %rdi
leaq -0x88(%rbp), %rax
cmpq %rax, %rdi
je 0xb575
movq -0x88(%rbp), %rsi
jmp 0xb52a
movq %rax, %rbx
leaq -0x38(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xb575
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x3190
jmp 0xb575
jmp 0xb572
jmp 0xb572
movq %rax, %rbx
movl $0x28, %r14d
leaq (%r14,%rbp), %rdi
addq $-0x98, %rdi
callq 0x780a
addq $-0x28, %r14
cmpq $-0x28, %r14
jne 0xb541
jmp 0xb575
jmp 0xb572
jmp 0xb572
movq %rax, %rbx
leaq -0x98(%rbp), %rdi
callq 0x780a
jmp 0xb575
movq %rax, %rbx
movq -0xd8(%rbp), %rdi
leaq -0xc8(%rbp), %rax
cmpq %rax, %rdi
je 0xb597
movq -0xc8(%rbp), %rsi
incq %rsi
callq 0x3190
movq 0x70(%r15), %rdi
testq %rdi, %rdi
je 0xb5af
movq 0x80(%r15), %rsi
subq %rdi, %rsi
callq 0x3190
movq -0xe0(%rbp), %rdi
callq 0x9120
movq -0xb0(%rbp), %rax
movq (%rax), %rdi
cmpq -0xa0(%rbp), %rdi
je 0xb5e0
movq -0xa0(%rbp), %rax
movq (%rax), %rsi
incq %rsi
callq 0x3190
movq -0xb8(%rbp), %rax
movq (%rax), %rdi
cmpq -0xa8(%rbp), %rdi
je 0xb605
movq -0xa8(%rbp), %rax
movq (%rax), %rsi
incq %rsi
callq 0x3190
movq %rbx, %rdi
callq 0x32b0