// File: gualtieromalde[P]owmread/owmread.C
// Function: main
int main(int nargs, char ** args)
{
	boost::program_options::options_description desc("owmread reads OpenWeatherMap current weather and feed it to FlightGear. Options:");
	desc.add_options()
    	("help", "produce help message")
    	("key", boost::program_options::value<std::string>(), "set OpenWeatherMap api key (if not specified search from file key, or from standard input)")
    	("port", boost::program_options::value<int>(), "set httpd port to communicate with FlightGear (fgfs must run with --httpd=port)")
	("interval", boost::program_options::value<int>()->default_value(10), "number of seconds between each API call. Default is 10. Note that, for the free OpenWeatherMap account the limit is set to 60 calls/minute and 1M calls/month, so a safe limit is interval>=3 s.")
    	("quiet", "does not display output")
;

	boost::program_options::variables_map vm;
	boost::program_options::store(boost::program_options::parse_command_line(nargs, args, desc), vm);
	boost::program_options::notify(vm);   

	bool ovr_key;
	bool isQuiet;

	int sleep_time =  vm["interval"].as<int>(); 
	if(sleep_time<=1)
	{
		std::clog << "Sleep time <= 1 s. This could generate a number of API calls per minute not allowed in OpenWeatherMap free plan. Continue? y/n: ";
		char yn; std::cin >> yn;
		if(yn!='y' || yn!='Y') return 2;	
	}
	else if(sleep_time<3)
	{
		std::clog << "Sleep time < 3 s. This could generate a number of API calls per month not allowed in OpenWeatherMap free plan. Continue? y/n: ";
		char yn; std::cin >> yn;
		if(yn!='y' || yn!='Y') return 2;	
	}
		


	std::string argKey;

	if(vm.count("help"))
	{
		std::clog << desc <<"\n";
		return 1;
	}

	if(vm.count("key")) 
	{
		ovr_key=true;
	      	argKey = vm["key"].as<std::string>();
	}
	else 
		ovr_key=false;

	int port;
	if(vm.count("port"))
	{
		port=vm["port"].as<int>();
	}
	else
	{
		std::cout << "insert port: ";
		std::cin >> port;
	}

	isQuiet = vm.count("quiet");

	std::string myKey;
	std::ifstream keyFile("key");
	if(!ovr_key && keyFile.good() )
	{
		keyFile >> myKey;
		keyFile.close();
	}
	else if(!ovr_key)
	{
		std::clog << "insert key: ";
		std::cin >> myKey;
		std::ofstream kF("key");
		kF << myKey;
		kF.close();
	}
	else
	{
		myKey =	argKey;
	}
	std::chrono::seconds interval( sleep_time ) ;


	while(true)
	{
		auto now = std::chrono::system_clock::now();
		std::time_t now_time = std::chrono::system_clock::to_time_t(now);
		Coord c =readCoord(port);
		Weather w = getWeather(c.lat, c.lon, myKey);
		setMetar(port, w.makeMetar());
		if(!isQuiet) std::cout << std::ctime(&now_time) <<c.lat << " " << c.lon << " " << " " << w.makeMetar();

		std::this_thread::sleep_for( interval ) ;
	}
}

