// File: gioannides[P]Language_Processors/src/../include/ast/class_forward_declarations.hpp
// Function: findSize(Context&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>)
inline void findSize(Context& contxt,std::string IDENTIFIER){
			int i,j;
			bool found = false;
			
			for(i=contxt.Variables.size()-1; i>=0; i--) {
				for (j=contxt.Scopes.size()-1; j>=0; j--)
				{
					if(contxt.Variables[i].scope == contxt.Scopes[j] && IDENTIFIER == contxt.Variables[i].id) 
					{
						found = true;
						if(contxt.lhs_of_assignment){
							contxt.SizeOf = contxt.Variables[i].word_size;
						}
						else if(contxt.Variables[i].DataType == "int"){
							if( contxt.SizeOf < 4)
								contxt.SizeOf = 4;
						}
						else if(contxt.Variables[i].DataType == "float"){
							if( contxt.SizeOf < 4)
								contxt.SizeOf = 4;
						}
						else if(contxt.Variables[i].DataType == "char"){
							if( contxt.SizeOf < 1)
								contxt.SizeOf = 1;
						}
						else if(contxt.Variables[i].DataType == "short"){
							if( contxt.SizeOf < 2)
								contxt.SizeOf = 2;
						}
						else if(contxt.Variables[i].DataType == "long"){
							if( contxt.SizeOf < 8)
								contxt.SizeOf = 8;
						}
						else if(contxt.Variables[i].DataType == "unsigned"){
							if( contxt.SizeOf < 4)
								contxt.SizeOf = 4;
						}
						else if(contxt.Variables[i].DataType == "signed"){
							if( contxt.SizeOf < 4)
								contxt.SizeOf = 4;
						}
						else if(contxt.Variables[i].DataType == "double"){
							if( contxt.SizeOf < 8)
								contxt.SizeOf = 8;
						}
						else if(contxt.Variables[i].DataType == "void"){
							if( contxt.SizeOf < 1)
								contxt.SizeOf = 1;
						}				
						i = -1;
						j = -1;
					}									
				}
			  }
			  if(!found){
				for(i=contxt.Variables.size()-1; i>=0; i--) {
					if(contxt.Variables[i].scope == "global" && IDENTIFIER == contxt.Variables[i].id) 
					{

						if(contxt.lhs_of_assignment){
							contxt.SizeOf = contxt.Variables[i].word_size;
						}
						else if(contxt.Variables[i].DataType == "int"){
							if( contxt.SizeOf < 4)
								contxt.SizeOf = 4;
						}
						else if(contxt.Variables[i].DataType == "float"){
							if( contxt.SizeOf < 4)
								contxt.SizeOf = 4;
						}
						else if(contxt.Variables[i].DataType == "char"){
							if( contxt.SizeOf < 1)
								contxt.SizeOf = 1;
						}
						else if(contxt.Variables[i].DataType == "short"){
							if( contxt.SizeOf < 2)
								contxt.SizeOf = 2;
						}
						else if(contxt.Variables[i].DataType == "long"){
							if( contxt.SizeOf < 8)
								contxt.SizeOf = 8;
						}
						else if(contxt.Variables[i].DataType == "unsigned"){
							if( contxt.SizeOf < 4)
								contxt.SizeOf = 4;
						}
						else if(contxt.Variables[i].DataType == "signed"){
							if( contxt.SizeOf < 4)
								contxt.SizeOf = 4;
						}
						else if(contxt.Variables[i].DataType == "double"){
							if( contxt.SizeOf < 8)
								contxt.SizeOf = 8;
						}
						else if(contxt.Variables[i].DataType == "void"){
							if( contxt.SizeOf < 1)
								contxt.SizeOf = 1;
						}				
						i = -1;
						j = -1;
						}									
					}
			}
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movq %rsi, -0x28(%rbp)
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movb $0x0, -0x19(%rbp)
movq -0x8(%rbp), %rdi
addq $0x240, %rdi            # imm = 0x240
callq 0xfd20
subq $0x1, %rax
movl %eax, -0x14(%rbp)
cmpl $0x0, -0x14(%rbp)
jl 0x22dc1
movq -0x8(%rbp), %rdi
addq $0x460, %rdi            # imm = 0x460
callq 0xbef0
subq $0x1, %rax
movl %eax, -0x18(%rbp)
cmpl $0x0, -0x18(%rbp)
jl 0x22db1
movq -0x8(%rbp), %rdi
addq $0x240, %rdi            # imm = 0x240
movslq -0x14(%rbp), %rsi
callq 0xfde0
addq $0x30, %rax
movq %rax, -0x30(%rbp)
movq -0x8(%rbp), %rdi
addq $0x460, %rdi            # imm = 0x460
movslq -0x18(%rbp), %rsi
callq 0xbf10
movq -0x30(%rbp), %rdi
movq %rax, %rsi
callq 0xfd50
testb $0x1, %al
jne 0x22a6f
jmp 0x22da1
movq -0x8(%rbp), %rdi
addq $0x240, %rdi            # imm = 0x240
movslq -0x14(%rbp), %rsi
callq 0xfde0
movq -0x28(%rbp), %rdi
movq %rax, %rsi
addq $0x8, %rsi
callq 0xfd50
testb $0x1, %al
jne 0x22a9c
jmp 0x22da1
movb $0x1, -0x19(%rbp)
movq -0x8(%rbp), %rax
testb $0x1, 0x1d2(%rax)
je 0x22ad2
movq -0x8(%rbp), %rdi
addq $0x240, %rdi            # imm = 0x240
movslq -0x14(%rbp), %rsi
callq 0xfde0
movl (%rax), %ecx
movq -0x8(%rbp), %rax
movl %ecx, 0x1fc(%rax)
jmp 0x22d93
movq -0x8(%rbp), %rdi
addq $0x240, %rdi            # imm = 0x240
movslq -0x14(%rbp), %rsi
callq 0xfde0
movq %rax, %rdi
addq $0x58, %rdi
leaq 0x42457(%rip), %rsi     # 0x64f4b
callq 0x9e30
testb $0x1, %al
jne 0x22aff
jmp 0x22b1f
movq -0x8(%rbp), %rax
cmpl $0x4, 0x1fc(%rax)
jge 0x22b1a
movq -0x8(%rbp), %rax
movl $0x4, 0x1fc(%rax)
jmp 0x22d91
movq -0x8(%rbp), %rdi
addq $0x240, %rdi            # imm = 0x240
movslq -0x14(%rbp), %rsi
callq 0xfde0
movq %rax, %rdi
addq $0x58, %rdi
leaq 0x41803(%rip), %rsi     # 0x64344
callq 0x9e30
testb $0x1, %al
jne 0x22b4c
jmp 0x22b6c
movq -0x8(%rbp), %rax
cmpl $0x4, 0x1fc(%rax)
jge 0x22b67
movq -0x8(%rbp), %rax
movl $0x4, 0x1fc(%rax)
jmp 0x22d8f
movq -0x8(%rbp), %rdi
addq $0x240, %rdi            # imm = 0x240
movslq -0x14(%rbp), %rsi
callq 0xfde0
movq %rax, %rdi
addq $0x58, %rdi
leaq 0x417d5(%rip), %rsi     # 0x64363
callq 0x9e30
testb $0x1, %al
jne 0x22b99
jmp 0x22bb9
movq -0x8(%rbp), %rax
cmpl $0x1, 0x1fc(%rax)
jge 0x22bb4
movq -0x8(%rbp), %rax
movl $0x1, 0x1fc(%rax)
jmp 0x22d8d
movq -0x8(%rbp), %rdi
addq $0x240, %rdi            # imm = 0x240
movslq -0x14(%rbp), %rsi
callq 0xfde0
movq %rax, %rdi
addq $0x58, %rdi
leaq 0x41793(%rip), %rsi     # 0x6436e
callq 0x9e30
testb $0x1, %al
jne 0x22be6
jmp 0x22c06
movq -0x8(%rbp), %rax
cmpl $0x2, 0x1fc(%rax)
jge 0x22c01
movq -0x8(%rbp), %rax
movl $0x2, 0x1fc(%rax)
jmp 0x22d8b
movq -0x8(%rbp), %rdi
addq $0x240, %rdi            # imm = 0x240
movslq -0x14(%rbp), %rsi
callq 0xfde0
movq %rax, %rdi
addq $0x58, %rdi
leaq 0x417db(%rip), %rsi     # 0x64403
callq 0x9e30
testb $0x1, %al
jne 0x22c33
jmp 0x22c53
movq -0x8(%rbp), %rax
cmpl $0x8, 0x1fc(%rax)
jge 0x22c4e
movq -0x8(%rbp), %rax
movl $0x8, 0x1fc(%rax)
jmp 0x22d89
movq -0x8(%rbp), %rdi
addq $0x240, %rdi            # imm = 0x240
movslq -0x14(%rbp), %rsi
callq 0xfde0
movq %rax, %rdi
addq $0x58, %rdi
leaq 0x4179a(%rip), %rsi     # 0x6440f
callq 0x9e30
testb $0x1, %al
jne 0x22c80
jmp 0x22ca0
movq -0x8(%rbp), %rax
cmpl $0x4, 0x1fc(%rax)
jge 0x22c9b
movq -0x8(%rbp), %rax
movl $0x4, 0x1fc(%rax)
jmp 0x22d87
movq -0x8(%rbp), %rdi
addq $0x240, %rdi            # imm = 0x240
movslq -0x14(%rbp), %rsi
callq 0xfde0
movq %rax, %rdi
addq $0x58, %rdi
leaq 0x4174f(%rip), %rsi     # 0x64411
callq 0x9e30
testb $0x1, %al
jne 0x22ccd
jmp 0x22ced
movq -0x8(%rbp), %rax
cmpl $0x4, 0x1fc(%rax)
jge 0x22ce8
movq -0x8(%rbp), %rax
movl $0x4, 0x1fc(%rax)
jmp 0x22d85
movq -0x8(%rbp), %rdi
addq $0x240, %rdi            # imm = 0x240
movslq -0x14(%rbp), %rsi
callq 0xfde0
movq %rax, %rdi
addq $0x58, %rdi
leaq 0x416f9(%rip), %rsi     # 0x64408
callq 0x9e30
testb $0x1, %al
jne 0x22d1a
jmp 0x22d37
movq -0x8(%rbp), %rax
cmpl $0x8, 0x1fc(%rax)
jge 0x22d35
movq -0x8(%rbp), %rax
movl $0x8, 0x1fc(%rax)
jmp 0x22d83
movq -0x8(%rbp), %rdi
addq $0x240, %rdi            # imm = 0x240
movslq -0x14(%rbp), %rsi
callq 0xfde0
movq %rax, %rdi
addq $0x58, %rdi
leaq 0x416bf(%rip), %rsi     # 0x64418
callq 0x9e30
testb $0x1, %al
jne 0x22d64
jmp 0x22d81
movq -0x8(%rbp), %rax
cmpl $0x1, 0x1fc(%rax)
jge 0x22d7f
movq -0x8(%rbp), %rax
movl $0x1, 0x1fc(%rax)
jmp 0x22d81
jmp 0x22d83
jmp 0x22d85
jmp 0x22d87
jmp 0x22d89
jmp 0x22d8b
jmp 0x22d8d
jmp 0x22d8f
jmp 0x22d91
jmp 0x22d93
movl $0xffffffff, -0x14(%rbp) # imm = 0xFFFFFFFF
movl $0xffffffff, -0x18(%rbp) # imm = 0xFFFFFFFF
jmp 0x22da3
movl -0x18(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0x18(%rbp)
jmp 0x22a20
jmp 0x22db3
movl -0x14(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0x14(%rbp)
jmp 0x229ff
testb $0x1, -0x19(%rbp)
jne 0x2315c
movq -0x8(%rbp), %rdi
addq $0x240, %rdi            # imm = 0x240
callq 0xfd20
subq $0x1, %rax
movl %eax, -0x14(%rbp)
cmpl $0x0, -0x14(%rbp)
jl 0x2315a
movq -0x8(%rbp), %rdi
addq $0x240, %rdi            # imm = 0x240
movslq -0x14(%rbp), %rsi
callq 0xfde0
movq %rax, %rdi
addq $0x30, %rdi
leaq 0x4160f(%rip), %rsi     # 0x6441d
callq 0x9e30
testb $0x1, %al
jne 0x22e1c
jmp 0x2314a
movq -0x8(%rbp), %rdi
addq $0x240, %rdi            # imm = 0x240
movslq -0x14(%rbp), %rsi
callq 0xfde0
movq -0x28(%rbp), %rdi
movq %rax, %rsi
addq $0x8, %rsi
callq 0xfd50
testb $0x1, %al
jne 0x22e49
jmp 0x2314a
movq -0x8(%rbp), %rax
testb $0x1, 0x1d2(%rax)
je 0x22e7b
movq -0x8(%rbp), %rdi
addq $0x240, %rdi            # imm = 0x240
movslq -0x14(%rbp), %rsi
callq 0xfde0
movl (%rax), %ecx
movq -0x8(%rbp), %rax
movl %ecx, 0x1fc(%rax)
jmp 0x2313c
movq -0x8(%rbp), %rdi
addq $0x240, %rdi            # imm = 0x240
movslq -0x14(%rbp), %rsi
callq 0xfde0
movq %rax, %rdi
addq $0x58, %rdi
leaq 0x420ae(%rip), %rsi     # 0x64f4b
callq 0x9e30
testb $0x1, %al
jne 0x22ea8
jmp 0x22ec8
movq -0x8(%rbp), %rax
cmpl $0x4, 0x1fc(%rax)
jge 0x22ec3
movq -0x8(%rbp), %rax
movl $0x4, 0x1fc(%rax)
jmp 0x2313a
movq -0x8(%rbp), %rdi
addq $0x240, %rdi            # imm = 0x240
movslq -0x14(%rbp), %rsi
callq 0xfde0
movq %rax, %rdi
addq $0x58, %rdi
leaq 0x4145a(%rip), %rsi     # 0x64344
callq 0x9e30
testb $0x1, %al
jne 0x22ef5
jmp 0x22f15
movq -0x8(%rbp), %rax
cmpl $0x4, 0x1fc(%rax)
jge 0x22f10
movq -0x8(%rbp), %rax
movl $0x4, 0x1fc(%rax)
jmp 0x23138
movq -0x8(%rbp), %rdi
addq $0x240, %rdi            # imm = 0x240
movslq -0x14(%rbp), %rsi
callq 0xfde0
movq %rax, %rdi
addq $0x58, %rdi
leaq 0x4142c(%rip), %rsi     # 0x64363
callq 0x9e30
testb $0x1, %al
jne 0x22f42
jmp 0x22f62
movq -0x8(%rbp), %rax
cmpl $0x1, 0x1fc(%rax)
jge 0x22f5d
movq -0x8(%rbp), %rax
movl $0x1, 0x1fc(%rax)
jmp 0x23136
movq -0x8(%rbp), %rdi
addq $0x240, %rdi            # imm = 0x240
movslq -0x14(%rbp), %rsi
callq 0xfde0
movq %rax, %rdi
addq $0x58, %rdi
leaq 0x413ea(%rip), %rsi     # 0x6436e
callq 0x9e30
testb $0x1, %al
jne 0x22f8f
jmp 0x22faf
movq -0x8(%rbp), %rax
cmpl $0x2, 0x1fc(%rax)
jge 0x22faa
movq -0x8(%rbp), %rax
movl $0x2, 0x1fc(%rax)
jmp 0x23134
movq -0x8(%rbp), %rdi
addq $0x240, %rdi            # imm = 0x240
movslq -0x14(%rbp), %rsi
callq 0xfde0
movq %rax, %rdi
addq $0x58, %rdi
leaq 0x41432(%rip), %rsi     # 0x64403
callq 0x9e30
testb $0x1, %al
jne 0x22fdc
jmp 0x22ffc
movq -0x8(%rbp), %rax
cmpl $0x8, 0x1fc(%rax)
jge 0x22ff7
movq -0x8(%rbp), %rax
movl $0x8, 0x1fc(%rax)
jmp 0x23132
movq -0x8(%rbp), %rdi
addq $0x240, %rdi            # imm = 0x240
movslq -0x14(%rbp), %rsi
callq 0xfde0
movq %rax, %rdi
addq $0x58, %rdi
leaq 0x413f1(%rip), %rsi     # 0x6440f
callq 0x9e30
testb $0x1, %al
jne 0x23029
jmp 0x23049
movq -0x8(%rbp), %rax
cmpl $0x4, 0x1fc(%rax)
jge 0x23044
movq -0x8(%rbp), %rax
movl $0x4, 0x1fc(%rax)
jmp 0x23130
movq -0x8(%rbp), %rdi
addq $0x240, %rdi            # imm = 0x240
movslq -0x14(%rbp), %rsi
callq 0xfde0
movq %rax, %rdi
addq $0x58, %rdi
leaq 0x413a6(%rip), %rsi     # 0x64411
callq 0x9e30
testb $0x1, %al
jne 0x23076
jmp 0x23096
movq -0x8(%rbp), %rax
cmpl $0x4, 0x1fc(%rax)
jge 0x23091
movq -0x8(%rbp), %rax
movl $0x4, 0x1fc(%rax)
jmp 0x2312e
movq -0x8(%rbp), %rdi
addq $0x240, %rdi            # imm = 0x240
movslq -0x14(%rbp), %rsi
callq 0xfde0
movq %rax, %rdi
addq $0x58, %rdi
leaq 0x41350(%rip), %rsi     # 0x64408
callq 0x9e30
testb $0x1, %al
jne 0x230c3
jmp 0x230e0
movq -0x8(%rbp), %rax
cmpl $0x8, 0x1fc(%rax)
jge 0x230de
movq -0x8(%rbp), %rax
movl $0x8, 0x1fc(%rax)
jmp 0x2312c
movq -0x8(%rbp), %rdi
addq $0x240, %rdi            # imm = 0x240
movslq -0x14(%rbp), %rsi
callq 0xfde0
movq %rax, %rdi
addq $0x58, %rdi
leaq 0x41316(%rip), %rsi     # 0x64418
callq 0x9e30
testb $0x1, %al
jne 0x2310d
jmp 0x2312a
movq -0x8(%rbp), %rax
cmpl $0x1, 0x1fc(%rax)
jge 0x23128
movq -0x8(%rbp), %rax
movl $0x1, 0x1fc(%rax)
jmp 0x2312a
jmp 0x2312c
jmp 0x2312e
jmp 0x23130
jmp 0x23132
jmp 0x23134
jmp 0x23136
jmp 0x23138
jmp 0x2313a
jmp 0x2313c
movl $0xffffffff, -0x14(%rbp) # imm = 0xFFFFFFFF
movl $0xffffffff, -0x18(%rbp) # imm = 0xFFFFFFFF
jmp 0x2314c
movl -0x14(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0x14(%rbp)
jmp 0x22de2
jmp 0x2315c
addq $0x30, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
nopl (%rax)