// File: /workspace/github_cpp_makefile_star2_O1/menhits[P]phplus/src/main.cpp
// Function: main
int main(int argc, char ** argv)
{
	Flags flags=getFlags(argc, argv);
	
	if (flags.flagError)
	{
		cout << "coba '-h' untuk menampilkan bantuan" << endl;
		return 0;
	}
	
	if (flags.help)
	{
		cout << "PHPLUS Versi " << VERSION_X << "." << VERSION_Y << "." << VERSION_Z << endl;
		cout << "usage: Phplus [options] [source file] [options]" << endl;
		cout << "\noptions: " << endl;
		cout << "-v, -version      Menampilkan versi dari Phplus" << endl;
		cout << "-d, -debug        Menampilkan info debugging sebelum menjalankan program" << endl;
		cout << "-r, -run          Menjalankan program dengan interpreter" << endl;
		cout << "                    	aktif secara default jika tidak ada transpiling commands yang dijalankan" << endl;
		cout << "                    	pada dasarnya, apapun setelah -r sudah tersetujui" << endl;
		cout << "-cpp [file]       Transpile ke C++ dan menyimpan output file yang diberikan" << endl;
		cout << "-bin [file]       Transpile, compile dengan GCC dan menyimpan binary" << endl;
		cout << "-e, -execute      Transpile, compile dan execute file binary" << endl;
		cout << "                    beberapa kombinasi dari -cpp, -bin and -e dapat digunakan" << endl;
		cout << "                    seperti -r, apapun setelah -e akan disetujui" << endl;
		cout << "-h, -help         Menampilkan bantuan saat ini dan keluar" << endl;
		cout << endl;
		cout << endl;
		
		return 0;
	}
	
	if (flags.version)
	{
		cout << "Phplus version " << VERSION_X << "." << VERSION_Y << "." << VERSION_Z << endl;
		return 0;
	}
	
	PhplusProgram program;
	
	if (flags.inFiles.empty())
	{
		cout << "Tidak ada sumber file yang spesifik" << endl;
		cout << "coba '-h' untuk menampilkan bantuan" << endl;
		return 0;
	}
	else if (flags.inFiles.size()>1)
	{
		cout << "Sumber file multiple spesifik, Phplus tidak mendukungnya saat ini" << endl;
		cout << "coba '-h' untuk menampilkan bantuan" << endl;
		return 0;
	}
	
	program.resolveProgram(flags.inFiles[0], flags.debug);
	
	if (flags.runInterpreted)
	{
		if (error.getIfErrorLogged())
		{
			if (flags.debug)
				cout << endl << ">>>>>>    Eksekusi dibatalkan karena terdapat error    <<<<<<" << endl;
			else
				cout << "Mohon bersabar, ini ujian\nprogram tidak dijalankan karena terdapat error" << endl;
		}
		else
		{
			if (flags.debug)
				cout << endl << "Menjalankan program..." << endl << endl;
			
			program.execute();
		}
	}
	
	if (!flags.cppOutFile.empty() || !flags.binOutFile.empty() || flags.runCompiled)
	{
		string cppCode=program.getCpp();
		
		if (error.getIfErrorLogged())
		{
			if (flags.debug)
				cout << endl << ">>>>>>    transpiling gagal   <<<<<<" << endl;
			else
				cout << "transpiling gagal" << endl;
		}
		else
		{
			string cppFileName=flags.cppOutFile;
			
			if (cppFileName.empty())
				cppFileName="tmp_pp_transpiled.cpp";
			
			if (flags.debug)
				cout << endl << putStringInBox(cppCode, "C++ code", true, false, -1) << endl;
			
			writeFile(cppFileName, cppCode, flags.debug);
			
			if (!flags.binOutFile.empty() || flags.runCompiled)
			{
				string binFileName=flags.binOutFile;
				
				if (binFileName.empty())
					binFileName="tmp_pp_compiled";
				
				string cmd;
				cmd="g++ -std=c++11 '"+cppFileName+"' -o '"+binFileName+"'";
				
				if (flags.debug)
					cout << "menjalankan '"+cmd+"'" << endl;
				
				runCmd(cmd, true);
				
				if (flags.runCompiled)
				{
					if (flags.debug)
						cout << endl;
					
					cmd = "./"+binFileName + " --menjalankan-dari-phplus " + str::join(cmdLineArgs, " ", false);
					
					if (flags.debug)
						cout << "menjalankan '"+cmd+"'" << endl << endl;
					
					runCmd(cmd, true);
				}
				
				if (flags.binOutFile.empty())
					remove(binFileName.c_str());
			}
			
			if (flags.cppOutFile.empty())
				remove(cppFileName.c_str());
		}
	}
	
	if (flags.debug)
		cout << endl << "Semua selesai" << endl;
	
	return 0;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x2f8, %rsp            # imm = 0x2F8
movq %rsi, %rdx
movl %edi, %esi
leaq 0xe0(%rsp), %rbx
movq %rbx, %rdi
callq 0x598a3
cmpb $0x1, 0x81(%rbx)
jne 0x587a4
movq 0x40822(%rip), %rdi     # 0x98fb0
leaq 0x224c1(%rip), %rsi     # 0x7ac56
movl $0x23, %edx
callq 0xa320
jmp 0x58c03
cmpb $0x1, 0x119(%rsp)
jne 0x58c97
movq 0x407f7(%rip), %rdi     # 0x98fb0
leaq 0x224ba(%rip), %rsi     # 0x7ac7a
movl $0xd, %edx
callq 0xa320
movq 0x407df(%rip), %rdi     # 0x98fb0
xorl %esi, %esi
callq 0xa500
movq %rax, %rbx
leaq 0x213ad(%rip), %rsi     # 0x79b8f
movl $0x1, %edx
movq %rax, %rdi
callq 0xa320
movq %rbx, %rdi
xorl %esi, %esi
callq 0xa500
movq %rax, %rbx
leaq 0x2138c(%rip), %rsi     # 0x79b8f
movl $0x1, %edx
movq %rax, %rdi
callq 0xa320
movq %rbx, %rdi
movl $0x1, %esi
callq 0xa500
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0xa2c0
movsbl %al, %esi
movq %rbx, %rdi
callq 0xa030
movq %rax, %rdi
callq 0xa200
movq 0x40762(%rip), %rbx     # 0x98fb0
leaq 0x22433(%rip), %rsi     # 0x7ac88
movl $0x2f, %edx
movq %rbx, %rdi
callq 0xa320
movq (%rbx), %rax
addq -0x18(%rax), %rbx
movq %rbx, %rdi
movl $0xa, %esi
callq 0xa2c0
movsbl %al, %esi
movq 0x40730(%rip), %rdi     # 0x98fb0
callq 0xa030
movq %rax, %rdi
callq 0xa200
movq 0x4071c(%rip), %rbx     # 0x98fb0
leaq 0x2241d(%rip), %rsi     # 0x7acb8
movl $0xa, %edx
movq %rbx, %rdi
callq 0xa320
movq (%rbx), %rax
addq -0x18(%rax), %rbx
movq %rbx, %rdi
movl $0xa, %esi
callq 0xa2c0
movsbl %al, %esi
movq 0x406ea(%rip), %rdi     # 0x98fb0
callq 0xa030
movq %rax, %rdi
callq 0xa200
movq 0x406d6(%rip), %rbx     # 0x98fb0
leaq 0x223e2(%rip), %rsi     # 0x7acc3
movl $0x2f, %edx
movq %rbx, %rdi
callq 0xa320
movq (%rbx), %rax
addq -0x18(%rax), %rbx
movq %rbx, %rdi
movl $0xa, %esi
callq 0xa2c0
movsbl %al, %esi
movq 0x406a4(%rip), %rdi     # 0x98fb0
callq 0xa030
movq %rax, %rdi
callq 0xa200
movq 0x40690(%rip), %rbx     # 0x98fb0
leaq 0x223cc(%rip), %rsi     # 0x7acf3
movl $0x48, %edx
movq %rbx, %rdi
callq 0xa320
movq (%rbx), %rax
addq -0x18(%rax), %rbx
movq %rbx, %rdi
movl $0xa, %esi
callq 0xa2c0
movsbl %al, %esi
movq 0x4065e(%rip), %rdi     # 0x98fb0
callq 0xa030
movq %rax, %rdi
callq 0xa200
movq 0x4064a(%rip), %rbx     # 0x98fb0
leaq 0x223cf(%rip), %rsi     # 0x7ad3c
movl $0x38, %edx
movq %rbx, %rdi
callq 0xa320
movq (%rbx), %rax
addq -0x18(%rax), %rbx
movq %rbx, %rdi
movl $0xa, %esi
callq 0xa2c0
movsbl %al, %esi
movq 0x40618(%rip), %rdi     # 0x98fb0
callq 0xa030
movq %rax, %rdi
callq 0xa200
movq 0x40604(%rip), %rbx     # 0x98fb0
leaq 0x223c2(%rip), %rsi     # 0x7ad75
movl $0x5d, %edx
movq %rbx, %rdi
callq 0xa320
movq (%rbx), %rax
addq -0x18(%rax), %rbx
movq %rbx, %rdi
movl $0xa, %esi
callq 0xa2c0
movsbl %al, %esi
movq 0x405d2(%rip), %rdi     # 0x98fb0
callq 0xa030
movq %rax, %rdi
callq 0xa200
movq 0x405be(%rip), %rbx     # 0x98fb0
leaq 0x223da(%rip), %rsi     # 0x7add3
movl $0x46, %edx
movq %rbx, %rdi
callq 0xa320
movq (%rbx), %rax
addq -0x18(%rax), %rbx
movq %rbx, %rdi
movl $0xa, %esi
callq 0xa2c0
movsbl %al, %esi
movq 0x4058c(%rip), %rdi     # 0x98fb0
callq 0xa030
movq %rax, %rdi
callq 0xa200
movq 0x40578(%rip), %rbx     # 0x98fb0
leaq 0x223db(%rip), %rsi     # 0x7ae1a
movl $0x4b, %edx
movq %rbx, %rdi
callq 0xa320
movq (%rbx), %rax
addq -0x18(%rax), %rbx
movq %rbx, %rdi
movl $0xa, %esi
callq 0xa2c0
movsbl %al, %esi
movq 0x40546(%rip), %rdi     # 0x98fb0
callq 0xa030
movq %rax, %rdi
callq 0xa200
movq 0x40532(%rip), %rbx     # 0x98fb0
leaq 0x223e1(%rip), %rsi     # 0x7ae66
movl $0x44, %edx
movq %rbx, %rdi
callq 0xa320
movq (%rbx), %rax
addq -0x18(%rax), %rbx
movq %rbx, %rdi
movl $0xa, %esi
callq 0xa2c0
movsbl %al, %esi
movq 0x40500(%rip), %rdi     # 0x98fb0
callq 0xa030
movq %rax, %rdi
callq 0xa200
movq 0x404ec(%rip), %rbx     # 0x98fb0
leaq 0x223e0(%rip), %rsi     # 0x7aeab
movl $0x3c, %edx
movq %rbx, %rdi
callq 0xa320
movq (%rbx), %rax
addq -0x18(%rax), %rbx
movq %rbx, %rdi
movl $0xa, %esi
callq 0xa2c0
movsbl %al, %esi
movq 0x404ba(%rip), %rdi     # 0x98fb0
callq 0xa030
movq %rax, %rdi
callq 0xa200
movq 0x404a6(%rip), %rbx     # 0x98fb0
leaq 0x223d7(%rip), %rsi     # 0x7aee8
movl $0x4d, %edx
movq %rbx, %rdi
callq 0xa320
movq (%rbx), %rax
addq -0x18(%rax), %rbx
movq %rbx, %rdi
movl $0xa, %esi
callq 0xa2c0
movsbl %al, %esi
movq 0x40474(%rip), %rdi     # 0x98fb0
callq 0xa030
movq %rax, %rdi
callq 0xa200
movq 0x40460(%rip), %rbx     # 0x98fb0
leaq 0x223df(%rip), %rsi     # 0x7af36
movl $0x40, %edx
movq %rbx, %rdi
callq 0xa320
movq (%rbx), %rax
addq -0x18(%rax), %rbx
movq %rbx, %rdi
movl $0xa, %esi
callq 0xa2c0
movsbl %al, %esi
movq 0x4042e(%rip), %rdi     # 0x98fb0
callq 0xa030
movq %rax, %rdi
callq 0xa200
movq 0x4041a(%rip), %rbx     # 0x98fb0
leaq 0x223da(%rip), %rsi     # 0x7af77
movl $0x39, %edx
movq %rbx, %rdi
callq 0xa320
movq (%rbx), %rax
addq -0x18(%rax), %rbx
movq %rbx, %rdi
movl $0xa, %esi
callq 0xa2c0
movsbl %al, %esi
movq 0x403e8(%rip), %rbx     # 0x98fb0
movq %rbx, %rdi
callq 0xa030
movq %rax, %rdi
callq 0xa200
movq (%rbx), %rax
addq -0x18(%rax), %rbx
movq %rbx, %rdi
movl $0xa, %esi
callq 0xa2c0
movsbl %al, %esi
movq 0x403ba(%rip), %rdi     # 0x98fb0
callq 0xa030
movq %rax, %rdi
callq 0xa200
movq 0x403a6(%rip), %rbx     # 0x98fb0
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0xa2c0
movsbl %al, %esi
movq %rbx, %rdi
callq 0xa030
movq %rax, %rdi
callq 0xa200
leaq 0x150(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x58c47
callq 0xa2b0
leaq 0x130(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x58c5d
callq 0xa2b0
leaq 0x100(%rsp), %rbx
movq %rbx, %rdi
callq 0x148b4
movq -0x20(%rbx), %rdi
leaq 0xf0(%rsp), %rax
cmpq %rax, %rdi
je 0x58c83
callq 0xa2b0
xorl %eax, %eax
addq $0x2f8, %rsp            # imm = 0x2F8
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
cmpb $0x1, 0x11a(%rsp)
jne 0x58d2c
movq 0x40304(%rip), %rdi     # 0x98fb0
leaq 0x222fe(%rip), %rsi     # 0x7afb1
movl $0xf, %edx
callq 0xa320
movq 0x402ec(%rip), %rdi     # 0x98fb0
xorl %esi, %esi
callq 0xa500
movq %rax, %rbx
leaq 0x20eba(%rip), %rsi     # 0x79b8f
movl $0x1, %edx
movq %rax, %rdi
callq 0xa320
movq %rbx, %rdi
xorl %esi, %esi
callq 0xa500
movq %rax, %rbx
leaq 0x20e99(%rip), %rsi     # 0x79b8f
movl $0x1, %edx
movq %rax, %rdi
callq 0xa320
movq %rbx, %rdi
movl $0x1, %esi
callq 0xa500
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0xa2c0
jmp 0x58c1e
leaq 0x268(%rsp), %rdi
callq 0x2c308
movq 0x100(%rsp), %rax
movq 0x108(%rsp), %rcx
cmpq %rcx, %rax
je 0x58d69
subq %rax, %rcx
cmpq $0x21, %rcx
jb 0x58e07
movl $0x41, %edx
leaq 0x2227e(%rip), %rsi     # 0x7afe5
jmp 0x58d75
movl $0x23, %edx
leaq 0x2224c(%rip), %rsi     # 0x7afc1
movq 0x40234(%rip), %rbx     # 0x98fb0
movq %rbx, %rdi
callq 0xa320
movq (%rbx), %rax
addq -0x18(%rax), %rbx
movq %rbx, %rdi
movl $0xa, %esi
callq 0xa2c0
movsbl %al, %esi
movq 0x4020e(%rip), %rdi     # 0x98fb0
callq 0xa030
movq %rax, %rdi
callq 0xa200
movq 0x401fa(%rip), %rbx     # 0x98fb0
leaq 0x21e99(%rip), %rsi     # 0x7ac56
movl $0x23, %edx
movq %rbx, %rdi
callq 0xa320
movq (%rbx), %rax
addq -0x18(%rax), %rbx
movq %rbx, %rdi
movl $0xa, %esi
callq 0xa2c0
movsbl %al, %esi
movq 0x401c8(%rip), %rdi     # 0x98fb0
callq 0xa030
movq %rax, %rdi
callq 0xa200
leaq 0x268(%rsp), %rdi
callq 0x59dae
jmp 0x58c31
leaq 0x218(%rsp), %r14
movq %r14, -0x10(%r14)
movq (%rax), %rsi
movq 0x8(%rax), %rdx
addq %rsi, %rdx
leaq 0x208(%rsp), %rdi
callq 0xdde2
movzbl 0x118(%rsp), %edx
leaq 0x268(%rsp), %rdi
leaq 0x208(%rsp), %rsi
callq 0x2c398
movq 0x208(%rsp), %rdi
cmpq %r14, %rdi
je 0x58e59
callq 0xa2b0
cmpb $0x1, 0x11b(%rsp)
jne 0x58f0c
leaq 0x404a5(%rip), %rcx     # 0x99313
movb 0x118(%rsp), %al
cmpb $0x1, (%rcx)
jne 0x58ea3
testb %al, %al
je 0x58ee9
movq 0x4012b(%rip), %rdi     # 0x98fb0
callq 0xa1a0
movq %rax, %rbx
leaq 0x22193(%rip), %rsi     # 0x7b027
movl $0x3d, %edx
movq %rax, %rdi
callq 0xa320
jmp 0x58f04
testb %al, %al
je 0x58eda
movq 0x40102(%rip), %rdi     # 0x98fb0
callq 0xa1a0
movq %rax, %rbx
leaq 0x221f1(%rip), %rsi     # 0x7b0ae
movl $0x16, %edx
movq %rax, %rdi
callq 0xa320
movq %rbx, %rdi
callq 0xa1a0
movq %rax, %rdi
callq 0xa1a0
leaq 0x268(%rsp), %rdi
callq 0x2cf7c
jmp 0x58f0c
movq 0x400c0(%rip), %rbx     # 0x98fb0
leaq 0x2216e(%rip), %rsi     # 0x7b065
movl $0x48, %edx
movq %rbx, %rdi
callq 0xa320
movq %rbx, %rdi
callq 0xa1a0
movq 0x148(%rsp), %rax
orq 0x128(%rsp), %rax
jne 0x58f2c
cmpb $0x1, 0x160(%rsp)
jne 0x59673
leaq 0x1e8(%rsp), %rdi
leaq 0x268(%rsp), %rsi
callq 0x2cde4
leaq 0x403cb(%rip), %rax     # 0x99313
cmpb $0x1, (%rax)
jne 0x58f83
cmpb $0x1, 0x118(%rsp)
jne 0x5915c
movq 0x4004e(%rip), %rdi     # 0x98fb0
callq 0xa1a0
movq %rax, %rbx
leaq 0x22154(%rip), %rsi     # 0x7b0c5
movl $0x24, %edx
movq %rax, %rdi
callq 0xa320
jmp 0x59177
leaq 0x90(%rsp), %r15
movq %r15, -0x10(%r15)
movq 0x120(%rsp), %rsi
movq 0x128(%rsp), %rdx
addq %rsi, %rdx
leaq 0x80(%rsp), %rdi
callq 0xdde2
cmpq $0x0, 0x88(%rsp)
jne 0x58fce
leaq 0x2213b(%rip), %rsi     # 0x7b0fc
leaq 0x80(%rsp), %rdi
callq 0xa3b0
cmpb $0x1, 0x118(%rsp)
jne 0x59079
movq 0x3ffcd(%rip), %rdi     # 0x98fb0
callq 0xa1a0
movq %rax, %rbx
leaq 0x1d8(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x2175c(%rip), %rsi     # 0x7a75a
leaq 0x2175d(%rip), %rdx     # 0x7a762
leaq 0x1c8(%rsp), %rdi
callq 0xdf6a
leaq 0x40(%rsp), %rdi
leaq 0x1e8(%rsp), %rsi
leaq 0x1c8(%rsp), %rdx
movl $0x1, %ecx
xorl %r8d, %r8d
movl $0xffffffff, %r9d       # imm = 0xFFFFFFFF
callq 0x5c228
movq 0x40(%rsp), %rsi
movq 0x48(%rsp), %rdx
movq %rbx, %rdi
callq 0xa320
movq %rax, %rdi
callq 0xa1a0
leaq 0x50(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x59067
callq 0xa2b0
movq 0x1c8(%rsp), %rdi
cmpq %r14, %rdi
je 0x59079
callq 0xa2b0
movzbl 0x118(%rsp), %edx
leaq 0x80(%rsp), %rdi
leaq 0x1e8(%rsp), %rsi
callq 0x5d9be
movq 0x148(%rsp), %rdx
testq %rdx, %rdx
jne 0x590b1
cmpb $0x1, 0x160(%rsp)
jne 0x59633
leaq 0x50(%rsp), %rax
movq %rax, -0x10(%rax)
movq 0x140(%rsp), %rsi
addq %rsi, %rdx
leaq 0x40(%rsp), %rdi
callq 0xdde2
cmpq $0x0, 0x48(%rsp)
jne 0x590e8
leaq 0x22034(%rip), %rsi     # 0x7b112
leaq 0x40(%rsp), %rdi
callq 0xa3b0
leaq 0x70(%rsp), %rax
movq %rax, -0x10(%rax)
movq $0x0, -0x8(%rax)
movb $0x0, (%rax)
leaq 0x2201f(%rip), %rsi     # 0x7b122
leaq 0xc0(%rsp), %rdi
leaq 0x80(%rsp), %rdx
callq 0xdbef
leaq 0x22014(%rip), %rsi     # 0x7b133
leaq 0xc0(%rsp), %rdi
callq 0xa560
leaq 0xb0(%rsp), %rbp
movq %rbp, -0x10(%rbp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x59184
movq %rdx, 0xa0(%rsp)
movq (%rcx), %rdx
movq %rdx, 0xb0(%rsp)
jmp 0x5918b
movq 0x3fe4d(%rip), %rbx     # 0x98fb0
leaq 0x21f80(%rip), %rsi     # 0x7b0ea
movl $0x11, %edx
movq %rbx, %rdi
callq 0xa320
movq %rbx, %rdi
callq 0xa1a0
jmp 0x5965d
movups (%rcx), %xmm0
movups %xmm0, (%rbp)
movq 0x8(%rax), %rdx
leaq 0xa0(%rsp), %rsi
movq %rdx, 0x8(%rsi)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq 0x20(%rsp), %rdi
leaq 0x40(%rsp), %rdx
callq 0x59d54
leaq 0x220ea(%rip), %rsi     # 0x7b2aa
leaq 0x20(%rsp), %rdi
callq 0xa560
leaq 0x10(%rsp), %r14
movq %r14, -0x10(%r14)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x591f0
movq %rdx, (%rsp)
movq (%rcx), %rdx
movq %rdx, 0x10(%rsp)
jmp 0x591f7
movups (%rcx), %xmm0
movups %xmm0, (%r14)
movq 0x8(%rax), %rdx
movq %rsp, %rbx
movq %rdx, 0x8(%rbx)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq 0x60(%rsp), %rdi
movq %rbx, %rsi
callq 0xa370
movq (%rbx), %rdi
cmpq %r14, %rdi
je 0x5922b
callq 0xa2b0
leaq 0x30(%rsp), %r13
movq -0x10(%r13), %rdi
cmpq %r13, %rdi
je 0x5923e
callq 0xa2b0
movq 0xa0(%rsp), %rdi
cmpq %rbp, %rdi
je 0x59250
callq 0xa2b0
leaq 0xd0(%rsp), %r15
movq -0x10(%r15), %rdi
cmpq %r15, %rdi
je 0x59266
callq 0xa2b0
cmpb $0x1, 0x118(%rsp)
jne 0x59315
leaq 0x21ebf(%rip), %rsi     # 0x7b13a
leaq 0x20(%rsp), %rdi
leaq 0x60(%rsp), %rdx
callq 0xdbef
leaq 0x22019(%rip), %rsi     # 0x7b2aa
leaq 0x20(%rsp), %rdi
callq 0xa560
movq %r14, (%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x592bc
movq %rdx, (%rsp)
movq (%rcx), %rdx
movq %rdx, 0x10(%rsp)
jmp 0x592c3
movups (%rcx), %xmm0
movups %xmm0, (%r14)
movq 0x8(%rax), %rdx
movq %rdx, 0x8(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq (%rsp), %rsi
movq 0x8(%rsp), %rdx
movq 0x3fcc5(%rip), %rdi     # 0x98fb0
callq 0xa320
movq %rax, %rdi
callq 0xa1a0
movq (%rsp), %rdi
cmpq %r14, %rdi
je 0x59306
callq 0xa2b0
movq 0x20(%rsp), %rdi
cmpq %r13, %rdi
je 0x59315
callq 0xa2b0
leaq 0x1b8(%rsp), %r12
movq %r12, -0x10(%r12)
movq 0x60(%rsp), %rsi
movq 0x68(%rsp), %rdx
addq %rsi, %rdx
leaq 0x1a8(%rsp), %rdi
callq 0xdde2
leaq 0x248(%rsp), %rdi
leaq 0x1a8(%rsp), %rsi
movl $0x1, %edx
callq 0x5e090
leaq 0x258(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x5936c
callq 0xa2b0
movq 0x1a8(%rsp), %rdi
cmpq %r12, %rdi
je 0x5937e
callq 0xa2b0
cmpb $0x1, 0x160(%rsp)
jne 0x595ee
cmpb $0x1, 0x118(%rsp)
jne 0x593a2
movq 0x3fc13(%rip), %rdi     # 0x98fb0
callq 0xa1a0
leaq 0x21d9f(%rip), %rsi     # 0x7b148
leaq 0xa0(%rsp), %rdi
leaq 0x40(%rsp), %rdx
callq 0xdbef
leaq 0x21d89(%rip), %rsi     # 0x7b14b
leaq 0xa0(%rsp), %rdi
callq 0xa560
movq %r13, 0x20(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x593f2
movq %rdx, 0x20(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x30(%rsp)
jmp 0x593fa
movups (%rcx), %xmm0
movups %xmm0, (%r13)
movq 0x8(%rax), %rdx
movq %rdx, 0x28(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq 0x198(%rsp), %r12
movq %r12, -0x10(%r12)
leaq 0x1d676(%rip), %rsi     # 0x76a9c
leaq 0x1d670(%rip), %rdx     # 0x76a9d
leaq 0x188(%rsp), %rdi
callq 0xdf6a
leaq 0x40037(%rip), %rsi     # 0x99478
leaq 0xc0(%rsp), %rdi
leaq 0x188(%rsp), %rdx
xorl %ecx, %ecx
callq 0x6e886
movq %rsp, %rdi
leaq 0x20(%rsp), %rsi
leaq 0xc0(%rsp), %rdx
callq 0x1572b
leaq 0x60(%rsp), %rdi
movq %rsp, %rbx
movq %rbx, %rsi
callq 0xa370
movq (%rbx), %rdi
cmpq %r14, %rdi
je 0x5948a
callq 0xa2b0
movq 0xc0(%rsp), %rdi
cmpq %r15, %rdi
je 0x5949c
callq 0xa2b0
movq 0x188(%rsp), %rdi
cmpq %r12, %rdi
je 0x594ae
callq 0xa2b0
movq 0x20(%rsp), %rdi
cmpq %r13, %rdi
je 0x594bd
callq 0xa2b0
movq 0xa0(%rsp), %rdi
cmpq %rbp, %rdi
je 0x594cf
callq 0xa2b0
cmpb $0x1, 0x118(%rsp)
jne 0x59586
leaq 0x21c56(%rip), %rsi     # 0x7b13a
leaq 0x20(%rsp), %rdi
leaq 0x60(%rsp), %rdx
callq 0xdbef
leaq 0x21db0(%rip), %rsi     # 0x7b2aa
leaq 0x20(%rsp), %rdi
callq 0xa560
movq %r14, (%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x59525
movq %rdx, (%rsp)
movq (%rcx), %rdx
movq %rdx, 0x10(%rsp)
jmp 0x5952c
movups (%rcx), %xmm0
movups %xmm0, (%r14)
movq 0x8(%rax), %rdx
movq %rdx, 0x8(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq (%rsp), %rsi
movq 0x8(%rsp), %rdx
movq 0x3fa5c(%rip), %rdi     # 0x98fb0
callq 0xa320
movq %rax, %rdi
callq 0xa1a0
movq %rax, %rdi
callq 0xa1a0
movq (%rsp), %rdi
cmpq %r14, %rdi
je 0x59577
callq 0xa2b0
movq 0x20(%rsp), %rdi
cmpq %r13, %rdi
je 0x59586
callq 0xa2b0
leaq 0x178(%rsp), %r14
movq %r14, -0x10(%r14)
movq 0x60(%rsp), %rsi
movq 0x68(%rsp), %rdx
addq %rsi, %rdx
leaq 0x168(%rsp), %rdi
callq 0xdde2
leaq 0x228(%rsp), %rdi
leaq 0x168(%rsp), %rsi
movl $0x1, %edx
callq 0x5e090
leaq 0x238(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x595dc
callq 0xa2b0
movq 0x168(%rsp), %rdi
cmpq %r14, %rdi
je 0x595ee
callq 0xa2b0
cmpq $0x0, 0x148(%rsp)
jne 0x59603
movq 0x40(%rsp), %rdi
callq 0xa530
movq 0x60(%rsp), %rdi
leaq 0x70(%rsp), %rax
cmpq %rax, %rdi
leaq 0x90(%rsp), %r15
leaq 0x50(%rsp), %rbx
je 0x59624
callq 0xa2b0
movq 0x40(%rsp), %rdi
cmpq %rbx, %rdi
je 0x59633
callq 0xa2b0
cmpq $0x0, 0x128(%rsp)
jne 0x5964b
movq 0x80(%rsp), %rdi
callq 0xa530
movq 0x80(%rsp), %rdi
cmpq %r15, %rdi
je 0x5965d
callq 0xa2b0
leaq 0x1f8(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x59673
callq 0xa2b0
cmpb $0x1, 0x118(%rsp)
jne 0x58df5
movq 0x3f928(%rip), %rdi     # 0x98fb0
callq 0xa1a0
movq %rax, %rbx
leaq 0x21ad0(%rip), %rsi     # 0x7b167
movl $0xd, %edx
movq %rax, %rdi
callq 0xa320
movq %rbx, %rdi
callq 0xa1a0
jmp 0x58df5
jmp 0x5973c
jmp 0x597fc
movq %rax, %rbx
jmp 0x59813
movq %rax, %rbx
movq 0x168(%rsp), %rdi
cmpq %r14, %rdi
jne 0x597ca
jmp 0x597ff
movq %rax, %rbx
movq 0xc0(%rsp), %rdi
cmpq %r15, %rdi
je 0x596f6
callq 0xa2b0
jmp 0x596f6
movq %rax, %rbx
movq 0x188(%rsp), %rdi
cmpq %r12, %rdi
je 0x5970d
callq 0xa2b0
jmp 0x5970d
movq %rax, %rbx
movq 0x20(%rsp), %rdi
cmpq %r13, %rdi
je 0x59721
callq 0xa2b0
jmp 0x59721
movq %rax, %rbx
movq 0xa0(%rsp), %rdi
cmpq %rbp, %rdi
jne 0x597ca
jmp 0x597ff
jmp 0x597fc
movq %rax, %rbx
jmp 0x5977b
jmp 0x597fc
movq %rax, %rbx
jmp 0x597eb
jmp 0x59829
jmp 0x5976a
movq %rax, %rbx
movq 0x1a8(%rsp), %rdi
cmpq %r12, %rdi
jne 0x597ca
jmp 0x597ff
movq %rax, %rbx
movq (%rsp), %rdi
cmpq %r14, %rdi
je 0x5977b
callq 0xa2b0
movq 0x20(%rsp), %rdi
cmpq %r13, %rdi
jne 0x597ca
jmp 0x597ff
movq %rax, %rbx
leaq 0x30(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x597a2
callq 0xa2b0
jmp 0x597a2
movq %rax, %rbx
movq 0xa0(%rsp), %rdi
cmpq %rbp, %rdi
je 0x597b9
callq 0xa2b0
jmp 0x597b9
movq %rax, %rbx
leaq 0xd0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x597ff
callq 0xa2b0
jmp 0x597ff
jmp 0x597fc
jmp 0x59829
movq %rax, %rbx
leaq 0x50(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x597eb
callq 0xa2b0
movq 0x1c8(%rsp), %rdi
cmpq %r14, %rdi
jne 0x59822
jmp 0x5982c
jmp 0x5984a
movq %rax, %rbx
movq 0x60(%rsp), %rdi
leaq 0x70(%rsp), %rax
cmpq %rax, %rdi
je 0x59813
callq 0xa2b0
movq 0x40(%rsp), %rdi
leaq 0x50(%rsp), %rax
cmpq %rax, %rdi
je 0x5982c
callq 0xa2b0
jmp 0x5982c
movq %rax, %rbx
movq 0x80(%rsp), %rdi
leaq 0x90(%rsp), %rax
cmpq %rax, %rdi
je 0x5984d
callq 0xa2b0
jmp 0x5984d
jmp 0x59879
movq %rax, %rbx
leaq 0x1f8(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x5987c
callq 0xa2b0
jmp 0x5987c
movq %rax, %rbx
movq 0x208(%rsp), %rdi
cmpq %r14, %rdi
jne 0x5985e
jmp 0x5987c
jmp 0x5988b
movq %rax, %rbx
leaq 0x268(%rsp), %rdi
callq 0x59dae
jmp 0x5988e
movq %rax, %rbx
leaq 0xe0(%rsp), %rdi
callq 0x59e2c
movq %rbx, %rdi
callq 0xa510