Function at 0x4098d0
Capabilities:
Decompress data using lzo

Disassembly:
mov eax, dword [esp + 8]
push ebx
mov ebx, dword [esp + 0x14]
push ebp
push esi
push edi
mov edi, dword [esp + 0x14]
mov dword [ebx], 0
mov dl, byte [edi]
cmp dl, 0x11
lea ebp, [edi + eax]
mov eax, dword [esp + 0x1c]
mov ecx, edi
jbe 0x40991c
movzx esi, dl
sub esi, 0x11
cmp esi, 4
lea ecx, [edi + 1]
jb 0x4099e9
mov dl, byte [ecx]
mov byte [eax], dl
add eax, 1
add ecx, 1
sub esi, 1
jne 0x409908
jmp 0x409996
movzx esi, byte [ecx]
add ecx, 1
cmp esi, 0x10
jae 0x409a17
test esi, esi
jne 0x40994c
cmp byte [ecx], 0
jne 0x409942
add ecx, 1
add esi, 0xff
cmp byte [ecx], 0
je 0x409934
movzx edx, byte [ecx]
lea esi, [esi + edx + 0xf]
add ecx, 1
mov edx, dword [ecx]
mov dword [eax], edx
add eax, 4
add ecx, 4
sub esi, 1
je 0x409996
cmp esi, 4
jb 0x409987
mov edx, dword [ecx]
mov dword [eax], edx
sub esi, 4
add eax, 4
add ecx, 4
cmp esi, 4
jae 0x409960
test esi, esi
jbe 0x409996
mov dl, byte [ecx]
mov byte [eax], dl
add eax, 1
add ecx, 1
sub esi, 1
jne 0x409976
jmp 0x409996
mov dl, byte [ecx]
mov byte [eax], dl
add eax, 1
add ecx, 1
sub esi, 1
jne 0x409987
movzx esi, byte [ecx]
add ecx, 1
cmp esi, 0x10
jae 0x409a17
movzx edx, byte [ecx]
add edx, edx
shr esi, 2
mov edi, eax
sub edi, esi
add edx, edx
sub edi, edx
movzx edx, byte [edi - 0x801]
sub edi, 0x801
mov byte [eax], dl
add eax, 1
add edi, 1
movzx edx, byte [edi]
mov byte [eax], dl
movzx edx, byte [edi + 1]
add eax, 1
add ecx, 1
mov byte [eax], dl
add eax, 1
movzx edx, byte [ecx - 2]
and edx, 3
mov esi, edx
je 0x40991c
mov dl, byte [ecx]
mov byte [eax], dl
add eax, 1
add ecx, 1
cmp esi, 1
jbe 0x409a11
mov dl, byte [ecx]
mov byte [eax], dl
add eax, 1
add ecx, 1
cmp esi, 2
jbe 0x409a11
mov dl, byte [ecx]
mov byte [eax], dl
add eax, 1
add ecx, 1
movzx esi, byte [ecx]
add ecx, 1
cmp esi, 0x40
jb 0x409a6a
mov edx, esi
shr edx, 2
and edx, 7
mov edi, eax
sub edi, edx
movzx edx, byte [ecx]
add edx, edx
add edx, edx
add edx, edx
sub edi, edx
shr esi, 5
sub edi, 1
add ecx, 1
sub esi, 1
movzx edx, byte [edi]
mov byte [eax], dl
movzx edx, byte [edi + 1]
add edi, 1
add eax, 1
mov byte [eax], dl
add eax, 1
add edi, 1
mov dl, byte [edi]
mov byte [eax], dl
add eax, 1
add edi, 1
sub esi, 1
jne 0x409a56
jmp 0x4099da
cmp esi, 0x20
jb 0x409aab
and esi, 0x1f
jne 0x409a98
cmp byte [ecx], 0
jne 0x409a8e
lea esp, [esp]
add ecx, 1
add esi, 0xff
cmp byte [ecx], 0
je 0x409a80
movzx edx, byte [ecx]
lea esi, [esi + edx + 0x1f]
add ecx, 1
mov dx, word [ecx]
movzx edx, dx
shr edx, 2
lea edi, [eax - 1]
sub edi, edx
add ecx, 2
jmp 0x409b00
cmp esi, 0x10
mov edi, eax
jb 0x409b54
mov edx, esi
and edx, 8
shl edx, 0xb
sub edi, edx
and esi, 7
jne 0x409ae8
cmp byte [ecx], 0
jne 0x409ade
lea ebx, [ebx]
add ecx, 1
add esi, 0xff
cmp byte [ecx], 0
je 0x409ad0
movzx edx, byte [ecx]
lea esi, [esi + edx + 7]
add ecx, 1
mov dx, word [ecx]
movzx edx, dx
shr edx, 2
sub edi, edx
add ecx, 2
cmp edi, eax
je 0x409b6a
sub edi, 0x4000
cmp esi, 6
jb 0x409a3f
mov edx, eax
sub edx, edi
cmp edx, 4
jl 0x409a3f
mov edx, dword [edi]
mov dword [eax], edx
add eax, 4
add edi, 4
sub esi, 2
mov edx, dword [edi]
mov dword [eax], edx
sub esi, 4
add eax, 4
add edi, 4
cmp esi, 4
jae 0x409b23
test esi, esi
jbe 0x4099da
lea ecx, [ecx]
mov dl, byte [edi]
mov byte [eax], dl
add eax, 1
add edi, 1
sub esi, 1
jne 0x409b40
jmp 0x4099da
movzx edx, byte [ecx]
shr esi, 2
add edx, edx
sub edi, esi
add edx, edx
sub edi, edx
sub edi, 1
jmp 0x4099c6
sub eax, dword [esp + 0x1c]
cmp ecx, ebp
mov dword [ebx], eax
jne 0x409b7b
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
ret
pop edi
sbb eax, eax
pop esi
and eax, 0xfffffffc
pop ebp
add eax, 0xfffffffc
pop ebx
ret