// File: /workspace/github_cpp_makefile_star2_O1/lhydave[P]SysYCompilerLab/back/riscv/emit_riscv.cpp
// Function: riscv::emit_assign(std::shared_ptr<tigger::assign_stmt> const&)
void emit_assign(const shared_ptr<tigger::assign_stmt> &stmt)
{
	auto lval = stmt->lval, rval = stmt->rval;
	auto parsearray = [](const string &s) {
		std::pair<string, int> ret;
		auto l = s.find('['), r = s.find(']');
		ret.first = s.substr(0, l);
		ret.second = atoi(s.substr(l + 1, r - l - 1).c_str());
		return ret;
	};
	if (lval.find('[') != string::npos) // array store
	{
		auto temp = parsearray(lval);
		if (in_int12(temp.second))
			riscv_dst << "\tsw\t" << rval << ", " << temp.second << "("
					  << temp.first << ")\n";
		else
		{
			riscv_dst << "\tli\tt0, " << temp.second << "\n";
			riscv_dst << "\tadd\tt0, t0, " << temp.second << "\n";
			riscv_dst << "\tsw\t" << rval << ", 0(t0)\n";
		}
		return;
	}
	if (rval.find('[') != string::npos) // array load
	{
		auto temp = parsearray(rval);
		if (in_int12(temp.second))
			riscv_dst << "\tlw\t" << lval << ", " << temp.second << "("
					  << temp.first << ")\n";
		else
		{
			riscv_dst << "\tli\tt0, " << temp.second << "\n";
			riscv_dst << "\tadd\tt0, t0, " << temp.first << "\n";
			riscv_dst << "\tsw\t" << lval << ", 0(t0)\n";
		}
		return;
	}
	// ordinary assign
	if (isdigit(rval[0]) ||
		(rval[0] == '-' && isdigit(rval[1]))) // number assign
	{
		riscv_dst << "\tli\t" << lval << ", " << rval << "\n";
		return;
	}
	if (rval[0] == '-') // negate
	{
		riscv_dst << "\tneg\t" << lval << ", "
				  << rval.substr(1, rval.length() - 1) << "\n";
		return;
	}
	if (rval[0] == '!')
	{
		riscv_dst << "\tseqz\t" << lval << ", "
				  << rval.substr(1, rval.length() - 1) << "\n";
		return;
	}
	std::istringstream rval_f(rval);
	string left, op, right;
	rval_f >> left;
	if (rval_f.peek() == EOF) // single assign
	{
		riscv_dst << "\tmv\t" << lval << ", " << left << "\n";
		return;
	}
	// binary operator
	rval_f >> op >> right;
	static unordered_map<string, string> convert = {{"+", "add"}, {"-", "sub"},
		{"*", "mul"}, {"/", "div"}, {"%", "rem"}, {"<", "slt"}, {">", "sgt"},
		{"<=", "sgt"}, {">=", "slt"}, {"||", "or"}, {"!=", "xor"},
		{"==", "xor"}};
	if (op == "&&")
	{
		riscv_dst << "\tsnez" << lval << ", " << left << "\n\tsnez\tt0, "
				  << right << "\n\tand\t" << lval << ", " << lval << ", t0\n";
		return;
	}
	riscv_dst << "\t" << convert[op] << "\t" << lval << ", " << left << ", "
			  << right << "\n";
	if (op == "<=" || op == ">=" || op == "==")
	{
		riscv_dst << "\tseqz\t" << lval << ", " << lval << "\n";
		return;
	}
	if (op == "||" || op == "!=")
	{
		riscv_dst << "\tsnez\t" << lval << ", " << lval << "\n";
		return;
	}
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x538, %rsp            # imm = 0x538
movq %rdi, %rbx
movq (%rdi), %rax
leaq 0x20(%rsp), %r12
movq %r12, -0x10(%r12)
movq 0x8(%rax), %rsi
movq 0x10(%rax), %rdx
addq %rsi, %rdx
leaq 0x10(%rsp), %rdi
callq 0x124aa
movq (%rbx), %rax
leaq 0x48(%rsp), %r13
movq %r13, -0x10(%r13)
movq 0x28(%rax), %rsi
movq 0x30(%rax), %rdx
addq %rsi, %rdx
leaq 0x38(%rsp), %rdi
callq 0x124aa
leaq 0x10(%rsp), %rbx
movq %rbx, %rdi
movl $0x5b, %esi
xorl %edx, %edx
callq 0x5330
cmpq $-0x1, %rax
je 0x24e33
leaq 0xb8(%rsp), %rdi
leaq 0x10(%rsp), %rsi
callq 0x26442
movl $0x800, %eax            # imm = 0x800
addl 0xd8(%rsp), %eax
cmpl $0xfff, %eax            # imm = 0xFFF
ja 0x24f0b
leaq 0x107ca(%rip), %rdi     # 0x35570
leaq 0x49ed(%rip), %rsi      # 0x2979a
movl $0x4, %edx
callq 0x52a0
movq 0x38(%rsp), %rsi
movq 0x40(%rsp), %rdx
leaq 0x107a8(%rip), %rdi     # 0x35570
callq 0x52a0
movq %rax, %rbx
leaq 0x4a98(%rip), %rsi      # 0x2986f
movl $0x2, %edx
movq %rax, %rdi
callq 0x52a0
movl 0xd8(%rsp), %esi
movq %rbx, %rdi
callq 0x54a0
movq %rax, %rbx
leaq 0x4ab8(%rip), %rsi      # 0x298b5
movl $0x1, %edx
movq %rax, %rdi
callq 0x52a0
movq 0xb8(%rsp), %rsi
movq 0xc0(%rsp), %rdx
movq %rbx, %rdi
callq 0x52a0
movl $0x2, %edx
leaq 0x4b0b(%rip), %rsi      # 0x29939
jmp 0x24fc3
leaq 0x38(%rsp), %rdi
movl $0x5b, %esi
xorl %edx, %edx
callq 0x5330
cmpq $-0x1, %rax
je 0x24fd0
leaq 0xb8(%rsp), %rdi
leaq 0x38(%rsp), %rsi
callq 0x26442
movl $0x800, %eax            # imm = 0x800
addl 0xd8(%rsp), %eax
cmpl $0xfff, %eax            # imm = 0xFFF
ja 0x25054
leaq 0x106f2(%rip), %rdi     # 0x35570
leaq 0x4928(%rip), %rsi      # 0x297ad
movl $0x4, %edx
callq 0x52a0
movq 0x10(%rsp), %rsi
movq 0x18(%rsp), %rdx
leaq 0x106d0(%rip), %rdi     # 0x35570
callq 0x52a0
movq %rax, %rbx
leaq 0x49c0(%rip), %rsi      # 0x2986f
movl $0x2, %edx
movq %rax, %rdi
callq 0x52a0
movl 0xd8(%rsp), %esi
movq %rbx, %rdi
callq 0x54a0
movq %rax, %rbx
leaq 0x49e0(%rip), %rsi      # 0x298b5
movl $0x1, %edx
movq %rax, %rdi
callq 0x52a0
movq 0xb8(%rsp), %rsi
movq 0xc0(%rsp), %rdx
movq %rbx, %rdi
callq 0x52a0
movl $0x2, %edx
leaq 0x4a33(%rip), %rsi      # 0x29939
jmp 0x25115
leaq 0x1065e(%rip), %rdi     # 0x35570
leaq 0x4950(%rip), %rsi      # 0x29869
movl $0x8, %edx
callq 0x52a0
movl 0xd8(%rsp), %esi
leaq 0x1063f(%rip), %rdi     # 0x35570
callq 0x54a0
leaq 0x3a9f(%rip), %rsi      # 0x289dc
movl $0x1, %edx
movq %rax, %rdi
callq 0x52a0
leaq 0x1061f(%rip), %rdi     # 0x35570
leaq 0x4847(%rip), %rsi      # 0x2979f
movl $0xd, %edx
callq 0x52a0
movl 0xd8(%rsp), %esi
leaq 0x10600(%rip), %rdi     # 0x35570
callq 0x54a0
leaq 0x3a60(%rip), %rsi      # 0x289dc
movl $0x1, %edx
movq %rax, %rdi
callq 0x52a0
leaq 0x105e0(%rip), %rdi     # 0x35570
leaq 0x4803(%rip), %rsi      # 0x2979a
movl $0x4, %edx
callq 0x52a0
movq 0x38(%rsp), %rsi
movq 0x40(%rsp), %rdx
leaq 0x105be(%rip), %rdi     # 0x35570
callq 0x52a0
movl $0x8, %edx
leaq 0x4970(%rip), %rsi      # 0x29933
movq %rax, %rdi
callq 0x52a0
jmp 0x2511d
movq 0x38(%rsp), %rcx
movsbl (%rcx), %eax
leal -0x30(%rax), %edx
cmpl $0xa, %edx
jae 0x2517e
leaq 0x10585(%rip), %rdi     # 0x35570
leaq 0x47c0(%rip), %rsi      # 0x297b2
movl $0x4, %edx
callq 0x52a0
movq 0x10(%rsp), %rsi
movq 0x18(%rsp), %rdx
leaq 0x10563(%rip), %rdi     # 0x35570
callq 0x52a0
movq %rax, %rbx
leaq 0x4853(%rip), %rsi      # 0x2986f
movl $0x2, %edx
movq %rax, %rdi
callq 0x52a0
movq 0x38(%rsp), %rsi
movq 0x40(%rsp), %rdx
movq %rbx, %rdi
callq 0x52a0
leaq 0x399a(%rip), %rsi      # 0x289dc
movl $0x1, %edx
movq %rax, %rdi
callq 0x52a0
jmp 0x2513e
leaq 0x10515(%rip), %rdi     # 0x35570
leaq 0x4807(%rip), %rsi      # 0x29869
movl $0x8, %edx
callq 0x52a0
movl 0xd8(%rsp), %esi
leaq 0x104f6(%rip), %rdi     # 0x35570
callq 0x54a0
leaq 0x3956(%rip), %rsi      # 0x289dc
movl $0x1, %edx
movq %rax, %rdi
callq 0x52a0
leaq 0x104d6(%rip), %rdi     # 0x35570
leaq 0x46fe(%rip), %rsi      # 0x2979f
movl $0xd, %edx
callq 0x52a0
movq 0xb8(%rsp), %rsi
movq 0xc0(%rsp), %rdx
leaq 0x104ae(%rip), %rdi     # 0x35570
callq 0x52a0
leaq 0x390e(%rip), %rsi      # 0x289dc
movl $0x1, %edx
movq %rax, %rdi
callq 0x52a0
leaq 0x1048e(%rip), %rdi     # 0x35570
leaq 0x46b1(%rip), %rsi      # 0x2979a
movl $0x4, %edx
callq 0x52a0
movq 0x10(%rsp), %rsi
movq 0x18(%rsp), %rdx
leaq 0x1046c(%rip), %rdi     # 0x35570
callq 0x52a0
movl $0x8, %edx
leaq 0x481e(%rip), %rsi      # 0x29933
movq %rax, %rdi
callq 0x52a0
leaq 0xc8(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x2513e
movq 0xc8(%rsp), %rsi
incq %rsi
callq 0x5240
movq 0x38(%rsp), %rdi
cmpq %r13, %rdi
je 0x25155
movq 0x48(%rsp), %rsi
incq %rsi
callq 0x5240
movq 0x10(%rsp), %rdi
cmpq %r12, %rdi
je 0x2516c
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x5240
addq $0x538, %rsp            # imm = 0x538
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
cmpb $0x2d, %al
jne 0x25232
movsbl 0x1(%rcx), %ecx
addl $-0x30, %ecx
cmpl $0x9, %ecx
jbe 0x24fe4
cmpb $0x2d, %al
jne 0x25232
leaq 0x103cb(%rip), %rdi     # 0x35570
leaq 0x460b(%rip), %rsi      # 0x297b7
movl $0x5, %edx
callq 0x52a0
movq 0x10(%rsp), %rsi
movq 0x18(%rsp), %rdx
leaq 0x103a9(%rip), %rdi     # 0x35570
callq 0x52a0
movq %rax, %rbx
leaq 0x4699(%rip), %rsi      # 0x2986f
movl $0x2, %edx
movq %rax, %rdi
callq 0x52a0
leaq 0x38(%rsp), %rsi
movq 0x8(%rsi), %rcx
decq %rcx
leaq 0xb8(%rsp), %rdi
movl $0x1, %edx
callq 0x5260
movq 0xb8(%rsp), %rsi
movq 0xc0(%rsp), %rdx
movq %rbx, %rdi
callq 0x52a0
leaq 0x37bc(%rip), %rsi      # 0x289dc
movl $0x1, %edx
movq %rax, %rdi
callq 0x52a0
jmp 0x2511d
cmpb $0x21, %al
jne 0x252ce
leaq 0x1032f(%rip), %rdi     # 0x35570
leaq 0x4575(%rip), %rsi      # 0x297bd
movl $0x6, %edx
callq 0x52a0
movq 0x10(%rsp), %rsi
movq 0x18(%rsp), %rdx
leaq 0x1030d(%rip), %rdi     # 0x35570
callq 0x52a0
movq %rax, %rbx
leaq 0x45fd(%rip), %rsi      # 0x2986f
movl $0x2, %edx
movq %rax, %rdi
callq 0x52a0
leaq 0x38(%rsp), %rsi
movq 0x8(%rsi), %rcx
decq %rcx
leaq 0xb8(%rsp), %rdi
movl $0x1, %edx
callq 0x5260
movq 0xb8(%rsp), %rsi
movq 0xc0(%rsp), %rdx
movq %rbx, %rdi
callq 0x52a0
leaq 0x3720(%rip), %rsi      # 0x289dc
movl $0x1, %edx
movq %rax, %rdi
callq 0x52a0
jmp 0x2511d
leaq 0x3b8(%rsp), %rdi
leaq 0x38(%rsp), %rsi
movl $0x8, %edx
callq 0x5480
leaq 0x88(%rsp), %rcx
movq %rcx, -0x10(%rcx)
xorl %eax, %eax
movq %rax, -0x8(%rcx)
movb %al, (%rcx)
leaq 0x68(%rsp), %rcx
movq %rcx, -0x10(%rcx)
movq %rax, -0x8(%rcx)
movb %al, (%rcx)
leaq 0xa8(%rsp), %rbp
movq %rbp, -0x10(%rbp)
movq %rax, -0x8(%rbp)
movb %al, (%rbp)
leaq 0x3b8(%rsp), %rdi
leaq 0x78(%rsp), %r14
movq %r14, %rsi
callq 0x5320
leaq 0x3b8(%rsp), %rdi
callq 0x50f0
cmpl $-0x1, %eax
je 0x25529
leaq 0x3b8(%rsp), %rdi
leaq 0x58(%rsp), %rsi
callq 0x5320
leaq 0x98(%rsp), %rsi
movq %rax, %rdi
callq 0x5320
movb 0x1084a(%rip), %al      # 0x35bb8
testb %al, %al
je 0x25748
leaq 0x4485(%rip), %rsi      # 0x29802
leaq 0x58(%rsp), %rdi
callq 0x50a0
testl %eax, %eax
je 0x255d8
leaq 0x101da(%rip), %rdi     # 0x35570
leaq 0x453b(%rip), %rsi      # 0x298d8
movl $0x1, %edx
callq 0x52a0
leaq 0x107d2(%rip), %rdi     # 0x35b80
leaq 0x58(%rsp), %rsi
callq 0x26d9c
movq (%rax), %rsi
movq 0x8(%rax), %rdx
leaq 0x101aa(%rip), %rdi     # 0x35570
callq 0x52a0
movq %rax, %r14
leaq 0x4503(%rip), %rsi      # 0x298d8
movl $0x1, %edx
movq %rax, %rdi
callq 0x52a0
movq 0x10(%rsp), %rsi
movq 0x18(%rsp), %rdx
movq %r14, %rdi
callq 0x52a0
movq %rax, %r14
leaq 0x4471(%rip), %rsi      # 0x2986f
movl $0x2, %edx
movq %rax, %rdi
callq 0x52a0
movq 0x78(%rsp), %rsi
movq 0x80(%rsp), %rdx
movq %r14, %rdi
callq 0x52a0
movq %rax, %r14
leaq 0x4445(%rip), %rsi      # 0x2986f
movl $0x2, %edx
movq %rax, %rdi
callq 0x52a0
movq 0x98(%rsp), %rsi
movq 0xa0(%rsp), %rdx
movq %r14, %rdi
callq 0x52a0
leaq 0x3586(%rip), %rsi      # 0x289dc
movl $0x1, %edx
movq %rax, %rdi
callq 0x52a0
leaq 0x4385(%rip), %rsi      # 0x297ef
leaq 0x58(%rsp), %rdi
callq 0x50a0
testl %eax, %eax
je 0x25570
leaq 0x436f(%rip), %rsi      # 0x297f2
leaq 0x58(%rsp), %rdi
callq 0x50a0
testl %eax, %eax
je 0x25570
leaq 0x4363(%rip), %rsi      # 0x297ff
leaq 0x58(%rsp), %rdi
callq 0x50a0
testl %eax, %eax
je 0x25570
leaq 0x4340(%rip), %rsi      # 0x297f5
leaq 0x58(%rsp), %rdi
callq 0x50a0
testl %eax, %eax
je 0x254dc
leaq 0x432e(%rip), %rsi      # 0x297f8
leaq 0x58(%rsp), %rdi
callq 0x50a0
testl %eax, %eax
jne 0x256c7
leaq 0x1008d(%rip), %rdi     # 0x35570
leaq 0x4334(%rip), %rsi      # 0x2981e
movl $0x6, %edx
callq 0x52a0
movq 0x10(%rsp), %rsi
movq 0x18(%rsp), %rdx
leaq 0x1006b(%rip), %rdi     # 0x35570
callq 0x52a0
movq %rax, %r15
leaq 0x435b(%rip), %rsi      # 0x2986f
movl $0x2, %edx
movq %rax, %rdi
callq 0x52a0
movq %rbx, %r14
jmp 0x255b8
leaq 0x10040(%rip), %rdi     # 0x35570
leaq 0x428d(%rip), %rsi      # 0x297c4
movl $0x4, %edx
callq 0x52a0
movq 0x10(%rsp), %rsi
movq 0x18(%rsp), %rdx
leaq 0x1001e(%rip), %rdi     # 0x35570
callq 0x52a0
movq %rax, %r15
leaq 0x430e(%rip), %rsi      # 0x2986f
movl $0x2, %edx
movq %rax, %rdi
callq 0x52a0
jmp 0x255b8
leaq 0xfff9(%rip), %rdi      # 0x35570
leaq 0x423f(%rip), %rsi      # 0x297bd
movl $0x6, %edx
callq 0x52a0
movq 0x10(%rsp), %rsi
movq 0x18(%rsp), %rdx
leaq 0xffd7(%rip), %rdi      # 0x35570
callq 0x52a0
movq %rax, %r15
leaq 0x42c7(%rip), %rsi      # 0x2986f
movl $0x2, %edx
movq %rax, %rdi
callq 0x52a0
movq %rbx, %r14
movq (%r14), %rsi
movq 0x8(%r14), %rdx
movq %r15, %rdi
callq 0x52a0
movl $0x1, %edx
leaq 0x3409(%rip), %rsi      # 0x289dc
jmp 0x256bf
leaq 0xff91(%rip), %rdi      # 0x35570
leaq 0x421f(%rip), %rsi      # 0x29805
movl $0x5, %edx
callq 0x52a0
movq 0x10(%rsp), %rsi
movq 0x18(%rsp), %rdx
leaq 0xff6f(%rip), %rdi      # 0x35570
callq 0x52a0
movq %rax, %rbx
leaq 0x425f(%rip), %rsi      # 0x2986f
movl $0x2, %edx
movq %rax, %rdi
callq 0x52a0
movq 0x78(%rsp), %rsi
movq 0x80(%rsp), %rdx
movq %rbx, %rdi
callq 0x52a0
movq %rax, %rbx
leaq 0x41cf(%rip), %rsi      # 0x2980b
movl $0xb, %edx
movq %rax, %rdi
callq 0x52a0
movq 0x98(%rsp), %rsi
movq 0xa0(%rsp), %rdx
movq %rbx, %rdi
callq 0x52a0
movq %rax, %rbx
leaq 0x41ac(%rip), %rsi      # 0x29817
movl $0x6, %edx
movq %rax, %rdi
callq 0x52a0
movq 0x10(%rsp), %rsi
movq 0x18(%rsp), %rdx
movq %rbx, %rdi
callq 0x52a0
movq %rax, %rbx
leaq 0x41db(%rip), %rsi      # 0x2986f
movl $0x2, %edx
movq %rax, %rdi
callq 0x52a0
movq 0x10(%rsp), %rsi
movq 0x18(%rsp), %rdx
movq %rbx, %rdi
callq 0x52a0
movl $0x5, %edx
leaq 0x4210(%rip), %rsi      # 0x298cf
movq %rax, %rdi
callq 0x52a0
movq 0x98(%rsp), %rdi
cmpq %rbp, %rdi
je 0x256e4
movq 0xa8(%rsp), %rsi
incq %rsi
callq 0x5240
movq 0x58(%rsp), %rdi
leaq 0x68(%rsp), %rax
cmpq %rax, %rdi
je 0x25700
movq 0x68(%rsp), %rsi
incq %rsi
callq 0x5240
movq 0x78(%rsp), %rdi
leaq 0x88(%rsp), %rax
cmpq %rax, %rdi
je 0x25722
movq 0x88(%rsp), %rsi
incq %rsi
callq 0x5240
movq 0xf89f(%rip), %rsi      # 0x34fc8
leaq 0x3b8(%rsp), %rdi
callq 0x5390
leaq 0x430(%rsp), %rdi
callq 0x50d0
jmp 0x2513e
leaq 0x10469(%rip), %rdi     # 0x35bb8
callq 0x54e0
testl %eax, %eax
je 0x25376
leaq 0xb8(%rsp), %r14
leaq 0x405e(%rip), %rsi      # 0x297c9
leaq 0x4059(%rip), %rdx      # 0x297cb
movq %r14, %r15
movq %r14, %rdi
callq 0x26544
leaq 0xf8(%rsp), %r15
leaq 0x3fff(%rip), %rsi      # 0x2978b
leaq 0x403c(%rip), %rdx      # 0x297cf
movq %r15, %rdi
callq 0x26544
leaq 0x138(%rsp), %r15
leaq 0x4029(%rip), %rsi      # 0x297d3
leaq 0x4024(%rip), %rdx      # 0x297d5
movq %r15, %rdi
callq 0x26544
leaq 0x178(%rsp), %r15
leaq 0x2cb1(%rip), %rsi      # 0x28479
leaq 0x400a(%rip), %rdx      # 0x297d9
movq %r15, %rdi
callq 0x26544
leaq 0x1b8(%rsp), %r15
leaq 0x3ff7(%rip), %rsi      # 0x297dd
leaq 0x3ff2(%rip), %rdx      # 0x297df
movq %r15, %rdi
callq 0x26544
leaq 0x1f8(%rsp), %r15
leaq 0x3fdf(%rip), %rsi      # 0x297e3
leaq 0x3fda(%rip), %rdx      # 0x297e5
movq %r15, %rdi
callq 0x26544
leaq 0x238(%rsp), %r15
leaq 0x3fc7(%rip), %rsi      # 0x297e9
leaq 0x3fc2(%rip), %rdx      # 0x297eb
movq %r15, %rdi
callq 0x26544
leaq 0x278(%rsp), %r15
leaq 0x3faf(%rip), %rsi      # 0x297ef
leaq 0x3fa4(%rip), %rdx      # 0x297eb
movq %r15, %rdi
callq 0x265c2
leaq 0x2b8(%rsp), %r15
leaq 0x3f94(%rip), %rsi      # 0x297f2
leaq 0x3f80(%rip), %rdx      # 0x297e5
movq %r15, %rdi
callq 0x265c2
leaq 0x2f8(%rsp), %r15
leaq 0x3f79(%rip), %rsi      # 0x297f5
leaq 0x2531(%rip), %rdx      # 0x27db4
movq %r15, %rdi
callq 0x26640
leaq 0x338(%rsp), %r15
leaq 0x3f5e(%rip), %rsi      # 0x297f8
leaq 0x3f5a(%rip), %rdx      # 0x297fb
movq %r15, %rdi
callq 0x265c2
leaq 0x378(%rsp), %r15
leaq 0x3f47(%rip), %rsi      # 0x297ff
leaq 0x3f3c(%rip), %rdx      # 0x297fb
movq %r15, %rdi
callq 0x265c2
leaq 0x3b8(%rsp), %rdx
leaq 0x35(%rsp), %rax
movq %rax, (%rsp)
leaq 0x102a1(%rip), %rdi     # 0x35b80
leaq 0xb8(%rsp), %rsi
leaq 0x37(%rsp), %r8
leaq 0x36(%rsp), %r9
xorl %ecx, %ecx
callq 0x26858
movl $0x2c0, %r14d           # imm = 0x2C0
leaq (%rsp,%r14), %rdi
addq $0xb8, %rdi
callq 0x266be
addq $-0x40, %r14
cmpq $-0x40, %r14
jne 0x258fe
leaq 0xdd5(%rip), %rdi       # 0x266f4
leaq 0x1025a(%rip), %rsi     # 0x35b80
leaq 0xf973(%rip), %rdx      # 0x352a0
callq 0x51f0
leaq 0x1027f(%rip), %rdi     # 0x35bb8
callq 0x5180
jmp 0x25376
movq %rax, %rbx
movl $0x2c0, %r14d           # imm = 0x2C0
leaq (%rsp,%r14), %rdi
addq $0xb8, %rdi
callq 0x266be
addq $-0x40, %r14
cmpq $-0x40, %r14
jne 0x2594c
jmp 0x25989
movq %rax, %rbx
cmpq %r15, %r14
je 0x25989
leaq 0xb8(%rsp), %r14
addq $-0x40, %r15
movq %r15, %rdi
callq 0x266be
cmpq %r14, %r15
jne 0x25978
leaq 0x10228(%rip), %rdi     # 0x35bb8
callq 0x5170
jmp 0x259b8
jmp 0x25a38
jmp 0x25a44
jmp 0x25a38
jmp 0x25a38
jmp 0x25a44
jmp 0x25a38
movq %rax, %rbx
movq 0x98(%rsp), %rdi
cmpq %rbp, %rdi
je 0x259d5
movq 0xa8(%rsp), %rsi
incq %rsi
callq 0x5240
movq 0x58(%rsp), %rdi
leaq 0x68(%rsp), %rax
cmpq %rax, %rdi
je 0x259f1
movq 0x68(%rsp), %rsi
incq %rsi
callq 0x5240
movq 0x78(%rsp), %rdi
leaq 0x88(%rsp), %rax
cmpq %rax, %rdi
je 0x25a13
movq 0x88(%rsp), %rsi
incq %rsi
callq 0x5240
movq 0xf5ae(%rip), %rsi      # 0x34fc8
leaq 0x3b8(%rsp), %rdi
callq 0x5390
leaq 0x430(%rsp), %rdi
callq 0x50d0
jmp 0x25a68
jmp 0x25a38
movq %rax, %rbx
jmp 0x25a68
movq %rax, %rbx
jmp 0x25a7f
jmp 0x25a44
movq %rax, %rbx
leaq 0xc8(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x25a68
movq 0xc8(%rsp), %rsi
incq %rsi
callq 0x5240
movq 0x38(%rsp), %rdi
cmpq %r13, %rdi
je 0x25a7f
movq 0x48(%rsp), %rsi
incq %rsi
callq 0x5240
movq 0x10(%rsp), %rdi
cmpq %r12, %rdi
je 0x25a96
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x5240
movq %rbx, %rdi
callq 0x54c0