// File: joao18araujo[P]pierluigi/src/scale.cpp
// Function: Scale::Scale(Note, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>)
Scale::Scale(Note note, string mode){
  this->base_note = note;
  this->mode = mode;
  if(mode == "major"){
    Interval m2 = Interval("m2");
    Interval M2 = Interval("M2");
    vector<Interval> intervals {M2, M2, m2, M2, M2, M2};
    fill_note_set(note, intervals);
  }else if(mode == "minor"){
    Interval m2 = Interval("m2");
    Interval M2 = Interval("M2");
    vector<Interval> intervals {M2, m2, M2, M2, m2, M2};
    fill_note_set(note, intervals);
  }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x610, %rsp            # imm = 0x610
movq %rsi, -0x540(%rbp)
movq %rdx, -0x538(%rbp)
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq -0x8(%rbp), %rdi
movq %rdi, -0x528(%rbp)
movq %rdi, %rax
movq %rax, -0x530(%rbp)
callq 0x27930
movq -0x528(%rbp), %rdi
addq $0x38, %rdi
movq %rdi, -0x520(%rbp)
callq 0x22dc0
jmp 0x269e8
movq -0x530(%rbp), %rdi
addq $0x90, %rdi
movq %rdi, -0x548(%rbp)
callq 0x6650
movq -0x530(%rbp), %rdi
movq -0x540(%rbp), %rsi
addq $0x38, %rdi
callq 0xfe00
jmp 0x26a1b
movq -0x538(%rbp), %rsi
movq -0x530(%rbp), %rdi
addq $0x90, %rdi
callq 0x6070
jmp 0x26a37
movq -0x538(%rbp), %rdi
leaq 0x39b5f(%rip), %rsi     # 0x605a4
callq 0xfff0
movb %al, -0x549(%rbp)
jmp 0x26a52
movb -0x549(%rbp), %al
testb $0x1, %al
jne 0x26a61
jmp 0x26e93
leaq -0x79(%rbp), %rdi
movq %rdi, -0x558(%rbp)
callq 0x6830
movq -0x558(%rbp), %rdx
leaq 0x39617(%rip), %rsi     # 0x60096
leaq -0x78(%rbp), %rdi
callq 0xfb20
jmp 0x26a8a
leaq -0x58(%rbp), %rdi
leaq -0x78(%rbp), %rsi
movl $0x1, %edx
callq 0x1bbe0
jmp 0x26a9e
leaq -0x78(%rbp), %rdi
callq 0x62d0
leaq -0x79(%rbp), %rdi
callq 0x64f0
leaq -0xd1(%rbp), %rdi
movq %rdi, -0x560(%rbp)
callq 0x6830
movq -0x560(%rbp), %rdx
leaq 0x395c8(%rip), %rsi     # 0x60099
leaq -0xd0(%rbp), %rdi
callq 0xfb20
jmp 0x26adf
leaq -0xb0(%rbp), %rdi
leaq -0xd0(%rbp), %rsi
movl $0x1, %edx
callq 0x1bbe0
jmp 0x26af9
leaq -0xd0(%rbp), %rdi
callq 0x62d0
leaq -0xd1(%rbp), %rdi
callq 0x64f0
leaq -0x220(%rbp), %rdi
movq %rdi, -0x228(%rbp)
leaq -0xb0(%rbp), %rsi
callq 0xfdb0
jmp 0x26b2d
leaq -0x1f0(%rbp), %rdi
movq %rdi, -0x228(%rbp)
leaq -0xb0(%rbp), %rsi
callq 0xfdb0
jmp 0x26b49
leaq -0x1c0(%rbp), %rdi
movq %rdi, -0x228(%rbp)
leaq -0x58(%rbp), %rsi
callq 0xfdb0
jmp 0x26b62
leaq -0x190(%rbp), %rdi
movq %rdi, -0x228(%rbp)
leaq -0xb0(%rbp), %rsi
callq 0xfdb0
jmp 0x26b7e
leaq -0x160(%rbp), %rdi
movq %rdi, -0x228(%rbp)
leaq -0xb0(%rbp), %rsi
callq 0xfdb0
jmp 0x26b9a
leaq -0x130(%rbp), %rdi
movq %rdi, -0x228(%rbp)
leaq -0xb0(%rbp), %rsi
callq 0xfdb0
jmp 0x26bb6
leaq -0x220(%rbp), %rax
movq %rax, -0x100(%rbp)
movq $0x6, -0xf8(%rbp)
leaq -0x229(%rbp), %rdi
movq %rdi, -0x568(%rbp)
callq 0xfbd0
movq -0x568(%rbp), %rcx
movq -0x100(%rbp), %rsi
movq -0xf8(%rbp), %rdx
leaq -0xf0(%rbp), %rdi
callq 0xfbf0
jmp 0x26c05
leaq -0x229(%rbp), %rdi
callq 0xfc70
leaq -0x220(%rbp), %rax
movq %rax, -0x578(%rbp)
addq $0x120, %rax            # imm = 0x120
movq %rax, -0x570(%rbp)
movq -0x570(%rbp), %rdi
addq $-0x30, %rdi
movq %rdi, -0x580(%rbp)
callq 0xfc90
movq -0x578(%rbp), %rcx
movq -0x580(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x570(%rbp)
jne 0x26c2c
movq -0x540(%rbp), %rsi
leaq -0x288(%rbp), %rdi
callq 0x22ce0
jmp 0x26c72
leaq -0x2a0(%rbp), %rdi
leaq -0xf0(%rbp), %rsi
callq 0x27990
jmp 0x26c87
movq -0x530(%rbp), %rdi
leaq -0x288(%rbp), %rsi
leaq -0x2a0(%rbp), %rdx
callq 0x27330
jmp 0x26ca3
leaq -0x2a0(%rbp), %rdi
callq 0x10050
leaq -0x288(%rbp), %rdi
callq 0xfd80
leaq -0xf0(%rbp), %rdi
callq 0x10050
leaq -0xb0(%rbp), %rdi
callq 0xfc90
leaq -0x58(%rbp), %rdi
callq 0xfc90
jmp 0x272ed
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
jmp 0x2730e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
jmp 0x272f6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
jmp 0x26d26
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
leaq -0x78(%rbp), %rdi
callq 0x62d0
leaq -0x79(%rbp), %rdi
callq 0x64f0
jmp 0x272f6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
jmp 0x26d5a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
leaq -0xd0(%rbp), %rdi
callq 0x62d0
leaq -0xd1(%rbp), %rdi
callq 0x64f0
jmp 0x26e85
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
movq -0x228(%rbp), %rax
leaq -0x220(%rbp), %rcx
cmpq %rax, %rcx
movq %rax, -0x588(%rbp)
je 0x26dc2
movq -0x588(%rbp), %rdi
addq $-0x30, %rdi
movq %rdi, -0x590(%rbp)
callq 0xfc90
movq -0x590(%rbp), %rax
leaq -0x220(%rbp), %rcx
cmpq %rcx, %rax
movq %rax, -0x588(%rbp)
jne 0x26d91
jmp 0x26e79
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
leaq -0x229(%rbp), %rdi
callq 0xfc70
leaq -0x220(%rbp), %rax
movq %rax, -0x5a0(%rbp)
addq $0x120, %rax            # imm = 0x120
movq %rax, -0x598(%rbp)
movq -0x598(%rbp), %rdi
addq $-0x30, %rdi
movq %rdi, -0x5a8(%rbp)
callq 0xfc90
movq -0x5a0(%rbp), %rcx
movq -0x5a8(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x598(%rbp)
jne 0x26dfa
jmp 0x26e79
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
jmp 0x26e6d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
jmp 0x26e61
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
leaq -0x2a0(%rbp), %rdi
callq 0x10050
leaq -0x288(%rbp), %rdi
callq 0xfd80
leaq -0xf0(%rbp), %rdi
callq 0x10050
leaq -0xb0(%rbp), %rdi
callq 0xfc90
leaq -0x58(%rbp), %rdi
callq 0xfc90
jmp 0x272f6
movq -0x538(%rbp), %rdi
leaq 0x39709(%rip), %rsi     # 0x605aa
callq 0xfff0
movb %al, -0x5a9(%rbp)
jmp 0x26eae
movb -0x5a9(%rbp), %al
testb $0x1, %al
jne 0x26ebd
jmp 0x272eb
leaq -0x2f1(%rbp), %rdi
movq %rdi, -0x5b8(%rbp)
callq 0x6830
movq -0x5b8(%rbp), %rdx
leaq 0x391b8(%rip), %rsi     # 0x60096
leaq -0x2f0(%rbp), %rdi
callq 0xfb20
jmp 0x26eec
leaq -0x2d0(%rbp), %rdi
leaq -0x2f0(%rbp), %rsi
movl $0x1, %edx
callq 0x1bbe0
jmp 0x26f06
leaq -0x2f0(%rbp), %rdi
callq 0x62d0
leaq -0x2f1(%rbp), %rdi
callq 0x64f0
leaq -0x349(%rbp), %rdi
movq %rdi, -0x5c0(%rbp)
callq 0x6830
movq -0x5c0(%rbp), %rdx
leaq 0x3915a(%rip), %rsi     # 0x60099
leaq -0x348(%rbp), %rdi
callq 0xfb20
jmp 0x26f4d
leaq -0x328(%rbp), %rdi
leaq -0x348(%rbp), %rsi
movl $0x1, %edx
callq 0x1bbe0
jmp 0x26f67
leaq -0x348(%rbp), %rdi
callq 0x62d0
leaq -0x349(%rbp), %rdi
callq 0x64f0
leaq -0x498(%rbp), %rdi
movq %rdi, -0x4a0(%rbp)
leaq -0x328(%rbp), %rsi
callq 0xfdb0
jmp 0x26f9b
leaq -0x468(%rbp), %rdi
movq %rdi, -0x4a0(%rbp)
leaq -0x2d0(%rbp), %rsi
callq 0xfdb0
jmp 0x26fb7
leaq -0x438(%rbp), %rdi
movq %rdi, -0x4a0(%rbp)
leaq -0x328(%rbp), %rsi
callq 0xfdb0
jmp 0x26fd3
leaq -0x408(%rbp), %rdi
movq %rdi, -0x4a0(%rbp)
leaq -0x328(%rbp), %rsi
callq 0xfdb0
jmp 0x26fef
leaq -0x3d8(%rbp), %rdi
movq %rdi, -0x4a0(%rbp)
leaq -0x2d0(%rbp), %rsi
callq 0xfdb0
jmp 0x2700b
leaq -0x3a8(%rbp), %rdi
movq %rdi, -0x4a0(%rbp)
leaq -0x328(%rbp), %rsi
callq 0xfdb0
jmp 0x27027
leaq -0x498(%rbp), %rax
movq %rax, -0x378(%rbp)
movq $0x6, -0x370(%rbp)
leaq -0x4a1(%rbp), %rdi
movq %rdi, -0x5c8(%rbp)
callq 0xfbd0
movq -0x5c8(%rbp), %rcx
movq -0x378(%rbp), %rsi
movq -0x370(%rbp), %rdx
leaq -0x368(%rbp), %rdi
callq 0xfbf0
jmp 0x27076
leaq -0x4a1(%rbp), %rdi
callq 0xfc70
leaq -0x498(%rbp), %rax
movq %rax, -0x5d8(%rbp)
addq $0x120, %rax            # imm = 0x120
movq %rax, -0x5d0(%rbp)
movq -0x5d0(%rbp), %rdi
addq $-0x30, %rdi
movq %rdi, -0x5e0(%rbp)
callq 0xfc90
movq -0x5d8(%rbp), %rcx
movq -0x5e0(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x5d0(%rbp)
jne 0x2709d
movq -0x540(%rbp), %rsi
leaq -0x500(%rbp), %rdi
callq 0x22ce0
jmp 0x270e3
leaq -0x518(%rbp), %rdi
leaq -0x368(%rbp), %rsi
callq 0x27990
jmp 0x270f8
movq -0x530(%rbp), %rdi
leaq -0x500(%rbp), %rsi
leaq -0x518(%rbp), %rdx
callq 0x27330
jmp 0x27114
leaq -0x518(%rbp), %rdi
callq 0x10050
leaq -0x500(%rbp), %rdi
callq 0xfd80
leaq -0x368(%rbp), %rdi
callq 0x10050
leaq -0x328(%rbp), %rdi
callq 0xfc90
leaq -0x2d0(%rbp), %rdi
callq 0xfc90
jmp 0x272eb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
jmp 0x2717b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
leaq -0x2f0(%rbp), %rdi
callq 0x62d0
leaq -0x2f1(%rbp), %rdi
callq 0x64f0
jmp 0x272f6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
jmp 0x271b2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
leaq -0x348(%rbp), %rdi
callq 0x62d0
leaq -0x349(%rbp), %rdi
callq 0x64f0
jmp 0x272dd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
movq -0x4a0(%rbp), %rax
leaq -0x498(%rbp), %rcx
cmpq %rax, %rcx
movq %rax, -0x5e8(%rbp)
je 0x2721a
movq -0x5e8(%rbp), %rdi
addq $-0x30, %rdi
movq %rdi, -0x5f0(%rbp)
callq 0xfc90
movq -0x5f0(%rbp), %rax
leaq -0x498(%rbp), %rcx
cmpq %rcx, %rax
movq %rax, -0x5e8(%rbp)
jne 0x271e9
jmp 0x272d1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
leaq -0x4a1(%rbp), %rdi
callq 0xfc70
leaq -0x498(%rbp), %rax
movq %rax, -0x600(%rbp)
addq $0x120, %rax            # imm = 0x120
movq %rax, -0x5f8(%rbp)
movq -0x5f8(%rbp), %rdi
addq $-0x30, %rdi
movq %rdi, -0x608(%rbp)
callq 0xfc90
movq -0x600(%rbp), %rcx
movq -0x608(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x5f8(%rbp)
jne 0x27252
jmp 0x272d1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
jmp 0x272c5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
jmp 0x272b9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
leaq -0x518(%rbp), %rdi
callq 0x10050
leaq -0x500(%rbp), %rdi
callq 0xfd80
leaq -0x368(%rbp), %rdi
callq 0x10050
leaq -0x328(%rbp), %rdi
callq 0xfc90
leaq -0x2d0(%rbp), %rdi
callq 0xfc90
jmp 0x272f6
jmp 0x272ed
addq $0x610, %rsp            # imm = 0x610
popq %rbp
retq
movq -0x548(%rbp), %rdi
callq 0x62d0
movq -0x520(%rbp), %rdi
callq 0xfd80
movq -0x528(%rbp), %rdi
callq 0x10530
movq -0x20(%rbp), %rdi
callq 0x6820
nopw %cs:(%rax,%rax)