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

Disassembly:
push ebp
mov ebp, esp
push edi
push esi
push ebx
sub esp, 0xbc
mov eax, dword [ebp + 8]
test eax, eax
jne 0x40fa25
mov dword [ebp - 0x68], 0xfffffffe
mov eax, dword [ebp - 0x68]
lea esp, [ebp - 0xc]
pop ebx
pop esi
pop edi
pop ebp
ret
mov eax, dword [ebp + 8]
mov edi, dword [eax + 0x1c]
test edi, edi
je case.default.0x40fa9d
mov edx, dword [eax + 0xc]
mov dword [ebp - 0x78], edx
test edx, edx
je case.default.0x40fa9d
mov ecx, dword [eax]
mov dword [ebp - 0x7c], ecx
test ecx, ecx
je 0x410b10
mov eax, dword [edi]
cmp eax, 0xb
je 0x410ac9
mov edx, dword [ebp + 8]
mov ecx, dword [ebp + 8]
lea esi, [edi + 0x530]
mov edx, dword [edx + 0x10]
mov dword [ebp - 0x70], edx
mov ecx, dword [ecx + 4]
mov dword [ebp - 0x74], ecx
mov edx, dword [edi + 0x38]
mov dword [ebp - 0x3c], edx
lea edx, [edi + 0x2f0]
mov ebx, dword [edi + 0x3c]
mov dword [ebp - 0x30], ecx
mov ecx, dword [ebp - 0x70]
mov dword [ebp - 0x68], 0
mov dword [ebp - 0x6c], ecx
mov dword [ebp - 0xa0], esi
mov dword [ebp - 0xa4], edx
cmp eax, 0x1e
ja case.default.0x40fa9d
jmp dword [eax*4 + 0x41edb0]
mov eax, dword [ebp - 0x30]
test eax, eax
je 0x40fd57
mov esi, dword [ebp - 0x30]
mov edx, dword [ebp - 0x7c]
dec esi
xor eax, eax
mov dword [ebp - 0x30], esi
mov cl, bl
mov al, byte [edx]
inc edx
shl eax, cl
mov ecx, dword [ebp - 0x3c]
mov dword [ebp - 0x7c], edx
add ecx, eax
add ebx, 8
mov dword [ebp - 0x3c], ecx
cmp ebx, 0xf
jbe 0x40faa4
mov eax, dword [ebp - 0x3c]
mov dword [edi + 0x10], eax
cmp al, 8
je 0x411044
mov edx, dword [ebp + 8]
mov dword [edx + 0x18], str.unknown_compression_method
mov dword [edi], 0x1d
mov eax, dword [edi]
jmp 0x40fa94
mov eax, dword [ebp - 0x30]
test eax, eax
je 0x40fd57
mov esi, dword [ebp - 0x30]
mov edx, dword [ebp - 0x7c]
dec esi
xor eax, eax
mov dword [ebp - 0x30], esi
mov cl, bl
mov al, byte [edx]
inc edx
shl eax, cl
mov ecx, dword [ebp - 0x3c]
mov dword [ebp - 0x7c], edx
add ecx, eax
add ebx, 8
mov dword [ebp - 0x3c], ecx
cmp ebx, 0xd
jbe 0x40faf7
mov eax, dword [ebp - 0x3c]
sub ebx, 0xe
and eax, 0x1f
add eax, 0x101
mov dword [edi + 0x60], eax
mov eax, dword [ebp - 0x3c]
shr eax, 5
and eax, 0x1f
inc eax
mov dword [edi + 0x64], eax
mov eax, dword [ebp - 0x3c]
shr eax, 0xa
mov dword [ebp - 0x3c], eax
mov eax, dword [ebp - 0x3c]
and eax, 0xf
add eax, 4
mov dword [edi + 0x5c], eax
mov eax, dword [ebp - 0x3c]
shr eax, 4
mov dword [ebp - 0x3c], eax
cmp dword [edi + 0x60], 0x11e
ja 0x410e5a
cmp dword [edi + 0x64], 0x1e
ja 0x410e5a
mov dword [edi + 0x68], 0
mov dword [edi], 0x11
mov eax, dword [edi + 0x68]
mov dword [ebp - 0xb8], eax
lea esi, [eax + eax + 0x41ee40]
cmp dword [edi + 0x5c], eax
jbe 0x40fc0b
cmp ebx, 2
ja 0x40fbce
mov eax, dword [ebp - 0x30]
test eax, eax
je 0x40fd57
mov eax, dword [ebp - 0x30]
mov edx, dword [ebp - 0x7c]
dec eax
mov cl, bl
mov dword [ebp - 0x30], eax
xor eax, eax
mov al, byte [edx]
inc edx
shl eax, cl
mov ecx, dword [ebp - 0x3c]
mov dword [ebp - 0x7c], edx
add ecx, eax
add ebx, 8
mov dword [ebp - 0x3c], ecx
mov ax, word [esi]
mov edx, dword [ebp - 0x3c]
and eax, 0xffff
and edx, 7
sub ebx, 3
add esi, 2
mov word [edi + eax*2 + 0x70], dx
mov ecx, dword [ebp - 0xb8]
inc ecx
mov dword [ebp - 0xb8], ecx
mov eax, dword [ebp - 0xb8]
mov dword [edi + 0x68], eax
mov edx, dword [ebp - 0x3c]
shr edx, 3
mov dword [ebp - 0x3c], edx
cmp dword [edi + 0x5c], eax
ja 0x40fb9d
cmp dword [ebp - 0xb8], 0x12
ja 0x40fc4e
mov esi, dword [ebp - 0xb8]
lea edx, [esi + esi + 0x41ee40]
mov ax, word [edx]
add edx, 2
and eax, 0xffff
mov word [edi + eax*2 + 0x70], 0
mov eax, dword [ebp - 0xb8]
inc eax
mov dword [ebp - 0xb8], eax
mov eax, dword [ebp - 0xb8]
mov dword [edi + 0x68], eax
cmp eax, 0x13
jne 0x40fc21
mov eax, dword [ebp - 0xa0]
mov dword [edi + 0x54], 7
mov dword [edi + 0x6c], eax
mov dword [edi + 0x4c], eax
push eax
push eax
mov eax, dword [ebp - 0xa4]
push eax
lea eax, [edi + 0x54]
push eax
lea eax, [edi + 0x6c]
push eax
lea eax, [edi + 0x70]
push 0x13
push eax
push 0
call dbg.inflate_table
add esp, 0x20
mov dword [ebp - 0x68], eax
test eax, eax
je 0x410676
mov edx, dword [ebp + 8]
mov dword [edx + 0x18], str.invalid_code_lengths_set
mov dword [edi], 0x1d
mov eax, dword [edi]
jmp 0x40fa94
mov esi, dword [ebp - 0x30]
test esi, esi
je 0x40fd57
mov ecx, dword [ebp - 0x30]
xor eax, eax
dec ecx
mov edx, dword [ebp - 0x3c]
mov dword [ebp - 0x30], ecx
mov ecx, dword [ebp - 0x7c]
mov esi, dword [ebp - 0x7c]
mov al, byte [ecx]
mov cl, bl
shl eax, cl
add edx, eax
inc esi
mov dword [ebp - 0x3c], edx
mov dword [ebp - 0x7c], esi
add ebx, 8
cmp ebx, 0x1f
jbe 0x40fca4
mov eax, dword [ebp - 0x3c]
mov edx, dword [ebp - 0x3c]
shr eax, 8
mov ecx, dword [ebp - 0x3c]
shr edx, 0x18
and eax, 0xff00
add eax, edx
mov edx, dword [ebp - 0x3c]
and edx, 0xff00
xor ebx, ebx
shl ecx, 0x18
shl edx, 8
mov dword [ebp - 0x3c], ecx
add eax, edx
mov edx, dword [ebp - 0x3c]
add eax, edx
mov dword [edi + 0x18], eax
mov esi, dword [ebp + 8]
mov dword [esi + 0x30], eax
mov dword [edi], 0xa
mov dword [ebp - 0x3c], 0
mov eax, dword [edi + 0xc]
test eax, eax
je 0x4113bd
push eax
push 0
push 0
push 0
call dbg.adler32
add esp, 0x10
mov dword [edi + 0x18], eax
mov esi, dword [ebp + 8]
mov dword [esi + 0x30], eax
mov dword [edi], 0xb
mov eax, dword [ebp + 0xc]
sub eax, 5
cmp eax, 1
ja case.0x40fa9d.12
mov ecx, dword [ebp + 8]
mov esi, dword [ebp - 0x78]
mov dword [ecx + 0xc], esi
mov eax, dword [ebp - 0x70]
mov dword [ecx + 0x10], eax
mov edx, dword [ebp - 0x7c]
mov dword [ecx], edx
mov esi, dword [ebp - 0x30]
mov dword [ecx + 4], esi
mov eax, dword [ebp - 0x3c]
mov dword [edi + 0x3c], ebx
mov dword [edi + 0x38], eax
mov eax, dword [edi + 0x28]
test eax, eax
jne 0x40fd8e
cmp dword [edi], 0x19
ja 0x40fda1
mov edx, dword [ebp - 0x6c]
cmp dword [ecx + 0x10], edx
je 0x40fda1
mov edx, dword [ebp - 0x6c]
mov eax, dword [ebp + 8]
call dbg.updatewindow
test eax, eax
jne 0x410664
mov ecx, dword [ebp + 8]
mov esi, dword [ebp - 0x74]
mov ebx, dword [ebp - 0x6c]
mov eax, dword [ecx + 4]
mov edx, dword [ecx + 0x14]
sub esi, eax
mov eax, dword [ecx + 0x10]
sub ebx, eax
mov eax, dword [ecx + 8]
add eax, esi
add edx, ebx
mov dword [ecx + 8], eax
mov dword [ecx + 0x14], edx
mov eax, dword [edi + 0x1c]
add eax, ebx
mov dword [edi + 0x1c], eax
mov eax, dword [edi + 8]
test eax, eax
je 0x40fdff
test ebx, ebx
je 0x40fdff
mov eax, dword [edi + 0x10]
test eax, eax
je 0x410af4
push eax
push ebx
mov eax, dword [ecx + 0xc]
sub eax, ebx
push eax
mov eax, dword [edi + 0x18]
push eax
call dbg.crc32
add esp, 0x10
mov dword [edi + 0x18], eax
mov ecx, dword [ebp + 8]
mov dword [ecx + 0x30], eax
cmp dword [edi + 4], 1
sbb eax, eax
mov edx, dword [edi + 0x3c]
xor eax, 0xffffffff
and eax, 0x40
add eax, edx
mov edx, dword [edi]
cmp edx, 0xb
je 0x410aea
cmp edx, 0x13
je 0x410abf
xor ecx, ecx
cmp edx, 0xe
je 0x410abf
mov edx, dword [ebp + 8]
add eax, ecx
or ebx, esi
mov dword [edx + 0x2c], eax
je 0x40fe45
cmp dword [ebp + 0xc], 4
jne 0x40fa1a
mov eax, dword [ebp - 0x68]
test eax, eax
jne 0x40fa1a
mov dword [ebp - 0x68], 0xfffffffb
jmp 0x40fa1a
mov edx, dword [edi + 0x20]
test edx, edx
je 0x40fe6e
mov eax, dword [ebp - 0x3c]
shr eax, 8
and eax, 1
mov dword [edx], eax
test byte [edi + 0x11], 2
jne 0x4112bf
mov dword [edi], 2
xor ebx, ebx
mov dword [ebp - 0x3c], 0
mov esi, dword [ebp - 0x30]
test esi, esi
je 0x40fd57
mov ecx, dword [ebp - 0x30]
xor eax, eax
dec ecx
mov edx, dword [ebp - 0x3c]
mov dword [ebp - 0x30], ecx
mov ecx, dword [ebp - 0x7c]
mov al, byte [ecx]
mov cl, bl
shl eax, cl
add edx, eax
mov eax, dword [ebp - 0x7c]
inc eax
mov dword [ebp - 0x3c], edx
mov dword [ebp - 0x7c], eax
add ebx, 8
cmp ebx, 0x1f
jbe 0x40fe87
mov eax, dword [edi + 0x20]
test eax, eax
je 0x40fec8
mov edx, dword [ebp - 0x3c]
mov dword [eax + 4], edx
test byte [edi + 0x11], 2
jne 0x410efd
mov dword [edi], 3
xor ebx, ebx
mov dword [ebp - 0x3c], 0
mov esi, dword [ebp - 0x30]
test esi, esi
je 0x40fd57
mov ecx, dword [ebp - 0x30]
mov esi, dword [ebp - 0x7c]
dec ecx
xor eax, eax
mov dword [ebp - 0x30], ecx
mov cl, bl
mov al, byte [esi]
mov edx, dword [ebp - 0x3c]
shl eax, cl
add edx, eax
inc esi
mov dword [ebp - 0x3c], edx
mov dword [ebp - 0x7c], esi
add ebx, 8
cmp ebx, 0xf
jbe 0x40fee1
mov edx, dword [edi + 0x20]
test edx, edx
je 0x40ff2c
movzx eax, byte [ebp - 0x3c]
mov dword [edx + 8], eax
mov eax, dword [ebp - 0x3c]
mov edx, dword [edi + 0x20]
shr eax, 8
mov dword [edx + 0xc], eax
test byte [edi + 0x11], 2
jne 0x410ecd
mov dword [edi], 4
xor ebx, ebx
mov dword [ebp - 0x3c], 0
test byte [edi + 0x11], 4
jne 0x4101d4
mov eax, dword [edi + 0x20]
test eax, eax
je 0x40ff5d
mov dword [eax + 0x10], 0
mov dword [edi], 5
mov edx, dword [edi + 0x10]
test dh, 4
je 0x40fffc
mov eax, dword [edi + 0x40]
mov esi, dword [ebp - 0x30]
cmp esi, eax
jbe 0x40ff7b
mov esi, eax
test esi, esi
je 0x40fff4
mov ecx, dword [edi + 0x20]
mov dword [ebp - 0xa8], ecx
test ecx, ecx
je 0x40ffd3
mov ecx, dword [ecx + 0x10]
mov dword [ebp - 0x98], ecx
test ecx, ecx
je 0x40ffd3
mov ecx, dword [ebp - 0xa8]
mov edx, dword [ecx + 0x14]
mov ecx, dword [ecx + 0x18]
sub edx, eax
mov dword [ebp - 0x48], esi
lea eax, [esi + edx]
cmp eax, ecx
jbe 0x40ffb6
sub ecx, edx
mov dword [ebp - 0x48], ecx
mov eax, dword [ebp - 0x98]
mov ecx, dword [ebp - 0x48]
add eax, edx
push edx
mov edx, dword [ebp - 0x7c]
push ecx
push edx
push eax
call sym._memcpy
mov edx, dword [edi + 0x10]
add esp, 0x10
and dh, 2
jne 0x4110bc
mov edx, dword [ebp - 0x30]
mov eax, dword [ebp - 0x7c]
add eax, esi
sub edx, esi
mov dword [ebp - 0x30], edx
mov dword [ebp - 0x7c], eax
mov eax, dword [edi + 0x40]
sub eax, esi
mov dword [edi + 0x40], eax
test eax, eax
jne 0x40fd57
mov dword [edi + 0x40], 0
mov dword [edi], 6
test byte [edi + 0x11], 8
je 0x410b4f
mov eax, dword [ebp - 0x30]
test eax, eax
je 0x40fd57
xor esi, esi
mov edx, dword [ebp - 0x7c]
mov dl, byte [esi + edx]
inc esi
mov byte [ebp - 0x91], dl
mov edx, dword [edi + 0x20]
test edx, edx
je 0x410050
mov ecx, dword [edx + 0x1c]
test ecx, ecx
je 0x410050
mov eax, dword [edi + 0x40]
cmp eax, dword [edx + 0x20]
jae 0x410050
mov dl, byte [ebp - 0x91]
mov byte [ecx + eax], dl
inc eax
mov dword [edi + 0x40], eax
cmp byte [ebp - 0x91], 0
jne 0x410ab1
test byte [edi + 0x11], 2
jne 0x410e32
mov eax, dword [ebp - 0x30]
mov ecx, dword [ebp - 0x7c]
sub eax, esi
add ecx, esi
mov dword [ebp - 0x30], eax
mov dword [ebp - 0x7c], ecx
cmp byte [ebp - 0x91], 0
jne 0x40fd57
mov dword [edi + 0x40], 0
mov dword [edi], 7
test byte [edi + 0x11], 0x10
je 0x410b20
mov edx, dword [ebp - 0x30]
test edx, edx
je 0x40fd57
xor esi, esi
mov ecx, dword [ebp - 0x7c]
mov cl, byte [esi + ecx]
inc esi
mov byte [ebp - 0x31], cl
mov edx, dword [edi + 0x20]
test edx, edx
je 0x4100d2
mov ecx, dword [edx + 0x24]
test ecx, ecx
je 0x4100d2
mov eax, dword [edi + 0x40]
cmp eax, dword [edx + 0x28]
jae 0x4100d2
mov dl, byte [ebp - 0x31]
mov byte [ecx + eax], dl
inc eax
mov dword [edi + 0x40], eax
cmp byte [ebp - 0x31], 0
jne 0x410aa3
test byte [edi + 0x11], 2
jne 0x410d01
mov eax, dword [ebp - 0x30]
sub eax, esi
mov dword [ebp - 0x30], eax
mov eax, dword [ebp - 0x7c]
add eax, esi
mov dword [ebp - 0x7c], eax
cmp byte [ebp - 0x31], 0
jne 0x40fd57
mov dword [edi], 8
mov edx, dword [edi + 0x10]
test dh, 2
jne 0x41017c
mov eax, dword [edi + 0x20]
test eax, eax
je 0x410128
sar edx, 9
and edx, 1
mov dword [eax + 0x2c], edx
mov eax, dword [edi + 0x20]
mov dword [eax + 0x30], 1
push eax
push 0
push 0
push 0
call dbg.crc32
add esp, 0x10
mov dword [edi + 0x18], eax
mov edx, dword [ebp + 8]
mov dword [edx + 0x30], eax
mov dword [edi], 0xb
mov eax, dword [edi]
jmp 0x40fa94
mov eax, dword [ebp - 0x30]
test eax, eax
je 0x40fd57
mov esi, dword [ebp - 0x30]
mov ecx, dword [ebp - 0x7c]
dec esi
xor eax, eax
mov dword [ebp - 0x30], esi
mov al, byte [ecx]
mov cl, bl
shl eax, cl
mov ecx, dword [ebp - 0x3c]
add ebx, 8
add ecx, eax
mov eax, dword [ebp - 0x7c]
inc eax
mov dword [ebp - 0x3c], ecx
mov dword [ebp - 0x7c], eax
cmp ebx, 0xf
jbe 0x41014d
movzx eax, word [edi + 0x18]
cmp eax, dword [ebp - 0x3c]
je 0x410e8a
mov esi, dword [ebp + 8]
mov dword [esi + 0x18], str.header_crc_mismatch
mov dword [edi], 0x1d
mov eax, dword [edi]
jmp 0x40fa94
mov esi, dword [ebp - 0x30]
test esi, esi
je 0x40fd57
mov ecx, dword [ebp - 0x30]
xor eax, eax
dec ecx
mov edx, dword [ebp - 0x3c]
mov dword [ebp - 0x30], ecx
mov ecx, dword [ebp - 0x7c]
mov al, byte [ecx]
mov cl, bl
shl eax, cl
add edx, eax
mov eax, dword [ebp - 0x7c]
inc eax
mov dword [ebp - 0x3c], edx
mov dword [ebp - 0x7c], eax
add ebx, 8
cmp ebx, 0xf
jbe 0x4101a5
mov eax, dword [ebp - 0x3c]
mov dword [edi + 0x40], eax
mov eax, dword [edi + 0x20]
test eax, eax
je 0x4101ec
mov edx, dword [ebp - 0x3c]
mov dword [eax + 0x14], edx
test byte [edi + 0x11], 2
jne 0x4110d6
xor ebx, ebx
mov dword [ebp - 0x3c], 0
jmp 0x40ff5d
mov eax, dword [edi + 4]
test eax, eax
jne 0x410b37
cmp ebx, 2
ja 0x410240
mov eax, dword [ebp - 0x30]
test eax, eax
je 0x40fd57
mov esi, dword [ebp - 0x30]
mov edx, dword [ebp - 0x7c]
dec esi
xor eax, eax
mov dword [ebp - 0x30], esi
mov cl, bl
mov al, byte [edx]
inc edx
shl eax, cl
mov ecx, dword [ebp - 0x3c]
mov dword [ebp - 0x7c], edx
add ecx, eax
add ebx, 8
mov dword [ebp - 0x3c], ecx
mov eax, dword [ebp - 0x3c]
lea ecx, [ebx - 1]
and eax, 1
mov dword [edi + 4], eax
mov edx, dword [ebp - 0x3c]
shr edx, 1
mov eax, edx
and eax, 3
cmp eax, 1
je 0x411068
jae 0x410ea6
mov dword [edi], 0xd
shr edx, 2
lea ebx, [ecx - 2]
mov dword [ebp - 0x3c], edx
mov eax, dword [edi]
jmp 0x40fa94
mov dword [edi + 0x40], edx
mov dword [edi], 0xe
cmp dword [ebp + 0xc], 6
je 0x4112b1
mov dword [ebp - 0x3c], 0
xor ebx, ebx
mov dword [edi], 0xf
mov eax, dword [edi + 0x40]
test eax, eax
je 0x410c80
mov edx, dword [ebp - 0x70]
cmp edx, eax
jbe 0x4102b1
mov edx, eax
mov esi, edx
cmp edx, dword [ebp - 0x30]
jbe 0x4102bb
mov esi, dword [ebp - 0x30]
test esi, esi
je 0x40fd57
mov ecx, dword [ebp - 0x7c]
mov edx, dword [ebp - 0x78]
push eax
push esi
push ecx
push edx
call sym._memcpy
mov eax, dword [ebp - 0x30]
sub eax, esi
add esp, 0x10
mov dword [ebp - 0x30], eax
mov eax, dword [ebp - 0x7c]
add eax, esi
mov dword [ebp - 0x7c], eax
mov eax, dword [ebp - 0x70]
sub eax, esi
mov dword [ebp - 0x70], eax
mov eax, dword [ebp - 0x78]
add eax, esi
mov dword [ebp - 0x78], eax
mov eax, dword [edi + 0x40]
sub eax, esi
mov dword [edi + 0x40], eax
mov eax, dword [edi]
jmp 0x40fa94
mov eax, dword [ebp - 0x40]
and eax, 0xffff
mov dword [edi + 0x44], eax
mov al, byte [ebp - 0xb8]
mov dword [edi], 0x17
and eax, 0xf
mov dword [edi + 0x48], eax
mov esi, dword [edi + 0x48]
test esi, esi
je 0x410386
cmp ebx, esi
jae 0x41035c
mov eax, dword [ebp - 0x30]
test eax, eax
je 0x40fd57
mov eax, dword [ebp - 0x30]
mov edx, dword [ebp - 0x7c]
dec eax
mov cl, bl
mov dword [ebp - 0x30], eax
xor eax, eax
mov al, byte [edx]
add ebx, 8
shl eax, cl
mov ecx, dword [ebp - 0x3c]
inc edx
add ecx, eax
mov dword [ebp - 0x7c], edx
mov dword [ebp - 0x3c], ecx
cmp esi, ebx
ja 0x41032c
mov ecx, esi
mov eax, 1
shl eax, cl
mov edx, dword [ebp - 0x3c]
dec eax
and eax, edx
mov edx, dword [edi + 0x44]
add edx, eax
sub ebx, esi
mov dword [edi + 0x44], edx
shr dword [ebp - 0x3c], cl
mov eax, dword [edi + 0x1bc4]
add eax, esi
mov dword [edi + 0x1bc4], eax
mov dword [edi], 0x18
mov eax, dword [ebp - 0x70]
test eax, eax
je 0x40fd57
mov eax, dword [ebp - 0x70]
mov edx, dword [ebp - 0x6c]
sub edx, eax
mov eax, dword [edi + 0x44]
cmp edx, eax
jae 0x410c8d
sub eax, edx
mov edx, eax
cmp eax, dword [edi + 0x2c]
jbe 0x410ce1
mov eax, dword [edi + 0x1bc0]
test eax, eax
je 0x410ce1
mov esi, dword [ebp + 8]
mov dword [esi + 0x18], 0x41ed65
mov dword [edi], 0x1d
mov eax, dword [edi]
jmp 0x40fa94
mov dword [edi], 0x13
cmp dword [ebp + 0xc], 6
je 0x40fd57
mov dword [edi], 0x14
cmp dword [ebp - 0x30], 5
jbe 0x410b66
cmp dword [ebp - 0x70], 0x101
jbe 0x410b66
mov edx, dword [ebp + 8]
mov ecx, dword [ebp - 0x78]
mov dword [edx + 0xc], ecx
mov esi, dword [ebp - 0x70]
mov dword [edx + 0x10], esi
mov eax, dword [ebp - 0x7c]
mov dword [edx], eax
mov ecx, dword [ebp - 0x30]
mov dword [edx + 4], ecx
mov eax, dword [ebp - 0x3c]
mov dword [edi + 0x3c], ebx
mov dword [edi + 0x38], eax
push eax
push eax
mov eax, dword [ebp - 0x6c]
push eax
push edx
call dbg.inflate_fast
mov edx, dword [ebp + 8]
mov ecx, dword [ebp + 8]
mov edx, dword [edx + 0xc]
mov dword [ebp - 0x78], edx
mov esi, dword [ebp + 8]
mov ecx, dword [ecx + 0x10]
mov eax, dword [ebp + 8]
mov dword [ebp - 0x70], ecx
add esp, 0x10
mov esi, dword [esi]
mov dword [ebp - 0x7c], esi
mov eax, dword [eax + 4]
mov dword [ebp - 0x30], eax
mov edx, dword [edi + 0x38]
mov dword [ebp - 0x3c], edx
mov ebx, dword [edi + 0x3c]
cmp dword [edi], 0xb
jne 0x40faf3
mov eax, dword [edi]
mov dword [edi + 0x1bc4], 0xffffffff
jmp 0x40fa94
and eax, 0xf
mov dword [edi], 0x15
mov dword [edi + 0x48], eax
mov esi, dword [edi + 0x48]
test esi, esi
je 0x4104f2
cmp ebx, esi
jae 0x4104c8
mov eax, dword [ebp - 0x30]
test eax, eax
je 0x40fd57
mov eax, dword [ebp - 0x30]
mov edx, dword [ebp - 0x7c]
dec eax
mov cl, bl
mov dword [ebp - 0x30], eax
xor eax, eax
mov al, byte [edx]
add ebx, 8
shl eax, cl
mov ecx, dword [ebp - 0x3c]
inc edx
add ecx, eax
mov dword [ebp - 0x7c], edx
mov dword [ebp - 0x3c], ecx
cmp esi, ebx
ja 0x410498
mov ecx, esi
mov eax, 1
shl eax, cl
mov edx, dword [ebp - 0x3c]
dec eax
and eax, edx
mov edx, dword [edi + 0x40]
add edx, eax
sub ebx, esi
mov dword [edi + 0x40], edx
shr dword [ebp - 0x3c], cl
mov eax, dword [edi + 0x1bc4]
add eax, esi
mov dword [edi + 0x1bc4], eax
mov eax, dword [edi + 0x40]
mov dword [edi], 0x16
mov dword [edi + 0x1bc8], eax
mov esi, dword [edi + 0x50]
mov eax, 1
mov dword [ebp - 0x80], esi
mov ecx, dword [edi + 0x58]
mov edx, dword [ebp - 0x80]
shl eax, cl
lea esi, [eax - 1]
mov eax, dword [ebp - 0x3c]
and eax, esi
lea eax, [edx + eax*4]
mov cx, word [eax + 2]
mov word [ebp - 0x40], cx
mov dl, byte [eax + 1]
mov al, byte [eax]
mov byte [ebp - 0xb8], al
xor eax, eax
mov al, dl
cmp ebx, eax
jae 0x41058c
mov eax, dword [ebp - 0x30]
test eax, eax
je 0x40fd57
mov eax, dword [ebp - 0x30]
mov edx, dword [ebp - 0x7c]
dec eax
mov cl, bl
mov dword [ebp - 0x30], eax
xor eax, eax
mov al, byte [edx]
inc edx
shl eax, cl
mov ecx, dword [ebp - 0x3c]
mov dword [ebp - 0x7c], edx
add ecx, eax
mov edx, dword [ebp - 0x80]
mov dword [ebp - 0x3c], ecx
add ebx, 8
mov eax, dword [ebp - 0x3c]
and eax, esi
lea eax, [edx + eax*4]
mov cx, word [eax + 2]
mov word [ebp - 0x40], cx
mov dl, byte [eax + 1]
mov al, byte [eax]
mov byte [ebp - 0xb8], al
xor eax, eax
mov al, dl
cmp eax, ebx
ja 0x41053a
mov al, byte [ebp - 0xb8]
and eax, 0xff
mov dword [ebp - 0x2c], eax
test al, 0xf0
je 0x410d1b
mov cl, dl
and ecx, 0xff
mov esi, ecx
mov ecx, esi
xor eax, eax
shr dword [ebp - 0x3c], cl
mov al, dl
sub ebx, eax
mov eax, dword [edi + 0x1bc4]
add eax, esi
mov dword [edi + 0x1bc4], eax
test byte [ebp - 0x2c], 0x40
je 0x410304
mov esi, dword [ebp + 8]
mov dword [esi + 0x18], 0x41ed4f
mov dword [edi], 0x1d
mov eax, dword [edi]
jmp 0x40fa94
mov eax, dword [edi + 8]
test eax, eax
jne 0x4108c1
mov dword [edi], 0x1b
mov eax, dword [edi + 8]
test eax, eax
je 0x410805
mov eax, dword [edi + 0x10]
test eax, eax
jne 0x41063c
jmp 0x410805
mov esi, dword [ebp - 0x30]
test esi, esi
je 0x40fd57
mov ecx, dword [ebp - 0x30]
mov esi, dword [ebp - 0x7c]
dec ecx
xor eax, eax
mov dword [ebp - 0x30], ecx
mov cl, bl
mov al, byte [esi]
mov edx, dword [ebp - 0x3c]
shl eax, cl
add edx, eax
inc esi
mov dword [ebp - 0x3c], edx
mov dword [ebp - 0x7c], esi
add ebx, 8
cmp ebx, 0x1f
jbe 0x410610
mov eax, dword [ebp - 0x3c]
cmp dword [edi + 0x1c], eax
je 0x4107fc
mov edx, dword [ebp + 8]
mov dword [edx + 0x18], str.incorrect_length_check
mov dword [edi], 0x1d
mov eax, dword [edi]
jmp 0x40fa94
mov dword [edi], 0x1e
mov dword [ebp - 0x68], 0xfffffffc
jmp 0x40fa1a
mov dword [edi + 0x68], 0
mov dword [edi], 0x12
mov ecx, dword [edi + 0x68]
mov dword [ebp - 0x38], ecx
mov esi, dword [edi + 0x64]
mov dword [ebp - 0x9c], esi
mov eax, dword [edi + 0x60]
add esi, eax
mov dword [ebp - 0x9c], esi
mov eax, dword [ebp - 0x38]
cmp dword [ebp - 0x9c], eax
jbe 0x411328
mov edx, dword [edi + 0x4c]
mov eax, 1
mov dword [ebp - 0x5c], edx
mov ecx, dword [edi + 0x54]
shl eax, cl
dec eax
mov dword [ebp - 0x60], eax
mov eax, dword [ebp - 0x3c]
mov ecx, dword [ebp - 0x60]
and eax, ecx
lea eax, [edx + eax*4]
mov cl, byte [eax + 1]
mov dx, word [eax + 2]
mov al, cl
and eax, 0xff
mov esi, eax
cmp ebx, eax
jae 0x41072d
mov eax, dword [ebp - 0x30]
test eax, eax
je 0x40fd57
mov esi, dword [ebp - 0x30]
mov edx, dword [ebp - 0x7c]
dec esi
xor eax, eax
mov dword [ebp - 0x30], esi
mov cl, bl
mov al, byte [edx]
inc edx
shl eax, cl
mov ecx, dword [ebp - 0x3c]
mov dword [ebp - 0x7c], edx
add ecx, eax
mov edx, dword [ebp - 0x60]
mov dword [ebp - 0x3c], ecx
mov esi, dword [ebp - 0x5c]
mov eax, dword [ebp - 0x3c]
add ebx, 8
and eax, edx
lea eax, [esi + eax*4]
mov cl, byte [eax + 1]
mov dx, word [eax + 2]
mov al, cl
and eax, 0xff
mov esi, eax
cmp eax, ebx
ja 0x4106df
cmp dx, 0xf
jbe 0x410e71
cmp dx, 0x10
je 0x411139
cmp dx, 0x11
je 0x411210
and ecx, 0xff
mov edx, ecx
mov dword [ebp - 0xb8], ecx
add edx, 7
cmp ebx, edx
jae 0x410793
mov eax, dword [ebp - 0x30]
test eax, eax
je 0x40fd57
mov eax, dword [ebp - 0x30]
mov ecx, dword [ebp - 0x7c]
dec eax
mov dword [ebp - 0x30], eax
xor eax, eax
mov al, byte [ecx]
mov cl, bl
shl eax, cl
mov ecx, dword [ebp - 0x3c]
add ebx, 8
add ecx, eax
mov eax, dword [ebp - 0x7c]
inc eax
mov dword [ebp - 0x3c], ecx
mov dword [ebp - 0x7c], eax
cmp ebx, edx
jb 0x410760
mov eax, dword [ebp - 0x3c]
mov cl, byte [ebp - 0xb8]
shr eax, cl
mov ecx, ebx
mov edx, eax
sub ecx, esi
and edx, 0x7f
shr eax, 7
add edx, 0xb
lea ebx, [ecx - 7]
mov dword [ebp - 0x3c], eax
xor ecx, ecx
mov esi, dword [ebp - 0x38]
lea eax, [edx + esi]
cmp dword [ebp - 0x9c], eax
jb 0x4112ef
mov word [ebp - 0xba], cx
mov eax, dword [edi + 0x68]
mov word [edi + eax*2 + 0x70], cx
inc eax
mov dword [edi + 0x68], eax
mov ecx, 1
mov si, word [ebp - 0xba]
inc ecx
mov word [edi + eax*2 + 0x70], si
inc eax
mov dword [ebp - 0x38], eax
cmp ecx, edx
mov dword [edi + 0x68], eax
jne 0x4107df
jmp 0x41069d
mov dword [ebp - 0x3c], 0
xor ebx, ebx
mov dword [edi], 0x1c
mov dword [ebp - 0x68], 1
jmp 0x40fd57
mov dword [ebp - 0x68], 0xfffffffd
jmp 0x40fd57
mov ecx, ebx
and ebx, 0xfffffff8
and ecx, 7
shr dword [ebp - 0x3c], cl
cmp ebx, 0x1f
ja 0x410864
mov eax, dword [ebp - 0x30]
test eax, eax
je 0x40fd57
mov esi, dword [ebp - 0x30]
mov edx, dword [ebp - 0x7c]
dec esi
xor eax, eax
mov dword [ebp - 0x30], esi
mov cl, bl
mov al, byte [edx]
add ebx, 8
shl eax, cl
mov ecx, dword [ebp - 0x3c]
inc edx
add ecx, eax
mov dword [ebp - 0x7c], edx
mov dword [ebp - 0x3c], ecx
cmp ebx, 0x1f
jbe 0x410833
mov eax, dword [ebp - 0x3c]
shr eax, 0x10
movzx edx, word [ebp - 0x3c]
xor eax, 0xffff
cmp edx, eax
je 0x41027b
mov esi, dword [ebp + 8]
mov dword [esi + 0x18], str.invalid_stored_block_lengths
mov dword [edi], 0x1d
mov eax, dword [edi]
jmp 0x40fa94
mov esi, dword [ebp - 0x30]
test esi, esi
je 0x40fd57
mov ecx, dword [ebp - 0x30]
xor eax, eax
dec ecx
mov edx, dword [ebp - 0x3c]
mov dword [ebp - 0x30], ecx
mov ecx, dword [ebp - 0x7c]
mov esi, dword [ebp - 0x7c]
mov al, byte [ecx]
mov cl, bl
shl eax, cl
add edx, eax
inc esi
mov dword [ebp - 0x3c], edx
mov dword [ebp - 0x7c], esi
add ebx, 8
cmp ebx, 0x1f
jbe 0x410892
mov esi, dword [ebp + 8]
mov eax, dword [ebp - 0x6c]
mov ecx, dword [ebp - 0x70]
mov edx, dword [esi + 0x14]
sub eax, ecx
add edx, eax
mov dword [esi + 0x14], edx
mov esi, dword [edi + 0x1c]
add esi, eax
test eax, eax
mov dword [edi + 0x1c], esi
je 0x41090d
mov ecx, dword [edi + 0x10]
test ecx, ecx
je 0x411284
push edx
mov edx, dword [ebp - 0x78]
sub edx, eax
push eax
push edx
mov eax, dword [edi + 0x18]
push eax
call dbg.crc32
add esp, 0x10
mov dword [edi + 0x18], eax
mov esi, dword [ebp + 8]
mov dword [esi + 0x30], eax
mov edx, dword [edi + 0x10]
mov eax, dword [ebp - 0x3c]
test edx, edx
jne 0x41093d
mov edx, eax
shr edx, 8
shr eax, 0x18
and edx, 0xff00
add edx, eax
mov eax, dword [ebp - 0x3c]
and eax, 0xff00
shl eax, 8
add edx, eax
mov eax, dword [ebp - 0x3c]
shl eax, 0x18
lea eax, [edx + eax]
cmp eax, dword [edi + 0x18]
je 0x41129d
mov eax, dword [ebp + 8]
mov dword [eax + 0x18], str.incorrect_data_check
mov dword [edi], 0x1d
mov edx, dword [ebp - 0x70]
mov dword [ebp - 0x6c], edx
mov eax, dword [edi]
jmp 0x40fa94
mov eax, dword [ebp - 0x70]
test eax, eax
je 0x40fd57
mov edx, dword [ebp - 0x78]
mov eax, dword [edi + 0x40]
mov byte [edx], al
inc edx
mov eax, dword [ebp - 0x70]
mov dword [ebp - 0x78], edx
dec eax
mov dword [ebp - 0x70], eax
mov dword [edi], 0x14
mov eax, dword [edi]
jmp 0x40fa94
mov edx, dword [edi + 8]
test edx, edx
jne 0x4109d1
mov dword [edi], 0xc
mov eax, dword [edi]
jmp 0x40fa94
mov eax, dword [ebp - 0x30]
test eax, eax
je 0x40fd57
mov eax, dword [ebp - 0x30]
mov ecx, dword [ebp - 0x7c]
dec eax
mov esi, dword [ebp - 0x3c]
mov dword [ebp - 0x30], eax
xor eax, eax
mov al, byte [ecx]
mov cl, bl
shl eax, cl
mov ecx, dword [ebp - 0x7c]
add esi, eax
inc ecx
mov dword [ebp - 0x3c], esi
mov dword [ebp - 0x7c], ecx
add ebx, 8
cmp ebx, 0xf
jbe 0x4109a2
and edx, 2
je 0x4109e8
cmp dword [ebp - 0x3c], 0x8b1f
je 0x4111cb
mov eax, dword [edi + 0x20]
mov dword [edi + 0x10], 0
test eax, eax
je 0x4109fd
mov dword [eax + 0x30], 0xffffffff
test byte [edi + 8], 1
je 0x4110a5
movzx eax, byte [ebp - 0x3c]
shl eax, 8
mov edx, dword [ebp - 0x3c]
shr edx, 8
add eax, edx
mov edx, 0x1f
mov esi, edx
xor edx, edx
div esi
test edx, edx
jne 0x4110a5
mov eax, dword [ebp - 0x3c]
and eax, 0xf
cmp eax, 8
jne 0x40fae3
mov eax, dword [ebp - 0x3c]
shr eax, 4
mov dword [ebp - 0x3c], eax
mov eax, dword [ebp - 0x3c]
and eax, 0xf
lea ecx, [eax + 8]
mov eax, dword [edi + 0x24]
test eax, eax
jne 0x411306
mov dword [edi + 0x24], ecx
mov eax, 1
shl eax, cl
mov dword [edi + 0x14], eax
push eax
push 0
push 0
push 0
call dbg.adler32
mov dword [edi + 0x18], eax
add esp, 0x10
mov esi, dword [ebp + 8]
mov dword [esi + 0x30], eax
mov eax, dword [ebp - 0x3c]
and eax, 0x200
mov dword [ebp - 0x3c], eax
cmp dword [ebp - 0x3c], 1
sbb eax, eax
xor ebx, ebx
and eax, 2
add eax, 9
mov dword [edi], eax
mov dword [ebp - 0x3c], 0
mov eax, dword [edi]
jmp 0x40fa94
cmp esi, dword [ebp - 0x30]
jb 0x4100a8
jmp 0x4100dc
cmp esi, dword [ebp - 0x30]
jb 0x410020
jmp 0x41005d
mov ecx, 0x100
jmp 0x40fe2f
mov dword [edi], 0xc
mov esi, dword [ebp + 8]
mov eax, dword [ebp + 8]
mov esi, dword [esi + 0xc]
mov dword [ebp - 0x78], esi
mov eax, dword [eax]
mov dword [ebp - 0x7c], eax
mov eax, 0xc
jmp 0x40fa51
sub eax, 0xffffff80
xor ecx, ecx
jmp 0x40fe2f
mov edx, dword [ebp + 8]
push eax
push ebx
mov eax, dword [edx + 0xc]
sub eax, ebx
push eax
mov ecx, dword [edi + 0x18]
push ecx
call dbg.adler32
add esp, 0x10
jmp 0x40fdf6
mov eax, dword [eax + 4]
test eax, eax
je 0x40fa46
jmp case.default.0x40fa9d
mov eax, dword [edi + 0x20]
test eax, eax
je 0x410100
mov dword [eax + 0x24], 0
jmp 0x410100
mov ecx, ebx
and ebx, 0xfffffff8
and ecx, 7
shr dword [ebp - 0x3c], cl
mov dword [edi], 0x1a
mov eax, dword [edi]
jmp 0x40fa94
mov eax, dword [edi + 0x20]
test eax, eax
je 0x410084
mov dword [eax + 0x1c], 0
jmp 0x410084
mov ecx, dword [edi + 0x4c]
mov dword [edi + 0x1bc4], 0
mov dword [ebp - 0x90], ecx
mov eax, 1
mov ecx, dword [edi + 0x54]
mov edx, dword [ebp - 0x90]
shl eax, cl
lea esi, [eax - 1]
mov eax, dword [ebp - 0x3c]
and eax, esi
lea eax, [edx + eax*4]
mov cx, word [eax + 2]
mov word [ebp - 0x3e], cx
mov dl, byte [eax + 1]
mov al, byte [eax]
mov byte [ebp - 0xb8], al
xor eax, eax
mov al, dl
cmp ebx, eax
jae 0x410c04
mov eax, dword [ebp - 0x30]
test eax, eax
je 0x40fd57
mov eax, dword [ebp - 0x30]
mov edx, dword [ebp - 0x7c]
dec eax
mov cl, bl
mov dword [ebp - 0x30], eax
xor eax, eax
mov al, byte [edx]
inc edx
shl eax, cl
mov ecx, dword [ebp - 0x3c]
mov dword [ebp - 0x7c], edx
add ecx, eax
mov edx, dword [ebp - 0x90]
mov dword [ebp - 0x3c], ecx
add ebx, 8
mov eax, dword [ebp - 0x3c]
and eax, esi
lea eax, [edx + eax*4]
mov cx, word [eax + 2]
mov word [ebp - 0x3e], cx
mov dl, byte [eax + 1]
mov al, byte [eax]
mov byte [ebp - 0xb8], al
xor eax, eax
mov al, dl
cmp eax, ebx
ja 0x410baf
cmp byte [ebp - 0xb8], 0
je 0x410e4c
xor eax, eax
mov al, byte [ebp - 0xb8]
test al, 0xf0
je 0x410f4b
mov cl, dl
and ecx, 0xff
mov esi, ecx
mov ecx, esi
xor eax, eax
shr dword [ebp - 0x3c], cl
mov al, dl
sub ebx, eax
mov eax, dword [edi + 0x1bc4]
add eax, esi
mov dword [edi + 0x1bc4], eax
mov ax, word [ebp - 0x3e]
and eax, 0xffff
mov dword [edi + 0x40], eax
cmp byte [ebp - 0xb8], 0
jne 0x410c66
mov dword [edi], 0x19
mov eax, dword [edi]
jmp 0x40fa94
xor eax, eax
mov al, byte [ebp - 0xb8]
test al, 0x20
je 0x41110f
mov dword [edi + 0x1bc4], 0xffffffff
mov dword [edi], 0xb
mov eax, dword [edi]
jmp 0x40fa94
mov esi, dword [ebp - 0x78]
sub esi, eax
mov eax, dword [edi + 0x40]
mov edx, eax
mov ecx, dword [ebp - 0x70]
mov dword [ebp - 0x44], edx
cmp edx, ecx
jbe 0x410ca4
mov dword [ebp - 0x44], ecx
mov edx, dword [ebp - 0x44]
mov ecx, dword [ebp - 0x70]
sub ecx, edx
sub eax, edx
mov dword [ebp - 0x70], ecx
mov dword [edi + 0x40], eax
mov ecx, dword [ebp - 0x78]
mov edx, dword [ebp - 0x44]
mov al, byte [esi]
inc esi
mov byte [ecx], al
inc ecx
dec edx
jne 0x410cba
mov esi, dword [ebp - 0x78]
mov ecx, dword [ebp - 0x44]
lea esi, [ecx + esi]
mov dword [ebp - 0x78], esi
mov eax, dword [edi + 0x40]
test eax, eax
je 0x410981
mov eax, dword [edi]
jmp 0x40fa94
mov eax, dword [edi + 0x30]
cmp edx, eax
jbe 0x410e98
sub edx, eax
mov esi, dword [edi + 0x28]
sub esi, edx
mov eax, dword [edi + 0x34]
add esi, eax
mov eax, dword [edi + 0x40]
cmp edx, eax
jbe 0x410c97
jmp 0x410c95
push eax
mov eax, dword [ebp - 0x7c]
push esi
push eax
mov eax, dword [edi + 0x18]
push eax
call dbg.crc32
add esp, 0x10
mov dword [edi + 0x18], eax
jmp 0x4100e6
xor eax, eax
mov esi, dword [ebp - 0x40]
mov al, dl
and esi, 0xffff
mov dword [ebp - 0x88], eax
mov ecx, eax
mov eax, dword [ebp - 0x2c]
mov dword [ebp - 0x50], esi
add ecx, eax
mov eax, 1
shl eax, cl
dec eax
mov ecx, dword [ebp - 0x3c]
mov dword [ebp - 0x54], eax
and eax, ecx
mov cl, byte [ebp - 0x88]
shr eax, cl
add eax, esi
mov esi, dword [ebp - 0x80]
lea eax, [esi + eax*4]
mov cx, word [eax + 2]
mov word [ebp - 0x40], cx
mov cl, byte [eax + 1]
mov byte [ebp - 0x55], cl
mov al, byte [eax]
mov byte [ebp - 0xb8], al
mov al, cl
and eax, 0xff
mov esi, eax
mov eax, dword [ebp - 0x88]
add eax, esi
cmp ebx, eax
jae 0x410df8
mov eax, dword [ebp - 0x30]
test eax, eax
je 0x40fd57
mov esi, dword [ebp - 0x30]
mov ecx, dword [ebp - 0x7c]
dec esi
xor eax, eax
mov dword [ebp - 0x30], esi
mov esi, dword [ebp - 0x54]
mov al, byte [ecx]
mov cl, bl
shl eax, cl
mov ecx, dword [ebp - 0x3c]
add ebx, 8
add ecx, eax
mov eax, dword [ebp - 0x7c]
mov dword [ebp - 0x3c], ecx
inc eax
mov dword [ebp - 0x7c], eax
mov eax, dword [ebp - 0x3c]
and eax, esi
mov cl, byte [ebp - 0x88]
shr eax, cl
mov ecx, dword [ebp - 0x50]
mov esi, dword [ebp - 0x80]
add eax, ecx
lea eax, [esi + eax*4]
mov cx, word [eax + 2]
mov word [ebp - 0x40], cx
mov cl, byte [eax + 1]
mov byte [ebp - 0x55], cl
mov al, byte [eax]
mov byte [ebp - 0xb8], al
mov al, cl
and eax, 0xff
mov esi, eax
mov eax, dword [ebp - 0x88]
add eax, esi
cmp eax, ebx
ja 0x410d83
mov cl, byte [ebp - 0x88]
xor eax, eax
shr dword [ebp - 0x3c], cl
mov al, dl
mov edx, dword [edi + 0x1bc4]
sub ebx, eax
mov eax, dword [ebp - 0x88]
add edx, eax
mov dword [edi + 0x1bc4], edx
mov dl, byte [ebp - 0xb8]
and edx, 0xff
mov dword [ebp - 0x2c], edx
mov dl, byte [ebp - 0x55]
jmp 0x4105ac
push eax
mov eax, dword [ebp - 0x7c]
push esi
push eax
mov eax, dword [edi + 0x18]
push eax
call dbg.crc32
add esp, 0x10
mov dword [edi + 0x18], eax
jmp 0x410067
mov al, dl
and eax, 0xff
mov esi, eax
jmp 0x410c2b
mov esi, dword [ebp + 8]
mov dword [esi + 0x18], str.too_many_length_or_distance_symbols
mov dword [edi], 0x1d
mov eax, dword [edi]
jmp 0x40fa94
shr dword [ebp - 0x3c], cl
mov ecx, dword [ebp - 0x38]
sub ebx, esi
mov word [edi + ecx*2 + 0x70], dx
inc ecx
mov dword [ebp - 0x38], ecx
mov dword [edi + 0x68], ecx
jmp 0x41069d
xor ebx, ebx
mov dword [ebp - 0x3c], 0
jmp 0x41010e
mov esi, eax
mov eax, dword [edi + 0x34]
sub esi, edx
add esi, eax
jmp 0x410cf8
cmp eax, 2
je 0x41112e
cmp eax, 3
jne 0x41026b
mov esi, dword [ebp + 8]
mov dword [esi + 0x18], str.invalid_block_type
mov dword [edi], 0x1d
jmp 0x41026b
mov al, byte [ebp - 0x3c]
mov byte [ebp - 0x1c], al
mov eax, dword [ebp - 0x3c]
shr eax, 8
mov dword [ebp - 0x3c], eax
push eax
mov dl, byte [ebp - 0x3c]
lea eax, [ebp - 0x1c]
push 2
mov byte [ebp - 0x1b], dl
push eax
mov eax, dword [edi + 0x18]
push eax
call dbg.crc32
add esp, 0x10
mov dword [edi + 0x18], eax
jmp 0x40ff36
mov eax, dword [ebp - 0x3c]
mov cl, byte [ebp - 0x3c]
shr eax, 8
mov byte [ebp - 0x1c], cl
mov dword [ebp - 0x3c], eax
mov al, byte [ebp - 0x3c]
mov byte [ebp - 0x1b], al
mov eax, dword [ebp - 0x3c]
shr eax, 8
mov dword [ebp - 0x3c], eax
mov eax, dword [ebp - 0x3c]
mov dl, byte [ebp - 0x3c]
shr eax, 8
mov byte [ebp - 0x1a], dl
mov dword [ebp - 0x3c], eax
push eax
mov cl, byte [ebp - 0x3c]
lea eax, [ebp - 0x1c]
push 4
mov byte [ebp - 0x19], cl
push eax
mov eax, dword [edi + 0x18]
push eax
call dbg.crc32
add esp, 0x10
mov dword [edi + 0x18], eax
jmp 0x40fed2
xor ecx, ecx
mov si, word [ebp - 0x3e]
mov cl, dl
and esi, 0xffff
mov dword [ebp - 0x4c], ecx
add ecx, eax
mov eax, 1
mov dword [ebp - 0x8c], esi
shl eax, cl
dec eax
mov ecx, dword [ebp - 0x3c]
mov dword [ebp - 0x84], eax
and eax, ecx
mov cl, byte [ebp - 0x4c]
shr eax, cl
add eax, esi
mov esi, dword [ebp - 0x90]
lea eax, [esi + eax*4]
mov cx, word [eax + 2]
mov word [ebp - 0x3e], cx
mov cl, byte [eax + 1]
mov byte [ebp - 0x61], cl
mov al, byte [eax]
mov byte [ebp - 0xb8], al
mov al, cl
and eax, 0xff
mov esi, eax
mov eax, dword [ebp - 0x4c]
add eax, esi
cmp ebx, eax
jae 0x411027
mov eax, dword [ebp - 0x30]
test eax, eax
je 0x40fd57
mov esi, dword [ebp - 0x30]
mov ecx, dword [ebp - 0x7c]
dec esi
xor eax, eax
mov dword [ebp - 0x30], esi
mov esi, dword [ebp - 0x84]
mov al, byte [ecx]
mov cl, bl
shl eax, cl
mov ecx, dword [ebp - 0x3c]
add ebx, 8
add ecx, eax
mov eax, dword [ebp - 0x7c]
mov dword [ebp - 0x3c], ecx
inc eax
mov dword [ebp - 0x7c], eax
mov eax, dword [ebp - 0x3c]
and eax, esi
mov cl, byte [ebp - 0x4c]
shr eax, cl
mov ecx, dword [ebp - 0x8c]
mov esi, dword [ebp - 0x90]
add eax, ecx
lea eax, [esi + eax*4]
mov cx, word [eax + 2]
mov word [ebp - 0x3e], cx
mov cl, byte [eax + 1]
mov byte [ebp - 0x61], cl
mov al, byte [eax]
mov byte [ebp - 0xb8], al
mov al, cl
and eax, 0xff
mov esi, eax
mov eax, dword [ebp - 0x4c]
add eax, esi
cmp eax, ebx
ja 0x410faf
xor eax, eax
mov cl, byte [ebp - 0x4c]
mov al, dl
shr dword [ebp - 0x3c], cl
sub ebx, eax
mov eax, dword [ebp - 0x4c]
mov dword [edi + 0x1bc4], eax
mov dl, byte [ebp - 0x61]
jmp 0x410c2b
test dword [ebp - 0x3c], 0xe000
je 0x40fe5c
mov ecx, dword [ebp + 8]
mov dword [ecx + 0x18], str.unknown_header_flags_set
mov dword [edi], 0x1d
mov eax, dword [edi]
jmp 0x40fa94
mov dword [edi + 0x4c], 0x41ef00
mov dword [edi + 0x54], 9
mov dword [edi + 0x50], 0x41ee80
mov dword [edi + 0x58], 5
mov dword [edi], 0x13
cmp dword [ebp + 0xc], 6
jne 0x41026b
mov eax, dword [ebp - 0x3c]
sub ebx, 3
shr eax, 3
mov dword [ebp - 0x3c], eax
jmp 0x40fd57
mov eax, dword [ebp + 8]
mov dword [eax + 0x18], str.incorrect_header_check
mov dword [edi], 0x1d
mov eax, dword [edi]
jmp 0x40fa94
push eax
mov eax, dword [ebp - 0x7c]
push esi
push eax
mov ecx, dword [edi + 0x18]
push ecx
call dbg.crc32
add esp, 0x10
mov dword [edi + 0x18], eax
jmp 0x40ffdc
mov esi, dword [ebp - 0x3c]
mov cl, byte [ebp - 0x3c]
shr esi, 8
mov byte [ebp - 0x1c], cl
mov dword [ebp - 0x3c], esi
push ebx
mov al, byte [ebp - 0x3c]
push 2
mov byte [ebp - 0x1b], al
lea eax, [ebp - 0x1c]
push eax
xor ebx, ebx
mov ecx, dword [edi + 0x18]
push ecx
call dbg.crc32
add esp, 0x10
mov dword [edi + 0x18], eax
mov dword [ebp - 0x3c], 0
jmp 0x40ff5d
test al, 0x40
je 0x410481
mov esi, dword [ebp + 8]
mov dword [esi + 0x18], 0x41ed33
mov dword [edi], 0x1d
mov eax, dword [edi]
jmp 0x40fa94
mov dword [edi], 0x10
jmp 0x41026b
and ecx, 0xff
mov edx, ecx
mov dword [ebp - 0xb8], ecx
add edx, 2
mov dword [ebp - 0xc0], edx
cmp ebx, edx
jae 0x41118b
mov eax, dword [ebp - 0x30]
test eax, eax
je 0x40fd57
mov ecx, dword [ebp - 0x30]
xor eax, eax
dec ecx
mov edx, dword [ebp - 0x3c]
mov dword [ebp - 0x30], ecx
mov ecx, dword [ebp - 0x7c]
mov al, byte [ecx]
mov cl, bl
shl eax, cl
add edx, eax
mov eax, dword [ebp - 0x7c]
inc eax
add ebx, 8
mov dword [ebp - 0x3c], edx
mov dword [ebp - 0x7c], eax
cmp ebx, dword [ebp - 0xc0]
jb 0x411154
mov cl, byte [ebp - 0xb8]
mov eax, dword [ebp - 0x38]
shr dword [ebp - 0x3c], cl
sub ebx, esi
test eax, eax
je 0x411352
mov edx, dword [ebp - 0x38]
sub ebx, 2
mov ax, word [edi + edx*2 + 0x6e]
mov ecx, eax
mov eax, dword [ebp - 0x3c]
and eax, 3
and ecx, 0xffff
lea edx, [eax + 3]
mov eax, dword [ebp - 0x3c]
shr eax, 2
mov dword [ebp - 0x3c], eax
jmp 0x4107b5
push eax
push 0
push 0
push 0
call dbg.crc32
add esp, 0xc
mov dword [edi + 0x18], eax
lea eax, [ebp - 0x1c]
push 2
mov byte [ebp - 0x1c], 0x1f
push eax
mov byte [ebp - 0x1b], 0x8b
mov eax, dword [edi + 0x18]
xor ebx, ebx
push eax
call dbg.crc32
mov dword [edi], 1
mov dword [edi + 0x18], eax
mov dword [ebp - 0x3c], 0
add esp, 0x10
mov eax, dword [edi]
jmp 0x40fa94
and ecx, 0xff
mov dword [ebp - 0xb8], ecx
add ecx, 3
mov dword [ebp - 0xc0], ecx
cmp ebx, ecx
jae 0x41125d
mov eax, dword [ebp - 0x30]
test eax, eax
je 0x40fd57
mov eax, dword [ebp - 0x30]
mov edx, dword [ebp - 0x7c]
dec eax
mov cl, bl
mov dword [ebp - 0x30], eax
xor eax, eax
mov al, byte [edx]
add ebx, 8
shl eax, cl
mov ecx, dword [ebp - 0x3c]
inc edx
add ecx, eax
mov dword [ebp - 0x7c], edx
mov dword [ebp - 0x3c], ecx
cmp ebx, dword [ebp - 0xc0]
jb 0x411229
mov eax, dword [ebp - 0x3c]
mov cl, byte [ebp - 0xb8]
shr eax, cl
mov ecx, ebx
mov edx, eax
sub ecx, esi
and edx, 7
shr eax, 3
add edx, 3
lea ebx, [ecx - 3]
xor ecx, ecx
mov dword [ebp - 0x3c], eax
jmp 0x4107b5
mov ecx, dword [ebp - 0x78]
push esi
sub ecx, eax
push eax
push ecx
mov ecx, dword [edi + 0x18]
push ecx
call dbg.adler32
add esp, 0x10
jmp 0x410904
mov ecx, dword [ebp - 0x70]
xor ebx, ebx
mov dword [ebp - 0x6c], ecx
mov dword [ebp - 0x3c], 0
jmp 0x4105f1
xor ebx, ebx
mov dword [ebp - 0x3c], 0
jmp 0x40fd57
mov al, byte [ebp - 0x3c]
mov byte [ebp - 0x1c], al
mov eax, dword [ebp - 0x3c]
shr eax, 8
mov dword [ebp - 0x3c], eax
push eax
mov dl, byte [ebp - 0x3c]
lea eax, [ebp - 0x1c]
push 2
mov byte [ebp - 0x1b], dl
push eax
mov eax, dword [edi + 0x18]
push eax
call dbg.crc32
add esp, 0x10
mov dword [edi + 0x18], eax
jmp 0x40fe78
mov eax, dword [ebp + 8]
mov dword [eax + 0x18], str.invalid_bit_length_repeat
mov dword [edi], 0x1d
mov eax, dword [edi]
jmp 0x40fa94
cmp ecx, eax
jbe 0x410a58
mov ecx, dword [ebp + 8]
sub ebx, 4
mov dword [ecx + 0x18], str.invalid_window_size
mov dword [edi], 0x1d
mov eax, dword [edi]
jmp 0x40fa94
cmp dword [edi], 0x1d
je 0x40faf3
cmp word [edi + 0x270], 0
jne 0x411369
mov edx, dword [ebp + 8]
mov dword [edx + 0x18], str.invalid_code____missing_end_of_block
mov dword [edi], 0x1d
mov eax, dword [edi]
jmp 0x40fa94
mov esi, dword [ebp + 8]
mov dword [esi + 0x18], str.invalid_bit_length_repeat
mov dword [edi], 0x1d
mov eax, dword [edi]
jmp 0x40fa94
mov ecx, dword [ebp - 0xa0]
mov dword [edi + 0x54], 9
mov dword [edi + 0x6c], ecx
mov dword [edi + 0x4c], ecx
push eax
push eax
mov eax, dword [ebp - 0xa4]
lea esi, [edi + 0x6c]
push eax
lea eax, [edi + 0x54]
push eax
push esi
mov ecx, dword [edi + 0x60]
lea eax, [edi + 0x70]
push ecx
push eax
push 1
call dbg.inflate_table
add esp, 0x20
mov dword [ebp - 0x68], eax
test eax, eax
je 0x4113ec
mov esi, dword [ebp + 8]
mov dword [esi + 0x18], str.invalid_literal_lengths_set
mov dword [edi], 0x1d
mov eax, dword [edi]
jmp 0x40fa94
mov eax, dword [ebp + 8]
mov edx, dword [ebp - 0x78]
mov dword [eax + 0xc], edx
mov ecx, dword [ebp - 0x70]
mov dword [eax + 0x10], ecx
mov esi, dword [ebp - 0x7c]
mov dword [eax], esi
mov edx, dword [ebp - 0x30]
mov dword [eax + 4], edx
mov ecx, dword [ebp - 0x3c]
mov dword [edi + 0x3c], ebx
mov dword [edi + 0x38], ecx
mov dword [ebp - 0x68], 2
jmp 0x40fa1a
mov eax, dword [edi + 0x6c]
mov dword [edi + 0x58], 6
mov dword [edi + 0x50], eax
push edx
mov eax, dword [ebp - 0xa4]
push edx
push eax
lea eax, [edi + 0x58]
push eax
push esi
mov eax, dword [edi + 0x64]
push eax
mov eax, dword [edi + 0x60]
lea eax, [edi + eax*2 + 0x70]
push eax
push 2
call dbg.inflate_table
add esp, 0x20
mov dword [ebp - 0x68], eax
test eax, eax
je 0x4103dc
mov eax, dword [ebp + 8]
mov dword [eax + 0x18], str.invalid_distances_set
mov dword [edi], 0x1d
mov eax, dword [edi]
jmp 0x40fa94