// File: /workspace/github_c_makefile_star2_O0/ejunjsh[P]mycc/scan.c
// Function: next
static int next(void) {
  int c, l;

  if (Putback) {		// 如果putback有值，
    c = Putback;		// 就用putback的值
    Putback = 0;
    return (c);
  }

  c = fgetc(Infile);			// 从输入文件读入一个字符

  while (Linestart && c == '#') {	// 预处理开始
    Linestart = 0;			// 不在行首
    scan(&Token);			// 获取行号放到l
    if (Token.token != T_INTLIT)
      fatals("Expecting pre-processor line number, got:", Text);
    l = Token.intvalue;

    scan(&Token);			// 获得文件名放在Text
    if (Token.token != T_STRLIT)
      fatals("Expecting pre-processor file name, got:", Text);

    if (Text[0] != '<') {		// 如果这是真的文件名
      if (strcmp(Text, Infilename))	// 跟我们已有的不一样
	    Infilename = strdup(Text);	// 保存它，然后更新行号
      Line = l;
    }

    while ((c = fgetc(Infile)) != '\n'); // 调到下一行
    c = fgetc(Infile);			// 获取下一个字符
    Linestart = 1;			// 现在在行首了
  }

  Linestart = 0;			// 不在行首
  if ('\n' == c) {
    Line++;				// 增加行号
    Linestart = 1;			// 现在在行首了
  }
  return (c);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x10, %rsp
leaq 0x9a71(%rip), %rax      # 0x12500
cmpl $0x0, (%rax)
je 0x8ab8
leaq 0x9a65(%rip), %rax      # 0x12500
movl (%rax), %eax
movl %eax, -0x8(%rbp)
leaq 0x9a59(%rip), %rax      # 0x12500
movl $0x0, (%rax)
movl -0x8(%rbp), %eax
movl %eax, -0x4(%rbp)
jmp 0x8c2e
leaq 0x9a51(%rip), %rax      # 0x12510
movq (%rax), %rdi
callq 0x20b0
movl %eax, -0x8(%rbp)
xorl %eax, %eax
leaq 0x9a29(%rip), %rcx      # 0x124fc
cmpl $0x0, (%rcx)
movb %al, -0xd(%rbp)
je 0x8ae5
cmpl $0x23, -0x8(%rbp)
sete %al
movb %al, -0xd(%rbp)
movb -0xd(%rbp), %al
testb $0x1, %al
jne 0x8af1
jmp 0x8bef
leaq 0x9a04(%rip), %rax      # 0x124fc
movl $0x0, (%rax)
leaq 0x9a2b(%rip), %rdi      # 0x12530
callq 0x84c0
leaq 0x9a1f(%rip), %rax      # 0x12530
cmpl $0x33, (%rax)
je 0x8b29
leaq 0x5110(%rip), %rdi      # 0xdc2d
leaq 0x9a3c(%rip), %rsi      # 0x12560
callq 0x7fc0
leaq 0x9a00(%rip), %rax      # 0x12530
movl 0x10(%rax), %eax
movl %eax, -0xc(%rbp)
leaq 0x99f3(%rip), %rdi      # 0x12530
callq 0x84c0
leaq 0x99e7(%rip), %rax      # 0x12530
cmpl $0x34, (%rax)
je 0x8b61
leaq 0x5102(%rip), %rdi      # 0xdc57
leaq 0x9a04(%rip), %rsi      # 0x12560
callq 0x7fc0
leaq 0x99f8(%rip), %rax      # 0x12560
movsbl (%rax), %eax
cmpl $0x3c, %eax
je 0x8bb0
leaq 0x99a9(%rip), %rax      # 0x12520
movq (%rax), %rsi
leaq 0x99df(%rip), %rdi      # 0x12560
callq 0x20d0
cmpl $0x0, %eax
je 0x8ba4
leaq 0x99ce(%rip), %rdi      # 0x12560
callq 0x2150
movq %rax, %rcx
leaq 0x997f(%rip), %rax      # 0x12520
movq %rcx, (%rax)
movl -0xc(%rbp), %ecx
leaq 0x994a(%rip), %rax      # 0x124f8
movl %ecx, (%rax)
jmp 0x8bb2
leaq 0x9957(%rip), %rax      # 0x12510
movq (%rax), %rdi
callq 0x20b0
movl %eax, -0x8(%rbp)
cmpl $0xa, %eax
je 0x8bcb
jmp 0x8bb2
leaq 0x993e(%rip), %rax      # 0x12510
movq (%rax), %rdi
callq 0x20b0
movl %eax, -0x8(%rbp)
leaq 0x9918(%rip), %rax      # 0x124fc
movl $0x1, (%rax)
jmp 0x8aca
leaq 0x9906(%rip), %rax      # 0x124fc
movl $0x0, (%rax)
movl $0xa, %eax
cmpl -0x8(%rbp), %eax
jne 0x8c28
leaq 0x98eb(%rip), %rax      # 0x124f8
movl (%rax), %ecx
addl $0x1, %ecx
leaq 0x98df(%rip), %rax      # 0x124f8
movl %ecx, (%rax)
leaq 0x98da(%rip), %rax      # 0x124fc
movl $0x1, (%rax)
movl -0x8(%rbp), %eax
movl %eax, -0x4(%rbp)
movl -0x4(%rbp), %eax
addq $0x10, %rsp
popq %rbp
retq
nopw (%rax,%rax)