// File: CMU-SAFARI[P]ramulator/src/DSARP.cpp
// Function: ramulator::DSARP::DSARP(ramulator::DSARP::Org, ramulator::DSARP::Speed, ramulator::DSARP::Type, int)
DSARP::DSARP(Org org, Speed speed, Type type, int n_sa) :
  type(type),
  org_entry(org_table[int(org)]),
  speed_entry(speed_table[int(speed)]),
  read_latency(speed_entry.nCL + speed_entry.nBL),
  n_sa(n_sa)
{
  init_speed();
  init_prereq();
  init_rowhit(); // SAUGATA: added row hit function
  init_rowopen();
  init_lambda();
  init_timing();

  // All mechanisms are built on top of REFpb, except for REFab
  b_ref_rank = false;
  switch(int(type)){
    case int(Type::REFAB):
      standard_name = "REFAB";
      b_ref_rank = true;
      break;
    case int(Type::REFPB): standard_name = "REFPB"; break;
    case int(Type::DARP):  standard_name = "DARP"; break;
    case int(Type::SARP):  standard_name = "SARP"; break;
    case int(Type::DSARP): standard_name = "DSARP"; break;
  }

  // Update the SA count (is power of 2, within [1, 128]) and row count
  assert(n_sa && n_sa <= 128 && (n_sa & (n_sa-1)) == 0);
  org_entry.count[int(Level::SubArray)] = n_sa;
  long tmp = long(org_entry.dq) * org_entry.count[int(Level::Bank)] *
    n_sa * org_entry.count[int(Level::Column)];
  org_entry.count[int(Level::Row)] = long(org_entry.size) * (1<<20) / tmp;

  // Change the translation for refresh requests
  if (!b_ref_rank)
    translate[int(Request::Type::REFRESH)] = Command::REFPB;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x250, %rsp            # imm = 0x250
movq %rdi, -0x8(%rbp)
movl %esi, -0xc(%rbp)
movl %edx, -0x10(%rbp)
movl %ecx, -0x14(%rbp)
movl %r8d, -0x18(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x68(%rbp)
movl -0x14(%rbp), %ecx
movl %ecx, (%rax)
addq $0x8, %rax
movq %rax, -0x60(%rbp)
movb $0x1, -0x41(%rbp)
movq %rax, -0x20(%rbp)
leaq -0x21(%rbp), %rdi
movq %rdi, -0x58(%rbp)
callq 0xc5e0
movq -0x60(%rbp), %rdi
movq -0x58(%rbp), %rdx
leaq 0xb54ad(%rip), %rsi     # 0x25abb2
callq 0x17a40
jmp 0x1a570c
movq -0x60(%rbp), %rax
addq $0x20, %rax
movq %rax, -0x78(%rbp)
movq %rax, -0x20(%rbp)
leaq -0x35(%rbp), %rdi
movq %rdi, -0x70(%rbp)
callq 0xc5e0
movq -0x78(%rbp), %rdi
movq -0x70(%rbp), %rdx
leaq 0xb547e(%rip), %rsi     # 0x25abb6
callq 0x17a40
jmp 0x1a573f
movq -0x60(%rbp), %rax
addq $0x40, %rax
movq %rax, -0x88(%rbp)
movq %rax, -0x20(%rbp)
leaq -0x36(%rbp), %rdi
movq %rdi, -0x80(%rbp)
callq 0xc5e0
movq -0x88(%rbp), %rdi
movq -0x80(%rbp), %rdx
leaq 0xabb7a(%rip), %rsi     # 0x2512eb
callq 0x17a40
jmp 0x1a5778
movq -0x60(%rbp), %rax
addq $0x60, %rax
movq %rax, -0x98(%rbp)
movq %rax, -0x20(%rbp)
leaq -0x37(%rbp), %rdi
movq %rdi, -0x90(%rbp)
callq 0xc5e0
movq -0x98(%rbp), %rdi
movq -0x90(%rbp), %rdx
leaq 0xb540a(%rip), %rsi     # 0x25abba
callq 0x17a40
jmp 0x1a57b7
movq -0x60(%rbp), %rax
subq $-0x80, %rax
movq %rax, -0xa8(%rbp)
movq %rax, -0x20(%rbp)
leaq -0x38(%rbp), %rdi
movq %rdi, -0xa0(%rbp)
callq 0xc5e0
movq -0xa8(%rbp), %rdi
movq -0xa0(%rbp), %rdx
leaq 0xaabbb(%rip), %rsi     # 0x2503aa
callq 0x17a40
jmp 0x1a57f6
movq -0x60(%rbp), %rax
addq $0xa0, %rax
movq %rax, -0xb8(%rbp)
movq %rax, -0x20(%rbp)
leaq -0x39(%rbp), %rdi
movq %rdi, -0xb0(%rbp)
callq 0xc5e0
movq -0xb8(%rbp), %rdi
movq -0xb0(%rbp), %rdx
leaq 0xb538d(%rip), %rsi     # 0x25abbd
callq 0x17a40
jmp 0x1a5837
movq -0x60(%rbp), %rax
addq $0xc0, %rax
movq %rax, -0xc8(%rbp)
movq %rax, -0x20(%rbp)
leaq -0x3a(%rbp), %rdi
movq %rdi, -0xc0(%rbp)
callq 0xc5e0
movq -0xc8(%rbp), %rdi
movq -0xc0(%rbp), %rdx
leaq 0xb5350(%rip), %rsi     # 0x25abc1
callq 0x17a40
jmp 0x1a5878
movq -0x60(%rbp), %rax
addq $0xe0, %rax
movq %rax, -0xd8(%rbp)
movq %rax, -0x20(%rbp)
leaq -0x3b(%rbp), %rdi
movq %rdi, -0xd0(%rbp)
callq 0xc5e0
movq -0xd8(%rbp), %rdi
movq -0xd0(%rbp), %rdx
leaq 0xbf2ae(%rip), %rsi     # 0x264b60
callq 0x17a40
jmp 0x1a58b9
movq -0x60(%rbp), %rax
addq $0x100, %rax            # imm = 0x100
movq %rax, -0xe8(%rbp)
movq %rax, -0x20(%rbp)
leaq -0x3c(%rbp), %rdi
movq %rdi, -0xe0(%rbp)
callq 0xc5e0
movq -0xe8(%rbp), %rdi
movq -0xe0(%rbp), %rdx
leaq 0xb7c92(%rip), %rsi     # 0x25d585
callq 0x17a40
jmp 0x1a58fa
movq -0x60(%rbp), %rax
addq $0x120, %rax            # imm = 0x120
movq %rax, -0xf8(%rbp)
movq %rax, -0x20(%rbp)
leaq -0x3d(%rbp), %rdi
movq %rdi, -0xf0(%rbp)
callq 0xc5e0
movq -0xf8(%rbp), %rdi
movq -0xf0(%rbp), %rdx
leaq 0xb5291(%rip), %rsi     # 0x25abc5
callq 0x17a40
jmp 0x1a593b
movq -0x60(%rbp), %rax
addq $0x140, %rax            # imm = 0x140
movq %rax, -0x108(%rbp)
movq %rax, -0x20(%rbp)
leaq -0x3e(%rbp), %rdi
movq %rdi, -0x100(%rbp)
callq 0xc5e0
movq -0x108(%rbp), %rdi
movq -0x100(%rbp), %rdx
leaq 0xb5254(%rip), %rsi     # 0x25abc9
callq 0x17a40
jmp 0x1a597c
movq -0x60(%rbp), %rax
addq $0x160, %rax            # imm = 0x160
movq %rax, -0x118(%rbp)
movq %rax, -0x20(%rbp)
leaq -0x3f(%rbp), %rdi
movq %rdi, -0x110(%rbp)
callq 0xc5e0
movq -0x118(%rbp), %rdi
movq -0x110(%rbp), %rdx
leaq 0xb5217(%rip), %rsi     # 0x25abcd
callq 0x17a40
jmp 0x1a59bd
movq -0x60(%rbp), %rax
addq $0x180, %rax            # imm = 0x180
movq %rax, -0x128(%rbp)
movq %rax, -0x20(%rbp)
leaq -0x40(%rbp), %rdi
movq %rdi, -0x120(%rbp)
callq 0xc5e0
movq -0x128(%rbp), %rdi
movq -0x120(%rbp), %rdx
leaq 0xb51da(%rip), %rsi     # 0x25abd1
callq 0x17a40
jmp 0x1a59fe
movb $0x0, -0x41(%rbp)
leaq -0x40(%rbp), %rdi
callq 0xc3c0
leaq -0x3f(%rbp), %rdi
callq 0xc3c0
leaq -0x3e(%rbp), %rdi
callq 0xc3c0
leaq -0x3d(%rbp), %rdi
callq 0xc3c0
leaq -0x3c(%rbp), %rdi
callq 0xc3c0
leaq -0x3b(%rbp), %rdi
callq 0xc3c0
leaq -0x3a(%rbp), %rdi
callq 0xc3c0
leaq -0x39(%rbp), %rdi
callq 0xc3c0
leaq -0x38(%rbp), %rdi
callq 0xc3c0
leaq -0x37(%rbp), %rdi
callq 0xc3c0
leaq -0x36(%rbp), %rdi
callq 0xc3c0
leaq -0x35(%rbp), %rdi
callq 0xc3c0
leaq -0x21(%rbp), %rdi
callq 0xc3c0
movq -0x68(%rbp), %rdi
addq $0x1a8, %rdi            # imm = 0x1A8
leaq 0xb7563(%rip), %rsi     # 0x25cfec
movl $0x34, %edx
callq 0xc300
movq -0x68(%rbp), %rax
movq 0xb7582(%rip), %rcx     # 0x25d020
movq %rcx, 0x1dc(%rax)
movq 0xb757c(%rip), %rcx     # 0x25d028
movq %rcx, 0x1e4(%rax)
movq 0xb7576(%rip), %rcx     # 0x25d030
movq %rcx, 0x1ec(%rax)
movq 0xb7570(%rip), %rcx     # 0x25d038
movq %rcx, 0x1f4(%rax)
movq 0xb756a(%rip), %rcx     # 0x25d040
movq %rcx, 0x1fc(%rax)
movq 0xb7564(%rip), %rcx     # 0x25d048
movq %rcx, 0x204(%rax)
addq $0x210, %rax            # imm = 0x210
movq %rax, -0x140(%rbp)
movq %rax, %rcx
addq $0x9c0, %rcx            # imm = 0x9C0
movq %rcx, -0x138(%rbp)
movq %rax, -0x130(%rbp)
movq -0x130(%rbp), %rdi
movq %rdi, -0x148(%rbp)
callq 0x1b0300
movq -0x148(%rbp), %rax
movq -0x138(%rbp), %rcx
addq $0x20, %rax
cmpq %rcx, %rax
movq %rax, -0x130(%rbp)
jne 0x1a5b10
movq -0x68(%rbp), %rax
addq $0xbd0, %rax            # imm = 0xBD0
movq %rax, -0x160(%rbp)
movq %rax, %rcx
addq $0x9c0, %rcx            # imm = 0x9C0
movq %rcx, -0x158(%rbp)
movq %rax, -0x150(%rbp)
movq -0x150(%rbp), %rdi
movq %rdi, -0x168(%rbp)
callq 0x1b0340
movq -0x168(%rbp), %rax
movq -0x158(%rbp), %rcx
addq $0x20, %rax
cmpq %rcx, %rax
movq %rax, -0x150(%rbp)
jne 0x1a5b6a
movq -0x68(%rbp), %rax
addq $0x1590, %rax           # imm = 0x1590
movq %rax, -0x180(%rbp)
movq %rax, %rcx
addq $0x9c0, %rcx            # imm = 0x9C0
movq %rcx, -0x178(%rbp)
movq %rax, -0x170(%rbp)
movq -0x170(%rbp), %rdi
movq %rdi, -0x188(%rbp)
callq 0x1b0340
movq -0x188(%rbp), %rax
movq -0x178(%rbp), %rcx
addq $0x20, %rax
cmpq %rcx, %rax
movq %rax, -0x170(%rbp)
jne 0x1a5bc4
movq -0x68(%rbp), %rax
addq $0x1f50, %rax           # imm = 0x1F50
movq %rax, -0x1a0(%rbp)
movq %rax, %rcx
addq $0x750, %rcx            # imm = 0x750
movq %rcx, -0x198(%rbp)
movq %rax, -0x190(%rbp)
movq -0x190(%rbp), %rdi
movq %rdi, -0x1a8(%rbp)
callq 0x1b0380
movq -0x1a8(%rbp), %rax
movq -0x198(%rbp), %rcx
addq $0x18, %rax
cmpq %rcx, %rax
movq %rax, -0x190(%rbp)
jne 0x1a5c1e
movq -0x68(%rbp), %rax
addq $0x26a0, %rax           # imm = 0x26A0
movq %rax, -0x1c0(%rbp)
movq %rax, %rcx
addq $0x9c0, %rcx            # imm = 0x9C0
movq %rcx, -0x1b8(%rbp)
movq %rax, -0x1b0(%rbp)
movq -0x1b0(%rbp), %rdi
movq %rdi, -0x1c8(%rbp)
callq 0x1b03a0
movq -0x1c8(%rbp), %rax
movq -0x1b8(%rbp), %rcx
addq $0x20, %rax
cmpq %rcx, %rax
movq %rax, -0x1b0(%rbp)
jne 0x1a5c78
movq -0x68(%rbp), %rdi
movups 0xb73ec(%rip), %xmm0    # 0x25d0a0
movups %xmm0, 0x30b0(%rdi)
movups 0xb73ce(%rip), %xmm0    # 0x25d090
movups %xmm0, 0x30a0(%rdi)
movups 0xb73b0(%rip), %xmm0    # 0x25d080
movups %xmm0, 0x3090(%rdi)
movups 0xb7392(%rip), %xmm0    # 0x25d070
movups %xmm0, 0x3080(%rdi)
movups 0xb7374(%rip), %xmm0    # 0x25d060
movups %xmm0, 0x3070(%rdi)
movups 0xb7356(%rip), %xmm0    # 0x25d050
movups %xmm0, 0x3060(%rdi)
movslq -0xc(%rbp), %rax
shlq $0x5, %rax
movups 0x3060(%rdi,%rax), %xmm0
movups 0x3070(%rdi,%rax), %xmm1
movups %xmm1, 0x30d0(%rdi)
movups %xmm0, 0x30c0(%rdi)
movl $0x0, 0x30e0(%rdi)
movl $0x10, 0x30e4(%rdi)
movl $0x20, 0x30e8(%rdi)
movups 0xb73d4(%rip), %xmm0    # 0x25d120
movups %xmm0, 0x3160(%rdi)
movups 0xb73b6(%rip), %xmm0    # 0x25d110
movups %xmm0, 0x3150(%rdi)
movups 0xb7398(%rip), %xmm0    # 0x25d100
movups %xmm0, 0x3140(%rdi)
movups 0xb737a(%rip), %xmm0    # 0x25d0f0
movups %xmm0, 0x3130(%rdi)
movups 0xb735c(%rip), %xmm0    # 0x25d0e0
movups %xmm0, 0x3120(%rdi)
movups 0xb733e(%rip), %xmm0    # 0x25d0d0
movups %xmm0, 0x3110(%rdi)
movups 0xb7320(%rip), %xmm0    # 0x25d0c0
movups %xmm0, 0x3100(%rdi)
movups 0xb7302(%rip), %xmm0    # 0x25d0b0
movups %xmm0, 0x30f0(%rdi)
movslq -0x10(%rbp), %rax
shlq $0x7, %rax
movq %rax, -0x1d0(%rbp)
movups 0x3160(%rdi,%rax), %xmm0
movups %xmm0, 0x31e0(%rdi)
movups 0x3150(%rdi,%rax), %xmm0
movups %xmm0, 0x31d0(%rdi)
movups 0x3140(%rdi,%rax), %xmm0
movups %xmm0, 0x31c0(%rdi)
movups 0x3130(%rdi,%rax), %xmm0
movups %xmm0, 0x31b0(%rdi)
movups 0x30f0(%rdi,%rax), %xmm0
movups 0x3100(%rdi,%rax), %xmm1
movups 0x3110(%rdi,%rax), %xmm2
movups 0x3120(%rdi,%rax), %xmm3
movups %xmm3, 0x31a0(%rdi)
movups %xmm2, 0x3190(%rdi)
movups %xmm1, 0x3180(%rdi)
movups %xmm0, 0x3170(%rdi)
movl 0x3188(%rdi), %ecx
movl 0x3194(%rdi), %eax
addl %ecx, %eax
movl %eax, 0x31f0(%rdi)
movl -0x18(%rbp), %eax
movl %eax, 0x31f4(%rdi)
movabsq $0x3ff2353f7ced9168, %rax # imm = 0x3FF2353F7CED9168
movq %rax, 0x3200(%rdi)
callq 0x1a6380
jmp 0x1a5e71
movq -0x68(%rbp), %rdi
callq 0x1a64d0
jmp 0x1a5e7c
movq -0x68(%rbp), %rdi
callq 0x1a6670
jmp 0x1a5e87
movq -0x68(%rbp), %rdi
callq 0x1a66e0
jmp 0x1a5e92
movq -0x68(%rbp), %rdi
callq 0x1a6750
jmp 0x1a5e9d
movq -0x68(%rbp), %rdi
callq 0x1a69a0
jmp 0x1a5ea8
movq -0x68(%rbp), %rax
movb $0x0, 0x31f8(%rax)
movl -0x14(%rbp), %eax
movq %rax, -0x1d8(%rbp)
subq $0x4, %rax
ja 0x1a6111
movq -0x1d8(%rbp), %rax
leaq 0xb6f33(%rip), %rcx     # 0x25ce08
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
jmp 0x1a6013
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
jmp 0x1a600a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
jmp 0x1a6001
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
jmp 0x1a5ff8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
jmp 0x1a5fef
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
jmp 0x1a5fe6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
jmp 0x1a5fdd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
jmp 0x1a5fd4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
jmp 0x1a5fcb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
jmp 0x1a5fc2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
jmp 0x1a5fb9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
jmp 0x1a5fb0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x40(%rbp), %rdi
callq 0xc3c0
leaq -0x3f(%rbp), %rdi
callq 0xc3c0
leaq -0x3e(%rbp), %rdi
callq 0xc3c0
leaq -0x3d(%rbp), %rdi
callq 0xc3c0
leaq -0x3c(%rbp), %rdi
callq 0xc3c0
leaq -0x3b(%rbp), %rdi
callq 0xc3c0
leaq -0x3a(%rbp), %rdi
callq 0xc3c0
leaq -0x39(%rbp), %rdi
callq 0xc3c0
leaq -0x38(%rbp), %rdi
callq 0xc3c0
leaq -0x37(%rbp), %rdi
callq 0xc3c0
leaq -0x36(%rbp), %rdi
callq 0xc3c0
leaq -0x35(%rbp), %rdi
callq 0xc3c0
leaq -0x21(%rbp), %rdi
callq 0xc3c0
testb $0x1, -0x41(%rbp)
jne 0x1a6024
jmp 0x1a6068
movq -0x60(%rbp), %rcx
movq -0x20(%rbp), %rax
cmpq %rax, %rcx
movq %rax, -0x1e0(%rbp)
je 0x1a6066
movq -0x1e0(%rbp), %rdi
addq $-0x20, %rdi
movq %rdi, -0x1e8(%rbp)
callq 0xc6b8
movq -0x60(%rbp), %rcx
movq -0x1e8(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x1e0(%rbp)
jne 0x1a6038
jmp 0x1a6068
jmp 0x1a636e
movq %rdx, %rcx
movq %rax, %rdx
movq -0x1c0(%rbp), %rax
movq %rdx, -0x30(%rbp)
movl %ecx, -0x34(%rbp)
addq $0x9c0, %rax            # imm = 0x9C0
movq %rax, -0x1f0(%rbp)
jmp 0x1a61e8
leaq 0x1a86ae(%rip), %rdi    # 0x34e748
leaq 0xb74ea(%rip), %rsi     # 0x25d58b
callq 0xc470
jmp 0x1a60a8
movq -0x68(%rbp), %rax
movb $0x1, 0x31f8(%rax)
jmp 0x1a6111
leaq 0x1a868c(%rip), %rdi    # 0x34e748
leaq 0xb74c2(%rip), %rsi     # 0x25d585
callq 0xc470
jmp 0x1a60ca
jmp 0x1a6111
leaq 0x1a8675(%rip), %rdi    # 0x34e748
leaq 0xb74b7(%rip), %rsi     # 0x25d591
callq 0xc470
jmp 0x1a60e1
jmp 0x1a6111
leaq 0x1a865e(%rip), %rdi    # 0x34e748
leaq 0xa9ae6(%rip), %rsi     # 0x24fbd7
callq 0xc470
jmp 0x1a60f8
jmp 0x1a6111
leaq 0x1a8647(%rip), %rdi    # 0x34e748
leaq 0xa9ace(%rip), %rsi     # 0x24fbd6
callq 0xc470
jmp 0x1a610f
jmp 0x1a6111
xorl %eax, %eax
cmpl $0x0, -0x18(%rbp)
movb %al, -0x1f1(%rbp)
je 0x1a6147
xorl %eax, %eax
cmpl $0x80, -0x18(%rbp)
movb %al, -0x1f1(%rbp)
jg 0x1a6147
movl -0x18(%rbp), %eax
movl -0x18(%rbp), %ecx
subl $0x1, %ecx
andl %ecx, %eax
cmpl $0x0, %eax
sete %al
movb %al, -0x1f1(%rbp)
movb -0x1f1(%rbp), %al
testb $0x1, %al
jne 0x1a6153
jmp 0x1a6155
jmp 0x1a6174
leaq 0xb743a(%rip), %rdi     # 0x25d596
leaq 0xb7461(%rip), %rsi     # 0x25d5c4
movl $0x3f, %edx
leaq 0xb7463(%rip), %rcx     # 0x25d5d2
callq 0xc280
movq -0x68(%rbp), %rax
movl -0x18(%rbp), %ecx
movl %ecx, 0x30d4(%rax)
movslq 0x30c4(%rax), %rcx
movslq 0x30d0(%rax), %rdx
imulq %rdx, %rcx
movslq -0x18(%rbp), %rdx
imulq %rdx, %rcx
movslq 0x30dc(%rax), %rdx
imulq %rdx, %rcx
movq %rcx, -0x50(%rbp)
movslq 0x30c0(%rax), %rax
shlq $0x14, %rax
cqto
idivq -0x50(%rbp)
movq %rax, %rcx
movq -0x68(%rbp), %rax
movl %ecx, 0x30d8(%rax)
testb $0x1, 0x31f8(%rax)
jne 0x1a61df
movq -0x68(%rbp), %rax
movl $0x8, 0x1fc(%rax)
addq $0x250, %rsp            # imm = 0x250
popq %rbp
retq
movq -0x1f0(%rbp), %rdi
addq $-0x20, %rdi
movq %rdi, -0x200(%rbp)
callq 0x1452c0
movq -0x1c0(%rbp), %rcx
movq -0x200(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x1f0(%rbp)
jne 0x1a61e8
movq -0x1a0(%rbp), %rax
addq $0x750, %rax            # imm = 0x750
movq %rax, -0x208(%rbp)
movq -0x208(%rbp), %rdi
addq $-0x18, %rdi
movq %rdi, -0x210(%rbp)
callq 0x1452e0
movq -0x1a0(%rbp), %rcx
movq -0x210(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x208(%rbp)
jne 0x1a622d
movq -0x180(%rbp), %rax
addq $0x9c0, %rax            # imm = 0x9C0
movq %rax, -0x218(%rbp)
movq -0x218(%rbp), %rdi
addq $-0x20, %rdi
movq %rdi, -0x220(%rbp)
callq 0x145340
movq -0x180(%rbp), %rcx
movq -0x220(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x218(%rbp)
jne 0x1a6272
movq -0x160(%rbp), %rax
addq $0x9c0, %rax            # imm = 0x9C0
movq %rax, -0x228(%rbp)
movq -0x228(%rbp), %rdi
addq $-0x20, %rdi
movq %rdi, -0x230(%rbp)
callq 0x145340
movq -0x160(%rbp), %rcx
movq -0x230(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x228(%rbp)
jne 0x1a62b7
movq -0x140(%rbp), %rax
addq $0x9c0, %rax            # imm = 0x9C0
movq %rax, -0x238(%rbp)
movq -0x238(%rbp), %rdi
addq $-0x20, %rdi
movq %rdi, -0x240(%rbp)
callq 0x145360
movq -0x140(%rbp), %rcx
movq -0x240(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x238(%rbp)
jne 0x1a62fc
movq -0x60(%rbp), %rax
addq $0x1a0, %rax            # imm = 0x1A0
movq %rax, -0x248(%rbp)
movq -0x248(%rbp), %rdi
addq $-0x20, %rdi
movq %rdi, -0x250(%rbp)
callq 0xc6b8
movq -0x60(%rbp), %rcx
movq -0x250(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x248(%rbp)
jne 0x1a633e
jmp 0x1a636e
movq -0x30(%rbp), %rdi
callq 0xc5d0
nopw (%rax,%rax)