// File: ClauParser[P]ClauParser/./source/main.cpp
// Function: main
int main(void)
{
	{
		clau_parser::Maker maker("AAA");

		maker.NewItem("x", "1")
			.NewGroup("test")
			.NewItem("a", "0")
			.NewItem("b", "1")
			.EndGroup()
			.NewItem("str", "\"wow\"");

		clau_parser::Maker maker2;
		clau_parser::UserType* result = maker2.NewItem("z", "-1")
			.NewGroup(maker)
			.NewItem("abc", "def")
			.Get();

		std::cout << result->ToString() << "\n";

		delete result;
	}


	/*
	{
		wiz::UserType ut("Name");
		wiz::ItemType<std::string> it("Name", "Data");
		
		ut.AddItemType(it);
	}


	{
		wiz::UserType ut("Name");
		wiz::UserType global("Name");

		global.AddUserTypeItem(ut); // ³»ºÎ¿¡¼­ µ¿ÀûÇÒ´ç
	}




	{
		wiz::UserType global;
		global.AddItem("date", "1947.5.8");
		global.AddItem("save_game", "\"Russia.eu4\"");
		{
			wiz::UserType temp("savegame_versions");
			temp.AddItem("", "\"1.18.1.0\"");
			temp.AddItem("", "\"1.18.2.0\"");
			temp.AddItem("", "\"1.18.3.0\"");
			temp.AddItem("", "\"1.18.4.0\"");
			temp.AddItem("", "\"1.19.1.0\"");
			global.AddUserTypeItem(temp);
		}

		std::cout << global.ToString();
	}
	*/
	
	std::string fileName = "input.eu4"; 
	
	std::cin >> fileName;
	/*
	for (int i = 0; i <= 32; ++i) {
		clau_parser::UserType global;

		auto start = std::chrono::steady_clock::now();

		std::cout << i << "th \n";
		clau_parser::LoadData::LoadDataFromFile(fileName, global, i, i);


		auto last = std::chrono::steady_clock::now();
		auto dur = std::chrono::duration_cast<std::chrono::milliseconds>(last - start);

		std::cout << dur.count() << "ms" << "\n";
	
		//clau_parser::LoadData::SaveWizDB2(global, "output.eu4");
	}
	*/
	for (int i = 0; i < 5; ++i) {
		clau_parser::UserType global;


		auto start = std::chrono::steady_clock::now();

		clau_parser::LoadData::LoadDataFromFile(fileName, global, 0, 0, false); // true - error detected..
		auto last = std::chrono::steady_clock::now();
		auto dur = std::chrono::duration_cast<std::chrono::milliseconds>(last - start);

		std::cout << dur.count() << "ms" << "\n";

		//clau_parser::LoadData::SaveWizDB2(global, "output.eu4");
	}

	for (int i = 0; i < 0; ++i) {
		clau_parser::UserType global;


		auto start = std::chrono::steady_clock::now();

		clau_parser::LoadData::LoadDataFromFile(fileName, global, 0, i);
		auto last = std::chrono::steady_clock::now();
		auto dur = std::chrono::duration_cast<std::chrono::milliseconds>(last - start);

		std::cout << dur.count() << "ms" << "\n";

		//clau_parser::LoadData::SaveWizDB2(global, "output.eu4");
	}

	return 0;
}

