// File: CMU-SAFARI[P]ramulator/src/SALP.cpp
// Function: ramulator::SALP::SALP(ramulator::SALP::Org, ramulator::SALP::Speed, ramulator::SALP::Type, int)
SALP::SALP(Org org, Speed speed, Type type, int n_sa) :
    type(type),
    n_sa(n_sa),
    org_entry(org_table[int(org)]),
    speed_entry(speed_table[int(speed)]),
    read_latency(speed_entry.nCL + speed_entry.nBL)
{
    switch(int(type)){
        case int(Type::SALP_1): standard_name = "SALP-1"; break;
        case int(Type::SALP_2): standard_name = "SALP-2"; break;
        case int(Type::MASA):   standard_name = "SALP-MASA"; break;
    }
    if (type == Type::SALP_1) {
      scope[int(Command::PRE)] = Level::Bank;
    }
    assert(n_sa && n_sa <= 128 && (n_sa & (n_sa-1)) == 0); // is power of 2, within [1, 128]
    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;
    init_speed();
    init_prereq();
    init_rowhit(); // SAUGATA: added row hit function
    init_rowopen();
    init_lambda();
    init_timing();
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x270, %rsp            # imm = 0x270
movq %rdi, -0x8(%rbp)
movl %esi, -0xc(%rbp)
movl %edx, -0x10(%rbp)
movl %ecx, -0x14(%rbp)
movl %r8d, -0x18(%rbp)
movq -0x8(%rbp), %rdi
movq %rdi, -0x68(%rbp)
movq %rdi, %rax
movq %rax, -0x70(%rbp)
callq 0xc480
movq -0x68(%rbp), %rax
movl -0x14(%rbp), %ecx
movl %ecx, 0x20(%rax)
addq $0x28, %rax
movq %rax, -0x60(%rbp)
movb $0x1, -0x42(%rbp)
movq %rax, -0x20(%rbp)
leaq -0x21(%rbp), %rdi
movq %rdi, -0x58(%rbp)
callq 0xc5e0
movq -0x60(%rbp), %rdi
movq -0x58(%rbp), %rdx
leaq 0x5826c(%rip), %rsi     # 0x25abb2
callq 0x17a40
jmp 0x20294d
movq -0x60(%rbp), %rax
addq $0x20, %rax
movq %rax, -0x80(%rbp)
movq %rax, -0x20(%rbp)
leaq -0x35(%rbp), %rdi
movq %rdi, -0x78(%rbp)
callq 0xc5e0
movq -0x80(%rbp), %rdi
movq -0x78(%rbp), %rdx
leaq 0x60247(%rip), %rsi     # 0x262bc0
callq 0x17a40
jmp 0x202980
movq -0x60(%rbp), %rax
addq $0x40, %rax
movq %rax, -0x90(%rbp)
movq %rax, -0x20(%rbp)
leaq -0x36(%rbp), %rdi
movq %rdi, -0x88(%rbp)
callq 0xc5e0
movq -0x90(%rbp), %rdi
movq -0x88(%rbp), %rdx
leaq 0x581fe(%rip), %rsi     # 0x25abb6
callq 0x17a40
jmp 0x2029bf
movq -0x60(%rbp), %rax
addq $0x60, %rax
movq %rax, -0xa0(%rbp)
movq %rax, -0x20(%rbp)
leaq -0x37(%rbp), %rdi
movq %rdi, -0x98(%rbp)
callq 0xc5e0
movq -0xa0(%rbp), %rdi
movq -0x98(%rbp), %rdx
leaq 0x601cf(%rip), %rsi     # 0x262bc6
callq 0x17a40
jmp 0x2029fe
movq -0x60(%rbp), %rax
subq $-0x80, %rax
movq %rax, -0xb0(%rbp)
movq %rax, -0x20(%rbp)
leaq -0x38(%rbp), %rdi
movq %rdi, -0xa8(%rbp)
callq 0xc5e0
movq -0xb0(%rbp), %rdi
movq -0xa8(%rbp), %rdx
leaq 0x58184(%rip), %rsi     # 0x25abba
callq 0x17a40
jmp 0x202a3d
movq -0x60(%rbp), %rax
addq $0xa0, %rax
movq %rax, -0xc0(%rbp)
movq %rax, -0x20(%rbp)
leaq -0x39(%rbp), %rdi
movq %rdi, -0xb8(%rbp)
callq 0xc5e0
movq -0xc0(%rbp), %rdi
movq -0xb8(%rbp), %rdx
leaq 0x4d933(%rip), %rsi     # 0x2503aa
callq 0x17a40
jmp 0x202a7e
movq -0x60(%rbp), %rax
addq $0xc0, %rax
movq %rax, -0xd0(%rbp)
movq %rax, -0x20(%rbp)
leaq -0x3a(%rbp), %rdi
movq %rdi, -0xc8(%rbp)
callq 0xc5e0
movq -0xd0(%rbp), %rdi
movq -0xc8(%rbp), %rdx
leaq 0x58105(%rip), %rsi     # 0x25abbd
callq 0x17a40
jmp 0x202abf
movq -0x60(%rbp), %rax
addq $0xe0, %rax
movq %rax, -0xe0(%rbp)
movq %rax, -0x20(%rbp)
leaq -0x3b(%rbp), %rdi
movq %rdi, -0xd8(%rbp)
callq 0xc5e0
movq -0xe0(%rbp), %rdi
movq -0xd8(%rbp), %rdx
leaq 0x580c8(%rip), %rsi     # 0x25abc1
callq 0x17a40
jmp 0x202b00
movq -0x60(%rbp), %rax
addq $0x100, %rax            # imm = 0x100
movq %rax, -0xf0(%rbp)
movq %rax, -0x20(%rbp)
leaq -0x3c(%rbp), %rdi
movq %rdi, -0xe8(%rbp)
callq 0xc5e0
movq -0xf0(%rbp), %rdi
movq -0xe8(%rbp), %rdx
leaq 0x62026(%rip), %rsi     # 0x264b60
callq 0x17a40
jmp 0x202b41
movq -0x60(%rbp), %rax
addq $0x120, %rax            # imm = 0x120
movq %rax, -0x100(%rbp)
movq %rax, -0x20(%rbp)
leaq -0x3d(%rbp), %rdi
movq %rdi, -0xf8(%rbp)
callq 0xc5e0
movq -0x100(%rbp), %rdi
movq -0xf8(%rbp), %rdx
leaq 0x5804a(%rip), %rsi     # 0x25abc5
callq 0x17a40
jmp 0x202b82
movq -0x60(%rbp), %rax
addq $0x140, %rax            # imm = 0x140
movq %rax, -0x110(%rbp)
movq %rax, -0x20(%rbp)
leaq -0x3e(%rbp), %rdi
movq %rdi, -0x108(%rbp)
callq 0xc5e0
movq -0x110(%rbp), %rdi
movq -0x108(%rbp), %rdx
leaq 0x5800d(%rip), %rsi     # 0x25abc9
callq 0x17a40
jmp 0x202bc3
movq -0x60(%rbp), %rax
addq $0x160, %rax            # imm = 0x160
movq %rax, -0x120(%rbp)
movq %rax, -0x20(%rbp)
leaq -0x3f(%rbp), %rdi
movq %rdi, -0x118(%rbp)
callq 0xc5e0
movq -0x120(%rbp), %rdi
movq -0x118(%rbp), %rdx
leaq 0x57fd0(%rip), %rsi     # 0x25abcd
callq 0x17a40
jmp 0x202c04
movq -0x60(%rbp), %rax
addq $0x180, %rax            # imm = 0x180
movq %rax, -0x130(%rbp)
movq %rax, -0x20(%rbp)
leaq -0x40(%rbp), %rdi
movq %rdi, -0x128(%rbp)
callq 0xc5e0
movq -0x130(%rbp), %rdi
movq -0x128(%rbp), %rdx
leaq 0x57f93(%rip), %rsi     # 0x25abd1
callq 0x17a40
jmp 0x202c45
movq -0x60(%rbp), %rax
addq $0x1a0, %rax            # imm = 0x1A0
movq %rax, -0x140(%rbp)
movq %rax, -0x20(%rbp)
leaq -0x41(%rbp), %rdi
movq %rdi, -0x138(%rbp)
callq 0xc5e0
movq -0x140(%rbp), %rdi
movq -0x138(%rbp), %rdx
leaq 0x5ff4c(%rip), %rsi     # 0x262bcb
callq 0x17a40
jmp 0x202c86
movb $0x0, -0x42(%rbp)
leaq -0x41(%rbp), %rdi
callq 0xc3c0
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 -0x70(%rbp), %rdi
addq $0x1e8, %rdi            # imm = 0x1E8
leaq 0x5ee46(%rip), %rsi     # 0x261b60
movl $0x38, %edx
callq 0xc300
movq -0x70(%rbp), %rax
movq 0x5ee69(%rip), %rcx     # 0x261b98
movq %rcx, 0x220(%rax)
movq 0x5ee63(%rip), %rcx     # 0x261ba0
movq %rcx, 0x228(%rax)
movq 0x5ee5d(%rip), %rcx     # 0x261ba8
movq %rcx, 0x230(%rax)
movq 0x5ee57(%rip), %rcx     # 0x261bb0
movq %rcx, 0x238(%rax)
movq 0x5ee51(%rip), %rcx     # 0x261bb8
movq %rcx, 0x240(%rax)
movq 0x5ee4b(%rip), %rcx     # 0x261bc0
movq %rcx, 0x248(%rax)
addq $0x250, %rax            # imm = 0x250
movq %rax, -0x158(%rbp)
movq %rax, %rcx
addq $0xa80, %rcx            # imm = 0xA80
movq %rcx, -0x150(%rbp)
movq %rax, -0x148(%rbp)
movq -0x148(%rbp), %rdi
movq %rdi, -0x160(%rbp)
callq 0x211f50
movq -0x160(%rbp), %rax
movq -0x150(%rbp), %rcx
addq $0x20, %rax
cmpq %rcx, %rax
movq %rax, -0x148(%rbp)
jne 0x202da1
movq -0x70(%rbp), %rax
addq $0xcd0, %rax            # imm = 0xCD0
movq %rax, -0x178(%rbp)
movq %rax, %rcx
addq $0xa80, %rcx            # imm = 0xA80
movq %rcx, -0x170(%rbp)
movq %rax, -0x168(%rbp)
movq -0x168(%rbp), %rdi
movq %rdi, -0x180(%rbp)
callq 0x211f90
movq -0x180(%rbp), %rax
movq -0x170(%rbp), %rcx
addq $0x20, %rax
cmpq %rcx, %rax
movq %rax, -0x168(%rbp)
jne 0x202dfb
movq -0x70(%rbp), %rax
addq $0x1750, %rax           # imm = 0x1750
movq %rax, -0x198(%rbp)
movq %rax, %rcx
addq $0xa80, %rcx            # imm = 0xA80
movq %rcx, -0x190(%rbp)
movq %rax, -0x188(%rbp)
movq -0x188(%rbp), %rdi
movq %rdi, -0x1a0(%rbp)
callq 0x211f90
movq -0x1a0(%rbp), %rax
movq -0x190(%rbp), %rcx
addq $0x20, %rax
cmpq %rcx, %rax
movq %rax, -0x188(%rbp)
jne 0x202e55
movq -0x70(%rbp), %rax
addq $0x21d0, %rax           # imm = 0x21D0
movq %rax, -0x1b8(%rbp)
movq %rax, %rcx
addq $0x7e0, %rcx            # imm = 0x7E0
movq %rcx, -0x1b0(%rbp)
movq %rax, -0x1a8(%rbp)
movq -0x1a8(%rbp), %rdi
movq %rdi, -0x1c0(%rbp)
callq 0x211fd0
movq -0x1c0(%rbp), %rax
movq -0x1b0(%rbp), %rcx
addq $0x18, %rax
cmpq %rcx, %rax
movq %rax, -0x1a8(%rbp)
jne 0x202eaf
movq -0x70(%rbp), %rax
addq $0x29b0, %rax           # imm = 0x29B0
movq %rax, -0x1d8(%rbp)
movq %rax, %rcx
addq $0xa80, %rcx            # imm = 0xA80
movq %rcx, -0x1d0(%rbp)
movq %rax, -0x1c8(%rbp)
movq -0x1c8(%rbp), %rdi
movq %rdi, -0x1e0(%rbp)
callq 0x211ff0
movq -0x1e0(%rbp), %rax
movq -0x1d0(%rbp), %rcx
addq $0x20, %rax
cmpq %rcx, %rax
movq %rax, -0x1c8(%rbp)
jne 0x202f09
movq -0x70(%rbp), %rdi
movl -0x18(%rbp), %eax
movl %eax, 0x3430(%rdi)
addq $0x3434, %rdi           # imm = 0x3434
leaq 0x5ec73(%rip), %rsi     # 0x261bc8
movl $0x1e0, %edx            # imm = 0x1E0
callq 0xc300
movq -0x70(%rbp), %rdi
movslq -0xc(%rbp), %rax
shlq $0x5, %rax
movups 0x3434(%rdi,%rax), %xmm0
movups 0x3444(%rdi,%rax), %xmm1
movups %xmm1, 0x3624(%rdi)
movups %xmm0, 0x3614(%rdi)
movl $0x8, 0x3634(%rdi)
movl $0x40, 0x3638(%rdi)
addq $0x3640, %rdi           # imm = 0x3640
leaq 0x5edfd(%rip), %rsi     # 0x261da8
movl $0x700, %edx            # imm = 0x700
callq 0xc300
movq -0x70(%rbp), %rax
movslq -0x10(%rbp), %rcx
shlq $0x7, %rcx
movq %rcx, -0x1f0(%rbp)
movups 0x36b0(%rax,%rcx), %xmm0
movups %xmm0, 0x3db0(%rax)
movups 0x36a0(%rax,%rcx), %xmm0
movups %xmm0, 0x3da0(%rax)
movups 0x3690(%rax,%rcx), %xmm0
movups %xmm0, 0x3d90(%rax)
movups 0x3680(%rax,%rcx), %xmm0
movups %xmm0, 0x3d80(%rax)
movups 0x3640(%rax,%rcx), %xmm0
movups 0x3650(%rax,%rcx), %xmm1
movups 0x3660(%rax,%rcx), %xmm2
movups 0x3670(%rax,%rcx), %xmm3
movups %xmm3, 0x3d70(%rax)
movups %xmm2, 0x3d60(%rax)
movups %xmm1, 0x3d50(%rax)
movups %xmm0, 0x3d40(%rax)
movl 0x3d58(%rax), %edx
movl 0x3d64(%rax), %ecx
addl %edx, %ecx
movl %ecx, 0x3dc0(%rax)
movl -0x14(%rbp), %eax
movl %eax, -0x1e4(%rbp)
testl %eax, %eax
je 0x203235
jmp 0x203067
movl -0x1e4(%rbp), %eax
subl $0x1, %eax
je 0x20326f
jmp 0x203078
movl -0x1e4(%rbp), %eax
subl $0x2, %eax
je 0x203283
jmp 0x203297
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
jmp 0x2031db
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
jmp 0x2031d2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
jmp 0x2031c9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
jmp 0x2031c0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
jmp 0x2031b7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
jmp 0x2031ae
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
jmp 0x2031a5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
jmp 0x20319c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
jmp 0x203193
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
jmp 0x20318a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
jmp 0x203181
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
jmp 0x203178
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
jmp 0x20316f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x41(%rbp), %rdi
callq 0xc3c0
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, -0x42(%rbp)
jne 0x2031ec
jmp 0x203230
movq -0x60(%rbp), %rcx
movq -0x20(%rbp), %rax
cmpq %rax, %rcx
movq %rax, -0x1f8(%rbp)
je 0x20322e
movq -0x1f8(%rbp), %rdi
addq $-0x20, %rdi
movq %rdi, -0x200(%rbp)
callq 0xc6b8
movq -0x60(%rbp), %rcx
movq -0x200(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x1f8(%rbp)
jne 0x203200
jmp 0x203230
jmp 0x20352b
movq -0x70(%rbp), %rdi
leaq 0x5f972(%rip), %rsi     # 0x262bb2
callq 0xc470
jmp 0x203247
jmp 0x203297
movq %rdx, %rcx
movq %rax, %rdx
movq -0x1d8(%rbp), %rax
movq %rdx, -0x30(%rbp)
movl %ecx, -0x34(%rbp)
addq $0xa80, %rax            # imm = 0xA80
movq %rax, -0x208(%rbp)
jmp 0x2033a5
movq -0x70(%rbp), %rdi
leaq 0x5f93f(%rip), %rsi     # 0x262bb9
callq 0xc470
jmp 0x203281
jmp 0x203297
movq -0x70(%rbp), %rdi
leaq 0x4c90b(%rip), %rsi     # 0x24fb99
callq 0xc470
jmp 0x203295
jmp 0x203297
cmpl $0x0, -0x14(%rbp)
jne 0x2032ab
movq -0x70(%rbp), %rax
movl $0x2, 0x1f0(%rax)
xorl %eax, %eax
cmpl $0x0, -0x18(%rbp)
movb %al, -0x209(%rbp)
je 0x2032e1
xorl %eax, %eax
cmpl $0x80, -0x18(%rbp)
movb %al, -0x209(%rbp)
jg 0x2032e1
movl -0x18(%rbp), %eax
movl -0x18(%rbp), %ecx
subl $0x1, %ecx
andl %ecx, %eax
cmpl $0x0, %eax
sete %al
movb %al, -0x209(%rbp)
movb -0x209(%rbp), %al
testb $0x1, %al
jne 0x2032ed
jmp 0x2032ef
jmp 0x20330e
leaq 0x5a2a0(%rip), %rdi     # 0x25d596
leaq 0x5f8d8(%rip), %rsi     # 0x262bd5
movl $0x31, %edx
leaq 0x5f8d9(%rip), %rcx     # 0x262be2
callq 0xc280
movq -0x70(%rbp), %rdi
movl -0x18(%rbp), %eax
movl %eax, 0x3628(%rdi)
movslq 0x3618(%rdi), %rax
movslq 0x3624(%rdi), %rcx
imulq %rcx, %rax
movslq -0x18(%rbp), %rcx
imulq %rcx, %rax
movslq 0x3630(%rdi), %rcx
imulq %rcx, %rax
movq %rax, -0x50(%rbp)
movslq 0x3614(%rdi), %rax
shlq $0x14, %rax
movq -0x50(%rbp), %rcx
cqto
idivq %rcx
movl %eax, 0x362c(%rdi)
callq 0x203540
jmp 0x203365
movq -0x70(%rbp), %rdi
callq 0x203e20
jmp 0x203370
movq -0x70(%rbp), %rdi
callq 0x2040d0
jmp 0x20337b
movq -0x70(%rbp), %rdi
callq 0x204250
jmp 0x203386
movq -0x70(%rbp), %rdi
callq 0x2043d0
jmp 0x203391
movq -0x70(%rbp), %rdi
callq 0x2047a0
jmp 0x20339c
addq $0x270, %rsp            # imm = 0x270
popq %rbp
retq
movq -0x208(%rbp), %rdi
addq $-0x20, %rdi
movq %rdi, -0x218(%rbp)
callq 0x7ba50
movq -0x1d8(%rbp), %rcx
movq -0x218(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x208(%rbp)
jne 0x2033a5
movq -0x1b8(%rbp), %rax
addq $0x7e0, %rax            # imm = 0x7E0
movq %rax, -0x220(%rbp)
movq -0x220(%rbp), %rdi
addq $-0x18, %rdi
movq %rdi, -0x228(%rbp)
callq 0x7ba70
movq -0x1b8(%rbp), %rcx
movq -0x228(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x220(%rbp)
jne 0x2033ea
movq -0x198(%rbp), %rax
addq $0xa80, %rax            # imm = 0xA80
movq %rax, -0x230(%rbp)
movq -0x230(%rbp), %rdi
addq $-0x20, %rdi
movq %rdi, -0x238(%rbp)
callq 0x7bad0
movq -0x198(%rbp), %rcx
movq -0x238(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x230(%rbp)
jne 0x20342f
movq -0x178(%rbp), %rax
addq $0xa80, %rax            # imm = 0xA80
movq %rax, -0x240(%rbp)
movq -0x240(%rbp), %rdi
addq $-0x20, %rdi
movq %rdi, -0x248(%rbp)
callq 0x7bad0
movq -0x178(%rbp), %rcx
movq -0x248(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x240(%rbp)
jne 0x203474
movq -0x158(%rbp), %rax
addq $0xa80, %rax            # imm = 0xA80
movq %rax, -0x250(%rbp)
movq -0x250(%rbp), %rdi
addq $-0x20, %rdi
movq %rdi, -0x258(%rbp)
callq 0x7baf0
movq -0x158(%rbp), %rcx
movq -0x258(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x250(%rbp)
jne 0x2034b9
movq -0x60(%rbp), %rax
addq $0x1c0, %rax            # imm = 0x1C0
movq %rax, -0x260(%rbp)
movq -0x260(%rbp), %rdi
addq $-0x20, %rdi
movq %rdi, -0x268(%rbp)
callq 0xc6b8
movq -0x60(%rbp), %rcx
movq -0x268(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x260(%rbp)
jne 0x2034fb
jmp 0x20352b
movq -0x68(%rbp), %rdi
callq 0xc6b8
movq -0x30(%rbp), %rdi
callq 0xc5d0
nopl (%rax)