// File: 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
subq $0x260, %rsp            # imm = 0x260
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x230(%rbp)
leaq -0x198(%rbp), %rdi
callq 0x31e0
movq -0x230(%rbp), %rdi
movq %rdi, %rsi
addq $0xc0, %rsi
addq $0xa0, %rdi
callq 0x3040
jmp 0x6c95
jmp 0x6c97
movq -0x230(%rbp), %rax
movq (%rax), %rdi
callq 0x3350
movl %eax, -0x234(%rbp)
jmp 0x6cae
movl -0x234(%rbp), %edi
movl %edi, -0xc(%rbp)
callq 0x3060
movl %eax, %ecx
xorl %eax, %eax
cmpl $0x0, %ecx
movb %al, -0x235(%rbp)
je 0x6ce6
xorl %eax, %eax
cmpl $0xa, -0xc(%rbp)
movb %al, -0x235(%rbp)
je 0x6ce6
cmpl $0xd, -0xc(%rbp)
setne %al
movb %al, -0x235(%rbp)
movb -0x235(%rbp), %al
testb $0x1, %al
jne 0x6cf2
jmp 0x6d17
jmp 0x6c97
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1a0(%rbp)
movl %eax, -0x1a4(%rbp)
leaq -0x198(%rbp), %rdi
callq 0x3210
jmp 0x7399
cmpl $-0x1, -0xc(%rbp)
jne 0x6d33
movq -0x230(%rbp), %rax
movl $0xc, 0xe0(%rax)
jmp 0x7384
cmpl $0xa, -0xc(%rbp)
je 0x6d43
cmpl $0xd, -0xc(%rbp)
jne 0x6de0
movq -0x230(%rbp), %rax
movl 0x9c(%rax), %ecx
addl $0x1, %ecx
movl %ecx, 0x9c(%rax)
movl $0xf, 0xe0(%rax)
cmpl $0xa, -0xc(%rbp)
jne 0x6d9e
movq -0x230(%rbp), %rax
movq (%rax), %rdi
callq 0x30f0
movl %eax, -0x23c(%rbp)
jmp 0x6d80
movl -0x23c(%rbp), %eax
cmpl $0xd, %eax
jne 0x6d9e
movq -0x230(%rbp), %rax
movq (%rax), %rdi
callq 0x3350
jmp 0x6d9c
jmp 0x6ddb
cmpl $0xd, -0xc(%rbp)
jne 0x6dd9
movq -0x230(%rbp), %rax
movq (%rax), %rdi
callq 0x30f0
movl %eax, -0x240(%rbp)
jmp 0x6dbb
movl -0x240(%rbp), %eax
cmpl $0xa, %eax
jne 0x6dd9
movq -0x230(%rbp), %rax
movq (%rax), %rdi
callq 0x3350
jmp 0x6dd7
jmp 0x6dd9
jmp 0x6ddb
jmp 0x7382
movl -0xc(%rbp), %edi
callq 0x3440
cmpl $0x0, %eax
je 0x7126
leaq -0x188(%rbp), %rdi
movsbl -0xc(%rbp), %esi
callq 0x3340
jmp 0x6e03
jmp 0x6e05
movq -0x230(%rbp), %rax
movq (%rax), %rdi
callq 0x3350
movl %eax, -0x244(%rbp)
jmp 0x6e1c
movl -0x244(%rbp), %edi
movl %edi, -0xc(%rbp)
callq 0x32c0
cmpl $0x0, %eax
je 0x6e43
leaq -0x188(%rbp), %rdi
movsbl -0xc(%rbp), %esi
callq 0x3340
jmp 0x6e41
jmp 0x6e05
movq -0x230(%rbp), %rax
movq (%rax), %rdi
callq 0x30d0
jmp 0x6e54
leaq -0x1c8(%rbp), %rdi
leaq -0x198(%rbp), %rsi
callq 0x3280
jmp 0x6e69
movq -0x230(%rbp), %rdi
addq $0xc0, %rdi
leaq -0x1c8(%rbp), %rsi
callq 0x3360
leaq -0x1c8(%rbp), %rdi
callq 0x31a0
movq -0x230(%rbp), %rsi
movq %rsi, %rdi
addq $0xc0, %rdi
addq $0x108, %rsi            # imm = 0x108
callq 0x7fc0
testb $0x1, %al
jne 0x6eb2
jmp 0x6ec8
movq -0x230(%rbp), %rax
movl $0x1, 0xe0(%rax)
jmp 0x7121
movq -0x230(%rbp), %rsi
movq %rsi, %rdi
addq $0xc0, %rdi
addq $0x128, %rsi            # imm = 0x128
callq 0x7fc0
testb $0x1, %al
jne 0x6eeb
jmp 0x6f01
movq -0x230(%rbp), %rax
movl $0x2, 0xe0(%rax)
jmp 0x711f
movq -0x230(%rbp), %rsi
movq %rsi, %rdi
addq $0xc0, %rdi
addq $0x148, %rsi            # imm = 0x148
callq 0x7fc0
testb $0x1, %al
jne 0x6f24
jmp 0x6f3a
movq -0x230(%rbp), %rax
movl $0x3, 0xe0(%rax)
jmp 0x711d
movq -0x230(%rbp), %rsi
movq %rsi, %rdi
addq $0xc0, %rdi
addq $0x168, %rsi            # imm = 0x168
callq 0x7fc0
testb $0x1, %al
jne 0x6f5d
jmp 0x6f73
movq -0x230(%rbp), %rax
movl $0x4, 0xe0(%rax)
jmp 0x711b
movq -0x230(%rbp), %rsi
movq %rsi, %rdi
addq $0xc0, %rdi
addq $0x188, %rsi            # imm = 0x188
callq 0x7fc0
testb $0x1, %al
jne 0x6f96
jmp 0x6fac
movq -0x230(%rbp), %rax
movl $0x5, 0xe0(%rax)
jmp 0x7119
movq -0x230(%rbp), %rsi
movq %rsi, %rdi
addq $0xc0, %rdi
addq $0x1a8, %rsi            # imm = 0x1A8
callq 0x7fc0
testb $0x1, %al
jne 0x6fcf
jmp 0x6fe5
movq -0x230(%rbp), %rax
movl $0x6, 0xe0(%rax)
jmp 0x7117
movq -0x230(%rbp), %rsi
movq %rsi, %rdi
addq $0xc0, %rdi
addq $0x1c8, %rsi            # imm = 0x1C8
callq 0x7fc0
testb $0x1, %al
jne 0x7008
jmp 0x701e
movq -0x230(%rbp), %rax
movl $0x7, 0xe0(%rax)
jmp 0x7115
movq -0x230(%rbp), %rsi
movq %rsi, %rdi
addq $0xc0, %rdi
addq $0x1e8, %rsi            # imm = 0x1E8
callq 0x7fc0
testb $0x1, %al
jne 0x7041
jmp 0x7057
movq -0x230(%rbp), %rax
movl $0x8, 0xe0(%rax)
jmp 0x7113
movq -0x230(%rbp), %rsi
movq %rsi, %rdi
addq $0xc0, %rdi
addq $0x208, %rsi            # imm = 0x208
callq 0x7fc0
testb $0x1, %al
jne 0x707a
jmp 0x7090
movq -0x230(%rbp), %rax
movl $0x9, 0xe0(%rax)
jmp 0x7111
movq -0x230(%rbp), %rsi
movq %rsi, %rdi
addq $0xc0, %rdi
addq $0x248, %rsi            # imm = 0x248
callq 0x7fc0
testb $0x1, %al
jne 0x70b3
jmp 0x70c6
movq -0x230(%rbp), %rax
movl $0x10, 0xe0(%rax)
jmp 0x710f
movq -0x230(%rbp), %rsi
movq %rsi, %rdi
addq $0xc0, %rdi
addq $0x268, %rsi            # imm = 0x268
callq 0x7fc0
testb $0x1, %al
jne 0x70e9
jmp 0x70fc
movq -0x230(%rbp), %rax
movl $0x11, 0xe0(%rax)
jmp 0x710d
movq -0x230(%rbp), %rax
movl $0xd, 0xe0(%rax)
jmp 0x710f
jmp 0x7111
jmp 0x7113
jmp 0x7115
jmp 0x7117
jmp 0x7119
jmp 0x711b
jmp 0x711d
jmp 0x711f
jmp 0x7121
jmp 0x7380
movl -0xc(%rbp), %edi
callq 0x3270
cmpl $0x0, %eax
jne 0x713d
cmpl $0x2d, -0xc(%rbp)
jne 0x7230
leaq -0x188(%rbp), %rdi
movsbl -0xc(%rbp), %esi
callq 0x3340
jmp 0x714f
jmp 0x7151
movq -0x230(%rbp), %rax
movq (%rax), %rdi
callq 0x3350
movl %eax, -0x248(%rbp)
jmp 0x7168
movl -0x248(%rbp), %edi
movl %edi, -0xc(%rbp)
callq 0x3270
movl %eax, %ecx
movb $0x1, %al
cmpl $0x0, %ecx
movb %al, -0x249(%rbp)
jne 0x71ae
movb $0x1, %al
cmpl $0x2e, -0xc(%rbp)
movb %al, -0x249(%rbp)
je 0x71ae
movb $0x1, %al
cmpl $0x65, -0xc(%rbp)
movb %al, -0x249(%rbp)
je 0x71ae
cmpl $0x45, -0xc(%rbp)
sete %al
movb %al, -0x249(%rbp)
movb -0x249(%rbp), %al
testb $0x1, %al
jne 0x71ba
jmp 0x71ce
leaq -0x188(%rbp), %rdi
movsbl -0xc(%rbp), %esi
callq 0x3340
jmp 0x71cc
jmp 0x7151
movq -0x230(%rbp), %rax
movq (%rax), %rdi
callq 0x30d0
jmp 0x71df
leaq -0x1e8(%rbp), %rdi
leaq -0x198(%rbp), %rsi
callq 0x3280
jmp 0x71f4
movq -0x230(%rbp), %rdi
addq $0xc0, %rdi
leaq -0x1e8(%rbp), %rsi
callq 0x3360
leaq -0x1e8(%rbp), %rdi
callq 0x31a0
movq -0x230(%rbp), %rax
movl $0xb, 0xe0(%rax)
jmp 0x737e
cmpl $0x23, -0xc(%rbp)
jne 0x7316
leaq -0x188(%rbp), %rdi
movsbl -0xc(%rbp), %esi
callq 0x3340
jmp 0x724c
jmp 0x724e
movq -0x230(%rbp), %rax
movq (%rax), %rdi
callq 0x3350
movl %eax, -0x250(%rbp)
jmp 0x7265
movl -0x250(%rbp), %ecx
movl %ecx, -0xc(%rbp)
xorl %eax, %eax
cmpl $0xa, %ecx
movb %al, -0x251(%rbp)
je 0x7288
cmpl $0xd, -0xc(%rbp)
setne %al
movb %al, -0x251(%rbp)
movb -0x251(%rbp), %al
testb $0x1, %al
jne 0x7294
jmp 0x72a8
leaq -0x188(%rbp), %rdi
movsbl -0xc(%rbp), %esi
callq 0x3340
jmp 0x72a6
jmp 0x724e
movq -0x230(%rbp), %rax
movq (%rax), %rdi
callq 0x30d0
jmp 0x72b9
leaq -0x208(%rbp), %rdi
leaq -0x198(%rbp), %rsi
callq 0x3280
jmp 0x72ce
movq -0x230(%rbp), %rdi
addq $0xc0, %rdi
leaq -0x208(%rbp), %rsi
callq 0x3360
leaq -0x208(%rbp), %rdi
callq 0x31a0
movq -0x230(%rbp), %rax
movl $0x0, 0xe0(%rax)
movl 0x9c(%rax), %ecx
addl $0x1, %ecx
movl %ecx, 0x9c(%rax)
jmp 0x737c
cmpl $0x2f, -0xc(%rbp)
jne 0x737a
leaq -0x188(%rbp), %rdi
movsbl -0xc(%rbp), %esi
callq 0x3340
jmp 0x732e
leaq -0x228(%rbp), %rdi
leaq -0x198(%rbp), %rsi
callq 0x3280
jmp 0x7343
movq -0x230(%rbp), %rdi
addq $0xc0, %rdi
leaq -0x228(%rbp), %rsi
callq 0x3360
leaq -0x228(%rbp), %rdi
callq 0x31a0
movq -0x230(%rbp), %rax
movl $0xa, 0xe0(%rax)
jmp 0x737c
jmp 0x737e
jmp 0x7380
jmp 0x7382
jmp 0x7384
leaq -0x198(%rbp), %rdi
callq 0x3210
addq $0x260, %rsp            # imm = 0x260
popq %rbp
retq
movq -0x1a0(%rbp), %rdi
callq 0x34b0
nopw %cs:(%rax,%rax)
nop