Function at 0x576da0
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.0x576e16
mov eax, dword [ebp + 8]
mov eax, dword [eax + 0x1c]
mov dword [ebp - 0x4c], eax
test eax, eax
je case.default.0x576e16
mov edx, dword [ebp + 8]
mov ecx, dword [edx + 0xc]
test ecx, ecx
je case.default.0x576e16
mov ebx, dword [edx]
test ebx, ebx
je 0x576e20
mov eax, dword [ebp + 8]
mov edx, dword [eax + 4]
mov esi, dword [ebp - 0x4c]
mov eax, dword [esi]
cmp eax, 0xb
je 0x576e34
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.0x576e16
jmp dword [eax*4 + 0x784b40]
mov edx, dword [edx + 4]
test edx, edx
je 0x576dd3
mov eax, 0xfffffffe
lea esp, [ebp - 0xc]
pop ebx
pop esi
pop edi
pop ebp
ret
mov al, 0xc
mov dword [esi], 0xc
jmp 0x576ddd
cmp edi, 0xf
ja 0x576e77
mov ebx, dword [ebp - 0x1c]
test ebx, ebx
je 0x576ff3
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 0x576e43
mov edx, dword [ebp - 0x4c]
mov eax, dword [ebp - 0x24]
cmp al, 8
mov dword [edx + 0x10], eax
je 0x578343
mov ecx, dword [ebp + 8]
mov dword [ecx + 0x18], str.unknown_compression_method
jmp 0x577d40
cmp edi, 0xd
ja 0x576ecd
mov esi, dword [ebp - 0x1c]
test esi, esi
je 0x576ff3
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 0x576e9c
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 0x576f24
cmp ecx, 0x1e
jbe 0x578367
mov eax, dword [ebp + 8]
mov edx, dword [ebp - 0x4c]
mov dword [eax + 0x18], str.too_many_length_or_distance_symbols
jmp 0x577d40
cmp edi, 0x1f
ja 0x576f6f
mov eax, dword [ebp - 0x1c]
test eax, eax
je 0x576ff3
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 0x576f3b
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 0x5785cc
push eax
push 0
push 0
push 0
call fcn.0057acc0
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.0x576e16.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 0x577031
cmp dword [esi], 0x17
ja 0x577f81
mov eax, dword [eax + 0x10]
cmp eax, dword [ebp - 0x2c]
je 0x57704a
mov edx, dword [ebp - 0x2c]
mov eax, dword [ebp + 8]
call fcn.00576c60
test eax, eax
jne 0x5778ef
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 edx, eax
je 0x5770ce
mov eax, dword [ecx + 0x10]
test eax, eax
je 0x577fc8
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.00576690
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 0x5770de
add eax, 0x40
mov edx, dword [ebp - 0x4c]
cmp dword [edx], 0xb
je 0x577fa6
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 0x577114
mov eax, dword [ebp - 0x30]
test eax, eax
jne 0x577114
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 0x577134
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 0x578473
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 0x576ff3
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 0x577153
mov esi, dword [ebp - 0x4c]
mov eax, dword [esi + 0x20]
test eax, eax
je 0x577194
mov edx, dword [ebp - 0x24]
mov dword [eax + 4], edx
mov ecx, dword [ebp - 0x4c]
test byte [ecx + 0x11], 2
jne 0x5782af
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 0x576ff3
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 0x5771b3
mov esi, dword [ebp - 0x4c]
mov edx, dword [esi + 0x20]
test edx, edx
je 0x5771fe
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 0x578215
mov eax, dword [ebp - 0x4c]
mov dword [ebp - 0x24], 0
xor edi, edi
mov dword [eax], 4
test dh, 4
je 0x578187
cmp edi, 0xf
ja 0x57725e
mov esi, dword [ebp - 0x1c]
test esi, esi
je 0x576ff3
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 0x57722d
mov ecx, dword [ebp - 0x4c]
mov eax, dword [ebp - 0x24]
mov dword [ecx + 0x40], eax
mov eax, dword [ecx + 0x20]
test eax, eax
je 0x577277
mov edx, dword [ebp - 0x24]
mov dword [eax + 0x14], edx
mov edx, dword [ecx + 0x10]
test dh, 2
jne 0x578276
mov dword [ebp - 0x24], 0
xor edi, edi
mov eax, dword [ebp - 0x4c]
mov dword [eax], 5
test dh, 4
je 0x577325
mov esi, dword [ebp - 0x4c]
mov ebx, dword [esi + 0x40]
mov eax, ebx
cmp ebx, dword [ebp - 0x1c]
jbe 0x5772ab
mov ebx, dword [ebp - 0x1c]
test ebx, ebx
je 0x577317
mov esi, dword [ebp - 0x4c]
mov ecx, dword [esi + 0x20]
test ecx, ecx
je 0x5772f3
mov esi, dword [ecx + 0x10]
mov dword [ebp - 0x34], esi
test esi, esi
je 0x5772f3
mov esi, dword [ecx + 0x14]
mov edx, dword [ecx + 0x18]
sub esi, eax
mov ecx, ebx
lea eax, [esi + ebx]
cmp eax, edx
jbe 0x5772d8
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.0058e948
mov ecx, dword [ebp - 0x4c]
add esp, 0x10
mov edx, dword [ecx + 0x10]
and dh, 2
jne 0x578326
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 0x576ff3
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 0x577fae
mov eax, dword [ebp - 0x1c]
test eax, eax
je 0x576ff3
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 0x577390
mov edx, dword [eax + 0x1c]
test edx, edx
je 0x577390
mov ecx, dword [ebp - 0x4c]
mov ecx, dword [ecx + 0x40]
mov dword [ebp - 0x64], ecx
cmp ecx, dword [eax + 0x20]
jae 0x577390
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 edx, eax
jne 0x577350
mov ecx, dword [ebp - 0x4c]
test byte [ecx + 0x11], 2
jne 0x5781db
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 0x576ff3
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 0x577f8c
mov edx, dword [ebp - 0x1c]
test edx, edx
je 0x576ff3
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 0x577430
mov edx, dword [eax + 0x24]
test edx, edx
je 0x577430
mov ecx, dword [ecx + 0x40]
mov dword [ebp - 0x64], ecx
cmp ecx, dword [eax + 0x28]
jae 0x577430
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
mov esi, esi
test esi, esi
setne dl
cmp ebx, dword [ebp - 0x1c]
setb al
and eax, 0xff
test edx, eax
jne 0x5773f5
mov ecx, dword [ebp - 0x4c]
test byte [ecx + 0x11], 2
jne 0x5781b3
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 0x576ff3
mov esi, dword [ebp - 0x4c]
mov edx, dword [esi + 0x10]
mov eax, dword [ebp - 0x4c]
mov dword [eax], 8
test dh, 2
je 0x577f3c
cmp edi, 0xf
ja 0x5774b7
mov esi, dword [ebp - 0x1c]
test esi, esi
je 0x576ff3
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 0x577486
mov esi, dword [ebp - 0x4c]
mov eax, dword [esi + 0x18]
and eax, 0xffff
cmp eax, dword [ebp - 0x24]
je 0x577f33
mov eax, dword [ebp + 8]
mov dword [eax + 0x18], str.header_crc_mismatch
mov eax, 0x1b
mov dword [esi], 0x1b
jmp switch.0x00576e16
mov ecx, dword [ebp - 0x4c]
mov eax, dword [ecx + 4]
test eax, eax
je 0x577efc
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.0x00576e16
mov ecx, dword [ebp - 0x4c]
mov ebx, dword [ecx + 0x48]
test ebx, ebx
je 0x57756e
cmp ebx, edi
jbe 0x57754f
mov esi, dword [ebp - 0x1c]
test esi, esi
je 0x576ff3
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 0x57751f
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 0x5775be
mov esi, dword [ebp - 0x1c]
test esi, esi
je 0x576ff3
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 0x577592
test bl, 0xf0
jne 0x57765b
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 0x57761c
mov eax, dword [ebp - 0x1c]
test eax, eax
je 0x576ff3
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 0x5775f0
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 0x57825a
mov edx, dword [ebp + 8]
mov ecx, dword [ebp - 0x4c]
mov dword [edx + 0x18], 0x7849e8
jmp 0x577bf0
mov eax, dword [ebp - 0x4c]
mov dword [eax], 0x16
mov eax, dword [ebp - 0x20]
test eax, eax
je 0x576ff3
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 0x5781a1
sub eax, ebx
mov ebx, eax
mov eax, dword [edx + 0x30]
cmp eax, ebx
jae 0x57824b
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 0x5776d4
mov ebx, eax
cmp ebx, dword [ebp - 0x20]
jbe 0x5776dc
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 0x5776f0
mov eax, dword [ebp - 0x4c]
mov edx, dword [eax + 0x40]
test edx, edx
jne 0x5785c2
mov dword [eax], 0x12
mov eax, 0x12
jmp switch.0x00576e16
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 0x577846
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 0x5777c7
mov ebx, dword [ebp - 0x1c]
test ebx, ebx
je 0x576ff3
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 0x577783
mov eax, ebx
shr eax, 0x10
cmp ax, 0xf
ja 0x577fea
movzx eax, bh
cmp eax, edi
jbe 0x577813
lea esi, [esi]
mov esi, dword [ebp - 0x1c]
test esi, esi
je 0x576ff3
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 0x5777e0
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 0x57776e
mov ecx, dword [ebp - 0x4c]
mov eax, dword [ecx]
cmp eax, 0x1b
je 0x576e11
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.0057b5c0
add esp, 0x20
test eax, eax
mov dword [ebp - 0x30], eax
je 0x57837c
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.0x00576e16
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 0x578564
mov ecx, dword [ebp - 0x4c]
mov eax, 0xb
mov dword [ecx], 0xb
jmp switch.0x00576e16
mov ecx, dword [ebp - 0x4c]
mov dword [ecx], 0x1c
mov eax, 0xfffffffc
jmp 0x576e2c
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 edx, eax
jne 0x578691
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 0x577970
mov esi, dword [ebp - 0x1c]
test esi, esi
je 0x576ff3
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 0x577944
test bl, bl
je 0x577a15
test bl, 0xf0
jne 0x577a15
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 0x5779d6
mov eax, dword [ebp - 0x1c]
test eax, eax
je 0x576ff3
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 0x5779aa
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 0x578303
mov eax, 0x17
mov dword [edx], 0x17
jmp switch.0x00576e16
mov dword [ebp - 0x24], 0
xor edi, edi
mov esi, dword [ebp - 0x4c]
mov dword [esi], 0x1a
mov dword [ebp - 0x30], 1
jmp 0x576ff3
mov dword [ebp - 0x30], 0xfffffffd
jmp 0x576ff3
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 0x577ae9
cmp edi, 2
ja 0x577ab3
mov eax, dword [ebp - 0x1c]
test eax, eax
je 0x576ff3
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 0x577a82
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 + 0x7840d4]
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 0x577a7d
mov dword [ebp - 0x60], eax
cmp dword [ebp - 0x60], 0x12
ja 0x577b15
mov edx, dword [ebp - 0x60]
inc edx
mov ax, word [edx + edx + 0x7840d2]
mov ecx, dword [ebp - 0x4c]
and eax, 0xffff
mov word [ecx + eax*2 + 0x70], 0
mov eax, edx
inc edx
cmp eax, 0x12
jbe 0x577af3
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.0057b5c0
add esp, 0x20
test eax, eax
mov dword [ebp - 0x30], eax
je 0x57771d
mov eax, dword [ebp + 8]
mov dword [eax + 0x18], str.invalid_code_lengths_set
jmp 0x5774d5
mov eax, dword [ebp - 0x4c]
mov ebx, dword [eax + 0x48]
test ebx, ebx
je 0x5781d0
cmp ebx, edi
jbe 0x577bad
mov eax, dword [ebp - 0x1c]
test eax, eax
je 0x576ff3
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 0x577b7d
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 0x577681
mov esi, dword [ebp + 8]
mov dword [esi + 0x18], 0x784a33
mov eax, 0x1b
mov dword [ecx], 0x1b
jmp switch.0x00576e16
mov esi, dword [ebp - 0x4c]
mov ebx, dword [esi + 8]
test ebx, ebx
jne 0x577c1a
mov eax, 0xc
mov dword [esi], 0xc
jmp switch.0x00576e16
cmp edi, 0xf
ja 0x577c50
mov eax, dword [ebp - 0x1c]
test eax, eax
je 0x576ff3
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 0x577c1f
mov edx, ebx
shr edx, 1
cmp dword [ebp - 0x24], 0x8b1f
sete al
and eax, 0xff
test eax, edx
jne 0x5783c9
mov ecx, dword [ebp - 0x4c]
mov eax, dword [ecx + 0x20]
mov dword [ecx + 0x10], 0
test eax, eax
je 0x577c86
mov dword [eax + 0x30], 0xffffffff
mov ebx, dword [ecx + 8]
and ebx, 1
je 0x577cad
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 0x578440
mov eax, dword [ebp + 8]
mov edx, dword [ebp - 0x4c]
mov dword [eax + 0x18], str.incorrect_header_check
jmp 0x577d40
mov ecx, dword [ebp - 0x4c]
mov edx, dword [ecx + 0x10]
jmp 0x577292
mov ecx, dword [ebp - 0x4c]
mov edx, dword [ecx + 0x10]
jmp 0x57721f
mov edx, dword [ebp - 0x4c]
mov ebx, dword [edx + 8]
test ebx, ebx
je 0x577a49
mov ecx, dword [ebp - 0x4c]
mov esi, dword [ecx + 0x10]
test esi, esi
je 0x577a49
cmp edi, 0x1f
ja 0x577d27
mov ebx, dword [ebp - 0x1c]
test ebx, ebx
je 0x576ff3
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 0x577cf6
mov edx, dword [ebp - 0x4c]
mov eax, dword [ebp - 0x24]
cmp dword [edx + 0x1c], eax
je 0x577a40
mov ecx, dword [ebp + 8]
mov dword [ecx + 0x18], str.incorrect_length_check
mov eax, 0x1b
mov dword [edx], 0x1b
jmp switch.0x00576e16
mov esi, dword [ebp - 0x4c]
mov ebx, dword [esi + 8]
test ebx, ebx
je 0x578207
cmp edi, 0x1f
ja 0x577d94
mov eax, dword [ebp - 0x1c]
test eax, eax
je 0x576ff3
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 0x577d63
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 0x577de7
mov eax, dword [ecx + 0x10]
test eax, eax
je 0x578421
push eax
push edx
mov eax, dword [ebp - 0x18]
sub eax, edx
push eax
mov esi, dword [ecx + 0x18]
push esi
call fcn.00576690
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 0x57835f
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 0x5781f8
mov edx, dword [ebp + 8]
mov ecx, dword [ebp - 0x4c]
mov dword [edx + 0x18], str.incorrect_data_check
jmp 0x577bf0
mov eax, dword [ebp - 0x20]
test eax, eax
je 0x576ff3
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.0x00576e16
mov ecx, edi
and edi, 0xfffffff8
and ecx, 7
shr dword [ebp - 0x24], cl
cmp edi, 0x1f
ja 0x577eb5
mov ebx, dword [ebp - 0x1c]
test ebx, ebx
je 0x576ff3
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 0x577e81
mov eax, dword [ebp - 0x24]
shr eax, 0x10
movzx edx, word [ebp - 0x24]
xor eax, 0xffff
cmp edx, eax
je 0x5778b9
mov esi, dword [ebp + 8]
mov dword [esi + 0x18], str.invalid_stored_block_lengths
jmp 0x5778a6
mov ecx, dword [ebp - 0x4c]
mov edx, dword [ecx + 0x10]
jmp 0x5773df
mov eax, dword [ebp - 0x4c]
mov edx, dword [eax + 0x10]
jmp 0x577335
mov ecx, dword [ebp - 0x4c]
mov edx, dword [ecx + 0x10]
jmp 0x577478
cmp edi, 2
ja 0x578503
mov esi, dword [ebp - 0x1c]
test esi, esi
je 0x576ff3
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 0x577efc
mov dword [ebp - 0x24], 0
xor edi, edi
mov ecx, dword [ebp - 0x4c]
mov eax, dword [ecx + 0x20]
test eax, eax
je 0x577f56
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.00576690
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.0x00576e16
mov esi, dword [ebp + 8]
mov eax, dword [esi + 0x10]
jmp 0x57704a
mov ecx, dword [ebp - 0x4c]
mov eax, dword [ecx + 0x20]
test eax, eax
je 0x57746f
mov dword [eax + 0x24], 0
jmp 0x57746f
sub eax, 0xffffff80
jmp 0x5770ea
mov ecx, dword [ebp - 0x4c]
mov eax, dword [ecx + 0x20]
test eax, eax
je 0x5773cf
mov dword [eax + 0x1c], 0
jmp 0x5773cf
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.0057acc0
jmp 0x5770bf
cmp ax, 0x10
je 0x57809d
cmp ax, 0x11
je 0x578120
movzx eax, bh
add eax, 7
cmp eax, edi
jbe 0x57803e
mov esi, dword [ebp - 0x1c]
test esi, esi
je 0x576ff3
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 0x578008
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 0x5784a3
dec ebx
cmp ebx, 0xffffffff
jne 0x578083
jmp 0x577835
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 0x578080
jmp 0x577832
movzx eax, bh
add eax, 2
cmp eax, edi
jbe 0x5780e0
mov esi, dword [ebp - 0x1c]
test esi, esi
je 0x576ff3
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 0x5780a7
movzx ecx, bh
mov eax, dword [ebp - 0x60]
sub edi, ecx
shr dword [ebp - 0x24], cl
test eax, eax
je 0x5784eb
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 0x57805d
movzx eax, bh
add eax, 3
cmp eax, edi
jbe 0x578163
mov esi, dword [ebp - 0x1c]
test esi, esi
je 0x576ff3
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 0x57812a
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 0x57805d
mov esi, dword [ebp - 0x4c]
mov eax, dword [esi + 0x20]
test eax, eax
je 0x577289
mov dword [eax + 0x10], 0
jmp 0x577289
mov esi, dword [ebp - 0x4c]
mov edx, dword [ebp - 0x18]
sub edx, eax
mov ebx, dword [esi + 0x40]
mov eax, ebx
jmp 0x5776d4
push eax
push ebx
mov eax, dword [ebp - 0x14]
push eax
mov eax, dword [ecx + 0x18]
push eax
call fcn.00576690
mov edx, dword [ebp - 0x4c]
add esp, 0x10
mov dword [edx + 0x18], eax
jmp 0x577451
mov eax, dword [ebp - 0x4c]
mov edx, dword [eax + 0x44]
jmp 0x577bce
push eax
push ebx
mov eax, dword [ebp - 0x14]
push eax
mov eax, dword [ecx + 0x18]
push eax
call fcn.00576690
mov edx, dword [ebp - 0x4c]
add esp, 0x10
mov dword [edx + 0x18], eax
jmp 0x5773b1
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 0x577cdb
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.00576690
add esp, 0x10
mov edx, dword [esi + 0x10]
mov dword [esi + 0x18], eax
jmp 0x57720d
mov esi, dword [ebp - 0x4c]
mov edx, eax
sub edx, ebx
mov eax, dword [esi + 0x34]
jmp 0x5776c6
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 0x577b71
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.00576690
mov ecx, dword [ebp - 0x4c]
add esp, 0x10
mov edx, dword [ecx + 0x10]
mov dword [ecx + 0x18], eax
jmp 0x577280
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.00576690
mov ecx, dword [ebp - 0x4c]
add esp, 0x10
mov dword [ecx + 0x18], eax
jmp 0x5771a1
xor eax, eax
mov al, bl
test al, 0x20
jne 0x5778dc
test al, 0x40
je 0x57845d
mov esi, dword [ebp + 8]
mov dword [esi + 0x18], 0x784ab1
jmp 0x5778a6
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.00576690
add esp, 0x10
mov dword [esi + 0x18], eax
jmp 0x5772fc
test dword [ebp - 0x24], 0xe000
je 0x57711f
mov esi, dword [ebp + 8]
mov dword [esi + 0x18], str.unknown_header_flags_set
jmp 0x5778a6
cmp ecx, dword [ebp - 0x24]
jmp 0x577e28
mov ecx, dword [ebp - 0x4c]
mov dword [ecx + 0x68], 0
mov dword [ecx], 0x10
jmp 0x577a70
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.0057b5c0
add esp, 0x20
test eax, eax
mov dword [ebp - 0x30], eax
je 0x577902
mov esi, dword [ebp + 8]
mov dword [esi + 0x18], str.invalid_distances_set
jmp 0x5778a6
push eax
push 0
push 0
push 0
call fcn.00576690
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.00576690
add esp, 0x10
mov dword [ebp - 0x24], 0
mov dword [esi + 0x18], eax
mov eax, 1
mov dword [esi], 1
jmp switch.0x00576e16
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.0057acc0
jmp 0x577dd8
mov eax, dword [ebp - 0x24]
and eax, 0xf
cmp eax, 8
je 0x5784bb
mov ecx, dword [ebp + 8]
mov esi, dword [ebp - 0x4c]
mov dword [ecx + 0x18], str.unknown_compression_method
jmp 0x5774d5
mov edx, dword [ebp - 0x4c]
mov ebx, eax
and ebx, 0xf
mov dword [edx + 0x48], ebx
mov dword [edx], 0x13
jmp 0x577517
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.00576690
add esp, 0x10
mov dword [esi + 0x18], eax
jmp 0x577141
mov esi, dword [ebp + 8]
mov eax, dword [ebp - 0x4c]
mov dword [esi + 0x18], str.invalid_bit_length_repeat
mov dword [eax], 0x1b
jmp 0x577846
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 0x5785fc
mov edx, dword [ebp + 8]
mov dword [edx + 0x18], str.invalid_window_size
jmp 0x5778a9
mov edx, dword [ebp + 8]
mov ecx, dword [ebp - 0x4c]
mov dword [edx + 0x18], str.invalid_bit_length_repeat
mov dword [ecx], 0x1b
jmp 0x577846
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 0x578659
jb 0x57864b
cmp eax, 2
je 0x578683
cmp eax, 3
jne 0x57854e
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 0x576e11
cmp ebx, dword [ebp - 0x1c]
jbe 0x57856c
mov ebx, dword [ebp - 0x1c]
cmp ebx, dword [ebp - 0x20]
jbe 0x578574
mov ebx, dword [ebp - 0x20]
test ebx, ebx
je 0x576ff3
push eax
push ebx
mov eax, dword [ebp - 0x14]
push eax
mov eax, dword [ebp - 0x18]
push eax
call fcn.0058e948
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 0x576e11
mov ecx, dword [ebp - 0x4c]
mov eax, dword [ecx]
jmp 0x576e11
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 0x576e2c
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.0057acc0
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 0x576e11
mov eax, dword [ebp - 0x4c]
mov dword [eax], 0xd
jmp 0x57854e
mov edx, dword [ebp - 0x4c]
mov dword [edx + 0x4c], 0x784114
mov dword [edx + 0x54], 9
mov dword [edx + 0x50], 0x784914
mov dword [edx + 0x58], 5
mov dword [edx], 0x12
jmp 0x57854e
mov ecx, dword [ebp - 0x4c]
mov dword [ecx], 0xf
jmp 0x57854e
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.0057b100
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 0x576e11