Function at 0x407e00
Capabilities:
Decompress data using ucl

Disassembly:
sub esp, 0x10
push ebx
push ebp
push esi
push edi
mov edi, dword [esp + 0x28]
mov dword [esp + 0x14], edx
xor esi, esi
xor eax, eax
mov edi, dword [edi]
xor edx, edx
mov dword [esp + 0x10], edx
mov dword [esp + 0x1c], 1
mov dword [esp + 0x18], edi
add esi, esi
test esi, 0xffff
jne 0x407e4b
add eax, 2
xor ebx, ebx
mov bl, byte [eax + ecx - 1]
mov esi, ebx
xor ebx, ebx
mov bl, byte [eax + ecx - 2]
shl esi, 8
add esi, ebx
lea esi, [esi + esi + 1]
mov edi, esi
shr edi, 0x10
and edi, 1
test edi, edi
je 0x407e7d
cmp eax, dword [esp + 0x14]
jae 0x4080e8
cmp edx, dword [esp + 0x18]
jae 0x40812a
mov edi, dword [esp + 0x24]
mov bl, byte [eax + ecx]
mov byte [edx + edi], bl
inc edx
mov dword [esp + 0x10], edx
inc eax
jmp 0x407e27
mov ebp, 1
lea edi, [esi + esi]
test edi, 0xffff
jne 0x407ea7
add eax, 2
xor ebx, ebx
mov bl, byte [eax + ecx - 1]
mov esi, ebx
xor ebx, ebx
mov bl, byte [eax + ecx - 2]
shl esi, 8
add esi, ebx
lea edi, [esi + esi + 1]
mov esi, edi
shr esi, 0x10
and esi, 1
lea ebp, [esi + ebp*2]
mov esi, dword [esp + 0x14]
cmp eax, esi
jae 0x4080e8
cmp ebp, 0x1000002
ja 0x408154
add edi, edi
test edi, 0xffff
jne 0x407eee
add eax, 2
xor ebx, ebx
mov bl, byte [eax + ecx - 1]
mov esi, ebx
xor ebx, ebx
mov bl, byte [eax + ecx - 2]
shl esi, 8
add esi, ebx
lea edi, [esi + esi + 1]
mov esi, edi
shr esi, 0x10
and esi, 1
test esi, esi
jne 0x407f30
lea esi, [edi + edi]
test esi, 0xffff
jne 0x407f1f
add eax, 2
xor ebx, ebx
mov bl, byte [eax + ecx - 1]
mov esi, ebx
xor ebx, ebx
mov bl, byte [eax + ecx - 2]
shl esi, 8
add esi, ebx
lea esi, [esi + esi + 1]
mov edi, esi
shr edi, 0x10
and edi, 1
lea ebp, [edi + ebp*2 - 2]
jmp 0x407e82
cmp ebp, 2
jne 0x407f75
mov ebx, dword [esp + 0x1c]
add edi, edi
test edi, 0xffff
je 0x407f4d
mov ebp, edi
shr ebp, 0x10
and ebp, 1
jmp 0x407fab
add eax, 2
xor edx, edx
mov dl, byte [eax + ecx - 1]
mov esi, edx
xor edx, edx
mov dl, byte [eax + ecx - 2]
shl esi, 8
add esi, edx
mov edx, dword [esp + 0x10]
lea edi, [esi + esi + 1]
mov ebp, edi
shr ebp, 0x10
and ebp, 1
jmp 0x407fab
cmp eax, dword [esp + 0x14]
jae 0x4080e8
xor ebx, ebx
add ebp, 0xfffffd
mov bl, byte [eax + ecx]
mov esi, ebx
shl ebp, 8
add esi, ebp
inc eax
cmp esi, 0xffffffff
je 0x4080fd
mov ebp, esi
not ebp
shr esi, 1
and ebp, 1
inc esi
mov ebx, esi
mov dword [esp + 0x1c], ebx
lea esi, [edi + edi]
test esi, 0xffff
je 0x407fc0
mov edi, esi
shr edi, 0x10
and edi, 1
jmp 0x407fe6
add eax, 2
xor edx, edx
mov dl, byte [eax + ecx - 1]
mov esi, edx
xor edx, edx
mov dl, byte [eax + ecx - 2]
shl esi, 8
add esi, edx
mov edx, dword [esp + 0x10]
lea esi, [esi + esi + 1]
mov edi, esi
shr edi, 0x10
and edi, 1
lea ebp, [edi + ebp*2]
test ebp, ebp
jne 0x40808c
inc ebp
lea edi, [esi + esi]
test edi, 0xffff
je 0x408007
mov esi, edi
shr esi, 0x10
and esi, 1
jmp 0x40802d
add eax, 2
xor edx, edx
mov dl, byte [eax + ecx - 1]
mov esi, edx
xor edx, edx
mov dl, byte [eax + ecx - 2]
shl esi, 8
add esi, edx
mov edx, dword [esp + 0x10]
lea edi, [esi + esi + 1]
mov esi, edi
shr esi, 0x10
and esi, 1
lea ebp, [esi + ebp*2]
mov esi, dword [esp + 0x14]
cmp eax, esi
jae 0x4080e8
cmp ebp, dword [esp + 0x18]
jae 0x40812a
lea esi, [edi + edi]
test esi, 0xffff
je 0x40805b
mov edi, esi
shr edi, 0x10
and edi, 1
jmp 0x408081
add eax, 2
xor edx, edx
mov dl, byte [eax + ecx - 1]
mov esi, edx
xor edx, edx
mov dl, byte [eax + ecx - 2]
shl esi, 8
add esi, edx
mov edx, dword [esp + 0x10]
lea esi, [esi + esi + 1]
mov edi, esi
shr edi, 0x10
and edi, 1
test edi, edi
je 0x407ff2
add ebp, 2
mov edi, 0x500
cmp edi, ebx
sbb edi, edi
neg edi
add ebp, edi
mov edi, dword [esp + 0x18]
mov dword [esp + 0x10], ebp
add ebp, edx
cmp ebp, edi
ja 0x40813f
cmp ebx, edx
ja 0x408154
mov ebp, dword [esp + 0x24]
mov edi, edx
sub edi, ebx
mov ebx, dword [esp + 0x24]
add edi, ebx
inc edx
mov bl, byte [edi]
inc edi
mov byte [edx + ebp - 1], bl
mov ebp, dword [esp + 0x24]
mov bl, byte [edi]
mov byte [edx + ebp], bl
mov ebx, dword [esp + 0x10]
inc edx
inc edi
dec ebx
mov dword [esp + 0x10], ebx
jne 0x4080c9
mov dword [esp + 0x10], edx
jmp 0x407e27
mov eax, dword [esp + 0x28]
pop edi
pop esi
pop ebp
mov dword [eax], edx
mov eax, 0xffffff37
pop ebx
add esp, 0x10
ret 0xc
mov ecx, dword [esp + 0x28]
mov dword [ecx], edx
mov ecx, dword [esp + 0x14]
cmp eax, ecx
jne 0x408117
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x10
ret 0xc
sbb eax, eax
pop edi
and al, 0xfc
pop esi
pop ebp
add eax, 0xffffff37
pop ebx
add esp, 0x10
ret 0xc
mov ecx, dword [esp + 0x28]
pop edi
pop esi
pop ebp
mov dword [ecx], edx
mov eax, 0xffffff36
pop ebx
add esp, 0x10
ret 0xc
mov eax, dword [esp + 0x28]
pop edi
pop esi
pop ebp
mov dword [eax], edx
mov eax, 0xffffff36
pop ebx
add esp, 0x10
ret 0xc
mov ecx, dword [esp + 0x28]
pop edi
pop esi
pop ebp
mov dword [ecx], edx
mov eax, 0xffffff35
pop ebx
add esp, 0x10
ret 0xc