Function at 0x4abe40
Capabilities:
Compress data via zlib inflate or deflate

Disassembly:
push ebp
mov ebp, esp
push edi
push esi
push ebx
sub esp, 0x5c
mov eax, dword [ebp + 8]
test eax, eax
je case.default.0x4abeb6
mov eax, dword [ebp + 8]
mov eax, dword [eax + 0x1c]
mov dword [ebp - 0x4c], eax
test eax, eax
je case.default.0x4abeb6
mov edx, dword [ebp + 8]
mov ecx, dword [edx + 0xc]
test ecx, ecx
je case.default.0x4abeb6
mov ebx, dword [edx]
test ebx, ebx
je 0x4abec0
mov eax, dword [ebp + 8]
mov edx, dword [eax + 4]
mov esi, dword [ebp - 0x4c]
mov eax, dword [esi]
cmp eax, 0xb
je 0x4abed4
mov dword [ebp - 0x18], ecx
mov ecx, dword [ebp + 8]
mov dword [ebp - 0x1c], edx
mov edx, dword [ebp - 0x4c]
mov ecx, dword [ecx + 0x10]
mov esi, dword [ebp - 0x1c]
mov dword [ebp - 0x20], ecx
mov edx, dword [edx + 0x38]
mov ecx, dword [ebp - 0x4c]
mov dword [ebp - 0x24], edx
mov edx, dword [ebp - 0x20]
mov dword [ebp - 0x14], ebx
mov edi, dword [ecx + 0x3c]
mov dword [ebp - 0x28], esi
mov dword [ebp - 0x2c], edx
mov dword [ebp - 0x30], 0
cmp eax, 0x1c
ja case.default.0x4abeb6
jmp dword [eax*4 + 0x67042c]
mov edx, dword [edx + 4]
test edx, edx
je 0x4abe73
mov eax, 0xfffffffe
lea esp, [ebp - 0xc]
pop ebx
pop esi
pop edi
pop ebp
ret
mov al, 0xc
mov dword [esi], 0xc
jmp 0x4abe7d
cmp edi, 0xf
ja 0x4abf17
mov ebx, dword [ebp - 0x1c]
test ebx, ebx
je 0x4ac093
mov ecx, dword [ebp - 0x1c]
xor eax, eax
dec ecx
mov edx, dword [ebp - 0x24]
mov dword [ebp - 0x1c], ecx
mov ecx, dword [ebp - 0x14]
mov al, byte [ecx]
mov ecx, edi
shl eax, cl
add edx, eax
mov eax, dword [ebp - 0x14]
inc eax
mov dword [ebp - 0x24], edx
mov dword [ebp - 0x14], eax
add edi, 8
cmp edi, 0xf
jbe 0x4abee3
mov edx, dword [ebp - 0x4c]
mov eax, dword [ebp - 0x24]
cmp al, 8
mov dword [edx + 0x10], eax
je 0x4ad3e3
mov ecx, dword [ebp + 8]
mov dword [ecx + 0x18], str.unknown_compression_method
jmp 0x4acde0
cmp edi, 0xd
ja 0x4abf6d
mov esi, dword [ebp - 0x1c]
test esi, esi
je 0x4ac093
mov ebx, dword [ebp - 0x1c]
mov esi, dword [ebp - 0x14]
dec ebx
xor eax, eax
mov dword [ebp - 0x1c], ebx
mov ecx, edi
mov al, byte [esi]
inc esi
shl eax, cl
mov ecx, dword [ebp - 0x24]
mov dword [ebp - 0x14], esi
add ecx, eax
add edi, 8
mov dword [ebp - 0x24], ecx
cmp edi, 0xd
jbe 0x4abf3c
mov edx, dword [ebp - 0x24]
mov eax, dword [ebp - 0x24]
shr edx, 5
mov esi, dword [ebp - 0x4c]
mov dword [ebp - 0x24], edx
and eax, 0x1f
mov edx, dword [ebp - 0x24]
mov ebx, dword [ebp - 0x24]
and edx, 0x1f
add eax, 0x101
shr ebx, 5
sub edi, 0xe
mov dword [ebp - 0x24], ebx
lea ecx, [edx + 1]
mov edx, dword [ebp - 0x24]
mov dword [esi + 0x60], eax
and edx, 0xf
mov dword [esi + 0x64], ecx
lea ebx, [edx + 4]
mov edx, dword [ebp - 0x24]
shr edx, 4
mov dword [esi + 0x5c], ebx
mov dword [ebp - 0x24], edx
cmp eax, 0x11e
ja 0x4abfc4
cmp ecx, 0x1e
jbe 0x4ad407
mov eax, dword [ebp + 8]
mov edx, dword [ebp - 0x4c]
mov dword [eax + 0x18], str.too_many_length_or_distance_symbols
jmp 0x4acde0
cmp edi, 0x1f
ja 0x4ac00f
mov eax, dword [ebp - 0x1c]
test eax, eax
je 0x4ac093
mov eax, dword [ebp - 0x1c]
mov ecx, dword [ebp - 0x14]
dec eax
mov esi, dword [ebp - 0x24]
mov dword [ebp - 0x1c], eax
xor eax, eax
mov al, byte [ecx]
mov ecx, edi
mov ebx, dword [ebp - 0x14]
add edi, 8
shl eax, cl
add esi, eax
inc ebx
mov dword [ebp - 0x24], esi
mov dword [ebp - 0x14], ebx
cmp edi, 0x1f
jbe 0x4abfdb
mov edx, dword [ebp - 0x24]
mov eax, dword [ebp - 0x24]
shr edx, 8
mov ecx, dword [ebp - 0x24]
and edx, 0xff00
mov esi, dword [ebp - 0x4c]
shr eax, 0x18
xor edi, edi
add eax, edx
mov edx, dword [ebp - 0x24]
and edx, 0xff00
mov dword [esi], 0xa
shl ecx, 0x18
shl edx, 8
mov dword [ebp - 0x24], ecx
add eax, edx
mov edx, dword [ebp - 0x24]
add eax, edx
mov edx, dword [ebp + 8]
mov dword [esi + 0x18], eax
mov dword [ebp - 0x24], 0
mov dword [edx + 0x30], eax
mov ecx, dword [ebp - 0x4c]
mov eax, dword [ecx + 0xc]
test eax, eax
je 0x4ad66c
push eax
push 0
push 0
push 0
call fcn.004b0f80
mov esi, dword [ebp - 0x4c]
mov edx, dword [ebp + 8]
add esp, 0x10
mov dword [esi + 0x18], eax
mov dword [esi], 0xb
mov dword [edx + 0x30], eax
cmp dword [ebp + 0xc], 5
jne case.0x4abeb6.12
mov eax, dword [ebp + 8]
mov edx, dword [ebp - 0x18]
mov esi, dword [ebp - 0x14]
mov ecx, dword [ebp - 0x20]
mov dword [eax + 0xc], edx
mov dword [eax], esi
mov edx, dword [ebp - 0x1c]
mov esi, dword [ebp - 0x4c]
mov dword [eax + 0x10], ecx
mov dword [eax + 4], edx
mov ecx, dword [ebp - 0x24]
mov dword [esi + 0x3c], edi
mov edi, dword [esi + 0x28]
mov dword [esi + 0x38], ecx
test edi, edi
jne 0x4ac0d1
cmp dword [esi], 0x17
ja 0x4ad021
mov eax, dword [eax + 0x10]
cmp eax, dword [ebp - 0x2c]
je 0x4ac0ea
mov edx, dword [ebp - 0x2c]
mov eax, dword [ebp + 8]
call fcn.004abd00
test eax, eax
jne 0x4ac98f
mov edx, dword [ebp + 8]
mov eax, dword [edx + 0x10]
mov ecx, dword [ebp + 8]
mov ebx, dword [ebp - 0x28]
mov esi, dword [ebp + 8]
mov ecx, dword [ecx + 4]
sub ebx, ecx
mov ecx, dword [ebp - 0x2c]
mov dword [ebp - 0x28], ebx
sub ecx, eax
mov edx, dword [esi + 8]
mov eax, dword [ebp - 0x28]
add edx, eax
mov dword [ebp - 0x2c], ecx
mov dword [esi + 8], edx
mov eax, dword [esi + 0x14]
mov edx, dword [ebp - 0x2c]
mov ecx, dword [ebp - 0x4c]
add eax, edx
mov dword [esi + 0x14], eax
mov eax, dword [ecx + 0x1c]
add eax, edx
mov dword [ecx + 0x1c], eax
mov eax, dword [ecx + 8]
test eax, eax
mov eax, dword [ebp - 0x2c]
setne dl
test eax, eax
setne al
and eax, 0xff
test eax, edx
je 0x4ac16e
mov eax, dword [ecx + 0x10]
test eax, eax
je 0x4ad068
push edi
mov ebx, dword [ebp - 0x2c]
push ebx
mov eax, dword [esi + 0xc]
mov edx, dword [ebp - 0x2c]
sub eax, edx
push eax
mov eax, dword [ecx + 0x18]
push eax
call fcn.004adc40
mov edx, dword [ebp - 0x4c]
mov ecx, dword [ebp + 8]
add esp, 0x10
mov dword [edx + 0x18], eax
mov dword [ecx + 0x30], eax
mov esi, dword [ebp - 0x4c]
mov edx, dword [esi + 4]
mov eax, dword [esi + 0x3c]
test edx, edx
je 0x4ac17e
add eax, 0x40
mov edx, dword [ebp - 0x4c]
cmp dword [edx], 0xb
je 0x4ad046
mov ecx, dword [ebp + 8]
mov esi, dword [ebp - 0x28]
or esi, dword [ebp - 0x2c]
mov dword [ecx + 0x2c], eax
sete dl
cmp dword [ebp + 0xc], 4
sete al
or eax, edx
test al, 1
je 0x4ac1b4
mov eax, dword [ebp - 0x30]
test eax, eax
jne 0x4ac1b4
mov dword [ebp - 0x30], 0xfffffffb
mov eax, dword [ebp - 0x30]
lea esp, [ebp - 0xc]
pop ebx
pop esi
pop edi
pop ebp
ret
mov ecx, dword [ebp - 0x4c]
mov edx, dword [ecx + 0x20]
test edx, edx
je 0x4ac1d4
mov eax, dword [ebp - 0x24]
shr eax, 8
and eax, 1
mov dword [edx], eax
mov esi, dword [ebp - 0x4c]
test byte [esi + 0x11], 2
jne 0x4ad513
mov ecx, dword [ebp - 0x4c]
mov dword [ebp - 0x24], 0
xor edi, edi
mov dword [ecx], 2
mov ebx, dword [ebp - 0x1c]
test ebx, ebx
je 0x4ac093
mov ecx, dword [ebp - 0x1c]
mov esi, dword [ebp - 0x14]
dec ecx
xor eax, eax
mov dword [ebp - 0x1c], ecx
mov ecx, edi
mov al, byte [esi]
mov edx, dword [ebp - 0x24]
shl eax, cl
add edx, eax
inc esi
mov dword [ebp - 0x24], edx
mov dword [ebp - 0x14], esi
add edi, 8
cmp edi, 0x1f
jbe 0x4ac1f3
mov esi, dword [ebp - 0x4c]
mov eax, dword [esi + 0x20]
test eax, eax
je 0x4ac234
mov edx, dword [ebp - 0x24]
mov dword [eax + 4], edx
mov ecx, dword [ebp - 0x4c]
test byte [ecx + 0x11], 2
jne 0x4ad34f
mov esi, dword [ebp - 0x4c]
mov dword [ebp - 0x24], 0
xor edi, edi
mov dword [esi], 3
mov esi, dword [ebp - 0x1c]
test esi, esi
je 0x4ac093
mov ebx, dword [ebp - 0x1c]
mov edx, dword [ebp - 0x14]
dec ebx
xor eax, eax
mov dword [ebp - 0x1c], ebx
mov ecx, edi
mov al, byte [edx]
inc edx
shl eax, cl
mov ecx, dword [ebp - 0x24]
mov dword [ebp - 0x14], edx
add ecx, eax
add edi, 8
mov dword [ebp - 0x24], ecx
cmp edi, 0xf
jbe 0x4ac253
mov esi, dword [ebp - 0x4c]
mov edx, dword [esi + 0x20]
test edx, edx
je 0x4ac29e
movzx eax, byte [ebp - 0x24]
mov dword [edx + 8], eax
mov eax, dword [ebp - 0x24]
shr eax, 8
mov dword [edx + 0xc], eax
mov eax, dword [ebp - 0x4c]
mov edx, dword [eax + 0x10]
test dh, 2
jne 0x4ad2b5
mov eax, dword [ebp - 0x4c]
mov dword [ebp - 0x24], 0
xor edi, edi
mov dword [eax], 4
test dh, 4
je 0x4ad227
cmp edi, 0xf
ja 0x4ac2fe
mov esi, dword [ebp - 0x1c]
test esi, esi
je 0x4ac093
mov ebx, dword [ebp - 0x1c]
mov esi, dword [ebp - 0x14]
dec ebx
xor eax, eax
mov dword [ebp - 0x1c], ebx
mov ecx, edi
mov al, byte [esi]
inc esi
shl eax, cl
mov ecx, dword [ebp - 0x24]
mov dword [ebp - 0x14], esi
add ecx, eax
add edi, 8
mov dword [ebp - 0x24], ecx
cmp edi, 0xf
jbe 0x4ac2cd
mov ecx, dword [ebp - 0x4c]
mov eax, dword [ebp - 0x24]
mov dword [ecx + 0x40], eax
mov eax, dword [ecx + 0x20]
test eax, eax
je 0x4ac317
mov edx, dword [ebp - 0x24]
mov dword [eax + 0x14], edx
mov edx, dword [ecx + 0x10]
test dh, 2
jne 0x4ad316
mov dword [ebp - 0x24], 0
xor edi, edi
mov eax, dword [ebp - 0x4c]
mov dword [eax], 5
test dh, 4
je 0x4ac3c5
mov esi, dword [ebp - 0x4c]
mov ebx, dword [esi + 0x40]
mov eax, ebx
cmp ebx, dword [ebp - 0x1c]
jbe 0x4ac34b
mov ebx, dword [ebp - 0x1c]
test ebx, ebx
je 0x4ac3b7
mov esi, dword [ebp - 0x4c]
mov ecx, dword [esi + 0x20]
test ecx, ecx
je 0x4ac393
mov esi, dword [ecx + 0x10]
mov dword [ebp - 0x34], esi
test esi, esi
je 0x4ac393
mov esi, dword [ecx + 0x14]
mov edx, dword [ecx + 0x18]
sub esi, eax
mov ecx, ebx
lea eax, [esi + ebx]
cmp eax, edx
jbe 0x4ac378
mov ecx, edx
sub ecx, esi
mov edx, dword [ebp - 0x34]
lea eax, [esi + edx]
push esi
push ecx
mov edx, dword [ebp - 0x14]
push edx
push eax
call fcn.004c86b0
mov ecx, dword [ebp - 0x4c]
add esp, 0x10
mov edx, dword [ecx + 0x10]
and dh, 2
jne 0x4ad3c6
mov edx, dword [ebp - 0x14]
mov ecx, dword [ebp - 0x1c]
add edx, ebx
sub ecx, ebx
mov dword [ebp - 0x14], edx
mov edx, dword [ebp - 0x4c]
mov dword [ebp - 0x1c], ecx
mov eax, dword [edx + 0x40]
sub eax, ebx
mov dword [edx + 0x40], eax
test eax, eax
jne 0x4ac093
mov ecx, dword [ebp - 0x4c]
mov edx, dword [ecx + 0x10]
mov esi, dword [ebp - 0x4c]
mov dword [esi + 0x40], 0
mov dword [esi], 6
test dh, 8
je 0x4ad04e
mov eax, dword [ebp - 0x1c]
test eax, eax
je 0x4ac093
xor ebx, ebx
nop
lea esi, [esi]
mov ecx, dword [ebp - 0x14]
mov dl, byte [ebx + ecx]
inc ebx
and edx, 0xff
mov esi, edx
mov edx, dword [ebp - 0x4c]
mov eax, dword [edx + 0x20]
test eax, eax
je 0x4ac430
mov edx, dword [eax + 0x1c]
test edx, edx
je 0x4ac430
mov ecx, dword [ebp - 0x4c]
mov ecx, dword [ecx + 0x40]
mov dword [ebp - 0x64], ecx
cmp ecx, dword [eax + 0x20]
jae 0x4ac430
mov eax, esi
mov byte [ecx + edx], al
mov edx, dword [ebp - 0x4c]
mov eax, dword [edx + 0x40]
inc eax
mov dword [edx + 0x40], eax
lea esi, [esi]
test esi, esi
setne dl
cmp ebx, dword [ebp - 0x1c]
setb al
and eax, 0xff
test eax, edx
jne 0x4ac3f0
mov ecx, dword [ebp - 0x4c]
test byte [ecx + 0x11], 2
jne 0x4ad27b
mov eax, dword [ebp - 0x1c]
mov ecx, dword [ebp - 0x14]
sub eax, ebx
add ecx, ebx
mov dword [ebp - 0x1c], eax
mov dword [ebp - 0x14], ecx
test esi, esi
jne 0x4ac093
mov esi, dword [ebp - 0x4c]
mov edx, dword [esi + 0x10]
mov eax, dword [ebp - 0x4c]
mov dword [eax + 0x40], 0
mov dword [eax], 7
test dh, 0x10
je 0x4ad02c
mov edx, dword [ebp - 0x1c]
test edx, edx
je 0x4ac093
xor ebx, ebx
mov edx, dword [ebp - 0x14]
mov ecx, dword [ebp - 0x4c]
mov al, byte [ebx + edx]
inc ebx
and eax, 0xff
mov esi, eax
mov eax, dword [ecx + 0x20]
test eax, eax
je 0x4ac4d0
mov edx, dword [eax + 0x24]
test edx, edx
je 0x4ac4d0
mov ecx, dword [ecx + 0x40]
mov dword [ebp - 0x64], ecx
cmp ecx, dword [eax + 0x28]
jae 0x4ac4d0
mov eax, esi
mov byte [ecx + edx], al
mov edx, dword [ebp - 0x4c]
mov eax, dword [edx + 0x40]
inc eax
mov dword [edx + 0x40], eax
nop
test esi, esi
setne dl
cmp ebx, dword [ebp - 0x1c]
setb al
and eax, 0xff
test eax, edx
jne 0x4ac495
mov ecx, dword [ebp - 0x4c]
test byte [ecx + 0x11], 2
jne 0x4ad253
mov eax, dword [ebp - 0x1c]
sub eax, ebx
mov dword [ebp - 0x1c], eax
mov eax, dword [ebp - 0x14]
add eax, ebx
test esi, esi
mov dword [ebp - 0x14], eax
jne 0x4ac093
mov esi, dword [ebp - 0x4c]
mov edx, dword [esi + 0x10]
mov eax, dword [ebp - 0x4c]
mov dword [eax], 8
test dh, 2
je 0x4acfdc
cmp edi, 0xf
ja 0x4ac557
mov esi, dword [ebp - 0x1c]
test esi, esi
je 0x4ac093
mov ebx, dword [ebp - 0x1c]
mov esi, dword [ebp - 0x14]
dec ebx
xor eax, eax
mov dword [ebp - 0x1c], ebx
mov ecx, edi
mov al, byte [esi]
inc esi
shl eax, cl
mov ecx, dword [ebp - 0x24]
mov dword [ebp - 0x14], esi
add ecx, eax
add edi, 8
mov dword [ebp - 0x24], ecx
cmp edi, 0xf
jbe 0x4ac526
mov esi, dword [ebp - 0x4c]
mov eax, dword [esi + 0x18]
and eax, 0xffff
cmp eax, dword [ebp - 0x24]
je 0x4acfd3
mov eax, dword [ebp + 8]
mov dword [eax + 0x18], str.header_crc_mismatch
mov eax, 0x1b
mov dword [esi], 0x1b
jmp switch.0x004abeb6
mov ecx, dword [ebp - 0x4c]
mov eax, dword [ecx + 4]
test eax, eax
je 0x4acf9c
mov ecx, edi
mov esi, dword [ebp - 0x4c]
and ecx, 7
and edi, 0xfffffff8
shr dword [ebp - 0x24], cl
mov eax, 0x18
mov dword [esi], 0x18
jmp switch.0x004abeb6
mov ecx, dword [ebp - 0x4c]
mov ebx, dword [ecx + 0x48]
test ebx, ebx
je 0x4ac60e
cmp ebx, edi
jbe 0x4ac5ef
mov esi, dword [ebp - 0x1c]
test esi, esi
je 0x4ac093
mov ecx, dword [ebp - 0x1c]
mov esi, dword [ebp - 0x14]
dec ecx
xor eax, eax
mov dword [ebp - 0x1c], ecx
mov ecx, edi
mov al, byte [esi]
mov edx, dword [ebp - 0x24]
shl eax, cl
add edx, eax
inc esi
mov dword [ebp - 0x24], edx
mov dword [ebp - 0x14], esi
add edi, 8
cmp ebx, edi
ja 0x4ac5bf
mov cl, bl
mov eax, 1
shl eax, cl
mov esi, dword [ebp - 0x24]
dec eax
and eax, esi
mov esi, dword [ebp - 0x4c]
shr dword [ebp - 0x24], cl
mov edx, dword [esi + 0x40]
sub edi, ebx
add edx, eax
mov dword [esi + 0x40], edx
mov eax, dword [ebp - 0x4c]
mov dword [eax], 0x14
mov esi, dword [ebp - 0x4c]
mov edx, dword [ebp - 0x4c]
mov eax, 1
mov ecx, dword [esi + 0x58]
mov edx, dword [edx + 0x50]
shl eax, cl
mov dword [ebp - 0x54], edx
lea edx, [eax - 1]
jmp 0x4ac65e
mov esi, dword [ebp - 0x1c]
test esi, esi
je 0x4ac093
mov ebx, dword [ebp - 0x1c]
mov esi, dword [ebp - 0x14]
dec ebx
xor eax, eax
mov dword [ebp - 0x1c], ebx
mov ecx, edi
mov al, byte [esi]
inc esi
shl eax, cl
mov ecx, dword [ebp - 0x24]
mov dword [ebp - 0x14], esi
add ecx, eax
add edi, 8
mov dword [ebp - 0x24], ecx
mov eax, dword [ebp - 0x24]
mov ecx, dword [ebp - 0x54]
and eax, edx
mov ebx, dword [ecx + eax*4]
movzx eax, bh
cmp eax, edi
ja 0x4ac632
test bl, 0xf0
jne 0x4ac6fb
mov eax, ebx
mov dl, bl
shr eax, 0x10
and edx, 0xff
mov esi, ebx
mov dword [ebp - 0x44], eax
mov dword [ebp - 0x48], edx
jmp 0x4ac6bc
mov eax, dword [ebp - 0x1c]
test eax, eax
je 0x4ac093
mov ebx, dword [ebp - 0x1c]
mov edx, dword [ebp - 0x14]
dec ebx
xor eax, eax
mov dword [ebp - 0x1c], ebx
mov ecx, edi
mov al, byte [edx]
inc edx
shl eax, cl
mov ecx, dword [ebp - 0x24]
mov dword [ebp - 0x14], edx
add ecx, eax
add edi, 8
mov dword [ebp - 0x24], ecx
mov eax, esi
mov edx, esi
movzx ecx, ah
mov eax, dword [ebp - 0x48]
mov ebx, dword [ebp - 0x24]
add ecx, eax
mov eax, 1
shl eax, cl
dec eax
and eax, ebx
movzx ecx, dh
shr eax, cl
mov ecx, dword [ebp - 0x44]
add eax, ecx
mov ecx, dword [ebp - 0x54]
mov ebx, dword [ecx + eax*4]
movzx eax, dh
movzx edx, bh
add eax, edx
cmp eax, edi
ja 0x4ac690
mov eax, esi
movzx ecx, ah
shr dword [ebp - 0x24], cl
sub edi, ecx
xor eax, eax
movzx ecx, bh
mov al, bl
sub edi, ecx
shr dword [ebp - 0x24], cl
test al, 0x40
je 0x4ad2fa
mov edx, dword [ebp + 8]
mov ecx, dword [ebp - 0x4c]
mov dword [edx + 0x18], 0x6702d4
jmp 0x4acc90
mov eax, dword [ebp - 0x4c]
mov dword [eax], 0x16
mov eax, dword [ebp - 0x20]
test eax, eax
je 0x4ac093
mov edx, dword [ebp - 0x4c]
mov eax, dword [ebp - 0x20]
mov ebx, dword [ebp - 0x2c]
sub ebx, eax
mov eax, dword [edx + 0x44]
cmp eax, ebx
jbe 0x4ad241
sub eax, ebx
mov ebx, eax
mov eax, dword [edx + 0x30]
cmp eax, ebx
jae 0x4ad2eb
mov ecx, edx
sub ebx, eax
mov edx, dword [edx + 0x28]
sub edx, ebx
mov eax, dword [ecx + 0x34]
mov ecx, dword [ebp - 0x4c]
add edx, eax
mov eax, dword [ecx + 0x40]
cmp eax, ebx
jae 0x4ac774
mov ebx, eax
cmp ebx, dword [ebp - 0x20]
jbe 0x4ac77c
mov ebx, dword [ebp - 0x20]
mov ecx, dword [ebp - 0x20]
sub eax, ebx
sub ecx, ebx
mov dword [ebp - 0x20], ecx
mov ecx, dword [ebp - 0x4c]
mov dword [ecx + 0x40], eax
lea esi, [esi]
mov esi, dword [ebp - 0x18]
mov al, byte [edx]
inc edx
mov byte [esi], al
inc esi
dec ebx
mov dword [ebp - 0x18], esi
jne 0x4ac790
mov eax, dword [ebp - 0x4c]
mov edx, dword [eax + 0x40]
test edx, edx
jne 0x4ad662
mov dword [eax], 0x12
mov eax, 0x12
jmp switch.0x004abeb6
mov edx, dword [ebp - 0x4c]
mov dword [edx + 0x68], 0
mov dword [edx], 0x11
mov ecx, dword [ebp - 0x4c]
mov esi, dword [ebp - 0x4c]
mov edx, dword [ebp - 0x4c]
mov ecx, dword [ecx + 0x60]
mov esi, dword [esi + 0x64]
mov eax, ecx
mov edx, dword [edx + 0x68]
add eax, esi
mov dword [ebp - 0x58], ecx
mov dword [ebp - 0x5c], esi
mov dword [ebp - 0x60], edx
cmp edx, eax
jae 0x4ac8e6
mov ecx, dword [ebp - 0x4c]
mov esi, dword [ebp - 0x4c]
mov eax, 1
mov ecx, dword [ecx + 0x4c]
mov dword [ebp - 0x50], ecx
mov ecx, dword [esi + 0x54]
shl eax, cl
dec eax
mov dword [ebp - 0x38], eax
mov eax, dword [ebp - 0x38]
mov esi, dword [ebp - 0x24]
and eax, esi
mov edx, dword [ebp - 0x50]
mov ebx, dword [edx + eax*4]
movzx eax, bh
cmp eax, edi
jbe 0x4ac867
mov ebx, dword [ebp - 0x1c]
test ebx, ebx
je 0x4ac093
mov ecx, dword [ebp - 0x1c]
xor eax, eax
dec ecx
mov edx, dword [ebp - 0x24]
mov dword [ebp - 0x1c], ecx
mov ecx, dword [ebp - 0x14]
mov al, byte [ecx]
mov ecx, edi
shl eax, cl
add edx, eax
mov eax, dword [ebp - 0x14]
inc eax
mov dword [ebp - 0x24], edx
mov dword [ebp - 0x14], eax
add edi, 8
mov eax, dword [ebp - 0x38]
mov esi, dword [ebp - 0x24]
mov edx, dword [ebp - 0x50]
and eax, esi
mov ebx, dword [edx + eax*4]
movzx eax, bh
cmp eax, edi
ja 0x4ac823
mov eax, ebx
shr eax, 0x10
cmp ax, 0xf
ja 0x4ad08a
movzx eax, bh
cmp eax, edi
jbe 0x4ac8b3
lea esi, [esi]
mov esi, dword [ebp - 0x1c]
test esi, esi
je 0x4ac093
mov ecx, dword [ebp - 0x1c]
mov esi, dword [ebp - 0x14]
dec ecx
xor eax, eax
mov dword [ebp - 0x1c], ecx
mov ecx, edi
mov al, byte [esi]
mov edx, dword [ebp - 0x24]
shl eax, cl
add edx, eax
inc esi
mov dword [ebp - 0x24], edx
mov dword [ebp - 0x14], esi
add edi, 8
movzx eax, bh
cmp eax, edi
ja 0x4ac880
mov esi, dword [ebp - 0x60]
mov eax, dword [ebp - 0x4c]
movzx ecx, bh
shr ebx, 0x10
mov edx, dword [ebp - 0x4c]
mov word [eax + esi*2 + 0x70], bx
mov eax, esi
shr dword [ebp - 0x24], cl
inc eax
sub edi, ecx
mov dword [edx + 0x68], eax
mov dword [ebp - 0x60], eax
mov eax, dword [ebp - 0x58]
mov esi, dword [ebp - 0x5c]
add eax, esi
cmp dword [ebp - 0x60], eax
jb 0x4ac80e
mov ecx, dword [ebp - 0x4c]
mov eax, dword [ecx]
cmp eax, 0x1b
je 0x4abeb1
mov eax, ecx
mov dword [ecx + 0x54], 9
add eax, 0x530
mov dword [ecx + 0x6c], eax
mov dword [ecx + 0x4c], eax
mov esi, ecx
push ebx
push ebx
mov ebx, ecx
sub eax, 0x4dc
add esi, 0x2f0
add ebx, 0x6c
push esi
push eax
push ebx
mov edx, dword [ecx + 0x60]
add eax, 0x1c
push edx
push eax
push 1
call fcn.004b09c0
add esp, 0x20
test eax, eax
mov dword [ebp - 0x30], eax
je 0x4ad41c
mov esi, dword [ebp + 8]
mov dword [esi + 0x18], str.invalid_literal_lengths_set
mov eax, dword [ebp - 0x4c]
mov dword [eax], 0x1b
mov eax, 0x1b
jmp switch.0x004abeb6
mov ecx, dword [ebp - 0x4c]
mov dword [ebp - 0x24], 0
xor edi, edi
mov dword [ecx + 0x40], edx
mov dword [ecx], 0xe
mov esi, dword [ebp - 0x4c]
mov ebx, dword [esi + 0x40]
test ebx, ebx
jne 0x4ad604
mov ecx, dword [ebp - 0x4c]
mov eax, 0xb
mov dword [ecx], 0xb
jmp switch.0x004abeb6
mov ecx, dword [ebp - 0x4c]
mov dword [ecx], 0x1c
mov eax, 0xfffffffc
jmp 0x4abecc
mov edx, dword [ebp - 0x4c]
mov dword [edx], 0x12
cmp dword [ebp - 0x1c], 5
seta dl
cmp dword [ebp - 0x20], 0x101
seta al
and eax, 0xff
test eax, edx
jne 0x4ad731
mov eax, dword [ebp - 0x4c]
mov edx, dword [ebp - 0x4c]
mov eax, dword [eax + 0x4c]
mov ecx, dword [edx + 0x54]
mov dword [ebp - 0x50], eax
mov eax, 1
shl eax, cl
lea edx, [eax - 1]
jmp 0x4aca10
mov esi, dword [ebp - 0x1c]
test esi, esi
je 0x4ac093
mov ebx, dword [ebp - 0x1c]
mov esi, dword [ebp - 0x14]
dec ebx
xor eax, eax
mov dword [ebp - 0x1c], ebx
mov ecx, edi
mov al, byte [esi]
inc esi
shl eax, cl
mov ecx, dword [ebp - 0x24]
mov dword [ebp - 0x14], esi
add ecx, eax
add edi, 8
mov dword [ebp - 0x24], ecx
mov eax, dword [ebp - 0x24]
mov ecx, dword [ebp - 0x50]
and eax, edx
mov ebx, dword [ecx + eax*4]
movzx eax, bh
cmp eax, edi
ja 0x4ac9e4
test bl, bl
je 0x4acab5
test bl, 0xf0
jne 0x4acab5
mov eax, ebx
mov dl, bl
shr eax, 0x10
and edx, 0xff
mov esi, ebx
mov dword [ebp - 0x3c], eax
mov dword [ebp - 0x40], edx
jmp 0x4aca76
mov eax, dword [ebp - 0x1c]
test eax, eax
je 0x4ac093
mov ebx, dword [ebp - 0x1c]
mov edx, dword [ebp - 0x14]
dec ebx
xor eax, eax
mov dword [ebp - 0x1c], ebx
mov ecx, edi
mov al, byte [edx]
inc edx
shl eax, cl
mov ecx, dword [ebp - 0x24]
mov dword [ebp - 0x14], edx
add ecx, eax
add edi, 8
mov dword [ebp - 0x24], ecx
mov eax, esi
mov edx, esi
movzx ecx, ah
mov eax, dword [ebp - 0x40]
mov ebx, dword [ebp - 0x24]
add ecx, eax
mov eax, 1
shl eax, cl
dec eax
and eax, ebx
movzx ecx, dh
shr eax, cl
mov ecx, dword [ebp - 0x3c]
add eax, ecx
mov ecx, dword [ebp - 0x50]
mov ebx, dword [ecx + eax*4]
movzx eax, dh
movzx edx, bh
add eax, edx
cmp eax, edi
ja 0x4aca4a
mov eax, esi
movzx ecx, ah
shr dword [ebp - 0x24], cl
sub edi, ecx
mov eax, ebx
mov edx, dword [ebp - 0x4c]
movzx ecx, bh
shr eax, 0x10
sub edi, ecx
shr dword [ebp - 0x24], cl
mov dword [edx + 0x40], eax
test bl, bl
jne 0x4ad3a3
mov eax, 0x17
mov dword [edx], 0x17
jmp switch.0x004abeb6
mov dword [ebp - 0x24], 0
xor edi, edi
mov esi, dword [ebp - 0x4c]
mov dword [esi], 0x1a
mov dword [ebp - 0x30], 1
jmp 0x4ac093
mov dword [ebp - 0x30], 0xfffffffd
jmp 0x4ac093
mov esi, dword [ebp - 0x4c]
mov ebx, dword [esi + 0x5c]
mov eax, dword [ebp - 0x4c]
mov eax, dword [eax + 0x68]
mov dword [ebp - 0x60], eax
cmp eax, ebx
jae 0x4acb89
cmp edi, 2
ja 0x4acb53
mov eax, dword [ebp - 0x1c]
test eax, eax
je 0x4ac093
mov esi, dword [ebp - 0x1c]
mov edx, dword [ebp - 0x14]
dec esi
xor eax, eax
mov dword [ebp - 0x1c], esi
mov ecx, edi
mov al, byte [edx]
inc edx
shl eax, cl
mov ecx, dword [ebp - 0x24]
mov dword [ebp - 0x14], edx
add ecx, eax
add edi, 8
mov dword [ebp - 0x24], ecx
cmp edi, 2
jbe 0x4acb22
mov esi, dword [ebp - 0x4c]
mov ecx, dword [ebp - 0x24]
and ecx, 7
sub edi, 3
mov eax, dword [esi + 0x68]
mov dx, word [eax + eax + 0x66f9c0]
inc eax
and edx, 0xffff
mov dword [esi + 0x68], eax
mov word [esi + edx*2 + 0x70], cx
mov edx, dword [ebp - 0x24]
shr edx, 3
cmp eax, ebx
mov dword [ebp - 0x24], edx
jb 0x4acb1d
mov dword [ebp - 0x60], eax
cmp dword [ebp - 0x60], 0x12
ja 0x4acbb5
mov edx, dword [ebp - 0x60]
inc edx
mov ax, word [edx + edx + 0x66f9be]
mov ecx, dword [ebp - 0x4c]
and eax, 0xffff
mov word [ecx + eax*2 + 0x70], 0
mov eax, edx
inc edx
cmp eax, 0x12
jbe 0x4acb93
mov dword [ecx + 0x68], eax
mov esi, dword [ebp - 0x4c]
mov eax, dword [ebp - 0x4c]
add eax, 0x530
mov dword [esi + 0x6c], eax
mov dword [esi + 0x4c], eax
mov dword [esi + 0x54], 7
push eax
push eax
mov eax, esi
add eax, 0x2f0
push eax
sub eax, 0x29c
push eax
add eax, 0x18
push eax
add eax, 4
push 0x13
push eax
push 0
call fcn.004b09c0
add esp, 0x20
test eax, eax
mov dword [ebp - 0x30], eax
je 0x4ac7bd
mov eax, dword [ebp + 8]
mov dword [eax + 0x18], str.invalid_code_lengths_set
jmp 0x4ac575
mov eax, dword [ebp - 0x4c]
mov ebx, dword [eax + 0x48]
test ebx, ebx
je 0x4ad270
cmp ebx, edi
jbe 0x4acc4d
mov eax, dword [ebp - 0x1c]
test eax, eax
je 0x4ac093
mov esi, dword [ebp - 0x1c]
mov edx, dword [ebp - 0x14]
dec esi
xor eax, eax
mov dword [ebp - 0x1c], esi
mov ecx, edi
mov al, byte [edx]
inc edx
shl eax, cl
mov ecx, dword [ebp - 0x24]
mov dword [ebp - 0x14], edx
add ecx, eax
add edi, 8
mov dword [ebp - 0x24], ecx
cmp ebx, edi
ja 0x4acc1d
mov cl, bl
mov eax, 1
shl eax, cl
mov esi, dword [ebp - 0x4c]
sub edi, ebx
lea edx, [eax - 1]
mov eax, dword [ebp - 0x24]
and edx, eax
mov eax, dword [esi + 0x44]
shr dword [ebp - 0x24], cl
add edx, eax
mov dword [esi + 0x44], edx
mov ecx, dword [ebp - 0x4c]
mov eax, dword [ebp - 0x2c]
mov ebx, dword [ebp - 0x20]
mov esi, dword [ecx + 0x2c]
add eax, esi
sub eax, ebx
cmp edx, eax
jbe 0x4ac721
mov esi, dword [ebp + 8]
mov dword [esi + 0x18], 0x67031f
mov eax, 0x1b
mov dword [ecx], 0x1b
jmp switch.0x004abeb6
mov esi, dword [ebp - 0x4c]
mov ebx, dword [esi + 8]
test ebx, ebx
jne 0x4accba
mov eax, 0xc
mov dword [esi], 0xc
jmp switch.0x004abeb6
cmp edi, 0xf
ja 0x4accf0
mov eax, dword [ebp - 0x1c]
test eax, eax
je 0x4ac093
mov esi, dword [ebp - 0x1c]
mov edx, dword [ebp - 0x14]
dec esi
xor eax, eax
mov dword [ebp - 0x1c], esi
mov ecx, edi
mov al, byte [edx]
inc edx
shl eax, cl
mov ecx, dword [ebp - 0x24]
mov dword [ebp - 0x14], edx
add ecx, eax
add edi, 8
mov dword [ebp - 0x24], ecx
cmp edi, 0xf
jbe 0x4accbf
mov edx, ebx
shr edx, 1
cmp dword [ebp - 0x24], 0x8b1f
sete al
and eax, 0xff
test edx, eax
jne 0x4ad469
mov ecx, dword [ebp - 0x4c]
mov eax, dword [ecx + 0x20]
mov dword [ecx + 0x10], 0
test eax, eax
je 0x4acd26
mov dword [eax + 0x30], 0xffffffff
mov ebx, dword [ecx + 8]
and ebx, 1
je 0x4acd4d
movzx eax, byte [ebp - 0x24]
shl eax, 8
mov edx, dword [ebp - 0x24]
shr edx, 8
add eax, edx
mov edx, 0x1f
mov esi, edx
xor edx, edx
div esi
test edx, edx
je 0x4ad4e0
mov eax, dword [ebp + 8]
mov edx, dword [ebp - 0x4c]
mov dword [eax + 0x18], str.incorrect_header_check
jmp 0x4acde0
mov ecx, dword [ebp - 0x4c]
mov edx, dword [ecx + 0x10]
jmp 0x4ac332
mov ecx, dword [ebp - 0x4c]
mov edx, dword [ecx + 0x10]
jmp 0x4ac2bf
mov edx, dword [ebp - 0x4c]
mov ebx, dword [edx + 8]
test ebx, ebx
je 0x4acae9
mov ecx, dword [ebp - 0x4c]
mov esi, dword [ecx + 0x10]
test esi, esi
je 0x4acae9
cmp edi, 0x1f
ja 0x4acdc7
mov ebx, dword [ebp - 0x1c]
test ebx, ebx
je 0x4ac093
mov ecx, dword [ebp - 0x1c]
mov esi, dword [ebp - 0x14]
dec ecx
xor eax, eax
mov dword [ebp - 0x1c], ecx
mov ecx, edi
mov al, byte [esi]
mov edx, dword [ebp - 0x24]
shl eax, cl
add edx, eax
inc esi
mov dword [ebp - 0x24], edx
mov dword [ebp - 0x14], esi
add edi, 8
cmp edi, 0x1f
jbe 0x4acd96
mov edx, dword [ebp - 0x4c]
mov eax, dword [ebp - 0x24]
cmp dword [edx + 0x1c], eax
je 0x4acae0
mov ecx, dword [ebp + 8]
mov dword [ecx + 0x18], str.incorrect_length_check
mov eax, 0x1b
mov dword [edx], 0x1b
jmp switch.0x004abeb6
mov esi, dword [ebp - 0x4c]
mov ebx, dword [esi + 8]
test ebx, ebx
je 0x4ad2a7
cmp edi, 0x1f
ja 0x4ace34
mov eax, dword [ebp - 0x1c]
test eax, eax
je 0x4ac093
mov eax, dword [ebp - 0x1c]
mov edx, dword [ebp - 0x14]
dec eax
mov ecx, edi
mov dword [ebp - 0x1c], eax
xor eax, eax
mov al, byte [edx]
mov esi, dword [ebp - 0x24]
shl eax, cl
add esi, eax
inc edx
mov dword [ebp - 0x24], esi
mov dword [ebp - 0x14], edx
add edi, 8
cmp edi, 0x1f
jbe 0x4ace03
mov ebx, dword [ebp - 0x2c]
mov esi, dword [ebp - 0x20]
mov eax, dword [ebp + 8]
sub ebx, esi
mov dword [ebp - 0x2c], ebx
mov ecx, dword [eax + 0x14]
mov edx, dword [ebp - 0x2c]
add ecx, edx
mov dword [eax + 0x14], ecx
mov ecx, dword [ebp - 0x4c]
mov eax, dword [ecx + 0x1c]
add eax, edx
test edx, edx
mov dword [ecx + 0x1c], eax
je 0x4ace87
mov eax, dword [ecx + 0x10]
test eax, eax
je 0x4ad4c1
push eax
push edx
mov eax, dword [ebp - 0x18]
sub eax, edx
push eax
mov esi, dword [ecx + 0x18]
push esi
call fcn.004adc40
mov edx, dword [ebp - 0x4c]
mov ecx, dword [ebp + 8]
add esp, 0x10
mov dword [edx + 0x18], eax
mov dword [ecx + 0x30], eax
mov eax, dword [ebp - 0x4c]
mov esi, dword [ebp - 0x20]
mov dword [ebp - 0x2c], esi
mov ecx, dword [eax + 0x18]
mov eax, dword [eax + 0x10]
test eax, eax
jne 0x4ad3ff
mov eax, dword [ebp - 0x24]
mov edx, dword [ebp - 0x24]
shr eax, 8
shr edx, 0x18
and eax, 0xff00
add edx, eax
mov eax, dword [ebp - 0x24]
and eax, 0xff00
shl eax, 8
add edx, eax
mov eax, dword [ebp - 0x24]
shl eax, 0x18
add edx, eax
cmp edx, ecx
je 0x4ad298
mov edx, dword [ebp + 8]
mov ecx, dword [ebp - 0x4c]
mov dword [edx + 0x18], str.incorrect_data_check
jmp 0x4acc90
mov eax, dword [ebp - 0x20]
test eax, eax
je 0x4ac093
mov edx, dword [ebp - 0x4c]
mov ecx, dword [ebp - 0x18]
mov eax, dword [edx + 0x40]
mov byte [ecx], al
inc ecx
mov eax, dword [ebp - 0x20]
mov dword [ebp - 0x18], ecx
dec eax
mov dword [edx], 0x12
mov dword [ebp - 0x20], eax
mov eax, 0x12
jmp switch.0x004abeb6
mov ecx, edi
and edi, 0xfffffff8
and ecx, 7
shr dword [ebp - 0x24], cl
cmp edi, 0x1f
ja 0x4acf55
mov ebx, dword [ebp - 0x1c]
test ebx, ebx
je 0x4ac093
mov ecx, dword [ebp - 0x1c]
xor eax, eax
dec ecx
mov edx, dword [ebp - 0x24]
mov dword [ebp - 0x1c], ecx
mov ecx, dword [ebp - 0x14]
mov al, byte [ecx]
mov ecx, edi
shl eax, cl
add edx, eax
mov eax, dword [ebp - 0x14]
inc eax
mov dword [ebp - 0x24], edx
mov dword [ebp - 0x14], eax
add edi, 8
cmp edi, 0x1f
jbe 0x4acf21
mov eax, dword [ebp - 0x24]
shr eax, 0x10
movzx edx, word [ebp - 0x24]
xor eax, 0xffff
cmp edx, eax
je 0x4ac959
mov esi, dword [ebp + 8]
mov dword [esi + 0x18], str.invalid_stored_block_lengths
jmp 0x4ac946
mov ecx, dword [ebp - 0x4c]
mov edx, dword [ecx + 0x10]
jmp 0x4ac47f
mov eax, dword [ebp - 0x4c]
mov edx, dword [eax + 0x10]
jmp 0x4ac3d5
mov ecx, dword [ebp - 0x4c]
mov edx, dword [ecx + 0x10]
jmp 0x4ac518
cmp edi, 2
ja 0x4ad5a3
mov esi, dword [ebp - 0x1c]
test esi, esi
je 0x4ac093
mov ebx, dword [ebp - 0x1c]
mov edx, dword [ebp - 0x14]
dec ebx
xor eax, eax
mov dword [ebp - 0x1c], ebx
mov ecx, edi
mov al, byte [edx]
add edi, 8
shl eax, cl
mov ecx, dword [ebp - 0x24]
inc edx
add ecx, eax
mov dword [ebp - 0x14], edx
mov dword [ebp - 0x24], ecx
jmp 0x4acf9c
mov dword [ebp - 0x24], 0
xor edi, edi
mov ecx, dword [ebp - 0x4c]
mov eax, dword [ecx + 0x20]
test eax, eax
je 0x4acff6
sar edx, 9
mov dword [eax + 0x30], 1
and edx, 1
mov dword [eax + 0x2c], edx
push eax
push 0
push 0
push 0
call fcn.004adc40
mov esi, dword [ebp - 0x4c]
mov edx, dword [ebp + 8]
add esp, 0x10
mov dword [esi + 0x18], eax
mov dword [edx + 0x30], eax
mov eax, 0xb
mov dword [esi], 0xb
jmp switch.0x004abeb6
mov esi, dword [ebp + 8]
mov eax, dword [esi + 0x10]
jmp 0x4ac0ea
mov ecx, dword [ebp - 0x4c]
mov eax, dword [ecx + 0x20]
test eax, eax
je 0x4ac50f
mov dword [eax + 0x24], 0
jmp 0x4ac50f
sub eax, 0xffffff80
jmp 0x4ac18a
mov ecx, dword [ebp - 0x4c]
mov eax, dword [ecx + 0x20]
test eax, eax
je 0x4ac46f
mov dword [eax + 0x1c], 0
jmp 0x4ac46f
push edi
mov esi, dword [ebp - 0x2c]
push esi
mov esi, dword [ebp + 8]
mov ebx, dword [ebp - 0x2c]
mov eax, dword [esi + 0xc]
sub eax, ebx
push eax
mov eax, dword [ebp - 0x4c]
mov ecx, dword [eax + 0x18]
push ecx
call fcn.004b0f80
jmp 0x4ac15f
cmp ax, 0x10
je 0x4ad13d
cmp ax, 0x11
je 0x4ad1c0
movzx eax, bh
add eax, 7
cmp eax, edi
jbe 0x4ad0de
mov esi, dword [ebp - 0x1c]
test esi, esi
je 0x4ac093
mov ecx, dword [ebp - 0x1c]
mov esi, dword [ebp - 0x14]
dec ecx
xor eax, eax
mov dword [ebp - 0x1c], ecx
mov ecx, edi
mov al, byte [esi]
mov edx, dword [ebp - 0x24]
shl eax, cl
add edx, eax
inc esi
mov dword [ebp - 0x24], edx
mov dword [ebp - 0x14], esi
add edi, 8
movzx eax, bh
add eax, 7
cmp eax, edi
ja 0x4ad0a8
movzx ecx, bh
shr dword [ebp - 0x24], cl
mov eax, dword [ebp - 0x24]
sub edi, ecx
and eax, 0x7f
xor esi, esi
sub edi, 7
lea ebx, [eax + 0xb]
mov eax, dword [ebp - 0x24]
shr eax, 7
mov dword [ebp - 0x24], eax
mov edx, dword [ebp - 0x60]
mov eax, dword [ebp - 0x58]
mov ecx, dword [ebp - 0x5c]
add edx, ebx
add eax, ecx
cmp edx, eax
ja 0x4ad543
dec ebx
cmp ebx, 0xffffffff
jne 0x4ad123
jmp 0x4ac8d5
mov dword [ebp - 0x60], eax
mov eax, dword [ebp - 0x60]
mov edx, dword [ebp - 0x4c]
dec ebx
mov word [edx + eax*2 + 0x70], si
inc eax
mov dword [edx + 0x68], eax
cmp ebx, 0xffffffff
jne 0x4ad120
jmp 0x4ac8d2
movzx eax, bh
add eax, 2
cmp eax, edi
jbe 0x4ad180
mov esi, dword [ebp - 0x1c]
test esi, esi
je 0x4ac093
mov ecx, dword [ebp - 0x1c]
xor eax, eax
dec ecx
mov edx, dword [ebp - 0x24]
mov dword [ebp - 0x1c], ecx
mov ecx, dword [ebp - 0x14]
mov al, byte [ecx]
mov ecx, edi
shl eax, cl
add edx, eax
mov eax, dword [ebp - 0x14]
inc eax
mov dword [ebp - 0x24], edx
mov dword [ebp - 0x14], eax
add edi, 8
movzx eax, bh
add eax, 2
cmp eax, edi
ja 0x4ad147
movzx ecx, bh
mov eax, dword [ebp - 0x60]
sub edi, ecx
shr dword [ebp - 0x24], cl
test eax, eax
je 0x4ad58b
mov esi, dword [ebp - 0x60]
mov edx, dword [ebp - 0x4c]
sub edi, 2
mov ax, word [edx + esi*2 + 0x6e]
mov esi, eax
mov eax, dword [ebp - 0x24]
and eax, 3
and esi, 0xffff
lea ebx, [eax + 3]
mov eax, dword [ebp - 0x24]
shr eax, 2
mov dword [ebp - 0x24], eax
jmp 0x4ad0fd
movzx eax, bh
add eax, 3
cmp eax, edi
jbe 0x4ad203
mov esi, dword [ebp - 0x1c]
test esi, esi
je 0x4ac093
mov ecx, dword [ebp - 0x1c]
xor eax, eax
dec ecx
mov edx, dword [ebp - 0x24]
mov dword [ebp - 0x1c], ecx
mov ecx, dword [ebp - 0x14]
mov al, byte [ecx]
mov ecx, edi
shl eax, cl
add edx, eax
mov eax, dword [ebp - 0x14]
inc eax
mov dword [ebp - 0x24], edx
mov dword [ebp - 0x14], eax
add edi, 8
movzx eax, bh
add eax, 3
cmp eax, edi
ja 0x4ad1ca
movzx ecx, bh
shr dword [ebp - 0x24], cl
mov eax, dword [ebp - 0x24]
sub edi, ecx
and eax, 7
xor esi, esi
sub edi, 3
lea ebx, [eax + 3]
mov eax, dword [ebp - 0x24]
shr eax, 3
mov dword [ebp - 0x24], eax
jmp 0x4ad0fd
mov esi, dword [ebp - 0x4c]
mov eax, dword [esi + 0x20]
test eax, eax
je 0x4ac329
mov dword [eax + 0x10], 0
jmp 0x4ac329
mov esi, dword [ebp - 0x4c]
mov edx, dword [ebp - 0x18]
sub edx, eax
mov ebx, dword [esi + 0x40]
mov eax, ebx
jmp 0x4ac774
push eax
push ebx
mov eax, dword [ebp - 0x14]
push eax
mov eax, dword [ecx + 0x18]
push eax
call fcn.004adc40
mov edx, dword [ebp - 0x4c]
add esp, 0x10
mov dword [edx + 0x18], eax
jmp 0x4ac4f1
mov eax, dword [ebp - 0x4c]
mov edx, dword [eax + 0x44]
jmp 0x4acc6e
push eax
push ebx
mov eax, dword [ebp - 0x14]
push eax
mov eax, dword [ecx + 0x18]
push eax
call fcn.004adc40
mov edx, dword [ebp - 0x4c]
add esp, 0x10
mov dword [edx + 0x18], eax
jmp 0x4ac451
mov esi, dword [ebp - 0x4c]
mov dword [ebp - 0x24], 0
xor edi, edi
mov ebx, dword [esi + 8]
mov eax, dword [ebp - 0x4c]
mov dword [eax], 0x19
jmp 0x4acd7b
mov eax, dword [ebp - 0x24]
mov dl, byte [ebp - 0x24]
shr eax, 8
mov byte [ebp - 0x10], dl
mov dword [ebp - 0x24], eax
mov cl, byte [ebp - 0x24]
mov byte [ebp - 0xf], cl
push eax
lea eax, [ebp - 0x10]
push 2
push eax
mov esi, dword [ebp - 0x4c]
mov edi, dword [esi + 0x18]
push edi
call fcn.004adc40
add esp, 0x10
mov edx, dword [esi + 0x10]
mov dword [esi + 0x18], eax
jmp 0x4ac2ad
mov esi, dword [ebp - 0x4c]
mov edx, eax
sub edx, ebx
mov eax, dword [esi + 0x34]
jmp 0x4ac766
shr ebx, 0x10
mov esi, dword [ebp - 0x4c]
mov dword [esi + 0x44], ebx
mov ebx, eax
and ebx, 0xf
mov dword [esi], 0x15
mov dword [esi + 0x48], ebx
jmp 0x4acc11
mov eax, dword [ebp - 0x24]
mov cl, byte [ebp - 0x24]
shr eax, 8
mov byte [ebp - 0x10], cl
mov dword [ebp - 0x24], eax
mov al, byte [ebp - 0x24]
mov byte [ebp - 0xf], al
push eax
lea eax, [ebp - 0x10]
push 2
push eax
mov edx, dword [ebp - 0x4c]
mov edi, dword [edx + 0x18]
push edi
call fcn.004adc40
mov ecx, dword [ebp - 0x4c]
add esp, 0x10
mov edx, dword [ecx + 0x10]
mov dword [ecx + 0x18], eax
jmp 0x4ac320
mov al, byte [ebp - 0x24]
mov byte [ebp - 0x10], al
mov eax, dword [ebp - 0x24]
shr eax, 8
mov dword [ebp - 0x24], eax
mov eax, dword [ebp - 0x24]
mov dl, byte [ebp - 0x24]
shr eax, 8
mov byte [ebp - 0xf], dl
mov dword [ebp - 0x24], eax
mov eax, dword [ebp - 0x24]
mov cl, byte [ebp - 0x24]
shr eax, 8
mov byte [ebp - 0xe], cl
mov dword [ebp - 0x24], eax
mov al, byte [ebp - 0x24]
mov byte [ebp - 0xd], al
push eax
lea eax, [ebp - 0x10]
push 4
push eax
mov edx, dword [ebp - 0x4c]
mov edi, dword [edx + 0x18]
push edi
call fcn.004adc40
mov ecx, dword [ebp - 0x4c]
add esp, 0x10
mov dword [ecx + 0x18], eax
jmp 0x4ac241
xor eax, eax
mov al, bl
test al, 0x20
jne 0x4ac97c
test al, 0x40
je 0x4ad4fd
mov esi, dword [ebp + 8]
mov dword [esi + 0x18], 0x67039d
jmp 0x4ac946
push eax
push ebx
mov eax, dword [ebp - 0x14]
push eax
mov esi, dword [ebp - 0x4c]
mov eax, dword [esi + 0x18]
push eax
call fcn.004adc40
add esp, 0x10
mov dword [esi + 0x18], eax
jmp 0x4ac39c
test dword [ebp - 0x24], 0xe000
je 0x4ac1bf
mov esi, dword [ebp + 8]
mov dword [esi + 0x18], str.unknown_header_flags_set
jmp 0x4ac946
cmp ecx, dword [ebp - 0x24]
jmp 0x4acec8
mov ecx, dword [ebp - 0x4c]
mov dword [ecx + 0x68], 0
mov dword [ecx], 0x10
jmp 0x4acb10
mov edx, dword [ebp - 0x4c]
mov ecx, dword [ebp - 0x4c]
mov edx, dword [edx + 0x6c]
mov dword [ecx + 0x58], 6
mov dword [ecx + 0x50], edx
push eax
push eax
mov eax, ecx
add eax, 0x58
push esi
push eax
push ebx
mov eax, dword [ecx + 0x64]
push eax
mov eax, dword [ecx + 0x60]
lea eax, [ecx + eax*2 + 0x70]
push eax
push 2
call fcn.004b09c0
add esp, 0x20
test eax, eax
mov dword [ebp - 0x30], eax
je 0x4ac9a2
mov esi, dword [ebp + 8]
mov dword [esi + 0x18], str.invalid_distances_set
jmp 0x4ac946
push eax
push 0
push 0
push 0
call fcn.004adc40
mov esi, dword [ebp - 0x4c]
add esp, 0xc
xor edi, edi
mov dword [esi + 0x18], eax
mov al, byte [ebp - 0x24]
mov byte [ebp - 0x10], al
mov eax, dword [ebp - 0x24]
shr eax, 8
mov dword [ebp - 0x24], eax
lea eax, [ebp - 0x10]
mov dl, byte [ebp - 0x24]
mov byte [ebp - 0xf], dl
push 2
push eax
mov eax, dword [esi + 0x18]
push eax
call fcn.004adc40
add esp, 0x10
mov dword [ebp - 0x24], 0
mov dword [esi + 0x18], eax
mov eax, 1
mov dword [esi], 1
jmp switch.0x004abeb6
push ebx
mov ecx, dword [ebp - 0x2c]
push ecx
mov eax, dword [ebp - 0x18]
mov edx, dword [ebp - 0x2c]
sub eax, edx
push eax
mov esi, dword [ebp - 0x4c]
mov eax, dword [esi + 0x18]
push eax
call fcn.004b0f80
jmp 0x4ace78
mov eax, dword [ebp - 0x24]
and eax, 0xf
cmp eax, 8
je 0x4ad55b
mov ecx, dword [ebp + 8]
mov esi, dword [ebp - 0x4c]
mov dword [ecx + 0x18], str.unknown_compression_method
jmp 0x4ac575
mov edx, dword [ebp - 0x4c]
mov ebx, eax
and ebx, 0xf
mov dword [edx + 0x48], ebx
mov dword [edx], 0x13
jmp 0x4ac5b7
mov al, byte [ebp - 0x24]
mov byte [ebp - 0x10], al
mov eax, dword [ebp - 0x24]
shr eax, 8
mov dword [ebp - 0x24], eax
mov dl, byte [ebp - 0x24]
mov byte [ebp - 0xf], dl
push eax
lea eax, [ebp - 0x10]
push 2
push eax
mov edi, dword [esi + 0x18]
push edi
call fcn.004adc40
add esp, 0x10
mov dword [esi + 0x18], eax
jmp 0x4ac1e1
mov esi, dword [ebp + 8]
mov eax, dword [ebp - 0x4c]
mov dword [esi + 0x18], str.invalid_bit_length_repeat
mov dword [eax], 0x1b
jmp 0x4ac8e6
mov eax, dword [ebp - 0x24]
sub edi, 4
shr eax, 4
mov dword [ebp - 0x24], eax
mov eax, dword [ebp - 0x24]
and eax, 0xf
lea esi, [eax + 8]
mov eax, dword [ebp - 0x4c]
cmp dword [eax + 0x24], esi
jae 0x4ad69c
mov edx, dword [ebp + 8]
mov dword [edx + 0x18], str.invalid_window_size
jmp 0x4ac949
mov edx, dword [ebp + 8]
mov ecx, dword [ebp - 0x4c]
mov dword [edx + 0x18], str.invalid_bit_length_repeat
mov dword [ecx], 0x1b
jmp 0x4ac8e6
mov eax, dword [ebp - 0x24]
mov esi, dword [ebp - 0x4c]
and eax, 1
dec edi
mov dword [esi + 4], eax
mov eax, dword [ebp - 0x24]
shr eax, 1
mov dword [ebp - 0x24], eax
mov eax, dword [ebp - 0x24]
and eax, 3
cmp eax, 1
je 0x4ad6f9
jb 0x4ad6eb
cmp eax, 2
je 0x4ad723
cmp eax, 3
jne 0x4ad5ee
mov esi, dword [ebp + 8]
mov eax, dword [ebp - 0x4c]
mov dword [esi + 0x18], str.invalid_block_type
mov dword [eax], 0x1b
mov edx, dword [ebp - 0x4c]
mov esi, dword [ebp - 0x24]
shr esi, 2
sub edi, 2
mov eax, dword [edx]
mov dword [ebp - 0x24], esi
jmp 0x4abeb1
cmp ebx, dword [ebp - 0x1c]
jbe 0x4ad60c
mov ebx, dword [ebp - 0x1c]
cmp ebx, dword [ebp - 0x20]
jbe 0x4ad614
mov ebx, dword [ebp - 0x20]
test ebx, ebx
je 0x4ac093
push eax
push ebx
mov eax, dword [ebp - 0x14]
push eax
mov eax, dword [ebp - 0x18]
push eax
call fcn.004c86b0
mov eax, dword [ebp - 0x1c]
mov esi, dword [ebp - 0x20]
sub eax, ebx
mov ecx, dword [ebp - 0x18]
mov dword [ebp - 0x1c], eax
mov eax, dword [ebp - 0x14]
add eax, ebx
sub esi, ebx
mov dword [ebp - 0x14], eax
mov eax, dword [ebp - 0x4c]
add ecx, ebx
add esp, 0x10
mov edx, dword [eax + 0x40]
mov dword [ebp - 0x20], esi
sub edx, ebx
mov dword [ebp - 0x18], ecx
mov dword [eax + 0x40], edx
mov edx, eax
mov eax, dword [edx]
jmp 0x4abeb1
mov ecx, dword [ebp - 0x4c]
mov eax, dword [ecx]
jmp 0x4abeb1
mov esi, dword [ebp + 8]
mov eax, dword [ebp - 0x18]
mov ecx, dword [ebp - 0x14]
mov edx, dword [ebp - 0x20]
mov dword [esi + 0xc], eax
mov dword [esi], ecx
mov eax, dword [ebp - 0x1c]
mov ecx, dword [ebp - 0x4c]
mov dword [esi + 0x10], edx
mov dword [esi + 4], eax
mov edx, dword [ebp - 0x24]
mov eax, 2
mov dword [ecx + 0x38], edx
mov dword [ecx + 0x3c], edi
jmp 0x4abecc
mov ecx, esi
mov eax, 1
mov esi, dword [ebp - 0x4c]
shl eax, cl
mov dword [esi + 0x14], eax
push eax
push 0
push 0
push 0
call fcn.004b0f80
mov edi, dword [ebp - 0x24]
and edi, 0x200
mov edx, dword [ebp + 8]
mov dword [ebp - 0x24], edi
add esp, 0x10
cmp dword [ebp - 0x24], 1
mov dword [esi + 0x18], eax
mov dword [edx + 0x30], eax
sbb eax, eax
xor edi, edi
and eax, 2
mov dword [ebp - 0x24], 0
add eax, 9
mov dword [esi], eax
jmp 0x4abeb1
mov eax, dword [ebp - 0x4c]
mov dword [eax], 0xd
jmp 0x4ad5ee
mov edx, dword [ebp - 0x4c]
mov dword [edx + 0x4c], 0x66fa00
mov dword [edx + 0x54], 9
mov dword [edx + 0x50], 0x670200
mov dword [edx + 0x58], 5
mov dword [edx], 0x12
jmp 0x4ad5ee
mov ecx, dword [ebp - 0x4c]
mov dword [ecx], 0xf
jmp 0x4ad5ee
mov ecx, dword [ebp + 8]
mov edx, dword [ebp - 0x14]
mov esi, dword [ebp - 0x18]
mov eax, dword [ebp - 0x20]
mov dword [ecx], edx
mov edx, dword [ebp - 0x4c]
mov dword [ecx + 0x10], eax
mov dword [ecx + 0xc], esi
mov eax, dword [ebp - 0x24]
mov esi, dword [ebp - 0x1c]
mov dword [ecx + 4], esi
mov dword [edx + 0x38], eax
mov dword [edx + 0x3c], edi
push eax
push eax
mov edi, dword [ebp - 0x2c]
push edi
push ecx
call fcn.004b0500
mov ecx, dword [ebp + 8]
mov esi, dword [ebp + 8]
mov ecx, dword [ecx + 0xc]
mov eax, dword [ebp + 8]
mov dword [ebp - 0x18], ecx
mov esi, dword [esi + 0x10]
mov edx, dword [ebp + 8]
mov dword [ebp - 0x20], esi
mov ecx, dword [ebp - 0x4c]
mov esi, dword [ebp - 0x4c]
mov eax, dword [eax]
mov dword [ebp - 0x14], eax
mov edx, dword [edx + 4]
mov ecx, dword [ecx + 0x38]
mov edi, dword [esi + 0x3c]
add esp, 0x10
mov eax, dword [esi]
mov dword [ebp - 0x1c], edx
mov dword [ebp - 0x24], ecx
jmp 0x4abeb1