// File: /workspace/github_cpp_makefile_star2_O1/araujoigor[P]ipp-compiler/./src/include/IDefinition.hpp
// Function: IDefinition::generateCode(std::basic_fstream<char, std::char_traits<char>>&)
void generateCode(std::fstream& fileStream) {
		int i;

		/* Primeiramente escreve-se o tipo da definição em questão */
		fileStream << getCppType() + " ";

		/*
		 * Primeiramente, processa-se as definições que recebem como valor um numero ou uma string.
		 */
		for(i = 0; i < (int)vars.size() - 1; i++){
			IData* actual = vars[i];

			/* Escreve-se o nome da variável */
			fileStream << actual->getId();

			/* E se ela possuir um valor, escreve-se esse valor. */
			if(actual->getHasValue()){
				fileStream << " = ";
				actual->printValue(fileStream);
			}

			/* Adiciona-se uma virgula, já que se trata de uma multipla definição */
			fileStream << ", ";
		}

		if(vars.size() > 0){
			IData* actual = vars[i];
			fileStream << vars[i]->getId();
			if(actual->getHasValue()){
				fileStream << " = ";
				actual->printValue(fileStream);
			}
			i++;
		}

		/*
		 * Checa-se então as variáveis que tem como valor outras variáveis.
		 */

		for(auto it = varEqualsVarMapping.begin(); it != varEqualsVarMapping.end(); ++it){
			/* Obtemos as variáveis a esquerda e a direita (que recebe e cede o valor, respectivamente) */
			IData *rightVar = ownerBlock->getLocalVariable(it->second);
			IData *leftVar = ownerBlock->getLocalVariable(it->first);

			/* Caso a variavél da direita não exista, gera-se um erro. */
			if(rightVar == NULL){
				std::string errorMsg = "Variavel " + it->second + " nao declarada.";
				throw ISourceErrorException(errorMsg, myLine);
			}

			/* Caso não haja compatibilidade de tipos, gera-se um erro */
			if(rightVar->getType() != type && !(type == "real" && rightVar->getType() == "inteiro") ){
				std::string errorMsg = "Impossivel atribuir '" + it->second + "' (" + rightVar->getType() + ") a '" + it->first + "' (" + type + "). Tipos incompativeis.";
				throw ISourceErrorException(errorMsg, myLine);
			}

			if(type == "inteiro" && rightVar->getType() == "inteiro"){
				((IInteger *)leftVar)->setValue(((IInteger *)rightVar)->getValue());
			}else if(type == "real" && rightVar->getType() == "inteiro"){
				((IReal *)leftVar)->setValue(((IInteger *)rightVar)->getValue());
			}else if(type == "real" && rightVar->getType() == "real"){
				((IReal *)leftVar)->setValue(((IReal *)rightVar)->getValue());
			}else{
				std::string errorMsg = "Impossivel atribuir '"+ it->second + "' (" + rightVar->getType() + ") a '" + it->first + "' (" + type + "). Tipos incompativeis.";
				throw ISourceErrorException(errorMsg, myLine);
			}

			/* Se houver mais de uma definição, adiciona-se uma virgula. */
			if(i > 0)
				fileStream << ", ";

			/* E escreve-se o nome das variaveis a esquerda e a direita */
			fileStream << it->first << " = " << it->second;
			i++;

		}

		/*
		 * Finalmente, checa-se então as variáveis que tem como valor uma expressãom matemática
		 */
		for(auto it = varEqualsMathMapping.begin(); it != varEqualsMathMapping.end(); ++it){
			int mathType;

			/* Se houver mais de uma definição, adicionamos uma virgula. */
			if(i > 0)
				fileStream << ", ";

			/* E escreve-se o nome da variável a direita e a expressão a esquerda. */
			fileStream << it->first << " = " << it->second->checkAndGetExpression(ownerBlock, myLine);

			/* Realiza-se a analise de compatibilidade de tipos */
			mathType = it->second->getMathType();

			if(mathType == IMath::TYPE_REAL && type == IInteger::myType){
				std::cout << "Atencao: usar uma variavel real em uma operacao para uma variavel inteira causa perda de dados. " << std::endl;
			}else if(type == "string"){
				std::string errorMsg = "Impossivel atribuir uma expressao matematica a variavel string " + it->first;
				throw ISourceErrorException(errorMsg, myLine);
			}
		}

		/* No final da atribuição, adicionamos um ; */
		fileStream << ";" << std::endl;
	}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x2b8, %rsp            # imm = 0x2B8
