// File: Doug0855[P]TigerZone/Board.cpp
// Function: Board::connectFaces(int, int)
void Board::connectFaces(int row, int col)
{
	if(row+1 <= 150 && m_board[row+1][col] != NULL &&
		 (*m_board[row+1][col]->getUpFace()).faceEquals(*m_board[row][col]->getDownFace()))
	{
		(*m_board[row + 1][col]->getUpFace()).setNeighborFace(*m_board[row][col]->getDownFace());
		(*m_board[row][col]->getDownFace()).setNeighborFace(*m_board[row + 1][col]->getUpFace());


		// Set adjacent tiles now after setting faces

		// std::cout<<"**********DOWN TILE BEFORE SETTING IS "<<m_board[row][col]->getDownTile()<<std::endl;
		(m_board[row][col])->setNeighborDownTile(*m_board[row + 1][col]);
		// std::cout<<"**********DOWN TILE AFTER SETTING IS "<<m_board[row][col]->getDownTile()<<std::endl;
		// std::cout<<"72 72 up tile before setting is "<<m_board[row+1][col]->getUpTile()<<std::endl;
		(m_board[row+1][col])->setNeighborUpTile(*m_board[row][col]);
		// std::cout<<"72 72 up tile after setting is "<<m_board[row+1][col]->getUpTile()<<std::endl;

		//std::cout << "Neighbor of the up face of " << row + 1 << ' ' << col << " is " << m_board[row + 1][col]->getUpFace()->getNeighborFace() << std::endl;
		//std::cout << "Neighbor of the down face of " << row << ' ' << col << " is " << m_board[row][col]->getDownFace()->getNeighborFace() << std::endl;
	}
	else if(m_board[row+1][col] != NULL)// && !m_board[row+1][col]->getUpFace()->faceEquals(*m_board[row][col]->getDownFace()))
	{
		std::cout << "ERROR: FACES DON'T MATCH for tile down face" << std::endl;
	}
	// Connect top face of tile to existing tile above it
	if(row-1 >= 0 && m_board[row-1][col] != NULL &&
		 (*m_board[row-1][col]->getDownFace()).faceEquals(*m_board[row][col]->getUpFace()))
	{
		(*m_board[row - 1][col]->getDownFace()).setNeighborFace(*m_board[row][col]->getUpFace());
		(*m_board[row][col]->getUpFace()).setNeighborFace(*m_board[row - 1][col]->getDownFace());

		// Set adjacent tiles now after setting faces
		(m_board[row][col])->setNeighborUpTile(*m_board[row - 1][col]);
		(m_board[row - 1][col])->setNeighborDownTile(*m_board[row][col]);

		//std::cout << "Neighbor of the down face of " << row - 1 << ' ' << col << " is " << m_board[row - 1][col]->getDownFace()->getNeighborFace() << std::endl;
		//std::cout << "Neighbor of the up face of " << row << ' ' << col << " is " << m_board[row][col]->getUpFace()->getNeighborFace() << std::endl;
	}
	else if(m_board[row-1][col] != NULL)// && !m_board[row-1][col]->getDownFace()->faceEquals(*m_board[row][col]->getUpFace()))
	{
		std::cout << "ERROR: FACES DON'T MATCH for tile up face" << std::endl;
	}
	// Connect left face of tile to existing tile to the left of it
	if (col-1 >= 0 && m_board[row][col-1] != NULL &&
		  (*m_board[row][col-1]->getRightFace()).faceEquals(*m_board[row][col]->getLeftFace()))
	{
		(*m_board[row][col - 1]->getRightFace()).setNeighborFace(*m_board[row][col]->getLeftFace());
		(*m_board[row][col]->getLeftFace()).setNeighborFace(*m_board[row][col - 1]->getRightFace());

		// Set adjacent tiles now after setting faces
		(m_board[row][col])->setNeighborLeftTile(*m_board[row][col - 1]);
		(m_board[row][col - 1])->setNeighborRightTile(*m_board[row][col]);

		//std::cout << "Neighbor of the right face of " << row << ' ' << col - 1 << " is " << m_board[row][col - 1]->getRightFace()->getNeighborFace() << std::endl;
		//std::cout << "Neighbor of the left face of " << row << ' ' << col << " is " << m_board[row][col]->getLeftFace()->getNeighborFace() << std::endl;
	}
	else if(m_board[row][col-1] != NULL)// && !m_board[row][col-1]->getRightFace()->faceEquals(*m_board[row][col]->getLeftFace()))
	{
		std::cout << "ERROR: FACES DON'T MATCH for tile left face" << std::endl;
	}
	// Connect right face of tile to the existing tile to the right of it
	if (col+1 <= 150 && m_board[row][col+1] != NULL &&
		  (*m_board[row][col+1]->getLeftFace()).faceEquals(*m_board[row][col]->getRightFace()))
	{
		(*m_board[row][col + 1]->getLeftFace()).setNeighborFace(*m_board[row][col]->getRightFace());
		(*m_board[row][col]->getRightFace()).setNeighborFace(*m_board[row][col + 1]->getLeftFace());

		// Set adjacent tiles now after setting faces
		(m_board[row][col])->setNeighborRightTile(*m_board[row][col + 1]);
		(m_board[row][col + 1])->setNeighborLeftTile(*m_board[row][col]);

		//std::cout << "Neighbor of the left face of " << row << ' ' << col + 1 << " is " << m_board[row][col + 1]->getLeftFace()->getNeighborFace() << std::endl;
		//std::cout << "Neighbor of the right face of " << row << ' ' << col << " is " << m_board[row][col]->getRightFace()->getNeighborFace() << std::endl;
	}
	else if(m_board[row][col+1] != NULL )//&& !m_board[row][col+1]->getLeftFace()->faceEquals(*m_board[row][col]->getRightFace()))
	{
		std::cout << "ERROR: FACES DON'T MATCH for tile right face" << std::endl;
	}
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x1f0, %rsp            # imm = 0x1F0
movq %rdi, -0x8(%rbp)
movl %esi, -0xc(%rbp)
movl %edx, -0x10(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0xe8(%rbp)
movl -0xc(%rbp), %ecx
addl $0x1, %ecx
movb $0x0, -0x39(%rbp)
xorl %eax, %eax
cmpl $0x96, %ecx
movb %al, -0xda(%rbp)
jg 0x1b557
movq -0xe8(%rbp), %rdi
movl -0xc(%rbp), %eax
addl $0x1, %eax
movslq %eax, %rsi
callq 0x81d0
movq %rax, %rdi
movslq -0x10(%rbp), %rsi
callq 0x8230
movq %rax, %rcx
xorl %eax, %eax
cmpq $0x0, (%rcx)
movb %al, -0xda(%rbp)
je 0x1b557
movq -0xe8(%rbp), %rdi
movl -0xc(%rbp), %eax
incl %eax
movslq %eax, %rsi
callq 0x81d0
movq %rax, %rdi
movslq -0x10(%rbp), %rsi
callq 0x8230
movq (%rax), %rdi
callq 0x203a0
movq -0xe8(%rbp), %rdi
movq %rax, -0x100(%rbp)
movslq -0xc(%rbp), %rsi
callq 0x81d0
movq %rax, %rdi
movslq -0x10(%rbp), %rsi
callq 0x8230
movq (%rax), %rdi
callq 0x203c0
movq %rax, %rsi
leaq -0x38(%rbp), %rdi
movq %rdi, -0xf8(%rbp)
callq 0x8e70
movq -0x100(%rbp), %rdi
movq -0xf8(%rbp), %rsi
movb $0x1, -0x39(%rbp)
callq 0x281c0
movb %al, -0xe9(%rbp)
jmp 0x1b549
movb -0xe9(%rbp), %al
movb %al, -0xda(%rbp)
jmp 0x1b557
movb -0xda(%rbp), %al
movb %al, -0x101(%rbp)
testb $0x1, -0x39(%rbp)
jne 0x1b56b
jmp 0x1b574
leaq -0x38(%rbp), %rdi
callq 0x28160
movb -0x101(%rbp), %al
testb $0x1, %al
jne 0x1b583
jmp 0x1b719
movq -0xe8(%rbp), %rdi
movl -0xc(%rbp), %eax
addl $0x1, %eax
movslq %eax, %rsi
callq 0x81d0
movq %rax, %rdi
movslq -0x10(%rbp), %rsi
callq 0x8230
movq (%rax), %rdi
callq 0x203a0
movq -0xe8(%rbp), %rdi
movq %rax, -0x128(%rbp)
movslq -0xc(%rbp), %rsi
callq 0x81d0
movq %rax, %rdi
movslq -0x10(%rbp), %rsi
callq 0x8230
movq (%rax), %rdi
callq 0x203c0
movq -0x128(%rbp), %rdi
movq %rax, %rsi
callq 0x28180
movq -0xe8(%rbp), %rdi
movslq -0xc(%rbp), %rsi
callq 0x81d0
movq %rax, %rdi
movslq -0x10(%rbp), %rsi
callq 0x8230
movq (%rax), %rdi
callq 0x203c0
movq -0xe8(%rbp), %rdi
movq %rax, -0x120(%rbp)
movl -0xc(%rbp), %eax
addl $0x1, %eax
movslq %eax, %rsi
callq 0x81d0
movq %rax, %rdi
movslq -0x10(%rbp), %rsi
callq 0x8230
movq (%rax), %rdi
callq 0x203a0
movq -0x120(%rbp), %rdi
movq %rax, %rsi
callq 0x28180
movq -0xe8(%rbp), %rdi
movslq -0xc(%rbp), %rsi
callq 0x81d0
movq %rax, %rdi
movslq -0x10(%rbp), %rsi
callq 0x8230
movq -0xe8(%rbp), %rdi
movq (%rax), %rax
movq %rax, -0x118(%rbp)
movl -0xc(%rbp), %eax
addl $0x1, %eax
movslq %eax, %rsi
callq 0x81d0
movq %rax, %rdi
movslq -0x10(%rbp), %rsi
callq 0x8230
movq -0x118(%rbp), %rdi
movq (%rax), %rsi
callq 0x26fe0
movq -0xe8(%rbp), %rdi
movl -0xc(%rbp), %eax
addl $0x1, %eax
movslq %eax, %rsi
callq 0x81d0
movq %rax, %rdi
movslq -0x10(%rbp), %rsi
callq 0x8230
movq -0xe8(%rbp), %rdi
movq (%rax), %rax
movq %rax, -0x110(%rbp)
movslq -0xc(%rbp), %rsi
callq 0x81d0
movq %rax, %rdi
movslq -0x10(%rbp), %rsi
callq 0x8230
movq -0x110(%rbp), %rdi
movq (%rax), %rsi
callq 0x26fc0
jmp 0x1b764
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
testb $0x1, -0x39(%rbp)
jne 0x1b70b
jmp 0x1b714
leaq -0x38(%rbp), %rdi
callq 0x28160
jmp 0x1c06a
movq -0xe8(%rbp), %rdi
movl -0xc(%rbp), %eax
addl $0x1, %eax
movslq %eax, %rsi
callq 0x81d0
movq %rax, %rdi
movslq -0x10(%rbp), %rsi
callq 0x8230
cmpq $0x0, (%rax)
je 0x1b762
movq 0x1b871(%rip), %rdi     # 0x36fb8
leaq 0xe048(%rip), %rsi      # 0x29796
callq 0x32b0
movq %rax, %rdi
movq 0x1b84b(%rip), %rsi     # 0x36fa8
callq 0x32e0
jmp 0x1b764
movl -0xc(%rbp), %ecx
subl $0x1, %ecx
movb $0x0, -0x79(%rbp)
xorl %eax, %eax
cmpl $0x0, %ecx
movb %al, -0x129(%rbp)
jl 0x1b848
movq -0xe8(%rbp), %rdi
movl -0xc(%rbp), %eax
subl $0x1, %eax
movslq %eax, %rsi
callq 0x81d0
movq %rax, %rdi
movslq -0x10(%rbp), %rsi
callq 0x8230
movq %rax, %rcx
xorl %eax, %eax
cmpq $0x0, (%rcx)
movb %al, -0x129(%rbp)
je 0x1b848
movq -0xe8(%rbp), %rdi
movl -0xc(%rbp), %eax
decl %eax
movslq %eax, %rsi
callq 0x81d0
movq %rax, %rdi
movslq -0x10(%rbp), %rsi
callq 0x8230
movq (%rax), %rdi
callq 0x203c0
movq -0xe8(%rbp), %rdi
movq %rax, -0x140(%rbp)
movslq -0xc(%rbp), %rsi
callq 0x81d0
movq %rax, %rdi
movslq -0x10(%rbp), %rsi
callq 0x8230
movq (%rax), %rdi
callq 0x203a0
movq %rax, %rsi
leaq -0x78(%rbp), %rdi
movq %rdi, -0x138(%rbp)
callq 0x8e70
movq -0x140(%rbp), %rdi
movq -0x138(%rbp), %rsi
movb $0x1, -0x79(%rbp)
callq 0x281c0
movb %al, -0x12a(%rbp)
jmp 0x1b83a
movb -0x12a(%rbp), %al
movb %al, -0x129(%rbp)
jmp 0x1b848
movb -0x129(%rbp), %al
movb %al, -0x141(%rbp)
testb $0x1, -0x79(%rbp)
jne 0x1b85c
jmp 0x1b865
leaq -0x78(%rbp), %rdi
callq 0x28160
movb -0x141(%rbp), %al
testb $0x1, %al
jne 0x1b874
jmp 0x1ba0a
movq -0xe8(%rbp), %rdi
movl -0xc(%rbp), %eax
subl $0x1, %eax
movslq %eax, %rsi
callq 0x81d0
movq %rax, %rdi
movslq -0x10(%rbp), %rsi
callq 0x8230
movq (%rax), %rdi
callq 0x203c0
movq -0xe8(%rbp), %rdi
movq %rax, -0x168(%rbp)
movslq -0xc(%rbp), %rsi
callq 0x81d0
movq %rax, %rdi
movslq -0x10(%rbp), %rsi
callq 0x8230
movq (%rax), %rdi
callq 0x203a0
movq -0x168(%rbp), %rdi
movq %rax, %rsi
callq 0x28180
movq -0xe8(%rbp), %rdi
movslq -0xc(%rbp), %rsi
callq 0x81d0
movq %rax, %rdi
movslq -0x10(%rbp), %rsi
callq 0x8230
movq (%rax), %rdi
callq 0x203a0
movq -0xe8(%rbp), %rdi
movq %rax, -0x160(%rbp)
movl -0xc(%rbp), %eax
subl $0x1, %eax
movslq %eax, %rsi
callq 0x81d0
movq %rax, %rdi
movslq -0x10(%rbp), %rsi
callq 0x8230
movq (%rax), %rdi
callq 0x203c0
movq -0x160(%rbp), %rdi
movq %rax, %rsi
callq 0x28180
movq -0xe8(%rbp), %rdi
movslq -0xc(%rbp), %rsi
callq 0x81d0
movq %rax, %rdi
movslq -0x10(%rbp), %rsi
callq 0x8230
movq -0xe8(%rbp), %rdi
movq (%rax), %rax
movq %rax, -0x158(%rbp)
movl -0xc(%rbp), %eax
subl $0x1, %eax
movslq %eax, %rsi
callq 0x81d0
movq %rax, %rdi
movslq -0x10(%rbp), %rsi
callq 0x8230
movq -0x158(%rbp), %rdi
movq (%rax), %rsi
callq 0x26fc0
movq -0xe8(%rbp), %rdi
movl -0xc(%rbp), %eax
subl $0x1, %eax
movslq %eax, %rsi
callq 0x81d0
movq %rax, %rdi
movslq -0x10(%rbp), %rsi
callq 0x8230
movq -0xe8(%rbp), %rdi
movq (%rax), %rax
movq %rax, -0x150(%rbp)
movslq -0xc(%rbp), %rsi
callq 0x81d0
movq %rax, %rdi
movslq -0x10(%rbp), %rsi
callq 0x8230
movq -0x150(%rbp), %rdi
movq (%rax), %rsi
callq 0x26fe0
jmp 0x1ba55
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
testb $0x1, -0x79(%rbp)
jne 0x1b9fc
jmp 0x1ba05
leaq -0x78(%rbp), %rdi
callq 0x28160
jmp 0x1c06a
movq -0xe8(%rbp), %rdi
movl -0xc(%rbp), %eax
subl $0x1, %eax
movslq %eax, %rsi
callq 0x81d0
movq %rax, %rdi
movslq -0x10(%rbp), %rsi
callq 0x8230
cmpq $0x0, (%rax)
je 0x1ba53
movq 0x1b580(%rip), %rdi     # 0x36fb8
leaq 0xdd83(%rip), %rsi      # 0x297c2
callq 0x32b0
movq %rax, %rdi
movq 0x1b55a(%rip), %rsi     # 0x36fa8
callq 0x32e0
jmp 0x1ba55
movl -0x10(%rbp), %ecx
subl $0x1, %ecx
movb $0x0, -0xa9(%rbp)
xorl %eax, %eax
cmpl $0x0, %ecx
movb %al, -0x169(%rbp)
jl 0x1bb42
movq -0xe8(%rbp), %rdi
movslq -0xc(%rbp), %rsi
callq 0x81d0
movq %rax, %rdi
movl -0x10(%rbp), %eax
subl $0x1, %eax
movslq %eax, %rsi
callq 0x8230
movq %rax, %rcx
xorl %eax, %eax
cmpq $0x0, (%rcx)
movb %al, -0x169(%rbp)
je 0x1bb42
movq -0xe8(%rbp), %rdi
movslq -0xc(%rbp), %rsi
callq 0x81d0
movq %rax, %rdi
movl -0x10(%rbp), %eax
decl %eax
movslq %eax, %rsi
callq 0x8230
movq (%rax), %rdi
callq 0x203e0
movq -0xe8(%rbp), %rdi
movq %rax, -0x180(%rbp)
movslq -0xc(%rbp), %rsi
callq 0x81d0
movq %rax, %rdi
movslq -0x10(%rbp), %rsi
callq 0x8230
movq (%rax), %rdi
callq 0x20400
movq %rax, %rsi
leaq -0xa8(%rbp), %rdi
movq %rdi, -0x178(%rbp)
callq 0x8e70
movq -0x180(%rbp), %rdi
movq -0x178(%rbp), %rsi
movb $0x1, -0xa9(%rbp)
callq 0x281c0
movb %al, -0x16a(%rbp)
jmp 0x1bb34
movb -0x16a(%rbp), %al
movb %al, -0x169(%rbp)
jmp 0x1bb42
movb -0x169(%rbp), %al
movb %al, -0x181(%rbp)
testb $0x1, -0xa9(%rbp)
jne 0x1bb59
jmp 0x1bb65
leaq -0xa8(%rbp), %rdi
callq 0x28160
movb -0x181(%rbp), %al
testb $0x1, %al
jne 0x1bb74
jmp 0x1bd10
movq -0xe8(%rbp), %rdi
movslq -0xc(%rbp), %rsi
callq 0x81d0
movq %rax, %rdi
movl -0x10(%rbp), %eax
subl $0x1, %eax
movslq %eax, %rsi
callq 0x8230
movq (%rax), %rdi
callq 0x203e0
movq -0xe8(%rbp), %rdi
movq %rax, -0x1a8(%rbp)
movslq -0xc(%rbp), %rsi
callq 0x81d0
movq %rax, %rdi
movslq -0x10(%rbp), %rsi
callq 0x8230
movq (%rax), %rdi
callq 0x20400
movq -0x1a8(%rbp), %rdi
movq %rax, %rsi
callq 0x28180
movq -0xe8(%rbp), %rdi
movslq -0xc(%rbp), %rsi
callq 0x81d0
movq %rax, %rdi
movslq -0x10(%rbp), %rsi
callq 0x8230
movq (%rax), %rdi
callq 0x20400
movq -0xe8(%rbp), %rdi
movq %rax, -0x1a0(%rbp)
movslq -0xc(%rbp), %rsi
callq 0x81d0
movq %rax, %rdi
movl -0x10(%rbp), %eax
subl $0x1, %eax
movslq %eax, %rsi
callq 0x8230
movq (%rax), %rdi
callq 0x203e0
movq -0x1a0(%rbp), %rdi
movq %rax, %rsi
callq 0x28180
movq -0xe8(%rbp), %rdi
movslq -0xc(%rbp), %rsi
callq 0x81d0
movq %rax, %rdi
movslq -0x10(%rbp), %rsi
callq 0x8230
movq -0xe8(%rbp), %rdi
movq (%rax), %rax
movq %rax, -0x198(%rbp)
movslq -0xc(%rbp), %rsi
callq 0x81d0
movq %rax, %rdi
movl -0x10(%rbp), %eax
subl $0x1, %eax
movslq %eax, %rsi
callq 0x8230
movq -0x198(%rbp), %rdi
movq (%rax), %rsi
callq 0x27000
movq -0xe8(%rbp), %rdi
movslq -0xc(%rbp), %rsi
callq 0x81d0
movq %rax, %rdi
movl -0x10(%rbp), %eax
subl $0x1, %eax
movslq %eax, %rsi
callq 0x8230
movq -0xe8(%rbp), %rdi
movq (%rax), %rax
movq %rax, -0x190(%rbp)
movslq -0xc(%rbp), %rsi
callq 0x81d0
movq %rax, %rdi
movslq -0x10(%rbp), %rsi
callq 0x8230
movq -0x190(%rbp), %rdi
movq (%rax), %rsi
callq 0x27020
jmp 0x1bd5b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
testb $0x1, -0xa9(%rbp)
jne 0x1bcff
jmp 0x1bd0b
leaq -0xa8(%rbp), %rdi
callq 0x28160
jmp 0x1c06a
movq -0xe8(%rbp), %rdi
movslq -0xc(%rbp), %rsi
callq 0x81d0
movq %rax, %rdi
movl -0x10(%rbp), %eax
subl $0x1, %eax
movslq %eax, %rsi
callq 0x8230
cmpq $0x0, (%rax)
je 0x1bd59
movq 0x1b27a(%rip), %rdi     # 0x36fb8
leaq 0xdaa7(%rip), %rsi      # 0x297ec
callq 0x32b0
movq %rax, %rdi
movq 0x1b254(%rip), %rsi     # 0x36fa8
callq 0x32e0
jmp 0x1bd5b
movl -0x10(%rbp), %ecx
addl $0x1, %ecx
movb $0x0, -0xd9(%rbp)
xorl %eax, %eax
cmpl $0x96, %ecx
movb %al, -0x1a9(%rbp)
jg 0x1be4b
movq -0xe8(%rbp), %rdi
movslq -0xc(%rbp), %rsi
callq 0x81d0
movq %rax, %rdi
movl -0x10(%rbp), %eax
addl $0x1, %eax
movslq %eax, %rsi
callq 0x8230
movq %rax, %rcx
xorl %eax, %eax
cmpq $0x0, (%rcx)
movb %al, -0x1a9(%rbp)
je 0x1be4b
movq -0xe8(%rbp), %rdi
movslq -0xc(%rbp), %rsi
callq 0x81d0
movq %rax, %rdi
movl -0x10(%rbp), %eax
incl %eax
movslq %eax, %rsi
callq 0x8230
movq (%rax), %rdi
callq 0x20400
movq -0xe8(%rbp), %rdi
movq %rax, -0x1c0(%rbp)
movslq -0xc(%rbp), %rsi
callq 0x81d0
movq %rax, %rdi
movslq -0x10(%rbp), %rsi
callq 0x8230
movq (%rax), %rdi
callq 0x203e0
movq %rax, %rsi
leaq -0xd8(%rbp), %rdi
movq %rdi, -0x1b8(%rbp)
callq 0x8e70
movq -0x1c0(%rbp), %rdi
movq -0x1b8(%rbp), %rsi
movb $0x1, -0xd9(%rbp)
callq 0x281c0
movb %al, -0x1aa(%rbp)
jmp 0x1be3d
movb -0x1aa(%rbp), %al
movb %al, -0x1a9(%rbp)
jmp 0x1be4b
movb -0x1a9(%rbp), %al
movb %al, -0x1c1(%rbp)
testb $0x1, -0xd9(%rbp)
jne 0x1be62
jmp 0x1be6e
leaq -0xd8(%rbp), %rdi
callq 0x28160
movb -0x1c1(%rbp), %al
testb $0x1, %al
jne 0x1be7d
jmp 0x1c016
movq -0xe8(%rbp), %rdi
movslq -0xc(%rbp), %rsi
callq 0x81d0
movq %rax, %rdi
movl -0x10(%rbp), %eax
addl $0x1, %eax
movslq %eax, %rsi
callq 0x8230
movq (%rax), %rdi
callq 0x20400
movq -0xe8(%rbp), %rdi
movq %rax, -0x1e8(%rbp)
movslq -0xc(%rbp), %rsi
callq 0x81d0
movq %rax, %rdi
movslq -0x10(%rbp), %rsi
callq 0x8230
movq (%rax), %rdi
callq 0x203e0
movq -0x1e8(%rbp), %rdi
movq %rax, %rsi
callq 0x28180
movq -0xe8(%rbp), %rdi
movslq -0xc(%rbp), %rsi
callq 0x81d0
movq %rax, %rdi
movslq -0x10(%rbp), %rsi
callq 0x8230
movq (%rax), %rdi
callq 0x203e0
movq -0xe8(%rbp), %rdi
movq %rax, -0x1e0(%rbp)
movslq -0xc(%rbp), %rsi
callq 0x81d0
movq %rax, %rdi
movl -0x10(%rbp), %eax
addl $0x1, %eax
movslq %eax, %rsi
callq 0x8230
movq (%rax), %rdi
callq 0x20400
movq -0x1e0(%rbp), %rdi
movq %rax, %rsi
callq 0x28180
movq -0xe8(%rbp), %rdi
movslq -0xc(%rbp), %rsi
callq 0x81d0
movq %rax, %rdi
movslq -0x10(%rbp), %rsi
callq 0x8230
movq -0xe8(%rbp), %rdi
movq (%rax), %rax
movq %rax, -0x1d8(%rbp)
movslq -0xc(%rbp), %rsi
callq 0x81d0
movq %rax, %rdi
movl -0x10(%rbp), %eax
addl $0x1, %eax
movslq %eax, %rsi
callq 0x8230
movq -0x1d8(%rbp), %rdi
movq (%rax), %rsi
callq 0x27020
movq -0xe8(%rbp), %rdi
movslq -0xc(%rbp), %rsi
callq 0x81d0
movq %rax, %rdi
movl -0x10(%rbp), %eax
addl $0x1, %eax
movslq %eax, %rsi
callq 0x8230
movq -0xe8(%rbp), %rdi
movq (%rax), %rax
movq %rax, -0x1d0(%rbp)
movslq -0xc(%rbp), %rsi
callq 0x81d0
movq %rax, %rdi
movslq -0x10(%rbp), %rsi
callq 0x8230
movq -0x1d0(%rbp), %rdi
movq (%rax), %rsi
callq 0x27000
jmp 0x1c061
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
testb $0x1, -0xd9(%rbp)
jne 0x1c008
jmp 0x1c014
leaq -0xd8(%rbp), %rdi
callq 0x28160
jmp 0x1c06a
movq -0xe8(%rbp), %rdi
movslq -0xc(%rbp), %rsi
callq 0x81d0
movq %rax, %rdi
movl -0x10(%rbp), %eax
addl $0x1, %eax
movslq %eax, %rsi
callq 0x8230
cmpq $0x0, (%rax)
je 0x1c05f
movq 0x1af74(%rip), %rdi     # 0x36fb8
leaq 0xd7cd(%rip), %rsi      # 0x29818
callq 0x32b0
movq %rax, %rdi
movq 0x1af4e(%rip), %rsi     # 0x36fa8
callq 0x32e0
jmp 0x1c061
addq $0x1f0, %rsp            # imm = 0x1F0
popq %rbp
retq
movq -0x48(%rbp), %rdi
callq 0x34f0
nopw %cs:(%rax,%rax)