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

Disassembly:
push ebp
push edi
push esi
push ebx
sub esp, 0x7c
mov eax, dword [esp + 0x90]
test eax, eax
je case.default.0x46b1b7
mov eax, dword [esp + 0x90]
mov eax, dword [eax + 0x1c]
test eax, eax
mov dword [esp + 0x24], eax
je case.default.0x46b1b7
mov eax, dword [esp + 0x90]
mov eax, dword [eax + 0xc]
test eax, eax
mov dword [esp + 0x34], eax
je case.default.0x46b1b7
mov eax, dword [esp + 0x90]
mov edi, dword [eax]
test edi, edi
je 0x46c490
mov eax, dword [eax + 4]
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0x24]
mov eax, dword [eax]
cmp eax, 0xb
je 0x46b300
mov ebx, dword [esp + 0x90]
mov edx, dword [esp + 0x24]
mov dword [esp + 0x38], 0
mov ebx, dword [ebx + 0x10]
mov esi, dword [edx + 0x3c]
mov ebp, dword [edx + 0x38]
mov ecx, ebx
mov dword [esp + 0x30], ebx
mov ebx, dword [esp + 0x2c]
mov dword [esp + 0x28], ecx
lea ecx, [edx + 0x70]
add edx, 0x530
mov dword [esp + 0x4c], ecx
mov ecx, esi
mov esi, ebp
mov dword [esp + 0x50], edx
mov ebp, edi
mov edi, ebx
mov ebx, ecx
cmp eax, 0x1e
ja case.default.0x46b1b7
jmp dword [eax*4 + 0x4b4390]
cmp ebx, 0x1f
ja 0x46b1f0
test edi, edi
je 0x46b5a0
mov ecx, ebx
nop
jmp 0x46b1da
test edi, edi
je 0x46c400
add ebp, 1
movzx eax, byte [ebp - 1]
sub edi, 1
shl eax, cl
add ecx, 8
add esi, eax
cmp ecx, 0x1f
jbe 0x46b1d2
mov edx, esi
mov eax, esi
mov ebx, dword [esp + 0x24]
shr eax, 0x18
shl edx, 0x18
add edx, eax
mov eax, esi
shr eax, 8
and eax, 0xff00
add edx, eax
mov eax, esi
mov esi, dword [esp + 0x90]
and eax, 0xff00
shl eax, 8
add eax, edx
mov dword [ebx + 0x18], eax
mov dword [esi + 0x30], eax
xor esi, esi
mov dword [ebx], 0xa
xor ebx, ebx
mov eax, dword [esp + 0x24]
mov edx, dword [eax + 0xc]
test edx, edx
je 0x46cc58
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov dword [esp], 0
call fcn.0046d6b0
mov edx, dword [esp + 0x24]
mov ecx, dword [esp + 0x90]
mov dword [edx + 0x18], eax
mov dword [ecx + 0x30], eax
mov dword [edx], 0xb
mov eax, dword [esp + 0x94]
sub eax, 5
cmp eax, 1
jbe 0x46b5a0
mov eax, dword [esp + 0x24]
mov eax, dword [eax + 4]
test eax, eax
jne 0x46b314
cmp ebx, 2
ja 0x46b2b3
test edi, edi
je 0x46b5a0
add ebp, 1
movzx eax, byte [ebp - 1]
mov ecx, ebx
sub edi, 1
add ebx, 8
shl eax, cl
add esi, eax
mov ecx, dword [esp + 0x24]
mov eax, esi
mov edx, esi
and eax, 1
shr edx, 1
mov dword [ecx + 4], eax
mov eax, edx
and eax, 3
cmp eax, 2
je 0x46c6b7
cmp eax, 3
je 0x46c93e
cmp eax, 1
je 0x46c900
mov dword [ecx], 0xd
mov eax, 0xd
mov esi, edx
sub ebx, 3
shr esi, 2
jmp 0x46b1ae
mov eax, dword [esp + 0x24]
mov dword [eax], 0xc
mov eax, 0xc
jmp 0x46b169
mov eax, dword [esp + 0x24]
mov ecx, ebx
and ebx, 0xfffffff8
and ecx, 7
shr esi, cl
mov dword [eax], 0x1a
mov eax, 0x1a
jmp switch.0x0046b1b7
mov eax, dword [esp + 0x24]
mov edx, dword [eax + 0x48]
test edx, edx
je 0x46b396
cmp ebx, edx
jae 0x46b371
test edi, edi
je 0x46b5a0
mov ecx, ebx
nop
lea esi, [esi]
jmp 0x46b35a
test edi, edi
je 0x46c400
add ebp, 1
movzx eax, byte [ebp - 1]
sub edi, 1
shl eax, cl
add ecx, 8
add esi, eax
cmp ecx, edx
jb 0x46b352
mov ebx, ecx
mov ecx, edx
mov eax, 1
shl eax, cl
mov ecx, dword [esp + 0x24]
sub ebx, edx
sub eax, 1
and eax, esi
add dword [ecx + 0x44], eax
mov ecx, edx
shr esi, cl
mov ecx, dword [esp + 0x24]
add dword [ecx + 0x1bc4], edx
mov eax, dword [esp + 0x24]
mov dword [eax], 0x18
mov edx, dword [esp + 0x30]
test edx, edx
je 0x46b5a0
mov ecx, dword [esp + 0x24]
mov eax, dword [esp + 0x28]
mov ecx, dword [ecx + 0x44]
sub eax, edx
cmp eax, ecx
jae 0x46c510
sub ecx, eax
mov eax, dword [esp + 0x24]
cmp ecx, dword [eax + 0x2c]
ja 0x46c614
mov eax, dword [esp + 0x24]
mov eax, dword [eax + 0x30]
cmp ecx, eax
jbe 0x46c832
sub ecx, eax
mov eax, dword [esp + 0x24]
mov edx, dword [eax + 0x28]
mov eax, dword [eax + 0x34]
mov dword [esp + 0x3c], edx
sub dword [esp + 0x3c], ecx
add dword [esp + 0x3c], eax
mov eax, dword [esp + 0x24]
mov edx, dword [eax + 0x40]
cmp ecx, edx
cmova ecx, edx
jmp 0x46c523
mov eax, dword [esp + 0x24]
cmp dword [esp + 0x94], 6
mov dword [eax], 0x13
je 0x46b5a0
mov eax, dword [esp + 0x24]
mov dword [eax], 0x14
cmp edi, 5
ja 0x46c707
mov eax, dword [esp + 0x24]
mov ecx, dword [eax + 0x4c]
mov dword [eax + 0x1bc4], 0
mov edx, ecx
mov dword [esp + 0x40], ecx
mov ecx, dword [eax + 0x54]
mov eax, 1
shl eax, cl
sub eax, 1
mov dword [esp + 0x48], eax
and eax, esi
lea eax, [edx + eax*4]
movzx edx, byte [eax]
mov byte [esp + 0x3c], dl
movzx edx, byte [eax + 1]
movzx eax, word [eax + 2]
mov word [esp + 0x54], ax
movzx eax, dl
cmp ebx, eax
mov dword [esp + 0x44], eax
jae 0x46b4db
test edi, edi
je 0x46b5a0
mov ecx, ebx
mov ebx, esi
mov esi, edi
jmp 0x46b498
test esi, esi
je 0x46c6d2
add ebp, 1
movzx eax, byte [ebp - 1]
sub esi, 1
mov edi, dword [esp + 0x40]
shl eax, cl
add ecx, 8
add ebx, eax
mov eax, dword [esp + 0x48]
and eax, ebx
lea eax, [edi + eax*4]
movzx edx, byte [eax]
movzx edi, word [eax + 2]
mov byte [esp + 0x3c], dl
movzx edx, byte [eax + 1]
movzx eax, dl
cmp eax, ecx
mov dword [esp + 0x44], eax
ja 0x46b490
mov word [esp + 0x54], di
mov edi, esi
mov esi, ebx
mov ebx, ecx
cmp byte [esp + 0x3c], 0
je 0x46c7a0
test byte [esp + 0x3c], 0xf0
jne 0x46c7a0
movzx ecx, word [esp + 0x54]
mov dword [esp + 0x48], eax
mov eax, 1
mov dword [esp + 0x58], ecx
movzx ecx, byte [esp + 0x3c]
add cl, byte [esp + 0x48]
shl eax, cl
mov ecx, edx
sub eax, 1
mov dword [esp + 0x5c], eax
and eax, esi
shr eax, cl
mov ecx, dword [esp + 0x40]
add eax, dword [esp + 0x58]
lea eax, [ecx + eax*4]
movzx edx, byte [eax]
movzx ecx, word [eax + 2]
movzx eax, byte [eax + 1]
mov byte [esp + 0x3c], dl
mov edx, dword [esp + 0x48]
mov word [esp + 0x54], cx
add edx, eax
cmp ebx, edx
jb 0x46b598
jmp 0x46cb0c
add ebp, 1
movzx eax, byte [ebp - 1]
mov ecx, ebx
add ebx, 8
sub edi, 1
shl eax, cl
movzx ecx, byte [esp + 0x48]
add esi, eax
mov eax, dword [esp + 0x5c]
and eax, esi
shr eax, cl
mov ecx, dword [esp + 0x40]
add eax, dword [esp + 0x58]
lea eax, [ecx + eax*4]
movzx edx, byte [eax]
movzx ecx, word [eax + 2]
movzx eax, byte [eax + 1]
mov byte [esp + 0x3c], dl
mov edx, dword [esp + 0x48]
add edx, eax
cmp edx, ebx
jbe 0x46cb07
test edi, edi
jne 0x46b550
lea esi, [esi]
mov eax, ebx
mov ebx, edi
mov edi, ebp
mov ebp, esi
mov esi, eax
jmp 0x46b780
mov eax, dword [esp + 0x24]
mov edx, dword [eax + 0x48]
test edx, edx
jne 0x46c586
mov eax, dword [esp + 0x24]
mov eax, dword [eax + 0x40]
mov edx, dword [esp + 0x24]
mov dword [edx + 0x1bc8], eax
mov dword [edx], 0x16
mov eax, dword [esp + 0x24]
mov ecx, dword [eax + 0x50]
mov edx, ecx
mov dword [esp + 0x40], ecx
mov ecx, dword [eax + 0x58]
mov eax, 1
shl eax, cl
sub eax, 1
mov dword [esp + 0x48], eax
and eax, esi
lea eax, [edx + eax*4]
movzx edx, byte [eax]
mov byte [esp + 0x3c], dl
movzx edx, byte [eax + 1]
movzx eax, word [eax + 2]
mov word [esp + 0x54], ax
movzx eax, dl
cmp ebx, eax
mov dword [esp + 0x44], eax
jae 0x46b66f
test edi, edi
je 0x46b5a0
mov ecx, ebx
mov ebx, edi
mov edi, ebp
jmp 0x46b62c
test ebx, ebx
je 0x46c404
add edi, 1
movzx eax, byte [edi - 1]
sub ebx, 1
mov edx, dword [esp + 0x40]
shl eax, cl
add ecx, 8
add esi, eax
mov eax, dword [esp + 0x48]
and eax, esi
lea eax, [edx + eax*4]
movzx edx, byte [eax]
movzx ebp, word [eax + 2]
mov byte [esp + 0x3c], dl
movzx edx, byte [eax + 1]
movzx eax, dl
cmp eax, ecx
mov dword [esp + 0x44], eax
ja 0x46b624
mov word [esp + 0x54], bp
mov ebp, edi
mov edi, ebx
mov ebx, ecx
test byte [esp + 0x3c], 0xf0
jne 0x46c644
movzx ecx, word [esp + 0x54]
mov dword [esp + 0x5c], eax
mov eax, 1
mov dword [esp + 0x48], ecx
movzx ecx, byte [esp + 0x3c]
add cl, byte [esp + 0x5c]
shl eax, cl
mov ecx, edx
sub eax, 1
mov dword [esp + 0x58], eax
and eax, esi
shr eax, cl
mov ecx, dword [esp + 0x40]
add eax, dword [esp + 0x48]
lea eax, [ecx + eax*4]
movzx edx, byte [eax]
movzx ecx, word [eax + 2]
movzx eax, byte [eax + 1]
mov byte [esp + 0x3c], dl
mov edx, dword [esp + 0x5c]
mov word [esp + 0x54], cx
add edx, eax
cmp ebx, edx
jae 0x46b732
test edi, edi
je 0x46b5a0
mov eax, esi
mov edx, dword [esp + 0x5c]
mov esi, edi
mov edi, eax
jmp 0x46b6e9
test esi, esi
je 0x46c8cd
add ebp, 1
movzx eax, byte [ebp - 1]
mov ecx, ebx
add ebx, 8
sub esi, 1
shl eax, cl
mov ecx, edx
add edi, eax
mov eax, dword [esp + 0x58]
and eax, edi
shr eax, cl
mov ecx, dword [esp + 0x40]
add eax, dword [esp + 0x48]
lea eax, [ecx + eax*4]
movzx ecx, byte [eax]
mov byte [esp + 0x3c], cl
movzx ecx, word [eax + 2]
movzx eax, byte [eax + 1]
mov word [esp + 0x54], cx
lea ecx, [eax + edx]
cmp ecx, ebx
ja 0x46b6e1
mov edx, edi
mov edi, esi
mov esi, edx
mov edx, dword [esp + 0x5c]
sub ebx, dword [esp + 0x44]
mov ecx, edx
shr esi, cl
mov ecx, dword [esp + 0x24]
add edx, dword [ecx + 0x1bc4]
jmp 0x46c64e
mov eax, dword [esp + 0x24]
mov dword [eax], 0x1e
mov eax, 0xfffffffc
lea esi, [esi]
add esp, 0x7c
pop ebx
pop esi
pop edi
pop ebp
ret
mov eax, ebx
mov ebx, edi
mov dword [esp + 0x38], 1
mov edi, ebp
mov ebp, esi
mov esi, eax
lea esi, [esi]
mov eax, dword [esp + 0x90]
mov edx, dword [esp + 0x34]
mov ecx, eax
mov dword [eax + 0xc], edx
mov eax, dword [esp + 0x24]
mov dword [ecx + 4], ebx
mov edx, dword [esp + 0x30]
mov dword [ecx], edi
mov ebx, dword [eax + 0x28]
mov dword [ecx + 0x10], edx
mov dword [eax + 0x38], ebp
mov dword [eax + 0x3c], esi
test ebx, ebx
jne 0x46b7d0
mov ebx, dword [esp + 0x28]
cmp edx, ebx
je 0x46b7e8
mov eax, dword [eax]
cmp eax, 0x1c
ja 0x46b7e8
cmp eax, 0x19
jbe 0x46b7d0
cmp dword [esp + 0x94], 4
je 0x46b7e8
nop
lea esi, [esi]
mov edx, dword [esp + 0x28]
mov eax, dword [esp + 0x90]
call fcn.0046aca0
test eax, eax
jne 0x46b74d
mov eax, dword [esp + 0x90]
mov ebx, dword [esp + 0x2c]
mov esi, dword [esp + 0x28]
sub esi, dword [eax + 0x10]
sub ebx, dword [eax + 4]
add dword [eax + 0x14], esi
add dword [eax + 8], ebx
mov eax, dword [esp + 0x24]
mov ecx, dword [eax + 8]
add dword [eax + 0x1c], esi
test ecx, ecx
je 0x46b850
test esi, esi
je 0x46b850
mov edx, dword [eax + 0x10]
test edx, edx
je 0x46c4d0
mov edx, dword [eax + 0x18]
mov eax, dword [esp + 0x90]
mov dword [esp + 8], esi
mov eax, dword [eax + 0xc]
mov dword [esp], edx
sub eax, esi
mov dword [esp + 4], eax
call fcn.0046dbe0
mov edi, dword [esp + 0x24]
mov dword [edi + 0x18], eax
mov edi, dword [esp + 0x90]
mov dword [edi + 0x30], eax
mov edi, dword [esp + 0x24]
cmp dword [edi + 4], 1
mov edx, dword [edi]
sbb eax, eax
not eax
and eax, 0x40
add eax, dword [edi + 0x3c]
cmp edx, 0xb
je 0x46c410
cmp edx, 0xe
jne 0x46c420
mov edx, 0x100
mov edi, dword [esp + 0x90]
add eax, edx
or esi, ebx
mov dword [edi + 0x2c], eax
je 0x46b89d
cmp dword [esp + 0x94], 4
mov eax, dword [esp + 0x38]
jne 0x46b760
mov ebx, dword [esp + 0x38]
mov eax, 0xfffffffb
test ebx, ebx
cmovne eax, ebx
add esp, 0x7c
pop ebx
pop esi
pop edi
pop ebp
ret
cmp ebx, 0x1f
ja 0x46b8e2
test edi, edi
je 0x46b5a0
mov ecx, ebx
jmp 0x46b8cc
test edi, edi
je 0x46c400
add ebp, 1
movzx eax, byte [ebp - 1]
sub edi, 1
shl eax, cl
add ecx, 8
add esi, eax
cmp ecx, 0x1f
jbe 0x46b8c4
mov eax, dword [esp + 0x24]
mov eax, dword [eax + 0x20]
test eax, eax
je 0x46b8f0
mov dword [eax + 4], esi
mov eax, dword [esp + 0x24]
test byte [eax + 0x11], 2
jne 0x46c987
mov eax, dword [esp + 0x24]
xor esi, esi
xor ebx, ebx
mov dword [eax], 3
jmp 0x46b97a
mov eax, dword [esp + 0x24]
mov eax, dword [eax + 0x40]
mov edx, dword [esp + 0x24]
mov dword [edx], 0xf
test eax, eax
je 0x46c4f8
mov edx, dword [esp + 0x30]
cmp edi, eax
cmovbe eax, edi
cmp eax, edx
cmova eax, edx
test eax, eax
je 0x46b5a0
mov dword [esp + 8], eax
mov dword [esp + 0x3c], eax
mov eax, dword [esp + 0x34]
mov dword [esp + 4], ebp
mov dword [esp], eax
call sub.msvcrt.dll_memcpy
mov edx, dword [esp + 0x3c]
mov eax, dword [esp + 0x24]
sub dword [esp + 0x30], edx
add dword [esp + 0x34], edx
sub edi, edx
add ebp, edx
sub dword [eax + 0x40], edx
mov eax, dword [eax]
jmp 0x46b1ae
cmp ebx, 0xf
ja 0x46b9a4
test edi, edi
je 0x46b5a0
mov ecx, ebx
jmp 0x46b98e
test edi, edi
je 0x46c400
add ebp, 1
movzx eax, byte [ebp - 1]
sub edi, 1
shl eax, cl
add ecx, 8
add esi, eax
cmp ecx, 0xf
jbe 0x46b986
mov eax, dword [esp + 0x24]
mov eax, dword [eax + 0x20]
test eax, eax
je 0x46b9bf
mov ebx, esi
movzx edx, bl
mov dword [eax + 8], edx
mov edx, esi
shr edx, 8
mov dword [eax + 0xc], edx
mov eax, dword [esp + 0x24]
mov edx, dword [eax + 0x10]
test dh, 2
mov eax, edx
jne 0x46c892
mov ebx, dword [esp + 0x24]
xor esi, esi
mov dword [ebx], 4
xor ebx, ebx
test dh, 4
jne 0x46c38a
mov edx, dword [esp + 0x24]
mov edx, dword [edx + 0x20]
test edx, edx
je 0x46c6cb
mov dword [edx + 0x10], 0
xor edx, edx
mov ecx, dword [esp + 0x24]
mov dword [ecx], 5
jmp 0x46c0df
mov eax, dword [esp + 0x24]
mov eax, dword [eax + 0x68]
mov dword [esp + 0x44], eax
mov ecx, dword [esp + 0x24]
mov eax, dword [ecx + 0x60]
mov dword [esp + 0x54], eax
add eax, dword [ecx + 0x64]
mov dword [esp + 0x48], eax
mov eax, dword [esp + 0x48]
cmp dword [esp + 0x44], eax
mov eax, dword [esp + 0x24]
jae 0x46cc23
mov ecx, dword [eax + 0x54]
mov edx, dword [eax + 0x4c]
mov eax, 1
shl eax, cl
lea eax, [eax - 1]
mov dword [esp + 0x40], eax
and eax, esi
lea eax, [edx + eax*4]
movzx ecx, byte [eax + 1]
movzx eax, word [eax + 2]
mov word [esp + 0x3c], ax
movzx eax, cl
cmp ebx, eax
jae 0x46baba
test edi, edi
je 0x46b5a0
mov ecx, ebx
mov ebx, edx
jmp 0x46ba88
test edi, edi
je 0x46c400
add ebp, 1
movzx eax, byte [ebp - 1]
sub edi, 1
shl eax, cl
add ecx, 8
add esi, eax
mov eax, dword [esp + 0x40]
and eax, esi
lea eax, [ebx + eax*4]
movzx edx, byte [eax + 1]
movzx eax, word [eax + 2]
mov word [esp + 0x3c], ax
movzx eax, dl
cmp eax, ecx
ja 0x46ba80
mov ebx, ecx
mov ecx, edx
cmp word [esp + 0x3c], 0xf
jbe 0x46c690
cmp word [esp + 0x3c], 0x10
je 0x46ca93
cmp word [esp + 0x3c], 0x11
je 0x46cb1c
lea edx, [eax + 7]
cmp ebx, edx
jae 0x46bb16
test edi, edi
je 0x46b5a0
mov ecx, ebx
mov ebx, eax
mov eax, edx
jmp 0x46bafd
test edi, edi
je 0x46c400
add ebp, 1
movzx edx, byte [ebp - 1]
sub edi, 1
shl edx, cl
add ecx, 8
add esi, edx
cmp ecx, eax
jb 0x46baf5
mov eax, ebx
mov ebx, ecx
mov ecx, eax
sub ebx, eax
shr esi, cl
sub ebx, 7
mov edx, esi
and esi, 0x7f
add esi, 0xb
xor ecx, ecx
mov dword [esp + 0x3c], esi
mov esi, edx
shr esi, 7
mov eax, dword [esp + 0x3c]
add eax, dword [esp + 0x44]
cmp eax, dword [esp + 0x48]
mov edx, eax
mov dword [esp + 0x3c], eax
ja 0x46ce79
mov word [esp + 0x40], cx
mov eax, dword [esp + 0x44]
mov ecx, dword [esp + 0x24]
lea eax, [ecx + eax*2 + 0x70]
mov ecx, dword [esp + 0x4c]
lea edx, [ecx + edx*2]
movzx ecx, word [esp + 0x40]
mov word [eax], cx
add eax, 2
cmp eax, edx
jne 0x46bb67
mov eax, dword [esp + 0x3c]
mov edx, dword [esp + 0x24]
mov dword [esp + 0x44], eax
mov dword [edx + 0x68], eax
jmp 0x46ba2d
cmp ebx, 0xf
ja 0x46bbb6
test edi, edi
je 0x46b5a0
mov ecx, ebx
jmp 0x46bb9e
test edi, edi
je 0x46c400
add ebp, 1
movzx eax, byte [ebp - 1]
sub edi, 1
shl eax, cl
add ecx, 8
add esi, eax
cmp ecx, 0xf
jbe 0x46bb96
mov ebx, ecx
mov edx, dword [esp + 0x24]
mov eax, esi
cmp al, 8
mov dword [edx + 0x10], esi
je 0x46c9fc
mov eax, dword [esp + 0x90]
mov dword [eax + 0x18], str.unknown_compression_method
mov eax, 0x1d
mov dword [edx], 0x1d
jmp switch.0x0046b1b7
cmp ebx, 0xd
ja 0x46bc16
test edi, edi
je 0x46b5a0
mov ecx, ebx
jmp 0x46bbfe
test edi, edi
je 0x46c400
add ebp, 1
movzx eax, byte [ebp - 1]
sub edi, 1
shl eax, cl
add ecx, 8
add esi, eax
cmp ecx, 0xd
jbe 0x46bbf6
mov ebx, ecx
mov ecx, dword [esp + 0x24]
mov edx, esi
mov eax, esi
shr edx, 5
and eax, 0x1f
and edx, 0x1f
add eax, 0x101
add edx, 1
sub ebx, 0xe
mov dword [ecx + 0x64], edx
mov dword [ecx + 0x60], eax
mov ecx, esi
shr ecx, 0xa
and ecx, 0xf
add ecx, 4
mov dword [esp + 0x3c], edx
mov edx, ecx
mov dword [esp + 0x40], ecx
mov ecx, dword [esp + 0x24]
shr esi, 0xe
cmp eax, 0x11e
mov dword [ecx + 0x5c], edx
ja 0x46c810
cmp dword [esp + 0x3c], 0x1e
ja 0x46c810
mov eax, dword [esp + 0x24]
xor edx, edx
mov ecx, ebx
mov dword [esp + 0x3c], edx
mov dword [eax + 0x68], 0
mov dword [eax], 0x11
jmp 0x46bca2
mov eax, dword [esp + 0x24]
mov edx, dword [eax + 0x5c]
mov ecx, edx
mov dword [esp + 0x40], edx
mov edx, dword [eax + 0x68]
cmp ecx, edx
jbe 0x46bcf8
mov ecx, ebx
mov dword [esp + 0x3c], edx
cmp ecx, 2
ja 0x46bcc0
test edi, edi
je 0x46c400
add ebp, 1
movzx eax, byte [ebp - 1]
sub edi, 1
shl eax, cl
add ecx, 8
add esi, eax
add dword [esp + 0x3c], 1
sub ecx, 3
mov ebx, dword [esp + 0x3c]
mov edx, dword [esp + 0x24]
movzx eax, word [ebx + ebx + 0x4b4c9e]
mov dword [edx + 0x68], ebx
mov ebx, esi
and ebx, 7
shr esi, 3
mov word [edx + eax*2 + 0x70], bx
mov eax, dword [esp + 0x3c]
cmp dword [esp + 0x40], eax
ja 0x46bca2
mov edx, dword [esp + 0x3c]
mov ebx, ecx
cmp edx, 0x12
mov ecx, dword [esp + 0x24]
lea eax, [edx + edx + 0x4b4ca0]
ja 0x46bd27
movzx edx, word [eax]
add eax, 2
cmp eax, 0x4b4cc6
mov word [ecx + edx*2 + 0x70], 0
jne 0x46bd08
mov eax, dword [esp + 0x24]
mov dword [eax + 0x68], 0x13
mov eax, dword [esp + 0x24]
mov edx, dword [esp + 0x50]
mov dword [eax + 0x54], 7
mov dword [eax + 0x6c], edx
mov dword [eax + 0x4c], edx
mov edx, eax
add eax, 0x2f0
mov dword [esp + 0x14], eax
mov eax, edx
add eax, 0x54
mov dword [esp + 0x10], eax
mov eax, edx
add eax, 0x6c
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0x4c]
mov dword [esp + 8], 0x13
mov dword [esp], 0
mov dword [esp + 4], eax
call fcn.0046ded0
test eax, eax
mov dword [esp + 0x38], eax
je 0x46cc05
mov eax, dword [esp + 0x90]
mov dword [eax + 0x18], str.invalid_code_lengths_set
mov eax, dword [esp + 0x24]
mov dword [eax], 0x1d
mov eax, 0x1d
jmp switch.0x0046b1b7
mov eax, dword [esp + 0x24]
mov eax, dword [eax + 0x40]
jmp 0x46b921
mov eax, ebx
mov ebx, edi
mov dword [esp + 0x38], 0xfffffffd
mov edi, ebp
mov ebp, esi
mov esi, eax
jmp 0x46b780
mov ecx, dword [esp + 0x30]
test ecx, ecx
je 0x46b5a0
mov edx, dword [esp + 0x24]
mov ecx, dword [esp + 0x34]
sub dword [esp + 0x30], 1
mov eax, dword [edx + 0x40]
mov byte [ecx], al
lea eax, [ecx + 1]
mov dword [esp + 0x34], eax
mov eax, 0x14
mov dword [edx], 0x14
jmp switch.0x0046b1b7
mov eax, dword [esp + 0x24]
mov eax, dword [eax + 8]
test eax, eax
je 0x46c5f1
cmp ebx, 0x1f
ja 0x46be42
test edi, edi
je 0x46b5a0
mov ecx, ebx
nop
jmp 0x46be2a
test edi, edi
je 0x46c400
add ebp, 1
movzx eax, byte [ebp - 1]
sub edi, 1
shl eax, cl
add ecx, 8
add esi, eax
cmp ecx, 0x1f
jbe 0x46be22
mov ebx, ecx
mov eax, dword [esp + 0x28]
mov ecx, dword [esp + 0x90]
mov edx, dword [esp + 0x24]
sub eax, dword [esp + 0x30]
add dword [ecx + 0x14], eax
add dword [edx + 0x1c], eax
test eax, eax
je 0x46be96
mov ecx, edx
mov edx, dword [edx + 0x10]
test edx, edx
je 0x46cbe3
mov edx, dword [ecx + 0x18]
mov ecx, dword [esp + 0x34]
mov dword [esp + 8], eax
mov dword [esp], edx
sub ecx, eax
mov dword [esp + 4], ecx
call fcn.0046dbe0
mov edx, dword [esp + 0x24]
mov ecx, dword [esp + 0x90]
mov dword [edx + 0x18], eax
mov dword [ecx + 0x30], eax
mov ecx, dword [esp + 0x24]
mov eax, esi
mov edx, dword [ecx + 0x10]
test edx, edx
jne 0x46bec5
mov edx, esi
shr eax, 0x18
shl edx, 0x18
add edx, eax
mov eax, esi
shr eax, 8
and eax, 0xff00
add edx, eax
mov eax, esi
and eax, 0xff00
shl eax, 8
add eax, edx
mov edx, dword [esp + 0x24]
cmp eax, dword [edx + 0x18]
je 0x46c5e2
mov eax, dword [esp + 0x90]
mov dword [eax + 0x18], str.incorrect_data_check
mov eax, dword [esp + 0x24]
mov dword [eax], 0x1d
mov eax, dword [esp + 0x30]
mov dword [esp + 0x28], eax
mov eax, 0x1d
jmp switch.0x0046b1b7
mov eax, dword [esp + 0x24]
mov eax, dword [eax + 8]
test eax, eax
je 0x46cbc2
mov eax, dword [esp + 0x24]
mov eax, dword [eax + 0x10]
test eax, eax
je 0x46cbc2
cmp ebx, 0x1f
ja 0x46bf52
test edi, edi
je 0x46b5a0
mov ecx, ebx
lea esi, [esi]
jmp 0x46bf3a
test edi, edi
je 0x46c400
add ebp, 1
movzx eax, byte [ebp - 1]
sub edi, 1
shl eax, cl
add ecx, 8
add esi, eax
cmp ecx, 0x1f
jbe 0x46bf32
mov ebx, ecx
mov eax, dword [esp + 0x24]
cmp dword [eax + 0x1c], esi
je 0x46ccc6
mov ecx, dword [esp + 0x90]
mov dword [ecx + 0x18], str.incorrect_length_check
mov dword [eax], 0x1d
mov eax, 0x1d
jmp switch.0x0046b1b7
mov eax, dword [esp + 0x24]
mov edx, dword [eax + 8]
test edx, edx
je 0x46c600
cmp ebx, 0xf
ja 0x46bfc2
test edi, edi
je 0x46b5a0
mov ecx, ebx
nop
jmp 0x46bfaa
test edi, edi
je 0x46c400
add ebp, 1
movzx eax, byte [ebp - 1]
sub edi, 1
shl eax, cl
add ecx, 8
add esi, eax
cmp ecx, 0xf
jbe 0x46bfa2
mov ebx, ecx
test dl, 2
je 0x46bfd3
cmp esi, 0x8b1f
je 0x46ccd3
mov eax, dword [esp + 0x24]
mov dword [eax + 0x10], 0
mov eax, dword [eax + 0x20]
test eax, eax
je 0x46bfec
mov dword [eax + 0x30], 0xffffffff
and edx, 1
je 0x46c8de
mov ecx, esi
mov eax, esi
shl ecx, 8
mov edx, 0x8421085
shr eax, 8
movzx ecx, cx
add ecx, eax
mov eax, ecx
mul edx
mov eax, ecx
sub eax, edx
shr eax, 1
add eax, edx
shr eax, 4
mov edx, eax
shl edx, 5
sub edx, eax
cmp ecx, edx
jne 0x46c8de
mov eax, esi
and eax, 0xf
cmp eax, 8
je 0x46cd2f
mov eax, dword [esp + 0x90]
mov dword [eax + 0x18], str.unknown_compression_method
mov eax, dword [esp + 0x24]
mov dword [eax], 0x1d
mov eax, 0x1d
jmp switch.0x0046b1b7
mov ecx, ebx
and ebx, 0xfffffff8
and ecx, 7
shr esi, cl
cmp ebx, 0x1f
ja 0x46c092
test edi, edi
je 0x46b5a0
mov ecx, ebx
jmp 0x46c07a
test edi, edi
je 0x46c400
add ebp, 1
movzx eax, byte [ebp - 1]
sub edi, 1
shl eax, cl
add ecx, 8
add esi, eax
cmp ecx, 0x1f
jbe 0x46c072
mov ebx, ecx
mov edx, esi
movzx eax, si
shr edx, 0x10
xor edx, 0xffff
cmp eax, edx
je 0x46ca2a
mov eax, dword [esp + 0x90]
mov dword [eax + 0x18], str.invalid_stored_block_lengths
mov eax, dword [esp + 0x24]
mov dword [eax], 0x1d
mov eax, 0x1d
jmp switch.0x0046b1b7
mov eax, dword [esp + 0x24]
mov eax, dword [eax + 0x10]
mov edx, eax
and edx, 0x400
test edx, edx
je 0x46c185
mov edx, dword [esp + 0x24]
mov ecx, dword [edx + 0x40]
cmp edi, ecx
mov dword [esp + 0x3c], ecx
cmovbe ecx, edi
mov edx, ecx
test edx, edx
mov dword [esp + 0x40], ecx
mov ecx, dword [esp + 0x3c]
je 0x46c176
mov ecx, dword [esp + 0x24]
mov ecx, dword [ecx + 0x20]
test ecx, ecx
je 0x46c159
mov edx, dword [ecx + 0x10]
test edx, edx
mov dword [esp + 0x44], edx
je 0x46c159
mov edx, dword [ecx + 0x18]
mov eax, dword [ecx + 0x14]
mov ecx, dword [esp + 0x40]
sub eax, dword [esp + 0x3c]
mov dword [esp + 4], ebp
add ecx, eax
mov dword [esp + 0x3c], ecx
mov ecx, edx
sub ecx, eax
cmp dword [esp + 0x3c], edx
mov edx, ecx
cmovbe edx, dword [esp + 0x40]
add eax, dword [esp + 0x44]
mov dword [esp + 8], edx
mov dword [esp], eax
call sub.msvcrt.dll_memcpy
mov ecx, dword [esp + 0x24]
mov eax, dword [ecx + 0x10]
test ah, 2
jne 0x46c960
mov edx, dword [esp + 0x24]
mov eax, dword [esp + 0x40]
mov ecx, dword [edx + 0x40]
sub edi, eax
add ebp, eax
sub ecx, eax
mov dword [edx + 0x40], ecx
test ecx, ecx
jne 0x46b5a0
mov eax, dword [esp + 0x24]
mov eax, dword [eax + 0x10]
mov ecx, dword [esp + 0x24]
test ah, 8
mov dword [ecx + 0x40], 0
mov dword [ecx], 6
jne 0x46c1c2
mov edx, dword [esp + 0x24]
mov edx, dword [edx + 0x20]
test edx, edx
je 0x46c253
mov dword [edx + 0x1c], 0
jmp 0x46c253
mov eax, dword [esp + 0x24]
mov eax, dword [eax + 0x10]
test ah, 8
je 0x46c19b
test edi, edi
je 0x46b5a0
mov dword [esp + 0x44], esi
xor edx, edx
mov esi, dword [esp + 0x24]
mov dword [esp + 0x3c], ebp
mov dword [esp + 0x40], edi
mov dword [esp + 0x48], ebx
jmp 0x46c1e8
cmp edx, dword [esp + 0x40]
jae 0x46c21a
mov eax, dword [esp + 0x3c]
add edx, 1
movzx ecx, byte [eax + edx - 1]
mov eax, dword [esi + 0x20]
movzx ebp, cl
test eax, eax
je 0x46c216
mov edi, dword [eax + 0x1c]
test edi, edi
je 0x46c216
mov ebx, dword [esi + 0x40]
cmp ebx, dword [eax + 0x20]
jae 0x46c216
lea eax, [ebx + 1]
mov dword [esi + 0x40], eax
mov byte [edi + ebx], cl
test ebp, ebp
jne 0x46c1e2
mov eax, dword [esp + 0x24]
mov edi, dword [esp + 0x40]
mov esi, dword [esp + 0x44]
mov dword [esp + 0x40], ebp
mov ebx, dword [esp + 0x48]
test byte [eax + 0x11], 2
mov ebp, dword [esp + 0x3c]
jne 0x46c7d5
mov eax, dword [esp + 0x40]
sub edi, edx
add ebp, edx
test eax, eax
jne 0x46b5a0
mov eax, dword [esp + 0x24]
mov eax, dword [eax + 0x10]
mov edx, dword [esp + 0x24]
mov dword [edx + 0x40], 0
mov dword [edx], 7
test ah, 0x10
je 0x46c4b0
test edi, edi
je 0x46b5a0
mov dword [esp + 0x44], esi
xor edx, edx
mov esi, dword [esp + 0x24]
mov dword [esp + 0x3c], ebp
mov dword [esp + 0x40], edi
mov dword [esp + 0x48], ebx
jmp 0x46c296
cmp edx, dword [esp + 0x40]
jae 0x46c2c8
mov eax, dword [esp + 0x3c]
add edx, 1
movzx ecx, byte [eax + edx - 1]
mov eax, dword [esi + 0x20]
movzx ebp, cl
test eax, eax
je 0x46c2c4
mov edi, dword [eax + 0x24]
test edi, edi
je 0x46c2c4
mov ebx, dword [esi + 0x40]
cmp ebx, dword [eax + 0x28]
jae 0x46c2c4
lea eax, [ebx + 1]
mov dword [esi + 0x40], eax
mov byte [edi + ebx], cl
test ebp, ebp
jne 0x46c290
mov eax, dword [esp + 0x24]
mov edi, dword [esp + 0x40]
mov esi, dword [esp + 0x44]
mov dword [esp + 0x40], ebp
mov ebx, dword [esp + 0x48]
test byte [eax + 0x11], 2
mov ebp, dword [esp + 0x3c]
jne 0x46c6e0
mov ecx, dword [esp + 0x40]
sub edi, edx
add ebp, edx
test ecx, ecx
jne 0x46b5a0
mov eax, dword [esp + 0x24]
mov eax, dword [eax + 0x10]
mov edx, dword [esp + 0x24]
mov dword [edx], 8
test ah, 2
je 0x46c434
cmp ebx, 0xf
ja 0x46c345
test edi, edi
je 0x46b5a0
mov ecx, ebx
jmp 0x46c32d
test edi, edi
je 0x46c400
add ebp, 1
movzx edx, byte [ebp - 1]
sub edi, 1
shl edx, cl
add ecx, 8
add esi, edx
cmp ecx, 0xf
jbe 0x46c325
mov ebx, ecx
mov ecx, dword [esp + 0x24]
movzx edx, word [ecx + 0x18]
cmp edx, esi
je 0x46c430
mov eax, dword [esp + 0x90]
mov dword [eax + 0x18], str.header_crc_mismatch
mov eax, 0x1d
mov dword [ecx], 0x1d
jmp switch.0x0046b1b7
mov eax, dword [esp + 0x24]
mov edx, dword [eax + 0x10]
test dh, 4
mov eax, edx
je 0x46b9e8
cmp ebx, 0xf
ja 0x46c3b0
test edi, edi
je 0x46b5a0
mov ecx, ebx
jmp 0x46c39a
test edi, edi
je 0x46c400
add ebp, 1
movzx eax, byte [ebp - 1]
sub edi, 1
shl eax, cl
add ecx, 8
add esi, eax
cmp ecx, 0xf
jbe 0x46c396
mov eax, dword [esp + 0x24]
mov dword [eax + 0x40], esi
mov eax, dword [eax + 0x20]
test eax, eax
je 0x46c3c1
mov dword [eax + 0x14], esi
test dh, 2
jne 0x46ca4e
mov eax, edx
xor ebx, ebx
and edx, 0x400
xor esi, esi
jmp 0x46ba00
mov eax, dword [esp + 0x24]
mov eax, dword [eax + 0x10]
jmp 0x46c264
mov eax, dword [esp + 0x24]
mov eax, dword [eax + 0x10]
jmp 0x46c30b
mov ebx, edi
mov edi, ebp
mov ebp, esi
mov esi, ecx
jmp 0x46b780
sub eax, 0xffffff80
xor edx, edx
jmp 0x46b87b
cmp edx, 0x13
je 0x46b876
xor edx, edx
jmp 0x46b87b
xor ebx, ebx
xor esi, esi
mov edx, dword [esp + 0x24]
mov edx, dword [edx + 0x20]
test edx, edx
je 0x46c44f
sar eax, 9
and eax, 1
mov dword [edx + 0x2c], eax
mov dword [edx + 0x30], 1
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov dword [esp], 0
call fcn.0046dbe0
mov edx, dword [esp + 0x24]
mov ecx, dword [esp + 0x90]
mov dword [edx + 0x18], eax
mov dword [ecx + 0x30], eax
mov eax, 0xb
mov dword [edx], 0xb
jmp switch.0x0046b1b7
mov eax, dword [esp + 0x90]
mov eax, dword [eax + 4]
test eax, eax
jne case.default.0x46b1b7
mov dword [esp + 0x2c], 0
jmp 0x46b15a
mov ecx, dword [esp + 0x24]
mov edx, dword [ecx + 0x20]
test edx, edx
je 0x46c301
mov dword [edx + 0x24], 0
jmp 0x46c301
mov eax, dword [esp + 0x24]
mov edx, dword [eax + 0x18]
mov eax, dword [esp + 0x90]
mov dword [esp + 8], esi
mov eax, dword [eax + 0xc]
mov dword [esp], edx
sub eax, esi
mov dword [esp + 4], eax
call fcn.0046d6b0
jmp 0x46b83f
mov eax, dword [esp + 0x24]
mov dword [eax], 0xb
mov eax, 0xb
jmp switch.0x0046b1b7
mov eax, dword [esp + 0x34]
sub eax, ecx
mov dword [esp + 0x3c], eax
mov eax, dword [esp + 0x24]
mov ecx, dword [eax + 0x40]
mov edx, ecx
mov eax, dword [esp + 0x30]
mov dword [esp + 0x40], ebx
cmp ecx, eax
cmova ecx, eax
mov eax, dword [esp + 0x24]
sub edx, ecx
sub dword [esp + 0x30], ecx
mov dword [eax + 0x40], edx
mov edx, dword [esp + 0x34]
mov eax, dword [esp + 0x3c]
add ecx, edx
add eax, 1
movzx ebx, byte [eax - 1]
add edx, 1
cmp edx, ecx
mov byte [edx - 1], bl
jne 0x46c547
mov eax, dword [esp + 0x24]
mov dword [esp + 0x34], edx
mov ebx, dword [esp + 0x40]
mov edx, dword [eax + 0x40]
test edx, edx
je 0x46c572
mov eax, dword [eax]
jmp 0x46b1ae
mov eax, dword [esp + 0x24]
mov dword [eax], 0x14
mov eax, 0x14
jmp switch.0x0046b1b7
cmp ebx, edx
jae 0x46c5b5
test edi, edi
je 0x46b5a0
mov ecx, ebx
jmp 0x46c59e
test edi, edi
je 0x46c400
add ebp, 1
movzx eax, byte [ebp - 1]
sub edi, 1
shl eax, cl
add ecx, 8
add esi, eax
cmp ecx, edx
jb 0x46c596
mov ebx, ecx
mov ecx, edx
mov eax, 1
shl eax, cl
mov ecx, dword [esp + 0x24]
sub ebx, edx
sub eax, 1
and eax, esi
add eax, dword [ecx + 0x40]
mov dword [ecx + 0x40], eax
mov ecx, edx
shr esi, cl
mov ecx, dword [esp + 0x24]
add dword [ecx + 0x1bc4], edx
jmp 0x46b5c6
mov esi, dword [esp + 0x30]
xor ebx, ebx
mov eax, dword [edx + 8]
mov dword [esp + 0x28], esi
xor esi, esi
mov edx, dword [esp + 0x24]
mov dword [edx], 0x1b
jmp 0x46bf07
mov eax, dword [esp + 0x24]
mov dword [eax], 0xc
mov eax, 0xc
jmp switch.0x0046b1b7
mov eax, dword [eax + 0x1bc0]
test eax, eax
je 0x46b3d0
mov eax, dword [esp + 0x90]
mov dword [eax + 0x18], 0x4b4345
mov eax, dword [esp + 0x24]
mov dword [eax], 0x1d
mov eax, 0x1d
jmp switch.0x0046b1b7
mov edx, dword [esp + 0x24]
mov edx, dword [edx + 0x1bc4]
mov ecx, eax
sub ebx, eax
shr esi, cl
mov ecx, dword [esp + 0x24]
add eax, edx
test byte [esp + 0x3c], 0x40
mov dword [ecx + 0x1bc4], eax
je 0x46c848
mov eax, dword [esp + 0x90]
mov dword [eax + 0x18], 0x4b432f
mov eax, 0x1d
mov dword [ecx], 0x1d
jmp switch.0x0046b1b7
mov edx, dword [esp + 0x44]
shr esi, cl
sub ebx, eax
mov ecx, dword [esp + 0x24]
mov eax, edx
add eax, 1
mov dword [ecx + 0x68], eax
mov dword [esp + 0x44], eax
movzx eax, word [esp + 0x3c]
mov word [ecx + edx*2 + 0x70], ax
jmp 0x46ba2d
mov eax, dword [esp + 0x24]
mov dword [eax], 0x10
mov eax, 0x10
jmp 0x46b2ee
xor edx, edx
jmp 0x46ba00
mov edi, ebp
mov ebp, ebx
mov ebx, esi
mov esi, ecx
jmp 0x46b780
mov eax, dword [eax + 0x18]
mov dword [esp + 8], edx
mov dword [esp + 4], ebp
mov dword [esp + 0x3c], edx
mov dword [esp], eax
call fcn.0046dbe0
mov edx, dword [esp + 0x24]
mov dword [edx + 0x18], eax
mov edx, dword [esp + 0x3c]
jmp 0x46c2ea
cmp dword [esp + 0x30], 0x101
jbe 0x46b433
mov eax, dword [esp + 0x90]
mov edx, dword [esp + 0x34]
mov dword [eax], ebp
mov dword [eax + 0xc], edx
mov edx, dword [esp + 0x30]
mov dword [eax + 4], edi
mov dword [eax + 0x10], edx
mov eax, dword [esp + 0x24]
mov dword [eax + 0x38], esi
mov esi, eax
mov dword [eax + 0x3c], ebx
mov eax, dword [esp + 0x28]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x90]
mov dword [esp], eax
call fcn.0046e430
mov eax, dword [esp + 0x90]
mov eax, dword [eax + 0xc]
mov dword [esp + 0x34], eax
mov eax, dword [esp + 0x90]
mov eax, dword [eax + 0x10]
mov dword [esp + 0x30], eax
mov eax, dword [esp + 0x90]
mov ebp, dword [eax]
mov edi, dword [eax + 4]
mov eax, esi
mov ebx, dword [eax + 0x3c]
mov eax, dword [eax]
mov esi, dword [esi + 0x38]
cmp eax, 0xb
jne 0x46b1ae
mov ecx, dword [esp + 0x24]
mov dword [ecx + 0x1bc4], 0xffffffff
jmp switch.0x0046b1b7
mov edx, eax
mov ecx, eax
sub ebx, eax
movzx eax, word [esp + 0x54]
shr esi, cl
mov ecx, dword [esp + 0x24]
cmp byte [esp + 0x3c], 0
mov dword [ecx + 0x1bc4], edx
mov dword [ecx + 0x40], eax
jne 0x46c869
mov dword [ecx], 0x19
mov eax, 0x19
jmp switch.0x0046b1b7
mov eax, dword [eax + 0x18]
mov dword [esp + 8], edx
mov dword [esp + 4], ebp
mov dword [esp + 0x3c], edx
mov dword [esp], eax
call fcn.0046dbe0
mov edx, dword [esp + 0x24]
mov dword [edx + 0x18], eax
mov edx, dword [esp + 0x3c]
jmp 0x46c23c
mov eax, 0xfffffffe
jmp 0x46b760
mov eax, dword [esp + 0x90]
mov dword [eax + 0x18], str.too_many_length_or_distance_symbols
mov eax, dword [esp + 0x24]
mov dword [eax], 0x1d
mov eax, 0x1d
jmp switch.0x0046b1b7
sub eax, ecx
mov dword [esp + 0x3c], eax
mov eax, dword [esp + 0x24]
mov eax, dword [eax + 0x34]
add dword [esp + 0x3c], eax
jmp 0x46b3f7
mov edx, dword [esp + 0x3c]
mov ecx, dword [esp + 0x24]
movzx eax, word [esp + 0x54]
and edx, 0xf
mov dword [ecx + 0x48], edx
mov dword [ecx + 0x44], eax
mov dword [ecx], 0x17
jmp 0x46b339
test byte [esp + 0x3c], 0x20
je 0x46c9cf
mov eax, dword [esp + 0x24]
mov dword [eax + 0x1bc4], 0xffffffff
mov dword [eax], 0xb
mov eax, 0xb
jmp switch.0x0046b1b7
mov eax, esi
mov byte [esp + 0x6c], al
mov eax, esi
mov esi, dword [esp + 0x24]
shr eax, 8
mov byte [esp + 0x6d], al
lea edx, [esp + 0x6c]
mov eax, dword [esi + 0x18]
mov dword [esp + 4], edx
mov dword [esp + 8], 2
mov dword [esp], eax
call fcn.0046dbe0
mov edx, dword [esi + 0x10]
mov dword [esi + 0x18], eax
mov eax, edx
jmp 0x46b9d1
mov ecx, edi
mov eax, ebx
mov edi, ebp
mov ebx, esi
mov ebp, ecx
mov esi, eax
jmp 0x46b780
mov eax, dword [esp + 0x90]
mov dword [eax + 0x18], str.incorrect_header_check
mov eax, dword [esp + 0x24]
mov dword [eax], 0x1d
mov eax, 0x1d
jmp switch.0x0046b1b7
mov eax, dword [esp + 0x24]
cmp dword [esp + 0x94], 6
mov dword [eax + 0x4c], 0x4b44a0
mov dword [eax + 0x54], 9
mov dword [eax + 0x50], 0x4b4420
mov dword [eax + 0x58], 5
mov dword [eax], 0x13
je 0x46ce64
mov eax, 0x13
jmp 0x46b2ee
mov eax, dword [esp + 0x90]
mov dword [eax + 0x18], str.invalid_block_type
mov eax, dword [esp + 0x24]
mov dword [eax], 0x1d
mov eax, 0x1d
jmp 0x46b2ee
mov eax, dword [esp + 0x24]
mov edx, dword [esp + 0x40]
mov eax, dword [eax + 0x18]
mov dword [esp + 8], edx
mov dword [esp + 4], ebp
mov dword [esp], eax
call fcn.0046dbe0
mov ecx, dword [esp + 0x24]
mov dword [ecx + 0x18], eax
jmp 0x46c162
mov eax, esi
mov ebx, dword [esp + 0x24]
mov byte [esp + 0x6c], al
mov eax, esi
shr eax, 8
mov byte [esp + 0x6d], al
mov eax, esi
shr eax, 0x10
mov byte [esp + 0x6e], al
mov eax, esi
shr eax, 0x18
mov byte [esp + 0x6f], al
mov eax, dword [ebx + 0x18]
lea edx, [esp + 0x6c]
mov dword [esp + 8], 4
mov dword [esp + 4], edx
mov dword [esp], eax
call fcn.0046dbe0
mov dword [ebx + 0x18], eax
jmp 0x46b8fe
test byte [esp + 0x3c], 0x40
je 0x46cb75
mov eax, dword [esp + 0x90]
mov dword [eax + 0x18], 0x4b4313
mov eax, dword [esp + 0x24]
mov dword [eax], 0x1d
mov eax, 0x1d
jmp switch.0x0046b1b7
test esi, 0xe000
je 0x46cb8e
mov eax, dword [esp + 0x90]
mov dword [eax + 0x18], str.unknown_header_flags_set
mov eax, dword [esp + 0x24]
mov dword [eax], 0x1d
mov eax, 0x1d
jmp switch.0x0046b1b7
mov ebx, dword [esp + 0x24]
cmp dword [esp + 0x94], 6
mov dword [ebx + 0x40], eax
mov dword [ebx], 0xe
je 0x46ce57
xor ebx, ebx
xor esi, esi
jmp 0x46b917
mov ebx, dword [esp + 0x24]
mov eax, esi
mov byte [esp + 0x6c], al
mov eax, esi
xor esi, esi
shr eax, 8
mov byte [esp + 0x6d], al
lea edx, [esp + 0x6c]
mov eax, dword [ebx + 0x18]
mov dword [esp + 4], edx
mov dword [esp + 8], 2
mov dword [esp], eax
call fcn.0046dbe0
mov dword [ebx + 0x18], eax
mov eax, dword [ebx + 0x10]
xor ebx, ebx
mov edx, eax
and edx, 0x400
jmp 0x46ba00
lea edx, [eax + 2]
cmp ebx, edx
jae 0x46cad1
test edi, edi
je 0x46b5a0
mov ecx, ebx
mov ebx, eax
mov eax, edx
jmp 0x46cab8
test edi, edi
je 0x46c400
add ebp, 1
movzx edx, byte [ebp - 1]
sub edi, 1
shl edx, cl
add ecx, 8
add esi, edx
cmp ecx, eax
jb 0x46cab0
mov eax, ebx
mov ebx, ecx
mov ecx, eax
sub ebx, eax
mov eax, dword [esp + 0x44]
shr esi, cl
test eax, eax
je 0x46ce79
mov eax, dword [esp + 0x24]
sub ebx, 2
mov ecx, dword [esp + 0x44]
movzx ecx, word [eax + ecx*2 + 0x6e]
mov eax, esi
and eax, 3
add eax, 3
mov dword [esp + 0x3c], eax
shr esi, 2
jmp 0x46bb32
mov word [esp + 0x54], cx
movzx ecx, byte [esp + 0x48]
sub ebx, dword [esp + 0x44]
shr esi, cl
jmp 0x46c7a2
lea edx, [eax + 3]
cmp ebx, edx
jae 0x46cb54
test edi, edi
je 0x46b5a0
mov ecx, ebx
mov ebx, eax
mov eax, edx
jmp 0x46cb3b
test edi, edi
je 0x46c400
add ebp, 1
movzx edx, byte [ebp - 1]
sub edi, 1
shl edx, cl
add ecx, 8
add esi, edx
cmp ecx, eax
jb 0x46cb33
mov eax, ebx
mov ebx, ecx
mov ecx, eax
sub ebx, eax
shr esi, cl
sub ebx, 3
mov edx, esi
and esi, 7
add esi, 3
xor ecx, ecx
mov dword [esp + 0x3c], esi
mov esi, edx
shr esi, 3
jmp 0x46bb32
mov edx, dword [esp + 0x3c]
mov eax, dword [esp + 0x24]
and edx, 0xf
mov dword [eax + 0x48], edx
mov dword [eax], 0x15
jmp 0x46b5b7
mov eax, dword [esp + 0x24]
mov eax, dword [eax + 0x20]
test eax, eax
je 0x46cba3
mov edx, esi
shr edx, 8
and edx, 1
mov dword [eax], edx
test esi, 0x200
jne 0x46cc90
mov eax, dword [esp + 0x24]
xor ebx, ebx
xor esi, esi
mov dword [eax], 2
jmp 0x46b8b8
mov eax, ebx
mov ebx, edi
mov edi, ebp
mov ebp, esi
mov esi, eax
mov eax, dword [esp + 0x24]
mov dword [esp + 0x38], 1
mov dword [eax], 0x1c
jmp 0x46b780
mov edx, dword [esp + 0x24]
mov ecx, dword [esp + 0x34]
mov edx, dword [edx + 0x18]
sub ecx, eax
mov dword [esp + 8], eax
mov dword [esp + 4], ecx
mov dword [esp], edx
call fcn.0046d6b0
jmp 0x46be85
mov eax, dword [esp + 0x24]
mov dword [esp + 0x44], 0
mov dword [eax + 0x68], 0
mov dword [eax], 0x12
jmp 0x46ba1b
cmp dword [eax], 0x1d
je 0x46bf73
cmp word [eax + 0x270], 0
jne 0x46cda4
mov edx, dword [esp + 0x90]
mov dword [edx + 0x18], str.invalid_code____missing_end_of_block
mov dword [eax], 0x1d
mov eax, 0x1d
jmp switch.0x0046b1b7
mov eax, ebx
mov ecx, dword [esp + 0x34]
mov ebx, edi
mov edx, dword [esp + 0x30]
mov edi, ebp
mov ebp, esi
mov esi, eax
mov eax, dword [esp + 0x90]
mov dword [eax + 0xc], ecx
mov dword [eax + 0x10], edx
mov dword [eax], edi
mov dword [eax + 4], ebx
mov eax, dword [esp + 0x24]
mov dword [eax + 0x38], ebp
mov dword [eax + 0x3c], esi
mov eax, 2
jmp 0x46b760
mov eax, esi
mov byte [esp + 0x6c], al
mov eax, esi
mov esi, dword [esp + 0x24]
shr eax, 8
mov byte [esp + 0x6d], al
lea edx, [esp + 0x6c]
mov eax, dword [esi + 0x18]
mov dword [esp + 8], 2
mov dword [esp + 4], edx
mov dword [esp], eax
call fcn.0046dbe0
mov dword [esi + 0x18], eax
jmp 0x46cbaf
mov ebx, edi
xor esi, esi
mov edi, ebp
xor ebp, ebp
jmp 0x46cbcc
mov dword [esp + 8], 0
xor ebx, ebx
mov dword [esp + 4], 0
mov dword [esp], 0
call fcn.0046dbe0
mov esi, dword [esp + 0x24]
lea edx, [esp + 0x6c]
mov byte [esp + 0x6c], 0x1f
mov byte [esp + 0x6d], 0x8b
mov dword [esi + 0x18], eax
mov dword [esp + 8], 2
mov dword [esp + 4], edx
mov dword [esp], eax
call fcn.0046dbe0
mov dword [esi], 1
mov dword [esi + 0x18], eax
mov eax, 1
xor esi, esi
jmp switch.0x0046b1b7
mov eax, dword [esp + 0x24]
shr esi, 4
mov ecx, esi
and ecx, 0xf
add ecx, 8
mov eax, dword [eax + 0x24]
test eax, eax
jne 0x46ce2a
mov eax, dword [esp + 0x24]
mov dword [eax + 0x24], ecx
mov ebx, dword [esp + 0x24]
mov eax, 1
shl eax, cl
mov dword [ebx + 0x14], eax
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov dword [esp], 0
call fcn.0046d6b0
mov edx, dword [esp + 0x90]
mov dword [ebx + 0x18], eax
mov dword [edx + 0x30], eax
mov eax, esi
and eax, 0x200
cmp eax, 1
sbb eax, eax
xor esi, esi
and eax, 2
add eax, 9
mov dword [ebx], eax
xor ebx, ebx
jmp 0x46b1ae
mov eax, dword [esp + 0x24]
mov ecx, dword [esp + 0x50]
lea edx, [eax + 0x2f0]
mov dword [eax + 0x6c], ecx
mov dword [eax + 0x4c], ecx
lea ecx, [eax + 0x6c]
add eax, 0x54
mov dword [eax], 9
mov dword [esp + 0x40], edx
mov dword [esp + 0x14], edx
mov edx, dword [esp + 0x4c]
mov dword [esp + 0xc], ecx
mov dword [esp + 0x3c], ecx
mov ecx, dword [esp + 0x54]
mov dword [esp + 0x10], eax
mov dword [esp + 4], edx
mov dword [esp], 1
mov dword [esp + 8], ecx
call fcn.0046ded0
mov ecx, dword [esp + 0x3c]
mov edx, dword [esp + 0x40]
test eax, eax
mov dword [esp + 0x38], eax
je 0x46ce96
mov eax, dword [esp + 0x24]
mov ecx, dword [esp + 0x90]
mov dword [ecx + 0x18], str.invalid_literal_lengths_set
mov dword [eax], 0x1d
mov eax, 0x1d
jmp switch.0x0046b1b7
cmp ecx, eax
jbe 0x46cd50
mov eax, dword [esp + 0x90]
sub ebx, 4
mov dword [eax + 0x18], str.invalid_window_size
mov eax, dword [esp + 0x24]
mov dword [eax], 0x1d
mov eax, 0x1d
jmp switch.0x0046b1b7
mov ebx, edi
xor esi, esi
mov edi, ebp
xor ebp, ebp
jmp 0x46b780
mov eax, ebx
mov ebx, edi
mov edi, ebp
mov ebp, esi
mov esi, eax
shr ebp, 3
sub esi, 3
jmp 0x46b780
mov eax, dword [esp + 0x90]
mov dword [eax + 0x18], str.invalid_bit_length_repeat
mov eax, dword [esp + 0x24]
mov dword [eax], 0x1d
jmp 0x46bf73
mov dword [esp + 0x3c], ebx
mov ebx, dword [esp + 0x24]
mov eax, dword [ebx + 0x6c]
mov dword [ebx + 0x58], 6
mov dword [ebx + 0x50], eax
mov eax, dword [ebx + 0x64]
mov dword [esp + 0x14], edx
mov edx, ebx
add edx, 0x58
mov dword [esp + 0x10], edx
mov dword [esp + 0xc], ecx
mov dword [esp + 8], eax
mov eax, dword [ebx + 0x60]
mov dword [esp], 2
lea eax, [ebx + eax*2 + 0x70]
mov dword [esp + 4], eax
call fcn.0046ded0
mov ebx, dword [esp + 0x3c]
test eax, eax
mov dword [esp + 0x38], eax
je 0x46b408
mov eax, dword [esp + 0x90]
mov dword [eax + 0x18], str.invalid_distances_set
mov eax, dword [esp + 0x24]
mov dword [eax], 0x1d
mov eax, 0x1d
jmp switch.0x0046b1b7