// File: /workspace/github_c_makefile_star2_O3/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
movb (%r14), %al
movzbl %al, %ecx
cmpl $0x5c, %ecx
jg 0xc472
cmpl $0x3f, %ecx
ja 0xc4c7
movl %ecx, %ecx
leaq 0x5d2d(%rip), %rdx      # 0x12184
movslq (%rdx,%rcx,4), %rcx
addq %rdx, %rcx
jmpq *%rcx
leaq 0x1(%r14), %rax
movq %rax, (%r15)
movl $0x4d, (%rbx)
jmp 0xcc1d
leal -0x7b(%rcx), %edx
cmpl $0x3, %edx
ja 0xc49c
leaq 0x5e03(%rip), %rax      # 0x12284
movslq (%rax,%rdx,4), %rcx
addq %rax, %rcx
jmpq *%rcx
leaq 0x1(%r14), %rax
movq %rax, (%r15)
movl $0x1e, (%rbx)
jmp 0xcc1d
cmpl $0x5d, %ecx
je 0xc567
cmpl $0x5e, %ecx
jne 0xc4de
cmpb $0x3d, 0x1(%r14)
jne 0xc98b
leaq 0x2(%r14), %rax
movq %rax, (%r15)
movl $0x2a, (%rbx)
jmp 0xcc1d
cmpl $0x5b, %ecx
jne 0xc4de
leaq 0x1(%r14), %rax
movq %rax, (%r15)
movl $0x36, (%rbx)
jmp 0xcc1d
leal -0x31(%rax), %ecx
cmpb $0x8, %cl
ja 0xc90b
xorl %edx, %edx
movq %r14, %rcx
leal (%rdx,%rdx,4), %edx
addb $-0x30, %al
movzbl %al, %eax
leal (%rax,%rdx,2), %edx
movb 0x1(%rcx), %al
incq %rcx
leal -0x30(%rax), %esi
cmpb $0xa, %sil
jb 0xc4ef
movq %rcx, (%r15)
movl $0x4, (%rbx)
movl %edx, 0x4(%rbx)
jmp 0xcc1d
leaq 0x1(%r14), %rax
movq %rax, (%r15)
movl $0x1f, (%rbx)
jmp 0xcc1d
leaq 0x1(%r14), %rax
movq %rax, (%r15)
movl $0x16, (%rbx)
jmp 0xcc1d
movzbl 0x1(%r14), %eax
cmpl $0x3d, %eax
je 0xcadc
cmpl $0x7c, %eax
jne 0xcaee
leaq 0x2(%r14), %rax
movq %rax, (%r15)
movl $0x21, (%rbx)
jmp 0xcc1d
leaq 0x1(%r14), %rax
movq %rax, (%r15)
movl $0x37, (%rbx)
jmp 0xcc1d
movzbl 0x1(%r14), %eax
cmpl $0x3d, %eax
je 0xcb00
cmpl $0x3c, %eax
jne 0xcb12
cmpb $0x3d, 0x2(%r14)
jne 0xcc01
leaq 0x3(%r14), %rax
movq %rax, (%r15)
movl $0x27, (%rbx)
jmp 0xcc1d
movzbl 0x1(%r14), %eax
cmpl $0x3d, %eax
je 0xcbb6
cmpl $0x2f, %eax
je 0xcb90
cmpl $0x2a, %eax
jne 0xcbc5
addq $0x4, %r14
cmpb $0x2a, -0x2(%r14)
jne 0xc5e3
cmpb $0x2f, -0x1(%r14)
je 0xcba6
incq %r14
jmp 0xc5d1
leaq 0x1(%r14), %rdi
xorl %esi, %esi
movl %esi, %esi
leaq (%rdi,%rsi), %r12
movzbl (%rdi,%rsi), %ecx
cmpl $0x5c, %ecx
je 0xc609
movl $0x1, %eax
cmpl $0x22, %ecx
jne 0xc61f
jmp 0xc623
movb 0x1(%r12), %al
cmpb $0x5c, %al
sete %cl
cmpb $0x22, %al
sete %al
orb %cl, %al
movzbl %al, %eax
incl %eax
addl %eax, %esi
jmp 0xc5ee
callq 0x10b0
movq %rax, %rdi
callq 0xc123
incq %r12
movq %r12, (%r15)
movl $0x39, (%rbx)
movq $0x0, 0x8(%rbx)
movq %rax, 0x10(%rbx)
jmp 0xcc24
cmpb $0x3d, 0x1(%r14)
jne 0xc99d
leaq 0x2(%r14), %rax
movq %rax, (%r15)
movl $0x13, (%rbx)
jmp 0xcc1d
movzbl 0x1(%r14), %eax
cmpl $0x3d, %eax
je 0xcb24
cmpl $0x26, %eax
jne 0xcb36
leaq 0x2(%r14), %rax
movq %rax, (%r15)
movl $0x20, (%rbx)
jmp 0xcc1d
leaq 0x1(%r14), %rdi
xorl %esi, %esi
movl %esi, %esi
leaq (%rdi,%rsi), %r13
movzbl (%rdi,%rsi), %ecx
cmpl $0x5c, %ecx
je 0xc6b4
movl $0x1, %eax
cmpl $0x27, %ecx
jne 0xc6c9
jmp 0xc6cd
movb 0x1(%r13), %al
cmpb $0x5c, %al
sete %cl
cmpb $0x27, %al
sete %al
orb %cl, %al
movzbl %al, %eax
incl %eax
addl %eax, %esi
jmp 0xc699
callq 0x10b0
movq %rax, %rdi
callq 0xc123
movq %rax, %r12
movq %rax, %rdi
callq 0x1060
cmpq $0x2, %rax
jae 0xcf3c
movsbl (%r12), %eax
incq %r13
movq %r13, (%r15)
jmp 0xca7a
cmpb $0x3d, 0x1(%r14)
jne 0xc9af
leaq 0x2(%r14), %rax
movq %rax, (%r15)
movl $0x26, (%rbx)
jmp 0xcc1d
cmpb $0x3d, 0x1(%r14)
jne 0xc9c1
leaq 0x2(%r14), %rax
movq %rax, (%r15)
movl $0x24, (%rbx)
jmp 0xcc1d
movl $0x2, (%rbx)
jmp 0xcc1d
cmpb $0x3d, 0x1(%r14)
jne 0xc9d3
leaq 0x2(%r14), %rax
movq %rax, (%r15)
movl $0x14, (%rbx)
jmp 0xcc1d
leaq 0x1(%r14), %rax
movq %rax, (%r15)
movl $0x1c, (%rbx)
jmp 0xcc1d
leaq 0x1(%r14), %rax
movq %rax, (%r15)
movl $0x4c, (%rbx)
jmp 0xcc1d
leaq 0x1(%r14), %rax
movq %rax, (%r15)
movl $0x4b, (%rbx)
jmp 0xcc1d
leaq 0x1(%r14), %rax
movq %rax, (%r15)
movl $0x1a, (%rbx)
jmp 0xcc1d
movb 0x1(%r14), %al
movzbl %al, %ecx
cmpl $0x61, %ecx
jg 0xc9e5
cmpl $0x42, %ecx
je 0xca88
cmpl $0x58, %ecx
je 0xc9f7
leaq 0x1(%r14), %rcx
movl %eax, %esi
andb $-0x8, %sil
xorl %edx, %edx
cmpb $0x30, %sil
jne 0xc509
xorl %edx, %edx
addb $-0x30, %al
movzbl %al, %eax
leal (%rax,%rdx,8), %edx
movb 0x1(%rcx), %al
incq %rcx
movl %eax, %esi
andb $-0x8, %sil
cmpb $0x30, %sil
je 0xc7e3
jmp 0xc509
leaq 0x1(%r14), %rax
movq %rax, (%r15)
movl $0x6, (%rbx)
jmp 0xcc1d
leaq 0x1(%r14), %rax
movq %rax, (%r15)
movl $0xa, (%rbx)
jmp 0xcc1d
leaq 0x1(%r14), %rax
movq %rax, (%r15)
movl $0x1d, (%rbx)
jmp 0xcc1d
movzbl 0x1(%r14), %eax
cmpl $0x2b, %eax
je 0xcb48
cmpl $0x3d, %eax
jne 0xcb5a
leaq 0x2(%r14), %rax
movq %rax, (%r15)
movl $0x22, (%rbx)
jmp 0xcc1d
movzbl 0x1(%r14), %eax
cmpl $0x2d, %eax
je 0xcbe3
cmpl $0x3e, %eax
je 0xcbd4
cmpl $0x3d, %eax
jne 0xcbf2
leaq 0x2(%r14), %rax
movq %rax, (%r15)
movl $0x23, (%rbx)
jmp 0xcc1d
leaq 0x1(%r14), %rax
movq %rax, (%r15)
movl $0x7, (%rbx)
jmp 0xcc1d
cmpb $0x2e, 0x1(%r14)
jne 0xc8f9
cmpb $0x2e, 0x2(%r14)
jne 0xc8f9
leaq 0x3(%r14), %rax
movq %rax, (%r15)
movl $0x48, (%rbx)
jmp 0xcc1d
movzbl 0x1(%r14), %eax
cmpl $0x3d, %eax
je 0xcb6c
cmpl $0x3e, %eax
jne 0xcb7e
cmpb $0x3d, 0x2(%r14)
jne 0xcc10
leaq 0x3(%r14), %rax
movq %rax, (%r15)
movl $0x28, (%rbx)
jmp 0xcc1d
leaq 0x1(%r14), %rax
movq %rax, (%r15)
movl $0x3c, (%rbx)
jmp 0xcc1d
movsbl %al, %r12d
leaq 0x5a74(%rip), %rdi      # 0x1238a
movl $0x36, %edx
movl %r12d, %esi
callq 0x10a0
testq %rax, %rax
je 0xcf48
movb 0x1(%r14), %al
movl $0x1, %r12d
testb %al, %al
je 0xc962
leaq 0x5a7f(%rip), %r13      # 0x123c0
movsbl %al, %esi
movl $0x40, %edx
movq %r13, %rdi
callq 0x10a0
testq %rax, %rax
je 0xc962
movb 0x1(%r14,%r12), %al
incq %r12
testb %al, %al
jne 0xc941
leaq (%r14,%r12), %r13
movq %r14, %rdi
movq %r12, %rsi
callq 0x10b0
movq %r13, (%r15)
movl $0x18, (%rbx)
movq %rax, 0x8(%rbx)
movq $0x0, 0x10(%rbx)
jmp 0xcc24
leaq 0x1(%r14), %rax
movq %rax, (%r15)
movl $0x1b, (%rbx)
jmp 0xcc1d
leaq 0x1(%r14), %rax
movq %rax, (%r15)
movl $0x17, (%rbx)
jmp 0xcc1d
leaq 0x1(%r14), %rax
movq %rax, (%r15)
movl $0x9, (%rbx)
jmp 0xcc1d
leaq 0x1(%r14), %rax
movq %rax, (%r15)
movl $0x5, (%rbx)
jmp 0xcc1d
leaq 0x1(%r14), %rax
movq %rax, (%r15)
movl $0x15, (%rbx)
jmp 0xcc1d
cmpl $0x62, %ecx
je 0xca88
cmpl $0x78, %ecx
jne 0xc7cb
leaq 0x2(%r14), %rcx
xorl %eax, %eax
movabsq $0x7e0000007e03ff, %rdx # imm = 0x7E0000007E03FF
movl $0x3ff, %esi            # imm = 0x3FF
movl $0x7e0000, %edi         # imm = 0x7E0000
movabsq $0x7e000000000000, %r8  # imm = 0x7E000000000000
movzbl (%rcx), %r10d
leal -0x30(%r10), %r9d
cmpl $0x36, %r9d
ja 0xca77
btq %r9, %rdx
jae 0xca77
movzbl %r10b, %r11d
movl $0xffffffff, %r9d       # imm = 0xFFFFFFFF
addl $-0x30, %r11d
cmpl $0x36, %r11d
ja 0xca6c
movsbl %r10b, %r10d
btq %r11, %rsi
jb 0xca5f
btq %r11, %rdi
jb 0xca65
btq %r11, %r8
jae 0xca6c
addl $-0x57, %r10d
jmp 0xca69
addl $-0x30, %r10d
jmp 0xca69
addl $-0x37, %r10d
movl %r10d, %r9d
shll $0x4, %eax
addl %r9d, %eax
incq %rcx
jmp 0xca1b
movq %rcx, (%r15)
movl $0x4, (%rbx)
movl %eax, 0x4(%rbx)
jmp 0xcc1d
leaq 0xa64d(%rip), %rax      # 0x170dc
cmpl $0x0, (%rax)
jne 0xcf50
leaq 0x2(%r14), %rax
movb 0x2(%r14), %dl
movl %edx, %esi
andb $-0x2, %sil
xorl %ecx, %ecx
cmpb $0x30, %sil
jne 0xcacb
xorl %ecx, %ecx
addb $-0x30, %dl
movzbl %dl, %edx
leal (%rdx,%rcx,2), %ecx
movb 0x1(%rax), %dl
incq %rax
movl %edx, %esi
andb $-0x2, %sil
cmpb $0x30, %sil
je 0xcab0
movq %rax, (%r15)
movl $0x4, (%rbx)
movl %ecx, 0x4(%rbx)
jmp 0xcc1d
leaq 0x2(%r14), %rax
movq %rax, (%r15)
movl $0x2b, (%rbx)
jmp 0xcc1d
leaq 0x1(%r14), %rax
movq %rax, (%r15)
movl $0x12, (%rbx)
jmp 0xcc1d
leaq 0x2(%r14), %rax
movq %rax, (%r15)
movl $0xc, (%rbx)
jmp 0xcc1d
leaq 0x1(%r14), %rax
movq %rax, (%r15)
movl $0xd, (%rbx)
jmp 0xcc1d
leaq 0x2(%r14), %rax
movq %rax, (%r15)
movl $0x29, (%rbx)
jmp 0xcc1d
leaq 0x1(%r14), %rax
movq %rax, (%r15)
movl $0x11, (%rbx)
jmp 0xcc1d
leaq 0x2(%r14), %rax
movq %rax, (%r15)
movl $0x32, (%rbx)
jmp 0xcc1d
leaq 0x1(%r14), %rax
movq %rax, (%r15)
movl $0x0, (%rbx)
jmp 0xcc1d
leaq 0x2(%r14), %rax
movq %rax, (%r15)
movl $0xf, (%rbx)
jmp 0xcc1d
leaq 0x1(%r14), %rax
movq %rax, (%r15)
movl $0x10, (%rbx)
jmp 0xcc1d
addq $0x2, %r14
movzbl (%r14), %eax
testl %eax, %eax
je 0xcba6
cmpl $0xa, %eax
je 0xcba6
incq %r14
jmp 0xcb94
movq %r14, (%r15)
movq %rbx, %rdi
movq %r15, %rsi
callq 0xc427
jmp 0xcc28
leaq 0x2(%r14), %rax
movq %rax, (%r15)
movl $0x25, (%rbx)
jmp 0xcc1d
leaq 0x1(%r14), %rax
movq %rax, (%r15)
movl $0x8, (%rbx)
jmp 0xcc1d
leaq 0x2(%r14), %rax
movq %rax, (%r15)
movl $0x3d, (%rbx)
jmp 0xcc1d
leaq 0x2(%r14), %rax
movq %rax, (%r15)
movl $0x33, (%rbx)
jmp 0xcc1d
leaq 0x1(%r14), %rax
movq %rax, (%r15)
movl $0x1, (%rbx)
jmp 0xcc1d
leaq 0x2(%r14), %rax
movq %rax, (%r15)
movl $0xb, (%rbx)
jmp 0xcc1d
leaq 0x2(%r14), %rax
movq %rax, (%r15)
movl $0xe, (%rbx)
xorps %xmm0, %xmm0
movups %xmm0, 0x8(%rbx)
movq %r14, 0x18(%rbx)
cmpl $0x18, (%rbx)
jne 0xcf2d
movq 0x8(%rbx), %r14
leaq 0x56df(%rip), %rsi      # 0x1231b
movq %r14, %rdi
callq 0x10e0
testl %eax, %eax
je 0xcc7b
movb (%r14), %r15b
cmpb $0x69, %r15b
jne 0xcc85
cmpb $0x66, 0x1(%r14)
jne 0xcc63
cmpb $0x0, 0x2(%r14)
je 0xcea8
leaq 0x5690(%rip), %rsi      # 0x122fa
movq %r14, %rdi
callq 0x10e0
testl %eax, %eax
jne 0xccb4
jmp 0xce8a
movl $0x19, %eax
jmp 0xcf2b
leaq 0x566e(%rip), %rsi      # 0x122fa
movq %r14, %rdi
callq 0x10e0
testl %eax, %eax
je 0xce8a
cmpb $0x64, %r15b
jne 0xccb4
cmpb $0x6f, 0x1(%r14)
jne 0xccb4
cmpb $0x0, 0x2(%r14)
je 0xcec4
leaq 0x1d4a(%rip), %rsi      # 0xea05
movq %r14, %rdi
callq 0x10e0
testl %eax, %eax
je 0xce94
leaq 0x1464(%rip), %rsi      # 0xe136
movq %r14, %rdi
callq 0x10e0
testl %eax, %eax
je 0xce9e
leaq 0x14ad(%rip), %rsi      # 0xe196
movq %r14, %rdi
callq 0x10e0
testl %eax, %eax
je 0xceaf
leaq 0x55ff(%rip), %rsi      # 0x122ff
movq %r14, %rdi
callq 0x10e0
testl %eax, %eax
je 0xceb6
leaq 0x3bb5(%rip), %rsi      # 0x108cc
movq %r14, %rdi
callq 0x10e0
testl %eax, %eax
je 0xcebd
leaq 0x359d(%rip), %rsi      # 0x102cb
movq %r14, %rdi
callq 0x10e0
testl %eax, %eax
je 0xcecb
leaq 0x1403(%rip), %rsi      # 0xe148
movq %r14, %rdi
callq 0x10e0
testl %eax, %eax
je 0xced2
leaq 0x55a7(%rip), %rsi      # 0x12303
movq %r14, %rdi
callq 0x10e0
testl %eax, %eax
je 0xced9
leaq 0x3553(%rip), %rsi      # 0x102c6
movq %r14, %rdi
callq 0x10e0
testl %eax, %eax
je 0xcee0
leaq 0x56ca(%rip), %rsi      # 0x12454
movq %r14, %rdi
callq 0x10e0
testl %eax, %eax
je 0xcee7
leaq 0x1a87(%rip), %rsi      # 0xe828
movq %r14, %rdi
callq 0x10e0
testl %eax, %eax
je 0xceee
leaq 0x56aa(%rip), %rsi      # 0x12462
movq %r14, %rdi
callq 0x10e0
testl %eax, %eax
je 0xcef5
leaq 0x553b(%rip), %rsi      # 0x1230a
movq %r14, %rdi
callq 0x10e0
testl %eax, %eax
je 0xcefc
leaq 0x552d(%rip), %rsi      # 0x12313
movq %r14, %rdi
callq 0x10e0
testl %eax, %eax
je 0xcf03
leaq 0x41a1(%rip), %rsi      # 0x10f9e
movq %r14, %rdi
callq 0x10e0
testl %eax, %eax
je 0xcf0a
leaq 0x5504(%rip), %rsi      # 0x12318
movq %r14, %rdi
callq 0x10e0
testl %eax, %eax
je 0xcf11
leaq 0x54f7(%rip), %rsi      # 0x12322
movq %r14, %rdi
callq 0x10e0
testl %eax, %eax
je 0xcf18
leaq 0x398f(%rip), %rsi      # 0x107d1
movq %r14, %rdi
callq 0x10e0
testl %eax, %eax
je 0xcf1f
leaq 0x131b(%rip), %rsi      # 0xe174
movq %r14, %rdi
callq 0x10e0
testl %eax, %eax
je 0xcf26
leaq 0x3599(%rip), %rsi      # 0x10409
movq %r14, %rdi
callq 0x10e0
testl %eax, %eax
jne 0xcf2d
movl $0x4a, %eax
jmp 0xcf2b
movl $0x2d, %eax
jmp 0xcf2b
movl $0x2f, %eax
jmp 0xcf2b
movl $0x30, %eax
jmp 0xcf2b
movl $0x2c, %eax
jmp 0xcf2b
movl $0x31, %eax
jmp 0xcf2b
movl $0x34, %eax
jmp 0xcf2b
movl $0x35, %eax
jmp 0xcf2b
movl $0x2e, %eax
jmp 0xcf2b
movl $0x38, %eax
jmp 0xcf2b
movl $0x3a, %eax
jmp 0xcf2b
movl $0x3b, %eax
jmp 0xcf2b
movl $0x3e, %eax
jmp 0xcf2b
movl $0x3f, %eax
jmp 0xcf2b
movl $0x40, %eax
jmp 0xcf2b
movl $0x41, %eax
jmp 0xcf2b
movl $0x42, %eax
jmp 0xcf2b
movl $0x43, %eax
jmp 0xcf2b
movl $0x44, %eax
jmp 0xcf2b
movl $0x45, %eax
jmp 0xcf2b
movl $0x46, %eax
jmp 0xcf2b
movl $0x47, %eax
jmp 0xcf2b
movl $0x49, %eax
movl %eax, (%rbx)
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x53e6(%rip), %rdi      # 0x12329
callq 0x9581
movl %r12d, %edi
callq 0x224a
callq 0x2222
nopl (%rax)