// File: /workspace/github_cpp_makefile_star2_O2/tcannon686[P]obj2webgl/./obj_parser.hpp
// Function: ObjParser<std::basic_ifstream<char, std::char_traits<char>>>::nextToken()
void nextToken()
    {
        int c;
        std::stringstream s;

        token = next_token;

        /* Skip whitespace. */
        while(isspace(c = stream.get()) && c != '\n' && c != '\r')
            /* pass */;

        if(c == EOF)
        {
            token_type = TokenType::END_OF_FILE;
        }
        else if(c == '\n' || c == '\r')
        {
            line ++;
            token_type = TokenType::END_OF_LINE;
            if(c == '\n' && stream.peek() == '\r')
                stream.get();
            else if(c == '\r' && stream.peek() == '\n')
                stream.get();
        }
        /* If reading a command. */
        else if(isalpha(c))
        {
            /* Read until non alphanumeric. */
            s << (char) c;
            while(isalnum((c = stream.get())))
            {
                s << (char) c;
            }
            stream.unget();

            next_token = s.str();
            if(next_token == VERTEX_STR)
                token_type = TokenType::VERTEX;
            else if(next_token == NORMAL_STR)
                token_type = TokenType::NORMAL;
            else if(next_token == TEXCO_STR)
                token_type = TokenType::TEXCO;
            else if(next_token == FACE_STR)
                token_type = TokenType::FACE;
            else if(next_token == USEMTL_STR)
                token_type = TokenType::USEMTL;
            else if(next_token == MTLLIB_STR)
                token_type = TokenType::MTLLIB;
            else if(next_token == OBJECT_STR)
                token_type = TokenType::OBJECT;
            else if(next_token == GROUP_STR)
                token_type = TokenType::GROUP;
            else if(next_token == SHADE_STR)
                token_type = TokenType::SHADE;
            else if(next_token == ON_STR)
                token_type = TokenType::ON;
            else if(next_token == OFF_STR)
                token_type = TokenType::OFF;
            else
                token_type = TokenType::UNKNOWN;
        }
        else if(isdigit(c) || c == '-')
        {
            s << (char) c;
            while(isdigit((c = stream.get()))
                    || c == '.'
                    || c == 'e'
                    || c == 'E')
            {
                s << (char) c;
            }
            stream.unget();
            
            next_token = s.str();
            token_type = TokenType::NUMBER;
        }
        else if(c == '#')
        {
            s << (char) c;
            while((c = stream.get()) != '\n' && c != '\r')
            {
                s << (char) c;
            }
            stream.unget();

            next_token = s.str();
            token_type = TokenType::COMMENT;
            line ++;
        }
        else if(c == '/')
        {
            s << (char) c;
            next_token = s.str();
            token_type = TokenType::INDEX_SEPARATOR;
        }
    }

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
subq $0x1b0, %rsp            # imm = 0x1B0
movq %rdi, %rbx
leaq -0x1c8(%rbp), %rdi
callq 0x2180
leaq 0xc0(%rbx), %r14
leaq 0xa0(%rbx), %rdi
movq %r14, %rsi
callq 0x2130
movq (%rbx), %rdi
callq 0x2270
movl %eax, %r15d
movl %eax, %edi
callq 0x2040
testl %eax, %eax
je 0x3b23
cmpl $0xa, %r15d
je 0x3b41
cmpl $0xd, %r15d
jne 0x3aff
jmp 0x3b41
cmpl $0xd, %r15d
je 0x3b41
cmpl $0xa, %r15d
je 0x3b41
cmpl $-0x1, %r15d
jne 0x3b9d
movl $0xc, 0xe0(%rbx)
jmp 0x3b81
incl 0x9c(%rbx)
movl $0xf, 0xe0(%rbx)
cmpl $0xd, %r15d
je 0x3b6c
cmpl $0xa, %r15d
jne 0x3b81
movq (%rbx), %rdi
callq 0x20b0
cmpl $0xd, %eax
je 0x3b79
jmp 0x3b81
movq (%rbx), %rdi
callq 0x20b0
cmpl $0xa, %eax
jne 0x3b81
movq (%rbx), %rdi
callq 0x2270
leaq -0x1c8(%rbp), %rdi
callq 0x21b0
addq $0x1b0, %rsp            # imm = 0x1B0
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
movl %r15d, %edi
callq 0x2330
testl %eax, %eax
je 0x3c35
leaq -0x1b8(%rbp), %r12
movsbl %r15b, %esi
movq %r12, %rdi
callq 0x2260
movq (%rbx), %rdi
callq 0x2270
movl %eax, %r15d
movl %eax, %edi
callq 0x2230
testl %eax, %eax
je 0x3be4
movsbl %r15b, %esi
movq %r12, %rdi
callq 0x2260
jmp 0x3bc0
movq (%rbx), %rdi
callq 0x2090
leaq -0x1b0(%rbp), %rsi
leaq -0x40(%rbp), %rdi
callq 0x2310
leaq -0x40(%rbp), %r15
movq %r14, %rdi
movq %r15, %rsi
callq 0x2280
movq %r15, %rdi
callq 0x20f0
leaq 0x108(%rbx), %rsi
movq %r14, %rdi
callq 0x4741
testb %al, %al
je 0x3c9a
movl $0x1, 0xe0(%rbx)
jmp 0x3b81
leal -0x30(%r15), %eax
cmpl $0xa, %eax
setae %al
cmpl $0x2d, %r15d
setne %cl
testb %al, %cl
jne 0x3cc0
leaq -0x1b8(%rbp), %r12
movsbl %r15b, %esi
movq %r12, %rdi
callq 0x2260
movabsq $0x80000000800001, %r15 # imm = 0x80000000800001
movq (%rbx), %rdi
callq 0x2270
leal -0x30(%rax), %ecx
cmpl $0xa, %ecx
jb 0x3c8d
leal -0x2e(%rax), %ecx
cmpl $0x37, %ecx
ja 0x3d0d
btq %rcx, %r15
jae 0x3d0d
movsbl %al, %esi
movq %r12, %rdi
callq 0x2260
jmp 0x3c67
leaq 0x128(%rbx), %rsi
movq %r14, %rdi
callq 0x4741
testb %al, %al
je 0x3d4b
movl $0x2, 0xe0(%rbx)
jmp 0x3b81
cmpl $0x2f, %r15d
je 0x3d93
cmpl $0x23, %r15d
jne 0x3b81
leaq -0x1b8(%rbp), %r15
pushq $0x23
popq %rsi
movq %r15, %rdi
callq 0x2260
movq (%rbx), %rdi
callq 0x2270
cmpl $0xa, %eax
je 0x3dd8
cmpl $0xd, %eax
je 0x3dd8
movsbl %al, %esi
movq %r15, %rdi
callq 0x2260
jmp 0x3ce6
movq (%rbx), %rdi
callq 0x2090
leaq -0x1b0(%rbp), %rsi
leaq -0x40(%rbp), %rdi
callq 0x2310
leaq -0x40(%rbp), %r15
movq %r14, %rdi
movq %r15, %rsi
callq 0x2280
movq %r15, %rdi
callq 0x20f0
movl $0xb, 0xe0(%rbx)
jmp 0x3b81
leaq 0x148(%rbx), %rsi
movq %r14, %rdi
callq 0x4741
testb %al, %al
je 0x3d6d
movl $0x3, 0xe0(%rbx)
jmp 0x3b81
leaq 0x168(%rbx), %rsi
movq %r14, %rdi
callq 0x4741
testb %al, %al
je 0x3e19
movl $0x4, 0xe0(%rbx)
jmp 0x3b81
leaq -0x1b8(%rbp), %rdi
pushq $0x2f
popq %rsi
callq 0x2260
leaq -0x1b0(%rbp), %rsi
leaq -0x40(%rbp), %rdi
callq 0x2310
leaq -0x40(%rbp), %r15
movq %r14, %rdi
movq %r15, %rsi
callq 0x2280
movq %r15, %rdi
callq 0x20f0
movl $0xa, 0xe0(%rbx)
jmp 0x3b81
movq (%rbx), %rdi
callq 0x2090
leaq -0x1b0(%rbp), %rsi
leaq -0x40(%rbp), %rdi
callq 0x2310
leaq -0x40(%rbp), %r15
movq %r14, %rdi
movq %r15, %rsi
callq 0x2280
movq %r15, %rdi
callq 0x20f0
andl $0x0, 0xe0(%rbx)
incl 0x9c(%rbx)
jmp 0x3b81
leaq 0x188(%rbx), %rsi
movq %r14, %rdi
callq 0x4741
testb %al, %al
je 0x3e3b
movl $0x5, 0xe0(%rbx)
jmp 0x3b81
leaq 0x1a8(%rbx), %rsi
movq %r14, %rdi
callq 0x4741
testb %al, %al
je 0x3e5d
movl $0x6, 0xe0(%rbx)
jmp 0x3b81
leaq 0x1c8(%rbx), %rsi
movq %r14, %rdi
callq 0x4741
testb %al, %al
je 0x3e7f
movl $0x7, 0xe0(%rbx)
jmp 0x3b81
leaq 0x1e8(%rbx), %rsi
movq %r14, %rdi
callq 0x4741
testb %al, %al
je 0x3ea1
movl $0x8, 0xe0(%rbx)
jmp 0x3b81
leaq 0x208(%rbx), %rsi
movq %r14, %rdi
callq 0x4741
testb %al, %al
je 0x3ec3
movl $0x9, 0xe0(%rbx)
jmp 0x3b81
leaq 0x248(%rbx), %rsi
movq %r14, %rdi
callq 0x4741
testb %al, %al
je 0x3ee5
movl $0x10, 0xe0(%rbx)
jmp 0x3b81
leaq 0x268(%rbx), %rsi
movq %r14, %rdi
callq 0x4741
testb %al, %al
je 0x3f07
movl $0x11, 0xe0(%rbx)
jmp 0x3b81
movl $0xd, 0xe0(%rbx)
jmp 0x3b81
jmp 0x3f26
jmp 0x3f26
jmp 0x3f26
jmp 0x3f26
jmp 0x3f26
jmp 0x3f26
jmp 0x3f26
jmp 0x3f26
movq %rax, %rbx
leaq -0x1c8(%rbp), %rdi
callq 0x21b0
movq %rbx, %rdi
callq 0x23a0
nop