Function at 0x407750
Capabilities:
Decompress data using ucl

Disassembly:
sub esp, 0x14
push ebx
mov ebx, dword [esp + 0x20]
push ebp
push esi
mov ebx, dword [ebx]
push edi
mov edi, ecx
mov dword [esp + 0x14], edx
xor ecx, ecx
xor eax, eax
xor esi, esi
xor edx, edx
mov dword [esp + 0x1c], 1
mov dword [esp + 0x18], ebx
test ecx, ecx
jbe 0x407785
dec ecx
mov ebx, eax
shr ebx, cl
and ebx, 1
jmp 0x4077b9
xor eax, eax
xor ebx, ebx
mov al, byte [esi + edi + 3]
mov bl, byte [esi + edi + 2]
shl eax, 8
add eax, ebx
xor ebx, ebx
mov bl, byte [esi + edi + 1]
add esi, 4
shl eax, 8
add eax, ebx
xor ebx, ebx
mov bl, byte [esi + edi - 4]
mov ecx, 0x1f
shl eax, 8
add eax, ebx
mov ebx, eax
shr ebx, 0x1f
test ebx, ebx
je 0x4077df
cmp esi, dword [esp + 0x14]
jae 0x407a82
cmp edx, dword [esp + 0x18]
jae 0x407ac4
mov ebp, dword [esp + 0x28]
mov bl, byte [esi + edi]
mov byte [edx + ebp], bl
inc edx
inc esi
jmp 0x407777
mov ebp, 1
test ecx, ecx
jbe 0x4077f2
dec ecx
mov ebx, eax
shr ebx, cl
and ebx, 1
jmp 0x407826
xor eax, eax
xor ebx, ebx
mov al, byte [esi + edi + 3]
mov bl, byte [esi + edi + 2]
shl eax, 8
add eax, ebx
xor ebx, ebx
mov bl, byte [esi + edi + 1]
add esi, 4
shl eax, 8
add eax, ebx
xor ebx, ebx
mov bl, byte [esi + edi - 4]
mov ecx, 0x1f
shl eax, 8
add eax, ebx
mov ebx, eax
shr ebx, 0x1f
lea ebp, [ebx + ebp*2]
mov ebx, dword [esp + 0x14]
cmp esi, ebx
jae 0x407a82
cmp ebp, 0x1000002
ja 0x407aee
test ecx, ecx
jbe 0x40784f
dec ecx
mov ebx, eax
shr ebx, cl
and ebx, 1
jmp 0x407883
xor eax, eax
xor ebx, ebx
mov al, byte [esi + edi + 3]
mov bl, byte [esi + edi + 2]
shl eax, 8
add eax, ebx
xor ebx, ebx
mov bl, byte [esi + edi + 1]
add esi, 4
shl eax, 8
add eax, ebx
xor ebx, ebx
mov bl, byte [esi + edi - 4]
mov ecx, 0x1f
shl eax, 8
add eax, ebx
mov ebx, eax
shr ebx, 0x1f
test ebx, ebx
je 0x4077e4
cmp ebp, 2
jne 0x40789a
mov ebx, dword [esp + 0x1c]
mov dword [esp + 0x10], ebx
jmp 0x4078c7
cmp esi, dword [esp + 0x14]
jae 0x407a82
xor ebx, ebx
add ebp, 0xfffffd
mov bl, byte [esi + edi]
shl ebp, 8
add ebx, ebp
inc esi
cmp ebx, 0xffffffff
je 0x407a97
inc ebx
mov dword [esp + 0x10], ebx
mov dword [esp + 0x1c], ebx
test ecx, ecx
jbe 0x4078e1
dec ecx
mov ebp, eax
shr ebp, cl
and ebp, 1
test ecx, ecx
jbe 0x40791e
dec ecx
mov ebx, eax
shr ebx, cl
and ebx, 1
jmp 0x407952
xor eax, eax
xor ebx, ebx
mov al, byte [esi + edi + 3]
mov bl, byte [esi + edi + 2]
shl eax, 8
add eax, ebx
xor ebx, ebx
mov bl, byte [esi + edi + 1]
mov ecx, 0x1f
shl eax, 8
add eax, ebx
xor ebx, ebx
mov bl, byte [esi + edi]
add esi, 4
shl eax, 8
add eax, ebx
mov ebp, eax
mov ebx, eax
shr ebp, 0x1f
dec ecx
shr ebx, cl
and ebx, 1
jmp 0x407952
xor eax, eax
xor ebx, ebx
mov al, byte [esi + edi + 3]
mov bl, byte [esi + edi + 2]
shl eax, 8
add eax, ebx
xor ebx, ebx
mov bl, byte [esi + edi + 1]
add esi, 4
shl eax, 8
add eax, ebx
xor ebx, ebx
mov bl, byte [esi + edi - 4]
mov ecx, 0x1f
shl eax, 8
add eax, ebx
mov ebx, eax
shr ebx, 0x1f
lea ebp, [ebx + ebp*2]
test ebp, ebp
jne 0x407a0a
mov ebp, 1
test ecx, ecx
jbe 0x407970
dec ecx
mov ebx, eax
shr ebx, cl
and ebx, 1
jmp 0x4079a4
xor eax, eax
xor ebx, ebx
mov al, byte [esi + edi + 3]
mov bl, byte [esi + edi + 2]
shl eax, 8
add eax, ebx
xor ebx, ebx
mov bl, byte [esi + edi + 1]
add esi, 4
shl eax, 8
add eax, ebx
xor ebx, ebx
mov bl, byte [esi + edi - 4]
mov ecx, 0x1f
shl eax, 8
add eax, ebx
mov ebx, eax
shr ebx, 0x1f
lea ebp, [ebx + ebp*2]
mov ebx, dword [esp + 0x14]
cmp esi, ebx
jae 0x407a82
cmp ebp, dword [esp + 0x18]
jae 0x407ac4
test ecx, ecx
jbe 0x4079cb
dec ecx
mov ebx, eax
shr ebx, cl
and ebx, 1
jmp 0x4079ff
xor eax, eax
xor ebx, ebx
mov al, byte [esi + edi + 3]
mov bl, byte [esi + edi + 2]
shl eax, 8
add eax, ebx
xor ebx, ebx
mov bl, byte [esi + edi + 1]
add esi, 4
shl eax, 8
add eax, ebx
xor ebx, ebx
mov bl, byte [esi + edi - 4]
mov ecx, 0x1f
shl eax, 8
add eax, ebx
mov ebx, eax
shr ebx, 0x1f
test ebx, ebx
je 0x407962
add ebp, 2
mov ebx, 0xd00
cmp ebx, dword [esp + 0x10]
sbb ebx, ebx
neg ebx
add ebp, ebx
mov ebx, dword [esp + 0x18]
mov dword [esp + 0x20], ebp
add ebp, edx
cmp ebp, ebx
ja 0x407ad9
mov ebx, dword [esp + 0x10]
cmp ebx, edx
ja 0x407aee
mov ebp, edx
sub ebp, ebx
mov ebx, dword [esp + 0x28]
add ebp, ebx
inc edx
mov dword [esp + 0x10], ebp
mov bl, byte [ebp]
mov ebp, dword [esp + 0x28]
mov byte [edx + ebp - 1], bl
mov ebx, dword [esp + 0x10]
inc ebx
mov dword [esp + 0x10], ebx
mov ebx, dword [esp + 0x10]
mov ebp, dword [esp + 0x28]
inc edx
mov bl, byte [ebx]
mov byte [edx + ebp - 1], bl
mov ebp, dword [esp + 0x10]
mov ebx, dword [esp + 0x20]
inc ebp
dec ebx
mov dword [esp + 0x10], ebp
mov dword [esp + 0x20], ebx
jne 0x407a5a
jmp 0x407777
mov eax, dword [esp + 0x2c]
pop edi
pop esi
pop ebp
mov dword [eax], edx
mov eax, 0xffffff37
pop ebx
add esp, 0x14
ret 0xc
mov ecx, dword [esp + 0x2c]
mov eax, dword [esp + 0x14]
cmp esi, eax
mov dword [ecx], edx
jne 0x407ab1
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x14
ret 0xc
sbb eax, eax
pop edi
and al, 0xfc
pop esi
pop ebp
add eax, 0xffffff37
pop ebx
add esp, 0x14
ret 0xc
mov ecx, dword [esp + 0x2c]
pop edi
pop esi
pop ebp
mov dword [ecx], edx
mov eax, 0xffffff36
pop ebx
add esp, 0x14
ret 0xc
mov eax, dword [esp + 0x2c]
pop edi
pop esi
pop ebp
mov dword [eax], edx
mov eax, 0xffffff36
pop ebx
add esp, 0x14
ret 0xc
mov ecx, dword [esp + 0x2c]
pop edi
pop esi
pop ebp
mov dword [ecx], edx
mov eax, 0xffffff35
pop ebx
add esp, 0x14
ret 0xc