// File: 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
subq $0x6a0, %rsp            # imm = 0x6A0
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x8(%rbp), %rsi
movq %rsi, -0x568(%rbp)
movq -0x10(%rbp), %rax
addq $0x10, %rax
movq %rax, -0x560(%rbp)
leaq -0x58(%rbp), %rdi
movq %rdi, -0x558(%rbp)
callq 0x12440
movq -0x558(%rbp), %rsi
leaq 0x4d153(%rip), %rdx     # 0x5d74e
leaq -0x38(%rbp), %rdi
callq 0x123f0
jmp 0x10606
movq -0x560(%rbp), %rdi
leaq -0x38(%rbp), %rsi
callq 0x9490
jmp 0x10618
leaq -0x38(%rbp), %rdi
callq 0x9c30
leaq -0x58(%rbp), %rdi
callq 0x9c30
movl $0x0, -0x14(%rbp)
movq -0x568(%rbp), %rdi
movl -0x14(%rbp), %eax
movl %eax, -0x56c(%rbp)
addq $0x38, %rdi
callq 0x126c0
movq %rax, %rcx
movl -0x56c(%rbp), %eax
subl $0x1, %ecx
cmpl %ecx, %eax
jge 0x10763
movq -0x568(%rbp), %rdi
addq $0x38, %rdi
movslq -0x14(%rbp), %rsi
callq 0x126e0
movq (%rax), %rax
movq %rax, -0x70(%rbp)
movq -0x10(%rbp), %rax
addq $0x10, %rax
movq %rax, -0x580(%rbp)
movq -0x70(%rbp), %rsi
leaq -0x90(%rbp), %rdi
movq %rdi, -0x578(%rbp)
callq 0x12700
movq -0x580(%rbp), %rdi
movq -0x578(%rbp), %rsi
callq 0x9490
jmp 0x106b4
leaq -0x90(%rbp), %rdi
callq 0x9c30
movq -0x70(%rbp), %rdi
callq 0x12730
testb $0x1, %al
jne 0x106cf
jmp 0x10741
movq -0x10(%rbp), %rdi
addq $0x10, %rdi
leaq 0x4cf30(%rip), %rsi     # 0x5d60e
callq 0x9500
movq -0x70(%rbp), %rdi
movq -0x10(%rbp), %rsi
movq (%rdi), %rax
callq *0x18(%rax)
jmp 0x10741
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
jmp 0x10716
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
leaq -0x38(%rbp), %rdi
callq 0x9c30
leaq -0x58(%rbp), %rdi
callq 0x9c30
jmp 0x118d6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
leaq -0x90(%rbp), %rdi
callq 0x9c30
jmp 0x118d6
movq -0x10(%rbp), %rdi
addq $0x10, %rdi
leaq 0x4cedc(%rip), %rsi     # 0x5d62c
callq 0x9500
movl -0x14(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x14(%rbp)
jmp 0x10631
movq -0x568(%rbp), %rdi
addq $0x38, %rdi
callq 0x126c0
cmpq $0x0, %rax
jbe 0x10857
movq -0x568(%rbp), %rdi
addq $0x38, %rdi
movq %rdi, -0x598(%rbp)
movslq -0x14(%rbp), %rsi
callq 0x126e0
movq -0x598(%rbp), %rdi
movq (%rax), %rax
movq %rax, -0x98(%rbp)
movq -0x10(%rbp), %rax
addq $0x10, %rax
movq %rax, -0x590(%rbp)
movslq -0x14(%rbp), %rsi
callq 0x126e0
movq (%rax), %rsi
leaq -0xb8(%rbp), %rdi
movq %rdi, -0x588(%rbp)
callq 0x12700
movq -0x590(%rbp), %rdi
movq -0x588(%rbp), %rsi
callq 0x9490
jmp 0x107ec
leaq -0xb8(%rbp), %rdi
callq 0x9c30
movq -0x98(%rbp), %rdi
callq 0x12730
testb $0x1, %al
jne 0x1080a
jmp 0x1084e
movq -0x10(%rbp), %rdi
addq $0x10, %rdi
leaq 0x4cdf5(%rip), %rsi     # 0x5d60e
callq 0x9500
movq -0x98(%rbp), %rdi
movq -0x10(%rbp), %rsi
movq (%rdi), %rax
callq *0x18(%rax)
jmp 0x1084e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
leaq -0xb8(%rbp), %rdi
callq 0x9c30
jmp 0x118d6
movl -0x14(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x14(%rbp)
movq -0x568(%rbp), %rdi
addq $0x50, %rdi
callq 0x12750
movq %rax, -0xc0(%rbp)
movq -0x568(%rbp), %rdi
addq $0x50, %rdi
callq 0x127b0
movq %rax, -0xc8(%rbp)
leaq -0xc0(%rbp), %rdi
leaq -0xc8(%rbp), %rsi
callq 0x12780
testb $0x1, %al
jne 0x108a1
jmp 0x11604
movq -0x568(%rbp), %rax
movq 0x10(%rax), %rax
movq %rax, -0x5b0(%rbp)
leaq -0xc0(%rbp), %rdi
callq 0x12940
movq %rax, %rsi
addq $0x20, %rsi
leaq -0xf0(%rbp), %rdi
movq %rdi, -0x5a8(%rbp)
callq 0x9240
movq -0x5b0(%rbp), %rdi
movq -0x5a8(%rbp), %rsi
callq 0x127e0
movq %rax, -0x5a0(%rbp)
jmp 0x108f5
leaq -0xf0(%rbp), %rdi
callq 0x9c30
movq -0x5a0(%rbp), %rcx
movq -0x568(%rbp), %rax
movq %rcx, -0xd0(%rbp)
movq 0x10(%rax), %rax
movq %rax, -0x5c8(%rbp)
leaq -0xc0(%rbp), %rdi
callq 0x12940
movq %rax, %rsi
leaq -0x118(%rbp), %rdi
movq %rdi, -0x5c0(%rbp)
callq 0x9240
movq -0x5c8(%rbp), %rdi
movq -0x5c0(%rbp), %rsi
callq 0x127e0
movq %rax, -0x5b8(%rbp)
jmp 0x1095f
leaq -0x118(%rbp), %rdi
callq 0x9c30
movq -0x5b8(%rbp), %rax
movq %rax, -0xf8(%rbp)
cmpq $0x0, -0xd0(%rbp)
jne 0x10af3
leaq -0xc0(%rbp), %rdi
callq 0x12940
movq %rax, %rdx
addq $0x20, %rdx
leaq 0x4cc8e(%rip), %rsi     # 0x5d62f
leaq -0x158(%rbp), %rdi
movq %rdi, -0x5d0(%rbp)
callq 0x12960
movq -0x5d0(%rbp), %rsi
leaq 0x511cd(%rip), %rdx     # 0x61b8f
leaq -0x138(%rbp), %rdi
callq 0x123f0
jmp 0x109d0
leaq -0x158(%rbp), %rdi
callq 0x9c30
movb $0x1, -0x179(%rbp)
movl $0x28, %edi
callq 0x9290
movq %rax, -0x5d8(%rbp)
leaq -0x178(%rbp), %rdi
leaq -0x138(%rbp), %rsi
callq 0x9240
jmp 0x10a09
movq -0x5d8(%rbp), %rdi
movq -0x568(%rbp), %rax
movl 0x8(%rax), %edx
leaq -0x178(%rbp), %rsi
callq 0x12a70
jmp 0x10a28
movq -0x5d8(%rbp), %rdi
movb $0x0, -0x179(%rbp)
leaq 0x7061b(%rip), %rsi     # 0x81058
leaq 0x209c(%rip), %rdx      # 0x12ae0
callq 0x9a20
jmp 0x118df
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
leaq -0xf0(%rbp), %rdi
callq 0x9c30
jmp 0x118d6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
leaq -0x118(%rbp), %rdi
callq 0x9c30
jmp 0x118d6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
leaq -0x158(%rbp), %rdi
callq 0x9c30
jmp 0x118d6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
jmp 0x10acb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
leaq -0x178(%rbp), %rdi
callq 0x9c30
testb $0x1, -0x179(%rbp)
jne 0x10ad6
jmp 0x10ae2
movq -0x5d8(%rbp), %rdi
callq 0x9400
leaq -0x138(%rbp), %rdi
callq 0x9c30
jmp 0x118d6
movq -0xd0(%rbp), %rsi
movq (%rsi), %rax
leaq -0x1a0(%rbp), %rdi
callq *0x10(%rax)
movq -0x568(%rbp), %rsi
addq $0x18, %rsi
leaq -0x1a0(%rbp), %rdi
callq 0x12b00
movb %al, %cl
movb $0x0, -0x1c1(%rbp)
xorl %eax, %eax
testb $0x1, %cl
movb %al, -0x5d9(%rbp)
jne 0x10b39
jmp 0x10bc4
movq -0x568(%rbp), %rdi
addq $0x18, %rdi
leaq 0x4c507(%rip), %rsi     # 0x5d052
callq 0xd860
movb %al, -0x5da(%rbp)
jmp 0x10b58
movb -0x5da(%rbp), %cl
xorl %eax, %eax
testb $0x1, %cl
movb %al, -0x5db(%rbp)
jne 0x10b6d
jmp 0x10bb6
movq -0xd0(%rbp), %rsi
movq (%rsi), %rax
movq 0x10(%rax), %rax
leaq -0x1c0(%rbp), %rdi
callq *%rax
jmp 0x10b86
movb $0x1, -0x1c1(%rbp)
leaq 0x4c4c3(%rip), %rsi     # 0x5d057
leaq -0x1c0(%rbp), %rdi
callq 0xd860
movb %al, -0x5dc(%rbp)
jmp 0x10ba8
movb -0x5dc(%rbp), %al
movb %al, -0x5db(%rbp)
jmp 0x10bb6
movb -0x5db(%rbp), %al
xorb $-0x1, %al
movb %al, -0x5d9(%rbp)
movb -0x5d9(%rbp), %al
movb %al, -0x5dd(%rbp)
testb $0x1, -0x1c1(%rbp)
jne 0x10bdb
jmp 0x10be7
leaq -0x1c0(%rbp), %rdi
callq 0x9c30
leaq -0x1a0(%rbp), %rdi
callq 0x9c30
movb -0x5dd(%rbp), %al
testb $0x1, %al
jne 0x10c02
jmp 0x10f58
leaq -0xc0(%rbp), %rdi
callq 0x12940
movq %rax, %rdx
addq $0x20, %rdx
leaq 0x4ca1d(%rip), %rsi     # 0x5d639
leaq -0x2c8(%rbp), %rdi
movq %rdi, -0x5e8(%rbp)
callq 0x12960
movq -0x5e8(%rbp), %rsi
leaq 0x4ca12(%rip), %rdx     # 0x5d64f
leaq -0x2a8(%rbp), %rdi
callq 0x123f0
jmp 0x10c4b
movq -0xd0(%rbp), %rsi
movq (%rsi), %rax
movq 0x10(%rax), %rax
leaq -0x2e8(%rbp), %rdi
callq *%rax
jmp 0x10c64
leaq -0x288(%rbp), %rdi
leaq -0x2a8(%rbp), %rsi
leaq -0x2e8(%rbp), %rdx
callq 0x12b80
jmp 0x10c80
leaq 0x4c9cc(%rip), %rdx     # 0x5d653
leaq -0x268(%rbp), %rdi
leaq -0x288(%rbp), %rsi
callq 0x123f0
jmp 0x10c9c
leaq -0xc0(%rbp), %rdi
callq 0x12940
movq %rax, %rdx
leaq -0x248(%rbp), %rdi
leaq -0x268(%rbp), %rsi
callq 0x12b30
jmp 0x10cc0
leaq 0x4c988(%rip), %rdx     # 0x5d64f
leaq -0x228(%rbp), %rdi
leaq -0x248(%rbp), %rsi
callq 0x123f0
jmp 0x10cdc
movq -0x568(%rbp), %rdx
addq $0x18, %rdx
leaq -0x208(%rbp), %rdi
leaq -0x228(%rbp), %rsi
callq 0x12b30
jmp 0x10cfc
leaq 0x4c956(%rip), %rdx     # 0x5d659
leaq -0x1e8(%rbp), %rdi
leaq -0x208(%rbp), %rsi
callq 0x123f0
jmp 0x10d18
leaq -0x208(%rbp), %rdi
callq 0x9c30
leaq -0x228(%rbp), %rdi
callq 0x9c30
leaq -0x248(%rbp), %rdi
callq 0x9c30
leaq -0x268(%rbp), %rdi
callq 0x9c30
leaq -0x288(%rbp), %rdi
callq 0x9c30
leaq -0x2e8(%rbp), %rdi
callq 0x9c30
leaq -0x2a8(%rbp), %rdi
callq 0x9c30
leaq -0x2c8(%rbp), %rdi
callq 0x9c30
movb $0x1, -0x309(%rbp)
movl $0x28, %edi
callq 0x9290
movq %rax, -0x5f0(%rbp)
leaq -0x308(%rbp), %rdi
leaq -0x1e8(%rbp), %rsi
callq 0x9240
jmp 0x10da5
movq -0x5f0(%rbp), %rdi
movq -0x568(%rbp), %rax
movl 0x8(%rax), %edx
leaq -0x308(%rbp), %rsi
callq 0x12a70
jmp 0x10dc4
movq -0x5f0(%rbp), %rdi
movb $0x0, -0x309(%rbp)
leaq 0x7027f(%rip), %rsi     # 0x81058
leaq 0x1d00(%rip), %rdx      # 0x12ae0
callq 0x9a20
jmp 0x118df
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
jmp 0x10e1d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
testb $0x1, -0x1c1(%rbp)
jne 0x10e0f
jmp 0x10e1b
leaq -0x1c0(%rbp), %rdi
callq 0x9c30
jmp 0x10e1d
leaq -0x1a0(%rbp), %rdi
callq 0x9c30
jmp 0x118d6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
jmp 0x10ef9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
jmp 0x10eed
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
jmp 0x10ee1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
jmp 0x10ed5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
jmp 0x10ec9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
jmp 0x10ebd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
jmp 0x10eb1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
leaq -0x208(%rbp), %rdi
callq 0x9c30
leaq -0x228(%rbp), %rdi
callq 0x9c30
leaq -0x248(%rbp), %rdi
callq 0x9c30
leaq -0x268(%rbp), %rdi
callq 0x9c30
leaq -0x288(%rbp), %rdi
callq 0x9c30
leaq -0x2e8(%rbp), %rdi
callq 0x9c30
leaq -0x2a8(%rbp), %rdi
callq 0x9c30
leaq -0x2c8(%rbp), %rdi
callq 0x9c30
jmp 0x118d6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
jmp 0x10f30
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
leaq -0x308(%rbp), %rdi
callq 0x9c30
testb $0x1, -0x309(%rbp)
jne 0x10f3b
jmp 0x10f47
movq -0x5f0(%rbp), %rdi
callq 0x9400
leaq -0x1e8(%rbp), %rdi
callq 0x9c30
jmp 0x118d6
movq -0x568(%rbp), %rdi
addq $0x18, %rdi
leaq 0x4c0ed(%rip), %rsi     # 0x5d057
callq 0xd860
movb %al, %cl
movb $0x0, -0x331(%rbp)
xorl %eax, %eax
testb $0x1, %cl
movb %al, -0x5f1(%rbp)
jne 0x10f87
jmp 0x10fd5
movq -0xd0(%rbp), %rsi
movq (%rsi), %rax
movq 0x10(%rax), %rax
leaq -0x330(%rbp), %rdi
movq %rdi, -0x600(%rbp)
callq *%rax
movq -0x600(%rbp), %rdi
movb $0x1, -0x331(%rbp)
leaq 0x4c09d(%rip), %rsi     # 0x5d057
callq 0xd860
movb %al, -0x5f2(%rbp)
jmp 0x10fc7
movb -0x5f2(%rbp), %al
movb %al, -0x5f1(%rbp)
jmp 0x10fd5
movb -0x5f1(%rbp), %al
movb %al, -0x601(%rbp)
testb $0x1, -0x331(%rbp)
jne 0x10fec
jmp 0x10ff8
leaq -0x330(%rbp), %rdi
callq 0x9c30
movb -0x601(%rbp), %al
testb $0x1, %al
jne 0x11004
jmp 0x11059
movq -0xf8(%rbp), %rax
movq %rax, -0x610(%rbp)
movq -0xd0(%rbp), %rdi
callq 0x12c70
movq -0x610(%rbp), %rdi
movl %eax, %esi
callq 0x12c50
jmp 0x11571
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
testb $0x1, -0x331(%rbp)
jne 0x11048
jmp 0x11054
leaq -0x330(%rbp), %rdi
callq 0x9c30
jmp 0x118d6
movq -0x568(%rbp), %rdi
addq $0x18, %rdi
leaq 0x4bfe7(%rip), %rsi     # 0x5d052
callq 0xd860
movb %al, %cl
movb $0x0, -0x359(%rbp)
xorl %eax, %eax
testb $0x1, %cl
movb %al, -0x611(%rbp)
jne 0x11088
jmp 0x110d6
movq -0xd0(%rbp), %rsi
movq (%rsi), %rax
movq 0x10(%rax), %rax
leaq -0x358(%rbp), %rdi
movq %rdi, -0x620(%rbp)
callq *%rax
movq -0x620(%rbp), %rdi
movb $0x1, -0x359(%rbp)
leaq 0x4bf9c(%rip), %rsi     # 0x5d057
callq 0xd860
movb %al, -0x612(%rbp)
jmp 0x110c8
movb -0x612(%rbp), %al
movb %al, -0x611(%rbp)
jmp 0x110d6
movb -0x611(%rbp), %al
movb %al, -0x621(%rbp)
testb $0x1, -0x359(%rbp)
jne 0x110ed
jmp 0x110f9
leaq -0x358(%rbp), %rdi
callq 0x9c30
movb -0x621(%rbp), %al
testb $0x1, %al
jne 0x11105
jmp 0x1115c
movq -0xf8(%rbp), %rax
movq %rax, -0x630(%rbp)
movq -0xd0(%rbp), %rdi
callq 0x12c70
movq -0x630(%rbp), %rdi
cvtsi2sd %eax, %xmm0
callq 0x12c90
jmp 0x1156f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
testb $0x1, -0x359(%rbp)
jne 0x1114b
jmp 0x11157
leaq -0x358(%rbp), %rdi
callq 0x9c30
jmp 0x118d6
movq -0x568(%rbp), %rdi
addq $0x18, %rdi
leaq 0x4bee4(%rip), %rsi     # 0x5d052
callq 0xd860
movb %al, %cl
movb $0x0, -0x381(%rbp)
xorl %eax, %eax
testb $0x1, %cl
movb %al, -0x631(%rbp)
jne 0x1118b
jmp 0x111d9
movq -0xd0(%rbp), %rsi
movq (%rsi), %rax
movq 0x10(%rax), %rax
leaq -0x380(%rbp), %rdi
movq %rdi, -0x640(%rbp)
callq *%rax
movq -0x640(%rbp), %rdi
movb $0x1, -0x381(%rbp)
leaq 0x4be94(%rip), %rsi     # 0x5d052
callq 0xd860
movb %al, -0x632(%rbp)
jmp 0x111cb
movb -0x632(%rbp), %al
movb %al, -0x631(%rbp)
jmp 0x111d9
movb -0x631(%rbp), %al
movb %al, -0x641(%rbp)
testb $0x1, -0x381(%rbp)
jne 0x111f0
jmp 0x111fc
leaq -0x380(%rbp), %rdi
callq 0x9c30
movb -0x641(%rbp), %al
testb $0x1, %al
jne 0x11208
jmp 0x1125b
movq -0xf8(%rbp), %rax
movq %rax, -0x650(%rbp)
movq -0xd0(%rbp), %rdi
callq 0x12cc0
movq -0x650(%rbp), %rdi
callq 0x12c90
jmp 0x1156d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
testb $0x1, -0x381(%rbp)
jne 0x1124a
jmp 0x11256
leaq -0x380(%rbp), %rdi
callq 0x9c30
jmp 0x118d6
leaq -0xc0(%rbp), %rdi
callq 0x12940
movq %rax, %rdx
addq $0x20, %rdx
leaq 0x4c3c4(%rip), %rsi     # 0x5d639
leaq -0x488(%rbp), %rdi
movq %rdi, -0x658(%rbp)
callq 0x12960
movq -0x658(%rbp), %rsi
leaq 0x4c3b9(%rip), %rdx     # 0x5d64f
leaq -0x468(%rbp), %rdi
callq 0x123f0
jmp 0x112a4
movq -0xd0(%rbp), %rsi
movq (%rsi), %rax
movq 0x10(%rax), %rax
leaq -0x4a8(%rbp), %rdi
callq *%rax
jmp 0x112bd
leaq -0x448(%rbp), %rdi
leaq -0x468(%rbp), %rsi
leaq -0x4a8(%rbp), %rdx
callq 0x12b80
jmp 0x112d9
leaq 0x4c373(%rip), %rdx     # 0x5d653
leaq -0x428(%rbp), %rdi
leaq -0x448(%rbp), %rsi
callq 0x123f0
jmp 0x112f5
leaq -0xc0(%rbp), %rdi
callq 0x12940
movq %rax, %rdx
leaq -0x408(%rbp), %rdi
leaq -0x428(%rbp), %rsi
callq 0x12b30
jmp 0x11319
leaq 0x4c32f(%rip), %rdx     # 0x5d64f
leaq -0x3e8(%rbp), %rdi
leaq -0x408(%rbp), %rsi
callq 0x123f0
jmp 0x11335
movq -0x568(%rbp), %rdx
addq $0x18, %rdx
leaq -0x3c8(%rbp), %rdi
leaq -0x3e8(%rbp), %rsi
callq 0x12b30
jmp 0x11355
leaq 0x4c2fd(%rip), %rdx     # 0x5d659
leaq -0x3a8(%rbp), %rdi
leaq -0x3c8(%rbp), %rsi
callq 0x123f0
jmp 0x11371
leaq -0x3c8(%rbp), %rdi
callq 0x9c30
leaq -0x3e8(%rbp), %rdi
callq 0x9c30
leaq -0x408(%rbp), %rdi
callq 0x9c30
leaq -0x428(%rbp), %rdi
callq 0x9c30
leaq -0x448(%rbp), %rdi
callq 0x9c30
leaq -0x4a8(%rbp), %rdi
callq 0x9c30
leaq -0x468(%rbp), %rdi
callq 0x9c30
leaq -0x488(%rbp), %rdi
callq 0x9c30
movb $0x1, -0x4c9(%rbp)
movl $0x28, %edi
callq 0x9290
movq %rax, -0x660(%rbp)
leaq -0x4c8(%rbp), %rdi
leaq -0x3a8(%rbp), %rsi
callq 0x9240
jmp 0x113fe
movq -0x660(%rbp), %rdi
movq -0x568(%rbp), %rax
movl 0x8(%rax), %edx
leaq -0x4c8(%rbp), %rsi
callq 0x12a70
jmp 0x1141d
movq -0x660(%rbp), %rdi
movb $0x0, -0x4c9(%rbp)
leaq 0x6fc26(%rip), %rsi     # 0x81058
leaq 0x16a7(%rip), %rdx      # 0x12ae0
callq 0x9a20
jmp 0x118df
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
jmp 0x1150e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
jmp 0x11502
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
jmp 0x114f6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
jmp 0x114ea
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
jmp 0x114de
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
jmp 0x114d2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
jmp 0x114c6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
leaq -0x3c8(%rbp), %rdi
callq 0x9c30
leaq -0x3e8(%rbp), %rdi
callq 0x9c30
leaq -0x408(%rbp), %rdi
callq 0x9c30
leaq -0x428(%rbp), %rdi
callq 0x9c30
leaq -0x448(%rbp), %rdi
callq 0x9c30
leaq -0x4a8(%rbp), %rdi
callq 0x9c30
leaq -0x468(%rbp), %rdi
callq 0x9c30
leaq -0x488(%rbp), %rdi
callq 0x9c30
jmp 0x118d6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
jmp 0x11545
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
leaq -0x4c8(%rbp), %rdi
callq 0x9c30
testb $0x1, -0x4c9(%rbp)
jne 0x11550
jmp 0x1155c
movq -0x660(%rbp), %rdi
callq 0x9400
leaq -0x3a8(%rbp), %rdi
callq 0x9c30
jmp 0x118d6
jmp 0x1156f
jmp 0x11571
cmpl $0x0, -0x14(%rbp)
jle 0x1158b
movq -0x10(%rbp), %rdi
addq $0x10, %rdi
leaq 0x4c0a6(%rip), %rsi     # 0x5d62c
callq 0x9500
movq -0x10(%rbp), %rax
addq $0x10, %rax
movq %rax, -0x670(%rbp)
leaq -0xc0(%rbp), %rdi
callq 0x12940
movq -0x670(%rbp), %rdi
movq %rax, %rsi
callq 0x9490
movq %rax, %rdi
leaq 0x4c04f(%rip), %rsi     # 0x5d60e
callq 0x9500
movq %rax, -0x668(%rbp)
leaq -0xc0(%rbp), %rdi
callq 0x12940
movq -0x668(%rbp), %rdi
movq %rax, %rsi
addq $0x20, %rsi
callq 0x9490
movl -0x14(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x14(%rbp)
leaq -0xc0(%rbp), %rdi
callq 0x12ce0
jmp 0x1086e
movq -0x568(%rbp), %rdi
addq $0x80, %rdi
callq 0x12d10
movq %rax, -0x4d8(%rbp)
movq -0x568(%rbp), %rdi
addq $0x80, %rdi
callq 0x12d70
movq %rax, -0x4e0(%rbp)
leaq -0x4d8(%rbp), %rdi
leaq -0x4e0(%rbp), %rsi
callq 0x12d40
testb $0x1, %al
jne 0x11654
jmp 0x118aa
cmpl $0x0, -0x14(%rbp)
jle 0x1166e
movq -0x10(%rbp), %rdi
addq $0x10, %rdi
leaq 0x4bfc3(%rip), %rsi     # 0x5d62c
callq 0x9500
movq -0x10(%rbp), %rax
addq $0x10, %rax
movq %rax, -0x690(%rbp)
leaq -0x4d8(%rbp), %rdi
movq %rdi, -0x688(%rbp)
callq 0x12da0
movq -0x690(%rbp), %rdi
movq %rax, %rsi
callq 0x9490
movq %rax, %rdi
leaq 0x4bf65(%rip), %rsi     # 0x5d60e
callq 0x9500
movq -0x688(%rbp), %rdi
movq %rax, -0x680(%rbp)
callq 0x12da0
movq %rax, %rcx
movq -0x568(%rbp), %rax
movq 0x20(%rcx), %rsi
movq 0x10(%rax), %rdx
movl 0x8(%rax), %ecx
leaq -0x508(%rbp), %rdi
movq %rdi, -0x678(%rbp)
callq 0x12dc0
movq -0x680(%rbp), %rdi
movq -0x678(%rbp), %rsi
callq 0x9490
jmp 0x116fe
leaq -0x508(%rbp), %rdi
callq 0x9c30
leaq -0x4d8(%rbp), %rdi
callq 0x12da0
movq 0x20(%rax), %rdi
callq 0x13600
movl %eax, -0x4e4(%rbp)
cmpl $0x1, -0x4e4(%rbp)
jne 0x1178f
movq -0x568(%rbp), %rdi
addq $0x18, %rdi
leaq 0x70f60(%rip), %rsi     # 0x826a0
callq 0x13620
testb $0x1, %al
jne 0x1174b
jmp 0x1178f
movq 0x70876(%rip), %rdi     # 0x81fc8
leaq 0x4bf18(%rip), %rsi     # 0x5d671
callq 0x9500
movq %rax, %rdi
movq 0x70830(%rip), %rsi     # 0x81f98
callq 0x95a0
jmp 0x11897
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
leaq -0x508(%rbp), %rdi
callq 0x9c30
jmp 0x118d6
movq -0x568(%rbp), %rdi
addq $0x18, %rdi
leaq 0x4bf81(%rip), %rsi     # 0x5d722
callq 0xd860
testb $0x1, %al
jne 0x117af
jmp 0x11895
leaq -0x4d8(%rbp), %rdi
callq 0x12da0
movq %rax, %rdx
leaq 0x4bf0d(%rip), %rsi     # 0x5d6d2
leaq -0x528(%rbp), %rdi
movq %rdi, -0x6a0(%rbp)
callq 0x12960
movb $0x1, -0x549(%rbp)
movl $0x28, %edi
callq 0x9290
movq -0x6a0(%rbp), %rsi
movq %rax, -0x698(%rbp)
leaq -0x548(%rbp), %rdi
callq 0x9240
jmp 0x11805
movq -0x698(%rbp), %rdi
movq -0x568(%rbp), %rax
movl 0x8(%rax), %edx
leaq -0x548(%rbp), %rsi
callq 0x12a70
jmp 0x11824
movq -0x698(%rbp), %rdi
movb $0x0, -0x549(%rbp)
leaq 0x6f81f(%rip), %rsi     # 0x81058
leaq 0x12a0(%rip), %rdx      # 0x12ae0
callq 0x9a20
jmp 0x118df
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
jmp 0x11870
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
leaq -0x548(%rbp), %rdi
callq 0x9c30
testb $0x1, -0x549(%rbp)
jne 0x1187b
jmp 0x11887
movq -0x698(%rbp), %rdi
callq 0x9400
leaq -0x528(%rbp), %rdi
callq 0x9c30
jmp 0x118d6
jmp 0x11897
jmp 0x11899
leaq -0x4d8(%rbp), %rdi
callq 0x136b0
jmp 0x1161e
movq -0x10(%rbp), %rdi
addq $0x10, %rdi
leaq 0x502ee(%rip), %rsi     # 0x61ba7
callq 0x9500
movq %rax, %rdi
movq 0x706d0(%rip), %rsi     # 0x81f98
callq 0x95a0
addq $0x6a0, %rsp            # imm = 0x6A0
popq %rbp
retq
movq -0x60(%rbp), %rdi
callq 0x9a90
nop