// File: /workspace/github_cpp_makefile_star2_O3/muzuka[P]Cards-Against-Humanity-Online/Client.cpp
// Function: main
int main(int argc, char* argv[]) {
	
	if (argc != 3) {
		printf("Usage: %s <server IP> <Server Port>\n", argv[0]);
		exit(EXIT_FAILURE);
	}
	
	printf("Welcome to Cards Against Humanity Online!\n");
	printf("Experience all of the hilarious and bad humour of the real thing.\n");
	printf("What do you want as a username(Must be unique and have no spaces):\n");
	cin >> name;
	self.setName(name);
	printf("Please wait until you have connected.\n");
	
	if ((sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP)) < 0) {
		printf("socket() failed\n");
		exit(EXIT_FAILURE);
	}
	self.setSocket(sock);
	
	int yes = 1;
	if (setsockopt(self.getSocket(), SOL_SOCKET, SO_REUSEADDR, &yes, sizeof(int)) < 0) {
		printf("setsockopt() failed\n");
		exit(EXIT_FAILURE);
	}
	
	memset(&serverAddr, 0, sizeof(serverAddr));
	serverAddr.sin_family = AF_INET;
	serverAddr.sin_port = htons(atoi(argv[2]));
	serverAddr.sin_addr.s_addr = inet_addr(argv[1]);
	
	printf("Connecting to server.\n");
	if (connect(self.getSocket(), (struct sockaddr*) &serverAddr, sizeof(serverAddr)) < 0) {
		printf("connect() failed\n");
		exit(EXIT_FAILURE);
	}
	printf("Connected to Server successfully.\n");

	bytesSent = send(self.getSocket(), self.getName().c_str(), self.getName().length(), 0);
	if (bytesSent <= 0) {
		printf("Couldn't send name.\n");
		exit(EXIT_FAILURE);
	}
	
	// while sent name isn't available
	while(!isReady) {
		memset(&inBuffer, 0, sizeof(inBuffer));
		bytesRecv = 0;
		while(bytesRecv <= 0) {
			// receive confirmation
			bytesRecv = recv(self.getSocket(), (char*)&inBuffer, 1, 0);
		}
		printf("Received answer from Server: %s\n", (char*)inBuffer);
		if (inBuffer[0] == 'y') {
			break;
		}
		else if(inBuffer[0] == 'n'){
			printf("The name was already taken, please enter another:\n");
			cin >> name;
			self.setName(name);
			bytesSent = send(self.getSocket(), self.getName().c_str(), self.getName().length(), 0);
			if (bytesSent <= 0) {
				printf("Couldn't send name.\n");
				exit(EXIT_FAILURE);
			}
		}
		
	}
	printf("The name was accepted!\n");
	// Receive cards
	for(int i = 0; i < 10; i++) {
		memset(&inBuffer, 0, sizeof(inBuffer));
		bytesRecv = 0;
		while(bytesRecv <= 0) {
			bytesRecv = recv(self.getSocket(), (char*)&inBuffer, 100, 0);
		}
		parseMessage(string(inBuffer));
	}
	
	if(self.getHand().empty()) {
		printf("Hand is empty.\n");
	}
	else {
		printf("This is your current hand.\nPlease enter the number to choose one when prompted.\n");
		printHand(self.getHand());
	}
	// Start main loop
	while(running) {
		
		printf("A new round has begun!\n");
		
		// receive NOTIFY for new judge
		while (true) {
			memset(&inBuffer, 0, sizeof(inBuffer));
			bytesRecv = 0;
			while(bytesRecv <= 0) {
				bytesRecv = recv(self.getSocket(), (char*)&inBuffer, 100, 0);
			}
			if (string(inBuffer).length() != 0) {
				printf("The new judge is %s.\n", string(inBuffer).c_str());
				parseMessage(string(inBuffer));
				break;
			}
		}
		
		// receive POST for new black card
		while (true) {
			memset(&inBuffer, 0, sizeof(inBuffer));
			bytesRecv = 0;
			while(bytesRecv <= 0) {
				bytesRecv = recv(self.getSocket(), (char*)&inBuffer, 300, 0);
			}
			if (string(inBuffer).length() != 0) {
				printf("The black card is %s.\n", string(inBuffer).c_str());
				parseMessage(string(inBuffer));
				break;
			}
		}
		
		// Judge Code --------------------------------------
		if(isJudge) {
			printf("Please wait for the others' answers.\n");
			int playerNum = 0;
			// Get number of answers to expect.
			while (playerNum <= 0) {
				memset(&inBuffer, 0, sizeof(inBuffer));
				bytesRecv = 0;
				while (bytesRecv <= 0) {
					bytesRecv = recv(self.getSocket(), (char*)&inBuffer, 100, 0);
				}
				if (string(inBuffer).length() != 0) {
					printf("About to parse notify.\n%s\n", string(inBuffer).c_str());
					playerNum = parseMessage(string(inBuffer));
				}
				else {
					printf("Nothing received yet.\n");
				}
				
				
			}
			printf("PlayerNum is equal to %d.\n", playerNum);
			// receive answers
			for (int i = 0; i < playerNum; i++) {
				memset(&inBuffer, 0, sizeof(inBuffer));
				bytesRecv = 0;
				while (bytesRecv <= 0) {
					bytesRecv = recv(self.getSocket(), (char*)&inBuffer, 100, 0);
				}
				printf("new answer(before parsing):\n%s\n", (char*)inBuffer);
				parseMessage(string(inBuffer));
			}
			
			printf("Got all %d of the answers.\n", playerNum);
			
			printf("All of the answers are ready.\n");
			printAnswers(answers, blackCard.numOfAnswers);
			printf("Please select the best answer:\nCommands:\n");
			printf("a # to send answer.\nt # to test answer.\nh to see choices.\ns to see score.\nq to quit.\n");
			
			cin >> answer;
			if (answer == 'q') {
				note = composeNOTIFYMessage('q', self.getName());
				bytesSent = send(self.getSocket(), (char*)note.c_str(), 100, 0);
				if (bytesSent <= 0) {
					printf("Couldn't send quit.\n");
					exit(EXIT_FAILURE);
				}
				exit(EXIT_FAILURE);
			}
			else if (answer == 'h') {
				printAnswers(answers, blackCard.numOfAnswers);
			}
			else if (answer == 's') {
				printf("You have won %d rounds.\n", self.getScore());
			}
			else {
				cin >> num[0];
			}
			while (!ready) {
				switch (answer) {
					case 'a':
						if(num[0] > blackCard.numOfAnswers || num[0] < 1) {
							printf("Choice is out of range. Try again.");
							break;
						}
						chosen = composeNOTIFYMessage('w', answers[blackCard.numOfAnswers*(num[0] - 1)].owner);
						bytesSent = send(self.getSocket(), (char*)chosen.c_str(), 100, 0);
						if (bytesSent <= 0) {
							printf("Couldn't send NOTIFY.\n");
							exit(EXIT_FAILURE);
						}
						printf("Sent winner to server.\n");
						ready = !ready;
						break;
					case 't':
						int place;
						switch (blackCard.numOfAnswers) {
							case 1:
								ans[0] = answers[num[0]-1].content;
								testAnswer = substitute(blackCard.content, ans, '_');
								printf("%s\n", testAnswer.c_str());
								break;
							case 2:
								place = blackCard.numOfAnswers*(num[0]-1);
								ans[0] = answers[place].content;
								ans[1] = answers[place + 1].content;
								testAnswer = substitute(blackCard.content, ans, '_');
								printf("%s\n", testAnswer.c_str());
								break;
							case 3:
								place = blackCard.numOfAnswers*(num[0]-1);
								ans[0] = answers[place].content;
								ans[1] = answers[place + 1].content;
								ans[2] = answers[place + 2].content;
								testAnswer = substitute(blackCard.content, ans, '_');
								printf("%s\n", testAnswer.c_str());
								break;
							default:
								break;
						}
						break;
					default:
						break;
				}
				if (!ready) {
					printf("Please select the best answer:\nCommands:\n");
					printf("a # to send answer.\nt # to test answer.\nh to see hand\ns to see score\nq to quit.\n");
					
					cin >> answer;
					if (answer == 'q') {
						note = composeNOTIFYMessage('q', self.getName());
						bytesSent = send(self.getSocket(), (char*)note.c_str(), 100, 0);
						if (bytesSent <= 0) {
							printf("Couldn't send quit.\n");
							exit(EXIT_FAILURE);
						}
						exit(EXIT_FAILURE);
					}
					else if (answer == 'h') {
						printAnswers(answers, blackCard.numOfAnswers);
					}
					else if (answer == 's') {
						printf("You have won %d rounds.\n", self.getScore());
					}
					else {
						cin >> num[0];
					}
				}
			}
		}
		// Non-Judge Code---------------------------------------------------
		else {
			
			// Make a choice
			while (!inputValid) {
				getInput();
				processInput();
			}
			
			for (int i = 0; i < blackCard.numOfAnswers; i++) {
				bytesSent = send(self.getSocket(), (char*)composeREQUESTMessage().c_str(), 100, 0);
				if (bytesSent <= 0) {
					printf("Couldn't send request.\n");
					exit(EXIT_FAILURE);
				}
			}
			
			for (int i = 0; i < blackCard.numOfAnswers; i++) {
				bytesRecv = 0;
				memset(&inBuffer, 0, sizeof(inBuffer));
				while (bytesRecv <= 0) {
					bytesRecv = recv(self.getSocket(), (char*)&inBuffer, 100, 0);
				}
				if (string(inBuffer).length() != 0) {
					printf("Received new white card on request.\n");
					parseMessage(string(inBuffer));
				}
				else {
					i--;
				}
				
			}
			printf("Received all new cards as needed.\n");
			
			while (true) {
				memset(&inBuffer, 0, sizeof(inBuffer));
				bytesRecv = 0;
				while (bytesRecv <= 0) {
					bytesRecv = recv(self.getSocket(), (char*)&inBuffer, 100, 0);
				}
				if (string(inBuffer).length() != 0) {
					parseMessage(string(inBuffer));
					break;
				}
			}
		}
	}
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x288, %rsp            # imm = 0x288
movq %rsi, %rbx
cmpl $0x3, %edi
jne 0x4873
leaq 0x3cf5(%rip), %rdi      # 0x72c8
callq 0x2220
leaq 0x3d13(%rip), %rdi      # 0x72f2
callq 0x2220
leaq 0x3d49(%rip), %rdi      # 0x7334
callq 0x2220
movq 0x69e9(%rip), %rdi      # 0x9fe0
leaq 0x6e52(%rip), %rsi      # 0xa450
callq 0x21d0
leaq -0x200(%rbp), %r15
movq %r15, -0x10(%r15)
movq 0x6e3b(%rip), %rsi      # 0xa450
movq 0x6e3c(%rip), %rdx      # 0xa458
addq %rsi, %rdx
leaq -0x210(%rbp), %r14
movq %r14, %rdi
callq 0x30fa
leaq 0x6d6b(%rip), %rdi      # 0xa3a0
movq %r14, %rsi
callq 0x2a9a
movq -0x210(%rbp), %rdi
cmpq %r15, %rdi
je 0x3658
movq -0x200(%rbp), %rsi
incq %rsi
callq 0x2180
leaq 0x3d18(%rip), %rdi      # 0x7377
callq 0x2220
movl $0x2, %edi
movl $0x1, %esi
movl $0x6, %edx
callq 0x2050
movl %eax, 0x6b1a(%rip)      # 0xa198
testl %eax, %eax
js 0x4889
leaq 0x6d13(%rip), %r14      # 0xa3a0
movq %r14, %rdi
movl %eax, %esi
callq 0x2aae
leaq -0x1ac(%rbp), %r15
movl $0x1, (%r15)
movq %r14, %rdi
callq 0x2aa4
movl %eax, %edi
movl $0x1, %esi
movl $0x2, %edx
movq %r15, %rcx
movl $0x4, %r8d
callq 0x2280
testl %eax, %eax
js 0x4895
xorps %xmm0, %xmm0
movups %xmm0, 0x6c6f(%rip)     # 0xa348
leaq 0x6c68(%rip), %r14      # 0xa348
movw $0x2, 0x6c5f(%rip)      # 0xa348
movq 0x10(%rbx), %rdi
callq 0x2240
rolw $0x8, %ax
movw %ax, 0x6c4d(%rip)       # 0xa34a
movq 0x8(%rbx), %rdi
callq 0x2170
movl %eax, 0x6c40(%rip)      # 0xa34c
leaq 0x3c8a(%rip), %rdi      # 0x739d
callq 0x2220
leaq 0x6c81(%rip), %rdi      # 0xa3a0
callq 0x2aa4
movl %eax, %edi
movq %r14, %rsi
movl $0x10, %edx
callq 0x2140
testl %eax, %eax
js 0x48a1
leaq 0x3c71(%rip), %rdi      # 0x73b3
callq 0x2220
leaq 0x6c52(%rip), %r15      # 0xa3a0
movq %r15, %rdi
callq 0x2aa4
movl %eax, %ebx
leaq -0x48(%rbp), %r14
movq %r14, %rdi
movq %r15, %rsi
callq 0x2a6e
movq (%r14), %r14
leaq -0x68(%rbp), %rdi
movq %r15, %rsi
callq 0x2a6e
movq -0x60(%rbp), %rdx
movl %ebx, %edi
movq %r14, %rsi
xorl %ecx, %ecx
callq 0x20c0
movl %eax, 0x6a14(%rip)      # 0xa1a0
leaq -0x58(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x37a5
movq -0x58(%rbp), %rsi
incq %rsi
callq 0x2180
leaq -0x38(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x37be
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x2180
cmpl $0x0, 0x69db(%rip)      # 0xa1a0
jle 0x47f5
cmpb $0x0, 0x69c1(%rip)      # 0xa193
jne 0x395a
leaq -0x1e0(%rbp), %r15
leaq 0x69ca(%rip), %rbx      # 0xa1b0
leaq 0x6bb3(%rip), %r14      # 0xa3a0
leaq 0x3879(%rip), %r12      # 0x706d
movl $0xc8, %edx
movq %rbx, %rdi
xorl %esi, %esi
callq 0x20f0
movl $0x0, 0x698f(%rip)      # 0xa19c
movq %r14, %rdi
callq 0x2aa4
movl $0x1, %edx
movl %eax, %edi
movq %rbx, %rsi
xorl %ecx, %ecx
callq 0x2080
movl %eax, 0x6970(%rip)      # 0xa19c
testl %eax, %eax
jle 0x380d
movq %r12, %rdi
movq %rbx, %rsi
xorl %eax, %eax
callq 0x2040
movzbl 0x696c(%rip), %eax      # 0xa1b0
cmpl $0x6e, %eax
je 0x3857
cmpl $0x79, %eax
jne 0x394d
jmp 0x395a
leaq 0x3b77(%rip), %rdi      # 0x73d5
callq 0x2220
movq 0x6776(%rip), %rdi      # 0x9fe0
leaq 0x6bdf(%rip), %rsi      # 0xa450
callq 0x21d0
movq %r15, -0x1f0(%rbp)
movq 0x6bcc(%rip), %rsi      # 0xa450
movq 0x6bcd(%rip), %rdx      # 0xa458
addq %rsi, %rdx
leaq -0x1f0(%rbp), %r12
movq %r12, %rdi
callq 0x30fa
movq %r14, %rdi
movq %r12, %rsi
callq 0x2a9a
movq -0x1f0(%rbp), %rdi
movq %r15, %r12
cmpq %r15, %rdi
je 0x38c6
movq -0x1e0(%rbp), %rsi
incq %rsi
callq 0x2180
movq %r14, %rdi
callq 0x2aa4
movl %eax, %r13d
leaq -0x48(%rbp), %rdi
movq %r14, %rsi
callq 0x2a6e
movq -0x48(%rbp), %r15
leaq -0x68(%rbp), %rdi
movq %r14, %rsi
callq 0x2a6e
movq -0x60(%rbp), %rdx
movl %r13d, %edi
movq %r15, %rsi
xorl %ecx, %ecx
callq 0x20c0
movl %eax, 0x689c(%rip)      # 0xa1a0
movq -0x68(%rbp), %rdi
leaq -0x58(%rbp), %rax
cmpq %rax, %rdi
movq %r12, %r15
leaq 0x3754(%rip), %r12      # 0x706d
je 0x3927
movq -0x58(%rbp), %rsi
incq %rsi
callq 0x2180
movq -0x48(%rbp), %rdi
leaq -0x38(%rbp), %rax
cmpq %rax, %rdi
je 0x3940
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x2180
cmpl $0x0, 0x6859(%rip)      # 0xa1a0
jle 0x47f5
cmpb $0x1, 0x683f(%rip)      # 0xa193
jne 0x37f4
leaq 0x3aa6(%rip), %rdi      # 0x7407
callq 0x2220
xorl %r13d, %r13d
leaq -0x1c0(%rbp), %r12
leaq 0x6839(%rip), %rbx      # 0xa1b0
leaq 0x6a22(%rip), %r14      # 0xa3a0
leaq -0x1d0(%rbp), %r15
movl $0xc8, %edx
movq %rbx, %rdi
xorl %esi, %esi
callq 0x20f0
movl $0x0, 0x67fe(%rip)      # 0xa19c
movq %r14, %rdi
callq 0x2aa4
movl $0x64, %edx
movl %eax, %edi
movq %rbx, %rsi
xorl %ecx, %ecx
callq 0x2080
movl %eax, 0x67df(%rip)      # 0xa19c
testl %eax, %eax
jle 0x399e
movq %r12, -0x1d0(%rbp)
movq %rbx, %rdi
callq 0x20b0
leaq (%rax,%rbx), %rdx
movq %r15, %rdi
movq %rbx, %rsi
callq 0x6c96
movq %r15, %rdi
callq 0x4b5d
movq -0x1d0(%rbp), %rdi
cmpq %r12, %rdi
je 0x3a02
movq -0x1c0(%rbp), %rsi
incq %rsi
callq 0x2180
incl %r13d
cmpl $0xa, %r13d
jne 0x3985
leaq 0x698a(%rip), %rsi      # 0xa3a0
leaq -0x48(%rbp), %r14
movq %r14, %rdi
callq 0x2efc
movq (%r14), %r15
movq 0x8(%r14), %r13
movq %r14, %rdi
callq 0x2f34
cmpq %r13, %r15
je 0x3a6a
leaq 0x39e1(%rip), %rdi      # 0x741e
callq 0x2220
leaq 0x6957(%rip), %rsi      # 0xa3a0
leaq -0x2b0(%rbp), %r14
movq %r14, %rdi
callq 0x2efc
movq %r14, %rdi
callq 0x5010
movq %r14, %rdi
callq 0x2f34
jmp 0x3a76
leaq 0x39fd(%rip), %rdi      # 0x746e
callq 0x2220
cmpb $0x1, 0x66f3(%rip)      # 0xa170
jne 0x4713
leaq 0x6916(%rip), %r15      # 0xa3a0
leaq -0x48(%rbp), %r14
leaq 0x39e8(%rip), %rdi      # 0x747d
callq 0x2220
movl $0xc8, %edx
movq %rbx, %rdi
xorl %esi, %esi
callq 0x20f0
movl $0x0, 0x66e9(%rip)      # 0xa19c
movq %r15, %rdi
callq 0x2aa4
movl $0x64, %edx
movl %eax, %edi
movq %rbx, %rsi
xorl %ecx, %ecx
callq 0x2080
movl %eax, 0x66ca(%rip)      # 0xa19c
testl %eax, %eax
jle 0x3ab3
leaq -0x38(%rbp), %r12
movq %r12, -0x48(%rbp)
movq %rbx, %rdi
callq 0x20b0
leaq (%rax,%rbx), %rdx
movq %r14, %rdi
movq %rbx, %rsi
callq 0x6c96
movq -0x48(%rbp), %rdi
movq -0x40(%rbp), %r14
cmpq %r12, %rdi
je 0x3b0e
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x2180
testq %r14, %r14
leaq -0x48(%rbp), %r14
je 0x3a9a
leaq -0x38(%rbp), %r13
movq %r13, -0x48(%rbp)
movq %rbx, %rdi
callq 0x20b0
leaq (%rax,%rbx), %rdx
movq %r14, %rdi
movq %rbx, %rsi
callq 0x6c96
movq -0x48(%rbp), %rsi
leaq 0x354d(%rip), %rdi      # 0x708e
xorl %eax, %eax
callq 0x2040
movq -0x48(%rbp), %rdi
cmpq %r13, %rdi
je 0x3b5d
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x2180
leaq -0x198(%rbp), %rax
movq %rax, -0x1a8(%rbp)
movq %rbx, %rdi
callq 0x20b0
leaq (%rax,%rbx), %rdx
leaq -0x1a8(%rbp), %r12
movq %r12, %rdi
movq %rbx, %rsi
callq 0x6c96
movq %r12, %rdi
callq 0x4b5d
movq -0x1a8(%rbp), %rdi
leaq -0x198(%rbp), %rax
cmpq %rax, %rdi
je 0x3bb3
movq -0x198(%rbp), %rsi
incq %rsi
callq 0x2180
movl $0xc8, %edx
movq %rbx, %rdi
xorl %esi, %esi
callq 0x20f0
movl $0x0, 0x65d0(%rip)      # 0xa19c
movq %r15, %rdi
callq 0x2aa4
movl $0x12c, %edx            # imm = 0x12C
movl %eax, %edi
movq %rbx, %rsi
xorl %ecx, %ecx
callq 0x2080
movl %eax, 0x65b1(%rip)      # 0xa19c
testl %eax, %eax
jle 0x3bcc
leaq -0x38(%rbp), %r13
movq %r13, -0x48(%rbp)
movq %rbx, %rdi
callq 0x20b0
leaq (%rax,%rbx), %rdx
movq %r14, %rdi
movq %rbx, %rsi
callq 0x6c96
movq -0x48(%rbp), %rdi
movq -0x40(%rbp), %r14
cmpq %r13, %rdi
je 0x3c27
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x2180
testq %r14, %r14
leaq -0x48(%rbp), %r14
je 0x3bb3
movq %r13, -0x48(%rbp)
movq %rbx, %rdi
callq 0x20b0
leaq (%rax,%rbx), %rdx
movq %r14, %rdi
movq %rbx, %rsi
callq 0x6c96
movq -0x48(%rbp), %rsi
leaq 0x344e(%rip), %rdi      # 0x70a4
xorl %eax, %eax
callq 0x2040
movq -0x48(%rbp), %rdi
cmpq %r13, %rdi
je 0x3c72
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x2180
leaq -0x178(%rbp), %rax
movq %rax, -0x188(%rbp)
movq %rbx, %rdi
callq 0x20b0
leaq (%rax,%rbx), %rdx
leaq -0x188(%rbp), %r12
movq %r12, %rdi
movq %rbx, %rsi
callq 0x6c96
movq %r12, %rdi
callq 0x4b5d
movq -0x188(%rbp), %rdi
leaq -0x178(%rbp), %rax
cmpq %rax, %rdi
je 0x3cc8
movq -0x178(%rbp), %rsi
incq %rsi
callq 0x2180
cmpb $0x0, 0x64c5(%rip)      # 0xa194
je 0x3f88
leaq 0x3815(%rip), %rdi      # 0x74f1
callq 0x2220
xorl %r13d, %r13d
movl $0xc8, %edx
movq %rbx, %rdi
xorl %esi, %esi
callq 0x20f0
movl $0x0, 0x649f(%rip)      # 0xa19c
movq %r15, %rdi
callq 0x2aa4
movl $0x64, %edx
movl %eax, %edi
movq %rbx, %rsi
xorl %ecx, %ecx
callq 0x2080
movl %eax, 0x6480(%rip)      # 0xa19c
testl %eax, %eax
jle 0x3cfd
leaq -0x38(%rbp), %r12
movq %r12, -0x48(%rbp)
movq %rbx, %rdi
callq 0x20b0
leaq (%rax,%rbx), %rdx
movq %r14, %rdi
movq %rbx, %rsi
callq 0x6c96
movq -0x48(%rbp), %rdi
movq -0x40(%rbp), %r14
cmpq %r12, %rdi
je 0x3d58
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x2180
testq %r14, %r14
je 0x3e06
leaq -0x38(%rbp), %r13
movq %r13, -0x48(%rbp)
movq %rbx, %rdi
callq 0x20b0
leaq (%rax,%rbx), %rdx
leaq -0x48(%rbp), %r14
movq %r14, %rdi
movq %rbx, %rsi
callq 0x6c96
movq -0x48(%rbp), %rsi
leaq 0x332c(%rip), %rdi      # 0x70bb
xorl %eax, %eax
callq 0x2040
movq -0x48(%rbp), %rdi
cmpq %r13, %rdi
je 0x3dab
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x2180
leaq -0x158(%rbp), %rax
movq %rax, -0x168(%rbp)
movq %rbx, %rdi
callq 0x20b0
leaq (%rax,%rbx), %rdx
leaq -0x168(%rbp), %r12
movq %r12, %rdi
movq %rbx, %rsi
callq 0x6c96
movq %r12, %rdi
callq 0x4b5d
movl %eax, %r13d
movq -0x168(%rbp), %rdi
leaq -0x158(%rbp), %rax
cmpq %rax, %rdi
je 0x3e16
movq -0x158(%rbp), %rsi
incq %rsi
callq 0x2180
jmp 0x3e16
leaq 0x3822(%rip), %rdi      # 0x762f
callq 0x2220
leaq -0x48(%rbp), %r14
testl %r13d, %r13d
jle 0x3ce4
xorl %r14d, %r14d
leaq 0x32ad(%rip), %rdi      # 0x70d6
movl %r13d, %esi
xorl %eax, %eax
callq 0x2040
movl $0xc8, %edx
movq %rbx, %rdi
xorl %esi, %esi
callq 0x20f0
movl $0x0, 0x6350(%rip)      # 0xa19c
movq %r15, %rdi
callq 0x2aa4
movl $0x64, %edx
movl %eax, %edi
movq %rbx, %rsi
xorl %ecx, %ecx
callq 0x2080
movl %eax, 0x6331(%rip)      # 0xa19c
testl %eax, %eax
jle 0x3e4c
leaq 0x327b(%rip), %rdi      # 0x70f1
movq %rbx, %rsi
xorl %eax, %eax
callq 0x2040
leaq -0x138(%rbp), %rax
movq %rax, -0x148(%rbp)
movq %rbx, %rdi
callq 0x20b0
leaq (%rax,%rbx), %rdx
leaq -0x148(%rbp), %r12
movq %r12, %rdi
movq %rbx, %rsi
callq 0x6c96
movq %r12, %rdi
callq 0x4b5d
movq -0x148(%rbp), %rdi
leaq -0x138(%rbp), %rax
cmpq %rax, %rdi
je 0x3ed6
movq -0x138(%rbp), %rsi
incq %rsi
callq 0x2180
incl %r14d
cmpl %r13d, %r14d
jne 0x3e33
leaq 0x3228(%rip), %rdi      # 0x7111
movl %r13d, %esi
xorl %eax, %eax
callq 0x2040
leaq 0x361c(%rip), %rdi      # 0x7516
callq 0x2220
leaq -0x298(%rbp), %r14
movq %r14, %rdi
leaq 0x6560(%rip), %rsi      # 0xa470
callq 0x2faa
movl 0x6461(%rip), %esi      # 0xa37c
movq %r14, %rdi
callq 0x507f
movq %r14, %rdi
callq 0x2f34
leaq 0x3684(%rip), %rdi      # 0x75b6
callq 0x2220
leaq 0x35f6(%rip), %rdi      # 0x7534
callq 0x2220
movq 0x6096(%rip), %rdi      # 0x9fe0
leaq 0x65ab(%rip), %rsi      # 0xa4fc
callq 0x21e0
movzbl 0x659f(%rip), %eax      # 0xa4fc
cmpl $0x68, %eax
je 0x421c
cmpl $0x73, %eax
leaq -0x48(%rbp), %r14
je 0x41fb
cmpl $0x71, %eax
movq 0x6063(%rip), %r13      # 0x9fe0
jne 0x46ff
jmp 0x4801
cmpb $0x0, 0x6202(%rip)      # 0xa191
jne 0x3f9d
callq 0x57f8
callq 0x5c16
jmp 0x3f88
cmpl $0x0, 0x63d8(%rip)      # 0xa37c
jle 0x4113
xorl %r14d, %r14d
movq %r15, %rdi
callq 0x2aa4
movl %eax, %r13d
leaq -0x48(%rbp), %rdi
callq 0x610c
movq -0x48(%rbp), %rsi
movl $0x64, %edx
movl %r13d, %edi
xorl %ecx, %ecx
callq 0x20c0
movl %eax, 0x61c6(%rip)      # 0xa1a0
movq -0x48(%rbp), %rdi
leaq -0x38(%rbp), %rcx
cmpq %rcx, %rdi
je 0x3ff9
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x2180
movl 0x61a7(%rip), %eax      # 0xa1a0
testl %eax, %eax
jle 0x4727
incl %r14d
movl 0x6372(%rip), %eax      # 0xa37c
cmpl %eax, %r14d
jl 0x3fad
testl %eax, %eax
leaq -0x48(%rbp), %r14
jle 0x4113
xorl %r13d, %r13d
movl $0x0, 0x6174(%rip)      # 0xa19c
movl $0xc8, %edx
movq %rbx, %rdi
xorl %esi, %esi
callq 0x20f0
movq %r15, %rdi
callq 0x2aa4
movl $0x64, %edx
movl %eax, %edi
movq %rbx, %rsi
xorl %ecx, %ecx
callq 0x2080
movl %eax, 0x6146(%rip)      # 0xa19c
testl %eax, %eax
jle 0x4037
leaq -0x38(%rbp), %r12
movq %r12, -0x48(%rbp)
movq %rbx, %rdi
callq 0x20b0
leaq (%rax,%rbx), %rdx
movq %r14, %rdi
movq %rbx, %rsi
callq 0x6c96
movq -0x48(%rbp), %rdi
movq -0x40(%rbp), %r14
cmpq %r12, %rdi
je 0x4092
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x2180
testq %r14, %r14
je 0x4102
leaq 0x3418(%rip), %rdi      # 0x74b6
callq 0x2220
leaq -0x98(%rbp), %rax
movq %rax, -0xa8(%rbp)
movq %rbx, %rdi
callq 0x20b0
leaq (%rax,%rbx), %rdx
leaq -0xa8(%rbp), %r12
movq %r12, %rdi
movq %rbx, %rsi
callq 0x6c96
leaq -0x48(%rbp), %r14
movq %r12, %rdi
callq 0x4b5d
movq -0xa8(%rbp), %rdi
leaq -0x98(%rbp), %rax
cmpq %rax, %rdi
je 0x40fd
movq -0x98(%rbp), %rsi
incq %rsi
callq 0x2180
incl %r13d
jmp 0x4106
leaq -0x48(%rbp), %r14
cmpl 0x626f(%rip), %r13d     # 0xa37c
jl 0x401e
leaq 0x337a(%rip), %rdi      # 0x7494
callq 0x2220
leaq -0x88(%rbp), %r13
movl $0xc8, %edx
movq %rbx, %rdi
xorl %esi, %esi
callq 0x20f0
movl $0x0, 0x605d(%rip)      # 0xa19c
movq %r15, %rdi
callq 0x2aa4
movl $0x64, %edx
movl %eax, %edi
movq %rbx, %rsi
xorl %ecx, %ecx
callq 0x2080
movl %eax, 0x603e(%rip)      # 0xa19c
testl %eax, %eax
jle 0x413f
leaq -0x38(%rbp), %r12
movq %r12, -0x48(%rbp)
movq %rbx, %rdi
callq 0x20b0
leaq (%rax,%rbx), %rdx
movq %r14, %rdi
movq %rbx, %rsi
callq 0x6c96
movq -0x48(%rbp), %rdi
movq -0x40(%rbp), %r14
cmpq %r12, %rdi
je 0x419a
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x2180
testq %r14, %r14
leaq -0x48(%rbp), %r14
je 0x4126
leaq -0x78(%rbp), %rax
movq %rax, -0x88(%rbp)
movq %rbx, %rdi
callq 0x20b0
leaq (%rax,%rbx), %rdx
movq %r13, %rdi
movq %rbx, %rsi
callq 0x6c96
movq %r13, %rdi
callq 0x4b5d
movq -0x88(%rbp), %rdi
leaq -0x78(%rbp), %rax
cmpq %rax, %rdi
je 0x41e9
movq -0x78(%rbp), %rsi
incq %rsi
callq 0x2180
cmpb $0x0, 0x5f80(%rip)      # 0xa170
jne 0x3a8e
jmp 0x4713
movq %r15, %rdi
callq 0x2ab8
leaq 0x2f23(%rip), %rdi      # 0x712d
movl %eax, %esi
xorl %eax, %eax
callq 0x2040
movq 0x5dc6(%rip), %r13      # 0x9fe0
jmp 0x429b
leaq -0x280(%rbp), %r14
movq %r14, %rdi
leaq 0x6243(%rip), %rsi      # 0xa470
callq 0x2faa
movl 0x6144(%rip), %esi      # 0xa37c
movq %r14, %rdi
callq 0x507f
movq %r14, %rdi
callq 0x2f34
leaq -0x48(%rbp), %r14
movq 0x5d8d(%rip), %r13      # 0x9fe0
jmp 0x429b
movq %r15, %rdi
callq 0x2ab8
leaq 0x2ec9(%rip), %rdi      # 0x712d
movl %eax, %esi
xorl %eax, %eax
callq 0x2040
jmp 0x429b
leaq -0x268(%rbp), %r12
movq %r12, %rdi
leaq 0x61f0(%rip), %rsi      # 0xa470
callq 0x2faa
movl 0x60f1(%rip), %esi      # 0xa37c
movq %r12, %rdi
callq 0x507f
movq %r12, %rdi
callq 0x2f34
cmpb $0x0, 0x5ef0(%rip)      # 0xa192
jne 0x41e9
movzbl 0x624d(%rip), %eax      # 0xa4fc
cmpl $0x74, %eax
je 0x42f0
cmpl $0x61, %eax
jne 0x46ad
movl 0x622d(%rip), %eax      # 0xa4f0
movl 0x60b3(%rip), %ecx      # 0xa37c
cmpl %ecx, %eax
setle %dl
testl %eax, %eax
setg %sil
testb %dl, %sil
jne 0x43d1
leaq 0x2e62(%rip), %rdi      # 0x7146
xorl %eax, %eax
callq 0x2040
jmp 0x46ad
movl 0x6086(%rip), %eax      # 0xa37c
cmpl $0x3, %eax
je 0x4596
cmpl $0x2, %eax
je 0x44ab
cmpl $0x1, %eax
leaq -0x48(%rbp), %r14
jne 0x46ad
movslq 0x61d4(%rip), %rax      # 0xa4f0
movq 0x614d(%rip), %rcx      # 0xa470
leaq (%rax,%rax,8), %rax
leaq (%rcx,%rax,8), %rsi
addq $-0x48, %rsi
leaq 0x615a(%rip), %r12      # 0xa490
movq %r12, %rdi
callq 0x20e0
leaq -0xf8(%rbp), %rax
movq %rax, -0x108(%rbp)
movq 0x6005(%rip), %rsi      # 0xa358
movq 0x6006(%rip), %rdx      # 0xa360
addq %rsi, %rdx
leaq -0x108(%rbp), %r13
movq %r13, %rdi
callq 0x30fa
movq %r14, %rdi
movq %r13, %rsi
movq %r12, %rdx
movl $0x5f, %ecx
callq 0x550f
leaq 0x617a(%rip), %rdi      # 0xa500
movq %r14, %rsi
callq 0x21c0
movq -0x48(%rbp), %rdi
leaq -0x38(%rbp), %rax
cmpq %rax, %rdi
je 0x43a7
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x2180
movq -0x108(%rbp), %rdi
leaq -0xf8(%rbp), %rax
cmpq %rax, %rdi
movq 0x5c21(%rip), %r13      # 0x9fe0
je 0x46a1
movq -0xf8(%rbp), %rsi
jmp 0x4699
decl %eax
imull %eax, %ecx
movslq %ecx, %rax
movq 0x6090(%rip), %rcx      # 0xa470
leaq (%rax,%rax,8), %rax
leaq -0x118(%rbp), %rdx
movq %rdx, -0x128(%rbp)
movq 0x28(%rcx,%rax,8), %rsi
movq 0x30(%rcx,%rax,8), %rdx
addq %rsi, %rdx
leaq -0x128(%rbp), %r12
movq %r12, %rdi
callq 0x30fa
movq %r14, %rdi
movl $0x77, %esi
movq %r12, %rdx
callq 0x513c
leaq 0x60fb(%rip), %rdi      # 0xa520
movq %r14, %rsi
callq 0x21c0
movq -0x48(%rbp), %rdi
leaq -0x38(%rbp), %rax
cmpq %rax, %rdi
je 0x4446
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x2180
movq -0x128(%rbp), %rdi
leaq -0x118(%rbp), %rax
cmpq %rax, %rdi
je 0x4468
movq -0x118(%rbp), %rsi
incq %rsi
callq 0x2180
movq %r15, %rdi
callq 0x2aa4
movq 0x60a9(%rip), %rsi      # 0xa520
movl $0x64, %edx
movl %eax, %edi
xorl %ecx, %ecx
callq 0x20c0
movl %eax, 0x5d15(%rip)      # 0xa1a0
testl %eax, %eax
jle 0x47e9
leaq 0x30ef(%rip), %rdi      # 0x7589
callq 0x2220
xorb $0x1, 0x5cec(%rip)      # 0xa192
jmp 0x46ad
movl 0x603e(%rip), %r14d     # 0xa4f0
leal -0x2(,%r14,2), %eax
cltq
leaq (%rax,%rax,8), %rsi
shlq $0x3, %rsi
addq 0x5fa5(%rip), %rsi      # 0xa470
leaq 0x5fbe(%rip), %r12      # 0xa490
movq %r12, %rdi
callq 0x20e0
leal -0x1(,%r14,2), %eax
cltq
leaq (%rax,%rax,8), %rsi
shlq $0x3, %rsi
addq 0x5f7d(%rip), %rsi      # 0xa470
leaq 0x5fb6(%rip), %rdi      # 0xa4b0
callq 0x20e0
leaq -0xd8(%rbp), %rax
movq %rax, -0xe8(%rbp)
movq 0x5e44(%rip), %rsi      # 0xa358
movq 0x5e45(%rip), %rdx      # 0xa360
addq %rsi, %rdx
leaq -0xe8(%rbp), %r13
movq %r13, %rdi
callq 0x30fa
leaq -0x48(%rbp), %r14
movq %r14, %rdi
movq %r13, %rsi
movq %r12, %rdx
movl $0x5f, %ecx
callq 0x550f
leaq 0x5fb5(%rip), %rdi      # 0xa500
movq %r14, %rsi
callq 0x21c0
movq -0x48(%rbp), %rdi
leaq -0x38(%rbp), %rax
cmpq %rax, %rdi
je 0x456c
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x2180
movq -0xe8(%rbp), %rdi
leaq -0xd8(%rbp), %rax
cmpq %rax, %rdi
movq 0x5a5c(%rip), %r13      # 0x9fe0
je 0x46a1
movq -0xd8(%rbp), %rsi
jmp 0x4699
movl 0x5f53(%rip), %r14d     # 0xa4f0
leal (%r14,%r14,2), %eax
addl $-0x3, %eax
cltq
leaq (%rax,%rax,8), %rsi
shlq $0x3, %rsi
addq 0x5ebb(%rip), %rsi      # 0xa470
leaq 0x5ed4(%rip), %r12      # 0xa490
movq %r12, %rdi
callq 0x20e0
leal (%r14,%r14,2), %eax
addl $-0x2, %eax
cltq
leaq (%rax,%rax,8), %rsi
shlq $0x3, %rsi
addq 0x5e94(%rip), %rsi      # 0xa470
leaq 0x5ecd(%rip), %rdi      # 0xa4b0
callq 0x20e0
leal (%r14,%r14,2), %eax
decl %eax
cltq
leaq (%rax,%rax,8), %rsi
shlq $0x3, %rsi
addq 0x5e71(%rip), %rsi      # 0xa470
leaq 0x5eca(%rip), %rdi      # 0xa4d0
callq 0x20e0
leaq -0xb8(%rbp), %rax
movq %rax, -0xc8(%rbp)
movq 0x5d38(%rip), %rsi      # 0xa358
movq 0x5d39(%rip), %rdx      # 0xa360
addq %rsi, %rdx
leaq -0xc8(%rbp), %r13
movq %r13, %rdi
callq 0x30fa
leaq -0x48(%rbp), %r14
movq %r14, %rdi
movq %r13, %rsi
movq %r12, %rdx
movl $0x5f, %ecx
callq 0x550f
leaq 0x5ea9(%rip), %rdi      # 0xa500
movq %r14, %rsi
callq 0x21c0
movq -0x48(%rbp), %rdi
leaq -0x38(%rbp), %rax
cmpq %rax, %rdi
movq 0x596f(%rip), %r13      # 0x9fe0
je 0x467f
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x2180
movq -0xc8(%rbp), %rdi
leaq -0xb8(%rbp), %rax
cmpq %rax, %rdi
je 0x46a1
movq -0xb8(%rbp), %rsi
incq %rsi
callq 0x2180
movq 0x5e58(%rip), %rdi      # 0xa500
callq 0x2220
cmpb $0x0, 0x5ade(%rip)      # 0xa192
jne 0x429b
leaq 0x2ef5(%rip), %rdi      # 0x75b6
callq 0x2220
leaq 0x2f12(%rip), %rdi      # 0x75df
callq 0x2220
movq %r13, %rdi
leaq 0x5e20(%rip), %rsi      # 0xa4fc
callq 0x21e0
movzbl 0x5e14(%rip), %eax      # 0xa4fc
cmpl $0x68, %eax
je 0x426f
cmpl $0x73, %eax
je 0x4255
cmpl $0x71, %eax
je 0x473d
movq %r13, %rdi
leaq 0x5de7(%rip), %rsi      # 0xa4f0
callq 0x2100
jmp 0x429b
xorl %eax, %eax
addq $0x288, %rsp            # imm = 0x288
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x2dac(%rip), %rdi      # 0x74da
callq 0x2220
movl $0x1, %edi
callq 0x21b0
leaq 0x5c5c(%rip), %rsi      # 0xa3a0
leaq -0x230(%rbp), %rbx
movq %rbx, %rdi
callq 0x2a6e
leaq -0x48(%rbp), %rdi
movl $0x71, %esi
movq %rbx, %rdx
callq 0x513c
leaq 0x5dd5(%rip), %rdi      # 0xa540
leaq -0x48(%rbp), %rbx
movq %rbx, %rsi
callq 0x21c0
movq (%rbx), %rdi
leaq -0x38(%rbp), %rax
cmpq %rax, %rdi
je 0x478f
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x2180
leaq -0x220(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x47ae
movq -0x220(%rbp), %rsi
incq %rsi
callq 0x2180
leaq 0x5beb(%rip), %rdi      # 0xa3a0
callq 0x2aa4
movq 0x5d7f(%rip), %rsi      # 0xa540
movl $0x64, %edx
movl %eax, %edi
xorl %ecx, %ecx
callq 0x20c0
movl %eax, 0x59cb(%rip)      # 0xa1a0
testl %eax, %eax
jg 0x4733
leaq 0x2fc7(%rip), %rdi      # 0x77ab
jmp 0x472e
leaq 0x2db0(%rip), %rdi      # 0x75a0
jmp 0x472e
leaq 0x2e49(%rip), %rdi      # 0x7645
jmp 0x472e
leaq 0x5b98(%rip), %rsi      # 0xa3a0
leaq -0x250(%rbp), %rbx
movq %rbx, %rdi
callq 0x2a6e
leaq -0x48(%rbp), %rdi
movl $0x71, %esi
movq %rbx, %rdx
callq 0x513c
leaq 0x5d11(%rip), %rdi      # 0xa540
leaq -0x48(%rbp), %rbx
movq %rbx, %rsi
callq 0x21c0
movq (%rbx), %rdi
leaq -0x38(%rbp), %rax
cmpq %rax, %rdi
je 0x4853
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x2180
leaq -0x240(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x47ae
movq -0x240(%rbp), %rsi
jmp 0x47a6
movq (%rbx), %rsi
leaq 0x27cb(%rip), %rdi      # 0x7048
xorl %eax, %eax
callq 0x2040
jmp 0x4733
leaq 0x2dee(%rip), %rdi      # 0x767e
jmp 0x472e
leaq 0x2dce(%rip), %rdi      # 0x766a
jmp 0x472e
leaq 0x2db1(%rip), %rdi      # 0x7659
jmp 0x472e
movq %rax, %rbx
leaq -0x58(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x48ce
movq -0x58(%rbp), %rsi
incq %rsi
callq 0x2180
jmp 0x48ce
movq %rax, %rbx
leaq -0x38(%rbp), %rax
movq -0x10(%rax), %rdi
jmp 0x4b18
movq %rax, %rbx
movq -0x210(%rbp), %rdi
cmpq %r15, %rdi
je 0x4b55
movq -0x200(%rbp), %rsi
jmp 0x4b40
movq %rax, %rbx
leaq -0x240(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x4b55
movq -0x240(%rbp), %rsi
jmp 0x4b40
jmp 0x4b0d
movq %rax, %rbx
movq -0x1f0(%rbp), %rdi
cmpq %r15, %rdi
je 0x4b55
movq -0x1e0(%rbp), %rsi
jmp 0x4b40
movq %rax, %rbx
movq -0x68(%rbp), %rdi
leaq -0x58(%rbp), %rax
cmpq %rax, %rdi
je 0x4b10
movq -0x58(%rbp), %rsi
incq %rsi
callq 0x2180
jmp 0x4b10
movq %rax, %rbx
movq -0x88(%rbp), %rdi
leaq -0x78(%rbp), %rax
cmpq %rax, %rdi
je 0x4b55
movq -0x78(%rbp), %rsi
jmp 0x4b40
jmp 0x4b52
movq %rax, %rbx
leaq -0x220(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x4b55
movq -0x220(%rbp), %rsi
jmp 0x4b40
movq %rax, %rbx
movq -0x108(%rbp), %rdi
leaq -0xf8(%rbp), %rax
cmpq %rax, %rdi
je 0x4b55
movq -0xf8(%rbp), %rsi
jmp 0x4b40
movq %rax, %rbx
movq -0xe8(%rbp), %rdi
leaq -0xd8(%rbp), %rax
cmpq %rax, %rdi
je 0x4b55
movq -0xd8(%rbp), %rsi
jmp 0x4b40
movq %rax, %rbx
movq -0xc8(%rbp), %rdi
leaq -0xb8(%rbp), %rax
cmpq %rax, %rdi
je 0x4b55
movq -0xb8(%rbp), %rsi
jmp 0x4b40
jmp 0x4b52
jmp 0x4b52
movq %rax, %rbx
movq -0x188(%rbp), %rdi
leaq -0x178(%rbp), %rax
cmpq %rax, %rdi
je 0x4b55
movq -0x178(%rbp), %rsi
jmp 0x4b40
jmp 0x4b52
jmp 0x4b52
movq %rax, %rbx
movq -0x1a8(%rbp), %rdi
leaq -0x198(%rbp), %rax
cmpq %rax, %rdi
je 0x4b55
movq -0x198(%rbp), %rsi
jmp 0x4b40
movq %rax, %rbx
movq -0x128(%rbp), %rdi
leaq -0x118(%rbp), %rax
cmpq %rax, %rdi
je 0x4b55
movq -0x118(%rbp), %rsi
jmp 0x4b40
movq %rax, %rbx
movq -0x1d0(%rbp), %rdi
cmpq %r12, %rdi
je 0x4b55
movq -0x1c0(%rbp), %rsi
jmp 0x4b40
jmp 0x4b52
movq %rax, %rbx
movq -0xa8(%rbp), %rdi
leaq -0x98(%rbp), %rax
cmpq %rax, %rdi
je 0x4b55
movq -0x98(%rbp), %rsi
jmp 0x4b40
jmp 0x4b52
jmp 0x4b52
movq %rax, %rbx
movq -0x168(%rbp), %rdi
leaq -0x158(%rbp), %rax
cmpq %rax, %rdi
je 0x4b55
movq -0x158(%rbp), %rsi
jmp 0x4b40
jmp 0x4b52
jmp 0x4b52
movq %rax, %rbx
movq -0x48(%rbp), %rdi
leaq -0x38(%rbp), %rax
cmpq %rax, %rdi
je 0x4b55
movq -0x38(%rbp), %rsi
jmp 0x4b40
movq %rax, %rbx
movq -0x148(%rbp), %rdi
leaq -0x138(%rbp), %rax
cmpq %rax, %rdi
je 0x4b55
movq -0x138(%rbp), %rsi
incq %rsi
callq 0x2180
jmp 0x4b55
jmp 0x4b52
jmp 0x4b52
jmp 0x4b52
jmp 0x4b52
movq %rax, %rbx
movq %rbx, %rdi
callq 0x2270