Function at 0x488190
Capabilities:
Resolve function by parsing pe exports

Disassembly:
sub esp, 0x20
push ebx
mov ebx, dword [esp + 0x28]
push ebp
push esi
push edi
mov esi, dword [ebx + 0x440]
mov esi, dword [esi]
mov al, byte [esi + 0x5278]
mov edi, dword [esi + 0x60]
and al, 7
mov ecx, dword [esi + 0x64]
inc al
mov ebp, dword [esi + 0x5c]
mov byte [esp + 0x34], al
mov eax, dword [esi + 0x4c]
sar eax, 1
sub edi, dword [esi + 0x68]
mov dword [esp + 0x28], ebp
sbb ecx, dword [esi + 0x6c]
cdq
cmp ecx, edx
jg 0x4885a3
jl 0x4881e0
cmp edi, eax
ja 0x4885a3
nop dword [eax]
mov eax, dword [esi + 0x80]
dec eax
cmp dword [esi + 0x526c], eax
jg 0x48859f
jne 0x488209
movsx ecx, byte [esi + 0x5268]
movzx eax, byte [esp + 0x34]
cmp ecx, eax
jge 0x48859f
mov edi, dword [esp + 0x38]
lea eax, [esp + 0x1c]
push eax
push edi
lea eax, [esi + 0xf74]
push eax
push ebx
call fcn.00488090
add esp, 0x10
test eax, eax
jne 0x488592
mov eax, dword [esp + 0x1c]
mov ecx, 0x100
cmp ax, cx
jae 0x488263
mov edx, dword [esi + 0x60]
mov eax, edx
mov ecx, dword [esi + 0x64]
add eax, 1
mov dword [esi + 0x60], eax
mov eax, dword [esi + 0x50]
adc ecx, 0
mov dword [esi + 0x64], ecx
mov ecx, dword [esi + 0x78]
add ecx, edx
mov edx, dword [esp + 0x1c]
and ecx, ebp
mov byte [ecx + eax], dl
jmp 0x488534
mov edx, 0x106
cmp ax, dx
jb 0x488460
add eax, 0xfffffefa
push eax
push edi
push esi
push ebx
call fcn.00488000
mov ebp, eax
add esp, 0x10
cmp ebp, 0xffffffff
je 0x488575
lea eax, [esp + 0x10]
push eax
push edi
lea ecx, [esi + 0x1e60]
push ecx
push ebx
call fcn.00488090
add esp, 0x10
test eax, eax
jne 0x48856e
mov ax, word [esp + 0x10]
cmp ax, 4
jae 0x4882bf
movzx edi, ax
inc edi
jmp 0x48840e
movzx eax, ax
mov ecx, eax
and eax, 1
shr ecx, 1
or eax, 2
dec ecx
shl eax, cl
mov dword [esp + 0x20], ecx
lea edi, [eax + 1]
mov dword [esp + 0x24], edi
test ecx, ecx
jle 0x48840e
cmp ecx, 4
jl 0x4883c2
jle 0x488389
mov eax, dword [esi + 0x526c]
cmp eax, dword [esi + 0x80]
jge 0x48854a
mov ecx, dword [esp + 0x38]
mov dl, byte [esi + 0x5268]
movzx edi, byte [eax + ecx]
movzx eax, byte [eax + ecx + 1]
shl edi, 8
or edi, eax
mov eax, dword [esi + 0x526c]
shl edi, 8
movzx eax, byte [eax + ecx + 2]
or edi, eax
mov eax, dword [esi + 0x526c]
shl edi, 8
movzx eax, byte [eax + ecx + 3]
mov cl, dl
or edi, eax
mov eax, dword [esp + 0x38]
shl edi, cl
mov ecx, dword [esi + 0x526c]
movzx eax, byte [ecx + eax + 4]
mov ecx, 8
sub cl, dl
shr eax, cl
or edi, eax
movsx eax, dl
mov edx, dword [esp + 0x20]
lea ecx, [edx - 4]
add ecx, eax
mov eax, ecx
and cl, 7
mov byte [esi + 0x5268], cl
mov ecx, 0x24
sub ecx, edx
sar eax, 3
add dword [esi + 0x526c], eax
shr edi, cl
shl edi, 4
add edi, dword [esp + 0x24]
lea eax, [esp + 0x14]
push eax
push dword [esp + 0x3c]
lea eax, [esi + 0x2d4c]
push eax
push ebx
call fcn.00488090
add esp, 0x10
test eax, eax
jne 0x48856e
movzx ecx, word [esp + 0x14]
mov eax, 0x7ffffffe
sub eax, ecx
cmp edi, eax
jge 0x488551
add edi, ecx
jmp 0x48840e
lea eax, [esp + 0x18]
push eax
push dword [esp + 0x3c]
push esi
push ebx
call fcn.0048b1c0
add esp, 0x10
test eax, eax
jne 0x4885a5
movsx ecx, byte [esi + 0x5268]
mov edx, dword [esp + 0x20]
add ecx, edx
mov eax, ecx
and cl, 7
sar eax, 3
add dword [esi + 0x526c], eax
movzx eax, word [esp + 0x18]
mov byte [esi + 0x5268], cl
mov ecx, 0x10
sub cl, dl
shr eax, cl
add edi, eax
cmp edi, 0x100
jle 0x488429
inc ebp
cmp edi, 0x2000
jle 0x488429
inc ebp
cmp edi, 0x40000
jle 0x488429
inc ebp
mov eax, dword [esi + 0x4b44]
mov dword [esi + 0x4b48], eax
mov eax, dword [esi + 0x4b40]
mov dword [esi + 0x4b44], eax
mov eax, dword [esi + 0x4b3c]
push edi
mov dword [esi + 0x4b40], eax
mov dword [esi + 0x4b3c], edi
mov dword [esi + 0x84], ebp
push ebp
jmp 0x488523
cmp ax, cx
jne 0x48847c
push edi
push ebx
call fcn.00488d90
add esp, 8
test eax, eax
jne 0x4885a5
jmp 0x488534
mov ecx, 0x101
cmp ax, cx
jne 0x4884b1
mov eax, dword [esi + 0x84]
test eax, eax
je 0x488534
push dword [esi + 0x4b3c]
push eax
push ebx
call fcn.00487dd0
add esp, 0xc
test eax, eax
jne 0x488585
jmp 0x488534
movzx ecx, ax
sub ecx, 0x102
mov ebp, dword [esi + ecx*4 + 0x4b3c]
test ecx, ecx
jle 0x4884e3
nop word [eax + eax]
mov eax, dword [esi + ecx*4 + 0x4b38]
mov dword [esi + ecx*4 + 0x4b3c], eax
dec ecx
test ecx, ecx
jg 0x4884d0
lea eax, [esp + 0x2c]
mov dword [esi + 0x4b3c], ebp
push eax
push edi
lea eax, [esi + 0x3c38]
push eax
push ebx
call fcn.00488090
add esp, 0x10
test eax, eax
jne 0x488585
push dword [esp + 0x2c]
push edi
push esi
push ebx
call fcn.00488000
add esp, 0x10
cmp eax, 0xffffffff
je 0x488585
push ebp
mov dword [esi + 0x84], eax
push eax
push ebx
call fcn.00487dd0
add esp, 0xc
test eax, eax
jne 0x488585
mov ebp, dword [esp + 0x28]
mov edi, dword [esi + 0x60]
sub edi, dword [esi + 0x68]
mov ecx, dword [esi + 0x64]
mov eax, dword [esi + 0x4c]
sbb ecx, dword [esi + 0x6c]
sar eax, 1
jmp 0x4881c9
push str.Premature_end_of_stream_during_extraction_of_data__1_
jmp 0x48857a
push str.Distance_pointer_overflow
push 0x2a
push ebx
call fcn.00469db0
add esp, 0xc
mov eax, 0xffffffe2
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x20
ret
push str.Failed_to_decode_the_distance_slot
jmp 0x48857a
push str.Failed_to_decode_the_code_length
push 0x16
push ebx
call fcn.00469db0
add esp, 0xc
pop edi
pop esi
pop ebp
mov eax, 0xffffffe2
pop ebx
add esp, 0x20
ret
pop edi
pop esi
pop ebp
mov eax, 1
pop ebx
add esp, 0x20
ret
or byte [esi + 0x38], 8
xor eax, eax
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x20
ret