// File: /workspace/github_c_makefile_star2_O2/ijleesw[P]data-compression/src/lz78/wrapper.c
// Function: wrapper_perror
void wrapper_perror() {
    switch (wrapper_cur_err) {
        case WRAPPER_SUCCESS:
            break;

        case WRAPPER_ERROR_ALGORITHM:
            fprintf(stderr, "Unrecognized compression algorithm\n");
            break;

        case WRAPPER_ERROR_FILE_IN:
            fprintf(stderr, "Unable to read input file\n");
            break;

        case WRAPPER_ERROR_FILE_OUT:
            fprintf(stderr, "Unable to write output file\n");
            break;

        case LZ78_SUCCESS:
            break;

        case LZ78_ERROR_DICTIONARY:
            fprintf(stderr, "LZ78: unable to allocate dictionaries\n");
            break;

        case LZ78_ERROR_INITIALIZATION:
            fprintf(stderr, "LZ78: bad initialization\n");
            break;

        case LZ78_ERROR_MODE:
            fprintf(stderr, "LZ78: wrong compression/decompression mode\n");
            break;

        case LZ78_ERROR_READ:
            fprintf(stderr, "LZ78: unable to read input data\n");
            break;

        case LZ78_ERROR_WRITE:
            fprintf(stderr, "LZ78: unable to write output data\n");
            break;

        case LZ78_ERROR_EAGAIN:
            fprintf(stderr, "LZ78: I/O operation would block: retry...\n");
            break;

        case LZ78_ERROR_COMPRESS:
            fprintf(stderr, "LZ78: unable to compress input data\n");
            break;

        case LZ78_ERROR_DECOMPRESS:      
            fprintf(stderr, "LZ78: unable to decompress input data\n");
            break;

        default:
            fprintf(stderr, "Unhandled error code %d\n", wrapper_cur_err);
    }
}

// Assembly:
movzbl 0x3c20(%rip), %edx      # 0x50c8
cmpq $0x17, %rdx
ja 0x15bb
leaq 0x1cd3(%rip), %rax      # 0x318c
movslq (%rax,%rdx,4), %rcx
addq %rax, %rcx
jmpq *%rcx
retq
movq 0x3b26(%rip), %rax      # 0x4ff0
movq (%rax), %rcx
leaq 0x1e10(%rip), %rdi      # 0x32e4
pushq $0x22
jmp 0x15b2
movq 0x3b0e(%rip), %rax      # 0x4ff0
movq (%rax), %rcx
leaq 0x1dab(%rip), %rdi      # 0x3297
pushq $0x2b
jmp 0x15b2
movq 0x3af6(%rip), %rax      # 0x4ff0
movq (%rax), %rcx
leaq 0x1d79(%rip), %rdi      # 0x327d
pushq $0x19
jmp 0x15b2
movq 0x3ade(%rip), %rax      # 0x4ff0
movq (%rax), %rcx
leaq 0x1e16(%rip), %rdi      # 0x3332
pushq $0x24
jmp 0x15b2
movq 0x3ac6(%rip), %rax      # 0x4ff0
movq (%rax), %rcx
leaq 0x1d05(%rip), %rdi      # 0x3239
pushq $0x1c
jmp 0x15b2
movq 0x3ab1(%rip), %rax      # 0x4ff0
movq (%rax), %rcx
leaq 0x1dbe(%rip), %rdi      # 0x3307
pushq $0x2a
jmp 0x15b2
movq 0x3a9c(%rip), %rax      # 0x4ff0
movq (%rax), %rcx
leaq 0x1cf8(%rip), %rdi      # 0x3256
jmp 0x1586
movq 0x3a89(%rip), %rax      # 0x4ff0
movq (%rax), %rcx
leaq 0x1cad(%rip), %rdi      # 0x321e
pushq $0x1a
jmp 0x15b2
movq 0x3a74(%rip), %rax      # 0x4ff0
movq (%rax), %rcx
leaq 0x1dd1(%rip), %rdi      # 0x3357
pushq $0x26
jmp 0x15b2
movq 0x3a5f(%rip), %rax      # 0x4ff0
movq (%rax), %rcx
leaq 0x1d28(%rip), %rdi      # 0x32c3
pushq $0x20
jmp 0x15b2
movq 0x3a4a(%rip), %rax      # 0x4ff0
movq (%rax), %rcx
leaq 0x1c4a(%rip), %rdi      # 0x31fa
pushq $0x23
popq %rsi
pushq $0x1
popq %rdx
jmp 0x1160
movq 0x3a2e(%rip), %rax      # 0x4ff0
movq (%rax), %rdi
leaq 0x1db2(%rip), %rsi      # 0x337e
xorl %eax, %eax
jmp 0x10d0