// Assembly:
subq $0x988, %rsp            # imm = 0x988
movl $0x0, 0x984(%rsp)
movl %edi, 0x980(%rsp)
movq %rsi, 0x978(%rsp)
leaq 0x8d7(%rsp), %rdi
movq %rdi, 0x170(%rsp)
callq 0xa9b0
movq 0x170(%rsp), %rdx
leaq 0x38ba4(%rip), %rsi     # 0x466f9
leaq 0x8d8(%rsp), %rdi
callq 0xa860
jmp 0xdb64
movq 0x4f46d(%rip), %rax     # 0x5cfd8
movl (%rax), %edx
movl %edx, %ecx
shrl %ecx
leaq 0x8f8(%rsp), %rdi
leaq 0x8d8(%rsp), %rsi
callq 0xa6b0
jmp 0xdb88
leaq 0x8d8(%rsp), %rdi
callq 0xac68
leaq 0x8d7(%rsp), %rdi
callq 0xac40
leaq 0x8f8(%rsp), %rdi
callq 0xa990
movq %rax, 0x168(%rsp)
jmp 0xdbb9
movq 0x168(%rsp), %rax
movq %rax, 0x8b8(%rsp)
leaq 0x38b7a(%rip), %rsi     # 0x4674a
leaq 0x38b78(%rip), %rdx     # 0x4674f
leaq 0x8b8(%rsp), %rdi
callq 0xa760
movq %rax, 0x160(%rsp)
jmp 0xdbee
callq 0xf1e0
movq %rax, 0x158(%rsp)
jmp 0xdbfd
movq 0x158(%rsp), %rdx
movq 0x160(%rsp), %rdi
leaq 0x38b50(%rip), %rsi     # 0x46764
leaq 0x38b4d(%rip), %rcx     # 0x46768
callq 0xa7d0
movq %rax, 0x150(%rsp)
jmp 0xdc2a
callq 0xf1f0
movq %rax, 0x148(%rsp)
jmp 0xdc39
movq 0x148(%rsp), %rdx
movq 0x150(%rsp), %rdi
leaq 0x38b73(%rip), %rsi     # 0x467c3
leaq 0x38b71(%rip), %rcx     # 0x467c8
callq 0xa7d0
movq %rax, 0x140(%rsp)
jmp 0xdc66
callq 0xf1f0
movq %rax, 0x138(%rsp)
jmp 0xdc75
movq 0x138(%rsp), %rdi
movl $0xa, 0x8b4(%rsp)
leaq 0x8b4(%rsp), %rsi
callq 0xf200
movq %rax, 0x130(%rsp)
jmp 0xdc9f
movq 0x130(%rsp), %rdx
movq 0x140(%rsp), %rdi
leaq 0x38b62(%rip), %rsi     # 0x46818
leaq 0x38b64(%rip), %rcx     # 0x46821
callq 0xa7d0
movq %rax, 0x128(%rsp)
jmp 0xdccc
movq 0x128(%rsp), %rdi
leaq 0x38c07(%rip), %rsi     # 0x468e2
leaq 0x38c06(%rip), %rdx     # 0x468e8
callq 0xa760
jmp 0xdce9
leaq 0x810(%rsp), %rdi
callq 0xa150
jmp 0xdcf8
movl 0x980(%rsp), %eax
movl %eax, 0x11c(%rsp)
movq 0x978(%rsp), %rax
movq %rax, 0x120(%rsp)
xorps %xmm0, %xmm0
movaps %xmm0, 0x7d0(%rsp)
movaps %xmm0, 0x7c0(%rsp)
leaq 0x7c0(%rsp), %rdi
callq 0xf3b0
jmp 0xdd38
movq 0x120(%rsp), %rdx
movl 0x11c(%rsp), %esi
leaq 0x7e8(%rsp), %rdi
leaq 0x8f8(%rsp), %rcx
xorl %r8d, %r8d
leaq 0x7c0(%rsp), %r9
callq 0xf280
jmp 0xdd69
leaq 0x7e8(%rsp), %rdi
leaq 0x810(%rsp), %rsi
xorl %edx, %edx
callq 0xa890
jmp 0xdd82
leaq 0x7e8(%rsp), %rdi
callq 0xf3c0
leaq 0x7c0(%rsp), %rdi
callq 0xf3d0
leaq 0x810(%rsp), %rdi
callq 0xa840
jmp 0xddab
leaq 0x797(%rsp), %rdi
movq %rdi, 0x110(%rsp)
callq 0xa9b0
movq 0x110(%rsp), %rdx
leaq 0x38a49(%rip), %rsi     # 0x46818
leaq 0x798(%rsp), %rdi
callq 0xa860
jmp 0xddde
leaq 0x810(%rsp), %rdi
leaq 0x798(%rsp), %rsi
callq 0xf3f0
movq %rax, 0x108(%rsp)
jmp 0xddfd
movq 0x108(%rsp), %rdi
callq 0xf420
movq %rax, 0x100(%rsp)
jmp 0xde14
movq 0x100(%rsp), %rax
movl (%rax), %eax
movl %eax, 0xfc(%rsp)
leaq 0x798(%rsp), %rdi
callq 0xac68
leaq 0x797(%rsp), %rdi
callq 0xac40
movl 0xfc(%rsp), %eax
movl %eax, 0x7b8(%rsp)
cmpl $0x1, 0x7b8(%rsp)
jg 0xdfce
movq 0x4f09e(%rip), %rdi     # 0x5cf00
leaq 0x38a97(%rip), %rsi     # 0x46900
callq 0xa5d0
jmp 0xde70
movq 0x4f131(%rip), %rdi     # 0x5cfa8
leaq 0x796(%rsp), %rsi
callq 0xa030
jmp 0xde86
movsbl 0x796(%rsp), %eax
cmpl $0x79, %eax
jne 0xdea4
movsbl 0x796(%rsp), %eax
cmpl $0x59, %eax
je 0xdfcc
movl $0x2, 0x984(%rsp)
movl $0x1, 0x790(%rsp)
jmp 0xea3a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x8c8(%rsp)
movl %eax, 0x8c4(%rsp)
jmp 0xdef6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x8c8(%rsp)
movl %eax, 0x8c4(%rsp)
leaq 0x8d8(%rsp), %rdi
callq 0xac68
leaq 0x8d7(%rsp), %rdi
callq 0xac40
jmp 0xea7d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x8c8(%rsp)
movl %eax, 0x8c4(%rsp)
jmp 0xea70
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x8c8(%rsp)
movl %eax, 0x8c4(%rsp)
jmp 0xea63
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x8c8(%rsp)
movl %eax, 0x8c4(%rsp)
jmp 0xdf71
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x8c8(%rsp)
movl %eax, 0x8c4(%rsp)
leaq 0x7e8(%rsp), %rdi
callq 0xf3c0
leaq 0x7c0(%rsp), %rdi
callq 0xf3d0
jmp 0xea63
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x8c8(%rsp)
movl %eax, 0x8c4(%rsp)
jmp 0xdfba
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x8c8(%rsp)
movl %eax, 0x8c4(%rsp)
leaq 0x798(%rsp), %rdi
callq 0xac68
leaq 0x797(%rsp), %rdi
callq 0xac40
jmp 0xea63
jmp 0xe03c
cmpl $0x3, 0x7b8(%rsp)
jge 0xe03a
movq 0x4ef21(%rip), %rdi     # 0x5cf00
leaq 0x3899b(%rip), %rsi     # 0x46981
callq 0xa5d0
jmp 0xdfed
movq 0x4efb4(%rip), %rdi     # 0x5cfa8
leaq 0x78f(%rsp), %rsi
callq 0xa030
jmp 0xe003
movsbl 0x78f(%rsp), %eax
cmpl $0x79, %eax
jne 0xe01d
movsbl 0x78f(%rsp), %eax
cmpl $0x59, %eax
je 0xe038
movl $0x2, 0x984(%rsp)
movl $0x1, 0x790(%rsp)
jmp 0xea3a
jmp 0xe03a
jmp 0xe03c
leaq 0x768(%rsp), %rdi
callq 0xa390
leaq 0x820(%rsp), %rax
movq %rax, 0xe8(%rsp)
leaq 0x747(%rsp), %rdi
movq %rdi, 0xf0(%rsp)
callq 0xa9b0
movq 0xf0(%rsp), %rdx
leaq 0x386cd(%rip), %rsi     # 0x4674a
leaq 0x748(%rsp), %rdi
callq 0xa860
jmp 0xe08c
movq 0xe8(%rsp), %rdi
leaq 0x748(%rsp), %rsi
callq 0xf430
movq %rax, 0xe0(%rsp)
jmp 0xe0ab
leaq 0x748(%rsp), %rdi
callq 0xac68
leaq 0x747(%rsp), %rdi
callq 0xac40
movq 0xe0(%rsp), %rax
cmpq $0x0, %rax
je 0xe195
movq 0x4ee22(%rip), %rdi     # 0x5cf00
leaq 0x8f8(%rsp), %rsi
callq 0xa570
movq %rax, 0xd8(%rsp)
jmp 0xe0f5
movq 0xd8(%rsp), %rdi
leaq 0x3a1f7(%rip), %rsi     # 0x482fb
callq 0xa5d0
jmp 0xe10b
movl $0x1, 0x984(%rsp)
movl $0x1, 0x790(%rsp)
leaq 0x768(%rsp), %rdi
callq 0xac68
jmp 0xea3a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x8c8(%rsp)
movl %eax, 0x8c4(%rsp)
jmp 0xe16a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x8c8(%rsp)
movl %eax, 0x8c4(%rsp)
leaq 0x748(%rsp), %rdi
callq 0xac68
leaq 0x747(%rsp), %rdi
callq 0xac40
jmp 0xea2b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x8c8(%rsp)
movl %eax, 0x8c4(%rsp)
jmp 0xea2b
leaq 0x820(%rsp), %rax
movq %rax, 0xc8(%rsp)
leaq 0x71f(%rsp), %rdi
movq %rdi, 0xd0(%rsp)
callq 0xa9b0
movq 0xd0(%rsp), %rdx
leaq 0x3859b(%rip), %rsi     # 0x46764
leaq 0x720(%rsp), %rdi
callq 0xa860
jmp 0xe1d8
movq 0xc8(%rsp), %rdi
leaq 0x720(%rsp), %rsi
callq 0xf430
movq %rax, 0xc0(%rsp)
jmp 0xe1f7
leaq 0x720(%rsp), %rdi
callq 0xac68
leaq 0x71f(%rsp), %rdi
callq 0xac40
movq 0xc0(%rsp), %rax
cmpq $0x0, %rax
je 0xe35c
movb $0x1, 0x7bf(%rsp)
leaq 0x6f7(%rsp), %rdi
movq %rdi, 0xb8(%rsp)
callq 0xa9b0
movq 0xb8(%rsp), %rdx
leaq 0x38515(%rip), %rsi     # 0x46764
leaq 0x6f8(%rsp), %rdi
callq 0xa860
jmp 0xe25e
leaq 0x810(%rsp), %rdi
leaq 0x6f8(%rsp), %rsi
callq 0xf3f0
movq %rax, 0xb0(%rsp)
jmp 0xe27d
movq 0xb0(%rsp), %rdi
callq 0xf490
movq %rax, 0xa8(%rsp)
jmp 0xe294
movq 0xa8(%rsp), %rsi
leaq 0x768(%rsp), %rdi
callq 0xaba0
jmp 0xe2ab
leaq 0x6f8(%rsp), %rdi
callq 0xac68
leaq 0x6f7(%rsp), %rdi
callq 0xac40
jmp 0xe364
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x8c8(%rsp)
movl %eax, 0x8c4(%rsp)
jmp 0xe301
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x8c8(%rsp)
movl %eax, 0x8c4(%rsp)
leaq 0x720(%rsp), %rdi
callq 0xac68
leaq 0x71f(%rsp), %rdi
callq 0xac40
jmp 0xea2b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x8c8(%rsp)
movl %eax, 0x8c4(%rsp)
jmp 0xe34a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x8c8(%rsp)
movl %eax, 0x8c4(%rsp)
leaq 0x6f8(%rsp), %rdi
callq 0xac68
leaq 0x6f7(%rsp), %rdi
callq 0xac40
jmp 0xea2b
movb $0x0, 0x7bf(%rsp)
leaq 0x820(%rsp), %rax
movq %rax, 0x98(%rsp)
leaq 0x6cf(%rsp), %rdi
movq %rdi, 0xa0(%rsp)
callq 0xa9b0
movq 0xa0(%rsp), %rdx
leaq 0x3842b(%rip), %rsi     # 0x467c3
leaq 0x6d0(%rsp), %rdi
callq 0xa860
jmp 0xe3a7
movq 0x98(%rsp), %rdi
leaq 0x6d0(%rsp), %rsi
callq 0xf430
movq %rax, 0x90(%rsp)
jmp 0xe3c6
leaq 0x6d0(%rsp), %rdi
callq 0xac68
leaq 0x6cf(%rsp), %rdi
callq 0xac40
movq 0x90(%rsp), %rax
cmpq $0x0, %rax
je 0xe517
leaq 0x6a7(%rsp), %rdi
movq %rdi, 0x88(%rsp)
callq 0xa9b0
movq 0x88(%rsp), %rdx
leaq 0x383ad(%rip), %rsi     # 0x467c3
leaq 0x6a8(%rsp), %rdi
callq 0xa860
jmp 0xe425
leaq 0x810(%rsp), %rdi
leaq 0x6a8(%rsp), %rsi
callq 0xf3f0
movq %rax, 0x80(%rsp)
jmp 0xe444
movq 0x80(%rsp), %rdi
callq 0xf420
movq %rax, 0x78(%rsp)
jmp 0xe458
movq 0x78(%rsp), %rax
movl (%rax), %eax
movl %eax, 0x6f0(%rsp)
leaq 0x6a8(%rsp), %rdi
callq 0xac68
leaq 0x6a7(%rsp), %rdi
callq 0xac40
jmp 0xe544
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x8c8(%rsp)
movl %eax, 0x8c4(%rsp)
jmp 0xe4bc
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x8c8(%rsp)
movl %eax, 0x8c4(%rsp)
leaq 0x6d0(%rsp), %rdi
callq 0xac68
leaq 0x6cf(%rsp), %rdi
callq 0xac40
jmp 0xea2b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x8c8(%rsp)
movl %eax, 0x8c4(%rsp)
jmp 0xe505
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x8c8(%rsp)
movl %eax, 0x8c4(%rsp)
leaq 0x6a8(%rsp), %rdi
callq 0xac68
leaq 0x6a7(%rsp), %rdi
callq 0xac40
jmp 0xea2b
movq 0x4ea42(%rip), %rdi     # 0x5cf60
leaq 0x384db(%rip), %rsi     # 0x46a00
callq 0xa5d0
jmp 0xe52c
movq 0x4ea75(%rip), %rdi     # 0x5cfa8
leaq 0x6f0(%rsp), %rsi
callq 0xac00
jmp 0xe542
jmp 0xe544
leaq 0x820(%rsp), %rax
movq %rax, 0x68(%rsp)
leaq 0x67f(%rsp), %rdi
movq %rdi, 0x70(%rsp)
callq 0xa9b0
movq 0x70(%rsp), %rdx
leaq 0x38373(%rip), %rsi     # 0x468e2
leaq 0x680(%rsp), %rdi
callq 0xa860
jmp 0xe57e
movq 0x68(%rsp), %rdi
leaq 0x680(%rsp), %rsi
callq 0xf430
movq %rax, 0x60(%rsp)
jmp 0xe597
movq 0x60(%rsp), %rax
testq %rax, %rax
setne 0x7be(%rsp)
leaq 0x680(%rsp), %rdi
callq 0xac68
leaq 0x67f(%rsp), %rdi
callq 0xac40
leaq 0x658(%rsp), %rdi
callq 0xa390
leaq 0x3818f(%rip), %rsi     # 0x46764
leaq 0x450(%rsp), %rdi
movl $0x8, %edx
callq 0xa090
jmp 0xe5e9
testb $0x1, 0x7bf(%rsp)
jne 0xe6c9
movq 0x450(%rsp), %rax
movq -0x18(%rax), %rax
leaq 0x450(%rsp,%rax), %rdi
callq 0xa0b0
movb %al, 0x5f(%rsp)
jmp 0xe616
movb 0x5f(%rsp), %al
testb $0x1, %al
jne 0xe623
jmp 0xe6c9
leaq 0x450(%rsp), %rdi
leaq 0x658(%rsp), %rsi
callq 0xa470
jmp 0xe63a
leaq 0x450(%rsp), %rdi
callq 0xa640
jmp 0xe649
jmp 0xe793
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x8c8(%rsp)
movl %eax, 0x8c4(%rsp)
jmp 0xe685
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x8c8(%rsp)
movl %eax, 0x8c4(%rsp)
leaq 0x680(%rsp), %rdi
callq 0xac68
leaq 0x67f(%rsp), %rdi
callq 0xac40
jmp 0xea2b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x8c8(%rsp)
movl %eax, 0x8c4(%rsp)
jmp 0xea1e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x8c8(%rsp)
movl %eax, 0x8c4(%rsp)
jmp 0xea11
testb $0x1, 0x7bf(%rsp)
jne 0xe778
movq 0x4e822(%rip), %rdi     # 0x5cf00
leaq 0x38329(%rip), %rsi     # 0x46a0e
callq 0xa5d0
jmp 0xe6ec
movq 0x4e8b5(%rip), %rdi     # 0x5cfa8
leaq 0x658(%rsp), %rsi
callq 0xa470
jmp 0xe702
leaq 0x3805b(%rip), %rsi     # 0x46764
leaq 0x250(%rsp), %rdi
movl $0x10, %edx
callq 0xa360
jmp 0xe71d
leaq 0x250(%rsp), %rdi
leaq 0x658(%rsp), %rsi
callq 0xa330
jmp 0xe734
leaq 0x250(%rsp), %rdi
callq 0xa960
jmp 0xe743
leaq 0x250(%rsp), %rdi
callq 0xa780
jmp 0xe791
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x8c8(%rsp)
movl %eax, 0x8c4(%rsp)
leaq 0x250(%rsp), %rdi
callq 0xa780
jmp 0xea11
leaq 0x658(%rsp), %rdi
leaq 0x768(%rsp), %rsi
callq 0xaba0
jmp 0xe78f
jmp 0xe791
jmp 0xe793
leaq 0x248(%rsp), %rdi
leaq 0x7b8(%rsp), %rsi
callq 0xf4a0
jmp 0xe7aa
jmp 0xe7ac
jmp 0xe7ae
callq 0xa700
movq %rax, 0x240(%rsp)
leaq 0x240(%rsp), %rdi
callq 0xf4c0
movq %rax, 0x238(%rsp)
movl 0x6f0(%rsp), %edi
callq 0xd220
movsd %xmm1, 0x48(%rsp)
movsd %xmm0, 0x50(%rsp)
jmp 0xe7ea
movsd 0x48(%rsp), %xmm0
movsd 0x50(%rsp), %xmm1
movsd %xmm1, 0x228(%rsp)
movsd %xmm0, 0x230(%rsp)
movsd 0x228(%rsp), %xmm0
movsd %xmm0, 0x38(%rsp)
movsd 0x230(%rsp), %xmm0
movsd %xmm0, 0x40(%rsp)
leaq 0x1b8(%rsp), %rdi
leaq 0x658(%rsp), %rsi
callq 0xa190
jmp 0xe83d
movsd 0x40(%rsp), %xmm1
movsd 0x38(%rsp), %xmm0
leaq 0x1d8(%rsp), %rdi
leaq 0x1b8(%rsp), %rsi
callq 0xb3f0
jmp 0xe860
leaq 0x1b8(%rsp), %rdi
callq 0xac68
movl 0x6f0(%rsp), %eax
movl %eax, 0x34(%rsp)
leaq 0x198(%rsp), %rdi
leaq 0x1d8(%rsp), %rsi
callq 0xbcb0
jmp 0xe88f
movl 0x34(%rsp), %edi
leaq 0x198(%rsp), %rsi
callq 0xd8b0
jmp 0xe8a2
leaq 0x198(%rsp), %rdi
callq 0xac68
testb $0x1, 0x7be(%rsp)
jne 0xe9fd
leaq 0x238(%rsp), %rdi
callq 0xaa70
movq %rax, %rsi
movq 0x4e68c(%rip), %rdi     # 0x5cf60
callq 0xa5d0
movq %rax, 0x28(%rsp)
jmp 0xe8e0
movq 0x28(%rsp), %rdi
movsd 0x228(%rsp), %xmm0
callq 0xa870
movq %rax, 0x20(%rsp)
jmp 0xe8fa
movq 0x20(%rsp), %rdi
leaq 0x399e2(%rip), %rsi     # 0x482e8
callq 0xa5d0
movq %rax, 0x18(%rsp)
jmp 0xe912
movq 0x18(%rsp), %rdi
movsd 0x230(%rsp), %xmm0
callq 0xa870
movq %rax, 0x10(%rsp)
jmp 0xe92c
movq 0x10(%rsp), %rdi
leaq 0x399b0(%rip), %rsi     # 0x482e8
callq 0xa5d0
movq %rax, 0x8(%rsp)
jmp 0xe944
movq 0x8(%rsp), %rdi
leaq 0x39998(%rip), %rsi     # 0x482e8
callq 0xa5d0
movq %rax, (%rsp)
jmp 0xe95b
leaq 0x178(%rsp), %rdi
leaq 0x1d8(%rsp), %rsi
callq 0xbcb0
jmp 0xe972
movq (%rsp), %rdi
leaq 0x178(%rsp), %rsi
callq 0xa330
jmp 0xe985
leaq 0x178(%rsp), %rdi
callq 0xac68
jmp 0xe9fd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x8c8(%rsp)
movl %eax, 0x8c4(%rsp)
leaq 0x1b8(%rsp), %rdi
callq 0xac68
jmp 0xea11
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x8c8(%rsp)
movl %eax, 0x8c4(%rsp)
leaq 0x198(%rsp), %rdi
callq 0xac68
jmp 0xea11
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x8c8(%rsp)
movl %eax, 0x8c4(%rsp)
leaq 0x178(%rsp), %rdi
callq 0xac68
jmp 0xea11
leaq 0x248(%rsp), %rdi
callq 0xf530
jmp 0xea0c
jmp 0xe7ac
leaq 0x450(%rsp), %rdi
callq 0xa080
leaq 0x658(%rsp), %rdi
callq 0xac68
leaq 0x768(%rsp), %rdi
callq 0xac68
jmp 0xea63
leaq 0x810(%rsp), %rdi
callq 0xf600
leaq 0x8f8(%rsp), %rdi
callq 0xf660
movl 0x984(%rsp), %eax
addq $0x988, %rsp            # imm = 0x988
retq
leaq 0x810(%rsp), %rdi
callq 0xf600
leaq 0x8f8(%rsp), %rdi
callq 0xf660
movq 0x8c8(%rsp), %rdi
callq 0xa670
nopw (%rax,%rax)