// File: /workspace/github_cpp_makefile_star2_O3/CMU-SAFARI[P]ramulator/src/Processor.cpp
// Function: ramulator::Core::Core(ramulator::Config const&, int, char const*, std::function<bool (ramulator::Request)>, ramulator::Cache*, std::shared_ptr<ramulator::CacheSystem>, ramulator::MemoryBase&)
Core::Core(const Config& configs, int coreid,
    const char* trace_fname, function<bool(Request)> send_next,
    Cache* llc, std::shared_ptr<CacheSystem> cachesys, MemoryBase& memory)
    : id(coreid), no_core_caches(!configs.has_core_caches()),
    no_shared_cache(!configs.has_l3_cache()),
    llc(llc), trace(trace_fname), memory(memory)
{
  // set expected limit instruction for calculating weighted speedup
  expected_limit_insts = configs.get_expected_limit_insts();
  trace.expected_limit_insts = expected_limit_insts;

  // Build cache hierarchy
  if (no_core_caches) {
    send = send_next;
  } else {
    // L2 caches[0]
    caches.emplace_back(new Cache(
        l2_size, l2_assoc, l2_blocksz, l2_mshr_num,
        Cache::Level::L2, cachesys));
    // L1 caches[1]
    caches.emplace_back(new Cache(
        l1_size, l1_assoc, l1_blocksz, l1_mshr_num,
        Cache::Level::L1, cachesys));
    send = bind(&Cache::send, caches[1].get(), placeholders::_1);
    if (llc != nullptr) {
      caches[0]->concatlower(llc);
    }
    caches[1]->concatlower(caches[0].get());

    first_level_cache = caches[1].get();
  }
  if (no_core_caches) {
    more_reqs = trace.get_filtered_request(
        bubble_cnt, req_addr, req_type);
    req_addr = memory.page_allocator(req_addr, id);
  } else {
    more_reqs = trace.get_unfiltered_request(
        bubble_cnt, req_addr, req_type);
    req_addr = memory.page_allocator(req_addr, id);
  }

  
  // regStats
  record_cycs.name("record_cycs_core_" + to_string(id))
             .desc("Record cycle number for calculating weighted speedup. (Only valid when expected limit instruction number is non zero in config file.)")
             .precision(0)
             ;

  record_insts.name("record_insts_core_" + to_string(id))
              .desc("Retired instruction number when record cycle number. (Only valid when expected limit instruction number is non zero in config file.)")
              .precision(0)
              ;

  memory_access_cycles.name("memory_access_cycles_core_" + to_string(id))
                      .desc("memory access cycles in memory time domain")
                      .precision(0)
                      ;
  memory_access_cycles = 0;
  cpu_inst.name("cpu_instructions_core_" + to_string(id))
          .desc("cpu instruction number")
          .precision(0)
          ;
  cpu_inst = 0;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x188, %rsp            # imm = 0x188
movq %r9, %r13
movq %r8, %r14
movq %rcx, %rbp
movq %rsi, %r12
movq %rdi, %rbx
xorps %xmm0, %xmm0
movups %xmm0, (%rdi)
movl %edx, 0x10(%rdi)
leaq 0x18(%rdi), %rax
movq %rax, 0x30(%rsp)
movups %xmm0, 0x18(%rdi)
movups %xmm0, 0x28(%rdi)
movups %xmm0, 0x38(%rdi)
movups %xmm0, 0x48(%rdi)
movq %rsi, %rdi
callq 0x12e6e6
xorb $0x1, %al
movb %al, 0x58(%rbx)
movq %r12, %rdi
callq 0x12e7f2
xorb $0x1, %al
movb %al, 0x59(%rbx)
movaps 0x2dc43(%rip), %xmm0    # 0x15aab0
movups %xmm0, 0x5c(%rbx)
movaps 0x2dc48(%rip), %xmm0    # 0x15aac0
movups %xmm0, 0x6c(%rbx)
leaq 0x80(%rbx), %rax
movq %rax, 0x8(%rsp)
xorps %xmm0, %xmm0
movups %xmm0, 0x80(%rbx)
movq $0x0, 0x90(%rbx)
movq %r13, 0x98(%rbx)
leaq 0xa0(%rbx), %rdi
movq %rdi, 0x58(%rsp)
callq 0x21b38
leaq 0x70274(%rip), %r15     # 0x19d130
movq %r15, 0xa0(%rbx)
xorl %eax, %eax
movq %rax, 0x110(%rbx)
leaq 0x128(%rbx), %rcx
movq %rcx, 0x118(%rbx)
movq %rax, 0x120(%rbx)
movb $0x0, 0x128(%rbx)
leaq 0x138(%rbx), %rdi
movq %rdi, 0x50(%rsp)
callq 0x21b38
movq %r15, 0x138(%rbx)
xorl %eax, %eax
movq %rax, 0x1a8(%rbx)
leaq 0x1c0(%rbx), %rcx
movq %rcx, 0x1b0(%rbx)
movq %rax, 0x1b8(%rbx)
movb %al, 0x1c0(%rbx)
movb %al, 0x1d8(%rbx)
leaq 0x1e0(%rbx), %rdi
movq %rdi, 0x38(%rsp)
movq %rbp, %rsi
callq 0x12e2fe
leaq 0x410(%rbx), %rbp
movq %rbp, %rdi
callq 0x12eb16
movq $-0x1, 0x470(%rbx)
leaq 0x490(%rbx), %rdi
xorps %xmm0, %xmm0
movups %xmm0, 0x480(%rbx)
movq %rdi, 0x48(%rsp)
movq %rbp, 0x80(%rsp)
callq 0x21b38
movq %r15, 0x490(%rbx)
xorl %eax, %eax
movq %rax, 0x500(%rbx)
leaq 0x518(%rbx), %rcx
movq %rcx, 0x508(%rbx)
movq %rax, 0x510(%rbx)
movb $0x0, 0x518(%rbx)
leaq 0x528(%rbx), %rdi
movq %rdi, 0x40(%rsp)
callq 0x21b38
movq 0x1c8(%rsp), %rbp
movq %r15, 0x528(%rbx)
xorl %eax, %eax
movq %rax, 0x598(%rbx)
leaq 0x5b0(%rbx), %rcx
movq %rcx, 0x5a0(%rbx)
movq %rax, 0x5a8(%rbx)
movb $0x0, 0x5b0(%rbx)
movq %rbp, 0x5c0(%rbx)
movq 0x48(%r12), %rax
movq %rax, 0x1d0(%rbx)
movq %rax, 0x1e0(%rbx)
cmpb $0x1, 0x58(%rbx)
jne 0x12d01e
movq 0x30(%rsp), %rdi
movq %r14, %rsi
callq 0x12eb94
jmp 0x12d198
movl $0x6f0, %edi            # imm = 0x6F0
callq 0xb2e0
movq %rax, %r14
movq 0x1c0(%rsp), %r15
movl 0x6c(%rbx), %esi
movl 0x70(%rbx), %edx
movl 0x74(%rbx), %ecx
movl 0x78(%rbx), %r8d
movq (%r15), %rax
movq %rax, 0x70(%rsp)
movq 0x8(%r15), %rax
movq %rax, 0x78(%rsp)
testq %rax, %rax
je 0x12d06b
movq 0x72f33(%rip), %rdi     # 0x19ff90
cmpb $0x0, (%rdi)
je 0x12d067
incl 0x8(%rax)
jmp 0x12d06b
lock
incl 0x8(%rax)
movb $0x1, %r12b
leaq 0x70(%rsp), %rax
movq %rax, (%rsp)
movq %r14, %rdi
movl $0x1, %r9d
callq 0x103170
leaq 0x10(%rsp), %rsi
movq %r14, (%rsi)
xorl %r12d, %r12d
movq 0x8(%rsp), %rdi
callq 0x12ebfa
movq 0x78(%rsp), %rdi
testq %rdi, %rdi
je 0x12d0a9
callq 0x2c668
movl $0x6f0, %edi            # imm = 0x6F0
callq 0xb2e0
movq %rax, %r14
movl 0x5c(%rbx), %esi
movl 0x60(%rbx), %edx
movl 0x64(%rbx), %ecx
movl 0x68(%rbx), %r8d
movq (%r15), %rax
movq %rax, 0x60(%rsp)
movq 0x8(%r15), %rax
movq %rax, 0x68(%rsp)
testq %rax, %rax
je 0x12d0ee
movq 0x72eb0(%rip), %rdi     # 0x19ff90
cmpb $0x0, (%rdi)
je 0x12d0ea
incl 0x8(%rax)
jmp 0x12d0ee
lock
incl 0x8(%rax)
movb $0x1, %r15b
leaq 0x60(%rsp), %rax
movq %rax, (%rsp)
movq %r14, %rdi
xorl %r9d, %r9d
callq 0x103170
leaq 0x10(%rsp), %rsi
movq %r14, (%rsi)
xorl %r15d, %r15d
movq 0x8(%rsp), %rdi
callq 0x12ebfa
movq 0x68(%rsp), %rdi
testq %rdi, %rdi
je 0x12d129
callq 0x2c668
movq 0x8(%rsp), %rax
movq (%rax), %rax
movq 0x10(%rax), %rax
leaq -0x28aae(%rip), %rcx    # 0x10468e
leaq 0x10(%rsp), %rsi
movq %rcx, (%rsi)
movq $0x0, 0x8(%rsi)
movq %rax, 0x10(%rsi)
movq 0x30(%rsp), %rdi
callq 0x12ec40
testq %r13, %r13
je 0x12d172
movq 0x8(%rsp), %rax
movq (%rax), %rax
movq (%rax), %rdi
movq %r13, %rsi
callq 0x1050ce
movq 0x8(%rsp), %rax
movq (%rax), %rax
movq (%rax), %rsi
movq 0x10(%rax), %rdi
callq 0x1050ce
movq 0x80(%rbx), %rax
movq 0x10(%rax), %rax
movq %rax, 0x488(%rbx)
leaq 0x470(%rbx), %rdx
leaq 0x468(%rbx), %rsi
leaq 0x478(%rbx), %rcx
cmpb $0x1, 0x58(%rbx)
jne 0x12d1c5
movq 0x38(%rsp), %rdi
callq 0x12dae0
movb %al, 0x47c(%rbx)
jmp 0x12d1d6
movq 0x38(%rsp), %rdi
callq 0x12de64
movb $0x1, 0x47c(%rbx)
movq 0x470(%rbx), %rsi
movl 0x10(%rbx), %edx
movq (%rbp), %rax
movq %rbp, %rdi
callq *0x38(%rax)
movq %rax, 0x470(%rbx)
movl 0x10(%rbx), %r14d
movl %r14d, %ebp
negl %ebp
cmovsl %r14d, %ebp
movl $0x1, %r12d
cmpl $0xa, %ebp
jb 0x12d252
movl $0x4, %r12d
movl $0xd1b71759, %eax       # imm = 0xD1B71759
movl %ebp, %ecx
cmpl $0x63, %ecx
jbe 0x12d249
cmpl $0x3e7, %ecx            # imm = 0x3E7
jbe 0x12d24f
cmpl $0x2710, %ecx           # imm = 0x2710
jb 0x12d252
movl %ecx, %edx
imulq %rax, %rdx
shrq $0x2d, %rdx
addl $0x4, %r12d
cmpl $0x1869f, %ecx          # imm = 0x1869F
movl %edx, %ecx
ja 0x12d216
addl $-0x3, %r12d
jmp 0x12d252
addl $-0x2, %r12d
jmp 0x12d252
decl %r12d
shrl $0x1f, %r14d
leal (%r12,%r14), %esi
leaq 0x20(%rsp), %r15
movq %r15, -0x10(%r15)
leaq 0x10(%rsp), %rdi
movl $0x2d, %edx
callq 0xb350
leaq 0x10(%rsp), %r13
addq (%r13), %r14
movq %r14, %rdi
movl %r12d, %esi
movl %ebp, %edx
callq 0x23993
leaq 0x2d96c(%rip), %rcx     # 0x15abfb
movl $0x11, %r8d
movq %r13, %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0xb330
leaq 0xf8(%rsp), %r12
movq %r12, -0x10(%r12)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x12d2d2
movq %rdx, 0xe8(%rsp)
movq (%rcx), %rdx
movq %rdx, 0xf8(%rsp)
jmp 0x12d2da
movups (%rcx), %xmm0
movups %xmm0, (%r12)
movq 0x8(%rax), %rdx
leaq 0xe8(%rsp), %rsi
movq %rdx, 0x8(%rsi)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq 0x58(%rsp), %rdi
callq 0x23884
movq %rax, %r14
leaq 0x178(%rsp), %r13
movq %r13, -0x10(%r13)
leaq 0x2d8f4(%rip), %rsi     # 0x15ac0d
leaq 0x2d972(%rip), %rdx     # 0x15ac92
leaq 0x168(%rsp), %rdi
callq 0x175a0
leaq 0x28(%r14), %rdi
leaq 0x168(%rsp), %rsi
callq 0xb1c0
movl $0x0, 0x48(%r14)
movq 0x168(%rsp), %rdi
cmpq %r13, %rdi
je 0x12d363
movq 0x178(%rsp), %rsi
incq %rsi
callq 0xb2f0
movq 0xe8(%rsp), %rdi
cmpq %r12, %rdi
je 0x12d380
movq 0xf8(%rsp), %rsi
incq %rsi
callq 0xb2f0
movq 0x10(%rsp), %rdi
cmpq %r15, %rdi
je 0x12d397
movq 0x20(%rsp), %rsi
incq %rsi
callq 0xb2f0
movl 0x10(%rbx), %r14d
movl %r14d, %ebp
negl %ebp
cmovsl %r14d, %ebp
movl $0x1, %r12d
cmpl $0xa, %ebp
jb 0x12d3f8
movl $0x4, %r12d
movl $0xd1b71759, %eax       # imm = 0xD1B71759
movl %ebp, %ecx
cmpl $0x63, %ecx
jbe 0x12d3ef
cmpl $0x3e7, %ecx            # imm = 0x3E7
jbe 0x12d3f5
cmpl $0x2710, %ecx           # imm = 0x2710
jb 0x12d3f8
movl %ecx, %edx
imulq %rax, %rdx
shrq $0x2d, %rdx
addl $0x4, %r12d
cmpl $0x1869f, %ecx          # imm = 0x1869F
movl %edx, %ecx
ja 0x12d3bc
addl $-0x3, %r12d
jmp 0x12d3f8
addl $-0x2, %r12d
jmp 0x12d3f8
decl %r12d
shrl $0x1f, %r14d
leal (%r12,%r14), %esi
leaq 0x10(%rsp), %rdi
movq %r15, (%rdi)
movl $0x2d, %edx
callq 0xb350
leaq 0x10(%rsp), %r13
addq (%r13), %r14
movq %r14, %rdi
movl %r12d, %esi
movl %ebp, %edx
callq 0x23993
leaq 0x2d864(%rip), %rcx     # 0x15ac93
movl $0x12, %r8d
movq %r13, %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0xb330
leaq 0xd8(%rsp), %r12
movq %r12, -0x10(%r12)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x12d472
movq %rdx, 0xc8(%rsp)
movq (%rcx), %rdx
movq %rdx, 0xd8(%rsp)
jmp 0x12d47a
movups (%rcx), %xmm0
movups %xmm0, (%r12)
movq 0x8(%rax), %rdx
leaq 0xc8(%rsp), %rsi
movq %rdx, 0x8(%rsi)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq 0x50(%rsp), %rdi
callq 0x23884
movq %rax, %r14
leaq 0x158(%rsp), %r13
movq %r13, -0x10(%r13)
leaq 0x2d7ed(%rip), %rsi     # 0x15aca6
leaq 0x2d86a(%rip), %rdx     # 0x15ad2a
leaq 0x148(%rsp), %rdi
callq 0x175a0
leaq 0x28(%r14), %rdi
leaq 0x148(%rsp), %rsi
callq 0xb1c0
movl $0x0, 0x48(%r14)
movq 0x148(%rsp), %rdi
cmpq %r13, %rdi
je 0x12d503
movq 0x158(%rsp), %rsi
incq %rsi
callq 0xb2f0
movq 0xc8(%rsp), %rdi
cmpq %r12, %rdi
je 0x12d520
movq 0xd8(%rsp), %rsi
incq %rsi
callq 0xb2f0
movq 0x10(%rsp), %rdi
cmpq %r15, %rdi
je 0x12d537
movq 0x20(%rsp), %rsi
incq %rsi
callq 0xb2f0
movl 0x10(%rbx), %r14d
movl %r14d, %ebp
negl %ebp
cmovsl %r14d, %ebp
movl $0x1, %r12d
cmpl $0xa, %ebp
jb 0x12d598
movl $0x4, %r12d
movl $0xd1b71759, %eax       # imm = 0xD1B71759
movl %ebp, %ecx
cmpl $0x63, %ecx
jbe 0x12d58f
cmpl $0x3e7, %ecx            # imm = 0x3E7
jbe 0x12d595
cmpl $0x2710, %ecx           # imm = 0x2710
jb 0x12d598
movl %ecx, %edx
imulq %rax, %rdx
shrq $0x2d, %rdx
addl $0x4, %r12d
cmpl $0x1869f, %ecx          # imm = 0x1869F
movl %edx, %ecx
ja 0x12d55c
addl $-0x3, %r12d
jmp 0x12d598
addl $-0x2, %r12d
jmp 0x12d598
decl %r12d
shrl $0x1f, %r14d
leal (%r12,%r14), %esi
leaq 0x10(%rsp), %rdi
movq %r15, (%rdi)
movl $0x2d, %edx
callq 0xb350
leaq 0x10(%rsp), %r13
addq (%r13), %r14
movq %r14, %rdi
movl %r12d, %esi
movl %ebp, %edx
callq 0x23993
leaq 0x2d75c(%rip), %rcx     # 0x15ad2b
movl $0x1a, %r8d
movq %r13, %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0xb330
leaq 0xb8(%rsp), %r12
movq %r12, -0x10(%r12)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x12d612
movq %rdx, 0xa8(%rsp)
movq (%rcx), %rdx
movq %rdx, 0xb8(%rsp)
jmp 0x12d61a
movups (%rcx), %xmm0
movups %xmm0, (%r12)
movq 0x8(%rax), %rdx
leaq 0xa8(%rsp), %rsi
movq %rdx, 0x8(%rsi)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq 0x48(%rsp), %rdi
callq 0x23884
movq %rax, %r14
leaq 0x138(%rsp), %r13
movq %r13, -0x10(%r13)
leaq 0x2d6ed(%rip), %rsi     # 0x15ad46
leaq 0x2d710(%rip), %rdx     # 0x15ad70
leaq 0x128(%rsp), %rdi
callq 0x175a0
leaq 0x28(%r14), %rdi
leaq 0x128(%rsp), %rsi
callq 0xb1c0
movl $0x0, 0x48(%r14)
movq 0x128(%rsp), %rdi
cmpq %r13, %rdi
je 0x12d6a3
movq 0x138(%rsp), %rsi
incq %rsi
callq 0xb2f0
movq 0xa8(%rsp), %rdi
cmpq %r12, %rdi
je 0x12d6c0
movq 0xb8(%rsp), %rsi
incq %rsi
callq 0xb2f0
movq 0x10(%rsp), %rdi
cmpq %r15, %rdi
je 0x12d6d7
movq 0x20(%rsp), %rsi
incq %rsi
callq 0xb2f0
movq $0x0, 0x500(%rbx)
movl 0x10(%rbx), %r14d
movl %r14d, %ebp
negl %ebp
cmovsl %r14d, %ebp
movl $0x1, %r12d
cmpl $0xa, %ebp
jb 0x12d743
movl $0x4, %r12d
movl $0xd1b71759, %eax       # imm = 0xD1B71759
movl %ebp, %ecx
cmpl $0x63, %ecx
jbe 0x12d73a
cmpl $0x3e7, %ecx            # imm = 0x3E7
jbe 0x12d740
cmpl $0x2710, %ecx           # imm = 0x2710
jb 0x12d743
movl %ecx, %edx
imulq %rax, %rdx
shrq $0x2d, %rdx
addl $0x4, %r12d
cmpl $0x1869f, %ecx          # imm = 0x1869F
movl %edx, %ecx
ja 0x12d707
addl $-0x3, %r12d
jmp 0x12d743
addl $-0x2, %r12d
jmp 0x12d743
decl %r12d
shrl $0x1f, %r14d
leal (%r12,%r14), %esi
leaq 0x10(%rsp), %rdi
movq %r15, (%rdi)
movl $0x2d, %edx
callq 0xb350
leaq 0x10(%rsp), %r13
addq (%r13), %r14
movq %r14, %rdi
movl %r12d, %esi
movl %ebp, %edx
callq 0x23993
leaq 0x2d5f7(%rip), %rcx     # 0x15ad71
movl $0x16, %r8d
movq %r13, %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0xb330
leaq 0x98(%rsp), %r12
movq %r12, -0x10(%r12)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x12d7bd
movq %rdx, 0x88(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x98(%rsp)
jmp 0x12d7c5
movups (%rcx), %xmm0
movups %xmm0, (%r12)
movq 0x8(%rax), %rdx
leaq 0x88(%rsp), %rsi
movq %rdx, 0x8(%rsi)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq 0x40(%rsp), %rdi
callq 0x23884
movq %rax, %r14
leaq 0x118(%rsp), %r13
movq %r13, -0x10(%r13)
leaq 0x2d584(%rip), %rsi     # 0x15ad88
leaq 0x2d593(%rip), %rdx     # 0x15ad9e
leaq 0x108(%rsp), %rdi
callq 0x175a0
leaq 0x28(%r14), %rdi
leaq 0x108(%rsp), %rsi
callq 0xb1c0
movl $0x0, 0x48(%r14)
movq 0x108(%rsp), %rdi
cmpq %r13, %rdi
je 0x12d84e
movq 0x118(%rsp), %rsi
incq %rsi
callq 0xb2f0
movq 0x88(%rsp), %rdi
cmpq %r12, %rdi
je 0x12d86b
movq 0x98(%rsp), %rsi
incq %rsi
callq 0xb2f0
movq 0x10(%rsp), %rdi
cmpq %r15, %rdi
je 0x12d882
movq 0x20(%rsp), %rsi
incq %rsi
callq 0xb2f0
movq $0x0, 0x598(%rbx)
addq $0x188, %rsp            # imm = 0x188
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x12da52
jmp 0x12da52
jmp 0x12da52
movq %rax, %rbp
movq 0x108(%rsp), %rdi
cmpq %r13, %rdi
je 0x12d8d5
movq 0x118(%rsp), %rsi
incq %rsi
callq 0xb2f0
jmp 0x12d8d5
jmp 0x12d8d2
movq %rax, %rbp
movq 0x88(%rsp), %rdi
cmpq %r12, %rdi
je 0x12d9da
movq 0x98(%rsp), %rsi
jmp 0x12d9cd
jmp 0x12d9d7
jmp 0x12da52
movq %rax, %rbp
movq 0x128(%rsp), %rdi
cmpq %r13, %rdi
je 0x12d924
movq 0x138(%rsp), %rsi
incq %rsi
callq 0xb2f0
jmp 0x12d924
jmp 0x12d921
movq %rax, %rbp
movq 0xa8(%rsp), %rdi
cmpq %r12, %rdi
je 0x12d9da
movq 0xb8(%rsp), %rsi
jmp 0x12d9cd
jmp 0x12d9d7
jmp 0x12da52
movq %rax, %rbp
movq 0x148(%rsp), %rdi
cmpq %r13, %rdi
je 0x12d973
movq 0x158(%rsp), %rsi
incq %rsi
callq 0xb2f0
jmp 0x12d973
jmp 0x12d970
movq %rax, %rbp
movq 0xc8(%rsp), %rdi
cmpq %r12, %rdi
je 0x12d9da
movq 0xd8(%rsp), %rsi
jmp 0x12d9cd
jmp 0x12d9d7
jmp 0x12da52
movq %rax, %rbp
movq 0x168(%rsp), %rdi
cmpq %r13, %rdi
je 0x12d9b8
movq 0x178(%rsp), %rsi
incq %rsi
callq 0xb2f0
jmp 0x12d9b8
jmp 0x12d9b5
movq %rax, %rbp
movq 0xe8(%rsp), %rdi
cmpq %r12, %rdi
je 0x12d9da
movq 0xf8(%rsp), %rsi
incq %rsi
callq 0xb2f0
jmp 0x12d9da
movq %rax, %rbp
movq 0x10(%rsp), %rdi
cmpq %r15, %rdi
je 0x12da55
movq 0x20(%rsp), %rsi
incq %rsi
callq 0xb2f0
jmp 0x12da55
jmp 0x12da52
movq %rax, %rbp
movq 0x68(%rsp), %rdi
testq %rdi, %rdi
je 0x12da07
callq 0x2c668
testb %r15b, %r15b
jne 0x12da25
jmp 0x12da55
movq %rax, %rbp
movq 0x78(%rsp), %rdi
testq %rdi, %rdi
je 0x12da20
callq 0x2c668
testb %r12b, %r12b
je 0x12da55
movl $0x6f0, %esi            # imm = 0x6F0
movq %r14, %rdi
jmp 0x12d9ec
movq %rax, %rbp
jmp 0x12da5f
movq %rax, %rbp
jmp 0x12da69
movq %rax, %rbp
jmp 0x12da76
movq %rax, %rbp
jmp 0x12da80
movq %rax, %rbp
jmp 0x12da8a
movq %rax, %rbp
jmp 0x12da94
movq %rax, %rbp
jmp 0x12da9e
movq %rax, %rbp
movq 0x40(%rsp), %rdi
callq 0x2191a
movq 0x48(%rsp), %rdi
callq 0x2191a
movq 0x80(%rsp), %rdi
callq 0x12ecd4
movq 0x38(%rsp), %rdi
callq 0x2c9b8
movq 0x50(%rsp), %rdi
callq 0x2191a
movq 0x58(%rsp), %rdi
callq 0x2191a
movq 0x8(%rsp), %rdi
callq 0x2c9e8
movq 0x48(%rbx), %rax
testq %rax, %rax
je 0x12dab5
leaq 0x38(%rbx), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
movq 0x28(%rbx), %rax
testq %rax, %rax
je 0x12dacd
movq 0x30(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
movq %rbp, %rdi
callq 0xb510
jmp 0x12dad7
movq %rax, %rdi
callq 0x171a3
nop