// File: gioannides[P]Language_Processors/src/../include/ast/class_forward_declarations.hpp
// Function: CastToType(std::basic_ofstream<char, std::char_traits<char>>&, Context&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>)
inline void CastToType(std::ofstream& file, Context& contxt, std::string IDENTIFIER) {
	int i,j;
	for(i=contxt.Variables.size()-1; i>=0; i--) {
				for (j=contxt.Scopes.size()-1; j>=0; j--)
				{
					if(contxt.Variables[i].scope == contxt.Scopes[j] && IDENTIFIER == contxt.Variables[i].id) 
					{
						
					if(contxt.Variables[i].DataType == contxt.CastType){
						//do nothing
					}
					else if(contxt.Variables[i].DataType == "float" && contxt.CastType == "short" ){
						
						file << std::endl << "\t.set macro\t";
						file << std::endl << "\ttrunc.w.s\t$f" << contxt.Regs+1 << ",$f" << contxt.Regs+1 << ",$" << contxt.Regs+1;
						file << std::endl << "\t.set nomacro\t";
						file << std::endl << "\tmfc1\t$" << contxt.Regs+1 << "," << "$f" << contxt.Regs+1;
						file << std::endl << "\tnop" << std::endl;
						file << std::endl << "\tsll\t$" << contxt.Regs+1 << "," << "$" << contxt.Regs+1 << ",16";
						file << std::endl << "\tsra\t$" << contxt.Regs+1 << "," << "$" << contxt.Regs+1 << ",16";
						file << std::endl << "\tmtc1\t$" << contxt.Regs+1 << "," << "$f" << contxt.Regs+1;
						file << std::endl << "\tnop" << std::endl;
						file << std::endl << "\tcvt.s.w\t$f" << contxt.Regs+1 << ",$f" << contxt.Regs+1;
						file << std::endl << "\tnop" << std::endl;
						contxt.regType[contxt.Regs+1]='f';
						
					}
					else if(contxt.Variables[i].DataType == "float" && contxt.CastType == "char" ){
						
						file << std::endl << "\t.set macro\t";
						file << std::endl << "\ttrunc.w.s\t$f" << contxt.Regs+1 << ",$f" << contxt.Regs+1 << ",$" << contxt.Regs+1;
						file << std::endl << "\t.set nomacro\t";
						file << std::endl << "\tmfc1\t$" << contxt.Regs+1 << "," << "$f" << contxt.Regs+1;
						file << std::endl << "\tnop" << std::endl;
						file << std::endl << "\tsll\t$" << contxt.Regs+1 << "," << "$" << contxt.Regs+1 << ",24";
						file << std::endl << "\tsra\t$" << contxt.Regs+1 << "," << "$" << contxt.Regs+1 << ",24";
						file << std::endl << "\tmtc1\t$" << contxt.Regs+1 << "," << "$f" << contxt.Regs+1;
						file << std::endl << "\tnop" << std::endl;
						file << std::endl << "\tcvt.s.w\t$f" << contxt.Regs+1 << ",$f" << contxt.Regs+1;
						file << std::endl << "\tnop" << std::endl;
						contxt.regType[contxt.Regs+1]='f';
						
					}
					else if(contxt.Variables[i].DataType == "float" && (contxt.CastType == "int" || contxt.CastType == "unsigned" || contxt.CastType == "signed") ){
						
						file << std::endl << "\tcvt.w.s\t$f" << contxt.Regs+1 << ",$f" << contxt.Regs+1;
						file << std::endl << "\tnop" << std::endl;
						contxt.regType[contxt.Regs+1]='f';
						
					}
					else if( (contxt.Variables[i].DataType == "short" || contxt.Variables[i].DataType == "int" || contxt.Variables[i].DataType == "unsigned" ||contxt.Variables[i].DataType == "char" || contxt.Variables[i].DataType == "signed") && contxt.CastType == "float" ){
						
						file << std::endl << "\tmtc1\t$" << contxt.Regs+1 << "," << "$f" << contxt.Regs+1;
						file << std::endl << "\tnop" << std::endl;
						file << std::endl << "\tcvt.s.w\t$f" << contxt.Regs+1 << ",$f" << contxt.Regs+1;
						file << std::endl << "\tnop" << std::endl;
						contxt.regType[contxt.Regs+1]='f';
						
					}

					else if(contxt.Variables[i].DataType == "int" && contxt.CastType == "short" ){
						
						file << std::endl << "\tsll\t$" << contxt.Regs+1 << ",$" << contxt.Regs+1 << ",16";
						file << std::endl << "\tsra\t$" << contxt.Regs+1 << ",$" << contxt.Regs+1 << ",16";
						contxt.regType[contxt.Regs+1]='i';
						
					}
					else if(contxt.Variables[i].DataType == "int" && contxt.CastType == "char" ){
						
						file << std::endl << "\tsll\t$" << contxt.Regs+1 << ",$" << contxt.Regs+1 << ",24";
						file << std::endl << "\tsra\t$" << contxt.Regs+1 << ",$" << contxt.Regs+1 << ",24";
						contxt.regType[contxt.Regs+1]='c';
						
					}
					else if(contxt.Variables[i].DataType == "short" && contxt.CastType == "char" ){
						
						file << std::endl << "\tsll\t$" << contxt.Regs+1 << ",$" << contxt.Regs+1 << ",24";
						file << std::endl << "\tsra\t$" << contxt.Regs+1 << ",$" << contxt.Regs+1 << ",24";
						file << std::endl << "\tsll\t$" << contxt.Regs+1 << ",$" << contxt.Regs+1 << ",16";
						file << std::endl << "\tsra\t$" << contxt.Regs+1 << ",$" << contxt.Regs+1 << ",16";
						contxt.regType[contxt.Regs+1]='c';
						
					}
						i = -1;
						j = -1;
			}									
		}
	  }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movq %rdx, -0x28(%rbp)
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq -0x10(%rbp), %rdi
addq $0x240, %rdi            # imm = 0x240
callq 0xfd20
subq $0x1, %rax
movl %eax, -0x1c(%rbp)
cmpl $0x0, -0x1c(%rbp)
jl 0x27c2f
movq -0x10(%rbp), %rdi
addq $0x460, %rdi            # imm = 0x460
callq 0xbef0
subq $0x1, %rax
movl %eax, -0x20(%rbp)
cmpl $0x0, -0x20(%rbp)
jl 0x27c1f
movq -0x10(%rbp), %rdi
addq $0x240, %rdi            # imm = 0x240
movslq -0x1c(%rbp), %rsi
callq 0xfde0
addq $0x30, %rax
movq %rax, -0x30(%rbp)
movq -0x10(%rbp), %rdi
addq $0x460, %rdi            # imm = 0x460
movslq -0x20(%rbp), %rsi
callq 0xbf10
movq -0x30(%rbp), %rdi
movq %rax, %rsi
callq 0xfd50
testb $0x1, %al
jne 0x26c0f
jmp 0x27c0f
movq -0x10(%rbp), %rdi
addq $0x240, %rdi            # imm = 0x240
movslq -0x1c(%rbp), %rsi
callq 0xfde0
movq -0x28(%rbp), %rdi
movq %rax, %rsi
addq $0x8, %rsi
callq 0xfd50
testb $0x1, %al
jne 0x26c3c
jmp 0x27c0f
movq -0x10(%rbp), %rdi
addq $0x240, %rdi            # imm = 0x240
movslq -0x1c(%rbp), %rsi
callq 0xfde0
movq %rax, %rdi
addq $0x58, %rdi
movq -0x10(%rbp), %rsi
addq $0x98, %rsi
callq 0xfd50
testb $0x1, %al
jne 0x26c6d
jmp 0x26c72
jmp 0x27c01
movq -0x10(%rbp), %rdi
addq $0x240, %rdi            # imm = 0x240
movslq -0x1c(%rbp), %rsi
callq 0xfde0
movq %rax, %rdi
addq $0x58, %rdi
leaq 0x3d6b0(%rip), %rsi     # 0x64344
callq 0x9e30
testb $0x1, %al
jne 0x26ca2
jmp 0x27039
movq -0x10(%rbp), %rdi
addq $0x98, %rdi
leaq 0x3d6ba(%rip), %rsi     # 0x6436e
callq 0x9e30
testb $0x1, %al
jne 0x26cc2
jmp 0x27039
movq -0x8(%rbp), %rdi
movq 0x612a3(%rip), %rsi     # 0x87f70
callq 0x8450
movq %rax, %rdi
leaq 0x3dc3a(%rip), %rsi     # 0x64916
callq 0x8400
movq -0x8(%rbp), %rdi
movq 0x61284(%rip), %rsi     # 0x87f70
callq 0x8450
movq %rax, %rdi
leaq 0x3dbc7(%rip), %rsi     # 0x648c2
callq 0x8400
movq %rax, %rdi
movq -0x10(%rbp), %rax
movl 0x310(%rax), %esi
addl $0x1, %esi
callq 0x8730
movq %rax, %rdi
leaq 0x3d815(%rip), %rsi     # 0x64534
callq 0x8400
movq %rax, %rdi
movq -0x10(%rbp), %rax
movl 0x310(%rax), %esi
addl $0x1, %esi
callq 0x8730
movq %rax, %rdi
leaq 0x3d7ad(%rip), %rsi     # 0x644f0
callq 0x8400
movq %rax, %rdi
movq -0x10(%rbp), %rax
movl 0x310(%rax), %esi
addl $0x1, %esi
callq 0x8730
movq -0x8(%rbp), %rdi
movq 0x61208(%rip), %rsi     # 0x87f70
callq 0x8450
movq %rax, %rdi
leaq 0x3dbac(%rip), %rsi     # 0x64923
callq 0x8400
movq -0x8(%rbp), %rdi
movq 0x611e9(%rip), %rsi     # 0x87f70
callq 0x8450
movq %rax, %rdi
leaq 0x3db3a(%rip), %rsi     # 0x648d0
callq 0x8400
movq %rax, %rdi
movq -0x10(%rbp), %rax
movl 0x310(%rax), %esi
addl $0x1, %esi
callq 0x8730
movq %rax, %rdi
leaq 0x3d683(%rip), %rsi     # 0x6443d
callq 0x8400
movq %rax, %rdi
leaq 0x3db4a(%rip), %rsi     # 0x64913
callq 0x8400
movq %rax, %rdi
movq -0x10(%rbp), %rax
movl 0x310(%rax), %esi
addl $0x1, %esi
callq 0x8730
movq -0x8(%rbp), %rdi
movq 0x61182(%rip), %rsi     # 0x87f70
callq 0x8450
movq %rax, %rdi
leaq 0x3d5b4(%rip), %rsi     # 0x643b1
callq 0x8400
movq %rax, %rdi
movq 0x61164(%rip), %rsi     # 0x87f70
callq 0x8450
movq -0x8(%rbp), %rdi
movq 0x61154(%rip), %rsi     # 0x87f70
callq 0x8450
movq %rax, %rdi
leaq 0x3db07(%rip), %rsi     # 0x64932
callq 0x8400
movq %rax, %rdi
movq -0x10(%rbp), %rax
movl 0x310(%rax), %esi
addl $0x1, %esi
callq 0x8730
movq %rax, %rdi
leaq 0x3d5ee(%rip), %rsi     # 0x6443d
callq 0x8400
movq %rax, %rdi
leaq 0x3da78(%rip), %rsi     # 0x648d6
callq 0x8400
movq %rax, %rdi
movq -0x10(%rbp), %rax
movl 0x310(%rax), %esi
addl $0x1, %esi
callq 0x8730
movq %rax, %rdi
leaq 0x3dab7(%rip), %rsi     # 0x64939
callq 0x8400
movq -0x8(%rbp), %rdi
movq 0x610de(%rip), %rsi     # 0x87f70
callq 0x8450
movq %rax, %rdi
leaq 0x3da9c(%rip), %rsi     # 0x6493d
callq 0x8400
movq %rax, %rdi
movq -0x10(%rbp), %rax
movl 0x310(%rax), %esi
addl $0x1, %esi
callq 0x8730
movq %rax, %rdi
leaq 0x3d578(%rip), %rsi     # 0x6443d
callq 0x8400
movq %rax, %rdi
leaq 0x3da02(%rip), %rsi     # 0x648d6
callq 0x8400
movq %rax, %rdi
movq -0x10(%rbp), %rax
movl 0x310(%rax), %esi
addl $0x1, %esi
callq 0x8730
movq %rax, %rdi
leaq 0x3da41(%rip), %rsi     # 0x64939
callq 0x8400
movq -0x8(%rbp), %rdi
movq 0x61068(%rip), %rsi     # 0x87f70
callq 0x8450
movq %rax, %rdi
leaq 0x3d96a(%rip), %rsi     # 0x64881
callq 0x8400
movq %rax, %rdi
movq -0x10(%rbp), %rax
movl 0x310(%rax), %esi
addl $0x1, %esi
callq 0x8730
movq %rax, %rdi
leaq 0x3d502(%rip), %rsi     # 0x6443d
callq 0x8400
movq %rax, %rdi
leaq 0x3d9c9(%rip), %rsi     # 0x64913
callq 0x8400
movq %rax, %rdi
movq -0x10(%rbp), %rax
movl 0x310(%rax), %esi
addl $0x1, %esi
callq 0x8730
movq -0x8(%rbp), %rdi
movq 0x61001(%rip), %rsi     # 0x87f70
callq 0x8450
movq %rax, %rdi
leaq 0x3d433(%rip), %rsi     # 0x643b1
callq 0x8400
movq %rax, %rdi
movq 0x60fe3(%rip), %rsi     # 0x87f70
callq 0x8450
movq -0x8(%rbp), %rdi
movq 0x60fd3(%rip), %rsi     # 0x87f70
callq 0x8450
movq %rax, %rdi
leaq 0x3d932(%rip), %rsi     # 0x648de
callq 0x8400
movq %rax, %rdi
movq -0x10(%rbp), %rax
movl 0x310(%rax), %esi
addl $0x1, %esi
callq 0x8730
movq %rax, %rdi
leaq 0x3d564(%rip), %rsi     # 0x64534
callq 0x8400
movq %rax, %rdi
movq -0x10(%rbp), %rax
movl 0x310(%rax), %esi
addl $0x1, %esi
callq 0x8730
movq -0x8(%rbp), %rdi
movq 0x60f7b(%rip), %rsi     # 0x87f70
callq 0x8450
movq %rax, %rdi
leaq 0x3d3ad(%rip), %rsi     # 0x643b1
callq 0x8400
movq %rax, %rdi
movq 0x60f5d(%rip), %rsi     # 0x87f70
callq 0x8450
movq -0x10(%rbp), %rax
movq -0x10(%rbp), %rcx
movl 0x310(%rcx), %ecx
addl $0x1, %ecx
movslq %ecx, %rcx
movb $0x66, 0x341(%rax,%rcx)
jmp 0x27bff
movq -0x10(%rbp), %rdi
addq $0x240, %rdi            # imm = 0x240
movslq -0x1c(%rbp), %rsi
callq 0xfde0
movq %rax, %rdi
addq $0x58, %rdi
leaq 0x3d2e9(%rip), %rsi     # 0x64344
callq 0x9e30
testb $0x1, %al
jne 0x27069
jmp 0x27400
movq -0x10(%rbp), %rdi
addq $0x98, %rdi
leaq 0x3d2e8(%rip), %rsi     # 0x64363
callq 0x9e30
testb $0x1, %al
jne 0x27089
jmp 0x27400
movq -0x8(%rbp), %rdi
movq 0x60edc(%rip), %rsi     # 0x87f70
callq 0x8450
movq %rax, %rdi
leaq 0x3d873(%rip), %rsi     # 0x64916
callq 0x8400
movq -0x8(%rbp), %rdi
movq 0x60ebd(%rip), %rsi     # 0x87f70
callq 0x8450
movq %rax, %rdi
leaq 0x3d800(%rip), %rsi     # 0x648c2
callq 0x8400
movq %rax, %rdi
movq -0x10(%rbp), %rax
movl 0x310(%rax), %esi
addl $0x1, %esi
callq 0x8730
movq %rax, %rdi
leaq 0x3d44e(%rip), %rsi     # 0x64534
callq 0x8400
movq %rax, %rdi
movq -0x10(%rbp), %rax
movl 0x310(%rax), %esi
addl $0x1, %esi
callq 0x8730
movq %rax, %rdi
leaq 0x3d3e6(%rip), %rsi     # 0x644f0
callq 0x8400
movq %rax, %rdi
movq -0x10(%rbp), %rax
movl 0x310(%rax), %esi
addl $0x1, %esi
callq 0x8730
movq -0x8(%rbp), %rdi
movq 0x60e41(%rip), %rsi     # 0x87f70
callq 0x8450
movq %rax, %rdi
leaq 0x3d7e5(%rip), %rsi     # 0x64923
callq 0x8400
movq -0x8(%rbp), %rdi
movq 0x60e22(%rip), %rsi     # 0x87f70
callq 0x8450
movq %rax, %rdi
leaq 0x3d773(%rip), %rsi     # 0x648d0
callq 0x8400
movq %rax, %rdi
movq -0x10(%rbp), %rax
movl 0x310(%rax), %esi
addl $0x1, %esi
callq 0x8730
movq %rax, %rdi
leaq 0x3d2bc(%rip), %rsi     # 0x6443d
callq 0x8400
movq %rax, %rdi
leaq 0x3d783(%rip), %rsi     # 0x64913
callq 0x8400
movq %rax, %rdi
movq -0x10(%rbp), %rax
movl 0x310(%rax), %esi
addl $0x1, %esi
callq 0x8730
movq -0x8(%rbp), %rdi
movq 0x60dbb(%rip), %rsi     # 0x87f70
callq 0x8450
movq %rax, %rdi
leaq 0x3d1ed(%rip), %rsi     # 0x643b1
callq 0x8400
movq %rax, %rdi
movq 0x60d9d(%rip), %rsi     # 0x87f70
callq 0x8450
movq -0x8(%rbp), %rdi
movq 0x60d8d(%rip), %rsi     # 0x87f70
callq 0x8450
movq %rax, %rdi
leaq 0x3d740(%rip), %rsi     # 0x64932
callq 0x8400
movq %rax, %rdi
movq -0x10(%rbp), %rax
movl 0x310(%rax), %esi
addl $0x1, %esi
callq 0x8730
movq %rax, %rdi
leaq 0x3d227(%rip), %rsi     # 0x6443d
callq 0x8400
movq %rax, %rdi
leaq 0x3d6b1(%rip), %rsi     # 0x648d6
callq 0x8400
movq %rax, %rdi
movq -0x10(%rbp), %rax
movl 0x310(%rax), %esi
addl $0x1, %esi
callq 0x8730
movq %rax, %rdi
leaq 0x3d6fb(%rip), %rsi     # 0x64944
callq 0x8400
movq -0x8(%rbp), %rdi
movq 0x60d17(%rip), %rsi     # 0x87f70
callq 0x8450
movq %rax, %rdi
leaq 0x3d6d5(%rip), %rsi     # 0x6493d
callq 0x8400
movq %rax, %rdi
movq -0x10(%rbp), %rax
movl 0x310(%rax), %esi
addl $0x1, %esi
callq 0x8730
movq %rax, %rdi
leaq 0x3d1b1(%rip), %rsi     # 0x6443d
callq 0x8400
movq %rax, %rdi
leaq 0x3d63b(%rip), %rsi     # 0x648d6
callq 0x8400
movq %rax, %rdi
movq -0x10(%rbp), %rax
movl 0x310(%rax), %esi
addl $0x1, %esi
callq 0x8730
movq %rax, %rdi
leaq 0x3d685(%rip), %rsi     # 0x64944
callq 0x8400
movq -0x8(%rbp), %rdi
movq 0x60ca1(%rip), %rsi     # 0x87f70
callq 0x8450
movq %rax, %rdi
leaq 0x3d5a3(%rip), %rsi     # 0x64881
callq 0x8400
movq %rax, %rdi
movq -0x10(%rbp), %rax
movl 0x310(%rax), %esi
addl $0x1, %esi
callq 0x8730
movq %rax, %rdi
leaq 0x3d13b(%rip), %rsi     # 0x6443d
callq 0x8400
movq %rax, %rdi
leaq 0x3d602(%rip), %rsi     # 0x64913
callq 0x8400
movq %rax, %rdi
movq -0x10(%rbp), %rax
movl 0x310(%rax), %esi
addl $0x1, %esi
callq 0x8730
movq -0x8(%rbp), %rdi
movq 0x60c3a(%rip), %rsi     # 0x87f70
callq 0x8450
movq %rax, %rdi
leaq 0x3d06c(%rip), %rsi     # 0x643b1
callq 0x8400
movq %rax, %rdi
movq 0x60c1c(%rip), %rsi     # 0x87f70
callq 0x8450
movq -0x8(%rbp), %rdi
movq 0x60c0c(%rip), %rsi     # 0x87f70
callq 0x8450
movq %rax, %rdi
leaq 0x3d56b(%rip), %rsi     # 0x648de
callq 0x8400
movq %rax, %rdi
movq -0x10(%rbp), %rax
movl 0x310(%rax), %esi
addl $0x1, %esi
callq 0x8730
movq %rax, %rdi
leaq 0x3d19d(%rip), %rsi     # 0x64534
callq 0x8400
movq %rax, %rdi
movq -0x10(%rbp), %rax
movl 0x310(%rax), %esi
addl $0x1, %esi
callq 0x8730
movq -0x8(%rbp), %rdi
movq 0x60bb4(%rip), %rsi     # 0x87f70
callq 0x8450
movq %rax, %rdi
leaq 0x3cfe6(%rip), %rsi     # 0x643b1
callq 0x8400
movq %rax, %rdi
movq 0x60b96(%rip), %rsi     # 0x87f70
callq 0x8450
movq -0x10(%rbp), %rax
movq -0x10(%rbp), %rcx
movl 0x310(%rcx), %ecx
addl $0x1, %ecx
movslq %ecx, %rcx
movb $0x66, 0x341(%rax,%rcx)
jmp 0x27bfd
movq -0x10(%rbp), %rdi
addq $0x240, %rdi            # imm = 0x240
movslq -0x1c(%rbp), %rsi
callq 0xfde0
movq %rax, %rdi
addq $0x58, %rdi
leaq 0x3cf22(%rip), %rsi     # 0x64344
callq 0x9e30
testb $0x1, %al
jne 0x27430
jmp 0x2752d
movq -0x10(%rbp), %rdi
addq $0x98, %rdi
leaq 0x3db09(%rip), %rsi     # 0x64f4b
callq 0x9e30
testb $0x1, %al
jne 0x27486
movq -0x10(%rbp), %rdi
addq $0x98, %rdi
leaq 0x3cfb2(%rip), %rsi     # 0x6440f
callq 0x9e30
testb $0x1, %al
jne 0x27486
movq -0x10(%rbp), %rdi
addq $0x98, %rdi
leaq 0x3cf99(%rip), %rsi     # 0x64411
callq 0x9e30
testb $0x1, %al
jne 0x27486
jmp 0x2752d
movq -0x8(%rbp), %rdi
movq 0x60adf(%rip), %rsi     # 0x87f70
callq 0x8450
movq %rax, %rdi
leaq 0x3d00a(%rip), %rsi     # 0x644aa
callq 0x8400
movq %rax, %rdi
movq -0x10(%rbp), %rax
movl 0x310(%rax), %esi
addl $0x1, %esi
callq 0x8730
movq %rax, %rdi
leaq 0x3d070(%rip), %rsi     # 0x64534
callq 0x8400
movq %rax, %rdi
movq -0x10(%rbp), %rax
movl 0x310(%rax), %esi
addl $0x1, %esi
callq 0x8730
movq -0x8(%rbp), %rdi
movq 0x60a87(%rip), %rsi     # 0x87f70
callq 0x8450
movq %rax, %rdi
leaq 0x3ceb9(%rip), %rsi     # 0x643b1
callq 0x8400
movq %rax, %rdi
movq 0x60a69(%rip), %rsi     # 0x87f70
callq 0x8450
movq -0x10(%rbp), %rax
movq -0x10(%rbp), %rcx
movl 0x310(%rcx), %ecx
addl $0x1, %ecx
movslq %ecx, %rcx
movb $0x66, 0x341(%rax,%rcx)
jmp 0x27bfb
movq -0x10(%rbp), %rdi
addq $0x240, %rdi            # imm = 0x240
movslq -0x1c(%rbp), %rsi
callq 0xfde0
movq %rax, %rdi
addq $0x58, %rdi
leaq 0x3ce1f(%rip), %rsi     # 0x6436e
callq 0x9e30
testb $0x1, %al
jne 0x27611
movq -0x10(%rbp), %rdi
addq $0x240, %rdi            # imm = 0x240
movslq -0x1c(%rbp), %rsi
callq 0xfde0
movq %rax, %rdi
addq $0x58, %rdi
leaq 0x3d9cd(%rip), %rsi     # 0x64f4b
callq 0x9e30
testb $0x1, %al
jne 0x27611
movq -0x10(%rbp), %rdi
addq $0x240, %rdi            # imm = 0x240
movslq -0x1c(%rbp), %rsi
callq 0xfde0
movq %rax, %rdi
addq $0x58, %rdi
leaq 0x3ce62(%rip), %rsi     # 0x6440f
callq 0x9e30
testb $0x1, %al
jne 0x27611
movq -0x10(%rbp), %rdi
addq $0x240, %rdi            # imm = 0x240
movslq -0x1c(%rbp), %rsi
callq 0xfde0
movq %rax, %rdi
addq $0x58, %rdi
leaq 0x3cd8b(%rip), %rsi     # 0x64363
callq 0x9e30
testb $0x1, %al
jne 0x27611
movq -0x10(%rbp), %rdi
addq $0x240, %rdi            # imm = 0x240
movslq -0x1c(%rbp), %rsi
callq 0xfde0
movq %rax, %rdi
addq $0x58, %rdi
leaq 0x3ce0e(%rip), %rsi     # 0x64411
callq 0x9e30
testb $0x1, %al
jne 0x27611
jmp 0x2776d
movq -0x10(%rbp), %rdi
addq $0x98, %rdi
leaq 0x3cd21(%rip), %rsi     # 0x64344
callq 0x9e30
testb $0x1, %al
jne 0x27631
jmp 0x2776d
movq -0x8(%rbp), %rdi
movq 0x60934(%rip), %rsi     # 0x87f70
callq 0x8450
movq %rax, %rdi
leaq 0x3d236(%rip), %rsi     # 0x64881
callq 0x8400
movq %rax, %rdi
movq -0x10(%rbp), %rax
movl 0x310(%rax), %esi
addl $0x1, %esi
callq 0x8730
movq %rax, %rdi
leaq 0x3cdce(%rip), %rsi     # 0x6443d
callq 0x8400
movq %rax, %rdi
leaq 0x3d295(%rip), %rsi     # 0x64913
callq 0x8400
movq %rax, %rdi
movq -0x10(%rbp), %rax
movl 0x310(%rax), %esi
addl $0x1, %esi
callq 0x8730
movq -0x8(%rbp), %rdi
movq 0x608cd(%rip), %rsi     # 0x87f70
callq 0x8450
movq %rax, %rdi
leaq 0x3ccff(%rip), %rsi     # 0x643b1
callq 0x8400
movq %rax, %rdi
movq 0x608af(%rip), %rsi     # 0x87f70
callq 0x8450
movq -0x8(%rbp), %rdi
movq 0x6089f(%rip), %rsi     # 0x87f70
callq 0x8450
movq %rax, %rdi
leaq 0x3d1fe(%rip), %rsi     # 0x648de
callq 0x8400
movq %rax, %rdi
movq -0x10(%rbp), %rax
movl 0x310(%rax), %esi
addl $0x1, %esi
callq 0x8730
movq %rax, %rdi
leaq 0x3ce30(%rip), %rsi     # 0x64534
callq 0x8400
movq %rax, %rdi
movq -0x10(%rbp), %rax
movl 0x310(%rax), %esi
addl $0x1, %esi
callq 0x8730
movq -0x8(%rbp), %rdi
movq 0x60847(%rip), %rsi     # 0x87f70
callq 0x8450
movq %rax, %rdi
leaq 0x3cc79(%rip), %rsi     # 0x643b1
callq 0x8400
movq %rax, %rdi
movq 0x60829(%rip), %rsi     # 0x87f70
callq 0x8450
movq -0x10(%rbp), %rax
movq -0x10(%rbp), %rcx
movl 0x310(%rcx), %ecx
addl $0x1, %ecx
movslq %ecx, %rcx
movb $0x66, 0x341(%rax,%rcx)
jmp 0x27bf9
movq -0x10(%rbp), %rdi
addq $0x240, %rdi            # imm = 0x240
movslq -0x1c(%rbp), %rsi
callq 0xfde0
movq %rax, %rdi
addq $0x58, %rdi
leaq 0x3d7bc(%rip), %rsi     # 0x64f4b
callq 0x9e30
testb $0x1, %al
jne 0x2779d
jmp 0x278ac
movq -0x10(%rbp), %rdi
addq $0x98, %rdi
leaq 0x3cbbf(%rip), %rsi     # 0x6436e
callq 0x9e30
testb $0x1, %al
jne 0x277bd
jmp 0x278ac
movq -0x8(%rbp), %rdi
movq 0x607a8(%rip), %rsi     # 0x87f70
callq 0x8450
movq %rax, %rdi
leaq 0x3d15b(%rip), %rsi     # 0x64932
callq 0x8400
movq %rax, %rdi
movq -0x10(%rbp), %rax
movl 0x310(%rax), %esi
addl $0x1, %esi
callq 0x8730
movq %rax, %rdi
leaq 0x3ccf5(%rip), %rsi     # 0x644f0
callq 0x8400
movq %rax, %rdi
movq -0x10(%rbp), %rax
movl 0x310(%rax), %esi
addl $0x1, %esi
callq 0x8730
movq %rax, %rdi
leaq 0x3d11a(%rip), %rsi     # 0x64939
callq 0x8400
movq -0x8(%rbp), %rdi
movq 0x60741(%rip), %rsi     # 0x87f70
callq 0x8450
movq %rax, %rdi
leaq 0x3d0ff(%rip), %rsi     # 0x6493d
callq 0x8400
movq %rax, %rdi
movq -0x10(%rbp), %rax
movl 0x310(%rax), %esi
addl $0x1, %esi
callq 0x8730
movq %rax, %rdi
leaq 0x3cc8e(%rip), %rsi     # 0x644f0
callq 0x8400
movq %rax, %rdi
movq -0x10(%rbp), %rax
movl 0x310(%rax), %esi
addl $0x1, %esi
callq 0x8730
movq %rax, %rdi
leaq 0x3d0b3(%rip), %rsi     # 0x64939
callq 0x8400
movq -0x10(%rbp), %rax
movq -0x10(%rbp), %rcx
movl 0x310(%rcx), %ecx
addl $0x1, %ecx
movslq %ecx, %rcx
movb $0x69, 0x341(%rax,%rcx)
jmp 0x27bf7
movq -0x10(%rbp), %rdi
addq $0x240, %rdi            # imm = 0x240
movslq -0x1c(%rbp), %rsi
callq 0xfde0
movq %rax, %rdi
addq $0x58, %rdi
leaq 0x3d67d(%rip), %rsi     # 0x64f4b
callq 0x9e30
testb $0x1, %al
jne 0x278dc
jmp 0x279eb
movq -0x10(%rbp), %rdi
addq $0x98, %rdi
leaq 0x3ca75(%rip), %rsi     # 0x64363
callq 0x9e30
testb $0x1, %al
jne 0x278fc
jmp 0x279eb
movq -0x8(%rbp), %rdi
movq 0x60669(%rip), %rsi     # 0x87f70
callq 0x8450
movq %rax, %rdi
leaq 0x3d01c(%rip), %rsi     # 0x64932
callq 0x8400
movq %rax, %rdi
movq -0x10(%rbp), %rax
movl 0x310(%rax), %esi
addl $0x1, %esi
callq 0x8730
movq %rax, %rdi
leaq 0x3cbb6(%rip), %rsi     # 0x644f0
callq 0x8400
movq %rax, %rdi
movq -0x10(%rbp), %rax
movl 0x310(%rax), %esi
addl $0x1, %esi
callq 0x8730
movq %rax, %rdi
leaq 0x3cfe6(%rip), %rsi     # 0x64944
callq 0x8400
movq -0x8(%rbp), %rdi
movq 0x60602(%rip), %rsi     # 0x87f70
callq 0x8450
movq %rax, %rdi
leaq 0x3cfc0(%rip), %rsi     # 0x6493d
callq 0x8400
movq %rax, %rdi
movq -0x10(%rbp), %rax
movl 0x310(%rax), %esi
addl $0x1, %esi
callq 0x8730
movq %rax, %rdi
leaq 0x3cb4f(%rip), %rsi     # 0x644f0
callq 0x8400
movq %rax, %rdi
movq -0x10(%rbp), %rax
movl 0x310(%rax), %esi
addl $0x1, %esi
callq 0x8730
movq %rax, %rdi
leaq 0x3cf7f(%rip), %rsi     # 0x64944
callq 0x8400
movq -0x10(%rbp), %rax
movq -0x10(%rbp), %rcx
movl 0x310(%rcx), %ecx
addl $0x1, %ecx
movslq %ecx, %rcx
movb $0x63, 0x341(%rax,%rcx)
jmp 0x27bf5
movq -0x10(%rbp), %rdi
addq $0x240, %rdi            # imm = 0x240
movslq -0x1c(%rbp), %rsi
callq 0xfde0
movq %rax, %rdi
addq $0x58, %rdi
leaq 0x3c961(%rip), %rsi     # 0x6436e
callq 0x9e30
testb $0x1, %al
jne 0x27a1b
jmp 0x27bf3
movq -0x10(%rbp), %rdi
addq $0x98, %rdi
leaq 0x3c936(%rip), %rsi     # 0x64363
callq 0x9e30
testb $0x1, %al
jne 0x27a3b
jmp 0x27bf3
movq -0x8(%rbp), %rdi
movq 0x6052a(%rip), %rsi     # 0x87f70
callq 0x8450
movq %rax, %rdi
leaq 0x3cedd(%rip), %rsi     # 0x64932
callq 0x8400
movq %rax, %rdi
movq -0x10(%rbp), %rax
movl 0x310(%rax), %esi
addl $0x1, %esi
callq 0x8730
movq %rax, %rdi
leaq 0x3ca77(%rip), %rsi     # 0x644f0
callq 0x8400
movq %rax, %rdi
movq -0x10(%rbp), %rax
movl 0x310(%rax), %esi
addl $0x1, %esi
callq 0x8730
movq %rax, %rdi
leaq 0x3cea7(%rip), %rsi     # 0x64944
callq 0x8400
movq -0x8(%rbp), %rdi
movq 0x604c3(%rip), %rsi     # 0x87f70
callq 0x8450
movq %rax, %rdi
leaq 0x3ce81(%rip), %rsi     # 0x6493d
callq 0x8400
movq %rax, %rdi
movq -0x10(%rbp), %rax
movl 0x310(%rax), %esi
addl $0x1, %esi
callq 0x8730
movq %rax, %rdi
leaq 0x3ca10(%rip), %rsi     # 0x644f0
callq 0x8400
movq %rax, %rdi
movq -0x10(%rbp), %rax
movl 0x310(%rax), %esi
addl $0x1, %esi
callq 0x8730
movq %rax, %rdi
leaq 0x3ce40(%rip), %rsi     # 0x64944
callq 0x8400
movq -0x8(%rbp), %rdi
movq 0x6045c(%rip), %rsi     # 0x87f70
callq 0x8450
movq %rax, %rdi
leaq 0x3ce0f(%rip), %rsi     # 0x64932
callq 0x8400
movq %rax, %rdi
movq -0x10(%rbp), %rax
movl 0x310(%rax), %esi
addl $0x1, %esi
callq 0x8730
movq %rax, %rdi
leaq 0x3c9a9(%rip), %rsi     # 0x644f0
callq 0x8400
movq %rax, %rdi
movq -0x10(%rbp), %rax
movl 0x310(%rax), %esi
addl $0x1, %esi
callq 0x8730
movq %rax, %rdi
leaq 0x3cdce(%rip), %rsi     # 0x64939
callq 0x8400
movq -0x8(%rbp), %rdi
movq 0x603f5(%rip), %rsi     # 0x87f70
callq 0x8450
movq %rax, %rdi
leaq 0x3cdb3(%rip), %rsi     # 0x6493d
callq 0x8400
movq %rax, %rdi
movq -0x10(%rbp), %rax
movl 0x310(%rax), %esi
addl $0x1, %esi
callq 0x8730
movq %rax, %rdi
leaq 0x3c942(%rip), %rsi     # 0x644f0
callq 0x8400
movq %rax, %rdi
movq -0x10(%rbp), %rax
movl 0x310(%rax), %esi
addl $0x1, %esi
callq 0x8730
movq %rax, %rdi
leaq 0x3cd67(%rip), %rsi     # 0x64939
callq 0x8400
movq -0x10(%rbp), %rax
movq -0x10(%rbp), %rcx
movl 0x310(%rcx), %ecx
addl $0x1, %ecx
movslq %ecx, %rcx
movb $0x63, 0x341(%rax,%rcx)
jmp 0x27bf5
jmp 0x27bf7
jmp 0x27bf9
jmp 0x27bfb
jmp 0x27bfd
jmp 0x27bff
jmp 0x27c01
movl $0xffffffff, -0x1c(%rbp) # imm = 0xFFFFFFFF
movl $0xffffffff, -0x20(%rbp) # imm = 0xFFFFFFFF
jmp 0x27c11
movl -0x20(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0x20(%rbp)
jmp 0x26bc0
jmp 0x27c21
movl -0x1c(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0x1c(%rbp)
jmp 0x26b9f
addq $0x30, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
nop