// File: estwings57[P]CasHMC/sources/CommandQueue.cpp
// Function: CasHMC::CommandQueue::CmdPop(CasHMC::DRAMCommand**)
bool CommandQueue::CmdPop(DRAMCommand **popedCMD)
{
	//Decrement all the counters we have going
	for(int i=0; i<tFAWCountdown.size(); i++) {
		tFAWCountdown[i]--;
	}
	//The head will always be the smallest counter, so check if it has reached 0
	if(tFAWCountdown.size()>0 && tFAWCountdown[0]==0) {
		tFAWCountdown.erase(tFAWCountdown.begin());
	}

	//HMC command scheduling policy
	//Close page
	if(OPEN_PAGE == false) {
		bool foundIssuable = false;
		if(refreshWaiting) {
			//Look into all bank
			bool refreshPossible = true;
			for(int b=0; b<NUM_BANKS; b++) {
				//Issuing writing-back atomic command
				if(atomicLock[b]) {
					if(POPCYCLE(issuedBank) == 0 && ACCESSQUE(b).size()>0 && ACCESSQUE(b)[0]->packetTAG == atomicLockTag[b]) {
						if(isIssuable(ACCESSQUE(b)[0])) {
							if(ACCESSQUE(b)[0]->commandType == WRITE || ACCESSQUE(b)[0]->commandType == WRITE_P) {
								atomicLock[b] = false;
								atomicLockTag[b] = 0;
							}
							*popedCMD = ACCESSQUE(b)[0];
							ACCESSQUE(b).erase(ACCESSQUE(b).begin());
							foundIssuable = true;
						}
					}
					refreshPossible = false;
					break;
				}
				else {
					//Need to check whether bank is open or not
					if(BANKSTATE(b)->currentBankState == ROW_ACTIVE) {
						refreshPossible = false;
						
						for(int i=0; i<ACCESSQUE(b).size(); i++) {
							DRAMCommand *tempCMD = ACCESSQUE(b)[i];
							//If a command in the queue is going to the same bank and row
							if(b==tempCMD->bank && BANKSTATE(b)->openRowAddress==tempCMD->row) {
								//and is not an activate
								if(tempCMD->commandType != ACTIVATE) {
									//and can be issued
									if(isIssuable(tempCMD)) {
										if(tempCMD->atomic
										&& (tempCMD->packetCMD != EQ16 && tempCMD->packetCMD != EQ8)) {
											atomicLock[tempCMD->bank] = true;
											atomicLockTag[tempCMD->bank] = tempCMD->packetTAG;
										}
										*popedCMD = tempCMD;
										ACCESSQUE(b).erase(ACCESSQUE(b).begin()+i);
										foundIssuable = true;
									}
									break;
								}
								else {
									break;
								}
							}
						}
						break;
					}
					//The next ACT and next REF can be issued at the same. nextActivate is considered as nextRefresh
					else if(BANKSTATE(b)->nextActivate > currentClockCycle) {
						refreshPossible = false;
						break;
					}
				}
			}
			if(refreshPossible && BANKSTATE(0)->currentBankState!=POWERDOWN) {
				*popedCMD = new DRAMCommand(REFRESH, 0, 0, 0, 0, 0, false, NULL, true, NULL_, false, false);
				foundIssuable = true;
				refreshWaiting = false;
			}
			if(!foundIssuable)	return false;
		}
		//Normal command scheduling
		else {
			int bankQueChk = 0;
			
			while(1) {
				if(POPCYCLE(issuedBank) == 0) {
					//Issuing writing-back atomic command
					if(atomicLock[issuedBank]) {
						if(ACCESSQUE(issuedBank).size() > 0 && ACCESSQUE(issuedBank)[0]->atomic) {
							if(ACCESSQUE(issuedBank)[0]->packetTAG == atomicLockTag[issuedBank]) {
								if(isIssuable(ACCESSQUE(issuedBank)[0])) {
									if(ACCESSQUE(issuedBank)[0]->commandType == WRITE || ACCESSQUE(issuedBank)[0]->commandType == WRITE_P) {
										atomicLock[issuedBank] = false;
										atomicLockTag[issuedBank] = 0;
									}
									*popedCMD = ACCESSQUE(issuedBank)[0];
									ACCESSQUE(issuedBank).erase(ACCESSQUE(issuedBank).begin());
									foundIssuable = true;
								}
							}
						}
						break;
					}
					else {
						//Search from beginning to find first issuable command
						for(int i=0; i<ACCESSQUE(issuedBank).size(); i++) {
							if(isIssuable(ACCESSQUE(issuedBank)[i])) {
								//Check to make sure not removing a read/write that is paired with an activate
								int j;
								bool dependencyFound = false;
									for(j=0; j<i; j++) {
										DRAMCommand *prevCMD = ACCESSQUE(issuedBank)[j];
										if(prevCMD->commandType==ACTIVATE
										&& prevCMD->packetTAG==ACCESSQUE(issuedBank)[i]->packetTAG) {
											dependencyFound = true;
											break;
										}
									}
								if(dependencyFound) continue;
								
								if(ACCESSQUE(issuedBank)[i]->atomic
								&& (ACCESSQUE(issuedBank)[i]->packetCMD != EQ16
								&& ACCESSQUE(issuedBank)[i]->packetCMD != EQ8)) {
									atomicLock[ACCESSQUE(issuedBank)[i]->bank] = true;
									atomicLockTag[ACCESSQUE(issuedBank)[i]->bank] = ACCESSQUE(issuedBank)[i]->packetTAG;
								}
								*popedCMD = ACCESSQUE(issuedBank)[i];
								ACCESSQUE(issuedBank).erase(ACCESSQUE(issuedBank).begin()+i);
								foundIssuable = true;
								break;
							}
						}
					}
				}
				bankQueChk++;
				issuedBank = (issuedBank<NUM_BANKS-1) ? issuedBank+1 : 0;

				if(foundIssuable)	break;
				else if(bankQueChk == NUM_BANKS)	break;
			}
			if(!foundIssuable)	return false;
		}
	}
	//Open page
	else {
		bool sendingREForPRE = false;
		if(refreshWaiting) {
			//Look into all bank
			bool refreshPossible = true;
			for(int b=0; b<NUM_BANKS; b++) {
				//Issuing writing-back atomic command
				if(atomicLock[b]) {
					if(POPCYCLE(issuedBank) == 0 && ACCESSQUE(b).size()>0 && ACCESSQUE(b)[0]->packetTAG == atomicLockTag[b]) {
						if(isIssuable(ACCESSQUE(b)[0])) {
							if(ACCESSQUE(b)[0]->commandType == WRITE || ACCESSQUE(b)[0]->commandType == WRITE_P) {
								atomicLock[b] = false;
								atomicLockTag[b] = 0;
							}
							*popedCMD = ACCESSQUE(b)[0];
							ACCESSQUE(b).erase(ACCESSQUE(b).begin());
							sendingREForPRE = true;
						}
					}
					refreshPossible = false;
					break;
				}
				else {
					//Need to check whether bank is open or not
					if(BANKSTATE(b)->currentBankState == ROW_ACTIVE) {
						refreshPossible = false;
						bool closeRow = true;

						for(int i=0; i<ACCESSQUE(b).size(); i++) {
							DRAMCommand *tempCMD = ACCESSQUE(b)[i];
							//If a command in the queue is going to the same bank and row
							if(b==tempCMD->bank && BANKSTATE(b)->openRowAddress==tempCMD->row) {
								//and is not an activate
								if(tempCMD->commandType != ACTIVATE) {
									closeRow = false;
									//and can be issued
									if(isIssuable(tempCMD)) {
										if(tempCMD->atomic
										&& (tempCMD->packetCMD != EQ16 && tempCMD->packetCMD != EQ8)) {
											atomicLock[tempCMD->bank] = true;
											atomicLockTag[tempCMD->bank] = tempCMD->packetTAG;
										}
										*popedCMD = tempCMD;
										ACCESSQUE(b).erase(ACCESSQUE(b).begin()+i);
										sendingREForPRE = true;
									}
									break;
								}
								else {
									break;
								}
							}
						}
						if(closeRow && BANKSTATE(b)->nextPrecharge<=currentClockCycle) {
							rowAccessCounter[b]=0;
							*popedCMD = new DRAMCommand(PRECHARGE, 0, b, 0, 0, 0, false, NULL, true, NULL_, false, false);
							sendingREForPRE = true;
						}
						break;
					}
					//The next ACT and next REF can be issued at the same. nextActivate is considered as nextRefresh
					else if(BANKSTATE(b)->nextActivate > currentClockCycle) {
						refreshPossible = false;
						break;
					}
				}
			}
			
			if(refreshPossible && BANKSTATE(0)->currentBankState!=POWERDOWN) {
				*popedCMD = new DRAMCommand(REFRESH, 0, 0, 0, 0, 0, false, NULL, true, NULL_, false, false);
				sendingREForPRE = true;
				refreshWaiting = false;
			}
		}
		//Normal command scheduling
		if(!sendingREForPRE) {
			bool foundIssuable = false;
			int bankQueChk = 0;
		
			while(1) {
				if(POPCYCLE(issuedBank) == 0) {
					//Issuing writing-back atomic command
					if(atomicLock[issuedBank]) {
						if(ACCESSQUE(issuedBank).size() > 0 && ACCESSQUE(issuedBank)[0]->atomic) {
							if(ACCESSQUE(issuedBank)[0]->packetTAG == atomicLockTag[issuedBank]) {
								if(isIssuable(ACCESSQUE(issuedBank)[0])) {
									if(ACCESSQUE(issuedBank)[0]->commandType == WRITE || ACCESSQUE(issuedBank)[0]->commandType == WRITE_P) {
										atomicLock[issuedBank] = false;
										atomicLockTag[issuedBank] = 0;
									}
									*popedCMD = ACCESSQUE(issuedBank)[0];
									ACCESSQUE(issuedBank).erase(ACCESSQUE(issuedBank).begin());
									foundIssuable = true;
								}
							}
						}
					}
					else {
						//Search from beginning to find first issuable command
						for(int i=0; i<ACCESSQUE(issuedBank).size(); i++) {
							if(isIssuable(ACCESSQUE(issuedBank)[i])) {
								//Check for dependencies
								int j;
								bool dependencyFound = false;
								for(j=0; j<i; j++) {
									DRAMCommand *prevCMD = ACCESSQUE(issuedBank)[j];
									if(prevCMD->commandType != ACTIVATE
									&& prevCMD->bank == ACCESSQUE(issuedBank)[i]->bank
									&& prevCMD->row == ACCESSQUE(issuedBank)[i]->row) {
										dependencyFound = true;
										break;
									}
								}
								if(dependencyFound) continue;
								if(ACCESSQUE(issuedBank)[i]->atomic
								&& (ACCESSQUE(issuedBank)[i]->packetCMD != EQ16 && ACCESSQUE(issuedBank)[i]->packetCMD != EQ8)) {
									atomicLock[issuedBank] = true;
									atomicLockTag[issuedBank] = ACCESSQUE(issuedBank)[i]->packetTAG;
								}
								*popedCMD = ACCESSQUE(issuedBank)[i];
								//If the previous bus packet is an activate, that activate have to be removed
								//(check i>0 because if i==0 then theres nothing before it)
								if(i>0 && ACCESSQUE(issuedBank)[i-1]->commandType==ACTIVATE) {
									rowAccessCounter[issuedBank]++;
									delete ACCESSQUE(issuedBank)[i-1];
									ACCESSQUE(issuedBank).erase(ACCESSQUE(issuedBank).begin()+i-1, ACCESSQUE(issuedBank).begin()+i+1);
								}
								else{
									ACCESSQUE(issuedBank).erase(ACCESSQUE(issuedBank).begin()+i);
								}
								foundIssuable = true;
								break;
							}
						}
					}
				}
				bankQueChk++;
				issuedBank = (issuedBank<NUM_BANKS-1) ? issuedBank+1 : 0;
				
				if(foundIssuable)	break;
				else if(bankQueChk == NUM_BANKS)	break;
			}
		
			//If nothing was issuable to open bank, issue PRE command
			if(!foundIssuable) {
				bool sendingPRE = false;
				
				for(int b=0; b<NUM_BANKS; b++) {
					bool found = false;
					if(BANKSTATE(b)->currentBankState == ROW_ACTIVE) {
						if(!atomicLock[b]) {
							for(int i=0; i<ACCESSQUE(b).size(); i++) {
								//If there is something going to opened bank and row, don't send PRE command
								if(ACCESSQUE(b)[i]->bank==b && ACCESSQUE(b)[i]->row == BANKSTATE(b)->openRowAddress) {
									found = true;
									break;
								}
							}
							//Too many accesses have happend, close it
							if(!found || rowAccessCounter[b]>=MAX_ROW_ACCESSES) {
								if(BANKSTATE(b)->nextPrecharge <= currentClockCycle) {
									rowAccessCounter[b]=0;
									*popedCMD = new DRAMCommand(PRECHARGE, 0, b, 0, 0, 0, false, NULL, true, NULL_, false, false);
									sendingPRE = true;
									break;
								}
							}
						}
					}
				}

				if(!sendingPRE)	return false;
			}
		}
	}
	
	if((*popedCMD)->commandType == ACTIVATE) {
		tFAWCountdown.push_back(tFAW);
	}

	if(QUE_PER_BANK) {
		classID.str( string() );	classID.clear();
		classID << (*popedCMD)->bank;
		DEBUG(ALI(18)<<(header+"-"+classID.str()+")")<<ALI(15)<<**popedCMD<<"Down) POP command from command queue");
	}
	else {
		DEBUG(ALI(18)<<(header+")")<<(*popedCMD)->bank<<")"<<ALI(15)<<**popedCMD<<"Down) POP command from command queue");
	}
	return true;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x830, %rsp            # imm = 0x830
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x3a8(%rbp)
movl $0x0, -0x1c(%rbp)
movq -0x3a8(%rbp), %rdi
movslq -0x1c(%rbp), %rax
movq %rax, -0x3b0(%rbp)
addq $0x250, %rdi            # imm = 0x250
callq 0x17eb0
movq %rax, %rcx
movq -0x3b0(%rbp), %rax
cmpq %rcx, %rax
jae 0x1d68b
movq -0x3a8(%rbp), %rdi
addq $0x250, %rdi            # imm = 0x250
movslq -0x1c(%rbp), %rsi
callq 0x17e90
movl (%rax), %ecx
addl $-0x1, %ecx
movl %ecx, (%rax)
movl -0x1c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x1c(%rbp)
jmp 0x1d635
movq -0x3a8(%rbp), %rdi
addq $0x250, %rdi            # imm = 0x250
callq 0x17eb0
cmpq $0x0, %rax
jbe 0x1d708
movq -0x3a8(%rbp), %rdi
addq $0x250, %rdi            # imm = 0x250
xorl %eax, %eax
movl %eax, %esi
callq 0x17e90
cmpl $0x0, (%rax)
jne 0x1d708
movq -0x3a8(%rbp), %rdi
movq %rdi, %rax
addq $0x250, %rax            # imm = 0x250
movq %rax, -0x3b8(%rbp)
addq $0x250, %rdi            # imm = 0x250
callq 0x19bc0
movq %rax, -0x30(%rbp)
leaq -0x28(%rbp), %rdi
leaq -0x30(%rbp), %rsi
callq 0x22aa0
movq -0x3b8(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x22a30
movq %rax, -0x38(%rbp)
leaq 0x48f22(%rip), %rax     # 0x66631
movb (%rax), %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x0, %eax
jne 0x1edfd
movq -0x3a8(%rbp), %rax
movb $0x0, -0x39(%rbp)
testb $0x1, 0x1d0(%rax)
je 0x1e09a
movb $0x1, -0x3a(%rbp)
movl $0x0, -0x40(%rbp)
movl -0x40(%rbp), %eax
leaq 0x48ed4(%rip), %rcx     # 0x66620
cmpl (%rcx), %eax
jge 0x1df9d
movq -0x3a8(%rbp), %rdi
addq $0x1e0, %rdi            # imm = 0x1E0
movslq -0x40(%rbp), %rsi
callq 0x22820
movq %rax, -0x50(%rbp)
movq %rdx, -0x48(%rbp)
leaq -0x50(%rbp), %rdi
callq 0x22880
testb $0x1, %al
jne 0x1d785
jmp 0x1dbd9
leaq 0x48ea4(%rip), %rax     # 0x66630
movb (%rax), %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x1, %eax
jne 0x1d7c0
movq -0x3a8(%rbp), %rax
movq %rax, %rdi
addq $0x220, %rdi            # imm = 0x220
movl 0x1cc(%rax), %eax
movl %eax, %esi
callq 0x229a0
movl (%rax), %eax
movl %eax, -0x3bc(%rbp)
jmp 0x1d7df
movq -0x3a8(%rbp), %rdi
addq $0x220, %rdi            # imm = 0x220
xorl %eax, %eax
movl %eax, %esi
callq 0x229a0
movl (%rax), %eax
movl %eax, -0x3bc(%rbp)
movl -0x3bc(%rbp), %eax
cmpl $0x0, %eax
jne 0x1dbd0
leaq 0x48e3b(%rip), %rax     # 0x66630
movb (%rax), %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x1, %eax
jne 0x1d821
movq -0x3a8(%rbp), %rdi
addq $0x238, %rdi            # imm = 0x238
movslq -0x40(%rbp), %rsi
callq 0x22650
movq %rax, -0x3c8(%rbp)
jmp 0x1d83f
movq -0x3a8(%rbp), %rdi
addq $0x238, %rdi            # imm = 0x238
xorl %eax, %eax
movl %eax, %esi
callq 0x22650
movq %rax, -0x3c8(%rbp)
movq -0x3c8(%rbp), %rdi
callq 0x228b0
cmpq $0x0, %rax
jbe 0x1dbd0
leaq 0x48dd4(%rip), %rax     # 0x66630
movb (%rax), %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x1, %eax
jne 0x1d888
movq -0x3a8(%rbp), %rdi
addq $0x238, %rdi            # imm = 0x238
movslq -0x40(%rbp), %rsi
callq 0x22650
movq %rax, -0x3d0(%rbp)
jmp 0x1d8a6
movq -0x3a8(%rbp), %rdi
addq $0x238, %rdi            # imm = 0x238
xorl %eax, %eax
movl %eax, %esi
callq 0x22650
movq %rax, -0x3d0(%rbp)
movq -0x3d0(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x22ae0
movq -0x3a8(%rbp), %rdi
movq (%rax), %rax
movl 0x14(%rax), %eax
movl %eax, -0x3d4(%rbp)
addq $0x208, %rdi            # imm = 0x208
movslq -0x40(%rbp), %rsi
callq 0x17e90
movq %rax, %rcx
movl -0x3d4(%rbp), %eax
cmpl (%rcx), %eax
jne 0x1dbd0
leaq 0x48d3f(%rip), %rax     # 0x66630
movb (%rax), %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x1, %eax
jne 0x1d91d
movq -0x3a8(%rbp), %rdi
addq $0x238, %rdi            # imm = 0x238
movslq -0x40(%rbp), %rsi
callq 0x22650
movq %rax, -0x3e0(%rbp)
jmp 0x1d93b
movq -0x3a8(%rbp), %rdi
addq $0x238, %rdi            # imm = 0x238
xorl %eax, %eax
movl %eax, %esi
callq 0x22650
movq %rax, -0x3e0(%rbp)
movq -0x3e0(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x22ae0
movq -0x3a8(%rbp), %rdi
movq (%rax), %rsi
callq 0x212a0
testb $0x1, %al
jne 0x1d963
jmp 0x1dbce
leaq 0x48cc6(%rip), %rax     # 0x66630
movb (%rax), %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x1, %eax
jne 0x1d996
movq -0x3a8(%rbp), %rdi
addq $0x238, %rdi            # imm = 0x238
movslq -0x40(%rbp), %rsi
callq 0x22650
movq %rax, -0x3e8(%rbp)
jmp 0x1d9b4
movq -0x3a8(%rbp), %rdi
addq $0x238, %rdi            # imm = 0x238
xorl %eax, %eax
movl %eax, %esi
callq 0x22650
movq %rax, -0x3e8(%rbp)
movq -0x3e8(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x22ae0
movq (%rax), %rax
cmpl $0x3, 0x10(%rax)
je 0x1da37
leaq 0x48c5c(%rip), %rax     # 0x66630
movb (%rax), %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x1, %eax
jne 0x1da00
movq -0x3a8(%rbp), %rdi
addq $0x238, %rdi            # imm = 0x238
movslq -0x40(%rbp), %rsi
callq 0x22650
movq %rax, -0x3f0(%rbp)
jmp 0x1da1e
movq -0x3a8(%rbp), %rdi
addq $0x238, %rdi            # imm = 0x238
xorl %eax, %eax
movl %eax, %esi
callq 0x22650
movq %rax, -0x3f0(%rbp)
movq -0x3f0(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x22ae0
movq (%rax), %rax
cmpl $0x4, 0x10(%rax)
jne 0x1da7e
movq -0x3a8(%rbp), %rdi
addq $0x1e0, %rdi            # imm = 0x1E0
movslq -0x40(%rbp), %rsi
callq 0x22820
movq %rax, -0x60(%rbp)
movq %rdx, -0x58(%rbp)
leaq -0x60(%rbp), %rdi
xorl %esi, %esi
callq 0x22b00
movq -0x3a8(%rbp), %rdi
addq $0x208, %rdi            # imm = 0x208
movslq -0x40(%rbp), %rsi
callq 0x17e90
movl $0x0, (%rax)
leaq 0x48bab(%rip), %rax     # 0x66630
movb (%rax), %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x1, %eax
jne 0x1dab1
movq -0x3a8(%rbp), %rdi
addq $0x238, %rdi            # imm = 0x238
movslq -0x40(%rbp), %rsi
callq 0x22650
movq %rax, -0x3f8(%rbp)
jmp 0x1dacf
movq -0x3a8(%rbp), %rdi
addq $0x238, %rdi            # imm = 0x238
xorl %eax, %eax
movl %eax, %esi
callq 0x22650
movq %rax, -0x3f8(%rbp)
movq -0x3f8(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x22ae0
movq (%rax), %rcx
movq -0x18(%rbp), %rax
movq %rcx, (%rax)
leaq 0x48b40(%rip), %rax     # 0x66630
movb (%rax), %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x1, %eax
jne 0x1db1c
movq -0x3a8(%rbp), %rdi
addq $0x238, %rdi            # imm = 0x238
movslq -0x40(%rbp), %rsi
callq 0x22650
movq %rax, -0x400(%rbp)
jmp 0x1db3a
movq -0x3a8(%rbp), %rdi
addq $0x238, %rdi            # imm = 0x238
xorl %eax, %eax
movl %eax, %esi
callq 0x22650
movq %rax, -0x400(%rbp)
movq -0x400(%rbp), %rax
movq %rax, -0x408(%rbp)
leaq 0x48ae1(%rip), %rax     # 0x66630
movb (%rax), %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x1, %eax
jne 0x1db7b
movq -0x3a8(%rbp), %rdi
addq $0x238, %rdi            # imm = 0x238
movslq -0x40(%rbp), %rsi
callq 0x22650
movq %rax, -0x410(%rbp)
jmp 0x1db99
movq -0x3a8(%rbp), %rdi
addq $0x238, %rdi            # imm = 0x238
xorl %eax, %eax
movl %eax, %esi
callq 0x22650
movq %rax, -0x410(%rbp)
movq -0x410(%rbp), %rdi
callq 0x22bc0
movq %rax, -0x70(%rbp)
leaq -0x68(%rbp), %rdi
leaq -0x70(%rbp), %rsi
callq 0x22bf0
movq -0x408(%rbp), %rdi
movq -0x68(%rbp), %rsi
callq 0x22b50
movq %rax, -0x78(%rbp)
movb $0x1, -0x39(%rbp)
jmp 0x1dbd0
movb $0x0, -0x3a(%rbp)
jmp 0x1df9d
movq -0x3a8(%rbp), %rax
movq 0x1d8(%rax), %rax
movq 0x210(%rax), %rdi
addq $0x1d8, %rdi            # imm = 0x1D8
movslq -0x40(%rbp), %rsi
callq 0x22c30
movq (%rax), %rax
cmpl $0x1, 0x4(%rax)
jne 0x1df4a
movb $0x0, -0x3a(%rbp)
movl $0x0, -0x7c(%rbp)
movslq -0x7c(%rbp), %rax
movq %rax, -0x418(%rbp)
leaq 0x48a08(%rip), %rax     # 0x66630
movb (%rax), %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x1, %eax
jne 0x1dc54
movq -0x3a8(%rbp), %rdi
addq $0x238, %rdi            # imm = 0x238
movslq -0x40(%rbp), %rsi
callq 0x22650
movq %rax, -0x420(%rbp)
jmp 0x1dc72
movq -0x3a8(%rbp), %rdi
addq $0x238, %rdi            # imm = 0x238
xorl %eax, %eax
movl %eax, %esi
callq 0x22650
movq %rax, -0x420(%rbp)
movq -0x420(%rbp), %rdi
callq 0x228b0
movq %rax, %rcx
movq -0x418(%rbp), %rax
cmpq %rcx, %rax
jae 0x1df48
leaq 0x48998(%rip), %rax     # 0x66630
movb (%rax), %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x1, %eax
jne 0x1dcc4
movq -0x3a8(%rbp), %rdi
addq $0x238, %rdi            # imm = 0x238
movslq -0x40(%rbp), %rsi
callq 0x22650
movq %rax, -0x428(%rbp)
jmp 0x1dce2
movq -0x3a8(%rbp), %rdi
addq $0x238, %rdi            # imm = 0x238
xorl %eax, %eax
movl %eax, %esi
callq 0x22650
movq %rax, -0x428(%rbp)
movq -0x428(%rbp), %rdi
movslq -0x7c(%rbp), %rsi
callq 0x22ae0
movq (%rax), %rax
movq %rax, -0x88(%rbp)
movl -0x40(%rbp), %eax
movq -0x88(%rbp), %rcx
cmpl 0x18(%rcx), %eax
jne 0x1df38
movq -0x3a8(%rbp), %rax
movq 0x1d8(%rax), %rax
movq 0x210(%rax), %rdi
addq $0x1d8, %rdi            # imm = 0x1D8
movslq -0x40(%rbp), %rsi
callq 0x22c30
movq (%rax), %rax
movl 0x8(%rax), %eax
movq -0x88(%rbp), %rcx
cmpl 0x20(%rcx), %eax
jne 0x1df38
movq -0x88(%rbp), %rax
cmpl $0x0, 0x10(%rax)
je 0x1df36
movq -0x3a8(%rbp), %rdi
movq -0x88(%rbp), %rsi
callq 0x212a0
testb $0x1, %al
jne 0x1dd77
jmp 0x1df34
movq -0x88(%rbp), %rax
testb $0x1, 0x30(%rax)
je 0x1de1b
movq -0x88(%rbp), %rax
cmpl $0x68, 0x2c(%rax)
je 0x1de1b
movq -0x88(%rbp), %rax
cmpl $0x69, 0x2c(%rax)
je 0x1de1b
movq -0x3a8(%rbp), %rdi
addq $0x1e0, %rdi            # imm = 0x1E0
movq -0x88(%rbp), %rax
movl 0x18(%rax), %eax
movl %eax, %esi
callq 0x22820
movq %rax, -0x98(%rbp)
movq %rdx, -0x90(%rbp)
leaq -0x98(%rbp), %rdi
movl $0x1, %esi
callq 0x22b00
movq -0x3a8(%rbp), %rdi
movq -0x88(%rbp), %rax
movl 0x14(%rax), %eax
movl %eax, -0x42c(%rbp)
addq $0x208, %rdi            # imm = 0x208
movq -0x88(%rbp), %rax
movl 0x18(%rax), %eax
movl %eax, %esi
callq 0x17e90
movl -0x42c(%rbp), %ecx
movl %ecx, (%rax)
movq -0x88(%rbp), %rcx
movq -0x18(%rbp), %rax
movq %rcx, (%rax)
leaq 0x48800(%rip), %rax     # 0x66630
movb (%rax), %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x1, %eax
jne 0x1de5c
movq -0x3a8(%rbp), %rdi
addq $0x238, %rdi            # imm = 0x238
movslq -0x40(%rbp), %rsi
callq 0x22650
movq %rax, -0x438(%rbp)
jmp 0x1de7a
movq -0x3a8(%rbp), %rdi
addq $0x238, %rdi            # imm = 0x238
xorl %eax, %eax
movl %eax, %esi
callq 0x22650
movq %rax, -0x438(%rbp)
movq -0x438(%rbp), %rax
movq %rax, -0x440(%rbp)
leaq 0x487a1(%rip), %rax     # 0x66630
movb (%rax), %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x1, %eax
jne 0x1debb
movq -0x3a8(%rbp), %rdi
addq $0x238, %rdi            # imm = 0x238
movslq -0x40(%rbp), %rsi
callq 0x22650
movq %rax, -0x448(%rbp)
jmp 0x1ded9
movq -0x3a8(%rbp), %rdi
addq $0x238, %rdi            # imm = 0x238
xorl %eax, %eax
movl %eax, %esi
callq 0x22650
movq %rax, -0x448(%rbp)
movq -0x448(%rbp), %rdi
callq 0x22bc0
movq %rax, -0xb0(%rbp)
movslq -0x7c(%rbp), %rsi
leaq -0xb0(%rbp), %rdi
callq 0x22c50
movq %rax, -0xa8(%rbp)
leaq -0xa0(%rbp), %rdi
leaq -0xa8(%rbp), %rsi
callq 0x22bf0
movq -0x440(%rbp), %rdi
movq -0xa0(%rbp), %rsi
callq 0x22b50
movq %rax, -0xb8(%rbp)
movb $0x1, -0x39(%rbp)
jmp 0x1df48
jmp 0x1df48
jmp 0x1df3a
movl -0x7c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x7c(%rbp)
jmp 0x1dc16
jmp 0x1df9d
movq -0x3a8(%rbp), %rax
movq 0x1d8(%rax), %rax
movq 0x210(%rax), %rdi
addq $0x1d8, %rdi            # imm = 0x1D8
movslq -0x40(%rbp), %rsi
callq 0x22c30
movq -0x3a8(%rbp), %rcx
movq (%rax), %rax
movq 0x10(%rax), %rax
cmpq 0x8(%rcx), %rax
jbe 0x1df89
movb $0x0, -0x3a(%rbp)
jmp 0x1df9d
jmp 0x1df8b
jmp 0x1df8d
jmp 0x1df8f
movl -0x40(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x40(%rbp)
jmp 0x1d742
testb $0x1, -0x3a(%rbp)
je 0x1e086
movq -0x3a8(%rbp), %rax
movq 0x1d8(%rax), %rax
movq 0x210(%rax), %rdi
addq $0x1d8, %rdi            # imm = 0x1D8
xorl %eax, %eax
movl %eax, %esi
callq 0x22c30
movq (%rax), %rax
cmpl $0x4, 0x4(%rax)
je 0x1e086
movl $0x38, %edi
callq 0x4390
movq %rax, %rdi
movq %rdi, %rax
movq %rax, -0x450(%rbp)
movq %rsp, %rax
movl $0x0, 0x30(%rax)
movl $0x0, 0x28(%rax)
movl $0x0, 0x20(%rax)
movl $0x1, 0x18(%rax)
movq $0x0, 0x10(%rax)
movl $0x0, 0x8(%rax)
movl $0x0, (%rax)
movl $0x8, %esi
xorl %r9d, %r9d
movl %r9d, %edx
movl %r9d, %ecx
movl %r9d, %r8d
callq 0x30d90
jmp 0x1e03c
movq -0x3a8(%rbp), %rax
movq -0x450(%rbp), %rdx
movq -0x18(%rbp), %rcx
movq %rdx, (%rcx)
movb $0x1, -0x39(%rbp)
movb $0x0, 0x1d0(%rax)
jmp 0x1e086
movq -0x450(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xc0(%rbp)
movl %eax, -0xc4(%rbp)
movl $0x38, %esi
callq 0x43a0
jmp 0x21288
testb $0x1, -0x39(%rbp)
jne 0x1e095
movb $0x0, -0x1(%rbp)
jmp 0x2127a
jmp 0x1edf8
movl $0x0, -0xc8(%rbp)
leaq 0x48585(%rip), %rax     # 0x66630
movb (%rax), %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x1, %eax
jne 0x1e0df
movq -0x3a8(%rbp), %rax
movq %rax, %rdi
addq $0x220, %rdi            # imm = 0x220
movl 0x1cc(%rax), %eax
movl %eax, %esi
callq 0x229a0
movl (%rax), %eax
movl %eax, -0x454(%rbp)
jmp 0x1e0fe
movq -0x3a8(%rbp), %rdi
addq $0x220, %rdi            # imm = 0x220
xorl %eax, %eax
movl %eax, %esi
callq 0x229a0
movl (%rax), %eax
movl %eax, -0x454(%rbp)
movl -0x454(%rbp), %eax
cmpl $0x0, %eax
jne 0x1ed64
movq -0x3a8(%rbp), %rax
movq %rax, %rdi
addq $0x1e0, %rdi            # imm = 0x1E0
movl 0x1cc(%rax), %eax
movl %eax, %esi
callq 0x22820
movq %rax, -0xd8(%rbp)
movq %rdx, -0xd0(%rbp)
leaq -0xd8(%rbp), %rdi
callq 0x22880
testb $0x1, %al
jne 0x1e14e
jmp 0x1e614
leaq 0x484db(%rip), %rax     # 0x66630
movb (%rax), %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x1, %eax
jne 0x1e188
movq -0x3a8(%rbp), %rax
movq %rax, %rdi
addq $0x238, %rdi            # imm = 0x238
movl 0x1cc(%rax), %eax
movl %eax, %esi
callq 0x22650
movq %rax, -0x460(%rbp)
jmp 0x1e1a6
movq -0x3a8(%rbp), %rdi
addq $0x238, %rdi            # imm = 0x238
xorl %eax, %eax
movl %eax, %esi
callq 0x22650
movq %rax, -0x460(%rbp)
movq -0x460(%rbp), %rdi
callq 0x228b0
cmpq $0x0, %rax
jbe 0x1e60f
leaq 0x4846d(%rip), %rax     # 0x66630
movb (%rax), %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x1, %eax
jne 0x1e1f6
movq -0x3a8(%rbp), %rax
movq %rax, %rdi
addq $0x238, %rdi            # imm = 0x238
movl 0x1cc(%rax), %eax
movl %eax, %esi
callq 0x22650
movq %rax, -0x468(%rbp)
jmp 0x1e214
movq -0x3a8(%rbp), %rdi
addq $0x238, %rdi            # imm = 0x238
xorl %eax, %eax
movl %eax, %esi
callq 0x22650
movq %rax, -0x468(%rbp)
movq -0x468(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x22ae0
movq (%rax), %rax
testb $0x1, 0x30(%rax)
je 0x1e60f
leaq 0x483f8(%rip), %rax     # 0x66630
movb (%rax), %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x1, %eax
jne 0x1e26b
movq -0x3a8(%rbp), %rax
movq %rax, %rdi
addq $0x238, %rdi            # imm = 0x238
movl 0x1cc(%rax), %eax
movl %eax, %esi
callq 0x22650
movq %rax, -0x470(%rbp)
jmp 0x1e289
movq -0x3a8(%rbp), %rdi
addq $0x238, %rdi            # imm = 0x238
xorl %eax, %eax
movl %eax, %esi
callq 0x22650
movq %rax, -0x470(%rbp)
movq -0x470(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x22ae0
movq %rax, %rcx
movq -0x3a8(%rbp), %rax
movq (%rcx), %rcx
movl 0x14(%rcx), %ecx
movl %ecx, -0x474(%rbp)
movq %rax, %rdi
addq $0x208, %rdi            # imm = 0x208
movl 0x1cc(%rax), %eax
movl %eax, %esi
callq 0x17e90
movq %rax, %rcx
movl -0x474(%rbp), %eax
cmpl (%rcx), %eax
jne 0x1e60d
leaq 0x48352(%rip), %rax     # 0x66630
movb (%rax), %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x1, %eax
jne 0x1e311
movq -0x3a8(%rbp), %rax
movq %rax, %rdi
addq $0x238, %rdi            # imm = 0x238
movl 0x1cc(%rax), %eax
movl %eax, %esi
callq 0x22650
movq %rax, -0x480(%rbp)
jmp 0x1e32f
movq -0x3a8(%rbp), %rdi
addq $0x238, %rdi            # imm = 0x238
xorl %eax, %eax
movl %eax, %esi
callq 0x22650
movq %rax, -0x480(%rbp)
movq -0x480(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x22ae0
movq -0x3a8(%rbp), %rdi
movq (%rax), %rsi
callq 0x212a0
testb $0x1, %al
jne 0x1e357
jmp 0x1e60b
leaq 0x482d2(%rip), %rax     # 0x66630
movb (%rax), %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x1, %eax
jne 0x1e391
movq -0x3a8(%rbp), %rax
movq %rax, %rdi
addq $0x238, %rdi            # imm = 0x238
movl 0x1cc(%rax), %eax
movl %eax, %esi
callq 0x22650
movq %rax, -0x488(%rbp)
jmp 0x1e3af
movq -0x3a8(%rbp), %rdi
addq $0x238, %rdi            # imm = 0x238
xorl %eax, %eax
movl %eax, %esi
callq 0x22650
movq %rax, -0x488(%rbp)
movq -0x488(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x22ae0
movq (%rax), %rax
cmpl $0x3, 0x10(%rax)
je 0x1e439
leaq 0x48261(%rip), %rax     # 0x66630
movb (%rax), %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x1, %eax
jne 0x1e402
movq -0x3a8(%rbp), %rax
movq %rax, %rdi
addq $0x238, %rdi            # imm = 0x238
movl 0x1cc(%rax), %eax
movl %eax, %esi
callq 0x22650
movq %rax, -0x490(%rbp)
jmp 0x1e420
movq -0x3a8(%rbp), %rdi
addq $0x238, %rdi            # imm = 0x238
xorl %eax, %eax
movl %eax, %esi
callq 0x22650
movq %rax, -0x490(%rbp)
movq -0x490(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x22ae0
movq (%rax), %rax
cmpl $0x4, 0x10(%rax)
jne 0x1e497
movq -0x3a8(%rbp), %rax
movq %rax, %rdi
addq $0x1e0, %rdi            # imm = 0x1E0
movl 0x1cc(%rax), %eax
movl %eax, %esi
callq 0x22820
movq %rax, -0xe8(%rbp)
movq %rdx, -0xe0(%rbp)
leaq -0xe8(%rbp), %rdi
xorl %esi, %esi
callq 0x22b00
movq -0x3a8(%rbp), %rax
movq %rax, %rdi
addq $0x208, %rdi            # imm = 0x208
movl 0x1cc(%rax), %eax
movl %eax, %esi
callq 0x17e90
movl $0x0, (%rax)
leaq 0x48192(%rip), %rax     # 0x66630
movb (%rax), %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x1, %eax
jne 0x1e4d1
movq -0x3a8(%rbp), %rax
movq %rax, %rdi
addq $0x238, %rdi            # imm = 0x238
movl 0x1cc(%rax), %eax
movl %eax, %esi
callq 0x22650
movq %rax, -0x498(%rbp)
jmp 0x1e4ef
movq -0x3a8(%rbp), %rdi
addq $0x238, %rdi            # imm = 0x238
xorl %eax, %eax
movl %eax, %esi
callq 0x22650
movq %rax, -0x498(%rbp)
movq -0x498(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x22ae0
movq (%rax), %rcx
movq -0x18(%rbp), %rax
movq %rcx, (%rax)
leaq 0x48120(%rip), %rax     # 0x66630
movb (%rax), %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x1, %eax
jne 0x1e543
movq -0x3a8(%rbp), %rax
movq %rax, %rdi
addq $0x238, %rdi            # imm = 0x238
movl 0x1cc(%rax), %eax
movl %eax, %esi
callq 0x22650
movq %rax, -0x4a0(%rbp)
jmp 0x1e561
movq -0x3a8(%rbp), %rdi
addq $0x238, %rdi            # imm = 0x238
xorl %eax, %eax
movl %eax, %esi
callq 0x22650
movq %rax, -0x4a0(%rbp)
movq -0x4a0(%rbp), %rax
movq %rax, -0x4a8(%rbp)
leaq 0x480ba(%rip), %rax     # 0x66630
movb (%rax), %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x1, %eax
jne 0x1e5a9
movq -0x3a8(%rbp), %rax
movq %rax, %rdi
addq $0x238, %rdi            # imm = 0x238
movl 0x1cc(%rax), %eax
movl %eax, %esi
callq 0x22650
movq %rax, -0x4b0(%rbp)
jmp 0x1e5c7
movq -0x3a8(%rbp), %rdi
addq $0x238, %rdi            # imm = 0x238
xorl %eax, %eax
movl %eax, %esi
callq 0x22650
movq %rax, -0x4b0(%rbp)
movq -0x4b0(%rbp), %rdi
callq 0x22bc0
movq %rax, -0xf8(%rbp)
leaq -0xf0(%rbp), %rdi
leaq -0xf8(%rbp), %rsi
callq 0x22bf0
movq -0x4a8(%rbp), %rdi
movq -0xf0(%rbp), %rsi
callq 0x22b50
movq %rax, -0x100(%rbp)
movb $0x1, -0x39(%rbp)
jmp 0x1e60d
jmp 0x1e60f
jmp 0x1ede7
movl $0x0, -0x104(%rbp)
movslq -0x104(%rbp), %rax
movq %rax, -0x4b8(%rbp)
leaq 0x47ffd(%rip), %rax     # 0x66630
movb (%rax), %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x1, %eax
jne 0x1e666
movq -0x3a8(%rbp), %rax
movq %rax, %rdi
addq $0x238, %rdi            # imm = 0x238
movl 0x1cc(%rax), %eax
movl %eax, %esi
callq 0x22650
movq %rax, -0x4c0(%rbp)
jmp 0x1e684
movq -0x3a8(%rbp), %rdi
addq $0x238, %rdi            # imm = 0x238
xorl %eax, %eax
movl %eax, %esi
callq 0x22650
movq %rax, -0x4c0(%rbp)
movq -0x4c0(%rbp), %rdi
callq 0x228b0
movq %rax, %rcx
movq -0x4b8(%rbp), %rax
cmpq %rcx, %rax
jae 0x1ed60
leaq 0x47f86(%rip), %rax     # 0x66630
movb (%rax), %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x1, %eax
jne 0x1e6dd
movq -0x3a8(%rbp), %rax
movq %rax, %rdi
addq $0x238, %rdi            # imm = 0x238
movl 0x1cc(%rax), %eax
movl %eax, %esi
callq 0x22650
movq %rax, -0x4c8(%rbp)
jmp 0x1e6fb
movq -0x3a8(%rbp), %rdi
addq $0x238, %rdi            # imm = 0x238
xorl %eax, %eax
movl %eax, %esi
callq 0x22650
movq %rax, -0x4c8(%rbp)
movq -0x4c8(%rbp), %rdi
movslq -0x104(%rbp), %rsi
callq 0x22ae0
movq -0x3a8(%rbp), %rdi
movq (%rax), %rsi
callq 0x212a0
testb $0x1, %al
jne 0x1e726
jmp 0x1ed4a
movb $0x0, -0x109(%rbp)
movl $0x0, -0x108(%rbp)
movl -0x108(%rbp), %eax
cmpl -0x104(%rbp), %eax
jge 0x1e87a
leaq 0x47ee0(%rip), %rax     # 0x66630
movb (%rax), %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x1, %eax
jne 0x1e783
movq -0x3a8(%rbp), %rax
movq %rax, %rdi
addq $0x238, %rdi            # imm = 0x238
movl 0x1cc(%rax), %eax
movl %eax, %esi
callq 0x22650
movq %rax, -0x4d0(%rbp)
jmp 0x1e7a1
movq -0x3a8(%rbp), %rdi
addq $0x238, %rdi            # imm = 0x238
xorl %eax, %eax
movl %eax, %esi
callq 0x22650
movq %rax, -0x4d0(%rbp)
movq -0x4d0(%rbp), %rdi
movslq -0x108(%rbp), %rsi
callq 0x22ae0
movq (%rax), %rax
movq %rax, -0x118(%rbp)
movq -0x118(%rbp), %rax
cmpl $0x0, 0x10(%rax)
jne 0x1e864
movq -0x118(%rbp), %rax
movl 0x14(%rax), %eax
movl %eax, -0x4d4(%rbp)
leaq 0x47e4a(%rip), %rax     # 0x66630
movb (%rax), %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x1, %eax
jne 0x1e819
movq -0x3a8(%rbp), %rax
movq %rax, %rdi
addq $0x238, %rdi            # imm = 0x238
movl 0x1cc(%rax), %eax
movl %eax, %esi
callq 0x22650
movq %rax, -0x4e0(%rbp)
jmp 0x1e837
movq -0x3a8(%rbp), %rdi
addq $0x238, %rdi            # imm = 0x238
xorl %eax, %eax
movl %eax, %esi
callq 0x22650
movq %rax, -0x4e0(%rbp)
movq -0x4e0(%rbp), %rdi
movslq -0x104(%rbp), %rsi
callq 0x22ae0
movq %rax, %rcx
movl -0x4d4(%rbp), %eax
movq (%rcx), %rcx
cmpl 0x14(%rcx), %eax
jne 0x1e864
movb $0x1, -0x109(%rbp)
jmp 0x1e87a
jmp 0x1e866
movl -0x108(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x108(%rbp)
jmp 0x1e737
testb $0x1, -0x109(%rbp)
je 0x1e888
jmp 0x1ed4c
leaq 0x47da1(%rip), %rax     # 0x66630
movb (%rax), %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x1, %eax
jne 0x1e8c2
movq -0x3a8(%rbp), %rax
movq %rax, %rdi
addq $0x238, %rdi            # imm = 0x238
movl 0x1cc(%rax), %eax
movl %eax, %esi
callq 0x22650
movq %rax, -0x4e8(%rbp)
jmp 0x1e8e0
movq -0x3a8(%rbp), %rdi
addq $0x238, %rdi            # imm = 0x238
xorl %eax, %eax
movl %eax, %esi
callq 0x22650
movq %rax, -0x4e8(%rbp)
movq -0x4e8(%rbp), %rdi
movslq -0x104(%rbp), %rsi
callq 0x22ae0
movq (%rax), %rax
testb $0x1, 0x30(%rax)
je 0x1ebb7
leaq 0x47d29(%rip), %rax     # 0x66630
movb (%rax), %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x1, %eax
jne 0x1e93a
movq -0x3a8(%rbp), %rax
movq %rax, %rdi
addq $0x238, %rdi            # imm = 0x238
movl 0x1cc(%rax), %eax
movl %eax, %esi
callq 0x22650
movq %rax, -0x4f0(%rbp)
jmp 0x1e958
movq -0x3a8(%rbp), %rdi
addq $0x238, %rdi            # imm = 0x238
xorl %eax, %eax
movl %eax, %esi
callq 0x22650
movq %rax, -0x4f0(%rbp)
movq -0x4f0(%rbp), %rdi
movslq -0x104(%rbp), %rsi
callq 0x22ae0
movq (%rax), %rax
cmpl $0x68, 0x2c(%rax)
je 0x1ebb7
leaq 0x47cb1(%rip), %rax     # 0x66630
movb (%rax), %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x1, %eax
jne 0x1e9b2
movq -0x3a8(%rbp), %rax
movq %rax, %rdi
addq $0x238, %rdi            # imm = 0x238
movl 0x1cc(%rax), %eax
movl %eax, %esi
callq 0x22650
movq %rax, -0x4f8(%rbp)
jmp 0x1e9d0
movq -0x3a8(%rbp), %rdi
addq $0x238, %rdi            # imm = 0x238
xorl %eax, %eax
movl %eax, %esi
callq 0x22650
movq %rax, -0x4f8(%rbp)
movq -0x4f8(%rbp), %rdi
movslq -0x104(%rbp), %rsi
callq 0x22ae0
movq (%rax), %rax
cmpl $0x69, 0x2c(%rax)
je 0x1ebb7
movq -0x3a8(%rbp), %rax
addq $0x1e0, %rax            # imm = 0x1E0
movq %rax, -0x500(%rbp)
leaq 0x47c25(%rip), %rax     # 0x66630
movb (%rax), %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x1, %eax
jne 0x1ea3e
movq -0x3a8(%rbp), %rax
movq %rax, %rdi
addq $0x238, %rdi            # imm = 0x238
movl 0x1cc(%rax), %eax
movl %eax, %esi
callq 0x22650
movq %rax, -0x508(%rbp)
jmp 0x1ea5c
movq -0x3a8(%rbp), %rdi
addq $0x238, %rdi            # imm = 0x238
xorl %eax, %eax
movl %eax, %esi
callq 0x22650
movq %rax, -0x508(%rbp)
movq -0x508(%rbp), %rdi
movslq -0x104(%rbp), %rsi
callq 0x22ae0
movq -0x500(%rbp), %rdi
movq (%rax), %rax
movl 0x18(%rax), %eax
movl %eax, %esi
callq 0x22820
movq %rax, -0x128(%rbp)
movq %rdx, -0x120(%rbp)
leaq -0x128(%rbp), %rdi
movl $0x1, %esi
callq 0x22b00
leaq 0x47b87(%rip), %rax     # 0x66630
movb (%rax), %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x1, %eax
jne 0x1eadc
movq -0x3a8(%rbp), %rax
movq %rax, %rdi
addq $0x238, %rdi            # imm = 0x238
movl 0x1cc(%rax), %eax
movl %eax, %esi
callq 0x22650
movq %rax, -0x510(%rbp)
jmp 0x1eafa
movq -0x3a8(%rbp), %rdi
addq $0x238, %rdi            # imm = 0x238
xorl %eax, %eax
movl %eax, %esi
callq 0x22650
movq %rax, -0x510(%rbp)
movq -0x510(%rbp), %rdi
movslq -0x104(%rbp), %rsi
callq 0x22ae0
movq %rax, %rcx
movq -0x3a8(%rbp), %rax
movq (%rcx), %rcx
movl 0x14(%rcx), %ecx
movl %ecx, -0x51c(%rbp)
addq $0x208, %rax            # imm = 0x208
movq %rax, -0x518(%rbp)
leaq 0x47af9(%rip), %rax     # 0x66630
movb (%rax), %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x1, %eax
jne 0x1eb6a
movq -0x3a8(%rbp), %rax
movq %rax, %rdi
addq $0x238, %rdi            # imm = 0x238
movl 0x1cc(%rax), %eax
movl %eax, %esi
callq 0x22650
movq %rax, -0x528(%rbp)
jmp 0x1eb88
movq -0x3a8(%rbp), %rdi
addq $0x238, %rdi            # imm = 0x238
xorl %eax, %eax
movl %eax, %esi
callq 0x22650
movq %rax, -0x528(%rbp)
movq -0x528(%rbp), %rdi
movslq -0x104(%rbp), %rsi
callq 0x22ae0
movq -0x518(%rbp), %rdi
movq (%rax), %rax
movl 0x18(%rax), %eax
movl %eax, %esi
callq 0x17e90
movl -0x51c(%rbp), %ecx
movl %ecx, (%rax)
leaq 0x47a72(%rip), %rax     # 0x66630
movb (%rax), %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x1, %eax
jne 0x1ebf1
movq -0x3a8(%rbp), %rax
movq %rax, %rdi
addq $0x238, %rdi            # imm = 0x238
movl 0x1cc(%rax), %eax
movl %eax, %esi
callq 0x22650
movq %rax, -0x530(%rbp)
jmp 0x1ec0f
movq -0x3a8(%rbp), %rdi
addq $0x238, %rdi            # imm = 0x238
xorl %eax, %eax
movl %eax, %esi
callq 0x22650
movq %rax, -0x530(%rbp)
movq -0x530(%rbp), %rdi
movslq -0x104(%rbp), %rsi
callq 0x22ae0
movq (%rax), %rcx
movq -0x18(%rbp), %rax
movq %rcx, (%rax)
leaq 0x479fd(%rip), %rax     # 0x66630
movb (%rax), %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x1, %eax
jne 0x1ec66
movq -0x3a8(%rbp), %rax
movq %rax, %rdi
addq $0x238, %rdi            # imm = 0x238
movl 0x1cc(%rax), %eax
movl %eax, %esi
callq 0x22650
movq %rax, -0x538(%rbp)
jmp 0x1ec84
movq -0x3a8(%rbp), %rdi
addq $0x238, %rdi            # imm = 0x238
xorl %eax, %eax
movl %eax, %esi
callq 0x22650
movq %rax, -0x538(%rbp)
movq -0x538(%rbp), %rax
movq %rax, -0x540(%rbp)
leaq 0x47997(%rip), %rax     # 0x66630
movb (%rax), %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x1, %eax
jne 0x1eccc
movq -0x3a8(%rbp), %rax
movq %rax, %rdi
addq $0x238, %rdi            # imm = 0x238
movl 0x1cc(%rax), %eax
movl %eax, %esi
callq 0x22650
movq %rax, -0x548(%rbp)
jmp 0x1ecea
movq -0x3a8(%rbp), %rdi
addq $0x238, %rdi            # imm = 0x238
xorl %eax, %eax
movl %eax, %esi
callq 0x22650
movq %rax, -0x548(%rbp)
movq -0x548(%rbp), %rdi
callq 0x22bc0
movq %rax, -0x140(%rbp)
movslq -0x104(%rbp), %rsi
leaq -0x140(%rbp), %rdi
callq 0x22c50
movq %rax, -0x138(%rbp)
leaq -0x130(%rbp), %rdi
leaq -0x138(%rbp), %rsi
callq 0x22bf0
movq -0x540(%rbp), %rdi
movq -0x130(%rbp), %rsi
callq 0x22b50
movq %rax, -0x148(%rbp)
movb $0x1, -0x39(%rbp)
jmp 0x1ed60
jmp 0x1ed4c
movl -0x104(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x104(%rbp)
jmp 0x1e61e
jmp 0x1ed62
jmp 0x1ed64
movq -0x3a8(%rbp), %rax
movl -0xc8(%rbp), %ecx
addl $0x1, %ecx
movl %ecx, -0xc8(%rbp)
movl 0x1cc(%rax), %eax
leaq 0x47899(%rip), %rcx     # 0x66620
movl (%rcx), %ecx
subl $0x1, %ecx
cmpl %ecx, %eax
jae 0x1eda8
movq -0x3a8(%rbp), %rax
movl 0x1cc(%rax), %eax
addl $0x1, %eax
movl %eax, -0x54c(%rbp)
jmp 0x1edb2
xorl %eax, %eax
movl %eax, -0x54c(%rbp)
jmp 0x1edb2
movq -0x3a8(%rbp), %rax
movl -0x54c(%rbp), %ecx
movl %ecx, 0x1cc(%rax)
testb $0x1, -0x39(%rbp)
je 0x1edcd
jmp 0x1ede7
movl -0xc8(%rbp), %eax
leaq 0x47846(%rip), %rcx     # 0x66620
cmpl (%rcx), %eax
jne 0x1ede0
jmp 0x1ede7
jmp 0x1ede2
jmp 0x1e0a4
testb $0x1, -0x39(%rbp)
jne 0x1edf6
movb $0x0, -0x1(%rbp)
jmp 0x2127a
jmp 0x1edf8
jmp 0x20d41
movq -0x3a8(%rbp), %rax
movb $0x0, -0x149(%rbp)
testb $0x1, 0x1d0(%rax)
je 0x1f91c
movb $0x1, -0x14a(%rbp)
movl $0x0, -0x150(%rbp)
movl -0x150(%rbp), %eax
leaq 0x477ea(%rip), %rcx     # 0x66620
cmpl (%rcx), %eax
jge 0x1f82b
movq -0x3a8(%rbp), %rdi
addq $0x1e0, %rdi            # imm = 0x1E0
movslq -0x150(%rbp), %rsi
callq 0x22820
movq %rax, -0x160(%rbp)
movq %rdx, -0x158(%rbp)
leaq -0x160(%rbp), %rdi
callq 0x22880
testb $0x1, %al
jne 0x1ee7b
jmp 0x1f30e
leaq 0x477ae(%rip), %rax     # 0x66630
movb (%rax), %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x1, %eax
jne 0x1eeb6
movq -0x3a8(%rbp), %rax
movq %rax, %rdi
addq $0x220, %rdi            # imm = 0x220
movl 0x1cc(%rax), %eax
movl %eax, %esi
callq 0x229a0
movl (%rax), %eax
movl %eax, -0x550(%rbp)
jmp 0x1eed5
movq -0x3a8(%rbp), %rdi
addq $0x220, %rdi            # imm = 0x220
xorl %eax, %eax
movl %eax, %esi
callq 0x229a0
movl (%rax), %eax
movl %eax, -0x550(%rbp)
movl -0x550(%rbp), %eax
cmpl $0x0, %eax
jne 0x1f302
leaq 0x47745(%rip), %rax     # 0x66630
movb (%rax), %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x1, %eax
jne 0x1ef1a
movq -0x3a8(%rbp), %rdi
addq $0x238, %rdi            # imm = 0x238
movslq -0x150(%rbp), %rsi
callq 0x22650
movq %rax, -0x558(%rbp)
jmp 0x1ef38
movq -0x3a8(%rbp), %rdi
addq $0x238, %rdi            # imm = 0x238
xorl %eax, %eax
movl %eax, %esi
callq 0x22650
movq %rax, -0x558(%rbp)
movq -0x558(%rbp), %rdi
callq 0x228b0
cmpq $0x0, %rax
jbe 0x1f302
leaq 0x476db(%rip), %rax     # 0x66630
movb (%rax), %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x1, %eax
jne 0x1ef84
movq -0x3a8(%rbp), %rdi
addq $0x238, %rdi            # imm = 0x238
movslq -0x150(%rbp), %rsi
callq 0x22650
movq %rax, -0x560(%rbp)
jmp 0x1efa2
movq -0x3a8(%rbp), %rdi
addq $0x238, %rdi            # imm = 0x238
xorl %eax, %eax
movl %eax, %esi
callq 0x22650
movq %rax, -0x560(%rbp)
movq -0x560(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x22ae0
movq -0x3a8(%rbp), %rdi
movq (%rax), %rax
movl 0x14(%rax), %eax
movl %eax, -0x564(%rbp)
addq $0x208, %rdi            # imm = 0x208
movslq -0x150(%rbp), %rsi
callq 0x17e90
movq %rax, %rcx
movl -0x564(%rbp), %eax
cmpl (%rcx), %eax
jne 0x1f302
leaq 0x47640(%rip), %rax     # 0x66630
movb (%rax), %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x1, %eax
jne 0x1f01f
movq -0x3a8(%rbp), %rdi
addq $0x238, %rdi            # imm = 0x238
movslq -0x150(%rbp), %rsi
callq 0x22650
movq %rax, -0x570(%rbp)
jmp 0x1f03d
movq -0x3a8(%rbp), %rdi
addq $0x238, %rdi            # imm = 0x238
xorl %eax, %eax
movl %eax, %esi
callq 0x22650
movq %rax, -0x570(%rbp)
movq -0x570(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x22ae0
movq -0x3a8(%rbp), %rdi
movq (%rax), %rsi
callq 0x212a0
testb $0x1, %al
jne 0x1f065
jmp 0x1f300
leaq 0x475c4(%rip), %rax     # 0x66630
movb (%rax), %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x1, %eax
jne 0x1f09b
movq -0x3a8(%rbp), %rdi
addq $0x238, %rdi            # imm = 0x238
movslq -0x150(%rbp), %rsi
callq 0x22650
movq %rax, -0x578(%rbp)
jmp 0x1f0b9
movq -0x3a8(%rbp), %rdi
addq $0x238, %rdi            # imm = 0x238
xorl %eax, %eax
movl %eax, %esi
callq 0x22650
movq %rax, -0x578(%rbp)
movq -0x578(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x22ae0
movq (%rax), %rax
cmpl $0x3, 0x10(%rax)
je 0x1f13f
leaq 0x47557(%rip), %rax     # 0x66630
movb (%rax), %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x1, %eax
jne 0x1f108
movq -0x3a8(%rbp), %rdi
addq $0x238, %rdi            # imm = 0x238
movslq -0x150(%rbp), %rsi
callq 0x22650
movq %rax, -0x580(%rbp)
jmp 0x1f126
movq -0x3a8(%rbp), %rdi
addq $0x238, %rdi            # imm = 0x238
xorl %eax, %eax
movl %eax, %esi
callq 0x22650
movq %rax, -0x580(%rbp)
movq -0x580(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x22ae0
movq (%rax), %rax
cmpl $0x4, 0x10(%rax)
jne 0x1f195
movq -0x3a8(%rbp), %rdi
addq $0x1e0, %rdi            # imm = 0x1E0
movslq -0x150(%rbp), %rsi
callq 0x22820
movq %rax, -0x170(%rbp)
movq %rdx, -0x168(%rbp)
leaq -0x170(%rbp), %rdi
xorl %esi, %esi
callq 0x22b00
movq -0x3a8(%rbp), %rdi
addq $0x208, %rdi            # imm = 0x208
movslq -0x150(%rbp), %rsi
callq 0x17e90
movl $0x0, (%rax)
leaq 0x47494(%rip), %rax     # 0x66630
movb (%rax), %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x1, %eax
jne 0x1f1cb
movq -0x3a8(%rbp), %rdi
addq $0x238, %rdi            # imm = 0x238
movslq -0x150(%rbp), %rsi
callq 0x22650
movq %rax, -0x588(%rbp)
jmp 0x1f1e9
movq -0x3a8(%rbp), %rdi
addq $0x238, %rdi            # imm = 0x238
xorl %eax, %eax
movl %eax, %esi
callq 0x22650
movq %rax, -0x588(%rbp)
movq -0x588(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x22ae0
movq (%rax), %rcx
movq -0x18(%rbp), %rax
movq %rcx, (%rax)
leaq 0x47426(%rip), %rax     # 0x66630
movb (%rax), %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x1, %eax
jne 0x1f239
movq -0x3a8(%rbp), %rdi
addq $0x238, %rdi            # imm = 0x238
movslq -0x150(%rbp), %rsi
callq 0x22650
movq %rax, -0x590(%rbp)
jmp 0x1f257
movq -0x3a8(%rbp), %rdi
addq $0x238, %rdi            # imm = 0x238
xorl %eax, %eax
movl %eax, %esi
callq 0x22650
movq %rax, -0x590(%rbp)
movq -0x590(%rbp), %rax
movq %rax, -0x598(%rbp)
leaq 0x473c4(%rip), %rax     # 0x66630
movb (%rax), %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x1, %eax
jne 0x1f29b
movq -0x3a8(%rbp), %rdi
addq $0x238, %rdi            # imm = 0x238
movslq -0x150(%rbp), %rsi
callq 0x22650
movq %rax, -0x5a0(%rbp)
jmp 0x1f2b9
movq -0x3a8(%rbp), %rdi
addq $0x238, %rdi            # imm = 0x238
xorl %eax, %eax
movl %eax, %esi
callq 0x22650
movq %rax, -0x5a0(%rbp)
movq -0x5a0(%rbp), %rdi
callq 0x22bc0
movq %rax, -0x180(%rbp)
leaq -0x178(%rbp), %rdi
leaq -0x180(%rbp), %rsi
callq 0x22bf0
movq -0x598(%rbp), %rdi
movq -0x178(%rbp), %rsi
callq 0x22b50
movq %rax, -0x188(%rbp)
movb $0x1, -0x149(%rbp)
jmp 0x1f302
movb $0x0, -0x14a(%rbp)
jmp 0x1f82b
movq -0x3a8(%rbp), %rax
movq 0x1d8(%rax), %rax
movq 0x210(%rax), %rdi
addq $0x1d8, %rdi            # imm = 0x1D8
movslq -0x150(%rbp), %rsi
callq 0x22c30
movq (%rax), %rax
cmpl $0x1, 0x4(%rax)
jne 0x1f7cc
movb $0x0, -0x14a(%rbp)
movb $0x1, -0x189(%rbp)
movl $0x0, -0x190(%rbp)
movslq -0x190(%rbp), %rax
movq %rax, -0x5a8(%rbp)
leaq 0x472c0(%rip), %rax     # 0x66630
movb (%rax), %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x1, %eax
jne 0x1f39f
movq -0x3a8(%rbp), %rdi
addq $0x238, %rdi            # imm = 0x238
movslq -0x150(%rbp), %rsi
callq 0x22650
movq %rax, -0x5b0(%rbp)
jmp 0x1f3bd
movq -0x3a8(%rbp), %rdi
addq $0x238, %rdi            # imm = 0x238
xorl %eax, %eax
movl %eax, %esi
callq 0x22650
movq %rax, -0x5b0(%rbp)
movq -0x5b0(%rbp), %rdi
callq 0x228b0
movq %rax, %rcx
movq -0x5a8(%rbp), %rax
cmpq %rcx, %rax
jae 0x1f6b8
leaq 0x4724d(%rip), %rax     # 0x66630
movb (%rax), %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x1, %eax
jne 0x1f412
movq -0x3a8(%rbp), %rdi
addq $0x238, %rdi            # imm = 0x238
movslq -0x150(%rbp), %rsi
callq 0x22650
movq %rax, -0x5b8(%rbp)
jmp 0x1f430
movq -0x3a8(%rbp), %rdi
addq $0x238, %rdi            # imm = 0x238
xorl %eax, %eax
movl %eax, %esi
callq 0x22650
movq %rax, -0x5b8(%rbp)
movq -0x5b8(%rbp), %rdi
movslq -0x190(%rbp), %rsi
callq 0x22ae0
movq (%rax), %rax
movq %rax, -0x198(%rbp)
movl -0x150(%rbp), %eax
movq -0x198(%rbp), %rcx
cmpl 0x18(%rcx), %eax
jne 0x1f6a2
movq -0x3a8(%rbp), %rax
movq 0x1d8(%rax), %rax
movq 0x210(%rax), %rdi
addq $0x1d8, %rdi            # imm = 0x1D8
movslq -0x150(%rbp), %rsi
callq 0x22c30
movq (%rax), %rax
movl 0x8(%rax), %eax
movq -0x198(%rbp), %rcx
cmpl 0x20(%rcx), %eax
jne 0x1f6a2
movq -0x198(%rbp), %rax
cmpl $0x0, 0x10(%rax)
je 0x1f6a0
movq -0x3a8(%rbp), %rdi
movb $0x0, -0x189(%rbp)
movq -0x198(%rbp), %rsi
callq 0x212a0
testb $0x1, %al
jne 0x1f4d5
jmp 0x1f69e
movq -0x198(%rbp), %rax
testb $0x1, 0x30(%rax)
je 0x1f579
movq -0x198(%rbp), %rax
cmpl $0x68, 0x2c(%rax)
je 0x1f579
movq -0x198(%rbp), %rax
cmpl $0x69, 0x2c(%rax)
je 0x1f579
movq -0x3a8(%rbp), %rdi
addq $0x1e0, %rdi            # imm = 0x1E0
movq -0x198(%rbp), %rax
movl 0x18(%rax), %eax
movl %eax, %esi
callq 0x22820
movq %rax, -0x1a8(%rbp)
movq %rdx, -0x1a0(%rbp)
leaq -0x1a8(%rbp), %rdi
movl $0x1, %esi
callq 0x22b00
movq -0x3a8(%rbp), %rdi
movq -0x198(%rbp), %rax
movl 0x14(%rax), %eax
movl %eax, -0x5bc(%rbp)
addq $0x208, %rdi            # imm = 0x208
movq -0x198(%rbp), %rax
movl 0x18(%rax), %eax
movl %eax, %esi
callq 0x17e90
movl -0x5bc(%rbp), %ecx
movl %ecx, (%rax)
movq -0x198(%rbp), %rcx
movq -0x18(%rbp), %rax
movq %rcx, (%rax)
leaq 0x470a2(%rip), %rax     # 0x66630
movb (%rax), %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x1, %eax
jne 0x1f5bd
movq -0x3a8(%rbp), %rdi
addq $0x238, %rdi            # imm = 0x238
movslq -0x150(%rbp), %rsi
callq 0x22650
movq %rax, -0x5c8(%rbp)
jmp 0x1f5db
movq -0x3a8(%rbp), %rdi
addq $0x238, %rdi            # imm = 0x238
xorl %eax, %eax
movl %eax, %esi
callq 0x22650
movq %rax, -0x5c8(%rbp)
movq -0x5c8(%rbp), %rax
movq %rax, -0x5d0(%rbp)
leaq 0x47040(%rip), %rax     # 0x66630
movb (%rax), %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x1, %eax
jne 0x1f61f
movq -0x3a8(%rbp), %rdi
addq $0x238, %rdi            # imm = 0x238
movslq -0x150(%rbp), %rsi
callq 0x22650
movq %rax, -0x5d8(%rbp)
jmp 0x1f63d
movq -0x3a8(%rbp), %rdi
addq $0x238, %rdi            # imm = 0x238
xorl %eax, %eax
movl %eax, %esi
callq 0x22650
movq %rax, -0x5d8(%rbp)
movq -0x5d8(%rbp), %rdi
callq 0x22bc0
movq %rax, -0x1c0(%rbp)
movslq -0x190(%rbp), %rsi
leaq -0x1c0(%rbp), %rdi
callq 0x22c50
movq %rax, -0x1b8(%rbp)
leaq -0x1b0(%rbp), %rdi
leaq -0x1b8(%rbp), %rsi
callq 0x22bf0
movq -0x5d0(%rbp), %rdi
movq -0x1b0(%rbp), %rsi
callq 0x22b50
movq %rax, -0x1c8(%rbp)
movb $0x1, -0x149(%rbp)
jmp 0x1f6b8
jmp 0x1f6b8
jmp 0x1f6a4
movl -0x190(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x190(%rbp)
jmp 0x1f35b
testb $0x1, -0x189(%rbp)
je 0x1f7ca
movq -0x3a8(%rbp), %rax
movq 0x1d8(%rax), %rax
movq 0x210(%rax), %rdi
addq $0x1d8, %rdi            # imm = 0x1D8
movslq -0x150(%rbp), %rsi
callq 0x22c30
movq -0x3a8(%rbp), %rcx
movq (%rax), %rax
movq 0x28(%rax), %rax
cmpq 0x8(%rcx), %rax
ja 0x1f7ca
movq -0x3a8(%rbp), %rdi
addq $0x268, %rdi            # imm = 0x268
movslq -0x150(%rbp), %rsi
callq 0x17e90
movl $0x0, (%rax)
movl $0x38, %edi
callq 0x4390
movq %rax, %rdi
movq %rdi, %rax
movq %rax, -0x5e0(%rbp)
movl -0x150(%rbp), %ecx
movq %rsp, %rax
movl $0x0, 0x30(%rax)
movl $0x0, 0x28(%rax)
movl $0x0, 0x20(%rax)
movl $0x1, 0x18(%rax)
movq $0x0, 0x10(%rax)
movl $0x0, 0x8(%rax)
movl $0x0, (%rax)
movl $0x7, %esi
xorl %r9d, %r9d
movl %r9d, %edx
movl %r9d, %r8d
callq 0x30d90
jmp 0x1f78b
movq -0x5e0(%rbp), %rcx
movq -0x18(%rbp), %rax
movq %rcx, (%rax)
movb $0x1, -0x149(%rbp)
jmp 0x1f7ca
movq -0x5e0(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xc0(%rbp)
movl %eax, -0xc4(%rbp)
movl $0x38, %esi
callq 0x43a0
jmp 0x21288
jmp 0x1f82b
movq -0x3a8(%rbp), %rax
movq 0x1d8(%rax), %rax
movq 0x210(%rax), %rdi
addq $0x1d8, %rdi            # imm = 0x1D8
movslq -0x150(%rbp), %rsi
callq 0x22c30
movq -0x3a8(%rbp), %rcx
movq (%rax), %rax
movq 0x10(%rax), %rax
cmpq 0x8(%rcx), %rax
jbe 0x1f811
movb $0x0, -0x14a(%rbp)
jmp 0x1f82b
jmp 0x1f813
jmp 0x1f815
jmp 0x1f817
movl -0x150(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x150(%rbp)
jmp 0x1ee29
testb $0x1, -0x14a(%rbp)
je 0x1f91a
movq -0x3a8(%rbp), %rax
movq 0x1d8(%rax), %rax
movq 0x210(%rax), %rdi
addq $0x1d8, %rdi            # imm = 0x1D8
xorl %eax, %eax
movl %eax, %esi
callq 0x22c30
movq (%rax), %rax
cmpl $0x4, 0x4(%rax)
je 0x1f91a
movl $0x38, %edi
callq 0x4390
movq %rax, %rdi
movq %rdi, %rax
movq %rax, -0x5e8(%rbp)
movq %rsp, %rax
movl $0x0, 0x30(%rax)
movl $0x0, 0x28(%rax)
movl $0x0, 0x20(%rax)
movl $0x1, 0x18(%rax)
movq $0x0, 0x10(%rax)
movl $0x0, 0x8(%rax)
movl $0x0, (%rax)
movl $0x8, %esi
xorl %r9d, %r9d
movl %r9d, %edx
movl %r9d, %ecx
movl %r9d, %r8d
callq 0x30d90
jmp 0x1f8cd
movq -0x3a8(%rbp), %rax
movq -0x5e8(%rbp), %rdx
movq -0x18(%rbp), %rcx
movq %rdx, (%rcx)
movb $0x1, -0x149(%rbp)
movb $0x0, 0x1d0(%rax)
jmp 0x1f91a
movq -0x5e8(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xc0(%rbp)
movl %eax, -0xc4(%rbp)
movl $0x38, %esi
callq 0x43a0
jmp 0x21288
jmp 0x1f91c
testb $0x1, -0x149(%rbp)
jne 0x20d3f
movb $0x0, -0x1c9(%rbp)
movl $0x0, -0x1d0(%rbp)
leaq 0x46cef(%rip), %rax     # 0x66630
movb (%rax), %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x1, %eax
jne 0x1f975
movq -0x3a8(%rbp), %rax
movq %rax, %rdi
addq $0x220, %rdi            # imm = 0x220
movl 0x1cc(%rax), %eax
movl %eax, %esi
callq 0x229a0
movl (%rax), %eax
movl %eax, -0x5ec(%rbp)
jmp 0x1f994
movq -0x3a8(%rbp), %rdi
addq $0x220, %rdi            # imm = 0x220
xorl %eax, %eax
movl %eax, %esi
callq 0x229a0
movl (%rax), %eax
movl %eax, -0x5ec(%rbp)
movl -0x5ec(%rbp), %eax
cmpl $0x0, %eax
jne 0x208ce
movq -0x3a8(%rbp), %rax
movq %rax, %rdi
addq $0x1e0, %rdi            # imm = 0x1E0
movl 0x1cc(%rax), %eax
movl %eax, %esi
callq 0x22820
movq %rax, -0x1e0(%rbp)
movq %rdx, -0x1d8(%rbp)
leaq -0x1e0(%rbp), %rdi
callq 0x22880
testb $0x1, %al
jne 0x1f9e4
jmp 0x1fead
leaq 0x46c45(%rip), %rax     # 0x66630
movb (%rax), %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x1, %eax
jne 0x1fa1e
movq -0x3a8(%rbp), %rax
movq %rax, %rdi
addq $0x238, %rdi            # imm = 0x238
movl 0x1cc(%rax), %eax
movl %eax, %esi
callq 0x22650
movq %rax, -0x5f8(%rbp)
jmp 0x1fa3c
movq -0x3a8(%rbp), %rdi
addq $0x238, %rdi            # imm = 0x238
xorl %eax, %eax
movl %eax, %esi
callq 0x22650
movq %rax, -0x5f8(%rbp)
movq -0x5f8(%rbp), %rdi
callq 0x228b0
cmpq $0x0, %rax
jbe 0x1fea8
leaq 0x46bd7(%rip), %rax     # 0x66630
movb (%rax), %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x1, %eax
jne 0x1fa8c
movq -0x3a8(%rbp), %rax
movq %rax, %rdi
addq $0x238, %rdi            # imm = 0x238
movl 0x1cc(%rax), %eax
movl %eax, %esi
callq 0x22650
movq %rax, -0x600(%rbp)
jmp 0x1faaa
movq -0x3a8(%rbp), %rdi
addq $0x238, %rdi            # imm = 0x238
xorl %eax, %eax
movl %eax, %esi
callq 0x22650
movq %rax, -0x600(%rbp)
movq -0x600(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x22ae0
movq (%rax), %rax
testb $0x1, 0x30(%rax)
je 0x1fea8
leaq 0x46b62(%rip), %rax     # 0x66630
movb (%rax), %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x1, %eax
jne 0x1fb01
movq -0x3a8(%rbp), %rax
movq %rax, %rdi
addq $0x238, %rdi            # imm = 0x238
movl 0x1cc(%rax), %eax
movl %eax, %esi
callq 0x22650
movq %rax, -0x608(%rbp)
jmp 0x1fb1f
movq -0x3a8(%rbp), %rdi
addq $0x238, %rdi            # imm = 0x238
xorl %eax, %eax
movl %eax, %esi
callq 0x22650
movq %rax, -0x608(%rbp)
movq -0x608(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x22ae0
movq %rax, %rcx
movq -0x3a8(%rbp), %rax
movq (%rcx), %rcx
movl 0x14(%rcx), %ecx
movl %ecx, -0x60c(%rbp)
movq %rax, %rdi
addq $0x208, %rdi            # imm = 0x208
movl 0x1cc(%rax), %eax
movl %eax, %esi
callq 0x17e90
movq %rax, %rcx
movl -0x60c(%rbp), %eax
cmpl (%rcx), %eax
jne 0x1fea6
leaq 0x46abc(%rip), %rax     # 0x66630
movb (%rax), %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x1, %eax
jne 0x1fba7
movq -0x3a8(%rbp), %rax
movq %rax, %rdi
addq $0x238, %rdi            # imm = 0x238
movl 0x1cc(%rax), %eax
movl %eax, %esi
callq 0x22650
movq %rax, -0x618(%rbp)
jmp 0x1fbc5
movq -0x3a8(%rbp), %rdi
addq $0x238, %rdi            # imm = 0x238
xorl %eax, %eax
movl %eax, %esi
callq 0x22650
movq %rax, -0x618(%rbp)
movq -0x618(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x22ae0
movq -0x3a8(%rbp), %rdi
movq (%rax), %rsi
callq 0x212a0
testb $0x1, %al
jne 0x1fbed
jmp 0x1fea4
leaq 0x46a3c(%rip), %rax     # 0x66630
movb (%rax), %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x1, %eax
jne 0x1fc27
movq -0x3a8(%rbp), %rax
movq %rax, %rdi
addq $0x238, %rdi            # imm = 0x238
movl 0x1cc(%rax), %eax
movl %eax, %esi
callq 0x22650
movq %rax, -0x620(%rbp)
jmp 0x1fc45
movq -0x3a8(%rbp), %rdi
addq $0x238, %rdi            # imm = 0x238
xorl %eax, %eax
movl %eax, %esi
callq 0x22650
movq %rax, -0x620(%rbp)
movq -0x620(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x22ae0
movq (%rax), %rax
cmpl $0x3, 0x10(%rax)
je 0x1fccf
leaq 0x469cb(%rip), %rax     # 0x66630
movb (%rax), %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x1, %eax
jne 0x1fc98
movq -0x3a8(%rbp), %rax
movq %rax, %rdi
addq $0x238, %rdi            # imm = 0x238
movl 0x1cc(%rax), %eax
movl %eax, %esi
callq 0x22650
movq %rax, -0x628(%rbp)
jmp 0x1fcb6
movq -0x3a8(%rbp), %rdi
addq $0x238, %rdi            # imm = 0x238
xorl %eax, %eax
movl %eax, %esi
callq 0x22650
movq %rax, -0x628(%rbp)
movq -0x628(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x22ae0
movq (%rax), %rax
cmpl $0x4, 0x10(%rax)
jne 0x1fd2d
movq -0x3a8(%rbp), %rax
movq %rax, %rdi
addq $0x1e0, %rdi            # imm = 0x1E0
movl 0x1cc(%rax), %eax
movl %eax, %esi
callq 0x22820
movq %rax, -0x1f0(%rbp)
movq %rdx, -0x1e8(%rbp)
leaq -0x1f0(%rbp), %rdi
xorl %esi, %esi
callq 0x22b00
movq -0x3a8(%rbp), %rax
movq %rax, %rdi
addq $0x208, %rdi            # imm = 0x208
movl 0x1cc(%rax), %eax
movl %eax, %esi
callq 0x17e90
movl $0x0, (%rax)
leaq 0x468fc(%rip), %rax     # 0x66630
movb (%rax), %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x1, %eax
jne 0x1fd67
movq -0x3a8(%rbp), %rax
movq %rax, %rdi
addq $0x238, %rdi            # imm = 0x238
movl 0x1cc(%rax), %eax
movl %eax, %esi
callq 0x22650
movq %rax, -0x630(%rbp)
jmp 0x1fd85
movq -0x3a8(%rbp), %rdi
addq $0x238, %rdi            # imm = 0x238
xorl %eax, %eax
movl %eax, %esi
callq 0x22650
movq %rax, -0x630(%rbp)
movq -0x630(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x22ae0
movq (%rax), %rcx
movq -0x18(%rbp), %rax
movq %rcx, (%rax)
leaq 0x4688a(%rip), %rax     # 0x66630
movb (%rax), %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x1, %eax
jne 0x1fdd9
movq -0x3a8(%rbp), %rax
movq %rax, %rdi
addq $0x238, %rdi            # imm = 0x238
movl 0x1cc(%rax), %eax
movl %eax, %esi
callq 0x22650
movq %rax, -0x638(%rbp)
jmp 0x1fdf7
movq -0x3a8(%rbp), %rdi
addq $0x238, %rdi            # imm = 0x238
xorl %eax, %eax
movl %eax, %esi
callq 0x22650
movq %rax, -0x638(%rbp)
movq -0x638(%rbp), %rax
movq %rax, -0x640(%rbp)
leaq 0x46824(%rip), %rax     # 0x66630
movb (%rax), %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x1, %eax
jne 0x1fe3f
movq -0x3a8(%rbp), %rax
movq %rax, %rdi
addq $0x238, %rdi            # imm = 0x238
movl 0x1cc(%rax), %eax
movl %eax, %esi
callq 0x22650
movq %rax, -0x648(%rbp)
jmp 0x1fe5d
movq -0x3a8(%rbp), %rdi
addq $0x238, %rdi            # imm = 0x238
xorl %eax, %eax
movl %eax, %esi
callq 0x22650
movq %rax, -0x648(%rbp)
movq -0x648(%rbp), %rdi
callq 0x22bc0
movq %rax, -0x200(%rbp)
leaq -0x1f8(%rbp), %rdi
leaq -0x200(%rbp), %rsi
callq 0x22bf0
movq -0x640(%rbp), %rdi
movq -0x1f8(%rbp), %rsi
callq 0x22b50
movq %rax, -0x208(%rbp)
movb $0x1, -0x1c9(%rbp)
jmp 0x1fea6
jmp 0x1fea8
jmp 0x208cc
movl $0x0, -0x20c(%rbp)
movslq -0x20c(%rbp), %rax
movq %rax, -0x650(%rbp)
leaq 0x46764(%rip), %rax     # 0x66630
movb (%rax), %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x1, %eax
jne 0x1feff
movq -0x3a8(%rbp), %rax
movq %rax, %rdi
addq $0x238, %rdi            # imm = 0x238
movl 0x1cc(%rax), %eax
movl %eax, %esi
callq 0x22650
movq %rax, -0x658(%rbp)
jmp 0x1ff1d
movq -0x3a8(%rbp), %rdi
addq $0x238, %rdi            # imm = 0x238
xorl %eax, %eax
movl %eax, %esi
callq 0x22650
movq %rax, -0x658(%rbp)
movq -0x658(%rbp), %rdi
callq 0x228b0
movq %rax, %rcx
movq -0x650(%rbp), %rax
cmpq %rcx, %rax
jae 0x208ca
leaq 0x466ed(%rip), %rax     # 0x66630
movb (%rax), %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x1, %eax
jne 0x1ff76
movq -0x3a8(%rbp), %rax
movq %rax, %rdi
addq $0x238, %rdi            # imm = 0x238
movl 0x1cc(%rax), %eax
movl %eax, %esi
callq 0x22650
movq %rax, -0x660(%rbp)
jmp 0x1ff94
movq -0x3a8(%rbp), %rdi
addq $0x238, %rdi            # imm = 0x238
xorl %eax, %eax
movl %eax, %esi
callq 0x22650
movq %rax, -0x660(%rbp)
movq -0x660(%rbp), %rdi
movslq -0x20c(%rbp), %rsi
callq 0x22ae0
movq -0x3a8(%rbp), %rdi
movq (%rax), %rsi
callq 0x212a0
testb $0x1, %al
jne 0x1ffbf
jmp 0x208b4
movb $0x0, -0x211(%rbp)
movl $0x0, -0x210(%rbp)
movl -0x210(%rbp), %eax
cmpl -0x20c(%rbp), %eax
jge 0x201a3
leaq 0x46647(%rip), %rax     # 0x66630
movb (%rax), %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x1, %eax
jne 0x2001c
movq -0x3a8(%rbp), %rax
movq %rax, %rdi
addq $0x238, %rdi            # imm = 0x238
movl 0x1cc(%rax), %eax
movl %eax, %esi
callq 0x22650
movq %rax, -0x668(%rbp)
jmp 0x2003a
movq -0x3a8(%rbp), %rdi
addq $0x238, %rdi            # imm = 0x238
xorl %eax, %eax
movl %eax, %esi
callq 0x22650
movq %rax, -0x668(%rbp)
movq -0x668(%rbp), %rdi
movslq -0x210(%rbp), %rsi
callq 0x22ae0
movq (%rax), %rax
movq %rax, -0x220(%rbp)
movq -0x220(%rbp), %rax
cmpl $0x0, 0x10(%rax)
je 0x2018d
movq -0x220(%rbp), %rax
movl 0x18(%rax), %eax
movl %eax, -0x66c(%rbp)
leaq 0x465b1(%rip), %rax     # 0x66630
movb (%rax), %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x1, %eax
jne 0x200b2
movq -0x3a8(%rbp), %rax
movq %rax, %rdi
addq $0x238, %rdi            # imm = 0x238
movl 0x1cc(%rax), %eax
movl %eax, %esi
callq 0x22650
movq %rax, -0x678(%rbp)
jmp 0x200d0
movq -0x3a8(%rbp), %rdi
addq $0x238, %rdi            # imm = 0x238
xorl %eax, %eax
movl %eax, %esi
callq 0x22650
movq %rax, -0x678(%rbp)
movq -0x678(%rbp), %rdi
movslq -0x20c(%rbp), %rsi
callq 0x22ae0
movq %rax, %rcx
movl -0x66c(%rbp), %eax
movq (%rcx), %rcx
cmpl 0x18(%rcx), %eax
jne 0x2018d
movq -0x220(%rbp), %rax
movl 0x20(%rax), %eax
movl %eax, -0x67c(%rbp)
leaq 0x46521(%rip), %rax     # 0x66630
movb (%rax), %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x1, %eax
jne 0x20142
movq -0x3a8(%rbp), %rax
movq %rax, %rdi
addq $0x238, %rdi            # imm = 0x238
movl 0x1cc(%rax), %eax
movl %eax, %esi
callq 0x22650
movq %rax, -0x688(%rbp)
jmp 0x20160
movq -0x3a8(%rbp), %rdi
addq $0x238, %rdi            # imm = 0x238
xorl %eax, %eax
movl %eax, %esi
callq 0x22650
movq %rax, -0x688(%rbp)
movq -0x688(%rbp), %rdi
movslq -0x20c(%rbp), %rsi
callq 0x22ae0
movq %rax, %rcx
movl -0x67c(%rbp), %eax
movq (%rcx), %rcx
cmpl 0x20(%rcx), %eax
jne 0x2018d
movb $0x1, -0x211(%rbp)
jmp 0x201a3
jmp 0x2018f
movl -0x210(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x210(%rbp)
jmp 0x1ffd0
testb $0x1, -0x211(%rbp)
je 0x201b1
jmp 0x208b6
leaq 0x46478(%rip), %rax     # 0x66630
movb (%rax), %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x1, %eax
jne 0x201eb
movq -0x3a8(%rbp), %rax
movq %rax, %rdi
addq $0x238, %rdi            # imm = 0x238
movl 0x1cc(%rax), %eax
movl %eax, %esi
callq 0x22650
movq %rax, -0x690(%rbp)
jmp 0x20209
movq -0x3a8(%rbp), %rdi
addq $0x238, %rdi            # imm = 0x238
xorl %eax, %eax
movl %eax, %esi
callq 0x22650
movq %rax, -0x690(%rbp)
movq -0x690(%rbp), %rdi
movslq -0x20c(%rbp), %rsi
callq 0x22ae0
movq (%rax), %rax
testb $0x1, 0x30(%rax)
je 0x203f6
leaq 0x46400(%rip), %rax     # 0x66630
movb (%rax), %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x1, %eax
jne 0x20263
movq -0x3a8(%rbp), %rax
movq %rax, %rdi
addq $0x238, %rdi            # imm = 0x238
movl 0x1cc(%rax), %eax
movl %eax, %esi
callq 0x22650
movq %rax, -0x698(%rbp)
jmp 0x20281
movq -0x3a8(%rbp), %rdi
addq $0x238, %rdi            # imm = 0x238
xorl %eax, %eax
movl %eax, %esi
callq 0x22650
movq %rax, -0x698(%rbp)
movq -0x698(%rbp), %rdi
movslq -0x20c(%rbp), %rsi
callq 0x22ae0
movq (%rax), %rax
cmpl $0x68, 0x2c(%rax)
je 0x203f6
leaq 0x46388(%rip), %rax     # 0x66630
movb (%rax), %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x1, %eax
jne 0x202db
movq -0x3a8(%rbp), %rax
movq %rax, %rdi
addq $0x238, %rdi            # imm = 0x238
movl 0x1cc(%rax), %eax
movl %eax, %esi
callq 0x22650
movq %rax, -0x6a0(%rbp)
jmp 0x202f9
movq -0x3a8(%rbp), %rdi
addq $0x238, %rdi            # imm = 0x238
xorl %eax, %eax
movl %eax, %esi
callq 0x22650
movq %rax, -0x6a0(%rbp)
movq -0x6a0(%rbp), %rdi
movslq -0x20c(%rbp), %rsi
callq 0x22ae0
movq (%rax), %rax
cmpl $0x69, 0x2c(%rax)
je 0x203f6
movq -0x3a8(%rbp), %rax
movq %rax, %rdi
addq $0x1e0, %rdi            # imm = 0x1E0
movl 0x1cc(%rax), %eax
movl %eax, %esi
callq 0x22820
movq %rax, -0x230(%rbp)
movq %rdx, -0x228(%rbp)
leaq -0x230(%rbp), %rdi
movl $0x1, %esi
callq 0x22b00
leaq 0x462d3(%rip), %rax     # 0x66630
movb (%rax), %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x1, %eax
jne 0x20390
movq -0x3a8(%rbp), %rax
movq %rax, %rdi
addq $0x238, %rdi            # imm = 0x238
movl 0x1cc(%rax), %eax
movl %eax, %esi
callq 0x22650
movq %rax, -0x6a8(%rbp)
jmp 0x203ae
movq -0x3a8(%rbp), %rdi
addq $0x238, %rdi            # imm = 0x238
xorl %eax, %eax
movl %eax, %esi
callq 0x22650
movq %rax, -0x6a8(%rbp)
movq -0x6a8(%rbp), %rdi
movslq -0x20c(%rbp), %rsi
callq 0x22ae0
movq %rax, %rcx
movq -0x3a8(%rbp), %rax
movq (%rcx), %rcx
movl 0x14(%rcx), %ecx
movl %ecx, -0x6ac(%rbp)
movq %rax, %rdi
addq $0x208, %rdi            # imm = 0x208
movl 0x1cc(%rax), %eax
movl %eax, %esi
callq 0x17e90
movl -0x6ac(%rbp), %ecx
movl %ecx, (%rax)
leaq 0x46233(%rip), %rax     # 0x66630
movb (%rax), %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x1, %eax
jne 0x20430
movq -0x3a8(%rbp), %rax
movq %rax, %rdi
addq $0x238, %rdi            # imm = 0x238
movl 0x1cc(%rax), %eax
movl %eax, %esi
callq 0x22650
movq %rax, -0x6b8(%rbp)
jmp 0x2044e
movq -0x3a8(%rbp), %rdi
addq $0x238, %rdi            # imm = 0x238
xorl %eax, %eax
movl %eax, %esi
callq 0x22650
movq %rax, -0x6b8(%rbp)
movq -0x6b8(%rbp), %rdi
movslq -0x20c(%rbp), %rsi
callq 0x22ae0
movq (%rax), %rcx
movq -0x18(%rbp), %rax
movq %rcx, (%rax)
cmpl $0x0, -0x20c(%rbp)
jle 0x20793
leaq 0x461b1(%rip), %rax     # 0x66630
movb (%rax), %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x1, %eax
jne 0x204b2
movq -0x3a8(%rbp), %rax
movq %rax, %rdi
addq $0x238, %rdi            # imm = 0x238
movl 0x1cc(%rax), %eax
movl %eax, %esi
callq 0x22650
movq %rax, -0x6c0(%rbp)
jmp 0x204d0
movq -0x3a8(%rbp), %rdi
addq $0x238, %rdi            # imm = 0x238
xorl %eax, %eax
movl %eax, %esi
callq 0x22650
movq %rax, -0x6c0(%rbp)
movq -0x6c0(%rbp), %rdi
movl -0x20c(%rbp), %eax
subl $0x1, %eax
movslq %eax, %rsi
callq 0x22ae0
movq (%rax), %rax
cmpl $0x0, 0x10(%rax)
jne 0x20793
movq -0x3a8(%rbp), %rax
movq %rax, %rdi
addq $0x268, %rdi            # imm = 0x268
movl 0x1cc(%rax), %eax
movl %eax, %esi
callq 0x17e90
movl (%rax), %ecx
addl $0x1, %ecx
movl %ecx, (%rax)
leaq 0x4610f(%rip), %rax     # 0x66630
movb (%rax), %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x1, %eax
jne 0x20554
movq -0x3a8(%rbp), %rax
movq %rax, %rdi
addq $0x238, %rdi            # imm = 0x238
movl 0x1cc(%rax), %eax
movl %eax, %esi
callq 0x22650
movq %rax, -0x6c8(%rbp)
jmp 0x20572
movq -0x3a8(%rbp), %rdi
addq $0x238, %rdi            # imm = 0x238
xorl %eax, %eax
movl %eax, %esi
callq 0x22650
movq %rax, -0x6c8(%rbp)
movq -0x6c8(%rbp), %rdi
movl -0x20c(%rbp), %eax
subl $0x1, %eax
movslq %eax, %rsi
callq 0x22ae0
movq (%rax), %rax
movq %rax, -0x6d0(%rbp)
cmpq $0x0, %rax
je 0x205a7
movq -0x6d0(%rbp), %rdi
movq (%rdi), %rax
callq *0x8(%rax)
leaq 0x46082(%rip), %rax     # 0x66630
movb (%rax), %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x1, %eax
jne 0x205e1
movq -0x3a8(%rbp), %rax
movq %rax, %rdi
addq $0x238, %rdi            # imm = 0x238
movl 0x1cc(%rax), %eax
movl %eax, %esi
callq 0x22650
movq %rax, -0x6d8(%rbp)
jmp 0x205ff
movq -0x3a8(%rbp), %rdi
addq $0x238, %rdi            # imm = 0x238
xorl %eax, %eax
movl %eax, %esi
callq 0x22650
movq %rax, -0x6d8(%rbp)
movq -0x6d8(%rbp), %rax
movq %rax, -0x6e0(%rbp)
leaq 0x4601c(%rip), %rax     # 0x66630
movb (%rax), %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x1, %eax
jne 0x20647
movq -0x3a8(%rbp), %rax
movq %rax, %rdi
addq $0x238, %rdi            # imm = 0x238
movl 0x1cc(%rax), %eax
movl %eax, %esi
callq 0x22650
movq %rax, -0x6e8(%rbp)
jmp 0x20665
movq -0x3a8(%rbp), %rdi
addq $0x238, %rdi            # imm = 0x238
xorl %eax, %eax
movl %eax, %esi
callq 0x22650
movq %rax, -0x6e8(%rbp)
movq -0x6e8(%rbp), %rdi
callq 0x22bc0
movq %rax, -0x250(%rbp)
movslq -0x20c(%rbp), %rsi
leaq -0x250(%rbp), %rdi
callq 0x22c50
movq %rax, -0x248(%rbp)
leaq -0x248(%rbp), %rdi
movl $0x1, %esi
callq 0x22d20
movq %rax, -0x240(%rbp)
leaq -0x238(%rbp), %rdi
leaq -0x240(%rbp), %rsi
callq 0x22bf0
leaq 0x45f6c(%rip), %rax     # 0x66630
movb (%rax), %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x1, %eax
jne 0x206f7
movq -0x3a8(%rbp), %rax
movq %rax, %rdi
addq $0x238, %rdi            # imm = 0x238
movl 0x1cc(%rax), %eax
movl %eax, %esi
callq 0x22650
movq %rax, -0x6f0(%rbp)
jmp 0x20715
movq -0x3a8(%rbp), %rdi
addq $0x238, %rdi            # imm = 0x238
xorl %eax, %eax
movl %eax, %esi
callq 0x22650
movq %rax, -0x6f0(%rbp)
movq -0x6f0(%rbp), %rdi
callq 0x22bc0
movq %rax, -0x270(%rbp)
movslq -0x20c(%rbp), %rsi
leaq -0x270(%rbp), %rdi
callq 0x22c50
movq %rax, -0x268(%rbp)
leaq -0x268(%rbp), %rdi
movl $0x1, %esi
callq 0x22c50
movq %rax, -0x260(%rbp)
leaq -0x258(%rbp), %rdi
leaq -0x260(%rbp), %rsi
callq 0x22bf0
movq -0x6e0(%rbp), %rdi
movq -0x238(%rbp), %rsi
movq -0x258(%rbp), %rdx
callq 0x22c90
movq %rax, -0x278(%rbp)
jmp 0x208ab
leaq 0x45e96(%rip), %rax     # 0x66630
movb (%rax), %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x1, %eax
jne 0x207cd
movq -0x3a8(%rbp), %rax
movq %rax, %rdi
addq $0x238, %rdi            # imm = 0x238
movl 0x1cc(%rax), %eax
movl %eax, %esi
callq 0x22650
movq %rax, -0x6f8(%rbp)
jmp 0x207eb
movq -0x3a8(%rbp), %rdi
addq $0x238, %rdi            # imm = 0x238
xorl %eax, %eax
movl %eax, %esi
callq 0x22650
movq %rax, -0x6f8(%rbp)
movq -0x6f8(%rbp), %rax
movq %rax, -0x700(%rbp)
leaq 0x45e30(%rip), %rax     # 0x66630
movb (%rax), %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x1, %eax
jne 0x20833
movq -0x3a8(%rbp), %rax
movq %rax, %rdi
addq $0x238, %rdi            # imm = 0x238
movl 0x1cc(%rax), %eax
movl %eax, %esi
callq 0x22650
movq %rax, -0x708(%rbp)
jmp 0x20851
movq -0x3a8(%rbp), %rdi
addq $0x238, %rdi            # imm = 0x238
xorl %eax, %eax
movl %eax, %esi
callq 0x22650
movq %rax, -0x708(%rbp)
movq -0x708(%rbp), %rdi
callq 0x22bc0
movq %rax, -0x290(%rbp)
movslq -0x20c(%rbp), %rsi
leaq -0x290(%rbp), %rdi
callq 0x22c50
movq %rax, -0x288(%rbp)
leaq -0x280(%rbp), %rdi
leaq -0x288(%rbp), %rsi
callq 0x22bf0
movq -0x700(%rbp), %rdi
movq -0x280(%rbp), %rsi
callq 0x22b50
movq %rax, -0x298(%rbp)
movb $0x1, -0x1c9(%rbp)
jmp 0x208ca
jmp 0x208b6
movl -0x20c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x20c(%rbp)
jmp 0x1feb7
jmp 0x208cc
jmp 0x208ce
movq -0x3a8(%rbp), %rax
movl -0x1d0(%rbp), %ecx
addl $0x1, %ecx
movl %ecx, -0x1d0(%rbp)
movl 0x1cc(%rax), %eax
leaq 0x45d2f(%rip), %rcx     # 0x66620
movl (%rcx), %ecx
subl $0x1, %ecx
cmpl %ecx, %eax
jae 0x20912
movq -0x3a8(%rbp), %rax
movl 0x1cc(%rax), %eax
addl $0x1, %eax
movl %eax, -0x70c(%rbp)
jmp 0x2091c
xorl %eax, %eax
movl %eax, -0x70c(%rbp)
jmp 0x2091c
movq -0x3a8(%rbp), %rax
movl -0x70c(%rbp), %ecx
movl %ecx, 0x1cc(%rax)
testb $0x1, -0x1c9(%rbp)
je 0x2093a
jmp 0x20954
movl -0x1d0(%rbp), %eax
leaq 0x45cd9(%rip), %rcx     # 0x66620
cmpl (%rcx), %eax
jne 0x2094d
jmp 0x20954
jmp 0x2094f
jmp 0x1f93a
testb $0x1, -0x1c9(%rbp)
jne 0x20d3d
movb $0x0, -0x299(%rbp)
movl $0x0, -0x2a0(%rbp)
movl -0x2a0(%rbp), %eax
leaq 0x45ca1(%rip), %rcx     # 0x66620
cmpl (%rcx), %eax
jge 0x20d29
movq -0x3a8(%rbp), %rax
movb $0x0, -0x2a1(%rbp)
movq 0x1d8(%rax), %rax
movq 0x210(%rax), %rdi
addq $0x1d8, %rdi            # imm = 0x1D8
movslq -0x2a0(%rbp), %rsi
callq 0x22c30
movq (%rax), %rax
cmpl $0x1, 0x4(%rax)
jne 0x20d13
movq -0x3a8(%rbp), %rdi
addq $0x1e0, %rdi            # imm = 0x1E0
movslq -0x2a0(%rbp), %rsi
callq 0x22820
movq %rax, -0x2b8(%rbp)
movq %rdx, -0x2b0(%rbp)
leaq -0x2b8(%rbp), %rdi
callq 0x22880
xorb $-0x1, %al
testb $0x1, %al
jne 0x20a02
jmp 0x20d11
movl $0x0, -0x2bc(%rbp)
movslq -0x2bc(%rbp), %rax
movq %rax, -0x718(%rbp)
leaq 0x45c0f(%rip), %rax     # 0x66630
movb (%rax), %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x1, %eax
jne 0x20a50
movq -0x3a8(%rbp), %rdi
addq $0x238, %rdi            # imm = 0x238
movslq -0x2a0(%rbp), %rsi
callq 0x22650
movq %rax, -0x720(%rbp)
jmp 0x20a6e
movq -0x3a8(%rbp), %rdi
addq $0x238, %rdi            # imm = 0x238
xorl %eax, %eax
movl %eax, %esi
callq 0x22650
movq %rax, -0x720(%rbp)
movq -0x720(%rbp), %rdi
callq 0x228b0
movq %rax, %rcx
movq -0x718(%rbp), %rax
cmpq %rcx, %rax
jae 0x20bd4
leaq 0x45b9c(%rip), %rax     # 0x66630
movb (%rax), %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x1, %eax
jne 0x20ac3
movq -0x3a8(%rbp), %rdi
addq $0x238, %rdi            # imm = 0x238
movslq -0x2a0(%rbp), %rsi
callq 0x22650
movq %rax, -0x728(%rbp)
jmp 0x20ae1
movq -0x3a8(%rbp), %rdi
addq $0x238, %rdi            # imm = 0x238
xorl %eax, %eax
movl %eax, %esi
callq 0x22650
movq %rax, -0x728(%rbp)
movq -0x728(%rbp), %rdi
movslq -0x2bc(%rbp), %rsi
callq 0x22ae0
movq (%rax), %rax
movl 0x18(%rax), %eax
cmpl -0x2a0(%rbp), %eax
jne 0x20bbe
leaq 0x45b23(%rip), %rax     # 0x66630
movb (%rax), %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x1, %eax
jne 0x20b3c
movq -0x3a8(%rbp), %rdi
addq $0x238, %rdi            # imm = 0x238
movslq -0x2a0(%rbp), %rsi
callq 0x22650
movq %rax, -0x730(%rbp)
jmp 0x20b5a
movq -0x3a8(%rbp), %rdi
addq $0x238, %rdi            # imm = 0x238
xorl %eax, %eax
movl %eax, %esi
callq 0x22650
movq %rax, -0x730(%rbp)
movq -0x730(%rbp), %rdi
movslq -0x2bc(%rbp), %rsi
callq 0x22ae0
movq %rax, %rcx
movq -0x3a8(%rbp), %rax
movq (%rcx), %rcx
movl 0x20(%rcx), %ecx
movl %ecx, -0x734(%rbp)
movq 0x1d8(%rax), %rax
movq 0x210(%rax), %rdi
addq $0x1d8, %rdi            # imm = 0x1D8
movslq -0x2a0(%rbp), %rsi
callq 0x22c30
movq %rax, %rcx
movl -0x734(%rbp), %eax
movq (%rcx), %rcx
cmpl 0x8(%rcx), %eax
jne 0x20bbe
movb $0x1, -0x2a1(%rbp)
jmp 0x20bd4
jmp 0x20bc0
movl -0x2bc(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x2bc(%rbp)
jmp 0x20a0c
testb $0x1, -0x2a1(%rbp)
je 0x20c08
movq -0x3a8(%rbp), %rdi
addq $0x268, %rdi            # imm = 0x268
movslq -0x2a0(%rbp), %rsi
callq 0x17e90
movl (%rax), %eax
leaq 0x45a34(%rip), %rcx     # 0x66634
cmpl (%rcx), %eax
jb 0x20d0f
movq -0x3a8(%rbp), %rax
movq 0x1d8(%rax), %rax
movq 0x210(%rax), %rdi
addq $0x1d8, %rdi            # imm = 0x1D8
movslq -0x2a0(%rbp), %rsi
callq 0x22c30
movq -0x3a8(%rbp), %rcx
movq (%rax), %rax
movq 0x28(%rax), %rax
cmpq 0x8(%rcx), %rax
ja 0x20d0d
movq -0x3a8(%rbp), %rdi
addq $0x268, %rdi            # imm = 0x268
movslq -0x2a0(%rbp), %rsi
callq 0x17e90
movl $0x0, (%rax)
movl $0x38, %edi
callq 0x4390
movq %rax, %rdi
movq %rdi, %rax
movq %rax, -0x740(%rbp)
movl -0x2a0(%rbp), %ecx
movq %rsp, %rax
movl $0x0, 0x30(%rax)
movl $0x0, 0x28(%rax)
movl $0x0, 0x20(%rax)
movl $0x1, 0x18(%rax)
movq $0x0, 0x10(%rax)
movl $0x0, 0x8(%rax)
movl $0x0, (%rax)
movl $0x7, %esi
xorl %r9d, %r9d
movl %r9d, %edx
movl %r9d, %r8d
callq 0x30d90
jmp 0x20cce
movq -0x740(%rbp), %rcx
movq -0x18(%rbp), %rax
movq %rcx, (%rax)
movb $0x1, -0x299(%rbp)
jmp 0x20d29
movq -0x740(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xc0(%rbp)
movl %eax, -0xc4(%rbp)
movl $0x38, %esi
callq 0x43a0
jmp 0x21288
jmp 0x20d0f
jmp 0x20d11
jmp 0x20d13
jmp 0x20d15
movl -0x2a0(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x2a0(%rbp)
jmp 0x20972
testb $0x1, -0x299(%rbp)
jne 0x20d3b
movb $0x0, -0x1(%rbp)
jmp 0x2127a
jmp 0x20d3d
jmp 0x20d3f
jmp 0x20d41
movq -0x18(%rbp), %rax
movq (%rax), %rax
cmpl $0x0, 0x10(%rax)
jne 0x20d68
movq -0x3a8(%rbp), %rdi
addq $0x250, %rdi            # imm = 0x250
leaq 0x4591d(%rip), %rsi     # 0x66680
callq 0x19ee0
leaq 0x458c1(%rip), %rax     # 0x66630
testb $0x1, (%rax)
je 0x21097
movq -0x3a8(%rbp), %rax
addq $0x40, %rax
movq %rax, -0x750(%rbp)
leaq -0x2e0(%rbp), %rdi
movq %rdi, -0x748(%rbp)
callq 0x44f0
movq -0x750(%rbp), %rdi
movq -0x748(%rbp), %rsi
callq 0x4430
jmp 0x20db2
leaq -0x2e0(%rbp), %rdi
callq 0x46e8
movq -0x3a8(%rbp), %rax
movq %rax, %rdi
addq $0x40, %rdi
movq 0x40(%rax), %rax
addq -0x18(%rax), %rdi
xorl %esi, %esi
callq 0x45e0
movq -0x3a8(%rbp), %rdi
addq $0x40, %rdi
addq $0x10, %rdi
movq -0x18(%rbp), %rax
movq (%rax), %rax
movl 0x18(%rax), %esi
callq 0x44c0
leaq 0x45728(%rip), %rax     # 0x66528
testb $0x1, (%rax)
je 0x21092
leaq 0x45719(%rip), %rax     # 0x66529
testb $0x1, (%rax)
jne 0x21092
movl $0x12, %edi
callq 0x177b0
movl %eax, -0x2e4(%rbp)
movl -0x2e4(%rbp), %esi
movq 0x4519a(%rip), %rdi     # 0x65fd0
callq 0x4440
movq %rax, -0x760(%rbp)
movl $0x20, %edi
callq 0x177d0
movq -0x760(%rbp), %rdi
movb %al, -0x2e5(%rbp)
movzbl -0x2e5(%rbp), %esi
callq 0x4550
movq -0x3a8(%rbp), %rsi
movq %rax, -0x758(%rbp)
addq $0x20, %rsi
leaq 0x30ab7(%rip), %rdx     # 0x51935
leaq -0x348(%rbp), %rdi
callq 0x17fa0
movq -0x3a8(%rbp), %rsi
addq $0x40, %rsi
leaq -0x368(%rbp), %rdi
callq 0x4370
jmp 0x20ea3
leaq -0x328(%rbp), %rdi
leaq -0x348(%rbp), %rsi
leaq -0x368(%rbp), %rdx
callq 0x228d0
jmp 0x20ebf
leaq 0x334b3(%rip), %rdx     # 0x54379
leaq -0x308(%rbp), %rdi
leaq -0x328(%rbp), %rsi
callq 0x18020
jmp 0x20edb
movq -0x758(%rbp), %rdi
leaq -0x308(%rbp), %rsi
callq 0x4320
movq %rax, -0x768(%rbp)
jmp 0x20ef7
movl $0xf, %edi
callq 0x177b0
movl %eax, -0x76c(%rbp)
jmp 0x20f09
movq -0x768(%rbp), %rdi
movl -0x76c(%rbp), %eax
movl %eax, -0x36c(%rbp)
movl -0x36c(%rbp), %esi
callq 0x4440
movq %rax, -0x778(%rbp)
jmp 0x20f30
movl $0x20, %edi
callq 0x177d0
movb %al, -0x779(%rbp)
jmp 0x20f42
movq -0x778(%rbp), %rdi
movb -0x779(%rbp), %al
movb %al, -0x36d(%rbp)
movzbl -0x36d(%rbp), %esi
callq 0x4550
movq %rax, -0x788(%rbp)
jmp 0x20f6a
movq -0x788(%rbp), %rdi
movq -0x18(%rbp), %rax
movq (%rax), %rsi
callq 0x30f50
movq %rax, -0x790(%rbp)
jmp 0x20f86
movq -0x790(%rbp), %rdi
leaq 0x319e7(%rip), %rsi     # 0x5297b
callq 0x4380
movq %rax, -0x798(%rbp)
jmp 0x20fa2
movq -0x798(%rbp), %rdi
movq 0x45000(%rip), %rsi     # 0x65fb0
callq 0x43c0
jmp 0x20fb7
leaq -0x308(%rbp), %rdi
callq 0x46e8
leaq -0x328(%rbp), %rdi
callq 0x46e8
leaq -0x368(%rbp), %rdi
callq 0x46e8
leaq -0x348(%rbp), %rdi
callq 0x46e8
jmp 0x21092
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xc0(%rbp)
movl %eax, -0xc4(%rbp)
leaq -0x2e0(%rbp), %rdi
callq 0x46e8
jmp 0x21288
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xc0(%rbp)
movl %eax, -0xc4(%rbp)
jmp 0x21081
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xc0(%rbp)
movl %eax, -0xc4(%rbp)
jmp 0x21075
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xc0(%rbp)
movl %eax, -0xc4(%rbp)
jmp 0x21069
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xc0(%rbp)
movl %eax, -0xc4(%rbp)
leaq -0x308(%rbp), %rdi
callq 0x46e8
leaq -0x328(%rbp), %rdi
callq 0x46e8
leaq -0x368(%rbp), %rdi
callq 0x46e8
leaq -0x348(%rbp), %rdi
callq 0x46e8
jmp 0x21288
jmp 0x21276
leaq 0x4548a(%rip), %rax     # 0x66528
testb $0x1, (%rax)
je 0x21274
leaq 0x4547b(%rip), %rax     # 0x66529
testb $0x1, (%rax)
jne 0x21274
movl $0x12, %edi
callq 0x177b0
movl %eax, -0x374(%rbp)
movl -0x374(%rbp), %esi
movq 0x44efc(%rip), %rdi     # 0x65fd0
callq 0x4440
movq %rax, -0x7b8(%rbp)
movl $0x20, %edi
callq 0x177d0
movq -0x7b8(%rbp), %rdi
movb %al, -0x375(%rbp)
movzbl -0x375(%rbp), %esi
callq 0x4550
movq -0x3a8(%rbp), %rsi
movq %rax, -0x7b0(%rbp)
addq $0x20, %rsi
leaq 0x3325d(%rip), %rdx     # 0x54379
leaq -0x398(%rbp), %rdi
movq %rdi, -0x7a8(%rbp)
callq 0x17fa0
movq -0x7b0(%rbp), %rdi
movq -0x7a8(%rbp), %rsi
callq 0x4320
movq %rax, -0x7a0(%rbp)
jmp 0x2114b
movq -0x7a0(%rbp), %rdi
movq -0x18(%rbp), %rax
movq (%rax), %rax
movl 0x18(%rax), %esi
callq 0x44c0
movq %rax, -0x7c0(%rbp)
jmp 0x2116a
movq -0x7c0(%rbp), %rdi
leaq 0x33201(%rip), %rsi     # 0x54379
callq 0x4380
movq %rax, -0x7c8(%rbp)
jmp 0x21186
movl $0xf, %edi
callq 0x177b0
movl %eax, -0x7cc(%rbp)
jmp 0x21198
movq -0x7c8(%rbp), %rdi
movl -0x7cc(%rbp), %eax
movl %eax, -0x39c(%rbp)
movl -0x39c(%rbp), %esi
callq 0x4440
movq %rax, -0x7d8(%rbp)
jmp 0x211bf
movl $0x20, %edi
callq 0x177d0
movb %al, -0x7d9(%rbp)
jmp 0x211d1
movq -0x7d8(%rbp), %rdi
movb -0x7d9(%rbp), %al
movb %al, -0x39d(%rbp)
movzbl -0x39d(%rbp), %esi
callq 0x4550
movq %rax, -0x7e8(%rbp)
jmp 0x211f9
movq -0x7e8(%rbp), %rdi
movq -0x18(%rbp), %rax
movq (%rax), %rsi
callq 0x30f50
movq %rax, -0x7f0(%rbp)
jmp 0x21215
movq -0x7f0(%rbp), %rdi
leaq 0x31758(%rip), %rsi     # 0x5297b
callq 0x4380
movq %rax, -0x7f8(%rbp)
jmp 0x21231
movq -0x7f8(%rbp), %rdi
movq 0x44d71(%rip), %rsi     # 0x65fb0
callq 0x43c0
jmp 0x21246
leaq -0x398(%rbp), %rdi
callq 0x46e8
jmp 0x21274
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xc0(%rbp)
movl %eax, -0xc4(%rbp)
leaq -0x398(%rbp), %rdi
callq 0x46e8
jmp 0x21288
jmp 0x21276
movb $0x1, -0x1(%rbp)
movb -0x1(%rbp), %al
andb $0x1, %al
addq $0x830, %rsp            # imm = 0x830
popq %rbp
retq
movq -0xc0(%rbp), %rdi
callq 0x4630
nopw %cs:(%rax,%rax)