// File: /workspace/github_cpp_makefile_star2_O2/Davidc2525[P]Leaf/compiler/registers/x86_64_register_provider.cpp
// Function: X86_64RegisterProvider::X86_64RegisterProvider()
X86_64RegisterProvider::X86_64RegisterProvider()
{
    //this->registers = (Register **)malloc(sizeof(Register *) * 100);

    string *byte = new string("BYTE");   //8
    string *word = new string("WORD");   //16
    string *dword = new string("DWORD"); //32
    string *qword = new string("QWORD"); //64

    int counter = 0;

    registers_.push_back(new Register(counter++, new string("ah"), 8, byte));
    registers_.push_back(new Register(counter++, new string("al"), 8, byte));
    registers_.push_back(new Register(counter++, new string("bh"), 8, byte));
    registers_.push_back(new Register(counter++, new string("bl"), 8, byte));
    registers_.push_back(new Register(counter++, new string("ch"), 8, byte));
    registers_.push_back(new Register(counter++, new string("cl"), 8, byte));
    registers_.push_back(new Register(counter++, new string("dh"), 8, byte));
    registers_.push_back(new Register(counter++, new string("dl"), 8, byte));

    registers_.push_back(new Register(counter++, new string("ax"), 16, word));
    registers_.push_back(new Register(counter++, new string("bx"), 16, word));
    registers_.push_back(new Register(counter++, new string("cx"), 16, word));
    registers_.push_back(new Register(counter++, new string("dx"), 16, word));
    registers_.push_back(new Register(counter++, new string("si"), 16, word));
    registers_.push_back(new Register(counter++, new string("di"), 16, word));

    registers_.push_back(new Register(counter++, new string("eax"), 32, dword));
    registers_.push_back(new Register(counter++, new string("ebx"), 32, dword));
    registers_.push_back(new Register(counter++, new string("ecx"), 32, dword));
    registers_.push_back(new Register(counter++, new string("edx"), 32, dword));
    registers_.push_back(new Register(counter++, new string("esi"), 32, dword));
    registers_.push_back(new Register(counter++, new string("edi"), 32, dword));

    registers_.push_back(new Register(counter++, new string("rax"), this->arc, qword));
    registers_.push_back(new Register(counter++, new string("rbx"), this->arc, qword));
    registers_.push_back(new Register(counter++, new string("rcx"), this->arc, qword));
    registers_.push_back(new Register(counter++, new string("rdx"), this->arc, qword));
    registers_.push_back(new Register(counter++, new string("rsi"), this->arc, qword));
    registers_.push_back(new Register(counter++, new string("rdi"), this->arc, qword));

    registers_.push_back(new Register(counter++, new string("rbp"), this->arc, qword, false));
    registers_.push_back(new Register(counter++, new string("rsp"), this->arc, qword, false));

    registers_.push_back(new Register(counter++, new string("r8"), this->arc, qword));
    registers_.push_back(new Register(counter++, new string("r9"), this->arc, qword));
    registers_.push_back(new Register(counter++, new string("r10"), this->arc, qword));
    registers_.push_back(new Register(counter++, new string("r11"), this->arc, qword));
    registers_.push_back(new Register(counter++, new string("r12"), this->arc, qword));
    registers_.push_back(new Register(counter++, new string("r13"), this->arc, qword));
    registers_.push_back(new Register(counter++, new string("r14"), this->arc, qword));
    registers_.push_back(new Register(counter++, new string("r15"), this->arc, qword));

    string *no_word = new string("");
    registers_.push_back(new Register(counter++, new string("xmm0"), 128, no_word));
    registers_.push_back(new Register(counter++, new string("xmm1"), 128, no_word));
    registers_.push_back(new Register(counter++, new string("xmm2"), 128, no_word));
    registers_.push_back(new Register(counter++, new string("xmm3"), 128, no_word));
    registers_.push_back(new Register(counter++, new string("xmm4"), 128, no_word));
    registers_.push_back(new Register(counter++, new string("xmm5"), 128, no_word));
    registers_.push_back(new Register(counter++, new string("xmm6"), 128, no_word));
    registers_.push_back(new Register(counter++, new string("xmm7"), 128, no_word));
    registers_.push_back(new Register(counter++, new string("xmm8"), 128, no_word));
    registers_.push_back(new Register(counter++, new string("xmm9"), 128, no_word));
    registers_.push_back(new Register(counter++, new string("xmm10"), 128, no_word));
    registers_.push_back(new Register(counter++, new string("xmm11"), 128, no_word));
    registers_.push_back(new Register(counter++, new string("xmm12"), 128, no_word));
    registers_.push_back(new Register(counter++, new string("xmm13"), 128, no_word));
    registers_.push_back(new Register(counter++, new string("xmm14"), 128, no_word));

    reservers = new map<int, stack<int> *>;
    for (auto x = registers_.begin(); x != registers_.end(); x++)
    {
        reservers->insert(make_pair((*x)->id, new stack<int>));
    }
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x38, %rsp
movq %rdi, %rbx
xorps %xmm0, %xmm0
andq $0x0, 0x18(%rdi)
movups %xmm0, 0x8(%rdi)
leaq 0x13e66(%rip), %rax     # 0x24678
movq %rax, (%rdi)
movl $0x40, 0x30(%rdi)
pushq $0x20
popq %rdi
movq %rbx, 0x30(%rsp)
callq 0x5260
movq %rax, %rbp
leaq 0x74e1(%rip), %rsi      # 0x17d14
leaq 0x10(%rsp), %rdx
movq %rax, %rdi
callq 0x70ae
pushq $0x20
popq %rdi
callq 0x5260
movq %rax, %r13
leaq 0x74c8(%rip), %rsi      # 0x17d1a
leaq 0x10(%rsp), %rdx
movq %rax, %rdi
callq 0x70ae
pushq $0x20
popq %rdi
callq 0x5260
leaq 0x74ab(%rip), %rsi      # 0x17d19
leaq 0x10(%rsp), %rdx
movq %rax, 0x28(%rsp)
movq %rax, %rdi
callq 0x70ae
pushq $0x20
popq %rdi
callq 0x5260
movq %rax, %r14
leaq 0x748d(%rip), %rsi      # 0x17d1f
leaq 0x10(%rsp), %rdx
movq %rax, %rdi
callq 0x70ae
pushq $0x28
popq %rdi
callq 0x5260
movq %rax, %r12
pushq $0x20
popq %rdi
callq 0x5260
movq %rax, %r15
leaq 0x7889(%rip), %rsi      # 0x18145
leaq 0xf(%rsp), %rdx
movq %rax, %rdi
callq 0x70ae
movq %r14, 0x20(%rsp)
pushq $0x8
popq %rcx
movq %r12, %rdi
xorl %esi, %esi
movq %r15, %rdx
movq %rbp, %r8
callq 0xf9fa
leaq 0x8(%rbx), %r14
leaq 0x10(%rsp), %rsi
movq %r12, (%rsi)
movq %r14, %rdi
callq 0x11e9a
pushq $0x28
popq %rdi
callq 0x5260
movq %rax, %r12
pushq $0x20
popq %rdi
callq 0x5260
movq %rax, %r15
leaq 0x748d(%rip), %rsi      # 0x17d9f
leaq 0xf(%rsp), %rdx
movq %rax, %rdi
callq 0x70ae
pushq $0x1
popq %rsi
pushq $0x8
popq %rcx
movq %r12, %rdi
movq %r15, %rdx
movq %rbp, %r8
callq 0xf9fa
leaq 0x10(%rsp), %rsi
movq %r12, (%rsi)
movq %r14, %rdi
callq 0x11e9a
pushq $0x28
popq %rdi
callq 0x5260
movq %rax, %r12
pushq $0x20
popq %rdi
callq 0x5260
movq %rax, %r15
leaq 0x77e8(%rip), %rsi      # 0x18148
leaq 0xf(%rsp), %rdx
movq %rax, %rdi
callq 0x70ae
pushq $0x2
popq %rsi
pushq $0x8
popq %rcx
movq %r12, %rdi
movq %r15, %rdx
movq %rbp, %r8
callq 0xf9fa
leaq 0x10(%rsp), %rsi
movq %r12, (%rsi)
movq %r14, %rdi
callq 0x11e9a
pushq $0x28
popq %rdi
callq 0x5260
movq %rax, %r12
pushq $0x20
popq %rdi
callq 0x5260
movq %rax, %r15
leaq 0x779d(%rip), %rsi      # 0x1814b
leaq 0xf(%rsp), %rdx
movq %rax, %rdi
callq 0x70ae
pushq $0x3
popq %rsi
pushq $0x8
popq %rcx
movq %r12, %rdi
movq %r15, %rdx
movq %rbp, %r8
callq 0xf9fa
leaq 0x10(%rsp), %rsi
movq %r12, (%rsi)
movq %r14, %rdi
callq 0x11e9a
pushq $0x28
popq %rdi
callq 0x5260
movq %rax, %r12
pushq $0x20
popq %rdi
callq 0x5260
movq %rax, %r15
leaq 0x7ab7(%rip), %rsi      # 0x184b3
leaq 0xf(%rsp), %rdx
movq %rax, %rdi
callq 0x70ae
pushq $0x4
popq %rsi
pushq $0x8
popq %rcx
movq %r12, %rdi
movq %r15, %rdx
movq %rbp, %r8
callq 0xf9fa
leaq 0x10(%rsp), %rsi
movq %r12, (%rsi)
movq %r14, %rdi
callq 0x11e9a
pushq $0x28
popq %rdi
callq 0x5260
movq %rax, %r12
pushq $0x20
popq %rdi
callq 0x5260
movq %rax, %r15
leaq 0x7704(%rip), %rsi      # 0x1814e
leaq 0xf(%rsp), %rdx
movq %rax, %rdi
callq 0x70ae
pushq $0x5
popq %rsi
pushq $0x8
popq %rcx
movq %r12, %rdi
movq %r15, %rdx
movq %rbp, %r8
callq 0xf9fa
leaq 0x10(%rsp), %rsi
movq %r12, (%rsi)
movq %r14, %rdi
callq 0x11e9a
pushq $0x28
popq %rdi
callq 0x5260
movq %rax, %r12
pushq $0x20
popq %rdi
callq 0x5260
movq %rax, %r15
leaq 0x76b9(%rip), %rsi      # 0x18151
leaq 0xf(%rsp), %rdx
movq %rax, %rdi
callq 0x70ae
pushq $0x6
popq %rsi
pushq $0x8
popq %rcx
movq %r12, %rdi
movq %r15, %rdx
movq %rbp, %r8
callq 0xf9fa
leaq 0x10(%rsp), %rsi
movq %r12, (%rsi)
movq %r14, %rdi
callq 0x11e9a
pushq $0x28
popq %rdi
callq 0x5260
movq %rax, %r12
pushq $0x20
popq %rdi
callq 0x5260
movq %rax, %r15
leaq 0x766e(%rip), %rsi      # 0x18154
leaq 0xf(%rsp), %rdx
movq %rax, %rdi
callq 0x70ae
pushq $0x7
popq %rsi
pushq $0x8
popq %rcx
movq %r12, %rdi
movq %r15, %rdx
movq %rbp, %r8
callq 0xf9fa
leaq 0x10(%rsp), %rsi
movq %r12, (%rsi)
movq %r14, %rdi
callq 0x11e9a
pushq $0x28
popq %rdi
callq 0x5260
movq %rax, %r12
pushq $0x20
popq %rdi
callq 0x5260
movq %rax, %r15
leaq 0x7624(%rip), %rsi      # 0x18158
leaq 0xf(%rsp), %rdx
movq %rax, %rdi
callq 0x70ae
pushq $0x8
popq %rsi
pushq $0x10
popq %rcx
movq %r12, %rdi
movq %r15, %rdx
movq %r13, %r8
callq 0xf9fa
leaq 0x10(%rsp), %rsi
movq %r12, (%rsi)
movq %r14, %rdi
callq 0x11e9a
pushq $0x28
popq %rdi
callq 0x5260
movq %rax, %r12
pushq $0x20
popq %rdi
callq 0x5260
movq %rax, %r15
leaq 0x75da(%rip), %rsi      # 0x1815c
leaq 0xf(%rsp), %rdx
movq %rax, %rdi
callq 0x70ae
pushq $0x9
popq %rsi
pushq $0x10
popq %rcx
movq %r12, %rdi
movq %r15, %rdx
movq %r13, %r8
callq 0xf9fa
leaq 0x10(%rsp), %rsi
movq %r12, (%rsi)
movq %r14, %rdi
callq 0x11e9a
pushq $0x28
popq %rdi
callq 0x5260
movq %rax, %r12
pushq $0x20
popq %rdi
callq 0x5260
movq %rax, %r15
leaq 0x7590(%rip), %rsi      # 0x18160
leaq 0xf(%rsp), %rdx
movq %rax, %rdi
callq 0x70ae
pushq $0xa
popq %rsi
pushq $0x10
popq %rcx
movq %r12, %rdi
movq %r15, %rdx
movq %r13, %r8
callq 0xf9fa
leaq 0x10(%rsp), %rsi
movq %r12, (%rsi)
movq %r14, %rdi
callq 0x11e9a
pushq $0x28
popq %rdi
callq 0x5260
movq %rax, %r12
pushq $0x20
popq %rdi
callq 0x5260
movq %rax, %r15
leaq 0x7546(%rip), %rsi      # 0x18164
leaq 0xf(%rsp), %rdx
movq %rax, %rdi
callq 0x70ae
pushq $0xb
popq %rsi
pushq $0x10
popq %rcx
movq %r12, %rdi
movq %r15, %rdx
movq %r13, %r8
callq 0xf9fa
leaq 0x10(%rsp), %rsi
movq %r12, (%rsi)
movq %r14, %rdi
callq 0x11e9a
pushq $0x28
popq %rdi
callq 0x5260
movq %rax, %r12
pushq $0x20
popq %rdi
callq 0x5260
movq %rax, %r15
leaq 0x74fc(%rip), %rsi      # 0x18168
leaq 0xf(%rsp), %rdx
movq %rax, %rdi
callq 0x70ae
pushq $0xc
popq %rsi
pushq $0x10
popq %rcx
movq %r12, %rdi
movq %r15, %rdx
movq %r13, %r8
callq 0xf9fa
leaq 0x10(%rsp), %rsi
movq %r12, (%rsi)
movq %r14, %rdi
callq 0x11e9a
pushq $0x28
popq %rdi
callq 0x5260
movq %rax, %r12
pushq $0x20
popq %rdi
callq 0x5260
movq %rax, %r15
leaq 0x74b2(%rip), %rsi      # 0x1816c
leaq 0xf(%rsp), %rdx
movq %rax, %rdi
callq 0x70ae
pushq $0xd
popq %rsi
pushq $0x10
popq %rcx
movq %r12, %rdi
movq %r15, %rdx
movq %r13, %r8
callq 0xf9fa
leaq 0x10(%rsp), %rsi
movq %r12, (%rsi)
movq %r14, %rdi
callq 0x11e9a
pushq $0x28
popq %rdi
callq 0x5260
movq %rax, %r12
pushq $0x20
popq %rdi
callq 0x5260
movq %rax, %r15
leaq 0x744f(%rip), %rsi      # 0x18157
leaq 0xf(%rsp), %rdx
movq %rax, %rdi
callq 0x70ae
pushq $0xe
popq %rsi
pushq $0x20
popq %rcx
movq %r12, %rdi
movq %r15, %rdx
movq 0x28(%rsp), %r8
callq 0xf9fa
leaq 0x10(%rsp), %rsi
movq %r12, (%rsi)
movq %r14, %rdi
callq 0x11e9a
pushq $0x28
popq %rdi
callq 0x5260
movq %rax, %r12
pushq $0x20
popq %rdi
callq 0x5260
movq %rax, %r15
leaq 0x7403(%rip), %rsi      # 0x1815b
leaq 0xf(%rsp), %rdx
movq %rax, %rdi
callq 0x70ae
pushq $0xf
popq %rsi
pushq $0x20
popq %rcx
movq %r12, %rdi
movq %r15, %rdx
movq 0x28(%rsp), %r8
callq 0xf9fa
leaq 0x10(%rsp), %rsi
movq %r12, (%rsi)
movq %r14, %rdi
callq 0x11e9a
pushq $0x28
popq %rdi
callq 0x5260
movq %rax, %r12
pushq $0x20
popq %rdi
callq 0x5260
movq %rax, %r15
leaq 0x73b7(%rip), %rsi      # 0x1815f
leaq 0xf(%rsp), %rdx
movq %rax, %rdi
callq 0x70ae
pushq $0x10
popq %rsi
pushq $0x20
popq %rcx
movq %r12, %rdi
movq %r15, %rdx
movq 0x28(%rsp), %r8
callq 0xf9fa
leaq 0x10(%rsp), %rsi
movq %r12, (%rsi)
movq %r14, %rdi
callq 0x11e9a
pushq $0x28
popq %rdi
callq 0x5260
movq %rax, %r12
pushq $0x20
popq %rdi
callq 0x5260
movq %rax, %r15
leaq 0x736b(%rip), %rsi      # 0x18163
leaq 0xf(%rsp), %rdx
movq %rax, %rdi
callq 0x70ae
pushq $0x11
popq %rsi
pushq $0x20
popq %rcx
movq %r12, %rdi
movq %r15, %rdx
movq 0x28(%rsp), %r8
callq 0xf9fa
leaq 0x10(%rsp), %rsi
movq %r12, (%rsi)
movq %r14, %rdi
callq 0x11e9a
pushq $0x28
popq %rdi
callq 0x5260
movq %rax, %r12
pushq $0x20
popq %rdi
callq 0x5260
movq %rax, %r15
leaq 0x731f(%rip), %rsi      # 0x18167
leaq 0xf(%rsp), %rdx
movq %rax, %rdi
callq 0x70ae
pushq $0x12
popq %rsi
pushq $0x20
popq %rcx
movq %r12, %rdi
movq %r15, %rdx
movq 0x28(%rsp), %r8
callq 0xf9fa
leaq 0x10(%rsp), %rsi
movq %r12, (%rsi)
movq %r14, %rdi
callq 0x11e9a
pushq $0x28
popq %rdi
callq 0x5260
movq %rax, %r12
pushq $0x20
popq %rdi
callq 0x5260
movq %rax, %r15
leaq 0x72d3(%rip), %rsi      # 0x1816b
leaq 0xf(%rsp), %rdx
movq %rax, %rdi
callq 0x70ae
pushq $0x13
popq %rsi
pushq $0x20
popq %rcx
movq %r12, %rdi
movq %r15, %rdx
movq 0x28(%rsp), %r8
callq 0xf9fa
leaq 0x10(%rsp), %rsi
movq %r12, (%rsi)
movq %r14, %rdi
callq 0x11e9a
pushq $0x28
popq %rdi
callq 0x5260
movq %rax, %r12
pushq $0x20
popq %rdi
callq 0x5260
movq %rax, %r15
leaq 0x707c(%rip), %rsi      # 0x17f64
leaq 0xf(%rsp), %rdx
movq %rax, %rdi
callq 0x70ae
movl 0x30(%rbx), %ecx
pushq $0x14
popq %rsi
movq %r12, %rdi
movq %r15, %rdx
movq 0x20(%rsp), %r8
callq 0xf9fa
leaq 0x10(%rsp), %rsi
movq %r12, (%rsi)
movq %r14, %rdi
callq 0x11e9a
pushq $0x28
popq %rdi
callq 0x5260
movq %rax, %r12
pushq $0x20
popq %rdi
callq 0x5260
movq %rax, %r15
leaq 0x7030(%rip), %rsi      # 0x17f68
leaq 0xf(%rsp), %rdx
movq %rax, %rdi
callq 0x70ae
movl 0x30(%rbx), %ecx
pushq $0x15
popq %rsi
movq %r12, %rdi
movq %r15, %rdx
movq 0x20(%rsp), %r8
callq 0xf9fa
leaq 0x10(%rsp), %rsi
movq %r12, (%rsi)
movq %r14, %rdi
callq 0x11e9a
pushq $0x28
popq %rdi
callq 0x5260
movq %rax, %r12
pushq $0x20
popq %rdi
callq 0x5260
movq %rax, %r15
leaq 0x6fe4(%rip), %rsi      # 0x17f6c
leaq 0xf(%rsp), %rdx
movq %rax, %rdi
callq 0x70ae
movl 0x30(%rbx), %ecx
pushq $0x16
popq %rsi
movq %r12, %rdi
movq %r15, %rdx
movq 0x20(%rsp), %r8
callq 0xf9fa
leaq 0x10(%rsp), %rsi
movq %r12, (%rsi)
movq %r14, %rdi
callq 0x11e9a
pushq $0x28
popq %rdi
callq 0x5260
movq %rax, %r12
pushq $0x20
popq %rdi
callq 0x5260
movq %rax, %r15
leaq 0x6f98(%rip), %rsi      # 0x17f70
leaq 0xf(%rsp), %rdx
movq %rax, %rdi
callq 0x70ae
movl 0x30(%rbx), %ecx
pushq $0x17
popq %rsi
movq %r12, %rdi
movq %r15, %rdx
movq 0x20(%rsp), %r8
callq 0xf9fa
leaq 0x10(%rsp), %rsi
movq %r12, (%rsi)
movq %r14, %rdi
callq 0x11e9a
pushq $0x28
popq %rdi
callq 0x5260
movq %rax, %r12
pushq $0x20
popq %rdi
callq 0x5260
movq %rax, %r15
leaq 0x6f50(%rip), %rsi      # 0x17f78
leaq 0xf(%rsp), %rdx
movq %rax, %rdi
callq 0x70ae
movl 0x30(%rbx), %ecx
pushq $0x18
popq %rsi
movq %r12, %rdi
movq %r15, %rdx
movq 0x20(%rsp), %r8
callq 0xf9fa
leaq 0x10(%rsp), %rsi
movq %r12, (%rsi)
movq %r14, %rdi
callq 0x11e9a
pushq $0x28
popq %rdi
callq 0x5260
movq %rax, %r12
pushq $0x20
popq %rdi
callq 0x5260
movq %rax, %r15
leaq 0x6efc(%rip), %rsi      # 0x17f74
leaq 0xf(%rsp), %rdx
movq %rax, %rdi
callq 0x70ae
movl 0x30(%rbx), %ecx
pushq $0x19
popq %rsi
movq %r12, %rdi
movq %r15, %rdx
movq 0x20(%rsp), %r8
callq 0xf9fa
leaq 0x10(%rsp), %rsi
movq %r12, (%rsi)
movq %r14, %rdi
callq 0x11e9a
pushq $0x28
popq %rdi
callq 0x5260
movq %rax, %r12
pushq $0x20
popq %rdi
callq 0x5260
movq %rax, %r15
leaq 0x6ed2(%rip), %rsi      # 0x17f9a
leaq 0xf(%rsp), %rdx
movq %rax, %rdi
callq 0x70ae
movl 0x30(%rbx), %ecx
pushq $0x1a
popq %rsi
movq %r12, %rdi
movq %r15, %rdx
movq 0x20(%rsp), %r8
xorl %r9d, %r9d
callq 0xfa0c
leaq 0x10(%rsp), %rsi
movq %r12, (%rsi)
movq %r14, %rdi
callq 0x11e9a
pushq $0x28
popq %rdi
callq 0x5260
movq %rax, %r12
pushq $0x20
popq %rdi
callq 0x5260
movq %rax, %r15
leaq 0x7054(%rip), %rsi      # 0x1816f
leaq 0xf(%rsp), %rdx
movq %rax, %rdi
callq 0x70ae
movl 0x30(%rbx), %ecx
pushq $0x1b
popq %rsi
movq %r12, %rdi
movq %r15, %rdx
movq 0x20(%rsp), %r8
xorl %r9d, %r9d
callq 0xfa0c
leaq 0x10(%rsp), %rsi
movq %r12, (%rsi)
movq %r14, %rdi
callq 0x11e9a
pushq $0x28
popq %rdi
callq 0x5260
movq %rax, %r12
pushq $0x20
popq %rdi
callq 0x5260
movq %rax, %r15
leaq 0x6e0e(%rip), %rsi      # 0x17f7c
leaq 0xf(%rsp), %rdx
movq %rax, %rdi
callq 0x70ae
movl 0x30(%rbx), %ecx
pushq $0x1c
popq %rsi
movq %r12, %rdi
movq %r15, %rdx
movq 0x20(%rsp), %r8
callq 0xf9fa
leaq 0x10(%rsp), %rsi
movq %r12, (%rsi)
movq %r14, %rdi
callq 0x11e9a
pushq $0x28
popq %rdi
callq 0x5260
movq %rax, %r12
pushq $0x20
popq %rdi
callq 0x5260
movq %rax, %r15
leaq 0x6dc1(%rip), %rsi      # 0x17f7f
leaq 0xf(%rsp), %rdx
movq %rax, %rdi
callq 0x70ae
movl 0x30(%rbx), %ecx
pushq $0x1d
popq %rsi
movq %r12, %rdi
movq %r15, %rdx
movq 0x20(%rsp), %r8
callq 0xf9fa
leaq 0x10(%rsp), %rsi
movq %r12, (%rsi)
movq %r14, %rdi
callq 0x11e9a
pushq $0x28
popq %rdi
callq 0x5260
movq %rax, %r12
pushq $0x20
popq %rdi
callq 0x5260
movq %rax, %r15
leaq 0x6d74(%rip), %rsi      # 0x17f82
leaq 0xf(%rsp), %rdx
movq %rax, %rdi
callq 0x70ae
movl 0x30(%rbx), %ecx
pushq $0x1e
popq %rsi
movq %r12, %rdi
movq %r15, %rdx
movq 0x20(%rsp), %r8
callq 0xf9fa
leaq 0x10(%rsp), %rsi
movq %r12, (%rsi)
movq %r14, %rdi
callq 0x11e9a
pushq $0x28
popq %rdi
callq 0x5260
movq %rax, %r12
pushq $0x20
popq %rdi
callq 0x5260
movq %rax, %r15
leaq 0x6d28(%rip), %rsi      # 0x17f86
leaq 0xf(%rsp), %rdx
movq %rax, %rdi
callq 0x70ae
movl 0x30(%rbx), %ecx
pushq $0x1f
popq %rsi
movq %r12, %rdi
movq %r15, %rdx
movq 0x20(%rsp), %r8
callq 0xf9fa
leaq 0x10(%rsp), %rsi
movq %r12, (%rsi)
movq %r14, %rdi
callq 0x11e9a
pushq $0x28
popq %rdi
callq 0x5260
movq %rax, %r12
pushq $0x20
popq %rdi
callq 0x5260
movq %rax, %r15
leaq 0x6cdc(%rip), %rsi      # 0x17f8a
leaq 0xf(%rsp), %rdx
movq %rax, %rdi
callq 0x70ae
movl 0x30(%rbx), %ecx
pushq $0x20
popq %rsi
movq %r12, %rdi
movq %r15, %rdx
movq 0x20(%rsp), %r8
callq 0xf9fa
leaq 0x10(%rsp), %rsi
movq %r12, (%rsi)
movq %r14, %rdi
callq 0x11e9a
pushq $0x28
popq %rdi
callq 0x5260
movq %rax, %r12
pushq $0x20
popq %rdi
callq 0x5260
movq %rax, %r15
leaq 0x6c90(%rip), %rsi      # 0x17f8e
leaq 0xf(%rsp), %rdx
movq %rax, %rdi
callq 0x70ae
movl 0x30(%rbx), %ecx
pushq $0x21
popq %rsi
movq %r12, %rdi
movq %r15, %rdx
movq 0x20(%rsp), %r8
callq 0xf9fa
leaq 0x10(%rsp), %rsi
movq %r12, (%rsi)
movq %r14, %rdi
callq 0x11e9a
pushq $0x28
popq %rdi
callq 0x5260
movq %rax, %r12
pushq $0x20
popq %rdi
callq 0x5260
movq %rax, %r15
leaq 0x6c44(%rip), %rsi      # 0x17f92
leaq 0xf(%rsp), %rdx
movq %rax, %rdi
callq 0x70ae
movl 0x30(%rbx), %ecx
pushq $0x22
popq %rsi
movq %r12, %rdi
movq %r15, %rdx
movq 0x20(%rsp), %r8
callq 0xf9fa
leaq 0x10(%rsp), %rsi
movq %r12, (%rsi)
movq %r14, %rdi
callq 0x11e9a
pushq $0x28
popq %rdi
callq 0x5260
movq %rax, %r12
pushq $0x20
popq %rdi
callq 0x5260
movq %rax, %r15
leaq 0x6bf8(%rip), %rsi      # 0x17f96
leaq 0xf(%rsp), %rdx
movq %rax, %rdi
callq 0x70ae
movl 0x30(%rbx), %ecx
pushq $0x23
popq %rsi
movq %r12, %rdi
movq %r15, %rdx
movq 0x20(%rsp), %r8
callq 0xf9fa
leaq 0x10(%rsp), %rsi
movq %r12, (%rsi)
movq %r14, %rdi
callq 0x11e9a
pushq $0x20
popq %rdi
callq 0x5260
movq %rax, %r15
leaq 0x69c0(%rip), %rsi      # 0x17da3
leaq 0x10(%rsp), %rdx
movq %rax, %rdi
callq 0x70ae
pushq $0x28
popq %rdi
callq 0x5260
movq %rax, %r12
pushq $0x20
popq %rdi
callq 0x5260
movq %rax, %r13
leaq 0x6d66(%rip), %rsi      # 0x18173
leaq 0xf(%rsp), %rdx
movq %rax, %rdi
callq 0x70ae
pushq $0x24
popq %rsi
movq %r12, %rdi
movq %r13, %rdx
movl $0x80, %ecx
movq %r15, %r8
callq 0xf9fa
leaq 0x10(%rsp), %rsi
movq %r12, (%rsi)
movq %r14, %rdi
callq 0x11e9a
pushq $0x28
popq %rdi
callq 0x5260
movq %rax, %r12
pushq $0x20
popq %rdi
callq 0x5260
movq %rax, %r13
leaq 0x6d1b(%rip), %rsi      # 0x18178
leaq 0xf(%rsp), %rdx
movq %rax, %rdi
callq 0x70ae
pushq $0x25
popq %rsi
movq %r12, %rdi
movq %r13, %rdx
movl $0x80, %ecx
movq %r15, %r8
callq 0xf9fa
leaq 0x10(%rsp), %rsi
movq %r12, (%rsi)
movq %r14, %rdi
callq 0x11e9a
pushq $0x28
popq %rdi
callq 0x5260
movq %rax, %r12
pushq $0x20
popq %rdi
callq 0x5260
movq %rax, %r13
leaq 0x6cd0(%rip), %rsi      # 0x1817d
leaq 0xf(%rsp), %rdx
movq %rax, %rdi
callq 0x70ae
pushq $0x26
popq %rsi
movq %r12, %rdi
movq %r13, %rdx
movl $0x80, %ecx
movq %r15, %r8
callq 0xf9fa
leaq 0x10(%rsp), %rsi
movq %r12, (%rsi)
movq %r14, %rdi
callq 0x11e9a
pushq $0x28
popq %rdi
callq 0x5260
movq %rax, %r12
pushq $0x20
popq %rdi
callq 0x5260
movq %rax, %r13
leaq 0x6c85(%rip), %rsi      # 0x18182
leaq 0xf(%rsp), %rdx
movq %rax, %rdi
callq 0x70ae
pushq $0x27
popq %rsi
movq %r12, %rdi
movq %r13, %rdx
movl $0x80, %ecx
movq %r15, %r8
callq 0xf9fa
leaq 0x10(%rsp), %rsi
movq %r12, (%rsi)
movq %r14, %rdi
callq 0x11e9a
pushq $0x28
popq %rdi
callq 0x5260
movq %rax, %r12
pushq $0x20
popq %rdi
callq 0x5260
movq %rax, %r13
leaq 0x6c3a(%rip), %rsi      # 0x18187
leaq 0xf(%rsp), %rdx
movq %rax, %rdi
callq 0x70ae
pushq $0x28
popq %rsi
movq %r12, %rdi
movq %r13, %rdx
movl $0x80, %ecx
movq %r15, %r8
callq 0xf9fa
leaq 0x10(%rsp), %rsi
movq %r12, (%rsi)
movq %r14, %rdi
callq 0x11e9a
pushq $0x28
popq %rdi
callq 0x5260
movq %rax, %r12
pushq $0x20
popq %rdi
callq 0x5260
movq %rax, %r13
leaq 0x6bef(%rip), %rsi      # 0x1818c
leaq 0xf(%rsp), %rdx
movq %rax, %rdi
callq 0x70ae
pushq $0x29
popq %rsi
movq %r12, %rdi
movq %r13, %rdx
movl $0x80, %ecx
movq %r15, %r8
callq 0xf9fa
leaq 0x10(%rsp), %rsi
movq %r12, (%rsi)
movq %r14, %rdi
callq 0x11e9a
pushq $0x28
popq %rdi
callq 0x5260
movq %rax, %r12
pushq $0x20
popq %rdi
callq 0x5260
movq %rax, %r13
leaq 0x6ba4(%rip), %rsi      # 0x18191
leaq 0xf(%rsp), %rdx
movq %rax, %rdi
callq 0x70ae
pushq $0x2a
popq %rsi
movq %r12, %rdi
movq %r13, %rdx
movl $0x80, %ecx
movq %r15, %r8
callq 0xf9fa
leaq 0x10(%rsp), %rsi
movq %r12, (%rsi)
movq %r14, %rdi
callq 0x11e9a
pushq $0x28
popq %rdi
callq 0x5260
movq %rax, %r12
pushq $0x20
popq %rdi
callq 0x5260
movq %rax, %r13
leaq 0x6b59(%rip), %rsi      # 0x18196
leaq 0xf(%rsp), %rdx
movq %rax, %rdi
callq 0x70ae
pushq $0x2b
popq %rsi
movq %r12, %rdi
movq %r13, %rdx
movl $0x80, %ecx
movq %r15, %r8
callq 0xf9fa
leaq 0x10(%rsp), %rsi
movq %r12, (%rsi)
movq %r14, %rdi
callq 0x11e9a
pushq $0x28
popq %rdi
callq 0x5260
movq %rax, %r12
pushq $0x20
popq %rdi
callq 0x5260
movq %rax, %r13
leaq 0x6b0e(%rip), %rsi      # 0x1819b
leaq 0xf(%rsp), %rdx
movq %rax, %rdi
callq 0x70ae
pushq $0x2c
popq %rsi
movq %r12, %rdi
movq %r13, %rdx
movl $0x80, %ecx
movq %r15, %r8
callq 0xf9fa
leaq 0x10(%rsp), %rsi
movq %r12, (%rsi)
movq %r14, %rdi
callq 0x11e9a
pushq $0x28
popq %rdi
callq 0x5260
movq %rax, %r12
pushq $0x20
popq %rdi
callq 0x5260
movq %rax, %r13
leaq 0x6ac3(%rip), %rsi      # 0x181a0
leaq 0xf(%rsp), %rdx
movq %rax, %rdi
callq 0x70ae
pushq $0x2d
popq %rsi
movq %r12, %rdi
movq %r13, %rdx
movl $0x80, %ecx
movq %r15, %r8
callq 0xf9fa
leaq 0x10(%rsp), %rsi
movq %r12, (%rsi)
movq %r14, %rdi
callq 0x11e9a
pushq $0x28
popq %rdi
callq 0x5260
movq %rax, %r12
pushq $0x20
popq %rdi
callq 0x5260
movq %rax, %r13
leaq 0x6a78(%rip), %rsi      # 0x181a5
leaq 0xf(%rsp), %rdx
movq %rax, %rdi
callq 0x70ae
pushq $0x2e
popq %rsi
movq %r12, %rdi
movq %r13, %rdx
movl $0x80, %ecx
movq %r15, %r8
callq 0xf9fa
leaq 0x10(%rsp), %rsi
movq %r12, (%rsi)
movq %r14, %rdi
callq 0x11e9a
pushq $0x28
popq %rdi
callq 0x5260
movq %rax, %r12
pushq $0x20
popq %rdi
callq 0x5260
movq %rax, %r13
leaq 0x6a2e(%rip), %rsi      # 0x181ab
leaq 0xf(%rsp), %rdx
movq %rax, %rdi
callq 0x70ae
pushq $0x2f
popq %rsi
movq %r12, %rdi
movq %r13, %rdx
movl $0x80, %ecx
movq %r15, %r8
callq 0xf9fa
leaq 0x10(%rsp), %rsi
movq %r12, (%rsi)
movq %r14, %rdi
callq 0x11e9a
pushq $0x28
popq %rdi
callq 0x5260
movq %rax, %r12
pushq $0x20
popq %rdi
callq 0x5260
movq %rax, %r13
leaq 0x69e4(%rip), %rsi      # 0x181b1
leaq 0xf(%rsp), %rdx
movq %rax, %rdi
callq 0x70ae
pushq $0x30
popq %rsi
movq %r12, %rdi
movq %r13, %rdx
movl $0x80, %ecx
movq %r15, %r8
callq 0xf9fa
leaq 0x10(%rsp), %rsi
movq %r12, (%rsi)
movq %r14, %rdi
callq 0x11e9a
pushq $0x28
popq %rdi
callq 0x5260
movq %rax, %r12
pushq $0x20
popq %rdi
callq 0x5260
movq %rax, %r13
leaq 0x699a(%rip), %rsi      # 0x181b7
leaq 0xf(%rsp), %rdx
movq %rax, %rdi
callq 0x70ae
pushq $0x31
popq %rsi
movq %r12, %rdi
movq %r13, %rdx
movl $0x80, %ecx
movq %r15, %r8
callq 0xf9fa
leaq 0x10(%rsp), %rsi
movq %r12, (%rsi)
movq %r14, %rdi
callq 0x11e9a
pushq $0x28
popq %rdi
callq 0x5260
movq %rax, %r12
pushq $0x20
popq %rdi
callq 0x5260
movq %rax, %r13
leaq 0x6950(%rip), %rsi      # 0x181bd
leaq 0xf(%rsp), %rdx
movq %rax, %rdi
callq 0x70ae
pushq $0x32
popq %rsi
movq %r12, %rdi
movq %r13, %rdx
movl $0x80, %ecx
movq %r15, %r8
callq 0xf9fa
leaq 0x10(%rsp), %rsi
movq %r12, (%rsi)
movq %r14, %rdi
callq 0x11e9a
pushq $0x30
popq %rdi
callq 0x5260
movq %rax, %rcx
addq $0x8, %rcx
andl $0x0, 0x8(%rax)
andq $0x0, 0x10(%rax)
movq %rcx, 0x18(%rax)
movq %rcx, 0x20(%rax)
andq $0x0, 0x28(%rax)
movq %rax, 0x20(%rbx)
movq 0x8(%rbx), %rbp
pushq $0x50
popq %r14
leaq 0x10(%rsp), %r15
cmpq 0x10(%rbx), %rbp
je 0x11918
movq 0x20(%rbx), %r12
movq (%rbp), %rbx
movq %r14, %rdi
callq 0x5260
movq %rax, %r13
movq %rax, %rdi
callq 0x11e32
movl (%rbx), %eax
movl %eax, 0x10(%rsp)
movq %r13, 0x18(%rsp)
movq %r12, %rdi
movq %r15, %rsi
callq 0x121a8
addq $0x8, %rbp
movq 0x30(%rsp), %rbx
jmp 0x118d6
addq $0x38, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x11e1c
jmp 0x11dcb
jmp 0x11a80
jmp 0x11dcb
jmp 0x11e1c
jmp 0x11e1c
jmp 0x11dcb
jmp 0x11a80
jmp 0x11dcb
jmp 0x11e1c
jmp 0x11e1c
jmp 0x11dcb
jmp 0x11a80
jmp 0x11dcb
jmp 0x11e1c
jmp 0x11e1c
jmp 0x11dcb
jmp 0x11a80
jmp 0x11dcb
jmp 0x11e1c
jmp 0x11e1c
jmp 0x11dcb
jmp 0x11a80
jmp 0x11dcb
jmp 0x11e1c
jmp 0x11e1c
jmp 0x11dcb
jmp 0x11a80
jmp 0x11dcb
jmp 0x11e1c
jmp 0x11e1c
jmp 0x11dcb
jmp 0x11a80
jmp 0x11dcb
jmp 0x11e1c
jmp 0x11e1c
jmp 0x11dcb
jmp 0x11a80
jmp 0x11dcb
jmp 0x11e1c
jmp 0x11e1c
jmp 0x11dcb
jmp 0x11a80
jmp 0x11dcb
jmp 0x11e1c
jmp 0x11e1c
jmp 0x11dcb
jmp 0x11a80
jmp 0x11dcb
jmp 0x11e1c
jmp 0x11e1c
jmp 0x11dcb
jmp 0x11a80
jmp 0x11dcb
jmp 0x11e1c
jmp 0x11e1c
jmp 0x11dcb
jmp 0x11a80
jmp 0x11dcb
jmp 0x11e1c
jmp 0x11e1c
jmp 0x11dcb
jmp 0x11a80
jmp 0x11dcb
jmp 0x11e1c
jmp 0x11e1c
jmp 0x11dcb
jmp 0x11a80
jmp 0x11dcb
jmp 0x11e1c
jmp 0x11e1c
jmp 0x11dcb
movq %rax, %r14
pushq $0x20
popq %rsi
movq %r13, %rdi
jmp 0x11dc4
jmp 0x11dcb
jmp 0x11e1c
movq %rax, %r14
pushq $0x20
popq %rsi
movq %r15, %rdi
jmp 0x11dd4
jmp 0x11e1c
jmp 0x11dcb
jmp 0x11dbb
jmp 0x11dcb
jmp 0x11e1c
jmp 0x11e1c
jmp 0x11dcb
jmp 0x11dbb
jmp 0x11dcb
jmp 0x11e1c
jmp 0x11e1c
jmp 0x11dcb
jmp 0x11dbb
jmp 0x11dcb
jmp 0x11e1c
jmp 0x11e1c
jmp 0x11dcb
jmp 0x11dbb
jmp 0x11dcb
jmp 0x11e1c
jmp 0x11e1c
jmp 0x11dcb
jmp 0x11dbb
jmp 0x11dcb
jmp 0x11e1c
jmp 0x11e1c
jmp 0x11dcb
jmp 0x11dbb
jmp 0x11dcb
jmp 0x11e1c
jmp 0x11e1c
jmp 0x11dcb
jmp 0x11dbb
jmp 0x11dcb
jmp 0x11e1c
jmp 0x11e1c
jmp 0x11dcb
jmp 0x11dbb
jmp 0x11dcb
jmp 0x11e1c
jmp 0x11e1c
jmp 0x11dcb
jmp 0x11dbb
jmp 0x11dcb
jmp 0x11e1c
jmp 0x11e1c
jmp 0x11dcb
jmp 0x11dbb
jmp 0x11dcb
jmp 0x11e1c
jmp 0x11e1c
jmp 0x11dcb
jmp 0x11dbb
jmp 0x11dcb
jmp 0x11e1c
jmp 0x11e1c
jmp 0x11dcb
jmp 0x11dbb
jmp 0x11dcb
jmp 0x11e1c
jmp 0x11e1c
jmp 0x11dcb
jmp 0x11dbb
jmp 0x11dcb
jmp 0x11e1c
jmp 0x11e1c
jmp 0x11dcb
jmp 0x11dbb
jmp 0x11dcb
jmp 0x11e1c
jmp 0x11e1c
jmp 0x11dcb
jmp 0x11dbb
jmp 0x11dcb
jmp 0x11e1c
jmp 0x11e1c
jmp 0x11dcb
jmp 0x11dbb
jmp 0x11dcb
jmp 0x11e1c
jmp 0x11e1c
jmp 0x11dcb
jmp 0x11dbb
jmp 0x11dcb
jmp 0x11e1c
jmp 0x11e1c
jmp 0x11dcb
jmp 0x11dbb
jmp 0x11dcb
jmp 0x11e1c
jmp 0x11e1c
jmp 0x11dcb
jmp 0x11dbb
jmp 0x11dcb
jmp 0x11e1c
jmp 0x11e1c
jmp 0x11dcb
jmp 0x11dbb
jmp 0x11dcb
jmp 0x11e1c
jmp 0x11e1c
jmp 0x11dcb
jmp 0x11dbb
jmp 0x11dcb
jmp 0x11e1c
jmp 0x11e1c
jmp 0x11dcb
jmp 0x11dbb
jmp 0x11dcb
jmp 0x11e1c
jmp 0x11e1c
jmp 0x11dcb
jmp 0x11dbb
jmp 0x11dcb
jmp 0x11e1c
jmp 0x11e1c
jmp 0x11dcb
jmp 0x11dbb
jmp 0x11dcb
jmp 0x11e1c
jmp 0x11e1c
jmp 0x11dcb
jmp 0x11dbb
jmp 0x11dcb
jmp 0x11e1c
jmp 0x11e1c
jmp 0x11dcb
jmp 0x11dbb
jmp 0x11dcb
jmp 0x11e1c
jmp 0x11e1c
jmp 0x11dcb
jmp 0x11dbb
jmp 0x11dcb
jmp 0x11e1c
jmp 0x11e1c
jmp 0x11dcb
jmp 0x11dbb
jmp 0x11dcb
jmp 0x11e1c
jmp 0x11e1c
jmp 0x11dcb
jmp 0x11dbb
jmp 0x11dcb
jmp 0x11e1c
jmp 0x11e1c
jmp 0x11dcb
jmp 0x11dbb
jmp 0x11dcb
jmp 0x11e1c
jmp 0x11e1c
jmp 0x11dcb
jmp 0x11dbb
jmp 0x11dcb
jmp 0x11e1c
jmp 0x11e1c
jmp 0x11dcb
jmp 0x11dbb
jmp 0x11dcb
jmp 0x11e1c
jmp 0x11e1c
jmp 0x11dcb
jmp 0x11dbb
jmp 0x11dcb
jmp 0x11e1c
jmp 0x11e1c
jmp 0x11dcb
jmp 0x11dbb
jmp 0x11dcb
jmp 0x11e1c
jmp 0x11e1c
jmp 0x11dcb
jmp 0x11dbb
jmp 0x11dcb
jmp 0x11e1c
jmp 0x11e1c
jmp 0x11dcb
movq %rax, %r14
pushq $0x20
popq %rsi
movq %r15, %rdi
callq 0x5270
jmp 0x11dce
movq %rax, %r14
pushq $0x28
popq %rsi
movq %r12, %rdi
callq 0x5270
jmp 0x11e1f
jmp 0x11e1c
movq %r14, %rdi
movq %rax, %r14
pushq $0x20
popq %rsi
jmp 0x11dd4
jmp 0x11e1c
movq %rax, %r14
pushq $0x20
popq %rsi
movq 0x28(%rsp), %rdi
jmp 0x11dd4
jmp 0x11e1c
movq %rax, %r14
pushq $0x20
jmp 0x11e16
jmp 0x11e1c
movq %rax, %r14
pushq $0x20
popq %rsi
movq %rbp, %rdi
jmp 0x11dd4
jmp 0x11e1c
jmp 0x11e1c
movq %rax, %r14
pushq $0x50
popq %rsi
movq %r13, %rdi
jmp 0x11dd4
movq %rax, %r14
movq 0x30(%rsp), %rdi
callq 0x11e4e
movq %r14, %rdi
callq 0x5420
nop