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

Disassembly:
push ebp
push edi
push esi
push ebx
sub esp, 0x7c
mov ebx, dword [esp + 0x90]
test ebx, ebx
je case.default.0x413716
mov eax, dword [esp + 0x90]
mov ecx, dword [eax + 0x20]
test ecx, ecx
je case.default.0x413716
mov edx, dword [eax + 0x24]
test edx, edx
je case.default.0x413716
mov ebp, dword [eax + 0x1c]
test ebp, ebp
je case.default.0x413716
mov eax, dword [ebp]
cmp dword [esp + 0x90], eax
je 0x413690
mov dword [esp + 0x20], 0xfffffffe
mov eax, dword [esp + 0x20]
add esp, 0x7c
pop ebx
pop esi
pop edi
pop ebp
ret
mov edx, dword [ebp + 4]
lea eax, [edx - 0x3f34]
cmp eax, 0x1f
ja case.default.0x413716
mov esi, dword [esp + 0x90]
mov esi, dword [esi + 0xc]
mov dword [esp + 0x38], esi
test esi, esi
je case.default.0x413716
mov esi, dword [esp + 0x90]
mov edi, dword [esp + 0x90]
mov esi, dword [esi]
mov ebx, dword [edi + 4]
mov dword [esp + 0x34], ebx
test esi, esi
je 0x413d60
cmp edx, 0x3f3f
jne 0x4136e3
mov dword [ebp + 4], 0x3f40
mov eax, 0xc
mov edi, dword [esp + 0x90]
mov ebx, dword [ebp + 0x3c]
mov dword [esp + 0x20], ebp
mov edx, dword [ebp + 0x40]
mov ebp, esi
mov edi, dword [edi + 0x10]
mov dword [esp + 0x28], ebx
mov dword [esp + 0x24], edx
mov dword [esp + 0x30], edi
mov dword [esp + 0x2c], edi
mov edi, dword [esp + 0x34]
cmp eax, 0x1e
ja case.default.0x413716
jmp dword [eax*4 + 0x518074]
cmp dword [esp + 0x24], 0x1f
ja 0x41581e
test edi, edi
je 0x414a10
movzx ecx, byte [esp + 0x24]
movzx eax, byte [ebp]
lea edx, [edi - 1]
lea ebx, [ebp + 1]
shl eax, cl
mov ecx, dword [esp + 0x24]
add dword [esp + 0x28], eax
mov esi, dword [esp + 0x28]
add ecx, 8
cmp ecx, 0x1f
ja 0x4153da
test edx, edx
je 0x41529f
movzx eax, byte [ebp + 1]
lea edx, [edi - 2]
lea ebx, [ebp + 2]
shl eax, cl
mov ecx, dword [esp + 0x24]
add esi, eax
add ecx, 0x10
mov dword [esp + 0x28], esi
cmp ecx, 0x1f
ja 0x4153da
test edx, edx
je 0x41529f
movzx eax, byte [ebp + 2]
add dword [esp + 0x24], 0x18
lea edx, [edi - 3]
lea ebx, [ebp + 3]
shl eax, cl
mov ecx, dword [esp + 0x24]
add esi, eax
mov dword [esp + 0x28], esi
cmp ecx, 0x1f
ja 0x4153da
test edx, edx
je 0x415933
movzx eax, byte [ebp + 3]
sub edi, 4
lea ebx, [ebp + 4]
shl eax, cl
add esi, eax
mov dword [esp + 0x28], esi
mov eax, esi
mov edx, dword [esp + 0x20]
bswap eax
mov esi, dword [esp + 0x90]
mov dword [esp + 0x24], 0
mov dword [esp + 0x28], 0
mov ebp, ebx
mov dword [edx + 0x1c], eax
mov dword [esi + 0x30], eax
mov dword [edx + 4], 0x3f3e
mov eax, dword [esp + 0x20]
mov edx, dword [eax + 0x10]
test edx, edx
je 0x41596e
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov dword [esp], 0
call sym._adler32
mov edx, dword [esp + 0x20]
mov ebx, dword [esp + 0x90]
mov dword [edx + 0x1c], eax
mov dword [ebx + 0x30], eax
mov dword [edx + 4], 0x3f3f
lea esi, [esi]
mov eax, dword [esp + 0x94]
sub eax, 5
cmp eax, 1
jbe 0x414a10
mov eax, dword [esp + 0x20]
mov edx, dword [eax + 8]
test edx, edx
je 0x414530
mov eax, dword [esp + 0x24]
mov esi, ebp
mov ebp, dword [esp + 0x20]
mov ecx, eax
and eax, 0xfffffff8
mov dword [ebp + 4], 0x3f4e
mov dword [esp + 0x24], eax
and ecx, 7
shr dword [esp + 0x28], cl
mov eax, dword [ebp + 0xc]
mov dword [esp + 0x20], eax
test eax, eax
je 0x4147f0
cmp dword [esp + 0x24], 0x1f
ja 0x415967
test edi, edi
je 0x414a1c
movzx ecx, byte [esp + 0x24]
movzx eax, byte [esi]
lea edx, [edi - 1]
lea ebx, [esi + 1]
shl eax, cl
add dword [esp + 0x28], eax
mov eax, dword [esp + 0x24]
lea ecx, [eax + 8]
cmp ecx, 0x1f
ja 0x4156d6
test edx, edx
je 0x4151a8
movzx eax, byte [esi + 1]
lea edx, [edi - 2]
lea ebx, [esi + 2]
shl eax, cl
add dword [esp + 0x28], eax
mov eax, dword [esp + 0x24]
lea ecx, [eax + 0x10]
cmp ecx, 0x1f
ja 0x4156d6
test edx, edx
je 0x4151a8
movzx eax, byte [esi + 2]
lea edx, [edi - 3]
lea ebx, [esi + 3]
shl eax, cl
add dword [esp + 0x28], eax
mov eax, dword [esp + 0x24]
lea ecx, [eax + 0x18]
cmp ecx, 0x1f
ja 0x4156d6
test edx, edx
je 0x4151a8
movzx eax, byte [esi + 3]
add dword [esp + 0x24], 0x20
sub edi, 4
lea ebx, [esi + 4]
shl eax, cl
add dword [esp + 0x28], eax
mov ecx, dword [esp + 0x30]
mov edx, dword [esp + 0x90]
mov esi, dword [esp + 0x2c]
mov eax, ecx
sub eax, esi
add dword [edx + 0x14], eax
mov edx, dword [esp + 0x20]
add dword [ebp + 0x20], eax
and edx, 4
test eax, eax
je 0x41536b
test edx, edx
jne 0x415329
mov eax, dword [esp + 0x2c]
mov dword [ebp + 4], 0x3f4f
mov esi, ebx
mov dword [esp + 0x24], 0
mov dword [esp + 0x30], eax
mov dword [esp + 0x28], 0
jmp 0x4142dd
cmp dword [esp + 0x94], 6
mov dword [esi + 0x50], 0x518180
mov dword [esi + 0x58], 9
mov dword [esi + 0x54], 0x518100
mov dword [esi + 0x5c], 5
mov dword [esi + 4], 0x3f47
je 0x415c30
sub dword [esp + 0x24], 3
mov ebp, eax
shr dword [esp + 0x28], 3
lea esi, [esi]
mov eax, dword [esp + 0x20]
mov dword [eax + 4], 0x3f48
cmp edi, 5
jbe 0x414810
mov eax, dword [esp + 0x2c]
cmp eax, 0x101
jbe 0x414810
mov edx, dword [esp + 0x90]
mov ebx, dword [esp + 0x38]
mov dword [edx + 0x10], eax
mov eax, dword [esp + 0x28]
mov dword [edx + 0xc], ebx
mov ebx, dword [esp + 0x20]
mov dword [edx], ebp
mov dword [edx + 4], edi
mov dword [ebx + 0x3c], eax
mov eax, dword [esp + 0x24]
mov dword [ebx + 0x40], eax
mov eax, dword [esp + 0x30]
mov dword [esp], edx
mov dword [esp + 4], eax
call sym._inflate_fast
mov eax, dword [esp + 0x90]
mov eax, dword [eax + 0xc]
mov dword [esp + 0x38], eax
mov eax, dword [esp + 0x90]
mov eax, dword [eax + 0x10]
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0x90]
mov ebp, dword [eax]
mov edi, dword [eax + 4]
mov eax, dword [ebx + 0x3c]
mov dword [esp + 0x28], eax
mov eax, dword [ebx + 0x40]
mov dword [esp + 0x24], eax
mov eax, dword [ebx + 4]
cmp eax, 0x3f3f
je 0x415020
sub eax, 0x3f34
jmp 0x41370d
mov eax, dword [esp + 0x20]
mov ebx, dword [eax + 0x4c]
test ebx, ebx
jne 0x415038
mov eax, dword [esp + 0x20]
mov dword [eax + 4], 0x3f4c
mov ecx, dword [esp + 0x2c]
test ecx, ecx
je 0x4156e1
mov ebx, dword [esp + 0x20]
mov esi, dword [esp + 0x30]
mov eax, dword [ebx + 0x48]
mov edx, esi
sub edx, ecx
cmp edx, eax
jae 0x414d70
lea edx, [eax + ecx]
mov eax, edx
sub eax, esi
cmp dword [ebx + 0x30], eax
jae 0x414910
mov ecx, dword [ebx + 0x1bc4]
test ecx, ecx
je 0x414910
mov eax, dword [esp + 0x90]
mov esi, ebp
mov ebp, ebx
mov dword [eax + 0x18], str.invalid_distance_too_far_back
mov dword [ebx + 4], 0x3f51
mov ecx, dword [esp + 0x30]
mov eax, dword [esp + 0x2c]
mov dword [esp + 0x20], 0xfffffffd
sub ecx, eax
lea esi, [esi]
lea esi, [esi]
mov eax, dword [esp + 0x90]
mov ebx, dword [esp + 0x38]
mov edx, eax
mov dword [eax + 0xc], ebx
mov eax, dword [esp + 0x2c]
mov dword [edx], esi
mov esi, dword [esp + 0x28]
mov dword [edx + 0x10], eax
mov dword [edx + 4], edi
mov edx, dword [ebp + 0x2c]
mov dword [ebp + 0x3c], esi
mov esi, dword [esp + 0x24]
mov dword [ebp + 0x40], esi
test edx, edx
jne 0x413b68
cmp dword [esp + 0x30], eax
je 0x413b97
mov eax, dword [ebp + 4]
cmp eax, 0x3f50
ja 0x413b97
cmp eax, 0x3f4d
jbe 0x413b68
cmp dword [esp + 0x94], 4
je 0x413b97
lea esi, [esi]
mov edx, dword [esp + 0x38]
mov eax, dword [esp + 0x90]
call sym._updatewindow
test eax, eax
jne 0x414484
mov eax, dword [esp + 0x90]
mov ecx, dword [esp + 0x30]
mov edi, dword [eax + 4]
mov eax, dword [eax + 0x10]
mov dword [esp + 0x2c], eax
sub ecx, eax
mov eax, dword [esp + 0x90]
mov ebx, dword [esp + 0x34]
add dword [eax + 0x14], ecx
sub ebx, edi
add dword [eax + 8], ebx
add dword [ebp + 0x20], ecx
test byte [ebp + 0xc], 4
je 0x413bbb
test ecx, ecx
jne 0x414a40
mov edx, dword [ebp + 8]
xor eax, eax
mov esi, dword [ebp + 4]
test edx, edx
setne al
shl eax, 6
add eax, dword [ebp + 0x40]
cmp esi, 0x3f3f
je 0x414a38
cmp esi, 0x3f47
sete dl
cmp esi, 0x3f42
mov edi, edx
sete dl
mov esi, edx
or edi, esi
mov edx, edi
movzx edx, dl
shl edx, 8
add eax, edx
mov edi, dword [esp + 0x90]
or ebx, ecx
mov dword [edi + 0x2c], eax
je 0x413c18
cmp dword [esp + 0x94], 4
jne 0x413682
mov eax, dword [esp + 0x20]
test eax, eax
jne 0x413682
mov dword [esp + 0x20], 0xfffffffb
jmp 0x413682
mov eax, dword [esp + 0x20]
mov edx, dword [eax + 0x4c]
test edx, edx
jne 0x414d88
mov eax, dword [esp + 0x20]
mov eax, dword [eax + 0x44]
mov edx, dword [esp + 0x20]
mov dword [edx + 0x1bcc], eax
mov dword [edx + 4], 0x3f4a
mov eax, dword [esp + 0x20]
mov ecx, dword [eax + 0x5c]
mov edx, dword [eax + 0x54]
mov eax, 0xffffffff
shl eax, cl
mov dword [esp + 0x40], edx
mov ecx, eax
mov eax, dword [esp + 0x28]
not ecx
and eax, ecx
lea eax, [edx + eax*4]
movzx edx, byte [eax + 1]
movzx ebx, byte [eax]
movzx eax, word [eax + 2]
mov word [esp + 0x3c], ax
movzx eax, dl
mov esi, eax
cmp dword [esp + 0x24], eax
jae 0x413d08
test edi, edi
je 0x414a10
mov ebx, dword [esp + 0x28]
mov dword [esp + 0x28], ecx
mov ecx, dword [esp + 0x24]
jmp 0x413cc0
test edi, edi
je 0x414c30
movzx eax, byte [ebp]
mov esi, dword [esp + 0x40]
add ebp, 1
sub edi, 1
shl eax, cl
add ecx, 8
add ebx, eax
mov eax, dword [esp + 0x28]
and eax, ebx
lea eax, [esi + eax*4]
movzx edx, byte [eax]
mov byte [esp + 0x24], dl
movzx edx, byte [eax + 1]
movzx eax, word [eax + 2]
mov word [esp + 0x3c], ax
movzx eax, dl
mov esi, eax
cmp ecx, eax
jb 0x413cb8
mov dword [esp + 0x28], ebx
movzx ebx, byte [esp + 0x24]
mov dword [esp + 0x24], ecx
mov ecx, eax
cmp bl, 0xf
jbe 0x4151c7
mov eax, dword [esp + 0x20]
mov eax, dword [eax + 0x1bc8]
shr dword [esp + 0x28], cl
add ecx, eax
mov eax, dword [esp + 0x20]
sub dword [esp + 0x24], esi
mov dword [eax + 0x1bc8], ecx
test bl, 0x40
je 0x415000
mov esi, ebp
mov ebp, eax
mov eax, dword [esp + 0x90]
mov dword [eax + 0x18], 0x517ff7
mov dword [ebp + 4], 0x3f51
jmp 0x413af4
test ebx, ebx
je 0x4136cf
jmp case.default.0x413716
mov eax, dword [esp + 0x20]
mov eax, dword [eax + 0x44]
mov edx, dword [esp + 0x20]
mov dword [edx + 4], 0x3f43
test eax, eax
je 0x414c20
cmp edi, eax
cmovbe eax, edi
mov ebx, eax
mov eax, dword [esp + 0x2c]
cmp ebx, eax
cmova ebx, eax
test ebx, ebx
je 0x415a3c
mov esi, dword [esp + 0x38]
mov dword [esp + 4], ebp
sub edi, ebx
add ebp, ebx
mov dword [esp + 8], ebx
mov dword [esp], esi
add esi, ebx
call sym._memcpy
mov eax, dword [esp + 0x20]
sub dword [esp + 0x2c], ebx
mov dword [esp + 0x38], esi
sub dword [eax + 0x44], ebx
mov eax, dword [eax + 4]
jmp 0x413a6f
mov eax, dword [esp + 0x20]
mov eax, dword [eax + 0x44]
jmp 0x413d82
mov eax, dword [esp + 0x20]
mov edx, dword [eax + 0x14]
mov eax, edx
and eax, 0x400
test eax, eax
je 0x413e9e
mov eax, dword [esp + 0x20]
mov ecx, dword [eax + 0x44]
cmp edi, ecx
mov ebx, ecx
cmovbe ebx, edi
mov dword [esp + 0x3c], ebx
test ebx, ebx
je 0x413e8f
mov eax, dword [eax + 0x24]
test eax, eax
je 0x413e62
mov esi, dword [eax + 0x10]
mov dword [esp + 0x40], esi
test esi, esi
je 0x413e62
mov esi, dword [eax + 0x14]
mov eax, dword [eax + 0x18]
mov ebx, esi
sub ebx, ecx
cmp ebx, eax
jae 0x413e62
mov edx, dword [esp + 0x3c]
add ecx, eax
mov dword [esp + 4], ebp
sub ecx, esi
add edx, ebx
cmp eax, edx
mov edx, dword [esp + 0x40]
cmovae ecx, dword [esp + 0x3c]
add edx, ebx
mov dword [esp + 8], ecx
mov dword [esp], edx
call sym._memcpy
mov eax, dword [esp + 0x20]
mov edx, dword [eax + 0x14]
and dh, 2
je 0x413e75
mov eax, dword [esp + 0x20]
test byte [eax + 0xc], 4
jne 0x415596
mov eax, dword [esp + 0x20]
mov esi, dword [esp + 0x3c]
mov edx, dword [eax + 0x44]
sub edi, esi
add ebp, esi
mov ecx, edx
mov dword [esp + 0x3c], edx
sub ecx, esi
mov dword [eax + 0x44], ecx
test ecx, ecx
jne 0x414a10
mov eax, dword [esp + 0x20]
mov edx, dword [eax + 0x14]
mov eax, dword [esp + 0x20]
mov dword [eax + 0x44], 0
mov dword [eax + 4], 0x3f3a
test dh, 8
jne 0x414c40
mov eax, dword [esp + 0x20]
mov eax, dword [eax + 0x24]
test eax, eax
je 0x413ecb
mov dword [eax + 0x1c], 0
mov eax, dword [esp + 0x20]
mov dword [eax + 0x44], 0
mov dword [eax + 4], 0x3f3b
test dh, 0x10
jne 0x414b48
mov eax, dword [esp + 0x20]
mov eax, dword [eax + 0x24]
test eax, eax
je 0x413ef8
mov dword [eax + 0x24], 0
mov eax, dword [esp + 0x20]
mov dword [eax + 4], 0x3f3c
test dh, 2
jne 0x414ab0
mov eax, dword [esp + 0x20]
mov eax, dword [eax + 0x24]
test eax, eax
je 0x413f27
sar edx, 9
mov dword [eax + 0x30], 1
and edx, 1
mov dword [eax + 0x2c], edx
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov dword [esp], 0
call sym._crc32
mov edx, dword [esp + 0x20]
mov esi, dword [esp + 0x90]
mov dword [edx + 0x1c], eax
mov dword [esi + 0x30], eax
mov dword [edx + 4], 0x3f3f
jmp case.0x413716.11
mov eax, dword [esp + 0x20]
mov edx, dword [eax + 0x14]
jmp 0x413eb0
mov eax, dword [esp + 0x20]
mov edx, dword [eax + 0x14]
jmp 0x413edd
mov eax, dword [esp + 0x20]
mov edx, dword [eax + 0x14]
jmp 0x413f03
mov eax, dword [esp + 0x20]
mov ebx, dword [eax + 0xc]
test ebx, ebx
jne 0x4150c1
mov dword [eax + 4], 0x3f40
jmp case.0x413716.12
cmp dword [esp + 0x24], 0x1f
ja 0x413ff2
test edi, edi
je 0x414a10
mov edx, dword [esp + 0x28]
mov ecx, dword [esp + 0x24]
jmp 0x413fd8
test edi, edi
je 0x414a90
movzx eax, byte [ebp]
add ebp, 1
sub edi, 1
shl eax, cl
add ecx, 8
add edx, eax
cmp ecx, 0x1f
jbe 0x413fd0
mov dword [esp + 0x28], edx
mov eax, dword [esp + 0x20]
mov eax, dword [eax + 0x24]
test eax, eax
je 0x414004
mov edx, dword [esp + 0x28]
mov dword [eax + 4], edx
mov eax, dword [esp + 0x20]
test byte [eax + 0x15], 2
je 0x414018
test byte [eax + 0xc], 4
jne 0x4155ed
mov eax, dword [esp + 0x20]
mov dword [esp + 0x28], 0
mov dword [esp + 0x24], 0
mov dword [eax + 4], 0x3f37
jmp 0x41403f
cmp dword [esp + 0x24], 0xf
ja 0x41407a
test edi, edi
je 0x414a10
mov edx, dword [esp + 0x28]
mov ecx, dword [esp + 0x24]
jmp 0x414060
test edi, edi
je 0x414a90
movzx eax, byte [ebp]
add ebp, 1
sub edi, 1
shl eax, cl
add ecx, 8
add edx, eax
cmp ecx, 0xf
jbe 0x414058
mov dword [esp + 0x28], edx
mov eax, dword [esp + 0x20]
mov eax, dword [eax + 0x24]
test eax, eax
je 0x414097
mov ebx, dword [esp + 0x28]
movzx edx, bl
mov dword [eax + 8], edx
mov edx, ebx
shr edx, 8
mov dword [eax + 0xc], edx
mov eax, dword [esp + 0x20]
mov ebx, dword [eax + 0x14]
mov edx, ebx
test bh, 2
je 0x4140af
test byte [eax + 0xc], 4
jne 0x4153e3
mov eax, dword [esp + 0x20]
mov dword [esp + 0x24], 0
mov dword [esp + 0x28], 0
mov dword [eax + 4], 0x3f38
test bh, 4
jne 0x41440d
mov eax, dword [esp + 0x20]
mov eax, dword [eax + 0x24]
test eax, eax
je 0x4140e5
mov dword [eax + 0x10], 0
xor eax, eax
mov ebx, dword [esp + 0x20]
mov dword [ebx + 4], 0x3f39
jmp 0x413df6
mov eax, dword [esp + 0x20]
mov ecx, dword [eax + 0x60]
mov ebx, dword [eax + 0x6c]
cmp ebx, ecx
jae 0x4154e5
mov esi, dword [esp + 0x28]
mov dword [esp + 0x28], ecx
add ebx, 1
mov ecx, dword [esp + 0x24]
mov dword [esp + 0x3c], ebx
cmp ecx, 2
ja 0x414184
test edi, edi
je 0x4155b7
movzx eax, byte [ebp]
sub edi, 1
lea edx, [ebp + 1]
shl eax, cl
add ecx, 8
add esi, eax
mov ebx, dword [esp + 0x20]
mov ebp, dword [esp + 0x3c]
sub ecx, 3
mov dword [ebx + 0x6c], ebp
movzx eax, word [ebp + ebp + 0x51897e]
mov ebp, esi
shr esi, 3
and ebp, 7
mov word [ebx + eax*2 + 0x74], bp
mov ebp, dword [esp + 0x3c]
mov ebx, dword [esp + 0x28]
lea eax, [ebp + 1]
cmp ebp, ebx
je 0x4154d9
mov dword [esp + 0x3c], eax
mov ebp, edx
cmp ecx, 2
jbe 0x41412a
mov edx, ebp
jmp 0x414143
mov eax, dword [esp + 0x20]
mov eax, dword [eax + 0x6c]
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0x20]
mov edx, dword [eax + 0x64]
mov ebx, dword [eax + 0x68]
add ebx, edx
mov dword [esp + 0x44], ebx
cmp dword [esp + 0x40], ebx
jae 0x414290
mov ecx, dword [eax + 0x58]
mov ebx, dword [eax + 0x50]
mov eax, 0xffffffff
mov dword [esp + 0x48], edx
mov edx, dword [esp + 0x28]
shl eax, cl
mov dword [esp + 0x3c], ebx
not eax
mov ebx, eax
mov eax, dword [esp + 0x24]
mov dword [esp + 0x24], ebx
mov ecx, dword [esp + 0x24]
mov ebx, dword [esp + 0x3c]
and ecx, edx
lea ebx, [ebx + ecx*4]
movzx ecx, byte [ebx + 1]
movzx esi, word [ebx + 2]
movzx ebx, cl
cmp eax, ebx
jae 0x414247
test edi, edi
je 0x415587
mov ecx, eax
jmp 0x414210
test edi, edi
je 0x414a90
movzx eax, byte [ebp]
mov esi, dword [esp + 0x3c]
add ebp, 1
sub edi, 1
shl eax, cl
add ecx, 8
add edx, eax
mov eax, dword [esp + 0x24]
and eax, edx
lea ebx, [esi + eax*4]
movzx eax, byte [ebx + 1]
movzx esi, word [ebx + 2]
movzx ebx, al
cmp ecx, ebx
jb 0x414208
mov dword [esp + 0x28], ecx
mov ecx, eax
mov eax, dword [esp + 0x28]
cmp si, 0xf
ja 0x414e60
shr edx, cl
mov ecx, dword [esp + 0x40]
sub eax, ebx
mov dword [esp + 0x28], ecx
mov ebx, ecx
mov ecx, dword [esp + 0x20]
add ebx, 1
mov dword [ecx + 0x6c], ebx
mov dword [esp + 0x40], ebx
mov ebx, dword [esp + 0x28]
mov word [ecx + ebx*2 + 0x74], si
mov esi, dword [esp + 0x44]
cmp dword [esp + 0x40], esi
jb 0x4141da
mov dword [esp + 0x24], eax
mov dword [esp + 0x28], edx
mov edx, dword [esp + 0x48]
mov eax, dword [esp + 0x20]
cmp dword [eax + 4], 0x3f51
je case.0x413716.29
cmp word [eax + 0x274], 0
jne 0x415acd
mov esi, ebp
mov ebp, eax
mov eax, dword [esp + 0x90]
mov dword [eax + 0x18], str.invalid_code____missing_end_of_block
mov dword [ebp + 4], 0x3f51
jmp 0x413af4
mov esi, ebp
mov ebp, dword [esp + 0x20]
mov eax, dword [ebp + 0xc]
mov dword [esp + 0x20], eax
mov ebx, dword [esp + 0x20]
test ebx, ebx
je 0x4147f0
mov ecx, dword [ebp + 0x14]
test ecx, ecx
je 0x4147f0
cmp dword [esp + 0x24], 0x1f
ja 0x415638
test edi, edi
je 0x414a1c
movzx ecx, byte [esp + 0x24]
movzx eax, byte [esi]
lea edx, [edi - 1]
lea ebx, [esi + 1]
shl eax, cl
add dword [esp + 0x28], eax
mov eax, dword [esp + 0x24]
lea ecx, [eax + 8]
cmp ecx, 0x1f
ja 0x4152ae
test edx, edx
je 0x4151a8
movzx eax, byte [esi + 1]
lea edx, [edi - 2]
lea ebx, [esi + 2]
shl eax, cl
add dword [esp + 0x28], eax
mov eax, dword [esp + 0x24]
lea ecx, [eax + 0x10]
cmp ecx, 0x1f
ja 0x4152ae
test edx, edx
je 0x4151a8
movzx eax, byte [esi + 2]
lea edx, [edi - 3]
lea ebx, [esi + 3]
shl eax, cl
add dword [esp + 0x28], eax
mov eax, dword [esp + 0x24]
lea ecx, [eax + 0x18]
cmp ecx, 0x1f
ja 0x4152ae
test edx, edx
je 0x4151a8
movzx eax, byte [esi + 3]
add dword [esp + 0x24], 0x20
sub edi, 4
lea ebx, [esi + 4]
shl eax, cl
add dword [esp + 0x28], eax
test byte [esp + 0x20], 4
je 0x4147da
mov eax, dword [esp + 0x28]
cmp eax, dword [ebp + 0x20]
je 0x4147da
mov eax, dword [esp + 0x90]
mov esi, ebx
mov dword [eax + 0x18], str.incorrect_length_check
mov dword [ebp + 4], 0x3f51
jmp 0x413af4
mov ecx, dword [esp + 0x30]
mov eax, dword [esp + 0x2c]
mov esi, ebp
mov ebp, dword [esp + 0x20]
mov dword [esp + 0x20], 1
sub ecx, eax
jmp 0x413b10
mov eax, dword [esp + 0x20]
mov ebx, dword [eax + 0x14]
mov edx, ebx
test bh, 4
je 0x4140d3
cmp dword [esp + 0x24], 0xf
mov edx, dword [esp + 0x28]
ja 0x414442
test edi, edi
je 0x414a10
mov edx, dword [esp + 0x28]
mov ecx, dword [esp + 0x24]
jmp 0x414428
test edi, edi
je 0x414a90
movzx eax, byte [ebp]
add ebp, 1
sub edi, 1
shl eax, cl
add ecx, 8
add edx, eax
cmp ecx, 0xf
jbe 0x414420
mov dword [esp + 0x28], edx
mov eax, dword [esp + 0x20]
mov dword [eax + 0x44], edx
mov eax, dword [eax + 0x24]
test eax, eax
je 0x414453
mov dword [eax + 0x14], edx
test bh, 2
je 0x414466
mov eax, dword [esp + 0x20]
test byte [eax + 0xc], 4
jne 0x4158ea
mov eax, ebx
mov dword [esp + 0x24], 0
mov edx, ebx
mov dword [esp + 0x28], 0
and eax, 0x400
jmp 0x4140e7
mov dword [ebp + 4], 0x3f52
lea esi, [esi]
nop
mov dword [esp + 0x20], 0xfffffffc
jmp 0x413682
cmp dword [esp + 0x24], 0xf
ja 0x415829
test edi, edi
je 0x414a10
mov esi, dword [esp + 0x24]
movzx eax, byte [ebp]
lea edx, [edi - 1]
lea ebx, [ebp + 1]
mov ecx, esi
shl eax, cl
lea ecx, [esi + 8]
add dword [esp + 0x28], eax
mov eax, dword [esp + 0x28]
cmp ecx, 0xf
ja 0x4158d2
test edx, edx
je 0x414e34
movzx edx, byte [ebp + 1]
add esi, 0x10
sub edi, 2
lea ebx, [ebp + 2]
mov dword [esp + 0x24], esi
shl edx, cl
add eax, edx
mov dword [esp + 0x28], eax
mov edx, dword [esp + 0x20]
mov dword [edx + 0x14], eax
cmp al, 8
je 0x415312
mov ebp, edx
mov eax, str.unknown_compression_method
mov edx, ebx
mov ebx, dword [esp + 0x90]
mov esi, edx
mov dword [ebx + 0x18], eax
mov dword [ebp + 4], 0x3f51
jmp 0x413af4
cmp dword [esp + 0x24], 2
ja 0x415834
test edi, edi
je 0x4158bb
mov esi, dword [esp + 0x24]
movzx ebx, byte [ebp]
sub edi, 1
lea eax, [ebp + 1]
mov ecx, esi
add esi, 8
shl ebx, cl
add dword [esp + 0x28], ebx
mov dword [esp + 0x24], esi
mov ebx, dword [esp + 0x28]
mov esi, dword [esp + 0x20]
mov ecx, ebx
and ecx, 1
mov dword [esi + 8], ecx
mov ecx, ebx
shr ecx, 1
and ecx, 3
cmp ecx, 2
je 0x4146a7
cmp ecx, 3
je 0x4154aa
cmp ecx, 1
je 0x41398c
shr ebx, 3
sub dword [esp + 0x24], 3
mov ebp, eax
mov dword [esi + 4], 0x3f41
mov dword [esp + 0x28], ebx
lea esi, [esi]
nop
mov eax, dword [esp + 0x24]
mov ecx, eax
and eax, 0xfffffff8
and ecx, 7
mov dword [esp + 0x24], eax
shr dword [esp + 0x28], cl
cmp eax, 0x1f
ja 0x415813
test edi, edi
je 0x414a10
movzx ecx, byte [esp + 0x24]
movzx eax, byte [ebp]
lea edx, [edi - 1]
lea ebx, [ebp + 1]
shl eax, cl
add dword [esp + 0x28], eax
mov eax, dword [esp + 0x24]
mov esi, dword [esp + 0x28]
lea ecx, [eax + 8]
cmp ecx, 0x1f
ja 0x415417
test edx, edx
je 0x41529f
movzx eax, byte [ebp + 1]
lea edx, [edi - 2]
lea ebx, [ebp + 2]
shl eax, cl
add esi, eax
mov eax, dword [esp + 0x24]
mov dword [esp + 0x28], esi
lea ecx, [eax + 0x10]
cmp ecx, 0x1f
ja 0x415417
test edx, edx
je 0x41529f
movzx eax, byte [ebp + 2]
lea edx, [edi - 3]
lea ebx, [ebp + 3]
shl eax, cl
add esi, eax
mov eax, dword [esp + 0x24]
mov dword [esp + 0x28], esi
lea ecx, [eax + 0x18]
cmp ecx, 0x1f
ja 0x415417
test edx, edx
je 0x41529f
movzx eax, byte [ebp + 3]
add dword [esp + 0x24], 0x20
sub edi, 4
lea ebx, [ebp + 4]
shl eax, cl
add esi, eax
mov dword [esp + 0x28], esi
mov edx, esi
movzx eax, dx
shr edx, 0x10
xor edx, 0xffff
cmp eax, edx
je 0x4152df
mov ebp, dword [esp + 0x20]
mov eax, dword [esp + 0x90]
mov esi, ebx
mov dword [eax + 0x18], str.invalid_stored_block_lengths
mov dword [ebp + 4], 0x3f51
jmp 0x413af4
sub dword [esp + 0x24], 3
mov ebp, eax
mov dword [esi + 4], 0x3f44
shr dword [esp + 0x28], 3
lea esi, [esi]
cmp dword [esp + 0x24], 0xd
ja 0x415808
test edi, edi
je 0x414a10
mov esi, dword [esp + 0x24]
movzx eax, byte [ebp]
lea edx, [edi - 1]
lea ebx, [ebp + 1]
mov ecx, esi
shl eax, cl
lea ecx, [esi + 8]
add dword [esp + 0x28], eax
mov eax, dword [esp + 0x28]
cmp ecx, 0xd
ja 0x4158dd
test edx, edx
je 0x414e0f
movzx edx, byte [ebp + 1]
add esi, 0x10
sub edi, 2
lea ebx, [ebp + 2]
mov dword [esp + 0x24], esi
shl edx, cl
add eax, edx
mov dword [esp + 0x28], eax
mov esi, eax
mov eax, esi
mov ecx, esi
mov edx, esi
mov ebp, dword [esp + 0x20]
shr eax, 5
shr ecx, 0xa
and edx, 0x1f
sub dword [esp + 0x24], 0xe
and eax, 0x1f
and ecx, 0xf
add edx, 0x101
shr esi, 0xe
add eax, 1
add ecx, 4
mov dword [ebp + 0x64], edx
mov dword [ebp + 0x68], eax
mov dword [ebp + 0x60], ecx
mov dword [esp + 0x28], esi
cmp edx, 0x11e
ja 0x414767
cmp eax, 0x1e
jbe 0x415651
mov ebp, dword [esp + 0x20]
mov eax, dword [esp + 0x90]
mov esi, ebx
mov dword [eax + 0x18], str.too_many_length_or_distance_symbols
mov dword [ebp + 4], 0x3f51
jmp 0x413af4
mov ebx, dword [esp + 0x20]
sub dword [esp + 0x24], eax
shr dword [esp + 0x28], cl
mov dword [ebx + 0x1bc8], eax
mov dword [ebx + 0x44], edx
mov eax, dword [esp + 0x20]
mov dword [eax + 4], 0x3f4d
mov edx, dword [esp + 0x2c]
test edx, edx
je 0x4156e1
mov ebx, dword [esp + 0x20]
mov ecx, dword [esp + 0x38]
sub edx, 1
mov dword [esp + 0x2c], edx
mov eax, dword [ebx + 0x44]
mov byte [ecx], al
lea eax, [ecx + 1]
mov dword [ebx + 4], 0x3f48
mov dword [esp + 0x38], eax
jmp case.0x413716.20
mov dword [esp + 0x24], 0
mov esi, ebx
mov dword [esp + 0x28], 0
lea esi, [esi]
mov ecx, dword [esp + 0x30]
mov eax, dword [esp + 0x2c]
mov dword [ebp + 4], 0x3f50
mov dword [esp + 0x20], 1
sub ecx, eax
jmp 0x413b10
mov eax, dword [esp + 0x20]
mov ebx, 0xffffffff
mov ecx, dword [eax + 0x58]
mov esi, dword [eax + 0x50]
mov dword [eax + 0x1bc8], 0
mov eax, dword [esp + 0x28]
shl ebx, cl
not ebx
and eax, ebx
lea eax, [esi + eax*4]
movzx edx, byte [eax]
movzx ecx, byte [eax + 1]
mov byte [esp + 0x3c], dl
movzx edx, word [eax + 2]
movzx eax, cl
cmp dword [esp + 0x24], eax
jae 0x4148b4
test edi, edi
je 0x414a10
mov edx, dword [esp + 0x28]
mov ecx, dword [esp + 0x24]
mov dword [esp + 0x40], ebx
jmp 0x414870
test edi, edi
je 0x414a90
movzx eax, byte [ebp]
add ebp, 1
sub edi, 1
shl eax, cl
add ecx, 8
add edx, eax
mov eax, dword [esp + 0x40]
and eax, edx
lea eax, [esi + eax*4]
movzx ebx, byte [eax]
mov byte [esp + 0x3c], bl
movzx ebx, byte [eax + 1]
movzx eax, word [eax + 2]
mov word [esp + 0x24], ax
movzx eax, bl
cmp ecx, eax
jb 0x414868
mov dword [esp + 0x28], edx
movzx edx, word [esp + 0x24]
mov dword [esp + 0x24], ecx
mov ecx, ebx
movzx ebx, byte [esp + 0x3c]
test bl, bl
je 0x414787
cmp bl, 0xf
jbe 0x4156f8
mov ebx, dword [esp + 0x20]
sub dword [esp + 0x24], eax
mov ecx, eax
shr dword [esp + 0x28], cl
mov dword [ebx + 0x1bc8], eax
mov dword [ebx + 0x44], edx
test byte [esp + 0x3c], 0x20
je 0x4155c2
mov eax, dword [esp + 0x20]
mov dword [eax + 0x1bc8], 0xffffffff
mov dword [eax + 4], 0x3f3f
jmp case.0x413716.11
mov esi, dword [esp + 0x20]
mov ebx, dword [esp + 0x30]
mov ecx, dword [esi + 0x34]
sub ebx, edx
mov edx, dword [esi + 0x38]
cmp ecx, eax
jae 0x4150a8
sub eax, ecx
add ecx, dword [esi + 0x2c]
add ecx, ebx
mov ebx, esi
add edx, ecx
mov ecx, dword [ebx + 0x44]
cmp ecx, eax
cmovbe eax, ecx
mov esi, dword [esp + 0x2c]
cmp eax, esi
cmova eax, esi
mov ebx, eax
sub esi, eax
sub ecx, eax
mov eax, dword [esp + 0x20]
mov dword [esp + 0x2c], esi
mov dword [eax + 0x44], ecx
lea eax, [ebx - 1]
cmp eax, 3
jbe 0x414d20
mov eax, dword [esp + 0x38]
or eax, edx
test al, 3
lea eax, [edx + 1]
jne 0x414d23
mov esi, dword [esp + 0x38]
mov ecx, esi
sub ecx, eax
cmp ecx, 2
jbe 0x414d23
lea ecx, [ebx - 4]
mov dword [esp + 0x3c], ebx
xor eax, eax
shr ecx, 2
add ecx, 1
lea esi, [esi]
mov ebx, dword [edx + eax*4]
mov dword [esi + eax*4], ebx
add eax, 1
cmp eax, ecx
jb 0x414998
mov ebx, dword [esp + 0x3c]
shl ecx, 2
cmp ebx, ecx
je 0x4149d9
mov eax, dword [esp + 0x38]
mov esi, ebx
sub esi, ecx
add eax, ecx
add ecx, edx
movzx edx, byte [ecx]
mov byte [eax], dl
cmp esi, 1
je 0x4149d9
movzx edx, byte [ecx + 1]
mov byte [eax + 1], dl
cmp esi, 2
je 0x4149d9
movzx edx, byte [ecx + 2]
mov byte [eax + 2], dl
mov eax, dword [esp + 0x20]
add dword [esp + 0x38], ebx
mov edx, dword [eax + 0x44]
test edx, edx
je 0x4139d4
mov eax, dword [eax + 4]
jmp 0x413a6f
mov esi, ebp
mov ebp, dword [esp + 0x20]
jmp 0x413883
mov dword [esp + 0x28], ebx
mov dword [esp + 0x24], esi
lea esi, [esi]
nop
mov esi, ebp
lea esi, [esi]
mov ebp, dword [esp + 0x20]
mov ecx, dword [esp + 0x30]
mov eax, dword [esp + 0x2c]
mov dword [esp + 0x20], 0
sub ecx, eax
jmp 0x413b10
sub eax, 0xffffff80
jmp 0x413bfc
mov edi, dword [esp + 0x30]
mov eax, dword [esp + 0x2c]
mov dword [esp + 0x24], ecx
mov esi, dword [ebp + 0x14]
mov edx, dword [ebp + 0x1c]
sub eax, edi
mov edi, dword [esp + 0x90]
add eax, dword [edi + 0xc]
test esi, esi
mov dword [esp + 8], ecx
mov dword [esp + 4], eax
mov dword [esp], edx
je 0x414aa0
call sym._crc32
mov ecx, dword [esp + 0x24]
mov edi, dword [esp + 0x90]
mov dword [ebp + 0x1c], eax
mov dword [edi + 0x30], eax
jmp 0x413bbb
mov dword [esp + 0x28], edx
mov esi, ebp
mov dword [esp + 0x24], ecx
jmp 0x414a18
call sym._adler32
mov ecx, dword [esp + 0x24]
jmp 0x414a76
cmp dword [esp + 0x24], 0xf
ja 0x41563f
test edi, edi
je 0x414a10
movzx ecx, byte [esp + 0x24]
movzx eax, byte [ebp]
lea ebx, [edi - 1]
lea esi, [ebp + 1]
shl eax, cl
mov ecx, dword [esp + 0x24]
add dword [esp + 0x28], eax
mov eax, dword [esp + 0x28]
add ecx, 8
cmp ecx, 0xf
ja 0x415646
test ebx, ebx
je 0x414d48
movzx ebx, byte [ebp + 1]
add dword [esp + 0x24], 0x10
sub edi, 2
lea esi, [ebp + 2]
shl ebx, cl
add eax, ebx
mov dword [esp + 0x28], eax
mov ebp, dword [esp + 0x20]
test byte [ebp + 0xc], 4
je 0x414df8
movzx eax, word [ebp + 0x1c]
mov ebx, dword [esp + 0x28]
cmp eax, ebx
je 0x414df8
mov eax, dword [esp + 0x90]
mov dword [eax + 0x18], str.header_crc_mismatch
mov dword [ebp + 4], 0x3f51
jmp 0x413af4
test edi, edi
je 0x414a10
mov eax, dword [esp + 0x20]
mov dword [esp + 0x3c], edi
xor ebx, ebx
mov eax, dword [eax + 0x24]
add ebx, 1
movzx edx, byte [ebp + ebx - 1]
test eax, eax
je 0x414bb4
mov ecx, dword [eax + 0x24]
test ecx, ecx
je 0x414c08
mov esi, dword [esp + 0x20]
mov esi, dword [esi + 0x44]
cmp esi, dword [eax + 0x28]
jae 0x414c08
mov edi, dword [esp + 0x20]
lea eax, [esi + 1]
mov dword [edi + 0x44], eax
mov byte [ecx + esi], dl
test dl, dl
je 0x414ff0
mov eax, dword [esp + 0x3c]
cmp ebx, eax
jae 0x4153d3
mov eax, dword [edi + 0x24]
add ebx, 1
movzx edx, byte [ebp + ebx - 1]
test eax, eax
jne 0x414b69
mov edi, dword [esp + 0x3c]
test dl, dl
je 0x414bd8
cmp ebx, edi
jb 0x414bcc
jmp 0x414bd8
test dl, dl
je 0x414bd8
add ebx, 1
movzx edx, byte [ebp + ebx - 1]
cmp ebx, edi
jb 0x414bc8
mov eax, dword [esp + 0x20]
test byte [eax + 0x15], 2
je 0x414bec
test byte [eax + 0xc], 4
jne 0x4152b9
sub edi, ebx
add ebp, ebx
test dl, dl
jne 0x414a10
mov eax, dword [esp + 0x20]
mov edx, dword [eax + 0x14]
jmp 0x413ef8
test dl, dl
je 0x414ff0
mov edi, dword [esp + 0x3c]
cmp ebx, edi
jb 0x414b5d
jmp 0x414bd8
mov eax, dword [esp + 0x20]
mov dword [eax + 4], 0x3f3f
jmp case.0x413716.11
mov dword [esp + 0x28], ebx
mov esi, ebp
jmp 0x414a96
test edi, edi
je 0x414a10
mov eax, dword [esp + 0x20]
mov dword [esp + 0x3c], edi
xor ebx, ebx
mov eax, dword [eax + 0x24]
add ebx, 1
movzx edx, byte [ebp + ebx - 1]
test eax, eax
je 0x414cac
mov ecx, dword [eax + 0x1c]
test ecx, ecx
je 0x414d00
mov esi, dword [esp + 0x20]
mov esi, dword [esi + 0x44]
cmp esi, dword [eax + 0x20]
jae 0x414d00
mov edi, dword [esp + 0x20]
lea eax, [esi + 1]
mov dword [edi + 0x44], eax
mov byte [ecx + esi], dl
test dl, dl
je 0x4150b8
mov eax, dword [esp + 0x3c]
cmp ebx, eax
jae 0x4154d2
mov eax, dword [edi + 0x24]
add ebx, 1
movzx edx, byte [ebp + ebx - 1]
test eax, eax
jne 0x414c61
mov edi, dword [esp + 0x3c]
cmp ebx, edi
jb 0x414ccc
jmp 0x414cd0
add ebx, 1
movzx edx, byte [ebp + ebx - 1]
cmp ebx, edi
jae 0x414cd0
test dl, dl
jne 0x414cc0
mov eax, dword [esp + 0x20]
test byte [eax + 0x15], 2
je 0x414ce4
test byte [eax + 0xc], 4
jne 0x4153ad
sub edi, ebx
add ebp, ebx
test dl, dl
jne 0x414a10
mov eax, dword [esp + 0x20]
mov edx, dword [eax + 0x14]
jmp 0x413ecb
test dl, dl
je 0x4150b8
mov edi, dword [esp + 0x3c]
cmp ebx, edi
jb 0x414c55
jmp 0x414cd0
lea eax, [edx + 1]
lea ecx, [edx + ebx]
mov esi, ebx
mov edx, dword [esp + 0x38]
jmp 0x414d33
add eax, 1
movzx ebx, byte [eax - 1]
add edx, 1
mov byte [edx - 1], bl
cmp ecx, eax
jne 0x414d30
mov ebx, esi
jmp 0x4149d9
mov edi, dword [esp + 0x2c]
mov eax, ecx
mov ecx, dword [esp + 0x30]
mov ebp, dword [esp + 0x20]
mov dword [esp + 0x24], eax
sub ecx, edi
mov dword [esp + 0x20], 0
xor edi, edi
jmp 0x413b10
mov edx, dword [esp + 0x38]
sub edx, eax
mov eax, dword [esp + 0x20]
mov eax, dword [eax + 0x44]
mov ecx, eax
jmp 0x41493b
cmp dword [esp + 0x24], edx
jae 0x414dc5
test edi, edi
je 0x414a10
mov ebx, dword [esp + 0x28]
mov ecx, dword [esp + 0x24]
jmp 0x414da8
test edi, edi
je 0x414c30
movzx eax, byte [ebp]
add ebp, 1
sub edi, 1
shl eax, cl
add ecx, 8
add ebx, eax
cmp ecx, edx
jb 0x414da0
mov dword [esp + 0x28], ebx
mov dword [esp + 0x24], ecx
mov ecx, edx
mov eax, 0xffffffff
mov ebx, dword [esp + 0x28]
mov esi, dword [esp + 0x20]
shl eax, cl
sub dword [esp + 0x24], edx
not eax
add dword [esi + 0x1bc8], edx
and eax, ebx
shr ebx, cl
add eax, dword [esi + 0x44]
mov dword [esi + 0x44], eax
mov dword [esp + 0x28], ebx
jmp 0x413c4e
mov dword [esp + 0x24], 0
mov ebp, esi
mov dword [esp + 0x28], 0
jmp 0x413f0c
mov edi, dword [esp + 0x2c]
mov eax, ecx
mov ecx, dword [esp + 0x30]
mov esi, ebx
mov ebp, dword [esp + 0x20]
mov dword [esp + 0x24], eax
sub ecx, edi
mov dword [esp + 0x20], 0
xor edi, edi
jmp 0x413b10
mov edi, dword [esp + 0x2c]
mov eax, ecx
mov ecx, dword [esp + 0x30]
mov esi, ebx
mov ebp, dword [esp + 0x20]
mov dword [esp + 0x24], eax
sub ecx, edi
mov dword [esp + 0x20], 0
xor edi, edi
jmp 0x413b10
cmp si, 0x10
je 0x415668
cmp si, 0x11
je 0x415424
lea ecx, [ebx + 7]
cmp eax, ecx
jae 0x414eb1
test edi, edi
je 0x415587
mov esi, ebx
mov ebx, ecx
mov ecx, eax
mov eax, esi
jmp 0x414e98
test edi, edi
je 0x414a90
movzx esi, byte [ebp]
add ebp, 1
sub edi, 1
shl esi, cl
add ecx, 8
add edx, esi
cmp ecx, ebx
jb 0x414e90
mov ebx, eax
mov eax, ecx
mov ecx, ebx
sub eax, ebx
shr edx, cl
sub eax, 7
mov ecx, edx
and edx, 0x7f
add edx, 0xb
mov dword [esp + 0x28], edx
mov edx, ecx
xor ecx, ecx
mov word [esp + 0x4c], cx
shr edx, 7
mov ecx, dword [esp + 0x40]
mov ebx, dword [esp + 0x28]
add ecx, ebx
cmp dword [esp + 0x44], ecx
jb 0x415b51
mov ecx, dword [esp + 0x20]
sub ebx, 1
mov dword [esp + 0x54], ebx
mov esi, dword [ecx + 0x6c]
mov dword [esp + 0x40], esi
add esi, 0x3a
lea ecx, [ecx + esi*2]
mov dword [esp + 0x5c], esi
shr ecx, 1
and ecx, 1
cmp ebx, 3
mov ebx, dword [esp + 0x40]
mov dword [esp + 0x50], ecx
jbe 0x415a19
mov esi, dword [esp + 0x50]
mov dword [esp + 0x58], ebx
test esi, esi
je 0x414f44
lea ecx, [ebx + 1]
movzx esi, word [esp + 0x4c]
mov dword [esp + 0x58], ecx
mov ecx, dword [esp + 0x20]
mov word [ecx + ebx*2 + 0x74], si
mov ebx, dword [esp + 0x28]
sub ebx, 2
mov dword [esp + 0x54], ebx
mov esi, dword [esp + 0x50]
mov ebx, dword [esp + 0x28]
sub ebx, esi
mov dword [esp + 0x50], ebx
movzx ebx, word [esp + 0x4c]
mov ecx, ebx
shl ecx, 0x10
or ebx, ecx
mov ecx, dword [esp + 0x5c]
add ecx, esi
mov esi, dword [esp + 0x20]
lea ecx, [esi + ecx*2]
mov esi, dword [esp + 0x50]
shr esi, 1
lea esi, [ecx + esi*4]
lea esi, [esi]
mov dword [ecx], ebx
add ecx, 4
cmp esi, ecx
jne 0x414f78
mov ebx, dword [esp + 0x50]
test bl, 1
je 0x414fcd
mov ecx, dword [esp + 0x58]
mov esi, dword [esp + 0x20]
and ebx, 0xfffffffe
add ecx, ebx
lea esi, [esi + ecx*2]
movzx ecx, word [esp + 0x4c]
mov word [esi + 0x74], cx
mov ecx, dword [esp + 0x54]
sub ecx, ebx
je 0x414fcd
movzx ebx, word [esp + 0x4c]
mov word [esi + 0x76], bx
lea ebx, [ecx - 2]
cmp ecx, 1
je 0x414fcd
movzx ecx, word [esp + 0x4c]
mov word [esi + 0x78], cx
test ebx, ebx
je 0x414fcd
mov word [esi + 0x7a], cx
mov ebx, dword [esp + 0x40]
mov ecx, dword [esp + 0x28]
add ebx, ecx
mov ecx, dword [esp + 0x20]
mov dword [esp + 0x40], ebx
mov dword [ecx + 0x6c], ebx
jmp 0x414276
mov edi, dword [esp + 0x3c]
jmp 0x414bd8
mov edx, eax
movzx eax, word [esp + 0x3c]
and ebx, 0xf
mov dword [edx + 0x4c], ebx
mov dword [edx + 0x48], eax
mov dword [edx + 4], 0x3f4b
jmp 0x413a87
mov eax, dword [esp + 0x20]
mov dword [eax + 0x1bc8], 0xffffffff
jmp case.0x413716.11
cmp dword [esp + 0x24], ebx
jae 0x415075
test edi, edi
je 0x414a10
mov edx, dword [esp + 0x28]
mov ecx, dword [esp + 0x24]
jmp 0x415058
test edi, edi
je 0x414a90
movzx eax, byte [ebp]
add ebp, 1
sub edi, 1
shl eax, cl
add ecx, 8
add edx, eax
cmp ecx, ebx
jb 0x415050
mov dword [esp + 0x28], edx
mov dword [esp + 0x24], ecx
mov ecx, ebx
mov eax, 0xffffffff
mov edx, dword [esp + 0x28]
mov esi, dword [esp + 0x20]
shl eax, cl
sub dword [esp + 0x24], ebx
not eax
add dword [esi + 0x1bc8], ebx
and eax, edx
shr edx, cl
add dword [esi + 0x48], eax
mov dword [esp + 0x28], edx
jmp 0x413a8f
add ecx, ebx
mov ebx, esi
add edx, ecx
jmp 0x414933
mov edi, dword [esp + 0x3c]
jmp 0x414cd0
cmp dword [esp + 0x24], 0xf
ja 0x415a53
test edi, edi
je 0x415a65
movzx ecx, byte [esp + 0x24]
movzx eax, byte [ebp]
lea edx, [edi - 1]
lea esi, [ebp + 1]
shl eax, cl
add dword [esp + 0x28], eax
mov eax, dword [esp + 0x24]
lea ecx, [eax + 8]
cmp ecx, 0xf
ja 0x415a5a
test edx, edx
je 0x415487
movzx eax, byte [ebp + 1]
add dword [esp + 0x24], 0x10
sub edi, 2
lea esi, [ebp + 2]
shl eax, cl
add dword [esp + 0x28], eax
mov eax, dword [esp + 0x20]
test bl, 2
je 0x41512d
cmp dword [esp + 0x28], 0x8b1f
je 0x4159b4
mov eax, dword [eax + 0x24]
test eax, eax
je 0x41513b
mov dword [eax + 0x30], 0xffffffff
and ebx, 1
je 0x41561a
mov edx, dword [esp + 0x28]
mov eax, edx
shr edx, 8
shl eax, 8
movzx eax, ax
lea ecx, [eax + edx]
mov eax, 0x8421085
mul ecx
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 0x41561a
mov eax, dword [esp + 0x28]
and eax, 0xf
cmp eax, 8
je 0x415a7e
mov ebp, dword [esp + 0x20]
mov eax, dword [esp + 0x90]
mov dword [eax + 0x18], str.unknown_compression_method
mov dword [ebp + 4], 0x3f51
jmp 0x413af4
mov dword [esp + 0x24], ecx
mov esi, ebx
mov ecx, dword [esp + 0x30]
mov eax, dword [esp + 0x2c]
mov dword [esp + 0x20], 0
xor edi, edi
sub ecx, eax
jmp 0x413b10
lea ecx, [ebx + eax]
mov ebx, 0xffffffff
movzx esi, word [esp + 0x3c]
shl ebx, cl
mov ecx, ebx
mov ebx, dword [esp + 0x28]
mov dword [esp + 0x48], esi
not ecx
and ebx, ecx
mov dword [esp + 0x44], ecx
mov ecx, edx
shr ebx, cl
mov ecx, dword [esp + 0x40]
lea edx, [ebx + esi]
lea edx, [ecx + edx*4]
movzx ecx, word [edx + 2]
movzx ebx, byte [edx]
movzx edx, byte [edx + 1]
mov word [esp + 0x3c], cx
lea ecx, [edx + eax]
cmp dword [esp + 0x24], ecx
jae 0x415282
test edi, edi
je 0x414a10
mov ebx, dword [esp + 0x28]
mov esi, dword [esp + 0x24]
jmp 0x415230
test edi, edi
je 0x4149ff
movzx edx, byte [ebp]
mov ecx, esi
add esi, 8
add ebp, 1
sub edi, 1
shl edx, cl
mov ecx, eax
add ebx, edx
mov edx, dword [esp + 0x44]
and edx, ebx
shr edx, cl
mov ecx, dword [esp + 0x48]
add edx, ecx
mov ecx, dword [esp + 0x40]
lea edx, [ecx + edx*4]
movzx ecx, byte [edx]
mov byte [esp + 0x24], cl
movzx ecx, word [edx + 2]
movzx edx, byte [edx + 1]
mov word [esp + 0x3c], cx
lea ecx, [edx + eax]
cmp esi, ecx
jb 0x415228
mov dword [esp + 0x28], ebx
movzx ebx, byte [esp + 0x24]
mov dword [esp + 0x24], esi
mov ecx, eax
shr dword [esp + 0x28], cl
mov ecx, dword [esp + 0x20]
mov esi, edx
sub dword [esp + 0x24], eax
add eax, dword [ecx + 0x1bc8]
mov ecx, edx
jmp 0x413d1d
mov dword [esp + 0x24], ecx
mov ebp, dword [esp + 0x20]
mov esi, ebx
jmp 0x4151ae
mov dword [esp + 0x24], ecx
mov edi, edx
jmp 0x414398
mov dword [esp + 8], ebx
mov esi, eax
mov dword [esp + 4], ebp
mov eax, dword [eax + 0x1c]
mov byte [esp + 0x3c], dl
mov dword [esp], eax
call sym._crc32
movzx edx, byte [esp + 0x3c]
mov dword [esi + 0x1c], eax
jmp 0x414bec
mov edx, dword [esp + 0x20]
cmp dword [esp + 0x94], 6
mov dword [edx + 0x44], eax
mov dword [edx + 4], 0x3f42
je 0x415c0f
mov dword [esp + 0x24], 0
mov ebp, ebx
mov dword [esp + 0x28], 0
jmp 0x413d77
test ah, 0xe0
je 0x415855
mov ebp, edx
mov eax, str.unknown_header_flags_set
mov edx, ebx
jmp 0x414512
mov edx, esi
mov esi, dword [esp + 0x38]
sub edx, ecx
lea ecx, [esi + edx]
mov esi, dword [ebp + 0x14]
mov edx, dword [ebp + 0x1c]
mov dword [esp + 8], eax
mov dword [esp + 4], ecx
test esi, esi
mov dword [esp], edx
je 0x41593e
call sym._crc32
mov edx, dword [esp + 0x90]
mov dword [ebp + 0x1c], eax
mov dword [edx + 0x30], eax
mov eax, dword [ebp + 0xc]
mov dword [esp + 0x20], eax
mov edx, eax
and edx, 4
test edx, edx
je 0x413966
mov esi, dword [ebp + 0x14]
mov eax, dword [esp + 0x28]
test esi, esi
jne 0x415380
bswap eax
cmp dword [ebp + 0x1c], eax
je 0x413966
mov eax, dword [esp + 0x90]
mov esi, ebx
mov dword [eax + 0x18], str.incorrect_data_check
mov eax, dword [esp + 0x2c]
mov dword [ebp + 4], 0x3f51
mov dword [esp + 0x30], eax
jmp 0x413af4
mov dword [esp + 8], ebx
mov esi, eax
mov dword [esp + 4], ebp
mov eax, dword [eax + 0x1c]
mov byte [esp + 0x3c], dl
mov dword [esp], eax
call sym._crc32
movzx edx, byte [esp + 0x3c]
mov dword [esi + 0x1c], eax
jmp 0x414ce4
mov edi, eax
jmp 0x414bd8
mov edi, edx
mov eax, esi
jmp 0x4137ce
mov ebx, eax
movzx eax, word [esp + 0x28]
mov dword [esp + 8], 2
mov word [esp + 0x6c], ax
lea eax, [esp + 0x6c]
mov dword [esp + 4], eax
mov eax, dword [ebx + 0x1c]
mov dword [esp], eax
call sym._crc32
mov dword [ebx + 0x1c], eax
mov ebx, dword [ebx + 0x14]
mov edx, ebx
jmp 0x4140af
mov edi, edx
mov dword [esp + 0x24], ecx
mov edx, esi
jmp 0x414673
lea ecx, [ebx + 3]
cmp eax, ecx
jae 0x415461
test edi, edi
je 0x415587
mov esi, ebx
mov ebx, ecx
mov ecx, eax
mov eax, esi
jmp 0x415448
test edi, edi
je 0x414a90
movzx esi, byte [ebp]
add ebp, 1
sub edi, 1
shl esi, cl
add ecx, 8
add edx, esi
cmp ecx, ebx
jb 0x415440
mov ebx, eax
mov eax, ecx
mov ecx, ebx
sub eax, ebx
xor ebx, ebx
shr edx, cl
mov word [esp + 0x4c], bx
sub eax, 3
mov ecx, edx
and edx, 7
add edx, 3
mov dword [esp + 0x28], edx
mov edx, ecx
shr edx, 3
jmp 0x414ed2
mov edx, ecx
mov eax, dword [esp + 0x2c]
mov ecx, dword [esp + 0x30]
xor edi, edi
mov ebp, dword [esp + 0x20]
mov dword [esp + 0x24], edx
mov dword [esp + 0x20], 0
sub ecx, eax
jmp 0x413b10
mov edx, dword [esp + 0x90]
mov ebp, esi
sub dword [esp + 0x24], 3
shr dword [esp + 0x28], 3
mov dword [edx + 0x18], str.invalid_block_type
mov dword [esi + 4], 0x3f51
mov esi, eax
jmp 0x413af4
mov edi, eax
jmp 0x414cd0
mov dword [esp + 0x28], esi
mov ebx, ebp
mov ebp, edx
mov dword [esp + 0x24], ecx
cmp ebx, 0x12
ja 0x415517
mov ecx, dword [esp + 0x20]
lea eax, [ebx + ebx + 0x518980]
lea esi, [esi]
movzx edx, word [eax]
xor esi, esi
add eax, 2
mov word [ecx + edx*2 + 0x74], si
cmp eax, 0x5189a6
jne 0x4154f8
mov eax, dword [esp + 0x20]
mov dword [eax + 0x6c], 0x13
mov ebx, dword [esp + 0x20]
lea eax, [ebx + 0x534]
mov dword [ebx + 0x58], 7
mov dword [ebx + 0x70], eax
mov dword [ebx + 0x50], eax
lea eax, [ebx + 0x2f4]
mov dword [esp + 0x14], eax
lea eax, [ebx + 0x58]
mov dword [esp + 0x10], eax
lea eax, [ebx + 0x70]
mov dword [esp + 0xc], eax
lea eax, [ebx + 0x74]
mov dword [esp + 8], 0x13
mov dword [esp + 4], eax
mov dword [esp], 0
call sym._inflate_table
test eax, eax
je 0x415948
mov eax, dword [esp + 0x90]
mov esi, ebp
mov ebp, ebx
mov dword [eax + 0x18], str.invalid_code_lengths_set
mov dword [ebx + 4], 0x3f51
jmp 0x413af4
mov dword [esp + 0x28], edx
mov esi, ebp
mov dword [esp + 0x24], eax
jmp 0x414a18
mov ebx, eax
mov eax, dword [esp + 0x3c]
mov dword [esp + 4], ebp
mov dword [esp + 8], eax
mov eax, dword [ebx + 0x1c]
mov dword [esp], eax
call sym._crc32
mov dword [ebx + 0x1c], eax
jmp 0x413e75
mov dword [esp + 0x28], esi
mov esi, ebp
jmp 0x414a96
test byte [esp + 0x3c], 0x40
je 0x41583b
mov eax, dword [esp + 0x90]
mov esi, ebp
mov ebp, dword [esp + 0x20]
mov dword [eax + 0x18], 0x517fdb
mov dword [ebp + 4], 0x3f51
jmp 0x413af4
mov ebx, eax
mov eax, dword [esp + 0x28]
mov dword [esp + 8], 4
mov dword [esp + 0x6c], eax
lea eax, [esp + 0x6c]
mov dword [esp + 4], eax
mov eax, dword [ebx + 0x1c]
mov dword [esp], eax
call sym._crc32
mov dword [ebx + 0x1c], eax
jmp 0x414018
mov ebp, dword [esp + 0x20]
mov eax, dword [esp + 0x90]
mov dword [eax + 0x18], str.incorrect_header_check
mov dword [ebp + 4], 0x3f51
jmp 0x413af4
mov ebx, esi
jmp 0x414398
mov esi, ebp
jmp 0x414b0b
mov dword [esp + 0x24], ecx
mov edi, ebx
jmp 0x414b0b
mov dword [ebp + 0x6c], 0
mov dword [ebp + 4], 0x3f45
mov ebp, ebx
xor ebx, ebx
jmp 0x414112
lea ecx, [ebx + 2]
cmp eax, ecx
jae 0x41569f
test edi, edi
je 0x415587
mov esi, ecx
mov ecx, eax
mov eax, esi
jmp 0x415688
test edi, edi
je 0x414a90
movzx esi, byte [ebp]
add ebp, 1
sub edi, 1
shl esi, cl
add ecx, 8
add edx, esi
cmp ecx, eax
jb 0x415680
mov eax, ecx
mov ecx, ebx
sub eax, ebx
mov ebx, dword [esp + 0x40]
shr edx, cl
test ebx, ebx
je 0x415b51
mov esi, dword [esp + 0x20]
mov ecx, edx
sub eax, 2
shr edx, 2
and ecx, 3
movzx ebx, word [esi + ebx*2 + 0x72]
mov word [esp + 0x4c], bx
lea ebx, [ecx + 3]
mov dword [esp + 0x28], ebx
jmp 0x414ed2
mov dword [esp + 0x24], ecx
mov edi, edx
jmp 0x413936
mov esi, ebp
mov ecx, dword [esp + 0x30]
mov ebp, dword [esp + 0x20]
mov dword [esp + 0x20], 0
jmp 0x413b10
mov ecx, ebx
movzx ebx, dx
mov edx, 0xffffffff
add ecx, eax
mov dword [esp + 0x48], ebx
shl edx, cl
mov ecx, dword [esp + 0x28]
not edx
and ecx, edx
mov dword [esp + 0x44], edx
mov edx, ecx
mov ecx, eax
shr edx, cl
add edx, ebx
lea edx, [esi + edx*4]
movzx ebx, byte [edx]
mov byte [esp + 0x3c], bl
movzx ebx, word [edx + 2]
mov word [esp + 0x4c], bx
movzx ebx, byte [edx + 1]
lea edx, [ebx + eax]
cmp dword [esp + 0x24], edx
jae 0x4157bf
test edi, edi
je 0x414a10
mov dword [esp + 0x4c], esi
mov esi, dword [esp + 0x24]
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0x28]
jmp 0x415768
test edi, edi
je 0x4159a7
movzx edx, byte [ebp]
mov ecx, esi
mov ebx, dword [esp + 0x48]
add esi, 8
add ebp, 1
sub edi, 1
shl edx, cl
movzx ecx, byte [esp + 0x40]
add eax, edx
mov edx, dword [esp + 0x44]
and edx, eax
shr edx, cl
add edx, ebx
mov ebx, dword [esp + 0x4c]
lea edx, [ebx + edx*4]
movzx ebx, byte [edx]
movzx ecx, word [edx + 2]
mov byte [esp + 0x3c], bl
movzx ebx, byte [edx + 1]
mov edx, dword [esp + 0x40]
add edx, ebx
cmp esi, edx
jb 0x415760
mov word [esp + 0x4c], cx
mov dword [esp + 0x24], esi
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x40]
mov esi, dword [esp + 0x28]
mov ecx, eax
shr esi, cl
mov ecx, esi
mov esi, dword [esp + 0x24]
sub esi, eax
mov eax, ecx
mov ecx, ebx
shr eax, cl
sub esi, ebx
mov ebx, dword [esp + 0x20]
cmp byte [esp + 0x3c], 0
mov dword [esp + 0x28], eax
movzx eax, word [esp + 0x4c]
mov dword [esp + 0x24], esi
mov dword [ebx + 0x1bc8], edx
mov dword [ebx + 0x44], eax
jne 0x4148e1
jmp 0x41479c
mov esi, dword [esp + 0x28]
mov ebx, ebp
jmp 0x41471c
mov edx, dword [esp + 0x28]
mov ebx, ebp
jmp 0x414673
mov eax, dword [esp + 0x28]
mov ebx, ebp
jmp 0x4137ce
mov eax, dword [esp + 0x28]
mov ebx, ebp
jmp 0x4144fa
mov eax, ebp
jmp 0x414560
mov edx, dword [esp + 0x3c]
mov eax, dword [esp + 0x20]
and edx, 0xf
mov dword [eax + 4], 0x3f49
mov dword [eax + 0x4c], edx
jmp 0x413c3f
mov edx, dword [edx + 0x24]
test edx, edx
je 0x415868
mov eax, dword [esp + 0x28]
shr eax, 8
and eax, 1
mov dword [edx], eax
test dword [esp + 0x28], 0x200
je 0x415880
mov eax, dword [esp + 0x20]
test byte [eax + 0xc], 4
jne 0x415b79
mov eax, dword [esp + 0x20]
mov dword [esp + 0x24], 0
mov ebp, ebx
mov dword [esp + 0x28], 0
mov dword [eax + 4], 0x3f36
jmp 0x413fb7
mov eax, dword [esp + 0x20]
cmp dword [esp + 0x94], 6
mov dword [eax + 4], 0x3f47
jne case.0x413716.19
mov ecx, dword [esp + 0x30]
mov esi, ebp
mov ebp, eax
mov eax, dword [esp + 0x2c]
mov dword [esp + 0x20], edx
sub ecx, eax
jmp 0x413b10
mov dword [esp + 0x24], ecx
mov edi, edx
jmp 0x4144fa
mov dword [esp + 0x24], ecx
mov edi, edx
mov esi, eax
jmp 0x41471c
mov ebx, eax
movzx eax, word [esp + 0x28]
mov dword [esp + 8], 2
mov word [esp + 0x6c], ax
lea eax, [esp + 0x6c]
mov dword [esp + 4], eax
mov eax, dword [ebx + 0x1c]
mov dword [esp], eax
call sym._crc32
mov edx, dword [ebx + 0x14]
mov dword [esp + 0x24], 0
mov dword [ebx + 0x1c], eax
mov eax, edx
mov dword [esp + 0x28], 0
and eax, 0x400
jmp 0x4140e7
mov ebp, dword [esp + 0x20]
mov esi, ebx
jmp 0x4151ae
call sym._adler32
jmp 0x415352
mov eax, dword [esp + 0x20]
mov dword [esp + 0x40], 0
mov dword [eax + 0x6c], 0
mov dword [eax + 4], 0x3f46
jmp 0x41419b
mov ebx, esi
jmp 0x413936
mov edx, dword [esp + 0x38]
mov esi, ebp
mov ebp, eax
mov eax, dword [esp + 0x90]
mov dword [esp + 0x20], 2
mov dword [eax + 0xc], edx
mov edx, dword [esp + 0x2c]
mov dword [eax], esi
mov dword [eax + 0x10], edx
mov dword [eax + 4], edi
mov eax, dword [esp + 0x28]
mov dword [ebp + 0x3c], eax
mov eax, dword [esp + 0x24]
mov dword [ebp + 0x40], eax
jmp 0x413682
mov dword [esp + 0x28], eax
mov dword [esp + 0x24], esi
jmp 0x414a10
cmp dword [eax + 0x28], 0
jne 0x4159c1
mov dword [eax + 0x28], 0xf
xor eax, eax
mov ebp, esi
mov dword [esp + 8], eax
mov dword [esp + 4], eax
mov dword [esp], eax
call sym._crc32
movzx edx, word [0x5189a6]
mov ebx, dword [esp + 0x20]
mov word [esp + 0x6c], dx
lea edx, [esp + 0x6c]
mov dword [ebx + 0x1c], eax
mov dword [esp + 8], 2
mov dword [esp + 4], edx
mov dword [esp], eax
call sym._crc32
mov dword [ebx + 4], 0x3f35
mov dword [ebx + 0x1c], eax
xor eax, eax
mov dword [esp + 0x24], eax
mov dword [esp + 0x28], eax
jmp 0x4144ab
lea ecx, [ebx + ebx]
mov ebx, dword [esp + 0x20]
lea esi, [ebx + ecx]
movzx ebx, word [esp + 0x4c]
mov word [esi + 0x74], bx
mov word [esi + 0x76], bx
mov ebx, dword [esp + 0x28]
sub ebx, 3
jmp 0x414fbc
mov ecx, dword [esp + 0x30]
mov esi, ebp
mov ebp, dword [esp + 0x20]
sub ecx, eax
xor eax, eax
mov dword [esp + 0x20], eax
jmp 0x413b10
mov esi, ebp
jmp 0x415116
mov dword [esp + 0x24], ecx
mov edi, edx
jmp 0x415116
mov ecx, dword [esp + 0x30]
mov esi, ebp
mov ebp, eax
mov eax, dword [esp + 0x2c]
sub ecx, eax
xor eax, eax
mov dword [esp + 0x20], eax
jmp 0x413b10
shr dword [esp + 0x28], 4
mov eax, dword [esp + 0x28]
mov edx, dword [esp + 0x20]
and eax, 0xf
mov ecx, eax
mov eax, dword [edx + 0x28]
add ecx, 8
test eax, eax
jne 0x415baa
mov dword [edx + 0x28], ecx
cmp ecx, 0xf
jbe 0x415bbb
mov ebp, dword [esp + 0x20]
mov eax, dword [esp + 0x90]
sub dword [esp + 0x24], 4
mov dword [eax + 0x18], str.invalid_window_size
mov dword [ebp + 4], 0x3f51
jmp 0x413af4
mov ebx, dword [esp + 0x20]
mov eax, ebx
mov dword [ebx + 0x58], 9
add eax, 0x534
mov dword [ebx + 0x70], eax
mov dword [ebx + 0x50], eax
mov eax, ebx
lea ebx, [ebx + 0x2f4]
lea ecx, [eax + 0x70]
lea esi, [eax + 0x74]
add eax, 0x58
mov dword [esp + 0x14], ebx
mov dword [esp + 0xc], ecx
mov dword [esp + 0x10], eax
mov dword [esp + 8], edx
mov dword [esp + 4], esi
mov dword [esp], 1
mov dword [esp + 0x3c], ecx
call sym._inflate_table
mov ecx, dword [esp + 0x3c]
test eax, eax
je 0x415c53
mov eax, dword [esp + 0x90]
mov esi, ebp
mov ebp, dword [esp + 0x20]
mov dword [eax + 0x18], str.invalid_literal_lengths_set
mov dword [ebp + 4], 0x3f51
jmp 0x413af4
mov esi, ebp
mov ebp, dword [esp + 0x20]
jmp 0x413af4
mov dword [esp + 0x24], eax
mov esi, ebp
mov eax, dword [esp + 0x90]
mov ebp, dword [esp + 0x20]
mov dword [esp + 0x28], edx
mov dword [eax + 0x18], str.invalid_bit_length_repeat
mov dword [ebp + 4], 0x3f51
jmp 0x413af4
movzx eax, word [esp + 0x28]
mov esi, dword [esp + 0x20]
mov dword [esp + 8], 2
mov word [esp + 0x6c], ax
lea eax, [esp + 0x6c]
mov dword [esp + 4], eax
mov eax, dword [esi + 0x1c]
mov dword [esp], eax
call sym._crc32
mov dword [esi + 0x1c], eax
jmp 0x415880
cmp ecx, 0xf
ja 0x415aaa
cmp eax, ecx
jb 0x415aaa
mov ebx, dword [esp + 0x20]
mov eax, 1
xor ebp, ebp
shl eax, cl
mov dword [ebx + 0x18], eax
mov dword [ebx + 0x14], ebp
mov dword [esp + 8], ebp
mov dword [esp + 4], ebp
mov dword [esp], ebp
call sym._adler32
and dword [esp + 0x28], 0x200
mov edx, ebx
mov dword [ebx + 0x1c], eax
mov ebx, dword [esp + 0x90]
mov dword [ebx + 0x30], eax
jne 0x415cbb
xor ebx, ebx
mov dword [edx + 4], 0x3f3f
mov ebp, esi
mov dword [esp + 0x24], ebx
jmp case.0x413716.11
mov eax, dword [esp + 0x2c]
mov ecx, dword [esp + 0x30]
mov ebp, edx
mov esi, ebx
sub ecx, eax
xor eax, eax
mov dword [esp + 0x20], eax
mov dword [esp + 0x24], eax
mov dword [esp + 0x28], eax
jmp 0x413b10
mov ebp, dword [esp + 0x20]
mov ecx, dword [esp + 0x30]
mov dword [esp + 0x20], edx
mov esi, eax
mov edx, dword [esp + 0x2c]
sub dword [esp + 0x24], 3
shr dword [esp + 0x28], 3
sub ecx, edx
jmp 0x413b10
mov edx, dword [esp + 0x20]
mov eax, dword [edx + 0x70]
mov dword [edx + 0x5c], 6
mov dword [edx + 0x54], eax
lea eax, [edx + 0x5c]
mov dword [esp + 0x14], ebx
mov ebx, edx
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], ecx
mov eax, dword [edx + 0x68]
mov dword [esp + 8], eax
mov eax, dword [edx + 0x64]
mov dword [esp], 2
add eax, eax
add eax, esi
mov dword [esp + 4], eax
call sym._inflate_table
mov edx, eax
test eax, eax
je 0x4158a2
mov eax, dword [esp + 0x90]
mov esi, ebp
mov ebp, ebx
mov dword [eax + 0x18], str.invalid_distances_set
mov dword [ebx + 4], 0x3f51
jmp 0x413af4
mov eax, dword [esp + 0x20]
xor ecx, ecx
mov ebp, esi
mov dword [esp + 0x28], ecx
mov dword [eax + 4], 0x3f3d
mov dword [esp + 0x24], ecx
jmp 0x41372b