// File: /workspace/github_c_makefile_star2_O3/kieselsteini[P]PiXL-old/lz4.c
// Function: LZ4_decompress_fast_continue
int LZ4_decompress_fast_continue (LZ4_streamDecode_t* LZ4_streamDecode, const char* source, char* dest, int originalSize)
{
    LZ4_streamDecode_t_internal* lz4sd = &LZ4_streamDecode->internal_donotuse;
    int result;

    if (lz4sd->prefixEnd == (BYTE*)dest) {
        result = LZ4_decompress_generic(source, dest, 0, originalSize,
                                        endOnOutputSize, full, 0,
                                        usingExtDict, lz4sd->prefixEnd - lz4sd->prefixSize, lz4sd->externalDict, lz4sd->extDictSize);
        if (result <= 0) return result;
        lz4sd->prefixSize += originalSize;
        lz4sd->prefixEnd  += originalSize;
    } else {
        lz4sd->extDictSize = lz4sd->prefixSize;
        lz4sd->externalDict = lz4sd->prefixEnd - lz4sd->extDictSize;
        result = LZ4_decompress_generic(source, dest, 0, originalSize,
                                        endOnOutputSize, full, 0,
                                        usingExtDict, (BYTE*)dest, lz4sd->externalDict, lz4sd->extDictSize);
        if (result <= 0) return result;
        lz4sd->prefixSize = originalSize;
        lz4sd->prefixEnd  = (BYTE*)dest + originalSize;
    }

    return result;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x58, %rsp
movq %rdx, %rbp
movq 0x10(%rdi), %r8
movq 0x18(%rdi), %rax
movslq %ecx, %rdx
leaq (%rdx,%rbp), %rbx
cmpq %rbp, %r8
movq %rdi, 0x8(%rsp)
movq %rdx, 0x50(%rsp)
movq %rsi, (%rsp)
movq %rbx, 0x28(%rsp)
je 0x2c4fb
movq %rax, 0x8(%rdi)
movq %r8, %rdx
subq %rax, %rdx
movq %rdx, (%rdi)
testl %ecx, %ecx
je 0x2c7f9
leaq -0xc(%rbx), %rax
movq %rax, 0x30(%rsp)
leaq -0x8(%rbx), %r12
leaq -0x7(%rbx), %rax
movq %rax, 0x38(%rsp)
leaq -0x5(%rbx), %rax
movq %rax, 0x20(%rsp)
movq %rbp, %rdi
movq %rsi, %r14
movq %r8, 0x18(%rsp)
movq %r12, 0x10(%rsp)
movzbl (%r14), %eax
incq %r14
movl %eax, %r15d
shrl $0x4, %r15d
cmpl $0xf, %r15d
jne 0x2c2de
movl $0xf, %r15d
movzbl (%r14), %ecx
incq %r14
addq %rcx, %r15
cmpq $0xff, %rcx
je 0x2c2cb
leaq (%rdi,%r15), %r13
cmpq %r12, %r13
ja 0x2c4d9
movq %r14, %rcx
movq (%rcx), %rdx
movq %rdx, (%rdi)
addq $0x8, %rdi
addq $0x8, %rcx
cmpq %r13, %rdi
jb 0x2c2ee
addq %r15, %r14
addq $0x2, %r14
movzwl -0x2(%r14), %edi
movl %edi, (%r13)
andl $0xf, %eax
cmpq $0xf, %rax
jne 0x2c332
movl $0xf, %eax
movzbl (%r14), %ecx
incq %r14
addq %rcx, %rax
cmpq $0xff, %rcx
je 0x2c31f
movq %r13, %rsi
subq %rdi, %rsi
leaq 0x4(%rax), %rdx
leaq (%rax,%r13), %rbx
addq $0x4, %rbx
cmpq %rbp, %rsi
jae 0x2c3c2
cmpq 0x20(%rsp), %rbx
ja 0x2c7e6
movq %rbp, %r12
subq %rsi, %r12
movq %rdx, %r15
subq %r12, %r15
jbe 0x2c41d
movq %rdx, 0x40(%rsp)
subq %r12, %r8
movq %r13, %rdi
movq %r8, %rsi
movq %r12, %rdx
callq 0x63f0
addq %r12, %r13
movq %r13, %rax
subq %rbp, %rax
cmpq %rax, %r15
jbe 0x2c43d
movq %r13, %rdi
cmpq %r12, 0x40(%rsp)
movq 0x18(%rsp), %r8
movq 0x10(%rsp), %r12
jle 0x2c2b1
movq %rbp, %rax
movb (%rax), %cl
incq %rax
movb %cl, (%r13)
incq %r13
cmpq %rbx, %r13
jb 0x2c3a9
movq %r13, %rdi
jmp 0x2c2b1
cmpw $0x7, %di
jbe 0x2c45d
movq (%rsi), %rax
movq %rax, (%r13)
addq $0x8, %rsi
leaq 0x8(%r13), %rax
cmpq 0x30(%rsp), %rbx
ja 0x2c47f
movq (%rsi), %rcx
movq %rcx, (%rax)
movq %rbx, %rdi
cmpq $0x11, %rdx
jb 0x2c2b1
addq $0x10, %r13
addq $0x8, %rsi
movq (%rsi), %rax
movq %rax, (%r13)
addq $0x8, %r13
addq $0x8, %rsi
cmpq %rbx, %r13
jb 0x2c401
movq %rbx, %rdi
jmp 0x2c2b1
subq %r12, %r8
movq %r13, %rdi
movq %r8, %rsi
callq 0x6720
movq 0x18(%rsp), %r8
movq %rbx, %rdi
movq 0x10(%rsp), %r12
jmp 0x2c2b1
movq %r13, %rdi
movq %rbp, %rsi
movq %r15, %rdx
callq 0x63f0
movq %rbx, %rdi
movq 0x18(%rsp), %r8
movq 0x10(%rsp), %r12
jmp 0x2c2b1
movq %rdx, %r15
movq %r13, %rdx
leaq 0x48(%rsp), %rcx
callq 0x88cf
movq %r15, %rdx
movq 0x18(%rsp), %r8
movq 0x48(%rsp), %rsi
jmp 0x2c3d7
cmpq 0x20(%rsp), %rbx
ja 0x2c7e6
movq 0x38(%rsp), %r9
cmpq %r9, %rax
jae 0x2c4b9
movq %rsi, %rcx
movq %rax, %rdx
movq (%rcx), %rdi
movq %rdi, (%rdx)
addq $0x8, %rdx
addq $0x8, %rcx
cmpq %r9, %rdx
jb 0x2c49a
movq %r9, %rcx
subq %rax, %rcx
addq %rcx, %rsi
movq %r9, %rax
movq %rbx, %rdi
cmpq %rbx, %rax
jae 0x2c2b1
movb (%rsi), %cl
incq %rsi
movb %cl, (%rax)
incq %rax
cmpq %rbx, %rax
jb 0x2c4c5
jmp 0x2c415
movq 0x28(%rsp), %rbx
cmpq %rbx, %r13
je 0x2c770
movq 0x8(%rsp), %rdi
movq (%rsp), %rax
notl %r14d
addl %eax, %r14d
jmp 0x2c787
testl %ecx, %ecx
je 0x2c80c
subq %rax, %r8
movq (%rdi), %rax
addq 0x8(%rdi), %rax
movq %rax, 0x30(%rsp)
leaq -0xc(%rbx), %rax
movq %rax, 0x18(%rsp)
leaq -0x8(%rbx), %r12
leaq -0x7(%rbx), %rax
movq %rax, 0x38(%rsp)
leaq -0x5(%rbx), %rax
movq %rax, 0x20(%rsp)
movq %rsi, %r14
movq %r12, 0x10(%rsp)
movzbl (%r14), %eax
incq %r14
movl %eax, %r15d
shrl $0x4, %r15d
cmpl $0xf, %r15d
jne 0x2c566
movl $0xf, %r15d
movzbl (%r14), %ecx
incq %r14
addq %rcx, %r15
cmpq $0xff, %rcx
je 0x2c553
leaq (%r15,%rbp), %r13
cmpq %r12, %r13
ja 0x2c758
movq %r14, %rcx
movq (%rcx), %rdx
movq %rdx, (%rbp)
addq $0x8, %rbp
addq $0x8, %rcx
cmpq %r13, %rbp
jb 0x2c576
addq %r15, %r14
addq $0x2, %r14
movzwl -0x2(%r14), %edi
movl %edi, (%r13)
andl $0xf, %eax
cmpq $0xf, %rax
jne 0x2c5bb
movl $0xf, %eax
movzbl (%r14), %ecx
incq %r14
addq %rcx, %rax
cmpq $0xff, %rcx
je 0x2c5a8
movq %r13, %rsi
subq %rdi, %rsi
leaq 0x4(%rax), %rdx
leaq (%rax,%r13), %r15
addq $0x4, %r15
cmpq %r8, %rsi
jae 0x2c64e
cmpq 0x20(%rsp), %r15
ja 0x2c75f
movq %r8, %r12
subq %rsi, %r12
movq %rdx, %rbx
subq %r12, %rbx
movq %r8, %rbp
jbe 0x2c6a9
movq %rdx, 0x40(%rsp)
movq 0x30(%rsp), %rsi
subq %r12, %rsi
movq %r13, %rdi
movq %r12, %rdx
callq 0x63f0
addq %r12, %r13
movq %r13, %rax
subq %rbp, %rax
cmpq %rax, %rbx
movq %rbp, %r8
jbe 0x2c6be
movq %r13, %rbp
cmpq %r12, 0x40(%rsp)
movq 0x10(%rsp), %r12
jle 0x2c539
movq %r8, %rax
movb (%rax), %cl
incq %rax
movb %cl, (%r13)
incq %r13
cmpq %r15, %r13
jb 0x2c635
movq %r13, %rbp
jmp 0x2c539
cmpw $0x7, %di
jbe 0x2c6df
movq (%rsi), %rax
movq %rax, (%r13)
addq $0x8, %rsi
leaq 0x8(%r13), %rax
cmpq 0x18(%rsp), %r15
ja 0x2c702
movq (%rsi), %rcx
movq %rcx, (%rax)
movq %r15, %rbp
cmpq $0x11, %rdx
jb 0x2c539
addq $0x10, %r13
addq $0x8, %rsi
movq (%rsi), %rax
movq %rax, (%r13)
addq $0x8, %r13
addq $0x8, %rsi
cmpq %r15, %r13
jb 0x2c68d
movq %r15, %rbp
jmp 0x2c539
movq 0x30(%rsp), %rsi
subq %r12, %rsi
movq %r13, %rdi
callq 0x6720
movq %rbp, %r8
jmp 0x2c6d2
movq %r13, %rdi
movq %r8, %rsi
movq %rbx, %rdx
movq %r8, %rbx
callq 0x63f0
movq %rbx, %r8
movq %r15, %rbp
movq 0x10(%rsp), %r12
jmp 0x2c539
movq %rdx, %rbp
movq %r13, %rdx
leaq 0x48(%rsp), %rcx
movq %r8, %rbx
callq 0x8914
movq %rbp, %rdx
movq %rbx, %r8
movq 0x48(%rsp), %rsi
jmp 0x2c663
cmpq 0x20(%rsp), %r15
ja 0x2c75f
movq 0x38(%rsp), %r9
cmpq %r9, %rax
jae 0x2c738
movq %rsi, %rcx
movq %rax, %rdx
movq (%rcx), %rdi
movq %rdi, (%rdx)
addq $0x8, %rdx
addq $0x8, %rcx
cmpq %r9, %rdx
jb 0x2c719
movq %r9, %rcx
subq %rax, %rcx
addq %rcx, %rsi
movq %r9, %rax
movq %r15, %rbp
cmpq %r15, %rax
jae 0x2c539
movb (%rsi), %cl
incq %rsi
movb %cl, (%rax)
incq %rax
cmpq %r15, %rax
jb 0x2c744
jmp 0x2c6a1
cmpq 0x28(%rsp), %r13
je 0x2c797
movq 0x8(%rsp), %rdi
movq (%rsp), %rax
notl %r14d
addl %eax, %r14d
jmp 0x2c7b1
movq %r14, %rsi
movq %r15, %rdx
callq 0x63f0
addl %r15d, %r14d
subl (%rsp), %r14d
movq 0x8(%rsp), %rdi
testl %r14d, %r14d
jle 0x2c7d4
movq 0x50(%rsp), %rax
movq %rax, 0x18(%rdi)
jmp 0x2c7d0
movq %rbp, %rdi
movq %r14, %rsi
movq %r15, %rdx
callq 0x63f0
addl %r15d, %r14d
subl (%rsp), %r14d
movq 0x8(%rsp), %rdi
testl %r14d, %r14d
jle 0x2c7d4
movq 0x10(%rdi), %r8
movq 0x18(%rdi), %rax
movq 0x50(%rsp), %rcx
addq %rcx, %rax
movq %rax, 0x18(%rdi)
addq %rcx, %r8
movq %r8, %rbx
movq %rbx, 0x10(%rdi)
movl %r14d, %eax
addq $0x58, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq 0x8(%rsp), %rdi
movq (%rsp), %rax
movq 0x28(%rsp), %rbx
jmp 0x2c4f0
movl $0xffffffff, %r14d      # imm = 0xFFFFFFFF
cmpb $0x0, (%rsi)
jne 0x2c7d4
movl $0x1, %r14d
jmp 0x2c78c
movl $0xffffffff, %r14d      # imm = 0xFFFFFFFF
cmpb $0x0, (%rsi)
jne 0x2c7d4
movl $0x1, %r14d
jmp 0x2c7be