// File: AngelPn[P]L5R-card_game/src/Player.cpp
// Function: Player::battlePhase(Player*)
void Player::battlePhase(Player *p){
	//All of the cards in Army are untapped because of the startingPhase
	cout<< this->name<< ", choose the number of untapped Personalities in Army to defense/battle: "<< endl<<
		"The number of existing untapped Personalities in Army is "<< army.size()<< endl<<
		"Type a number (1-"<< army.size()<< "): ";
	int c= 0;
	while(c< 1 || c> army.size()){
		cin>> c;
		cout<< c<< endl;
	}

	//Built up the arena
	printArmy();
	cout<< this->name<< ", choose which of the Personalities in Army you want in Arena: "<< endl<<
		"Type "<< c<< " different numbers: (1-"<< army.size()<< "): ";
	int n= 0;
	arena.clear(); //Clear the previous arena
	for(int i=0; i< c; i++){
		cin>> n;
		arena.push_back(n -1); //vector of army's indexes that keeps track of personalities in arena
	}
	printArena();

	if(p!= NULL){ //If the player has chosen battle

		cout<< "Enemy's provinces: "<< endl;
		p->printProvinces();
		cout<< this->name<< ", choose the enemy's province to attack: "<< endl<<
			"The number of enemy's provinces is "<< p->numberOfProvinces<< endl<<
			"Type a number: (1-"<< p->numberOfProvinces<< "): ";
		n= 0;
		while(n< 1 || n> p->numberOfProvinces)
			cin>> n;

		//Calculate the total points of attacker and defender
		int points_attacker= 0, points_defender= 0;

		for(int i= 0; i< arena.size(); i++)
			points_attacker+= army[arena[i]]->get_attack();

		for(int i= 0; i< p->arena.size(); i++)
			points_defender+= p->army[p->arena[i]]->get_defense();

		int province_defense= p->holdings[0]->get_initialDefense(); //Get the province defense points from StrongHold
		points_defender+= province_defense;

		cout<< "Attacker's points= "<< points_attacker<< endl<<
			"Province's defense= "<< province_defense<< endl<<
			"Defender's points= "<< points_defender<< endl<< endl;

		if(points_attacker - points_defender > province_defense){ //Attacker won the battle, province is destroyed
			p->provinces.erase(p->provinces.begin()+ n-1); //Destroy defender's province
			p->numberOfProvinces--; //Decrement defender's total number of provinces
			//Defender loses all of the defensive personalities
			for(int i=0; i< p->arena.size(); i++){
				p->army.erase(p->army.begin()+ p->arena[i]); //Destroy the Personality
				p->decrease_arena(i);
				p->arena.erase(p->arena.begin()+ i); //Erase the Personality from Arena
				i--;
			}
			//Print a message
			cout<< "Attacker's points - Defender's points > Province's defense"<< endl<<
				"Attacker "<< this->name<< " won the battle. Enemy's province is destroyed!"<< endl<<
				"Print Enemy's provinces: "<< endl;
			p->printProvinces();
		}
		else{ //Province is not destroyed
			if(points_attacker > points_defender){
				//Defender loses all of the defensive personalities
				for(int i=0; i< p->arena.size(); i++){
					p->army.erase(p->army.begin()+ p->arena[i]); //Destroy the Personality
					p->decrease_arena(i);
					p->arena.erase(p->arena.begin()+ i); //Erase the Personality from Arena
					i--;
				}

				//Attacker loses followers or personalities from arena's army that attack>= points_attacker- points_defender
				int lost_points= 0, k= 0;
				while(lost_points < (points_attacker - points_defender)){

					if(army[arena[k]]->hasFollowers()){ //If the Personality has followers
						army[arena[k]]->destroyFollower(&lost_points);
						continue;
					}
					else{
						lost_points+= army[arena[k]]->get_attack();
						army.erase(army.begin()+ arena[k]); //delete the Personality
						decrease_arena(k);
						arena.erase(arena.begin()+ k);
						k--;
					}

					if(k == army.size()) break;
					k++;
				}

				//Tap every Personality and Followers that have survived
				for(int i= 0; i< arena.size(); i++){
					army[arena[i]]->tap_followers();
					army[arena[i]]->tap();
					//Items of Personality lose one durability
					army[arena[i]]->decrement_durability();
				}
				//Print a message
				cout<< "Attacker's points - Defender's points < Province's defense"<< endl<<
					"Province is not destroyed!"<< endl<<
					"Attacker's points > Defender's points"<< endl<<
					"Defender loses all of the defensive Personalities"<< endl<<
					"Attacker loses followers or personalities from Arena's army that attack>= attacker's points - defender's points"<< endl<<
					"Tapped every Personality and Followers that have survived. Items of Personality lose one durability"<< endl;
			}
			else if(points_attacker == points_defender){
				//Attacker loses all of the attacking personalities and followers
				for(int i=0; i< arena.size(); i++){
					army.erase(army.begin()+ arena[i]); //Destroy the Personality
					decrease_arena(i);
					arena.erase(arena.begin()+ i); //Erase the Personality from Arena
					i--;
				}

				//Defender loses all of the defensive personalities and followers
				for(int i=0; i< p->arena.size(); i++){
					p->army.erase(p->army.begin()+ p->arena[i]); //Destroy the Personality
					p->decrease_arena(i);
					p->arena.erase(p->arena.begin()+ i); //Erase the Personality from Arena
					i--;
				}

				//Print a message
				cout<< "Attacker's points - Defender's points < Province's defense"<< endl<<
					"Province is not destroyed!"<< endl<<
					"Attacker's points == Defender's points"<< endl<<
					"Defender loses all of the defensive Personalities and Followers"<< endl<<
					"Attacker loses all of the attacking Personalities and Followers"<< endl;
			}
			else{
				//Attacker loses all of the attacking personalities and followers
				for(int i=0; i< arena.size(); i++){
					army.erase(army.begin()+ arena[i]); //Destroy the Personality
					decrease_arena(i);
					arena.erase(arena.begin()+ i); //Erase the Personality from Arena
					i--;
				}

				//Defender loses followers or personalities from arena's army that attack>= points_attacker- points_defender
				int lost_points= 0, k= 0;
				while(lost_points < (points_defender - points_attacker)){

					if(p->army[p->arena[k]]->hasFollowers()){ //If the Personality has followers
						p->army[p->arena[k]]->destroyFollower(&lost_points);
						continue;
					}
					else{
						lost_points+= p->army[p->arena[k]]->get_attack();
						p->army.erase(p->army.begin()+ p->arena[k]); //destroy the Personality
						p->decrease_arena(k);
						p->arena.erase(p->arena.begin()+ k);
						k--;
					}

					if(k == p->army.size()) break;
					k++;
				}
				//Print a message
				cout<< "Attacker's points - Defender's points < Province's defense"<< endl<<
					"Province is not destroyed!"<< endl<<
					"Attacker's points < Defender's points"<< endl<<
					"Defender loses followers or personalities from arena's army that attack>= defender's points - attacker's points"<< endl<<
					"Attacker loses all of the attacking Personalities and Followers"<< endl;
			}
			cout<< "Surviving Personalities lose a point of honour"<< endl;
			//Surviving Personalities lose a point of honour
			for(int i= 0; i< arena.size(); i++){
				army[arena[i]]->decrement_honour();
				if(army[arena[i]]->get_honour() == 0){ //Perfom suicide
					army[arena[i]]->performSeppuku();
					army.erase(army.begin()+ arena[i]); //Destroy the Personality
					decrease_arena(i);
					arena.erase(arena.begin()+ i); //Erase the Personality from Arena
					i--;
				}
			}
			for(int i= 0; i< p->arena.size(); i++){
				p->army[p->arena[i]]->decrement_honour();
				if(p->army[p->arena[i]]->get_honour() == 0){ //Perfom suicide
					p->army[p->arena[i]]->performSeppuku();
					p->army.erase(p->army.begin()+ p->arena[i]); //Destroy the Personality
					p->decrease_arena(i);
					p->arena.erase(p->arena.begin()+ i); //Erase the Personality from Arena
					i--;
				}
			}
		}
		cout<< "Print "<< this->name<< "'s Arena:"<< endl;
		printArena();
		cout<< "Print "<< p->name<< "'s Arena: "<< endl;
		p->printArena();
	}

}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x4a0, %rsp            # imm = 0x4A0
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x8(%rbp), %rsi
movq %rsi, -0x2f8(%rbp)
addq $0xa8, %rsi
movq 0x14464(%rip), %rdi     # 0x24fd0
callq 0x41d0
movq %rax, %rdi
leaq 0x81bd(%rip), %rsi      # 0x18d38
callq 0x4200
movq %rax, %rdi
movq 0x14436(%rip), %rsi     # 0x24fc0
callq 0x4230
movq %rax, %rdi
leaq 0x81e9(%rip), %rsi      # 0x18d82
callq 0x4200
movq -0x2f8(%rbp), %rdi
movq %rax, -0x300(%rbp)
addq $0x50, %rdi
callq 0x13930
movq -0x300(%rbp), %rdi
movq %rax, %rsi
callq 0x4090
movq %rax, %rdi
movq 0x143f2(%rip), %rsi     # 0x24fc0
callq 0x4230
movq %rax, %rdi
leaq 0x81df(%rip), %rsi      # 0x18dbc
callq 0x4200
movq -0x2f8(%rbp), %rdi
movq %rax, -0x2f0(%rbp)
addq $0x50, %rdi
callq 0x13930
movq -0x2f0(%rbp), %rdi
movq %rax, %rsi
callq 0x4090
movq %rax, %rdi
leaq 0x7417(%rip), %rsi      # 0x18029
callq 0x4200
movl $0x0, -0x14(%rbp)
movb $0x1, %al
cmpl $0x1, -0x14(%rbp)
movb %al, -0x301(%rbp)
jl 0x10c5d
movq -0x2f8(%rbp), %rdi
movslq -0x14(%rbp), %rax
movq %rax, -0x310(%rbp)
addq $0x50, %rdi
callq 0x13930
movq %rax, %rcx
movq -0x310(%rbp), %rax
cmpq %rcx, %rax
seta %al
movb %al, -0x301(%rbp)
movb -0x301(%rbp), %al
testb $0x1, %al
jne 0x10c69
jmp 0x10c99
movq 0x14370(%rip), %rdi     # 0x24fe0
leaq -0x14(%rbp), %rsi
callq 0x4150
movl -0x14(%rbp), %esi
movq 0x1434d(%rip), %rdi     # 0x24fd0
callq 0x4330
movq %rax, %rdi
movq 0x1432e(%rip), %rsi     # 0x24fc0
callq 0x4230
jmp 0x10c1e
movq -0x2f8(%rbp), %rdi
callq 0x10750
movq -0x2f8(%rbp), %rsi
addq $0xa8, %rsi
movq 0x14316(%rip), %rdi     # 0x24fd0
callq 0x41d0
movq %rax, %rdi
leaq 0x8105(%rip), %rsi      # 0x18dce
callq 0x4200
movq %rax, %rdi
movq 0x142e8(%rip), %rsi     # 0x24fc0
callq 0x4230
movq %rax, %rdi
leaq 0x8127(%rip), %rsi      # 0x18e0e
callq 0x4200
movq %rax, %rdi
movl -0x14(%rbp), %esi
callq 0x4330
movq %rax, %rdi
leaq 0x8113(%rip), %rsi      # 0x18e14
callq 0x4200
movq -0x2f8(%rbp), %rdi
movq %rax, -0x318(%rbp)
addq $0x50, %rdi
callq 0x13930
movq -0x318(%rbp), %rdi
movq %rax, %rsi
callq 0x4090
movq %rax, %rdi
leaq 0x72f3(%rip), %rsi      # 0x18029
callq 0x4200
movq -0x2f8(%rbp), %rdi
movl $0x0, -0x18(%rbp)
addq $0x68, %rdi
callq 0x13fc0
movl $0x0, -0x1c(%rbp)
movl -0x1c(%rbp), %eax
cmpl -0x14(%rbp), %eax
jge 0x10d99
movq 0x14278(%rip), %rdi     # 0x24fe0
leaq -0x18(%rbp), %rsi
callq 0x4150
movq -0x2f8(%rbp), %rdi
addq $0x68, %rdi
movl -0x18(%rbp), %eax
subl $0x1, %eax
movl %eax, -0x20(%rbp)
leaq -0x20(%rbp), %rsi
callq 0x13fe0
movl -0x1c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x1c(%rbp)
jmp 0x10d59
movq -0x2f8(%rbp), %rdi
callq 0x12480
cmpq $0x0, -0x10(%rbp)
je 0x12475
movq 0x14219(%rip), %rdi     # 0x24fd0
leaq 0x8187(%rip), %rsi      # 0x18f45
callq 0x4200
movq %rax, %rdi
movq 0x141f3(%rip), %rsi     # 0x24fc0
callq 0x4230
movq -0x10(%rbp), %rdi
callq 0xfdb0
movq -0x2f8(%rbp), %rsi
addq $0xa8, %rsi
movq 0x141e0(%rip), %rdi     # 0x24fd0
callq 0x41d0
movq %rax, %rdi
leaq 0x802d(%rip), %rsi      # 0x18e2c
callq 0x4200
movq %rax, %rdi
movq 0x141b2(%rip), %rsi     # 0x24fc0
callq 0x4230
movq %rax, %rdi
leaq 0x8039(%rip), %rsi      # 0x18e56
callq 0x4200
movq %rax, %rdi
movq -0x10(%rbp), %rax
movl 0x80(%rax), %esi
callq 0x4330
movq %rax, %rdi
movq 0x14182(%rip), %rsi     # 0x24fc0
callq 0x4230
movq %rax, %rdi
leaq 0x802d(%rip), %rsi      # 0x18e7a
callq 0x4200
movq %rax, %rdi
movq -0x10(%rbp), %rax
movl 0x80(%rax), %esi
callq 0x4330
movq %rax, %rdi
leaq 0x71bb(%rip), %rsi      # 0x18029
callq 0x4200
movl $0x0, -0x18(%rbp)
movb $0x1, %al
cmpl $0x1, -0x18(%rbp)
movb %al, -0x319(%rbp)
jl 0x10e9e
movl -0x18(%rbp), %eax
movq -0x10(%rbp), %rcx
cmpl 0x80(%rcx), %eax
setg %al
movb %al, -0x319(%rbp)
movb -0x319(%rbp), %al
testb $0x1, %al
jne 0x10eaa
jmp 0x10ebc
movq 0x1412f(%rip), %rdi     # 0x24fe0
leaq -0x18(%rbp), %rsi
callq 0x4150
jmp 0x10e7a
movl $0x0, -0x24(%rbp)
movl $0x0, -0x28(%rbp)
movl $0x0, -0x2c(%rbp)
movq -0x2f8(%rbp), %rdi
movslq -0x2c(%rbp), %rax
movq %rax, -0x328(%rbp)
addq $0x68, %rdi
callq 0x13f80
movq %rax, %rcx
movq -0x328(%rbp), %rax
cmpq %rcx, %rax
jae 0x10f45
movq -0x2f8(%rbp), %rdi
movq %rdi, %rax
addq $0x50, %rax
movq %rax, -0x330(%rbp)
addq $0x68, %rdi
movslq -0x2c(%rbp), %rsi
callq 0x13fa0
movq -0x330(%rbp), %rdi
movslq (%rax), %rsi
callq 0x13d30
movq (%rax), %rdi
callq 0xdbb0
addl -0x24(%rbp), %eax
movl %eax, -0x24(%rbp)
movl -0x2c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x2c(%rbp)
jmp 0x10ed1
movl $0x0, -0x30(%rbp)
movslq -0x30(%rbp), %rax
movq %rax, -0x338(%rbp)
movq -0x10(%rbp), %rdi
addq $0x68, %rdi
callq 0x13f80
movq %rax, %rcx
movq -0x338(%rbp), %rax
cmpq %rcx, %rax
jae 0x10fbb
movq -0x10(%rbp), %rax
addq $0x50, %rax
movq %rax, -0x340(%rbp)
movq -0x10(%rbp), %rdi
addq $0x68, %rdi
movslq -0x30(%rbp), %rsi
callq 0x13fa0
movq -0x340(%rbp), %rdi
movslq (%rax), %rsi
callq 0x13d30
movq (%rax), %rdi
callq 0xdbd0
addl -0x28(%rbp), %eax
movl %eax, -0x28(%rbp)
movl -0x30(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x30(%rbp)
jmp 0x10f4c
movq -0x10(%rbp), %rdi
addq $0x38, %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x13770
movq (%rax), %rdi
movq (%rdi), %rax
callq *0x30(%rax)
movl %eax, -0x34(%rbp)
movl -0x34(%rbp), %eax
addl -0x28(%rbp), %eax
movl %eax, -0x28(%rbp)
movq 0x13fe8(%rip), %rdi     # 0x24fd0
leaq 0x7e9e(%rip), %rsi      # 0x18e8d
callq 0x4200
movq %rax, %rdi
movl -0x24(%rbp), %esi
callq 0x4330
movq %rax, %rdi
movq 0x13fb7(%rip), %rsi     # 0x24fc0
callq 0x4230
movq %rax, %rdi
leaq 0x7e89(%rip), %rsi      # 0x18ea1
callq 0x4200
movq %rax, %rdi
movl -0x34(%rbp), %esi
callq 0x4330
movq %rax, %rdi
movq 0x13f8e(%rip), %rsi     # 0x24fc0
callq 0x4230
movq %rax, %rdi
leaq 0x7e75(%rip), %rsi      # 0x18eb6
callq 0x4200
movq %rax, %rdi
movl -0x28(%rbp), %esi
callq 0x4330
movq %rax, %rdi
movq 0x13f65(%rip), %rsi     # 0x24fc0
callq 0x4230
movq %rax, %rdi
movq 0x13f56(%rip), %rsi     # 0x24fc0
callq 0x4230
movl -0x24(%rbp), %eax
subl -0x28(%rbp), %eax
cmpl -0x34(%rbp), %eax
jle 0x112ac
movq -0x10(%rbp), %rax
addq $0x88, %rax
movq %rax, -0x348(%rbp)
movq -0x10(%rbp), %rdi
addq $0x88, %rdi
callq 0x7a00
movq %rax, -0x58(%rbp)
movslq -0x18(%rbp), %rsi
leaq -0x58(%rbp), %rdi
callq 0xb610
movq %rax, -0x50(%rbp)
leaq -0x50(%rbp), %rdi
movl $0x1, %esi
callq 0x14080
movq %rax, -0x48(%rbp)
leaq -0x40(%rbp), %rdi
leaq -0x48(%rbp), %rsi
callq 0x140c0
movq -0x348(%rbp), %rdi
movq -0x40(%rbp), %rsi
callq 0x14010
movq %rax, -0x60(%rbp)
movq -0x10(%rbp), %rax
movl 0x80(%rax), %ecx
addl $-0x1, %ecx
movl %ecx, 0x80(%rax)
movl $0x0, -0x64(%rbp)
movslq -0x64(%rbp), %rax
movq %rax, -0x350(%rbp)
movq -0x10(%rbp), %rdi
addq $0x68, %rdi
callq 0x13f80
movq %rax, %rcx
movq -0x350(%rbp), %rax
cmpq %rcx, %rax
jae 0x1121b
movq -0x10(%rbp), %rax
addq $0x50, %rax
movq %rax, -0x360(%rbp)
movq -0x10(%rbp), %rdi
addq $0x50, %rdi
callq 0x13a50
movq %rax, -0x80(%rbp)
movq -0x10(%rbp), %rdi
addq $0x68, %rdi
movslq -0x64(%rbp), %rsi
callq 0x13fa0
movslq (%rax), %rsi
leaq -0x80(%rbp), %rdi
callq 0x14170
movq %rax, -0x78(%rbp)
leaq -0x70(%rbp), %rdi
leaq -0x78(%rbp), %rsi
callq 0x141b0
movq -0x360(%rbp), %rdi
movq -0x70(%rbp), %rsi
callq 0x14100
movq %rax, -0x88(%rbp)
movq -0x10(%rbp), %rdi
movl -0x64(%rbp), %esi
callq 0x10ad0
movq -0x10(%rbp), %rax
addq $0x68, %rax
movq %rax, -0x358(%rbp)
movq -0x10(%rbp), %rdi
addq $0x68, %rdi
callq 0x14260
movq %rax, -0xa0(%rbp)
movslq -0x64(%rbp), %rsi
leaq -0xa0(%rbp), %rdi
callq 0x14290
movq %rax, -0x98(%rbp)
leaq -0x90(%rbp), %rdi
leaq -0x98(%rbp), %rsi
callq 0x142d0
movq -0x358(%rbp), %rdi
movq -0x90(%rbp), %rsi
callq 0x141f0
movq %rax, -0xa8(%rbp)
movl -0x64(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0x64(%rbp)
movl -0x64(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x64(%rbp)
jmp 0x11101
movq 0x13dae(%rip), %rdi     # 0x24fd0
leaq 0x7ca1(%rip), %rsi      # 0x18eca
callq 0x4200
movq %rax, %rdi
movq 0x13d88(%rip), %rsi     # 0x24fc0
callq 0x4230
movq %rax, %rdi
leaq 0x7cbe(%rip), %rsi      # 0x18f05
callq 0x4200
movq -0x2f8(%rbp), %rsi
movq %rax, %rdi
addq $0xa8, %rsi
callq 0x41d0
movq %rax, %rdi
leaq 0x7ca3(%rip), %rsi      # 0x18f0f
callq 0x4200
movq %rax, %rdi
movq 0x13d45(%rip), %rsi     # 0x24fc0
callq 0x4230
movq %rax, %rdi
leaq 0x7cb5(%rip), %rsi      # 0x18f3f
callq 0x4200
movq %rax, %rdi
movq 0x13d27(%rip), %rsi     # 0x24fc0
callq 0x4230
movq -0x10(%rbp), %rdi
callq 0xfdb0
jmp 0x123d5
movl -0x24(%rbp), %eax
cmpl -0x28(%rbp), %eax
jle 0x1180f
movl $0x0, -0xac(%rbp)
movslq -0xac(%rbp), %rax
movq %rax, -0x368(%rbp)
movq -0x10(%rbp), %rdi
addq $0x68, %rdi
callq 0x13f80
movq %rax, %rcx
movq -0x368(%rbp), %rax
cmpq %rcx, %rax
jae 0x11406
movq -0x10(%rbp), %rax
addq $0x50, %rax
movq %rax, -0x378(%rbp)
movq -0x10(%rbp), %rdi
addq $0x50, %rdi
callq 0x13a50
movq %rax, -0xc8(%rbp)
movq -0x10(%rbp), %rdi
addq $0x68, %rdi
movslq -0xac(%rbp), %rsi
callq 0x13fa0
movslq (%rax), %rsi
leaq -0xc8(%rbp), %rdi
callq 0x14170
movq %rax, -0xc0(%rbp)
leaq -0xb8(%rbp), %rdi
leaq -0xc0(%rbp), %rsi
callq 0x141b0
movq -0x378(%rbp), %rdi
movq -0xb8(%rbp), %rsi
callq 0x14100
movq %rax, -0xd0(%rbp)
movq -0x10(%rbp), %rdi
movl -0xac(%rbp), %esi
callq 0x10ad0
movq -0x10(%rbp), %rax
addq $0x68, %rax
movq %rax, -0x370(%rbp)
movq -0x10(%rbp), %rdi
addq $0x68, %rdi
callq 0x14260
movq %rax, -0xe8(%rbp)
movslq -0xac(%rbp), %rsi
leaq -0xe8(%rbp), %rdi
callq 0x14290
movq %rax, -0xe0(%rbp)
leaq -0xd8(%rbp), %rdi
leaq -0xe0(%rbp), %rsi
callq 0x142d0
movq -0x370(%rbp), %rdi
movq -0xd8(%rbp), %rsi
callq 0x141f0
movq %rax, -0xf0(%rbp)
movl -0xac(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0xac(%rbp)
movl -0xac(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xac(%rbp)
jmp 0x112c2
movl $0x0, -0xf4(%rbp)
movl $0x0, -0xf8(%rbp)
movl -0xf4(%rbp), %eax
movl -0x24(%rbp), %ecx
subl -0x28(%rbp), %ecx
cmpl %ecx, %eax
jge 0x1164f
movq -0x2f8(%rbp), %rdi
movq %rdi, %rax
addq $0x50, %rax
movq %rax, -0x380(%rbp)
addq $0x68, %rdi
movslq -0xf8(%rbp), %rsi
callq 0x13fa0
movq -0x380(%rbp), %rdi
movslq (%rax), %rsi
callq 0x13d30
movq (%rax), %rdi
callq 0xdc10
testb $0x1, %al
jne 0x11470
jmp 0x114b8
movq -0x2f8(%rbp), %rdi
movq %rdi, %rax
addq $0x50, %rax
movq %rax, -0x388(%rbp)
addq $0x68, %rdi
movslq -0xf8(%rbp), %rsi
callq 0x13fa0
movq -0x388(%rbp), %rdi
movslq (%rax), %rsi
callq 0x13d30
movq (%rax), %rdi
leaq -0xf4(%rbp), %rsi
callq 0xdc50
jmp 0x1141a
movq -0x2f8(%rbp), %rdi
movq %rdi, %rax
addq $0x50, %rax
movq %rax, -0x3a0(%rbp)
addq $0x68, %rdi
movslq -0xf8(%rbp), %rsi
callq 0x13fa0
movq -0x3a0(%rbp), %rdi
movslq (%rax), %rsi
callq 0x13d30
movq (%rax), %rdi
callq 0xdbb0
movq -0x2f8(%rbp), %rdi
addl -0xf4(%rbp), %eax
movl %eax, -0xf4(%rbp)
movq %rdi, %rax
addq $0x50, %rax
movq %rax, -0x398(%rbp)
addq $0x50, %rdi
callq 0x13a50
movq -0x2f8(%rbp), %rdi
movq %rax, -0x110(%rbp)
addq $0x68, %rdi
movslq -0xf8(%rbp), %rsi
callq 0x13fa0
movslq (%rax), %rsi
leaq -0x110(%rbp), %rdi
callq 0x14170
movq %rax, -0x108(%rbp)
leaq -0x100(%rbp), %rdi
leaq -0x108(%rbp), %rsi
callq 0x141b0
movq -0x398(%rbp), %rdi
movq -0x100(%rbp), %rsi
callq 0x14100
movq -0x2f8(%rbp), %rdi
movq %rax, -0x118(%rbp)
movl -0xf8(%rbp), %esi
callq 0x10ad0
movq -0x2f8(%rbp), %rdi
movq %rdi, %rax
addq $0x68, %rax
movq %rax, -0x390(%rbp)
addq $0x68, %rdi
callq 0x14260
movq %rax, -0x130(%rbp)
movslq -0xf8(%rbp), %rsi
leaq -0x130(%rbp), %rdi
callq 0x14290
movq %rax, -0x128(%rbp)
leaq -0x120(%rbp), %rdi
leaq -0x128(%rbp), %rsi
callq 0x142d0
movq -0x390(%rbp), %rdi
movq -0x120(%rbp), %rsi
callq 0x141f0
movq %rax, -0x138(%rbp)
movl -0xf8(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0xf8(%rbp)
movq -0x2f8(%rbp), %rdi
movslq -0xf8(%rbp), %rax
movq %rax, -0x3a8(%rbp)
addq $0x50, %rdi
callq 0x13930
movq %rax, %rcx
movq -0x3a8(%rbp), %rax
cmpq %rcx, %rax
jne 0x1163b
jmp 0x1164f
movl -0xf8(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xf8(%rbp)
jmp 0x1141a
movl $0x0, -0x13c(%rbp)
movq -0x2f8(%rbp), %rdi
movslq -0x13c(%rbp), %rax
movq %rax, -0x3b0(%rbp)
addq $0x68, %rdi
callq 0x13f80
movq %rax, %rcx
movq -0x3b0(%rbp), %rax
cmpq %rcx, %rax
jae 0x11752
movq -0x2f8(%rbp), %rdi
movq %rdi, %rax
addq $0x50, %rax
movq %rax, -0x3c8(%rbp)
addq $0x68, %rdi
movslq -0x13c(%rbp), %rsi
callq 0x13fa0
movq -0x3c8(%rbp), %rdi
movslq (%rax), %rsi
callq 0x13d30
movq (%rax), %rdi
callq 0xdca0
movq -0x2f8(%rbp), %rdi
movq %rdi, %rax
addq $0x50, %rax
movq %rax, -0x3c0(%rbp)
addq $0x68, %rdi
movslq -0x13c(%rbp), %rsi
callq 0x13fa0
movq -0x3c0(%rbp), %rdi
movslq (%rax), %rsi
callq 0x13d30
movq (%rax), %rdi
callq 0xe300
movq -0x2f8(%rbp), %rdi
movq %rdi, %rax
addq $0x50, %rax
movq %rax, -0x3b8(%rbp)
addq $0x68, %rdi
movslq -0x13c(%rbp), %rsi
callq 0x13fa0
movq -0x3b8(%rbp), %rdi
movslq (%rax), %rsi
callq 0x13d30
movq (%rax), %rdi
callq 0xdd30
movl -0x13c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x13c(%rbp)
jmp 0x11659
movq 0x13877(%rip), %rdi     # 0x24fd0
leaq 0x77f9(%rip), %rsi      # 0x18f59
callq 0x4200
movq %rax, %rdi
movq 0x13851(%rip), %rsi     # 0x24fc0
callq 0x4230
movq %rax, %rdi
leaq 0x7816(%rip), %rsi      # 0x18f94
callq 0x4200
movq %rax, %rdi
movq 0x13833(%rip), %rsi     # 0x24fc0
callq 0x4230
movq %rax, %rdi
leaq 0x7813(%rip), %rsi      # 0x18faf
callq 0x4200
movq %rax, %rdi
movq 0x13815(%rip), %rsi     # 0x24fc0
callq 0x4230
movq %rax, %rdi
leaq 0x781b(%rip), %rsi      # 0x18fd5
callq 0x4200
movq %rax, %rdi
movq 0x137f7(%rip), %rsi     # 0x24fc0
callq 0x4230
movq %rax, %rdi
leaq 0x782f(%rip), %rsi      # 0x19007
callq 0x4200
movq %rax, %rdi
movq 0x137d9(%rip), %rsi     # 0x24fc0
callq 0x4230
movq %rax, %rdi
leaq 0x7881(%rip), %rsi      # 0x19077
callq 0x4200
movq %rax, %rdi
movq 0x137bb(%rip), %rsi     # 0x24fc0
callq 0x4230
jmp 0x11f90
movl -0x24(%rbp), %eax
cmpl -0x28(%rbp), %eax
jne 0x11b63
movl $0x0, -0x140(%rbp)
movq -0x2f8(%rbp), %rdi
movslq -0x140(%rbp), %rax
movq %rax, -0x3d0(%rbp)
addq $0x68, %rdi
callq 0x13f80
movq %rax, %rcx
movq -0x3d0(%rbp), %rax
cmpq %rcx, %rax
jae 0x11976
movq -0x2f8(%rbp), %rdi
movq %rdi, %rax
addq $0x50, %rax
movq %rax, -0x3e0(%rbp)
addq $0x50, %rdi
callq 0x13a50
movq -0x2f8(%rbp), %rdi
movq %rax, -0x158(%rbp)
addq $0x68, %rdi
movslq -0x140(%rbp), %rsi
callq 0x13fa0
movslq (%rax), %rsi
leaq -0x158(%rbp), %rdi
callq 0x14170
movq %rax, -0x150(%rbp)
leaq -0x148(%rbp), %rdi
leaq -0x150(%rbp), %rsi
callq 0x141b0
movq -0x3e0(%rbp), %rdi
movq -0x148(%rbp), %rsi
callq 0x14100
movq -0x2f8(%rbp), %rdi
movq %rax, -0x160(%rbp)
movl -0x140(%rbp), %esi
callq 0x10ad0
movq -0x2f8(%rbp), %rdi
movq %rdi, %rax
addq $0x68, %rax
movq %rax, -0x3d8(%rbp)
addq $0x68, %rdi
callq 0x14260
movq %rax, -0x178(%rbp)
movslq -0x140(%rbp), %rsi
leaq -0x178(%rbp), %rdi
callq 0x14290
movq %rax, -0x170(%rbp)
leaq -0x168(%rbp), %rdi
leaq -0x170(%rbp), %rsi
callq 0x142d0
movq -0x3d8(%rbp), %rdi
movq -0x168(%rbp), %rsi
callq 0x141f0
movq %rax, -0x180(%rbp)
movl -0x140(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0x140(%rbp)
movl -0x140(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x140(%rbp)
jmp 0x11825
movl $0x0, -0x184(%rbp)
movslq -0x184(%rbp), %rax
movq %rax, -0x3e8(%rbp)
movq -0x10(%rbp), %rdi
addq $0x68, %rdi
callq 0x13f80
movq %rax, %rcx
movq -0x3e8(%rbp), %rax
cmpq %rcx, %rax
jae 0x11ac4
movq -0x10(%rbp), %rax
addq $0x50, %rax
movq %rax, -0x3f8(%rbp)
movq -0x10(%rbp), %rdi
addq $0x50, %rdi
callq 0x13a50
movq %rax, -0x1a0(%rbp)
movq -0x10(%rbp), %rdi
addq $0x68, %rdi
movslq -0x184(%rbp), %rsi
callq 0x13fa0
movslq (%rax), %rsi
leaq -0x1a0(%rbp), %rdi
callq 0x14170
movq %rax, -0x198(%rbp)
leaq -0x190(%rbp), %rdi
leaq -0x198(%rbp), %rsi
callq 0x141b0
movq -0x3f8(%rbp), %rdi
movq -0x190(%rbp), %rsi
callq 0x14100
movq %rax, -0x1a8(%rbp)
movq -0x10(%rbp), %rdi
movl -0x184(%rbp), %esi
callq 0x10ad0
movq -0x10(%rbp), %rax
addq $0x68, %rax
movq %rax, -0x3f0(%rbp)
movq -0x10(%rbp), %rdi
addq $0x68, %rdi
callq 0x14260
movq %rax, -0x1c0(%rbp)
movslq -0x184(%rbp), %rsi
leaq -0x1c0(%rbp), %rdi
callq 0x14290
movq %rax, -0x1b8(%rbp)
leaq -0x1b0(%rbp), %rdi
leaq -0x1b8(%rbp), %rsi
callq 0x142d0
movq -0x3f0(%rbp), %rdi
movq -0x1b0(%rbp), %rsi
callq 0x141f0
movq %rax, -0x1c8(%rbp)
movl -0x184(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0x184(%rbp)
movl -0x184(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x184(%rbp)
jmp 0x11980
movq 0x13505(%rip), %rdi     # 0x24fd0
leaq 0x7487(%rip), %rsi      # 0x18f59
callq 0x4200
movq %rax, %rdi
movq 0x134df(%rip), %rsi     # 0x24fc0
callq 0x4230
movq %rax, %rdi
leaq 0x74a4(%rip), %rsi      # 0x18f94
callq 0x4200
movq %rax, %rdi
movq 0x134c1(%rip), %rsi     # 0x24fc0
callq 0x4230
movq %rax, %rdi
leaq 0x75cd(%rip), %rsi      # 0x190db
callq 0x4200
movq %rax, %rdi
movq 0x134a3(%rip), %rsi     # 0x24fc0
callq 0x4230
movq %rax, %rdi
leaq 0x75d6(%rip), %rsi      # 0x19102
callq 0x4200
movq %rax, %rdi
movq 0x13485(%rip), %rsi     # 0x24fc0
callq 0x4230
movq %rax, %rdi
leaq 0x75f8(%rip), %rsi      # 0x19142
callq 0x4200
movq %rax, %rdi
movq 0x13467(%rip), %rsi     # 0x24fc0
callq 0x4230
jmp 0x11f8e
movl $0x0, -0x1cc(%rbp)
movq -0x2f8(%rbp), %rdi
movslq -0x1cc(%rbp), %rax
movq %rax, -0x400(%rbp)
addq $0x68, %rdi
callq 0x13f80
movq %rax, %rcx
movq -0x400(%rbp), %rax
cmpq %rcx, %rax
jae 0x11cbe
movq -0x2f8(%rbp), %rdi
movq %rdi, %rax
addq $0x50, %rax
movq %rax, -0x410(%rbp)
addq $0x50, %rdi
callq 0x13a50
movq -0x2f8(%rbp), %rdi
movq %rax, -0x1e8(%rbp)
addq $0x68, %rdi
movslq -0x1cc(%rbp), %rsi
callq 0x13fa0
movslq (%rax), %rsi
leaq -0x1e8(%rbp), %rdi
callq 0x14170
movq %rax, -0x1e0(%rbp)
leaq -0x1d8(%rbp), %rdi
leaq -0x1e0(%rbp), %rsi
callq 0x141b0
movq -0x410(%rbp), %rdi
movq -0x1d8(%rbp), %rsi
callq 0x14100
movq -0x2f8(%rbp), %rdi
movq %rax, -0x1f0(%rbp)
movl -0x1cc(%rbp), %esi
callq 0x10ad0
movq -0x2f8(%rbp), %rdi
movq %rdi, %rax
addq $0x68, %rax
movq %rax, -0x408(%rbp)
addq $0x68, %rdi
callq 0x14260
movq %rax, -0x208(%rbp)
movslq -0x1cc(%rbp), %rsi
leaq -0x208(%rbp), %rdi
callq 0x14290
movq %rax, -0x200(%rbp)
leaq -0x1f8(%rbp), %rdi
leaq -0x200(%rbp), %rsi
callq 0x142d0
movq -0x408(%rbp), %rdi
movq -0x1f8(%rbp), %rsi
callq 0x141f0
movq %rax, -0x210(%rbp)
movl -0x1cc(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0x1cc(%rbp)
movl -0x1cc(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x1cc(%rbp)
jmp 0x11b6d
movl $0x0, -0x214(%rbp)
movl $0x0, -0x218(%rbp)
movl -0x214(%rbp), %eax
movl -0x28(%rbp), %ecx
subl -0x24(%rbp), %ecx
cmpl %ecx, %eax
jge 0x11ef4
movq -0x10(%rbp), %rax
addq $0x50, %rax
movq %rax, -0x418(%rbp)
movq -0x10(%rbp), %rdi
addq $0x68, %rdi
movslq -0x218(%rbp), %rsi
callq 0x13fa0
movq -0x418(%rbp), %rdi
movslq (%rax), %rsi
callq 0x13d30
movq (%rax), %rdi
callq 0xdc10
testb $0x1, %al
jne 0x11d26
jmp 0x11d6c
movq -0x10(%rbp), %rax
addq $0x50, %rax
movq %rax, -0x420(%rbp)
movq -0x10(%rbp), %rdi
addq $0x68, %rdi
movslq -0x218(%rbp), %rsi
callq 0x13fa0
movq -0x420(%rbp), %rdi
movslq (%rax), %rsi
callq 0x13d30
movq (%rax), %rdi
leaq -0x214(%rbp), %rsi
callq 0xdc50
jmp 0x11cd2
movq -0x10(%rbp), %rax
addq $0x50, %rax
movq %rax, -0x438(%rbp)
movq -0x10(%rbp), %rdi
addq $0x68, %rdi
movslq -0x218(%rbp), %rsi
callq 0x13fa0
movq -0x438(%rbp), %rdi
movslq (%rax), %rsi
callq 0x13d30
movq (%rax), %rdi
callq 0xdbb0
addl -0x214(%rbp), %eax
movl %eax, -0x214(%rbp)
movq -0x10(%rbp), %rax
addq $0x50, %rax
movq %rax, -0x430(%rbp)
movq -0x10(%rbp), %rdi
addq $0x50, %rdi
callq 0x13a50
movq %rax, -0x230(%rbp)
movq -0x10(%rbp), %rdi
addq $0x68, %rdi
movslq -0x218(%rbp), %rsi
callq 0x13fa0
movslq (%rax), %rsi
leaq -0x230(%rbp), %rdi
callq 0x14170
movq %rax, -0x228(%rbp)
leaq -0x220(%rbp), %rdi
leaq -0x228(%rbp), %rsi
callq 0x141b0
movq -0x430(%rbp), %rdi
movq -0x220(%rbp), %rsi
callq 0x14100
movq %rax, -0x238(%rbp)
movq -0x10(%rbp), %rdi
movl -0x218(%rbp), %esi
callq 0x10ad0
movq -0x10(%rbp), %rax
addq $0x68, %rax
movq %rax, -0x428(%rbp)
movq -0x10(%rbp), %rdi
addq $0x68, %rdi
callq 0x14260
movq %rax, -0x250(%rbp)
movslq -0x218(%rbp), %rsi
leaq -0x250(%rbp), %rdi
callq 0x14290
movq %rax, -0x248(%rbp)
leaq -0x240(%rbp), %rdi
leaq -0x248(%rbp), %rsi
callq 0x142d0
movq -0x428(%rbp), %rdi
movq -0x240(%rbp), %rsi
callq 0x141f0
movq %rax, -0x258(%rbp)
movl -0x218(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0x218(%rbp)
movslq -0x218(%rbp), %rax
movq %rax, -0x440(%rbp)
movq -0x10(%rbp), %rdi
addq $0x50, %rdi
callq 0x13930
movq %rax, %rcx
movq -0x440(%rbp), %rax
cmpq %rcx, %rax
jne 0x11ee0
jmp 0x11ef4
movl -0x218(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x218(%rbp)
jmp 0x11cd2
movq 0x130d5(%rip), %rdi     # 0x24fd0
leaq 0x7057(%rip), %rsi      # 0x18f59
callq 0x4200
movq %rax, %rdi
movq 0x130af(%rip), %rsi     # 0x24fc0
callq 0x4230
movq %rax, %rdi
leaq 0x7074(%rip), %rsi      # 0x18f94
callq 0x4200
movq %rax, %rdi
movq 0x13091(%rip), %rsi     # 0x24fc0
callq 0x4230
movq %rax, %rdi
leaq 0x7244(%rip), %rsi      # 0x19182
callq 0x4200
movq %rax, %rdi
movq 0x13073(%rip), %rsi     # 0x24fc0
callq 0x4230
movq %rax, %rdi
leaq 0x724c(%rip), %rsi      # 0x191a8
callq 0x4200
movq %rax, %rdi
movq 0x13055(%rip), %rsi     # 0x24fc0
callq 0x4230
movq %rax, %rdi
leaq 0x71c8(%rip), %rsi      # 0x19142
callq 0x4200
movq %rax, %rdi
movq 0x13037(%rip), %rsi     # 0x24fc0
callq 0x4230
jmp 0x11f90
movq 0x13039(%rip), %rdi     # 0x24fd0
leaq 0x727a(%rip), %rsi      # 0x19218
callq 0x4200
movq %rax, %rdi
movq 0x13013(%rip), %rsi     # 0x24fc0
callq 0x4230
movl $0x0, -0x25c(%rbp)
movq -0x2f8(%rbp), %rdi
movslq -0x25c(%rbp), %rax
movq %rax, -0x448(%rbp)
addq $0x68, %rdi
callq 0x13f80
movq %rax, %rcx
movq -0x448(%rbp), %rax
cmpq %rcx, %rax
jae 0x121cc
movq -0x2f8(%rbp), %rdi
movq %rdi, %rax
addq $0x50, %rax
movq %rax, -0x458(%rbp)
addq $0x68, %rdi
movslq -0x25c(%rbp), %rsi
callq 0x13fa0
movq -0x458(%rbp), %rdi
movslq (%rax), %rsi
callq 0x13d30
movq (%rax), %rdi
callq 0xde00
movq -0x2f8(%rbp), %rdi
movq %rdi, %rax
addq $0x50, %rax
movq %rax, -0x450(%rbp)
addq $0x68, %rdi
movslq -0x25c(%rbp), %rsi
callq 0x13fa0
movq -0x450(%rbp), %rdi
movslq (%rax), %rsi
callq 0x13d30
movq (%rax), %rdi
callq 0xdbf0
cmpl $0x0, %eax
jne 0x121b6
movq -0x2f8(%rbp), %rdi
movq %rdi, %rax
addq $0x50, %rax
movq %rax, -0x470(%rbp)
addq $0x68, %rdi
movslq -0x25c(%rbp), %rsi
callq 0x13fa0
movq -0x470(%rbp), %rdi
movslq (%rax), %rsi
callq 0x13d30
movq (%rax), %rdi
callq 0xde20
movq -0x2f8(%rbp), %rdi
movq %rdi, %rax
addq $0x50, %rax
movq %rax, -0x468(%rbp)
addq $0x50, %rdi
callq 0x13a50
movq -0x2f8(%rbp), %rdi
movq %rax, -0x278(%rbp)
addq $0x68, %rdi
movslq -0x25c(%rbp), %rsi
callq 0x13fa0
movslq (%rax), %rsi
leaq -0x278(%rbp), %rdi
callq 0x14170
movq %rax, -0x270(%rbp)
leaq -0x268(%rbp), %rdi
leaq -0x270(%rbp), %rsi
callq 0x141b0
movq -0x468(%rbp), %rdi
movq -0x268(%rbp), %rsi
callq 0x14100
movq -0x2f8(%rbp), %rdi
movq %rax, -0x280(%rbp)
movl -0x25c(%rbp), %esi
callq 0x10ad0
movq -0x2f8(%rbp), %rdi
movq %rdi, %rax
addq $0x68, %rax
movq %rax, -0x460(%rbp)
addq $0x68, %rdi
callq 0x14260
movq %rax, -0x298(%rbp)
movslq -0x25c(%rbp), %rsi
leaq -0x298(%rbp), %rdi
callq 0x14290
movq %rax, -0x290(%rbp)
leaq -0x288(%rbp), %rdi
leaq -0x290(%rbp), %rsi
callq 0x142d0
movq -0x460(%rbp), %rdi
movq -0x288(%rbp), %rsi
callq 0x141f0
movq %rax, -0x2a0(%rbp)
movl -0x25c(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0x25c(%rbp)
jmp 0x121b8
movl -0x25c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x25c(%rbp)
jmp 0x11fbc
movl $0x0, -0x2a4(%rbp)
movslq -0x2a4(%rbp), %rax
movq %rax, -0x478(%rbp)
movq -0x10(%rbp), %rdi
addq $0x68, %rdi
callq 0x13f80
movq %rax, %rcx
movq -0x478(%rbp), %rax
cmpq %rcx, %rax
jae 0x123d3
movq -0x10(%rbp), %rax
addq $0x50, %rax
movq %rax, -0x488(%rbp)
movq -0x10(%rbp), %rdi
addq $0x68, %rdi
movslq -0x2a4(%rbp), %rsi
callq 0x13fa0
movq -0x488(%rbp), %rdi
movslq (%rax), %rsi
callq 0x13d30
movq (%rax), %rdi
callq 0xde00
movq -0x10(%rbp), %rax
addq $0x50, %rax
movq %rax, -0x480(%rbp)
movq -0x10(%rbp), %rdi
addq $0x68, %rdi
movslq -0x2a4(%rbp), %rsi
callq 0x13fa0
movq -0x480(%rbp), %rdi
movslq (%rax), %rsi
callq 0x13d30
movq (%rax), %rdi
callq 0xdbf0
cmpl $0x0, %eax
jne 0x123bd
movq -0x10(%rbp), %rax
addq $0x50, %rax
movq %rax, -0x4a0(%rbp)
movq -0x10(%rbp), %rdi
addq $0x68, %rdi
movslq -0x2a4(%rbp), %rsi
callq 0x13fa0
movq -0x4a0(%rbp), %rdi
movslq (%rax), %rsi
callq 0x13d30
movq (%rax), %rdi
callq 0xde20
movq -0x10(%rbp), %rax
addq $0x50, %rax
movq %rax, -0x498(%rbp)
movq -0x10(%rbp), %rdi
addq $0x50, %rdi
callq 0x13a50
movq %rax, -0x2c0(%rbp)
movq -0x10(%rbp), %rdi
addq $0x68, %rdi
movslq -0x2a4(%rbp), %rsi
callq 0x13fa0
movslq (%rax), %rsi
leaq -0x2c0(%rbp), %rdi
callq 0x14170
movq %rax, -0x2b8(%rbp)
leaq -0x2b0(%rbp), %rdi
leaq -0x2b8(%rbp), %rsi
callq 0x141b0
movq -0x498(%rbp), %rdi
movq -0x2b0(%rbp), %rsi
callq 0x14100
movq %rax, -0x2c8(%rbp)
movq -0x10(%rbp), %rdi
movl -0x2a4(%rbp), %esi
callq 0x10ad0
movq -0x10(%rbp), %rax
addq $0x68, %rax
movq %rax, -0x490(%rbp)
movq -0x10(%rbp), %rdi
addq $0x68, %rdi
callq 0x14260
movq %rax, -0x2e0(%rbp)
movslq -0x2a4(%rbp), %rsi
leaq -0x2e0(%rbp), %rdi
callq 0x14290
movq %rax, -0x2d8(%rbp)
leaq -0x2d0(%rbp), %rdi
leaq -0x2d8(%rbp), %rsi
callq 0x142d0
movq -0x490(%rbp), %rdi
movq -0x2d0(%rbp), %rsi
callq 0x141f0
movq %rax, -0x2e8(%rbp)
movl -0x2a4(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0x2a4(%rbp)
jmp 0x123bf
movl -0x2a4(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x2a4(%rbp)
jmp 0x121d6
jmp 0x123d5
movq 0x12bf4(%rip), %rdi     # 0x24fd0
leaq 0x6e64(%rip), %rsi      # 0x19247
callq 0x4200
movq -0x2f8(%rbp), %rsi
movq %rax, %rdi
addq $0xa8, %rsi
callq 0x41d0
movq %rax, %rdi
leaq 0x6e46(%rip), %rsi      # 0x1924e
callq 0x4200
movq %rax, %rdi
movq 0x12ba9(%rip), %rsi     # 0x24fc0
callq 0x4230
movq -0x2f8(%rbp), %rdi
callq 0x12480
movq 0x12ba1(%rip), %rdi     # 0x24fd0
leaq 0x6e11(%rip), %rsi      # 0x19247
callq 0x4200
movq %rax, %rdi
movq -0x10(%rbp), %rsi
addq $0xa8, %rsi
callq 0x41d0
movq %rax, %rdi
leaq 0x6e00(%rip), %rsi      # 0x19258
callq 0x4200
movq %rax, %rdi
movq 0x12b59(%rip), %rsi     # 0x24fc0
callq 0x4230
movq -0x10(%rbp), %rdi
callq 0x12480
addq $0x4a0, %rsp            # imm = 0x4A0
popq %rbp
retq
nop