Function at 0x40977a
Capabilities:
Decompress data using lzo

Disassembly:
push ebp
mov ebp, esp
mov eax, dword [ebp + 0xc]
push ebx
push esi
mov esi, dword [ebp + 8]
add eax, esi
mov dword [ebp + 8], eax
mov eax, dword [ebp + 0x14]
xor ebx, ebx
mov dword [eax], ebx
mov dl, byte [esi]
mov eax, dword [ebp + 0x10]
push edi
mov ecx, esi
cmp dl, 0x11
jbe 0x4097bb
movzx edi, dl
sub edi, 0x11
lea ecx, [esi + 1]
cmp edi, 4
jb 0x40985a
mov dl, byte [ecx]
mov byte [eax], dl
inc eax
inc ecx
dec edi
jne 0x4097b0
jmp 0x40981a
movzx esi, byte [ecx]
inc ecx
cmp esi, 0x10
jae 0x40987a
test esi, esi
jne 0x4097e2
jmp 0x4097d5
add esi, 0xff
inc ecx
cmp byte [ecx], 0
je 0x4097ce
movzx edx, byte [ecx]
lea esi, [esi + edx + 0xf]
inc ecx
mov edx, dword [ecx]
mov dword [eax], edx
push 4
pop edx
add eax, edx
add ecx, edx
dec esi
je 0x40981a
cmp esi, edx
jb 0x409811
mov edi, dword [ecx]
mov dword [eax], edi
sub esi, edx
add eax, edx
add ecx, edx
cmp esi, edx
jae 0x4097f4
test esi, esi
je 0x40981a
mov dl, byte [ecx]
mov byte [eax], dl
inc eax
inc ecx
dec esi
jne 0x409806
jmp 0x40981a
mov dl, byte [ecx]
mov byte [eax], dl
inc eax
inc ecx
dec esi
jne 0x409811
movzx esi, byte [ecx]
inc ecx
cmp esi, 0x10
jae 0x40987a
movzx edx, byte [ecx]
shr edx, 2
shl esi, 6
lea esi, [edx + esi + 0x701]
mov edi, eax
sub edi, esi
mov dl, byte [edi]
mov byte [eax], dl
mov dl, byte [edi + 1]
mov byte [eax + 1], dl
mov dl, byte [edi + 2]
inc ecx
mov byte [eax + 2], dl
add eax, 3
mov ebx, esi
movzx edi, byte [ecx - 1]
and edi, 3
je 0x4097bb
mov dl, byte [ecx]
mov byte [eax], dl
inc eax
inc ecx
cmp edi, 1
jbe 0x409876
mov dl, byte [ecx]
mov byte [eax], dl
inc eax
inc ecx
cmp edi, 2
jbe 0x409876
mov dl, byte [ecx]
mov byte [eax], dl
inc eax
inc ecx
movzx esi, byte [ecx]
inc ecx
cmp esi, 0x40
jb 0x4098c2
mov edx, esi
and edx, 0x1f
cmp edx, 0x1c
jb 0x40988f
mov edi, eax
sub edi, ebx
jmp 0x4098a3
movzx edi, byte [ecx]
shr edi, 2
shl edx, 6
lea edx, [edi + edx + 1]
mov edi, eax
inc ecx
sub edi, edx
mov ebx, edx
shr esi, 5
dec esi
mov dl, byte [edi]
mov byte [eax], dl
mov dl, byte [edi + 1]
mov byte [eax + 1], dl
add eax, 2
add edi, 2
mov dl, byte [edi]
mov byte [eax], dl
inc eax
inc edi
dec esi
jne 0x4098b7
jmp 0x40984d
cmp esi, 0x20
jb 0x4098fe
and esi, 0x1f
jne 0x4098e2
jmp 0x4098d5
add esi, 0xff
inc ecx
cmp byte [ecx], 0
je 0x4098ce
movzx edx, byte [ecx]
lea esi, [esi + edx + 0x1f]
inc ecx
movzx edx, byte [ecx + 1]
movzx edi, byte [ecx]
shl edi, 6
shr edx, 2
lea edx, [edx + edi + 1]
mov edi, eax
sub edi, edx
mov ebx, edx
add ecx, 2
jmp 0x409950
mov edi, eax
cmp esi, 0x10
jb 0x40999a
mov edx, esi
and edx, 8
shl edx, 0xb
sub edi, edx
and esi, 7
jne 0x40992e
jmp 0x409921
add esi, 0xff
inc ecx
cmp byte [ecx], 0
je 0x40991a
movzx edx, byte [ecx]
lea esi, [esi + edx + 7]
inc ecx
movzx edx, byte [ecx + 1]
movzx ebx, byte [ecx]
shr edx, 2
shl ebx, 6
add edx, ebx
sub edi, edx
add ecx, 2
cmp edi, eax
je 0x4099bc
sub edi, 0x4000
mov ebx, eax
sub ebx, edi
cmp esi, 6
jb 0x4098a7
mov edx, eax
sub edx, edi
cmp edx, 4
jl 0x4098a7
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
push 4
pop edx
sub esi, edx
add eax, edx
add edi, edx
cmp esi, edx
jae 0x409973
test esi, esi
je 0x40984d
mov dl, byte [edi]
mov byte [eax], dl
inc eax
inc edi
dec esi
jne 0x40998c
jmp 0x40984d
movzx edx, byte [ecx]
shr edx, 2
shl esi, 6
lea esi, [edx + esi + 1]
sub edi, esi
mov dl, byte [edi]
mov byte [eax], dl
mov dl, byte [edi + 1]
inc ecx
mov byte [eax + 1], dl
add eax, 2
jmp 0x40984b
sub eax, dword [ebp + 0x10]
mov edx, dword [ebp + 0x14]
mov dword [edx], eax
mov eax, ecx
sub eax, dword [ebp + 8]
cmp ecx, dword [ebp + 8]
pop edi
sbb ecx, ecx
and ecx, 0xfffffffc
add ecx, 0xfffffffc
neg eax
sbb eax, eax
pop esi
and eax, ecx
pop ebx
pop ebp
ret