// File: CobaltXII[P]cxcc/./parser/../lexer/token_stream.hpp
// Function: token_stream_t::read_identifier()
token_t read_identifier() {
		std::string str = read_while(chr_id);
		if (str == "if") {
			return {tk_if, str, TOKEN_DEBUG};
		} else if (str == "int") {
			return {tk_int, str, TOKEN_DEBUG};
		} else if (str == "else") {
			return {tk_else, str, TOKEN_DEBUG};
		} else if (str == "while") {
			return {tk_while, str, TOKEN_DEBUG};
		} else if (str == "return") {
			return {tk_return, str, TOKEN_DEBUG};
		} else if (str == "break") {
			return {tk_break, str, TOKEN_DEBUG};
		} else if (str == "continue") {
			return {tk_continue, str, TOKEN_DEBUG};
		} else {
			return {tk_identifier, str, TOKEN_DEBUG};
		}
	}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x70, %rsp
movq %rdi, -0x68(%rbp)
movq %rdi, %rax
movq %rax, -0x60(%rbp)
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x10(%rbp), %rsi
movq %rsi, -0x58(%rbp)
leaq 0xae6(%rip), %rdx       # 0xc260
leaq -0x30(%rbp), %rdi
movq %rdi, -0x50(%rbp)
callq 0xc0e0
movq -0x50(%rbp), %rdi
leaq 0x1ce5d(%rip), %rsi     # 0x285ef
callq 0xc2b0
movb %al, -0x41(%rbp)
jmp 0xb79c
movb -0x41(%rbp), %al
testb $0x1, %al
jne 0xb7a5
jmp 0xb7fc
movq -0x68(%rbp), %rdi
movl $0x5, (%rdi)
addq $0x8, %rdi
leaq -0x30(%rbp), %rsi
callq 0x3130
jmp 0xb7be
movq -0x68(%rbp), %rax
movq -0x58(%rbp), %rcx
movq 0x68(%rcx), %rdx
movq %rdx, 0x28(%rax)
movq 0x70(%rcx), %rcx
movq %rcx, 0x30(%rax)
movl $0x1, -0x40(%rbp)
jmp 0xba53
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0x30(%rbp), %rdi
callq 0x31c0
jmp 0xba66
leaq 0x1c98c(%rip), %rsi     # 0x2818f
leaq -0x30(%rbp), %rdi
callq 0xc2b0
movb %al, -0x69(%rbp)
jmp 0xb811
movb -0x69(%rbp), %al
testb $0x1, %al
jne 0xb81a
jmp 0xb857
movq -0x68(%rbp), %rdi
movl $0x6, (%rdi)
addq $0x8, %rdi
leaq -0x30(%rbp), %rsi
callq 0x3130
jmp 0xb833
movq -0x68(%rbp), %rax
movq -0x58(%rbp), %rcx
movq 0x68(%rcx), %rdx
movq %rdx, 0x28(%rax)
movq 0x70(%rcx), %rcx
movq %rcx, 0x30(%rax)
movl $0x1, -0x40(%rbp)
jmp 0xba53
leaq 0x1cd94(%rip), %rsi     # 0x285f2
leaq -0x30(%rbp), %rdi
callq 0xc2b0
movb %al, -0x6a(%rbp)
jmp 0xb86c
movb -0x6a(%rbp), %al
testb $0x1, %al
jne 0xb875
jmp 0xb8b2
movq -0x68(%rbp), %rdi
movl $0x7, (%rdi)
addq $0x8, %rdi
leaq -0x30(%rbp), %rsi
callq 0x3130
jmp 0xb88e
movq -0x68(%rbp), %rax
movq -0x58(%rbp), %rcx
movq 0x68(%rcx), %rdx
movq %rdx, 0x28(%rax)
movq 0x70(%rcx), %rcx
movq %rcx, 0x30(%rax)
movl $0x1, -0x40(%rbp)
jmp 0xba53
leaq 0x1cd3e(%rip), %rsi     # 0x285f7
leaq -0x30(%rbp), %rdi
callq 0xc2b0
movb %al, -0x6b(%rbp)
jmp 0xb8c7
movb -0x6b(%rbp), %al
testb $0x1, %al
jne 0xb8d0
jmp 0xb90d
movq -0x68(%rbp), %rdi
movl $0x8, (%rdi)
addq $0x8, %rdi
leaq -0x30(%rbp), %rsi
callq 0x3130
jmp 0xb8e9
movq -0x68(%rbp), %rax
movq -0x58(%rbp), %rcx
movq 0x68(%rcx), %rdx
movq %rdx, 0x28(%rax)
movq 0x70(%rcx), %rcx
movq %rcx, 0x30(%rax)
movl $0x1, -0x40(%rbp)
jmp 0xba53
leaq 0x1cce9(%rip), %rsi     # 0x285fd
leaq -0x30(%rbp), %rdi
callq 0xc2b0
movb %al, -0x6c(%rbp)
jmp 0xb922
movb -0x6c(%rbp), %al
testb $0x1, %al
jne 0xb92b
jmp 0xb968
movq -0x68(%rbp), %rdi
movl $0x9, (%rdi)
addq $0x8, %rdi
leaq -0x30(%rbp), %rsi
callq 0x3130
jmp 0xb944
movq -0x68(%rbp), %rax
movq -0x58(%rbp), %rcx
movq 0x68(%rcx), %rdx
movq %rdx, 0x28(%rax)
movq 0x70(%rcx), %rcx
movq %rcx, 0x30(%rax)
movl $0x1, -0x40(%rbp)
jmp 0xba53
leaq 0x1cc95(%rip), %rsi     # 0x28604
leaq -0x30(%rbp), %rdi
callq 0xc2b0
movb %al, -0x6d(%rbp)
jmp 0xb97d
movb -0x6d(%rbp), %al
testb $0x1, %al
jne 0xb986
jmp 0xb9c3
movq -0x68(%rbp), %rdi
movl $0xa, (%rdi)
addq $0x8, %rdi
leaq -0x30(%rbp), %rsi
callq 0x3130
jmp 0xb99f
movq -0x68(%rbp), %rax
movq -0x58(%rbp), %rcx
movq 0x68(%rcx), %rdx
movq %rdx, 0x28(%rax)
movq 0x70(%rcx), %rcx
movq %rcx, 0x30(%rax)
movl $0x1, -0x40(%rbp)
jmp 0xba53
leaq 0x1cc40(%rip), %rsi     # 0x2860a
leaq -0x30(%rbp), %rdi
callq 0xc2b0
movb %al, -0x6e(%rbp)
jmp 0xb9d8
movb -0x6e(%rbp), %al
testb $0x1, %al
jne 0xb9e1
jmp 0xba1b
movq -0x68(%rbp), %rdi
movl $0xb, (%rdi)
addq $0x8, %rdi
leaq -0x30(%rbp), %rsi
callq 0x3130
jmp 0xb9fa
movq -0x68(%rbp), %rax
movq -0x58(%rbp), %rcx
movq 0x68(%rcx), %rdx
movq %rdx, 0x28(%rax)
movq 0x70(%rcx), %rcx
movq %rcx, 0x30(%rax)
movl $0x1, -0x40(%rbp)
jmp 0xba53
movq -0x68(%rbp), %rdi
movl $0x0, (%rdi)
addq $0x8, %rdi
leaq -0x30(%rbp), %rsi
callq 0x3130
jmp 0xba34
movq -0x68(%rbp), %rax
movq -0x58(%rbp), %rcx
movq 0x68(%rcx), %rdx
movq %rdx, 0x28(%rax)
movq 0x70(%rcx), %rcx
movq %rcx, 0x30(%rax)
movl $0x1, -0x40(%rbp)
leaq -0x30(%rbp), %rdi
callq 0x31c0
movq -0x60(%rbp), %rax
addq $0x70, %rsp
popq %rbp
retq
movq -0x38(%rbp), %rdi
callq 0x34c0
nop