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

		/* O comando equivalente a escreva é o cout */
		fileStream << "cout";

		/* Quebramos a expressão usando o operador de concatenação '+' */
		boost::char_separator<char> separator("+");
		Tokenizer tokens(*expression, separator);

		/* Para cada token, procuramos por erros*/
		for(auto tokenIterator = tokens.begin(); tokenIterator != tokens.end(); tokenIterator++){

			/* Se o token não for um número nem uma string, é uma variável */
			if(!IMath::isNumber(*tokenIterator) && tokenIterator->find("\"") == string::npos){
				IData *var = ownerBlock->getLocalVariable(*tokenIterator);

				/* Se a variável não tiver sido definida, geramos um erro */
				if(var == NULL){
					std::string errorMsg = "Variavel " + *tokenIterator + " nao declarada.";
					throw ISourceErrorException(errorMsg, myLine);
				}

				/* Adicionamos o operador << para cada token, para concatenação dos valores. */
				fileStream << " << " << *tokenIterator;
			}else
				/* Adicionamos o operador << para cada token, para concatenação dos valores. */
				fileStream << " << " << *tokenIterator;
		}

		fileStream << ";" << endl;
	}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x3a0, %rsp            # imm = 0x3A0
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x328(%rbp)
movq -0x10(%rbp), %rdi
addq $0x10, %rdi
leaq 0x9b44(%rip), %rsi      # 0x61b71
callq 0x9500
leaq 0x5423(%rip), %rsi      # 0x5d45c
xorl %ecx, %ecx
movl %ecx, %edx
leaq -0x60(%rbp), %rdi
movq %rdi, -0x320(%rbp)
callq 0x13880
movq -0x328(%rbp), %rax
movq -0x320(%rbp), %rdx
movq 0x18(%rax), %rsi
leaq -0xc0(%rbp), %rdi
callq 0x13960
jmp 0x5806d
leaq -0x158(%rbp), %rdi
leaq -0xc0(%rbp), %rsi
callq 0x139c0
jmp 0x58082
jmp 0x58084
leaq -0x1e0(%rbp), %rdi
leaq -0xc0(%rbp), %rsi
callq 0x13ab0
jmp 0x58099
leaq -0x158(%rbp), %rdi
leaq -0x1e0(%rbp), %rsi
callq 0x13a70
movb %al, -0x329(%rbp)
jmp 0x580b4
leaq -0x1e0(%rbp), %rdi
callq 0x13b60
movb -0x329(%rbp), %al
testb $0x1, %al
jne 0x58143
leaq -0x158(%rbp), %rdi
callq 0x13b60
jmp 0x584ce
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xc8(%rbp)
movl %eax, -0xcc(%rbp)
jmp 0x5852a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xc8(%rbp)
movl %eax, -0xcc(%rbp)
jmp 0x5851e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xc8(%rbp)
movl %eax, -0xcc(%rbp)
jmp 0x584c0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xc8(%rbp)
movl %eax, -0xcc(%rbp)
leaq -0x1e0(%rbp), %rdi
callq 0x13b60
jmp 0x584c0
leaq -0x158(%rbp), %rdi
callq 0x13b90
movq %rax, -0x338(%rbp)
jmp 0x58158
movq -0x338(%rbp), %rsi
leaq -0x200(%rbp), %rdi
callq 0x9240
jmp 0x5816d
leaq -0x200(%rbp), %rdi
callq 0xda40
movb %al, -0x339(%rbp)
jmp 0x58181
movb -0x339(%rbp), %cl
xorl %eax, %eax
testb $0x1, %cl
movb %al, -0x33a(%rbp)
jne 0x581cf
jmp 0x58196
leaq -0x158(%rbp), %rdi
callq 0x13bc0
movq %rax, -0x348(%rbp)
jmp 0x581ab
movq -0x348(%rbp), %rdi
leaq 0x52f3(%rip), %rsi      # 0x5d4ac
xorl %eax, %eax
movl %eax, %edx
callq 0x9be0
cmpq $-0x1, %rax
sete %al
movb %al, -0x33a(%rbp)
movb -0x33a(%rbp), %al
movb %al, -0x349(%rbp)
leaq -0x200(%rbp), %rdi
callq 0x9c30
movb -0x349(%rbp), %al
testb $0x1, %al
jne 0x581f6
jmp 0x5844d
movq -0x328(%rbp), %rax
movq 0x10(%rax), %rax
movq %rax, -0x360(%rbp)
leaq -0x158(%rbp), %rdi
callq 0x13b90
movq %rax, -0x358(%rbp)
jmp 0x5821d
movq -0x358(%rbp), %rsi
leaq -0x228(%rbp), %rdi
callq 0x9240
jmp 0x58232
movq -0x360(%rbp), %rdi
leaq -0x228(%rbp), %rsi
callq 0x127e0
movq %rax, -0x368(%rbp)
jmp 0x5824e
leaq -0x228(%rbp), %rdi
callq 0x9c30
movq -0x368(%rbp), %rax
movq %rax, -0x208(%rbp)
cmpq $0x0, -0x208(%rbp)
jne 0x58404
leaq -0x158(%rbp), %rdi
callq 0x13b90
movq %rax, -0x370(%rbp)
jmp 0x5828b
movq -0x370(%rbp), %rdx
leaq 0x5396(%rip), %rsi      # 0x5d62f
leaq -0x268(%rbp), %rdi
callq 0x12960
jmp 0x582a7
leaq 0x98e1(%rip), %rdx      # 0x61b8f
leaq -0x248(%rbp), %rdi
leaq -0x268(%rbp), %rsi
callq 0x123f0
jmp 0x582c3
leaq -0x268(%rbp), %rdi
callq 0x9c30
movb $0x1, -0x289(%rbp)
movl $0x28, %edi
callq 0x9290
movq %rax, -0x378(%rbp)
leaq -0x288(%rbp), %rdi
leaq -0x248(%rbp), %rsi
callq 0x9240
jmp 0x582fc
movq -0x378(%rbp), %rdi
movq -0x328(%rbp), %rax
movl 0x8(%rax), %edx
leaq -0x288(%rbp), %rsi
callq 0x12a70
jmp 0x5831b
movq -0x378(%rbp), %rdi
movb $0x0, -0x289(%rbp)
leaq 0x28d28(%rip), %rsi     # 0x81058
leaq -0x45857(%rip), %rdx    # 0x12ae0
callq 0x9a20
jmp 0x5853f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xc8(%rbp)
movl %eax, -0xcc(%rbp)
leaq -0x200(%rbp), %rdi
callq 0x9c30
jmp 0x584c0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xc8(%rbp)
movl %eax, -0xcc(%rbp)
leaq -0x228(%rbp), %rdi
callq 0x9c30
jmp 0x584c0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xc8(%rbp)
movl %eax, -0xcc(%rbp)
leaq -0x268(%rbp), %rdi
callq 0x9c30
jmp 0x584c0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xc8(%rbp)
movl %eax, -0xcc(%rbp)
jmp 0x583dc
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xc8(%rbp)
movl %eax, -0xcc(%rbp)
leaq -0x288(%rbp), %rdi
callq 0x9c30
testb $0x1, -0x289(%rbp)
jne 0x583e7
jmp 0x583f3
movq -0x378(%rbp), %rdi
callq 0x9400
leaq -0x248(%rbp), %rdi
callq 0x9c30
jmp 0x584c0
movq -0x10(%rbp), %rdi
addq $0x10, %rdi
leaq 0x9763(%rip), %rsi      # 0x61b76
callq 0x9500
movq %rax, -0x380(%rbp)
jmp 0x58421
leaq -0x158(%rbp), %rdi
callq 0x13b90
movq %rax, -0x388(%rbp)
jmp 0x58436
movq -0x388(%rbp), %rsi
movq -0x380(%rbp), %rdi
callq 0x9490
jmp 0x5844b
jmp 0x58496
movq -0x10(%rbp), %rdi
addq $0x10, %rdi
leaq 0x971a(%rip), %rsi      # 0x61b76
callq 0x9500
movq %rax, -0x390(%rbp)
jmp 0x5846a
leaq -0x158(%rbp), %rdi
callq 0x13b90
movq %rax, -0x398(%rbp)
jmp 0x5847f
movq -0x398(%rbp), %rsi
movq -0x390(%rbp), %rdi
callq 0x9490
jmp 0x58494
jmp 0x58496
jmp 0x58498
leaq -0x318(%rbp), %rdi
leaq -0x158(%rbp), %rsi
xorl %edx, %edx
callq 0x13bf0
jmp 0x584af
leaq -0x318(%rbp), %rdi
callq 0x13b60
jmp 0x58084
leaq -0x158(%rbp), %rdi
callq 0x13b60
jmp 0x5851e
movq -0x10(%rbp), %rdi
addq $0x10, %rdi
leaq 0x96ca(%rip), %rsi      # 0x61ba7
callq 0x9500
movq %rax, -0x3a0(%rbp)
jmp 0x584eb
movq -0x3a0(%rbp), %rdi
movq 0x29a9f(%rip), %rsi     # 0x81f98
callq 0x95a0
jmp 0x58500
leaq -0xc0(%rbp), %rdi
callq 0x13c70
leaq -0x60(%rbp), %rdi
callq 0x13c90
addq $0x3a0, %rsp            # imm = 0x3A0
popq %rbp
retq
leaq -0xc0(%rbp), %rdi
callq 0x13c70
leaq -0x60(%rbp), %rdi
callq 0x13c90
movq -0xc8(%rbp), %rdi
callq 0x9a90
nop