movq %rsi, %rbx
movq %rdi, %r15
leaq -0x88(%rbp), %r14
movq %r14, %rdi
movq %r15, %rsi
callq 0xd8f0
leaq 0x1fdbc(%rip), %rsi     # 0x2c377
movq %r14, %rdi
callq 0x8850
movq %rbx, -0x68(%rbp)
addq $0x10, %rbx
leaq -0x38(%rbp), %r13
movq %r13, -0x10(%r13)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0xc5ef
movq %rdx, -0x48(%rbp)
movq (%rcx), %rdx
movq %rdx, -0x38(%rbp)
jmp 0xc5f9
movupd (%rcx), %xmm0
movupd %xmm0, (%r13)
movq 0x8(%rax), %rdx
movq %rdx, -0x40(%rbp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq -0x48(%rbp), %rsi
movq -0x40(%rbp), %rdx
movq %rbx, %rdi
callq 0x8460
movq -0x48(%rbp), %rdi
cmpq %r13, %rdi
je 0xc62e
callq 0x8350
leaq -0x78(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xc640
callq 0x8350
movq 0x38(%r15), %rax
movq 0x40(%r15), %rcx
movq %rcx, %rdx
subq %rax, %rdx
shrq $0x3, %rdx
xorl %r14d, %r14d
cmpl $0x2, %edx
movq %r15, -0x50(%rbp)
movq %rbx, -0x60(%rbp)
jl 0xc720
xorl %r14d, %r14d
movabsq $-0x100000000, %r12     # imm = 0xFFFFFFFF00000000
movq (%rax,%r14,8), %r13
leaq -0x38(%rbp), %r15
movq %r15, -0x48(%rbp)
movq 0x8(%r13), %rsi
movq 0x10(%r13), %rdx
addq %rsi, %rdx
leaq -0x48(%rbp), %rdi
callq 0x10d2a
movq -0x48(%rbp), %rsi
movq -0x40(%rbp), %rdx
movq %rbx, %rdi
callq 0x8460
movq -0x48(%rbp), %rdi
cmpq %r15, %rdi
je 0xc6b1
callq 0x8350
cmpb $0x1, 0x28(%r13)
movq -0x50(%rbp), %r15
jne 0xc6df
movl $0x3, %edx
movq -0x60(%rbp), %rdi
leaq 0x1fb34(%rip), %rsi     # 0x2c200
callq 0x8460
movq (%r13), %rax
movq %r13, %rdi
movq -0x68(%rbp), %rsi
callq *0x18(%rax)
movl $0x2, %edx
movq -0x60(%rbp), %rbx
movq %rbx, %rdi
leaq 0x1fb2c(%rip), %rsi     # 0x2c21e
callq 0x8460
incq %r14
movq 0x38(%r15), %rax
movq 0x40(%r15), %rcx
movq %rcx, %rdx
subq %rax, %rdx
shlq $0x1d, %rdx
addq %r12, %rdx
sarq $0x20, %rdx
cmpq %rdx, %r14
jl 0xc673
leaq -0x38(%rbp), %r13
cmpq %rax, %rcx
je 0xc79b
movl %r14d, %ecx
movq (%rax,%rcx,8), %r12
movq (%rax,%rcx,8), %rax
leaq -0x48(%rbp), %r15
movq %r13, (%r15)
movq 0x8(%rax), %rsi
movq 0x10(%rax), %rdx
addq %rsi, %rdx
movq %r15, %rdi
callq 0x10d2a
movq (%r15), %rsi
movq 0x8(%r15), %rdx
movq %rbx, %rdi
callq 0x8460
movq -0x48(%rbp), %rdi
cmpq %r13, %rdi
je 0xc767
callq 0x8350
cmpb $0x1, 0x28(%r12)
movq -0x50(%rbp), %r15
movq -0x68(%rbp), %r13
jne 0xc798
leaq 0x1fa82(%rip), %rsi     # 0x2c200
movl $0x3, %edx
movq %rbx, %rdi
callq 0x8460
movq (%r12), %rax
movq %r12, %rdi
movq %r13, %rsi
callq *0x18(%rax)
incl %r14d
movq 0x68(%r15), %rdx
leaq 0x58(%r15), %rax
movq %rax, -0x110(%rbp)
cmpq %rax, %rdx
je 0xcb4e
leaq -0x1a8(%rbp), %rcx
leaq 0x18(%r15), %rax
movq %rax, -0x58(%rbp)
movq %r14, -0x118(%rbp)
movq %r15, %r14
movq 0x10(%r15), %rbx
movq %rcx, -0x1b8(%rbp)
movq 0x40(%rdx), %rsi
movq %rdx, -0x68(%rbp)
movq 0x48(%rdx), %rdx
addq %rsi, %rdx
leaq -0x1b8(%rbp), %r13
movq %r13, %rdi
movq %rcx, %r15
callq 0x10d2a
movq %rbx, %rdi
movq %r13, %rsi
callq 0xda54
movq %rax, -0x98(%rbp)
movq -0x1b8(%rbp), %rdi
cmpq %r15, %rdi
je 0xc81b
callq 0x8350
movq 0x10(%r14), %rbx
leaq -0x1c8(%rbp), %r15
movq %r15, -0x1d8(%rbp)
movq -0x68(%rbp), %rax
movq 0x20(%rax), %rsi
movq 0x28(%rax), %rdx
addq %rsi, %rdx
leaq -0x1d8(%rbp), %r13
movq %r13, %rdi
callq 0x10d2a
movq %rbx, %rdi
movq %r13, %rsi
callq 0xda54
movq %rax, -0x90(%rbp)
movq -0x1d8(%rbp), %rdi
cmpq %r15, %rdi
leaq 0x1f3e8(%rip), %rbx     # 0x2bc56
je 0xc875
callq 0x8350
movq -0x68(%rbp), %rax
leaq 0x40(%rax), %r13
movq -0x98(%rbp), %r12
testq %r12, %r12
je 0xccdd
movq (%r12), %rax
leaq -0x48(%rbp), %rdi
movq %r12, %rsi
callq *0x10(%rax)
movq -0x40(%rbp), %rdx
cmpq 0x20(%r14), %rdx
movq -0x118(%rbp), %r14
jne 0xc8c5
testq %rdx, %rdx
je 0xc908
movq -0x58(%rbp), %rax
movq (%rax), %rsi
movq -0x48(%rbp), %rdi
callq 0x83e0
testl %eax, %eax
je 0xc908
movq -0x58(%rbp), %rdi
movq %rbx, %rsi
callq 0x8100
movb $0x1, %r15b
testl %eax, %eax
sete %al
jne 0xc90d
movq (%r12), %rax
leaq -0x2d8(%rbp), %rbx
movq %rbx, %rdi
movq %r12, %rsi
callq *0x10(%rax)
movq %rbx, %rdi
leaq 0x1f362(%rip), %rsi     # 0x2bc5b
callq 0x8100
testl %eax, %eax
setne %r15b
movb $0x1, %al
jmp 0xc90d
xorl %eax, %eax
xorl %r15d, %r15d
testb %al, %al
je 0xc929
movq -0x2d8(%rbp), %rdi
leaq -0x2c8(%rbp), %rax
cmpq %rax, %rdi
je 0xc929
callq 0x8350
movq -0x48(%rbp), %rdi
leaq -0x38(%rbp), %rax
cmpq %rax, %rdi
je 0xc93b
callq 0x8350
movq %r13, -0xc0(%rbp)
movq -0x68(%rbp), %rax
addq $0x20, %rax
testb %r15b, %r15b
jne 0xcd31
movq %rax, -0x108(%rbp)
movq -0x58(%rbp), %rdi
leaq 0x1f2f6(%rip), %r13     # 0x2bc5b
movq %r13, %rsi
callq 0x8100
movl %eax, %r15d
testl %eax, %eax
je 0xc978
xorl %ebx, %ebx
jmp 0xc99c
movq (%r12), %rax
leaq -0x2b8(%rbp), %rbx
movq %rbx, %rdi
movq %r12, %rsi
callq *0x10(%rax)
movq %rbx, %rdi
movq %r13, %rsi
callq 0x8100
testl %eax, %eax
sete %bl
testl %r15d, %r15d
movq -0x50(%rbp), %r15
jne 0xc9bd
movq -0x2b8(%rbp), %rdi
leaq -0x2a8(%rbp), %rax
cmpq %rax, %rdi
je 0xc9bd
callq 0x8350
testb %bl, %bl
je 0xc9db
movl 0x2c(%r12), %eax
movq -0x90(%rbp), %r13
movb $0x1, 0x28(%r13)
movl %eax, 0x2c(%r13)
jmp 0xcad0
movq -0x58(%rbp), %rdi
leaq 0x1f270(%rip), %rsi     # 0x2bc56
callq 0x8100
movl %eax, %r15d
testl %eax, %eax
je 0xc9f6
xorl %ebx, %ebx
jmp 0xca1e
movq (%r12), %rax
leaq -0x298(%rbp), %rbx
movq %rbx, %rdi
movq %r12, %rsi
callq *0x10(%rax)
movq %rbx, %rdi
leaq 0x1f247(%rip), %rsi     # 0x2bc5b
callq 0x8100
testl %eax, %eax
sete %bl
testl %r15d, %r15d
movq -0x50(%rbp), %r15
jne 0xca3f
movq -0x298(%rbp), %rdi
leaq -0x288(%rbp), %rax
cmpq %rax, %rdi
je 0xca3f
callq 0x8350
testb %bl, %bl
je 0xca4c
cvtsi2sdl 0x2c(%r12), %xmm0
jmp 0xcabe
movq -0x58(%rbp), %rdi
leaq 0x1f1ff(%rip), %rbx     # 0x2bc56
movq %rbx, %rsi
callq 0x8100
movl %eax, %r15d
testl %eax, %eax
je 0xca6a
xorl %ebx, %ebx
jmp 0xca8e
movq (%r12), %rax
leaq -0x278(%rbp), %r13
movq %r13, %rdi
movq %r12, %rsi
callq *0x10(%rax)
movq %r13, %rdi
movq %rbx, %rsi
callq 0x8100
testl %eax, %eax
sete %bl
testl %r15d, %r15d
movq -0x50(%rbp), %r15
jne 0xcaaf
movq -0x278(%rbp), %rdi
leaq -0x268(%rbp), %rax
cmpq %rax, %rdi
je 0xcaaf
callq 0x8350
testb %bl, %bl
je 0xce0c
movsd 0x30(%r12), %xmm0
movq -0x90(%rbp), %r13
movb $0x1, 0x28(%r13)
movsd %xmm0, 0x30(%r13)
movq -0x60(%rbp), %rbx
testl %r14d, %r14d
movq -0x68(%rbp), %r12
je 0xcaf1
movl $0x2, %edx
movq %rbx, %rdi
leaq 0x1f732(%rip), %rsi     # 0x2c21e
callq 0x8460
movq 0x20(%r12), %rsi
movq 0x28(%r12), %rdx
movq %rbx, %rdi
callq 0x8460
movq %rax, %rbx
movl $0x3, %edx
movq %rax, %rdi
leaq 0x1f6eb(%rip), %rsi     # 0x2c200
callq 0x8460
movq 0x40(%r12), %rsi
movq 0x48(%r12), %rdx
movq %rbx, %rdi
callq 0x8460
incl %r14d
movq %r12, %rdi
callq 0x82c0
movq %rax, %rdx
cmpq -0x110(%rbp), %rax
leaq -0x1a8(%rbp), %rcx
jne 0xc7c2
movq 0x98(%r15), %rbx
leaq 0x88(%r15), %r13
cmpq %r13, %rbx
je 0xcc8c
leaq 0x18(%r15), %r12
testl %r14d, %r14d
movq -0x60(%rbp), %r15
jle 0xcb86
movl $0x2, %edx
movq %r15, %rdi
leaq 0x1f69d(%rip), %rsi     # 0x2c21e
callq 0x8460
movq 0x20(%rbx), %rsi
movq 0x28(%rbx), %rdx
movq %r15, %rdi
callq 0x8460
movq %rax, %r15
movl $0x3, %edx
movq %rax, %rdi
leaq 0x1f658(%rip), %rsi     # 0x2c200
callq 0x8460
movq 0x40(%rbx), %rsi
movq -0x50(%rbp), %rax
movq 0x10(%rax), %rdx
movl 0x8(%rax), %ecx
leaq -0x48(%rbp), %rdi
callq 0xdd94
movq -0x48(%rbp), %rsi
movq -0x40(%rbp), %rdx
movq %r15, %rdi
callq 0x8460
movq -0x48(%rbp), %rdi
leaq -0x38(%rbp), %rax
cmpq %rax, %rdi
je 0xcbe7
callq 0x8350
movq 0x40(%rbx), %rax
cmpl $0x1, 0x38(%rax)
movq -0x50(%rbp), %rax
jne 0xcc1b
movq 0x20(%rax), %rdx
cmpq 0x308d8(%rip), %rdx     # 0x3d4d8
jne 0xcc1b
testq %rdx, %rdx
je 0xcc48
movq 0x308c2(%rip), %rsi     # 0x3d4d0
movq 0x18(%rax), %rdi
callq 0x83e0
testl %eax, %eax
je 0xcc48
movq %r12, %rdi
leaq 0x1f6ef(%rip), %rsi     # 0x2c314
callq 0x8100
testl %eax, %eax
je 0xcd8c
movq %rbx, %rdi
callq 0x82c0
movq %rax, %rbx
cmpq %r13, %rax
jne 0xcb69
jmp 0xcc8c
movl $0x60, %edx
movq 0x30374(%rip), %r15     # 0x3cfc8
movq %r15, %rdi
leaq 0x1f605(%rip), %rsi     # 0x2c263
callq 0x8460
movq (%r15), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x8360
movsbl %al, %esi
movq %r15, %rdi
callq 0x8030
movq %rax, %rdi
callq 0x82b0
jmp 0xcc32
leaq 0x23b51(%rip), %rsi     # 0x307e4
movl $0x1, %edx
movq -0x60(%rbp), %rbx
movq %rbx, %rdi
callq 0x8460
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x8360
movsbl %al, %esi
movq %rbx, %rdi
callq 0x8030
movq %rax, %rdi
callq 0x82b0
addq $0x2b8, %rsp            # imm = 0x2B8
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x1f53d(%rip), %rsi     # 0x2c221
leaq -0x88(%rbp), %rbx
movq %rbx, %rdi
movq %r13, %rdx
callq 0xdb86
leaq 0x23acf(%rip), %rsi     # 0x307cc
movq %rbx, %rdi
callq 0x8850
leaq -0x38(%rbp), %rcx
movq %rcx, -0x48(%rbp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
jne 0xce64
movupd (%rcx), %xmm0
leaq -0x38(%rbp), %rdx
movupd %xmm0, (%rdx)
jmp 0xce6f
movq %rax, %r12
leaq 0x1f4f0(%rip), %rsi     # 0x2c22b
leaq -0x198(%rbp), %rbx
movq %rbx, %rdi
movq -0xc0(%rbp), %rdx
callq 0xdb86
leaq 0x1f4e9(%rip), %rsi     # 0x2c241
movq %rbx, %rdi
callq 0x8850
leaq -0xa8(%rbp), %r14
movq %r14, -0x10(%r14)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
jne 0xcf02
movupd (%rcx), %xmm0
movupd %xmm0, (%r14)
jmp 0xcf13
addq $0x20, %rbx
leaq 0x1f52d(%rip), %rsi     # 0x2c2c4
leaq -0x48(%rbp), %r15
movq %r15, %rdi
movq %rbx, %rdx
callq 0xdb86
movl $0x28, %edi
callq 0x81f0
movq %rax, %r14
leaq -0x1e8(%rbp), %r12
movq %r12, -0x10(%r12)
movq (%r15), %rsi
movq 0x8(%r15), %rdx
addq %rsi, %rdx
leaq -0x1f8(%rbp), %rdi
callq 0x10d2a
movq -0x50(%rbp), %rax
movl 0x8(%rax), %edx
movb $0x1, %r15b
leaq -0x1f8(%rbp), %rsi
movq %r14, %rdi
callq 0xdc12
xorl %r15d, %r15d
leaq 0x2f268(%rip), %rsi     # 0x3c060
leaq 0xe63(%rip), %rdx       # 0xdc62
movq %r14, %rdi
callq 0x8770
jmp 0xd475
leaq 0x1f418(%rip), %rsi     # 0x2c22b
leaq -0x198(%rbp), %rbx
movq %rbx, %rdi
movq -0xc0(%rbp), %rdx
callq 0xdb86
leaq 0x1f411(%rip), %rsi     # 0x2c241
movq %rbx, %rdi
callq 0x8850
leaq -0xa8(%rbp), %r14
movq %r14, -0x10(%r14)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
jne 0xcf9a
movupd (%rcx), %xmm0
movupd %xmm0, (%r14)
jmp 0xcfab
movq %rdx, -0x48(%rbp)
movq (%rcx), %rdx
movq %rdx, -0x38(%rbp)
movq 0x8(%rax), %rdx
movq %rdx, -0x40(%rbp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq -0x88(%rbp), %rdi
leaq -0x78(%rbp), %rax
cmpq %rax, %rdi
je 0xce9b
callq 0x8350
movl $0x28, %edi
callq 0x81f0
movq %rax, %r14
leaq -0x248(%rbp), %r12
movq %r12, -0x10(%r12)
movq -0x48(%rbp), %rsi
movq -0x40(%rbp), %rdx
addq %rsi, %rdx
leaq -0x258(%rbp), %rdi
callq 0x10d2a
movq -0x50(%rbp), %rax
movl 0x8(%rax), %edx
movb $0x1, %r15b
leaq -0x258(%rbp), %rsi
movq %r14, %rdi
callq 0xdc12
xorl %r15d, %r15d
leaq 0x2f172(%rip), %rsi     # 0x3c060
leaq 0xd6d(%rip), %rdx       # 0xdc62
movq %r14, %rdi
callq 0x8770
jmp 0xd475
movq %rdx, -0xb8(%rbp)
movq (%rcx), %rdx
movq %rdx, -0xa8(%rbp)
movq 0x8(%rax), %rdx
movq %rdx, -0xb0(%rbp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq -0x98(%rbp), %rsi
movq (%rsi), %rax
leaq -0x138(%rbp), %rdi
callq *0x10(%rax)
leaq -0x158(%rbp), %rdi
leaq -0xb8(%rbp), %rsi
leaq -0x138(%rbp), %rdx
callq 0xdce1
leaq 0x1f2e3(%rip), %rsi     # 0x2c245
leaq -0x158(%rbp), %rdi
callq 0x8850
leaq -0xd0(%rbp), %r15
movq %r15, -0x10(%r15)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
jne 0xd032
movupd (%rcx), %xmm0
movupd %xmm0, (%r15)
jmp 0xd043
movq %rdx, -0xb8(%rbp)
movq (%rcx), %rdx
movq %rdx, -0xa8(%rbp)
movq 0x8(%rax), %rdx
movq %rdx, -0xb0(%rbp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq -0x98(%rbp), %rsi
movq (%rsi), %rax
leaq -0x138(%rbp), %rdi
callq *0x10(%rax)
leaq -0x158(%rbp), %rdi
leaq -0xb8(%rbp), %rsi
leaq -0x138(%rbp), %rdx
callq 0xdce1
leaq 0x1f24b(%rip), %rsi     # 0x2c245
leaq -0x158(%rbp), %rdi
callq 0x8850
leaq -0xd0(%rbp), %r15
movq %r15, -0x10(%r15)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
jne 0xd0b1
movupd (%rcx), %xmm0
movupd %xmm0, (%r15)
jmp 0xd0c2
movq %rdx, -0xe0(%rbp)
movq (%rcx), %rdx
movq %rdx, -0xd0(%rbp)
movq 0x8(%rax), %rdx
leaq -0xe0(%rbp), %rsi
movq %rdx, 0x8(%rsi)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq -0x178(%rbp), %rdi
movq %r12, %rdx
callq 0xdc7d
leaq 0x1f1ca(%rip), %rsi     # 0x2c241
leaq -0x178(%rbp), %rdi
callq 0x8850
leaq -0xf0(%rbp), %r12
movq %r12, -0x10(%r12)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
jne 0xd134
movupd (%rcx), %xmm0
movupd %xmm0, (%r12)
jmp 0xd145
movq %rdx, -0xe0(%rbp)
movq (%rcx), %rdx
movq %rdx, -0xd0(%rbp)
movq 0x8(%rax), %rdx
leaq -0xe0(%rbp), %rsi
movq %rdx, 0x8(%rsi)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq -0x178(%rbp), %rdi
movq -0x108(%rbp), %rdx
callq 0xdc7d
leaq 0x1f147(%rip), %rsi     # 0x2c241
leaq -0x178(%rbp), %rdi
callq 0x8850
leaq -0xf0(%rbp), %r12
movq %r12, -0x10(%r12)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
jne 0xd1b2
movupd (%rcx), %xmm0
movupd %xmm0, (%r12)
jmp 0xd1c3
movq %rdx, -0x100(%rbp)
movq (%rcx), %rdx
movq %rdx, -0xf0(%rbp)
movq 0x8(%rax), %rdx
leaq -0x100(%rbp), %rsi
movq %rdx, 0x8(%rsi)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq -0x88(%rbp), %rdi
movq -0x58(%rbp), %rdx
callq 0xdc7d
leaq 0x1f0d1(%rip), %rsi     # 0x2c24b
leaq -0x88(%rbp), %rdi
callq 0x8850
leaq -0x38(%rbp), %rcx
movq %rcx, -0x48(%rbp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
jne 0xd230
movupd (%rcx), %xmm0
leaq -0x38(%rbp), %rdx
movupd %xmm0, (%rdx)
jmp 0xd23b
movq %rdx, -0x100(%rbp)
movq (%rcx), %rdx
movq %rdx, -0xf0(%rbp)
movq 0x8(%rax), %rdx
leaq -0x100(%rbp), %rsi
movq %rdx, 0x8(%rsi)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq -0x88(%rbp), %rdi
movq -0x58(%rbp), %rdx
callq 0xdc7d
leaq 0x1f053(%rip), %rsi     # 0x2c24b
leaq -0x88(%rbp), %rdi
callq 0x8850
leaq -0x38(%rbp), %rcx
movq %rcx, -0x48(%rbp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
jne 0xd355
movupd (%rcx), %xmm0
leaq -0x38(%rbp), %rdx
movupd %xmm0, (%rdx)
jmp 0xd360
movq %rdx, -0x48(%rbp)
movq (%rcx), %rdx
movq %rdx, -0x38(%rbp)
movq 0x8(%rax), %rdx
movq %rdx, -0x40(%rbp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq -0x88(%rbp), %rdi
leaq -0x78(%rbp), %rax
cmpq %rax, %rdi
je 0xd267
callq 0x8350
movq -0x100(%rbp), %rdi
cmpq %r12, %rdi
je 0xd278
callq 0x8350
leaq -0x168(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xd28d
callq 0x8350
movq -0xe0(%rbp), %rdi
cmpq %r15, %rdi
je 0xd29e
callq 0x8350
leaq -0x148(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xd2b3
callq 0x8350
leaq -0x128(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xd2c8
callq 0x8350
movq -0xb8(%rbp), %rdi
cmpq %r14, %rdi
je 0xd2d9
callq 0x8350
leaq -0x188(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xd2ee
callq 0x8350
movl $0x28, %edi
callq 0x81f0
movq %rax, %r14
leaq -0x228(%rbp), %r12
movq %r12, -0x10(%r12)
movq -0x48(%rbp), %rsi
movq -0x40(%rbp), %rdx
addq %rsi, %rdx
leaq -0x238(%rbp), %rdi
callq 0x10d2a
movq -0x50(%rbp), %rax
movl 0x8(%rax), %edx
movb $0x1, %r15b
leaq -0x238(%rbp), %rsi
movq %r14, %rdi
callq 0xdc12
xorl %r15d, %r15d
leaq 0x2ed1f(%rip), %rsi     # 0x3c060
leaq 0x91a(%rip), %rdx       # 0xdc62
movq %r14, %rdi
callq 0x8770
jmp 0xd475
movq %rdx, -0x48(%rbp)
movq (%rcx), %rdx
movq %rdx, -0x38(%rbp)
movq 0x8(%rax), %rdx
movq %rdx, -0x40(%rbp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq -0x88(%rbp), %rdi
leaq -0x78(%rbp), %rax
cmpq %rax, %rdi
je 0xd38c
callq 0x8350
movq -0x100(%rbp), %rdi
cmpq %r12, %rdi
je 0xd39d
callq 0x8350
leaq -0x168(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xd3b2
callq 0x8350
movq -0xe0(%rbp), %rdi
cmpq %r15, %rdi
je 0xd3c3
callq 0x8350
leaq -0x148(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xd3d8
callq 0x8350
leaq -0x128(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xd3ed
callq 0x8350
movq -0xb8(%rbp), %rdi
cmpq %r14, %rdi
je 0xd3fe
callq 0x8350
leaq -0x188(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xd413
callq 0x8350
movl $0x28, %edi
callq 0x81f0
movq %rax, %r14
leaq -0x208(%rbp), %r12
movq %r12, -0x10(%r12)
movq -0x48(%rbp), %rsi
movq -0x40(%rbp), %rdx
addq %rsi, %rdx
leaq -0x218(%rbp), %rdi
callq 0x10d2a
movq -0x50(%rbp), %rax
movl 0x8(%rax), %edx
movb $0x1, %r15b
leaq -0x218(%rbp), %rsi
movq %r14, %rdi
callq 0xdc12
xorl %r15d, %r15d
leaq 0x2ebfa(%rip), %rsi     # 0x3c060
leaq 0x7f5(%rip), %rdx       # 0xdc62
movq %r14, %rdi
callq 0x8770
movq %rax, %rbx
movq -0x218(%rbp), %rdi
jmp 0xd5a5
jmp 0xd5b1
jmp 0xd4a1
movq %rax, %rbx
movq -0x238(%rbp), %rdi
jmp 0xd5a5
jmp 0xd5b1
jmp 0xd4bd
movq %rax, %rbx
movq -0x88(%rbp), %rdi
leaq -0x78(%rbp), %rax
cmpq %rax, %rdi
je 0xd4c0
callq 0x8350
jmp 0xd4c0
jmp 0xd4d5
movq %rax, %rbx
movq -0x100(%rbp), %rdi
cmpq %r12, %rdi
je 0xd4d8
callq 0x8350
jmp 0xd4d8
jmp 0xd4f1
movq %rax, %rbx
leaq -0x168(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xd4f4
callq 0x8350
jmp 0xd4f4
jmp 0xd53d
movq %rax, %rbx
movq -0xe0(%rbp), %rdi
cmpq %r15, %rdi
je 0xd540
callq 0x8350
jmp 0xd540
jmp 0xd559
movq %rax, %rbx
movq -0x48(%rbp), %rdi
cmpq %r13, %rdi
jne 0xd5ff
jmp 0xd604
movq %rax, %rbx
movq -0x48(%rbp), %rdi
cmpq %r13, %rdi
je 0xd534
callq 0x8350
jmp 0xd534
movq %rax, %rbx
leaq -0x78(%rbp), %rax
jmp 0xd5d0
movq %rax, %rbx
leaq -0x148(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xd55c
callq 0x8350
jmp 0xd55c
jmp 0xd575
movq %rax, %rbx
leaq -0x128(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xd578
callq 0x8350
jmp 0xd578
jmp 0xd5c6
movq %rax, %rbx
movq -0xb8(%rbp), %rdi
cmpq %r14, %rdi
je 0xd5c9
callq 0x8350
jmp 0xd5c9
movq %rax, %rbx
movq -0x258(%rbp), %rdi
jmp 0xd5a5
jmp 0xd5b1
jmp 0xd5ef
movq %rax, %rbx
movq -0x1f8(%rbp), %rdi
cmpq %r12, %rdi
je 0xd5b7
callq 0x8350
jmp 0xd5b7
movq %rax, %rbx
movb $0x1, %r15b
testb %r15b, %r15b
je 0xd5f2
movq %r14, %rdi
callq 0x82e0
jmp 0xd5f2
movq %rax, %rbx
leaq -0x188(%rbp), %rax
movq -0x10(%rax), %rdi
jmp 0xd5fa
movq %rax, %rbx
movq -0x88(%rbp), %rdi
leaq -0x78(%rbp), %rax
jmp 0xd5fa
movq %rax, %rbx
movq -0x48(%rbp), %rdi
jmp 0xd622
movq %rax, %rbx
movq -0x48(%rbp), %rdi
leaq -0x38(%rbp), %rax
cmpq %rax, %rdi
je 0xd604
callq 0x8350
movq %rbx, %rdi
callq 0x87b0
movq %rax, %rbx
movq -0x1b8(%rbp), %rdi
jmp 0xd622
movq %rax, %rbx
movq -0x1d8(%rbp), %rdi
cmpq %r15, %rdi
jne 0xd5ff
jmp 0xd604
nop