// File: allardlamberink[P]fritz-curl/fritz-curl.cpp
// Function: main
int main(int argc, char* argv[]) { 
	if (argc < 2)
	{
		cout << "Fritz-cURL version 0.1" << endl;
		cout << "No arguments given, example usage:" << endl;
		cout << "wlan24 0 (switch wlan 2.4 GHz off" << endl;
		cout << "wlan24 1 (switch wlan 2.4 GHz on" << endl;
		cout << "wlan24 2 (return wlan 2.4 GHz status" << endl;
	}
	if (argc == 3)
	{
		string functionname, argname, upnpaction, urn = "";
		upnpaction = "/upnp/control/wlanconfig1"; // currently only wlan support
		urn = "urn:dslforum-org:service:WLANConfiguration:1"; //=serviceType and !ID
		switch(argv[2][0])
		{
			case '0':
			       	functionname = "SetEnable";
			 	argname = "<NewEnable>0</NewEnable>";
				break;
			case '1':
			       	functionname = "SetEnable";
			 	argname = "<NewEnable>1</NewEnable>";
				break;
			case '2':
			       	functionname = "GetInfo";
			 	argname = "";
				break;
		}

		const string runningpath = argv[0];
		const string settingsfullpath = runningpath.substr(0,runningpath.find_last_of("/")) + "/settings.xml";

		string settingsstr = "";
		/* read settings file */
		try
	        {
			readfile(settingsfullpath, settingsstr);
		}
		catch (std::exception &e)
		{
			perror("Error loading settings file, make sure settings.xml exists and is readable. Original errormessage: ");
		}

		/* initialize variables */ 
	        if(settingsstr.empty())
		{
			perror("Error loading settings file, make sure settings.xml exists, is readable and is not empty.");
			return 1;
		}

		string fbuser = getXmlProp(settingsstr, "settings.fbuser");
		string fbpwd = getXmlProp(settingsstr, "settings.fbpwd");
		string fburl = "http://" + getXmlProp(settingsstr, "settings.fburl");
		string fbport = getXmlProp(settingsstr, "settings.fbport");
		string debugstr = getXmlProp(settingsstr, "settings.debug");
		bDebug = debugstr == "True";

		if(bDebug) cout << "functionname=" << functionname << " and argname=" << argname << endl;

		// if the fritzbox is password protected, then first an initchallenge needs to be sent in order to get the Nonce and the Realm

		string initdata="<?xml version=\"1.0\" encoding=\"utf-8\"?> <s:Envelope s:encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\" xmlns:s=\"http://schemas.xmlsoap.org/soap/envelope/\"><s:Header><h:InitChallenge xmlns:h=\"http://soap-authentication.org/digest/2001/10/\" s:mustUnderstand=\"1\"><UserID>" + fbuser + "</UserID></h:InitChallenge></s:Header><s:Body><u:" + functionname + " xmlns:u=\"" + urn + "\"></u:" + functionname + "></s:Body></s:Envelope>";

		if (bDebug)
		{	
		    cout << "sending initdata=" + initdata + "\r\n\r\n" << endl;
		}

		/* send the initdata using curl */
		string out = executeCurlAction(fburl, fbport, upnpaction, urn, functionname, initdata);
		if (bDebug)
		{
			cout << "result = " + out << endl;
		}	

		/* read the nonce and realm from the curlaction result */
		string nonce = getXmlProp(out, "s:Envelope.s:Header.h:Challenge.Nonce");
		string realm = getXmlProp(out, "s:Envelope.s:Header.h:Challenge.Realm");
		if (bDebug)
		{
			fprintf(stdout, "\r\n\r\nAllard:nonce=%s en realm=%s \r\n\r\n", nonce.c_str(), realm.c_str());
		}

		string authstr=fbuser + ":" + realm + ":" + fbpwd;
		string md5authstr=getmd5sum(authstr);
		string auth = getmd5sum(md5authstr + ":" + nonce);
		
		if (bDebug)
		{
			cout << "sending part2" << endl;
		}

		string actiondata="<?xml version=\"1.0\" encoding=\"utf-8\"?> <s:Envelope s:encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\" xmlns:s=\"http://schemas.xmlsoap.org/soap/envelope/\"><s:Header><h:ClientAuth xmlns:h=\"http://soap-authentication.org/digest/2001/10/\" s:mustUnderstand=\"1\"><Nonce>" + nonce + "</Nonce><Auth>" + auth + "</Auth><UserID>" + fbuser + "</UserID><Realm>" + realm + "</Realm></h:ClientAuth></s:Header><s:Body><u:" + functionname + " xmlns:u=\"" + urn + "\">" + argname + "</u:" + functionname + "></s:Body></s:Envelope>";

		out = executeCurlAction(fburl, fbport, upnpaction, urn, functionname, actiondata);

		// TODO: read the new nonce
		// TODO: read out the new WLAN status to verify whether the command was executed successfully or not
		// example: cout << "callist url=" + getXmlProp(out, "s:Envelope.s:Body.u:GetCallListResponse.NewCallListURL") << endl;
		//
		// TODO: cleanup all used variables / objects!!! 
		// TODO: add support for security port
	}
	else
	{ //other than 3 arguments, do nothing
	}
	return 0;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xb40, %rsp            # imm = 0xB40
movl $0x0, -0x4(%rbp)
movl %edi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
cmpl $0x2, -0x8(%rbp)
jge 0x554d
movq 0x23b16(%rip), %rdi     # 0x28fc0
leaq 0x17c35(%rip), %rsi     # 0x1d0e6
callq 0x43b0
movq %rax, %rdi
movq 0x23b28(%rip), %rsi     # 0x28fe8
callq 0x45d0
movq 0x23af4(%rip), %rdi     # 0x28fc0
leaq 0x17c2a(%rip), %rsi     # 0x1d0fd
callq 0x43b0
movq %rax, %rdi
movq 0x23b06(%rip), %rsi     # 0x28fe8
callq 0x45d0
movq 0x23ad2(%rip), %rdi     # 0x28fc0
leaq 0x17c2b(%rip), %rsi     # 0x1d120
callq 0x43b0
movq %rax, %rdi
movq 0x23ae4(%rip), %rsi     # 0x28fe8
callq 0x45d0
movq 0x23ab0(%rip), %rdi     # 0x28fc0
leaq 0x17c2b(%rip), %rsi     # 0x1d142
callq 0x43b0
movq %rax, %rdi
movq 0x23ac2(%rip), %rsi     # 0x28fe8
callq 0x45d0
movq 0x23a8e(%rip), %rdi     # 0x28fc0
leaq 0x17c2a(%rip), %rsi     # 0x1d163
callq 0x43b0
movq %rax, %rdi
movq 0x23aa0(%rip), %rsi     # 0x28fe8
callq 0x45d0
cmpl $0x3, -0x8(%rbp)
jne 0x70fd
leaq -0x30(%rbp), %rdi
callq 0x4270
leaq -0x50(%rbp), %rdi
callq 0x4270
leaq -0x70(%rbp), %rdi
callq 0x4270
leaq -0x91(%rbp), %rdi
movq %rdi, -0xa88(%rbp)
callq 0x4590
movq -0xa88(%rbp), %rdx
leaq 0x17fbf(%rip), %rsi     # 0x1d552
leaq -0x90(%rbp), %rdi
callq 0x72c0
jmp 0x55a1
leaq -0x91(%rbp), %rdi
callq 0x4670
leaq 0x17bd4(%rip), %rsi     # 0x1d188
leaq -0x70(%rbp), %rdi
callq 0x42d0
jmp 0x55bf
leaq 0x17bdc(%rip), %rsi     # 0x1d1a2
leaq -0x90(%rbp), %rdi
callq 0x42d0
jmp 0x55d4
movq -0x10(%rbp), %rax
movq 0x10(%rax), %rax
movsbl (%rax), %eax
movl %eax, -0xa8c(%rbp)
subl $0x30, %eax
je 0x5647
jmp 0x55ec
movl -0xa8c(%rbp), %eax
subl $0x31, %eax
je 0x566d
jmp 0x55f9
movl -0xa8c(%rbp), %eax
subl $0x32, %eax
je 0x5693
jmp 0x56b9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa0(%rbp)
movl %eax, -0xa4(%rbp)
leaq -0x91(%rbp), %rdi
callq 0x4670
jmp 0x70e0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa0(%rbp)
movl %eax, -0xa4(%rbp)
jmp 0x70d4
leaq 0x17b81(%rip), %rsi     # 0x1d1cf
leaq -0x30(%rbp), %rdi
callq 0x42d0
jmp 0x5659
leaq 0x17b79(%rip), %rsi     # 0x1d1d9
leaq -0x50(%rbp), %rdi
callq 0x42d0
jmp 0x566b
jmp 0x56b9
leaq 0x17b5b(%rip), %rsi     # 0x1d1cf
leaq -0x30(%rbp), %rdi
callq 0x42d0
jmp 0x567f
leaq 0x17b6c(%rip), %rsi     # 0x1d1f2
leaq -0x50(%rbp), %rdi
callq 0x42d0
jmp 0x5691
jmp 0x56b9
leaq 0x17b71(%rip), %rsi     # 0x1d20b
leaq -0x30(%rbp), %rdi
callq 0x42d0
jmp 0x56a5
leaq 0x17ea6(%rip), %rsi     # 0x1d552
leaq -0x50(%rbp), %rdi
callq 0x42d0
jmp 0x56b7
jmp 0x56b9
movq -0x10(%rbp), %rax
movq (%rax), %rax
movq %rax, -0xaa0(%rbp)
leaq -0xc9(%rbp), %rdi
movq %rdi, -0xa98(%rbp)
callq 0x4590
movq -0xaa0(%rbp), %rsi
movq -0xa98(%rbp), %rdx
leaq -0xc8(%rbp), %rdi
callq 0x72c0
jmp 0x56f6
leaq -0xc9(%rbp), %rdi
callq 0x4670
leaq 0x17bfb(%rip), %rsi     # 0x1d304
leaq -0xc8(%rbp), %rdi
movq %rdi, -0xaa8(%rbp)
movq $-0x1, %rdx
callq 0x4540
movq -0xaa8(%rbp), %rsi
movq %rax, %rcx
xorl %eax, %eax
movl %eax, %edx
leaq -0x110(%rbp), %rdi
callq 0x45b0
jmp 0x573f
leaq 0x17acd(%rip), %rdx     # 0x1d213
leaq -0xf0(%rbp), %rdi
leaq -0x110(%rbp), %rsi
callq 0x7440
jmp 0x575b
leaq -0x110(%rbp), %rdi
callq 0x4688
leaq -0x131(%rbp), %rdi
movq %rdi, -0xab0(%rbp)
callq 0x4590
movq -0xab0(%rbp), %rdx
leaq 0x17dca(%rip), %rsi     # 0x1d552
leaq -0x130(%rbp), %rdi
callq 0x72c0
jmp 0x5796
leaq -0x131(%rbp), %rdi
callq 0x4670
leaq -0xf0(%rbp), %rdi
leaq -0x130(%rbp), %rsi
callq 0x4880
jmp 0x57b7
jmp 0x588b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa0(%rbp)
movl %eax, -0xa4(%rbp)
leaq -0xc9(%rbp), %rdi
callq 0x4670
jmp 0x70d4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa0(%rbp)
movl %eax, -0xa4(%rbp)
jmp 0x70c8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa0(%rbp)
movl %eax, -0xa4(%rbp)
leaq -0x110(%rbp), %rdi
callq 0x4688
jmp 0x70c8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa0(%rbp)
movl %eax, -0xa4(%rbp)
leaq -0x131(%rbp), %rdi
callq 0x4670
jmp 0x70bc
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa0(%rbp)
movl %eax, -0xa4(%rbp)
movl -0xa4(%rbp), %eax
movl $0x1, %ecx
cmpl %ecx, %eax
jne 0x70b0
movq -0xa0(%rbp), %rdi
callq 0x40a0
movq %rax, -0x140(%rbp)
leaq 0x179a6(%rip), %rdi     # 0x1d221
callq 0x4230
jmp 0x5882
callq 0x4470
jmp 0x5889
jmp 0x588b
leaq -0x130(%rbp), %rdi
callq 0x4210
testb $0x1, %al
jne 0x589d
jmp 0x58f6
leaq 0x179e1(%rip), %rdi     # 0x1d285
callq 0x4230
jmp 0x58ab
movl $0x1, -0x4(%rbp)
movl $0x1, -0x144(%rbp)
jmp 0x6cda
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa0(%rbp)
movl %eax, -0xa4(%rbp)
callq 0x4470
jmp 0x58f1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa0(%rbp)
movl %eax, -0xa4(%rbp)
jmp 0x70b0
jmp 0x70b0
leaq -0x188(%rbp), %rdi
leaq -0x130(%rbp), %rsi
callq 0x4140
jmp 0x590b
leaq -0x1a9(%rbp), %rdi
movq %rdi, -0xab8(%rbp)
callq 0x4590
movq -0xab8(%rbp), %rdx
leaq 0x179b3(%rip), %rsi     # 0x1d2df
leaq -0x1a8(%rbp), %rdi
callq 0x72c0
jmp 0x593a
leaq -0x168(%rbp), %rdi
leaq -0x188(%rbp), %rsi
leaq -0x1a8(%rbp), %rdx
callq 0x51f0
jmp 0x5956
leaq -0x1a8(%rbp), %rdi
callq 0x4688
leaq -0x1a9(%rbp), %rdi
callq 0x4670
leaq -0x188(%rbp), %rdi
callq 0x4688
leaq -0x1f0(%rbp), %rdi
leaq -0x130(%rbp), %rsi
callq 0x4140
jmp 0x598f
leaq -0x211(%rbp), %rdi
movq %rdi, -0xac0(%rbp)
callq 0x4590
movq -0xac0(%rbp), %rdx
leaq 0x1793f(%rip), %rsi     # 0x1d2ef
leaq -0x210(%rbp), %rdi
callq 0x72c0
jmp 0x59be
leaq -0x1d0(%rbp), %rdi
leaq -0x1f0(%rbp), %rsi
leaq -0x210(%rbp), %rdx
callq 0x51f0
jmp 0x59da
leaq -0x210(%rbp), %rdi
callq 0x4688
leaq -0x211(%rbp), %rdi
callq 0x4670
leaq -0x1f0(%rbp), %rdi
callq 0x4688
leaq -0x278(%rbp), %rdi
leaq -0x130(%rbp), %rsi
callq 0x4140
jmp 0x5a13
leaq -0x299(%rbp), %rdi
movq %rdi, -0xac8(%rbp)
callq 0x4590
movq -0xac8(%rbp), %rdx
leaq 0x178d2(%rip), %rsi     # 0x1d306
leaq -0x298(%rbp), %rdi
callq 0x72c0
jmp 0x5a42
leaq -0x258(%rbp), %rdi
leaq -0x278(%rbp), %rsi
leaq -0x298(%rbp), %rdx
callq 0x51f0
jmp 0x5a5e
leaq 0x17899(%rip), %rsi     # 0x1d2fe
leaq -0x238(%rbp), %rdi
leaq -0x258(%rbp), %rdx
callq 0x77e0
jmp 0x5a7a
leaq -0x258(%rbp), %rdi
callq 0x4688
leaq -0x298(%rbp), %rdi
callq 0x4688
leaq -0x299(%rbp), %rdi
callq 0x4670
leaq -0x278(%rbp), %rdi
callq 0x4688
leaq -0x2e0(%rbp), %rdi
leaq -0x130(%rbp), %rsi
callq 0x4140
jmp 0x5abf
leaq -0x301(%rbp), %rdi
movq %rdi, -0xad0(%rbp)
callq 0x4590
movq -0xad0(%rbp), %rdx
leaq 0x17835(%rip), %rsi     # 0x1d315
leaq -0x300(%rbp), %rdi
callq 0x72c0
jmp 0x5aee
leaq -0x2c0(%rbp), %rdi
leaq -0x2e0(%rbp), %rsi
leaq -0x300(%rbp), %rdx
callq 0x51f0
jmp 0x5b0a
leaq -0x300(%rbp), %rdi
callq 0x4688
leaq -0x301(%rbp), %rdi
callq 0x4670
leaq -0x2e0(%rbp), %rdi
callq 0x4688
leaq -0x348(%rbp), %rdi
leaq -0x130(%rbp), %rsi
callq 0x4140
jmp 0x5b43
leaq -0x369(%rbp), %rdi
movq %rdi, -0xad8(%rbp)
callq 0x4590
movq -0xad8(%rbp), %rdx
leaq 0x177c1(%rip), %rsi     # 0x1d325
leaq -0x368(%rbp), %rdi
callq 0x72c0
jmp 0x5b72
leaq -0x328(%rbp), %rdi
leaq -0x348(%rbp), %rsi
leaq -0x368(%rbp), %rdx
callq 0x51f0
jmp 0x5b8e
leaq -0x368(%rbp), %rdi
callq 0x4688
leaq -0x369(%rbp), %rdi
callq 0x4670
leaq -0x348(%rbp), %rdi
callq 0x4688
leaq 0x1777b(%rip), %rsi     # 0x1d334
leaq -0x328(%rbp), %rdi
callq 0x7830
movb %al, -0xad9(%rbp)
jmp 0x5bcd
movb -0xad9(%rbp), %al
andb $0x1, %al
movb %al, 0x237a1(%rip)      # 0x2937c
testb $0x1, 0x2379a(%rip)     # 0x2937c
je 0x5e8a
movq 0x233d1(%rip), %rdi     # 0x28fc0
leaq 0x17743(%rip), %rsi     # 0x1d339
callq 0x43b0
movq %rax, -0xae8(%rbp)
jmp 0x5c04
movq -0xae8(%rbp), %rdi
leaq -0x30(%rbp), %rsi
callq 0x4240
movq %rax, -0xaf0(%rbp)
jmp 0x5c1d
movq -0xaf0(%rbp), %rdi
leaq 0x1771c(%rip), %rsi     # 0x1d347
callq 0x43b0
movq %rax, -0xaf8(%rbp)
jmp 0x5c39
movq -0xaf8(%rbp), %rdi
leaq -0x50(%rbp), %rsi
callq 0x4240
movq %rax, -0xb00(%rbp)
jmp 0x5c52
movq -0xb00(%rbp), %rdi
movq 0x23388(%rip), %rsi     # 0x28fe8
callq 0x45d0
jmp 0x5c67
jmp 0x5e8a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa0(%rbp)
movl %eax, -0xa4(%rbp)
jmp 0x5c9e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa0(%rbp)
movl %eax, -0xa4(%rbp)
leaq -0x1a8(%rbp), %rdi
callq 0x4688
leaq -0x1a9(%rbp), %rdi
callq 0x4670
leaq -0x188(%rbp), %rdi
callq 0x4688
jmp 0x70b0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa0(%rbp)
movl %eax, -0xa4(%rbp)
jmp 0x70a4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa0(%rbp)
movl %eax, -0xa4(%rbp)
jmp 0x5d04
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa0(%rbp)
movl %eax, -0xa4(%rbp)
leaq -0x210(%rbp), %rdi
callq 0x4688
leaq -0x211(%rbp), %rdi
callq 0x4670
leaq -0x1f0(%rbp), %rdi
callq 0x4688
jmp 0x70a4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa0(%rbp)
movl %eax, -0xa4(%rbp)
jmp 0x7098
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa0(%rbp)
movl %eax, -0xa4(%rbp)
jmp 0x5d8a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa0(%rbp)
movl %eax, -0xa4(%rbp)
jmp 0x5d7e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa0(%rbp)
movl %eax, -0xa4(%rbp)
leaq -0x258(%rbp), %rdi
callq 0x4688
leaq -0x298(%rbp), %rdi
callq 0x4688
leaq -0x299(%rbp), %rdi
callq 0x4670
leaq -0x278(%rbp), %rdi
callq 0x4688
jmp 0x7098
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa0(%rbp)
movl %eax, -0xa4(%rbp)
jmp 0x708c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa0(%rbp)
movl %eax, -0xa4(%rbp)
jmp 0x5df0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa0(%rbp)
movl %eax, -0xa4(%rbp)
leaq -0x300(%rbp), %rdi
callq 0x4688
leaq -0x301(%rbp), %rdi
callq 0x4670
leaq -0x2e0(%rbp), %rdi
callq 0x4688
jmp 0x708c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa0(%rbp)
movl %eax, -0xa4(%rbp)
jmp 0x7080
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa0(%rbp)
movl %eax, -0xa4(%rbp)
jmp 0x5e56
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa0(%rbp)
movl %eax, -0xa4(%rbp)
leaq -0x368(%rbp), %rdi
callq 0x4688
leaq -0x369(%rbp), %rdi
callq 0x4670
leaq -0x348(%rbp), %rdi
callq 0x4688
jmp 0x7080
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa0(%rbp)
movl %eax, -0xa4(%rbp)
jmp 0x7074
leaq 0x174c4(%rip), %rsi     # 0x1d355
leaq -0x470(%rbp), %rdi
leaq -0x168(%rbp), %rdx
callq 0x7490
jmp 0x5ea6
leaq 0x175bd(%rip), %rdx     # 0x1d46a
leaq -0x450(%rbp), %rdi
leaq -0x470(%rbp), %rsi
callq 0x7440
jmp 0x5ec2
leaq -0x430(%rbp), %rdi
leaq -0x450(%rbp), %rsi
leaq -0x30(%rbp), %rdx
callq 0x7370
jmp 0x5edb
leaq 0x175ba(%rip), %rdx     # 0x1d49c
leaq -0x410(%rbp), %rdi
leaq -0x430(%rbp), %rsi
callq 0x7440
jmp 0x5ef7
leaq -0x3f0(%rbp), %rdi
leaq -0x410(%rbp), %rsi
leaq -0x90(%rbp), %rdx
callq 0x7370
jmp 0x5f13
leaq 0x1758d(%rip), %rdx     # 0x1d4a7
leaq -0x3d0(%rbp), %rdi
leaq -0x3f0(%rbp), %rsi
callq 0x7440
jmp 0x5f2f
leaq -0x3b0(%rbp), %rdi
leaq -0x3d0(%rbp), %rsi
leaq -0x30(%rbp), %rdx
callq 0x7370
jmp 0x5f48
leaq 0x1755f(%rip), %rdx     # 0x1d4ae
leaq -0x390(%rbp), %rdi
leaq -0x3b0(%rbp), %rsi
callq 0x7440
jmp 0x5f64
leaq -0x3b0(%rbp), %rdi
callq 0x4688
leaq -0x3d0(%rbp), %rdi
callq 0x4688
leaq -0x3f0(%rbp), %rdi
callq 0x4688
leaq -0x410(%rbp), %rdi
callq 0x4688
leaq -0x430(%rbp), %rdi
callq 0x4688
leaq -0x450(%rbp), %rdi
callq 0x4688
leaq -0x470(%rbp), %rdi
callq 0x4688
testb $0x1, 0x233bd(%rip)     # 0x2937c
je 0x618e
leaq 0x174fa(%rip), %rsi     # 0x1d4c6
leaq -0x4b0(%rbp), %rdi
leaq -0x390(%rbp), %rdx
callq 0x7490
jmp 0x5fe1
leaq 0x17566(%rip), %rdx     # 0x1d54e
leaq -0x490(%rbp), %rdi
leaq -0x4b0(%rbp), %rsi
callq 0x7440
jmp 0x5ffd
movq 0x22fbc(%rip), %rdi     # 0x28fc0
leaq -0x490(%rbp), %rsi
callq 0x4240
movq %rax, -0xb08(%rbp)
jmp 0x6019
movq -0xb08(%rbp), %rdi
movq 0x22fc1(%rip), %rsi     # 0x28fe8
callq 0x45d0
jmp 0x602e
leaq -0x490(%rbp), %rdi
callq 0x4688
leaq -0x4b0(%rbp), %rdi
callq 0x4688
jmp 0x618e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa0(%rbp)
movl %eax, -0xa4(%rbp)
jmp 0x6123
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa0(%rbp)
movl %eax, -0xa4(%rbp)
jmp 0x6117
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa0(%rbp)
movl %eax, -0xa4(%rbp)
jmp 0x610b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa0(%rbp)
movl %eax, -0xa4(%rbp)
jmp 0x60ff
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa0(%rbp)
movl %eax, -0xa4(%rbp)
jmp 0x60f3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa0(%rbp)
movl %eax, -0xa4(%rbp)
jmp 0x60e7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa0(%rbp)
movl %eax, -0xa4(%rbp)
leaq -0x3b0(%rbp), %rdi
callq 0x4688
leaq -0x3d0(%rbp), %rdi
callq 0x4688
leaq -0x3f0(%rbp), %rdi
callq 0x4688
leaq -0x410(%rbp), %rdi
callq 0x4688
leaq -0x430(%rbp), %rdi
callq 0x4688
leaq -0x450(%rbp), %rdi
callq 0x4688
leaq -0x470(%rbp), %rdi
callq 0x4688
jmp 0x7074
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa0(%rbp)
movl %eax, -0xa4(%rbp)
jmp 0x7068
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa0(%rbp)
movl %eax, -0xa4(%rbp)
jmp 0x617d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa0(%rbp)
movl %eax, -0xa4(%rbp)
leaq -0x490(%rbp), %rdi
callq 0x4688
leaq -0x4b0(%rbp), %rdi
callq 0x4688
jmp 0x7068
leaq -0x4f0(%rbp), %rdi
leaq -0x238(%rbp), %rsi
callq 0x4140
jmp 0x61a3
leaq -0x510(%rbp), %rdi
leaq -0x2c0(%rbp), %rsi
callq 0x4140
jmp 0x61b8
leaq -0x530(%rbp), %rdi
leaq -0x70(%rbp), %rsi
callq 0x4140
jmp 0x61ca
leaq -0x550(%rbp), %rdi
leaq -0x90(%rbp), %rsi
callq 0x4140
jmp 0x61df
leaq -0x570(%rbp), %rdi
leaq -0x30(%rbp), %rsi
callq 0x4140
jmp 0x61f1
leaq -0x590(%rbp), %rdi
leaq -0x390(%rbp), %rsi
callq 0x4140
jmp 0x6206
movq %rsp, %rax
leaq -0x590(%rbp), %rcx
movq %rcx, (%rax)
leaq -0x4d0(%rbp), %rdi
leaq -0x4f0(%rbp), %rsi
leaq -0x510(%rbp), %rdx
leaq -0x530(%rbp), %rcx
leaq -0x550(%rbp), %r8
leaq -0x570(%rbp), %r9
callq 0x4b50
jmp 0x6244
leaq -0x590(%rbp), %rdi
callq 0x4688
leaq -0x570(%rbp), %rdi
callq 0x4688
leaq -0x550(%rbp), %rdi
callq 0x4688
leaq -0x530(%rbp), %rdi
callq 0x4688
leaq -0x510(%rbp), %rdi
callq 0x4688
leaq -0x4f0(%rbp), %rdi
callq 0x4688
testb $0x1, 0x230e9(%rip)     # 0x2937c
je 0x63f7
leaq 0x17238(%rip), %rsi     # 0x1d4d8
leaq -0x5b0(%rbp), %rdi
leaq -0x4d0(%rbp), %rdx
callq 0x7490
jmp 0x62b5
movq 0x22d04(%rip), %rdi     # 0x28fc0
leaq -0x5b0(%rbp), %rsi
callq 0x4240
movq %rax, -0xb10(%rbp)
jmp 0x62d1
movq -0xb10(%rbp), %rdi
movq 0x22d09(%rip), %rsi     # 0x28fe8
callq 0x45d0
jmp 0x62e6
leaq -0x5b0(%rbp), %rdi
callq 0x4688
jmp 0x63f7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa0(%rbp)
movl %eax, -0xa4(%rbp)
jmp 0x63ac
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa0(%rbp)
movl %eax, -0xa4(%rbp)
jmp 0x63a0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa0(%rbp)
movl %eax, -0xa4(%rbp)
jmp 0x6394
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa0(%rbp)
movl %eax, -0xa4(%rbp)
jmp 0x6388
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa0(%rbp)
movl %eax, -0xa4(%rbp)
jmp 0x637c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa0(%rbp)
movl %eax, -0xa4(%rbp)
leaq -0x590(%rbp), %rdi
callq 0x4688
leaq -0x570(%rbp), %rdi
callq 0x4688
leaq -0x550(%rbp), %rdi
callq 0x4688
leaq -0x530(%rbp), %rdi
callq 0x4688
leaq -0x510(%rbp), %rdi
callq 0x4688
leaq -0x4f0(%rbp), %rdi
callq 0x4688
jmp 0x7068
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa0(%rbp)
movl %eax, -0xa4(%rbp)
jmp 0x705c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa0(%rbp)
movl %eax, -0xa4(%rbp)
leaq -0x5b0(%rbp), %rdi
callq 0x4688
jmp 0x705c
leaq -0x5f0(%rbp), %rdi
leaq -0x4d0(%rbp), %rsi
callq 0x4140
jmp 0x640c
leaq -0x611(%rbp), %rdi
movq %rdi, -0xb18(%rbp)
callq 0x4590
movq -0xb18(%rbp), %rdx
leaq 0x170b5(%rip), %rsi     # 0x1d4e2
leaq -0x610(%rbp), %rdi
callq 0x72c0
jmp 0x643b
leaq -0x5d0(%rbp), %rdi
leaq -0x5f0(%rbp), %rsi
leaq -0x610(%rbp), %rdx
callq 0x51f0
jmp 0x6457
leaq -0x610(%rbp), %rdi
callq 0x4688
leaq -0x611(%rbp), %rdi
callq 0x4670
leaq -0x5f0(%rbp), %rdi
callq 0x4688
leaq -0x658(%rbp), %rdi
leaq -0x4d0(%rbp), %rsi
callq 0x4140
jmp 0x6490
leaq -0x679(%rbp), %rdi
movq %rdi, -0xb20(%rbp)
callq 0x4590
movq -0xb20(%rbp), %rdx
leaq 0x17057(%rip), %rsi     # 0x1d508
leaq -0x678(%rbp), %rdi
callq 0x72c0
jmp 0x64bf
leaq -0x638(%rbp), %rdi
leaq -0x658(%rbp), %rsi
leaq -0x678(%rbp), %rdx
callq 0x51f0
jmp 0x64db
leaq -0x678(%rbp), %rdi
callq 0x4688
leaq -0x679(%rbp), %rdi
callq 0x4670
leaq -0x658(%rbp), %rdi
callq 0x4688
testb $0x1, 0x22e76(%rip)     # 0x2937c
je 0x6615
movq 0x22ab5(%rip), %rax     # 0x28fc8
movq (%rax), %rax
movq %rax, -0xb30(%rbp)
leaq -0x5d0(%rbp), %rdi
callq 0x4110
movq %rax, -0xb28(%rbp)
leaq -0x638(%rbp), %rdi
callq 0x4110
movq -0xb30(%rbp), %rdi
movq -0xb28(%rbp), %rdx
movq %rax, %rcx
leaq 0x16fda(%rip), %rsi     # 0x1d52e
movb $0x0, %al
callq 0x41a0
jmp 0x6615
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa0(%rbp)
movl %eax, -0xa4(%rbp)
jmp 0x6592
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa0(%rbp)
movl %eax, -0xa4(%rbp)
leaq -0x610(%rbp), %rdi
callq 0x4688
leaq -0x611(%rbp), %rdi
callq 0x4670
leaq -0x5f0(%rbp), %rdi
callq 0x4688
jmp 0x705c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa0(%rbp)
movl %eax, -0xa4(%rbp)
jmp 0x7050
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa0(%rbp)
movl %eax, -0xa4(%rbp)
jmp 0x65f8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa0(%rbp)
movl %eax, -0xa4(%rbp)
leaq -0x678(%rbp), %rdi
callq 0x4688
leaq -0x679(%rbp), %rdi
callq 0x4670
leaq -0x658(%rbp), %rdi
callq 0x4688
jmp 0x7050
leaq 0x16b02(%rip), %rdx     # 0x1d11e
leaq -0x700(%rbp), %rdi
leaq -0x168(%rbp), %rsi
callq 0x73c0
jmp 0x6631
leaq -0x6e0(%rbp), %rdi
leaq -0x700(%rbp), %rsi
leaq -0x638(%rbp), %rdx
callq 0x7370
jmp 0x664d
leaq 0x16aca(%rip), %rdx     # 0x1d11e
leaq -0x6c0(%rbp), %rdi
leaq -0x6e0(%rbp), %rsi
callq 0x7440
jmp 0x6669
leaq -0x6a0(%rbp), %rdi
leaq -0x6c0(%rbp), %rsi
leaq -0x1d0(%rbp), %rdx
callq 0x7370
jmp 0x6685
leaq -0x6c0(%rbp), %rdi
callq 0x4688
leaq -0x6e0(%rbp), %rdi
callq 0x4688
leaq -0x700(%rbp), %rdi
callq 0x4688
leaq -0x740(%rbp), %rdi
leaq -0x6a0(%rbp), %rsi
callq 0x4140
jmp 0x66be
leaq -0x720(%rbp), %rdi
leaq -0x740(%rbp), %rsi
callq 0x4a10
jmp 0x66d3
leaq -0x740(%rbp), %rdi
callq 0x4688
leaq 0x16a38(%rip), %rdx     # 0x1d11e
leaq -0x7a0(%rbp), %rdi
leaq -0x720(%rbp), %rsi
callq 0x73c0
jmp 0x66fb
leaq -0x780(%rbp), %rdi
leaq -0x7a0(%rbp), %rsi
leaq -0x5d0(%rbp), %rdx
callq 0x7370
jmp 0x6717
leaq -0x760(%rbp), %rdi
leaq -0x780(%rbp), %rsi
callq 0x4a10
jmp 0x672c
leaq -0x780(%rbp), %rdi
callq 0x4688
leaq -0x7a0(%rbp), %rdi
callq 0x4688
testb $0x1, 0x22c31(%rip)     # 0x2937c
je 0x68ac
movq 0x22868(%rip), %rdi     # 0x28fc0
leaq 0x16df4(%rip), %rsi     # 0x1d553
callq 0x43b0
movq %rax, -0xb38(%rbp)
jmp 0x676d
movq -0xb38(%rbp), %rdi
movq 0x2286d(%rip), %rsi     # 0x28fe8
callq 0x45d0
jmp 0x6782
jmp 0x68ac
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa0(%rbp)
movl %eax, -0xa4(%rbp)
jmp 0x7044
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa0(%rbp)
movl %eax, -0xa4(%rbp)
jmp 0x67f0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa0(%rbp)
movl %eax, -0xa4(%rbp)
jmp 0x67e4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa0(%rbp)
movl %eax, -0xa4(%rbp)
leaq -0x6c0(%rbp), %rdi
callq 0x4688
leaq -0x6e0(%rbp), %rdi
callq 0x4688
leaq -0x700(%rbp), %rdi
callq 0x4688
jmp 0x7044
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa0(%rbp)
movl %eax, -0xa4(%rbp)
jmp 0x7038
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa0(%rbp)
movl %eax, -0xa4(%rbp)
leaq -0x740(%rbp), %rdi
callq 0x4688
jmp 0x7038
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa0(%rbp)
movl %eax, -0xa4(%rbp)
jmp 0x702c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa0(%rbp)
movl %eax, -0xa4(%rbp)
jmp 0x6884
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa0(%rbp)
movl %eax, -0xa4(%rbp)
leaq -0x780(%rbp), %rdi
callq 0x4688
leaq -0x7a0(%rbp), %rdi
callq 0x4688
jmp 0x702c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa0(%rbp)
movl %eax, -0xa4(%rbp)
jmp 0x7020
leaq 0x16cae(%rip), %rsi     # 0x1d561
leaq -0x9a0(%rbp), %rdi
leaq -0x5d0(%rbp), %rdx
callq 0x7490
jmp 0x68c8
leaq 0x16da3(%rip), %rdx     # 0x1d672
leaq -0x980(%rbp), %rdi
leaq -0x9a0(%rbp), %rsi
callq 0x7440
jmp 0x68e4
leaq -0x960(%rbp), %rdi
leaq -0x980(%rbp), %rsi
leaq -0x760(%rbp), %rdx
callq 0x7370
jmp 0x6900
leaq 0x16d7a(%rip), %rdx     # 0x1d681
leaq -0x940(%rbp), %rdi
leaq -0x960(%rbp), %rsi
callq 0x7440
jmp 0x691c
leaq -0x920(%rbp), %rdi
leaq -0x940(%rbp), %rsi
leaq -0x168(%rbp), %rdx
callq 0x7370
jmp 0x6938
leaq 0x16d52(%rip), %rdx     # 0x1d691
leaq -0x900(%rbp), %rdi
leaq -0x920(%rbp), %rsi
callq 0x7440
jmp 0x6954
leaq -0x8e0(%rbp), %rdi
leaq -0x900(%rbp), %rsi
leaq -0x638(%rbp), %rdx
callq 0x7370
jmp 0x6970
leaq 0x16d2b(%rip), %rdx     # 0x1d6a2
leaq -0x8c0(%rbp), %rdi
leaq -0x8e0(%rbp), %rsi
callq 0x7440
jmp 0x698c
leaq -0x8a0(%rbp), %rdi
leaq -0x8c0(%rbp), %rsi
leaq -0x30(%rbp), %rdx
callq 0x7370
jmp 0x69a5
leaq 0x16af0(%rip), %rdx     # 0x1d49c
leaq -0x880(%rbp), %rdi
leaq -0x8a0(%rbp), %rsi
callq 0x7440
jmp 0x69c1
leaq -0x860(%rbp), %rdi
leaq -0x880(%rbp), %rsi
leaq -0x90(%rbp), %rdx
callq 0x7370
jmp 0x69dd
leaq 0x16cec(%rip), %rdx     # 0x1d6d0
leaq -0x840(%rbp), %rdi
leaq -0x860(%rbp), %rsi
callq 0x7440
jmp 0x69f9
leaq -0x820(%rbp), %rdi
leaq -0x840(%rbp), %rsi
leaq -0x50(%rbp), %rdx
callq 0x7370
jmp 0x6a12
leaq 0x16a90(%rip), %rdx     # 0x1d4a9
leaq -0x800(%rbp), %rdi
leaq -0x820(%rbp), %rsi
callq 0x7440
jmp 0x6a2e
leaq -0x7e0(%rbp), %rdi
leaq -0x800(%rbp), %rsi
leaq -0x30(%rbp), %rdx
callq 0x7370
jmp 0x6a47
leaq 0x16a60(%rip), %rdx     # 0x1d4ae
leaq -0x7c0(%rbp), %rdi
leaq -0x7e0(%rbp), %rsi
callq 0x7440
jmp 0x6a63
leaq -0x7e0(%rbp), %rdi
callq 0x4688
leaq -0x800(%rbp), %rdi
callq 0x4688
leaq -0x820(%rbp), %rdi
callq 0x4688
leaq -0x840(%rbp), %rdi
callq 0x4688
leaq -0x860(%rbp), %rdi
callq 0x4688
leaq -0x880(%rbp), %rdi
callq 0x4688
leaq -0x8a0(%rbp), %rdi
callq 0x4688
leaq -0x8c0(%rbp), %rdi
callq 0x4688
leaq -0x8e0(%rbp), %rdi
callq 0x4688
leaq -0x900(%rbp), %rdi
callq 0x4688
leaq -0x920(%rbp), %rdi
callq 0x4688
leaq -0x940(%rbp), %rdi
callq 0x4688
leaq -0x960(%rbp), %rdi
callq 0x4688
leaq -0x980(%rbp), %rdi
callq 0x4688
leaq -0x9a0(%rbp), %rdi
callq 0x4688
leaq -0x9e0(%rbp), %rdi
leaq -0x238(%rbp), %rsi
callq 0x4140
jmp 0x6b2c
leaq -0xa00(%rbp), %rdi
leaq -0x2c0(%rbp), %rsi
callq 0x4140
jmp 0x6b41
leaq -0xa20(%rbp), %rdi
leaq -0x70(%rbp), %rsi
callq 0x4140
jmp 0x6b53
leaq -0xa40(%rbp), %rdi
leaq -0x90(%rbp), %rsi
callq 0x4140
jmp 0x6b68
leaq -0xa60(%rbp), %rdi
leaq -0x30(%rbp), %rsi
callq 0x4140
jmp 0x6b7a
leaq -0xa80(%rbp), %rdi
leaq -0x7c0(%rbp), %rsi
callq 0x4140
jmp 0x6b8f
movq %rsp, %rax
leaq -0xa80(%rbp), %rcx
movq %rcx, (%rax)
leaq -0x9c0(%rbp), %rdi
leaq -0x9e0(%rbp), %rsi
leaq -0xa00(%rbp), %rdx
leaq -0xa20(%rbp), %rcx
leaq -0xa40(%rbp), %r8
leaq -0xa60(%rbp), %r9
callq 0x4b50
jmp 0x6bcd
leaq -0x4d0(%rbp), %rdi
leaq -0x9c0(%rbp), %rsi
callq 0x4380
leaq -0x9c0(%rbp), %rdi
callq 0x4688
leaq -0xa80(%rbp), %rdi
callq 0x4688
leaq -0xa60(%rbp), %rdi
callq 0x4688
leaq -0xa40(%rbp), %rdi
callq 0x4688
leaq -0xa20(%rbp), %rdi
callq 0x4688
leaq -0xa00(%rbp), %rdi
callq 0x4688
leaq -0x9e0(%rbp), %rdi
callq 0x4688
leaq -0x7c0(%rbp), %rdi
callq 0x4688
leaq -0x760(%rbp), %rdi
callq 0x4688
leaq -0x720(%rbp), %rdi
callq 0x4688
leaq -0x6a0(%rbp), %rdi
callq 0x4688
leaq -0x638(%rbp), %rdi
callq 0x4688
leaq -0x5d0(%rbp), %rdi
callq 0x4688
leaq -0x4d0(%rbp), %rdi
callq 0x4688
leaq -0x390(%rbp), %rdi
callq 0x4688
leaq -0x328(%rbp), %rdi
callq 0x4688
leaq -0x2c0(%rbp), %rdi
callq 0x4688
leaq -0x238(%rbp), %rdi
callq 0x4688
leaq -0x1d0(%rbp), %rdi
callq 0x4688
leaq -0x168(%rbp), %rdi
callq 0x4688
movl $0x0, -0x144(%rbp)
leaq -0x130(%rbp), %rdi
callq 0x4688
leaq -0xf0(%rbp), %rdi
callq 0x4688
leaq -0xc8(%rbp), %rdi
callq 0x4688
leaq -0x90(%rbp), %rdi
callq 0x4688
leaq -0x70(%rbp), %rdi
callq 0x4688
leaq -0x50(%rbp), %rdi
callq 0x4688
leaq -0x30(%rbp), %rdi
callq 0x4688
movl -0x144(%rbp), %eax
testl %eax, %eax
je 0x6d36
jmp 0x6d31
jmp 0x7106
jmp 0x70ff
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa0(%rbp)
movl %eax, -0xa4(%rbp)
jmp 0x6f2b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa0(%rbp)
movl %eax, -0xa4(%rbp)
jmp 0x6f1f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa0(%rbp)
movl %eax, -0xa4(%rbp)
jmp 0x6f13
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa0(%rbp)
movl %eax, -0xa4(%rbp)
jmp 0x6f07
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa0(%rbp)
movl %eax, -0xa4(%rbp)
jmp 0x6efb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa0(%rbp)
movl %eax, -0xa4(%rbp)
jmp 0x6eef
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa0(%rbp)
movl %eax, -0xa4(%rbp)
jmp 0x6ee3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa0(%rbp)
movl %eax, -0xa4(%rbp)
jmp 0x6ed7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa0(%rbp)
movl %eax, -0xa4(%rbp)
jmp 0x6ecb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa0(%rbp)
movl %eax, -0xa4(%rbp)
jmp 0x6ebf
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa0(%rbp)
movl %eax, -0xa4(%rbp)
jmp 0x6eb3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa0(%rbp)
movl %eax, -0xa4(%rbp)
jmp 0x6ea7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa0(%rbp)
movl %eax, -0xa4(%rbp)
jmp 0x6e9b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa0(%rbp)
movl %eax, -0xa4(%rbp)
jmp 0x6e8f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa0(%rbp)
movl %eax, -0xa4(%rbp)
leaq -0x7e0(%rbp), %rdi
callq 0x4688
leaq -0x800(%rbp), %rdi
callq 0x4688
leaq -0x820(%rbp), %rdi
callq 0x4688
leaq -0x840(%rbp), %rdi
callq 0x4688
leaq -0x860(%rbp), %rdi
callq 0x4688
leaq -0x880(%rbp), %rdi
callq 0x4688
leaq -0x8a0(%rbp), %rdi
callq 0x4688
leaq -0x8c0(%rbp), %rdi
callq 0x4688
leaq -0x8e0(%rbp), %rdi
callq 0x4688
leaq -0x900(%rbp), %rdi
callq 0x4688
leaq -0x920(%rbp), %rdi
callq 0x4688
leaq -0x940(%rbp), %rdi
callq 0x4688
leaq -0x960(%rbp), %rdi
callq 0x4688
leaq -0x980(%rbp), %rdi
callq 0x4688
leaq -0x9a0(%rbp), %rdi
callq 0x4688
jmp 0x7020
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa0(%rbp)
movl %eax, -0xa4(%rbp)
jmp 0x7014
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa0(%rbp)
movl %eax, -0xa4(%rbp)
jmp 0x7008
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa0(%rbp)
movl %eax, -0xa4(%rbp)
jmp 0x6ffc
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa0(%rbp)
movl %eax, -0xa4(%rbp)
jmp 0x6ff0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa0(%rbp)
movl %eax, -0xa4(%rbp)
jmp 0x6fe4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa0(%rbp)
movl %eax, -0xa4(%rbp)
jmp 0x6fd8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa0(%rbp)
movl %eax, -0xa4(%rbp)
leaq -0xa80(%rbp), %rdi
callq 0x4688
leaq -0xa60(%rbp), %rdi
callq 0x4688
leaq -0xa40(%rbp), %rdi
callq 0x4688
leaq -0xa20(%rbp), %rdi
callq 0x4688
leaq -0xa00(%rbp), %rdi
callq 0x4688
leaq -0x9e0(%rbp), %rdi
callq 0x4688
leaq -0x7c0(%rbp), %rdi
callq 0x4688
leaq -0x760(%rbp), %rdi
callq 0x4688
leaq -0x720(%rbp), %rdi
callq 0x4688
leaq -0x6a0(%rbp), %rdi
callq 0x4688
leaq -0x638(%rbp), %rdi
callq 0x4688
leaq -0x5d0(%rbp), %rdi
callq 0x4688
leaq -0x4d0(%rbp), %rdi
callq 0x4688
leaq -0x390(%rbp), %rdi
callq 0x4688
leaq -0x328(%rbp), %rdi
callq 0x4688
leaq -0x2c0(%rbp), %rdi
callq 0x4688
leaq -0x238(%rbp), %rdi
callq 0x4688
leaq -0x1d0(%rbp), %rdi
callq 0x4688
leaq -0x168(%rbp), %rdi
callq 0x4688
leaq -0x130(%rbp), %rdi
callq 0x4688
leaq -0xf0(%rbp), %rdi
callq 0x4688
leaq -0xc8(%rbp), %rdi
callq 0x4688
leaq -0x90(%rbp), %rdi
callq 0x4688
leaq -0x70(%rbp), %rdi
callq 0x4688
leaq -0x50(%rbp), %rdi
callq 0x4688
leaq -0x30(%rbp), %rdi
callq 0x4688
jmp 0x7112
jmp 0x70ff
movl $0x0, -0x4(%rbp)
movl -0x4(%rbp), %eax
addq $0xb40, %rsp            # imm = 0xB40
popq %rbp
retq
movq -0xa0(%rbp), %rdi
callq 0x43f0
movq %rax, %rdi
callq 0x77d0
nopw %cs:(%rax,%rax)