// File: ps-george[P]ansi_c_compiler/src/lexer/lexer_main.cpp
// Function: main
int main() {
  fprintf(stdout, "[\n");
  std::string Class;
  int tokens = 0;
  while (1) {
    yytokentype type = (yytokentype)yylex();
    if (!type) {
      break;
    }
    tokens++;
    Class = classname(type);
    // Replace 
    fprintf(stdout, "\t{\n\t\t\"Text\": %s,\n\t\t\"Class\": %s,\n\t\t\"StreamLine\": %s,\n\t\t\"SourceFile\": %s,\n\t\t\"SourceLine\": %s,\n\t\t\"SourceCol\": %s\n\t},\n",
            quote(escape_chars(*yylval.raw)).c_str(),
            quote(Class).c_str(),
            std::to_string(yylineno).c_str(),
            quote(yylfile).c_str(),
            std::to_string(yylsourcelino).c_str(),
            std::to_string(yylcolno).c_str());
  }
  fprintf(stdout, "\t{}\n]\n");
  fprintf(stderr, "Number of tokens: %d", tokens);
  return 0;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x1d0, %rsp            # imm = 0x1D0
movl $0x0, -0x4(%rbp)
movq 0x926f(%rip), %rax      # 0xbfa8
movq (%rax), %rdi
leaq 0x57a3(%rip), %rsi      # 0x84e6
movb $0x0, %al
callq 0x22a0
leaq -0x28(%rbp), %rdi
callq 0x2290
movl $0x0, -0x2c(%rbp)
jmp 0x2d5c
callq 0x3900
movl %eax, -0x184(%rbp)
jmp 0x2d69
movl -0x184(%rbp), %eax
movl %eax, -0x30(%rbp)
cmpl $0x0, -0x30(%rbp)
jne 0x2d8e
jmp 0x3079
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
jmp 0x30c8
movl -0x2c(%rbp), %eax
incl %eax
movl %eax, -0x2c(%rbp)
movl -0x30(%rbp), %esi
leaq -0x60(%rbp), %rdi
callq 0x29b0
jmp 0x2da4
leaq -0x28(%rbp), %rdi
leaq -0x60(%rbp), %rsi
movq %rsi, -0x198(%rbp)
callq 0x2260
movq -0x198(%rbp), %rdi
callq 0x23f8
movq 0x91dd(%rip), %rax      # 0xbfa8
movq (%rax), %rax
movq %rax, -0x190(%rbp)
movq 0x9454(%rip), %rsi      # 0xc230
leaq -0xa0(%rbp), %rdi
callq 0x26d0
jmp 0x2dea
leaq -0x80(%rbp), %rdi
leaq -0xa0(%rbp), %rsi
callq 0x2650
jmp 0x2dfc
leaq -0x80(%rbp), %rdi
callq 0x20b0
movq %rax, -0x1a0(%rbp)
leaq -0xe0(%rbp), %rdi
leaq -0x28(%rbp), %rsi
callq 0x20c0
jmp 0x2e1e
leaq -0xc0(%rbp), %rdi
leaq -0xe0(%rbp), %rsi
callq 0x2650
jmp 0x2e33
leaq -0xc0(%rbp), %rdi
callq 0x20b0
movq %rax, -0x1a8(%rbp)
leaq 0x93cb(%rip), %rax      # 0xc218
movl (%rax), %esi
leaq -0x100(%rbp), %rdi
callq 0x30e0
jmp 0x2e5d
leaq -0x100(%rbp), %rdi
callq 0x20b0
movq %rax, -0x1b0(%rbp)
leaq 0x93c9(%rip), %rsi      # 0xc240
leaq -0x140(%rbp), %rdi
callq 0x20c0
jmp 0x2e85
leaq -0x120(%rbp), %rdi
leaq -0x140(%rbp), %rsi
callq 0x2650
jmp 0x2e9a
leaq -0x120(%rbp), %rdi
callq 0x20b0
movq %rax, -0x1b8(%rbp)
movl 0x9359(%rip), %esi      # 0xc20c
leaq -0x160(%rbp), %rdi
callq 0x30e0
jmp 0x2ec1
leaq -0x160(%rbp), %rdi
callq 0x20b0
movq %rax, -0x1c0(%rbp)
movl 0x932e(%rip), %esi      # 0xc208
leaq -0x180(%rbp), %rdi
callq 0x30e0
jmp 0x2ee8
leaq -0x180(%rbp), %rdi
callq 0x20b0
movq -0x190(%rbp), %rdi
movq -0x1a0(%rbp), %rdx
movq -0x1a8(%rbp), %rcx
movq -0x1b0(%rbp), %r8
movq -0x1b8(%rbp), %r9
movq -0x1c0(%rbp), %r10
leaq 0x55c4(%rip), %rsi      # 0x84e9
movq %r10, (%rsp)
movq %rax, 0x8(%rsp)
movb $0x0, %al
callq 0x22a0
leaq -0x180(%rbp), %rdi
callq 0x23f8
leaq -0x160(%rbp), %rdi
callq 0x23f8
leaq -0x120(%rbp), %rdi
callq 0x23f8
leaq -0x140(%rbp), %rdi
callq 0x23f8
leaq -0x100(%rbp), %rdi
callq 0x23f8
leaq -0xc0(%rbp), %rdi
callq 0x23f8
leaq -0xe0(%rbp), %rdi
callq 0x23f8
leaq -0x80(%rbp), %rdi
callq 0x23f8
leaq -0xa0(%rbp), %rdi
callq 0x23f8
jmp 0x2d5a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
jmp 0x306b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
jmp 0x3062
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
jmp 0x3056
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
jmp 0x304a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
jmp 0x303e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
jmp 0x3032
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
jmp 0x3026
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0x160(%rbp), %rdi
callq 0x23f8
leaq -0x120(%rbp), %rdi
callq 0x23f8
leaq -0x140(%rbp), %rdi
callq 0x23f8
leaq -0x100(%rbp), %rdi
callq 0x23f8
leaq -0xc0(%rbp), %rdi
callq 0x23f8
leaq -0xe0(%rbp), %rdi
callq 0x23f8
leaq -0x80(%rbp), %rdi
callq 0x23f8
leaq -0xa0(%rbp), %rdi
callq 0x23f8
jmp 0x30c8
movq 0x8f28(%rip), %rax      # 0xbfa8
movq (%rax), %rdi
leaq 0x54d2(%rip), %rsi      # 0x855c
movb $0x0, %al
callq 0x22a0
movq 0x8f38(%rip), %rax      # 0xbfd0
movq (%rax), %rdi
movl -0x2c(%rbp), %edx
leaq 0x54be(%rip), %rsi      # 0x8563
movb $0x0, %al
callq 0x22a0
movl $0x0, -0x4(%rbp)
leaq -0x28(%rbp), %rdi
callq 0x23f8
movl -0x4(%rbp), %eax
addq $0x1d0, %rsp            # imm = 0x1D0
popq %rbp
retq
leaq -0x28(%rbp), %rdi
callq 0x23f8
movq -0x38(%rbp), %rdi
callq 0x2350
nopw (%rax,%rax)