// File: /workspace/github_c_makefile_star2_O3/Cyan4973[P]FiniteStateEntropy/programs/../lib/fse_decompress.c
// Function: FSE_decompress_usingDTable
size_t FSE_decompress_usingDTable(void* dst, size_t originalSize,
                            const void* cSrc, size_t cSrcSize,
                            const FSE_DTable* dt)
{
    const void* ptr = dt;
    const FSE_DTableHeader* DTableH = (const FSE_DTableHeader*)ptr;
    const U32 fastMode = DTableH->fastMode;

    /* select fast mode (static) */
    if (fastMode) return FSE_decompress_usingDTable_generic(dst, originalSize, cSrc, cSrcSize, dt, 1);
    return FSE_decompress_usingDTable_generic(dst, originalSize, cSrc, cSrcSize, dt, 0);
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
movq %rcx, %rax
leaq (%rdi,%rsi), %rcx
movq %rcx, -0x8(%rsp)
cmpw $0x0, 0x2(%r8)
leaq -0x3(%rdi,%rsi), %r10
je 0x81ec
testq %rax, %rax
je 0x8230
cmpq $0x8, %rax
jb 0x823c
movzbl -0x1(%rdx,%rax), %ecx
testl %ecx, %ecx
je 0x83f4
cmpq $-0x9, %rax
ja 0x8a18
movq -0x8(%rdx,%rax), %r9
addq $-0x8, %rax
bsrl %ecx, %esi
notl %esi
addl $0x9, %esi
movq %rax, %r11
jmp 0x82b7
testq %rax, %rax
je 0x8230
cmpq $0x8, %rax
jb 0x8316
movzbl -0x1(%rdx,%rax), %ecx
testl %ecx, %ecx
je 0x83f4
cmpq $-0x9, %rax
ja 0x8a18
movq %rdi, -0x18(%rsp)
movq -0x8(%rdx,%rax), %rbx
addq $-0x8, %rax
bsrl %ecx, %esi
notl %esi
addl $0x9, %esi
movq %rax, %r11
jmp 0x8395
movq $-0x3, %rax
jmp 0x8a18
movzbl (%rdx), %r9d
leaq -0x2(%rax), %rcx
cmpq $0x5, %rcx
ja 0x8299
leaq 0xcd4f(%rip), %rsi      # 0x14fa0
movslq (%rsi,%rcx,4), %rcx
addq %rsi, %rcx
jmpq *%rcx
movzbl 0x6(%rdx), %ecx
shlq $0x30, %rcx
orq %rcx, %r9
movzbl 0x5(%rdx), %ecx
shlq $0x28, %rcx
addq %rcx, %r9
movzbl 0x4(%rdx), %ecx
shlq $0x20, %rcx
addq %rcx, %r9
movzbl 0x3(%rdx), %ecx
shll $0x18, %ecx
addq %rcx, %r9
movzbl 0x2(%rdx), %ecx
shll $0x10, %ecx
addq %rcx, %r9
movzbl 0x1(%rdx), %ecx
shll $0x8, %ecx
addq %rcx, %r9
movzbl -0x1(%rdx,%rax), %ecx
testl %ecx, %ecx
je 0x8400
bsrl %ecx, %esi
xorl $0x1f, %esi
shll $0x3, %eax
subl %eax, %esi
addl $0x29, %esi
xorl %r11d, %r11d
movzwl (%r8), %eax
addl %eax, %esi
movl %esi, %ecx
negb %cl
movq %r9, %rbx
shrq %cl, %rbx
leaq 0xcd02(%rip), %rcx      # 0x14fd0
movl (%rcx,%rax,4), %r14d
cmpl $0x40, %esi
ja 0x841d
cmpq $0x8, %r11
jge 0x840c
testq %r11, %r11
je 0x889f
leaq (%rdx,%r11), %rcx
movl %esi, %r9d
shrl $0x3, %r9d
subq %r9, %rcx
cmpq %rdx, %rcx
movl %r11d, %ecx
cmovael %r9d, %ecx
leal (,%rcx,8), %r9d
subl %r9d, %esi
jmp 0x8414
movzbl (%rdx), %ebx
leaq -0x2(%rax), %rcx
cmpq $0x5, %rcx
ja 0x8372
leaq 0xcc8e(%rip), %rsi      # 0x14fb8
movslq (%rsi,%rcx,4), %rcx
addq %rsi, %rcx
jmpq *%rcx
movzbl 0x6(%rdx), %ecx
shlq $0x30, %rcx
orq %rcx, %rbx
movzbl 0x5(%rdx), %ecx
shlq $0x28, %rcx
addq %rcx, %rbx
movzbl 0x4(%rdx), %ecx
shlq $0x20, %rcx
addq %rcx, %rbx
movzbl 0x3(%rdx), %ecx
shll $0x18, %ecx
addq %rcx, %rbx
movzbl 0x2(%rdx), %ecx
shll $0x10, %ecx
addq %rcx, %rbx
movzbl 0x1(%rdx), %ecx
shll $0x8, %ecx
addq %rcx, %rbx
movzbl -0x1(%rdx,%rax), %ecx
testl %ecx, %ecx
je 0x8400
movq %rdi, -0x18(%rsp)
bsrl %ecx, %esi
xorl $0x1f, %esi
shll $0x3, %eax
subl %eax, %esi
addl $0x29, %esi
xorl %r11d, %r11d
movzwl (%r8), %eax
addl %eax, %esi
movl %esi, %ecx
negb %cl
movq %rbx, %r12
shrq %cl, %r12
leaq 0xcc24(%rip), %rcx      # 0x14fd0
movl (%rcx,%rax,4), %r14d
cmpl $0x40, %esi
ja 0x85a1
cmpq $0x8, %r11
jge 0x8590
testq %r11, %r11
je 0x8a23
leaq (%rdx,%r11), %rcx
movl %esi, %r9d
shrl $0x3, %r9d
subq %r9, %rcx
cmpq %rdx, %rcx
movl %r11d, %ecx
cmovael %r9d, %ecx
leal (,%rcx,8), %r9d
subl %r9d, %esi
jmp 0x8598
movq $-0x1, %rax
jmp 0x8a18
movq $-0x4, %rax
jmp 0x8a18
movl %esi, %ecx
shrl $0x3, %ecx
andl $0x7, %esi
movl %ecx, %ecx
subq %rcx, %r11
movq (%rdx,%r11), %r9
addl %eax, %esi
movl %esi, %ecx
negb %cl
movq %r9, %rax
shrq %cl, %rax
andl %r14d, %ebx
andl %eax, %r14d
cmpl $0x40, %esi
ja 0x8474
cmpq $0x8, %r11
jge 0x8463
testq %r11, %r11
je 0x88a7
leaq (%rdx,%r11), %rax
movl %esi, %ecx
shrl $0x3, %ecx
subq %rcx, %rax
cmpq %rdx, %rax
movl %r11d, %eax
cmovael %ecx, %eax
leal (,%rax,8), %ecx
subl %ecx, %esi
jmp 0x846b
movl %esi, %eax
shrl $0x3, %eax
andl $0x7, %esi
movl %eax, %eax
subq %rax, %r11
movq (%rdx,%r11), %r9
addq $0x4, %r8
cmpl $0x40, %esi
movq %rdi, -0x18(%rsp)
movq %rdi, %r12
ja 0x8728
cmpq $0x8, %r11
jge 0x84bb
testq %r11, %r11
je 0x8725
leaq (%rdx,%r11), %rcx
movl %esi, %eax
shrl $0x3, %eax
subq %rax, %rcx
cmpq %rdx, %rcx
setae %cl
cmovbl %r11d, %eax
leal (,%rax,8), %r9d
subl %r9d, %esi
jmp 0x84c5
movl %esi, %eax
shrl $0x3, %eax
andl $0x7, %esi
movb $0x1, %cl
movl %eax, %eax
subq %rax, %r11
movq (%rdx,%r11), %r9
cmpq %r10, %r12
jae 0x8728
testb %cl, %cl
je 0x8728
movzwl (%r8,%rbx,4), %eax
movq %r9, %r15
movl %esi, %ecx
shlq %cl, %r15
movzbl 0x3(%r8,%rbx,4), %ecx
addl %ecx, %esi
negb %cl
shrq %cl, %r15
movb 0x2(%r8,%rbx,4), %cl
movb %cl, (%r12)
movzwl (%r8,%r14,4), %r13d
movq %r9, %rbp
movl %esi, %ecx
shlq %cl, %rbp
movzbl 0x3(%r8,%r14,4), %ecx
addl %ecx, %esi
negb %cl
shrq %cl, %rbp
movb 0x2(%r8,%r14,4), %cl
movb %cl, 0x1(%r12)
leaq (%r8,%r15,4), %r14
movq %r9, %rbx
movl %esi, %ecx
shlq %cl, %rbx
movzbl 0x3(%r14,%rax,4), %ecx
addl %ecx, %esi
negb %cl
shrq %cl, %rbx
movzwl (%r14,%rax,4), %ecx
movb 0x2(%r14,%rax,4), %al
addq %rcx, %rbx
movb %al, 0x2(%r12)
leaq (%r8,%rbp,4), %rax
movzwl (%rax,%r13,4), %r15d
movb 0x2(%rax,%r13,4), %bpl
movq %r9, %r14
movl %esi, %ecx
shlq %cl, %r14
movzbl 0x3(%rax,%r13,4), %eax
addl %eax, %esi
movl %eax, %ecx
negb %cl
shrq %cl, %r14
addq %r15, %r14
movb %bpl, 0x3(%r12)
addq $0x4, %r12
cmpl $0x40, %esi
jbe 0x8489
jmp 0x8728
movl %esi, %ecx
shrl $0x3, %ecx
andl $0x7, %esi
movl %ecx, %ecx
subq %rcx, %r11
movq (%rdx,%r11), %rbx
addl %eax, %esi
movl %esi, %ecx
negb %cl
movq %rbx, %rax
shrq %cl, %rax
andl %r14d, %r12d
andl %eax, %r14d
cmpl $0x40, %esi
ja 0x85f8
cmpq $0x8, %r11
jge 0x85e7
testq %r11, %r11
je 0x8a2b
leaq (%rdx,%r11), %rax
movl %esi, %ecx
shrl $0x3, %ecx
subq %rcx, %rax
cmpq %rdx, %rax
movl %r11d, %eax
cmovael %ecx, %eax
leal (,%rax,8), %ecx
subl %ecx, %esi
jmp 0x85ef
movl %esi, %eax
shrl $0x3, %eax
andl $0x7, %esi
movl %eax, %eax
subq %rax, %r11
movq (%rdx,%r11), %rbx
addq $0x4, %r8
cmpl $0x40, %esi
jbe 0x860b
movq -0x18(%rsp), %r13
jmp 0x88b2
movq -0x18(%rsp), %r13
cmpq $0x8, %r11
jge 0x8642
testq %r11, %r11
je 0x88af
leaq (%rdx,%r11), %rcx
movl %esi, %eax
shrl $0x3, %eax
subq %rax, %rcx
cmpq %rdx, %rcx
setae %cl
cmovbl %r11d, %eax
leal (,%rax,8), %r9d
subl %r9d, %esi
jmp 0x864c
movl %esi, %eax
shrl $0x3, %eax
andl $0x7, %esi
movb $0x1, %cl
movl %eax, %eax
subq %rax, %r11
movq (%rdx,%r11), %rbx
cmpq %r10, %r13
jae 0x88b2
testb %cl, %cl
je 0x88b2
movzwl (%r8,%r12,4), %eax
movb 0x2(%r8,%r12,4), %r9b
movzbl 0x3(%r8,%r12,4), %r12d
addl %r12d, %esi
movl %esi, %ecx
negb %cl
movq %rbx, %r15
shrq %cl, %r15
movq %r10, %rdi
leaq 0xc943(%rip), %r10      # 0x14fd0
andl (%r10,%r12,4), %r15d
movb %r9b, (%r13)
movzbl 0x3(%r8,%r14,4), %r12d
addl %r12d, %esi
movl %esi, %ecx
negb %cl
movq %rbx, %r9
shrq %cl, %r9
movzwl (%r8,%r14,4), %ebp
andl (%r10,%r12,4), %r9d
movb 0x2(%r8,%r14,4), %cl
movb %cl, 0x1(%r13)
leaq (%r8,%r15,4), %r14
movzbl 0x3(%r14,%rax,4), %r15d
addl %r15d, %esi
movl %esi, %ecx
negb %cl
movq %rbx, %r12
shrq %cl, %r12
movb 0x2(%r14,%rax,4), %cl
movzwl (%r14,%rax,4), %eax
andl (%r10,%r15,4), %r12d
addq %rax, %r12
movb %cl, 0x2(%r13)
leaq (%r8,%r9,4), %rax
movzbl 0x3(%rax,%rbp,4), %r9d
addl %r9d, %esi
movl %esi, %ecx
negb %cl
movq %rbx, %r14
shrq %cl, %r14
movzwl (%rax,%rbp,4), %ecx
movb 0x2(%rax,%rbp,4), %al
andl (%r10,%r9,4), %r14d
movq %rdi, %r10
addq %rcx, %r14
movb %al, 0x3(%r13)
addq $0x4, %r13
cmpl $0x40, %esi
jbe 0x8610
jmp 0x88b2
xorl %r11d, %r11d
movq %rdx, -0x10(%rsp)
movq -0x8(%rsp), %rcx
addq $-0x2, %rcx
movq $-0x2, %rax
cmpq %rcx, %r12
ja 0x8a18
movq %rcx, %rdx
movq %r12, %r10
subq -0x18(%rsp), %r10
incq %r12
movzwl (%r8,%rbx,4), %edi
movb 0x2(%r8,%rbx,4), %bpl
movzbl 0x3(%r8,%rbx,4), %r15d
movq %r9, %rbx
movl %esi, %ecx
shlq %cl, %rbx
movl %r15d, %ecx
negb %cl
shrq %cl, %rbx
addl %r15d, %esi
movb %bpl, -0x1(%r12)
cmpl $0x40, %esi
ja 0x887f
cmpq $0x8, %r11
jge 0x87be
testq %r11, %r11
je 0x8872
movq -0x10(%rsp), %r15
leaq (%r15,%r11), %rcx
movl %esi, %r9d
shrl $0x3, %r9d
subq %r9, %rcx
cmpq %r15, %rcx
movl %r11d, %ecx
cmovael %r9d, %ecx
leal (,%rcx,8), %r9d
subl %r9d, %esi
jmp 0x87cb
movl %esi, %ecx
shrl $0x3, %ecx
andl $0x7, %esi
movq -0x10(%rsp), %r15
movl %ecx, %ecx
subq %rcx, %r11
movq (%r15,%r11), %r9
cmpq %rdx, %r12
ja 0x8a18
movzwl (%r8,%r14,4), %r13d
movb 0x2(%r8,%r14,4), %bpl
movzbl 0x3(%r8,%r14,4), %r15d
movq %r9, %r14
movl %esi, %ecx
shlq %cl, %r14
movl %r15d, %ecx
negb %cl
shrq %cl, %r14
addl %r15d, %esi
addq %rdi, %rbx
movb %bpl, (%r12)
cmpl $0x40, %esi
ja 0x8886
cmpq $0x8, %r11
jge 0x883c
testq %r11, %r11
je 0x887a
movq -0x10(%rsp), %r9
leaq (%r9,%r11), %rcx
movl %esi, %edi
shrl $0x3, %edi
subq %rdi, %rcx
cmpq %r9, %rcx
movl %r11d, %ecx
cmovael %edi, %ecx
leal (,%rcx,8), %edi
subl %edi, %esi
jmp 0x8849
movl %esi, %ecx
shrl $0x3, %ecx
andl $0x7, %esi
movq -0x10(%rsp), %r9
movl %ecx, %ecx
subq %rcx, %r11
movq (%r9,%r11), %r9
addq %r13, %r14
addq $0x2, %r10
leaq 0x2(%r12), %rcx
incq %r12
cmpq %rdx, %r12
movq %rcx, %r12
jbe 0x8754
jmp 0x8a18
xorl %r11d, %r11d
jmp 0x87d4
xorl %r11d, %r11d
jmp 0x8852
movl $0x2, %eax
jmp 0x8891
incq %r12
movl $0x3, %eax
movq %rbx, %r14
movb 0x2(%r8,%r14,4), %cl
movb %cl, (%r12)
jmp 0x8a15
xorl %r11d, %r11d
jmp 0x841d
xorl %r11d, %r11d
jmp 0x8474
xorl %r11d, %r11d
movq -0x8(%rsp), %rcx
addq $-0x2, %rcx
movq $-0x2, %rax
cmpq %rcx, %r13
ja 0x8a18
movq %rcx, %rbp
movq %r13, %r10
subq -0x18(%rsp), %r10
incq %r13
movzwl (%r8,%r12,4), %edi
movb 0x2(%r8,%r12,4), %r9b
movzbl 0x3(%r8,%r12,4), %r15d
addl %r15d, %esi
movl %esi, %ecx
negb %cl
movq %rbx, %r12
shrq %cl, %r12
leaq 0xc6d3(%rip), %rcx      # 0x14fd0
andl (%rcx,%r15,4), %r12d
movb %r9b, -0x1(%r13)
cmpl $0x40, %esi
ja 0x89fa
cmpq $0x8, %r11
jge 0x8942
testq %r11, %r11
je 0x89ed
leaq (%rdx,%r11), %rcx
movl %esi, %r9d
shrl $0x3, %r9d
subq %r9, %rcx
cmpq %rdx, %rcx
movl %r11d, %ecx
cmovael %r9d, %ecx
leal (,%rcx,8), %r9d
subl %r9d, %esi
jmp 0x894a
movl %esi, %ecx
shrl $0x3, %ecx
andl $0x7, %esi
movl %ecx, %ecx
subq %rcx, %r11
movq (%rdx,%r11), %rbx
cmpq %rbp, %r13
ja 0x8a18
addq %rdi, %r12
movzwl (%r8,%r14,4), %edi
movb 0x2(%r8,%r14,4), %r9b
movzbl 0x3(%r8,%r14,4), %r15d
addl %r15d, %esi
movl %esi, %ecx
negb %cl
movq %rbx, %r14
shrq %cl, %r14
leaq 0xc64d(%rip), %rcx      # 0x14fd0
andl (%rcx,%r15,4), %r14d
movb %r9b, (%r13)
cmpl $0x40, %esi
ja 0x8a01
cmpq $0x8, %r11
jge 0x89c0
testq %r11, %r11
je 0x89f5
leaq (%rdx,%r11), %rcx
movl %esi, %r9d
shrl $0x3, %r9d
subq %r9, %rcx
cmpq %rdx, %rcx
movl %r11d, %ecx
cmovael %r9d, %ecx
leal (,%rcx,8), %r9d
subl %r9d, %esi
jmp 0x89c8
movl %esi, %ecx
shrl $0x3, %ecx
andl $0x7, %esi
movl %ecx, %ecx
subq %rcx, %r11
movq (%rdx,%r11), %rbx
addq %rdi, %r14
addq $0x2, %r10
leaq 0x2(%r13), %rcx
incq %r13
cmpq %rbp, %r13
movq %rcx, %r13
jbe 0x88d9
jmp 0x8a18
xorl %r11d, %r11d
jmp 0x8953
xorl %r11d, %r11d
jmp 0x89d1
movl $0x2, %eax
jmp 0x8a0c
incq %r13
movl $0x3, %eax
movq %r12, %r14
movb 0x2(%r8,%r14,4), %cl
movb %cl, (%r13)
addq %r10, %rax
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
xorl %r11d, %r11d
jmp 0x85a1
xorl %r11d, %r11d
jmp 0x85f8