// File: 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
movq %rsp, %rbp
subq $0x8d0, %rsp            # imm = 0x8D0
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rdi
callq 0x48c00
movq %rax, %rsi
addq $0x8, %rsi
leaq -0x28(%rbp), %rdi
callq 0x5170
movq -0x8(%rbp), %rdi
callq 0x48c00
movq %rax, %rsi
addq $0x28, %rsi
leaq -0x48(%rbp), %rdi
callq 0x5170
jmp 0x46113
leaq -0x28(%rbp), %rdi
movl $0x5b, %esi
xorl %eax, %eax
movl %eax, %edx
callq 0x5460
cmpq $-0x1, %rax
je 0x4634b
leaq -0x80(%rbp), %rdi
leaq -0x55(%rbp), %rsi
leaq -0x28(%rbp), %rdx
callq 0x484b0
jmp 0x46142
movl -0x60(%rbp), %edi
callq 0x48c20
movb %al, -0x5ec(%rbp)
jmp 0x46152
movb -0x5ec(%rbp), %al
testb $0x1, %al
jne 0x46161
jmp 0x46255
leaq 0x2c4c8(%rip), %rdi     # 0x72630
leaq 0x89b2(%rip), %rsi      # 0x4eb21
callq 0x52f0
movq %rax, -0x5f8(%rbp)
jmp 0x4617d
movq -0x5f8(%rbp), %rdi
leaq -0x48(%rbp), %rsi
callq 0x52b0
movq %rax, -0x600(%rbp)
jmp 0x46196
movq -0x600(%rbp), %rdi
leaq 0x8a52(%rip), %rsi      # 0x4ebf6
callq 0x52f0
movq %rax, -0x608(%rbp)
jmp 0x461b2
movq -0x608(%rbp), %rdi
movl -0x60(%rbp), %esi
callq 0x55f0
movq %rax, -0x610(%rbp)
jmp 0x461ca
movq -0x610(%rbp), %rdi
leaq 0x8a64(%rip), %rsi      # 0x4ec3c
callq 0x52f0
movq %rax, -0x618(%rbp)
jmp 0x461e6
movq -0x618(%rbp), %rdi
leaq -0x80(%rbp), %rsi
callq 0x52b0
movq %rax, -0x620(%rbp)
jmp 0x461ff
movq -0x620(%rbp), %rdi
leaq 0x8ab3(%rip), %rsi      # 0x4ecc0
callq 0x52f0
jmp 0x46214
jmp 0x46333
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x47253
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x4724a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x80(%rbp), %rdi
callq 0x48c50
jmp 0x4724a
leaq 0x2c3d4(%rip), %rdi     # 0x72630
leaq 0x898d(%rip), %rsi      # 0x4ebf0
callq 0x52f0
movq %rax, -0x628(%rbp)
jmp 0x46271
movq -0x628(%rbp), %rdi
movl -0x60(%rbp), %esi
callq 0x55f0
movq %rax, -0x630(%rbp)
jmp 0x46289
movq -0x630(%rbp), %rdi
leaq 0x79a9(%rip), %rsi      # 0x4dc40
callq 0x52f0
jmp 0x4629e
leaq 0x2c38b(%rip), %rdi     # 0x72630
leaq 0x887a(%rip), %rsi      # 0x4eb26
callq 0x52f0
movq %rax, -0x638(%rbp)
jmp 0x462ba
movq -0x638(%rbp), %rdi
movl -0x60(%rbp), %esi
callq 0x55f0
movq %rax, -0x640(%rbp)
jmp 0x462d2
movq -0x640(%rbp), %rdi
leaq 0x7960(%rip), %rsi      # 0x4dc40
callq 0x52f0
jmp 0x462e7
leaq 0x2c342(%rip), %rdi     # 0x72630
leaq 0x882c(%rip), %rsi      # 0x4eb21
callq 0x52f0
movq %rax, -0x648(%rbp)
jmp 0x46303
movq -0x648(%rbp), %rdi
leaq -0x48(%rbp), %rsi
callq 0x52b0
movq %rax, -0x650(%rbp)
jmp 0x4631c
movq -0x650(%rbp), %rdi
leaq 0x8990(%rip), %rsi      # 0x4ecba
callq 0x52f0
jmp 0x46331
jmp 0x46333
movl $0x1, -0x84(%rbp)
leaq -0x80(%rbp), %rdi
callq 0x48c50
jmp 0x471ff
leaq -0x48(%rbp), %rdi
movl $0x5b, %esi
xorl %eax, %eax
movl %eax, %edx
callq 0x5460
cmpq $-0x1, %rax
je 0x4657a
leaq -0xb0(%rbp), %rdi
leaq -0x55(%rbp), %rsi
leaq -0x48(%rbp), %rdx
callq 0x484b0
jmp 0x4637d
movl -0x90(%rbp), %edi
callq 0x48c20
movb %al, -0x651(%rbp)
jmp 0x46390
movb -0x651(%rbp), %al
testb $0x1, %al
jne 0x4639f
jmp 0x4647a
leaq 0x2c28a(%rip), %rdi     # 0x72630
leaq 0x8787(%rip), %rsi      # 0x4eb34
callq 0x52f0
movq %rax, -0x660(%rbp)
jmp 0x463bb
movq -0x660(%rbp), %rdi
leaq -0x28(%rbp), %rsi
callq 0x52b0
movq %rax, -0x668(%rbp)
jmp 0x463d4
movq -0x668(%rbp), %rdi
leaq 0x8814(%rip), %rsi      # 0x4ebf6
callq 0x52f0
movq %rax, -0x670(%rbp)
jmp 0x463f0
movq -0x670(%rbp), %rdi
movl -0x90(%rbp), %esi
callq 0x55f0
movq %rax, -0x678(%rbp)
jmp 0x4640b
movq -0x678(%rbp), %rdi
leaq 0x8823(%rip), %rsi      # 0x4ec3c
callq 0x52f0
movq %rax, -0x680(%rbp)
jmp 0x46427
movq -0x680(%rbp), %rdi
leaq -0xb0(%rbp), %rsi
callq 0x52b0
movq %rax, -0x688(%rbp)
jmp 0x46443
movq -0x688(%rbp), %rdi
leaq 0x886f(%rip), %rsi      # 0x4ecc0
callq 0x52f0
jmp 0x46458
jmp 0x4655f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0xb0(%rbp), %rdi
callq 0x48c50
jmp 0x4724a
leaq 0x2c1af(%rip), %rdi     # 0x72630
leaq 0x8768(%rip), %rsi      # 0x4ebf0
callq 0x52f0
movq %rax, -0x690(%rbp)
jmp 0x46496
movq -0x690(%rbp), %rdi
movl -0x90(%rbp), %esi
callq 0x55f0
movq %rax, -0x698(%rbp)
jmp 0x464b1
movq -0x698(%rbp), %rdi
leaq 0x7781(%rip), %rsi      # 0x4dc40
callq 0x52f0
jmp 0x464c6
leaq 0x2c163(%rip), %rdi     # 0x72630
leaq 0x8652(%rip), %rsi      # 0x4eb26
callq 0x52f0
movq %rax, -0x6a0(%rbp)
jmp 0x464e2
movq -0x6a0(%rbp), %rdi
leaq -0xb0(%rbp), %rsi
callq 0x52b0
movq %rax, -0x6a8(%rbp)
jmp 0x464fe
movq -0x6a8(%rbp), %rdi
leaq 0x7734(%rip), %rsi      # 0x4dc40
callq 0x52f0
jmp 0x46513
leaq 0x2c116(%rip), %rdi     # 0x72630
leaq 0x8600(%rip), %rsi      # 0x4eb21
callq 0x52f0
movq %rax, -0x6b0(%rbp)
jmp 0x4652f
movq -0x6b0(%rbp), %rdi
leaq -0x28(%rbp), %rsi
callq 0x52b0
movq %rax, -0x6b8(%rbp)
jmp 0x46548
movq -0x6b8(%rbp), %rdi
leaq 0x8764(%rip), %rsi      # 0x4ecba
callq 0x52f0
jmp 0x4655d
jmp 0x4655f
movl $0x1, -0x84(%rbp)
leaq -0xb0(%rbp), %rdi
callq 0x48c50
jmp 0x471ff
xorl %eax, %eax
movl %eax, %esi
leaq -0x48(%rbp), %rdi
callq 0x56a0
movq %rax, -0x6c0(%rbp)
jmp 0x46590
movq -0x6c0(%rbp), %rax
movsbl (%rax), %edi
callq 0x52c0
cmpl $0x0, %eax
jne 0x465fc
xorl %eax, %eax
movl %eax, %esi
leaq -0x48(%rbp), %rdi
callq 0x56a0
movq %rax, -0x6c8(%rbp)
jmp 0x465ba
movq -0x6c8(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x2d, %eax
jne 0x4668a
leaq -0x48(%rbp), %rdi
movl $0x1, %esi
callq 0x56a0
movq %rax, -0x6d0(%rbp)
jmp 0x465e4
movq -0x6d0(%rbp), %rax
movsbl (%rax), %edi
callq 0x52c0
cmpl $0x0, %eax
je 0x4668a
leaq 0x2c02d(%rip), %rdi     # 0x72630
leaq 0x852f(%rip), %rsi      # 0x4eb39
callq 0x52f0
movq %rax, -0x6d8(%rbp)
jmp 0x46618
movq -0x6d8(%rbp), %rdi
leaq -0x28(%rbp), %rsi
callq 0x52b0
movq %rax, -0x6e0(%rbp)
jmp 0x46631
movq -0x6e0(%rbp), %rdi
leaq 0x85b7(%rip), %rsi      # 0x4ebf6
callq 0x52f0
movq %rax, -0x6e8(%rbp)
jmp 0x4664d
movq -0x6e8(%rbp), %rdi
leaq -0x48(%rbp), %rsi
callq 0x52b0
movq %rax, -0x6f0(%rbp)
jmp 0x46666
movq -0x6f0(%rbp), %rdi
leaq 0x75cc(%rip), %rsi      # 0x4dc40
callq 0x52f0
jmp 0x4667b
movl $0x1, -0x84(%rbp)
jmp 0x471ff
xorl %eax, %eax
movl %eax, %esi
leaq -0x48(%rbp), %rdi
callq 0x56a0
movq %rax, -0x6f8(%rbp)
jmp 0x466a0
movq -0x6f8(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x2d, %eax
jne 0x4679d
leaq 0x2bf76(%rip), %rdi     # 0x72630
leaq 0x847d(%rip), %rsi      # 0x4eb3e
callq 0x52f0
movq %rax, -0x700(%rbp)
jmp 0x466cf
movq -0x700(%rbp), %rdi
leaq -0x28(%rbp), %rsi
callq 0x52b0
movq %rax, -0x708(%rbp)
jmp 0x466e8
movq -0x708(%rbp), %rdi
leaq 0x8500(%rip), %rsi      # 0x4ebf6
callq 0x52f0
movq %rax, -0x710(%rbp)
jmp 0x46704
leaq -0x48(%rbp), %rdi
movq %rdi, -0x718(%rbp)
callq 0x5510
movq -0x718(%rbp), %rsi
movq %rax, %rcx
decq %rcx
leaq -0xd0(%rbp), %rdi
movl $0x1, %edx
callq 0x5340
jmp 0x46734
movq -0x710(%rbp), %rdi
leaq -0xd0(%rbp), %rsi
callq 0x52b0
movq %rax, -0x720(%rbp)
jmp 0x46750
movq -0x720(%rbp), %rdi
leaq 0x74e2(%rip), %rsi      # 0x4dc40
callq 0x52f0
jmp 0x46765
leaq -0xd0(%rbp), %rdi
callq 0x56c0
movl $0x1, -0x84(%rbp)
jmp 0x471ff
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0xd0(%rbp), %rdi
callq 0x56c0
jmp 0x4724a
xorl %eax, %eax
movl %eax, %esi
leaq -0x48(%rbp), %rdi
callq 0x56a0
movq %rax, -0x728(%rbp)
jmp 0x467b3
movq -0x728(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x21, %eax
jne 0x468b0
leaq 0x2be63(%rip), %rdi     # 0x72630
leaq 0x8370(%rip), %rsi      # 0x4eb44
callq 0x52f0
movq %rax, -0x730(%rbp)
jmp 0x467e2
movq -0x730(%rbp), %rdi
leaq -0x28(%rbp), %rsi
callq 0x52b0
movq %rax, -0x738(%rbp)
jmp 0x467fb
movq -0x738(%rbp), %rdi
leaq 0x83ed(%rip), %rsi      # 0x4ebf6
callq 0x52f0
movq %rax, -0x740(%rbp)
jmp 0x46817
leaq -0x48(%rbp), %rdi
movq %rdi, -0x748(%rbp)
callq 0x5510
movq -0x748(%rbp), %rsi
movq %rax, %rcx
decq %rcx
leaq -0xf0(%rbp), %rdi
movl $0x1, %edx
callq 0x5340
jmp 0x46847
movq -0x740(%rbp), %rdi
leaq -0xf0(%rbp), %rsi
callq 0x52b0
movq %rax, -0x750(%rbp)
jmp 0x46863
movq -0x750(%rbp), %rdi
leaq 0x73cf(%rip), %rsi      # 0x4dc40
callq 0x52f0
jmp 0x46878
leaq -0xf0(%rbp), %rdi
callq 0x56c0
movl $0x1, -0x84(%rbp)
jmp 0x471ff
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0xf0(%rbp), %rdi
callq 0x56c0
jmp 0x4724a
leaq -0x270(%rbp), %rdi
leaq -0x48(%rbp), %rsi
movl $0x8, %edx
callq 0x55c0
jmp 0x468c7
leaq -0x290(%rbp), %rdi
movq %rdi, -0x758(%rbp)
callq 0x54c0
leaq -0x2b0(%rbp), %rdi
callq 0x54c0
leaq -0x2d0(%rbp), %rdi
callq 0x54c0
movq -0x758(%rbp), %rsi
leaq -0x270(%rbp), %rdi
callq 0x5430
jmp 0x46907
leaq -0x270(%rbp), %rdi
callq 0x5130
movl %eax, -0x75c(%rbp)
jmp 0x4691b
movl -0x75c(%rbp), %eax
cmpl $-0x1, %eax
jne 0x469cc
leaq 0x2bcff(%rip), %rdi     # 0x72630
leaq 0x8213(%rip), %rsi      # 0x4eb4b
callq 0x52f0
movq %rax, -0x768(%rbp)
jmp 0x46946
movq -0x768(%rbp), %rdi
leaq -0x28(%rbp), %rsi
callq 0x52b0
movq %rax, -0x770(%rbp)
jmp 0x4695f
movq -0x770(%rbp), %rdi
leaq 0x8289(%rip), %rsi      # 0x4ebf6
callq 0x52f0
movq %rax, -0x778(%rbp)
jmp 0x4697b
movq -0x778(%rbp), %rdi
leaq -0x290(%rbp), %rsi
callq 0x52b0
movq %rax, -0x780(%rbp)
jmp 0x46997
movq -0x780(%rbp), %rdi
leaq 0x729b(%rip), %rsi      # 0x4dc40
callq 0x52f0
jmp 0x469ac
movl $0x1, -0x84(%rbp)
jmp 0x471cf
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x4721a
leaq -0x270(%rbp), %rdi
leaq -0x2b0(%rbp), %rsi
callq 0x5430
movq %rax, -0x788(%rbp)
jmp 0x469e8
movq -0x788(%rbp), %rdi
leaq -0x2d0(%rbp), %rsi
callq 0x5430
jmp 0x469fd
cmpb $0x0, 0x2c27c(%rip)     # 0x72c80
jne 0x46ca8
leaq 0x2c26f(%rip), %rdi     # 0x72c80
callq 0x5640
cmpl $0x0, %eax
je 0x46ca8
leaq -0x5e0(%rbp), %rdi
movq %rdi, -0x5e8(%rbp)
leaq 0x811c(%rip), %rsi      # 0x4eb50
leaq 0x8117(%rip), %rdx      # 0x4eb52
callq 0x48c70
jmp 0x46a42
leaq -0x5a0(%rbp), %rdi
movq %rdi, -0x5e8(%rbp)
leaq 0x80bb(%rip), %rsi      # 0x4eb12
leaq 0x80f8(%rip), %rdx      # 0x4eb56
callq 0x48c70
jmp 0x46a65
leaq -0x560(%rbp), %rdi
movq %rdi, -0x5e8(%rbp)
leaq 0x80e0(%rip), %rsi      # 0x4eb5a
leaq 0x80db(%rip), %rdx      # 0x4eb5c
callq 0x48c70
jmp 0x46a88
leaq -0x520(%rbp), %rdi
movq %rdi, -0x5e8(%rbp)
leaq 0x6b0c(%rip), %rsi      # 0x4d5a9
leaq 0x80bc(%rip), %rdx      # 0x4eb60
callq 0x48c70
jmp 0x46aab
leaq -0x4e0(%rbp), %rdi
movq %rdi, -0x5e8(%rbp)
leaq 0x80a4(%rip), %rsi      # 0x4eb64
leaq 0x809f(%rip), %rdx      # 0x4eb66
callq 0x48c70
jmp 0x46ace
leaq -0x4a0(%rbp), %rdi
movq %rdi, -0x5e8(%rbp)
leaq 0x8087(%rip), %rsi      # 0x4eb6a
leaq 0x8082(%rip), %rdx      # 0x4eb6c
callq 0x48c70
jmp 0x46af1
leaq -0x460(%rbp), %rdi
movq %rdi, -0x5e8(%rbp)
leaq 0x806a(%rip), %rsi      # 0x4eb70
leaq 0x8065(%rip), %rdx      # 0x4eb72
callq 0x48c70
jmp 0x46b14
leaq -0x420(%rbp), %rdi
movq %rdi, -0x5e8(%rbp)
leaq 0x804d(%rip), %rsi      # 0x4eb76
leaq 0x8042(%rip), %rdx      # 0x4eb72
callq 0x48d50
jmp 0x46b37
leaq -0x3e0(%rbp), %rdi
movq %rdi, -0x5e8(%rbp)
leaq 0x802d(%rip), %rsi      # 0x4eb79
leaq 0x8019(%rip), %rdx      # 0x4eb6c
callq 0x48d50
jmp 0x46b5a
leaq -0x3a0(%rbp), %rdi
movq %rdi, -0x5e8(%rbp)
leaq 0x800d(%rip), %rsi      # 0x4eb7c
leaq 0x631c(%rip), %rdx      # 0x4ce92
callq 0x48e30
jmp 0x46b7d
leaq -0x360(%rbp), %rdi
movq %rdi, -0x5e8(%rbp)
leaq 0x7fed(%rip), %rsi      # 0x4eb7f
leaq 0x7fe9(%rip), %rdx      # 0x4eb82
callq 0x48d50
jmp 0x46ba0
leaq -0x320(%rbp), %rdi
movq %rdi, -0x5e8(%rbp)
leaq 0x7fd1(%rip), %rsi      # 0x4eb86
leaq 0x7fc6(%rip), %rdx      # 0x4eb82
callq 0x48d50
jmp 0x46bc3
leaq -0x5e0(%rbp), %rax
movq %rax, -0x2e0(%rbp)
movq $0xc, -0x2d8(%rbp)
leaq -0x5eb(%rbp), %rdi
movq %rdi, -0x790(%rbp)
callq 0x48f40
movq -0x790(%rbp), %rcx
movq -0x2e0(%rbp), %rsi
movq -0x2d8(%rbp), %rdx
movq %rsp, %rax
movq %rcx, (%rax)
leaq 0x2c037(%rip), %rdi     # 0x72c48
xorl %eax, %eax
movl %eax, %ecx
leaq -0x5e9(%rbp), %r8
leaq -0x5ea(%rbp), %r9
callq 0x48f60
jmp 0x46c2a
leaq -0x5eb(%rbp), %rdi
callq 0x48fc0
leaq -0x5e0(%rbp), %rax
movq %rax, -0x7a0(%rbp)
addq $0x300, %rax            # imm = 0x300
movq %rax, -0x798(%rbp)
movq -0x798(%rbp), %rdi
addq $-0x40, %rdi
movq %rdi, -0x7a8(%rbp)
callq 0x48f10
movq -0x7a0(%rbp), %rcx
movq -0x7a8(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x798(%rbp)
jne 0x46c51
leaq 0x2357(%rip), %rdi      # 0x48fe0
leaq 0x2bfb8(%rip), %rsi     # 0x72c48
leaq 0x2b6c9(%rip), %rdx     # 0x72360
callq 0x52a0
leaq 0x2bfdd(%rip), %rdi     # 0x72c80
callq 0x5210
leaq 0x7eda(%rip), %rsi      # 0x4eb89
leaq -0x2b0(%rbp), %rdi
callq 0x13dd0
movb %al, -0x7a9(%rbp)
jmp 0x46cc3
movb -0x7a9(%rbp), %al
testb $0x1, %al
jne 0x46cd2
jmp 0x46ed5
leaq 0x2b957(%rip), %rdi     # 0x72630
leaq 0x7eac(%rip), %rsi      # 0x4eb8c
callq 0x52f0
movq %rax, -0x7b8(%rbp)
jmp 0x46cee
movq -0x7b8(%rbp), %rdi
leaq -0x28(%rbp), %rsi
callq 0x52b0
movq %rax, -0x7c0(%rbp)
jmp 0x46d07
movq -0x7c0(%rbp), %rdi
leaq 0x7ee1(%rip), %rsi      # 0x4ebf6
callq 0x52f0
movq %rax, -0x7c8(%rbp)
jmp 0x46d23
movq -0x7c8(%rbp), %rdi
leaq -0x290(%rbp), %rsi
callq 0x52b0
movq %rax, -0x7d0(%rbp)
jmp 0x46d3f
movq -0x7d0(%rbp), %rdi
leaq 0x7e45(%rip), %rsi      # 0x4eb92
callq 0x52f0
movq %rax, -0x7d8(%rbp)
jmp 0x46d5b
movq -0x7d8(%rbp), %rdi
leaq -0x2d0(%rbp), %rsi
callq 0x52b0
movq %rax, -0x7e0(%rbp)
jmp 0x46d77
movq -0x7e0(%rbp), %rdi
leaq 0x7e19(%rip), %rsi      # 0x4eb9e
callq 0x52f0
movq %rax, -0x7e8(%rbp)
jmp 0x46d93
movq -0x7e8(%rbp), %rdi
leaq -0x28(%rbp), %rsi
callq 0x52b0
movq %rax, -0x7f0(%rbp)
jmp 0x46dac
movq -0x7f0(%rbp), %rdi
leaq 0x7e3c(%rip), %rsi      # 0x4ebf6
callq 0x52f0
movq %rax, -0x7f8(%rbp)
jmp 0x46dc8
movq -0x7f8(%rbp), %rdi
leaq -0x28(%rbp), %rsi
callq 0x52b0
movq %rax, -0x800(%rbp)
jmp 0x46de1
movq -0x800(%rbp), %rdi
leaq 0x7e67(%rip), %rsi      # 0x4ec56
callq 0x52f0
jmp 0x46df6
movl $0x1, -0x84(%rbp)
jmp 0x471cf
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
movq -0x5e8(%rbp), %rax
leaq -0x5e0(%rbp), %rcx
cmpq %rax, %rcx
movq %rax, -0x808(%rbp)
je 0x46e5c
movq -0x808(%rbp), %rdi
addq $-0x40, %rdi
movq %rdi, -0x810(%rbp)
callq 0x48f10
movq -0x810(%rbp), %rax
leaq -0x5e0(%rbp), %rcx
cmpq %rcx, %rax
movq %rax, -0x808(%rbp)
jne 0x46e2b
jmp 0x46ec4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x5eb(%rbp), %rdi
callq 0x48fc0
leaq -0x5e0(%rbp), %rax
movq %rax, -0x820(%rbp)
addq $0x300, %rax            # imm = 0x300
movq %rax, -0x818(%rbp)
movq -0x818(%rbp), %rdi
addq $-0x40, %rdi
movq %rdi, -0x828(%rbp)
callq 0x48f10
movq -0x820(%rbp), %rcx
movq -0x828(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x818(%rbp)
jne 0x46e91
jmp 0x46ec4
leaq 0x2bdb5(%rip), %rdi     # 0x72c80
callq 0x5200
jmp 0x4721a
leaq 0x2b754(%rip), %rdi     # 0x72630
leaq 0x7d7c(%rip), %rsi      # 0x4ec5f
callq 0x52f0
movq %rax, -0x830(%rbp)
jmp 0x46ef1
leaq 0x2bd50(%rip), %rdi     # 0x72c48
leaq -0x2b0(%rbp), %rsi
callq 0x49000
movq %rax, -0x838(%rbp)
jmp 0x46f0d
movq -0x838(%rbp), %rsi
movq -0x830(%rbp), %rdi
callq 0x52b0
movq %rax, -0x840(%rbp)
jmp 0x46f29
movq -0x840(%rbp), %rdi
leaq 0x7d28(%rip), %rsi      # 0x4ec5f
callq 0x52f0
movq %rax, -0x848(%rbp)
jmp 0x46f45
movq -0x848(%rbp), %rdi
leaq -0x28(%rbp), %rsi
callq 0x52b0
movq %rax, -0x850(%rbp)
jmp 0x46f5e
movq -0x850(%rbp), %rdi
leaq 0x7c8a(%rip), %rsi      # 0x4ebf6
callq 0x52f0
movq %rax, -0x858(%rbp)
jmp 0x46f7a
movq -0x858(%rbp), %rdi
leaq -0x290(%rbp), %rsi
callq 0x52b0
movq %rax, -0x860(%rbp)
jmp 0x46f96
movq -0x860(%rbp), %rdi
leaq 0x7c52(%rip), %rsi      # 0x4ebf6
callq 0x52f0
movq %rax, -0x868(%rbp)
jmp 0x46fb2
movq -0x868(%rbp), %rdi
leaq -0x2d0(%rbp), %rsi
callq 0x52b0
movq %rax, -0x870(%rbp)
jmp 0x46fce
movq -0x870(%rbp), %rdi
leaq 0x6c64(%rip), %rsi      # 0x4dc40
callq 0x52f0
jmp 0x46fe3
leaq 0x7b8c(%rip), %rsi      # 0x4eb76
leaq -0x2b0(%rbp), %rdi
callq 0x13dd0
movb %al, -0x871(%rbp)
jmp 0x46ffe
movb -0x871(%rbp), %al
testb $0x1, %al
jne 0x4705b
jmp 0x4700a
leaq 0x7b68(%rip), %rsi      # 0x4eb79
leaq -0x2b0(%rbp), %rdi
callq 0x13dd0
movb %al, -0x872(%rbp)
jmp 0x47025
movb -0x872(%rbp), %al
testb $0x1, %al
jne 0x4705b
jmp 0x47031
leaq 0x7b4e(%rip), %rsi      # 0x4eb86
leaq -0x2b0(%rbp), %rdi
callq 0x13dd0
movb %al, -0x873(%rbp)
jmp 0x4704c
movb -0x873(%rbp), %al
testb $0x1, %al
jne 0x4705b
jmp 0x470e9
leaq 0x2b5ce(%rip), %rdi     # 0x72630
leaq 0x7adb(%rip), %rsi      # 0x4eb44
callq 0x52f0
movq %rax, -0x880(%rbp)
jmp 0x47077
movq -0x880(%rbp), %rdi
leaq -0x28(%rbp), %rsi
callq 0x52b0
movq %rax, -0x888(%rbp)
jmp 0x47090
movq -0x888(%rbp), %rdi
leaq 0x7b58(%rip), %rsi      # 0x4ebf6
callq 0x52f0
movq %rax, -0x890(%rbp)
jmp 0x470ac
movq -0x890(%rbp), %rdi
leaq -0x28(%rbp), %rsi
callq 0x52b0
movq %rax, -0x898(%rbp)
jmp 0x470c5
movq -0x898(%rbp), %rdi
leaq 0x6b6d(%rip), %rsi      # 0x4dc40
callq 0x52f0
jmp 0x470da
movl $0x1, -0x84(%rbp)
jmp 0x471cf
leaq 0x7a8c(%rip), %rsi      # 0x4eb7c
leaq -0x2b0(%rbp), %rdi
callq 0x13dd0
movb %al, -0x899(%rbp)
jmp 0x47104
movb -0x899(%rbp), %al
testb $0x1, %al
jne 0x4713a
jmp 0x47110
leaq 0x7a68(%rip), %rsi      # 0x4eb7f
leaq -0x2b0(%rbp), %rdi
callq 0x13dd0
movb %al, -0x89a(%rbp)
jmp 0x4712b
movb -0x89a(%rbp), %al
testb $0x1, %al
jne 0x4713a
jmp 0x471c5
leaq 0x2b4ef(%rip), %rdi     # 0x72630
leaq 0x7a5d(%rip), %rsi      # 0x4eba5
callq 0x52f0
movq %rax, -0x8a8(%rbp)
jmp 0x47156
movq -0x8a8(%rbp), %rdi
leaq -0x28(%rbp), %rsi
callq 0x52b0
movq %rax, -0x8b0(%rbp)
jmp 0x4716f
movq -0x8b0(%rbp), %rdi
leaq 0x7a79(%rip), %rsi      # 0x4ebf6
callq 0x52f0
movq %rax, -0x8b8(%rbp)
jmp 0x4718b
movq -0x8b8(%rbp), %rdi
leaq -0x28(%rbp), %rsi
callq 0x52b0
movq %rax, -0x8c0(%rbp)
jmp 0x471a4
movq -0x8c0(%rbp), %rdi
leaq 0x6a8e(%rip), %rsi      # 0x4dc40
callq 0x52f0
jmp 0x471b9
movl $0x1, -0x84(%rbp)
jmp 0x471cf
movl $0x0, -0x84(%rbp)
leaq -0x2d0(%rbp), %rdi
callq 0x56c0
leaq -0x2b0(%rbp), %rdi
callq 0x56c0
leaq -0x290(%rbp), %rdi
callq 0x56c0
leaq -0x270(%rbp), %rdi
callq 0x56b8
leaq -0x48(%rbp), %rdi
callq 0x56c0
leaq -0x28(%rbp), %rdi
callq 0x56c0
addq $0x8d0, %rsp            # imm = 0x8D0
popq %rbp
retq
leaq -0x2d0(%rbp), %rdi
callq 0x56c0
leaq -0x2b0(%rbp), %rdi
callq 0x56c0
leaq -0x290(%rbp), %rdi
callq 0x56c0
leaq -0x270(%rbp), %rdi
callq 0x56b8
leaq -0x48(%rbp), %rdi
callq 0x56c0
leaq -0x28(%rbp), %rdi
callq 0x56c0
movq -0x50(%rbp), %rdi
callq 0x5610
nopw %cs:(%rax,%rax)