// File: flightaware[P]beast-splitter/beast_output.cc
// Function: beast::SocketOutput::process_option_command(unsigned char)
void SocketOutput::process_option_command(uint8_t option) {
        char ch = (char)option;
        switch (ch) {
        case 'c':
        case 'C':
            settings.binary_format = (ch == 'C');
            break;
        case 'd':
        case 'D':
            settings.filter_11_17_18 = (ch == 'D');
            break;
        case 'e':
        case 'E':
            settings.avrmlat = (ch == 'E');
            break;
        case 'f':
        case 'F':
            settings.crc_disable = (ch == 'F');
            break;
        case 'g':
        case 'G':
            if (settings.radarcape)
                settings.gps_timestamps = (ch == 'G');
            else
                settings.filter_0_4_5 = (ch == 'G');
            break;
        case 'h':
        case 'H':
            settings.rts_handshake = (ch == 'H');
            break;
        case 'i':
        case 'I':
            settings.fec_disable = (ch == 'I');
            break;
        case 'j':
        case 'J':
            settings.modeac_enable = (ch == 'J');
            break;
        case 'v':
        case 'V':
            settings.verbatim = (ch == 'V');
            break;
        default:
            // unrecognized
            return;
        }
    }

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movb %sil, %al
movq %rdi, -0x8(%rbp)
movb %al, -0x9(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x20(%rbp)
movb -0x9(%rbp), %al
movb %al, -0xa(%rbp)
movsbl -0xa(%rbp), %eax
addl $-0x43, %eax
movl %eax, %ecx
movq %rcx, -0x18(%rbp)
subl $0x33, %eax
ja 0x5033b
movq -0x18(%rbp), %rax
leaq 0x64aaf(%rip), %rcx     # 0xb4c40
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq -0x20(%rbp), %rdi
movsbl -0xa(%rbp), %eax
cmpl $0x43, %eax
sete %al
addq $0x90, %rdi
addq $0x4, %rdi
movzbl %al, %esi
andl $0x1, %esi
callq 0x1b160
jmp 0x5033d
movq -0x20(%rbp), %rdi
movsbl -0xa(%rbp), %eax
cmpl $0x44, %eax
sete %al
addq $0x90, %rdi
addq $0x8, %rdi
movzbl %al, %esi
andl $0x1, %esi
callq 0x1b070
jmp 0x5033d
movq -0x20(%rbp), %rdi
movsbl -0xa(%rbp), %eax
cmpl $0x45, %eax
sete %al
addq $0x90, %rdi
addq $0xc, %rdi
movzbl %al, %esi
andl $0x1, %esi
callq 0x1b190
jmp 0x5033d
movq -0x20(%rbp), %rdi
movsbl -0xa(%rbp), %eax
cmpl $0x46, %eax
sete %al
addq $0x90, %rdi
addq $0x10, %rdi
movzbl %al, %esi
andl $0x1, %esi
callq 0x1b1c0
jmp 0x5033d
movq -0x20(%rbp), %rdi
addq $0x90, %rdi
callq 0x1b930
testb $0x1, %al
jne 0x50254
jmp 0x5027a
movq -0x20(%rbp), %rdi
movsbl -0xa(%rbp), %eax
cmpl $0x47, %eax
sete %al
addq $0x90, %rdi
addq $0x14, %rdi
movzbl %al, %esi
andl $0x1, %esi
callq 0x1b1f0
jmp 0x5029e
movq -0x20(%rbp), %rdi
movsbl -0xa(%rbp), %eax
cmpl $0x47, %eax
sete %al
addq $0x90, %rdi
addq $0x24, %rdi
movzbl %al, %esi
andl $0x1, %esi
callq 0x1b2b0
jmp 0x5033d
movq -0x20(%rbp), %rdi
movsbl -0xa(%rbp), %eax
cmpl $0x48, %eax
sete %al
addq $0x90, %rdi
addq $0x18, %rdi
movzbl %al, %esi
andl $0x1, %esi
callq 0x1b220
jmp 0x5033d
movq -0x20(%rbp), %rdi
movsbl -0xa(%rbp), %eax
cmpl $0x49, %eax
sete %al
addq $0x90, %rdi
addq $0x1c, %rdi
movzbl %al, %esi
andl $0x1, %esi
callq 0x1b250
jmp 0x5033d
movq -0x20(%rbp), %rdi
movsbl -0xa(%rbp), %eax
cmpl $0x4a, %eax
sete %al
addq $0x90, %rdi
addq $0x20, %rdi
movzbl %al, %esi
andl $0x1, %esi
callq 0x1b280
jmp 0x5033d
movq -0x20(%rbp), %rdi
movsbl -0xa(%rbp), %eax
cmpl $0x56, %eax
sete %al
addq $0x90, %rdi
addq $0x2c, %rdi
movzbl %al, %esi
andl $0x1, %esi
callq 0x1b0a0
jmp 0x5033d
jmp 0x5033d
addq $0x20, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)