// File: juli9797[P]ssf/src/command_line.hpp
// Function: ssf::CommandLine::loop_until(char)
void loop_until(char exit_key)
    {
        char c = '0';
        while (c != exit_key)
        {
            c = std::cin.get();
            switch (c)
            {
            case 127: // Delete
                if (_text.length())
                {
                    _text.pop_back();
                }
                break;
            case 13: // Enter
                try
                {
                    command_cb(_text.substr(1, _text.length()));
                }
                catch (std::bad_function_call &c)
                {
                    log << c.what();
                }
                return;
                break;
            default:
                _text.push_back(c);
                break;
            }
            try
            {
                draw_cb(str());
            }
            catch (std::bad_function_call &e)
            {
                log << "CommandLine Draw Callback Missing";
            }
        }
    }

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xa0, %rsp
movb %sil, %al
movq %rdi, -0x8(%rbp)
movb %al, -0x9(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x80(%rbp)
movb $0x30, -0xa(%rbp)
movsbl -0xa(%rbp), %eax
movsbl -0x9(%rbp), %ecx
cmpl %ecx, %eax
je 0xbd43
movq 0x17460(%rip), %rdi     # 0x22fd8
callq 0x43a0
movb %al, -0xa(%rbp)
movsbl -0xa(%rbp), %eax
movl %eax, -0x84(%rbp)
subl $0xd, %eax
je 0xbbc7
jmp 0xbb91
movl -0x84(%rbp), %eax
subl $0x7f, %eax
jne 0xbc88
jmp 0xbba2
movq -0x80(%rbp), %rdi
addq $0x8, %rdi
callq 0x44a0
cmpq $0x0, %rax
je 0xbbc2
movq -0x80(%rbp), %rdi
addq $0x8, %rdi
callq 0x43b0
jmp 0xbc99
movq -0x80(%rbp), %rdi
movq %rdi, %rax
addq $0x28, %rax
movq %rax, -0x98(%rbp)
addq $0x8, %rdi
movq %rdi, -0x90(%rbp)
callq 0x44a0
movq -0x90(%rbp), %rsi
movq %rax, %rcx
leaq -0x30(%rbp), %rdi
movl $0x1, %edx
callq 0x4330
jmp 0xbc03
movq -0x98(%rbp), %rdi
leaq -0x30(%rbp), %rsi
callq 0x13970
jmp 0xbc15
leaq -0x30(%rbp), %rdi
callq 0x41c0
jmp 0xbc83
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
jmp 0xbc43
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0x30(%rbp), %rdi
callq 0x41c0
movl -0x3c(%rbp), %eax
movl $0x1, %ecx
cmpl %ecx, %eax
jne 0xbd4c
movq -0x38(%rbp), %rdi
callq 0x40e0
movq %rax, -0x48(%rbp)
movq -0x48(%rbp), %rdi
movq (%rdi), %rax
callq *0x10(%rax)
movq %rax, -0x50(%rbp)
leaq 0x17724(%rip), %rdi     # 0x23399
leaq -0x50(%rbp), %rsi
callq 0x131b0
callq 0x4500
jmp 0xbd43
movq -0x80(%rbp), %rdi
addq $0x8, %rdi
movsbl -0xa(%rbp), %esi
callq 0x4280
movq -0x80(%rbp), %rsi
movq %rsi, %rax
addq $0x48, %rax
movq %rax, -0xa0(%rbp)
leaq -0x70(%rbp), %rdi
callq 0x139b0
jmp 0xbcb6
movq -0xa0(%rbp), %rdi
leaq -0x70(%rbp), %rsi
callq 0x13970
jmp 0xbcc8
leaq -0x70(%rbp), %rdi
callq 0x41c0
jmp 0xbd29
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
jmp 0xbcf6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0x70(%rbp), %rdi
callq 0x41c0
movl -0x3c(%rbp), %eax
movl $0x1, %ecx
cmpl %ecx, %eax
jne 0xbd4c
movq -0x38(%rbp), %rdi
callq 0x40e0
movq %rax, -0x78(%rbp)
leaq 0x17683(%rip), %rdi     # 0x23399
leaq 0xb64b(%rip), %rsi      # 0x17368
callq 0x13ae0
jmp 0xbd24
callq 0x4500
jmp 0xbb61
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
callq 0x4500
jmp 0xbd41
jmp 0xbd4c
addq $0xa0, %rsp
popq %rbp
retq
movq -0x38(%rbp), %rdi
callq 0x4560
movq %rax, %rdi
callq 0xc060
nopl (%rax)