// File: 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:
subq $0x5d8, %rsp            # imm = 0x5D8
movl $0x0, 0x5d4(%rsp)
movl %edi, 0x5d0(%rsp)
movq %rsi, 0x5c8(%rsp)
movl 0x5d0(%rsp), %esi
movq 0x5c8(%rsp), %rdx
leaq 0x540(%rsp), %rdi
callq 0xa7500
testb $0x1, 0x5c1(%rsp)
je 0xa628e
movq 0x71d82(%rip), %rdi     # 0x117fb0
leaq 0x30211(%rip), %rsi     # 0xd6446
callq 0xb380
movq %rax, 0x188(%rsp)
jmp 0xa6244
movq 0x188(%rsp), %rdi
movq 0x71d2d(%rip), %rsi     # 0x117f80
callq 0xb3c0
jmp 0xa625a
movl $0x0, 0x5d4(%rsp)
movl $0x1, 0x530(%rsp)
jmp 0xa74bd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x538(%rsp)
movl %eax, 0x534(%rsp)
jmp 0xa74d9
testb $0x1, 0x579(%rsp)
je 0xa6635
movq 0x71d0d(%rip), %rdi     # 0x117fb0
leaq 0x301c0(%rip), %rsi     # 0xd646a
callq 0xb380
movq %rax, 0x180(%rsp)
jmp 0xa62b9
movq 0x180(%rsp), %rdi
xorl %esi, %esi
callq 0xb670
movq %rax, 0x178(%rsp)
jmp 0xa62d2
movq 0x178(%rsp), %rdi
leaq 0x2f198(%rip), %rsi     # 0xd5479
callq 0xb380
movq %rax, 0x170(%rsp)
jmp 0xa62f0
movq 0x170(%rsp), %rdi
xorl %esi, %esi
callq 0xb670
movq %rax, 0x168(%rsp)
jmp 0xa6309
movq 0x168(%rsp), %rdi
leaq 0x2f161(%rip), %rsi     # 0xd5479
callq 0xb380
movq %rax, 0x160(%rsp)
jmp 0xa6327
movq 0x160(%rsp), %rdi
movl $0x1, %esi
callq 0xb670
movq %rax, 0x158(%rsp)
jmp 0xa6343
movq 0x158(%rsp), %rdi
movq 0x71c2e(%rip), %rsi     # 0x117f80
callq 0xb3c0
jmp 0xa6359
movq 0x71c50(%rip), %rdi     # 0x117fb0
leaq 0x30111(%rip), %rsi     # 0xd6478
callq 0xb380
movq %rax, 0x150(%rsp)
jmp 0xa6376
movq 0x150(%rsp), %rdi
movq 0x71bfb(%rip), %rsi     # 0x117f80
callq 0xb3c0
jmp 0xa638c
movq 0x71c1d(%rip), %rdi     # 0x117fb0
leaq 0x3010e(%rip), %rsi     # 0xd64a8
callq 0xb380
movq %rax, 0x148(%rsp)
jmp 0xa63a9
movq 0x148(%rsp), %rdi
movq 0x71bc8(%rip), %rsi     # 0x117f80
callq 0xb3c0
jmp 0xa63bf
movq 0x71bea(%rip), %rdi     # 0x117fb0
leaq 0x300e6(%rip), %rsi     # 0xd64b3
callq 0xb380
movq %rax, 0x140(%rsp)
jmp 0xa63dc
movq 0x140(%rsp), %rdi
movq 0x71b95(%rip), %rsi     # 0x117f80
callq 0xb3c0
jmp 0xa63f2
movq 0x71bb7(%rip), %rdi     # 0x117fb0
leaq 0x300e3(%rip), %rsi     # 0xd64e3
callq 0xb380
movq %rax, 0x138(%rsp)
jmp 0xa640f
movq 0x138(%rsp), %rdi
movq 0x71b62(%rip), %rsi     # 0x117f80
callq 0xb3c0
jmp 0xa6425
movq 0x71b84(%rip), %rdi     # 0x117fb0
leaq 0x300f9(%rip), %rsi     # 0xd652c
callq 0xb380
movq %rax, 0x130(%rsp)
jmp 0xa6442
movq 0x130(%rsp), %rdi
movq 0x71b2f(%rip), %rsi     # 0x117f80
callq 0xb3c0
jmp 0xa6458
movq 0x71b51(%rip), %rdi     # 0x117fb0
leaq 0x300ff(%rip), %rsi     # 0xd6565
callq 0xb380
movq %rax, 0x128(%rsp)
jmp 0xa6475
movq 0x128(%rsp), %rdi
movq 0x71afc(%rip), %rsi     # 0x117f80
callq 0xb3c0
jmp 0xa648b
movq 0x71b1e(%rip), %rdi     # 0x117fb0
leaq 0x3012a(%rip), %rsi     # 0xd65c3
callq 0xb380
movq %rax, 0x120(%rsp)
jmp 0xa64a8
movq 0x120(%rsp), %rdi
movq 0x71ac9(%rip), %rsi     # 0x117f80
callq 0xb3c0
jmp 0xa64be
movq 0x71aeb(%rip), %rdi     # 0x117fb0
leaq 0x3013e(%rip), %rsi     # 0xd660a
callq 0xb380
movq %rax, 0x118(%rsp)
jmp 0xa64db
movq 0x118(%rsp), %rdi
movq 0x71a96(%rip), %rsi     # 0x117f80
callq 0xb3c0
jmp 0xa64f1
movq 0x71ab8(%rip), %rdi     # 0x117fb0
leaq 0x30157(%rip), %rsi     # 0xd6656
callq 0xb380
movq %rax, 0x110(%rsp)
jmp 0xa650e
movq 0x110(%rsp), %rdi
movq 0x71a63(%rip), %rsi     # 0x117f80
callq 0xb3c0
jmp 0xa6524
movq 0x71a85(%rip), %rdi     # 0x117fb0
leaq 0x30169(%rip), %rsi     # 0xd669b
callq 0xb380
movq %rax, 0x108(%rsp)
jmp 0xa6541
movq 0x108(%rsp), %rdi
movq 0x71a30(%rip), %rsi     # 0x117f80
callq 0xb3c0
jmp 0xa6557
movq 0x71a52(%rip), %rdi     # 0x117fb0
leaq 0x30173(%rip), %rsi     # 0xd66d8
callq 0xb380
movq %rax, 0x100(%rsp)
jmp 0xa6574
movq 0x100(%rsp), %rdi
movq 0x719fd(%rip), %rsi     # 0x117f80
callq 0xb3c0
jmp 0xa658a
movq 0x71a1f(%rip), %rdi     # 0x117fb0
leaq 0x3018e(%rip), %rsi     # 0xd6726
callq 0xb380
movq %rax, 0xf8(%rsp)
jmp 0xa65a7
movq 0xf8(%rsp), %rdi
movq 0x719ca(%rip), %rsi     # 0x117f80
callq 0xb3c0
jmp 0xa65bd
movq 0x719ec(%rip), %rdi     # 0x117fb0
leaq 0x3019c(%rip), %rsi     # 0xd6767
callq 0xb380
movq %rax, 0xf0(%rsp)
jmp 0xa65da
movq 0xf0(%rsp), %rdi
movq 0x71997(%rip), %rsi     # 0x117f80
callq 0xb3c0
jmp 0xa65f0
movq 0x719b9(%rip), %rdi     # 0x117fb0
movq 0x71982(%rip), %rsi     # 0x117f80
callq 0xb3c0
jmp 0xa6605
movq 0x719a4(%rip), %rdi     # 0x117fb0
movq 0x7196d(%rip), %rsi     # 0x117f80
callq 0xb3c0
jmp 0xa661a
movl $0x0, 0x5d4(%rsp)
movl $0x1, 0x530(%rsp)
jmp 0xa74bd
testb $0x1, 0x57a(%rsp)
je 0xa671b
movq 0x71966(%rip), %rdi     # 0x117fb0
leaq 0x30150(%rip), %rsi     # 0xd67a1
callq 0xb380
movq %rax, 0xe8(%rsp)
jmp 0xa6660
movq 0xe8(%rsp), %rdi
xorl %esi, %esi
callq 0xb670
movq %rax, 0xe0(%rsp)
jmp 0xa6679
movq 0xe0(%rsp), %rdi
leaq 0x2edf1(%rip), %rsi     # 0xd5479
callq 0xb380
movq %rax, 0xd8(%rsp)
jmp 0xa6697
movq 0xd8(%rsp), %rdi
xorl %esi, %esi
callq 0xb670
movq %rax, 0xd0(%rsp)
jmp 0xa66b0
movq 0xd0(%rsp), %rdi
leaq 0x2edba(%rip), %rsi     # 0xd5479
callq 0xb380
movq %rax, 0xc8(%rsp)
jmp 0xa66ce
movq 0xc8(%rsp), %rdi
movl $0x1, %esi
callq 0xb670
movq %rax, 0xc0(%rsp)
jmp 0xa66ea
movq 0xc0(%rsp), %rdi
movq 0x71887(%rip), %rsi     # 0x117f80
callq 0xb3c0
jmp 0xa6700
movl $0x0, 0x5d4(%rsp)
movl $0x1, 0x530(%rsp)
jmp 0xa74bd
leaq 0x4a0(%rsp), %rdi
callq 0x4d3c0
jmp 0xa672a
leaq 0x540(%rsp), %rdi
addq $0x20, %rdi
callq 0x2e690
testb $0x1, %al
jne 0xa6744
jmp 0xa67de
movq 0x71865(%rip), %rdi     # 0x117fb0
leaq 0x3005f(%rip), %rsi     # 0xd67b1
callq 0xb380
movq %rax, 0xb8(%rsp)
jmp 0xa6761
movq 0xb8(%rsp), %rdi
movq 0x71810(%rip), %rsi     # 0x117f80
callq 0xb3c0
jmp 0xa6777
movq 0x71832(%rip), %rdi     # 0x117fb0
leaq 0x2fcc1(%rip), %rsi     # 0xd6446
callq 0xb380
movq %rax, 0xb0(%rsp)
jmp 0xa6794
movq 0xb0(%rsp), %rdi
movq 0x717dd(%rip), %rsi     # 0x117f80
callq 0xb3c0
jmp 0xa67aa
movl $0x0, 0x5d4(%rsp)
movl $0x1, 0x530(%rsp)
jmp 0xa749f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x538(%rsp)
movl %eax, 0x534(%rsp)
jmp 0xa74ae
leaq 0x540(%rsp), %rdi
addq $0x20, %rdi
callq 0x1bbb0
cmpq $0x1, %rax
jbe 0xa687a
movq 0x717b0(%rip), %rdi     # 0x117fb0
leaq 0x2ffce(%rip), %rsi     # 0xd67d5
callq 0xb380
movq %rax, 0xa8(%rsp)
jmp 0xa6816
movq 0xa8(%rsp), %rdi
movq 0x7175b(%rip), %rsi     # 0x117f80
callq 0xb3c0
jmp 0xa682c
movq 0x7177d(%rip), %rdi     # 0x117fb0
leaq 0x2fc0c(%rip), %rsi     # 0xd6446
callq 0xb380
movq %rax, 0xa0(%rsp)
jmp 0xa6849
movq 0xa0(%rsp), %rdi
movq 0x71728(%rip), %rsi     # 0x117f80
callq 0xb3c0
jmp 0xa685f
movl $0x0, 0x5d4(%rsp)
movl $0x1, 0x530(%rsp)
jmp 0xa749f
jmp 0xa687c
leaq 0x560(%rsp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x1bbd0
movq %rax, %rsi
leaq 0x480(%rsp), %rdi
callq 0xb1a0
jmp 0xa689f
movzbl 0x578(%rsp), %edx
andl $0x1, %edx
leaq 0x4a0(%rsp), %rdi
leaq 0x480(%rsp), %rsi
callq 0x4d4a0
jmp 0xa68c1
leaq 0x480(%rsp), %rdi
callq 0xb6e8
testb $0x1, 0x57b(%rsp)
je 0xa6a37
leaq 0x71ae0(%rip), %rdi     # 0x1183c3
callq 0x4e370
movb %al, 0x9f(%rsp)
jmp 0xa68f1
movb 0x9f(%rsp), %al
testb $0x1, %al
jne 0xa6901
jmp 0xa69bb
testb $0x1, 0x578(%rsp)
je 0xa6984
movq 0x7169e(%rip), %rdi     # 0x117fb0
movq 0x71667(%rip), %rsi     # 0x117f80
callq 0xb3c0
movq %rax, 0x90(%rsp)
jmp 0xa6928
movq 0x90(%rsp), %rdi
leaq 0x2fee0(%rip), %rsi     # 0xd6817
callq 0xb380
movq %rax, 0x88(%rsp)
jmp 0xa6946
movq 0x88(%rsp), %rdi
movq 0x7162b(%rip), %rsi     # 0x117f80
callq 0xb3c0
jmp 0xa695c
jmp 0xa69b9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x538(%rsp)
movl %eax, 0x534(%rsp)
leaq 0x480(%rsp), %rdi
callq 0xb6e8
jmp 0xa74ae
movq 0x71625(%rip), %rdi     # 0x117fb0
leaq 0x2fec3(%rip), %rsi     # 0xd6855
callq 0xb380
movq %rax, 0x80(%rsp)
jmp 0xa69a1
movq 0x80(%rsp), %rdi
movq 0x715d0(%rip), %rsi     # 0x117f80
callq 0xb3c0
jmp 0xa69b7
jmp 0xa69b9
jmp 0xa6a35
testb $0x1, 0x578(%rsp)
je 0xa6a24
movq 0x715e4(%rip), %rdi     # 0x117fb0
movq 0x715ad(%rip), %rsi     # 0x117f80
callq 0xb3c0
movq %rax, 0x78(%rsp)
jmp 0xa69df
movq 0x78(%rsp), %rdi
leaq 0x2feb3(%rip), %rsi     # 0xd689e
callq 0xb380
movq %rax, 0x70(%rsp)
jmp 0xa69f7
movq 0x70(%rsp), %rdi
movq 0x7157d(%rip), %rsi     # 0x117f80
callq 0xb3c0
movq %rax, 0x68(%rsp)
jmp 0xa6a0f
movq 0x68(%rsp), %rdi
movq 0x71565(%rip), %rsi     # 0x117f80
callq 0xb3c0
jmp 0xa6a22
jmp 0xa6a24
leaq 0x4a0(%rsp), %rdi
callq 0x4e150
jmp 0xa6a33
jmp 0xa6a35
jmp 0xa6a37
leaq 0x540(%rsp), %rdi
addq $0x40, %rdi
callq 0xb610
testb $0x1, %al
jne 0xa6a4e
jmp 0xa6a73
leaq 0x540(%rsp), %rdi
addq $0x60, %rdi
callq 0xb610
testb $0x1, %al
jne 0xa6a65
jmp 0xa6a73
testb $0x1, 0x5c0(%rsp)
je 0xa743a
leaq 0x460(%rsp), %rdi
leaq 0x4a0(%rsp), %rsi
callq 0x4df00
jmp 0xa6a8a
leaq 0x71932(%rip), %rdi     # 0x1183c3
callq 0x4e370
movb %al, 0x67(%rsp)
jmp 0xa6a9c
movb 0x67(%rsp), %al
testb $0x1, %al
jne 0xa6aa9
jmp 0xa6b47
testb $0x1, 0x578(%rsp)
je 0xa6b13
movq 0x714f6(%rip), %rdi     # 0x117fb0
movq 0x714bf(%rip), %rsi     # 0x117f80
callq 0xb3c0
movq %rax, 0x58(%rsp)
jmp 0xa6acd
movq 0x58(%rsp), %rdi
leaq 0x2fddc(%rip), %rsi     # 0xd68b5
callq 0xb380
movq %rax, 0x50(%rsp)
jmp 0xa6ae5
movq 0x50(%rsp), %rdi
movq 0x7148f(%rip), %rsi     # 0x117f80
callq 0xb3c0
jmp 0xa6af8
jmp 0xa6b42
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x538(%rsp)
movl %eax, 0x534(%rsp)
jmp 0xa742b
movq 0x71496(%rip), %rdi     # 0x117fb0
leaq 0x2fdb9(%rip), %rsi     # 0xd68da
callq 0xb380
movq %rax, 0x48(%rsp)
jmp 0xa6b2d
movq 0x48(%rsp), %rdi
movq 0x71447(%rip), %rsi     # 0x117f80
callq 0xb3c0
jmp 0xa6b40
jmp 0xa6b42
jmp 0xa741c
leaq 0x580(%rsp), %rsi
leaq 0x440(%rsp), %rdi
callq 0xb1a0
jmp 0xa6b5e
leaq 0x440(%rsp), %rdi
callq 0xb610
testb $0x1, %al
jne 0xa6b71
jmp 0xa6ba2
leaq 0x2fd74(%rip), %rsi     # 0xd68ec
leaq 0x440(%rsp), %rdi
callq 0xb4b0
jmp 0xa6b87
jmp 0xa6ba2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x538(%rsp)
movl %eax, 0x534(%rsp)
jmp 0xa740d
testb $0x1, 0x578(%rsp)
je 0xa6ce5
movq 0x713f9(%rip), %rdi     # 0x117fb0
movq 0x713c2(%rip), %rsi     # 0x117f80
callq 0xb3c0
movq %rax, 0x40(%rsp)
jmp 0xa6bca
leaq 0x3ff(%rsp), %rdi
movq %rdi, 0x38(%rsp)
callq 0xb690
movq 0x38(%rsp), %rdx
leaq 0x2f366(%rip), %rsi     # 0xd5f4e
leaq 0x400(%rsp), %rdi
callq 0xb4c0
jmp 0xa6bf7
leaq 0x420(%rsp), %rdi
leaq 0x460(%rsp), %rsi
leaq 0x400(%rsp), %rdx
movl $0x1, %ecx
xorl %r8d, %r8d
movl $0xffffffff, %r9d       # imm = 0xFFFFFFFF
callq 0xaad50
jmp 0xa6c24
movq 0x40(%rsp), %rdi
leaq 0x420(%rsp), %rsi
callq 0xb340
movq %rax, 0x30(%rsp)
jmp 0xa6c3d
movq 0x30(%rsp), %rdi
movq 0x71337(%rip), %rsi     # 0x117f80
callq 0xb3c0
jmp 0xa6c50
leaq 0x420(%rsp), %rdi
callq 0xb6e8
leaq 0x400(%rsp), %rdi
callq 0xb6e8
leaq 0x3ff(%rsp), %rdi
callq 0xb3f0
jmp 0xa6ce5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x538(%rsp)
movl %eax, 0x534(%rsp)
jmp 0xa6cd3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x538(%rsp)
movl %eax, 0x534(%rsp)
jmp 0xa6cc6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x538(%rsp)
movl %eax, 0x534(%rsp)
leaq 0x420(%rsp), %rdi
callq 0xb6e8
leaq 0x400(%rsp), %rdi
callq 0xb6e8
leaq 0x3ff(%rsp), %rdi
callq 0xb3f0
jmp 0xa740d
movzbl 0x578(%rsp), %edx
andl $0x1, %edx
leaq 0x440(%rsp), %rdi
leaq 0x460(%rsp), %rsi
callq 0xaccf0
jmp 0xa6d07
leaq 0x540(%rsp), %rdi
addq $0x60, %rdi
callq 0xb610
testb $0x1, %al
jne 0xa6d1e
jmp 0xa6d2c
testb $0x1, 0x5c0(%rsp)
je 0xa73d2
leaq 0x5a0(%rsp), %rsi
leaq 0x3d8(%rsp), %rdi
callq 0xb1a0
jmp 0xa6d43
leaq 0x3d8(%rsp), %rdi
callq 0xb610
testb $0x1, %al
jne 0xa6d56
jmp 0xa6d87
leaq 0x2fba5(%rip), %rsi     # 0xd6902
leaq 0x3d8(%rsp), %rdi
callq 0xb4b0
jmp 0xa6d6c
jmp 0xa6d87
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x538(%rsp)
movl %eax, 0x534(%rsp)
jmp 0xa73c3
leaq 0x3b8(%rsp), %rdi
callq 0xb4e0
leaq 0x2fb77(%rip), %rsi     # 0xd6912
leaq 0x338(%rsp), %rdi
leaq 0x440(%rsp), %rdx
callq 0xfab0
jmp 0xa6db2
leaq 0x2fb6a(%rip), %rdx     # 0xd6923
leaq 0x358(%rsp), %rdi
leaq 0x338(%rsp), %rsi
callq 0xfa60
jmp 0xa6dd0
leaq 0x378(%rsp), %rdi
leaq 0x358(%rsp), %rsi
leaq 0x3d8(%rsp), %rdx
callq 0x2e070
jmp 0xa6def
leaq 0x2fca4(%rip), %rdx     # 0xd6a9a
leaq 0x398(%rsp), %rdi
leaq 0x378(%rsp), %rsi
callq 0xfa60
jmp 0xa6e0d
leaq 0x3b8(%rsp), %rdi
leaq 0x398(%rsp), %rsi
callq 0xb450
leaq 0x398(%rsp), %rdi
callq 0xb6e8
leaq 0x378(%rsp), %rdi
callq 0xb6e8
leaq 0x358(%rsp), %rdi
callq 0xb6e8
leaq 0x338(%rsp), %rdi
callq 0xb6e8
testb $0x1, 0x578(%rsp)
je 0xa6fbb
leaq 0x2fabf(%rip), %rsi     # 0xd692a
leaq 0x2f8(%rsp), %rdi
leaq 0x3b8(%rsp), %rdx
callq 0xfab0
jmp 0xa6e82
leaq 0x2fc11(%rip), %rdx     # 0xd6a9a
leaq 0x318(%rsp), %rdi
leaq 0x2f8(%rsp), %rsi
callq 0xfa60
jmp 0xa6ea0
movq 0x71109(%rip), %rdi     # 0x117fb0
leaq 0x318(%rsp), %rsi
callq 0xb340
movq %rax, 0x28(%rsp)
jmp 0xa6ebb
movq 0x28(%rsp), %rdi
movq 0x710b9(%rip), %rsi     # 0x117f80
callq 0xb3c0
jmp 0xa6ece
leaq 0x318(%rsp), %rdi
callq 0xb6e8
leaq 0x2f8(%rsp), %rdi
callq 0xb6e8
jmp 0xa6fbb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x538(%rsp)
movl %eax, 0x534(%rsp)
jmp 0xa73b6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x538(%rsp)
movl %eax, 0x534(%rsp)
jmp 0xa6f60
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x538(%rsp)
movl %eax, 0x534(%rsp)
jmp 0xa6f53
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x538(%rsp)
movl %eax, 0x534(%rsp)
leaq 0x378(%rsp), %rdi
callq 0xb6e8
leaq 0x358(%rsp), %rdi
callq 0xb6e8
leaq 0x338(%rsp), %rdi
callq 0xb6e8
jmp 0xa73b6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x538(%rsp)
movl %eax, 0x534(%rsp)
jmp 0xa6fa9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x538(%rsp)
movl %eax, 0x534(%rsp)
leaq 0x318(%rsp), %rdi
callq 0xb6e8
leaq 0x2f8(%rsp), %rdi
callq 0xb6e8
jmp 0xa73b6
leaq 0x2b8(%rsp), %rdi
leaq 0x3b8(%rsp), %rsi
callq 0xb1a0
jmp 0xa6fd2
leaq 0x2d8(%rsp), %rdi
leaq 0x2b8(%rsp), %rsi
movl $0x1, %edx
callq 0xad450
jmp 0xa6fee
leaq 0x2d8(%rsp), %rdi
callq 0xb6e8
leaq 0x2b8(%rsp), %rdi
callq 0xb6e8
testb $0x1, 0x5c0(%rsp)
je 0xa736e
testb $0x1, 0x578(%rsp)
je 0xa705d
movq 0x70f89(%rip), %rdi     # 0x117fb0
movq 0x70f52(%rip), %rsi     # 0x117f80
callq 0xb3c0
jmp 0xa7035
jmp 0xa705d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x538(%rsp)
movl %eax, 0x534(%rsp)
leaq 0x2b8(%rsp), %rdi
callq 0xb6e8
jmp 0xa73b6
leaq 0x2f8d4(%rip), %rsi     # 0xd6938
leaq 0x258(%rsp), %rdi
leaq 0x3d8(%rsp), %rdx
callq 0xfab0
jmp 0xa707b
leaq 0x2f8b9(%rip), %rdx     # 0xd693b
leaq 0x278(%rsp), %rdi
leaq 0x258(%rsp), %rsi
callq 0xfa60
jmp 0xa7099
leaq 0x217(%rsp), %rdi
movq %rdi, 0x20(%rsp)
callq 0xb690
movq 0x20(%rsp), %rdx
leaq 0x2a9b5(%rip), %rsi     # 0xd1a6c
leaq 0x218(%rsp), %rdi
callq 0xb4c0
jmp 0xa70c6
leaq 0x71453(%rip), %rsi     # 0x118520
leaq 0x238(%rsp), %rdi
leaq 0x218(%rsp), %rdx
xorl %ecx, %ecx
callq 0xc7ee0
jmp 0xa70e6
leaq 0x298(%rsp), %rdi
leaq 0x278(%rsp), %rsi
leaq 0x238(%rsp), %rdx
callq 0x1bf20
jmp 0xa7105
leaq 0x3b8(%rsp), %rdi
leaq 0x298(%rsp), %rsi
callq 0xb450
leaq 0x298(%rsp), %rdi
callq 0xb6e8
leaq 0x238(%rsp), %rdi
callq 0xb6e8
leaq 0x218(%rsp), %rdi
callq 0xb6e8
leaq 0x217(%rsp), %rdi
callq 0xb3f0
leaq 0x278(%rsp), %rdi
callq 0xb6e8
leaq 0x258(%rsp), %rdi
callq 0xb6e8
testb $0x1, 0x578(%rsp)
je 0xa72fc
leaq 0x2f7ad(%rip), %rsi     # 0xd692a
leaq 0x1d0(%rsp), %rdi
leaq 0x3b8(%rsp), %rdx
callq 0xfab0
jmp 0xa7194
leaq 0x2f8ff(%rip), %rdx     # 0xd6a9a
leaq 0x1f0(%rsp), %rdi
leaq 0x1d0(%rsp), %rsi
callq 0xfa60
jmp 0xa71b2
movq 0x70df7(%rip), %rdi     # 0x117fb0
leaq 0x1f0(%rsp), %rsi
callq 0xb340
movq %rax, 0x18(%rsp)
jmp 0xa71cd
movq 0x18(%rsp), %rdi
movq 0x70da7(%rip), %rsi     # 0x117f80
callq 0xb3c0
movq %rax, 0x10(%rsp)
jmp 0xa71e5
movq 0x10(%rsp), %rdi
movq 0x70d8f(%rip), %rsi     # 0x117f80
callq 0xb3c0
jmp 0xa71f8
leaq 0x1f0(%rsp), %rdi
callq 0xb6e8
leaq 0x1d0(%rsp), %rdi
callq 0xb6e8
jmp 0xa72fc
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x538(%rsp)
movl %eax, 0x534(%rsp)
jmp 0xa72a1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x538(%rsp)
movl %eax, 0x534(%rsp)
jmp 0xa7287
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x538(%rsp)
movl %eax, 0x534(%rsp)
jmp 0xa727a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x538(%rsp)
movl %eax, 0x534(%rsp)
leaq 0x238(%rsp), %rdi
callq 0xb6e8
leaq 0x218(%rsp), %rdi
callq 0xb6e8
leaq 0x217(%rsp), %rdi
callq 0xb3f0
leaq 0x278(%rsp), %rdi
callq 0xb6e8
leaq 0x258(%rsp), %rdi
callq 0xb6e8
jmp 0xa73b6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x538(%rsp)
movl %eax, 0x534(%rsp)
jmp 0xa72ea
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x538(%rsp)
movl %eax, 0x534(%rsp)
leaq 0x1f0(%rsp), %rdi
callq 0xb6e8
leaq 0x1d0(%rsp), %rdi
callq 0xb6e8
jmp 0xa73b6
leaq 0x190(%rsp), %rdi
leaq 0x3b8(%rsp), %rsi
callq 0xb1a0
jmp 0xa7313
leaq 0x1b0(%rsp), %rdi
leaq 0x190(%rsp), %rsi
movl $0x1, %edx
callq 0xad450
jmp 0xa732f
leaq 0x1b0(%rsp), %rdi
callq 0xb6e8
leaq 0x190(%rsp), %rdi
callq 0xb6e8
jmp 0xa736e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x538(%rsp)
movl %eax, 0x534(%rsp)
leaq 0x190(%rsp), %rdi
callq 0xb6e8
jmp 0xa73b6
leaq 0x540(%rsp), %rdi
addq $0x60, %rdi
callq 0xb610
testb $0x1, %al
jne 0xa7385
jmp 0xa739a
leaq 0x3d8(%rsp), %rdi
callq 0xb190
movq %rax, %rdi
callq 0xb6a0
leaq 0x3b8(%rsp), %rdi
callq 0xb6e8
leaq 0x3d8(%rsp), %rdi
callq 0xb6e8
jmp 0xa73d2
leaq 0x3b8(%rsp), %rdi
callq 0xb6e8
leaq 0x3d8(%rsp), %rdi
callq 0xb6e8
jmp 0xa740d
leaq 0x540(%rsp), %rdi
addq $0x40, %rdi
callq 0xb610
testb $0x1, %al
jne 0xa73e9
jmp 0xa73fe
leaq 0x440(%rsp), %rdi
callq 0xb190
movq %rax, %rdi
callq 0xb6a0
leaq 0x440(%rsp), %rdi
callq 0xb6e8
jmp 0xa741c
leaq 0x440(%rsp), %rdi
callq 0xb6e8
jmp 0xa742b
leaq 0x460(%rsp), %rdi
callq 0xb6e8
jmp 0xa743a
leaq 0x460(%rsp), %rdi
callq 0xb6e8
jmp 0xa74ae
testb $0x1, 0x578(%rsp)
je 0xa7489
movq 0x70b65(%rip), %rdi     # 0x117fb0
movq 0x70b2e(%rip), %rsi     # 0x117f80
callq 0xb3c0
movq %rax, 0x8(%rsp)
jmp 0xa745e
movq 0x8(%rsp), %rdi
leaq 0x2f4ed(%rip), %rsi     # 0xd6957
callq 0xb380
movq %rax, (%rsp)
jmp 0xa7475
movq (%rsp), %rdi
movq 0x70b00(%rip), %rsi     # 0x117f80
callq 0xb3c0
jmp 0xa7487
jmp 0xa7489
movl $0x0, 0x5d4(%rsp)
movl $0x1, 0x530(%rsp)
leaq 0x4a0(%rsp), %rdi
callq 0xa7c20
jmp 0xa74bd
leaq 0x4a0(%rsp), %rdi
callq 0xa7c20
jmp 0xa74d9
leaq 0x540(%rsp), %rdi
callq 0xa7cb0
movl 0x5d4(%rsp), %eax
addq $0x5d8, %rsp            # imm = 0x5D8
retq
leaq 0x540(%rsp), %rdi
callq 0xa7cb0
movq 0x538(%rsp), %rdi
callq 0xb680
nopw %cs:(%rax,%rax)