// File: /workspace/github_c_makefile_star2_O2/hsjoihs[P]c-compiler/lexer.c
// Function: get_token
static struct Token get_token(const char **ptr_to_str)
{
	struct Token t = get_token_raw(ptr_to_str);
	if (t.kind != IDENT_OR_RESERVED) {
		return t;
	}
	const char *new_str = t.ident_str;
	if (strcmp(new_str, "return") == 0) {
		t.kind = RES_RETURN;
	} else if (strcmp(new_str, "if") == 0) {
		t.kind = RES_IF;
	} else if (strcmp(new_str, "else") == 0) {
		t.kind = RES_ELSE;
	} else if (strcmp(new_str, "do") == 0) {
		t.kind = RES_DO;
	} else if (strcmp(new_str, "while") == 0) {
		t.kind = RES_WHILE;
	} else if (strcmp(new_str, "break") == 0) {
		t.kind = RES_BREAK;
	} else if (strcmp(new_str, "continue") == 0) {
		t.kind = RES_CONTINUE;
	} else if (strcmp(new_str, "for") == 0) {
		t.kind = RES_FOR;
	} else if (strcmp(new_str, "int") == 0) {
		t.kind = RES_INT;
	} else if (strcmp(new_str, "char") == 0) {
		t.kind = RES_CHAR;
	} else if (strcmp(new_str, "struct") == 0) {
		t.kind = RES_STRUCT;
	} else if (strcmp(new_str, "sizeof") == 0) {
		t.kind = RES_SIZEOF;
	} else if (strcmp(new_str, "void") == 0) {
		t.kind = RES_VOID;
	} else if (strcmp(new_str, "switch") == 0) {
		t.kind = RES_SWITCH;
	} else if (strcmp(new_str, "case") == 0) {
		t.kind = RES_CASE;
	} else if (strcmp(new_str, "default") == 0) {
		t.kind = RES_DEFAULT;
	} else if (strcmp(new_str, "_Alignof") == 0) {
		t.kind = RES_ALIGNOF;
	} else if (strcmp(new_str, "enum") == 0) {
		t.kind = RES_ENUM;
	} else if (strcmp(new_str, "const") == 0) {
		t.kind = RES_CONST;
	} else if (strcmp(new_str, "_Noreturn") == 0) {
		t.kind = RES_NORETURN;
	} else if (strcmp(new_str, "extern") == 0) {
		t.kind = RES_EXTERN;
	} else if (strcmp(new_str, "static") == 0) {
		t.kind = RES_STATIC;
	} else if (strcmp(new_str, "goto") == 0) {
		t.kind = RES_GOTO;
	} else if (strcmp(new_str, "union") == 0) {
		t.kind = RES_UNION;
	}
	return t;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
movq %rsi, %r15
movq %rdi, %rbx
movq (%rsi), %r14
movzbl (%r14), %eax
cmpq $0x3f, %rax
ja 0xb1ee
leaq 0x5fd1(%rip), %rcx      # 0x111a4
movslq (%rcx,%rax,4), %rdx
addq %rcx, %rdx
jmpq *%rdx
leaq 0x1(%r14), %rax
movq %rax, (%r15)
movl $0x4d, (%rbx)
jmp 0xb982
leal -0x7b(%rax), %ecx
cmpl $0x3, %ecx
ja 0xb218
leaq 0x60a7(%rip), %rax      # 0x112a4
movslq (%rax,%rcx,4), %rcx
addq %rax, %rcx
jmpq *%rcx
leaq 0x1(%r14), %rax
movq %rax, (%r15)
movl $0x1e, (%rbx)
jmp 0xb982
cmpl $0x5b, %eax
je 0xb68e
cmpl $0x5d, %eax
je 0xb66a
cmpl $0x5e, %eax
jne 0xb24c
cmpb $0x3d, 0x1(%r14)
jne 0xb7a5
leaq 0x2(%r14), %rax
movq %rax, (%r15)
movl $0x2a, (%rbx)
jmp 0xb982
leal -0x31(%rax), %ecx
cmpb $0x8, %cl
ja 0xb6db
xorl %ecx, %ecx
movq %r14, %rdx
addb $-0x30, %al
cmpb $0x9, %al
ja 0xb74c
imull $0xa, %ecx, %esi
movzbl %al, %ecx
addl %esi, %ecx
movb 0x1(%rdx), %al
incq %rdx
jmp 0xb25d
movzbl 0x1(%r14), %eax
cmpl $0x2b, %eax
je 0xb80b
cmpl $0x3d, %eax
jne 0xb82f
leaq 0x2(%r14), %rax
movq %rax, (%r15)
movl $0x22, (%rbx)
jmp 0xb982
movzbl 0x1(%r14), %eax
cmpl $0x2d, %eax
je 0xb8ce
cmpl $0x3e, %eax
je 0xb8bc
cmpl $0x3d, %eax
jne 0xb8e0
leaq 0x2(%r14), %rax
movq %rax, (%r15)
movl $0x23, (%rbx)
jmp 0xb982
leaq 0x1(%r14), %rax
movq %rax, (%r15)
movl $0x7, (%rbx)
jmp 0xb982
movzbl 0x1(%r14), %eax
cmpl $0x3d, %eax
je 0xb81d
cmpl $0x3e, %eax
jne 0xb850
cmpb $0x3d, 0x2(%r14)
jne 0xb966
leaq 0x3(%r14), %rax
movq %rax, (%r15)
movl $0x28, (%rbx)
jmp 0xb982
leaq 0x1(%r14), %rax
movq %rax, (%r15)
movl $0x6, (%rbx)
jmp 0xb982
movzbl 0x1(%r14), %eax
cmpl $0x3d, %eax
je 0xb83e
cmpl $0x26, %eax
jne 0xb862
leaq 0x2(%r14), %rax
movq %rax, (%r15)
movl $0x20, (%rbx)
jmp 0xb982
leaq 0x1(%r14), %rax
movq %rax, (%r15)
movl $0xa, (%rbx)
jmp 0xb982
cmpb $0x3d, 0x1(%r14)
jne 0xb75d
leaq 0x2(%r14), %rax
movq %rax, (%r15)
movl $0x26, (%rbx)
jmp 0xb982
pushq $0x1
popq %rax
leaq 0x1(%r14), %rdi
xorl %esi, %esi
movl %esi, %esi
leaq (%rdi,%rsi), %r13
movzbl (%rdi,%rsi), %edx
cmpl $0x5c, %edx
je 0xb3a3
movl %eax, %ecx
cmpl $0x27, %edx
jne 0xb3ba
jmp 0xb3be
movb 0x1(%r13), %cl
cmpb $0x5c, %cl
sete %dl
cmpb $0x27, %cl
sete %cl
orb %dl, %cl
movzbl %cl, %ecx
incl %ecx
addl %ecx, %esi
jmp 0xb38b
callq 0x10b0
movq %rax, %rdi
callq 0xae58
movq %rax, %r12
movq %rax, %rdi
callq 0x1060
cmpq $0x2, %rax
jae 0xbc2e
movsbl (%r12), %eax
incq %r13
movq %r13, (%r15)
jmp 0xb7ba
leaq 0x1(%r14), %rdi
xorl %esi, %esi
pushq $0x1
popq %rax
movl %esi, %esi
leaq (%rdi,%rsi), %r12
movzbl (%rdi,%rsi), %edx
cmpl $0x5c, %edx
je 0xb411
movl %eax, %ecx
cmpl $0x22, %edx
jne 0xb429
jmp 0xb42d
movb 0x1(%r12), %cl
cmpb $0x5c, %cl
sete %dl
cmpb $0x22, %cl
sete %cl
orb %dl, %cl
movzbl %cl, %ecx
incl %ecx
addl %ecx, %esi
jmp 0xb3f9
callq 0x10b0
movq %rax, %rdi
callq 0xae58
incq %r12
movq %r12, (%r15)
movl $0x39, (%rbx)
andq $0x0, 0x8(%rbx)
movq %rax, 0x10(%rbx)
jmp 0xb989
movl $0x2, (%rbx)
jmp 0xb982
cmpb $0x3d, 0x1(%r14)
jne 0xb76f
leaq 0x2(%r14), %rax
movq %rax, (%r15)
movl $0x14, (%rbx)
jmp 0xb982
movzbl 0x1(%r14), %eax
cmpl $0x3d, %eax
je 0xb918
cmpl $0x2f, %eax
je 0xb8f2
cmpl $0x2a, %eax
jne 0xb927
addq $0x4, %r14
cmpb $0x2a, -0x2(%r14)
jne 0xb4b2
cmpb $0x2f, -0x1(%r14)
je 0xb908
incq %r14
jmp 0xb4a0
cmpb $0x2e, 0x1(%r14)
jne 0xb6c9
cmpb $0x2e, 0x2(%r14)
jne 0xb6c9
leaq 0x3(%r14), %rax
movq %rax, (%r15)
movl $0x48, (%rbx)
jmp 0xb982
movzbl 0x1(%r14), %eax
cmpl $0x3d, %eax
je 0xb874
cmpl $0x3c, %eax
jne 0xb886
cmpb $0x3d, 0x2(%r14)
jne 0xb975
leaq 0x3(%r14), %rax
movq %rax, (%r15)
movl $0x27, (%rbx)
jmp 0xb982
leaq 0x1(%r14), %rax
movq %rax, (%r15)
movl $0x4c, (%rbx)
jmp 0xb982
leaq 0x1(%r14), %rax
movq %rax, (%r15)
movl $0x1c, (%rbx)
jmp 0xb982
leaq 0x1(%r14), %rax
movq %rax, (%r15)
movl $0x4b, (%rbx)
jmp 0xb982
cmpb $0x3d, 0x1(%r14)
jne 0xb781
leaq 0x2(%r14), %rax
movq %rax, (%r15)
movl $0x24, (%rbx)
jmp 0xb982
movzbl 0x1(%r14), %eax
cmpl $0x42, %eax
je 0xb7c8
cmpl $0x58, %eax
je 0xb58b
cmpl $0x62, %eax
je 0xb7c8
cmpl $0x78, %eax
jne 0xb936
leaq 0x2(%r14), %rcx
xorl %eax, %eax
movabsq $0x7e0000007e03ff, %rdx # imm = 0x7E0000007E03FF
pushq $-0x1
popq %rsi
movl $0x3ff, %edi            # imm = 0x3FF
movl $0x7e0000, %r8d         # imm = 0x7E0000
movabsq $0x7e000000000000, %r9  # imm = 0x7E000000000000
movzbl (%rcx), %r10d
leal -0x30(%r10), %r11d
cmpl $0x36, %r11d
ja 0xb7b7
btq %r11, %rdx
jae 0xb7b7
movzbl %r10b, %r11d
addl $-0x30, %r11d
movl %esi, %r12d
cmpl $0x36, %r11d
ja 0xb60c
movsbl %r10b, %r10d
btq %r11, %rdi
jb 0xb5ff
btq %r11, %r8
jb 0xb605
btq %r11, %r9
movl %esi, %r12d
jae 0xb60c
addl $-0x57, %r10d
jmp 0xb609
addl $-0x30, %r10d
jmp 0xb609
addl $-0x37, %r10d
movl %r10d, %r12d
shll $0x4, %eax
addl %r12d, %eax
incq %rcx
jmp 0xb5b3
leaq 0x1(%r14), %rax
movq %rax, (%r15)
movl $0x1d, (%rbx)
jmp 0xb982
leaq 0x1(%r14), %rax
movq %rax, (%r15)
movl $0x1a, (%rbx)
jmp 0xb982
cmpb $0x3d, 0x1(%r14)
jne 0xb793
leaq 0x2(%r14), %rax
movq %rax, (%r15)
movl $0x13, (%rbx)
jmp 0xb982
leaq 0x1(%r14), %rax
movq %rax, (%r15)
movl $0x1f, (%rbx)
jmp 0xb982
leaq 0x1(%r14), %rax
movq %rax, (%r15)
movl $0x37, (%rbx)
jmp 0xb982
leaq 0x1(%r14), %rax
movq %rax, (%r15)
movl $0x16, (%rbx)
jmp 0xb982
leaq 0x1(%r14), %rax
movq %rax, (%r15)
movl $0x36, (%rbx)
jmp 0xb982
movzbl 0x1(%r14), %eax
cmpl $0x3d, %eax
je 0xb898
cmpl $0x7c, %eax
jne 0xb8aa
leaq 0x2(%r14), %rax
movq %rax, (%r15)
movl $0x21, (%rbx)
jmp 0xb982
leaq 0x1(%r14), %rax
movq %rax, (%r15)
movl $0x3c, (%rbx)
jmp 0xb982
movsbl %al, %r12d
leaq 0x5cc4(%rip), %rdi      # 0x113aa
pushq $0x36
popq %rdx
movl %r12d, %esi
callq 0x10a0
testq %rax, %rax
je 0xbc3a
pushq $0x1
popq %rcx
pushq $0x40
popq %r13
movq %rcx, %r12
movsbl (%r14,%rcx), %esi
testl %esi, %esi
je 0xb726
leaq 0x5ccc(%rip), %rdi      # 0x113e0
movq %r13, %rdx
callq 0x10a0
leaq 0x1(%r12), %rcx
testq %rax, %rax
jne 0xb701
leaq (%r14,%r12), %r13
movq %r14, %rdi
movq %r12, %rsi
callq 0x10b0
movq %r13, (%r15)
movl $0x18, (%rbx)
movq %rax, 0x8(%rbx)
andq $0x0, 0x10(%rbx)
jmp 0xb989
movq %rdx, (%r15)
movl $0x4, (%rbx)
movl %ecx, 0x4(%rbx)
jmp 0xb982
leaq 0x1(%r14), %rax
movq %rax, (%r15)
movl $0x9, (%rbx)
jmp 0xb982
leaq 0x1(%r14), %rax
movq %rax, (%r15)
movl $0x15, (%rbx)
jmp 0xb982
leaq 0x1(%r14), %rax
movq %rax, (%r15)
movl $0x5, (%rbx)
jmp 0xb982
leaq 0x1(%r14), %rax
movq %rax, (%r15)
movl $0x17, (%rbx)
jmp 0xb982
leaq 0x1(%r14), %rax
movq %rax, (%r15)
movl $0x1b, (%rbx)
jmp 0xb982
movq %rcx, (%r15)
movl $0x4, (%rbx)
movl %eax, 0x4(%rbx)
jmp 0xb982
leaq 0xa90d(%rip), %rax      # 0x160dc
cmpl $0x0, (%rax)
jne 0xbc5a
leaq 0x2(%r14), %rcx
xorl %eax, %eax
movb (%rcx), %dl
movl %edx, %esi
andb $-0x2, %sil
cmpb $0x30, %sil
jne 0xb7fa
addb $-0x30, %dl
movzbl %dl, %edx
leal (%rdx,%rax,2), %eax
incq %rcx
jmp 0xb7de
movq %rcx, (%r15)
movl $0x4, (%rbx)
movl %eax, 0x4(%rbx)
jmp 0xb982
leaq 0x2(%r14), %rax
movq %rax, (%r15)
movl $0x32, (%rbx)
jmp 0xb982
leaq 0x2(%r14), %rax
movq %rax, (%r15)
movl $0xf, (%rbx)
jmp 0xb982
leaq 0x1(%r14), %rax
movq %rax, (%r15)
andl $0x0, (%rbx)
jmp 0xb982
leaq 0x2(%r14), %rax
movq %rax, (%r15)
movl $0x29, (%rbx)
jmp 0xb982
leaq 0x1(%r14), %rax
movq %rax, (%r15)
movl $0x10, (%rbx)
jmp 0xb982
leaq 0x1(%r14), %rax
movq %rax, (%r15)
movl $0x11, (%rbx)
jmp 0xb982
leaq 0x2(%r14), %rax
movq %rax, (%r15)
movl $0xc, (%rbx)
jmp 0xb982
leaq 0x1(%r14), %rax
movq %rax, (%r15)
movl $0xd, (%rbx)
jmp 0xb982
leaq 0x2(%r14), %rax
movq %rax, (%r15)
movl $0x2b, (%rbx)
jmp 0xb982
leaq 0x1(%r14), %rax
movq %rax, (%r15)
movl $0x12, (%rbx)
jmp 0xb982
leaq 0x2(%r14), %rax
movq %rax, (%r15)
movl $0x3d, (%rbx)
jmp 0xb982
leaq 0x2(%r14), %rax
movq %rax, (%r15)
movl $0x33, (%rbx)
jmp 0xb982
leaq 0x1(%r14), %rax
movq %rax, (%r15)
movl $0x1, (%rbx)
jmp 0xb982
addq $0x2, %r14
movzbl (%r14), %eax
testl %eax, %eax
je 0xb908
cmpl $0xa, %eax
je 0xb908
incq %r14
jmp 0xb8f6
movq %r14, (%r15)
movq %rbx, %rdi
movq %r15, %rsi
callq 0xb1ab
jmp 0xb98d
leaq 0x2(%r14), %rax
movq %rax, (%r15)
movl $0x25, (%rbx)
jmp 0xb982
leaq 0x1(%r14), %rax
movq %rax, (%r15)
movl $0x8, (%rbx)
jmp 0xb982
leaq 0x1(%r14), %rdx
xorl %ecx, %ecx
movl %eax, %esi
andb $-0x8, %sil
cmpb $0x30, %sil
jne 0xb958
addb $-0x30, %al
movzbl %al, %eax
leal (%rax,%rcx,8), %ecx
movb 0x1(%rdx), %al
incq %rdx
jmp 0xb93c
movq %rdx, (%r15)
movl $0x4, (%rbx)
movl %ecx, 0x4(%rbx)
jmp 0xb982
leaq 0x2(%r14), %rax
movq %rax, (%r15)
movl $0xe, (%rbx)
jmp 0xb982
leaq 0x2(%r14), %rax
movq %rax, (%r15)
movl $0xb, (%rbx)
xorps %xmm0, %xmm0
movups %xmm0, 0x8(%rbx)
movq %r14, 0x18(%rbx)
cmpl $0x18, (%rbx)
jne 0xbc1c
movq 0x8(%rbx), %r14
leaq 0x599a(%rip), %rsi      # 0x1133b
movq %r14, %rdi
callq 0x10e0
testl %eax, %eax
je 0xbbbf
movb (%r14), %r15b
cmpb $0x69, %r15b
jne 0xb9cc
cmpb $0x66, 0x1(%r14)
jne 0xb9cc
cmpb $0x0, 0x2(%r14)
je 0xbbcf
leaq 0x5947(%rip), %rsi      # 0x1131a
movq %r14, %rdi
callq 0x10e0
testl %eax, %eax
je 0xbbc3
cmpb $0x64, %r15b
jne 0xb9fb
cmpb $0x6f, 0x1(%r14)
jne 0xb9fb
cmpb $0x0, 0x2(%r14)
je 0xbbd7
leaq 0x2027(%rip), %rsi      # 0xda29
movq %r14, %rdi
callq 0x10e0
testl %eax, %eax
je 0xbbc7
leaq 0x171d(%rip), %rsi      # 0xd136
movq %r14, %rdi
callq 0x10e0
testl %eax, %eax
je 0xbbcb
leaq 0x1766(%rip), %rsi      # 0xd196
movq %r14, %rdi
callq 0x10e0
testl %eax, %eax
je 0xbbd3
leaq 0x58d8(%rip), %rsi      # 0x1131f
movq %r14, %rdi
callq 0x10e0
testl %eax, %eax
je 0xbbdb
leaq 0x3e8e(%rip), %rsi      # 0xf8ec
movq %r14, %rdi
callq 0x10e0
testl %eax, %eax
je 0xbbdf
leaq 0x3876(%rip), %rsi      # 0xf2eb
movq %r14, %rdi
callq 0x10e0
testl %eax, %eax
je 0xbbe3
leaq 0x16bc(%rip), %rsi      # 0xd148
movq %r14, %rdi
callq 0x10e0
testl %eax, %eax
je 0xbbe7
leaq 0x5880(%rip), %rsi      # 0x11323
movq %r14, %rdi
callq 0x10e0
testl %eax, %eax
je 0xbbeb
leaq 0x382c(%rip), %rsi      # 0xf2e6
movq %r14, %rdi
callq 0x10e0
testl %eax, %eax
je 0xbbef
leaq 0x59a3(%rip), %rsi      # 0x11474
movq %r14, %rdi
callq 0x10e0
testl %eax, %eax
je 0xbbf3
leaq 0x1d64(%rip), %rsi      # 0xd84c
movq %r14, %rdi
callq 0x10e0
testl %eax, %eax
je 0xbbf7
leaq 0x5983(%rip), %rsi      # 0x11482
movq %r14, %rdi
callq 0x10e0
testl %eax, %eax
je 0xbbfb
leaq 0x5814(%rip), %rsi      # 0x1132a
movq %r14, %rdi
callq 0x10e0
testl %eax, %eax
je 0xbbff
leaq 0x5806(%rip), %rsi      # 0x11333
movq %r14, %rdi
callq 0x10e0
testl %eax, %eax
je 0xbc03
leaq 0x447a(%rip), %rsi      # 0xffbe
movq %r14, %rdi
callq 0x10e0
testl %eax, %eax
je 0xbc07
leaq 0x57dd(%rip), %rsi      # 0x11338
movq %r14, %rdi
callq 0x10e0
testl %eax, %eax
je 0xbc0b
leaq 0x57d0(%rip), %rsi      # 0x11342
movq %r14, %rdi
callq 0x10e0
testl %eax, %eax
je 0xbc0f
leaq 0x3c68(%rip), %rsi      # 0xf7f1
movq %r14, %rdi
callq 0x10e0
testl %eax, %eax
je 0xbc13
leaq 0x15d8(%rip), %rsi      # 0xd174
movq %r14, %rdi
callq 0x10e0
testl %eax, %eax
je 0xbc17
leaq 0x387a(%rip), %rsi      # 0xf429
movq %r14, %rdi
callq 0x10e0
testl %eax, %eax
jne 0xbc1c
pushq $0x4a
jmp 0xbc19
pushq $0x19
jmp 0xbc19
pushq $0x2d
jmp 0xbc19
pushq $0x2f
jmp 0xbc19
pushq $0x30
jmp 0xbc19
pushq $0x2c
jmp 0xbc19
pushq $0x31
jmp 0xbc19
pushq $0x2e
jmp 0xbc19
pushq $0x34
jmp 0xbc19
pushq $0x35
jmp 0xbc19
pushq $0x38
jmp 0xbc19
pushq $0x3a
jmp 0xbc19
pushq $0x3b
jmp 0xbc19
pushq $0x3e
jmp 0xbc19
pushq $0x3f
jmp 0xbc19
pushq $0x40
jmp 0xbc19
pushq $0x41
jmp 0xbc19
pushq $0x42
jmp 0xbc19
pushq $0x43
jmp 0xbc19
pushq $0x44
jmp 0xbc19
pushq $0x45
jmp 0xbc19
pushq $0x46
jmp 0xbc19
pushq $0x47
jmp 0xbc19
pushq $0x49
popq %rax
movl %eax, (%rbx)
movq %rbx, %rax
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x5714(%rip), %rdi      # 0x11349
callq 0x8186
movq 0xa3b7(%rip), %rax      # 0x15ff8
movq (%rax), %rdi
leaq 0x57d5(%rip), %rsi      # 0x11420
movl %r12d, %edx
movl %r12d, %ecx
xorl %eax, %eax
callq 0x10f0
jmp 0xbc76
movq 0xa397(%rip), %rax      # 0x15ff8
movq (%rax), %rcx
leaq 0x570b(%rip), %rdi      # 0x11376
pushq $0x33
popq %rsi
pushq $0x1
popq %rdx
callq 0x1180
pushq $0x1
popq %rdi
callq 0x1170
nop