Function at 0x40209d
Capabilities:
Decompress data using quicklz

Disassembly:
push ecx
push ebx
push ebp
push esi
mov esi, dword [esp + 0x18]
mov ebp, edx
push edi
mov edi, ecx
test ebp, ebp
je 0x402339
mov ebx, dword [ebp]
mov ecx, ebx
and ebx, 0xffffff
shr ecx, 0x18
cmp edi, ebx
jae 0x402339
cmp cl, 1
jne 0x4020d4
movzx edx, byte [edi + ebp + 8]
jmp 0x40210c
cmp cl, 2
jne 0x4020e0
movzx edx, word [ebp + edi*2 + 8]
jmp 0x40210c
cmp cl, 3
jne 0x4020ff
lea eax, [edi*2]
add eax, ebp
movzx edx, byte [edi + eax + 0xa]
movzx eax, word [edi + eax + 8]
shl edx, 8
or edx, eax
jmp 0x40210c
cmp cl, 4
jne 0x402339
mov edx, dword [ebp + edi*4 + 8]
mov edi, ecx
imul edi, ebx
add edi, 8
add edi, ebp
mov ecx, dword [edi + edx]
lea ebx, [edi + edx]
mov dword [esp + 0x10], ecx
test cl, 1
je 0x4021e1
shr ecx, 2
add edx, 5
xor cl, byte [esi]
and cl, 1
xor byte [esi], cl
mov eax, dword [ebx]
shr eax, 4
and eax, 0x1ff
mov dword [esi + 1], eax
movzx ecx, byte [ebx + 3]
movzx eax, byte [ebx + 4]
shl ecx, 8
or ecx, eax
mov dword [esi + 5], ecx
mov eax, dword [ebx]
shr eax, 0xd
and eax, 0x7ff
add eax, dword [ebp + 4]
mov dword [esi + 9], eax
test byte [ebx], 8
je 0x4021ae
mov ecx, dword [edi + edx]
add edx, 4
test ecx, ecx
jns 0x4021a9
lea eax, [ecx*8]
sar eax, 3
mov dword [esi + 0x19], eax
test ecx, 0x20000000
je 0x402191
lea eax, [edi + edx]
add edx, 4
mov eax, dword [eax]
jmp 0x402193
xor eax, eax
mov dword [esi + 0x15], eax
test ecx, 0x40000000
je 0x4021c3
mov eax, dword [edi + edx]
add edx, 4
mov dword [esi + 0xd], eax
jmp 0x4021c3
mov dword [esi + 0xd], ecx
jmp 0x4021b5
mov dword [esi + 0xd], 0xffffffff
mov dword [esi + 0x15], 0
mov dword [esi + 0x19], 0xffffffff
test byte [ebx], 2
mov eax, dword [esp + 0x18]
jne 0x402290
mov eax, dword [edi + edx]
mov ecx, 0x11
pop edi
mov dword [ecx + esi], eax
pop esi
pop ebp
pop ebx
pop ecx
ret
shr ecx, 3
xor cl, byte [esi]
and cl, 1
xor byte [esi], cl
test byte [esp + 0x10], 2
mov eax, dword [ebx]
jne 0x40229e
shr eax, 4
add edx, 7
and eax, 0xfff
mov dword [esi + 1], eax
movzx ecx, word [ebx + 4]
movzx eax, byte [ebx + 6]
and ecx, 0xfffffffe
shl ecx, 7
or ecx, eax
mov dword [esi + 5], ecx
movzx eax, word [ebx + 2]
add eax, dword [ebp + 4]
mov dword [esi + 9], eax
test byte [ebx + 4], 1
je 0x40226f
mov ecx, dword [edi + edx]
add edx, 4
test ecx, ecx
jns 0x40226a
lea eax, [ecx*8]
sar eax, 3
mov dword [esi + 0x19], eax
test ecx, 0x20000000
je 0x402252
lea eax, [edi + edx]
add edx, 4
mov eax, dword [eax]
jmp 0x402254
xor eax, eax
mov dword [esi + 0x15], eax
test ecx, 0x40000000
je 0x402284
mov eax, dword [edi + edx]
add edx, 4
mov dword [esi + 0xd], eax
jmp 0x402284
mov dword [esi + 0xd], ecx
jmp 0x402276
mov dword [esi + 0xd], 0xffffffff
mov dword [esi + 0x15], 0
mov dword [esi + 0x19], 0xffffffff
test byte [ebx], 4
mov eax, dword [esp + 0x18]
jne 0x402290
mov eax, dword [edi + edx]
mov ecx, 0x11
pop edi
mov dword [ecx + esi], eax
pop esi
pop ebp
pop ebx
pop ecx
ret
shr eax, 5
add edx, 0xc
mov dword [esi + 1], eax
mov eax, dword [ebx + 4]
mov dword [esi + 5], eax
mov eax, dword [ebx + 8]
add eax, dword [ebp + 4]
mov dword [esi + 9], eax
test byte [ebx], 0x10
je 0x402301
mov ecx, dword [edi + edx]
add edx, 4
test ecx, ecx
jns 0x4022fc
lea eax, [ecx*8]
sar eax, 3
mov dword [esi + 0x19], eax
test ecx, 0x20000000
je 0x4022e4
lea eax, [edi + edx]
add edx, 4
mov eax, dword [eax]
jmp 0x4022e6
xor eax, eax
mov dword [esi + 0x15], eax
test ecx, 0x40000000
je 0x402316
mov eax, dword [edi + edx]
add edx, 4
mov dword [esi + 0xd], eax
jmp 0x402316
mov dword [esi + 0xd], ecx
jmp 0x402308
mov dword [esi + 0xd], 0xffffffff
mov dword [esi + 0x15], 0
mov dword [esi + 0x19], 0xffffffff
test byte [ebx], 4
mov ecx, 0x11
je 0x40232d
mov eax, dword [esp + 0x18]
pop edi
mov dword [ecx + esi], eax
pop esi
pop ebp
pop ebx
pop ecx
ret
mov eax, dword [edi + edx]
pop edi
mov dword [ecx + esi], eax
pop esi
pop ebp
pop ebx
pop ecx
ret
and byte [esi], 0xfe
mov eax, 0x11
pop edi
mov dword [esi + 1], 0
mov dword [esi + 5], 0
mov dword [esi + 9], 0
mov dword [esi + 0xd], 0
mov dword [esi + 0x15], 0
mov dword [esi + 0x19], 0xffffffff
mov dword [eax + esi], 0x80004005
pop esi
pop ebp
pop ebx
pop ecx
ret