Function at 0x409098
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.0x408b76
mov eax, dword [esp + 0x90]
mov ecx, dword [eax + 0x20]
test ecx, ecx
je case.default.0x408b76
mov edx, dword [eax + 0x24]
test edx, edx
je case.default.0x408b76
mov ebp, dword [eax + 0x1c]
test ebp, ebp
je case.default.0x408b76
mov eax, dword [ebp]
cmp dword [esp + 0x90], eax
je 0x408af0
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.0x408b76
mov esi, dword [esp + 0x90]
mov esi, dword [esi + 0xc]
mov dword [esp + 0x38], esi
test esi, esi
je case.default.0x408b76
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 0x4091c0
cmp edx, 0x3f3f
jne 0x408b43
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.0x408b76
jmp dword [eax*4 + 0x419614]
cmp dword [esp + 0x24], 0x1f
ja 0x40ac7e
test edi, edi
je 0x409e70
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 0x40a83a
test edx, edx
je 0x40a6ff
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 0x40a83a
test edx, edx
je 0x40a6ff
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 0x40a83a
test edx, edx
je 0x40ad93
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 0x40adce
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 0x409e70
mov eax, dword [esp + 0x20]
mov edx, dword [eax + 8]
test edx, edx
je 0x409990
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 0x409c50
cmp dword [esp + 0x24], 0x1f
ja 0x40adc7
test edi, edi
je 0x409e7c
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 0x40ab36
test edx, edx
je 0x40a608
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 0x40ab36
test edx, edx
je 0x40a608
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 0x40ab36
test edx, edx
je 0x40a608
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 0x40a7cb
test edx, edx
jne 0x40a789
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 0x40973d
cmp dword [esp + 0x94], 6
mov dword [esi + 0x50], 0x419720
mov dword [esi + 0x58], 9
mov dword [esi + 0x54], 0x4196a0
mov dword [esi + 0x5c], 5
mov dword [esi + 4], 0x3f47
je 0x40b090
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 0x409c70
mov eax, dword [esp + 0x2c]
cmp eax, 0x101
jbe 0x409c70
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 0x40a480
sub eax, 0x3f34
jmp 0x408b6d
mov eax, dword [esp + 0x20]
mov ebx, dword [eax + 0x4c]
test ebx, ebx
jne 0x40a498
mov eax, dword [esp + 0x20]
mov dword [eax + 4], 0x3f4c
mov ecx, dword [esp + 0x2c]
test ecx, ecx
je 0x40ab41
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 0x40a1d0
lea edx, [eax + ecx]
mov eax, edx
sub eax, esi
cmp dword [ebx + 0x30], eax
jae 0x409d70
mov ecx, dword [ebx + 0x1bc4]
test ecx, ecx
je 0x409d70
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 0x408fc8
cmp dword [esp + 0x30], eax
je 0x408ff7
mov eax, dword [ebp + 4]
cmp eax, 0x3f50
ja 0x408ff7
cmp eax, 0x3f4d
jbe 0x408fc8
cmp dword [esp + 0x94], 4
je 0x408ff7
lea esi, [esi]
mov edx, dword [esp + 0x38]
mov eax, dword [esp + 0x90]
call sym._updatewindow
test eax, eax
jne 0x4098e4
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 0x40901b
test ecx, ecx
jne 0x409ea0
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 0x409e98
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 0x409078
cmp dword [esp + 0x94], 4
jne 0x408ae2
mov eax, dword [esp + 0x20]
test eax, eax
jne 0x408ae2
mov dword [esp + 0x20], 0xfffffffb
jmp 0x408ae2
mov eax, dword [esp + 0x20]
mov edx, dword [eax + 0x4c]
test edx, edx
jne 0x40a1e8
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 0x409168
test edi, edi
je 0x409e70
mov ebx, dword [esp + 0x28]
mov dword [esp + 0x28], ecx
mov ecx, dword [esp + 0x24]
jmp 0x409120
test edi, edi
je 0x40a090
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 0x409118
mov dword [esp + 0x28], ebx
movzx ebx, byte [esp + 0x24]
mov dword [esp + 0x24], ecx
mov ecx, eax
cmp bl, 0xf
jbe 0x40a627
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 0x40a460
mov esi, ebp
mov ebp, eax
mov eax, dword [esp + 0x90]
mov dword [eax + 0x18], 0x419597
mov dword [ebp + 4], 0x3f51
jmp 0x408f54
test ebx, ebx
je 0x408b2f
jmp case.default.0x408b76
mov eax, dword [esp + 0x20]
mov eax, dword [eax + 0x44]
mov edx, dword [esp + 0x20]
mov dword [edx + 4], 0x3f43
test eax, eax
je 0x40a080
cmp edi, eax
cmovbe eax, edi
mov ebx, eax
mov eax, dword [esp + 0x2c]
cmp ebx, eax
cmova ebx, eax
test ebx, ebx
je 0x40ae9c
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 0x408ecf
mov eax, dword [esp + 0x20]
mov eax, dword [eax + 0x44]
jmp 0x4091e2
mov eax, dword [esp + 0x20]
mov edx, dword [eax + 0x14]
mov eax, edx
and eax, 0x400
test eax, eax
je 0x4092fe
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 0x4092ef
mov eax, dword [eax + 0x24]
test eax, eax
je 0x4092c2
mov esi, dword [eax + 0x10]
mov dword [esp + 0x40], esi
test esi, esi
je 0x4092c2
mov esi, dword [eax + 0x14]
mov eax, dword [eax + 0x18]
mov ebx, esi
sub ebx, ecx
cmp ebx, eax
jae 0x4092c2
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 0x4092d5
mov eax, dword [esp + 0x20]
test byte [eax + 0xc], 4
jne 0x40a9f6
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 0x409e70
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 0x40a0a0
mov eax, dword [esp + 0x20]
mov eax, dword [eax + 0x24]
test eax, eax
je 0x40932b
mov dword [eax + 0x1c], 0
mov eax, dword [esp + 0x20]
mov dword [eax + 0x44], 0
mov dword [eax + 4], 0x3f3b
test dh, 0x10
jne 0x409fa8
mov eax, dword [esp + 0x20]
mov eax, dword [eax + 0x24]
test eax, eax
je 0x409358
mov dword [eax + 0x24], 0
mov eax, dword [esp + 0x20]
mov dword [eax + 4], 0x3f3c
test dh, 2
jne 0x409f10
mov eax, dword [esp + 0x20]
mov eax, dword [eax + 0x24]
test eax, eax
je 0x409387
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.0x408b76.11
mov eax, dword [esp + 0x20]
mov edx, dword [eax + 0x14]
jmp 0x409310
mov eax, dword [esp + 0x20]
mov edx, dword [eax + 0x14]
jmp 0x40933d
mov eax, dword [esp + 0x20]
mov edx, dword [eax + 0x14]
jmp 0x409363
mov eax, dword [esp + 0x20]
mov ebx, dword [eax + 0xc]
test ebx, ebx
jne 0x40a521
mov dword [eax + 4], 0x3f40
jmp case.0x408b76.12
cmp dword [esp + 0x24], 0x1f
ja 0x409452
test edi, edi
je 0x409e70
mov edx, dword [esp + 0x28]
mov ecx, dword [esp + 0x24]
jmp 0x409438
test edi, edi
je 0x409ef0
movzx eax, byte [ebp]
add ebp, 1
sub edi, 1
shl eax, cl
add ecx, 8
add edx, eax
cmp ecx, 0x1f
jbe 0x409430
mov dword [esp + 0x28], edx
mov eax, dword [esp + 0x20]
mov eax, dword [eax + 0x24]
test eax, eax
je 0x409464
mov edx, dword [esp + 0x28]
mov dword [eax + 4], edx
mov eax, dword [esp + 0x20]
test byte [eax + 0x15], 2
je 0x409478
test byte [eax + 0xc], 4
jne 0x40aa4d
mov eax, dword [esp + 0x20]
mov dword [esp + 0x28], 0
mov dword [esp + 0x24], 0
mov dword [eax + 4], 0x3f37
jmp 0x40949f
cmp dword [esp + 0x24], 0xf
ja 0x4094da
test edi, edi
je 0x409e70
mov edx, dword [esp + 0x28]
mov ecx, dword [esp + 0x24]
jmp 0x4094c0
test edi, edi
je 0x409ef0
movzx eax, byte [ebp]
add ebp, 1
sub edi, 1
shl eax, cl
add ecx, 8
add edx, eax
cmp ecx, 0xf
jbe 0x4094b8
mov dword [esp + 0x28], edx
mov eax, dword [esp + 0x20]
mov eax, dword [eax + 0x24]
test eax, eax
je 0x4094f7
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 0x40950f
test byte [eax + 0xc], 4
jne 0x40a843
mov eax, dword [esp + 0x20]
mov dword [esp + 0x24], 0
mov dword [esp + 0x28], 0
mov dword [eax + 4], 0x3f38
test bh, 4
jne 0x40986d
mov eax, dword [esp + 0x20]
mov eax, dword [eax + 0x24]
test eax, eax
je 0x409545
mov dword [eax + 0x10], 0
xor eax, eax
mov ebx, dword [esp + 0x20]
mov dword [ebx + 4], 0x3f39
jmp 0x409256
mov eax, dword [esp + 0x20]
mov ecx, dword [eax + 0x60]
mov ebx, dword [eax + 0x6c]
cmp ebx, ecx
jae 0x40a945
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 0x4095e4
test edi, edi
je 0x40aa17
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 + 0x419f1e]
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 0x40a939
mov dword [esp + 0x3c], eax
mov ebp, edx
cmp ecx, 2
jbe 0x40958a
mov edx, ebp
jmp 0x4095a3
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 0x4096f0
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 0x4096a7
test edi, edi
je 0x40a9e7
mov ecx, eax
jmp 0x409670
test edi, edi
je 0x409ef0
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 0x409668
mov dword [esp + 0x28], ecx
mov ecx, eax
mov eax, dword [esp + 0x28]
cmp si, 0xf
ja 0x40a2c0
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 0x40963a
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.0x408b76.29
cmp word [eax + 0x274], 0
jne 0x40af2d
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 0x408f54
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 0x409c50
mov ecx, dword [ebp + 0x14]
test ecx, ecx
je 0x409c50
cmp dword [esp + 0x24], 0x1f
ja 0x40aa98
test edi, edi
je 0x409e7c
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 0x40a70e
test edx, edx
je 0x40a608
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 0x40a70e
test edx, edx
je 0x40a608
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 0x40a70e
test edx, edx
je 0x40a608
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 0x409c3a
mov eax, dword [esp + 0x28]
cmp eax, dword [ebp + 0x20]
je 0x409c3a
mov eax, dword [esp + 0x90]
mov esi, ebx
mov dword [eax + 0x18], str.incorrect_length_check
mov dword [ebp + 4], 0x3f51
jmp 0x408f54
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 0x408f70
mov eax, dword [esp + 0x20]
mov ebx, dword [eax + 0x14]
mov edx, ebx
test bh, 4
je 0x409533
cmp dword [esp + 0x24], 0xf
mov edx, dword [esp + 0x28]
ja 0x4098a2
test edi, edi
je 0x409e70
mov edx, dword [esp + 0x28]
mov ecx, dword [esp + 0x24]
jmp 0x409888
test edi, edi
je 0x409ef0
movzx eax, byte [ebp]
add ebp, 1
sub edi, 1
shl eax, cl
add ecx, 8
add edx, eax
cmp ecx, 0xf
jbe 0x409880
mov dword [esp + 0x28], edx
mov eax, dword [esp + 0x20]
mov dword [eax + 0x44], edx
mov eax, dword [eax + 0x24]
test eax, eax
je 0x4098b3
mov dword [eax + 0x14], edx
test bh, 2
je 0x4098c6
mov eax, dword [esp + 0x20]
test byte [eax + 0xc], 4
jne 0x40ad4a
mov eax, ebx
mov dword [esp + 0x24], 0
mov edx, ebx
mov dword [esp + 0x28], 0
and eax, 0x400
jmp 0x409547
mov dword [ebp + 4], 0x3f52
lea esi, [esi]
nop
mov dword [esp + 0x20], 0xfffffffc
jmp 0x408ae2
cmp dword [esp + 0x24], 0xf
ja 0x40ac89
test edi, edi
je 0x409e70
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 0x40ad32
test edx, edx
je 0x40a294
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 0x40a772
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 0x408f54
cmp dword [esp + 0x24], 2
ja 0x40ac94
test edi, edi
je 0x40ad1b
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 0x409b07
cmp ecx, 3
je 0x40a90a
cmp ecx, 1
je 0x408dec
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 0x40ac73
test edi, edi
je 0x409e70
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 0x40a877
test edx, edx
je 0x40a6ff
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 0x40a877
test edx, edx
je 0x40a6ff
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 0x40a877
test edx, edx
je 0x40a6ff
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 0x40a73f
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 0x408f54
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 0x40ac68
test edi, edi
je 0x409e70
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 0x40ad3d
test edx, edx
je 0x40a26f
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 0x409bc7
cmp eax, 0x1e
jbe 0x40aab1
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 0x408f54
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 0x40ab41
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.0x408b76.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 0x408f70
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 0x409d14
test edi, edi
je 0x409e70
mov edx, dword [esp + 0x28]
mov ecx, dword [esp + 0x24]
mov dword [esp + 0x40], ebx
jmp 0x409cd0
test edi, edi
je 0x409ef0
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 0x409cc8
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 0x409be7
cmp bl, 0xf
jbe 0x40ab58
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 0x40aa22
mov eax, dword [esp + 0x20]
mov dword [eax + 0x1bc8], 0xffffffff
mov dword [eax + 4], 0x3f3f
jmp case.0x408b76.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 0x40a508
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 0x40a180
mov eax, dword [esp + 0x38]
or eax, edx
test al, 3
lea eax, [edx + 1]
jne 0x40a183
mov esi, dword [esp + 0x38]
mov ecx, esi
sub ecx, eax
cmp ecx, 2
jbe 0x40a183
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 0x409df8
mov ebx, dword [esp + 0x3c]
shl ecx, 2
cmp ebx, ecx
je 0x409e39
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 0x409e39
movzx edx, byte [ecx + 1]
mov byte [eax + 1], dl
cmp esi, 2
je 0x409e39
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 0x408e34
mov eax, dword [eax + 4]
jmp 0x408ecf
mov esi, ebp
mov ebp, dword [esp + 0x20]
jmp 0x408ce3
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 0x408f70
sub eax, 0xffffff80
jmp 0x40905c
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 0x409f00
call sym._crc32
mov ecx, dword [esp + 0x24]
mov edi, dword [esp + 0x90]
mov dword [ebp + 0x1c], eax
mov dword [edi + 0x30], eax
jmp 0x40901b
mov dword [esp + 0x28], edx
mov esi, ebp
mov dword [esp + 0x24], ecx
jmp 0x409e78
call sym._adler32
mov ecx, dword [esp + 0x24]
jmp 0x409ed6
cmp dword [esp + 0x24], 0xf
ja 0x40aa9f
test edi, edi
je 0x409e70
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 0x40aaa6
test ebx, ebx
je 0x40a1a8
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 0x40a258
movzx eax, word [ebp + 0x1c]
mov ebx, dword [esp + 0x28]
cmp eax, ebx
je 0x40a258
mov eax, dword [esp + 0x90]
mov dword [eax + 0x18], str.header_crc_mismatch
mov dword [ebp + 4], 0x3f51
jmp 0x408f54
test edi, edi
je 0x409e70
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 0x40a014
mov ecx, dword [eax + 0x24]
test ecx, ecx
je 0x40a068
mov esi, dword [esp + 0x20]
mov esi, dword [esi + 0x44]
cmp esi, dword [eax + 0x28]
jae 0x40a068
mov edi, dword [esp + 0x20]
lea eax, [esi + 1]
mov dword [edi + 0x44], eax
mov byte [ecx + esi], dl
test dl, dl
je 0x40a450
mov eax, dword [esp + 0x3c]
cmp ebx, eax
jae 0x40a833
mov eax, dword [edi + 0x24]
add ebx, 1
movzx edx, byte [ebp + ebx - 1]
test eax, eax
jne 0x409fc9
mov edi, dword [esp + 0x3c]
test dl, dl
je 0x40a038
cmp ebx, edi
jb 0x40a02c
jmp 0x40a038
test dl, dl
je 0x40a038
add ebx, 1
movzx edx, byte [ebp + ebx - 1]
cmp ebx, edi
jb 0x40a028
mov eax, dword [esp + 0x20]
test byte [eax + 0x15], 2
je 0x40a04c
test byte [eax + 0xc], 4
jne 0x40a719
sub edi, ebx
add ebp, ebx
test dl, dl
jne 0x409e70
mov eax, dword [esp + 0x20]
mov edx, dword [eax + 0x14]
jmp 0x409358
test dl, dl
je 0x40a450
mov edi, dword [esp + 0x3c]
cmp ebx, edi
jb 0x409fbd
jmp 0x40a038
mov eax, dword [esp + 0x20]
mov dword [eax + 4], 0x3f3f
jmp case.0x408b76.11
mov dword [esp + 0x28], ebx
mov esi, ebp
jmp 0x409ef6
test edi, edi
je 0x409e70
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 0x40a10c
mov ecx, dword [eax + 0x1c]
test ecx, ecx
je 0x40a160
mov esi, dword [esp + 0x20]
mov esi, dword [esi + 0x44]
cmp esi, dword [eax + 0x20]
jae 0x40a160
mov edi, dword [esp + 0x20]
lea eax, [esi + 1]
mov dword [edi + 0x44], eax
mov byte [ecx + esi], dl
test dl, dl
je 0x40a518
mov eax, dword [esp + 0x3c]
cmp ebx, eax
jae 0x40a932
mov eax, dword [edi + 0x24]
add ebx, 1
movzx edx, byte [ebp + ebx - 1]
test eax, eax
jne 0x40a0c1
mov edi, dword [esp + 0x3c]
cmp ebx, edi
jb 0x40a12c
jmp 0x40a130
add ebx, 1
movzx edx, byte [ebp + ebx - 1]
cmp ebx, edi
jae 0x40a130
test dl, dl
jne 0x40a120
mov eax, dword [esp + 0x20]
test byte [eax + 0x15], 2
je 0x40a144
test byte [eax + 0xc], 4
jne 0x40a80d
sub edi, ebx
add ebp, ebx
test dl, dl
jne 0x409e70
mov eax, dword [esp + 0x20]
mov edx, dword [eax + 0x14]
jmp 0x40932b
test dl, dl
je 0x40a518
mov edi, dword [esp + 0x3c]
cmp ebx, edi
jb 0x40a0b5
jmp 0x40a130
lea eax, [edx + 1]
lea ecx, [edx + ebx]
mov esi, ebx
mov edx, dword [esp + 0x38]
jmp 0x40a193
add eax, 1
movzx ebx, byte [eax - 1]
add edx, 1
mov byte [edx - 1], bl
cmp ecx, eax
jne 0x40a190
mov ebx, esi
jmp 0x409e39
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 0x408f70
mov edx, dword [esp + 0x38]
sub edx, eax
mov eax, dword [esp + 0x20]
mov eax, dword [eax + 0x44]
mov ecx, eax
jmp 0x409d9b
cmp dword [esp + 0x24], edx
jae 0x40a225
test edi, edi
je 0x409e70
mov ebx, dword [esp + 0x28]
mov ecx, dword [esp + 0x24]
jmp 0x40a208
test edi, edi
je 0x40a090
movzx eax, byte [ebp]
add ebp, 1
sub edi, 1
shl eax, cl
add ecx, 8
add ebx, eax
cmp ecx, edx
jb 0x40a200
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 0x4090ae
mov dword [esp + 0x24], 0
mov ebp, esi
mov dword [esp + 0x28], 0
jmp 0x40936c
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 0x408f70
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 0x408f70
cmp si, 0x10
je 0x40aac8
cmp si, 0x11
je 0x40a884
lea ecx, [ebx + 7]
cmp eax, ecx
jae 0x40a311
test edi, edi
je 0x40a9e7
mov esi, ebx
mov ebx, ecx
mov ecx, eax
mov eax, esi
jmp 0x40a2f8
test edi, edi
je 0x409ef0
movzx esi, byte [ebp]
add ebp, 1
sub edi, 1
shl esi, cl
add ecx, 8
add edx, esi
cmp ecx, ebx
jb 0x40a2f0
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 0x40afb1
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 0x40ae79
mov esi, dword [esp + 0x50]
mov dword [esp + 0x58], ebx
test esi, esi
je 0x40a3a4
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 0x40a3d8
mov ebx, dword [esp + 0x50]
test bl, 1
je 0x40a42d
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 0x40a42d
movzx ebx, word [esp + 0x4c]
mov word [esi + 0x76], bx
lea ebx, [ecx - 2]
cmp ecx, 1
je 0x40a42d
movzx ecx, word [esp + 0x4c]
mov word [esi + 0x78], cx
test ebx, ebx
je 0x40a42d
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 0x4096d6
mov edi, dword [esp + 0x3c]
jmp 0x40a038
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 0x408ee7
mov eax, dword [esp + 0x20]
mov dword [eax + 0x1bc8], 0xffffffff
jmp case.0x408b76.11
cmp dword [esp + 0x24], ebx
jae 0x40a4d5
test edi, edi
je 0x409e70
mov edx, dword [esp + 0x28]
mov ecx, dword [esp + 0x24]
jmp 0x40a4b8
test edi, edi
je 0x409ef0
movzx eax, byte [ebp]
add ebp, 1
sub edi, 1
shl eax, cl
add ecx, 8
add edx, eax
cmp ecx, ebx
jb 0x40a4b0
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 0x408eef
add ecx, ebx
mov ebx, esi
add edx, ecx
jmp 0x409d93
mov edi, dword [esp + 0x3c]
jmp 0x40a130
cmp dword [esp + 0x24], 0xf
ja 0x40aeb3
test edi, edi
je 0x40aec5
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 0x40aeba
test edx, edx
je 0x40a8e7
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 0x40a58d
cmp dword [esp + 0x28], 0x8b1f
je 0x40ae14
mov eax, dword [eax + 0x24]
test eax, eax
je 0x40a59b
mov dword [eax + 0x30], 0xffffffff
and ebx, 1
je 0x40aa7a
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 0x40aa7a
mov eax, dword [esp + 0x28]
and eax, 0xf
cmp eax, 8
je 0x40aede
mov ebp, dword [esp + 0x20]
mov eax, dword [esp + 0x90]
mov dword [eax + 0x18], str.unknown_compression_method
mov dword [ebp + 4], 0x3f51
jmp 0x408f54
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 0x408f70
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 0x40a6e2
test edi, edi
je 0x409e70
mov ebx, dword [esp + 0x28]
mov esi, dword [esp + 0x24]
jmp 0x40a690
test edi, edi
je 0x409e5f
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 0x40a688
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 0x40917d
mov dword [esp + 0x24], ecx
mov ebp, dword [esp + 0x20]
mov esi, ebx
jmp 0x40a60e
mov dword [esp + 0x24], ecx
mov edi, edx
jmp 0x4097f8
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 0x40a04c
mov edx, dword [esp + 0x20]
cmp dword [esp + 0x94], 6
mov dword [edx + 0x44], eax
mov dword [edx + 4], 0x3f42
je 0x40b06f
mov dword [esp + 0x24], 0
mov ebp, ebx
mov dword [esp + 0x28], 0
jmp 0x4091d7
test ah, 0xe0
je 0x40acb5
mov ebp, edx
mov eax, str.unknown_header_flags_set
mov edx, ebx
jmp 0x409972
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 0x40ad9e
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 0x408dc6
mov esi, dword [ebp + 0x14]
mov eax, dword [esp + 0x28]
test esi, esi
jne 0x40a7e0
bswap eax
cmp dword [ebp + 0x1c], eax
je 0x408dc6
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 0x408f54
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 0x40a144
mov edi, eax
jmp 0x40a038
mov edi, edx
mov eax, esi
jmp 0x408c2e
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 0x40950f
mov edi, edx
mov dword [esp + 0x24], ecx
mov edx, esi
jmp 0x409ad3
lea ecx, [ebx + 3]
cmp eax, ecx
jae 0x40a8c1
test edi, edi
je 0x40a9e7
mov esi, ebx
mov ebx, ecx
mov ecx, eax
mov eax, esi
jmp 0x40a8a8
test edi, edi
je 0x409ef0
movzx esi, byte [ebp]
add ebp, 1
sub edi, 1
shl esi, cl
add ecx, 8
add edx, esi
cmp ecx, ebx
jb 0x40a8a0
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 0x40a332
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 0x408f70
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 0x408f54
mov edi, eax
jmp 0x40a130
mov dword [esp + 0x28], esi
mov ebx, ebp
mov ebp, edx
mov dword [esp + 0x24], ecx
cmp ebx, 0x12
ja 0x40a977
mov ecx, dword [esp + 0x20]
lea eax, [ebx + ebx + 0x419f20]
lea esi, [esi]
movzx edx, word [eax]
xor esi, esi
add eax, 2
mov word [ecx + edx*2 + 0x74], si
cmp eax, 0x419f46
jne 0x40a958
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 0x40ada8
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 0x408f54
mov dword [esp + 0x28], edx
mov esi, ebp
mov dword [esp + 0x24], eax
jmp 0x409e78
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 0x4092d5
mov dword [esp + 0x28], esi
mov esi, ebp
jmp 0x409ef6
test byte [esp + 0x3c], 0x40
je 0x40ac9b
mov eax, dword [esp + 0x90]
mov esi, ebp
mov ebp, dword [esp + 0x20]
mov dword [eax + 0x18], 0x41957b
mov dword [ebp + 4], 0x3f51
jmp 0x408f54
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 0x409478
mov ebp, dword [esp + 0x20]
mov eax, dword [esp + 0x90]
mov dword [eax + 0x18], str.incorrect_header_check
mov dword [ebp + 4], 0x3f51
jmp 0x408f54
mov ebx, esi
jmp 0x4097f8
mov esi, ebp
jmp 0x409f6b
mov dword [esp + 0x24], ecx
mov edi, ebx
jmp 0x409f6b
mov dword [ebp + 0x6c], 0
mov dword [ebp + 4], 0x3f45
mov ebp, ebx
xor ebx, ebx
jmp 0x409572
lea ecx, [ebx + 2]
cmp eax, ecx
jae 0x40aaff
test edi, edi
je 0x40a9e7
mov esi, ecx
mov ecx, eax
mov eax, esi
jmp 0x40aae8
test edi, edi
je 0x409ef0
movzx esi, byte [ebp]
add ebp, 1
sub edi, 1
shl esi, cl
add ecx, 8
add edx, esi
cmp ecx, eax
jb 0x40aae0
mov eax, ecx
mov ecx, ebx
sub eax, ebx
mov ebx, dword [esp + 0x40]
shr edx, cl
test ebx, ebx
je 0x40afb1
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 0x40a332
mov dword [esp + 0x24], ecx
mov edi, edx
jmp 0x408d96
mov esi, ebp
mov ecx, dword [esp + 0x30]
mov ebp, dword [esp + 0x20]
mov dword [esp + 0x20], 0
jmp 0x408f70
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 0x40ac1f
test edi, edi
je 0x409e70
mov dword [esp + 0x4c], esi
mov esi, dword [esp + 0x24]
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0x28]
jmp 0x40abc8
test edi, edi
je 0x40ae07
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 0x40abc0
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 0x409d41
jmp 0x409bfc
mov esi, dword [esp + 0x28]
mov ebx, ebp
jmp 0x409b7c
mov edx, dword [esp + 0x28]
mov ebx, ebp
jmp 0x409ad3
mov eax, dword [esp + 0x28]
mov ebx, ebp
jmp 0x408c2e
mov eax, dword [esp + 0x28]
mov ebx, ebp
jmp 0x40995a
mov eax, ebp
jmp 0x4099c0
mov edx, dword [esp + 0x3c]
mov eax, dword [esp + 0x20]
and edx, 0xf
mov dword [eax + 4], 0x3f49
mov dword [eax + 0x4c], edx
jmp 0x40909f
mov edx, dword [edx + 0x24]
test edx, edx
je 0x40acc8
mov eax, dword [esp + 0x28]
shr eax, 8
and eax, 1
mov dword [edx], eax
test dword [esp + 0x28], 0x200
je 0x40ace0
mov eax, dword [esp + 0x20]
test byte [eax + 0xc], 4
jne 0x40afd9
mov eax, dword [esp + 0x20]
mov dword [esp + 0x24], 0
mov ebp, ebx
mov dword [esp + 0x28], 0
mov dword [eax + 4], 0x3f36
jmp 0x409417
mov eax, dword [esp + 0x20]
cmp dword [esp + 0x94], 6
mov dword [eax + 4], 0x3f47
jne case.0x408b76.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 0x408f70
mov dword [esp + 0x24], ecx
mov edi, edx
jmp 0x40995a
mov dword [esp + 0x24], ecx
mov edi, edx
mov esi, eax
jmp 0x409b7c
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 0x409547
mov ebp, dword [esp + 0x20]
mov esi, ebx
jmp 0x40a60e
call sym._adler32
jmp 0x40a7b2
mov eax, dword [esp + 0x20]
mov dword [esp + 0x40], 0
mov dword [eax + 0x6c], 0
mov dword [eax + 4], 0x3f46
jmp 0x4095fb
mov ebx, esi
jmp 0x408d96
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 0x408ae2
mov dword [esp + 0x28], eax
mov dword [esp + 0x24], esi
jmp 0x409e70
cmp dword [eax + 0x28], 0
jne 0x40ae21
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 [0x419f46]
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 0x40990b
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 0x40a41c
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 0x408f70
mov esi, ebp
jmp 0x40a576
mov dword [esp + 0x24], ecx
mov edi, edx
jmp 0x40a576
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 0x408f70
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 0x40b00a
mov dword [edx + 0x28], ecx
cmp ecx, 0xf
jbe 0x40b01b
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 0x408f54
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 0x40b0b3
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 0x408f54
mov esi, ebp
mov ebp, dword [esp + 0x20]
jmp 0x408f54
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 0x408f54
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 0x40ace0
cmp ecx, 0xf
ja 0x40af0a
cmp eax, ecx
jb 0x40af0a
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 0x40b11b
xor ebx, ebx
mov dword [edx + 4], 0x3f3f
mov ebp, esi
mov dword [esp + 0x24], ebx
jmp case.0x408b76.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 0x408f70
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 0x408f70
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 0x40ad02
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 0x408f54
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 0x408b8b