// File: metastableB[P]Program-Dependence-Graph-Creator/./pdg.cpp
// Function: PDG::get_line_type(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>)
Line_Type PDG::get_line_type(std::string s){
 	decltype(s.find("")) f;
 	/* Check if string is an if */
 	if((f = s.find("if")) != std::string::npos){
 		if(s[f+2] == ' ' || s[f+2] == '(')
 			return Line_Type::IF;
 	} 	/* Check for else */
 	else if ((f = s.find("else"))!= std::string::npos){
 		if(s[f+4] == ' ' || s[f+4] == '(')
 			return Line_Type::ELSE;
 	} 	/* Checking for while */
 	else if ((f = s.find("while")) != std::string::npos){
 		if(s[f+5] == ' ' || s[f+5] == '(')
 			return Line_Type::WHILE;
 	} 	/* Checking for assignment */
 	else if((f = s.find("=")) != std::string::npos){
 		if(s[f+1]!= '=' && s[f-1] != '!')
 			return Line_Type::ASSIGNMENT;
 	} 	/* Checking for blocl close */
 	else if((f = s.find("}"))!= std::string::npos){
 		return Line_Type::SCOPE_CLOSE;
 	}
 	return ERROR;
 }

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movq %rsi, -0x30(%rbp)
movq %rdi, %rax
movq -0x30(%rbp), %rdi
movq %rdi, -0x28(%rbp)
movq %rax, -0x10(%rbp)
movq %rdi, -0x18(%rbp)
leaq 0x5da9(%rip), %rsi      # 0xa0cf
xorl %eax, %eax
movl %eax, %edx
callq 0x34d0
movq %rax, -0x20(%rbp)
cmpq $-0x1, %rax
je 0x437c
movq -0x28(%rbp), %rdi
movq -0x20(%rbp), %rsi
addq $0x2, %rsi
callq 0x34e0
movsbl (%rax), %eax
cmpl $0x20, %eax
je 0x436b
movq -0x28(%rbp), %rdi
movq -0x20(%rbp), %rsi
addq $0x2, %rsi
callq 0x34e0
movsbl (%rax), %eax
cmpl $0x28, %eax
jne 0x4377
movl $0x1, -0x4(%rbp)
jmp 0x44cf
jmp 0x44c8
movq -0x28(%rbp), %rdi
leaq 0x5d4b(%rip), %rsi      # 0xa0d2
xorl %eax, %eax
movl %eax, %edx
callq 0x34d0
movq %rax, -0x20(%rbp)
cmpq $-0x1, %rax
je 0x43dd
movq -0x28(%rbp), %rdi
movq -0x20(%rbp), %rsi
addq $0x4, %rsi
callq 0x34e0
movsbl (%rax), %eax
cmpl $0x20, %eax
je 0x43cc
movq -0x28(%rbp), %rdi
movq -0x20(%rbp), %rsi
addq $0x4, %rsi
callq 0x34e0
movsbl (%rax), %eax
cmpl $0x28, %eax
jne 0x43d8
movl $0x2, -0x4(%rbp)
jmp 0x44cf
jmp 0x44c6
movq -0x28(%rbp), %rdi
leaq 0x5cef(%rip), %rsi      # 0xa0d7
xorl %eax, %eax
movl %eax, %edx
callq 0x34d0
movq %rax, -0x20(%rbp)
cmpq $-0x1, %rax
je 0x443e
movq -0x28(%rbp), %rdi
movq -0x20(%rbp), %rsi
addq $0x5, %rsi
callq 0x34e0
movsbl (%rax), %eax
cmpl $0x20, %eax
je 0x442d
movq -0x28(%rbp), %rdi
movq -0x20(%rbp), %rsi
addq $0x5, %rsi
callq 0x34e0
movsbl (%rax), %eax
cmpl $0x28, %eax
jne 0x4439
movl $0x3, -0x4(%rbp)
jmp 0x44cf
jmp 0x44c4
movq -0x28(%rbp), %rdi
leaq 0x5c94(%rip), %rsi      # 0xa0dd
xorl %eax, %eax
movl %eax, %edx
callq 0x34d0
movq %rax, -0x20(%rbp)
cmpq $-0x1, %rax
je 0x4499
movq -0x28(%rbp), %rdi
movq -0x20(%rbp), %rsi
addq $0x1, %rsi
callq 0x34e0
movsbl (%rax), %eax
cmpl $0x3d, %eax
je 0x4497
movq -0x28(%rbp), %rdi
movq -0x20(%rbp), %rsi
subq $0x1, %rsi
callq 0x34e0
movsbl (%rax), %eax
cmpl $0x21, %eax
je 0x4497
movl $0x0, -0x4(%rbp)
jmp 0x44cf
jmp 0x44c2
movq -0x28(%rbp), %rdi
leaq 0x5c3b(%rip), %rsi      # 0xa0df
xorl %eax, %eax
movl %eax, %edx
callq 0x34d0
movq %rax, -0x20(%rbp)
cmpq $-0x1, %rax
je 0x44c0
movl $0x4, -0x4(%rbp)
jmp 0x44cf
jmp 0x44c2
jmp 0x44c4
jmp 0x44c6
jmp 0x44c8
movl $0x5, -0x4(%rbp)
movl -0x4(%rbp), %eax
addq $0x30, %rsp
popq %rbp
retq
nopl (%rax,%rax)