Function at 0x42777a
Capabilities:
Decompress data using lzo

Disassembly:
push esi
mov esi, esp
mov eax, dword [esi + 0xc]
push edi
push ebx
mov edi, dword [esi + 8]
add eax, edi
mov dword [esi + 8], eax
mov ecx, dword [esi + 0x14]
xor ebx, ebx
mov dword [ecx], ebx
mov ecx, edi
mov eax, dword [esi + 0x10]
mov dl, byte [edi]
push ebp
cmp dl, 0x11
jbe 0x4277bb
lea ecx, [edi + 1]
movzx ebp, dl
add ebp, 0xffffffef
cmp ebp, 4
jb 0x42785a
mov dl, byte [ecx]
mov byte [eax], dl
inc eax
inc ecx
dec ebp
jne 0x4277b0
jmp 0x42781a
movzx ebp, byte [ecx]
inc ecx
cmp ebp, 0x10
jae 0x42787a
test ebp, ebp
jne 0x4277e2
jmp 0x4277d5
add ebp, 0xff
inc ecx
cmp byte [ecx], 0
je 0x4277ce
movzx edx, byte [ecx]
lea ebp, [ebp + edx + 0xf]
inc ecx
mov edi, dword [ecx]
mov dword [eax], edi
push 4
pop edx
add eax, edx
add ecx, edx
dec ebp
je 0x42781a
cmp ebp, edx
jb 0x427811
sub ebp, edx
mov edi, dword [ecx]
mov dword [eax], edi
add eax, edx
add ecx, edx
cmp ebp, edx
jae 0x4277f4
or ebp, ebp
je 0x42781a
mov dl, byte [ecx]
mov byte [eax], dl
inc eax
inc ecx
dec ebp
jne 0x427806
jmp 0x42781a
mov dl, byte [ecx]
mov byte [eax], dl
inc eax
inc ecx
dec ebp
jne 0x427811
movzx ebp, byte [ecx]
inc ecx
cmp ebp, 0x10
jae 0x42787a
movzx edx, byte [ecx]
shr edx, 2
mov ebx, eax
shl ebp, 6
lea ebp, [edx + ebp + 0x701]
sub ebx, ebp
mov dl, byte [ebx]
inc ecx
mov byte [eax], dl
mov dl, byte [ebx + 1]
mov byte [eax + 1], dl
mov dl, byte [ebx + 2]
mov byte [eax + 2], dl
sub eax, 0xfffffffd
mov ebx, ebp
movzx ebp, byte [ecx - 1]
and ebp, 3
je 0x4277bb
mov dl, byte [ecx]
mov byte [eax], dl
inc eax
inc ecx
cmp ebp, 1
jbe 0x427876
mov dl, byte [ecx]
mov byte [eax], dl
inc eax
inc ecx
cmp ebp, 2
jbe 0x427876
mov dl, byte [ecx]
mov byte [eax], dl
inc eax
inc ecx
movzx ebp, byte [ecx]
inc ecx
cmp ebp, 0x40
jb 0x4278c2
mov edx, ebp
and edx, 0x1f
cmp edx, 0x1c
jb 0x42788f
mov edi, eax
sub edi, ebx
jmp 0x4278a3
movzx edi, byte [ecx]
shr edi, 2
shl edx, 6
inc ecx
lea edx, [edi + edx + 1]
mov ebx, edx
mov edi, eax
sub edi, edx
shr ebp, 5
dec ebp
mov dl, byte [edi]
mov byte [eax], dl
mov dl, byte [edi + 1]
mov byte [eax + 1], dl
sub eax, 0xfffffffe
sub edi, 0xfffffffe
mov dl, byte [edi]
mov byte [eax], dl
inc eax
inc edi
dec ebp
jne 0x4278b7
jmp 0x42784d
cmp ebp, 0x20
jb 0x4278fe
and ebp, 0x1f
jne 0x4278e2
jmp 0x4278d5
sub ebp, 0xffffff01
inc ecx
cmp byte [ecx], 0
je 0x4278ce
movzx edx, byte [ecx]
inc ecx
lea ebp, [ebp + edx + 0x1f]
movzx ebx, byte [ecx]
shl ebx, 6
movzx edx, byte [ecx + 1]
shr edx, 2
lea edx, [edx + ebx + 1]
mov ebx, edx
mov edi, eax
sub edi, edx
add ecx, 2
jmp 0x427950
mov edi, eax
cmp ebp, 0x10
jb 0x42799a
mov edx, ebp
and edx, 8
shl edx, 0xb
sub edi, edx
and ebp, 7
jne 0x42792e
jmp 0x427921
add ebp, 0xff
inc ecx
cmp byte [ecx], 0
je 0x42791a
movzx edx, byte [ecx]
lea ebp, [ebp + edx + 7]
inc ecx
movzx ebx, byte [ecx]
movzx edx, byte [ecx + 1]
shr edx, 2
shl ebx, 6
add edx, ebx
sub edi, edx
sub ecx, 0xfffffffe
cmp edi, eax
je 0x4279bc
sub edi, 0x4000
mov ebx, eax
sub ebx, edi
cmp ebp, 6
jb 0x4278a7
mov edx, eax
sub edx, edi
cmp edx, 4
jl 0x4278a7
mov edx, dword [edi]
mov dword [eax], edx
add eax, 4
sub edi, 0xfffffffc
sub ebp, 2
mov edx, dword [edi]
mov dword [eax], edx
push 4
pop edx
sub ebp, edx
add eax, edx
add edi, edx
cmp ebp, edx
jae 0x427973
or ebp, ebp
je 0x42784d
mov dl, byte [edi]
mov byte [eax], dl
inc eax
inc edi
dec ebp
jne 0x42798c
jmp 0x42784d
movzx edx, byte [ecx]
shr edx, 2
shl ebp, 6
lea ebp, [edx + ebp + 1]
sub edi, ebp
inc ecx
mov dl, byte [edi]
mov byte [eax], dl
mov dl, byte [edi + 1]
mov byte [eax + 1], dl
add eax, 2
jmp 0x42784b
mov edx, dword [esi + 0x14]
sub eax, dword [esi + 0x10]
mov dword [edx], eax
mov eax, ecx
pop ebp
sub eax, dword [esi + 8]
pop ebx
pop edi
cmp ecx, dword [esi + 8]
sbb ecx, ecx
and ecx, 0xfffffffc
pop esi
sub ecx, 4
neg eax
sbb eax, eax
and eax, ecx
ret