// File: /workspace/github_cpp_makefile_star2_O2/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
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x308, %rsp            # imm = 0x308
movq %rdx, %r13
movq %rsi, %r12
movq %rdi, %rbx
leaq 0x30(%rdi), %rax
movq %rax, (%rdi)
movq $0x1, 0x8(%rdi)
xorps %xmm0, %xmm0
movups %xmm0, 0x10(%rdi)
movl $0x3f800000, 0x20(%rdi) # imm = 0x3F800000
movups %xmm0, 0x28(%rdi)
leaq 0x38(%rdi), %r14
movq %r14, %rdi
callq 0x12712
leaq 0x90(%rbx), %r15
leaq 0xa0(%rbx), %rax
movq %rax, 0x90(%rbx)
andq $0x0, 0x98(%rbx)
movb $0x0, 0xa0(%rbx)
movq %r14, %rdi
movq %r12, %rsi
callq 0x97e8
movq %r15, %rdi
movq %r13, %rsi
callq 0x5210
leaq 0x15928(%rip), %rsi     # 0x295c4
movq %r13, %rdi
callq 0x989a
testb %al, %al
je 0x13e34
leaq 0x153ff(%rip), %rsi     # 0x290b2
leaq 0x118(%rsp), %rdi
leaq 0x138(%rsp), %rdx
callq 0x96e6
leaq 0x58(%rsp), %rdi
leaq 0x118(%rsp), %rsi
pushq $0x1
popq %rdx
callq 0xf280
leaq 0x118(%rsp), %rdi
callq 0x51b0
leaq 0x153c4(%rip), %rsi     # 0x290b5
leaq 0xf8(%rsp), %rdi
leaq 0x138(%rsp), %rdx
callq 0x96e6
leaq 0x28(%rsp), %rdi
leaq 0xf8(%rsp), %rsi
pushq $0x1
popq %rdx
callq 0xf280
leaq 0xf8(%rsp), %rdi
callq 0x51b0
leaq 0x138(%rsp), %r13
leaq 0x28(%rsp), %rsi
movq %r13, %rdi
callq 0x97b4
leaq 0x168(%rsp), %rbp
leaq 0x28(%rsp), %rsi
movq %rbp, %rdi
callq 0x97b4
leaq 0x198(%rsp), %rbp
leaq 0x58(%rsp), %rsi
movq %rbp, %rdi
callq 0x97b4
leaq 0x1c8(%rsp), %rbp
leaq 0x28(%rsp), %rsi
movq %rbp, %rdi
callq 0x97b4
leaq 0x1f8(%rsp), %rbp
leaq 0x28(%rsp), %rsi
movq %rbp, %rdi
callq 0x97b4
leaq 0x228(%rsp), %rbp
leaq 0x28(%rsp), %rsi
movq %rbp, %rdi
callq 0x97b4
leaq 0x10(%rsp), %rdi
leaq 0x138(%rsp), %rsi
pushq $0x6
popq %rdx
leaq 0xf(%rsp), %rcx
callq 0x9722
movl $0xf8, %r13d
leaq (%rsp,%r13), %rdi
addq $0x138, %rdi            # imm = 0x138
callq 0x51b0
addq $-0x30, %r13
cmpq $-0x28, %r13
jne 0x13dc6
leaq 0x2b0(%rsp), %rdi
movq %r12, %rsi
callq 0x12676
leaq 0xa0(%rsp), %rdi
leaq 0x10(%rsp), %rsi
callq 0x14514
leaq 0x2b0(%rsp), %rsi
leaq 0xa0(%rsp), %rdx
movq %rbx, %rdi
callq 0x14188
leaq 0xa0(%rsp), %rdi
callq 0x98a8
leaq 0x2b0(%rsp), %rdi
jmp 0x13fce
leaq 0x1578f(%rip), %rsi     # 0x295ca
movq %r13, %rdi
callq 0x989a
testb %al, %al
je 0x13ff1
leaq 0x15260(%rip), %rsi     # 0x290b2
leaq 0xd8(%rsp), %rdi
leaq 0x138(%rsp), %rdx
callq 0x96e6
leaq 0x58(%rsp), %rdi
leaq 0xd8(%rsp), %rsi
pushq $0x1
popq %rdx
callq 0xf280
leaq 0xd8(%rsp), %rdi
callq 0x51b0
leaq 0x15225(%rip), %rsi     # 0x290b5
leaq 0xb8(%rsp), %rdi
leaq 0x138(%rsp), %rdx
callq 0x96e6
leaq 0x28(%rsp), %rdi
leaq 0xb8(%rsp), %rsi
pushq $0x1
popq %rdx
callq 0xf280
leaq 0xb8(%rsp), %rdi
callq 0x51b0
leaq 0x138(%rsp), %r13
leaq 0x28(%rsp), %rsi
movq %r13, %rdi
callq 0x97b4
leaq 0x168(%rsp), %rbp
leaq 0x58(%rsp), %rsi
movq %rbp, %rdi
callq 0x97b4
leaq 0x198(%rsp), %rbp
leaq 0x28(%rsp), %rsi
movq %rbp, %rdi
callq 0x97b4
leaq 0x1c8(%rsp), %rbp
leaq 0x28(%rsp), %rsi
movq %rbp, %rdi
callq 0x97b4
leaq 0x1f8(%rsp), %rbp
leaq 0x58(%rsp), %rsi
movq %rbp, %rdi
callq 0x97b4
leaq 0x228(%rsp), %rbp
leaq 0x28(%rsp), %rsi
movq %rbp, %rdi
callq 0x97b4
leaq 0x10(%rsp), %rdi
leaq 0x138(%rsp), %rsi
pushq $0x6
popq %rdx
leaq 0xf(%rsp), %rcx
callq 0x9722
movl $0xf8, %r13d
leaq (%rsp,%r13), %rdi
addq $0x138, %rdi            # imm = 0x138
callq 0x51b0
addq $-0x30, %r13
cmpq $-0x28, %r13
jne 0x13f65
leaq 0x258(%rsp), %rdi
movq %r12, %rsi
callq 0x12676
leaq 0x88(%rsp), %rdi
leaq 0x10(%rsp), %rsi
callq 0x14514
leaq 0x258(%rsp), %rsi
leaq 0x88(%rsp), %rdx
movq %rbx, %rdi
callq 0x14188
leaq 0x88(%rsp), %rdi
callq 0x98a8
leaq 0x258(%rsp), %rdi
callq 0x979a
leaq 0x10(%rsp), %rdi
callq 0x98a8
leaq 0x30(%rsp), %rdi
callq 0x51b0
leaq 0x60(%rsp), %rdi
callq 0x51b0
addq $0x308, %rsp            # imm = 0x308
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rax, (%rsp)
leaq 0x88(%rsp), %rdi
callq 0x98a8
jmp 0x1401a
movq %rax, (%rsp)
leaq 0x258(%rsp), %rdi
jmp 0x140a2
jmp 0x140a9
movq %rax, (%rsp)
movl $0xf8, %r13d
leaq (%rsp,%r13), %rdi
addq $0x138, %rdi            # imm = 0x138
callq 0x51b0
addq $-0x30, %r13
cmpq $-0x28, %r13
jne 0x14033
jmp 0x14152
jmp 0x140e2
movq %rax, (%rsp)
leaq 0xb8(%rsp), %rdi
jmp 0x14157
jmp 0x140f6
movq %rax, (%rsp)
leaq 0xd8(%rsp), %rdi
jmp 0x14161
jmp 0x14130
movq %rax, (%rsp)
leaq 0xa0(%rsp), %rdi
callq 0x98a8
jmp 0x1409a
movq %rax, (%rsp)
leaq 0x2b0(%rsp), %rdi
callq 0x979a
jmp 0x140ad
movq %rax, (%rsp)
leaq 0x10(%rsp), %rdi
callq 0x98a8
jmp 0x14152
movq %rax, (%rsp)
movl $0xf8, %r13d
leaq (%rsp,%r13), %rdi
addq $0x138, %rdi            # imm = 0x138
callq 0x51b0
addq $-0x30, %r13
cmpq $-0x28, %r13
jne 0x140c6
jmp 0x14152
movq %rax, (%rsp)
jmp 0x14152
movq %rax, (%rsp)
leaq 0xf8(%rsp), %rdi
jmp 0x14157
movq %rax, (%rsp)
jmp 0x1415c
movq %rax, (%rsp)
leaq 0x118(%rsp), %rdi
jmp 0x14161
jmp 0x14130
movq %rax, (%rsp)
jmp 0x14176
movq %rax, (%rsp)
leaq -0x30(%rbp), %r12
addq $-0x28, %rbp
movq %rbp, %rdi
callq 0x51b0
movq %r12, %rbp
cmpq %r13, %r12
jne 0x14116
jmp 0x14152
movq %rax, (%rsp)
jmp 0x14166
movq %rax, (%rsp)
leaq -0x30(%rbp), %r12
addq $-0x28, %rbp
movq %rbp, %rdi
callq 0x51b0
movq %r12, %rbp
cmpq %r13, %r12
jne 0x1413a
leaq 0x30(%rsp), %rdi
callq 0x51b0
leaq 0x60(%rsp), %rdi
callq 0x51b0
movq %r15, %rdi
callq 0x51b0
movq %r14, %rdi
callq 0x979a
movq %rbx, %rdi
callq 0x9c9c
movq (%rsp), %rdi
callq 0x55d0
nop