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

	  /* Se um bloco pai não foi atribuido, algo saiu errado */
	  if(ownerBlock == NULL){
		  std::string errorMsg = "Atribuicao sem bloco de codigo pai.";
		  throw ISourceErrorException(errorMsg, myLine);
	  }

	  /* Realiza-se a obtenção das variáveis utilizadas na atribuição.
	   * Ambas devem ter sido previamente definidas, uma vez que se trata
	   * de uma atribuição e não definição.
	   */
	  leftVariable = ownerBlock->getLocalVariable(leftVariableId);
	  rightVariable = ownerBlock->getLocalVariable(rightVariableId);

	  /* Como dito, a variável que receberá o valor deve ter sido previamente
	   * definida.
	   */
	  if(leftVariable == NULL){
		  std::string errorMsg = "Variavel " + *leftVariableId + "nao definida.";
		  throw ISourceErrorException(errorMsg, myLine);
	  }

	  /* Escreve-se o nome da variável e o simbolo de atribuição no codigo parcial. */
	  fileStream << leftVariable->getId() + " = ";

	  /* Caso o valor de atribuição seja numérico ou string
	   * verifica-se se existe compatibilidade de tipos
	   */
	  if(rightIsValue || rightIsStrValue){
		  bool attrError = false, attrWarning = false;

		  /* Não pode-se atribuir valores numericos a valores String */
		  if( leftVariable->getType() == IString::myType && rightIsValue)
			  attrError = true;
		  /* Não pode-se atribuir valores string a valores numéricos */
		  else if( (leftVariable->getType() == IInteger::myType || leftVariable->getType() == IReal::myType ) &&
				  rightIsStrValue)
			  attrError = true;
		  /* Atribuições reais a variaveis inteiras causam perdas de dados */
		  else  if( leftVariable->getType() == IInteger::myType && rightIsValue && !rightIsInteger)
			  attrWarning = true;

		  if(attrError){
			  //Erro
			  std::string rightType = (rightIsValue) ? "numerica" : "string";
			  std::string errorMsg = "Impossível atribuir um tipo " + rightType + " a uma variavel do tipo " + leftVariable->getType();
			  throw ISourceErrorException(errorMsg, myLine);
		  }else if(attrWarning){
			  //Warning.
			  std::cout << "Atencao: usar uma variavel real em uma operacao para uma variavel inteira causa perda de dados. " << std::endl;
			  fileStream << "(int)";
		  }

		  std::string outValue;

		  /* Escreve-se o valor no código parcial */
		  if(rightIsStrValue)
			  outValue = ("\"" + (*rightStrValue) + "\"");
		  else
			  outValue = (rightIsInteger) ? std::to_string(rightValueInt) : std::to_string(rightValue);

		  fileStream << outValue << ";\n";
	  }
	  /* Do contrário, se o valor for uma expressão matemática,
	   * verifica-se a compatibilidade de tipos
	   */
	  else if(rightIsMath){
		  /* Escreve-se a expressão no código parcial */
		  fileStream << rightVariableMath->checkAndGetExpression(ownerBlock, myLine) << ";\n";

		  /* Analisa-se o tipo de retorno da expressão matemática e o tipo da
		   * variável que receberá o valor. Se o valor o tipo da variável for String,
		   * então a atribuição não é permitida.
		   * Se a variável for inteira e o valor de retorno da expressão for real,
		   * existe perda de dados, e gera-se um warning.
		   */
		  std::string type = leftVariable->getType();
		  if(rightVariableMath->getMathType() == IMath::TYPE_REAL && type == IInteger::myType){
			  //warning
			  std::cout << "Atencao: usar uma variavel real em uma operacao para uma variavel inteira causa perda de dados. " << std::endl;
		  }else if(type == IString::myType){
			  std::string errorMsg = "Impossivel atribuir uma expressao matematica a variavel string " + leftVariable->getId();
			  throw ISourceErrorException(errorMsg, myLine);
		  }
	  }
	  /*
	   * Finalmente, se o valor de atribuição for outra variável, garante-se a compatibilidade de tipo
	   * e escreve-se seu nome do código parcial.
	   */
	  else{
		  if(rightVariable != NULL ){

			  if(rightVariable->getType() != leftVariable->getType() && !(leftVariable->getType() == "real" && rightVariable->getType() == "inteiro") ){
				  std::string errorMsg = "Impossivel atribuir '" + rightVariable->getId() + "' (" + rightVariable->getType() + ") a '" + leftVariable->getId() + "' (" + leftVariable->getType() + "). Tipos incompativeis.";
				  throw ISourceErrorException(errorMsg, myLine);
			  }

			  fileStream  << rightVariable->getId() << ";\n";
		  }
		  else{
			  std::string errorMsg = "Variavel " + *rightVariableId + " nao declarada.";
			  throw ISourceErrorException(errorMsg, myLine);
		  }

	  }

  }

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
subq $0x240, %rsp            # imm = 0x240
movq %rdi, %rbx
movq 0x10(%rdi), %rdi
testq %rdi, %rdi
je 0xe5f6
movq %rsi, %r14
movq 0x48(%rbx), %rsi
callq 0xebdc
movq %rax, 0x18(%rbx)
movq 0x10(%rbx), %rdi
movq 0x50(%rbx), %rsi
callq 0xebdc
movq %rax, 0x20(%rbx)
movq 0x18(%rbx), %rsi
testq %rsi, %rsi
je 0xe658
addq $0x8, %rsi
leaq -0x60(%rbp), %r15
movq %r15, %rdi
callq 0x85b0
leaq 0x1a14b(%rip), %rdx     # 0x28200
leaq -0x40(%rbp), %rdi
movq %r15, %rsi
callq 0xc63c
addq $0x10, %r14
leaq -0x40(%rbp), %rsi
movq %r14, %rdi
callq 0x8340
leaq -0x40(%rbp), %rdi
callq 0x8930
leaq -0x60(%rbp), %rdi
callq 0x8930
cmpb $0x0, 0x59(%rbx)
jne 0xe0f3
cmpb $0x1, 0x5a(%rbx)
jne 0xe28e
movq 0x18(%rbx), %rsi
movq (%rsi), %rax
leaq -0x40(%rbp), %r15
movq %r15, %rdi
callq *0x10(%rax)
leaq 0x2e3cd(%rip), %rsi     # 0x3c4d8
movq %r15, %rdi
callq 0xce8f
testb %al, %al
je 0xe12e
movb 0x59(%rbx), %r15b
leaq -0x40(%rbp), %rdi
callq 0x8930
testb %r15b, %r15b
je 0xe137
jmp 0xe511
leaq -0x40(%rbp), %rdi
callq 0x8930
movq 0x18(%rbx), %rsi
movq (%rsi), %rax
leaq -0x40(%rbp), %r15
movq %r15, %rdi
callq *0x10(%rax)
leaq 0x2e3c9(%rip), %rsi     # 0x3c518
movq %r15, %rdi
callq 0xce8f
testb %al, %al
je 0xe161
movb 0x5a(%rbx), %r15b
jmp 0xe191
movq 0x18(%rbx), %rsi
movq (%rsi), %rax
leaq -0x60(%rbp), %rdi
callq *0x10(%rax)
leaq 0x2e382(%rip), %rsi     # 0x3c4f8
leaq -0x60(%rbp), %r12
movq %r12, %rdi
callq 0xce8f
movl %eax, %r15d
andb 0x5a(%rbx), %r15b
movq %r12, %rdi
callq 0x8930
leaq -0x40(%rbp), %rdi
callq 0x8930
testb %r15b, %r15b
jne 0xe511
movq 0x18(%rbx), %rsi
movq (%rsi), %rax
leaq -0x40(%rbp), %r15
movq %r15, %rdi
callq *0x10(%rax)
leaq 0x2e35d(%rip), %rsi     # 0x3c518
movq %r15, %rdi
callq 0xce8f
testb %al, %al
je 0xe20b
cmpb $0x0, 0x59(%rbx)
je 0xe20b
movb 0x58(%rbx), %r15b
leaq -0x40(%rbp), %rdi
callq 0x8930
testb %r15b, %r15b
jne 0xe214
movq 0x2ddda(%rip), %rdi     # 0x3bfc0
leaq 0x1a076(%rip), %rsi     # 0x28263
callq 0x8390
movq %rax, %rdi
callq 0x81f0
leaq 0x1a1c6(%rip), %rsi     # 0x283c7
movq %r14, %rdi
callq 0x8390
jmp 0xe214
leaq -0x40(%rbp), %rdi
callq 0x8930
leaq -0x30(%rbp), %rax
movq %rax, -0x10(%rax)
andq $0x0, -0x8(%rax)
movb $0x0, (%rax)
cmpb $0x1, 0x5a(%rbx)
jne 0xe273
movq 0x38(%rbx), %rdx
leaq 0x19e69(%rip), %rsi     # 0x2809e
leaq -0x80(%rbp), %rdi
callq 0xc83b
leaq 0x19e59(%rip), %rdx     # 0x2809e
leaq -0x60(%rbp), %rdi
leaq -0x80(%rbp), %rsi
callq 0xc63c
leaq -0x40(%rbp), %rdi
leaq -0x60(%rbp), %rbx
movq %rbx, %rsi
callq 0x84d0
movq %rbx, %rdi
callq 0x8930
leaq -0x80(%rbp), %rdi
jmp 0xe344
cmpb $0x1, 0x58(%rbx)
jne 0xe323
movl 0x30(%rbx), %esi
leaq -0x60(%rbp), %rdi
callq 0xec36
jmp 0xe331
cmpb $0x1, 0x5b(%rbx)
jne 0xe37d
movq 0x40(%rbx), %rsi
movq 0x10(%rbx), %rdx
movl 0x8(%rbx), %ecx
leaq -0x40(%rbp), %r15
movq %r15, %rdi
callq 0xc9a2
movq %r14, %rdi
movq %r15, %rsi
callq 0x8340
leaq 0x1e5c7(%rip), %rsi     # 0x2c888
movq %rax, %rdi
callq 0x8390
leaq -0x40(%rbp), %rdi
callq 0x8930
movq 0x18(%rbx), %rsi
movq (%rsi), %rax
leaq -0x40(%rbp), %rdi
callq *0x10(%rax)
movq 0x40(%rbx), %rax
cmpl $0x1, 0x38(%rax)
jne 0xe438
leaq 0x2e223(%rip), %rsi     # 0x3c518
leaq -0x40(%rbp), %rdi
callq 0xce8f
testb %al, %al
je 0xe438
movq 0x2dcb3(%rip), %rdi     # 0x3bfc0
leaq 0x19f4f(%rip), %rsi     # 0x28263
callq 0x8390
movq %rax, %rdi
callq 0x81f0
jmp 0xe364
movsd 0x28(%rbx), %xmm0
leaq -0x60(%rbp), %rdi
callq 0xec96
leaq -0x40(%rbp), %rdi
leaq -0x60(%rbp), %rbx
movq %rbx, %rsi
callq 0x84d0
movq %rbx, %rdi
callq 0x8930
leaq -0x40(%rbp), %rsi
movq %r14, %rdi
callq 0x8340
leaq 0x1e52c(%rip), %rsi     # 0x2c888
movq %rax, %rdi
callq 0x8390
leaq -0x40(%rbp), %rdi
callq 0x8930
addq $0x240, %rsp            # imm = 0x240
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
movq 0x20(%rbx), %rsi
testq %rsi, %rsi
je 0xe6d9
movq (%rsi), %rax
leaq -0x40(%rbp), %rdi
callq *0x10(%rax)
movq 0x18(%rbx), %rsi
movq (%rsi), %rax
leaq -0x60(%rbp), %rdi
callq *0x10(%rax)
leaq -0x40(%rbp), %rdi
leaq -0x60(%rbp), %rsi
callq 0xc8fa
testb %al, %al
je 0xe4cc
movq 0x18(%rbx), %rsi
movq (%rsi), %rax
leaq -0x80(%rbp), %rdi
callq *0x10(%rax)
leaq 0x1988a(%rip), %rsi     # 0x27c56
leaq -0x80(%rbp), %rdi
callq 0xa748
testb %al, %al
je 0xe75a
movq 0x20(%rbx), %rsi
movq (%rsi), %rax
leaq -0xa0(%rbp), %rdi
callq *0x10(%rax)
leaq 0x19866(%rip), %rsi     # 0x27c5b
leaq -0xa0(%rbp), %r15
movq %r15, %rdi
callq 0xa748
movl %eax, %r12d
movq %r15, %rdi
callq 0x8930
leaq -0x80(%rbp), %rdi
callq 0x8930
leaq -0x60(%rbp), %rdi
callq 0x8930
leaq -0x40(%rbp), %rdi
callq 0x8930
testb %r12b, %r12b
jne 0xe4de
jmp 0xe775
leaq 0x2e099(%rip), %rsi     # 0x3c4d8
leaq -0x40(%rbp), %rdi
callq 0xce8f
testb %al, %al
je 0xe364
movq 0x18(%rbx), %rsi
addq $0x8, %rsi
leaq -0x80(%rbp), %rdi
callq 0x85b0
leaq 0x19e5c(%rip), %rsi     # 0x282c4
leaq -0x60(%rbp), %rdi
leaq -0x80(%rbp), %rdx
callq 0xecc3
leaq -0x80(%rbp), %rdi
callq 0x8930
pushq $0x28
popq %rdi
callq 0x8200
movq %rax, %r14
leaq -0x200(%rbp), %rdi
leaq -0x60(%rbp), %rsi
callq 0x85b0
movl 0x8(%rbx), %edx
movb $0x1, %r15b
leaq -0x200(%rbp), %rsi
movq %r14, %rdi
callq 0xc8b2
xorl %r15d, %r15d
leaq 0x2cbf8(%rip), %rsi     # 0x3b0b0
leaq -0x1bcf(%rip), %rdx     # 0xc8f0
movq %r14, %rdi
callq 0x87a0
jmp 0xe946
leaq -0x60(%rbp), %rdi
callq 0x8930
leaq -0x40(%rbp), %rdi
callq 0x8930
movq 0x20(%rbx), %rsi
addq $0x8, %rsi
leaq -0x40(%rbp), %rbx
movq %rbx, %rdi
callq 0x85b0
movq %r14, %rdi
movq %rbx, %rsi
callq 0x8340
leaq 0x1e384(%rip), %rsi     # 0x2c888
movq %rax, %rdi
callq 0x8390
jmp 0xe364
leaq 0x1a1c9(%rip), %rax     # 0x286e1
leaq 0x19df5(%rip), %rsi     # 0x28314
cmpb $0x0, 0x59(%rbx)
cmovneq %rax, %rsi
leaq -0x40(%rbp), %rdi
leaq -0x60(%rbp), %rdx
callq 0x8180
leaq 0x1a1af(%rip), %rsi     # 0x286ea
leaq -0xa0(%rbp), %rdi
leaq -0x40(%rbp), %rdx
callq 0xc83b
leaq 0x1a1b6(%rip), %rdx     # 0x28708
leaq -0x80(%rbp), %rdi
leaq -0xa0(%rbp), %rsi
callq 0xc63c
movq 0x18(%rbx), %rsi
movq (%rsi), %rax
leaq -0xc0(%rbp), %rdi
callq *0x10(%rax)
leaq -0x60(%rbp), %rdi
leaq -0x80(%rbp), %rsi
leaq -0xc0(%rbp), %rdx
callq 0xc930
leaq -0xc0(%rbp), %rdi
callq 0x8930
leaq -0x80(%rbp), %rdi
callq 0x8930
leaq -0xa0(%rbp), %rdi
callq 0x8930
pushq $0x28
popq %rdi
callq 0x8200
movq %rax, %r14
leaq -0x220(%rbp), %rdi
leaq -0x60(%rbp), %rsi
callq 0x85b0
movl 0x8(%rbx), %edx
movb $0x1, %r15b
leaq -0x220(%rbp), %rsi
movq %r14, %rdi
callq 0xc8b2
xorl %r15d, %r15d
leaq 0x2cace(%rip), %rsi     # 0x3b0b0
leaq -0x1cf9(%rip), %rdx     # 0xc8f0
movq %r14, %rdi
callq 0x87a0
jmp 0xe946
leaq 0x1a0b2(%rip), %rsi     # 0x286af
leaq -0x40(%rbp), %rdi
leaq -0x60(%rbp), %rdx
callq 0x8180
pushq $0x28
popq %rdi
callq 0x8200
movq %rax, %r14
leaq -0x260(%rbp), %rdi
leaq -0x40(%rbp), %rsi
callq 0x85b0
movl 0x8(%rbx), %edx
movb $0x1, %r15b
leaq -0x260(%rbp), %rsi
movq %r14, %rdi
callq 0xc8b2
xorl %r15d, %r15d
leaq 0x2ca6c(%rip), %rsi     # 0x3b0b0
leaq -0x1d5b(%rip), %rdx     # 0xc8f0
movq %r14, %rdi
callq 0x87a0
jmp 0xe946
movq 0x48(%rbx), %rdx
leaq 0x19bbe(%rip), %rsi     # 0x28221
leaq -0x60(%rbp), %r14
movq %r14, %rdi
callq 0xc83b
leaq 0x1a05d(%rip), %rdx     # 0x286d3
leaq -0x40(%rbp), %rdi
movq %r14, %rsi
callq 0xc63c
leaq -0x60(%rbp), %rdi
callq 0x8930
pushq $0x28
popq %rdi
callq 0x8200
movq %rax, %r14
leaq -0x240(%rbp), %rdi
leaq -0x40(%rbp), %rsi
callq 0x85b0
movl 0x8(%rbx), %edx
movb $0x1, %r15b
leaq -0x240(%rbp), %rsi
movq %r14, %rdi
callq 0xc8b2
xorl %r15d, %r15d
leaq 0x2c9eb(%rip), %rsi     # 0x3b0b0
leaq -0x1ddc(%rip), %rdx     # 0xc8f0
movq %r14, %rdi
callq 0x87a0
jmp 0xe946
movq 0x50(%rbx), %rdx
leaq 0x19b3d(%rip), %rsi     # 0x28221
leaq -0x60(%rbp), %r14
movq %r14, %rdi
callq 0xc83b
leaq 0x1e05e(%rip), %rdx     # 0x2c755
leaq -0x40(%rbp), %rdi
movq %r14, %rsi
callq 0xc63c
leaq -0x60(%rbp), %rdi
callq 0x8930
pushq $0x28
popq %rdi
callq 0x8200
movq %rax, %r14
leaq -0x1a0(%rbp), %rdi
leaq -0x40(%rbp), %rsi
callq 0x85b0
movl 0x8(%rbx), %edx
movb $0x1, %r15b
leaq -0x1a0(%rbp), %rsi
movq %r14, %rdi
callq 0xc8b2
xorl %r15d, %r15d
leaq 0x2c96a(%rip), %rsi     # 0x3b0b0
leaq -0x1e5d(%rip), %rdx     # 0xc8f0
movq %r14, %rdi
callq 0x87a0
jmp 0xe946
leaq -0x80(%rbp), %rdi
callq 0x8930
leaq -0x60(%rbp), %rdi
callq 0x8930
leaq -0x40(%rbp), %rdi
callq 0x8930
movq 0x20(%rbx), %rsi
addq $0x8, %rsi
leaq -0x1e0(%rbp), %r14
movq %r14, %rdi
callq 0x85b0
leaq 0x19a98(%rip), %rsi     # 0x2822b
leaq -0x140(%rbp), %rdi
movq %r14, %rdx
callq 0xecc3
leaq 0x19a98(%rip), %rdx     # 0x28241
leaq -0x160(%rbp), %rdi
leaq -0x140(%rbp), %rsi
callq 0xc63c
movq 0x20(%rbx), %rsi
movq (%rsi), %rax
leaq -0x120(%rbp), %rdi
callq *0x10(%rax)
leaq -0x180(%rbp), %rdi
leaq -0x160(%rbp), %rsi
leaq -0x120(%rbp), %rdx
callq 0xc930
leaq 0x19a57(%rip), %rdx     # 0x28245
leaq -0xc0(%rbp), %rdi
leaq -0x180(%rbp), %rsi
callq 0xc63c
movq 0x18(%rbx), %rsi
addq $0x8, %rsi
leaq -0x100(%rbp), %rdi
callq 0x85b0
leaq -0xa0(%rbp), %rdi
leaq -0xc0(%rbp), %rsi
leaq -0x100(%rbp), %rdx
callq 0xc930
leaq 0x19a0b(%rip), %rdx     # 0x28241
leaq -0x80(%rbp), %rdi
leaq -0xa0(%rbp), %rsi
callq 0xc63c
movq 0x18(%rbx), %rsi
movq (%rsi), %rax
leaq -0xe0(%rbp), %rdi
callq *0x10(%rax)
leaq -0x60(%rbp), %rdi
leaq -0x80(%rbp), %rsi
leaq -0xe0(%rbp), %rdx
callq 0xc930
leaq 0x199d9(%rip), %rdx     # 0x2824b
leaq -0x40(%rbp), %rdi
leaq -0x60(%rbp), %rsi
callq 0xc63c
leaq -0x60(%rbp), %rdi
callq 0x8930
leaq -0xe0(%rbp), %rdi
callq 0x8930
leaq -0x80(%rbp), %rdi
callq 0x8930
leaq -0xa0(%rbp), %rdi
callq 0x8930
leaq -0x100(%rbp), %rdi
callq 0x8930
leaq -0xc0(%rbp), %rdi
callq 0x8930
leaq -0x180(%rbp), %rdi
callq 0x8930
leaq -0x120(%rbp), %rdi
callq 0x8930
leaq -0x160(%rbp), %rdi
callq 0x8930
leaq -0x140(%rbp), %rdi
callq 0x8930
leaq -0x1e0(%rbp), %rdi
callq 0x8930
pushq $0x28
popq %rdi
callq 0x8200
movq %rax, %r14
leaq -0x1c0(%rbp), %rdi
leaq -0x40(%rbp), %rsi
callq 0x85b0
movl 0x8(%rbx), %edx
movb $0x1, %r15b
leaq -0x1c0(%rbp), %rsi
movq %r14, %rdi
callq 0xc8b2
xorl %r15d, %r15d
leaq 0x2c779(%rip), %rsi     # 0x3b0b0
leaq -0x204e(%rip), %rdx     # 0xc8f0
movq %r14, %rdi
callq 0x87a0
movq %rax, %rbx
leaq -0x1c0(%rbp), %rdi
jmp 0xeac3
jmp 0xeacf
movq %rax, %rbx
leaq -0x60(%rbp), %rdi
callq 0x8930
jmp 0xe96b
movq %rax, %rbx
leaq -0xe0(%rbp), %rdi
callq 0x8930
jmp 0xe97c
movq %rax, %rbx
leaq -0x80(%rbp), %rdi
callq 0x8930
jmp 0xe98a
movq %rax, %rbx
leaq -0xa0(%rbp), %rdi
callq 0x8930
jmp 0xe99b
movq %rax, %rbx
leaq -0x100(%rbp), %rdi
callq 0x8930
jmp 0xe9ac
movq %rax, %rbx
leaq -0xc0(%rbp), %rdi
callq 0x8930
jmp 0xe9bd
movq %rax, %rbx
leaq -0x180(%rbp), %rdi
callq 0x8930
jmp 0xe9ce
movq %rax, %rbx
leaq -0x120(%rbp), %rdi
callq 0x8930
jmp 0xe9ed
movq %rax, %rbx
leaq -0x200(%rbp), %rdi
jmp 0xea05
jmp 0xea11
movq %rax, %rbx
leaq -0x160(%rbp), %rdi
callq 0x8930
jmp 0xea26
movq %rax, %rbx
leaq -0x220(%rbp), %rdi
callq 0x8930
testb %r15b, %r15b
jne 0xea14
jmp 0xea83
movq %rax, %rbx
movq %r14, %rdi
callq 0x82f0
jmp 0xea83
jmp 0xeade
movq %rax, %rbx
leaq -0x140(%rbp), %rdi
callq 0x8930
jmp 0xea61
movq %rax, %rbx
leaq -0x1a0(%rbp), %rdi
jmp 0xeac3
jmp 0xeacf
movq %rax, %rbx
leaq -0xc0(%rbp), %rdi
callq 0x8930
jmp 0xea8e
jmp 0xeb12
movq %rax, %rbx
leaq -0x1e0(%rbp), %rdi
jmp 0xeb19
movq %rax, %rbx
leaq -0x80(%rbp), %rdi
callq 0x8930
jmp 0xea83
jmp 0xeb12
movq %rax, %rbx
leaq -0x60(%rbp), %rdi
jmp 0xeae5
jmp 0xeb09
movq %rax, %rbx
leaq -0x80(%rbp), %rdi
callq 0x8930
jmp 0xea9e
jmp 0xeb12
movq %rax, %rbx
leaq -0xa0(%rbp), %rdi
jmp 0xeae5
jmp 0xeb12
jmp 0xeb12
movq %rax, %rbx
leaq -0x240(%rbp), %rdi
jmp 0xeac3
jmp 0xeacf
movq %rax, %rbx
leaq -0x260(%rbp), %rdi
callq 0x8930
testb %r15b, %r15b
jne 0xead2
jmp 0xeb15
movq %rax, %rbx
movq %r14, %rdi
callq 0x82f0
jmp 0xeb15
jmp 0xeb12
movq %rax, %rbx
leaq -0x80(%rbp), %rdi
callq 0x8930
jmp 0xeb15
jmp 0xeb12
jmp 0xeb12
jmp 0xeb12
jmp 0xeb09
jmp 0xeaf6
movq %rax, %rbx
jmp 0xeb1e
movq %rax, %rbx
leaq -0x40(%rbp), %rdi
callq 0x8930
jmp 0xeb0c
movq %rax, %rbx
leaq -0x60(%rbp), %rdi
jmp 0xeb19
movq %rax, %rbx
leaq -0x40(%rbp), %rdi
callq 0x8930
movq %rbx, %rdi
callq 0x87e0