// File: Wombozo[P]harmony/src/Chord.cpp
// Function: Chord::Chord(Note*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, Note*, int)
Chord::Chord(Note *n, const std::string &str, Note *b, int inv) : bass(b), inversion(inv)
{
    const std::string *ret = std::find(std::begin(triads), std::end(triads), str);
    if (ret != std::end(triads))
    {
        t = new Triad(n, str, b, inv);
        root = t->getRoot();
        bass = t->getBass();
        inversion = t->getInversion();
        name = t->getName();
        notes = t->notes;
    }
    else
    {
        if (!str.compare(chords[0]))
        {
            t = new Triad(n, "", b);
            notes = t->notes;
            notes.push_back(Interval("minor seventh").getNextSorted(n));
        }
        else if (!str.compare(chords[1]))
        {
            t = new Triad(n, "", b);
            notes = t->notes;
            notes.push_back(Interval("major seventh").getNextSorted(n));
        }
        else if (!str.compare(chords[2]))
        {
            t = new Triad(n, "", b);
            notes = t->notes;
            notes.push_back(Interval("major sixth").getNextSorted(n));
        }
        else if (!str.compare(chords[3]))
        {
            t = new Triad(n, "m", b);
            notes = t->notes;
            notes.push_back(Interval("minor seventh").getNextSorted(n));
        }
        else if (!str.compare(chords[4]))
        {
            t = new Triad(n, "m", b);
            notes = t->notes;
            notes.push_back(Interval("major seventh").getNextSorted(n));
        }
        else if (!str.compare(chords[5]))
        {
            t = new Triad(n, "m", b);
            notes = t->notes;
            notes.push_back(Interval("major sixth").getNextSorted(n));
        }
        else if (!str.compare(chords[6]))
        {
            t = new Triad(n, "dim", b);
            notes = t->notes;
            notes.push_back(Interval("minor seventh").getNextSorted(n));
        }
        else if (!str.compare(chords[7]))
        {
            t = new Triad(n, "b5", b);
            notes = t->notes;
            notes.push_back(Interval("minor seventh").getNextSorted(n));
        }
        else if (!str.compare(chords[8]))
        {
            t = new Triad(n, "dim", b);
            notes = t->notes;
            notes.push_back(Interval("diminished seventh").getNextSorted(n));
        }
        else
            throw E_CHORD_UNKNOWN;
        root = t->getRoot();
        if (inv > 3 | inv < 0)
            throw E_INVERSION;
        std::rotate(notes.begin(), notes.begin() + inversion, notes.end());

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

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x850, %rsp            # imm = 0x850
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, -0x5f0(%rbp)
movq -0x20(%rbp), %rax
movq %rax, 0x10(%rdi)
movl -0x24(%rbp), %eax
movl %eax, 0x18(%rdi)
addq $0x20, %rdi
movq %rdi, -0x600(%rbp)
callq 0x3300
movq -0x5f0(%rbp), %rdi
addq $0x40, %rdi
movq %rdi, -0x5f8(%rbp)
callq 0xf520
movq -0x5f0(%rbp), %rdi
addq $0x58, %rdi
movq %rdi, -0x5e8(%rbp)
callq 0x72c0
leaq 0x14a33(%rip), %rdi     # 0x214f0
movq %rdi, -0x5e0(%rbp)
callq 0xfce0
movq -0x5e0(%rbp), %rdi
movq %rax, -0x5d8(%rbp)
callq 0xfcf0
movq -0x5d8(%rbp), %rdi
movq %rax, %rsi
movq -0x18(%rbp), %rdx
callq 0xfc90
movq %rax, -0x5d0(%rbp)
jmp 0xcaf8
movq -0x5d0(%rbp), %rax
movq %rax, -0x30(%rbp)
movq -0x30(%rbp), %rax
movq %rax, -0x608(%rbp)
leaq 0x149db(%rip), %rdi     # 0x214f0
callq 0xfcf0
movq %rax, %rcx
movq -0x608(%rbp), %rax
cmpq %rcx, %rax
je 0xcc60
movl $0x88, %edi
callq 0x3230
movq %rax, -0x610(%rbp)
jmp 0xcb40
movq -0x610(%rbp), %rdi
movq -0x10(%rbp), %rsi
movq -0x18(%rbp), %rdx
movq -0x20(%rbp), %rcx
movl -0x24(%rbp), %r8d
callq 0x13270
jmp 0xcb5e
movq -0x5f0(%rbp), %rax
movq -0x610(%rbp), %rcx
movq %rcx, 0x8(%rax)
movq 0x8(%rax), %rdi
callq 0x15e30
movq %rax, -0x618(%rbp)
jmp 0xcb82
movq -0x5f0(%rbp), %rax
movq -0x618(%rbp), %rcx
movq %rcx, (%rax)
movq 0x8(%rax), %rdi
callq 0x15e50
movq %rax, -0x620(%rbp)
jmp 0xcba5
movq -0x5f0(%rbp), %rax
movq -0x620(%rbp), %rcx
movq %rcx, 0x10(%rax)
movq 0x8(%rax), %rdi
callq 0x15ea0
movl %eax, -0x624(%rbp)
jmp 0xcbc8
movq -0x5f0(%rbp), %rax
movl -0x624(%rbp), %ecx
movl %ecx, 0x18(%rax)
movq 0x8(%rax), %rsi
leaq -0x60(%rbp), %rdi
callq 0x15e00
jmp 0xcbe7
movq -0x5f0(%rbp), %rdi
addq $0x20, %rdi
leaq -0x60(%rbp), %rsi
movq %rsi, -0x630(%rbp)
callq 0x32a0
movq -0x630(%rbp), %rdi
callq 0x3190
movq -0x5f0(%rbp), %rdi
movq 0x8(%rdi), %rsi
addq $0x70, %rsi
addq $0x58, %rdi
callq 0xf6c0
jmp 0xcc28
jmp 0xe3ff
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
jmp 0xe408
movq -0x610(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
movl $0x88, %esi
callq 0x3240
jmp 0xe408
movq -0x18(%rbp), %rdi
leaq 0x14755(%rip), %rsi     # 0x213c0
callq 0x3040
movl %eax, -0x634(%rbp)
jmp 0xcc78
movl -0x634(%rbp), %eax
cmpl $0x0, %eax
jne 0xce99
movl $0x88, %edi
callq 0x3230
movq %rax, -0x640(%rbp)
jmp 0xcc9a
movb $0x1, -0x82(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x650(%rbp)
leaq -0x81(%rbp), %rdi
movq %rdi, -0x648(%rbp)
callq 0x33e0
movq -0x648(%rbp), %rdx
leaq 0xc8d5(%rip), %rsi      # 0x195a2
leaq -0x80(%rbp), %rdi
callq 0x7340
jmp 0xccd8
movq -0x650(%rbp), %rsi
movq -0x640(%rbp), %rdi
movq -0x20(%rbp), %rcx
leaq -0x80(%rbp), %rdx
callq 0x14d40
jmp 0xccf5
movq -0x5f0(%rbp), %rax
movq -0x640(%rbp), %rcx
movb $0x0, -0x82(%rbp)
movq %rcx, 0x8(%rax)
leaq -0x80(%rbp), %rdi
callq 0x3190
leaq -0x81(%rbp), %rdi
callq 0x3270
movq -0x5f0(%rbp), %rdi
movq 0x8(%rdi), %rsi
addq $0x70, %rsi
addq $0x58, %rdi
callq 0xf6c0
jmp 0xcd3d
movq -0x5f0(%rbp), %rax
addq $0x58, %rax
movq %rax, -0x660(%rbp)
leaq -0xd9(%rbp), %rdi
movq %rdi, -0x658(%rbp)
callq 0x33e0
movq -0x658(%rbp), %rdx
leaq 0xc556(%rip), %rsi      # 0x192c6
leaq -0xd8(%rbp), %rdi
callq 0x7340
jmp 0xcd7e
leaq -0xb8(%rbp), %rdi
leaq -0xd8(%rbp), %rsi
callq 0xc590
jmp 0xcd93
movq -0x10(%rbp), %rsi
leaq -0xb8(%rbp), %rdi
callq 0xbf20
movq %rax, -0x668(%rbp)
jmp 0xcdac
movq -0x660(%rbp), %rdi
movq -0x668(%rbp), %rax
movq %rax, -0x90(%rbp)
leaq -0x90(%rbp), %rsi
callq 0xfc10
jmp 0xcdcf
leaq -0xb8(%rbp), %rdi
callq 0xc990
leaq -0xd8(%rbp), %rdi
callq 0x3190
leaq -0xd9(%rbp), %rdi
callq 0x3270
jmp 0xe0f9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
jmp 0xce1b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0x80(%rbp), %rdi
callq 0x3190
leaq -0x81(%rbp), %rdi
callq 0x3270
testb $0x1, -0x82(%rbp)
jne 0xce32
jmp 0xce43
movq -0x640(%rbp), %rdi
movl $0x88, %esi
callq 0x3240
jmp 0xe408
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
jmp 0xce88
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
jmp 0xce7c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0xb8(%rbp), %rdi
callq 0xc990
leaq -0xd8(%rbp), %rdi
callq 0x3190
leaq -0xd9(%rbp), %rdi
callq 0x3270
jmp 0xe408
movq -0x18(%rbp), %rdi
leaq 0x1453c(%rip), %rsi     # 0x213e0
callq 0x3040
movl %eax, -0x66c(%rbp)
jmp 0xceb1
movl -0x66c(%rbp), %eax
cmpl $0x0, %eax
jne 0xd0de
movl $0x88, %edi
callq 0x3230
movq %rax, -0x678(%rbp)
jmp 0xced3
movb $0x1, -0x102(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x688(%rbp)
leaq -0x101(%rbp), %rdi
movq %rdi, -0x680(%rbp)
callq 0x33e0
movq -0x680(%rbp), %rdx
leaq 0xc69c(%rip), %rsi      # 0x195a2
leaq -0x100(%rbp), %rdi
callq 0x7340
jmp 0xcf14
movq -0x688(%rbp), %rsi
movq -0x678(%rbp), %rdi
movq -0x20(%rbp), %rcx
leaq -0x100(%rbp), %rdx
callq 0x14d40
jmp 0xcf34
movq -0x5f0(%rbp), %rax
movq -0x678(%rbp), %rcx
movb $0x0, -0x102(%rbp)
movq %rcx, 0x8(%rax)
leaq -0x100(%rbp), %rdi
callq 0x3190
leaq -0x101(%rbp), %rdi
callq 0x3270
movq -0x5f0(%rbp), %rdi
movq 0x8(%rdi), %rsi
addq $0x70, %rsi
addq $0x58, %rdi
callq 0xf6c0
jmp 0xcf7f
movq -0x5f0(%rbp), %rax
addq $0x58, %rax
movq %rax, -0x698(%rbp)
leaq -0x159(%rbp), %rdi
movq %rdi, -0x690(%rbp)
callq 0x33e0
movq -0x690(%rbp), %rdx
leaq 0xc322(%rip), %rsi      # 0x192d4
leaq -0x158(%rbp), %rdi
callq 0x7340
jmp 0xcfc0
leaq -0x138(%rbp), %rdi
leaq -0x158(%rbp), %rsi
callq 0xc590
jmp 0xcfd5
movq -0x10(%rbp), %rsi
leaq -0x138(%rbp), %rdi
callq 0xbf20
movq %rax, -0x6a0(%rbp)
jmp 0xcfee
movq -0x698(%rbp), %rdi
movq -0x6a0(%rbp), %rax
movq %rax, -0x110(%rbp)
leaq -0x110(%rbp), %rsi
callq 0xfc10
jmp 0xd011
leaq -0x138(%rbp), %rdi
callq 0xc990
leaq -0x158(%rbp), %rdi
callq 0x3190
leaq -0x159(%rbp), %rdi
callq 0x3270
jmp 0xe0f7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
jmp 0xd060
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0x100(%rbp), %rdi
callq 0x3190
leaq -0x101(%rbp), %rdi
callq 0x3270
testb $0x1, -0x102(%rbp)
jne 0xd077
jmp 0xd088
movq -0x678(%rbp), %rdi
movl $0x88, %esi
callq 0x3240
jmp 0xe408
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
jmp 0xd0cd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
jmp 0xd0c1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0x138(%rbp), %rdi
callq 0xc990
leaq -0x158(%rbp), %rdi
callq 0x3190
leaq -0x159(%rbp), %rdi
callq 0x3270
jmp 0xe408
movq -0x18(%rbp), %rdi
leaq 0x14317(%rip), %rsi     # 0x21400
callq 0x3040
movl %eax, -0x6a4(%rbp)
jmp 0xd0f6
movl -0x6a4(%rbp), %eax
cmpl $0x0, %eax
jne 0xd323
movl $0x88, %edi
callq 0x3230
movq %rax, -0x6b0(%rbp)
jmp 0xd118
movb $0x1, -0x182(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x6c0(%rbp)
leaq -0x181(%rbp), %rdi
movq %rdi, -0x6b8(%rbp)
callq 0x33e0
movq -0x6b8(%rbp), %rdx
leaq 0xc457(%rip), %rsi      # 0x195a2
leaq -0x180(%rbp), %rdi
callq 0x7340
jmp 0xd159
movq -0x6c0(%rbp), %rsi
movq -0x6b0(%rbp), %rdi
movq -0x20(%rbp), %rcx
leaq -0x180(%rbp), %rdx
callq 0x14d40
jmp 0xd179
movq -0x5f0(%rbp), %rax
movq -0x6b0(%rbp), %rcx
movb $0x0, -0x182(%rbp)
movq %rcx, 0x8(%rax)
leaq -0x180(%rbp), %rdi
callq 0x3190
leaq -0x181(%rbp), %rdi
callq 0x3270
movq -0x5f0(%rbp), %rdi
movq 0x8(%rdi), %rsi
addq $0x70, %rsi
addq $0x58, %rdi
callq 0xf6c0
jmp 0xd1c4
movq -0x5f0(%rbp), %rax
addq $0x58, %rax
movq %rax, -0x6d0(%rbp)
leaq -0x1d9(%rbp), %rdi
movq %rdi, -0x6c8(%rbp)
callq 0x33e0
movq -0x6c8(%rbp), %rdx
leaq 0xc0a0(%rip), %rsi      # 0x19297
leaq -0x1d8(%rbp), %rdi
callq 0x7340
jmp 0xd205
leaq -0x1b8(%rbp), %rdi
leaq -0x1d8(%rbp), %rsi
callq 0xc590
jmp 0xd21a
movq -0x10(%rbp), %rsi
leaq -0x1b8(%rbp), %rdi
callq 0xbf20
movq %rax, -0x6d8(%rbp)
jmp 0xd233
movq -0x6d0(%rbp), %rdi
movq -0x6d8(%rbp), %rax
movq %rax, -0x190(%rbp)
leaq -0x190(%rbp), %rsi
callq 0xfc10
jmp 0xd256
leaq -0x1b8(%rbp), %rdi
callq 0xc990
leaq -0x1d8(%rbp), %rdi
callq 0x3190
leaq -0x1d9(%rbp), %rdi
callq 0x3270
jmp 0xe0f5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
jmp 0xd2a5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0x180(%rbp), %rdi
callq 0x3190
leaq -0x181(%rbp), %rdi
callq 0x3270
testb $0x1, -0x182(%rbp)
jne 0xd2bc
jmp 0xd2cd
movq -0x6b0(%rbp), %rdi
movl $0x88, %esi
callq 0x3240
jmp 0xe408
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
jmp 0xd312
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
jmp 0xd306
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0x1b8(%rbp), %rdi
callq 0xc990
leaq -0x1d8(%rbp), %rdi
callq 0x3190
leaq -0x1d9(%rbp), %rdi
callq 0x3270
jmp 0xe408
movq -0x18(%rbp), %rdi
leaq 0x140f2(%rip), %rsi     # 0x21420
callq 0x3040
movl %eax, -0x6dc(%rbp)
jmp 0xd33b
movl -0x6dc(%rbp), %eax
cmpl $0x0, %eax
jne 0xd568
movl $0x88, %edi
callq 0x3230
movq %rax, -0x6e8(%rbp)
jmp 0xd35d
movb $0x1, -0x202(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x6f8(%rbp)
leaq -0x201(%rbp), %rdi
movq %rdi, -0x6f0(%rbp)
callq 0x33e0
movq -0x6f0(%rbp), %rdx
leaq 0xbf62(%rip), %rsi      # 0x192f2
leaq -0x200(%rbp), %rdi
callq 0x7340
jmp 0xd39e
movq -0x6f8(%rbp), %rsi
movq -0x6e8(%rbp), %rdi
movq -0x20(%rbp), %rcx
leaq -0x200(%rbp), %rdx
callq 0x14d40
jmp 0xd3be
movq -0x5f0(%rbp), %rax
movq -0x6e8(%rbp), %rcx
movb $0x0, -0x202(%rbp)
movq %rcx, 0x8(%rax)
leaq -0x200(%rbp), %rdi
callq 0x3190
leaq -0x201(%rbp), %rdi
callq 0x3270
movq -0x5f0(%rbp), %rdi
movq 0x8(%rdi), %rsi
addq $0x70, %rsi
addq $0x58, %rdi
callq 0xf6c0
jmp 0xd409
movq -0x5f0(%rbp), %rax
addq $0x58, %rax
movq %rax, -0x708(%rbp)
leaq -0x259(%rbp), %rdi
movq %rdi, -0x700(%rbp)
callq 0x33e0
movq -0x700(%rbp), %rdx
leaq 0xbe8a(%rip), %rsi      # 0x192c6
leaq -0x258(%rbp), %rdi
callq 0x7340
jmp 0xd44a
leaq -0x238(%rbp), %rdi
leaq -0x258(%rbp), %rsi
callq 0xc590
jmp 0xd45f
movq -0x10(%rbp), %rsi
leaq -0x238(%rbp), %rdi
callq 0xbf20
movq %rax, -0x710(%rbp)
jmp 0xd478
movq -0x708(%rbp), %rdi
movq -0x710(%rbp), %rax
movq %rax, -0x210(%rbp)
leaq -0x210(%rbp), %rsi
callq 0xfc10
jmp 0xd49b
leaq -0x238(%rbp), %rdi
callq 0xc990
leaq -0x258(%rbp), %rdi
callq 0x3190
leaq -0x259(%rbp), %rdi
callq 0x3270
jmp 0xe0f3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
jmp 0xd4ea
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0x200(%rbp), %rdi
callq 0x3190
leaq -0x201(%rbp), %rdi
callq 0x3270
testb $0x1, -0x202(%rbp)
jne 0xd501
jmp 0xd512
movq -0x6e8(%rbp), %rdi
movl $0x88, %esi
callq 0x3240
jmp 0xe408
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
jmp 0xd557
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
jmp 0xd54b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0x238(%rbp), %rdi
callq 0xc990
leaq -0x258(%rbp), %rdi
callq 0x3190
leaq -0x259(%rbp), %rdi
callq 0x3270
jmp 0xe408
movq -0x18(%rbp), %rdi
leaq 0x13ecd(%rip), %rsi     # 0x21440
callq 0x3040
movl %eax, -0x714(%rbp)
jmp 0xd580
movl -0x714(%rbp), %eax
cmpl $0x0, %eax
jne 0xd7ad
movl $0x88, %edi
callq 0x3230
movq %rax, -0x720(%rbp)
jmp 0xd5a2
movb $0x1, -0x282(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x730(%rbp)
leaq -0x281(%rbp), %rdi
movq %rdi, -0x728(%rbp)
callq 0x33e0
movq -0x728(%rbp), %rdx
leaq 0xbd1d(%rip), %rsi      # 0x192f2
leaq -0x280(%rbp), %rdi
callq 0x7340
jmp 0xd5e3
movq -0x730(%rbp), %rsi
movq -0x720(%rbp), %rdi
movq -0x20(%rbp), %rcx
leaq -0x280(%rbp), %rdx
callq 0x14d40
jmp 0xd603
movq -0x5f0(%rbp), %rax
movq -0x720(%rbp), %rcx
movb $0x0, -0x282(%rbp)
movq %rcx, 0x8(%rax)
leaq -0x280(%rbp), %rdi
callq 0x3190
leaq -0x281(%rbp), %rdi
callq 0x3270
movq -0x5f0(%rbp), %rdi
movq 0x8(%rdi), %rsi
addq $0x70, %rsi
addq $0x58, %rdi
callq 0xf6c0
jmp 0xd64e
movq -0x5f0(%rbp), %rax
addq $0x58, %rax
movq %rax, -0x740(%rbp)
leaq -0x2d9(%rbp), %rdi
movq %rdi, -0x738(%rbp)
callq 0x33e0
movq -0x738(%rbp), %rdx
leaq 0xbc53(%rip), %rsi      # 0x192d4
leaq -0x2d8(%rbp), %rdi
callq 0x7340
jmp 0xd68f
leaq -0x2b8(%rbp), %rdi
leaq -0x2d8(%rbp), %rsi
callq 0xc590
jmp 0xd6a4
movq -0x10(%rbp), %rsi
leaq -0x2b8(%rbp), %rdi
callq 0xbf20
movq %rax, -0x748(%rbp)
jmp 0xd6bd
movq -0x740(%rbp), %rdi
movq -0x748(%rbp), %rax
movq %rax, -0x290(%rbp)
leaq -0x290(%rbp), %rsi
callq 0xfc10
jmp 0xd6e0
leaq -0x2b8(%rbp), %rdi
callq 0xc990
leaq -0x2d8(%rbp), %rdi
callq 0x3190
leaq -0x2d9(%rbp), %rdi
callq 0x3270
jmp 0xe0f1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
jmp 0xd72f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0x280(%rbp), %rdi
callq 0x3190
leaq -0x281(%rbp), %rdi
callq 0x3270
testb $0x1, -0x282(%rbp)
jne 0xd746
jmp 0xd757
movq -0x720(%rbp), %rdi
movl $0x88, %esi
callq 0x3240
jmp 0xe408
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
jmp 0xd79c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
jmp 0xd790
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0x2b8(%rbp), %rdi
callq 0xc990
leaq -0x2d8(%rbp), %rdi
callq 0x3190
leaq -0x2d9(%rbp), %rdi
callq 0x3270
jmp 0xe408
movq -0x18(%rbp), %rdi
leaq 0x13ca8(%rip), %rsi     # 0x21460
callq 0x3040
movl %eax, -0x74c(%rbp)
jmp 0xd7c5
movl -0x74c(%rbp), %eax
cmpl $0x0, %eax
jne 0xd9f2
movl $0x88, %edi
callq 0x3230
movq %rax, -0x758(%rbp)
jmp 0xd7e7
movb $0x1, -0x302(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x768(%rbp)
leaq -0x301(%rbp), %rdi
movq %rdi, -0x760(%rbp)
callq 0x33e0
movq -0x760(%rbp), %rdx
leaq 0xbad8(%rip), %rsi      # 0x192f2
leaq -0x300(%rbp), %rdi
callq 0x7340
jmp 0xd828
movq -0x768(%rbp), %rsi
movq -0x758(%rbp), %rdi
movq -0x20(%rbp), %rcx
leaq -0x300(%rbp), %rdx
callq 0x14d40
jmp 0xd848
movq -0x5f0(%rbp), %rax
movq -0x758(%rbp), %rcx
movb $0x0, -0x302(%rbp)
movq %rcx, 0x8(%rax)
leaq -0x300(%rbp), %rdi
callq 0x3190
leaq -0x301(%rbp), %rdi
callq 0x3270
movq -0x5f0(%rbp), %rdi
movq 0x8(%rdi), %rsi
addq $0x70, %rsi
addq $0x58, %rdi
callq 0xf6c0
jmp 0xd893
movq -0x5f0(%rbp), %rax
addq $0x58, %rax
movq %rax, -0x778(%rbp)
leaq -0x359(%rbp), %rdi
movq %rdi, -0x770(%rbp)
callq 0x33e0
movq -0x770(%rbp), %rdx
leaq 0xb9d1(%rip), %rsi      # 0x19297
leaq -0x358(%rbp), %rdi
callq 0x7340
jmp 0xd8d4
leaq -0x338(%rbp), %rdi
leaq -0x358(%rbp), %rsi
callq 0xc590
jmp 0xd8e9
movq -0x10(%rbp), %rsi
leaq -0x338(%rbp), %rdi
callq 0xbf20
movq %rax, -0x780(%rbp)
jmp 0xd902
movq -0x778(%rbp), %rdi
movq -0x780(%rbp), %rax
movq %rax, -0x310(%rbp)
leaq -0x310(%rbp), %rsi
callq 0xfc10
jmp 0xd925
leaq -0x338(%rbp), %rdi
callq 0xc990
leaq -0x358(%rbp), %rdi
callq 0x3190
leaq -0x359(%rbp), %rdi
callq 0x3270
jmp 0xe0ef
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
jmp 0xd974
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0x300(%rbp), %rdi
callq 0x3190
leaq -0x301(%rbp), %rdi
callq 0x3270
testb $0x1, -0x302(%rbp)
jne 0xd98b
jmp 0xd99c
movq -0x758(%rbp), %rdi
movl $0x88, %esi
callq 0x3240
jmp 0xe408
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
jmp 0xd9e1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
jmp 0xd9d5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0x338(%rbp), %rdi
callq 0xc990
leaq -0x358(%rbp), %rdi
callq 0x3190
leaq -0x359(%rbp), %rdi
callq 0x3270
jmp 0xe408
movq -0x18(%rbp), %rdi
leaq 0x13a83(%rip), %rsi     # 0x21480
callq 0x3040
movl %eax, -0x784(%rbp)
jmp 0xda0a
movl -0x784(%rbp), %eax
cmpl $0x0, %eax
jne 0xdc37
movl $0x88, %edi
callq 0x3230
movq %rax, -0x790(%rbp)
jmp 0xda2c
movb $0x1, -0x382(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x7a0(%rbp)
leaq -0x381(%rbp), %rdi
movq %rdi, -0x798(%rbp)
callq 0x33e0
movq -0x798(%rbp), %rdx
leaq 0xb891(%rip), %rsi      # 0x192f0
leaq -0x380(%rbp), %rdi
callq 0x7340
jmp 0xda6d
movq -0x7a0(%rbp), %rsi
movq -0x790(%rbp), %rdi
movq -0x20(%rbp), %rcx
leaq -0x380(%rbp), %rdx
callq 0x14d40
jmp 0xda8d
movq -0x5f0(%rbp), %rax
movq -0x790(%rbp), %rcx
movb $0x0, -0x382(%rbp)
movq %rcx, 0x8(%rax)
leaq -0x380(%rbp), %rdi
callq 0x3190
leaq -0x381(%rbp), %rdi
callq 0x3270
movq -0x5f0(%rbp), %rdi
movq 0x8(%rdi), %rsi
addq $0x70, %rsi
addq $0x58, %rdi
callq 0xf6c0
jmp 0xdad8
movq -0x5f0(%rbp), %rax
addq $0x58, %rax
movq %rax, -0x7b0(%rbp)
leaq -0x3d9(%rbp), %rdi
movq %rdi, -0x7a8(%rbp)
callq 0x33e0
movq -0x7a8(%rbp), %rdx
leaq 0xb7bb(%rip), %rsi      # 0x192c6
leaq -0x3d8(%rbp), %rdi
callq 0x7340
jmp 0xdb19
leaq -0x3b8(%rbp), %rdi
leaq -0x3d8(%rbp), %rsi
callq 0xc590
jmp 0xdb2e
movq -0x10(%rbp), %rsi
leaq -0x3b8(%rbp), %rdi
callq 0xbf20
movq %rax, -0x7b8(%rbp)
jmp 0xdb47
movq -0x7b0(%rbp), %rdi
movq -0x7b8(%rbp), %rax
movq %rax, -0x390(%rbp)
leaq -0x390(%rbp), %rsi
callq 0xfc10
jmp 0xdb6a
leaq -0x3b8(%rbp), %rdi
callq 0xc990
leaq -0x3d8(%rbp), %rdi
callq 0x3190
leaq -0x3d9(%rbp), %rdi
callq 0x3270
jmp 0xe0ed
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
jmp 0xdbb9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0x380(%rbp), %rdi
callq 0x3190
leaq -0x381(%rbp), %rdi
callq 0x3270
testb $0x1, -0x382(%rbp)
jne 0xdbd0
jmp 0xdbe1
movq -0x790(%rbp), %rdi
movl $0x88, %esi
callq 0x3240
jmp 0xe408
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
jmp 0xdc26
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
jmp 0xdc1a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0x3b8(%rbp), %rdi
callq 0xc990
leaq -0x3d8(%rbp), %rdi
callq 0x3190
leaq -0x3d9(%rbp), %rdi
callq 0x3270
jmp 0xe408
movq -0x18(%rbp), %rdi
leaq 0x1385e(%rip), %rsi     # 0x214a0
callq 0x3040
movl %eax, -0x7bc(%rbp)
jmp 0xdc4f
movl -0x7bc(%rbp), %eax
cmpl $0x0, %eax
jne 0xde7c
movl $0x88, %edi
callq 0x3230
movq %rax, -0x7c8(%rbp)
jmp 0xdc71
movb $0x1, -0x402(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x7d8(%rbp)
leaq -0x401(%rbp), %rdi
movq %rdi, -0x7d0(%rbp)
callq 0x33e0
movq -0x7d0(%rbp), %rdx
leaq 0xb671(%rip), %rsi      # 0x19315
leaq -0x400(%rbp), %rdi
callq 0x7340
jmp 0xdcb2
movq -0x7d8(%rbp), %rsi
movq -0x7c8(%rbp), %rdi
movq -0x20(%rbp), %rcx
leaq -0x400(%rbp), %rdx
callq 0x14d40
jmp 0xdcd2
movq -0x5f0(%rbp), %rax
movq -0x7c8(%rbp), %rcx
movb $0x0, -0x402(%rbp)
movq %rcx, 0x8(%rax)
leaq -0x400(%rbp), %rdi
callq 0x3190
leaq -0x401(%rbp), %rdi
callq 0x3270
movq -0x5f0(%rbp), %rdi
movq 0x8(%rdi), %rsi
addq $0x70, %rsi
addq $0x58, %rdi
callq 0xf6c0
jmp 0xdd1d
movq -0x5f0(%rbp), %rax
addq $0x58, %rax
movq %rax, -0x7e8(%rbp)
leaq -0x459(%rbp), %rdi
movq %rdi, -0x7e0(%rbp)
callq 0x33e0
movq -0x7e0(%rbp), %rdx
leaq 0xb576(%rip), %rsi      # 0x192c6
leaq -0x458(%rbp), %rdi
callq 0x7340
jmp 0xdd5e
leaq -0x438(%rbp), %rdi
leaq -0x458(%rbp), %rsi
callq 0xc590
jmp 0xdd73
movq -0x10(%rbp), %rsi
leaq -0x438(%rbp), %rdi
callq 0xbf20
movq %rax, -0x7f0(%rbp)
jmp 0xdd8c
movq -0x7e8(%rbp), %rdi
movq -0x7f0(%rbp), %rax
movq %rax, -0x410(%rbp)
leaq -0x410(%rbp), %rsi
callq 0xfc10
jmp 0xddaf
leaq -0x438(%rbp), %rdi
callq 0xc990
leaq -0x458(%rbp), %rdi
callq 0x3190
leaq -0x459(%rbp), %rdi
callq 0x3270
jmp 0xe0eb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
jmp 0xddfe
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0x400(%rbp), %rdi
callq 0x3190
leaq -0x401(%rbp), %rdi
callq 0x3270
testb $0x1, -0x402(%rbp)
jne 0xde15
jmp 0xde26
movq -0x7c8(%rbp), %rdi
movl $0x88, %esi
callq 0x3240
jmp 0xe408
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
jmp 0xde6b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
jmp 0xde5f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0x438(%rbp), %rdi
callq 0xc990
leaq -0x458(%rbp), %rdi
callq 0x3190
leaq -0x459(%rbp), %rdi
callq 0x3270
jmp 0xe408
movq -0x18(%rbp), %rdi
leaq 0x13639(%rip), %rsi     # 0x214c0
callq 0x3040
movl %eax, -0x7f4(%rbp)
jmp 0xde94
movl -0x7f4(%rbp), %eax
cmpl $0x0, %eax
jne 0xe0c1
movl $0x88, %edi
callq 0x3230
movq %rax, -0x800(%rbp)
jmp 0xdeb6
movb $0x1, -0x482(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x810(%rbp)
leaq -0x481(%rbp), %rdi
movq %rdi, -0x808(%rbp)
callq 0x33e0
movq -0x808(%rbp), %rdx
leaq 0xb407(%rip), %rsi      # 0x192f0
leaq -0x480(%rbp), %rdi
callq 0x7340
jmp 0xdef7
movq -0x810(%rbp), %rsi
movq -0x800(%rbp), %rdi
movq -0x20(%rbp), %rcx
leaq -0x480(%rbp), %rdx
callq 0x14d40
jmp 0xdf17
movq -0x5f0(%rbp), %rax
movq -0x800(%rbp), %rcx
movb $0x0, -0x482(%rbp)
movq %rcx, 0x8(%rax)
leaq -0x480(%rbp), %rdi
callq 0x3190
leaq -0x481(%rbp), %rdi
callq 0x3270
movq -0x5f0(%rbp), %rdi
movq 0x8(%rdi), %rsi
addq $0x70, %rsi
addq $0x58, %rdi
callq 0xf6c0
jmp 0xdf62
movq -0x5f0(%rbp), %rax
addq $0x58, %rax
movq %rax, -0x820(%rbp)
leaq -0x4d9(%rbp), %rdi
movq %rdi, -0x818(%rbp)
callq 0x33e0
movq -0x818(%rbp), %rdx
leaq 0xb31e(%rip), %rsi      # 0x192b3
leaq -0x4d8(%rbp), %rdi
callq 0x7340
jmp 0xdfa3
leaq -0x4b8(%rbp), %rdi
leaq -0x4d8(%rbp), %rsi
callq 0xc590
jmp 0xdfb8
movq -0x10(%rbp), %rsi
leaq -0x4b8(%rbp), %rdi
callq 0xbf20
movq %rax, -0x828(%rbp)
jmp 0xdfd1
movq -0x820(%rbp), %rdi
movq -0x828(%rbp), %rax
movq %rax, -0x490(%rbp)
leaq -0x490(%rbp), %rsi
callq 0xfc10
jmp 0xdff4
leaq -0x4b8(%rbp), %rdi
callq 0xc990
leaq -0x4d8(%rbp), %rdi
callq 0x3190
leaq -0x4d9(%rbp), %rdi
callq 0x3270
jmp 0xe0e9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
jmp 0xe043
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0x480(%rbp), %rdi
callq 0x3190
leaq -0x481(%rbp), %rdi
callq 0x3270
testb $0x1, -0x482(%rbp)
jne 0xe05a
jmp 0xe06b
movq -0x800(%rbp), %rdi
movl $0x88, %esi
callq 0x3240
jmp 0xe408
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
jmp 0xe0b0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
jmp 0xe0a4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0x4b8(%rbp), %rdi
callq 0xc990
leaq -0x4d8(%rbp), %rdi
callq 0x3190
leaq -0x4d9(%rbp), %rdi
callq 0x3270
jmp 0xe408
movl $0x4, %edi
callq 0x3140
movq %rax, %rdi
movl $0x1, (%rdi)
leaq 0x1275d(%rip), %rsi     # 0x20838
xorl %eax, %eax
movl %eax, %edx
callq 0x33a0
jmp 0xe435
jmp 0xe0eb
jmp 0xe0ed
jmp 0xe0ef
jmp 0xe0f1
jmp 0xe0f3
jmp 0xe0f5
jmp 0xe0f7
jmp 0xe0f9
movq -0x5f0(%rbp), %rax
movq 0x8(%rax), %rdi
callq 0x15e30
movq %rax, -0x830(%rbp)
jmp 0xe112
movq -0x5f0(%rbp), %rax
movq -0x830(%rbp), %rcx
movq %rcx, (%rax)
cmpl $0x3, -0x24(%rbp)
setg %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x0, -0x24(%rbp)
setl %cl
andb $0x1, %cl
movzbl %cl, %ecx
orl %ecx, %eax
cmpl $0x0, %eax
je 0xe16b
movl $0x4, %edi
callq 0x3140
movq %rax, %rdi
movl $0x2, (%rdi)
leaq 0x126db(%rip), %rsi     # 0x20838
xorl %eax, %eax
movl %eax, %edx
callq 0x33a0
jmp 0xe435
movq -0x5f0(%rbp), %rdi
addq $0x58, %rdi
movq %rdi, -0x840(%rbp)
callq 0xfd70
movq -0x840(%rbp), %rdi
movq %rax, -0x4e8(%rbp)
callq 0xfd70
movq %rax, %rcx
movq -0x5f0(%rbp), %rax
movq %rcx, -0x4f8(%rbp)
movslq 0x18(%rax), %rsi
leaq -0x4f8(%rbp), %rdi
callq 0xfda0
movq -0x840(%rbp), %rdi
movq %rax, -0x4f0(%rbp)
callq 0xfde0
movq %rax, -0x500(%rbp)
movq -0x4e8(%rbp), %rdi
movq -0x4f0(%rbp), %rsi
movq -0x500(%rbp), %rdx
callq 0xfd10
movq %rax, -0x838(%rbp)
jmp 0xe1f3
movq -0x838(%rbp), %rax
movq %rax, -0x508(%rbp)
movq -0x10(%rbp), %rsi
movq (%rsi), %rax
movq (%rax), %rax
leaq -0x548(%rbp), %rdi
callq *%rax
jmp 0xe216
movq -0x18(%rbp), %rdx
leaq -0x528(%rbp), %rdi
leaq -0x548(%rbp), %rsi
callq 0xfc40
jmp 0xe22f
movq -0x5f0(%rbp), %rdi
addq $0x20, %rdi
leaq -0x528(%rbp), %rsi
callq 0x32a0
leaq -0x528(%rbp), %rdi
callq 0x3190
leaq -0x548(%rbp), %rdi
callq 0x3190
movq -0x5f0(%rbp), %rcx
movq (%rcx), %rax
cmpq 0x10(%rcx), %rax
je 0xe331
movq -0x5f0(%rbp), %rax
movq 0x10(%rax), %rsi
movq (%rsi), %rax
movq (%rax), %rax
leaq -0x588(%rbp), %rdi
callq *%rax
jmp 0xe28e
leaq 0xb1d7(%rip), %rsi      # 0x1946c
leaq -0x568(%rbp), %rdi
leaq -0x588(%rbp), %rdx
callq 0xfe10
jmp 0xe2aa
movq -0x5f0(%rbp), %rdi
addq $0x20, %rdi
leaq -0x568(%rbp), %rsi
callq 0x32d0
jmp 0xe2c3
leaq -0x568(%rbp), %rdi
callq 0x3190
leaq -0x588(%rbp), %rdi
callq 0x3190
jmp 0xe331
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0x548(%rbp), %rdi
callq 0x3190
jmp 0xe408
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
jmp 0xe320
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0x568(%rbp), %rdi
callq 0x3190
leaq -0x588(%rbp), %rdi
callq 0x3190
jmp 0xe408
movq -0x5f0(%rbp), %rax
cmpl $0x0, 0x18(%rax)
je 0xe3fd
movq -0x5f0(%rbp), %rdi
addq $0x58, %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0xa4f0
movq %rax, -0x848(%rbp)
jmp 0xe35f
movq -0x848(%rbp), %rax
movq (%rax), %rsi
movq (%rsi), %rax
movq (%rax), %rax
leaq -0x5c8(%rbp), %rdi
callq *%rax
jmp 0xe37a
leaq 0xb0eb(%rip), %rsi      # 0x1946c
leaq -0x5a8(%rbp), %rdi
leaq -0x5c8(%rbp), %rdx
callq 0xfe10
jmp 0xe396
movq -0x5f0(%rbp), %rdi
addq $0x20, %rdi
leaq -0x5a8(%rbp), %rsi
callq 0x32d0
jmp 0xe3af
leaq -0x5a8(%rbp), %rdi
callq 0x3190
leaq -0x5c8(%rbp), %rdi
callq 0x3190
jmp 0xe3fd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
jmp 0xe3ef
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0x5a8(%rbp), %rdi
callq 0x3190
leaq -0x5c8(%rbp), %rdi
callq 0x3190
jmp 0xe408
jmp 0xe3ff
addq $0x850, %rsp            # imm = 0x850
popq %rbp
retq
movq -0x5e8(%rbp), %rdi
callq 0x72e0
movq -0x5f8(%rbp), %rdi
callq 0xf660
movq -0x600(%rbp), %rdi
callq 0x3190
movq -0x38(%rbp), %rdi
callq 0x33d0
nopw %cs:(%rax,%rax)