Function at 0x438510
Capabilities:
Decompress data using lzo

Disassembly:
mov ecx, dword [esp + 4]
mov eax, dword [esp + 8]
push ebx
mov ebx, dword [esp + 0x10]
push ebp
lea ebp, [ecx + eax]
mov eax, dword [esp + 0x18]
mov edx, dword [eax]
mov dword [eax], 0
mov eax, ebp
push esi
add edx, ebx
sub eax, ecx
push edi
mov dword [esp + 0x14], edx
mov esi, ebx
cmp eax, 1
jb 0x4388b8
mov al, byte [ecx]
cmp al, 0x11
jbe 0x438583
movzx eax, al
sub eax, 0x11
inc ecx
cmp eax, 4
jb 0x438698
sub edx, ebx
cmp edx, eax
jb 0x4388ee
mov edx, ebp
sub edx, ecx
lea edi, [eax + 3]
cmp edx, edi
jb 0x4388b8
mov dl, byte [ecx]
mov byte [esi], dl
inc esi
inc ecx
sub eax, 1
jne 0x438573
jmp 0x43862e
mov eax, ebp
sub eax, ecx
cmp eax, 3
jb 0x4388b8
movzx eax, byte [ecx]
inc ecx
cmp eax, 0x10
jae 0x4386d5
test eax, eax
jne 0x4385d0
cmp byte [ecx], al
jne 0x4385c8
add eax, 0xff
inc ecx
cmp eax, 0xfffffe01
ja 0x4388b8
mov edi, ebp
sub edi, ecx
cmp edi, 1
jb 0x4388b8
cmp byte [ecx], 0
je 0x4385a5
movzx edi, byte [ecx]
lea eax, [eax + edi + 0xf]
inc ecx
sub edx, esi
lea edi, [eax + 3]
cmp edx, edi
jb 0x4388ee
mov edx, ebp
sub edx, ecx
lea edi, [eax + 6]
cmp edx, edi
jb 0x4388b8
mov edx, dword [ecx]
mov dword [esi], edx
add esi, 4
add ecx, 4
sub eax, 1
je 0x43862e
cmp eax, 4
jb 0x438623
mov edx, dword [ecx]
mov dword [esi], edx
sub eax, 4
add esi, 4
add ecx, 4
cmp eax, 4
jae 0x438600
test eax, eax
jbe 0x43862e
mov dl, byte [ecx]
mov byte [esi], dl
inc esi
inc ecx
sub eax, 1
jne 0x438616
jmp 0x43862e
mov dl, byte [ecx]
mov byte [esi], dl
inc esi
inc ecx
sub eax, 1
jne 0x438623
movzx eax, byte [ecx]
inc ecx
cmp eax, 0x10
jae 0x4386d5
movzx edi, byte [ecx]
add edi, edi
add edi, edi
mov edx, esi
sub edx, edi
shr eax, 2
sub edx, eax
sub edx, 0x801
inc ecx
cmp edx, ebx
jb 0x438900
cmp edx, esi
jae 0x438900
mov eax, dword [esp + 0x14]
sub eax, esi
cmp eax, 3
jb 0x4388ee
movzx eax, byte [edx]
mov byte [esi], al
movzx eax, byte [edx + 1]
inc edx
inc esi
mov byte [esi], al
mov dl, byte [edx + 1]
inc esi
mov byte [esi], dl
inc esi
jmp 0x43868b
mov ebx, dword [esp + 0x1c]
movzx eax, byte [ecx - 2]
and eax, 3
je 0x4388af
mov edx, dword [esp + 0x14]
sub edx, esi
cmp edx, eax
jb 0x4388ee
mov edx, ebp
sub edx, ecx
lea edi, [eax + 3]
cmp edx, edi
jb 0x4388b8
mov dl, byte [ecx]
mov byte [esi], dl
inc esi
inc ecx
cmp eax, 1
jbe 0x4386d1
mov dl, byte [ecx]
mov byte [esi], dl
inc esi
inc ecx
cmp eax, 2
jbe 0x4386d1
mov al, byte [ecx]
mov byte [esi], al
inc esi
inc ecx
movzx eax, byte [ecx]
inc ecx
cmp eax, 0x40
jb 0x438737
mov edx, eax
shr edx, 2
and edx, 7
mov edi, esi
sub edi, edx
movzx edx, byte [ecx]
add edx, edx
add edx, edx
add edx, edx
sub edi, edx
shr eax, 5
dec edi
inc ecx
dec eax
cmp edi, ebx
jb 0x438900
cmp edi, esi
jae 0x438900
mov edx, dword [esp + 0x14]
sub edx, esi
lea ebx, [eax + 2]
cmp edx, ebx
jb 0x4388ea
movzx edx, byte [edi]
mov byte [esi], dl
movzx edx, byte [edi + 1]
inc edi
inc esi
mov byte [esi], dl
inc esi
inc edi
mov dl, byte [edi]
mov byte [esi], dl
inc esi
inc edi
sub eax, 1
jne 0x438727
jmp 0x438687
cmp eax, 0x20
jb 0x438790
and eax, 0x1f
jne 0x43877d
cmp byte [ecx], al
jne 0x438768
add eax, 0xff
inc ecx
cmp eax, 0xfffffe01
ja 0x4388ee
mov edx, ebp
sub edx, ecx
cmp edx, 1
jb 0x4388b8
cmp byte [ecx], 0
je 0x438745
movzx edx, byte [ecx]
lea eax, [eax + edx + 0x1f]
inc ecx
mov edx, ebp
sub edx, ecx
cmp edx, 2
jb 0x4388b8
mov dx, word [ecx]
movzx edx, dx
shr edx, 2
lea edi, [esi - 1]
sub edi, edx
add ecx, 2
jmp 0x438804
cmp eax, 0x10
jb 0x438872
mov edx, eax
and edx, 8
shl edx, 0xb
mov edi, esi
sub edi, edx
and eax, 7
jne 0x4387e8
cmp byte [ecx], al
jne 0x4387d3
mov edi, edi
add eax, 0xff
inc ecx
cmp eax, 0xfffffe01
ja 0x4388ee
mov edx, ebp
sub edx, ecx
cmp edx, 1
jb 0x4388b8
cmp byte [ecx], 0
je 0x4387b0
movzx edx, byte [ecx]
lea eax, [eax + edx + 7]
inc ecx
mov edx, ebp
sub edx, ecx
cmp edx, 2
jb 0x4388b8
mov dx, word [ecx]
movzx edx, dx
shr edx, 2
sub edi, edx
add ecx, 2
cmp edi, esi
je 0x4388ca
sub edi, 0x4000
cmp edi, ebx
jb 0x438900
cmp edi, esi
jae 0x438900
mov edx, dword [esp + 0x14]
sub edx, esi
lea ebx, [eax + 2]
cmp edx, ebx
jb 0x4388ea
cmp eax, 6
jb 0x438718
mov edx, esi
sub edx, edi
cmp edx, 4
jl 0x438718
mov edx, dword [edi]
mov dword [esi], edx
add esi, 4
add edi, 4
sub eax, 2
mov edx, dword [edi]
mov dword [esi], edx
sub eax, 4
add esi, 4
add edi, 4
cmp eax, 4
jae 0x438848
test eax, eax
jbe 0x438687
mov dl, byte [edi]
mov byte [esi], dl
inc esi
inc edi
sub eax, 1
jne 0x438862
jmp 0x438687
movzx edi, byte [ecx]
add edi, edi
add edi, edi
mov edx, esi
sub edx, edi
shr eax, 2
sub edx, eax
dec edx
inc ecx
cmp edx, ebx
jb 0x438900
cmp edx, esi
jae 0x438900
mov eax, dword [esp + 0x14]
sub eax, esi
cmp eax, 2
jb 0x4388ee
mov al, byte [edx]
mov byte [esi], al
mov dl, byte [edx + 1]
inc esi
mov byte [esi], dl
inc esi
jmp 0x43868b
mov edx, dword [esp + 0x14]
jmp 0x438583
mov eax, dword [esp + 0x20]
sub esi, ebx
pop edi
mov dword [eax], esi
pop esi
pop ebp
mov eax, 0xfffffffc
pop ebx
ret
mov edx, dword [esp + 0x20]
sub esi, ebx
mov dword [edx], esi
cmp ecx, ebp
jne 0x4388dd
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
mov ebx, dword [esp + 0x1c]
mov eax, dword [esp + 0x20]
sub esi, ebx
pop edi
mov dword [eax], esi
pop esi
pop ebp
mov eax, 0xfffffffb
pop ebx
ret
mov ecx, dword [esp + 0x20]
sub esi, ebx
pop edi
mov dword [ecx], esi
pop esi
pop ebp
mov eax, 0xfffffffa
pop ebx
ret