// File: joncampbell123[P]haxcc/haxpp.cpp
// Function: to_string_pp[abi:cxx11](token const&)
string to_string_pp(const token &t) {
    switch (t.tval) {
        case token::MACRO:
            return t.sval + " ";
        case token::PREPROC:
            return "";
        case token::MACROSUBST:
            return t.sval + " ";
        case token::IDENTIFIER:
            return t.sval + " ";
        case token::MACROPARAM:
            return "";
        case token::INTEGER:
            return to_string(t.i.s) + " ";
        case token::FLOAT:
            return a_better_float_to_string(t.f.get_double()) + " ";
        case token::STRING:
            return string("\"") + string_store.get_char(t.s.strref) + string("\"") + " ";
        default:
            break;
    };

    return to_string(t);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x160, %rsp            # imm = 0x160
movq %rdi, -0x110(%rbp)
movq %rdi, %rax
movq %rax, -0x108(%rbp)
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x10(%rbp), %rax
movl (%rax), %eax
decl %eax
movl %eax, %ecx
movq %rcx, -0x100(%rbp)
subl $0xa, %eax
ja 0xb4d9
movq -0x100(%rbp), %rax
leaq 0x1936c(%rip), %rcx     # 0x244c8
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq -0x110(%rbp), %rdi
movq -0x10(%rbp), %rsi
addq $0x48, %rsi
leaq 0x19d84(%rip), %rdx     # 0x24eff
callq 0x16060
jmp 0xb4eb
leaq -0x11(%rbp), %rdi
movq %rdi, -0x118(%rbp)
callq 0x34f0
movq -0x110(%rbp), %rdi
movq -0x118(%rbp), %rdx
leaq 0x1a3c6(%rip), %rsi     # 0x25570
callq 0x15960
jmp 0xb1b1
leaq -0x11(%rbp), %rdi
callq 0x32f0
jmp 0xb4eb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
leaq -0x11(%rbp), %rdi
callq 0x32f0
jmp 0xb4fb
movq -0x110(%rbp), %rdi
movq -0x10(%rbp), %rsi
addq $0x48, %rsi
leaq 0x19d10(%rip), %rdx     # 0x24eff
callq 0x16060
jmp 0xb4eb
movq -0x110(%rbp), %rdi
movq -0x10(%rbp), %rsi
addq $0x48, %rsi
leaq 0x19cf0(%rip), %rdx     # 0x24eff
callq 0x16060
jmp 0xb4eb
leaq -0x25(%rbp), %rdi
movq %rdi, -0x120(%rbp)
callq 0x34f0
movq -0x110(%rbp), %rdi
movq -0x120(%rbp), %rdx
leaq 0x1a332(%rip), %rsi     # 0x25570
callq 0x15960
jmp 0xb245
leaq -0x25(%rbp), %rdi
callq 0x32f0
jmp 0xb4eb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
leaq -0x25(%rbp), %rdi
callq 0x32f0
jmp 0xb4fb
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rsi
leaq -0x48(%rbp), %rdi
movq %rdi, -0x128(%rbp)
callq 0x15f00
movq -0x110(%rbp), %rdi
movq -0x128(%rbp), %rsi
leaq 0x19c65(%rip), %rdx     # 0x24eff
callq 0x15cb0
jmp 0xb2a1
leaq -0x48(%rbp), %rdi
callq 0x3598
jmp 0xb4eb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
leaq -0x48(%rbp), %rdi
callq 0x3598
jmp 0xb4fb
movq -0x10(%rbp), %rdi
addq $0x20, %rdi
callq 0x16030
movq %rsp, %rax
fstpt (%rax)
leaq -0x68(%rbp), %rdi
movq %rdi, -0x130(%rbp)
callq 0x7c70
movq -0x110(%rbp), %rdi
movq -0x130(%rbp), %rsi
leaq 0x19bff(%rip), %rdx     # 0x24eff
callq 0x15cb0
jmp 0xb307
leaq -0x68(%rbp), %rdi
callq 0x3598
jmp 0xb4eb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
leaq -0x68(%rbp), %rdi
callq 0x3598
jmp 0xb4fb
leaq -0xc9(%rbp), %rdi
movq %rdi, -0x138(%rbp)
callq 0x34f0
movq -0x138(%rbp), %rdx
leaq 0x19bac(%rip), %rsi     # 0x24efc
leaq -0xc8(%rbp), %rdi
callq 0x15960
jmp 0xb35e
movq -0x10(%rbp), %rax
movq 0x40(%rax), %rsi
leaq 0x27fab(%rip), %rdi     # 0x33318
callq 0x38b0
movq %rax, -0x140(%rbp)
jmp 0xb37b
movq -0x140(%rbp), %rdx
leaq -0xa8(%rbp), %rdi
leaq -0xc8(%rbp), %rsi
callq 0x15d00
jmp 0xb397
leaq -0xf1(%rbp), %rdi
movq %rdi, -0x148(%rbp)
callq 0x34f0
movq -0x148(%rbp), %rdx
leaq 0x19b44(%rip), %rsi     # 0x24efc
leaq -0xf0(%rbp), %rdi
callq 0x15960
jmp 0xb3c6
leaq -0x88(%rbp), %rdi
leaq -0xa8(%rbp), %rsi
leaq -0xf0(%rbp), %rdx
callq 0x15d50
jmp 0xb3e2
movq -0x110(%rbp), %rdi
leaq 0x19b0f(%rip), %rdx     # 0x24eff
leaq -0x88(%rbp), %rsi
callq 0x15cb0
jmp 0xb3fe
leaq -0x88(%rbp), %rdi
callq 0x3598
leaq -0xf0(%rbp), %rdi
callq 0x3598
leaq -0xf1(%rbp), %rdi
callq 0x32f0
leaq -0xa8(%rbp), %rdi
callq 0x3598
leaq -0xc8(%rbp), %rdi
callq 0x3598
leaq -0xc9(%rbp), %rdi
callq 0x32f0
jmp 0xb4eb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
jmp 0xb4cb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
jmp 0xb4bf
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
jmp 0xb4a7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
jmp 0xb49b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
leaq -0x88(%rbp), %rdi
callq 0x3598
leaq -0xf0(%rbp), %rdi
callq 0x3598
leaq -0xf1(%rbp), %rdi
callq 0x32f0
leaq -0xa8(%rbp), %rdi
callq 0x3598
leaq -0xc8(%rbp), %rdi
callq 0x3598
leaq -0xc9(%rbp), %rdi
callq 0x32f0
jmp 0xb4fb
jmp 0xb4db
movq -0x110(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x7d10
movq -0x108(%rbp), %rax
addq $0x160, %rsp            # imm = 0x160
popq %rbp
retq
movq -0x20(%rbp), %rdi
callq 0x34e0
nopw %cs:(%rax,%rax)