// File: Wombozo[P]harmony/src/Triad.cpp
// Function: Triad::Triad(Note*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, Note*, int)
Triad::Triad(Note *n, const std::string &str, Note *b, int inv) : root(n), bass(b), inversion(inv)
{
    if (!str.compare(triads[0]))
    {
        // "" (major)
        intervals = {std::string("major third"), std::string("perfect fifth")};
        _setNotes(this, &intervals);
    }
    else if (!str.compare(triads[1]))
    {
        // "m"
        intervals = {std::string("minor third"), std::string("perfect fifth")};
        _setNotes(this, &intervals);
    }
    else if (!str.compare(triads[2]))
    {
        // "aug"
        intervals = {std::string("major third"), std::string("augmented fifth")};
        _setNotes(this, &intervals);
    }
    else if (!str.compare(triads[3]))
    {
        // "dim"
        intervals = {std::string("minor third"), std::string("diminished fifth")};
        _setNotes(this, &intervals);
    }
    else if (!str.compare(triads[4]))
    {
        // "sus4"
        intervals = {std::string("perfect fourth"), std::string("perfect fifth")};
        _setNotes(this, &intervals);
    }
    else if (!str.compare(triads[5]))
    {
        // "sus2"
        intervals = {std::string("major second"), std::string("perfect fifth")};
        _setNotes(this, &intervals);
    }
    else if (!str.compare(triads[6]))
    {
        // "b5"
        intervals = {std::string("major third"), std::string("diminished fifth")};
        _setNotes(this, &intervals);
    }
    else if (!str.compare(triads[7]))
    {
        // "m#5"
        intervals = {std::string("minor third"), std::string("augmented fifth")};
        _setNotes(this, &intervals);
    }
    else
        throw E_CHORD_UNKNOWN;

    if (inversion > 2 | inversion < 0)
        throw E_INVERSION;
    std::rotate(notes.begin(), notes.begin() + inversion, notes.end());

    name = n->display() + str;
    typeName = str;
    if (root != bass)
    {
        name += "/" + bass->display();
    }
    if (inversion)
    {
        name += "/" + notes.at(0)->display();
    }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xa30, %rsp            # imm = 0xA30
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq %rcx, -0x20(%rbp)
movl %r8d, -0x24(%rbp)
movq -0x8(%rbp), %rdi
movq %rdi, -0x6f8(%rbp)
movq -0x10(%rbp), %rax
movq %rax, (%rdi)
movq -0x20(%rbp), %rax
movq %rax, 0x8(%rdi)
addq $0x10, %rdi
movq %rdi, -0x710(%rbp)
callq 0x3300
movq -0x6f8(%rbp), %rdi
addq $0x30, %rdi
movq %rdi, -0x708(%rbp)
callq 0x3300
movq -0x6f8(%rbp), %rdi
movl -0x24(%rbp), %eax
movl %eax, 0x50(%rdi)
addq $0x58, %rdi
movq %rdi, -0x700(%rbp)
callq 0xf520
movq -0x6f8(%rbp), %rdi
addq $0x70, %rdi
movq %rdi, -0x6f0(%rbp)
callq 0x72c0
movq -0x18(%rbp), %rdi
leaq 0xe1e1(%rip), %rsi      # 0x214f0
callq 0x3040
movl %eax, -0x6e4(%rbp)
jmp 0x1331c
movl -0x6e4(%rbp), %eax
cmpl $0x0, %eax
jne 0x135d6
movb $0x1, -0xea(%rbp)
leaq -0x98(%rbp), %rax
movq %rax, -0xa0(%rbp)
leaq -0xc1(%rbp), %rdi
movq %rdi, -0x718(%rbp)
callq 0x33e0
movq -0x718(%rbp), %rdx
leaq 0x5e9c(%rip), %rsi      # 0x191fd
leaq -0xc0(%rbp), %rdi
callq 0x7340
jmp 0x1336f
leaq -0x98(%rbp), %rdi
leaq -0xc0(%rbp), %rsi
callq 0xc590
jmp 0x13384
leaq -0x70(%rbp), %rax
movq %rax, -0x728(%rbp)
movq %rax, -0xa0(%rbp)
leaq -0xe9(%rbp), %rdi
movq %rdi, -0x720(%rbp)
callq 0x33e0
movq -0x720(%rbp), %rdx
leaq 0x5ea5(%rip), %rsi      # 0x1925c
leaq -0xe8(%rbp), %rdi
callq 0x7340
jmp 0x133c5
movq -0x728(%rbp), %rdi
leaq -0xe8(%rbp), %rsi
callq 0xc590
jmp 0x133da
movq -0x6f8(%rbp), %rdi
movb $0x0, -0xea(%rbp)
leaq -0x98(%rbp), %rax
movq %rax, -0x48(%rbp)
movq $0x2, -0x40(%rbp)
addq $0x58, %rdi
movq -0x48(%rbp), %rsi
movq -0x40(%rbp), %rdx
callq 0x15ef0
jmp 0x1340e
leaq -0x98(%rbp), %rax
movq %rax, -0x738(%rbp)
addq $0x50, %rax
movq %rax, -0x730(%rbp)
movq -0x730(%rbp), %rdi
addq $-0x28, %rdi
movq %rdi, -0x740(%rbp)
callq 0xc990
movq -0x738(%rbp), %rcx
movq -0x740(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x730(%rbp)
jne 0x13427
leaq -0xe8(%rbp), %rdi
callq 0x3190
leaq -0xe9(%rbp), %rdi
callq 0x3270
leaq -0xc0(%rbp), %rdi
callq 0x3190
leaq -0xc1(%rbp), %rdi
callq 0x3270
movq -0x6f8(%rbp), %rdi
movq %rdi, %rsi
addq $0x58, %rsi
callq 0x15bb0
jmp 0x1349d
jmp 0x149bc
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
jmp 0x14cc3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
jmp 0x1356d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
jmp 0x13561
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
jmp 0x13555
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
jmp 0x13549
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x98(%rbp), %rax
movq %rax, -0x750(%rbp)
addq $0x50, %rax
movq %rax, -0x748(%rbp)
movq -0x748(%rbp), %rdi
addq $-0x28, %rdi
movq %rdi, -0x758(%rbp)
callq 0xc990
movq -0x750(%rbp), %rcx
movq -0x758(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x748(%rbp)
jne 0x13516
jmp 0x13549
leaq -0xe8(%rbp), %rdi
callq 0x3190
leaq -0xe9(%rbp), %rdi
callq 0x3270
leaq -0xc0(%rbp), %rdi
callq 0x3190
leaq -0xc1(%rbp), %rdi
callq 0x3270
testb $0x1, -0xea(%rbp)
jne 0x13584
jmp 0x135d1
movq -0xa0(%rbp), %rax
leaq -0x98(%rbp), %rcx
cmpq %rax, %rcx
movq %rax, -0x760(%rbp)
je 0x135cf
movq -0x760(%rbp), %rdi
addq $-0x28, %rdi
movq %rdi, -0x768(%rbp)
callq 0xc990
movq -0x768(%rbp), %rax
leaq -0x98(%rbp), %rcx
cmpq %rcx, %rax
movq %rax, -0x760(%rbp)
jne 0x1359e
jmp 0x135d1
jmp 0x14cc3
movq -0x18(%rbp), %rdi
leaq 0xdf2f(%rip), %rsi      # 0x21510
callq 0x3040
movl %eax, -0x76c(%rbp)
jmp 0x135ee
movl -0x76c(%rbp), %eax
cmpl $0x0, %eax
jne 0x138a6
movb $0x1, -0x1a2(%rbp)
leaq -0x150(%rbp), %rax
movq %rax, -0x158(%rbp)
leaq -0x179(%rbp), %rdi
movq %rdi, -0x778(%rbp)
callq 0x33e0
movq -0x778(%rbp), %rdx
leaq 0x5bbe(%rip), %rsi      # 0x191f1
leaq -0x178(%rbp), %rdi
callq 0x7340
jmp 0x13641
leaq -0x150(%rbp), %rdi
leaq -0x178(%rbp), %rsi
callq 0xc590
jmp 0x13656
leaq -0x128(%rbp), %rax
movq %rax, -0x788(%rbp)
movq %rax, -0x158(%rbp)
leaq -0x1a1(%rbp), %rdi
movq %rdi, -0x780(%rbp)
callq 0x33e0
movq -0x780(%rbp), %rdx
leaq 0x5bd0(%rip), %rsi      # 0x1925c
leaq -0x1a0(%rbp), %rdi
callq 0x7340
jmp 0x1369a
movq -0x788(%rbp), %rdi
leaq -0x1a0(%rbp), %rsi
callq 0xc590
jmp 0x136af
movq -0x6f8(%rbp), %rdi
movb $0x0, -0x1a2(%rbp)
leaq -0x150(%rbp), %rax
movq %rax, -0x100(%rbp)
movq $0x2, -0xf8(%rbp)
addq $0x58, %rdi
movq -0x100(%rbp), %rsi
movq -0xf8(%rbp), %rdx
callq 0x15ef0
jmp 0x136ef
leaq -0x150(%rbp), %rax
movq %rax, -0x798(%rbp)
addq $0x50, %rax
movq %rax, -0x790(%rbp)
movq -0x790(%rbp), %rdi
addq $-0x28, %rdi
movq %rdi, -0x7a0(%rbp)
callq 0xc990
movq -0x798(%rbp), %rcx
movq -0x7a0(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x790(%rbp)
jne 0x13708
leaq -0x1a0(%rbp), %rdi
callq 0x3190
leaq -0x1a1(%rbp), %rdi
callq 0x3270
leaq -0x178(%rbp), %rdi
callq 0x3190
leaq -0x179(%rbp), %rdi
callq 0x3270
movq -0x6f8(%rbp), %rdi
movq %rdi, %rsi
addq $0x58, %rsi
callq 0x15bb0
jmp 0x1377e
jmp 0x149ba
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
jmp 0x1383d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
jmp 0x13831
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
jmp 0x13825
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
jmp 0x13819
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x150(%rbp), %rax
movq %rax, -0x7b0(%rbp)
addq $0x50, %rax
movq %rax, -0x7a8(%rbp)
movq -0x7a8(%rbp), %rdi
addq $-0x28, %rdi
movq %rdi, -0x7b8(%rbp)
callq 0xc990
movq -0x7b0(%rbp), %rcx
movq -0x7b8(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x7a8(%rbp)
jne 0x137e6
jmp 0x13819
leaq -0x1a0(%rbp), %rdi
callq 0x3190
leaq -0x1a1(%rbp), %rdi
callq 0x3270
leaq -0x178(%rbp), %rdi
callq 0x3190
leaq -0x179(%rbp), %rdi
callq 0x3270
testb $0x1, -0x1a2(%rbp)
jne 0x13854
jmp 0x138a1
movq -0x158(%rbp), %rax
leaq -0x150(%rbp), %rcx
cmpq %rax, %rcx
movq %rax, -0x7c0(%rbp)
je 0x1389f
movq -0x7c0(%rbp), %rdi
addq $-0x28, %rdi
movq %rdi, -0x7c8(%rbp)
callq 0xc990
movq -0x7c8(%rbp), %rax
leaq -0x150(%rbp), %rcx
cmpq %rcx, %rax
movq %rax, -0x7c0(%rbp)
jne 0x1386e
jmp 0x138a1
jmp 0x14cc3
movq -0x18(%rbp), %rdi
leaq 0xdc7f(%rip), %rsi      # 0x21530
callq 0x3040
movl %eax, -0x7cc(%rbp)
jmp 0x138be
movl -0x7cc(%rbp), %eax
cmpl $0x0, %eax
jne 0x13b76
movb $0x1, -0x25a(%rbp)
leaq -0x208(%rbp), %rax
movq %rax, -0x210(%rbp)
leaq -0x231(%rbp), %rdi
movq %rdi, -0x7d8(%rbp)
callq 0x33e0
movq -0x7d8(%rbp), %rdx
leaq 0x58fa(%rip), %rsi      # 0x191fd
leaq -0x230(%rbp), %rdi
callq 0x7340
jmp 0x13911
leaq -0x208(%rbp), %rdi
leaq -0x230(%rbp), %rsi
callq 0xc590
jmp 0x13926
leaq -0x1e0(%rbp), %rax
movq %rax, -0x7e8(%rbp)
movq %rax, -0x210(%rbp)
leaq -0x259(%rbp), %rdi
movq %rdi, -0x7e0(%rbp)
callq 0x33e0
movq -0x7e0(%rbp), %rdx
leaq 0x590e(%rip), %rsi      # 0x1926a
leaq -0x258(%rbp), %rdi
callq 0x7340
jmp 0x1396a
movq -0x7e8(%rbp), %rdi
leaq -0x258(%rbp), %rsi
callq 0xc590
jmp 0x1397f
movq -0x6f8(%rbp), %rdi
movb $0x0, -0x25a(%rbp)
leaq -0x208(%rbp), %rax
movq %rax, -0x1b8(%rbp)
movq $0x2, -0x1b0(%rbp)
addq $0x58, %rdi
movq -0x1b8(%rbp), %rsi
movq -0x1b0(%rbp), %rdx
callq 0x15ef0
jmp 0x139bf
leaq -0x208(%rbp), %rax
movq %rax, -0x7f8(%rbp)
addq $0x50, %rax
movq %rax, -0x7f0(%rbp)
movq -0x7f0(%rbp), %rdi
addq $-0x28, %rdi
movq %rdi, -0x800(%rbp)
callq 0xc990
movq -0x7f8(%rbp), %rcx
movq -0x800(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x7f0(%rbp)
jne 0x139d8
leaq -0x258(%rbp), %rdi
callq 0x3190
leaq -0x259(%rbp), %rdi
callq 0x3270
leaq -0x230(%rbp), %rdi
callq 0x3190
leaq -0x231(%rbp), %rdi
callq 0x3270
movq -0x6f8(%rbp), %rdi
movq %rdi, %rsi
addq $0x58, %rsi
callq 0x15bb0
jmp 0x13a4e
jmp 0x149b8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
jmp 0x13b0d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
jmp 0x13b01
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
jmp 0x13af5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
jmp 0x13ae9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x208(%rbp), %rax
movq %rax, -0x810(%rbp)
addq $0x50, %rax
movq %rax, -0x808(%rbp)
movq -0x808(%rbp), %rdi
addq $-0x28, %rdi
movq %rdi, -0x818(%rbp)
callq 0xc990
movq -0x810(%rbp), %rcx
movq -0x818(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x808(%rbp)
jne 0x13ab6
jmp 0x13ae9
leaq -0x258(%rbp), %rdi
callq 0x3190
leaq -0x259(%rbp), %rdi
callq 0x3270
leaq -0x230(%rbp), %rdi
callq 0x3190
leaq -0x231(%rbp), %rdi
callq 0x3270
testb $0x1, -0x25a(%rbp)
jne 0x13b24
jmp 0x13b71
movq -0x210(%rbp), %rax
leaq -0x208(%rbp), %rcx
cmpq %rax, %rcx
movq %rax, -0x820(%rbp)
je 0x13b6f
movq -0x820(%rbp), %rdi
addq $-0x28, %rdi
movq %rdi, -0x828(%rbp)
callq 0xc990
movq -0x828(%rbp), %rax
leaq -0x208(%rbp), %rcx
cmpq %rcx, %rax
movq %rax, -0x820(%rbp)
jne 0x13b3e
jmp 0x13b71
jmp 0x14cc3
movq -0x18(%rbp), %rdi
leaq 0xd9cf(%rip), %rsi      # 0x21550
callq 0x3040
movl %eax, -0x82c(%rbp)
jmp 0x13b8e
movl -0x82c(%rbp), %eax
cmpl $0x0, %eax
jne 0x13e46
movb $0x1, -0x312(%rbp)
leaq -0x2c0(%rbp), %rax
movq %rax, -0x2c8(%rbp)
leaq -0x2e9(%rbp), %rdi
movq %rdi, -0x838(%rbp)
callq 0x33e0
movq -0x838(%rbp), %rdx
leaq 0x561e(%rip), %rsi      # 0x191f1
leaq -0x2e8(%rbp), %rdi
callq 0x7340
jmp 0x13be1
leaq -0x2c0(%rbp), %rdi
leaq -0x2e8(%rbp), %rsi
callq 0xc590
jmp 0x13bf6
leaq -0x298(%rbp), %rax
movq %rax, -0x848(%rbp)
movq %rax, -0x2c8(%rbp)
leaq -0x311(%rbp), %rdi
movq %rdi, -0x840(%rbp)
callq 0x33e0
movq -0x840(%rbp), %rdx
leaq 0x561f(%rip), %rsi      # 0x1924b
leaq -0x310(%rbp), %rdi
callq 0x7340
jmp 0x13c3a
movq -0x848(%rbp), %rdi
leaq -0x310(%rbp), %rsi
callq 0xc590
jmp 0x13c4f
movq -0x6f8(%rbp), %rdi
movb $0x0, -0x312(%rbp)
leaq -0x2c0(%rbp), %rax
movq %rax, -0x270(%rbp)
movq $0x2, -0x268(%rbp)
addq $0x58, %rdi
movq -0x270(%rbp), %rsi
movq -0x268(%rbp), %rdx
callq 0x15ef0
jmp 0x13c8f
leaq -0x2c0(%rbp), %rax
movq %rax, -0x858(%rbp)
addq $0x50, %rax
movq %rax, -0x850(%rbp)
movq -0x850(%rbp), %rdi
addq $-0x28, %rdi
movq %rdi, -0x860(%rbp)
callq 0xc990
movq -0x858(%rbp), %rcx
movq -0x860(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x850(%rbp)
jne 0x13ca8
leaq -0x310(%rbp), %rdi
callq 0x3190
leaq -0x311(%rbp), %rdi
callq 0x3270
leaq -0x2e8(%rbp), %rdi
callq 0x3190
leaq -0x2e9(%rbp), %rdi
callq 0x3270
movq -0x6f8(%rbp), %rdi
movq %rdi, %rsi
addq $0x58, %rsi
callq 0x15bb0
jmp 0x13d1e
jmp 0x149b6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
jmp 0x13ddd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
jmp 0x13dd1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
jmp 0x13dc5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
jmp 0x13db9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x2c0(%rbp), %rax
movq %rax, -0x870(%rbp)
addq $0x50, %rax
movq %rax, -0x868(%rbp)
movq -0x868(%rbp), %rdi
addq $-0x28, %rdi
movq %rdi, -0x878(%rbp)
callq 0xc990
movq -0x870(%rbp), %rcx
movq -0x878(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x868(%rbp)
jne 0x13d86
jmp 0x13db9
leaq -0x310(%rbp), %rdi
callq 0x3190
leaq -0x311(%rbp), %rdi
callq 0x3270
leaq -0x2e8(%rbp), %rdi
callq 0x3190
leaq -0x2e9(%rbp), %rdi
callq 0x3270
testb $0x1, -0x312(%rbp)
jne 0x13df4
jmp 0x13e41
movq -0x2c8(%rbp), %rax
leaq -0x2c0(%rbp), %rcx
cmpq %rax, %rcx
movq %rax, -0x880(%rbp)
je 0x13e3f
movq -0x880(%rbp), %rdi
addq $-0x28, %rdi
movq %rdi, -0x888(%rbp)
callq 0xc990
movq -0x888(%rbp), %rax
leaq -0x2c0(%rbp), %rcx
cmpq %rcx, %rax
movq %rax, -0x880(%rbp)
jne 0x13e0e
jmp 0x13e41
jmp 0x14cc3
movq -0x18(%rbp), %rdi
leaq 0xd71f(%rip), %rsi      # 0x21570
callq 0x3040
movl %eax, -0x88c(%rbp)
jmp 0x13e5e
movl -0x88c(%rbp), %eax
cmpl $0x0, %eax
jne 0x14116
movb $0x1, -0x3ca(%rbp)
leaq -0x378(%rbp), %rax
movq %rax, -0x380(%rbp)
leaq -0x3a1(%rbp), %rdi
movq %rdi, -0x898(%rbp)
callq 0x33e0
movq -0x898(%rbp), %rdx
leaq 0x5388(%rip), %rsi      # 0x1922b
leaq -0x3a0(%rbp), %rdi
callq 0x7340
jmp 0x13eb1
leaq -0x378(%rbp), %rdi
leaq -0x3a0(%rbp), %rsi
callq 0xc590
jmp 0x13ec6
leaq -0x350(%rbp), %rax
movq %rax, -0x8a8(%rbp)
movq %rax, -0x380(%rbp)
leaq -0x3c9(%rbp), %rdi
movq %rdi, -0x8a0(%rbp)
callq 0x33e0
movq -0x8a0(%rbp), %rdx
leaq 0x5360(%rip), %rsi      # 0x1925c
leaq -0x3c8(%rbp), %rdi
callq 0x7340
jmp 0x13f0a
movq -0x8a8(%rbp), %rdi
leaq -0x3c8(%rbp), %rsi
callq 0xc590
jmp 0x13f1f
movq -0x6f8(%rbp), %rdi
movb $0x0, -0x3ca(%rbp)
leaq -0x378(%rbp), %rax
movq %rax, -0x328(%rbp)
movq $0x2, -0x320(%rbp)
addq $0x58, %rdi
movq -0x328(%rbp), %rsi
movq -0x320(%rbp), %rdx
callq 0x15ef0
jmp 0x13f5f
leaq -0x378(%rbp), %rax
movq %rax, -0x8b8(%rbp)
addq $0x50, %rax
movq %rax, -0x8b0(%rbp)
movq -0x8b0(%rbp), %rdi
addq $-0x28, %rdi
movq %rdi, -0x8c0(%rbp)
callq 0xc990
movq -0x8b8(%rbp), %rcx
movq -0x8c0(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x8b0(%rbp)
jne 0x13f78
leaq -0x3c8(%rbp), %rdi
callq 0x3190
leaq -0x3c9(%rbp), %rdi
callq 0x3270
leaq -0x3a0(%rbp), %rdi
callq 0x3190
leaq -0x3a1(%rbp), %rdi
callq 0x3270
movq -0x6f8(%rbp), %rdi
movq %rdi, %rsi
addq $0x58, %rsi
callq 0x15bb0
jmp 0x13fee
jmp 0x149b4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
jmp 0x140ad
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
jmp 0x140a1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
jmp 0x14095
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
jmp 0x14089
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x378(%rbp), %rax
movq %rax, -0x8d0(%rbp)
addq $0x50, %rax
movq %rax, -0x8c8(%rbp)
movq -0x8c8(%rbp), %rdi
addq $-0x28, %rdi
movq %rdi, -0x8d8(%rbp)
callq 0xc990
movq -0x8d0(%rbp), %rcx
movq -0x8d8(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x8c8(%rbp)
jne 0x14056
jmp 0x14089
leaq -0x3c8(%rbp), %rdi
callq 0x3190
leaq -0x3c9(%rbp), %rdi
callq 0x3270
leaq -0x3a0(%rbp), %rdi
callq 0x3190
leaq -0x3a1(%rbp), %rdi
callq 0x3270
testb $0x1, -0x3ca(%rbp)
jne 0x140c4
jmp 0x14111
movq -0x380(%rbp), %rax
leaq -0x378(%rbp), %rcx
cmpq %rax, %rcx
movq %rax, -0x8e0(%rbp)
je 0x1410f
movq -0x8e0(%rbp), %rdi
addq $-0x28, %rdi
movq %rdi, -0x8e8(%rbp)
callq 0xc990
movq -0x8e8(%rbp), %rax
leaq -0x378(%rbp), %rcx
cmpq %rcx, %rax
movq %rax, -0x8e0(%rbp)
jne 0x140de
jmp 0x14111
jmp 0x14cc3
movq -0x18(%rbp), %rdi
leaq 0xd46f(%rip), %rsi      # 0x21590
callq 0x3040
movl %eax, -0x8ec(%rbp)
jmp 0x1412e
movl -0x8ec(%rbp), %eax
cmpl $0x0, %eax
jne 0x143e6
movb $0x1, -0x482(%rbp)
leaq -0x430(%rbp), %rax
movq %rax, -0x438(%rbp)
leaq -0x459(%rbp), %rdi
movq %rdi, -0x8f8(%rbp)
callq 0x33e0
movq -0x8f8(%rbp), %rdx
leaq 0x504f(%rip), %rsi      # 0x191c2
leaq -0x458(%rbp), %rdi
callq 0x7340
jmp 0x14181
leaq -0x430(%rbp), %rdi
leaq -0x458(%rbp), %rsi
callq 0xc590
jmp 0x14196
leaq -0x408(%rbp), %rax
movq %rax, -0x908(%rbp)
movq %rax, -0x438(%rbp)
leaq -0x481(%rbp), %rdi
movq %rdi, -0x900(%rbp)
callq 0x33e0
movq -0x900(%rbp), %rdx
leaq 0x5090(%rip), %rsi      # 0x1925c
leaq -0x480(%rbp), %rdi
callq 0x7340
jmp 0x141da
movq -0x908(%rbp), %rdi
leaq -0x480(%rbp), %rsi
callq 0xc590
jmp 0x141ef
movq -0x6f8(%rbp), %rdi
movb $0x0, -0x482(%rbp)
leaq -0x430(%rbp), %rax
movq %rax, -0x3e0(%rbp)
movq $0x2, -0x3d8(%rbp)
addq $0x58, %rdi
movq -0x3e0(%rbp), %rsi
movq -0x3d8(%rbp), %rdx
callq 0x15ef0
jmp 0x1422f
leaq -0x430(%rbp), %rax
movq %rax, -0x918(%rbp)
addq $0x50, %rax
movq %rax, -0x910(%rbp)
movq -0x910(%rbp), %rdi
addq $-0x28, %rdi
movq %rdi, -0x920(%rbp)
callq 0xc990
movq -0x918(%rbp), %rcx
movq -0x920(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x910(%rbp)
jne 0x14248
leaq -0x480(%rbp), %rdi
callq 0x3190
leaq -0x481(%rbp), %rdi
callq 0x3270
leaq -0x458(%rbp), %rdi
callq 0x3190
leaq -0x459(%rbp), %rdi
callq 0x3270
movq -0x6f8(%rbp), %rdi
movq %rdi, %rsi
addq $0x58, %rsi
callq 0x15bb0
jmp 0x142be
jmp 0x149b2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
jmp 0x1437d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
jmp 0x14371
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
jmp 0x14365
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
jmp 0x14359
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x430(%rbp), %rax
movq %rax, -0x930(%rbp)
addq $0x50, %rax
movq %rax, -0x928(%rbp)
movq -0x928(%rbp), %rdi
addq $-0x28, %rdi
movq %rdi, -0x938(%rbp)
callq 0xc990
movq -0x930(%rbp), %rcx
movq -0x938(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x928(%rbp)
jne 0x14326
jmp 0x14359
leaq -0x480(%rbp), %rdi
callq 0x3190
leaq -0x481(%rbp), %rdi
callq 0x3270
leaq -0x458(%rbp), %rdi
callq 0x3190
leaq -0x459(%rbp), %rdi
callq 0x3270
testb $0x1, -0x482(%rbp)
jne 0x14394
jmp 0x143e1
movq -0x438(%rbp), %rax
leaq -0x430(%rbp), %rcx
cmpq %rax, %rcx
movq %rax, -0x940(%rbp)
je 0x143df
movq -0x940(%rbp), %rdi
addq $-0x28, %rdi
movq %rdi, -0x948(%rbp)
callq 0xc990
movq -0x948(%rbp), %rax
leaq -0x430(%rbp), %rcx
cmpq %rcx, %rax
movq %rax, -0x940(%rbp)
jne 0x143ae
jmp 0x143e1
jmp 0x14cc3
movq -0x18(%rbp), %rdi
leaq 0xd1bf(%rip), %rsi      # 0x215b0
callq 0x3040
movl %eax, -0x94c(%rbp)
jmp 0x143fe
movl -0x94c(%rbp), %eax
cmpl $0x0, %eax
jne 0x146b6
movb $0x1, -0x53a(%rbp)
leaq -0x4e8(%rbp), %rax
movq %rax, -0x4f0(%rbp)
leaq -0x511(%rbp), %rdi
movq %rdi, -0x958(%rbp)
callq 0x33e0
movq -0x958(%rbp), %rdx
leaq 0x4dba(%rip), %rsi      # 0x191fd
leaq -0x510(%rbp), %rdi
callq 0x7340
jmp 0x14451
leaq -0x4e8(%rbp), %rdi
leaq -0x510(%rbp), %rsi
callq 0xc590
jmp 0x14466
leaq -0x4c0(%rbp), %rax
movq %rax, -0x968(%rbp)
movq %rax, -0x4f0(%rbp)
leaq -0x539(%rbp), %rdi
movq %rdi, -0x960(%rbp)
callq 0x33e0
movq -0x960(%rbp), %rdx
leaq 0x4daf(%rip), %rsi      # 0x1924b
leaq -0x538(%rbp), %rdi
callq 0x7340
jmp 0x144aa
movq -0x968(%rbp), %rdi
leaq -0x538(%rbp), %rsi
callq 0xc590
jmp 0x144bf
movq -0x6f8(%rbp), %rdi
movb $0x0, -0x53a(%rbp)
leaq -0x4e8(%rbp), %rax
movq %rax, -0x498(%rbp)
movq $0x2, -0x490(%rbp)
addq $0x58, %rdi
movq -0x498(%rbp), %rsi
movq -0x490(%rbp), %rdx
callq 0x15ef0
jmp 0x144ff
leaq -0x4e8(%rbp), %rax
movq %rax, -0x978(%rbp)
addq $0x50, %rax
movq %rax, -0x970(%rbp)
movq -0x970(%rbp), %rdi
addq $-0x28, %rdi
movq %rdi, -0x980(%rbp)
callq 0xc990
movq -0x978(%rbp), %rcx
movq -0x980(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x970(%rbp)
jne 0x14518
leaq -0x538(%rbp), %rdi
callq 0x3190
leaq -0x539(%rbp), %rdi
callq 0x3270
leaq -0x510(%rbp), %rdi
callq 0x3190
leaq -0x511(%rbp), %rdi
callq 0x3270
movq -0x6f8(%rbp), %rdi
movq %rdi, %rsi
addq $0x58, %rsi
callq 0x15bb0
jmp 0x1458e
jmp 0x149b0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
jmp 0x1464d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
jmp 0x14641
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
jmp 0x14635
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
jmp 0x14629
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x4e8(%rbp), %rax
movq %rax, -0x990(%rbp)
addq $0x50, %rax
movq %rax, -0x988(%rbp)
movq -0x988(%rbp), %rdi
addq $-0x28, %rdi
movq %rdi, -0x998(%rbp)
callq 0xc990
movq -0x990(%rbp), %rcx
movq -0x998(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x988(%rbp)
jne 0x145f6
jmp 0x14629
leaq -0x538(%rbp), %rdi
callq 0x3190
leaq -0x539(%rbp), %rdi
callq 0x3270
leaq -0x510(%rbp), %rdi
callq 0x3190
leaq -0x511(%rbp), %rdi
callq 0x3270
testb $0x1, -0x53a(%rbp)
jne 0x14664
jmp 0x146b1
movq -0x4f0(%rbp), %rax
leaq -0x4e8(%rbp), %rcx
cmpq %rax, %rcx
movq %rax, -0x9a0(%rbp)
je 0x146af
movq -0x9a0(%rbp), %rdi
addq $-0x28, %rdi
movq %rdi, -0x9a8(%rbp)
callq 0xc990
movq -0x9a8(%rbp), %rax
leaq -0x4e8(%rbp), %rcx
cmpq %rcx, %rax
movq %rax, -0x9a0(%rbp)
jne 0x1467e
jmp 0x146b1
jmp 0x14cc3
movq -0x18(%rbp), %rdi
leaq 0xcf0f(%rip), %rsi      # 0x215d0
callq 0x3040
movl %eax, -0x9ac(%rbp)
jmp 0x146ce
movl -0x9ac(%rbp), %eax
cmpl $0x0, %eax
jne 0x14986
movb $0x1, -0x5f2(%rbp)
leaq -0x5a0(%rbp), %rax
movq %rax, -0x5a8(%rbp)
leaq -0x5c9(%rbp), %rdi
movq %rdi, -0x9b8(%rbp)
callq 0x33e0
movq -0x9b8(%rbp), %rdx
leaq 0x4ade(%rip), %rsi      # 0x191f1
leaq -0x5c8(%rbp), %rdi
callq 0x7340
jmp 0x14721
leaq -0x5a0(%rbp), %rdi
leaq -0x5c8(%rbp), %rsi
callq 0xc590
jmp 0x14736
leaq -0x578(%rbp), %rax
movq %rax, -0x9c8(%rbp)
movq %rax, -0x5a8(%rbp)
leaq -0x5f1(%rbp), %rdi
movq %rdi, -0x9c0(%rbp)
callq 0x33e0
movq -0x9c0(%rbp), %rdx
leaq 0x4afe(%rip), %rsi      # 0x1926a
leaq -0x5f0(%rbp), %rdi
callq 0x7340
jmp 0x1477a
movq -0x9c8(%rbp), %rdi
leaq -0x5f0(%rbp), %rsi
callq 0xc590
jmp 0x1478f
movq -0x6f8(%rbp), %rdi
movb $0x0, -0x5f2(%rbp)
leaq -0x5a0(%rbp), %rax
movq %rax, -0x550(%rbp)
movq $0x2, -0x548(%rbp)
addq $0x58, %rdi
movq -0x550(%rbp), %rsi
movq -0x548(%rbp), %rdx
callq 0x15ef0
jmp 0x147cf
leaq -0x5a0(%rbp), %rax
movq %rax, -0x9d8(%rbp)
addq $0x50, %rax
movq %rax, -0x9d0(%rbp)
movq -0x9d0(%rbp), %rdi
addq $-0x28, %rdi
movq %rdi, -0x9e0(%rbp)
callq 0xc990
movq -0x9d8(%rbp), %rcx
movq -0x9e0(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x9d0(%rbp)
jne 0x147e8
leaq -0x5f0(%rbp), %rdi
callq 0x3190
leaq -0x5f1(%rbp), %rdi
callq 0x3270
leaq -0x5c8(%rbp), %rdi
callq 0x3190
leaq -0x5c9(%rbp), %rdi
callq 0x3270
movq -0x6f8(%rbp), %rdi
movq %rdi, %rsi
addq $0x58, %rsi
callq 0x15bb0
jmp 0x1485e
jmp 0x149ae
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
jmp 0x1491d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
jmp 0x14911
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
jmp 0x14905
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
jmp 0x148f9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x5a0(%rbp), %rax
movq %rax, -0x9f0(%rbp)
addq $0x50, %rax
movq %rax, -0x9e8(%rbp)
movq -0x9e8(%rbp), %rdi
addq $-0x28, %rdi
movq %rdi, -0x9f8(%rbp)
callq 0xc990
movq -0x9f0(%rbp), %rcx
movq -0x9f8(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x9e8(%rbp)
jne 0x148c6
jmp 0x148f9
leaq -0x5f0(%rbp), %rdi
callq 0x3190
leaq -0x5f1(%rbp), %rdi
callq 0x3270
leaq -0x5c8(%rbp), %rdi
callq 0x3190
leaq -0x5c9(%rbp), %rdi
callq 0x3270
testb $0x1, -0x5f2(%rbp)
jne 0x14934
jmp 0x14981
movq -0x5a8(%rbp), %rax
leaq -0x5a0(%rbp), %rcx
cmpq %rax, %rcx
movq %rax, -0xa00(%rbp)
je 0x1497f
movq -0xa00(%rbp), %rdi
addq $-0x28, %rdi
movq %rdi, -0xa08(%rbp)
callq 0xc990
movq -0xa08(%rbp), %rax
leaq -0x5a0(%rbp), %rcx
cmpq %rcx, %rax
movq %rax, -0xa00(%rbp)
jne 0x1494e
jmp 0x14981
jmp 0x14cc3
movl $0x4, %edi
callq 0x3140
movq %rax, %rdi
movl $0x1, (%rdi)
leaq 0xbe98(%rip), %rsi      # 0x20838
xorl %eax, %eax
movl %eax, %edx
callq 0x33a0
jmp 0x14cfc
jmp 0x149b0
jmp 0x149b2
jmp 0x149b4
jmp 0x149b6
jmp 0x149b8
jmp 0x149ba
jmp 0x149bc
movq -0x6f8(%rbp), %rcx
cmpl $0x2, 0x50(%rcx)
setg %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x0, 0x50(%rcx)
setl %cl
andb $0x1, %cl
movzbl %cl, %ecx
orl %ecx, %eax
cmpl $0x0, %eax
je 0x14a0b
movl $0x4, %edi
callq 0x3140
movq %rax, %rdi
movl $0x2, (%rdi)
leaq 0xbe3b(%rip), %rsi      # 0x20838
xorl %eax, %eax
movl %eax, %edx
callq 0x33a0
jmp 0x14cfc
movq -0x6f8(%rbp), %rdi
addq $0x70, %rdi
movq %rdi, -0xa18(%rbp)
callq 0xfd70
movq -0xa18(%rbp), %rdi
movq %rax, -0x600(%rbp)
callq 0xfd70
movq %rax, %rcx
movq -0x6f8(%rbp), %rax
movq %rcx, -0x610(%rbp)
movslq 0x50(%rax), %rsi
leaq -0x610(%rbp), %rdi
callq 0xfda0
movq -0xa18(%rbp), %rdi
movq %rax, -0x608(%rbp)
callq 0xfde0
movq %rax, -0x618(%rbp)
movq -0x600(%rbp), %rdi
movq -0x608(%rbp), %rsi
movq -0x618(%rbp), %rdx
callq 0xfd10
movq %rax, -0xa10(%rbp)
jmp 0x14a93
movq -0xa10(%rbp), %rax
movq %rax, -0x620(%rbp)
movq -0x10(%rbp), %rsi
movq (%rsi), %rax
movq (%rax), %rax
leaq -0x660(%rbp), %rdi
callq *%rax
jmp 0x14ab6
movq -0x18(%rbp), %rdx
leaq -0x640(%rbp), %rdi
leaq -0x660(%rbp), %rsi
callq 0xfc40
jmp 0x14acf
movq -0x6f8(%rbp), %rdi
addq $0x10, %rdi
leaq -0x640(%rbp), %rsi
movq %rsi, -0xa20(%rbp)
callq 0x32a0
movq -0xa20(%rbp), %rdi
callq 0x3190
leaq -0x660(%rbp), %rdi
callq 0x3190
movq -0x6f8(%rbp), %rdi
movq -0x18(%rbp), %rsi
addq $0x30, %rdi
callq 0x3050
jmp 0x14b1b
movq -0x6f8(%rbp), %rcx
movq (%rcx), %rax
cmpq 0x8(%rcx), %rax
je 0x14bee
movq -0x6f8(%rbp), %rax
movq 0x8(%rax), %rsi
movq (%rsi), %rax
movq (%rax), %rax
leaq -0x6a0(%rbp), %rdi
callq *%rax
jmp 0x14b4b
leaq 0x491a(%rip), %rsi      # 0x1946c
leaq -0x680(%rbp), %rdi
leaq -0x6a0(%rbp), %rdx
callq 0xfe10
jmp 0x14b67
movq -0x6f8(%rbp), %rdi
addq $0x10, %rdi
leaq -0x680(%rbp), %rsi
callq 0x32d0
jmp 0x14b80
leaq -0x680(%rbp), %rdi
callq 0x3190
leaq -0x6a0(%rbp), %rdi
callq 0x3190
jmp 0x14bee
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x660(%rbp), %rdi
callq 0x3190
jmp 0x14cc3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
jmp 0x14bdd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x680(%rbp), %rdi
callq 0x3190
leaq -0x6a0(%rbp), %rdi
callq 0x3190
jmp 0x14cc3
movq -0x6f8(%rbp), %rax
cmpl $0x0, 0x50(%rax)
je 0x14cba
movq -0x6f8(%rbp), %rdi
addq $0x70, %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0xa4f0
movq %rax, -0xa28(%rbp)
jmp 0x14c1c
movq -0xa28(%rbp), %rax
movq (%rax), %rsi
movq (%rsi), %rax
movq (%rax), %rax
leaq -0x6e0(%rbp), %rdi
callq *%rax
jmp 0x14c37
leaq 0x482e(%rip), %rsi      # 0x1946c
leaq -0x6c0(%rbp), %rdi
leaq -0x6e0(%rbp), %rdx
callq 0xfe10
jmp 0x14c53
movq -0x6f8(%rbp), %rdi
addq $0x10, %rdi
leaq -0x6c0(%rbp), %rsi
callq 0x32d0
jmp 0x14c6c
leaq -0x6c0(%rbp), %rdi
callq 0x3190
leaq -0x6e0(%rbp), %rdi
callq 0x3190
jmp 0x14cba
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
jmp 0x14cac
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x6c0(%rbp), %rdi
callq 0x3190
leaq -0x6e0(%rbp), %rdi
callq 0x3190
jmp 0x14cc3
addq $0xa30, %rsp            # imm = 0xA30
popq %rbp
retq
movq -0x6f0(%rbp), %rdi
callq 0x72e0
movq -0x700(%rbp), %rdi
callq 0xf660
movq -0x708(%rbp), %rdi
callq 0x3190
movq -0x710(%rbp), %rdi
callq 0x3190
movq -0x30(%rbp), %rdi
callq 0x33d0
nopl (%rax)