// File: /workspace/github_cpp_makefile_star2_O1/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 0x48ad
leaq 0x3cb9(%rip), %rdi      # 0x72c8
callq 0x2220
leaq 0x3cd7(%rip), %rdi      # 0x72f2
callq 0x2220
leaq 0x3d0d(%rip), %rdi      # 0x7334
callq 0x2220
movq 0x69ad(%rip), %rdi      # 0x9fe0
leaq 0x6e16(%rip), %rsi      # 0xa450
callq 0x21d0
leaq -0x200(%rbp), %r15
movq %r15, -0x10(%r15)
movq 0x6dff(%rip), %rsi      # 0xa450
movq 0x6e00(%rip), %rdx      # 0xa458
addq %rsi, %rdx
leaq -0x210(%rbp), %r14
movq %r14, %rdi
callq 0x313c
leaq 0x6d2f(%rip), %rdi      # 0xa3a0
movq %r14, %rsi
callq 0x2a9a
movq -0x210(%rbp), %rdi
cmpq %r15, %rdi
je 0x3694
movq -0x200(%rbp), %rsi
incq %rsi
callq 0x2180
leaq 0x3cdc(%rip), %rdi      # 0x7377
callq 0x2220
movl $0x2, %edi
movl $0x1, %esi
movl $0x6, %edx
callq 0x2050
movl %eax, 0x6ade(%rip)      # 0xa198
testl %eax, %eax
js 0x48c3
leaq 0x6cd7(%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 0x48cf
xorps %xmm0, %xmm0
movups %xmm0, 0x6c33(%rip)     # 0xa348
leaq 0x6c2c(%rip), %r14      # 0xa348
movw $0x2, 0x6c23(%rip)      # 0xa348
movq 0x10(%rbx), %rdi
callq 0x2240
rolw $0x8, %ax
movw %ax, 0x6c11(%rip)       # 0xa34a
movq 0x8(%rbx), %rdi
callq 0x2170
movl %eax, 0x6c04(%rip)      # 0xa34c
leaq 0x3c4e(%rip), %rdi      # 0x739d
callq 0x2220
leaq 0x6c45(%rip), %rdi      # 0xa3a0
callq 0x2aa4
movl %eax, %edi
movq %r14, %rsi
movl $0x10, %edx
callq 0x2140
testl %eax, %eax
js 0x48db
leaq 0x3c35(%rip), %rdi      # 0x73b3
callq 0x2220
leaq 0x6c16(%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, 0x69d8(%rip)      # 0xa1a0
leaq -0x58(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x37e1
movq -0x58(%rbp), %rsi
incq %rsi
callq 0x2180
leaq -0x38(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x37fa
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x2180
cmpl $0x0, 0x699f(%rip)      # 0xa1a0
jle 0x482f
cmpb $0x0, 0x6985(%rip)      # 0xa193
jne 0x3996
leaq -0x1e0(%rbp), %r15
leaq 0x698e(%rip), %rbx      # 0xa1b0
leaq 0x6b77(%rip), %r14      # 0xa3a0
leaq 0x383d(%rip), %r12      # 0x706d
movl $0xc8, %edx
movq %rbx, %rdi
xorl %esi, %esi
callq 0x20f0
movl $0x0, 0x6953(%rip)      # 0xa19c
movq %r14, %rdi
callq 0x2aa4
movl $0x1, %edx
movl %eax, %edi
movq %rbx, %rsi
xorl %ecx, %ecx
callq 0x2080
movl %eax, 0x6934(%rip)      # 0xa19c
testl %eax, %eax
jle 0x3849
movq %r12, %rdi
movq %rbx, %rsi
xorl %eax, %eax
callq 0x2040
movzbl 0x6930(%rip), %eax      # 0xa1b0
cmpl $0x6e, %eax
je 0x3893
cmpl $0x79, %eax
jne 0x3989
jmp 0x3996
leaq 0x3b3b(%rip), %rdi      # 0x73d5
callq 0x2220
movq 0x673a(%rip), %rdi      # 0x9fe0
leaq 0x6ba3(%rip), %rsi      # 0xa450
callq 0x21d0
movq %r15, -0x1f0(%rbp)
movq 0x6b90(%rip), %rsi      # 0xa450
movq 0x6b91(%rip), %rdx      # 0xa458
addq %rsi, %rdx
leaq -0x1f0(%rbp), %r12
movq %r12, %rdi
callq 0x313c
movq %r14, %rdi
movq %r12, %rsi
callq 0x2a9a
movq -0x1f0(%rbp), %rdi
movq %r15, %r12
cmpq %r15, %rdi
je 0x3902
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, 0x6860(%rip)      # 0xa1a0
movq -0x68(%rbp), %rdi
leaq -0x58(%rbp), %rax
cmpq %rax, %rdi
movq %r12, %r15
leaq 0x3718(%rip), %r12      # 0x706d
je 0x3963
movq -0x58(%rbp), %rsi
incq %rsi
callq 0x2180
movq -0x48(%rbp), %rdi
leaq -0x38(%rbp), %rax
cmpq %rax, %rdi
je 0x397c
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x2180
cmpl $0x0, 0x681d(%rip)      # 0xa1a0
jle 0x482f
cmpb $0x1, 0x6803(%rip)      # 0xa193
jne 0x3830
leaq 0x3a6a(%rip), %rdi      # 0x7407
callq 0x2220
xorl %r13d, %r13d
leaq -0x1c0(%rbp), %r12
leaq 0x67fd(%rip), %rbx      # 0xa1b0
leaq 0x69e6(%rip), %r14      # 0xa3a0
leaq -0x1d0(%rbp), %r15
movl $0xc8, %edx
movq %rbx, %rdi
xorl %esi, %esi
callq 0x20f0
movl $0x0, 0x67c2(%rip)      # 0xa19c
movq %r14, %rdi
callq 0x2aa4
movl $0x64, %edx
movl %eax, %edi
movq %rbx, %rsi
xorl %ecx, %ecx
callq 0x2080
movl %eax, 0x67a3(%rip)      # 0xa19c
testl %eax, %eax
jle 0x39da
movq %r12, -0x1d0(%rbp)
movq %rbx, %rdi
callq 0x20b0
leaq (%rax,%rbx), %rdx
movq %r15, %rdi
movq %rbx, %rsi
callq 0x6cbc
movq %r15, %rdi
callq 0x4b97
movq -0x1d0(%rbp), %rdi
cmpq %r12, %rdi
je 0x3a3e
movq -0x1c0(%rbp), %rsi
incq %rsi
callq 0x2180
incl %r13d
cmpl $0xa, %r13d
jne 0x39c1
leaq 0x694e(%rip), %rsi      # 0xa3a0
leaq -0x48(%rbp), %r14
movq %r14, %rdi
callq 0x2f3e
movq (%r14), %r15
movq 0x8(%r14), %r13
movq %r14, %rdi
callq 0x2f76
cmpq %r13, %r15
je 0x3aa6
leaq 0x39a5(%rip), %rdi      # 0x741e
callq 0x2220
leaq 0x691b(%rip), %rsi      # 0xa3a0
leaq -0x2b0(%rbp), %r14
movq %r14, %rdi
callq 0x2f3e
movq %r14, %rdi
callq 0x5056
movq %r14, %rdi
callq 0x2f76
jmp 0x3ab2
leaq 0x39c1(%rip), %rdi      # 0x746e
callq 0x2220
cmpb $0x1, 0x66b7(%rip)      # 0xa170
jne 0x474d
leaq 0x68da(%rip), %r15      # 0xa3a0
leaq -0x48(%rbp), %r14
leaq 0x39ac(%rip), %rdi      # 0x747d
callq 0x2220
movl $0xc8, %edx
movq %rbx, %rdi
xorl %esi, %esi
callq 0x20f0
movl $0x0, 0x66ad(%rip)      # 0xa19c
movq %r15, %rdi
callq 0x2aa4
movl $0x64, %edx
movl %eax, %edi
movq %rbx, %rsi
xorl %ecx, %ecx
callq 0x2080
movl %eax, 0x668e(%rip)      # 0xa19c
testl %eax, %eax
jle 0x3aef
leaq -0x38(%rbp), %r12
movq %r12, -0x48(%rbp)
movq %rbx, %rdi
callq 0x20b0
leaq (%rax,%rbx), %rdx
movq %r14, %rdi
movq %rbx, %rsi
callq 0x6cbc
movq -0x48(%rbp), %rdi
movq -0x40(%rbp), %r14
cmpq %r12, %rdi
je 0x3b4a
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x2180
testq %r14, %r14
leaq -0x48(%rbp), %r14
je 0x3ad6
leaq -0x38(%rbp), %r13
movq %r13, -0x48(%rbp)
movq %rbx, %rdi
callq 0x20b0
leaq (%rax,%rbx), %rdx
movq %r14, %rdi
movq %rbx, %rsi
callq 0x6cbc
movq -0x48(%rbp), %rsi
leaq 0x3511(%rip), %rdi      # 0x708e
xorl %eax, %eax
callq 0x2040
movq -0x48(%rbp), %rdi
cmpq %r13, %rdi
je 0x3b99
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 0x6cbc
movq %r12, %rdi
callq 0x4b97
movq -0x1a8(%rbp), %rdi
leaq -0x198(%rbp), %rax
cmpq %rax, %rdi
je 0x3bef
movq -0x198(%rbp), %rsi
incq %rsi
callq 0x2180
movl $0xc8, %edx
movq %rbx, %rdi
xorl %esi, %esi
callq 0x20f0
movl $0x0, 0x6594(%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, 0x6575(%rip)      # 0xa19c
testl %eax, %eax
jle 0x3c08
leaq -0x38(%rbp), %r13
movq %r13, -0x48(%rbp)
movq %rbx, %rdi
callq 0x20b0
leaq (%rax,%rbx), %rdx
movq %r14, %rdi
movq %rbx, %rsi
callq 0x6cbc
movq -0x48(%rbp), %rdi
movq -0x40(%rbp), %r14
cmpq %r13, %rdi
je 0x3c63
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x2180
testq %r14, %r14
leaq -0x48(%rbp), %r14
je 0x3bef
movq %r13, -0x48(%rbp)
movq %rbx, %rdi
callq 0x20b0
leaq (%rax,%rbx), %rdx
movq %r14, %rdi
movq %rbx, %rsi
callq 0x6cbc
movq -0x48(%rbp), %rsi
leaq 0x3412(%rip), %rdi      # 0x70a4
xorl %eax, %eax
callq 0x2040
movq -0x48(%rbp), %rdi
cmpq %r13, %rdi
je 0x3cae
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 0x6cbc
movq %r12, %rdi
callq 0x4b97
movq -0x188(%rbp), %rdi
leaq -0x178(%rbp), %rax
cmpq %rax, %rdi
je 0x3d04
movq -0x178(%rbp), %rsi
incq %rsi
callq 0x2180
cmpb $0x0, 0x6489(%rip)      # 0xa194
je 0x3fc4
leaq 0x37d9(%rip), %rdi      # 0x74f1
callq 0x2220
xorl %r13d, %r13d
movl $0xc8, %edx
movq %rbx, %rdi
xorl %esi, %esi
callq 0x20f0
movl $0x0, 0x6463(%rip)      # 0xa19c
movq %r15, %rdi
callq 0x2aa4
movl $0x64, %edx
movl %eax, %edi
movq %rbx, %rsi
xorl %ecx, %ecx
callq 0x2080
movl %eax, 0x6444(%rip)      # 0xa19c
testl %eax, %eax
jle 0x3d39
leaq -0x38(%rbp), %r12
movq %r12, -0x48(%rbp)
movq %rbx, %rdi
callq 0x20b0
leaq (%rax,%rbx), %rdx
movq %r14, %rdi
movq %rbx, %rsi
callq 0x6cbc
movq -0x48(%rbp), %rdi
movq -0x40(%rbp), %r14
cmpq %r12, %rdi
je 0x3d94
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x2180
testq %r14, %r14
je 0x3e42
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 0x6cbc
movq -0x48(%rbp), %rsi
leaq 0x32f0(%rip), %rdi      # 0x70bb
xorl %eax, %eax
callq 0x2040
movq -0x48(%rbp), %rdi
cmpq %r13, %rdi
je 0x3de7
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 0x6cbc
movq %r12, %rdi
callq 0x4b97
movl %eax, %r13d
movq -0x168(%rbp), %rdi
leaq -0x158(%rbp), %rax
cmpq %rax, %rdi
je 0x3e52
movq -0x158(%rbp), %rsi
incq %rsi
callq 0x2180
jmp 0x3e52
leaq 0x37e6(%rip), %rdi      # 0x762f
callq 0x2220
leaq -0x48(%rbp), %r14
testl %r13d, %r13d
jle 0x3d20
xorl %r14d, %r14d
leaq 0x3271(%rip), %rdi      # 0x70d6
movl %r13d, %esi
xorl %eax, %eax
callq 0x2040
movl $0xc8, %edx
movq %rbx, %rdi
xorl %esi, %esi
callq 0x20f0
movl $0x0, 0x6314(%rip)      # 0xa19c
movq %r15, %rdi
callq 0x2aa4
movl $0x64, %edx
movl %eax, %edi
movq %rbx, %rsi
xorl %ecx, %ecx
callq 0x2080
movl %eax, 0x62f5(%rip)      # 0xa19c
testl %eax, %eax
jle 0x3e88
leaq 0x323f(%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 0x6cbc
movq %r12, %rdi
callq 0x4b97
movq -0x148(%rbp), %rdi
leaq -0x138(%rbp), %rax
cmpq %rax, %rdi
je 0x3f12
movq -0x138(%rbp), %rsi
incq %rsi
callq 0x2180
incl %r14d
cmpl %r13d, %r14d
jne 0x3e6f
leaq 0x31ec(%rip), %rdi      # 0x7111
movl %r13d, %esi
xorl %eax, %eax
callq 0x2040
leaq 0x35e0(%rip), %rdi      # 0x7516
callq 0x2220
leaq -0x298(%rbp), %r14
movq %r14, %rdi
leaq 0x6524(%rip), %rsi      # 0xa470
callq 0x2fec
movl 0x6425(%rip), %esi      # 0xa37c
movq %r14, %rdi
callq 0x50c5
movq %r14, %rdi
callq 0x2f76
leaq 0x3648(%rip), %rdi      # 0x75b6
callq 0x2220
leaq 0x35ba(%rip), %rdi      # 0x7534
callq 0x2220
movq 0x605a(%rip), %rdi      # 0x9fe0
leaq 0x656f(%rip), %rsi      # 0xa4fc
callq 0x21e0
movzbl 0x6563(%rip), %eax      # 0xa4fc
cmpl $0x68, %eax
je 0x4256
cmpl $0x73, %eax
leaq -0x48(%rbp), %r14
je 0x4235
cmpl $0x71, %eax
movq 0x6027(%rip), %r13      # 0x9fe0
jne 0x4739
jmp 0x483b
cmpb $0x0, 0x61c6(%rip)      # 0xa191
jne 0x3fd9
callq 0x581f
callq 0x5c3d
jmp 0x3fc4
cmpl $0x0, 0x639c(%rip)      # 0xa37c
jle 0x4044
xorl %r14d, %r14d
movq %r15, %rdi
callq 0x2aa4
movl %eax, %r13d
leaq -0x48(%rbp), %rdi
callq 0x6133
movq -0x48(%rbp), %rsi
movl $0x64, %edx
movl %r13d, %edi
xorl %ecx, %ecx
callq 0x20c0
movl %eax, 0x618e(%rip)      # 0xa1a0
movq -0x48(%rbp), %rdi
leaq -0x38(%rbp), %rax
cmpq %rax, %rdi
je 0x402b
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x2180
cmpl $0x0, 0x616e(%rip)      # 0xa1a0
jle 0x4761
incl %r14d
cmpl 0x633a(%rip), %r14d     # 0xa37c
jl 0x3fe5
cmpl $0x0, 0x6331(%rip)      # 0xa37c
leaq -0x48(%rbp), %r14
jle 0x414d
xorl %r13d, %r13d
movl $0x0, 0x613a(%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, 0x610c(%rip)      # 0xa19c
testl %eax, %eax
jle 0x4071
leaq -0x38(%rbp), %r12
movq %r12, -0x48(%rbp)
movq %rbx, %rdi
callq 0x20b0
leaq (%rax,%rbx), %rdx
movq %r14, %rdi
movq %rbx, %rsi
callq 0x6cbc
movq -0x48(%rbp), %rdi
movq -0x40(%rbp), %r14
cmpq %r12, %rdi
je 0x40cc
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x2180
testq %r14, %r14
je 0x413c
leaq 0x33de(%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 0x6cbc
leaq -0x48(%rbp), %r14
movq %r12, %rdi
callq 0x4b97
movq -0xa8(%rbp), %rdi
leaq -0x98(%rbp), %rax
cmpq %rax, %rdi
je 0x4137
movq -0x98(%rbp), %rsi
incq %rsi
callq 0x2180
incl %r13d
jmp 0x4140
leaq -0x48(%rbp), %r14
cmpl 0x6235(%rip), %r13d     # 0xa37c
jl 0x4058
leaq 0x3340(%rip), %rdi      # 0x7494
callq 0x2220
leaq -0x88(%rbp), %r13
movl $0xc8, %edx
movq %rbx, %rdi
xorl %esi, %esi
callq 0x20f0
movl $0x0, 0x6023(%rip)      # 0xa19c
movq %r15, %rdi
callq 0x2aa4
movl $0x64, %edx
movl %eax, %edi
movq %rbx, %rsi
xorl %ecx, %ecx
callq 0x2080
movl %eax, 0x6004(%rip)      # 0xa19c
testl %eax, %eax
jle 0x4179
leaq -0x38(%rbp), %r12
movq %r12, -0x48(%rbp)
movq %rbx, %rdi
callq 0x20b0
leaq (%rax,%rbx), %rdx
movq %r14, %rdi
movq %rbx, %rsi
callq 0x6cbc
movq -0x48(%rbp), %rdi
movq -0x40(%rbp), %r14
cmpq %r12, %rdi
je 0x41d4
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x2180
testq %r14, %r14
leaq -0x48(%rbp), %r14
je 0x4160
leaq -0x78(%rbp), %rax
movq %rax, -0x88(%rbp)
movq %rbx, %rdi
callq 0x20b0
leaq (%rax,%rbx), %rdx
movq %r13, %rdi
movq %rbx, %rsi
callq 0x6cbc
movq %r13, %rdi
callq 0x4b97
movq -0x88(%rbp), %rdi
leaq -0x78(%rbp), %rax
cmpq %rax, %rdi
je 0x4223
movq -0x78(%rbp), %rsi
incq %rsi
callq 0x2180
cmpb $0x0, 0x5f46(%rip)      # 0xa170
jne 0x3aca
jmp 0x474d
movq %r15, %rdi
callq 0x2ab8
leaq 0x2ee9(%rip), %rdi      # 0x712d
movl %eax, %esi
xorl %eax, %eax
callq 0x2040
movq 0x5d8c(%rip), %r13      # 0x9fe0
jmp 0x42d5
leaq -0x280(%rbp), %r14
movq %r14, %rdi
leaq 0x6209(%rip), %rsi      # 0xa470
callq 0x2fec
movl 0x610a(%rip), %esi      # 0xa37c
movq %r14, %rdi
callq 0x50c5
movq %r14, %rdi
callq 0x2f76
leaq -0x48(%rbp), %r14
movq 0x5d53(%rip), %r13      # 0x9fe0
jmp 0x42d5
movq %r15, %rdi
callq 0x2ab8
leaq 0x2e8f(%rip), %rdi      # 0x712d
movl %eax, %esi
xorl %eax, %eax
callq 0x2040
jmp 0x42d5
leaq -0x268(%rbp), %r12
movq %r12, %rdi
leaq 0x61b6(%rip), %rsi      # 0xa470
callq 0x2fec
movl 0x60b7(%rip), %esi      # 0xa37c
movq %r12, %rdi
callq 0x50c5
movq %r12, %rdi
callq 0x2f76
cmpb $0x0, 0x5eb6(%rip)      # 0xa192
jne 0x4223
movzbl 0x6213(%rip), %eax      # 0xa4fc
cmpl $0x74, %eax
je 0x432a
cmpl $0x61, %eax
jne 0x46e7
movl 0x61f3(%rip), %eax      # 0xa4f0
movl 0x6079(%rip), %ecx      # 0xa37c
cmpl %ecx, %eax
setle %dl
testl %eax, %eax
setg %sil
testb %dl, %sil
jne 0x440b
leaq 0x2e28(%rip), %rdi      # 0x7146
xorl %eax, %eax
callq 0x2040
jmp 0x46e7
movl 0x604c(%rip), %eax      # 0xa37c
cmpl $0x3, %eax
je 0x45d0
cmpl $0x2, %eax
je 0x44e5
cmpl $0x1, %eax
leaq -0x48(%rbp), %r14
jne 0x46e7
movslq 0x619a(%rip), %rax      # 0xa4f0
movq 0x6113(%rip), %rcx      # 0xa470
leaq (%rax,%rax,8), %rax
leaq (%rcx,%rax,8), %rsi
addq $-0x48, %rsi
leaq 0x6120(%rip), %r12      # 0xa490
movq %r12, %rdi
callq 0x20e0
leaq -0xf8(%rbp), %rax
movq %rax, -0x108(%rbp)
movq 0x5fcb(%rip), %rsi      # 0xa358
movq 0x5fcc(%rip), %rdx      # 0xa360
addq %rsi, %rdx
leaq -0x108(%rbp), %r13
movq %r13, %rdi
callq 0x313c
movq %r14, %rdi
movq %r13, %rsi
movq %r12, %rdx
movl $0x5f, %ecx
callq 0x5549
leaq 0x6140(%rip), %rdi      # 0xa500
movq %r14, %rsi
callq 0x21c0
movq -0x48(%rbp), %rdi
leaq -0x38(%rbp), %rax
cmpq %rax, %rdi
je 0x43e1
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x2180
movq -0x108(%rbp), %rdi
leaq -0xf8(%rbp), %rax
cmpq %rax, %rdi
movq 0x5be7(%rip), %r13      # 0x9fe0
je 0x46db
movq -0xf8(%rbp), %rsi
jmp 0x46d3
decl %eax
imull %eax, %ecx
movslq %ecx, %rax
movq 0x6056(%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 0x313c
movq %r14, %rdi
movl $0x77, %esi
movq %r12, %rdx
callq 0x5176
leaq 0x60c1(%rip), %rdi      # 0xa520
movq %r14, %rsi
callq 0x21c0
movq -0x48(%rbp), %rdi
leaq -0x38(%rbp), %rax
cmpq %rax, %rdi
je 0x4480
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x2180
movq -0x128(%rbp), %rdi
leaq -0x118(%rbp), %rax
cmpq %rax, %rdi
je 0x44a2
movq -0x118(%rbp), %rsi
incq %rsi
callq 0x2180
movq %r15, %rdi
callq 0x2aa4
movq 0x606f(%rip), %rsi      # 0xa520
movl $0x64, %edx
movl %eax, %edi
xorl %ecx, %ecx
callq 0x20c0
movl %eax, 0x5cdb(%rip)      # 0xa1a0
testl %eax, %eax
jle 0x4823
leaq 0x30b5(%rip), %rdi      # 0x7589
callq 0x2220
xorb $0x1, 0x5cb2(%rip)      # 0xa192
jmp 0x46e7
movl 0x6004(%rip), %r14d     # 0xa4f0
leal -0x2(,%r14,2), %eax
cltq
leaq (%rax,%rax,8), %rsi
shlq $0x3, %rsi
addq 0x5f6b(%rip), %rsi      # 0xa470
leaq 0x5f84(%rip), %r12      # 0xa490
movq %r12, %rdi
callq 0x20e0
leal -0x1(,%r14,2), %eax
cltq
leaq (%rax,%rax,8), %rsi
shlq $0x3, %rsi
addq 0x5f43(%rip), %rsi      # 0xa470
leaq 0x5f7c(%rip), %rdi      # 0xa4b0
callq 0x20e0
leaq -0xd8(%rbp), %rax
movq %rax, -0xe8(%rbp)
movq 0x5e0a(%rip), %rsi      # 0xa358
movq 0x5e0b(%rip), %rdx      # 0xa360
addq %rsi, %rdx
leaq -0xe8(%rbp), %r13
movq %r13, %rdi
callq 0x313c
leaq -0x48(%rbp), %r14
movq %r14, %rdi
movq %r13, %rsi
movq %r12, %rdx
movl $0x5f, %ecx
callq 0x5549
leaq 0x5f7b(%rip), %rdi      # 0xa500
movq %r14, %rsi
callq 0x21c0
movq -0x48(%rbp), %rdi
leaq -0x38(%rbp), %rax
cmpq %rax, %rdi
je 0x45a6
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x2180
movq -0xe8(%rbp), %rdi
leaq -0xd8(%rbp), %rax
cmpq %rax, %rdi
movq 0x5a22(%rip), %r13      # 0x9fe0
je 0x46db
movq -0xd8(%rbp), %rsi
jmp 0x46d3
movl 0x5f19(%rip), %r14d     # 0xa4f0
leal (%r14,%r14,2), %eax
addl $-0x3, %eax
cltq
leaq (%rax,%rax,8), %rsi
shlq $0x3, %rsi
addq 0x5e81(%rip), %rsi      # 0xa470
leaq 0x5e9a(%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 0x5e5a(%rip), %rsi      # 0xa470
leaq 0x5e93(%rip), %rdi      # 0xa4b0
callq 0x20e0
leal (%r14,%r14,2), %eax
decl %eax
cltq
leaq (%rax,%rax,8), %rsi
shlq $0x3, %rsi
addq 0x5e37(%rip), %rsi      # 0xa470
leaq 0x5e90(%rip), %rdi      # 0xa4d0
callq 0x20e0
leaq -0xb8(%rbp), %rax
movq %rax, -0xc8(%rbp)
movq 0x5cfe(%rip), %rsi      # 0xa358
movq 0x5cff(%rip), %rdx      # 0xa360
addq %rsi, %rdx
leaq -0xc8(%rbp), %r13
movq %r13, %rdi
callq 0x313c
leaq -0x48(%rbp), %r14
movq %r14, %rdi
movq %r13, %rsi
movq %r12, %rdx
movl $0x5f, %ecx
callq 0x5549
leaq 0x5e6f(%rip), %rdi      # 0xa500
movq %r14, %rsi
callq 0x21c0
movq -0x48(%rbp), %rdi
leaq -0x38(%rbp), %rax
cmpq %rax, %rdi
movq 0x5935(%rip), %r13      # 0x9fe0
je 0x46b9
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x2180
movq -0xc8(%rbp), %rdi
leaq -0xb8(%rbp), %rax
cmpq %rax, %rdi
je 0x46db
movq -0xb8(%rbp), %rsi
incq %rsi
callq 0x2180
movq 0x5e1e(%rip), %rdi      # 0xa500
callq 0x2220
cmpb $0x0, 0x5aa4(%rip)      # 0xa192
jne 0x42d5
leaq 0x2ebb(%rip), %rdi      # 0x75b6
callq 0x2220
leaq 0x2ed8(%rip), %rdi      # 0x75df
callq 0x2220
movq %r13, %rdi
leaq 0x5de6(%rip), %rsi      # 0xa4fc
callq 0x21e0
movzbl 0x5dda(%rip), %eax      # 0xa4fc
cmpl $0x68, %eax
je 0x42a9
cmpl $0x73, %eax
je 0x428f
cmpl $0x71, %eax
je 0x4777
movq %r13, %rdi
leaq 0x5dad(%rip), %rsi      # 0xa4f0
callq 0x2100
jmp 0x42d5
xorl %eax, %eax
addq $0x288, %rsp            # imm = 0x288
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x2d72(%rip), %rdi      # 0x74da
callq 0x2220
movl $0x1, %edi
callq 0x21b0
leaq 0x5c22(%rip), %rsi      # 0xa3a0
leaq -0x230(%rbp), %rbx
movq %rbx, %rdi
callq 0x2a6e
leaq -0x48(%rbp), %rdi
movl $0x71, %esi
movq %rbx, %rdx
callq 0x5176
leaq 0x5d9b(%rip), %rdi      # 0xa540
leaq -0x48(%rbp), %rbx
movq %rbx, %rsi
callq 0x21c0
movq (%rbx), %rdi
leaq -0x38(%rbp), %rax
cmpq %rax, %rdi
je 0x47c9
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x2180
leaq -0x220(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x47e8
movq -0x220(%rbp), %rsi
incq %rsi
callq 0x2180
leaq 0x5bb1(%rip), %rdi      # 0xa3a0
callq 0x2aa4
movq 0x5d45(%rip), %rsi      # 0xa540
movl $0x64, %edx
movl %eax, %edi
xorl %ecx, %ecx
callq 0x20c0
movl %eax, 0x5991(%rip)      # 0xa1a0
testl %eax, %eax
jg 0x476d
leaq 0x2f8d(%rip), %rdi      # 0x77ab
jmp 0x4768
leaq 0x2d76(%rip), %rdi      # 0x75a0
jmp 0x4768
leaq 0x2e0f(%rip), %rdi      # 0x7645
jmp 0x4768
leaq 0x5b5e(%rip), %rsi      # 0xa3a0
leaq -0x250(%rbp), %rbx
movq %rbx, %rdi
callq 0x2a6e
leaq -0x48(%rbp), %rdi
movl $0x71, %esi
movq %rbx, %rdx
callq 0x5176
leaq 0x5cd7(%rip), %rdi      # 0xa540
leaq -0x48(%rbp), %rbx
movq %rbx, %rsi
callq 0x21c0
movq (%rbx), %rdi
leaq -0x38(%rbp), %rax
cmpq %rax, %rdi
je 0x488d
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x2180
leaq -0x240(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x47e8
movq -0x240(%rbp), %rsi
jmp 0x47e0
movq (%rbx), %rsi
leaq 0x2791(%rip), %rdi      # 0x7048
xorl %eax, %eax
callq 0x2040
jmp 0x476d
leaq 0x2db4(%rip), %rdi      # 0x767e
jmp 0x4768
leaq 0x2d94(%rip), %rdi      # 0x766a
jmp 0x4768
leaq 0x2d77(%rip), %rdi      # 0x7659
jmp 0x4768
movq %rax, %rbx
leaq -0x58(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x4908
movq -0x58(%rbp), %rsi
incq %rsi
callq 0x2180
jmp 0x4908
movq %rax, %rbx
leaq -0x38(%rbp), %rax
movq -0x10(%rax), %rdi
jmp 0x4b52
movq %rax, %rbx
movq -0x210(%rbp), %rdi
cmpq %r15, %rdi
je 0x4b8f
movq -0x200(%rbp), %rsi
jmp 0x4b7a
movq %rax, %rbx
leaq -0x240(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x4b8f
movq -0x240(%rbp), %rsi
jmp 0x4b7a
jmp 0x4b47
movq %rax, %rbx
movq -0x1f0(%rbp), %rdi
cmpq %r15, %rdi
je 0x4b8f
movq -0x1e0(%rbp), %rsi
jmp 0x4b7a
movq %rax, %rbx
movq -0x68(%rbp), %rdi
leaq -0x58(%rbp), %rax
cmpq %rax, %rdi
je 0x4b4a
movq -0x58(%rbp), %rsi
incq %rsi
callq 0x2180
jmp 0x4b4a
movq %rax, %rbx
movq -0x88(%rbp), %rdi
leaq -0x78(%rbp), %rax
cmpq %rax, %rdi
je 0x4b8f
movq -0x78(%rbp), %rsi
jmp 0x4b7a
jmp 0x4b8c
movq %rax, %rbx
leaq -0x220(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x4b8f
movq -0x220(%rbp), %rsi
jmp 0x4b7a
movq %rax, %rbx
movq -0x108(%rbp), %rdi
leaq -0xf8(%rbp), %rax
cmpq %rax, %rdi
je 0x4b8f
movq -0xf8(%rbp), %rsi
jmp 0x4b7a
movq %rax, %rbx
movq -0xe8(%rbp), %rdi
leaq -0xd8(%rbp), %rax
cmpq %rax, %rdi
je 0x4b8f
movq -0xd8(%rbp), %rsi
jmp 0x4b7a
movq %rax, %rbx
movq -0xc8(%rbp), %rdi
leaq -0xb8(%rbp), %rax
cmpq %rax, %rdi
je 0x4b8f
movq -0xb8(%rbp), %rsi
jmp 0x4b7a
jmp 0x4b8c
jmp 0x4b8c
movq %rax, %rbx
movq -0x188(%rbp), %rdi
leaq -0x178(%rbp), %rax
cmpq %rax, %rdi
je 0x4b8f
movq -0x178(%rbp), %rsi
jmp 0x4b7a
jmp 0x4b8c
jmp 0x4b8c
movq %rax, %rbx
movq -0x1a8(%rbp), %rdi
leaq -0x198(%rbp), %rax
cmpq %rax, %rdi
je 0x4b8f
movq -0x198(%rbp), %rsi
jmp 0x4b7a
movq %rax, %rbx
movq -0x128(%rbp), %rdi
leaq -0x118(%rbp), %rax
cmpq %rax, %rdi
je 0x4b8f
movq -0x118(%rbp), %rsi
jmp 0x4b7a
movq %rax, %rbx
movq -0x1d0(%rbp), %rdi
cmpq %r12, %rdi
je 0x4b8f
movq -0x1c0(%rbp), %rsi
jmp 0x4b7a
jmp 0x4b8c
movq %rax, %rbx
movq -0xa8(%rbp), %rdi
leaq -0x98(%rbp), %rax
cmpq %rax, %rdi
je 0x4b8f
movq -0x98(%rbp), %rsi
jmp 0x4b7a
jmp 0x4b8c
jmp 0x4b8c
movq %rax, %rbx
movq -0x168(%rbp), %rdi
leaq -0x158(%rbp), %rax
cmpq %rax, %rdi
je 0x4b8f
movq -0x158(%rbp), %rsi
jmp 0x4b7a
jmp 0x4b8c
jmp 0x4b8c
movq %rax, %rbx
movq -0x48(%rbp), %rdi
leaq -0x38(%rbp), %rax
cmpq %rax, %rdi
je 0x4b8f
movq -0x38(%rbp), %rsi
jmp 0x4b7a
movq %rax, %rbx
movq -0x148(%rbp), %rdi
leaq -0x138(%rbp), %rax
cmpq %rax, %rdi
je 0x4b8f
movq -0x138(%rbp), %rsi
incq %rsi
callq 0x2180
jmp 0x4b8f
jmp 0x4b8c
jmp 0x4b8c
jmp 0x4b8c
jmp 0x4b8c
movq %rax, %rbx
movq %rbx, %rdi
callq 0x2270