Function at 0x10003880
Capabilities:
Compress data using lzo

Disassembly:
mov ecx, dword [esp + 8]
sub esp, 0x18
cmp ecx, 0xd
push ebx
push ebp
push esi
push edi
mov edi, dword [esp + 0x34]
mov esi, edi
ja 0x1000389d
mov ebx, ecx
jmp 0x10003bef
mov ebp, dword [esp + 0x2c]
mov esi, edi
mov dword [esp + 0x14], ebp
lea eax, [ecx + ebp]
add ebp, 4
mov dword [esp + 0x1c], eax
mov dl, byte [ebp + 3]
mov cl, byte [ebp + 2]
mov eax, edx
and ecx, 0xff
and eax, 0xff
shl eax, 6
xor eax, ecx
xor ecx, ecx
mov cl, byte [ebp + 1]
shl eax, 5
xor eax, ecx
xor ecx, ecx
mov cl, byte [ebp]
shl eax, 5
xor eax, ecx
mov ecx, eax
shl ecx, 5
add eax, ecx
mov ecx, dword [esp + 0x3c]
shr eax, 5
and eax, 0x3fff
mov ebx, dword [ecx + eax*4]
lea edi, [ecx + eax*4]
cmp ebx, dword [esp + 0x2c]
jb 0x10003bc1
mov ecx, ebp
sub ecx, ebx
mov dword [esp + 0x10], ecx
je 0x10003bc1
cmp ecx, 0xbfff
ja 0x10003bc1
cmp ecx, 0x800
jbe 0x10003972
cmp byte [ebx + 3], dl
je 0x10003972
mov ecx, dword [esp + 0x3c]
and eax, 0x7ff
xor eax, 0x201f
mov ebx, dword [ecx + eax*4]
lea edi, [ecx + eax*4]
cmp ebx, dword [esp + 0x2c]
jb 0x10003bc1
mov eax, ebp
sub eax, ebx
mov dword [esp + 0x10], eax
je 0x10003bc1
cmp eax, 0xbfff
ja 0x10003bc1
cmp eax, 0x800
jbe 0x1000396e
cmp byte [ebx + 3], dl
jne 0x10003bc1
mov ecx, dword [esp + 0x10]
mov dx, word [ebx]
cmp dx, word [ebp]
jne 0x10003bc1
mov al, byte [ebp + 2]
mov dl, byte [ebx + 2]
cmp dl, al
jne 0x10003bc1
mov edx, dword [esp + 0x14]
mov eax, ebp
sub eax, edx
mov dword [edi], ebp
je 0x10003a2b
cmp eax, 3
mov dword [esp + 0x24], eax
ja 0x100039ab
or byte [esi - 2], al
jmp 0x10003a15
cmp eax, 0x12
ja 0x100039b7
mov dl, al
sub dl, 3
jmp 0x10003a12
lea edx, [eax - 0x12]
mov byte [esi], 0
inc esi
cmp edx, 0xff
mov dword [esp + 0x18], edx
jbe 0x10003a0e
mov eax, edx
mov edi, esi
lea ecx, [eax - 1]
mov eax, 0x80808081
mul ecx
mov ecx, edx
xor eax, eax
shr ecx, 7
mov dword [esp + 0x20], ecx
mov edx, ecx
shr ecx, 2
rep stosd dword es:[edi], eax
mov ecx, edx
and ecx, 3
rep stosb byte es:[edi], al
mov eax, edx
add esi, eax
mov edx, dword [esp + 0x18]
sub edx, 0xff
dec eax
mov dword [esp + 0x18], edx
jne 0x100039f5
mov ecx, dword [esp + 0x10]
mov eax, dword [esp + 0x24]
mov dl, byte [esp + 0x18]
mov byte [esi], dl
inc esi
mov edx, dword [esp + 0x14]
mov edi, dword [esp + 0x14]
inc esi
inc edi
mov dl, byte [edx]
dec eax
mov byte [esi - 1], dl
mov dword [esp + 0x14], edi
jne 0x10003a15
mov al, byte [ebp + 3]
mov dl, byte [ebx + 3]
add ebp, 3
inc ebp
cmp dl, al
jne 0x10003b4d
mov dl, byte [ebp]
mov al, byte [ebx + 4]
inc ebp
cmp al, dl
jne 0x10003b4d
mov al, byte [ebp]
mov dl, byte [ebx + 5]
inc ebp
cmp dl, al
jne 0x10003b4d
mov dl, byte [ebp]
mov al, byte [ebx + 6]
inc ebp
cmp al, dl
jne 0x10003b4d
mov al, byte [ebp]
mov dl, byte [ebx + 7]
inc ebp
cmp dl, al
jne 0x10003b4d
mov dl, byte [ebp]
mov al, byte [ebx + 8]
inc ebp
cmp al, dl
jne 0x10003b4d
mov eax, dword [esp + 0x1c]
add ebx, 9
cmp ebp, eax
jae 0x10003aa2
mov cl, byte [ebx]
mov dl, byte [ebp]
cmp cl, dl
jne 0x10003aa2
inc ebx
inc ebp
cmp ebp, eax
jb 0x10003a93
mov edx, dword [esp + 0x14]
mov eax, dword [esp + 0x10]
mov ebx, ebp
sub ebx, edx
cmp eax, 0x4000
ja 0x10003ad7
dec eax
cmp ebx, 0x21
mov dword [esp + 0x10], eax
ja 0x10003acf
sub bl, 2
mov ecx, eax
or bl, 0x20
mov byte [esi], bl
inc esi
jmp 0x10003b9f
sub ebx, 0x21
mov byte [esi], 0x20
jmp 0x10003b09
sub eax, 0x4000
cmp ebx, 9
mov dword [esp + 0x10], eax
ja 0x10003afd
shr eax, 0xb
mov ecx, dword [esp + 0x10]
and al, 8
sub bl, 2
or al, bl
or al, 0x10
mov byte [esi], al
inc esi
jmp 0x10003b9f
shr eax, 0xb
and al, 8
sub ebx, 9
or al, 0x10
mov byte [esi], al
inc esi
cmp ebx, 0xff
jbe 0x10003b44
lea edx, [ebx - 1]
mov eax, 0x80808081
mul edx
mov ecx, edx
xor eax, eax
shr ecx, 7
mov dword [esp + 0x24], ecx
mov edx, ecx
mov edi, esi
shr ecx, 2
rep stosd dword es:[edi], eax
mov ecx, edx
and ecx, 3
rep stosb byte es:[edi], al
mov eax, edx
add esi, eax
sub ebx, 0xff
dec eax
jne 0x10003b3b
mov ecx, dword [esp + 0x10]
mov byte [esi], bl
inc esi
jmp 0x10003b9f
mov edi, dword [esp + 0x14]
dec ebp
mov eax, ebp
sub eax, edi
cmp ecx, 0x800
ja 0x10003b76
dec ecx
add al, 7
mov dl, cl
and dl, 7
shl al, 5
shl dl, 2
or al, dl
mov byte [esi], al
inc esi
shr ecx, 3
jmp 0x10003baa
cmp ecx, 0x4000
ja 0x10003b87
sub al, 2
dec ecx
or al, 0x20
mov byte [esi], al
jmp 0x10003b9e
sub ecx, 0x4000
sub al, 2
mov edx, ecx
shr edx, 0xb
and dl, 8
or dl, al
or dl, 0x10
mov byte [esi], dl
inc esi
mov al, cl
shl al, 2
mov byte [esi], al
inc esi
shr ecx, 6
mov ebx, dword [esp + 0x1c]
mov byte [esi], cl
inc esi
mov dword [esp + 0x14], ebp
lea eax, [ebx - 0xd]
cmp ebp, eax
jae 0x10003bd5
jmp 0x100038b1
mov ecx, dword [esp + 0x1c]
mov dword [edi], ebp
inc ebp
lea eax, [ecx - 0xd]
cmp ebp, eax
jb 0x100038b1
mov ebx, ecx
mov eax, dword [esp + 0x34]
mov edx, dword [esp + 0x38]
mov ecx, dword [esp + 0x14]
sub esi, eax
mov dword [edx], esi
sub ebx, ecx
mov ecx, dword [esp + 0x30]
add esi, eax
mov edi, eax
test ebx, ebx
jbe 0x10003c87
mov eax, dword [esp + 0x2c]
sub eax, ebx
add eax, ecx
cmp esi, edi
mov dword [esp + 0x3c], eax
jne 0x10003c16
cmp ebx, 0xee
ja 0x10003c16
mov cl, bl
add cl, 0x11
jmp 0x10003c7b
cmp ebx, 3
ja 0x10003c20
or byte [esi - 2], bl
jmp 0x10003c7e
cmp ebx, 0x12
ja 0x10003c2e
mov dl, bl
sub dl, 3
mov byte [esi], dl
jmp 0x10003c7d
lea ecx, [ebx - 0x12]
mov byte [esi], 0
inc esi
cmp ecx, 0xff
mov dword [esp + 0x2c], ecx
jbe 0x10003c7b
dec ecx
mov eax, 0x80808081
mul ecx
shr edx, 7
mov ecx, edx
xor eax, eax
mov ebp, ecx
mov edi, esi
shr ecx, 2
rep stosd dword es:[edi], eax
mov ecx, ebp
and ecx, 3
add esi, edx
rep stosb byte es:[edi], al
mov ecx, dword [esp + 0x2c]
sub ecx, 0xff
dec edx
mov dword [esp + 0x2c], ecx
jne 0x10003c62
mov eax, dword [esp + 0x3c]
mov edi, dword [esp + 0x34]
mov byte [esi], cl
inc esi
mov cl, byte [eax]
mov byte [esi], cl
inc esi
inc eax
dec ebx
jne 0x10003c7e
mov byte [esi], 0x11
inc esi
mov edx, dword [esp + 0x38]
mov byte [esi], 0
inc esi
mov byte [esi], 0
sub esi, edi
inc esi
pop edi
mov dword [edx], esi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x18
ret