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

Disassembly:
push ebp
mov ebp, esp
mov edx, dword [ebp + 8]
sub esp, 0x30
test edx, edx
je 0x459d58
mov eax, dword [edx + 0x1c]
mov dword [ebp - 4], eax
test eax, eax
je 0x459d58
cmp dword [edx + 0xc], 0
je 0x459d58
cmp dword [edx], 0
jne 0x4582d8
cmp dword [edx + 4], 0
jne 0x459d58
cmp dword [eax], 0xb
jne 0x4582e3
mov dword [eax], 0xc
mov ecx, dword [edx + 0xc]
push ebx
mov ebx, dword [edx]
push esi
mov esi, dword [edx + 4]
mov dword [ebp - 0x20], ecx
mov ecx, dword [edx + 0x10]
mov dword [ebp - 0x18], ecx
mov ecx, dword [eax + 0x38]
push edi
mov edi, dword [eax + 0x3c]
mov eax, dword [ebp - 0x18]
mov dword [ebp - 0x24], eax
xor eax, eax
mov dword [ebp - 0x2c], eax
mov eax, dword [ebp + 0x10]
mov dword [ebp - 0x14], ebx
mov dword [ebp - 8], ecx
mov dword [ebp - 0x10], edi
mov dword [ebp - 0xc], esi
test esi, esi
jne 0x458347
mov ebx, edx
test eax, eax
je 0x458980
push ebx
push dword [ebp + 0x14]
call eax
add esp, 8
test eax, eax
je 0x458980
mov edx, dword [ebp + 8]
mov ebx, dword [ebx]
mov ecx, dword [ebp - 8]
mov dword [ebp - 0x14], ebx
mov esi, dword [edx + 4]
add dword [ebp - 0xc], esi
mov edi, dword [ebp - 4]
mov edi, dword [edi]
cmp edi, 0x1c
mov dword [ebp - 0x30], edi
mov edi, dword [ebp - 0x10]
ja case.default.0x458363
nop dword [eax + eax]
mov eax, dword [ebp - 0x30]
jmp dword [eax*4 + 0x459d64]
mov edx, dword [ebp - 4]
mov eax, dword [ebp + 0x10]
cmp dword [edx + 8], 0
mov edx, dword [ebp + 8]
jne 0x458387
mov eax, dword [ebp - 4]
mov dword [eax], 0xc
jmp 0x45969f
cmp edi, 0x10
jae 0x4583dd
nop dword [eax]
test esi, esi
jne 0x4583bb
mov ebx, dword [ebp + 8]
test eax, eax
je 0x458980
push ebx
push dword [ebp + 0x14]
call eax
add esp, 8
test eax, eax
je 0x458980
mov edx, dword [ebp + 8]
mov ebx, dword [ebx]
mov esi, dword [edx + 4]
add dword [ebp - 0xc], esi
movzx eax, byte [ebx]
mov ecx, edi
shl eax, cl
add edi, 8
mov ecx, dword [ebp - 8]
inc ebx
add ecx, eax
mov dword [ebp - 0x14], ebx
mov eax, dword [ebp + 0x10]
dec esi
mov dword [ebp - 8], ecx
mov dword [ebp - 0x10], edi
cmp edi, 0x10
jb 0x458390
mov eax, dword [ebp - 4]
test byte [eax + 8], 2
je 0x458431
cmp ecx, 0x8b1f
jne 0x458431
push 0
push 0
push 0
call fcn.0045a090
mov edi, dword [ebp - 4]
push 2
mov dword [edi + 0x18], eax
lea eax, [ebp - 0x1c]
push eax
mov word [ebp - 0x1c], 0x8b1f
push dword [edi + 0x18]
call fcn.0045a090
mov edx, dword [ebp - 4]
xor ecx, ecx
add esp, 0x18
mov dword [edi + 0x18], eax
xor edi, edi
mov dword [ebp - 8], ecx
mov dword [ebp - 0x10], edi
mov dword [edx], 1
jmp 0x459699
mov edx, dword [eax + 0x20]
test edx, edx
mov edx, dword [ebp + 8]
mov dword [eax + 0x10], 0
je 0x45844f
mov edx, dword [eax + 0x20]
mov dword [edx + 0x30], 0xffffffff
mov edx, dword [ebp + 8]
test byte [eax + 8], 1
je 0x45851a
mov eax, dword [ebp - 8]
xor edx, edx
movzx ecx, cl
shl ecx, 8
shr eax, 8
add eax, ecx
mov ecx, 0x1f
div ecx
test edx, edx
jne 0x458517
mov ecx, dword [ebp - 8]
mov eax, ecx
and al, 0xf
cmp al, 8
je 0x45849b
mov edx, dword [ebp + 8]
mov eax, dword [ebp - 4]
mov dword [edx + 0x18], str.unknown_compression_method
mov dword [eax], 0x1b
jmp 0x45969f
mov edx, dword [ebp - 4]
sub edi, 4
shr ecx, 4
mov eax, ecx
mov dword [ebp - 8], ecx
and eax, 0xf
mov dword [ebp - 0x10], edi
add eax, 8
mov dword [ebp - 0x30], eax
cmp eax, dword [edx + 0x24]
jbe 0x4584d2
mov edx, dword [ebp + 8]
mov eax, dword [ebp - 4]
mov dword [edx + 0x18], str.invalid_window_size
mov dword [eax], 0x1b
jmp 0x45969f
mov ecx, dword [ebp - 0x30]
mov edi, edx
push 0
mov eax, 1
shl eax, cl
push 0
push 0
mov dword [edi + 0x14], eax
call fcn.0045bea0
mov ecx, dword [ebp - 8]
add esp, 0xc
mov edx, dword [ebp + 8]
shr ecx, 8
not ecx
mov dword [edi + 0x18], eax
and ecx, 2
or ecx, 9
mov dword [edx + 0x30], eax
mov dword [edi], ecx
xor ecx, ecx
xor edi, edi
mov dword [ebp - 8], ecx
mov dword [ebp - 0x10], edi
jmp 0x45969c
mov edx, dword [ebp + 8]
mov ecx, dword [ebp - 4]
mov dword [edx + 0x18], str.incorrect_header_check
mov dword [ecx], 0x1b
mov ecx, dword [ebp - 8]
jmp 0x45969c
mov eax, dword [ebp + 0x10]
cmp edi, 0x10
jae 0x45858d
nop word [eax + eax]
test esi, esi
jne 0x45856b
mov ebx, dword [ebp + 8]
test eax, eax
je 0x458980
push ebx
push dword [ebp + 0x14]
call eax
add esp, 8
test eax, eax
je 0x458980
mov edx, dword [ebp + 8]
mov ebx, dword [ebx]
mov esi, dword [edx + 4]
add dword [ebp - 0xc], esi
movzx eax, byte [ebx]
mov ecx, edi
shl eax, cl
add edi, 8
mov ecx, dword [ebp - 8]
inc ebx
add ecx, eax
mov dword [ebp - 0x14], ebx
mov eax, dword [ebp + 0x10]
dec esi
mov dword [ebp - 8], ecx
mov dword [ebp - 0x10], edi
cmp edi, 0x10
jb 0x458540
mov eax, dword [ebp - 4]
mov dword [eax + 0x10], ecx
cmp cl, 8
je 0x4585aa
mov dword [edx + 0x18], str.unknown_compression_method
mov dword [eax], 0x1b
jmp 0x45969f
test ecx, 0xe000
je 0x4585c4
mov dword [edx + 0x18], str.unknown_header_flags_set
mov dword [eax], 0x1b
jmp 0x45969f
mov edi, eax
mov edx, dword [edi + 0x20]
test edx, edx
je 0x4585d7
mov eax, ecx
shr eax, 8
and eax, 1
mov dword [edx], eax
test dword [edi + 0x10], 0x200
je 0x4585fd
mov byte [ebp - 0x1c], cl
lea eax, [ebp - 0x1c]
push 2
shr ecx, 8
push eax
mov byte [ebp - 0x1b], cl
push dword [edi + 0x18]
call fcn.0045a090
add esp, 0xc
mov dword [edi + 0x18], eax
mov eax, dword [ebp - 4]
xor edi, edi
mov dword [ebp - 8], 0
mov dword [eax], 2
jmp 0x458616
cmp edi, 0x20
jae 0x458660
test esi, esi
jne 0x458644
mov eax, dword [ebp + 0x10]
mov ebx, dword [ebp + 8]
test eax, eax
je 0x458980
push ebx
push dword [ebp + 0x14]
call eax
add esp, 8
test eax, eax
je 0x458980
mov esi, dword [ebp + 8]
mov ebx, dword [ebx]
mov esi, dword [esi + 4]
add dword [ebp - 0xc], esi
movzx eax, byte [ebx]
mov ecx, edi
shl eax, cl
inc ebx
mov ecx, dword [ebp - 8]
add edi, 8
add ecx, eax
mov dword [ebp - 0x14], ebx
dec esi
mov dword [ebp - 8], ecx
cmp edi, 0x20
jb 0x458616
mov edi, dword [ebp - 4]
mov eax, dword [edi + 0x20]
test eax, eax
je 0x45866d
mov dword [eax + 4], ecx
test dword [edi + 0x10], 0x200
je 0x4586a3
mov eax, ecx
mov byte [ebp - 0x1c], cl
shr eax, 8
mov byte [ebp - 0x1b], al
mov eax, ecx
shr eax, 0x10
mov byte [ebp - 0x1a], al
lea eax, [ebp - 0x1c]
push 4
shr ecx, 0x18
push eax
mov byte [ebp - 0x19], cl
push dword [edi + 0x18]
call fcn.0045a090
add esp, 0xc
mov dword [edi + 0x18], eax
mov eax, dword [ebp - 4]
xor edi, edi
mov dword [ebp - 8], 0
mov dword [eax], 3
jmp 0x4586c0
cmp edi, 0x10
jae 0x45870a
nop dword [eax]
test esi, esi
jne 0x4586ee
mov eax, dword [ebp + 0x10]
mov ebx, dword [ebp + 8]
test eax, eax
je 0x458980
push ebx
push dword [ebp + 0x14]
call eax
add esp, 8
test eax, eax
je 0x458980
mov esi, dword [ebp + 8]
mov ebx, dword [ebx]
mov esi, dword [esi + 4]
add dword [ebp - 0xc], esi
movzx eax, byte [ebx]
mov ecx, edi
shl eax, cl
inc ebx
mov ecx, dword [ebp - 8]
add edi, 8
add ecx, eax
mov dword [ebp - 0x14], ebx
dec esi
mov dword [ebp - 8], ecx
cmp edi, 0x10
jb 0x4586c0
mov edx, dword [ebp - 4]
mov edi, dword [edx + 0x20]
test edi, edi
je 0x458723
movzx eax, cl
mov dword [edi + 8], eax
mov eax, dword [edx + 0x20]
shr ecx, 8
mov dword [eax + 0xc], ecx
test dword [edx + 0x10], 0x200
je 0x45874f
mov eax, dword [ebp - 8]
mov byte [ebp - 0x1c], al
shr eax, 8
mov byte [ebp - 0x1b], al
lea eax, [ebp - 0x1c]
push 2
push eax
push dword [edx + 0x18]
call fcn.0045a090
mov edx, dword [ebp - 4]
add esp, 0xc
mov dword [edx + 0x18], eax
xor ecx, ecx
mov dword [edx], 4
xor edi, edi
mov dword [ebp - 8], ecx
mov dword [ebp - 0x10], edi
jmp 0x458764
mov edx, dword [ebp - 4]
test dword [edx + 0x10], 0x400
je 0x45880d
cmp edi, 0x10
jae 0x4587c3
test esi, esi
jne 0x4587a4
mov eax, dword [ebp + 0x10]
mov ebx, dword [ebp + 8]
test eax, eax
je 0x458980
push ebx
push dword [ebp + 0x14]
call eax
add esp, 8
test eax, eax
je 0x458980
mov esi, dword [ebp + 8]
mov ebx, dword [ebx]
mov esi, dword [esi + 4]
add dword [ebp - 0xc], esi
movzx eax, byte [ebx]
mov ecx, edi
shl eax, cl
inc ebx
mov ecx, dword [ebp - 8]
add edi, 8
add ecx, eax
mov dword [ebp - 0x14], ebx
dec esi
mov dword [ebp - 8], ecx
cmp edi, 0x10
jb 0x458776
mov edx, dword [ebp - 4]
mov eax, dword [edx + 0x20]
mov dword [edx + 0x40], ecx
test eax, eax
je 0x4587d0
mov dword [eax + 0x14], ecx
test dword [edx + 0x10], 0x200
je 0x4587f9
mov byte [ebp - 0x1c], cl
lea eax, [ebp - 0x1c]
push 2
shr ecx, 8
push eax
mov byte [ebp - 0x1b], cl
push dword [edx + 0x18]
call fcn.0045a090
mov edx, dword [ebp - 4]
add esp, 0xc
mov dword [edx + 0x18], eax
xor edi, edi
mov dword [ebp - 8], 0
mov dword [ebp - 0x10], edi
mov dword [edx], 5
jmp 0x458826
mov eax, dword [edx + 0x20]
test eax, eax
je 0x45881b
mov dword [eax + 0x10], 0
mov dword [edx], 5
jmp 0x458826
mov edx, dword [ebp - 4]
test dword [edx + 0x10], 0x400
je 0x4588c0
mov eax, dword [edx + 0x40]
cmp eax, esi
mov ecx, eax
mov dword [ebp - 0x28], eax
cmova ecx, esi
mov dword [ebp - 0x30], ecx
test ecx, ecx
je 0x4588b6
mov eax, dword [edx + 0x20]
test eax, eax
je 0x45888d
mov ecx, dword [eax + 0x10]
test ecx, ecx
mov dword [ebp - 0x14], ecx
mov ecx, dword [ebp - 0x30]
je 0x45888d
mov edx, dword [eax + 0x14]
sub edx, dword [ebp - 0x28]
mov dword [ebp - 0x28], edx
mov edx, dword [eax + 0x18]
mov eax, dword [ebp - 0x28]
add eax, ecx
cmp eax, edx
mov eax, dword [ebp - 0x28]
jbe 0x458877
sub edx, eax
jmp 0x458879
mov edx, ecx
add eax, dword [ebp - 0x14]
push edx
push ebx
push eax
call fcn.005849d0
mov edx, dword [ebp - 4]
add esp, 0xc
mov ecx, dword [ebp - 0x30]
test dword [edx + 0x10], 0x200
je 0x4588a9
push ecx
push ebx
push dword [edx + 0x18]
call fcn.0045a090
mov edx, dword [ebp - 4]
add esp, 0xc
mov dword [edx + 0x18], eax
mov eax, dword [ebp - 0x30]
add ebx, eax
sub esi, eax
mov dword [ebp - 0x14], ebx
sub dword [edx + 0x40], eax
cmp dword [edx + 0x40], 0
jne 0x45897d
mov dword [edx + 0x40], 0
mov dword [edx], 6
jmp 0x4588d2
mov edx, dword [ebp - 4]
test dword [edx + 0x10], 0x800
je 0x4589e2
test esi, esi
jne 0x458910
mov eax, dword [ebp + 0x10]
mov ebx, dword [ebp + 8]
test eax, eax
je 0x458980
push ebx
push dword [ebp + 0x14]
call eax
mov edx, dword [ebp - 4]
add esp, 8
test eax, eax
je 0x458983
mov esi, dword [ebp + 8]
mov ebx, dword [ebx]
mov esi, dword [esi + 4]
add dword [ebp - 0xc], esi
xor ecx, ecx
movzx eax, byte [ecx + ebx]
inc ecx
mov dword [ebp - 0x30], eax
mov eax, dword [edx + 0x20]
mov dword [ebp - 0x28], ecx
test eax, eax
je 0x458942
mov edi, dword [eax + 0x1c]
test edi, edi
je 0x458942
mov edi, dword [edx + 0x40]
cmp edi, dword [eax + 0x20]
jae 0x458942
mov eax, dword [eax + 0x1c]
mov ecx, dword [ebp - 0x30]
mov byte [eax + edi], cl
inc dword [edx + 0x40]
mov ecx, dword [ebp - 0x28]
mov eax, dword [ebp - 0x30]
test eax, eax
je 0x45894d
cmp ecx, esi
jb 0x458912
test dword [edx + 0x10], 0x200
mov edi, dword [ebp - 0x10]
je 0x458972
push ecx
push ebx
push dword [edx + 0x18]
call fcn.0045a090
mov edx, dword [ebp - 4]
add esp, 0xc
mov ecx, dword [ebp - 0x28]
mov dword [edx + 0x18], eax
mov eax, dword [ebp - 0x30]
add ebx, ecx
sub esi, ecx
mov dword [ebp - 0x14], ebx
test eax, eax
je 0x4589f0
mov ebx, dword [ebp + 8]
mov edx, dword [ebp - 4]
mov eax, dword [ebp - 0x20]
mov dword [ebx + 0xc], eax
mov eax, dword [ebp - 0x18]
mov dword [ebx + 0x10], eax
mov eax, dword [ebp - 0x14]
mov dword [ebx], eax
mov eax, dword [ebp - 8]
mov dword [ebx + 4], esi
cmp dword [edx + 0x28], 0
mov dword [edx + 0x3c], edi
mov edi, dword [ebp - 0x24]
mov dword [edx + 0x38], eax
jne 0x4589bb
cmp dword [edx], 0x18
jge 0x459cc6
cmp edi, dword [ebx + 0x10]
je 0x459cc6
push edi
push ebx
call fcn.00459f90
add esp, 8
test eax, eax
je 0x459cc3
mov eax, dword [ebp - 4]
mov dword [eax], 0x1c
pop edi
pop esi
mov eax, 0xfffffffc
pop ebx
mov esp, ebp
pop ebp
ret
mov eax, dword [edx + 0x20]
test eax, eax
je 0x4589f0
mov dword [eax + 0x1c], 0
mov dword [edx + 0x40], 0
mov dword [edx], 7
jmp 0x458a02
mov edx, dword [ebp - 4]
test dword [edx + 0x10], 0x1000
je 0x458ab9
test esi, esi
jne 0x458a40
mov eax, dword [ebp + 0x10]
mov ebx, dword [ebp + 8]
test eax, eax
je 0x458980
push ebx
push dword [ebp + 0x14]
call eax
mov edx, dword [ebp - 4]
add esp, 8
test eax, eax
je 0x458983
mov esi, dword [ebp + 8]
mov ebx, dword [ebx]
mov esi, dword [esi + 4]
add dword [ebp - 0xc], esi
xor ecx, ecx
movzx eax, byte [ecx + ebx]
inc ecx
mov dword [ebp - 0x30], eax
mov eax, dword [edx + 0x20]
mov dword [ebp - 0x28], ecx
test eax, eax
je 0x458a72
mov edi, dword [eax + 0x24]
test edi, edi
je 0x458a72
mov edi, dword [edx + 0x40]
cmp edi, dword [eax + 0x28]
jae 0x458a72
mov eax, dword [eax + 0x24]
mov ecx, dword [ebp - 0x30]
mov byte [eax + edi], cl
inc dword [edx + 0x40]
mov ecx, dword [ebp - 0x28]
mov eax, dword [ebp - 0x30]
test eax, eax
je 0x458a7d
cmp ecx, esi
jb 0x458a42
test dword [edx + 0x10], 0x200
mov edi, dword [ebp - 0x10]
je 0x458aa2
push ecx
push ebx
push dword [edx + 0x18]
call fcn.0045a090
mov edx, dword [ebp - 4]
add esp, 0xc
mov ecx, dword [ebp - 0x28]
mov dword [edx + 0x18], eax
mov eax, dword [ebp - 0x30]
add ebx, ecx
sub esi, ecx
mov dword [ebp - 0x14], ebx
test eax, eax
jne 0x45897d
mov dword [edx], 8
jmp 0x458ad2
mov eax, dword [edx + 0x20]
test eax, eax
je 0x458ac7
mov dword [eax + 0x24], 0
mov dword [edx], 8
jmp 0x458ad2
mov edx, dword [ebp - 4]
test dword [edx + 0x10], 0x200
je 0x458b65
cmp edi, 0x10
jae 0x458b54
test esi, esi
jne 0x458b12
mov eax, dword [ebp + 0x10]
mov ebx, dword [ebp + 8]
test eax, eax
je 0x458980
push ebx
push dword [ebp + 0x14]
call eax
add esp, 8
test eax, eax
je 0x458980
mov esi, dword [ebp + 8]
mov ebx, dword [ebx]
mov esi, dword [esi + 4]
add dword [ebp - 0xc], esi
movzx eax, byte [ebx]
mov ecx, edi
shl eax, cl
add edi, 8
mov ecx, dword [ebp - 8]
inc ebx
add ecx, eax
mov dword [ebp - 0x14], ebx
dec esi
mov dword [ebp - 8], ecx
mov dword [ebp - 0x10], edi
cmp edi, 0x10
jb 0x458ae4
mov edx, dword [ebp - 4]
movzx eax, word [edx + 0x18]
cmp ecx, eax
je 0x458b59
mov edx, dword [ebp + 8]
mov eax, dword [ebp - 4]
mov dword [edx + 0x18], str.header_crc_mismatch
mov dword [eax], 0x1b
jmp 0x45969f
mov ecx, dword [ebp - 8]
jmp 0x458b34
xor edi, edi
mov dword [ebp - 8], 0
mov dword [ebp - 0x10], edi
mov ecx, dword [edx + 0x20]
test ecx, ecx
je 0x458b82
mov eax, dword [edx + 0x10]
sar eax, 9
and eax, 1
mov dword [ecx + 0x2c], eax
mov eax, dword [edx + 0x20]
mov dword [eax + 0x30], 1
push 0
push 0
push 0
call fcn.0045a090
mov ecx, dword [ebp - 4]
add esp, 0xc
mov edx, dword [ebp + 8]
mov dword [ecx + 0x18], eax
mov dword [edx + 0x30], eax
mov dword [ecx], 0xb
mov ecx, dword [ebp - 8]
jmp 0x45969c
mov eax, dword [ebp + 0x10]
cmp edi, 0x20
jae 0x458bfc
test esi, esi
jne 0x458bdd
mov ebx, dword [ebp + 8]
test eax, eax
je 0x458980
push ebx
push dword [ebp + 0x14]
call eax
add esp, 8
test eax, eax
je 0x458980
mov edx, dword [ebp + 8]
mov ebx, dword [ebx]
mov esi, dword [edx + 4]
add dword [ebp - 0xc], esi
movzx eax, byte [ebx]
mov ecx, edi
shl eax, cl
inc ebx
mov ecx, dword [ebp - 8]
add edi, 8
add ecx, eax
mov dword [ebp - 0x14], ebx
mov eax, dword [ebp + 0x10]
dec esi
mov dword [ebp - 8], ecx
cmp edi, 0x20
jb 0x458bb2
mov edi, dword [ebp - 8]
and ecx, 0xff00
mov eax, edi
shl eax, 0x10
add ecx, eax
mov eax, edi
shr eax, 8
shl ecx, 8
and eax, 0xff00
add eax, ecx
shr edi, 0x18
mov ecx, dword [ebp - 4]
add eax, edi
mov dword [ecx + 0x18], eax
xor ecx, ecx
mov dword [edx + 0x30], eax
xor edi, edi
mov eax, dword [ebp - 4]
mov dword [ebp - 8], ecx
mov dword [eax], 0xa
jmp 0x458c3e
mov eax, dword [ebp - 4]
cmp dword [eax + 0xc], 0
je 0x459c57
push 0
push 0
push 0
call fcn.0045bea0
mov ecx, dword [ebp - 4]
add esp, 0xc
mov edx, dword [ebp + 8]
mov dword [ecx + 0x18], eax
mov dword [edx + 0x30], eax
mov dword [ecx], 0xb
cmp dword [ebp + 0xc], 5
je 0x45897d
mov eax, dword [ebp - 4]
cmp dword [eax + 4], 0
je 0x458c98
mov ecx, edi
and ecx, 7
shr dword [ebp - 8], cl
sub edi, ecx
mov ecx, eax
mov dword [ebp - 0x10], edi
mov dword [ecx], 0x18
mov ecx, dword [ebp - 8]
jmp 0x45969f
cmp edi, 3
jae 0x458cec
nop dword [eax]
test esi, esi
jne 0x458cce
mov eax, dword [ebp + 0x10]
mov ebx, dword [ebp + 8]
test eax, eax
je 0x458980
push ebx
push dword [ebp + 0x14]
call eax
add esp, 8
test eax, eax
je 0x458980
mov edx, dword [ebp + 8]
mov ebx, dword [ebx]
mov esi, dword [edx + 4]
add dword [ebp - 0xc], esi
movzx eax, byte [ebx]
mov ecx, edi
shl eax, cl
inc ebx
mov ecx, dword [ebp - 8]
add edi, 8
add ecx, eax
mov dword [ebp - 0x14], ebx
dec esi
mov dword [ebp - 8], ecx
cmp edi, 3
jb 0x458ca0
jmp 0x458cef
mov ecx, dword [ebp - 8]
mov edx, dword [ebp - 4]
mov eax, ecx
and eax, 1
shr ecx, 1
mov dword [edx + 4], eax
mov eax, ecx
mov edx, dword [ebp + 8]
and eax, 3
jmp dword [eax*4 + 0x459dd8]
mov eax, dword [ebp - 4]
shr ecx, 2
sub edi, 3
mov dword [ebp - 8], ecx
mov dword [ebp - 0x10], edi
mov dword [eax], 0xd
jmp 0x45969f
mov eax, dword [ebp - 4]
shr ecx, 2
sub edi, 3
mov dword [ebp - 8], ecx
mov dword [ebp - 0x10], edi
mov dword [eax + 0x4c], 0x593f78
mov dword [eax + 0x54], 9
mov dword [eax + 0x50], 0x594778
mov dword [eax + 0x58], 5
mov dword [eax], 0x12
jmp 0x45969f
mov eax, dword [ebp - 4]
shr ecx, 2
sub edi, 3
mov dword [ebp - 8], ecx
mov dword [ebp - 0x10], edi
mov dword [eax], 0xf
jmp 0x45969f
mov eax, dword [ebp - 4]
shr ecx, 2
sub edi, 3
mov dword [edx + 0x18], str.invalid_block_type
mov dword [ebp - 8], ecx
mov dword [eax], 0x1b
mov dword [ebp - 0x10], edi
jmp 0x45969f
mov eax, dword [ebp + 0x10]
mov ecx, edi
and ecx, 7
shr dword [ebp - 8], cl
sub edi, ecx
mov dword [ebp - 0x10], edi
cmp edi, 0x20
jae 0x458dff
nop dword [eax + eax]
test esi, esi
jne 0x458ddb
mov ebx, dword [ebp + 8]
test eax, eax
je 0x458980
push ebx
push dword [ebp + 0x14]
call eax
add esp, 8
test eax, eax
je 0x458980
mov edx, dword [ebp + 8]
mov ebx, dword [ebx]
mov esi, dword [edx + 4]
add dword [ebp - 0xc], esi
movzx eax, byte [ebx]
mov ecx, edi
shl eax, cl
add edi, 8
mov ecx, dword [ebp - 8]
inc ebx
add ecx, eax
mov dword [ebp - 0x14], ebx
mov eax, dword [ebp + 0x10]
dec esi
mov dword [ebp - 8], ecx
mov dword [ebp - 0x10], edi
cmp edi, 0x20
jb 0x458db0
jmp 0x458e02
mov ecx, dword [ebp - 8]
movzx eax, cx
mov dword [ebp - 0x30], eax
mov eax, ecx
not eax
shr eax, 0x10
cmp dword [ebp - 0x30], eax
je 0x458e29
mov eax, dword [ebp - 4]
mov dword [edx + 0x18], str.invalid_stored_block_lengths
mov dword [eax], 0x1b
jmp 0x45969f
mov ecx, dword [ebp - 4]
mov eax, dword [ebp - 0x30]
mov dword [ecx + 0x40], eax
xor ecx, ecx
mov eax, dword [ebp - 4]
xor edi, edi
mov dword [ebp - 8], ecx
mov dword [ebp - 0x10], edi
mov dword [eax], 0xe
jmp 0x458e4a
mov eax, dword [ebp - 4]
mov edx, dword [eax + 0x40]
test edx, edx
mov dword [ebp - 0x30], edx
mov edx, dword [ebp + 8]
je 0x458e99
mov eax, dword [ebp - 0x30]
cmp eax, esi
cmova eax, esi
cmp eax, dword [ebp - 0x18]
cmova eax, dword [ebp - 0x18]
mov dword [ebp - 0x30], eax
test eax, eax
je 0x459cbc
push eax
push ebx
push dword [ebp - 0x20]
call fcn.005849d0
mov eax, dword [ebp - 0x30]
add esp, 0xc
mov ecx, dword [ebp - 4]
add ebx, eax
sub dword [ebp - 0x18], eax
sub esi, eax
add dword [ebp - 0x20], eax
mov dword [ebp - 0x14], ebx
sub dword [ecx + 0x40], eax
jmp 0x459696
mov dword [eax], 0xb
jmp 0x45969f
mov eax, dword [ebp + 0x10]
cmp edi, 0xe
jae 0x458efa
nop dword [eax]
test esi, esi
jne 0x458edb
mov ebx, dword [ebp + 8]
test eax, eax
je 0x458980
push ebx
push dword [ebp + 0x14]
call eax
add esp, 8
test eax, eax
je 0x458980
mov edx, dword [ebp + 8]
mov ebx, dword [ebx]
mov esi, dword [edx + 4]
add dword [ebp - 0xc], esi
movzx eax, byte [ebx]
mov ecx, edi
shl eax, cl
inc ebx
mov ecx, dword [ebp - 8]
add edi, 8
add ecx, eax
mov dword [ebp - 0x14], ebx
mov eax, dword [ebp + 0x10]
dec esi
mov dword [ebp - 8], ecx
cmp edi, 0xe
jb 0x458eb0
mov edx, dword [ebp - 4]
mov eax, ecx
and eax, 0x1f
shr ecx, 5
add eax, 0x101
sub edi, 0xe
mov dword [ebp - 0x10], edi
mov dword [edx + 0x60], eax
mov eax, ecx
and eax, 0x1f
shr ecx, 5
inc eax
mov dword [edx + 0x64], eax
mov eax, ecx
and eax, 0xf
shr ecx, 4
add eax, 4
mov dword [ebp - 8], ecx
mov dword [edx + 0x5c], eax
mov eax, edx
mov edx, dword [ebp + 8]
cmp dword [eax + 0x60], 0x11e
ja 0x458f55
cmp dword [eax + 0x64], 0x1e
ja 0x458f55
mov edx, eax
mov dword [edx + 0x68], 0
mov dword [edx], 0x10
jmp 0x458f6a
mov dword [edx + 0x18], str.too_many_length_or_distance_symbols
mov dword [eax], 0x1b
jmp 0x45969f
mov edx, dword [ebp - 4]
mov eax, dword [edx + 0x68]
cmp eax, dword [edx + 0x5c]
jae 0x458ffe
cmp edi, 3
jae 0x458fcd
nop dword [eax + eax]
test esi, esi
jne 0x458fae
mov eax, dword [ebp + 0x10]
mov ebx, dword [ebp + 8]
test eax, eax
je 0x458980
push ebx
push dword [ebp + 0x14]
call eax
add esp, 8
test eax, eax
je 0x458980
mov edx, dword [ebp + 8]
mov ebx, dword [ebx]
mov esi, dword [edx + 4]
add dword [ebp - 0xc], esi
movzx eax, byte [ebx]
mov ecx, edi
shl eax, cl
inc ebx
mov ecx, dword [ebp - 8]
add edi, 8
add ecx, eax
mov dword [ebp - 0x14], ebx
dec esi
mov dword [ebp - 8], ecx
cmp edi, 3
jb 0x458f80
mov edx, dword [ebp - 4]
mov eax, dword [edx + 0x68]
and ecx, 7
sub edi, 3
mov dword [ebp - 0x10], edi
movzx eax, word [eax*2 + 0x5947f8]
mov word [edx + eax*2 + 0x70], cx
mov ecx, dword [ebp - 8]
inc dword [edx + 0x68]
mov eax, dword [edx + 0x68]
shr ecx, 3
mov dword [ebp - 8], ecx
cmp eax, dword [edx + 0x5c]
jb 0x458f76
cmp dword [edx + 0x68], 0x13
jae 0x45902b
nop dword [eax]
nop dword [eax + eax]
mov eax, dword [edx + 0x68]
xor ecx, ecx
movzx eax, word [eax*2 + 0x5947f8]
mov word [edx + eax*2 + 0x70], cx
inc dword [edx + 0x68]
cmp dword [edx + 0x68], 0x13
jb 0x459010
mov ecx, dword [ebp - 4]
lea eax, [edx + 0x530]
add edx, 0x6c
mov dword [ecx + 0x4c], eax
mov dword [edx], eax
mov eax, ecx
lea ecx, [eax + 0x54]
add eax, 0x2f0
mov dword [ecx], 7
push eax
mov eax, dword [ebp - 4]
push ecx
push edx
push 0x13
add eax, 0x70
push eax
push 0
call fcn.0045c120
mov ecx, dword [ebp - 4]
add esp, 0x18
mov dword [ebp - 0x2c], eax
test eax, eax
je 0x459084
mov edx, dword [ebp + 8]
mov dword [edx + 0x18], str.invalid_code_lengths_set
mov dword [ecx], 0x1b
mov ecx, dword [ebp - 8]
jmp 0x45969c
mov dword [ecx + 0x68], 0
mov dword [ecx], 0x11
jmp 0x459096
mov ecx, dword [ebp - 4]
mov eax, dword [ecx + 0x64]
add eax, dword [ecx + 0x60]
cmp dword [ecx + 0x68], eax
jae 0x4593b4
mov ecx, dword [ecx + 0x54]
mov edx, 1
mov eax, dword [ebp - 4]
shl edx, cl
dec edx
and edx, dword [ebp - 8]
mov eax, dword [eax + 0x4c]
mov eax, dword [eax + edx*4]
mov ecx, eax
shr ecx, 8
movzx ecx, cl
mov dword [ebp - 0x28], eax
mov dword [ebp - 0x30], eax
cmp ecx, edi
jbe 0x459139
nop
test esi, esi
jne 0x4590fe
mov eax, dword [ebp + 0x10]
mov ebx, dword [ebp + 8]
test eax, eax
je 0x458980
push ebx
push dword [ebp + 0x14]
call eax
add esp, 8
test eax, eax
je 0x458980
mov esi, dword [ebp + 8]
mov ebx, dword [ebx]
mov esi, dword [esi + 4]
add dword [ebp - 0xc], esi
movzx eax, byte [ebx]
mov ecx, edi
shl eax, cl
mov edx, 1
add dword [ebp - 8], eax
inc ebx
mov eax, dword [ebp - 4]
add edi, 8
dec esi
mov dword [ebp - 0x14], ebx
mov ecx, dword [eax + 0x54]
mov eax, dword [eax + 0x4c]
shl edx, cl
dec edx
and edx, dword [ebp - 8]
mov eax, dword [eax + edx*4]
mov ecx, eax
shr ecx, 8
movzx ecx, cl
mov dword [ebp - 0x28], eax
mov dword [ebp - 0x30], eax
cmp ecx, edi
ja 0x4590d0
mov edx, dword [ebp - 8]
mov ecx, eax
shr ecx, 0x10
cmp ecx, 0x10
jae 0x4591d3
mov ecx, eax
shr ecx, 8
movzx ecx, cl
mov dword [ebp - 0x10], ecx
cmp edi, ecx
jae 0x4591ad
nop dword [eax]
test esi, esi
jne 0x459191
mov eax, dword [ebp + 0x10]
mov ebx, dword [ebp + 8]
test eax, eax
je 0x458980
push ebx
push dword [ebp + 0x14]
call eax
add esp, 8
test eax, eax
je 0x458980
mov esi, dword [ebp + 8]
mov ebx, dword [ebx]
mov edx, dword [ebp - 8]
mov esi, dword [esi + 4]
add dword [ebp - 0xc], esi
movzx eax, byte [ebx]
mov ecx, edi
shl eax, cl
inc ebx
add edx, eax
mov dword [ebp - 0x14], ebx
add edi, 8
mov dword [ebp - 8], edx
dec esi
cmp edi, dword [ebp - 0x10]
jb 0x459160
mov eax, dword [ebp - 0x28]
movzx ecx, ah
mov ax, word [ebp - 0x2e]
sub edi, ecx
shr edx, cl
mov dword [ebp - 8], edx
mov edx, dword [ebp - 4]
mov dword [ebp - 0x10], edi
mov ecx, dword [edx + 0x68]
mov word [edx + ecx*2 + 0x70], ax
mov ecx, edx
inc dword [ecx + 0x68]
jmp 0x4593a3
mov cx, word [ebp - 0x2e]
cmp cx, 0x10
jne 0x459275
movzx ecx, ah
mov dword [ebp - 0x30], ecx
lea eax, [ecx + 2]
cmp edi, eax
jae 0x45923f
nop
test esi, esi
jne 0x459221
mov eax, dword [ebp + 0x10]
mov ebx, dword [ebp + 8]
test eax, eax
je 0x458980
push ebx
push dword [ebp + 0x14]
call eax
add esp, 8
test eax, eax
je 0x458980
mov esi, dword [ebp + 8]
mov ebx, dword [ebx]
mov edx, dword [ebp - 8]
mov esi, dword [esi + 4]
add dword [ebp - 0xc], esi
movzx eax, byte [ebx]
mov ecx, edi
shl eax, cl
inc ebx
mov ecx, dword [ebp - 0x30]
add edx, eax
add edi, 8
mov dword [ebp - 8], edx
dec esi
mov dword [ebp - 0x14], ebx
lea eax, [ecx + 2]
cmp edi, eax
jb 0x4591f0
shr edx, cl
sub edi, ecx
mov ecx, dword [ebp - 4]
mov dword [ebp - 8], edx
mov dword [ebp - 0x10], edi
mov eax, dword [ecx + 0x68]
test eax, eax
je 0x45941a
movzx eax, word [ecx + eax*2 + 0x6e]
mov dword [ebp - 0x28], eax
mov eax, edx
and eax, 3
shr edx, 2
add eax, 3
sub edi, 2
mov dword [ebp - 0x30], eax
jmp 0x459367
cmp cx, 0x11
movzx ecx, ah
jne 0x4592ee
lea eax, [ecx + 3]
mov dword [ebp - 0x30], ecx
cmp edi, eax
jae 0x4592d7
test esi, esi
jne 0x4592b9
mov eax, dword [ebp + 0x10]
mov ebx, dword [ebp + 8]
test eax, eax
je 0x458980
push ebx
push dword [ebp + 0x14]
call eax
add esp, 8
test eax, eax
je 0x458980
mov esi, dword [ebp + 8]
mov ebx, dword [ebx]
mov edx, dword [ebp - 8]
mov esi, dword [esi + 4]
add dword [ebp - 0xc], esi
movzx eax, byte [ebx]
mov ecx, edi
shl eax, cl
inc ebx
mov ecx, dword [ebp - 0x30]
add edx, eax
add edi, 8
mov dword [ebp - 8], edx
dec esi
mov dword [ebp - 0x14], ebx
lea eax, [ecx + 3]
cmp edi, eax
jb 0x459288
shr edx, cl
mov eax, edx
and eax, 7
add eax, 3
shr edx, 3
mov dword [ebp - 0x30], eax
mov eax, 0xfffffffd
jmp 0x45935c
lea eax, [ecx + 7]
mov dword [ebp - 0x30], ecx
cmp edi, eax
jae 0x459347
test esi, esi
jne 0x459329
mov eax, dword [ebp + 0x10]
mov ebx, dword [ebp + 8]
test eax, eax
je 0x458980
push ebx
push dword [ebp + 0x14]
call eax
add esp, 8
test eax, eax
je 0x458980
mov esi, dword [ebp + 8]
mov ebx, dword [ebx]
mov edx, dword [ebp - 8]
mov esi, dword [esi + 4]
add dword [ebp - 0xc], esi
movzx eax, byte [ebx]
mov ecx, edi
shl eax, cl
inc ebx
mov ecx, dword [ebp - 0x30]
add edx, eax
add edi, 8
mov dword [ebp - 8], edx
dec esi
mov dword [ebp - 0x14], ebx
lea eax, [ecx + 7]
cmp edi, eax
jb 0x4592f8
shr edx, cl
mov eax, edx
and eax, 0x7f
add eax, 0xb
shr edx, 7
mov dword [ebp - 0x30], eax
mov eax, 0xfffffff9
sub eax, ecx
mov dword [ebp - 0x28], 0
add edi, eax
mov eax, dword [ebp - 4]
mov dword [ebp - 8], edx
mov edx, dword [ebp - 0x30]
mov dword [ebp - 0x10], edi
mov ecx, dword [eax + 0x68]
mov eax, dword [eax + 0x64]
add ecx, edx
mov dword [ebp - 0x30], ecx
mov ecx, dword [ebp - 4]
add eax, dword [ecx + 0x60]
cmp dword [ebp - 0x30], eax
ja 0x45941a
mov ebx, dword [ebp - 0x28]
mov eax, dword [ecx + 0x68]
mov word [ecx + eax*2 + 0x70], bx
inc dword [ecx + 0x68]
sub edx, 1
jne 0x459390
mov ebx, dword [ebp - 0x14]
mov eax, dword [ecx + 0x64]
add eax, dword [ecx + 0x60]
mov edx, dword [ecx + 0x68]
cmp edx, eax
jb 0x4590a5
cmp dword [ecx], 0x1b
je 0x459696
lea eax, [ecx + 0x530]
mov dword [ecx + 0x54], 9
lea edx, [ecx + 0x6c]
mov dword [ecx + 0x4c], eax
mov dword [edx], eax
lea eax, [ecx + 0x54]
mov dword [ebp - 0x30], edx
lea edx, [ecx + 0x2f0]
push edx
push eax
mov dword [ebp - 0x28], edx
lea eax, [ecx + 0x70]
lea edx, [ecx + 0x6c]
push edx
push dword [ecx + 0x60]
push eax
push 1
call fcn.0045c120
mov ecx, dword [ebp - 4]
add esp, 0x18
mov dword [ebp - 0x2c], eax
test eax, eax
je 0x459432
mov edx, dword [ebp + 8]
mov dword [edx + 0x18], str.invalid_literal_lengths_set
mov dword [ecx], 0x1b
mov ecx, dword [ebp - 8]
jmp 0x45969c
mov edx, dword [ebp + 8]
mov dword [edx + 0x18], str.invalid_bit_length_repeat
mov dword [ecx], 0x1b
mov ecx, dword [ebp - 8]
jmp 0x45969c
mov edx, dword [ebp - 0x30]
push dword [ebp - 0x28]
mov dword [ecx + 0x58], 6
mov eax, dword [edx]
mov dword [ecx + 0x50], eax
lea eax, [ecx + 0x58]
push eax
mov eax, dword [ecx + 0x60]
push edx
push dword [ecx + 0x64]
add ecx, 0x70
lea eax, [ecx + eax*2]
push eax
push 2
call fcn.0045c120
add esp, 0x18
mov dword [ebp - 0x2c], eax
test eax, eax
mov eax, dword [ebp - 4]
je 0x459484
mov edx, dword [ebp + 8]
mov ecx, eax
mov dword [edx + 0x18], str.invalid_distances_set
mov dword [ecx], 0x1b
mov ecx, dword [ebp - 8]
jmp 0x45969f
mov dword [eax], 0x12
jmp 0x45948f
mov eax, dword [ebp - 4]
cmp esi, 6
jb 0x4594f3
mov edx, dword [ebp - 0x18]
cmp edx, 0x102
jb 0x4594f3
mov eax, dword [ebp + 8]
mov ecx, dword [ebp - 0x20]
push dword [ebp - 0x24]
mov dword [eax + 0x10], edx
mov edx, dword [ebp - 4]
mov dword [eax + 0xc], ecx
mov ecx, dword [ebp - 8]
mov dword [eax], ebx
mov dword [eax + 4], esi
push eax
mov dword [edx + 0x38], ecx
mov dword [edx + 0x3c], edi
call fcn.0045c5a0
mov edx, dword [ebp + 8]
add esp, 8
mov edi, dword [ebp - 4]
mov eax, dword [edx + 0xc]
mov ecx, dword [edi + 0x38]
mov ebx, dword [edx]
mov edi, dword [edi + 0x3c]
mov esi, dword [edx + 4]
mov dword [ebp - 0x20], eax
mov eax, dword [edx + 0x10]
mov dword [ebp - 0x18], eax
mov dword [ebp - 0x14], ebx
mov dword [ebp - 8], ecx
mov dword [ebp - 0x10], edi
jmp 0x45969c
mov ecx, dword [eax + 0x54]
mov edx, 1
mov eax, dword [eax + 0x4c]
shl edx, cl
dec edx
and edx, dword [ebp - 8]
mov eax, dword [eax + edx*4]
mov ecx, eax
shr ecx, 8
movzx ecx, cl
cmp ecx, edi
jbe 0x459579
test esi, esi
jne 0x459541
mov eax, dword [ebp + 0x10]
mov ebx, dword [ebp + 8]
test eax, eax
je 0x458980
push ebx
push dword [ebp + 0x14]
call eax
add esp, 8
test eax, eax
je 0x458980
mov esi, dword [ebp + 8]
mov ebx, dword [ebx]
mov esi, dword [esi + 4]
add dword [ebp - 0xc], esi
movzx eax, byte [ebx]
mov ecx, edi
shl eax, cl
mov edx, 1
add dword [ebp - 8], eax
add edi, 8
mov eax, dword [ebp - 4]
inc ebx
dec esi
mov dword [ebp - 0x14], ebx
mov dword [ebp - 0x10], edi
mov ecx, dword [eax + 0x54]
mov eax, dword [eax + 0x4c]
shl edx, cl
dec edx
and edx, dword [ebp - 8]
mov eax, dword [eax + edx*4]
mov ecx, eax
shr ecx, 8
movzx ecx, cl
cmp ecx, edi
ja 0x459513
test al, al
je 0x459669
test al, 0xf0
jne 0x459669
mov ecx, eax
mov ebx, 1
shr ecx, 8
mov edx, eax
movzx edi, cl
mov dword [ebp - 0x30], ecx
movzx ecx, al
add ecx, edi
shr eax, 0x10
shl ebx, cl
mov ecx, edi
dec ebx
mov dword [ebp - 0x28], edx
and ebx, dword [ebp - 8]
shr ebx, cl
add ebx, eax
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x4c]
mov eax, dword [eax + ebx*4]
mov ecx, eax
shr ecx, 8
movzx edi, cl
mov ecx, dword [ebp - 0x30]
movzx ecx, cl
add edi, ecx
cmp edi, dword [ebp - 0x10]
mov edi, dword [ebp - 0x10]
jbe 0x45965d
test esi, esi
jne 0x45960a
mov eax, dword [ebp + 0x10]
mov ebx, dword [ebp + 8]
test eax, eax
je 0x458980
push ebx
push dword [ebp + 0x14]
call eax
add esp, 8
test eax, eax
je 0x458980
mov esi, dword [ebp + 8]
mov ebx, dword [ebx]
mov edx, dword [ebp - 0x28]
mov esi, dword [esi + 4]
add dword [ebp - 0xc], esi
jmp 0x45960d
mov ebx, dword [ebp - 0x14]
movzx eax, byte [ebx]
mov ecx, edi
shl eax, cl
add edi, 8
add dword [ebp - 8], eax
inc ebx
movzx eax, word [ebp - 0x26]
dec esi
mov dword [ebp - 0x10], edi
mov edi, 1
mov dword [ebp - 0x14], ebx
movzx ebx, dh
movzx ecx, dl
add ecx, ebx
shl edi, cl
mov ecx, ebx
dec edi
and edi, dword [ebp - 8]
shr edi, cl
add edi, eax
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x4c]
mov eax, dword [eax + edi*4]
mov ecx, eax
mov edi, dword [ebp - 0x10]
shr ecx, 8
movzx ecx, cl
add ecx, ebx
cmp ecx, edi
ja 0x4595d7
mov ebx, dword [ebp - 8]
movzx ecx, dh
shr ebx, cl
sub edi, ecx
jmp 0x45966c
mov ebx, dword [ebp - 8]
mov edx, dword [ebp - 4]
mov ecx, eax
shr ecx, 8
movzx ecx, cl
shr ebx, cl
sub edi, ecx
mov ecx, eax
mov dword [ebp - 8], ebx
shr ecx, 0x10
mov dword [ebp - 0x10], edi
mov dword [edx + 0x40], ecx
test al, al
jne 0x4596b9
mov dword [edx], 0x17
mov ebx, dword [ebp - 0x14]
mov ecx, dword [ebp - 8]
mov edx, dword [ebp + 8]
mov eax, dword [ebp - 4]
mov eax, dword [eax]
mov dword [ebp - 0x30], eax
cmp eax, 0x1c
jbe 0x458360
pop edi
pop esi
mov eax, 0xfffffffe
pop ebx
mov esp, ebp
pop ebp
ret
test al, 0x20
je 0x4596c5
mov dword [edx], 0xb
jmp 0x459693
test al, 0x40
je 0x4596e4
mov edx, dword [ebp + 8]
mov ecx, dword [ebp - 4]
mov ebx, dword [ebp - 0x14]
mov dword [edx + 0x18], str.invalid_literal_length_code
mov dword [ecx], 0x1b
mov ecx, dword [ebp - 8]
jmp 0x45969c
movzx eax, al
and eax, 0xf
mov dword [edx], 0x13
mov dword [edx + 0x48], eax
jmp 0x4596fb
mov ebx, dword [ebp - 8]
mov edx, dword [ebp - 4]
mov eax, dword [edx + 0x48]
test eax, eax
je 0x459776
cmp edi, eax
jae 0x45975c
mov edx, dword [ebp - 0x14]
nop dword [eax]
test esi, esi
jne 0x45973e
mov eax, dword [ebp + 0x10]
mov ebx, dword [ebp + 8]
test eax, eax
je 0x458980
push ebx
push dword [ebp + 0x14]
call eax
add esp, 8
test eax, eax
je 0x458980
mov esi, dword [ebx + 4]
mov edx, dword [ebx]
add dword [ebp - 0xc], esi
mov ebx, dword [ebp - 8]
movzx eax, byte [edx]
mov ecx, edi
shl eax, cl
inc edx
add ebx, eax
mov dword [ebp - 0x14], edx
mov eax, dword [ebp - 4]
add edi, 8
dec esi
mov dword [ebp - 8], ebx
cmp edi, dword [eax + 0x48]
jb 0x459710
mov edx, eax
mov ecx, dword [edx + 0x48]
mov eax, 1
shl eax, cl
dec eax
and eax, ebx
shr ebx, cl
add dword [edx + 0x40], eax
sub edi, ecx
mov dword [ebp - 8], ebx
mov dword [ebp - 0x10], edi
mov dword [edx], 0x14
mov eax, dword [ebp - 4]
mov edx, 1
mov ebx, dword [ebp - 8]
mov ecx, dword [eax + 0x58]
mov eax, dword [eax + 0x50]
shl edx, cl
dec edx
and edx, ebx
mov eax, dword [eax + edx*4]
mov ecx, eax
shr ecx, 8
movzx ecx, cl
cmp ecx, edi
jbe 0x45980d
test esi, esi
jne 0x4597d1
mov eax, dword [ebp + 0x10]
mov ebx, dword [ebp + 8]
test eax, eax
je 0x458980
push ebx
push dword [ebp + 0x14]
call eax
add esp, 8
test eax, eax
je 0x458980
mov esi, dword [ebx + 4]
mov edx, dword [ebx]
add dword [ebp - 0xc], esi
mov ebx, dword [ebp - 8]
jmp 0x4597d4
mov edx, dword [ebp - 0x14]
movzx eax, byte [edx]
mov ecx, edi
shl eax, cl
inc edx
add ebx, eax
mov dword [ebp - 0x14], edx
mov eax, dword [ebp - 4]
mov edx, 1
add edi, 8
mov dword [ebp - 8], ebx
dec esi
mov dword [ebp - 0x10], edi
mov ecx, dword [eax + 0x58]
mov eax, dword [eax + 0x50]
shl edx, cl
dec edx
and edx, ebx
mov eax, dword [eax + edx*4]
mov ecx, eax
shr ecx, 8
movzx ecx, cl
cmp ecx, edi
ja 0x4597a1
test al, 0xf0
jne 0x4598f3
mov ecx, eax
mov ebx, 1
shr ecx, 8
mov edx, eax
movzx edi, cl
mov dword [ebp - 0x30], ecx
movzx ecx, al
add ecx, edi
shr eax, 0x10
shl ebx, cl
mov ecx, edi
dec ebx
mov dword [ebp - 0x28], edx
and ebx, dword [ebp - 8]
shr ebx, cl
add ebx, eax
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x50]
mov eax, dword [eax + ebx*4]
mov ecx, eax
shr ecx, 8
movzx edi, cl
mov ecx, dword [ebp - 0x30]
movzx ecx, cl
add edi, ecx
cmp edi, dword [ebp - 0x10]
mov edi, dword [ebp - 0x10]
jbe 0x4598e9
test esi, esi
jne 0x459896
mov eax, dword [ebp + 0x10]
mov ebx, dword [ebp + 8]
test eax, eax
je 0x458980
push ebx
push dword [ebp + 0x14]
call eax
add esp, 8
test eax, eax
je 0x458980
mov esi, dword [ebp + 8]
mov ebx, dword [ebx]
mov edx, dword [ebp - 0x28]
mov esi, dword [esi + 4]
add dword [ebp - 0xc], esi
jmp 0x459899
mov ebx, dword [ebp - 0x14]
movzx eax, byte [ebx]
mov ecx, edi
shl eax, cl
add edi, 8
add dword [ebp - 8], eax
inc ebx
movzx eax, word [ebp - 0x26]
dec esi
mov dword [ebp - 0x10], edi
mov edi, 1
mov dword [ebp - 0x14], ebx
movzx ebx, dh
movzx ecx, dl
add ecx, ebx
shl edi, cl
mov ecx, ebx
dec edi
and edi, dword [ebp - 8]
shr edi, cl
add edi, eax
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x50]
mov eax, dword [eax + edi*4]
mov ecx, eax
mov edi, dword [ebp - 0x10]
shr ecx, 8
movzx ecx, cl
add ecx, ebx
cmp ecx, edi
ja 0x459863
mov ebx, dword [ebp - 8]
movzx ecx, dh
shr ebx, cl
sub edi, ecx
mov ecx, eax
shr ecx, 8
movzx ecx, cl
shr ebx, cl
sub edi, ecx
mov dword [ebp - 8], ebx
mov dword [ebp - 0x10], edi
test al, 0x40
je 0x459927
mov edx, dword [ebp + 8]
mov ecx, dword [ebp - 4]
mov ebx, dword [ebp - 0x14]
mov dword [edx + 0x18], str.invalid_distance_code
mov dword [ecx], 0x1b
mov ecx, dword [ebp - 8]
jmp 0x45969c
mov edx, dword [ebp - 4]
mov ecx, eax
shr ecx, 0x10
movzx eax, al
and eax, 0xf
mov dword [edx + 0x44], ecx
mov dword [edx + 0x48], eax
mov dword [edx], 0x15
jmp 0x459949
mov ebx, dword [ebp - 8]
mov edx, dword [ebp - 4]
mov eax, dword [edx + 0x48]
test eax, eax
je 0x4599bd
cmp edi, eax
jae 0x4599a3
mov edx, dword [ebp - 0x14]
test esi, esi
jne 0x459985
mov eax, dword [ebp + 0x10]
mov ebx, dword [ebp + 8]
test eax, eax
je 0x458980
push ebx
push dword [ebp + 0x14]
call eax
add esp, 8
test eax, eax
je 0x458980
mov esi, dword [ebx + 4]
mov edx, dword [ebx]
add dword [ebp - 0xc], esi
mov ebx, dword [ebp - 8]
movzx eax, byte [edx]
mov ecx, edi
shl eax, cl
inc edx
add ebx, eax
mov dword [ebp - 0x14], edx
mov eax, dword [ebp - 4]
add edi, 8
dec esi
mov dword [ebp - 8], ebx
cmp edi, dword [eax + 0x48]
jb 0x459957
mov edx, eax
mov ecx, dword [edx + 0x48]
mov eax, 1
shl eax, cl
dec eax
and eax, ebx
shr ebx, cl
add dword [edx + 0x44], eax
sub edi, ecx
mov dword [ebp - 8], ebx
mov dword [ebp - 0x10], edi
mov eax, dword [edx + 0x2c]
mov ebx, dword [ebp - 0x18]
sub eax, ebx
mov ecx, dword [ebp - 0x24]
add eax, ecx
cmp dword [edx + 0x44], eax
jbe 0x4599ed
mov edx, dword [ebp + 8]
mov ecx, dword [ebp - 4]
mov ebx, dword [ebp - 0x14]
mov dword [edx + 0x18], str.invalid_distance_too_far_back
mov dword [ecx], 0x1b
mov ecx, dword [ebp - 8]
jmp 0x45969c
mov dword [edx], 0x16
jmp 0x4599fe
mov edx, dword [ebp - 4]
mov ecx, dword [ebp - 0x24]
mov ebx, dword [ebp - 0x18]
test ebx, ebx
je 0x459ca8
mov eax, ecx
mov ecx, dword [edx + 0x44]
sub eax, ebx
cmp ecx, eax
jbe 0x459a33
mov ebx, dword [edx + 0x34]
sub ecx, eax
mov eax, dword [edx + 0x30]
cmp ecx, eax
jbe 0x459a26
add ebx, dword [edx + 0x28]
sub ecx, eax
sub ebx, ecx
jmp 0x459a2a
sub ebx, ecx
add ebx, eax
mov eax, dword [edx + 0x40]
cmp ecx, eax
jbe 0x459a3d
jmp 0x459a3b
mov ebx, dword [ebp - 0x20]
mov eax, dword [edx + 0x40]
sub ebx, ecx
mov ecx, eax
cmp ecx, dword [ebp - 0x18]
cmova ecx, dword [ebp - 0x18]
sub dword [ebp - 0x18], ecx
sub eax, ecx
mov dword [edx + 0x40], eax
mov edx, dword [ebp - 0x20]
sub ebx, edx
mov al, byte [ebx + edx]
mov byte [edx], al
inc edx
sub ecx, 1
jne 0x459a51
mov ebx, dword [ebp - 0x14]
mov ecx, dword [ebp - 8]
mov dword [ebp - 0x20], edx
mov edx, dword [ebp - 4]
mov eax, edx
cmp dword [edx + 0x40], 0
jne 0x459a76
mov dword [edx], 0x12
mov edx, dword [ebp + 8]
jmp 0x45969f
cmp dword [ebp - 0x18], 0
je 0x45897d
mov eax, dword [ebp - 4]
mov ecx, dword [ebp - 0x20]
inc dword [ebp - 0x20]
dec dword [ebp - 0x18]
mov al, byte [eax + 0x40]
mov byte [ecx], al
mov eax, dword [ebp - 4]
mov ecx, dword [ebp - 8]
mov dword [eax], 0x12
jmp 0x45969f
mov edx, dword [ebp - 4]
mov eax, dword [ebp + 0x10]
cmp dword [edx + 8], 0
mov edx, dword [ebp + 8]
je 0x459bc4
cmp edi, 0x20
jae 0x459b0a
test esi, esi
jne 0x459aed
mov ebx, dword [ebp + 8]
test eax, eax
je 0x458980
push ebx
push dword [ebp + 0x14]
call eax
add esp, 8
test eax, eax
je 0x458980
mov edx, dword [ebp + 8]
mov ebx, dword [ebx]
mov esi, dword [edx + 4]
add dword [ebp - 0xc], esi
movzx eax, byte [ebx]
mov ecx, edi
shl eax, cl
add edi, 8
add dword [ebp - 8], eax
inc ebx
mov eax, dword [ebp + 0x10]
dec esi
mov dword [ebp - 0x14], ebx
mov dword [ebp - 0x10], edi
cmp edi, 0x20
jb 0x459ac2
mov eax, dword [ebp - 0x24]
sub eax, dword [ebp - 0x18]
mov ecx, dword [ebp - 4]
add dword [edx + 0x14], eax
mov dword [ebp - 0x24], eax
add dword [ecx + 0x1c], eax
test eax, eax
je 0x459b4c
push eax
mov eax, dword [ebp - 0x20]
sub eax, dword [ebp - 0x24]
cmp dword [ecx + 0x10], 0
push eax
push dword [ecx + 0x18]
je 0x459b38
call fcn.0045a090
jmp 0x459b3d
call fcn.0045bea0
mov ecx, dword [ebp - 4]
add esp, 0xc
mov edx, dword [ebp + 8]
mov dword [ecx + 0x18], eax
mov dword [edx + 0x30], eax
mov eax, dword [ebp - 0x18]
cmp dword [ecx + 0x10], 0
mov ecx, dword [ebp - 8]
mov dword [ebp - 0x24], eax
je 0x459b60
mov dword [ebp - 0x28], ecx
jmp 0x459b92
mov eax, ecx
and eax, 0xff00
mov dword [ebp - 0x28], eax
mov eax, ecx
shl eax, 0x10
add dword [ebp - 0x28], eax
mov eax, ecx
shl dword [ebp - 0x28], 8
mov edx, dword [ebp - 0x28]
shr eax, 8
and eax, 0xff00
add edx, eax
mov eax, ecx
shr eax, 0x18
add edx, eax
mov dword [ebp - 0x28], edx
mov edx, dword [ebp + 8]
mov eax, dword [ebp - 4]
mov ecx, dword [ebp - 0x28]
cmp ecx, dword [eax + 0x18]
mov ecx, dword [ebp - 8]
je 0x459bb2
mov dword [edx + 0x18], str.incorrect_data_check
mov dword [eax], 0x1b
jmp 0x45969f
xor ecx, ecx
mov dword [eax], 0x19
xor edi, edi
mov dword [ebp - 8], ecx
mov dword [ebp - 0x10], edi
jmp 0x459bd2
mov eax, dword [ebp - 4]
mov dword [eax], 0x19
jmp 0x459bd2
mov eax, dword [ebp - 4]
cmp dword [eax + 8], 0
je 0x459c86
cmp dword [eax + 0x10], 0
je 0x459c86
cmp edi, 0x20
jae 0x459c40
nop dword [eax + eax]
test esi, esi
jne 0x459c1e
mov eax, dword [ebp + 0x10]
mov ebx, dword [ebp + 8]
test eax, eax
je 0x458980
push ebx
push dword [ebp + 0x14]
call eax
add esp, 8
test eax, eax
je 0x458980
mov edx, dword [ebp + 8]
mov ebx, dword [ebx]
mov esi, dword [edx + 4]
add dword [ebp - 0xc], esi
movzx eax, byte [ebx]
mov ecx, edi
shl eax, cl
add edi, 8
mov ecx, dword [ebp - 8]
inc ebx
add ecx, eax
mov dword [ebp - 0x14], ebx
dec esi
mov dword [ebp - 8], ecx
mov dword [ebp - 0x10], edi
cmp edi, 0x20
jb 0x459bf0
mov eax, dword [ebp - 4]
cmp ecx, dword [eax + 0x1c]
je 0x459c7d
mov dword [edx + 0x18], str.incorrect_length_check
mov dword [eax], 0x1b
jmp 0x45969f
mov eax, dword [ebp - 0x20]
mov dword [edx + 0xc], eax
mov eax, dword [ebp - 0x18]
mov dword [edx + 0x10], eax
mov eax, dword [ebp - 4]
mov dword [edx], ebx
mov dword [edx + 4], esi
mov dword [eax + 0x3c], edi
pop edi
pop esi
mov dword [eax + 0x38], ecx
mov eax, 2
pop ebx
mov esp, ebp
pop ebp
ret
mov dword [ebp - 8], 0
xor edi, edi
mov edx, dword [ebp - 4]
mov ebx, dword [ebp + 8]
mov dword [ebp - 0x2c], 1
mov dword [edx], 0x1a
jmp 0x458983
mov edx, dword [ebp - 4]
mov dword [ebp - 0x2c], 1
mov ebx, dword [ebp + 8]
jmp 0x458983
mov dword [ebp - 0x2c], 0xfffffffd
jmp 0x45897d
mov ebx, edx
jmp 0x458980
mov edx, dword [ebp - 4]
mov esi, dword [ebp - 0xc]
sub esi, dword [ebx + 4]
sub edi, dword [ebx + 0x10]
add dword [ebx + 8], esi
add dword [ebx + 0x14], edi
add dword [edx + 0x1c], edi
cmp dword [edx + 8], 0
je 0x459d0a
test edi, edi
je 0x459d0a
mov eax, dword [ebx + 0xc]
push edi
sub eax, edi
cmp dword [edx + 0x10], 0
push eax
push dword [edx + 0x18]
je 0x459cf9
call fcn.0045a090
jmp 0x459cfe
call fcn.0045bea0
mov edx, dword [ebp - 4]
add esp, 0xc
mov dword [edx + 0x18], eax
mov dword [ebx + 0x30], eax
mov ecx, dword [edx + 4]
neg ecx
mov dword [ebp + 8], 0x80
sbb ecx, ecx
xor eax, eax
and ecx, 0x40
cmp dword [edx], 0xb
cmove eax, dword [ebp + 8]
add ecx, eax
add ecx, dword [edx + 0x3c]
mov dword [ebx + 0x2c], ecx
test esi, esi
jne 0x459d34
test edi, edi
je 0x459d3a
cmp dword [ebp + 0xc], 4
jne 0x459d4e
mov eax, dword [ebp - 0x2c]
mov ecx, 0xfffffffb
pop edi
test eax, eax
pop esi
cmove eax, ecx
pop ebx
mov esp, ebp
pop ebp
ret
mov eax, dword [ebp - 0x2c]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov eax, 0xfffffffe
mov esp, ebp
pop ebp
ret