// File: /workspace/github_cpp_makefile_star2_O1/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 %r13
pushq %r12
pushq %rbx
subq $0x288, %rsp            # imm = 0x288
movq %rdi, %rbx
movq 0x10(%rdi), %rdi
testq %rdi, %rdi
je 0xffbc
movq %rsi, %r14
movq 0x48(%rbx), %rsi
callq 0x10b10
movq %rax, 0x18(%rbx)
movq 0x10(%rbx), %rdi
movq 0x50(%rbx), %rsi
callq 0x10b10
movq %rax, 0x20(%rbx)
movq 0x18(%rbx), %rax
testq %rax, %rax
je 0x1003d
leaq -0x58(%rbp), %r13
movq %r13, -0x10(%r13)
movq 0x8(%rax), %rsi
movq 0x10(%rax), %rdx
addq %rsi, %rdx
leaq -0x68(%rbp), %r15
movq %r15, %rdi
callq 0x10d2a
leaq 0x1c9f8(%rip), %rsi     # 0x2c200
movq %r15, %rdi
callq 0x8850
addq $0x10, %r14
leaq -0x38(%rbp), %r12
movq %r12, -0x10(%r12)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0xf839
movq %rdx, -0x48(%rbp)
movq (%rcx), %rdx
movq %rdx, -0x38(%rbp)
jmp 0xf841
movups (%rcx), %xmm0
movups %xmm0, (%r12)
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 %r14, %rdi
callq 0x8460
movq -0x48(%rbp), %rdi
cmpq %r12, %rdi
je 0xf876
callq 0x8350
movq -0x68(%rbp), %rdi
cmpq %r13, %rdi
je 0xf884
callq 0x8350
cmpb $0x0, 0x59(%rbx)
jne 0xf890
cmpb $0x1, 0x5a(%rbx)
jne 0xf8e6
movq 0x18(%rbx), %rsi
movq (%rsi), %rax
leaq -0x48(%rbp), %r15
movq %r15, %rdi
callq *0x10(%rax)
movq 0x8(%r15), %rdx
cmpq 0x2dbec(%rip), %rdx     # 0x3d498
jne 0xf8cf
testq %rdx, %rdx
je 0xfa5c
movq 0x2dbd2(%rip), %rsi     # 0x3d490
movq -0x48(%rbp), %rdi
callq 0x83e0
testl %eax, %eax
je 0xfa5c
movq -0x48(%rbp), %rdi
cmpq %r12, %rdi
je 0xfa77
callq 0x8350
jmp 0xfa77
cmpb $0x1, 0x5b(%rbx)
jne 0xfab7
movq 0x40(%rbx), %rsi
movq 0x10(%rbx), %rdx
movl 0x8(%rbx), %ecx
leaq -0x48(%rbp), %r15
movq %r15, %rdi
callq 0xdd94
movq (%r15), %rsi
movq 0x8(%r15), %rdx
movq %r14, %rdi
callq 0x8460
leaq 0x20fe2(%rip), %rsi     # 0x308ff
movl $0x2, %edx
movq %rax, %rdi
callq 0x8460
movq -0x48(%rbp), %rdi
cmpq %r12, %rdi
je 0xf938
callq 0x8350
movq 0x18(%rbx), %rsi
movq (%rsi), %rax
leaq -0x48(%rbp), %rdi
callq *0x10(%rax)
movq 0x40(%rbx), %rax
cmpl $0x1, 0x38(%rax)
jne 0xf97e
movq -0x40(%rbp), %rdx
cmpq 0x2db7d(%rip), %rdx     # 0x3d4d8
jne 0xf97e
testq %rdx, %rdx
je 0xff71
movq 0x2db63(%rip), %rsi     # 0x3d4d0
movq -0x48(%rbp), %rdi
callq 0x83e0
testl %eax, %eax
je 0xff71
movq -0x40(%rbp), %rdx
cmpq 0x2db0f(%rip), %rdx     # 0x3d498
jne 0xfe49
testq %rdx, %rdx
je 0xf9ac
movq 0x2daf5(%rip), %rsi     # 0x3d490
movq -0x48(%rbp), %rdi
callq 0x83e0
testl %eax, %eax
jne 0xfe49
movq %r13, %r12
movq 0x18(%rbx), %rax
leaq -0x78(%rbp), %r14
movq %r14, -0x10(%r14)
movq 0x8(%rax), %rsi
movq 0x10(%rax), %rdx
addq %rsi, %rdx
leaq -0x88(%rbp), %rdi
callq 0x10d2a
leaq 0x1c8eb(%rip), %rsi     # 0x2c2c4
leaq -0x68(%rbp), %rdi
leaq -0x88(%rbp), %rdx
callq 0x10b8d
movq -0x88(%rbp), %rdi
cmpq %r14, %rdi
je 0xf9fa
callq 0x8350
movl $0x28, %edi
callq 0x81f0
movq %rax, %r14
leaq -0x238(%rbp), %r13
movq %r13, -0x10(%r13)
movq -0x68(%rbp), %rsi
movq -0x60(%rbp), %rdx
addq %rsi, %rdx
leaq -0x248(%rbp), %rdi
callq 0x10d2a
movl 0x8(%rbx), %edx
movb $0x1, %r15b
leaq -0x248(%rbp), %rsi
movq %r14, %rdi
callq 0xdc12
xorl %r15d, %r15d
leaq 0x2c618(%rip), %rsi     # 0x3c060
leaq -0x1ded(%rip), %rdx     # 0xdc62
movq %r14, %rdi
callq 0x8770
jmp 0x10708
movb 0x59(%rbx), %r15b
movq -0x48(%rbp), %rdi
cmpq %r12, %rdi
je 0xfa6e
callq 0x8350
testb %r15b, %r15b
jne 0xfb8d
movq 0x18(%rbx), %rsi
movq (%rsi), %rax
leaq -0x48(%rbp), %r15
movq %r15, %rdi
callq *0x10(%rax)
movq 0x8(%r15), %rdx
cmpq 0x2da45(%rip), %rdx     # 0x3d4d8
jne 0xfab2
testq %rdx, %rdx
je 0xfb0e
movq 0x2da2f(%rip), %rsi     # 0x3d4d0
movq -0x48(%rbp), %rdi
callq 0x83e0
testl %eax, %eax
sete %r15b
jmp 0xfb11
xorl %r15d, %r15d
jmp 0xfb11
movq 0x20(%rbx), %rsi
testq %rsi, %rsi
je 0x101a0
movq (%rsi), %rax
leaq -0x48(%rbp), %rdi
callq *0x10(%rax)
movq 0x18(%rbx), %rsi
movq (%rsi), %rax
leaq -0x68(%rbp), %rdi
callq *0x10(%rax)
movq -0x40(%rbp), %rdx
movb $0x1, %r15b
cmpq -0x60(%rbp), %rdx
jne 0xfe6c
testq %rdx, %rdx
je 0xfe69
movq -0x68(%rbp), %rsi
movq -0x48(%rbp), %rdi
callq 0x83e0
testl %eax, %eax
setne %r15b
jmp 0xfe6c
movb $0x1, %r15b
testb %r15b, %r15b
je 0xfb26
movq %r13, %rax
xorb $0x1, %r15b
movb 0x5a(%rbx), %r13b
movl %r15d, %r12d
jmp 0xfb63
movq 0x18(%rbx), %rsi
movq (%rsi), %rax
leaq -0x68(%rbp), %rdi
callq *0x10(%rax)
movq -0x60(%rbp), %rdx
movb $0x1, %r12b
cmpq 0x2d976(%rip), %rdx     # 0x3d4b8
jne 0xfb5d
testq %rdx, %rdx
je 0xfb16
movq 0x2d960(%rip), %rsi     # 0x3d4b0
movq -0x68(%rbp), %rdi
callq 0x83e0
testl %eax, %eax
je 0xfb16
movq %r13, %rax
xorl %r13d, %r13d
testb %r12b, %r12b
leaq -0x38(%rbp), %r12
je 0xfb7a
movq -0x68(%rbp), %rdi
cmpq %rax, %rdi
je 0xfb7a
callq 0x8350
movq -0x48(%rbp), %rdi
cmpq %r12, %rdi
je 0xfb88
callq 0x8350
testb %r13b, %r13b
je 0xfb91
movb $0x1, %al
jmp 0xfbf8
movq 0x18(%rbx), %rsi
movq (%rsi), %rax
leaq -0x48(%rbp), %r15
movq %r15, %rdi
callq *0x10(%rax)
movq 0x8(%r15), %rdx
cmpq 0x2d92b(%rip), %rdx     # 0x3d4d8
jne 0xfbe8
testq %rdx, %rdx
je 0xfbc8
movq 0x2d915(%rip), %rsi     # 0x3d4d0
movq -0x48(%rbp), %rdi
callq 0x83e0
testl %eax, %eax
jne 0xfbe8
cmpb $0x1, 0x59(%rbx)
jne 0xfbe8
movb 0x58(%rbx), %r15b
movq -0x48(%rbp), %rdi
cmpq %r12, %rdi
je 0xfbe0
callq 0x8350
xorb $0x1, %r15b
xorl %eax, %eax
jmp 0xfbfb
movq -0x48(%rbp), %rdi
cmpq %r12, %rdi
je 0xfbf6
callq 0x8350
xorl %eax, %eax
xorl %r15d, %r15d
testb %al, %al
jne 0x1008a
testb %r15b, %r15b
je 0xfc5e
movq 0x2d3b9(%rip), %r15     # 0x3cfc8
leaq 0x1c64d(%rip), %rsi     # 0x2c263
movl $0x60, %edx
movq %r15, %rdi
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
leaq 0x1c7ad(%rip), %rsi     # 0x2c3fe
movl $0x5, %edx
movq %r14, %rdi
callq 0x8460
movq %r12, -0x48(%rbp)
movq $0x0, -0x40(%rbp)
movb $0x0, -0x38(%rbp)
cmpb $0x1, 0x5a(%rbx)
jne 0xfccc
movq 0x38(%rbx), %rdx
leaq 0x1c41f(%rip), %rsi     # 0x2c09e
leaq -0xc8(%rbp), %rdi
callq 0xdb86
leaq 0x1c40c(%rip), %rsi     # 0x2c09e
leaq -0xc8(%rbp), %rdi
callq 0x8850
leaq -0x78(%rbp), %r15
movq %r15, -0x10(%r15)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0xfd6a
movq %rdx, -0x88(%rbp)
movq (%rcx), %rdx
movq %rdx, -0x78(%rbp)
jmp 0xfd71
cmpb $0x1, 0x58(%rbx)
jne 0xfd3f
movl 0x30(%rbx), %ebx
movl %ebx, %r15d
negl %r15d
cmovsl %ebx, %r15d
movl $0x1, %r12d
cmpl $0xa, %r15d
jb 0xfdc8
movl $0x4, %r12d
movl $0xd1b71759, %eax       # imm = 0xD1B71759
movl %r15d, %ecx
cmpl $0x63, %ecx
jbe 0xfdbf
cmpl $0x3e7, %ecx            # imm = 0x3E7
jbe 0xfdc5
cmpl $0x2710, %ecx           # imm = 0x2710
jb 0xfdc8
movl %ecx, %edx
imulq %rax, %rdx
shrq $0x2d, %rdx
addl $0x4, %r12d
cmpl $0x1869f, %ecx          # imm = 0x1869F
movl %edx, %ecx
ja 0xfcfd
addl $-0x3, %r12d
jmp 0xfdc8
movsd 0x28(%rbx), %xmm0
movq 0x2d255(%rip), %rsi     # 0x3cfa0
leaq 0x1ca06(%rip), %rcx     # 0x2c758
leaq -0x88(%rbp), %rdi
movl $0x148, %edx            # imm = 0x148
movb $0x1, %al
callq 0x10c79
jmp 0xfdfd
movups (%rcx), %xmm0
movups %xmm0, (%r15)
movq 0x8(%rax), %rdx
leaq -0x88(%rbp), %rbx
movq %rdx, 0x8(%rbx)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq -0x48(%rbp), %rdi
movq %rbx, %rsi
callq 0x84d0
movq (%rbx), %rdi
cmpq %r15, %rdi
je 0xfda8
callq 0x8350
leaq -0xb8(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xfe25
callq 0x8350
jmp 0xfe25
addl $-0x2, %r12d
jmp 0xfdc8
decl %r12d
shrl $0x1f, %ebx
leal (%r12,%rbx), %esi
leaq -0x78(%rbp), %rax
movq %rax, -0x10(%rax)
leaq -0x88(%rbp), %rdi
movl $0x2d, %edx
callq 0x8490
addq -0x88(%rbp), %rbx
movq %rbx, %rdi
movl %r12d, %esi
movl %r15d, %edx
callq 0x10c07
leaq -0x48(%rbp), %rdi
leaq -0x88(%rbp), %rbx
movq %rbx, %rsi
callq 0x84d0
movq (%rbx), %rdi
leaq -0x78(%rbp), %rax
cmpq %rax, %rdi
je 0xfe21
callq 0x8350
leaq -0x38(%rbp), %r12
movq -0x48(%rbp), %rsi
movq -0x40(%rbp), %rdx
movq %r14, %rdi
callq 0x8460
leaq 0x20ac3(%rip), %rsi     # 0x308ff
movl $0x2, %edx
movq %rax, %rdi
callq 0x8460
movq -0x48(%rbp), %rdi
cmpq %r12, %rdi
je 0xfe57
callq 0x8350
addq $0x288, %rsp            # imm = 0x288
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
xorl %r15d, %r15d
testb %r15b, %r15b
je 0xfecd
movq 0x18(%rbx), %rsi
movq (%rsi), %rax
leaq -0x88(%rbp), %rdi
callq *0x10(%rax)
leaq 0x1bdcd(%rip), %rsi     # 0x2bc56
leaq -0x88(%rbp), %rdi
callq 0x8100
movb $0x1, %r13b
testl %eax, %eax
sete %al
jne 0xfed2
movq 0x20(%rbx), %rsi
movq (%rsi), %rax
leaq -0xc8(%rbp), %rdi
callq *0x10(%rax)
leaq 0x1bda4(%rip), %rsi     # 0x2bc5b
leaq -0xc8(%rbp), %rdi
callq 0x8100
testl %eax, %eax
setne %r13b
movb $0x1, %al
jmp 0xfed2
xorl %eax, %eax
xorl %r13d, %r13d
testb %al, %al
je 0xfeeb
leaq -0xb8(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xfeeb
callq 0x8350
testb %r15b, %r15b
je 0xff02
leaq -0x78(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xff02
callq 0x8350
movq -0x68(%rbp), %rdi
leaq -0x58(%rbp), %rax
cmpq %rax, %rdi
je 0xff14
callq 0x8350
movq -0x48(%rbp), %rdi
cmpq %r12, %rdi
je 0xff22
callq 0x8350
testb %r13b, %r13b
jne 0x101f0
movq 0x20(%rbx), %rax
leaq -0x48(%rbp), %rbx
movq %r12, (%rbx)
movq 0x8(%rax), %rsi
movq 0x10(%rax), %rdx
addq %rsi, %rdx
movq %rbx, %rdi
callq 0x10d2a
movq (%rbx), %rsi
movq 0x8(%rbx), %rdx
movq %r14, %rdi
callq 0x8460
leaq 0x209a0(%rip), %rsi     # 0x308ff
movl $0x2, %edx
movq %rax, %rdi
callq 0x8460
jmp 0xfe49
movq 0x2d050(%rip), %rbx     # 0x3cfc8
leaq 0x1c2e4(%rip), %rsi     # 0x2c263
movl $0x60, %edx
movq %rbx, %rdi
callq 0x8460
movq (%rbx), %rax
addq -0x18(%rax), %rbx
movq %rbx, %rdi
movl $0xa, %esi
callq 0x8360
movsbl %al, %esi
movq 0x2d01e(%rip), %rdi     # 0x3cfc8
callq 0x8030
movq %rax, %rdi
callq 0x82b0
jmp 0xfe49
leaq -0x38(%rbp), %r15
movq %r15, -0x10(%r15)
leaq 0x1c71b(%rip), %rsi     # 0x2c6e6
leaq 0x1c737(%rip), %rdx     # 0x2c709
leaq -0x48(%rbp), %rdi
callq 0x1d592
movl $0x28, %edi
callq 0x81f0
movq %rax, %r14
leaq -0x298(%rbp), %r13
movq %r13, -0x10(%r13)
movq -0x48(%rbp), %rsi
movq -0x40(%rbp), %rdx
addq %rsi, %rdx
leaq -0x2a8(%rbp), %rdi
callq 0x10d2a
movl 0x8(%rbx), %edx
movb $0x1, %r12b
leaq -0x2a8(%rbp), %rsi
movq %r14, %rdi
callq 0xdc12
xorl %r12d, %r12d
leaq 0x2c037(%rip), %rsi     # 0x3c060
leaq -0x23ce(%rip), %rdx     # 0xdc62
movq %r14, %rdi
callq 0x8770
jmp 0x10708
movq 0x48(%rbx), %rdx
leaq 0x1c1d9(%rip), %rsi     # 0x2c221
leaq -0x68(%rbp), %r14
movq %r14, %rdi
callq 0xdb86
leaq 0x1c6af(%rip), %rsi     # 0x2c70a
movq %r14, %rdi
callq 0x8850
leaq -0x38(%rbp), %r15
movq %r15, -0x10(%r15)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
jne 0x1010a
movups (%rcx), %xmm0
movups %xmm0, (%r15)
jmp 0x10115
movzbl 0x59(%rbx), %eax
leaq 0x1c683(%rip), %rcx     # 0x2c718
leaq 0x1c278(%rip), %rsi     # 0x2c314
testl %eax, %eax
cmovneq %rcx, %rsi
leaq -0x48(%rbp), %rdi
movq %r12, (%rdi)
leaq (%rsi,%rax,2), %rdx
addq $0x6, %rdx
callq 0x1d592
leaq 0x1c664(%rip), %rsi     # 0x2c721
leaq -0xa8(%rbp), %rdi
leaq -0x48(%rbp), %rdx
callq 0xdb86
leaq 0x1c66b(%rip), %rsi     # 0x2c73f
leaq -0xa8(%rbp), %rdi
callq 0x8850
leaq -0xb8(%rbp), %r14
movq %r14, -0x10(%r14)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
jne 0x1026c
movups (%rcx), %xmm0
movups %xmm0, (%r14)
jmp 0x1027d
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)
leaq -0x58(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x1013e
callq 0x8350
movl $0x28, %edi
callq 0x81f0
movq %rax, %r14
leaq -0x278(%rbp), %r13
movq %r13, -0x10(%r13)
movq -0x48(%rbp), %rsi
movq -0x40(%rbp), %rdx
addq %rsi, %rdx
leaq -0x288(%rbp), %rdi
callq 0x10d2a
movl 0x8(%rbx), %edx
movb $0x1, %r12b
leaq -0x288(%rbp), %rsi
movq %r14, %rdi
callq 0xdc12
xorl %r12d, %r12d
leaq 0x2bed4(%rip), %rsi     # 0x3c060
leaq -0x2531(%rip), %rdx     # 0xdc62
movq %r14, %rdi
callq 0x8770
jmp 0x10708
movq 0x50(%rbx), %rdx
leaq 0x1c076(%rip), %rsi     # 0x2c221
leaq -0x68(%rbp), %r14
movq %r14, %rdi
callq 0xdb86
leaq 0x2060e(%rip), %rsi     # 0x307cc
movq %r14, %rdi
callq 0x8850
leaq -0x38(%rbp), %rcx
movq %rcx, -0x48(%rbp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
jne 0x10363
movups (%rcx), %xmm0
leaq -0x38(%rbp), %rdx
movups %xmm0, (%rdx)
jmp 0x1036e
movq 0x20(%rbx), %rax
leaq -0x1d8(%rbp), %r15
movq %r15, -0x10(%r15)
movq 0x8(%rax), %rsi
movq 0x10(%rax), %rdx
addq %rsi, %rdx
leaq -0x1e8(%rbp), %r14
movq %r14, %rdi
callq 0x10d2a
leaq 0x1c00b(%rip), %rsi     # 0x2c22b
leaq -0x208(%rbp), %rdi
movq %r14, %rdx
callq 0x10b8d
leaq 0x1c00b(%rip), %rsi     # 0x2c241
leaq -0x208(%rbp), %rdi
callq 0x8850
leaq -0xf8(%rbp), %r14
movq %r14, -0x10(%r14)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
jne 0x103f6
movups (%rcx), %xmm0
movups %xmm0, (%r14)
jmp 0x10407
movq %rdx, -0xc8(%rbp)
movq (%rcx), %rdx
movq %rdx, -0xb8(%rbp)
movq 0x8(%rax), %rdx
movq %rdx, -0xc0(%rbp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq 0x18(%rbx), %rsi
movq (%rsi), %rax
leaq -0xe8(%rbp), %rdi
callq *0x10(%rax)
leaq -0x88(%rbp), %rdi
leaq -0xc8(%rbp), %rsi
leaq -0xe8(%rbp), %rdx
callq 0xdce1
leaq -0xd8(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x102d7
callq 0x8350
movq -0xc8(%rbp), %rdi
cmpq %r14, %rdi
je 0x102e8
callq 0x8350
leaq -0x98(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x102fd
callq 0x8350
movl $0x28, %edi
callq 0x81f0
movq %rax, %r14
leaq -0x258(%rbp), %r12
movq %r12, -0x10(%r12)
movq -0x88(%rbp), %rsi
movq -0x80(%rbp), %rdx
addq %rsi, %rdx
leaq -0x268(%rbp), %rdi
callq 0x10d2a
movl 0x8(%rbx), %edx
movb $0x1, %r15b
leaq -0x268(%rbp), %rsi
movq %r14, %rdi
callq 0xdc12
xorl %r15d, %r15d
leaq 0x2bd11(%rip), %rsi     # 0x3c060
leaq -0x26f4(%rip), %rdx     # 0xdc62
movq %r14, %rdi
callq 0x8770
jmp 0x10708
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 -0x68(%rbp), %rdi
cmpq %r13, %rdi
je 0x10393
callq 0x8350
movl $0x28, %edi
callq 0x81f0
movq %rax, %r14
leaq -0x158(%rbp), %r12
movq %r12, -0x10(%r12)
movq -0x48(%rbp), %rsi
movq -0x40(%rbp), %rdx
addq %rsi, %rdx
leaq -0x168(%rbp), %rdi
callq 0x10d2a
movl 0x8(%rbx), %edx
movb $0x1, %r15b
leaq -0x168(%rbp), %rsi
movq %r14, %rdi
callq 0xdc12
xorl %r15d, %r15d
leaq 0x2bc7e(%rip), %rsi     # 0x3c060
leaq -0x2787(%rip), %rdx     # 0xdc62
movq %r14, %rdi
callq 0x8770
jmp 0x10708
movq %rdx, -0x108(%rbp)
movq (%rcx), %rdx
movq %rdx, -0xf8(%rbp)
movq 0x8(%rax), %rdx
movq %rdx, -0x100(%rbp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq 0x20(%rbx), %rsi
movq (%rsi), %rax
leaq -0x1c8(%rbp), %rdi
callq *0x10(%rax)
leaq -0x228(%rbp), %rdi
leaq -0x108(%rbp), %rsi
leaq -0x1c8(%rbp), %rdx
callq 0xdce1
leaq 0x1bdf2(%rip), %rsi     # 0x2c245
leaq -0x228(%rbp), %rdi
callq 0x8850
leaq -0x118(%rbp), %r12
movq %r12, -0x10(%r12)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
jne 0x10484
movups (%rcx), %xmm0
movups %xmm0, (%r12)
jmp 0x10495
movq %rdx, -0x128(%rbp)
movq (%rcx), %rdx
movq %rdx, -0x118(%rbp)
movq 0x8(%rax), %rdx
movq %rdx, -0x120(%rbp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq 0x18(%rbx), %rax
leaq -0x138(%rbp), %r13
movq %r13, -0x10(%r13)
movq 0x8(%rax), %rsi
movq 0x10(%rax), %rdx
addq %rsi, %rdx
leaq -0x148(%rbp), %rdi
callq 0x10d2a
leaq -0xe8(%rbp), %rdi
leaq -0x128(%rbp), %rsi
leaq -0x148(%rbp), %rdx
callq 0xdce1
leaq 0x1bd4b(%rip), %rsi     # 0x2c241
leaq -0xe8(%rbp), %rdi
callq 0x8850
leaq -0x98(%rbp), %rcx
movq %rcx, -0x10(%rcx)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
jne 0x1052b
movups (%rcx), %xmm0
leaq -0x98(%rbp), %rdx
movups %xmm0, (%rdx)
jmp 0x1053c
movq %rdx, -0xa8(%rbp)
movq (%rcx), %rdx
movq %rdx, -0x98(%rbp)
movq 0x8(%rax), %rdx
movq %rdx, -0xa0(%rbp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq 0x18(%rbx), %rsi
movq (%rsi), %rax
leaq -0x1a8(%rbp), %rdi
callq *0x10(%rax)
leaq -0x68(%rbp), %rdi
leaq -0xa8(%rbp), %rsi
leaq -0x1a8(%rbp), %rdx
callq 0xdce1
leaq 0x1bcc6(%rip), %rsi     # 0x2c24b
leaq -0x68(%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 0x105b1
movups (%rcx), %xmm0
leaq -0x38(%rbp), %rdx
movups %xmm0, (%rdx)
jmp 0x105bc
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 -0x68(%rbp), %rdi
leaq -0x58(%rbp), %rax
cmpq %rax, %rdi
je 0x105e5
callq 0x8350
leaq -0x198(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x105fa
callq 0x8350
movq -0xa8(%rbp), %rdi
leaq -0x98(%rbp), %rax
cmpq %rax, %rdi
je 0x10612
callq 0x8350
leaq -0xd8(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x10627
callq 0x8350
movq -0x148(%rbp), %rdi
cmpq %r13, %rdi
je 0x10638
callq 0x8350
movq -0x128(%rbp), %rdi
cmpq %r12, %rdi
je 0x10649
callq 0x8350
leaq -0x218(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x1065e
callq 0x8350
leaq -0x1b8(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x10673
callq 0x8350
movq -0x108(%rbp), %rdi
cmpq %r14, %rdi
je 0x10684
callq 0x8350
leaq -0x1f8(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x10699
callq 0x8350
movq -0x1e8(%rbp), %rdi
cmpq %r15, %rdi
je 0x106aa
callq 0x8350
movl $0x28, %edi
callq 0x81f0
movq %rax, %r14
leaq -0x178(%rbp), %r12
movq %r12, -0x10(%r12)
movq -0x48(%rbp), %rsi
movq -0x40(%rbp), %rdx
addq %rsi, %rdx
leaq -0x188(%rbp), %rdi
callq 0x10d2a
movl 0x8(%rbx), %edx
movb $0x1, %r15b
leaq -0x188(%rbp), %rsi
movq %r14, %rdi
callq 0xdc12
xorl %r15d, %r15d
leaq 0x2b967(%rip), %rsi     # 0x3c060
leaq -0x2a9e(%rip), %rdx     # 0xdc62
movq %r14, %rdi
callq 0x8770
movq %rax, %rbx
movq -0x188(%rbp), %rdi
jmp 0x108db
jmp 0x108e7
movq %rax, %rbx
movq -0x68(%rbp), %rdi
leaq -0x58(%rbp), %rax
cmpq %rax, %rdi
je 0x10736
callq 0x8350
jmp 0x10736
movq %rax, %rbx
leaq -0x198(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x10750
callq 0x8350
jmp 0x10750
movq %rax, %rbx
movq -0xa8(%rbp), %rdi
leaq -0x98(%rbp), %rax
cmpq %rax, %rdi
je 0x1076d
callq 0x8350
jmp 0x1076d
movq %rax, %rbx
leaq -0xd8(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x10787
callq 0x8350
jmp 0x10787
movq %rax, %rbx
movq -0x148(%rbp), %rdi
cmpq %r13, %rdi
je 0x1079d
callq 0x8350
jmp 0x1079d
movq %rax, %rbx
movq -0x128(%rbp), %rdi
cmpq %r12, %rdi
je 0x107b3
callq 0x8350
jmp 0x107b3
movq %rax, %rbx
leaq -0x218(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x107cd
callq 0x8350
jmp 0x107cd
movq %rax, %rbx
leaq -0x1b8(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x10854
callq 0x8350
jmp 0x10854
movq %rax, %rbx
movq -0x268(%rbp), %rdi
cmpq %r12, %rdi
je 0x10800
callq 0x8350
jmp 0x10800
movq %rax, %rbx
movb $0x1, %r15b
testb %r15b, %r15b
je 0x1080d
movq %r14, %rdi
callq 0x82e0
leaq -0x78(%rbp), %rax
jmp 0x109c2
movq %rax, %rbx
movq -0x248(%rbp), %rdi
cmpq %r13, %rdi
je 0x10832
callq 0x8350
jmp 0x10832
movq %rax, %rbx
movb $0x1, %r15b
testb %r15b, %r15b
je 0x1083f
movq %r14, %rdi
callq 0x82e0
movq -0x68(%rbp), %rdi
cmpq %r12, %rdi
jne 0x109cb
jmp 0x10a0e
movq %rax, %rbx
movq -0x108(%rbp), %rdi
cmpq %r14, %rdi
je 0x108ba
callq 0x8350
jmp 0x108ba
movq %rax, %rbx
leaq -0x78(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x10930
callq 0x8350
jmp 0x10930
movq %rax, %rbx
leaq -0xd8(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x10906
callq 0x8350
jmp 0x10906
movq %rax, %rbx
movq -0x88(%rbp), %rdi
cmpq %r14, %rdi
jne 0x109cb
jmp 0x10a0e
movq %rax, %rbx
leaq -0x1f8(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x10921
callq 0x8350
jmp 0x10921
movq %rax, %rbx
movq -0x168(%rbp), %rdi
cmpq %r12, %rdi
je 0x108ed
callq 0x8350
jmp 0x108ed
movq %rax, %rbx
movb $0x1, %r15b
testb %r15b, %r15b
je 0x10a0e
movq %r14, %rdi
callq 0x82e0
jmp 0x10a0e
movq %rax, %rbx
movq -0xc8(%rbp), %rdi
cmpq %r14, %rdi
je 0x1094a
callq 0x8350
jmp 0x1094a
jmp 0x10a0b
movq %rax, %rbx
movq -0x1e8(%rbp), %rdi
jmp 0x109af
movq %rax, %rbx
movq -0x68(%rbp), %rdi
leaq -0x58(%rbp), %rax
jmp 0x109c6
jmp 0x109fd
jmp 0x10a0b
movq %rax, %rbx
leaq -0x98(%rbp), %rax
jmp 0x109c2
jmp 0x10a0b
jmp 0x10a0b
jmp 0x1095f
movq %rax, %rbx
movq -0x48(%rbp), %rdi
cmpq %r12, %rdi
jne 0x10a1b
jmp 0x10a20
movq %rax, %rbx
movq -0x288(%rbp), %rdi
jmp 0x1098c
jmp 0x10998
movq %rax, %rbx
movq -0x2a8(%rbp), %rdi
cmpq %r13, %rdi
je 0x1099e
callq 0x8350
jmp 0x1099e
movq %rax, %rbx
movb $0x1, %r12b
testb %r12b, %r12b
je 0x109ab
movq %r14, %rdi
callq 0x82e0
movq -0x48(%rbp), %rdi
cmpq %r15, %rdi
jne 0x10a1b
jmp 0x10a20
jmp 0x10a0b
movq %rax, %rbx
leaq -0xb8(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x10a0e
callq 0x8350
jmp 0x10a0e
jmp 0x10a0b
jmp 0x10a0b
jmp 0x109e5
movq %rax, %rbx
leaq -0x58(%rbp), %rax
movq -0x10(%rax), %rdi
jmp 0x10a16
movq %rax, %rbx
jmp 0x10a20
movq %rax, %rbx
movq -0x48(%rbp), %rdi
cmpq %r12, %rdi
je 0x10a00
callq 0x8350
jmp 0x10a00
movq %rax, %rbx
movq -0x68(%rbp), %rdi
cmpq %r13, %rdi
jne 0x10a1b
jmp 0x10a20
movq %rax, %rbx
movq -0x48(%rbp), %rdi
leaq -0x38(%rbp), %rax
cmpq %rax, %rdi
je 0x10a20
callq 0x8350
movq %rbx, %rdi
callq 0x87b0