// File: Doug0855[P]TigerZone/Board.cpp
// Function: Board::buildJungle(Structure*, Tile*, std::vector<std::vector<Block, std::allocator<Block>>, std::allocator<std::vector<Block, std::allocator<Block>>>>&, std::pair<int, int>, std::vector<Tile*, std::allocator<Tile*>>&)
void Board::buildJungle(Structure* struc, Tile *tile, std::vector< std::vector<Block> >& tileBlocks, std::pair<int,int> blockSpot, std::vector<Tile*> &visitedTiles) {
	int row = blockSpot.first;
	int col = blockSpot.second;
	//debugging std::cout<<"in build jungle at "<<row<<' '<<col<<std::endl;
	tileBlocks[row][col].visit();

	struc->structureBlocks.push_back(tileBlocks[row][col]);

	if(tileBlocks[row][col].hasMeeple())
		struc->hasMeeple = true;

	bool addedTileAnimals = false;
	for(int i = 0; i < visitedTiles.size(); i++) {
			if(visitedTiles[i] == tile)
			{
				addedTileAnimals = true;
				//debugging std::cout<<"Added animals already for this tile"<<std::endl;
			}
	}
	if(!addedTileAnimals) {
		struc->checkAnimals(tile);
	}

	if(tileBlocks[row][col].getType() == "mixed") {
		int trailFaces = 0;
		// Determine how many faces are trail faces. If there's only 1 than we know the mixed blocks don't connect within the tile
		// Otherwise we know that the mixed blocks connect to form only 1 jungle rather than 2
		if(tile->getUpFace()->getType() == "trail")
			trailFaces++;
		if(tile->getDownFace()->getType() == "trail")
			trailFaces++;
		if(tile->getRightFace()->getType() == "trail")
			trailFaces++;
		if(tile->getLeftFace()->getType() == "trail")
			trailFaces++;

		if(trailFaces > 0) {
			if(trailFaces != 1) {
				for(int i = 0; i < 3; i++) {
					for(int j = 0; j < 3; j++) {
						if(tileBlocks[i][j].getType() == "mixed" && !(tileBlocks[i][j].isVisited()))
							buildJungle(struc, tile, tileBlocks, std::pair<int,int>(i,j), visitedTiles);
					}
				}
			}
		}

	}

	// Check tiles above, below, left, and right of the current block to see if lake structure continues
	// std::cout<<"about to cehck row+1"<<std::endl;
	if((row + 1) <= 2 && !(tileBlocks[row + 1][col].isVisited()) &&
		(tileBlocks[row+1][col].getType() == "jungle" || tileBlocks[row+1][col].getType() == "mixed")) {
		buildJungle(struc, tile, tileBlocks, std::pair<int,int>(row+1,col), visitedTiles);
	}
	else if(row + 1 > 2 && tile->getDownTile() != NULL) {
		bool visitedNeighborTile = false;
		for(int i = 0; i < visitedTiles.size(); i++) {
			if(visitedTiles[i] == tile->getDownTile())
				visitedNeighborTile = true;
		}
		if(!visitedNeighborTile && tile->getDownTile()->getUpFaceType()!= "lake") {
			visitedTiles.push_back(tile->getDownTile());
			std::vector< std::vector<Block> > newBlocks = tile->getDownTile()->getInnerBlocks();
			buildJungle(struc, tile->getDownTile(), newBlocks, std::pair<int,int>(row-2,col), visitedTiles);
		}
	}
	// std::cout<<"about to check row-1"<<std::endl;
	if((row - 1) >= 0 && !(tileBlocks[row - 1][col].isVisited()) &&
		(tileBlocks[row - 1][col].getType() == "jungle" || tileBlocks[row-1][col].getType() == "mixed")) {
		buildJungle(struc, tile, tileBlocks, std::pair<int,int>(row-1,col), visitedTiles);
	}
	else if(row-1 < 0 && tile->getUpTile() != NULL) {
		bool visitedNeighborTile = false;
		for(int i = 0; i < visitedTiles.size(); i++) {
			if(visitedTiles[i] == tile->getUpTile())
				visitedNeighborTile = true;
		}
		if (!visitedNeighborTile && tile->getUpTile()->getDownFaceType() != "lake") {
			visitedTiles.push_back(tile->getUpTile());
			std::vector< std::vector<Block> > newBlocks = tile->getUpTile()->getInnerBlocks();
			buildJungle(struc, tile->getUpTile(), newBlocks, std::pair<int,int>(row+2,col), visitedTiles);
		}
	}
	// std::cout<<"about to check col+1"<<std::endl;
	if((col + 1) <= 2 && !(tileBlocks[row][col + 1].isVisited()) &&
		(tileBlocks[row][col + 1].getType() == "jungle" || tileBlocks[row][col+1].getType() == "mixed")) {
		buildJungle(struc, tile, tileBlocks, std::pair<int,int>(row,col+1), visitedTiles);
	}
	else if(col+1 > 2 && tile->getRightTile() != NULL) {
		bool visitedNeighborTile = false;
		for(int i = 0; i < visitedTiles.size(); i++) {
			if(visitedTiles[i] == tile->getRightTile())
				visitedNeighborTile = true;
		}
		if (!visitedNeighborTile && tile->getRightTile()->getLeftFaceType() != "lake") {
			visitedTiles.push_back(tile->getRightTile());
			std::vector< std::vector<Block> > newBlocks = tile->getRightTile()->getInnerBlocks();
			buildJungle(struc, tile->getRightTile(), newBlocks, std::pair<int,int>(row,col-2), visitedTiles);
		}
	}
	// std::cout<<"about to check col-1"<<std::endl;
	if((col - 1) >= 0 && !(tileBlocks[row][col-1].isVisited()) &&
		(tileBlocks[row][col - 1].getType() == "jungle" ||	 tileBlocks[row][col-1].getType() == "mixed")) {
		// std::cout<<"passing col-1"<<std::endl;
		buildJungle(struc, tile, tileBlocks, std::pair<int,int>(row,col-1), visitedTiles);
	}
	else if(col-1 < 0 && tile->getLeftTile() != NULL) {
		bool visitedNeighborTile = false;
		for(int i = 0; i < visitedTiles.size(); i++) {
			if(visitedTiles[i] == tile->getLeftTile())
				visitedNeighborTile = true;
		}
		if (!visitedNeighborTile && tile->getLeftTile()->getRightFaceType() != "lake") {
			visitedTiles.push_back(tile->getLeftTile());
			std::vector< std::vector<Block> > newBlocks = tile->getLeftTile()->getInnerBlocks();
			buildJungle(struc, tile->getLeftTile(), newBlocks, std::pair<int,int>(row,col+2), visitedTiles);
		}
	}
	return;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x660, %rsp            # imm = 0x660
movq %r8, -0x8(%rbp)
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq %rdx, -0x20(%rbp)
movq %rcx, -0x28(%rbp)
movq %r9, -0x30(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x410(%rbp)
movl -0x8(%rbp), %eax
movl %eax, -0x34(%rbp)
movl -0x4(%rbp), %eax
movl %eax, -0x38(%rbp)
movq -0x28(%rbp), %rdi
movslq -0x34(%rbp), %rsi
callq 0x17390
movq %rax, %rdi
movslq -0x38(%rbp), %rsi
callq 0x173b0
movq %rax, %rdi
callq 0x20580
movq -0x18(%rbp), %rax
addq $0x28, %rax
movq %rax, -0x408(%rbp)
movq -0x28(%rbp), %rdi
movslq -0x34(%rbp), %rsi
callq 0x17390
movq %rax, %rdi
movslq -0x38(%rbp), %rsi
callq 0x173b0
movq -0x408(%rbp), %rdi
movq %rax, %rsi
callq 0x205a0
movq -0x28(%rbp), %rdi
movslq -0x34(%rbp), %rsi
callq 0x17390
movq %rax, %rdi
movslq -0x38(%rbp), %rsi
callq 0x173b0
movq %rax, %rdi
callq 0x20610
testb $0x1, %al
jne 0x1c949
jmp 0x1c951
movq -0x18(%rbp), %rax
movb $0x1, 0x50(%rax)
movb $0x0, -0x39(%rbp)
movl $0x0, -0x40(%rbp)
movslq -0x40(%rbp), %rax
movq %rax, -0x418(%rbp)
movq -0x30(%rbp), %rdi
callq 0x81f0
movq %rax, %rcx
movq -0x418(%rbp), %rax
cmpq %rcx, %rax
jae 0x1c9a6
movq -0x30(%rbp), %rdi
movslq -0x40(%rbp), %rsi
callq 0x8230
movq (%rax), %rax
cmpq -0x20(%rbp), %rax
jne 0x1c999
movb $0x1, -0x39(%rbp)
jmp 0x1c99b
movl -0x40(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x40(%rbp)
jmp 0x1c95c
testb $0x1, -0x39(%rbp)
jne 0x1c9b9
movq -0x18(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0x28760
movq -0x28(%rbp), %rdi
movslq -0x34(%rbp), %rsi
callq 0x17390
movq %rax, %rdi
movslq -0x38(%rbp), %rsi
callq 0x173b0
movq %rax, %rsi
leaq -0x60(%rbp), %rdi
movq %rdi, -0x428(%rbp)
callq 0x15490
movq -0x428(%rbp), %rdi
leaq 0xcd9d(%rip), %rsi      # 0x29790
callq 0x85b0
movb %al, -0x419(%rbp)
jmp 0x1ca00
leaq -0x60(%rbp), %rdi
callq 0x3210
movb -0x419(%rbp), %al
testb $0x1, %al
jne 0x1ca18
jmp 0x1cde4
movl $0x0, -0x70(%rbp)
movq -0x20(%rbp), %rdi
callq 0x203a0
movq %rax, %rsi
leaq -0x90(%rbp), %rdi
movq %rdi, -0x438(%rbp)
callq 0x204b0
movq -0x438(%rbp), %rdi
leaq 0xcc67(%rip), %rsi      # 0x296b3
callq 0x85b0
movb %al, -0x429(%rbp)
jmp 0x1ca59
leaq -0x90(%rbp), %rdi
callq 0x3210
movb -0x429(%rbp), %al
testb $0x1, %al
jne 0x1ca71
jmp 0x1cab3
movl -0x70(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x70(%rbp)
jmp 0x1cab3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x60(%rbp), %rdi
callq 0x3210
jmp 0x1e017
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x90(%rbp), %rdi
callq 0x3210
jmp 0x1e017
movq -0x20(%rbp), %rdi
callq 0x203c0
movq %rax, %rsi
leaq -0xb0(%rbp), %rdi
movq %rdi, -0x448(%rbp)
callq 0x204b0
movq -0x448(%rbp), %rdi
leaq 0xcbd3(%rip), %rsi      # 0x296b3
callq 0x85b0
movb %al, -0x439(%rbp)
jmp 0x1caed
leaq -0xb0(%rbp), %rdi
callq 0x3210
movb -0x439(%rbp), %al
testb $0x1, %al
jne 0x1cb05
jmp 0x1cb2d
movl -0x70(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x70(%rbp)
jmp 0x1cb2d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0xb0(%rbp), %rdi
callq 0x3210
jmp 0x1e017
movq -0x20(%rbp), %rdi
callq 0x203e0
movq %rax, %rsi
leaq -0xd0(%rbp), %rdi
movq %rdi, -0x458(%rbp)
callq 0x204b0
movq -0x458(%rbp), %rdi
leaq 0xcb59(%rip), %rsi      # 0x296b3
callq 0x85b0
movb %al, -0x449(%rbp)
jmp 0x1cb67
leaq -0xd0(%rbp), %rdi
callq 0x3210
movb -0x449(%rbp), %al
testb $0x1, %al
jne 0x1cb7f
jmp 0x1cba7
movl -0x70(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x70(%rbp)
jmp 0x1cba7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0xd0(%rbp), %rdi
callq 0x3210
jmp 0x1e017
movq -0x20(%rbp), %rdi
callq 0x20400
movq %rax, %rsi
leaq -0xf0(%rbp), %rdi
movq %rdi, -0x468(%rbp)
callq 0x204b0
movq -0x468(%rbp), %rdi
leaq 0xcadf(%rip), %rsi      # 0x296b3
callq 0x85b0
movb %al, -0x459(%rbp)
jmp 0x1cbe1
leaq -0xf0(%rbp), %rdi
callq 0x3210
movb -0x459(%rbp), %al
testb $0x1, %al
jne 0x1cbf9
jmp 0x1cc21
movl -0x70(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x70(%rbp)
jmp 0x1cc21
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0xf0(%rbp), %rdi
callq 0x3210
jmp 0x1e017
cmpl $0x0, -0x70(%rbp)
jle 0x1cde2
cmpl $0x1, -0x70(%rbp)
je 0x1cde0
movl $0x0, -0xf4(%rbp)
cmpl $0x3, -0xf4(%rbp)
jge 0x1cdde
movl $0x0, -0xf8(%rbp)
cmpl $0x3, -0xf8(%rbp)
jge 0x1cdc8
movq -0x28(%rbp), %rdi
movslq -0xf4(%rbp), %rsi
callq 0x17390
movq %rax, %rdi
movslq -0xf8(%rbp), %rsi
callq 0x173b0
movq %rax, %rsi
leaq -0x118(%rbp), %rdi
movq %rdi, -0x478(%rbp)
callq 0x15490
movq -0x478(%rbp), %rdi
leaq 0xcaea(%rip), %rsi      # 0x29790
callq 0x85b0
movb %al, -0x469(%rbp)
jmp 0x1ccb3
movb -0x469(%rbp), %cl
xorl %eax, %eax
testb $0x1, %cl
movb %al, -0x479(%rbp)
jne 0x1ccc8
jmp 0x1cd05
movq -0x28(%rbp), %rdi
movslq -0xf4(%rbp), %rsi
callq 0x17390
movq %rax, %rdi
movslq -0xf8(%rbp), %rsi
callq 0x173b0
movq %rax, %rdi
callq 0x20630
movb %al, -0x47a(%rbp)
jmp 0x1ccf7
movb -0x47a(%rbp), %al
xorb $-0x1, %al
movb %al, -0x479(%rbp)
movb -0x479(%rbp), %al
movb %al, -0x47b(%rbp)
leaq -0x118(%rbp), %rdi
callq 0x3210
movb -0x47b(%rbp), %al
testb $0x1, %al
jne 0x1cd2c
jmp 0x1cdb2
movq -0x18(%rbp), %rax
movq %rax, -0x498(%rbp)
movq -0x20(%rbp), %rax
movq %rax, -0x490(%rbp)
movq -0x28(%rbp), %rax
movq %rax, -0x488(%rbp)
leaq -0x120(%rbp), %rdi
leaq -0xf4(%rbp), %rsi
leaq -0xf8(%rbp), %rdx
callq 0x119c0
movq -0x410(%rbp), %rdi
movq -0x498(%rbp), %rsi
movq -0x490(%rbp), %rdx
movq -0x488(%rbp), %rcx
movq -0x30(%rbp), %r9
movq -0x120(%rbp), %r8
callq 0x1c890
jmp 0x1cdb2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x118(%rbp), %rdi
callq 0x3210
jmp 0x1e017
jmp 0x1cdb4
movl -0xf8(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xf8(%rbp)
jmp 0x1cc56
jmp 0x1cdca
movl -0xf4(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xf4(%rbp)
jmp 0x1cc3f
jmp 0x1cde0
jmp 0x1cde2
jmp 0x1cde4
movl -0x34(%rbp), %ecx
addl $0x1, %ecx
movb $0x0, -0x141(%rbp)
movb $0x0, -0x169(%rbp)
xorl %eax, %eax
cmpl $0x2, %ecx
movb %al, -0x499(%rbp)
jg 0x1cf16
movq -0x28(%rbp), %rdi
movl -0x34(%rbp), %eax
addl $0x1, %eax
movslq %eax, %rsi
callq 0x17390
movq %rax, %rdi
movslq -0x38(%rbp), %rsi
callq 0x173b0
movq %rax, %rdi
callq 0x20630
movb %al, %cl
xorl %eax, %eax
testb $0x1, %cl
movb %al, -0x499(%rbp)
jne 0x1cf16
movq -0x28(%rbp), %rdi
movl -0x34(%rbp), %eax
incl %eax
movslq %eax, %rsi
callq 0x17390
movq %rax, %rdi
movslq -0x38(%rbp), %rsi
callq 0x173b0
movq %rax, %rsi
leaq -0x140(%rbp), %rdi
movq %rdi, -0x4a8(%rbp)
callq 0x15490
movq -0x4a8(%rbp), %rdi
movb $0x1, -0x141(%rbp)
leaq 0xc81d(%rip), %rsi      # 0x296a7
callq 0x85b0
movb %al, -0x49a(%rbp)
jmp 0x1ce97
movb -0x49a(%rbp), %cl
movb $0x1, %al
testb $0x1, %cl
movb %al, -0x4a9(%rbp)
jne 0x1cf0a
jmp 0x1ceac
movq -0x28(%rbp), %rdi
movl -0x34(%rbp), %eax
incl %eax
movslq %eax, %rsi
callq 0x17390
movq %rax, %rdi
movslq -0x38(%rbp), %rsi
callq 0x173b0
movq %rax, %rsi
leaq -0x168(%rbp), %rdi
callq 0x15490
jmp 0x1ceda
movb $0x1, -0x169(%rbp)
leaq 0xc8a8(%rip), %rsi      # 0x29790
leaq -0x168(%rbp), %rdi
callq 0x85b0
movb %al, -0x4aa(%rbp)
jmp 0x1cefc
movb -0x4aa(%rbp), %al
movb %al, -0x4a9(%rbp)
jmp 0x1cf0a
movb -0x4a9(%rbp), %al
movb %al, -0x499(%rbp)
movb -0x499(%rbp), %al
movb %al, -0x4ab(%rbp)
testb $0x1, -0x169(%rbp)
jne 0x1cf2d
jmp 0x1cf39
leaq -0x168(%rbp), %rdi
callq 0x3210
testb $0x1, -0x141(%rbp)
jne 0x1cf44
jmp 0x1cf50
leaq -0x140(%rbp), %rdi
callq 0x3210
movb -0x4ab(%rbp), %al
testb $0x1, %al
jne 0x1cf5f
jmp 0x1d023
movq -0x18(%rbp), %rax
movq %rax, -0x4c8(%rbp)
movq -0x20(%rbp), %rax
movq %rax, -0x4c0(%rbp)
movq -0x28(%rbp), %rax
movq %rax, -0x4b8(%rbp)
movl -0x34(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x178(%rbp)
leaq -0x174(%rbp), %rdi
leaq -0x178(%rbp), %rsi
leaq -0x38(%rbp), %rdx
callq 0x20450
movq -0x410(%rbp), %rdi
movq -0x4c8(%rbp), %rsi
movq -0x4c0(%rbp), %rdx
movq -0x4b8(%rbp), %rcx
movq -0x30(%rbp), %r9
movq -0x174(%rbp), %r8
callq 0x1c890
jmp 0x1d270
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x1d007
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
testb $0x1, -0x169(%rbp)
jne 0x1cff9
jmp 0x1d005
leaq -0x168(%rbp), %rdi
callq 0x3210
jmp 0x1d007
testb $0x1, -0x141(%rbp)
jne 0x1d012
jmp 0x1d01e
leaq -0x140(%rbp), %rdi
callq 0x3210
jmp 0x1e017
movl -0x34(%rbp), %eax
addl $0x1, %eax
cmpl $0x2, %eax
jle 0x1d26e
movq -0x20(%rbp), %rdi
callq 0x20650
cmpq $0x0, %rax
je 0x1d26e
movb $0x0, -0x179(%rbp)
movl $0x0, -0x180(%rbp)
movslq -0x180(%rbp), %rax
movq %rax, -0x4d0(%rbp)
movq -0x30(%rbp), %rdi
callq 0x81f0
movq %rax, %rcx
movq -0x4d0(%rbp), %rax
cmpq %rcx, %rax
jae 0x1d0c8
movq -0x30(%rbp), %rdi
movslq -0x180(%rbp), %rsi
callq 0x8230
movq (%rax), %rax
movq %rax, -0x4d8(%rbp)
movq -0x20(%rbp), %rdi
callq 0x20650
movq %rax, %rcx
movq -0x4d8(%rbp), %rax
cmpq %rcx, %rax
jne 0x1d0b5
movb $0x1, -0x179(%rbp)
jmp 0x1d0b7
movl -0x180(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x180(%rbp)
jmp 0x1d056
movb -0x179(%rbp), %cl
movb $0x0, -0x1a1(%rbp)
xorl %eax, %eax
testb $0x1, %cl
movb %al, -0x4d9(%rbp)
jne 0x1d131
movq -0x20(%rbp), %rdi
callq 0x20650
movq %rax, %rsi
leaq -0x1a0(%rbp), %rdi
movq %rdi, -0x4e8(%rbp)
callq 0x20670
movq -0x4e8(%rbp), %rdi
movb $0x1, -0x1a1(%rbp)
leaq 0xc598(%rip), %rsi      # 0x296ae
callq 0x8ce0
movb %al, -0x4da(%rbp)
jmp 0x1d123
movb -0x4da(%rbp), %al
movb %al, -0x4d9(%rbp)
jmp 0x1d131
movb -0x4d9(%rbp), %al
movb %al, -0x4e9(%rbp)
testb $0x1, -0x1a1(%rbp)
jne 0x1d148
jmp 0x1d154
leaq -0x1a0(%rbp), %rdi
callq 0x3210
movb -0x4e9(%rbp), %al
testb $0x1, %al
jne 0x1d163
jmp 0x1d26c
movq -0x30(%rbp), %rax
movq %rax, -0x508(%rbp)
movq -0x20(%rbp), %rdi
callq 0x20650
movq -0x508(%rbp), %rdi
movq %rax, -0x1b0(%rbp)
leaq -0x1b0(%rbp), %rsi
callq 0x206a0
movq -0x20(%rbp), %rdi
callq 0x20650
movq %rax, %rsi
leaq -0x1c8(%rbp), %rdi
callq 0x206d0
movq -0x18(%rbp), %rax
movq %rax, -0x500(%rbp)
movq -0x20(%rbp), %rdi
callq 0x20650
movq %rax, -0x4f8(%rbp)
jmp 0x1d1c6
movl -0x34(%rbp), %eax
addl $-0x2, %eax
movl %eax, -0x1d4(%rbp)
leaq -0x1d0(%rbp), %rdi
leaq -0x1d4(%rbp), %rsi
leaq -0x38(%rbp), %rdx
callq 0x20450
jmp 0x1d1eb
movq -0x4f8(%rbp), %rdx
movq -0x500(%rbp), %rsi
movq -0x410(%rbp), %rdi
movq -0x30(%rbp), %r9
movq -0x1d0(%rbp), %r8
leaq -0x1c8(%rbp), %rcx
callq 0x1c890
jmp 0x1d219
leaq -0x1c8(%rbp), %rdi
callq 0x20710
jmp 0x1d26c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
testb $0x1, -0x1a1(%rbp)
jne 0x1d23e
jmp 0x1d24a
leaq -0x1a0(%rbp), %rdi
callq 0x3210
jmp 0x1e017
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x1c8(%rbp), %rdi
callq 0x20710
jmp 0x1e017
jmp 0x1d26e
jmp 0x1d270
movl -0x34(%rbp), %ecx
subl $0x1, %ecx
movb $0x0, -0x1f9(%rbp)
movb $0x0, -0x221(%rbp)
xorl %eax, %eax
cmpl $0x0, %ecx
movb %al, -0x509(%rbp)
jl 0x1d3a2
movq -0x28(%rbp), %rdi
movl -0x34(%rbp), %eax
subl $0x1, %eax
movslq %eax, %rsi
callq 0x17390
movq %rax, %rdi
movslq -0x38(%rbp), %rsi
callq 0x173b0
movq %rax, %rdi
callq 0x20630
movb %al, %cl
xorl %eax, %eax
testb $0x1, %cl
movb %al, -0x509(%rbp)
jne 0x1d3a2
movq -0x28(%rbp), %rdi
movl -0x34(%rbp), %eax
decl %eax
movslq %eax, %rsi
callq 0x17390
movq %rax, %rdi
movslq -0x38(%rbp), %rsi
callq 0x173b0
movq %rax, %rsi
leaq -0x1f8(%rbp), %rdi
movq %rdi, -0x518(%rbp)
callq 0x15490
movq -0x518(%rbp), %rdi
movb $0x1, -0x1f9(%rbp)
leaq 0xc391(%rip), %rsi      # 0x296a7
callq 0x85b0
movb %al, -0x50a(%rbp)
jmp 0x1d323
movb -0x50a(%rbp), %cl
movb $0x1, %al
testb $0x1, %cl
movb %al, -0x519(%rbp)
jne 0x1d396
jmp 0x1d338
movq -0x28(%rbp), %rdi
movl -0x34(%rbp), %eax
decl %eax
movslq %eax, %rsi
callq 0x17390
movq %rax, %rdi
movslq -0x38(%rbp), %rsi
callq 0x173b0
movq %rax, %rsi
leaq -0x220(%rbp), %rdi
callq 0x15490
jmp 0x1d366
movb $0x1, -0x221(%rbp)
leaq 0xc41c(%rip), %rsi      # 0x29790
leaq -0x220(%rbp), %rdi
callq 0x85b0
movb %al, -0x51a(%rbp)
jmp 0x1d388
movb -0x51a(%rbp), %al
movb %al, -0x519(%rbp)
jmp 0x1d396
movb -0x519(%rbp), %al
movb %al, -0x509(%rbp)
movb -0x509(%rbp), %al
movb %al, -0x51b(%rbp)
testb $0x1, -0x221(%rbp)
jne 0x1d3b9
jmp 0x1d3c5
leaq -0x220(%rbp), %rdi
callq 0x3210
testb $0x1, -0x1f9(%rbp)
jne 0x1d3d0
jmp 0x1d3dc
leaq -0x1f8(%rbp), %rdi
callq 0x3210
movb -0x51b(%rbp), %al
testb $0x1, %al
jne 0x1d3eb
jmp 0x1d4af
movq -0x18(%rbp), %rax
movq %rax, -0x538(%rbp)
movq -0x20(%rbp), %rax
movq %rax, -0x530(%rbp)
movq -0x28(%rbp), %rax
movq %rax, -0x528(%rbp)
movl -0x34(%rbp), %eax
subl $0x1, %eax
movl %eax, -0x230(%rbp)
leaq -0x22c(%rbp), %rdi
leaq -0x230(%rbp), %rsi
leaq -0x38(%rbp), %rdx
callq 0x20450
movq -0x410(%rbp), %rdi
movq -0x538(%rbp), %rsi
movq -0x530(%rbp), %rdx
movq -0x528(%rbp), %rcx
movq -0x30(%rbp), %r9
movq -0x22c(%rbp), %r8
callq 0x1c890
jmp 0x1d6fc
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x1d493
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
testb $0x1, -0x221(%rbp)
jne 0x1d485
jmp 0x1d491
leaq -0x220(%rbp), %rdi
callq 0x3210
jmp 0x1d493
testb $0x1, -0x1f9(%rbp)
jne 0x1d49e
jmp 0x1d4aa
leaq -0x1f8(%rbp), %rdi
callq 0x3210
jmp 0x1e017
movl -0x34(%rbp), %eax
subl $0x1, %eax
cmpl $0x0, %eax
jge 0x1d6fa
movq -0x20(%rbp), %rdi
callq 0x20770
cmpq $0x0, %rax
je 0x1d6fa
movb $0x0, -0x231(%rbp)
movl $0x0, -0x238(%rbp)
movslq -0x238(%rbp), %rax
movq %rax, -0x540(%rbp)
movq -0x30(%rbp), %rdi
callq 0x81f0
movq %rax, %rcx
movq -0x540(%rbp), %rax
cmpq %rcx, %rax
jae 0x1d554
movq -0x30(%rbp), %rdi
movslq -0x238(%rbp), %rsi
callq 0x8230
movq (%rax), %rax
movq %rax, -0x548(%rbp)
movq -0x20(%rbp), %rdi
callq 0x20770
movq %rax, %rcx
movq -0x548(%rbp), %rax
cmpq %rcx, %rax
jne 0x1d541
movb $0x1, -0x231(%rbp)
jmp 0x1d543
movl -0x238(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x238(%rbp)
jmp 0x1d4e2
movb -0x231(%rbp), %cl
movb $0x0, -0x259(%rbp)
xorl %eax, %eax
testb $0x1, %cl
movb %al, -0x549(%rbp)
jne 0x1d5bd
movq -0x20(%rbp), %rdi
callq 0x20770
movq %rax, %rsi
leaq -0x258(%rbp), %rdi
movq %rdi, -0x558(%rbp)
callq 0x20790
movq -0x558(%rbp), %rdi
movb $0x1, -0x259(%rbp)
leaq 0xc10c(%rip), %rsi      # 0x296ae
callq 0x8ce0
movb %al, -0x54a(%rbp)
jmp 0x1d5af
movb -0x54a(%rbp), %al
movb %al, -0x549(%rbp)
jmp 0x1d5bd
movb -0x549(%rbp), %al
movb %al, -0x559(%rbp)
testb $0x1, -0x259(%rbp)
jne 0x1d5d4
jmp 0x1d5e0
leaq -0x258(%rbp), %rdi
callq 0x3210
movb -0x559(%rbp), %al
testb $0x1, %al
jne 0x1d5ef
jmp 0x1d6f8
movq -0x30(%rbp), %rax
movq %rax, -0x578(%rbp)
movq -0x20(%rbp), %rdi
callq 0x20770
movq -0x578(%rbp), %rdi
movq %rax, -0x268(%rbp)
leaq -0x268(%rbp), %rsi
callq 0x206a0
movq -0x20(%rbp), %rdi
callq 0x20770
movq %rax, %rsi
leaq -0x280(%rbp), %rdi
callq 0x206d0
movq -0x18(%rbp), %rax
movq %rax, -0x570(%rbp)
movq -0x20(%rbp), %rdi
callq 0x20770
movq %rax, -0x568(%rbp)
jmp 0x1d652
movl -0x34(%rbp), %eax
addl $0x2, %eax
movl %eax, -0x28c(%rbp)
leaq -0x288(%rbp), %rdi
leaq -0x28c(%rbp), %rsi
leaq -0x38(%rbp), %rdx
callq 0x20450
jmp 0x1d677
movq -0x568(%rbp), %rdx
movq -0x570(%rbp), %rsi
movq -0x410(%rbp), %rdi
movq -0x30(%rbp), %r9
movq -0x288(%rbp), %r8
leaq -0x280(%rbp), %rcx
callq 0x1c890
jmp 0x1d6a5
leaq -0x280(%rbp), %rdi
callq 0x20710
jmp 0x1d6f8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
testb $0x1, -0x259(%rbp)
jne 0x1d6ca
jmp 0x1d6d6
leaq -0x258(%rbp), %rdi
callq 0x3210
jmp 0x1e017
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x280(%rbp), %rdi
callq 0x20710
jmp 0x1e017
jmp 0x1d6fa
jmp 0x1d6fc
movl -0x38(%rbp), %ecx
addl $0x1, %ecx
movb $0x0, -0x2b1(%rbp)
movb $0x0, -0x2d9(%rbp)
xorl %eax, %eax
cmpl $0x2, %ecx
movb %al, -0x579(%rbp)
jg 0x1d82e
movq -0x28(%rbp), %rdi
movslq -0x34(%rbp), %rsi
callq 0x17390
movq %rax, %rdi
movl -0x38(%rbp), %eax
addl $0x1, %eax
movslq %eax, %rsi
callq 0x173b0
movq %rax, %rdi
callq 0x20630
movb %al, %cl
xorl %eax, %eax
testb $0x1, %cl
movb %al, -0x579(%rbp)
jne 0x1d82e
movq -0x28(%rbp), %rdi
movslq -0x34(%rbp), %rsi
callq 0x17390
movq %rax, %rdi
movl -0x38(%rbp), %eax
incl %eax
movslq %eax, %rsi
callq 0x173b0
movq %rax, %rsi
leaq -0x2b0(%rbp), %rdi
movq %rdi, -0x588(%rbp)
callq 0x15490
movq -0x588(%rbp), %rdi
movb $0x1, -0x2b1(%rbp)
leaq 0xbf05(%rip), %rsi      # 0x296a7
callq 0x85b0
movb %al, -0x57a(%rbp)
jmp 0x1d7af
movb -0x57a(%rbp), %cl
movb $0x1, %al
testb $0x1, %cl
movb %al, -0x589(%rbp)
jne 0x1d822
jmp 0x1d7c4
movq -0x28(%rbp), %rdi
movslq -0x34(%rbp), %rsi
callq 0x17390
movq %rax, %rdi
movl -0x38(%rbp), %eax
incl %eax
movslq %eax, %rsi
callq 0x173b0
movq %rax, %rsi
leaq -0x2d8(%rbp), %rdi
callq 0x15490
jmp 0x1d7f2
movb $0x1, -0x2d9(%rbp)
leaq 0xbf90(%rip), %rsi      # 0x29790
leaq -0x2d8(%rbp), %rdi
callq 0x85b0
movb %al, -0x58a(%rbp)
jmp 0x1d814
movb -0x58a(%rbp), %al
movb %al, -0x589(%rbp)
jmp 0x1d822
movb -0x589(%rbp), %al
movb %al, -0x579(%rbp)
movb -0x579(%rbp), %al
movb %al, -0x58b(%rbp)
testb $0x1, -0x2d9(%rbp)
jne 0x1d845
jmp 0x1d851
leaq -0x2d8(%rbp), %rdi
callq 0x3210
testb $0x1, -0x2b1(%rbp)
jne 0x1d85c
jmp 0x1d868
leaq -0x2b0(%rbp), %rdi
callq 0x3210
movb -0x58b(%rbp), %al
testb $0x1, %al
jne 0x1d877
jmp 0x1d93b
movq -0x18(%rbp), %rax
movq %rax, -0x5a8(%rbp)
movq -0x20(%rbp), %rax
movq %rax, -0x5a0(%rbp)
movq -0x28(%rbp), %rax
movq %rax, -0x598(%rbp)
movl -0x38(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x2e8(%rbp)
leaq -0x2e4(%rbp), %rdi
leaq -0x34(%rbp), %rsi
leaq -0x2e8(%rbp), %rdx
callq 0x20480
movq -0x410(%rbp), %rdi
movq -0x5a8(%rbp), %rsi
movq -0x5a0(%rbp), %rdx
movq -0x598(%rbp), %rcx
movq -0x30(%rbp), %r9
movq -0x2e4(%rbp), %r8
callq 0x1c890
jmp 0x1db88
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x1d91f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
testb $0x1, -0x2d9(%rbp)
jne 0x1d911
jmp 0x1d91d
leaq -0x2d8(%rbp), %rdi
callq 0x3210
jmp 0x1d91f
testb $0x1, -0x2b1(%rbp)
jne 0x1d92a
jmp 0x1d936
leaq -0x2b0(%rbp), %rdi
callq 0x3210
jmp 0x1e017
movl -0x38(%rbp), %eax
addl $0x1, %eax
cmpl $0x2, %eax
jle 0x1db86
movq -0x20(%rbp), %rdi
callq 0x207c0
cmpq $0x0, %rax
je 0x1db86
movb $0x0, -0x2e9(%rbp)
movl $0x0, -0x2f0(%rbp)
movslq -0x2f0(%rbp), %rax
movq %rax, -0x5b0(%rbp)
movq -0x30(%rbp), %rdi
callq 0x81f0
movq %rax, %rcx
movq -0x5b0(%rbp), %rax
cmpq %rcx, %rax
jae 0x1d9e0
movq -0x30(%rbp), %rdi
movslq -0x2f0(%rbp), %rsi
callq 0x8230
movq (%rax), %rax
movq %rax, -0x5b8(%rbp)
movq -0x20(%rbp), %rdi
callq 0x207c0
movq %rax, %rcx
movq -0x5b8(%rbp), %rax
cmpq %rcx, %rax
jne 0x1d9cd
movb $0x1, -0x2e9(%rbp)
jmp 0x1d9cf
movl -0x2f0(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x2f0(%rbp)
jmp 0x1d96e
movb -0x2e9(%rbp), %cl
movb $0x0, -0x311(%rbp)
xorl %eax, %eax
testb $0x1, %cl
movb %al, -0x5b9(%rbp)
jne 0x1da49
movq -0x20(%rbp), %rdi
callq 0x207c0
movq %rax, %rsi
leaq -0x310(%rbp), %rdi
movq %rdi, -0x5c8(%rbp)
callq 0x207e0
movq -0x5c8(%rbp), %rdi
movb $0x1, -0x311(%rbp)
leaq 0xbc80(%rip), %rsi      # 0x296ae
callq 0x8ce0
movb %al, -0x5ba(%rbp)
jmp 0x1da3b
movb -0x5ba(%rbp), %al
movb %al, -0x5b9(%rbp)
jmp 0x1da49
movb -0x5b9(%rbp), %al
movb %al, -0x5c9(%rbp)
testb $0x1, -0x311(%rbp)
jne 0x1da60
jmp 0x1da6c
leaq -0x310(%rbp), %rdi
callq 0x3210
movb -0x5c9(%rbp), %al
testb $0x1, %al
jne 0x1da7b
jmp 0x1db84
movq -0x30(%rbp), %rax
movq %rax, -0x5e8(%rbp)
movq -0x20(%rbp), %rdi
callq 0x207c0
movq -0x5e8(%rbp), %rdi
movq %rax, -0x320(%rbp)
leaq -0x320(%rbp), %rsi
callq 0x206a0
movq -0x20(%rbp), %rdi
callq 0x207c0
movq %rax, %rsi
leaq -0x338(%rbp), %rdi
callq 0x206d0
movq -0x18(%rbp), %rax
movq %rax, -0x5e0(%rbp)
movq -0x20(%rbp), %rdi
callq 0x207c0
movq %rax, -0x5d8(%rbp)
jmp 0x1dade
movl -0x38(%rbp), %eax
addl $-0x2, %eax
movl %eax, -0x344(%rbp)
leaq -0x340(%rbp), %rdi
leaq -0x34(%rbp), %rsi
leaq -0x344(%rbp), %rdx
callq 0x20480
jmp 0x1db03
movq -0x5d8(%rbp), %rdx
movq -0x5e0(%rbp), %rsi
movq -0x410(%rbp), %rdi
movq -0x30(%rbp), %r9
movq -0x340(%rbp), %r8
leaq -0x338(%rbp), %rcx
callq 0x1c890
jmp 0x1db31
leaq -0x338(%rbp), %rdi
callq 0x20710
jmp 0x1db84
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
testb $0x1, -0x311(%rbp)
jne 0x1db56
jmp 0x1db62
leaq -0x310(%rbp), %rdi
callq 0x3210
jmp 0x1e017
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x338(%rbp), %rdi
callq 0x20710
jmp 0x1e017
jmp 0x1db86
jmp 0x1db88
movl -0x38(%rbp), %ecx
subl $0x1, %ecx
movb $0x0, -0x369(%rbp)
movb $0x0, -0x391(%rbp)
xorl %eax, %eax
cmpl $0x0, %ecx
movb %al, -0x5e9(%rbp)
jl 0x1dcba
movq -0x28(%rbp), %rdi
movslq -0x34(%rbp), %rsi
callq 0x17390
movq %rax, %rdi
movl -0x38(%rbp), %eax
subl $0x1, %eax
movslq %eax, %rsi
callq 0x173b0
movq %rax, %rdi
callq 0x20630
movb %al, %cl
xorl %eax, %eax
testb $0x1, %cl
movb %al, -0x5e9(%rbp)
jne 0x1dcba
movq -0x28(%rbp), %rdi
movslq -0x34(%rbp), %rsi
callq 0x17390
movq %rax, %rdi
movl -0x38(%rbp), %eax
decl %eax
movslq %eax, %rsi
callq 0x173b0
movq %rax, %rsi
leaq -0x368(%rbp), %rdi
movq %rdi, -0x5f8(%rbp)
callq 0x15490
movq -0x5f8(%rbp), %rdi
movb $0x1, -0x369(%rbp)
leaq 0xba79(%rip), %rsi      # 0x296a7
callq 0x85b0
movb %al, -0x5ea(%rbp)
jmp 0x1dc3b
movb -0x5ea(%rbp), %cl
movb $0x1, %al
testb $0x1, %cl
movb %al, -0x5f9(%rbp)
jne 0x1dcae
jmp 0x1dc50
movq -0x28(%rbp), %rdi
movslq -0x34(%rbp), %rsi
callq 0x17390
movq %rax, %rdi
movl -0x38(%rbp), %eax
decl %eax
movslq %eax, %rsi
callq 0x173b0
movq %rax, %rsi
leaq -0x390(%rbp), %rdi
callq 0x15490
jmp 0x1dc7e
movb $0x1, -0x391(%rbp)
leaq 0xbb04(%rip), %rsi      # 0x29790
leaq -0x390(%rbp), %rdi
callq 0x85b0
movb %al, -0x5fa(%rbp)
jmp 0x1dca0
movb -0x5fa(%rbp), %al
movb %al, -0x5f9(%rbp)
jmp 0x1dcae
movb -0x5f9(%rbp), %al
movb %al, -0x5e9(%rbp)
movb -0x5e9(%rbp), %al
movb %al, -0x5fb(%rbp)
testb $0x1, -0x391(%rbp)
jne 0x1dcd1
jmp 0x1dcdd
leaq -0x390(%rbp), %rdi
callq 0x3210
testb $0x1, -0x369(%rbp)
jne 0x1dce8
jmp 0x1dcf4
leaq -0x368(%rbp), %rdi
callq 0x3210
movb -0x5fb(%rbp), %al
testb $0x1, %al
jne 0x1dd03
jmp 0x1ddc7
movq -0x18(%rbp), %rax
movq %rax, -0x618(%rbp)
movq -0x20(%rbp), %rax
movq %rax, -0x610(%rbp)
movq -0x28(%rbp), %rax
movq %rax, -0x608(%rbp)
movl -0x38(%rbp), %eax
subl $0x1, %eax
movl %eax, -0x3a0(%rbp)
leaq -0x39c(%rbp), %rdi
leaq -0x34(%rbp), %rsi
leaq -0x3a0(%rbp), %rdx
callq 0x20480
movq -0x410(%rbp), %rdi
movq -0x618(%rbp), %rsi
movq -0x610(%rbp), %rdx
movq -0x608(%rbp), %rcx
movq -0x30(%rbp), %r9
movq -0x39c(%rbp), %r8
callq 0x1c890
jmp 0x1e00e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x1ddab
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
testb $0x1, -0x391(%rbp)
jne 0x1dd9d
jmp 0x1dda9
leaq -0x390(%rbp), %rdi
callq 0x3210
jmp 0x1ddab
testb $0x1, -0x369(%rbp)
jne 0x1ddb6
jmp 0x1ddc2
leaq -0x368(%rbp), %rdi
callq 0x3210
jmp 0x1e017
movl -0x38(%rbp), %eax
subl $0x1, %eax
cmpl $0x0, %eax
jge 0x1e00c
movq -0x20(%rbp), %rdi
callq 0x20810
cmpq $0x0, %rax
je 0x1e00c
movb $0x0, -0x3a1(%rbp)
movl $0x0, -0x3a8(%rbp)
movslq -0x3a8(%rbp), %rax
movq %rax, -0x620(%rbp)
movq -0x30(%rbp), %rdi
callq 0x81f0
movq %rax, %rcx
movq -0x620(%rbp), %rax
cmpq %rcx, %rax
jae 0x1de6c
movq -0x30(%rbp), %rdi
movslq -0x3a8(%rbp), %rsi
callq 0x8230
movq (%rax), %rax
movq %rax, -0x628(%rbp)
movq -0x20(%rbp), %rdi
callq 0x20810
movq %rax, %rcx
movq -0x628(%rbp), %rax
cmpq %rcx, %rax
jne 0x1de59
movb $0x1, -0x3a1(%rbp)
jmp 0x1de5b
movl -0x3a8(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x3a8(%rbp)
jmp 0x1ddfa
movb -0x3a1(%rbp), %cl
movb $0x0, -0x3c9(%rbp)
xorl %eax, %eax
testb $0x1, %cl
movb %al, -0x629(%rbp)
jne 0x1ded5
movq -0x20(%rbp), %rdi
callq 0x20810
movq %rax, %rsi
leaq -0x3c8(%rbp), %rdi
movq %rdi, -0x638(%rbp)
callq 0x20830
movq -0x638(%rbp), %rdi
movb $0x1, -0x3c9(%rbp)
leaq 0xb7f4(%rip), %rsi      # 0x296ae
callq 0x8ce0
movb %al, -0x62a(%rbp)
jmp 0x1dec7
movb -0x62a(%rbp), %al
movb %al, -0x629(%rbp)
jmp 0x1ded5
movb -0x629(%rbp), %al
movb %al, -0x639(%rbp)
testb $0x1, -0x3c9(%rbp)
jne 0x1deec
jmp 0x1def8
leaq -0x3c8(%rbp), %rdi
callq 0x3210
movb -0x639(%rbp), %al
testb $0x1, %al
jne 0x1df07
jmp 0x1e00a
movq -0x30(%rbp), %rax
movq %rax, -0x658(%rbp)
movq -0x20(%rbp), %rdi
callq 0x20810
movq -0x658(%rbp), %rdi
movq %rax, -0x3d8(%rbp)
leaq -0x3d8(%rbp), %rsi
callq 0x206a0
movq -0x20(%rbp), %rdi
callq 0x20810
movq %rax, %rsi
leaq -0x3f0(%rbp), %rdi
callq 0x206d0
movq -0x18(%rbp), %rax
movq %rax, -0x650(%rbp)
movq -0x20(%rbp), %rdi
callq 0x20810
movq %rax, -0x648(%rbp)
jmp 0x1df6a
movl -0x38(%rbp), %eax
addl $0x2, %eax
movl %eax, -0x3fc(%rbp)
leaq -0x3f8(%rbp), %rdi
leaq -0x34(%rbp), %rsi
leaq -0x3fc(%rbp), %rdx
callq 0x20480
jmp 0x1df8f
movq -0x648(%rbp), %rdx
movq -0x650(%rbp), %rsi
movq -0x410(%rbp), %rdi
movq -0x30(%rbp), %r9
movq -0x3f8(%rbp), %r8
leaq -0x3f0(%rbp), %rcx
callq 0x1c890
jmp 0x1dfbd
leaq -0x3f0(%rbp), %rdi
callq 0x20710
jmp 0x1e00a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
testb $0x1, -0x3c9(%rbp)
jne 0x1dfe2
jmp 0x1dfee
leaq -0x3c8(%rbp), %rdi
callq 0x3210
jmp 0x1e017
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x3f0(%rbp), %rdi
callq 0x20710
jmp 0x1e017
jmp 0x1e00c
jmp 0x1e00e
addq $0x660, %rsp            # imm = 0x660
popq %rbp
retq
movq -0x68(%rbp), %rdi
callq 0x34f0