// File: danomatika[P]miditester/src/main.cpp
// Function: statusByteName[abi:cxx11](unsigned char)
std::string statusByteName(unsigned char status) {
    if(status < MIDI_SYSEX) status = status & 0xF0;
    switch(status) {
        case MIDI_NOTEOFF:        return "NOTEOFF";
        case MIDI_NOTEON:         return "NOTEON";
        case MIDI_POLYAFTERTOUCH: return "POLYAFTERTOUCH";
        case MIDI_CONTROLCHANGE:  return "CONTROLCHANGE";
        case MIDI_PROGRAMCHANGE:  return "PROGRAMCHANGE";
        case MIDI_AFTERTOUCH:     return "AFTERTOUCH";
        case MIDI_PITCHBEND:      return "PITCHBEND";
        case MIDI_SYSEX:          return "SYSEX";
        case MIDI_TIMECODE:       return "TIMECODE";
        case MIDI_SONGPOS:        return "SONGPOS";
        case MIDI_SONGSELECT:     return "SONGSELECT";
        case MIDI_TUNEREQUEST:    return "TUNEREQUEST";
        case MIDI_SYSEXEND:       return "SYSEXEND";
        case MIDI_CLOCK:          return "CLOCK";
        case MIDI_START:          return "START";
        case MIDI_CONTINUE:       return "CONTINUE";
        case MIDI_STOP:           return "STOP";
        case MIDI_ACTIVESENSING:  return "ACTIVESENSE";
        case MIDI_SYSTEMRESET:    return "SYSTEMRESET";
        default:                  return "UNKNOWN";
    }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xf0, %rsp
movq %rdi, -0x40(%rbp)
movb %sil, %al
movq %rdi, %rcx
movq %rcx, -0x38(%rbp)
movq %rdi, -0x8(%rbp)
movb %al, -0x9(%rbp)
movzbl -0x9(%rbp), %eax
cmpl $0xf0, %eax
jge 0x7ac7
movzbl -0x9(%rbp), %eax
andl $0xf0, %eax
movb %al, -0x9(%rbp)
movzbl -0x9(%rbp), %eax
addl $-0x80, %eax
movl %eax, %ecx
movq %rcx, -0x48(%rbp)
subl $0x7f, %eax
ja 0x80c4
movq -0x48(%rbp), %rax
leaq 0x851c(%rip), %rcx      # 0x10004
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
leaq -0xa(%rbp), %rdi
movq %rdi, -0x50(%rbp)
callq 0x3330
movq -0x40(%rbp), %rdi
movq -0x50(%rbp), %rdx
leaq 0x890b(%rip), %rsi      # 0x10418
callq 0x8130
jmp 0x7b14
leaq -0xa(%rbp), %rdi
callq 0x3220
jmp 0x810f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
leaq -0xa(%rbp), %rdi
callq 0x3220
jmp 0x811c
leaq -0x1d(%rbp), %rdi
movq %rdi, -0x58(%rbp)
callq 0x3330
movq -0x40(%rbp), %rdi
movq -0x58(%rbp), %rdx
leaq 0x88c8(%rip), %rsi      # 0x10420
callq 0x8130
jmp 0x7b5f
leaq -0x1d(%rbp), %rdi
callq 0x3220
jmp 0x810f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
leaq -0x1d(%rbp), %rdi
callq 0x3220
jmp 0x811c
leaq -0x1e(%rbp), %rdi
movq %rdi, -0x60(%rbp)
callq 0x3330
movq -0x40(%rbp), %rdi
movq -0x60(%rbp), %rdx
leaq 0x8884(%rip), %rsi      # 0x10427
callq 0x8130
jmp 0x7baa
leaq -0x1e(%rbp), %rdi
callq 0x3220
jmp 0x810f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
leaq -0x1e(%rbp), %rdi
callq 0x3220
jmp 0x811c
leaq -0x1f(%rbp), %rdi
movq %rdi, -0x68(%rbp)
callq 0x3330
movq -0x40(%rbp), %rdi
movq -0x68(%rbp), %rdx
leaq 0x8848(%rip), %rsi      # 0x10436
callq 0x8130
jmp 0x7bf5
leaq -0x1f(%rbp), %rdi
callq 0x3220
jmp 0x810f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
leaq -0x1f(%rbp), %rdi
callq 0x3220
jmp 0x811c
leaq -0x20(%rbp), %rdi
movq %rdi, -0x70(%rbp)
callq 0x3330
movq -0x40(%rbp), %rdi
movq -0x70(%rbp), %rdx
leaq 0x880b(%rip), %rsi      # 0x10444
callq 0x8130
jmp 0x7c40
leaq -0x20(%rbp), %rdi
callq 0x3220
jmp 0x810f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
leaq -0x20(%rbp), %rdi
callq 0x3220
jmp 0x811c
leaq -0x21(%rbp), %rdi
movq %rdi, -0x78(%rbp)
callq 0x3330
movq -0x40(%rbp), %rdi
movq -0x78(%rbp), %rdx
leaq 0x87a7(%rip), %rsi      # 0x1042b
callq 0x8130
jmp 0x7c8b
leaq -0x21(%rbp), %rdi
callq 0x3220
jmp 0x810f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
leaq -0x21(%rbp), %rdi
callq 0x3220
jmp 0x811c
leaq -0x22(%rbp), %rdi
movq %rdi, -0x80(%rbp)
callq 0x3330
movq -0x40(%rbp), %rdi
movq -0x80(%rbp), %rdx
leaq 0x8783(%rip), %rsi      # 0x10452
callq 0x8130
jmp 0x7cd6
leaq -0x22(%rbp), %rdi
callq 0x3220
jmp 0x810f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
leaq -0x22(%rbp), %rdi
callq 0x3220
jmp 0x811c
leaq -0x23(%rbp), %rdi
movq %rdi, -0x88(%rbp)
callq 0x3330
movq -0x40(%rbp), %rdi
movq -0x88(%rbp), %rdx
leaq 0x873c(%rip), %rsi      # 0x1045c
callq 0x8130
jmp 0x7d27
leaq -0x23(%rbp), %rdi
callq 0x3220
jmp 0x810f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
leaq -0x23(%rbp), %rdi
callq 0x3220
jmp 0x811c
leaq -0x24(%rbp), %rdi
movq %rdi, -0x90(%rbp)
callq 0x3330
movq -0x40(%rbp), %rdi
movq -0x90(%rbp), %rdx
leaq 0x86f1(%rip), %rsi      # 0x10462
callq 0x8130
jmp 0x7d78
leaq -0x24(%rbp), %rdi
callq 0x3220
jmp 0x810f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
leaq -0x24(%rbp), %rdi
callq 0x3220
jmp 0x811c
leaq -0x25(%rbp), %rdi
movq %rdi, -0x98(%rbp)
callq 0x3330
movq -0x40(%rbp), %rdi
movq -0x98(%rbp), %rdx
leaq 0x86a9(%rip), %rsi      # 0x1046b
callq 0x8130
jmp 0x7dc9
leaq -0x25(%rbp), %rdi
callq 0x3220
jmp 0x810f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
leaq -0x25(%rbp), %rdi
callq 0x3220
jmp 0x811c
leaq -0x26(%rbp), %rdi
movq %rdi, -0xa0(%rbp)
callq 0x3330
movq -0x40(%rbp), %rdi
movq -0xa0(%rbp), %rdx
leaq 0x8660(%rip), %rsi      # 0x10473
callq 0x8130
jmp 0x7e1a
leaq -0x26(%rbp), %rdi
callq 0x3220
jmp 0x810f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
leaq -0x26(%rbp), %rdi
callq 0x3220
jmp 0x811c
leaq -0x27(%rbp), %rdi
movq %rdi, -0xa8(%rbp)
callq 0x3330
movq -0x40(%rbp), %rdi
movq -0xa8(%rbp), %rdx
leaq 0x861a(%rip), %rsi      # 0x1047e
callq 0x8130
jmp 0x7e6b
leaq -0x27(%rbp), %rdi
callq 0x3220
jmp 0x810f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
leaq -0x27(%rbp), %rdi
callq 0x3220
jmp 0x811c
leaq -0x28(%rbp), %rdi
movq %rdi, -0xb0(%rbp)
callq 0x3330
movq -0x40(%rbp), %rdi
movq -0xb0(%rbp), %rdx
leaq 0x85d5(%rip), %rsi      # 0x1048a
callq 0x8130
jmp 0x7ebc
leaq -0x28(%rbp), %rdi
callq 0x3220
jmp 0x810f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
leaq -0x28(%rbp), %rdi
callq 0x3220
jmp 0x811c
leaq -0x29(%rbp), %rdi
movq %rdi, -0xb8(%rbp)
callq 0x3330
movq -0x40(%rbp), %rdi
movq -0xb8(%rbp), %rdx
leaq 0x858d(%rip), %rsi      # 0x10493
callq 0x8130
jmp 0x7f0d
leaq -0x29(%rbp), %rdi
callq 0x3220
jmp 0x810f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
leaq -0x29(%rbp), %rdi
callq 0x3220
jmp 0x811c
leaq -0x2a(%rbp), %rdi
movq %rdi, -0xc0(%rbp)
callq 0x3330
movq -0x40(%rbp), %rdi
movq -0xc0(%rbp), %rdx
leaq 0x8542(%rip), %rsi      # 0x10499
callq 0x8130
jmp 0x7f5e
leaq -0x2a(%rbp), %rdi
callq 0x3220
jmp 0x810f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
leaq -0x2a(%rbp), %rdi
callq 0x3220
jmp 0x811c
leaq -0x2b(%rbp), %rdi
movq %rdi, -0xc8(%rbp)
callq 0x3330
movq -0x40(%rbp), %rdi
movq -0xc8(%rbp), %rdx
leaq 0x84f7(%rip), %rsi      # 0x1049f
callq 0x8130
jmp 0x7faf
leaq -0x2b(%rbp), %rdi
callq 0x3220
jmp 0x810f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
leaq -0x2b(%rbp), %rdi
callq 0x3220
jmp 0x811c
leaq -0x2c(%rbp), %rdi
movq %rdi, -0xd0(%rbp)
callq 0x3330
movq -0x40(%rbp), %rdi
movq -0xd0(%rbp), %rdx
leaq 0x84af(%rip), %rsi      # 0x104a8
callq 0x8130
jmp 0x8000
leaq -0x2c(%rbp), %rdi
callq 0x3220
jmp 0x810f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
leaq -0x2c(%rbp), %rdi
callq 0x3220
jmp 0x811c
leaq -0x2d(%rbp), %rdi
movq %rdi, -0xd8(%rbp)
callq 0x3330
movq -0x40(%rbp), %rdi
movq -0xd8(%rbp), %rdx
leaq 0x8463(%rip), %rsi      # 0x104ad
callq 0x8130
jmp 0x8051
leaq -0x2d(%rbp), %rdi
callq 0x3220
jmp 0x810f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
leaq -0x2d(%rbp), %rdi
callq 0x3220
jmp 0x811c
leaq -0x2e(%rbp), %rdi
movq %rdi, -0xe0(%rbp)
callq 0x3330
movq -0x40(%rbp), %rdi
movq -0xe0(%rbp), %rdx
leaq 0x841e(%rip), %rsi      # 0x104b9
callq 0x8130
jmp 0x80a2
leaq -0x2e(%rbp), %rdi
callq 0x3220
jmp 0x810f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
leaq -0x2e(%rbp), %rdi
callq 0x3220
jmp 0x811c
leaq -0x2f(%rbp), %rdi
movq %rdi, -0xe8(%rbp)
callq 0x3330
movq -0x40(%rbp), %rdi
movq -0xe8(%rbp), %rdx
leaq 0x83df(%rip), %rsi      # 0x104c5
callq 0x8130
jmp 0x80ed
leaq -0x2f(%rbp), %rdi
callq 0x3220
jmp 0x810f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
leaq -0x2f(%rbp), %rdi
callq 0x3220
jmp 0x811c
movq -0x38(%rbp), %rax
addq $0xf0, %rsp
popq %rbp
retq
movq -0x18(%rbp), %rdi
callq 0x3320
nopw %cs:(%rax,%rax)
nop