Function at 0x4dc5b7
Capabilities:
Compress data via zlib inflate or deflate
Resolve function by parsing pe exports

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x60
mov esi, dword [esp + 0x74]
mov ecx, esi
call fcn.004dc2e3
mov ebx, 0xfffffffe
test eax, eax
je 0x4dc5dc
mov eax, ebx
add esp, 0x60
pop esi
pop edi
pop ebx
pop ebp
ret
mov ecx, dword [esi + 0xc]
test ecx, ecx
je 0x4dc5d2
mov eax, dword [esi]
mov dword [esp + 8], eax
test eax, eax
je 0x4ddf6b
mov dword [esp + 0x14], ecx
mov eax, dword [esi + 0x1c]
mov dword [esp], eax
mov eax, dword [eax + 4]
cmp eax, 0x3f3f
jne 0x4dc614
mov eax, dword [esp]
mov dword [eax + 4], 0x3f40
mov eax, 0x3f40
mov ebp, dword [esi + 4]
mov edx, dword [esi + 0x10]
mov edi, dword [esp]
mov ecx, dword [edi + 0x84]
mov dword [esp + 4], ecx
mov ecx, dword [edi + 0x88]
mov dword [esp + 0xc], ecx
lea ecx, [edi + 0x40]
mov dword [esp + 0x4c], ecx
lea ecx, [edi + 0x57c]
mov dword [esp + 0x48], ecx
lea ecx, [edi + 0xb8]
mov dword [esp + 0x44], ecx
lea ecx, [edi + 0xa0]
mov dword [esp + 0x40], ecx
lea ecx, [edi + 0x33c]
mov dword [esp + 0x30], ecx
lea ecx, [edi + 0xbc]
mov dword [esp + 0x3c], ecx
lea ecx, [edi + 0xa4]
mov dword [esp + 0x54], ecx
mov ecx, dword [esp + 0x78]
add ecx, 0xfffffffb
mov dword [esp + 0x58], ecx
mov dword [esp + 0x28], 0
mov dword [esp + 0x5c], ebp
mov dword [esp + 0x1c], edx
add eax, 0xffffc0cc
cmp eax, 0x1e
ja case.default.0x4dc6a1
mov dword [esp + 0x10], edx
jmp dword [eax*4 + 0x733de8]
mov eax, dword [esp]
mov eax, dword [eax + 0xc]
test eax, eax
je 0x4dd28f
mov edx, dword [esp + 0xc]
cmp edx, 0xf
mov ebx, dword [esp + 4]
ja 0x4dc6e8
mov edi, edx
sub ebp, 1
jb 0x4ddf87
mov ecx, dword [esp + 8]
movzx edx, byte [ecx]
inc ecx
mov dword [esp + 8], ecx
mov ecx, edi
shl edx, cl
add ebx, edx
lea edx, [edi + 8]
cmp edi, 8
jb 0x4dc6c3
test al, 2
je 0x4dd7a4
cmp ebx, 0x8b1f
jne 0x4dd7a4
mov eax, dword [esp]
cmp dword [eax + 0x28], 0
jne 0x4dc70f
mov eax, dword [esp]
mov dword [eax + 0x28], 0xf
xor ecx, ecx
mov esi, dword [esp]
mov dword [esi + 0x1c], ecx
lea eax, [esp + 0x2c]
mov word [eax], 0x8b1f
push 2
push eax
mov dword [esp + 0xc], 0
push ecx
call fcn.004e023a
add esp, 0xc
mov dword [esi + 0x1c], eax
mov dword [esi + 4], 0x3f35
mov dword [esp + 0xc], 0
jmp 0x4dddee
mov edx, dword [esp + 4]
jmp 0x4dd3d3
mov eax, dword [esp]
mov edi, dword [eax + 0xa8]
mov edx, dword [eax + 0xb4]
cmp edx, edi
jb 0x4dca9f
jmp 0x4dcb26
mov edx, dword [esp + 0xc]
mov ecx, edx
and cl, 7
mov ebx, dword [esp + 4]
shr ebx, cl
and edx, 0xfffffff8
cmp edx, 0x1f
ja 0x4dcefc
sub ebp, 1
jb 0x4ddfdd
mov ecx, dword [esp + 8]
movzx eax, byte [ecx]
inc ecx
mov dword [esp + 8], ecx
mov ecx, edx
shl eax, cl
add ebx, eax
lea eax, [edx + 8]
cmp edx, 0x18
mov edx, eax
jb 0x4dc78b
jmp 0x4dcefe
mov ebx, dword [esp + 4]
mov edx, dword [esp + 0xc]
jmp 0x4dc809
mov ecx, dword [esp + 0xc]
cmp ecx, 0x1f
mov ebx, dword [esp + 4]
ja 0x4dc7ef
sub ebp, 1
jb 0x4ddfc5
mov edx, dword [esp + 8]
movzx eax, byte [edx]
inc edx
mov dword [esp + 8], edx
shl eax, cl
add ebx, eax
lea eax, [ecx + 8]
cmp ecx, 0x18
mov ecx, eax
jb 0x4dc7cc
bswap ebx
mov ecx, dword [esp]
mov dword [ecx + 0x1c], ebx
mov eax, dword [esp + 0x74]
mov dword [eax + 0x30], ebx
mov dword [ecx + 4], 0x3f3e
xor ebx, ebx
xor edx, edx
mov eax, dword [esp]
cmp dword [eax + 0x10], 0
je 0x4de215
xor eax, eax
inc eax
mov esi, dword [esp]
mov dword [esi + 0x1c], eax
mov ecx, dword [esp + 0x74]
mov dword [ecx + 0x30], eax
mov dword [esi + 4], 0x3f3f
jmp 0x4dcc9c
mov ebx, dword [esp + 4]
mov eax, dword [esp + 0x1c]
mov esi, dword [esp + 0xc]
jmp 0x4dd61c
mov ebx, ebp
mov ebp, dword [esp + 8]
mov eax, dword [esp]
mov dword [eax + 4], 0x3f48
mov dword [esp + 8], ebp
mov ebp, ebx
mov edx, dword [esp + 0x10]
mov eax, dword [esp + 4]
cmp ebp, 0xf
jb 0x4dc8f0
cmp edx, 0x104
jb 0x4dc8f0
mov esi, dword [esp + 0x74]
mov ecx, dword [esp + 0x14]
mov dword [esi + 0xc], ecx
mov dword [esi + 0x10], edx
mov ecx, dword [esp + 8]
mov dword [esi], ecx
mov dword [esi + 4], ebp
mov edi, dword [esp]
mov dword [edi + 0x84], eax
mov eax, dword [esp + 0xc]
mov dword [edi + 0x88], eax
push dword [esp + 0x1c]
push esi
call dword [0x7eccb0]
add esp, 8
mov eax, dword [esi + 0xc]
mov dword [esp + 0x14], eax
mov edx, dword [esi + 0x10]
mov eax, dword [esi]
mov dword [esp + 8], eax
mov ebp, dword [esi + 4]
mov eax, dword [edi + 0x84]
mov dword [esp + 4], eax
mov eax, dword [edi + 0x88]
mov dword [esp + 0xc], eax
cmp dword [edi + 4], 0x3f3f
jne 0x4dddf2
mov eax, dword [esp]
mov dword [eax + 0x2390], 0xffffffff
jmp 0x4dddf2
mov dword [esp + 0x18], ebp
mov edx, dword [esp]
mov dword [edx + 0x2390], 0
mov cl, byte [edx + 0xa0]
xor ebp, ebp
dec ebp
shl ebp, cl
mov ebx, dword [edx + 0x98]
not ebp
mov dword [esp + 4], eax
mov ecx, eax
and ecx, ebp
mov dl, byte [ebx + ecx*4 + 1]
movzx eax, dl
mov esi, dword [esp + 0xc]
cmp esi, eax
jae 0x4dce57
mov dword [esp + 0x20], ebx
mov ecx, esi
mov esi, dword [esp + 0x18]
mov edi, dword [esp + 8]
sub esi, 1
jb 0x4ddf98
movzx eax, byte [edi]
shl eax, cl
inc edi
mov ebx, dword [esp + 4]
add ebx, eax
add ecx, 8
mov dword [esp + 4], ebx
and ebx, ebp
mov eax, dword [esp + 0x20]
mov dl, byte [eax + ebx*4 + 1]
movzx eax, dl
cmp ecx, eax
jb 0x4dc93d
mov ebp, dword [esp + 0x20]
lea ebp, [ebp + ebx*4]
mov ebx, dword [esp + 0x20]
mov dword [esp + 8], edi
mov dword [esp + 0x18], esi
mov dword [esp + 0xc], ecx
jmp 0x4dce5a
mov eax, dword [esp]
mov eax, dword [eax + 0x14]
bt eax, 0xa
jb 0x4dcfa2
mov ecx, dword [esp + 0xc]
mov edx, dword [esp + 4]
jmp 0x4dda3e
mov eax, dword [esp]
mov edx, dword [eax + 0x94]
mov ebx, dword [esp + 4]
mov esi, dword [esp + 0xc]
jmp 0x4dd579
mov eax, dword [esp]
mov eax, dword [eax + 0xc]
mov ebx, dword [esp + 4]
mov edx, dword [esp + 0xc]
jmp 0x4dd2b2
mov esi, edx
mov ecx, dword [esp + 0xc]
cmp ecx, 0x1f
mov ebx, dword [esp + 4]
jbe 0x4dd94b
jmp 0x4dd96e
mov esi, edx
mov ecx, dword [esp + 0xc]
cmp ecx, 0xf
mov ebx, dword [esp + 4]
jbe 0x4dd9b6
jmp 0x4dd9d9
mov ecx, dword [esp + 0xc]
cmp ecx, 0xd
mov ebx, dword [esp + 4]
ja 0x4dca2d
sub ebp, 1
jb 0x4ddfc5
mov edx, dword [esp + 8]
movzx eax, byte [edx]
inc edx
mov dword [esp + 8], edx
shl eax, cl
add ebx, eax
lea eax, [ecx + 8]
cmp ecx, 6
mov ecx, eax
jb 0x4dca0a
mov esi, ebx
mov ebx, ecx
mov edx, esi
and edx, 0x1f
lea eax, [edx + 0x101]
mov edi, dword [esp]
mov dword [edi + 0xac], eax
mov ecx, esi
shr ecx, 5
and ecx, 0x1f
lea eax, [ecx + 1]
mov dword [edi + 0xb0], eax
mov eax, esi
shr eax, 0xa
and eax, 0xf
add eax, 4
mov dword [edi + 0xa8], eax
shr esi, 0xe
mov dword [esp + 4], esi
add ebx, 0xfffffff2
mov dword [esp + 0xc], ebx
cmp edx, 0x1d
ja 0x4dd34b
cmp ecx, 0x1e
jae 0x4dd34b
mov edi, eax
mov eax, dword [esp]
mov dword [eax + 0xb4], 0
mov dword [eax + 4], 0x3f45
xor edx, edx
mov dword [esp + 0x18], edi
neg edi
mov dword [esp + 0x20], edi
inc edx
mov ebx, dword [esp + 0xc]
mov ecx, ebx
cmp ebx, 2
ja 0x4dcadd
test ebp, ebp
je 0x4ddfa7
mov esi, ecx
or esi, 8
mov ebx, dword [esp + 8]
movzx edi, byte [ebx]
shl edi, cl
dec ebp
mov eax, ebp
inc ebx
mov dword [esp + 8], ebx
mov ebp, dword [esp + 4]
add ebp, edi
mov ebx, esi
jmp 0x4dcae5
mov eax, ebp
mov ebp, dword [esp + 4]
mov ebx, ecx
mov ecx, ebp
and ecx, 7
mov edi, dword [esp]
mov dword [edi + 0xb4], edx
movzx esi, word [edx + edx + 0x7346f2]
mov word [edi + esi*2 + 0xbc], cx
shr ebp, 3
mov dword [esp + 4], ebp
add ebx, 0xfffffffd
mov ecx, dword [esp + 0x20]
add ecx, edx
inc ecx
inc edx
cmp ecx, 1
mov ebp, eax
mov eax, dword [esp + 0x18]
jne 0x4dcaae
mov dword [esp + 0xc], ebx
mov edx, eax
cmp edx, 0x12
mov ecx, dword [esp + 0x44]
mov esi, dword [esp + 0x30]
mov ebx, dword [esp + 0x3c]
ja 0x4dcb5f
add edx, 0xffffffed
movzx eax, word [edx + edx + 0x73471a]
mov edi, dword [esp]
mov word [edi + eax*2 + 0xbc], 0
inc edx
jne 0x4dcb3a
mov eax, dword [esp]
mov dword [eax + 0xb4], 0x13
mov eax, dword [esp + 0x48]
mov edx, dword [esp]
mov dword [edx + 0xb8], eax
mov dword [edx + 0x98], eax
mov dword [edx + 0xa0], 7
push esi
push dword [esp + 0x44]
push ecx
push 0x13
push ebx
push 0
call fcn.004e5d8c
add esp, 0x18
mov dword [esp + 0x28], eax
test eax, eax
mov edx, dword [esp + 0x10]
je 0x4dcfc8
mov eax, dword [esp]
mov dword [eax + 4], 0x3f51
mov eax, dword [esp + 0x74]
mov dword [eax + 0x18], str.invalid_code_lengths_set
jmp 0x4dddf2
mov eax, dword [esp + 0x1c]
jmp 0x4ddc7b
mov ebx, dword [esp + 4]
jmp 0x4ddad7
mov ebx, dword [esp + 4]
mov eax, dword [esp + 0x1c]
jmp 0x4ddbad
test edx, edx
je 0x4de26f
mov esi, dword [esp]
mov al, byte [esi + 0x8c]
mov ecx, dword [esp + 0x14]
mov byte [ecx], al
inc ecx
mov dword [esp + 0x14], ecx
dec edx
mov dword [esi + 4], 0x3f48
jmp 0x4dddf2
mov ebx, dword [esp + 4]
mov edx, dword [esp + 0xc]
jmp 0x4dcca7
mov ebx, dword [esp + 4]
jmp 0x4ddd33
mov esi, edx
mov ecx, dword [esp + 0xc]
cmp ecx, 0xf
mov ebx, dword [esp + 4]
ja 0x4dcc49
sub ebp, 1
jb 0x4ddf7a
mov edx, dword [esp + 8]
movzx eax, byte [edx]
inc edx
mov dword [esp + 8], edx
shl eax, cl
add ebx, eax
lea eax, [ecx + 8]
cmp ecx, 8
mov ecx, eax
jb 0x4dcc26
mov eax, dword [esp]
mov dword [eax + 0x14], ebx
cmp bl, 8
jne 0x4dd365
test ebx, 0xe000
je 0x4dd8fb
mov dword [esp + 0xc], ecx
mov dword [esp + 4], ebx
mov eax, dword [esp]
mov dword [eax + 4], 0x3f51
mov eax, dword [esp + 0x74]
mov dword [eax + 0x18], str.unknown_header_flags_set
jmp 0x4dd710
mov eax, dword [esp]
mov esi, dword [eax + 0xb4]
jmp 0x4dcfe6
mov ebx, dword [esp + 4]
mov edx, dword [esp + 0xc]
cmp dword [esp + 0x58], 2
jb 0x4ddfdf
mov eax, dword [esp]
cmp dword [eax + 8], 0
je 0x4dccd1
mov ecx, edx
and cl, 7
shr ebx, cl
mov dword [esp + 4], ebx
and edx, 0xfffffff8
mov dword [esp + 0xc], edx
mov eax, dword [esp]
mov dword [eax + 4], 0x3f4e
jmp 0x4dddee
cmp edx, 2
ja 0x4dccfc
test ebp, ebp
je 0x4ddfdd
mov eax, edx
or eax, 8
mov esi, ebx
mov ecx, edx
mov ebx, dword [esp + 8]
movzx edx, byte [ebx]
shl edx, cl
dec ebp
inc ebx
mov dword [esp + 8], ebx
add esi, edx
mov ebx, esi
mov edx, eax
mov eax, ebx
and eax, 1
mov ecx, dword [esp]
mov dword [ecx + 8], eax
mov eax, ebx
shr eax, 1
and eax, 3
jmp dword [eax*4 + 0x733e64]
mov eax, dword [esp]
mov dword [eax + 4], 0x3f41
jmp 0x4dd777
mov ebx, dword [esp + 4]
mov ecx, dword [esp + 0xc]
jmp 0x4dcf3e
mov ebx, dword [esp + 4]
mov ecx, dword [esp + 0xc]
jmp 0x4dcf34
mov eax, dword [esp]
mov eax, dword [eax + 0xc]
test eax, eax
je 0x4dd29e
mov esi, dword [esp + 0xc]
cmp esi, 0x1f
mov ebx, dword [esp + 4]
ja 0x4dcd80
mov edi, esi
sub ebp, 1
jb 0x4ddf87
mov ecx, dword [esp + 8]
movzx edx, byte [ecx]
inc ecx
mov dword [esp + 8], ecx
mov ecx, edi
shl edx, cl
add ebx, edx
lea esi, [edi + 8]
cmp edi, 0x18
mov edi, esi
jb 0x4dcd5b
mov edx, dword [esp + 0x1c]
mov edi, edx
sub edi, dword [esp + 0x10]
mov ecx, dword [esp + 0x74]
add dword [ecx + 0x14], edi
mov ecx, dword [esp]
add dword [ecx + 0x20], edi
test al, 4
je 0x4dcdd7
cmp edx, dword [esp + 0x10]
je 0x4dcdb4
mov edx, dword [esp + 0x14]
sub edx, edi
mov ecx, dword [esp + 0x74]
push edi
call fcn.004de438
add esp, 4
mov eax, dword [esp]
cmp dword [eax + 0x14], 0
je 0x4dcdd7
push dword [esp + 0x4c]
call dword [0x7ecca8]
add esp, 4
mov ecx, dword [esp]
mov dword [ecx + 0x1c], eax
mov ecx, dword [esp + 0x74]
mov dword [ecx + 0x30], eax
mov edx, dword [esp]
mov eax, dword [edx + 0xc]
test al, 4
je 0x4dcdf5
cmp dword [edx + 0x14], 0
mov ecx, ebx
bswap ecx
cmovne ecx, ebx
cmp ecx, dword [edx + 0x1c]
jne 0x4dde1c
xor ebx, ebx
mov ecx, dword [esp + 0x10]
mov dword [esp + 0x1c], ecx
xor edx, edx
jmp 0x4dd2a8
mov eax, dword [esp]
mov ecx, dword [eax + 0x94]
mov edx, dword [esp + 4]
test ecx, ecx
je 0x4dcfba
mov eax, edx
mov edx, dword [esp + 0xc]
cmp edx, ecx
jae 0x4dd387
mov dword [esp + 0x18], ebp
mov ebx, ebp
mov ebp, dword [esp + 8]
sub ebx, 1
jb 0x4ddff8
movzx esi, byte [ebp]
mov edi, ecx
mov ecx, edx
shl esi, cl
mov ecx, edi
inc ebp
add eax, esi
add edx, 8
cmp edx, edi
jb 0x4dce33
jmp 0x4dd38d
lea ebp, [ebx + ecx*4]
movzx esi, word [ebp + 2]
mov ch, byte [ebp]
mov cl, ch
dec cl
cmp cl, 0xe
ja 0x4dd27e
movzx ecx, ch
add ecx, eax
xor edi, edi
dec edi
shl edi, cl
movzx edx, si
not edi
mov esi, dword [esp + 4]
mov dword [esp + 0x20], edi
and esi, edi
mov ecx, eax
shr esi, cl
lea edi, [ebx + edx*4]
movzx edx, byte [edi + esi*4 + 1]
lea ecx, [eax + edx]
mov ebx, dword [esp + 0xc]
cmp ecx, ebx
jbe 0x4dd7fb
mov dword [esp + 0x24], edi
mov ebp, dword [esp + 0x18]
mov esi, dword [esp + 8]
sub ebp, 1
jb 0x4ddf98
movzx edx, byte [esi]
mov ecx, ebx
shl edx, cl
inc esi
mov edi, dword [esp + 4]
add edi, edx
mov dword [esp + 4], edi
and edi, dword [esp + 0x20]
mov ecx, eax
shr edi, cl
add ebx, 8
mov ecx, dword [esp + 0x24]
movzx edx, byte [ecx + edi*4 + 1]
lea ecx, [eax + edx]
cmp ecx, ebx
ja 0x4dceae
mov ecx, dword [esp + 0x24]
lea ecx, [ecx + edi*4]
mov dword [esp + 8], esi
mov dword [esp + 0x18], ebp
mov dword [esp + 0xc], ebx
jmp 0x4dd7fe
mov eax, edx
movzx ecx, bx
mov dword [esp + 4], ebx
not ebx
shr ebx, 0x10
cmp ecx, ebx
jne 0x4dd32d
xor ebx, ebx
mov eax, dword [esp]
mov dword [eax + 0x8c], ecx
mov dword [eax + 4], 0x3f42
mov ecx, 0
cmp dword [esp + 0x78], 6
je 0x4de282
mov eax, dword [esp]
mov dword [eax + 4], 0x3f43
mov dword [esp + 0xc], ecx
mov dword [esp + 4], ebx
mov eax, dword [esp]
mov esi, dword [eax + 0x8c]
test esi, esi
je 0x4ddde4
cmp esi, ebp
cmovae esi, ebp
mov edx, dword [esp + 0x10]
cmp esi, edx
cmovae esi, edx
test esi, esi
je 0x4de271
push esi
mov ebx, dword [esp + 0xc]
push ebx
mov edi, dword [esp + 0x1c]
push edi
call fcn.006fb4d0
add esp, 0xc
sub ebp, esi
add ebx, esi
mov dword [esp + 8], ebx
mov edx, dword [esp + 0x10]
sub edx, esi
add edi, esi
mov dword [esp + 0x14], edi
mov eax, dword [esp]
sub dword [eax + 0x8c], esi
jmp 0x4dddf2
mov edx, dword [esp + 0xc]
mov ecx, edx
cmp edx, 0xf
mov ebx, dword [esp + 4]
ja 0x4dda76
jmp 0x4dda51
mov eax, dword [esp]
mov esi, dword [eax + 0x8c]
jmp 0x4dd3bb
mov eax, dword [esp]
mov dword [eax + 0xb4], 0
mov dword [eax + 4], 0x3f46
xor esi, esi
mov dword [esp + 0x28], 0
mov dword [esp + 0x18], ebp
mov ecx, dword [esp]
mov eax, dword [ecx + 0xac]
mov ecx, dword [ecx + 0xb0]
mov dword [esp + 0x50], eax
add ecx, eax
mov dword [esp + 0x38], ecx
cmp esi, ecx
mov eax, dword [esp + 4]
jae 0x4dd1fe
mov ecx, dword [esp]
mov edx, dword [ecx + 0x98]
mov cl, byte [ecx + 0xa0]
xor edi, edi
dec edi
shl edi, cl
not edi
mov dword [esp + 0x20], edx
mov dword [esp + 0x34], edi
mov dword [esp + 0x24], esi
mov esi, eax
mov ecx, eax
and ecx, edi
movzx edx, byte [edx + ecx*4 + 1]
mov eax, dword [esp + 0xc]
cmp eax, edx
jae 0x4dd078
mov ebx, dword [esp + 0x18]
mov ebp, dword [esp + 8]
sub ebx, 1
jb 0x4ddfcc
movzx edx, byte [ebp]
mov ecx, eax
shl edx, cl
inc ebp
mov ecx, esi
add ecx, edx
add eax, 8
mov esi, ecx
and ecx, edi
mov edx, dword [esp + 0x20]
movzx edx, byte [edx + ecx*4 + 1]
cmp eax, edx
jb 0x4dd04c
jmp 0x4dd080
mov ebp, dword [esp + 8]
mov ebx, dword [esp + 0x18]
mov edi, dword [esp + 0x20]
movzx edi, word [edi + ecx*4 + 2]
cmp edi, 0xf
ja 0x4dd0bf
mov ecx, edx
shr esi, cl
mov dword [esp + 4], esi
sub eax, edx
mov edx, dword [esp + 0x24]
lea ecx, [edx + 1]
mov esi, dword [esp]
mov dword [esi + 0xb4], ecx
mov word [esi + edx*2 + 0xbc], di
mov esi, ecx
mov dword [esp + 0xc], eax
mov edi, dword [esp + 0x34]
jmp 0x4dd1e2
cmp edi, 0x10
je 0x4dd112
cmp edi, 0x11
jne 0x4dd16b
lea ecx, [edx + 3]
mov dword [esp + 8], ecx
cmp eax, ecx
jae 0x4dd0f5
sub ebx, 1
jb 0x4de017
movzx edi, byte [ebp]
mov ecx, eax
shl edi, cl
inc ebp
add esi, edi
add eax, 8
cmp eax, dword [esp + 8]
jb 0x4dd0d8
mov ecx, edx
shr esi, cl
mov ecx, esi
and ecx, 7
add ecx, 3
shr esi, 3
mov dword [esp + 4], esi
sub eax, edx
add eax, 0xfffffffd
jmp 0x4dd1ab
lea ecx, [edx + 2]
mov dword [esp + 8], ecx
cmp eax, ecx
jae 0x4dd13a
sub ebx, 1
jb 0x4de017
movzx edi, byte [ebp]
mov ecx, eax
shl edi, cl
inc ebp
add esi, edi
add eax, 8
cmp eax, dword [esp + 8]
jb 0x4dd11d
mov ecx, edx
shr esi, cl
sub eax, edx
mov ecx, dword [esp + 0x24]
test ecx, ecx
je 0x4ddf47
mov edx, dword [esp]
movzx edx, word [edx + ecx*2 + 0xba]
mov ecx, esi
and ecx, 3
add ecx, 3
shr esi, 2
mov dword [esp + 4], esi
add eax, 0xfffffffe
jmp 0x4dd1ad
lea ecx, [edx + 7]
mov dword [esp + 8], ecx
cmp eax, ecx
jae 0x4dd193
sub ebx, 1
jb 0x4de017
movzx edi, byte [ebp]
mov ecx, eax
shl edi, cl
inc ebp
add esi, edi
add eax, 8
cmp eax, dword [esp + 8]
jb 0x4dd176
mov ecx, edx
shr esi, cl
mov ecx, esi
and ecx, 0x7f
add ecx, 0xb
shr esi, 7
mov dword [esp + 4], esi
sub eax, edx
add eax, 0xfffffff9
xor edx, edx
mov dword [esp + 0xc], eax
mov esi, dword [esp + 0x24]
lea eax, [ecx + esi]
cmp eax, dword [esp + 0x38]
mov edi, dword [esp + 0x34]
ja 0x4ddf0a
mov eax, esi
mov esi, dword [esp]
mov word [esi + eax*2 + 0xbc], dx
lea esi, [eax + 1]
dec ecx
jne 0x4dd1c6
mov eax, dword [esp]
mov dword [eax + 0xb4], esi
mov dword [esp + 0x18], ebx
mov dword [esp + 8], ebp
cmp esi, dword [esp + 0x38]
mov eax, dword [esp + 4]
mov edx, dword [esp + 0x20]
jb 0x4dd02d
jmp 0x4dd206
mov ebp, dword [esp + 8]
mov ebx, dword [esp + 0x18]
mov dword [esp + 4], eax
mov eax, dword [esp]
cmp word [eax + 0x2bc], 0
je 0x4dd78a
mov eax, dword [esp + 0x48]
mov ecx, dword [esp]
mov dword [ecx + 0xb8], eax
mov dword [ecx + 0x98], eax
mov dword [ecx + 0xa0], 0xa
push dword [esp + 0x30]
push dword [esp + 0x44]
mov edi, dword [esp + 0x4c]
push edi
push dword [esp + 0x5c]
mov esi, dword [esp + 0x4c]
push esi
push 1
call fcn.004e5d8c
add esp, 0x18
mov dword [esp + 0x28], eax
test eax, eax
je 0x4dd893
mov eax, dword [esp]
mov dword [eax + 4], 0x3f51
mov eax, dword [esp + 0x74]
mov dword [eax + 0x18], str.invalid_literal_lengths_set
jmp 0x4dd8f0
xor eax, eax
mov ebp, dword [esp + 4]
mov edi, dword [esp + 0xc]
mov ebx, esi
jmp 0x4dd812
mov eax, dword [esp]
mov dword [eax + 4], 0x3f40
jmp 0x4dddf2
xor eax, eax
mov ebx, dword [esp + 4]
mov edx, dword [esp + 0xc]
mov ecx, dword [esp]
mov dword [ecx + 4], 0x3f4f
test eax, eax
je 0x4de03c
mov ecx, dword [esp]
cmp dword [ecx + 0x14], 0
je 0x4de03c
cmp edx, 0x1f
ja 0x4dd2f5
mov edi, edx
sub ebp, 1
jb 0x4ddf87
mov ecx, dword [esp + 8]
movzx edx, byte [ecx]
inc ecx
mov dword [esp + 8], ecx
mov ecx, edi
shl edx, cl
add ebx, edx
lea esi, [edi + 8]
cmp edi, 0x18
mov edx, esi
jb 0x4dd2cc
jmp 0x4dd2f7
mov esi, edx
test al, 4
je 0x4de040
mov eax, dword [esp]
cmp ebx, dword [eax + 0x20]
je 0x4de040
mov dword [esp + 4], ebx
mov eax, dword [esp]
mov dword [eax + 4], 0x3f51
mov eax, dword [esp + 0x74]
mov dword [eax + 0x18], str.incorrect_length_check
mov dword [esp + 0xc], esi
jmp 0x4dddee
mov ecx, dword [esp]
mov dword [ecx + 4], 0x3f51
mov ecx, dword [esp + 0x74]
mov dword [ecx + 0x18], str.invalid_stored_block_lengths
mov dword [esp + 0xc], eax
jmp 0x4dddee
mov eax, dword [esp]
mov dword [eax + 4], 0x3f51
mov eax, dword [esp + 0x74]
mov dword [eax + 0x18], str.too_many_length_or_distance_symbols
jmp 0x4dddee
mov dword [esp + 0xc], ecx
mov dword [esp + 4], ebx
mov eax, dword [esp]
mov dword [eax + 4], 0x3f51
mov eax, dword [esp + 0x74]
mov dword [eax + 0x18], str.unknown_compression_method
jmp 0x4dd710
mov ebx, ebp
mov ebp, dword [esp + 8]
xor esi, esi
dec esi
shl esi, cl
not esi
and esi, eax
mov edi, dword [esp]
add esi, dword [edi + 0x8c]
shr eax, cl
mov dword [edi + 0x8c], esi
add dword [edi + 0x2390], ecx
sub edx, ecx
mov dword [esp + 8], ebp
mov ebp, ebx
mov dword [esp + 0xc], edx
mov edx, eax
mov eax, dword [esp + 0x1c]
mov dword [esp + 0x1c], eax
mov eax, dword [esp]
mov dword [eax + 0x2394], esi
mov dword [eax + 4], 0x3f4a
mov eax, dword [esp]
mov cl, byte [eax + 0xa4]
xor ebx, ebx
dec ebx
shl ebx, cl
mov edi, dword [eax + 0x9c]
not ebx
mov dword [esp + 4], edx
mov ecx, edx
and ecx, ebx
mov dl, byte [edi + ecx*4 + 1]
movzx eax, dl
mov esi, dword [esp + 0xc]
cmp esi, eax
jae 0x4dd454
mov dword [esp + 0x20], edi
mov ecx, esi
mov dword [esp + 0x18], ebp
mov esi, ebp
mov edi, dword [esp + 8]
sub esi, 1
jb 0x4ddf98
movzx eax, byte [edi]
shl eax, cl
inc edi
mov ebp, dword [esp + 4]
add ebp, eax
add ecx, 8
mov dword [esp + 4], ebp
and ebp, ebx
mov eax, dword [esp + 0x20]
mov dl, byte [eax + ebp*4 + 1]
movzx eax, dl
cmp ecx, eax
jb 0x4dd410
mov ebx, dword [esp + 0x20]
lea ebx, [ebx + ebp*4]
mov dword [esp + 8], edi
mov edi, dword [esp + 0x20]
mov ebp, esi
mov dword [esp + 0xc], ecx
jmp 0x4dd457
lea ebx, [edi + ecx*4]
movzx esi, word [ebx + 2]
movzx ecx, byte [ebx]
cmp ecx, 0x10
jae 0x4dd4f1
add ecx, eax
xor edx, edx
dec edx
mov ebx, edi
mov edi, edx
shl edi, cl
movzx edx, si
not edi
mov esi, dword [esp + 4]
mov dword [esp + 0x20], edi
and esi, edi
mov ecx, eax
shr esi, cl
lea edi, [ebx + edx*4]
movzx edx, byte [edi + esi*4 + 1]
lea ecx, [eax + edx]
mov ebx, dword [esp + 0xc]
cmp ecx, ebx
mov dword [esp + 0x18], ebp
jbe 0x4dd50d
mov dword [esp + 0x24], edi
mov esi, ebp
mov edi, dword [esp + 8]
sub esi, 1
jb 0x4ddf98
movzx edx, byte [edi]
mov ecx, ebx
shl edx, cl
inc edi
mov ebp, dword [esp + 4]
add ebp, edx
mov dword [esp + 4], ebp
and ebp, dword [esp + 0x20]
mov ecx, eax
shr ebp, cl
add ebx, 8
mov ecx, dword [esp + 0x24]
movzx edx, byte [ecx + ebp*4 + 1]
lea ecx, [eax + edx]
cmp ecx, ebx
ja 0x4dd4a6
mov ecx, dword [esp + 0x24]
lea ebp, [ecx + ebp*4]
mov dword [esp + 8], edi
mov dword [esp + 0x18], esi
mov dword [esp + 0xc], ebx
jmp 0x4dd510
mov word [esp + 0x24], si
mov eax, dword [esp]
mov eax, dword [eax + 0x2390]
mov ebx, dword [esp + 4]
mov edi, dword [esp + 0xc]
mov dword [esp + 0x20], ecx
jmp 0x4dd53b
lea ebp, [edi + esi*4]
movzx ecx, word [ebp + 2]
mov word [esp + 0x24], cx
mov ecx, eax
mov ebx, dword [esp + 4]
shr ebx, cl
mov cl, byte [ebp]
mov dword [esp + 0x20], ecx
mov edi, dword [esp + 0xc]
sub edi, eax
mov ecx, dword [esp]
add eax, dword [ecx + 0x2390]
mov ebp, dword [esp + 0x18]
movzx esi, dl
mov ecx, edx
shr ebx, cl
add eax, esi
mov ecx, dword [esp]
mov dword [ecx + 0x2390], eax
sub edi, esi
movzx edx, byte [esp + 0x20]
test dl, 0x40
jne 0x4dd5b8
movzx ecx, word [esp + 0x24]
mov eax, dword [esp]
mov dword [eax + 0x90], ecx
and edx, 0xf
mov dword [eax + 0x94], edx
mov dword [eax + 4], 0x3f4b
mov esi, edi
test edx, edx
je 0x4dd60e
mov eax, ebx
mov edi, edx
cmp esi, edx
jae 0x4dd5de
mov dword [esp + 0xc], esi
mov edx, esi
mov dword [esp + 0x18], ebp
mov ebx, ebp
mov ebp, dword [esp + 8]
sub ebx, 1
jb 0x4ddfe7
movzx esi, byte [ebp]
mov ecx, edx
shl esi, cl
inc ebp
add eax, esi
add edx, 8
mov ecx, edi
cmp edx, edi
jb 0x4dd599
jmp 0x4dd5e6
mov dword [esp + 4], ebx
mov eax, dword [esp]
mov dword [eax + 4], 0x3f51
mov eax, dword [esp + 0x74]
mov dword [eax + 0x18], str.invalid_distance_code
mov edx, dword [esp + 0x10]
mov dword [esp + 0xc], edi
jmp 0x4dddf2
mov edx, esi
mov ebx, ebp
mov ebp, dword [esp + 8]
xor esi, esi
dec esi
mov ecx, edi
shl esi, cl
not esi
and esi, eax
mov edi, dword [esp]
add dword [edi + 0x90], esi
shr eax, cl
add dword [edi + 0x2390], ecx
sub edx, ecx
mov dword [esp + 8], ebp
mov ebp, ebx
mov ebx, eax
mov esi, edx
mov eax, dword [esp + 0x1c]
mov ecx, dword [esp]
mov dword [ecx + 4], 0x3f4c
mov dword [esp + 0xc], esi
mov esi, dword [esp + 0x10]
test esi, esi
mov dword [esp + 0x1c], eax
je 0x4de1fe
mov dword [esp + 4], ebx
mov edx, eax
sub edx, esi
mov eax, dword [esp]
mov ecx, dword [eax + 0x90]
mov eax, ecx
sub eax, edx
jbe 0x4dd675
mov ecx, dword [esp]
cmp eax, dword [ecx + 0x30]
jbe 0x4dd695
mov ecx, dword [esp]
cmp dword [ecx + 0x238c], 0
je 0x4dd695
mov eax, dword [esp]
mov dword [eax + 4], 0x3f51
mov eax, dword [esp + 0x74]
mov dword [eax + 0x18], str.invalid_distance_too_far_back
jmp 0x4dddee
mov eax, dword [esp]
mov ebx, dword [eax + 0x8c]
cmp ebx, esi
cmovae ebx, esi
push esi
push ebx
push ecx
push dword [esp + 0x20]
call dword [0x7ecc90]
add esp, 0x10
jmp 0x4dd6f5
mov dword [esp + 0x18], ebp
mov ecx, dword [esp]
mov edx, dword [ecx + 0x34]
mov ecx, eax
sub ecx, edx
jbe 0x4dd6ba
mov esi, dword [esp + 0x10]
mov ebp, dword [esp + 0x14]
mov eax, dword [esp]
mov edx, dword [eax + 0x2c]
sub edx, ecx
add edx, dword [eax + 0x38]
jmp 0x4dd6cc
mov esi, dword [esp + 0x10]
mov ebp, dword [esp + 0x14]
sub edx, eax
mov ecx, dword [esp]
add edx, dword [ecx + 0x38]
mov ecx, eax
mov eax, dword [esp]
mov ebx, dword [eax + 0x8c]
cmp ecx, ebx
cmovb ebx, ecx
cmp ebx, esi
cmovae ebx, esi
mov ecx, ebp
lea eax, [ebp + esi]
push eax
push 0
push ebx
call fcn.004de2a8
add esp, 0xc
mov ebp, dword [esp + 0x18]
sub esi, ebx
mov ecx, dword [esp]
sub dword [ecx + 0x8c], ebx
mov dword [esp + 0x14], eax
jne 0x4dd710
mov ecx, dword [esp]
mov dword [ecx + 4], 0x3f48
mov edx, esi
jmp 0x4dddf2
mov eax, dword [esp]
mov dword [eax + 4], 0x3f44
jmp 0x4dd777
mov eax, dword [esp]
mov dword [eax + 0x98], 0x733e74
mov dword [eax + 0xa0], 9
mov dword [eax + 0x9c], 0x734674
mov dword [eax + 0xa4], 5
mov dword [eax + 4], 0x3f47
cmp dword [esp + 0x78], 6
je 0x4de289
shr ebx, 3
mov dword [esp + 4], ebx
add edx, 0xfffffffd
mov dword [esp + 0xc], edx
jmp 0x4dddee
mov eax, dword [esp]
mov dword [eax + 4], 0x3f51
mov eax, dword [esp + 0x74]
mov dword [eax + 0x18], str.invalid_code____missing_end_of_block
jmp 0x4dd8f0
mov ecx, dword [esp]
mov ecx, dword [ecx + 0x24]
test ecx, ecx
je 0x4dd7b5
mov dword [ecx + 0x30], 0xffffffff
test al, 1
mov dword [esp + 4], ebx
mov dword [esp + 0xc], edx
je 0x4dd7e1
mov eax, ebx
shl eax, 8
movzx eax, ax
mov ecx, ebx
shr ecx, 8
add ecx, eax
imul eax, ecx, 0xbdef7bdf
cmp eax, 0x8421085
jb 0x4dde7d
mov eax, dword [esp]
mov dword [eax + 4], 0x3f51
mov eax, dword [esp + 0x74]
mov dword [eax + 0x18], str.incorrect_header_check
jmp 0x4dddee
lea ecx, [edi + esi*4]
movzx ebx, word [ecx + 2]
mov ch, byte [ecx]
mov cl, al
mov ebp, dword [esp + 4]
shr ebp, cl
mov edi, dword [esp + 0xc]
sub edi, eax
movzx esi, dl
sub edi, esi
mov dword [esp + 0xc], edi
add eax, esi
mov esi, dword [esp]
mov dword [esi + 0x2390], eax
movzx eax, bx
mov dword [esi + 0x8c], eax
mov cl, dl
shr ebp, cl
test ch, ch
mov edx, ebp
je 0x4dd866
movzx ecx, ch
test cl, 0x20
mov ebp, dword [esp + 0x18]
jne 0x4dd87d
test cl, 0x40
jne 0x4dde40
and ecx, 0xf
mov eax, dword [esp]
mov dword [eax + 0x94], ecx
mov dword [eax + 4], 0x3f49
jmp 0x4dce13
mov dword [esp + 4], edx
mov eax, dword [esp]
mov dword [eax + 4], 0x3f4d
mov ebp, dword [esp + 0x18]
jmp 0x4dddee
mov dword [esp + 4], edx
mov eax, dword [esp]
mov dword [eax + 0x2390], 0xffffffff
jmp 0x4ddde7
mov ecx, dword [esp]
mov eax, dword [ecx + 0xb8]
mov dword [ecx + 0x9c], eax
mov dword [ecx + 0xa4], 9
mov eax, dword [ecx + 0xac]
lea eax, [esi + eax*2]
push dword [esp + 0x30]
push dword [esp + 0x58]
push edi
push dword [ecx + 0xb0]
push eax
push 2
call fcn.004e5d8c
add esp, 0x18
mov dword [esp + 0x28], eax
test eax, eax
je 0x4dde5b
mov eax, dword [esp]
mov dword [eax + 4], 0x3f51
mov eax, dword [esp + 0x74]
mov dword [eax + 0x18], str.invalid_distances_set
mov dword [esp + 8], ebp
mov ebp, ebx
jmp 0x4dddee
mov eax, dword [esp]
mov eax, dword [eax + 0x24]
test eax, eax
je 0x4dd90f
mov ecx, ebx
shr ecx, 8
and ecx, 1
mov dword [eax], ecx
bt ebx, 9
jae 0x4dd93d
mov eax, dword [esp]
test byte [eax + 0xc], 4
je 0x4dd93d
lea eax, [esp + 0x2c]
mov byte [eax], 8
mov byte [eax + 1], bh
push 2
push eax
mov edi, dword [esp + 8]
push dword [edi + 0x1c]
call fcn.004e023a
add esp, 0xc
mov dword [edi + 0x1c], eax
mov eax, dword [esp]
mov dword [eax + 4], 0x3f36
xor ecx, ecx
xor ebx, ebx
sub ebp, 1
jb 0x4ddf7a
mov edx, dword [esp + 8]
movzx eax, byte [edx]
inc edx
mov dword [esp + 8], edx
shl eax, cl
add ebx, eax
lea eax, [ecx + 8]
cmp ecx, 0x18
mov ecx, eax
jb 0x4dd94b
mov eax, dword [esp]
mov eax, dword [eax + 0x24]
test eax, eax
je 0x4dd97b
mov dword [eax + 4], ebx
mov eax, dword [esp]
test byte [eax + 0x15], 2
je 0x4dd9a8
mov eax, dword [esp]
test byte [eax + 0xc], 4
je 0x4dd9a8
lea eax, [esp + 0x2c]
mov dword [eax], ebx
push 4
push eax
mov edi, dword [esp + 8]
push dword [edi + 0x1c]
call fcn.004e023a
add esp, 0xc
mov dword [edi + 0x1c], eax
mov eax, dword [esp]
mov dword [eax + 4], 0x3f37
xor ecx, ecx
xor ebx, ebx
sub ebp, 1
jb 0x4ddf7a
mov edx, dword [esp + 8]
movzx eax, byte [edx]
inc edx
mov dword [esp + 8], edx
shl eax, cl
add ebx, eax
lea eax, [ecx + 8]
cmp ecx, 8
mov ecx, eax
jb 0x4dd9b6
mov eax, dword [esp]
mov eax, dword [eax + 0x24]
test eax, eax
je 0x4dd9f1
movzx ecx, bl
mov dword [eax + 8], ecx
mov ecx, ebx
shr ecx, 8
mov dword [eax + 0xc], ecx
mov eax, dword [esp]
test byte [eax + 0x15], 2
je 0x4dda1f
mov eax, dword [esp]
test byte [eax + 0xc], 4
je 0x4dda1f
lea eax, [esp + 0x2c]
mov word [eax], bx
push 2
push eax
mov edi, dword [esp + 8]
push dword [edi + 0x1c]
call fcn.004e023a
add esp, 0xc
mov dword [edi + 0x1c], eax
mov eax, dword [esp]
mov dword [eax + 4], 0x3f38
mov eax, dword [eax + 0x14]
xor ebx, ebx
bt eax, 0xa
mov ecx, 0
mov edx, 0
jb 0x4dda51
mov eax, dword [esp]
mov eax, dword [eax + 0x24]
test eax, eax
je 0x4ddac7
mov dword [eax + 0x10], 0
jmp 0x4ddac7
mov edi, ecx
sub ebp, 1
jb 0x4ddf87
mov ecx, dword [esp + 8]
movzx edx, byte [ecx]
inc ecx
mov dword [esp + 8], ecx
mov ecx, edi
shl edx, cl
add ebx, edx
lea ecx, [edi + 8]
cmp edi, 8
jb 0x4dda51
mov dword [esp + 0x18], ebp
mov ebp, ebx
movzx ecx, bx
mov edx, dword [esp]
mov dword [edx + 0x8c], ecx
mov edx, dword [edx + 0x24]
test edx, edx
je 0x4dda92
mov dword [edx + 0x14], ecx
xor edx, edx
bt eax, 9
jae 0x4ddac1
mov eax, dword [esp]
test byte [eax + 0xc], 4
je 0x4ddac1
lea eax, [esp + 0x2c]
mov word [eax], bp
push 2
push eax
mov edi, dword [esp + 8]
push dword [edi + 0x1c]
call fcn.004e023a
xor edx, edx
add esp, 0xc
mov dword [edi + 0x1c], eax
xor ecx, ecx
mov ebp, dword [esp + 0x18]
mov eax, dword [esp]
mov dword [eax + 4], 0x3f39
mov ebx, edx
mov dword [esp + 0xc], ecx
mov eax, dword [esp]
mov eax, dword [eax + 0x14]
bt eax, 0xa
jb 0x4ddaec
mov eax, dword [esp + 0x1c]
jmp 0x4ddb99
mov ecx, dword [esp]
mov ecx, dword [ecx + 0x8c]
cmp ecx, ebp
mov dword [esp + 0x18], ebp
cmovb ebp, ecx
test ebp, ebp
je 0x4ddb89
mov dword [esp + 4], ebx
mov edx, dword [esp]
mov edi, dword [edx + 0x24]
test edi, edi
je 0x4ddb46
mov edx, dword [edi + 0x10]
test edx, edx
je 0x4ddb46
mov esi, dword [edi + 0x14]
mov edi, dword [edi + 0x18]
sub esi, ecx
mov ecx, edi
sub ecx, esi
jbe 0x4ddb46
add edx, esi
add esi, ebp
cmp esi, edi
cmovbe ecx, ebp
push ecx
push dword [esp + 0xc]
push edx
call fcn.006fb4d0
add esp, 0xc
mov eax, dword [esp]
mov eax, dword [eax + 0x14]
bt eax, 9
jae 0x4ddb6c
mov eax, dword [esp]
test byte [eax + 0xc], 4
je 0x4ddb6c
push ebp
push dword [esp + 0xc]
mov esi, dword [esp + 8]
push dword [esi + 0x1c]
call fcn.004e023a
add esp, 0xc
mov dword [esi + 0x1c], eax
sub dword [esp + 0x18], ebp
add dword [esp + 8], ebp
mov eax, dword [esp]
mov ecx, dword [eax + 0x8c]
sub ecx, ebp
mov dword [eax + 0x8c], ecx
mov ebx, dword [esp + 4]
test ecx, ecx
mov eax, dword [esp + 0x1c]
mov ebp, dword [esp + 0x18]
jne 0x4de249
mov ecx, dword [esp]
mov dword [ecx + 0x8c], 0
mov dword [ecx + 4], 0x3f3a
mov ecx, dword [esp]
test byte [ecx + 0x15], 8
mov dword [esp + 4], ebx
jne 0x4ddbd8
mov ecx, eax
mov eax, dword [esp]
mov eax, dword [eax + 0x24]
test eax, eax
je 0x4ddbcd
mov dword [eax + 0x1c], 0
mov eax, ecx
mov edx, dword [esp + 0x10]
jmp 0x4ddc67
test ebp, ebp
mov dword [esp + 0x1c], eax
je 0x4ddfba
mov esi, ebp
xor ebp, ebp
mov eax, dword [esp + 8]
mov bl, byte [eax + ebp]
mov eax, dword [esp]
mov ecx, dword [eax + 0x24]
test ecx, ecx
je 0x4ddc1d
mov eax, dword [ecx + 0x1c]
test eax, eax
je 0x4ddc1d
mov edx, dword [esp]
mov edx, dword [edx + 0x8c]
cmp edx, dword [ecx + 0x20]
jae 0x4ddc1d
lea ecx, [edx + 1]
mov edi, dword [esp]
mov dword [edi + 0x8c], ecx
mov byte [eax + edx], bl
inc ebp
test bl, bl
je 0x4ddc26
cmp ebp, esi
jb 0x4ddbe8
mov eax, dword [esp]
test byte [eax + 0x15], 2
je 0x4ddc4f
mov eax, dword [esp]
test byte [eax + 0xc], 4
je 0x4ddc4f
push ebp
push dword [esp + 0xc]
mov edi, dword [esp + 8]
push dword [edi + 0x1c]
call fcn.004e023a
add esp, 0xc
mov dword [edi + 0x1c], eax
test bl, bl
jne 0x4de02b
sub esi, ebp
add dword [esp + 8], ebp
mov ebp, esi
mov edx, dword [esp + 0x10]
mov eax, dword [esp + 0x1c]
mov ecx, dword [esp]
mov dword [ecx + 0x8c], 0
mov dword [ecx + 4], 0x3f3b
mov ecx, dword [esp]
test byte [ecx + 0x15], 0x10
mov dword [esp + 0x1c], eax
jne 0x4ddca2
mov eax, dword [esp]
mov eax, dword [eax + 0x24]
test eax, eax
je 0x4ddd25
mov dword [eax + 0x24], 0
jmp 0x4ddd25
test ebp, ebp
je 0x4de202
mov esi, ebp
xor ebp, ebp
mov eax, dword [esp + 8]
mov bl, byte [eax + ebp]
mov eax, dword [esp]
mov ecx, dword [eax + 0x24]
test ecx, ecx
je 0x4ddce3
mov eax, dword [ecx + 0x24]
test eax, eax
je 0x4ddce3
mov edx, dword [esp]
mov edx, dword [edx + 0x8c]
cmp edx, dword [ecx + 0x28]
jae 0x4ddce3
lea ecx, [edx + 1]
mov edi, dword [esp]
mov dword [edi + 0x8c], ecx
mov byte [eax + edx], bl
inc ebp
test bl, bl
je 0x4ddcec
cmp ebp, esi
jb 0x4ddcae
mov eax, dword [esp]
test byte [eax + 0x15], 2
je 0x4ddd15
mov eax, dword [esp]
test byte [eax + 0xc], 4
je 0x4ddd15
push ebp
push dword [esp + 0xc]
mov edi, dword [esp + 8]
push dword [edi + 0x1c]
call fcn.004e023a
add esp, 0xc
mov dword [edi + 0x1c], eax
test bl, bl
jne 0x4de02b
sub esi, ebp
add dword [esp + 8], ebp
mov ebp, esi
mov ebx, dword [esp + 4]
mov eax, dword [esp]
mov dword [eax + 4], 0x3f3c
mov eax, dword [esp]
mov eax, dword [eax + 0x14]
bt eax, 9
jb 0x4ddd45
mov dword [esp + 4], ebx
jmp 0x4ddd9f
cmp dword [esp + 0xc], 0xf
ja 0x4ddd77
sub ebp, 1
jb 0x4ddfba
mov ecx, dword [esp + 8]
movzx edx, byte [ecx]
inc ecx
mov dword [esp + 8], ecx
mov ecx, dword [esp + 0xc]
shl edx, cl
add ebx, edx
lea edx, [ecx + 8]
cmp ecx, 8
mov dword [esp + 0xc], edx
jb 0x4ddd4c
jmp 0x4ddd7b
mov edx, dword [esp + 0xc]
mov ecx, dword [esp]
test byte [ecx + 0xc], 4
je 0x4ddd8f
mov ecx, dword [esp]
movzx ecx, word [ecx + 0x1c]
cmp ebx, ecx
jne 0x4dddfd
mov dword [esp + 4], 0
mov dword [esp + 0xc], 0
mov ecx, dword [esp]
mov ecx, dword [ecx + 0x24]
test ecx, ecx
je 0x4dddbb
mov edx, eax
shr edx, 9
and edx, 1
mov dword [ecx + 0x2c], edx
mov dword [ecx + 0x30], 1
test eax, eax
je 0x4ddde4
mov eax, dword [esp]
mov eax, dword [eax + 0xc]
and eax, 4
je 0x4ddde4
push dword [esp + 0x4c]
call dword [0x7eccac]
add esp, 4
mov ecx, dword [esp]
mov dword [ecx + 0x1c], eax
mov ecx, dword [esp + 0x74]
mov dword [ecx + 0x30], eax
mov eax, dword [esp]
mov dword [eax + 4], 0x3f3f
mov edx, dword [esp + 0x10]
mov eax, dword [esp]
mov eax, dword [eax + 4]
jmp 0x4dc68f
mov dword [esp + 0xc], edx
mov dword [esp + 4], ebx
mov eax, dword [esp]
mov dword [eax + 4], 0x3f51
mov eax, dword [esp + 0x74]
mov dword [eax + 0x18], str.header_crc_mismatch
jmp 0x4dddee
mov dword [esp + 4], ebx
mov dword [edx + 4], 0x3f51
mov eax, dword [esp + 0x74]
mov dword [eax + 0x18], str.incorrect_data_check
mov dword [esp + 0xc], esi
mov edx, dword [esp + 0x10]
mov dword [esp + 0x1c], edx
jmp 0x4dddf2
mov dword [esp + 4], edx
mov eax, dword [esp]
mov dword [eax + 4], 0x3f51
mov eax, dword [esp + 0x74]
mov dword [eax + 0x18], str.invalid_literal_length_code
jmp 0x4dddee
mov dword [esp + 0x28], 0
mov eax, dword [esp]
mov dword [eax + 4], 0x3f47
cmp dword [esp + 0x78], 6
jne 0x4dc849
jmp 0x4de294
mov eax, ebx
and eax, 0xf
cmp eax, 8
jne 0x4ddef0
shr ebx, 4
mov ecx, ebx
and ecx, 0xf
lea edx, [ecx + 8]
mov esi, dword [esp]
mov esi, dword [esi + 0x28]
test esi, esi
jne 0x4ddea4
mov esi, dword [esp]
mov dword [esi + 0x28], edx
mov esi, edx
cmp ecx, 7
ja 0x4ddf24
cmp edx, esi
ja 0x4ddf24
mov eax, 0x100
shl eax, cl
mov edx, dword [esp]
mov dword [edx + 0x18], eax
mov dword [edx + 0x14], 0
xor eax, eax
inc eax
mov dword [edx + 0x1c], eax
mov ecx, dword [esp + 0x74]
mov dword [ecx + 0x30], eax
xor eax, eax
bt dword [esp + 4], 0xd
setae al
lea eax, [eax*2 + 0x3f3d]
mov dword [edx + 4], eax
mov dword [esp + 4], 0
jmp 0x4dc73e
mov eax, dword [esp]
mov dword [eax + 4], 0x3f51
mov eax, dword [esp + 0x74]
mov dword [eax + 0x18], str.unknown_compression_method
jmp 0x4dddee
mov eax, dword [esp]
mov dword [eax + 4], 0x3f51
mov eax, dword [esp + 0x74]
mov dword [eax + 0x18], str.invalid_bit_length_repeat
jmp 0x4dd8f0
add dword [esp + 0xc], 0xfffffffc
mov ecx, dword [esp]
mov dword [ecx + 4], 0x3f51
mov ecx, dword [esp + 0x74]
mov dword [ecx + 0x18], str.invalid_window_size
mov dword [esp + 4], ebx
jmp 0x4dddee
mov dword [esp + 4], esi
mov ecx, dword [esp]
mov dword [ecx + 4], 0x3f51
mov ecx, dword [esp + 0x74]
mov dword [ecx + 0x18], str.invalid_bit_length_repeat
mov dword [esp + 8], ebp
mov ebp, ebx
jmp 0x4dd342
cmp dword [esi + 4], 0
jne 0x4dc5d2
jmp 0x4dc5f1
xor ebp, ebp
mov eax, dword [esp + 0x14]
mov edx, esi
jmp 0x4de05d
xor ebp, ebp
mov eax, dword [esp + 0x14]
mov edx, dword [esp + 0x10]
mov ecx, edi
jmp 0x4de05d
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0xc]
lea ecx, [ecx + eax*8]
add dword [esp + 8], eax
xor ebp, ebp
mov eax, dword [esp + 0x14]
mov edx, dword [esp + 0x10]
mov ebx, dword [esp + 4]
jmp 0x4de05d
xor ebp, ebp
mov ecx, dword [esp + 0xc]
jmp 0x4de055
xor ebp, ebp
jmp 0x4de055
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0xc]
lea ecx, [ecx + eax*8]
add dword [esp + 8], eax
jmp 0x4de01d
xor ebp, ebp
mov eax, dword [esp + 0x14]
mov ecx, edx
jmp 0x4de059
mov edi, dword [esp + 0x18]
mov ecx, dword [esp + 0xc]
lea ecx, [ecx + edi*8]
add dword [esp + 8], edi
jmp 0x4de007
mov edx, dword [esp + 0x18]
mov ecx, dword [esp + 0xc]
lea ecx, [ecx + edx*8]
add dword [esp + 8], edx
xor ebp, ebp
mov esi, dword [esp + 0x14]
mov edx, dword [esp + 0x10]
mov ebx, eax
mov eax, esi
jmp 0x4de05d
mov dword [esp + 8], ebp
mov ecx, eax
xor ebp, ebp
mov eax, dword [esp + 0x14]
mov edx, dword [esp + 0x10]
mov ebx, esi
jmp 0x4de05d
add dword [esp + 8], ebp
sub esi, ebp
mov ecx, dword [esp + 0xc]
mov ebp, esi
jmp 0x4ddfa9
mov ecx, edx
jmp 0x4de044
xor ecx, ecx
xor ebx, ebx
mov eax, dword [esp]
mov dword [eax + 4], 0x3f50
xor eax, eax
inc eax
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x14]
mov edx, dword [esp + 0x10]
mov edi, dword [esp + 0x74]
mov dword [esp + 0x14], eax
mov dword [edi + 0xc], eax
mov dword [edi + 0x10], edx
mov eax, dword [esp + 8]
mov dword [edi], eax
mov dword [edi + 4], ebp
mov esi, dword [esp]
mov dword [esi + 0x84], ebx
mov ebx, ecx
mov dword [esi + 0x88], ecx
mov eax, dword [esp + 0x1c]
mov ecx, eax
sub ecx, edx
mov dword [esp + 8], ecx
cmp dword [esi + 0x2c], 0
je 0x4de0c5
mov eax, dword [esi + 0xc]
and eax, 4
mov ecx, edi
mov edx, dword [esp + 0x14]
push eax
push dword [esp + 0xc]
call fcn.004de473
add esp, 8
test eax, eax
je 0x4de0f2
mov dword [esi + 4], 0x3f52
mov ebx, 0xfffffffc
jmp 0x4dc5d2
mov ecx, dword [esi + 4]
cmp eax, edx
mov dword [esp + 4], ecx
je 0x4de10f
cmp ecx, 0x3f50
jg 0x4de10f
cmp dword [esp + 0x78], 4
mov esi, dword [esp]
jne 0x4de097
mov ecx, dword [esp + 8]
cmp dword [esp + 4], 0x3f4d
jg 0x4de116
jmp 0x4de097
mov ebp, dword [edi + 4]
mov edx, dword [edi + 0x10]
mov eax, dword [esi + 4]
mov dword [esp + 4], eax
mov ebx, dword [esi + 0x88]
mov eax, dword [esp + 0x1c]
mov ecx, eax
sub ecx, edx
jmp 0x4de116
mov ecx, dword [esp + 8]
mov esi, dword [esp]
mov dword [esp + 0x1c], eax
mov dword [esp + 0x10], edx
mov eax, ebx
mov ebx, dword [esp + 0x5c]
mov edx, ebx
sub edx, ebp
add dword [edi + 8], edx
add dword [edi + 0x14], ecx
add dword [esi + 0x20], ecx
xor edx, edx
cmp dword [esi + 8], 0
setne dl
shl edx, 6
add edx, eax
xor ecx, ecx
mov eax, dword [esp + 4]
cmp eax, 0x3f3f
sete cl
shl ecx, 7
add ecx, edx
cmp eax, 0x3f47
sete dl
cmp eax, 0x3f42
sete al
or al, dl
movzx eax, al
shl eax, 8
add eax, ecx
xor ebx, ebp
mov ecx, dword [esp + 0x1c]
xor ecx, dword [esp + 0x10]
or ecx, ebx
mov dword [edi + 0x2c], eax
setne al
cmp dword [esp + 0x78], 4
setne cl
test cl, al
jne 0x4de1dc
mov ebx, dword [esp + 0x28]
test ebx, ebx
jne 0x4dc5d2
mov ebx, 0xfffffffb
cmp dword [esp + 0x78], 4
jne 0x4dc5d2
mov eax, dword [esp]
cmp dword [eax + 0x2c], 0
jne 0x4dc5d2
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 8]
sub eax, ecx
mov esi, dword [edi + 0x1c]
cmp dword [esi + 0x14], 0
je 0x4de1e5
add esi, 0x40
push 0
push ecx
push eax
push esi
call dword [0x7ecca0]
add esp, 0x10
jmp 0x4dc5d2
mov ebx, dword [esp + 0x28]
jmp 0x4dc5d2
push ecx
push eax
push dword [esi + 0x1c]
call dword [0x7ecc88]
add esp, 0xc
mov dword [esi + 0x1c], eax
mov dword [edi + 0x30], eax
jmp 0x4dc5d2
xor edx, edx
jmp 0x4de275
xor ebp, ebp
mov ecx, dword [esp + 0xc]
mov ebx, dword [esp + 4]
mov eax, dword [esp + 0x14]
jmp 0x4de05d
mov ecx, dword [esp + 0x74]
mov eax, dword [esp + 0x14]
mov dword [ecx + 0xc], eax
mov eax, dword [esp + 0x10]
mov dword [ecx + 0x10], eax
mov eax, dword [esp + 8]
mov dword [ecx], eax
mov dword [ecx + 4], ebp
mov eax, dword [esp]
mov dword [eax + 0x84], ebx
mov dword [eax + 0x88], edx
mov ebx, 2
jmp 0x4dc5d2
mov dword [esp + 0x1c], eax
jmp 0x4ddfbc
xor eax, eax
inc eax
mov dword [esp + 0x28], eax
jmp 0x4de271
mov dword [esp + 0x28], 0xfffffffd
jmp 0x4de271
mov ebx, 0xfffffffe
jmp 0x4dc5d2
xor edx, edx
mov ebx, dword [esp + 4]
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0xc]
jmp 0x4de05d
xor ecx, ecx
jmp 0x4de055
shr ebx, 3
add edx, 0xfffffffd
jmp 0x4ddfdf
mov dword [esp + 8], ebp
mov ebp, ebx
mov eax, dword [esp + 0x14]
mov edx, dword [esp + 0x10]
mov ebx, dword [esp + 4]
jmp 0x4de279