Function at 0x407420
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 0x40746b
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 0x40749d
cmp eax, dword [esp + 0x14]
jae 0x4076c5
cmp edx, dword [esp + 0x18]
jae 0x407707
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 0x407447
mov ebp, 1
lea edi, [esi + esi]
test edi, 0xffff
jne 0x4074c7
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 0x4076c5
cmp ebp, 0x1000002
ja 0x407731
lea esi, [edi + edi]
test esi, 0xffff
jne 0x40750f
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 0x4074a2
cmp ebp, 2
jne 0x407526
mov ebx, dword [esp + 0x1c]
jmp 0x40754f
cmp eax, dword [esp + 0x14]
jae 0x4076c5
xor ebx, ebx
add ebp, 0xfffffd
mov bl, byte [eax + ecx]
shl ebp, 8
add ebx, ebp
inc eax
cmp ebx, 0xffffffff
je 0x4076da
inc ebx
mov dword [esp + 0x1c], ebx
add esi, esi
test esi, 0xffff
je 0x407563
mov ebp, esi
shr ebp, 0x10
and ebp, 1
jmp 0x407589
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 ebp, esi
shr ebp, 0x10
and ebp, 1
add esi, esi
test esi, 0xffff
je 0x40759d
mov edi, esi
shr edi, 0x10
and edi, 1
jmp 0x4075c3
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 0x407669
inc ebp
lea edi, [esi + esi]
test edi, 0xffff
je 0x4075e4
mov esi, edi
shr esi, 0x10
and esi, 1
jmp 0x40760a
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 0x4076c5
cmp ebp, dword [esp + 0x18]
jae 0x407707
lea esi, [edi + edi]
test esi, 0xffff
je 0x407638
mov edi, esi
shr edi, 0x10
and edi, 1
jmp 0x40765e
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 0x4075cf
add ebp, 2
mov edi, 0xd00
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 0x40771c
cmp ebx, edx
ja 0x407731
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 0x4076a6
mov dword [esp + 0x10], edx
jmp 0x407447
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 0x4076f4
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