// File: ys1998[P]spsim/src/instruction.cpp
// Function: Instruction::Instruction(int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>)
Instruction::Instruction(int _PC, std::string instr){
	ID = -1;
	PC = _PC;
	_rd = -1; rd_ = -1;
	rs = rt = rd = -1;
	IF = DE = RF1 = EXEC = RF2= MEM= WB = -1;
	shamt = 0;
	text = instr;
	predicted = jumpAddressPred = 55;

	std::istringstream iss(instr);
	std::string op;
	int cnt = 0, extra;
	while(iss){
		switch(cnt){
			case 0:
			op = ""; iss >> op;
			if(!OPCODE.count(op) || !FUNCT.count(op)){
				error_msg("parser", "Invalid operation \"" + op + "\", line " + std::to_string(_PC));
			}else{	
				opcode = OPCODE[op];
				funct = FUNCT[op];
			}
			break;
			case 1:
			if(opcode == 0 || opcode == OPCODE["lw"])
			{
				iss >> rd;
				if(rd < 0 || rd >= NUM_LOG_REGS){
					error_msg("parser", "Invalid register rd = " + std::to_string(rd) + ", line " + std::to_string(_PC));
				}
			}
			else{
				iss >> rs;
				if(rs < 0 || rs >= NUM_LOG_REGS){
					error_msg("parser", "Invalid register rd = " + std::to_string(rs) + ", line " + std::to_string(_PC));
				}
			}
			break;
			case 2:
			if(opcode == OPCODE["lw"] || opcode == OPCODE["sw"]){
				iss >> immediate;
				if(immediate>std::pow(2,15)||immediate<-std::pow(2,15))
				error_msg("parser", "Invalid immediate immediate = " + std::to_string(immediate) + ", line " + std::to_string(_PC));
				 	
			}else if(opcode == 0)
			{
				iss >> rs;
				if(rs < 0 || rs >= NUM_LOG_REGS){
					error_msg("parser", "Invalid register rs = " + std::to_string(rs) + ", line " + std::to_string(_PC));
				}
			}
			else
			{
				iss >> rt;
				if(rt < 0 || rt >= NUM_LOG_REGS){
					error_msg("parser", "Invalid register rt = " + std::to_string(rt) + ", line " + std::to_string(_PC));
				}
			}
			break;
			
			case 3:
			if(opcode == 0)
			{
				iss >> rt;
				if(rt < 0 || rt >= NUM_LOG_REGS){
					error_msg("parser", "Invalid register rt = " + std::to_string(rt) + ", line " + std::to_string(_PC));
				}
			}
			else if( opcode == OPCODE["beq"] || opcode == OPCODE["bne"])
			{
				iss >> immediate;
				if (immediate < -32768 || immediate >= 32768)
				{
					error_msg("parser", "Invalid immediate = " + std::to_string(immediate) + ", line " + std::to_string(_PC));
				}
			}
			else{
				iss >> rt;
				if(rt < 0 || rt >= NUM_LOG_REGS){
					error_msg("parser", "Invalid register rt = " + std::to_string(rt) + ", line " + std::to_string(_PC));
				}
			}
			if(opcode == OPCODE["lw"])
				rs=rt;
			break;
			default:
			iss >> extra;
			break;
		}
		cnt++;
	}
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xb20, %rsp            # imm = 0xB20
movq %rdx, -0x9b0(%rbp)
movq %rdi, -0x8(%rbp)
movl %esi, -0xc(%rbp)
movq %rdx, -0x18(%rbp)
movq -0x8(%rbp), %rdi
movq %rdi, -0x9c0(%rbp)
addq $0x50, %rdi
movq %rdi, -0x9b8(%rbp)
callq 0x33b0
movq -0x9c0(%rbp), %rax
movq -0x9b8(%rbp), %rdi
movq -0x9b0(%rbp), %rsi
movl $0xffffffff, (%rax)     # imm = 0xFFFFFFFF
movl -0xc(%rbp), %ecx
movl %ecx, 0x4(%rax)
movl $0xffffffff, 0x20(%rax) # imm = 0xFFFFFFFF
movl $0xffffffff, 0x1c(%rax) # imm = 0xFFFFFFFF
movl $0xffffffff, 0x10(%rax) # imm = 0xFFFFFFFF
movl $0xffffffff, 0xc(%rax)  # imm = 0xFFFFFFFF
movl $0xffffffff, 0x8(%rax)  # imm = 0xFFFFFFFF
movl $0xffffffff, 0x4c(%rax) # imm = 0xFFFFFFFF
movl $0xffffffff, 0x48(%rax) # imm = 0xFFFFFFFF
movl $0xffffffff, 0x44(%rax) # imm = 0xFFFFFFFF
movl $0xffffffff, 0x40(%rax) # imm = 0xFFFFFFFF
movl $0xffffffff, 0x3c(%rax) # imm = 0xFFFFFFFF
movl $0xffffffff, 0x38(%rax) # imm = 0xFFFFFFFF
movl $0xffffffff, 0x34(%rax) # imm = 0xFFFFFFFF
movl $0x0, 0x2c(%rax)
callq 0x3050
jmp 0xe99b
movq -0x9b0(%rbp), %rsi
movq -0x9c0(%rbp), %rax
movl $0x37, 0x74(%rax)
movl $0x37, 0x70(%rax)
leaq -0x1a8(%rbp), %rdi
movl $0x8, %edx
callq 0x3440
jmp 0xe9ca
leaq -0x1c8(%rbp), %rdi
callq 0x33b0
movl $0x0, -0x1cc(%rbp)
movq -0x1a8(%rbp), %rax
movq -0x18(%rax), %rax
leaq -0x1a8(%rbp,%rax), %rdi
callq 0x3380
movb %al, -0x9c1(%rbp)
jmp 0xea00
movb -0x9c1(%rbp), %al
testb $0x1, %al
jne 0xea0f
jmp 0x10450
movl -0x1cc(%rbp), %eax
movq %rax, -0x9d0(%rbp)
subq $0x3, %rax
ja 0x10425
movq -0x9d0(%rbp), %rax
leaq 0x13680(%rip), %rcx     # 0x220b4
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
jmp 0x10489
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
jmp 0x10471
leaq 0x13887(%rip), %rsi     # 0x222ed
leaq -0x1c8(%rbp), %rdi
callq 0x33a0
jmp 0xea74
leaq -0x1a8(%rbp), %rdi
leaq -0x1c8(%rbp), %rsi
callq 0x3390
jmp 0xea89
leaq 0x20838(%rip), %rdi     # 0x2f2c8
leaq -0x1c8(%rbp), %rsi
callq 0x105f0
movq %rax, -0x9d8(%rbp)
jmp 0xeaa5
movq -0x9d8(%rbp), %rax
cmpq $0x0, %rax
je 0xeadf
leaq 0x2083f(%rip), %rdi     # 0x2f2f8
leaq -0x1c8(%rbp), %rsi
callq 0x105f0
movq %rax, -0x9e0(%rbp)
jmp 0xeace
movq -0x9e0(%rbp), %rax
cmpq $0x0, %rax
jne 0xec77
leaq -0x1f1(%rbp), %rdi
movq %rdi, -0x9e8(%rbp)
callq 0x3490
movq -0x9e8(%rbp), %rdx
leaq 0x135c4(%rip), %rsi     # 0x220c4
leaq -0x1f0(%rbp), %rdi
callq 0x6020
jmp 0xeb0e
leaq 0x135b6(%rip), %rsi     # 0x220cb
leaq -0x258(%rbp), %rdi
leaq -0x1c8(%rbp), %rdx
callq 0x10770
jmp 0xeb2a
leaq 0x135ae(%rip), %rdx     # 0x220df
leaq -0x238(%rbp), %rdi
leaq -0x258(%rbp), %rsi
callq 0x10720
jmp 0xeb46
movl -0xc(%rbp), %esi
leaq -0x278(%rbp), %rdi
callq 0x10880
jmp 0xeb57
leaq -0x218(%rbp), %rdi
leaq -0x238(%rbp), %rsi
leaq -0x278(%rbp), %rdx
callq 0x10650
jmp 0xeb73
leaq -0x1f0(%rbp), %rdi
leaq -0x218(%rbp), %rsi
callq 0x163d0
jmp 0xeb88
leaq -0x218(%rbp), %rdi
callq 0x31e0
leaq -0x278(%rbp), %rdi
callq 0x31e0
leaq -0x238(%rbp), %rdi
callq 0x31e0
leaq -0x258(%rbp), %rdi
callq 0x31e0
leaq -0x1f0(%rbp), %rdi
callq 0x31e0
leaq -0x1f1(%rbp), %rdi
callq 0x3300
jmp 0xecd5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
jmp 0xec66
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
jmp 0xec5a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
jmp 0xec4e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
jmp 0xec42
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
jmp 0xec36
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
leaq -0x218(%rbp), %rdi
callq 0x31e0
leaq -0x278(%rbp), %rdi
callq 0x31e0
leaq -0x238(%rbp), %rdi
callq 0x31e0
leaq -0x258(%rbp), %rdi
callq 0x31e0
leaq -0x1f0(%rbp), %rdi
callq 0x31e0
leaq -0x1f1(%rbp), %rdi
callq 0x3300
jmp 0x10471
leaq 0x2064a(%rip), %rdi     # 0x2f2c8
leaq -0x1c8(%rbp), %rsi
callq 0x109a0
movq %rax, -0x9f0(%rbp)
jmp 0xec93
movq -0x9c0(%rbp), %rax
movq -0x9f0(%rbp), %rcx
movl (%rcx), %ecx
movl %ecx, 0x24(%rax)
leaq 0x2064b(%rip), %rdi     # 0x2f2f8
leaq -0x1c8(%rbp), %rsi
callq 0x109a0
movq %rax, -0x9f8(%rbp)
jmp 0xecc2
movq -0x9c0(%rbp), %rax
movq -0x9f8(%rbp), %rcx
movl (%rcx), %ecx
movl %ecx, 0x28(%rax)
jmp 0x1043c
movq -0x9c0(%rbp), %rax
movl 0x24(%rax), %ecx
movb $0x0, -0x29a(%rbp)
movb $0x0, -0x29b(%rbp)
movb $0x1, %al
cmpl $0x0, %ecx
movb %al, -0x9f9(%rbp)
je 0xed84
movq -0x9c0(%rbp), %rax
movl 0x24(%rax), %eax
movl %eax, -0xa0c(%rbp)
leaq -0x299(%rbp), %rdi
movq %rdi, -0xa08(%rbp)
callq 0x3490
movq -0xa08(%rbp), %rdx
movb $0x1, -0x29a(%rbp)
leaq 0x13332(%rip), %rsi     # 0x2206d
leaq -0x298(%rbp), %rdi
callq 0x6020
jmp 0xed49
movb $0x1, -0x29b(%rbp)
leaq 0x20571(%rip), %rdi     # 0x2f2c8
leaq -0x298(%rbp), %rsi
callq 0x5f40
movq %rax, -0xa18(%rbp)
jmp 0xed6c
movl -0xa0c(%rbp), %eax
movq -0xa18(%rbp), %rcx
cmpl (%rcx), %eax
sete %al
movb %al, -0x9f9(%rbp)
movb -0x9f9(%rbp), %al
movb %al, -0xa19(%rbp)
testb $0x1, -0x29b(%rbp)
jne 0xed9b
jmp 0xeda7
leaq -0x298(%rbp), %rdi
callq 0x31e0
testb $0x1, -0x29a(%rbp)
jne 0xedb2
jmp 0xedbe
leaq -0x299(%rbp), %rdi
callq 0x3300
movb -0xa19(%rbp), %al
testb $0x1, %al
jne 0xedcd
jmp 0xf031
movq -0x9c0(%rbp), %rsi
addq $0x10, %rsi
leaq -0x1a8(%rbp), %rdi
callq 0x31d0
jmp 0xede6
movq -0x9c0(%rbp), %rax
cmpl $0x0, 0x10(%rax)
jl 0xee04
movq -0x9c0(%rbp), %rax
cmpl $0x20, 0x10(%rax)
jl 0xf02c
leaq -0x2c1(%rbp), %rdi
movq %rdi, -0xa28(%rbp)
callq 0x3490
movq -0xa28(%rbp), %rdx
leaq 0x1329f(%rip), %rsi     # 0x220c4
leaq -0x2c0(%rbp), %rdi
callq 0x6020
jmp 0xee33
movq -0x9c0(%rbp), %rax
movl 0x10(%rax), %esi
leaq -0x348(%rbp), %rdi
callq 0x10880
jmp 0xee4b
leaq 0x13296(%rip), %rsi     # 0x220e8
leaq -0x328(%rbp), %rdi
leaq -0x348(%rbp), %rdx
callq 0x10a80
jmp 0xee67
leaq 0x13272(%rip), %rdx     # 0x220e0
leaq -0x308(%rbp), %rdi
leaq -0x328(%rbp), %rsi
callq 0x10720
jmp 0xee83
movl -0xc(%rbp), %esi
leaq -0x368(%rbp), %rdi
callq 0x10880
jmp 0xee94
leaq -0x2e8(%rbp), %rdi
leaq -0x308(%rbp), %rsi
leaq -0x368(%rbp), %rdx
callq 0x10650
jmp 0xeeb0
leaq -0x2c0(%rbp), %rdi
leaq -0x2e8(%rbp), %rsi
callq 0x163d0
jmp 0xeec5
leaq -0x2e8(%rbp), %rdi
callq 0x31e0
leaq -0x368(%rbp), %rdi
callq 0x31e0
leaq -0x308(%rbp), %rdi
callq 0x31e0
leaq -0x328(%rbp), %rdi
callq 0x31e0
leaq -0x348(%rbp), %rdi
callq 0x31e0
leaq -0x2c0(%rbp), %rdi
callq 0x31e0
leaq -0x2c1(%rbp), %rdi
callq 0x3300
jmp 0xf02c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
jmp 0xef51
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
testb $0x1, -0x29b(%rbp)
jne 0xef43
jmp 0xef4f
leaq -0x298(%rbp), %rdi
callq 0x31e0
jmp 0xef51
testb $0x1, -0x29a(%rbp)
jne 0xef5c
jmp 0xef68
leaq -0x299(%rbp), %rdi
callq 0x3300
jmp 0x10471
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
jmp 0xf01b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
jmp 0xf00f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
jmp 0xf003
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
jmp 0xeff7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
jmp 0xefeb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
jmp 0xefdf
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
leaq -0x2e8(%rbp), %rdi
callq 0x31e0
leaq -0x368(%rbp), %rdi
callq 0x31e0
leaq -0x308(%rbp), %rdi
callq 0x31e0
leaq -0x328(%rbp), %rdi
callq 0x31e0
leaq -0x348(%rbp), %rdi
callq 0x31e0
leaq -0x2c0(%rbp), %rdi
callq 0x31e0
leaq -0x2c1(%rbp), %rdi
callq 0x3300
jmp 0x10471
jmp 0xf243
movq -0x9c0(%rbp), %rsi
addq $0x8, %rsi
leaq -0x1a8(%rbp), %rdi
callq 0x31d0
jmp 0xf04a
movq -0x9c0(%rbp), %rax
cmpl $0x0, 0x8(%rax)
jl 0xf068
movq -0x9c0(%rbp), %rax
cmpl $0x20, 0x8(%rax)
jl 0xf241
leaq -0x389(%rbp), %rdi
movq %rdi, -0xa30(%rbp)
callq 0x3490
movq -0xa30(%rbp), %rdx
leaq 0x1303b(%rip), %rsi     # 0x220c4
leaq -0x388(%rbp), %rdi
callq 0x6020
jmp 0xf097
movq -0x9c0(%rbp), %rax
movl 0x8(%rax), %esi
leaq -0x410(%rbp), %rdi
callq 0x10880
jmp 0xf0af
leaq 0x13032(%rip), %rsi     # 0x220e8
leaq -0x3f0(%rbp), %rdi
leaq -0x410(%rbp), %rdx
callq 0x10a80
jmp 0xf0cb
leaq 0x1300e(%rip), %rdx     # 0x220e0
leaq -0x3d0(%rbp), %rdi
leaq -0x3f0(%rbp), %rsi
callq 0x10720
jmp 0xf0e7
movl -0xc(%rbp), %esi
leaq -0x430(%rbp), %rdi
callq 0x10880
jmp 0xf0f8
leaq -0x3b0(%rbp), %rdi
leaq -0x3d0(%rbp), %rsi
leaq -0x430(%rbp), %rdx
callq 0x10650
jmp 0xf114
leaq -0x388(%rbp), %rdi
leaq -0x3b0(%rbp), %rsi
callq 0x163d0
jmp 0xf129
leaq -0x3b0(%rbp), %rdi
callq 0x31e0
leaq -0x430(%rbp), %rdi
callq 0x31e0
leaq -0x3d0(%rbp), %rdi
callq 0x31e0
leaq -0x3f0(%rbp), %rdi
callq 0x31e0
leaq -0x410(%rbp), %rdi
callq 0x31e0
leaq -0x388(%rbp), %rdi
callq 0x31e0
leaq -0x389(%rbp), %rdi
callq 0x3300
jmp 0xf241
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
jmp 0xf230
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
jmp 0xf224
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
jmp 0xf218
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
jmp 0xf20c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
jmp 0xf200
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
jmp 0xf1f4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
leaq -0x3b0(%rbp), %rdi
callq 0x31e0
leaq -0x430(%rbp), %rdi
callq 0x31e0
leaq -0x3d0(%rbp), %rdi
callq 0x31e0
leaq -0x3f0(%rbp), %rdi
callq 0x31e0
leaq -0x410(%rbp), %rdi
callq 0x31e0
leaq -0x388(%rbp), %rdi
callq 0x31e0
leaq -0x389(%rbp), %rdi
callq 0x3300
jmp 0x10471
jmp 0xf243
jmp 0x1043c
movq -0x9c0(%rbp), %rax
movl 0x24(%rax), %eax
movl %eax, -0xa3c(%rbp)
leaq -0x451(%rbp), %rdi
movq %rdi, -0xa38(%rbp)
callq 0x3490
movq -0xa38(%rbp), %rdx
movb $0x0, -0x47a(%rbp)
movb $0x0, -0x47b(%rbp)
leaq 0x12de6(%rip), %rsi     # 0x2206d
leaq -0x450(%rbp), %rdi
callq 0x6020
jmp 0xf295
leaq 0x2002c(%rip), %rdi     # 0x2f2c8
leaq -0x450(%rbp), %rsi
callq 0x5f40
movq %rax, -0xa48(%rbp)
jmp 0xf2b1
movl -0xa3c(%rbp), %ecx
movq -0xa48(%rbp), %rdx
movb $0x1, %al
cmpl (%rdx), %ecx
movb %al, -0xa49(%rbp)
je 0xf34f
movq -0x9c0(%rbp), %rax
movl 0x24(%rax), %eax
movl %eax, -0xa5c(%rbp)
leaq -0x479(%rbp), %rdi
movq %rdi, -0xa58(%rbp)
callq 0x3490
movq -0xa58(%rbp), %rdx
movb $0x1, -0x47a(%rbp)
leaq 0x12d17(%rip), %rsi     # 0x2201d
leaq -0x478(%rbp), %rdi
callq 0x6020
jmp 0xf314
movb $0x1, -0x47b(%rbp)
leaq 0x1ffa6(%rip), %rdi     # 0x2f2c8
leaq -0x478(%rbp), %rsi
callq 0x5f40
movq %rax, -0xa68(%rbp)
jmp 0xf337
movl -0xa5c(%rbp), %eax
movq -0xa68(%rbp), %rcx
cmpl (%rcx), %eax
sete %al
movb %al, -0xa49(%rbp)
movb -0xa49(%rbp), %al
movb %al, -0xa69(%rbp)
testb $0x1, -0x47b(%rbp)
jne 0xf366
jmp 0xf372
leaq -0x478(%rbp), %rdi
callq 0x31e0
testb $0x1, -0x47a(%rbp)
jne 0xf37d
jmp 0xf389
leaq -0x479(%rbp), %rdi
callq 0x3300
leaq -0x450(%rbp), %rdi
callq 0x31e0
leaq -0x451(%rbp), %rdi
callq 0x3300
movb -0xa69(%rbp), %al
testb $0x1, %al
jne 0xf3b0
jmp 0xf6cd
movq -0x9c0(%rbp), %rsi
addq $0x30, %rsi
leaq -0x1a8(%rbp), %rdi
callq 0x31d0
jmp 0xf3c9
movq -0x9c0(%rbp), %rax
cvtsi2sdl 0x30(%rax), %xmm0
movsd %xmm0, -0xa80(%rbp)
movl $0x2, %edi
movl $0xf, %esi
callq 0x64d0
movsd %xmm0, -0xa78(%rbp)
jmp 0xf3f6
movsd -0xa80(%rbp), %xmm0
movsd -0xa78(%rbp), %xmm1
ucomisd %xmm1, %xmm0
ja 0xf46a
movq -0x9c0(%rbp), %rax
cvtsi2sdl 0x30(%rax), %xmm0
movsd %xmm0, -0xa90(%rbp)
movl $0x2, %edi
movl $0xf, %esi
callq 0x64d0
movsd %xmm0, -0xa88(%rbp)
jmp 0xf439
movsd -0xa90(%rbp), %xmm1
movsd -0xa88(%rbp), %xmm0
movq %xmm0, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm0
ucomisd %xmm1, %xmm0
jbe 0xf6c8
leaq -0x4a1(%rbp), %rdi
movq %rdi, -0xa98(%rbp)
callq 0x3490
movq -0xa98(%rbp), %rdx
leaq 0x12c39(%rip), %rsi     # 0x220c4
leaq -0x4a0(%rbp), %rdi
callq 0x6020
jmp 0xf499
movq -0x9c0(%rbp), %rax
movl 0x30(%rax), %esi
leaq -0x528(%rbp), %rdi
callq 0x10880
jmp 0xf4b1
leaq 0x12c47(%rip), %rsi     # 0x220ff
leaq -0x508(%rbp), %rdi
leaq -0x528(%rbp), %rdx
callq 0x10a80
jmp 0xf4cd
leaq 0x12c0c(%rip), %rdx     # 0x220e0
leaq -0x4e8(%rbp), %rdi
leaq -0x508(%rbp), %rsi
callq 0x10720
jmp 0xf4e9
movl -0xc(%rbp), %esi
leaq -0x548(%rbp), %rdi
callq 0x10880
jmp 0xf4fa
leaq -0x4c8(%rbp), %rdi
leaq -0x4e8(%rbp), %rsi
leaq -0x548(%rbp), %rdx
callq 0x10650
jmp 0xf516
leaq -0x4a0(%rbp), %rdi
leaq -0x4c8(%rbp), %rsi
callq 0x163d0
jmp 0xf52b
leaq -0x4c8(%rbp), %rdi
callq 0x31e0
leaq -0x548(%rbp), %rdi
callq 0x31e0
leaq -0x4e8(%rbp), %rdi
callq 0x31e0
leaq -0x508(%rbp), %rdi
callq 0x31e0
leaq -0x528(%rbp), %rdi
callq 0x31e0
leaq -0x4a0(%rbp), %rdi
callq 0x31e0
leaq -0x4a1(%rbp), %rdi
callq 0x3300
jmp 0xf6c8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
jmp 0xf5f8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
jmp 0xf5ec
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
jmp 0xf5d3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
testb $0x1, -0x47b(%rbp)
jne 0xf5c5
jmp 0xf5d1
leaq -0x478(%rbp), %rdi
callq 0x31e0
jmp 0xf5d3
testb $0x1, -0x47a(%rbp)
jne 0xf5de
jmp 0xf5ea
leaq -0x479(%rbp), %rdi
callq 0x3300
jmp 0xf5ec
leaq -0x450(%rbp), %rdi
callq 0x31e0
leaq -0x451(%rbp), %rdi
callq 0x3300
jmp 0x10471
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
jmp 0xf6b7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
jmp 0xf6ab
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
jmp 0xf69f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
jmp 0xf693
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
jmp 0xf687
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
jmp 0xf67b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
leaq -0x4c8(%rbp), %rdi
callq 0x31e0
leaq -0x548(%rbp), %rdi
callq 0x31e0
leaq -0x4e8(%rbp), %rdi
callq 0x31e0
leaq -0x508(%rbp), %rdi
callq 0x31e0
leaq -0x528(%rbp), %rdi
callq 0x31e0
leaq -0x4a0(%rbp), %rdi
callq 0x31e0
leaq -0x4a1(%rbp), %rdi
callq 0x3300
jmp 0x10471
jmp 0xfb07
movq -0x9c0(%rbp), %rax
cmpl $0x0, 0x24(%rax)
jne 0xf8f3
movq -0x9c0(%rbp), %rsi
addq $0x8, %rsi
leaq -0x1a8(%rbp), %rdi
callq 0x31d0
jmp 0xf6f7
movq -0x9c0(%rbp), %rax
cmpl $0x0, 0x8(%rax)
jl 0xf715
movq -0x9c0(%rbp), %rax
cmpl $0x20, 0x8(%rax)
jl 0xf8ee
leaq -0x569(%rbp), %rdi
movq %rdi, -0xaa0(%rbp)
callq 0x3490
movq -0xaa0(%rbp), %rdx
leaq 0x1298e(%rip), %rsi     # 0x220c4
leaq -0x568(%rbp), %rdi
callq 0x6020
jmp 0xf744
movq -0x9c0(%rbp), %rax
movl 0x8(%rax), %esi
leaq -0x5f0(%rbp), %rdi
callq 0x10880
jmp 0xf75c
leaq 0x129bb(%rip), %rsi     # 0x2211e
leaq -0x5d0(%rbp), %rdi
leaq -0x5f0(%rbp), %rdx
callq 0x10a80
jmp 0xf778
leaq 0x12961(%rip), %rdx     # 0x220e0
leaq -0x5b0(%rbp), %rdi
leaq -0x5d0(%rbp), %rsi
callq 0x10720
jmp 0xf794
movl -0xc(%rbp), %esi
leaq -0x610(%rbp), %rdi
callq 0x10880
jmp 0xf7a5
leaq -0x590(%rbp), %rdi
leaq -0x5b0(%rbp), %rsi
leaq -0x610(%rbp), %rdx
callq 0x10650
jmp 0xf7c1
leaq -0x568(%rbp), %rdi
leaq -0x590(%rbp), %rsi
callq 0x163d0
jmp 0xf7d6
leaq -0x590(%rbp), %rdi
callq 0x31e0
leaq -0x610(%rbp), %rdi
callq 0x31e0
leaq -0x5b0(%rbp), %rdi
callq 0x31e0
leaq -0x5d0(%rbp), %rdi
callq 0x31e0
leaq -0x5f0(%rbp), %rdi
callq 0x31e0
leaq -0x568(%rbp), %rdi
callq 0x31e0
leaq -0x569(%rbp), %rdi
callq 0x3300
jmp 0xf8ee
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
jmp 0xf8dd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
jmp 0xf8d1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
jmp 0xf8c5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
jmp 0xf8b9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
jmp 0xf8ad
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
jmp 0xf8a1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
leaq -0x590(%rbp), %rdi
callq 0x31e0
leaq -0x610(%rbp), %rdi
callq 0x31e0
leaq -0x5b0(%rbp), %rdi
callq 0x31e0
leaq -0x5d0(%rbp), %rdi
callq 0x31e0
leaq -0x5f0(%rbp), %rdi
callq 0x31e0
leaq -0x568(%rbp), %rdi
callq 0x31e0
leaq -0x569(%rbp), %rdi
callq 0x3300
jmp 0x10471
jmp 0xfb05
movq -0x9c0(%rbp), %rsi
addq $0xc, %rsi
leaq -0x1a8(%rbp), %rdi
callq 0x31d0
jmp 0xf90c
movq -0x9c0(%rbp), %rax
cmpl $0x0, 0xc(%rax)
jl 0xf92a
movq -0x9c0(%rbp), %rax
cmpl $0x20, 0xc(%rax)
jl 0xfb03
leaq -0x631(%rbp), %rdi
movq %rdi, -0xaa8(%rbp)
callq 0x3490
movq -0xaa8(%rbp), %rdx
leaq 0x12779(%rip), %rsi     # 0x220c4
leaq -0x630(%rbp), %rdi
callq 0x6020
jmp 0xf959
movq -0x9c0(%rbp), %rax
movl 0xc(%rax), %esi
leaq -0x6b8(%rbp), %rdi
callq 0x10880
jmp 0xf971
leaq 0x127bd(%rip), %rsi     # 0x22135
leaq -0x698(%rbp), %rdi
leaq -0x6b8(%rbp), %rdx
callq 0x10a80
jmp 0xf98d
leaq 0x1274c(%rip), %rdx     # 0x220e0
leaq -0x678(%rbp), %rdi
leaq -0x698(%rbp), %rsi
callq 0x10720
jmp 0xf9a9
movl -0xc(%rbp), %esi
leaq -0x6d8(%rbp), %rdi
callq 0x10880
jmp 0xf9ba
leaq -0x658(%rbp), %rdi
leaq -0x678(%rbp), %rsi
leaq -0x6d8(%rbp), %rdx
callq 0x10650
jmp 0xf9d6
leaq -0x630(%rbp), %rdi
leaq -0x658(%rbp), %rsi
callq 0x163d0
jmp 0xf9eb
leaq -0x658(%rbp), %rdi
callq 0x31e0
leaq -0x6d8(%rbp), %rdi
callq 0x31e0
leaq -0x678(%rbp), %rdi
callq 0x31e0
leaq -0x698(%rbp), %rdi
callq 0x31e0
leaq -0x6b8(%rbp), %rdi
callq 0x31e0
leaq -0x630(%rbp), %rdi
callq 0x31e0
leaq -0x631(%rbp), %rdi
callq 0x3300
jmp 0xfb03
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
jmp 0xfaf2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
jmp 0xfae6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
jmp 0xfada
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
jmp 0xface
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
jmp 0xfac2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
jmp 0xfab6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
leaq -0x658(%rbp), %rdi
callq 0x31e0
leaq -0x6d8(%rbp), %rdi
callq 0x31e0
leaq -0x678(%rbp), %rdi
callq 0x31e0
leaq -0x698(%rbp), %rdi
callq 0x31e0
leaq -0x6b8(%rbp), %rdi
callq 0x31e0
leaq -0x630(%rbp), %rdi
callq 0x31e0
leaq -0x631(%rbp), %rdi
callq 0x3300
jmp 0x10471
jmp 0xfb05
jmp 0xfb07
jmp 0x1043c
movq -0x9c0(%rbp), %rax
cmpl $0x0, 0x24(%rax)
jne 0xfd32
movq -0x9c0(%rbp), %rsi
addq $0xc, %rsi
leaq -0x1a8(%rbp), %rdi
callq 0x31d0
jmp 0xfb36
movq -0x9c0(%rbp), %rax
cmpl $0x0, 0xc(%rax)
jl 0xfb54
movq -0x9c0(%rbp), %rax
cmpl $0x20, 0xc(%rax)
jl 0xfd2d
leaq -0x6f9(%rbp), %rdi
movq %rdi, -0xab0(%rbp)
callq 0x3490
movq -0xab0(%rbp), %rdx
leaq 0x1254f(%rip), %rsi     # 0x220c4
leaq -0x6f8(%rbp), %rdi
callq 0x6020
jmp 0xfb83
movq -0x9c0(%rbp), %rax
movl 0xc(%rax), %esi
leaq -0x780(%rbp), %rdi
callq 0x10880
jmp 0xfb9b
leaq 0x12593(%rip), %rsi     # 0x22135
leaq -0x760(%rbp), %rdi
leaq -0x780(%rbp), %rdx
callq 0x10a80
jmp 0xfbb7
leaq 0x12522(%rip), %rdx     # 0x220e0
leaq -0x740(%rbp), %rdi
leaq -0x760(%rbp), %rsi
callq 0x10720
jmp 0xfbd3
movl -0xc(%rbp), %esi
leaq -0x7a0(%rbp), %rdi
callq 0x10880
jmp 0xfbe4
leaq -0x720(%rbp), %rdi
leaq -0x740(%rbp), %rsi
leaq -0x7a0(%rbp), %rdx
callq 0x10650
jmp 0xfc00
leaq -0x6f8(%rbp), %rdi
leaq -0x720(%rbp), %rsi
callq 0x163d0
jmp 0xfc15
leaq -0x720(%rbp), %rdi
callq 0x31e0
leaq -0x7a0(%rbp), %rdi
callq 0x31e0
leaq -0x740(%rbp), %rdi
callq 0x31e0
leaq -0x760(%rbp), %rdi
callq 0x31e0
leaq -0x780(%rbp), %rdi
callq 0x31e0
leaq -0x6f8(%rbp), %rdi
callq 0x31e0
leaq -0x6f9(%rbp), %rdi
callq 0x3300
jmp 0xfd2d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
jmp 0xfd1c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
jmp 0xfd10
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
jmp 0xfd04
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
jmp 0xfcf8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
jmp 0xfcec
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
jmp 0xfce0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
leaq -0x720(%rbp), %rdi
callq 0x31e0
leaq -0x7a0(%rbp), %rdi
callq 0x31e0
leaq -0x740(%rbp), %rdi
callq 0x31e0
leaq -0x760(%rbp), %rdi
callq 0x31e0
leaq -0x780(%rbp), %rdi
callq 0x31e0
leaq -0x6f8(%rbp), %rdi
callq 0x31e0
leaq -0x6f9(%rbp), %rdi
callq 0x3300
jmp 0x10471
jmp 0x1034e
movq -0x9c0(%rbp), %rax
movl 0x24(%rax), %eax
movl %eax, -0xabc(%rbp)
leaq -0x7c1(%rbp), %rdi
movq %rdi, -0xab8(%rbp)
callq 0x3490
movq -0xab8(%rbp), %rdx
movb $0x0, -0x7ea(%rbp)
movb $0x0, -0x7eb(%rbp)
leaq 0x1229b(%rip), %rsi     # 0x2200c
leaq -0x7c0(%rbp), %rdi
callq 0x6020
jmp 0xfd7f
leaq 0x1f542(%rip), %rdi     # 0x2f2c8
leaq -0x7c0(%rbp), %rsi
callq 0x5f40
movq %rax, -0xac8(%rbp)
jmp 0xfd9b
movl -0xabc(%rbp), %ecx
movq -0xac8(%rbp), %rdx
movb $0x1, %al
cmpl (%rdx), %ecx
movb %al, -0xac9(%rbp)
je 0xfe39
movq -0x9c0(%rbp), %rax
movl 0x24(%rax), %eax
movl %eax, -0xadc(%rbp)
leaq -0x7e9(%rbp), %rdi
movq %rdi, -0xad8(%rbp)
callq 0x3490
movq -0xad8(%rbp), %rdx
movb $0x1, -0x7ea(%rbp)
leaq 0x12220(%rip), %rsi     # 0x22010
leaq -0x7e8(%rbp), %rdi
callq 0x6020
jmp 0xfdfe
movb $0x1, -0x7eb(%rbp)
leaq 0x1f4bc(%rip), %rdi     # 0x2f2c8
leaq -0x7e8(%rbp), %rsi
callq 0x5f40
movq %rax, -0xae8(%rbp)
jmp 0xfe21
movl -0xadc(%rbp), %eax
movq -0xae8(%rbp), %rcx
cmpl (%rcx), %eax
sete %al
movb %al, -0xac9(%rbp)
movb -0xac9(%rbp), %al
movb %al, -0xae9(%rbp)
testb $0x1, -0x7eb(%rbp)
jne 0xfe50
jmp 0xfe5c
leaq -0x7e8(%rbp), %rdi
callq 0x31e0
testb $0x1, -0x7ea(%rbp)
jne 0xfe67
jmp 0xfe73
leaq -0x7e9(%rbp), %rdi
callq 0x3300
leaq -0x7c0(%rbp), %rdi
callq 0x31e0
leaq -0x7c1(%rbp), %rdi
callq 0x3300
movb -0xae9(%rbp), %al
testb $0x1, %al
jne 0xfe9a
jmp 0x1013a
movq -0x9c0(%rbp), %rsi
addq $0x30, %rsi
leaq -0x1a8(%rbp), %rdi
callq 0x31d0
jmp 0xfeb3
movq -0x9c0(%rbp), %rax
cmpl $0xffff8000, 0x30(%rax) # imm = 0xFFFF8000
jl 0xfed7
movq -0x9c0(%rbp), %rax
cmpl $0x8000, 0x30(%rax)     # imm = 0x8000
jl 0x10135
leaq -0x811(%rbp), %rdi
movq %rdi, -0xaf8(%rbp)
callq 0x3490
movq -0xaf8(%rbp), %rdx
leaq 0x121cc(%rip), %rsi     # 0x220c4
leaq -0x810(%rbp), %rdi
callq 0x6020
jmp 0xff06
movq -0x9c0(%rbp), %rax
movl 0x30(%rax), %esi
leaq -0x898(%rbp), %rdi
callq 0x10880
jmp 0xff1e
leaq 0x12227(%rip), %rsi     # 0x2214c
leaq -0x878(%rbp), %rdi
leaq -0x898(%rbp), %rdx
callq 0x10a80
jmp 0xff3a
leaq 0x1219f(%rip), %rdx     # 0x220e0
leaq -0x858(%rbp), %rdi
leaq -0x878(%rbp), %rsi
callq 0x10720
jmp 0xff56
movl -0xc(%rbp), %esi
leaq -0x8b8(%rbp), %rdi
callq 0x10880
jmp 0xff67
leaq -0x838(%rbp), %rdi
leaq -0x858(%rbp), %rsi
leaq -0x8b8(%rbp), %rdx
callq 0x10650
jmp 0xff83
leaq -0x810(%rbp), %rdi
leaq -0x838(%rbp), %rsi
callq 0x163d0
jmp 0xff98
leaq -0x838(%rbp), %rdi
callq 0x31e0
leaq -0x8b8(%rbp), %rdi
callq 0x31e0
leaq -0x858(%rbp), %rdi
callq 0x31e0
leaq -0x878(%rbp), %rdi
callq 0x31e0
leaq -0x898(%rbp), %rdi
callq 0x31e0
leaq -0x810(%rbp), %rdi
callq 0x31e0
leaq -0x811(%rbp), %rdi
callq 0x3300
jmp 0x10135
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
jmp 0x10065
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
jmp 0x10059
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
jmp 0x10040
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
testb $0x1, -0x7eb(%rbp)
jne 0x10032
jmp 0x1003e
leaq -0x7e8(%rbp), %rdi
callq 0x31e0
jmp 0x10040
testb $0x1, -0x7ea(%rbp)
jne 0x1004b
jmp 0x10057
leaq -0x7e9(%rbp), %rdi
callq 0x3300
jmp 0x10059
leaq -0x7c0(%rbp), %rdi
callq 0x31e0
leaq -0x7c1(%rbp), %rdi
callq 0x3300
jmp 0x10471
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
jmp 0x10124
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
jmp 0x10118
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
jmp 0x1010c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
jmp 0x10100
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
jmp 0x100f4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
jmp 0x100e8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
leaq -0x838(%rbp), %rdi
callq 0x31e0
leaq -0x8b8(%rbp), %rdi
callq 0x31e0
leaq -0x858(%rbp), %rdi
callq 0x31e0
leaq -0x878(%rbp), %rdi
callq 0x31e0
leaq -0x898(%rbp), %rdi
callq 0x31e0
leaq -0x810(%rbp), %rdi
callq 0x31e0
leaq -0x811(%rbp), %rdi
callq 0x3300
jmp 0x10471
jmp 0x1034c
movq -0x9c0(%rbp), %rsi
addq $0xc, %rsi
leaq -0x1a8(%rbp), %rdi
callq 0x31d0
jmp 0x10153
movq -0x9c0(%rbp), %rax
cmpl $0x0, 0xc(%rax)
jl 0x10171
movq -0x9c0(%rbp), %rax
cmpl $0x20, 0xc(%rax)
jl 0x1034a
leaq -0x8d9(%rbp), %rdi
movq %rdi, -0xb00(%rbp)
callq 0x3490
movq -0xb00(%rbp), %rdx
leaq 0x11f32(%rip), %rsi     # 0x220c4
leaq -0x8d8(%rbp), %rdi
callq 0x6020
jmp 0x101a0
movq -0x9c0(%rbp), %rax
movl 0xc(%rax), %esi
leaq -0x960(%rbp), %rdi
callq 0x10880
jmp 0x101b8
leaq 0x11f76(%rip), %rsi     # 0x22135
leaq -0x940(%rbp), %rdi
leaq -0x960(%rbp), %rdx
callq 0x10a80
jmp 0x101d4
leaq 0x11f05(%rip), %rdx     # 0x220e0
leaq -0x920(%rbp), %rdi
leaq -0x940(%rbp), %rsi
callq 0x10720
jmp 0x101f0
movl -0xc(%rbp), %esi
leaq -0x980(%rbp), %rdi
callq 0x10880
jmp 0x10201
leaq -0x900(%rbp), %rdi
leaq -0x920(%rbp), %rsi
leaq -0x980(%rbp), %rdx
callq 0x10650
jmp 0x1021d
leaq -0x8d8(%rbp), %rdi
leaq -0x900(%rbp), %rsi
callq 0x163d0
jmp 0x10232
leaq -0x900(%rbp), %rdi
callq 0x31e0
leaq -0x980(%rbp), %rdi
callq 0x31e0
leaq -0x920(%rbp), %rdi
callq 0x31e0
leaq -0x940(%rbp), %rdi
callq 0x31e0
leaq -0x960(%rbp), %rdi
callq 0x31e0
leaq -0x8d8(%rbp), %rdi
callq 0x31e0
leaq -0x8d9(%rbp), %rdi
callq 0x3300
jmp 0x1034a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
jmp 0x10339
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
jmp 0x1032d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
jmp 0x10321
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
jmp 0x10315
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
jmp 0x10309
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
jmp 0x102fd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
leaq -0x900(%rbp), %rdi
callq 0x31e0
leaq -0x980(%rbp), %rdi
callq 0x31e0
leaq -0x920(%rbp), %rdi
callq 0x31e0
leaq -0x940(%rbp), %rdi
callq 0x31e0
leaq -0x960(%rbp), %rdi
callq 0x31e0
leaq -0x8d8(%rbp), %rdi
callq 0x31e0
leaq -0x8d9(%rbp), %rdi
callq 0x3300
jmp 0x10471
jmp 0x1034c
jmp 0x1034e
movq -0x9c0(%rbp), %rax
movl 0x24(%rax), %eax
movl %eax, -0xb0c(%rbp)
leaq -0x9a1(%rbp), %rdi
movq %rdi, -0xb08(%rbp)
callq 0x3490
movq -0xb08(%rbp), %rdx
leaq 0x11cee(%rip), %rsi     # 0x2206d
leaq -0x9a0(%rbp), %rdi
callq 0x6020
jmp 0x1038d
leaq 0x1ef34(%rip), %rdi     # 0x2f2c8
leaq -0x9a0(%rbp), %rsi
callq 0x5f40
movq %rax, -0xb18(%rbp)
jmp 0x103a9
movq -0xb18(%rbp), %rax
movl (%rax), %eax
movl %eax, -0xb1c(%rbp)
leaq -0x9a0(%rbp), %rdi
callq 0x31e0
leaq -0x9a1(%rbp), %rdi
callq 0x3300
movl -0xb1c(%rbp), %ecx
movl -0xb0c(%rbp), %eax
cmpl %ecx, %eax
jne 0x10423
movq -0x9c0(%rbp), %rax
movl 0xc(%rax), %ecx
movl %ecx, 0x8(%rax)
jmp 0x10423
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
jmp 0x10415
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
leaq -0x9a0(%rbp), %rdi
callq 0x31e0
leaq -0x9a1(%rbp), %rdi
callq 0x3300
jmp 0x10471
jmp 0x1043c
leaq -0x1a8(%rbp), %rdi
leaq -0x1d0(%rbp), %rsi
callq 0x31d0
jmp 0x1043a
jmp 0x1043c
movl -0x1cc(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x1cc(%rbp)
jmp 0xe9e0
leaq -0x1c8(%rbp), %rdi
callq 0x31e0
leaq -0x1a8(%rbp), %rdi
callq 0x3170
addq $0xb20, %rsp            # imm = 0xB20
popq %rbp
retq
leaq -0x1c8(%rbp), %rdi
callq 0x31e0
leaq -0x1a8(%rbp), %rdi
callq 0x3170
movq -0x9b8(%rbp), %rdi
callq 0x31e0
movq -0x20(%rbp), %rdi
callq 0x3480
nop