// File: nikhilYadala[P]Python_to_cpp/Source/src/convert_to_cpp_classes.cpp
// Function: expr_type_(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>&, std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>>>&)
std::string expr_type_(std::string& expr,std::map< std::string,std::string >& variables)
{	
	if(expr[0]=='"')
		return "artificial_string";
	if(isdigit(expr[0]) || expr[0]=='-')
	{
		for(std::string::iterator i=expr.begin();i!=expr.end();++i)
			if(*i=='.')
				return "double";
		return "long int";
	}	
	std::string::iterator itr=expr.begin();
	std::string first_variable;
	while(itr!=expr.end()){
		if(is_symbol_(*itr)&&*itr!='.')
			break;
		first_variable.push_back(*(itr++));
	}
	
	if(variables.count(first_variable))
		return variables[first_variable];	//Implicit type casting to be taken care of later on(small fix)
	else return "";
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xd0, %rsp
movq %rdi, -0x98(%rbp)
movq %rdi, %rax
movq %rax, -0x90(%rbp)
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq -0x10(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x3450
movsbl (%rax), %eax
cmpl $0x22, %eax
jne 0x11391
leaq -0x19(%rbp), %rdi
movq %rdi, -0xa0(%rbp)
callq 0x3400
movq -0x98(%rbp), %rdi
movq -0xa0(%rbp), %rdx
leaq 0x4cce(%rip), %rsi      # 0x16030
callq 0x3340
jmp 0x11369
leaq -0x19(%rbp), %rdi
callq 0x32a0
jmp 0x11624
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
leaq -0x19(%rbp), %rdi
callq 0x32a0
jmp 0x11634
movq -0x10(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x3450
movsbl (%rax), %edi
callq 0x3200
cmpl $0x0, %eax
jne 0x113c4
movq -0x10(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x3450
movsbl (%rax), %eax
cmpl $0x2d, %eax
jne 0x114ba
movq -0x10(%rbp), %rdi
callq 0x31d0
movq %rax, -0x38(%rbp)
movq -0x10(%rbp), %rdi
callq 0x3140
movq %rax, -0x40(%rbp)
leaq -0x38(%rbp), %rdi
leaq -0x40(%rbp), %rsi
callq 0x7190
testb $0x1, %al
jne 0x113f1
jmp 0x11466
leaq -0x38(%rbp), %rdi
callq 0x6f70
movsbl (%rax), %eax
cmpl $0x2e, %eax
jne 0x11456
leaq -0x41(%rbp), %rdi
movq %rdi, -0xa8(%rbp)
callq 0x3400
movq -0x98(%rbp), %rdi
movq -0xa8(%rbp), %rdx
leaq 0x4c1b(%rip), %rsi      # 0x16042
callq 0x3340
jmp 0x1142e
leaq -0x41(%rbp), %rdi
callq 0x32a0
jmp 0x11624
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
leaq -0x41(%rbp), %rdi
callq 0x32a0
jmp 0x11634
jmp 0x11458
leaq -0x38(%rbp), %rdi
callq 0x6fd0
jmp 0x113d1
leaq -0x42(%rbp), %rdi
movq %rdi, -0xb0(%rbp)
callq 0x3400
movq -0x98(%rbp), %rdi
movq -0xb0(%rbp), %rdx
leaq 0x4bbe(%rip), %rsi      # 0x16049
callq 0x3340
jmp 0x11492
leaq -0x42(%rbp), %rdi
callq 0x32a0
jmp 0x11624
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
leaq -0x42(%rbp), %rdi
callq 0x32a0
jmp 0x11634
movq -0x10(%rbp), %rdi
callq 0x31d0
movq %rax, -0x50(%rbp)
leaq -0x70(%rbp), %rdi
callq 0x3360
movq -0x10(%rbp), %rdi
callq 0x3140
movq %rax, -0x78(%rbp)
leaq -0x50(%rbp), %rdi
leaq -0x78(%rbp), %rsi
callq 0x7190
testb $0x1, %al
jne 0x114f0
jmp 0x11553
leaq -0x50(%rbp), %rdi
callq 0x6f70
movsbl (%rax), %edi
callq 0x11290
testb $0x1, %al
jne 0x11507
jmp 0x1151a
leaq -0x50(%rbp), %rdi
callq 0x6f70
movsbl (%rax), %eax
cmpl $0x2e, %eax
je 0x1151a
jmp 0x11553
leaq -0x50(%rbp), %rdi
xorl %esi, %esi
callq 0x7150
movq %rax, -0x80(%rbp)
leaq -0x80(%rbp), %rdi
callq 0x6f70
movsbl (%rax), %esi
leaq -0x70(%rbp), %rdi
callq 0x31c0
jmp 0x11540
jmp 0x114d0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
jmp 0x11619
movq -0x18(%rbp), %rdi
leaq -0x70(%rbp), %rsi
callq 0x7200
movq %rax, -0xb8(%rbp)
jmp 0x11569
movq -0xb8(%rbp), %rax
cmpq $0x0, %rax
je 0x115ad
movq -0x18(%rbp), %rdi
leaq -0x70(%rbp), %rsi
callq 0x7260
movq %rax, -0xc0(%rbp)
jmp 0x1158c
movq -0xc0(%rbp), %rsi
movq -0x98(%rbp), %rdi
callq 0x30f0
jmp 0x115a1
movl $0x1, -0x84(%rbp)
jmp 0x1160e
leaq -0x85(%rbp), %rdi
movq %rdi, -0xc8(%rbp)
callq 0x3400
movq -0x98(%rbp), %rdi
movq -0xc8(%rbp), %rdx
leaq 0x4c39(%rip), %rsi      # 0x1620e
callq 0x3340
jmp 0x115dc
leaq -0x85(%rbp), %rdi
callq 0x32a0
movl $0x1, -0x84(%rbp)
jmp 0x1160e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
leaq -0x85(%rbp), %rdi
callq 0x32a0
jmp 0x11619
leaq -0x70(%rbp), %rdi
callq 0x3170
jmp 0x11624
leaq -0x70(%rbp), %rdi
callq 0x3170
jmp 0x11634
movq -0x90(%rbp), %rax
addq $0xd0, %rsp
popq %rbp
retq
movq -0x28(%rbp), %rdi
callq 0x33f0
nopl (%rax)