// Assembly:
subq $0x648, %rsp            # imm = 0x648
movl $0x0, 0x644(%rsp)
leaq 0x5f7(%rsp), %rdi
movq %rdi, 0x138(%rsp)
callq 0x33e0
movq 0x138(%rsp), %rdx
leaq 0x18e52(%rip), %rsi     # 0x1c408
leaq 0x5f8(%rsp), %rdi
callq 0x44e0
jmp 0x35c5
leaq 0x618(%rsp), %rdi
leaq 0x5f8(%rsp), %rsi
callq 0x45a0
jmp 0x35dc
leaq 0x5f8(%rsp), %rdi
callq 0x3160
leaq 0x5f7(%rsp), %rdi
callq 0x3270
leaq 0x5bf(%rsp), %rdi
movq %rdi, 0x130(%rsp)
callq 0x33e0
movq 0x130(%rsp), %rdx
leaq 0x18df2(%rip), %rsi     # 0x1c40c
leaq 0x5c0(%rsp), %rdi
callq 0x44e0
jmp 0x3629
leaq 0x597(%rsp), %rdi
movq %rdi, 0x128(%rsp)
callq 0x33e0
movq 0x128(%rsp), %rdx
leaq 0x18dd7(%rip), %rsi     # 0x1c424
leaq 0x598(%rsp), %rdi
callq 0x44e0
jmp 0x365c
leaq 0x618(%rsp), %rdi
leaq 0x5c0(%rsp), %rsi
leaq 0x598(%rsp), %rdx
callq 0x4670
movq %rax, 0x120(%rsp)
jmp 0x3683
leaq 0x56f(%rsp), %rdi
movq %rdi, 0x118(%rsp)
callq 0x33e0
movq 0x118(%rsp), %rdx
leaq 0x18d67(%rip), %rsi     # 0x1c40e
leaq 0x570(%rsp), %rdi
callq 0x44e0
jmp 0x36b6
movq 0x120(%rsp), %rdi
leaq 0x570(%rsp), %rsi
callq 0x46c0
movq %rax, 0x110(%rsp)
jmp 0x36d5
leaq 0x547(%rsp), %rdi
movq %rdi, 0x108(%rsp)
callq 0x33e0
movq 0x108(%rsp), %rdx
leaq 0x18d1a(%rip), %rsi     # 0x1c413
leaq 0x548(%rsp), %rdi
callq 0x44e0
jmp 0x3708
leaq 0x51f(%rsp), %rdi
movq %rdi, 0x100(%rsp)
callq 0x33e0
movq 0x100(%rsp), %rdx
leaq 0x18ce9(%rip), %rsi     # 0x1c415
leaq 0x520(%rsp), %rdi
callq 0x44e0
jmp 0x373b
movq 0x110(%rsp), %rdi
leaq 0x548(%rsp), %rsi
leaq 0x520(%rsp), %rdx
callq 0x4670
movq %rax, 0xf8(%rsp)
jmp 0x3762
leaq 0x4f7(%rsp), %rdi
movq %rdi, 0xf0(%rsp)
callq 0x33e0
movq 0xf0(%rsp), %rdx
leaq 0x18d0c(%rip), %rsi     # 0x1c492
leaq 0x4f8(%rsp), %rdi
callq 0x44e0
jmp 0x3795
leaq 0x4cf(%rsp), %rdi
movq %rdi, 0xe8(%rsp)
callq 0x33e0
movq 0xe8(%rsp), %rdx
leaq 0x18c6b(%rip), %rsi     # 0x1c424
leaq 0x4d0(%rsp), %rdi
callq 0x44e0
jmp 0x37c8
movq 0xf8(%rsp), %rdi
leaq 0x4f8(%rsp), %rsi
leaq 0x4d0(%rsp), %rdx
callq 0x4670
movq %rax, 0xe0(%rsp)
jmp 0x37ef
movq 0xe0(%rsp), %rdi
callq 0x47b0
movq %rax, 0xd8(%rsp)
jmp 0x3806
leaq 0x4a7(%rsp), %rdi
movq %rdi, 0xd0(%rsp)
callq 0x33e0
movq 0xd0(%rsp), %rdx
leaq 0x18bed(%rip), %rsi     # 0x1c417
leaq 0x4a8(%rsp), %rdi
callq 0x44e0
jmp 0x3839
leaq 0x47f(%rsp), %rdi
movq %rdi, 0xc8(%rsp)
callq 0x33e0
movq 0xc8(%rsp), %rdx
leaq 0x18bbe(%rip), %rsi     # 0x1c41b
leaq 0x480(%rsp), %rdi
callq 0x44e0
jmp 0x386c
movq 0xd8(%rsp), %rdi
leaq 0x4a8(%rsp), %rsi
leaq 0x480(%rsp), %rdx
callq 0x4670
jmp 0x388b
leaq 0x480(%rsp), %rdi
callq 0x3160
leaq 0x47f(%rsp), %rdi
callq 0x3270
leaq 0x4a8(%rsp), %rdi
callq 0x3160
leaq 0x4a7(%rsp), %rdi
callq 0x3270
leaq 0x4d0(%rsp), %rdi
callq 0x3160
leaq 0x4cf(%rsp), %rdi
callq 0x3270
leaq 0x4f8(%rsp), %rdi
callq 0x3160
leaq 0x4f7(%rsp), %rdi
callq 0x3270
leaq 0x520(%rsp), %rdi
callq 0x3160
leaq 0x51f(%rsp), %rdi
callq 0x3270
leaq 0x548(%rsp), %rdi
callq 0x3160
leaq 0x547(%rsp), %rdi
callq 0x3270
leaq 0x570(%rsp), %rdi
callq 0x3160
leaq 0x56f(%rsp), %rdi
callq 0x3270
leaq 0x598(%rsp), %rdi
callq 0x3160
leaq 0x597(%rsp), %rdi
callq 0x3270
leaq 0x5c0(%rsp), %rdi
callq 0x3160
leaq 0x5bf(%rsp), %rdi
callq 0x3270
leaq 0x42f(%rsp), %rdi
movq %rdi, 0xc0(%rsp)
callq 0x33e0
movq 0xc0(%rsp), %rdx
leaq 0x18a96(%rip), %rsi     # 0x1c42f
leaq 0x430(%rsp), %rdi
callq 0x44e0
jmp 0x39a8
leaq 0x450(%rsp), %rdi
leaq 0x430(%rsp), %rsi
callq 0x45a0
jmp 0x39bf
leaq 0x430(%rsp), %rdi
callq 0x3160
leaq 0x42f(%rsp), %rdi
callq 0x3270
leaq 0x3ff(%rsp), %rdi
movq %rdi, 0xb8(%rsp)
callq 0x33e0
movq 0xb8(%rsp), %rdx
leaq 0x18a24(%rip), %rsi     # 0x1c421
leaq 0x400(%rsp), %rdi
callq 0x44e0
jmp 0x3a0c
leaq 0x3d7(%rsp), %rdi
movq %rdi, 0xb0(%rsp)
callq 0x33e0
movq 0xb0(%rsp), %rdx
leaq 0x189f3(%rip), %rsi     # 0x1c423
leaq 0x3d8(%rsp), %rdi
callq 0x44e0
jmp 0x3a3f
leaq 0x450(%rsp), %rdi
leaq 0x400(%rsp), %rsi
leaq 0x3d8(%rsp), %rdx
callq 0x4670
movq %rax, 0xa8(%rsp)
jmp 0x3a66
movq 0xa8(%rsp), %rdi
leaq 0x618(%rsp), %rsi
callq 0x4900
movq %rax, 0xa0(%rsp)
jmp 0x3a85
leaq 0x3af(%rsp), %rdi
movq %rdi, 0x98(%rsp)
callq 0x33e0
movq 0x98(%rsp), %rdx
leaq 0x1897d(%rip), %rsi     # 0x1c426
leaq 0x3b0(%rsp), %rdi
callq 0x44e0
jmp 0x3ab8
leaq 0x387(%rsp), %rdi
movq %rdi, 0x90(%rsp)
callq 0x33e0
movq 0x90(%rsp), %rdx
leaq 0x1894e(%rip), %rsi     # 0x1c42a
leaq 0x388(%rsp), %rdi
callq 0x44e0
jmp 0x3aeb
movq 0xa0(%rsp), %rdi
leaq 0x3b0(%rsp), %rsi
leaq 0x388(%rsp), %rdx
callq 0x4670
movq %rax, 0x88(%rsp)
jmp 0x3b12
movq 0x88(%rsp), %rdi
callq 0x4990
movq %rax, 0x80(%rsp)
jmp 0x3b29
leaq 0x388(%rsp), %rdi
callq 0x3160
leaq 0x387(%rsp), %rdi
callq 0x3270
leaq 0x3b0(%rsp), %rdi
callq 0x3160
leaq 0x3af(%rsp), %rdi
callq 0x3270
leaq 0x3d8(%rsp), %rdi
callq 0x3160
leaq 0x3d7(%rsp), %rdi
callq 0x3270
leaq 0x400(%rsp), %rdi
callq 0x3160
leaq 0x3ff(%rsp), %rdi
callq 0x3270
movq 0x80(%rsp), %rax
movq %rax, 0x420(%rsp)
movq 0x420(%rsp), %rsi
leaq 0x360(%rsp), %rdi
callq 0x49c0
jmp 0x3bb8
movq 0x23411(%rip), %rdi     # 0x26fd0
leaq 0x360(%rsp), %rsi
callq 0x31f0
movq %rax, 0x78(%rsp)
jmp 0x3bd3
movq 0x78(%rsp), %rdi
leaq 0x1884f(%rip), %rsi     # 0x1c42e
callq 0x3210
jmp 0x3be6
leaq 0x360(%rsp), %rdi
callq 0x3160
movq 0x420(%rsp), %rax
movq %rax, 0x70(%rsp)
cmpq $0x0, %rax
je 0x3c11
movq 0x70(%rsp), %rdi
movq (%rdi), %rax
callq *0x8(%rax)
leaq 0x450(%rsp), %rdi
callq 0x4e70
leaq 0x618(%rsp), %rdi
callq 0x4e70
leaq 0x33f(%rsp), %rdi
movq %rdi, 0x68(%rsp)
callq 0x33e0
movq 0x68(%rsp), %rdx
leaq 0x187e7(%rip), %rsi     # 0x1c430
leaq 0x340(%rsp), %rdi
callq 0x44e0
jmp 0x3c58
leaq 0x33f(%rsp), %rdi
callq 0x3270
movq 0x23374(%rip), %rdi     # 0x26fe0
leaq 0x340(%rsp), %rsi
callq 0x3310
jmp 0x3c7b
movl $0x0, 0x338(%rsp)
cmpl $0x5, 0x338(%rsp)
jge 0x42b7
leaq 0x267(%rsp), %rdi
movq %rdi, 0x60(%rsp)
callq 0x33e0
movq 0x60(%rsp), %rdx
leaq 0x1877d(%rip), %rsi     # 0x1c42f
leaq 0x268(%rsp), %rdi
callq 0x44e0
jmp 0x3cc1
leaq 0x288(%rsp), %rdi
leaq 0x268(%rsp), %rsi
callq 0x4ed0
jmp 0x3cd8
leaq 0x268(%rsp), %rdi
callq 0x3160
leaq 0x267(%rsp), %rdi
callq 0x3270
callq 0x3330
movq %rax, 0x258(%rsp)
leaq 0x340(%rsp), %rdi
leaq 0x288(%rsp), %rsi
xorl %r8d, %r8d
movl %r8d, %edx
movl %r8d, %ecx
callq 0x4f70
jmp 0x3d1f
callq 0x3330
movq %rax, 0x250(%rsp)
leaq 0x250(%rsp), %rdi
leaq 0x258(%rsp), %rsi
callq 0x5430
movq %rax, 0x58(%rsp)
jmp 0x3d48
movq 0x58(%rsp), %rax
movq %rax, 0x240(%rsp)
leaq 0x240(%rsp), %rdi
callq 0x5400
movq %rax, 0x50(%rsp)
jmp 0x3d69
movq 0x50(%rsp), %rax
movq %rax, 0x248(%rsp)
leaq 0x248(%rsp), %rdi
callq 0x5480
movq %rax, 0x48(%rsp)
jmp 0x3d8a
movq 0x48(%rsp), %rsi
movq 0x2323a(%rip), %rdi     # 0x26fd0
callq 0x3400
movq %rax, 0x40(%rsp)
jmp 0x3da2
movq 0x40(%rsp), %rdi
leaq 0x1868c(%rip), %rsi     # 0x1c43a
callq 0x3210
movq %rax, 0x38(%rsp)
jmp 0x3dba
movq 0x38(%rsp), %rdi
leaq 0x18668(%rip), %rsi     # 0x1c42e
callq 0x3210
jmp 0x3dcd
leaq 0x288(%rsp), %rdi
callq 0x5490
movl 0x338(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x338(%rsp)
jmp 0x3c86
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x5e8(%rsp)
movl %eax, 0x5e4(%rsp)
jmp 0x3e27
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x5e8(%rsp)
movl %eax, 0x5e4(%rsp)
leaq 0x5f8(%rsp), %rdi
callq 0x3160
leaq 0x5f7(%rsp), %rdi
callq 0x3270
jmp 0x44cd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x5e8(%rsp)
movl %eax, 0x5e4(%rsp)
jmp 0x4066
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x5e8(%rsp)
movl %eax, 0x5e4(%rsp)
jmp 0x404c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x5e8(%rsp)
movl %eax, 0x5e4(%rsp)
jmp 0x403f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x5e8(%rsp)
movl %eax, 0x5e4(%rsp)
jmp 0x4032
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x5e8(%rsp)
movl %eax, 0x5e4(%rsp)
jmp 0x4025
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x5e8(%rsp)
movl %eax, 0x5e4(%rsp)
jmp 0x4018
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x5e8(%rsp)
movl %eax, 0x5e4(%rsp)
jmp 0x3ffe
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x5e8(%rsp)
movl %eax, 0x5e4(%rsp)
jmp 0x3ff1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x5e8(%rsp)
movl %eax, 0x5e4(%rsp)
jmp 0x3fe4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x5e8(%rsp)
movl %eax, 0x5e4(%rsp)
jmp 0x3fca
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x5e8(%rsp)
movl %eax, 0x5e4(%rsp)
jmp 0x3fbd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x5e8(%rsp)
movl %eax, 0x5e4(%rsp)
jmp 0x3fb0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x5e8(%rsp)
movl %eax, 0x5e4(%rsp)
jmp 0x3f96
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x5e8(%rsp)
movl %eax, 0x5e4(%rsp)
leaq 0x480(%rsp), %rdi
callq 0x3160
leaq 0x47f(%rsp), %rdi
callq 0x3270
leaq 0x4a8(%rsp), %rdi
callq 0x3160
leaq 0x4a7(%rsp), %rdi
callq 0x3270
leaq 0x4d0(%rsp), %rdi
callq 0x3160
leaq 0x4cf(%rsp), %rdi
callq 0x3270
leaq 0x4f8(%rsp), %rdi
callq 0x3160
leaq 0x4f7(%rsp), %rdi
callq 0x3270
leaq 0x520(%rsp), %rdi
callq 0x3160
leaq 0x51f(%rsp), %rdi
callq 0x3270
leaq 0x548(%rsp), %rdi
callq 0x3160
leaq 0x547(%rsp), %rdi
callq 0x3270
leaq 0x570(%rsp), %rdi
callq 0x3160
leaq 0x56f(%rsp), %rdi
callq 0x3270
leaq 0x598(%rsp), %rdi
callq 0x3160
leaq 0x597(%rsp), %rdi
callq 0x3270
leaq 0x5c0(%rsp), %rdi
callq 0x3160
leaq 0x5bf(%rsp), %rdi
callq 0x3270
jmp 0x41f7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x5e8(%rsp)
movl %eax, 0x5e4(%rsp)
jmp 0x40af
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x5e8(%rsp)
movl %eax, 0x5e4(%rsp)
leaq 0x430(%rsp), %rdi
callq 0x3160
leaq 0x42f(%rsp), %rdi
callq 0x3270
jmp 0x41f7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x5e8(%rsp)
movl %eax, 0x5e4(%rsp)
jmp 0x41a4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x5e8(%rsp)
movl %eax, 0x5e4(%rsp)
jmp 0x418a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x5e8(%rsp)
movl %eax, 0x5e4(%rsp)
jmp 0x417d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x5e8(%rsp)
movl %eax, 0x5e4(%rsp)
jmp 0x4170
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x5e8(%rsp)
movl %eax, 0x5e4(%rsp)
jmp 0x4156
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x5e8(%rsp)
movl %eax, 0x5e4(%rsp)
leaq 0x388(%rsp), %rdi
callq 0x3160
leaq 0x387(%rsp), %rdi
callq 0x3270
leaq 0x3b0(%rsp), %rdi
callq 0x3160
leaq 0x3af(%rsp), %rdi
callq 0x3270
leaq 0x3d8(%rsp), %rdi
callq 0x3160
leaq 0x3d7(%rsp), %rdi
callq 0x3270
leaq 0x400(%rsp), %rdi
callq 0x3160
leaq 0x3ff(%rsp), %rdi
callq 0x3270
jmp 0x41ea
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x5e8(%rsp)
movl %eax, 0x5e4(%rsp)
jmp 0x41ea
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x5e8(%rsp)
movl %eax, 0x5e4(%rsp)
leaq 0x360(%rsp), %rdi
callq 0x3160
leaq 0x450(%rsp), %rdi
callq 0x4e70
leaq 0x618(%rsp), %rdi
callq 0x4e70
jmp 0x44cd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x5e8(%rsp)
movl %eax, 0x5e4(%rsp)
leaq 0x33f(%rsp), %rdi
callq 0x3270
jmp 0x44cd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x5e8(%rsp)
movl %eax, 0x5e4(%rsp)
jmp 0x44c0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x5e8(%rsp)
movl %eax, 0x5e4(%rsp)
jmp 0x427f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x5e8(%rsp)
movl %eax, 0x5e4(%rsp)
leaq 0x268(%rsp), %rdi
callq 0x3160
leaq 0x267(%rsp), %rdi
callq 0x3270
jmp 0x44c0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x5e8(%rsp)
movl %eax, 0x5e4(%rsp)
leaq 0x288(%rsp), %rdi
callq 0x5490
jmp 0x44c0
movl $0x0, 0x23c(%rsp)
cmpl $0x0, 0x23c(%rsp)
jge 0x4499
leaq 0x167(%rsp), %rdi
movq %rdi, 0x30(%rsp)
callq 0x33e0
movq 0x30(%rsp), %rdx
leaq 0x18141(%rip), %rsi     # 0x1c42f
leaq 0x168(%rsp), %rdi
callq 0x44e0
jmp 0x42fd
leaq 0x188(%rsp), %rdi
leaq 0x168(%rsp), %rsi
callq 0x4ed0
jmp 0x4314
leaq 0x168(%rsp), %rdi
callq 0x3160
leaq 0x167(%rsp), %rdi
callq 0x3270
callq 0x3330
movq %rax, 0x158(%rsp)
movl 0x23c(%rsp), %ecx
leaq 0x340(%rsp), %rdi
leaq 0x188(%rsp), %rsi
xorl %r8d, %r8d
movl %r8d, %edx
callq 0x4f70
jmp 0x435f
callq 0x3330
movq %rax, 0x150(%rsp)
leaq 0x150(%rsp), %rdi
leaq 0x158(%rsp), %rsi
callq 0x5430
movq %rax, 0x28(%rsp)
jmp 0x4388
movq 0x28(%rsp), %rax
movq %rax, 0x140(%rsp)
leaq 0x140(%rsp), %rdi
callq 0x5400
movq %rax, 0x20(%rsp)
jmp 0x43a9
movq 0x20(%rsp), %rax
movq %rax, 0x148(%rsp)
leaq 0x148(%rsp), %rdi
callq 0x5480
movq %rax, 0x18(%rsp)
jmp 0x43ca
movq 0x18(%rsp), %rsi
movq 0x22bfa(%rip), %rdi     # 0x26fd0
callq 0x3400
movq %rax, 0x10(%rsp)
jmp 0x43e2
movq 0x10(%rsp), %rdi
leaq 0x1804c(%rip), %rsi     # 0x1c43a
callq 0x3210
movq %rax, 0x8(%rsp)
jmp 0x43fa
movq 0x8(%rsp), %rdi
leaq 0x18028(%rip), %rsi     # 0x1c42e
callq 0x3210
jmp 0x440d
leaq 0x188(%rsp), %rdi
callq 0x5490
movl 0x23c(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x23c(%rsp)
jmp 0x42c2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x5e8(%rsp)
movl %eax, 0x5e4(%rsp)
jmp 0x4467
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x5e8(%rsp)
movl %eax, 0x5e4(%rsp)
leaq 0x168(%rsp), %rdi
callq 0x3160
leaq 0x167(%rsp), %rdi
callq 0x3270
jmp 0x44c0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x5e8(%rsp)
movl %eax, 0x5e4(%rsp)
leaq 0x188(%rsp), %rdi
callq 0x5490
jmp 0x44c0
movl $0x0, 0x644(%rsp)
leaq 0x340(%rsp), %rdi
callq 0x3160
movl 0x644(%rsp), %eax
addq $0x648, %rsp            # imm = 0x648
retq
leaq 0x340(%rsp), %rdi
callq 0x3160
movq 0x5e8(%rsp), %rdi
callq 0x33d0
nopw (%rax,%rax)