Function at 0x40fa70
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 0x40fa95
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.0x40fb0d
mov edx, dword [eax + 0xc]
mov dword [ebp - 0x78], edx
test edx, edx
je case.default.0x40fb0d
mov ecx, dword [eax]
mov dword [ebp - 0x7c], ecx
test ecx, ecx
je 0x410b80
mov eax, dword [edi]
cmp eax, 0xb
je 0x410b39
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.0x40fb0d
jmp dword [eax*4 + 0x41ed90]
mov eax, dword [ebp - 0x30]
test eax, eax
je 0x40fdc7
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 0x40fb14
mov eax, dword [ebp - 0x3c]
mov dword [edi + 0x10], eax
cmp al, 8
je 0x4110b4
mov edx, dword [ebp + 8]
mov dword [edx + 0x18], str.unknown_compression_method
mov dword [edi], 0x1d
mov eax, dword [edi]
jmp 0x40fb04
mov eax, dword [ebp - 0x30]
test eax, eax
je 0x40fdc7
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 0x40fb67
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 0x410eca
cmp dword [edi + 0x64], 0x1e
ja 0x410eca
mov dword [edi + 0x68], 0
mov dword [edi], 0x11
mov eax, dword [edi + 0x68]
mov dword [ebp - 0xb8], eax
lea esi, [eax + eax + 0x41ee20]
cmp dword [edi + 0x5c], eax
jbe 0x40fc7b
cmp ebx, 2
ja 0x40fc3e
mov eax, dword [ebp - 0x30]
test eax, eax
je 0x40fdc7
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 0x40fc0d
cmp dword [ebp - 0xb8], 0x12
ja 0x40fcbe
mov esi, dword [ebp - 0xb8]
lea edx, [esi + esi + 0x41ee20]
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 0x40fc91
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 0x4106e6
mov edx, dword [ebp + 8]
mov dword [edx + 0x18], str.invalid_code_lengths_set
mov dword [edi], 0x1d
mov eax, dword [edi]
jmp 0x40fb04
mov esi, dword [ebp - 0x30]
test esi, esi
je 0x40fdc7
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 0x40fd14
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 0x41142d
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.0x40fb0d.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 0x40fdfe
cmp dword [edi], 0x19
ja 0x40fe11
mov edx, dword [ebp - 0x6c]
cmp dword [ecx + 0x10], edx
je 0x40fe11
mov edx, dword [ebp - 0x6c]
mov eax, dword [ebp + 8]
call dbg.updatewindow
test eax, eax
jne 0x4106d4
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 0x40fe6f
test ebx, ebx
je 0x40fe6f
mov eax, dword [edi + 0x10]
test eax, eax
je 0x410b64
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 0x410b5a
cmp edx, 0x13
je 0x410b2f
xor ecx, ecx
cmp edx, 0xe
je 0x410b2f
mov edx, dword [ebp + 8]
add eax, ecx
or ebx, esi
mov dword [edx + 0x2c], eax
je 0x40feb5
cmp dword [ebp + 0xc], 4
jne 0x40fa8a
mov eax, dword [ebp - 0x68]
test eax, eax
jne 0x40fa8a
mov dword [ebp - 0x68], 0xfffffffb
jmp 0x40fa8a
mov edx, dword [edi + 0x20]
test edx, edx
je 0x40fede
mov eax, dword [ebp - 0x3c]
shr eax, 8
and eax, 1
mov dword [edx], eax
test byte [edi + 0x11], 2
jne 0x41132f
mov dword [edi], 2
xor ebx, ebx
mov dword [ebp - 0x3c], 0
mov esi, dword [ebp - 0x30]
test esi, esi
je 0x40fdc7
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 0x40fef7
mov eax, dword [edi + 0x20]
test eax, eax
je 0x40ff38
mov edx, dword [ebp - 0x3c]
mov dword [eax + 4], edx
test byte [edi + 0x11], 2
jne 0x410f6d
mov dword [edi], 3
xor ebx, ebx
mov dword [ebp - 0x3c], 0
mov esi, dword [ebp - 0x30]
test esi, esi
je 0x40fdc7
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 0x40ff51
mov edx, dword [edi + 0x20]
test edx, edx
je 0x40ff9c
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 0x410f3d
mov dword [edi], 4
xor ebx, ebx
mov dword [ebp - 0x3c], 0
test byte [edi + 0x11], 4
jne 0x410244
mov eax, dword [edi + 0x20]
test eax, eax
je 0x40ffcd
mov dword [eax + 0x10], 0
mov dword [edi], 5
mov edx, dword [edi + 0x10]
test dh, 4
je 0x41006c
mov eax, dword [edi + 0x40]
mov esi, dword [ebp - 0x30]
cmp esi, eax
jbe 0x40ffeb
mov esi, eax
test esi, esi
je 0x410064
mov ecx, dword [edi + 0x20]
mov dword [ebp - 0xa8], ecx
test ecx, ecx
je 0x410043
mov ecx, dword [ecx + 0x10]
mov dword [ebp - 0x98], ecx
test ecx, ecx
je 0x410043
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 0x410026
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 0x41112c
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 0x40fdc7
mov dword [edi + 0x40], 0
mov dword [edi], 6
test byte [edi + 0x11], 8
je 0x410bbf
mov eax, dword [ebp - 0x30]
test eax, eax
je 0x40fdc7
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 0x4100c0
mov ecx, dword [edx + 0x1c]
test ecx, ecx
je 0x4100c0
mov eax, dword [edi + 0x40]
cmp eax, dword [edx + 0x20]
jae 0x4100c0
mov dl, byte [ebp - 0x91]
mov byte [ecx + eax], dl
inc eax
mov dword [edi + 0x40], eax
cmp byte [ebp - 0x91], 0
jne 0x410b21
test byte [edi + 0x11], 2
jne 0x410ea2
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 0x40fdc7
mov dword [edi + 0x40], 0
mov dword [edi], 7
test byte [edi + 0x11], 0x10
je 0x410b90
mov edx, dword [ebp - 0x30]
test edx, edx
je 0x40fdc7
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 0x410142
mov ecx, dword [edx + 0x24]
test ecx, ecx
je 0x410142
mov eax, dword [edi + 0x40]
cmp eax, dword [edx + 0x28]
jae 0x410142
mov dl, byte [ebp - 0x31]
mov byte [ecx + eax], dl
inc eax
mov dword [edi + 0x40], eax
cmp byte [ebp - 0x31], 0
jne 0x410b13
test byte [edi + 0x11], 2
jne 0x410d71
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 0x40fdc7
mov dword [edi], 8
mov edx, dword [edi + 0x10]
test dh, 2
jne 0x4101ec
mov eax, dword [edi + 0x20]
test eax, eax
je 0x410198
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 0x40fb04
mov eax, dword [ebp - 0x30]
test eax, eax
je 0x40fdc7
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 0x4101bd
movzx eax, word [edi + 0x18]
cmp eax, dword [ebp - 0x3c]
je 0x410efa
mov esi, dword [ebp + 8]
mov dword [esi + 0x18], str.header_crc_mismatch
mov dword [edi], 0x1d
mov eax, dword [edi]
jmp 0x40fb04
mov esi, dword [ebp - 0x30]
test esi, esi
je 0x40fdc7
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 0x410215
mov eax, dword [ebp - 0x3c]
mov dword [edi + 0x40], eax
mov eax, dword [edi + 0x20]
test eax, eax
je 0x41025c
mov edx, dword [ebp - 0x3c]
mov dword [eax + 0x14], edx
test byte [edi + 0x11], 2
jne 0x411146
xor ebx, ebx
mov dword [ebp - 0x3c], 0
jmp 0x40ffcd
mov eax, dword [edi + 4]
test eax, eax
jne 0x410ba7
cmp ebx, 2
ja 0x4102b0
mov eax, dword [ebp - 0x30]
test eax, eax
je 0x40fdc7
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 0x4110d8
jae 0x410f16
mov dword [edi], 0xd
shr edx, 2
lea ebx, [ecx - 2]
mov dword [ebp - 0x3c], edx
mov eax, dword [edi]
jmp 0x40fb04
mov dword [edi + 0x40], edx
mov dword [edi], 0xe
cmp dword [ebp + 0xc], 6
je 0x411321
mov dword [ebp - 0x3c], 0
xor ebx, ebx
mov dword [edi], 0xf
mov eax, dword [edi + 0x40]
test eax, eax
je 0x410cf0
mov edx, dword [ebp - 0x70]
cmp edx, eax
jbe 0x410321
mov edx, eax
mov esi, edx
cmp edx, dword [ebp - 0x30]
jbe 0x41032b
mov esi, dword [ebp - 0x30]
test esi, esi
je 0x40fdc7
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 0x40fb04
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 0x4103f6
cmp ebx, esi
jae 0x4103cc
mov eax, dword [ebp - 0x30]
test eax, eax
je 0x40fdc7
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 0x41039c
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 0x40fdc7
mov eax, dword [ebp - 0x70]
mov edx, dword [ebp - 0x6c]
sub edx, eax
mov eax, dword [edi + 0x44]
cmp edx, eax
jae 0x410cfd
sub eax, edx
mov edx, eax
cmp eax, dword [edi + 0x2c]
jbe 0x410d51
mov eax, dword [edi + 0x1bc0]
test eax, eax
je 0x410d51
mov esi, dword [ebp + 8]
mov dword [esi + 0x18], 0x41ed45
mov dword [edi], 0x1d
mov eax, dword [edi]
jmp 0x40fb04
mov dword [edi], 0x13
cmp dword [ebp + 0xc], 6
je 0x40fdc7
mov dword [edi], 0x14
cmp dword [ebp - 0x30], 5
jbe 0x410bd6
cmp dword [ebp - 0x70], 0x101
jbe 0x410bd6
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 0x40fb63
mov eax, dword [edi]
mov dword [edi + 0x1bc4], 0xffffffff
jmp 0x40fb04
and eax, 0xf
mov dword [edi], 0x15
mov dword [edi + 0x48], eax
mov esi, dword [edi + 0x48]
test esi, esi
je 0x410562
cmp ebx, esi
jae 0x410538
mov eax, dword [ebp - 0x30]
test eax, eax
je 0x40fdc7
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 0x410508
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 0x4105fc
mov eax, dword [ebp - 0x30]
test eax, eax
je 0x40fdc7
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 0x4105aa
mov al, byte [ebp - 0xb8]
and eax, 0xff
mov dword [ebp - 0x2c], eax
test al, 0xf0
je 0x410d8b
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 0x410374
mov esi, dword [ebp + 8]
mov dword [esi + 0x18], 0x41ed2f
mov dword [edi], 0x1d
mov eax, dword [edi]
jmp 0x40fb04
mov eax, dword [edi + 8]
test eax, eax
jne 0x410931
mov dword [edi], 0x1b
mov eax, dword [edi + 8]
test eax, eax
je 0x410875
mov eax, dword [edi + 0x10]
test eax, eax
jne 0x4106ac
jmp 0x410875
mov esi, dword [ebp - 0x30]
test esi, esi
je 0x40fdc7
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 0x410680
mov eax, dword [ebp - 0x3c]
cmp dword [edi + 0x1c], eax
je 0x41086c
mov edx, dword [ebp + 8]
mov dword [edx + 0x18], str.incorrect_length_check
mov dword [edi], 0x1d
mov eax, dword [edi]
jmp 0x40fb04
mov dword [edi], 0x1e
mov dword [ebp - 0x68], 0xfffffffc
jmp 0x40fa8a
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 0x411398
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 0x41079d
mov eax, dword [ebp - 0x30]
test eax, eax
je 0x40fdc7
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 0x41074f
cmp dx, 0xf
jbe 0x410ee1
cmp dx, 0x10
je 0x4111a9
cmp dx, 0x11
je 0x411280
and ecx, 0xff
mov edx, ecx
mov dword [ebp - 0xb8], ecx
add edx, 7
cmp ebx, edx
jae 0x410803
mov eax, dword [ebp - 0x30]
test eax, eax
je 0x40fdc7
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 0x4107d0
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 0x41135f
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 0x41084f
jmp 0x41070d
mov dword [ebp - 0x3c], 0
xor ebx, ebx
mov dword [edi], 0x1c
mov dword [ebp - 0x68], 1
jmp 0x40fdc7
mov dword [ebp - 0x68], 0xfffffffd
jmp 0x40fdc7
mov ecx, ebx
and ebx, 0xfffffff8
and ecx, 7
shr dword [ebp - 0x3c], cl
cmp ebx, 0x1f
ja 0x4108d4
mov eax, dword [ebp - 0x30]
test eax, eax
je 0x40fdc7
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 0x4108a3
mov eax, dword [ebp - 0x3c]
shr eax, 0x10
movzx edx, word [ebp - 0x3c]
xor eax, 0xffff
cmp edx, eax
je 0x4102eb
mov esi, dword [ebp + 8]
mov dword [esi + 0x18], str.invalid_stored_block_lengths
mov dword [edi], 0x1d
mov eax, dword [edi]
jmp 0x40fb04
mov esi, dword [ebp - 0x30]
test esi, esi
je 0x40fdc7
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 0x410902
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 0x41097d
mov ecx, dword [edi + 0x10]
test ecx, ecx
je 0x4112f4
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 0x4109ad
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 0x41130d
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 0x40fb04
mov eax, dword [ebp - 0x70]
test eax, eax
je 0x40fdc7
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 0x40fb04
mov edx, dword [edi + 8]
test edx, edx
jne 0x410a41
mov dword [edi], 0xc
mov eax, dword [edi]
jmp 0x40fb04
mov eax, dword [ebp - 0x30]
test eax, eax
je 0x40fdc7
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 0x410a12
and edx, 2
je 0x410a58
cmp dword [ebp - 0x3c], 0x8b1f
je 0x41123b
mov eax, dword [edi + 0x20]
mov dword [edi + 0x10], 0
test eax, eax
je 0x410a6d
mov dword [eax + 0x30], 0xffffffff
test byte [edi + 8], 1
je 0x411115
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 0x411115
mov eax, dword [ebp - 0x3c]
and eax, 0xf
cmp eax, 8
jne 0x40fb53
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 0x411376
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 0x40fb04
cmp esi, dword [ebp - 0x30]
jb 0x410118
jmp 0x41014c
cmp esi, dword [ebp - 0x30]
jb 0x410090
jmp 0x4100cd
mov ecx, 0x100
jmp 0x40fe9f
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 0x40fac1
sub eax, 0xffffff80
xor ecx, ecx
jmp 0x40fe9f
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 0x40fe66
mov eax, dword [eax + 4]
test eax, eax
je 0x40fab6
jmp case.default.0x40fb0d
mov eax, dword [edi + 0x20]
test eax, eax
je 0x410170
mov dword [eax + 0x24], 0
jmp 0x410170
mov ecx, ebx
and ebx, 0xfffffff8
and ecx, 7
shr dword [ebp - 0x3c], cl
mov dword [edi], 0x1a
mov eax, dword [edi]
jmp 0x40fb04
mov eax, dword [edi + 0x20]
test eax, eax
je 0x4100f4
mov dword [eax + 0x1c], 0
jmp 0x4100f4
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 0x410c74
mov eax, dword [ebp - 0x30]
test eax, eax
je 0x40fdc7
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 0x410c1f
cmp byte [ebp - 0xb8], 0
je 0x410ebc
xor eax, eax
mov al, byte [ebp - 0xb8]
test al, 0xf0
je 0x410fbb
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 0x410cd6
mov dword [edi], 0x19
mov eax, dword [edi]
jmp 0x40fb04
xor eax, eax
mov al, byte [ebp - 0xb8]
test al, 0x20
je 0x41117f
mov dword [edi + 0x1bc4], 0xffffffff
mov dword [edi], 0xb
mov eax, dword [edi]
jmp 0x40fb04
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 0x410d14
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 0x410d2a
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 0x4109f1
mov eax, dword [edi]
jmp 0x40fb04
mov eax, dword [edi + 0x30]
cmp edx, eax
jbe 0x410f08
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 0x410d07
jmp 0x410d05
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 0x410156
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 0x410e68
mov eax, dword [ebp - 0x30]
test eax, eax
je 0x40fdc7
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 0x410df3
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 0x41061c
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 0x4100d7
mov al, dl
and eax, 0xff
mov esi, eax
jmp 0x410c9b
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 0x40fb04
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 0x41070d
xor ebx, ebx
mov dword [ebp - 0x3c], 0
jmp 0x41017e
mov esi, eax
mov eax, dword [edi + 0x34]
sub esi, edx
add esi, eax
jmp 0x410d68
cmp eax, 2
je 0x41119e
cmp eax, 3
jne 0x4102db
mov esi, dword [ebp + 8]
mov dword [esi + 0x18], str.invalid_block_type
mov dword [edi], 0x1d
jmp 0x4102db
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 0x40ffa6
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 0x40ff42
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 0x411097
mov eax, dword [ebp - 0x30]
test eax, eax
je 0x40fdc7
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 0x41101f
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 0x410c9b
test dword [ebp - 0x3c], 0xe000
je 0x40fecc
mov ecx, dword [ebp + 8]
mov dword [ecx + 0x18], str.unknown_header_flags_set
mov dword [edi], 0x1d
mov eax, dword [edi]
jmp 0x40fb04
mov dword [edi + 0x4c], 0x41eee0
mov dword [edi + 0x54], 9
mov dword [edi + 0x50], 0x41ee60
mov dword [edi + 0x58], 5
mov dword [edi], 0x13
cmp dword [ebp + 0xc], 6
jne 0x4102db
mov eax, dword [ebp - 0x3c]
sub ebx, 3
shr eax, 3
mov dword [ebp - 0x3c], eax
jmp 0x40fdc7
mov eax, dword [ebp + 8]
mov dword [eax + 0x18], str.incorrect_header_check
mov dword [edi], 0x1d
mov eax, dword [edi]
jmp 0x40fb04
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 0x41004c
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 0x40ffcd
test al, 0x40
je 0x4104f1
mov esi, dword [ebp + 8]
mov dword [esi + 0x18], 0x41ed13
mov dword [edi], 0x1d
mov eax, dword [edi]
jmp 0x40fb04
mov dword [edi], 0x10
jmp 0x4102db
and ecx, 0xff
mov edx, ecx
mov dword [ebp - 0xb8], ecx
add edx, 2
mov dword [ebp - 0xc0], edx
cmp ebx, edx
jae 0x4111fb
mov eax, dword [ebp - 0x30]
test eax, eax
je 0x40fdc7
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 0x4111c4
mov cl, byte [ebp - 0xb8]
mov eax, dword [ebp - 0x38]
shr dword [ebp - 0x3c], cl
sub ebx, esi
test eax, eax
je 0x4113c2
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 0x410825
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 0x40fb04
and ecx, 0xff
mov dword [ebp - 0xb8], ecx
add ecx, 3
mov dword [ebp - 0xc0], ecx
cmp ebx, ecx
jae 0x4112cd
mov eax, dword [ebp - 0x30]
test eax, eax
je 0x40fdc7
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 0x411299
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 0x410825
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 0x410974
mov ecx, dword [ebp - 0x70]
xor ebx, ebx
mov dword [ebp - 0x6c], ecx
mov dword [ebp - 0x3c], 0
jmp 0x410661
xor ebx, ebx
mov dword [ebp - 0x3c], 0
jmp 0x40fdc7
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 0x40fee8
mov eax, dword [ebp + 8]
mov dword [eax + 0x18], str.invalid_bit_length_repeat
mov dword [edi], 0x1d
mov eax, dword [edi]
jmp 0x40fb04
cmp ecx, eax
jbe 0x410ac8
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 0x40fb04
cmp dword [edi], 0x1d
je 0x40fb63
cmp word [edi + 0x270], 0
jne 0x4113d9
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 0x40fb04
mov esi, dword [ebp + 8]
mov dword [esi + 0x18], str.invalid_bit_length_repeat
mov dword [edi], 0x1d
mov eax, dword [edi]
jmp 0x40fb04
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 0x41145c
mov esi, dword [ebp + 8]
mov dword [esi + 0x18], str.invalid_literal_lengths_set
mov dword [edi], 0x1d
mov eax, dword [edi]
jmp 0x40fb04
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 0x40fa8a
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 0x41044c
mov eax, dword [ebp + 8]
mov dword [eax + 0x18], str.invalid_distances_set
mov dword [edi], 0x1d
mov eax, dword [edi]
jmp 0x40fb04