Function at 0x4156a0
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 0x4156c5
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.0x41573d
mov edx, dword [eax + 0xc]
mov dword [ebp - 0x78], edx
test edx, edx
je case.default.0x41573d
mov ecx, dword [eax]
mov dword [ebp - 0x7c], ecx
test ecx, ecx
je 0x4167b0
mov eax, dword [edi]
cmp eax, 0xb
je 0x416769
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.0x41573d
jmp dword [eax*4 + 0x4261f0]
mov eax, dword [ebp - 0x30]
test eax, eax
je 0x4159f7
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 0x415744
mov eax, dword [ebp - 0x3c]
mov dword [edi + 0x10], eax
cmp al, 8
je 0x416ce4
mov edx, dword [ebp + 8]
mov dword [edx + 0x18], str.unknown_compression_method
mov dword [edi], 0x1d
mov eax, dword [edi]
jmp 0x415734
mov eax, dword [ebp - 0x30]
test eax, eax
je 0x4159f7
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 0x415797
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 0x416afa
cmp dword [edi + 0x64], 0x1e
ja 0x416afa
mov dword [edi + 0x68], 0
mov dword [edi], 0x11
mov eax, dword [edi + 0x68]
mov dword [ebp - 0xb8], eax
lea esi, [eax + eax + 0x426280]
cmp dword [edi + 0x5c], eax
jbe 0x4158ab
cmp ebx, 2
ja 0x41586e
mov eax, dword [ebp - 0x30]
test eax, eax
je 0x4159f7
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 0x41583d
cmp dword [ebp - 0xb8], 0x12
ja 0x4158ee
mov esi, dword [ebp - 0xb8]
lea edx, [esi + esi + 0x426280]
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 0x4158c1
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 0x416316
mov edx, dword [ebp + 8]
mov dword [edx + 0x18], str.invalid_code_lengths_set
mov dword [edi], 0x1d
mov eax, dword [edi]
jmp 0x415734
mov esi, dword [ebp - 0x30]
test esi, esi
je 0x4159f7
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 0x415944
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 0x41705d
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.0x41573d.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 0x415a2e
cmp dword [edi], 0x19
ja 0x415a41
mov edx, dword [ebp - 0x6c]
cmp dword [ecx + 0x10], edx
je 0x415a41
mov edx, dword [ebp - 0x6c]
mov eax, dword [ebp + 8]
call dbg.updatewindow
test eax, eax
jne 0x416304
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 0x415a9f
test ebx, ebx
je 0x415a9f
mov eax, dword [edi + 0x10]
test eax, eax
je 0x416794
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 0x41678a
cmp edx, 0x13
je 0x41675f
xor ecx, ecx
cmp edx, 0xe
je 0x41675f
mov edx, dword [ebp + 8]
add eax, ecx
or ebx, esi
mov dword [edx + 0x2c], eax
je 0x415ae5
cmp dword [ebp + 0xc], 4
jne 0x4156ba
mov eax, dword [ebp - 0x68]
test eax, eax
jne 0x4156ba
mov dword [ebp - 0x68], 0xfffffffb
jmp 0x4156ba
mov edx, dword [edi + 0x20]
test edx, edx
je 0x415b0e
mov eax, dword [ebp - 0x3c]
shr eax, 8
and eax, 1
mov dword [edx], eax
test byte [edi + 0x11], 2
jne 0x416f5f
mov dword [edi], 2
xor ebx, ebx
mov dword [ebp - 0x3c], 0
mov esi, dword [ebp - 0x30]
test esi, esi
je 0x4159f7
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 0x415b27
mov eax, dword [edi + 0x20]
test eax, eax
je 0x415b68
mov edx, dword [ebp - 0x3c]
mov dword [eax + 4], edx
test byte [edi + 0x11], 2
jne 0x416b9d
mov dword [edi], 3
xor ebx, ebx
mov dword [ebp - 0x3c], 0
mov esi, dword [ebp - 0x30]
test esi, esi
je 0x4159f7
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 0x415b81
mov edx, dword [edi + 0x20]
test edx, edx
je 0x415bcc
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 0x416b6d
mov dword [edi], 4
xor ebx, ebx
mov dword [ebp - 0x3c], 0
test byte [edi + 0x11], 4
jne 0x415e74
mov eax, dword [edi + 0x20]
test eax, eax
je 0x415bfd
mov dword [eax + 0x10], 0
mov dword [edi], 5
mov edx, dword [edi + 0x10]
test dh, 4
je 0x415c9c
mov eax, dword [edi + 0x40]
mov esi, dword [ebp - 0x30]
cmp esi, eax
jbe 0x415c1b
mov esi, eax
test esi, esi
je 0x415c94
mov ecx, dword [edi + 0x20]
mov dword [ebp - 0xa8], ecx
test ecx, ecx
je 0x415c73
mov ecx, dword [ecx + 0x10]
mov dword [ebp - 0x98], ecx
test ecx, ecx
je 0x415c73
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 0x415c56
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 0x416d5c
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 0x4159f7
mov dword [edi + 0x40], 0
mov dword [edi], 6
test byte [edi + 0x11], 8
je 0x4167ef
mov eax, dword [ebp - 0x30]
test eax, eax
je 0x4159f7
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 0x415cf0
mov ecx, dword [edx + 0x1c]
test ecx, ecx
je 0x415cf0
mov eax, dword [edi + 0x40]
cmp eax, dword [edx + 0x20]
jae 0x415cf0
mov dl, byte [ebp - 0x91]
mov byte [ecx + eax], dl
inc eax
mov dword [edi + 0x40], eax
cmp byte [ebp - 0x91], 0
jne 0x416751
test byte [edi + 0x11], 2
jne 0x416ad2
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 0x4159f7
mov dword [edi + 0x40], 0
mov dword [edi], 7
test byte [edi + 0x11], 0x10
je 0x4167c0
mov edx, dword [ebp - 0x30]
test edx, edx
je 0x4159f7
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 0x415d72
mov ecx, dword [edx + 0x24]
test ecx, ecx
je 0x415d72
mov eax, dword [edi + 0x40]
cmp eax, dword [edx + 0x28]
jae 0x415d72
mov dl, byte [ebp - 0x31]
mov byte [ecx + eax], dl
inc eax
mov dword [edi + 0x40], eax
cmp byte [ebp - 0x31], 0
jne 0x416743
test byte [edi + 0x11], 2
jne 0x4169a1
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 0x4159f7
mov dword [edi], 8
mov edx, dword [edi + 0x10]
test dh, 2
jne 0x415e1c
mov eax, dword [edi + 0x20]
test eax, eax
je 0x415dc8
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 0x415734
mov eax, dword [ebp - 0x30]
test eax, eax
je 0x4159f7
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 0x415ded
movzx eax, word [edi + 0x18]
cmp eax, dword [ebp - 0x3c]
je 0x416b2a
mov esi, dword [ebp + 8]
mov dword [esi + 0x18], str.header_crc_mismatch
mov dword [edi], 0x1d
mov eax, dword [edi]
jmp 0x415734
mov esi, dword [ebp - 0x30]
test esi, esi
je 0x4159f7
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 0x415e45
mov eax, dword [ebp - 0x3c]
mov dword [edi + 0x40], eax
mov eax, dword [edi + 0x20]
test eax, eax
je 0x415e8c
mov edx, dword [ebp - 0x3c]
mov dword [eax + 0x14], edx
test byte [edi + 0x11], 2
jne 0x416d76
xor ebx, ebx
mov dword [ebp - 0x3c], 0
jmp 0x415bfd
mov eax, dword [edi + 4]
test eax, eax
jne 0x4167d7
cmp ebx, 2
ja 0x415ee0
mov eax, dword [ebp - 0x30]
test eax, eax
je 0x4159f7
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 0x416d08
jae 0x416b46
mov dword [edi], 0xd
shr edx, 2
lea ebx, [ecx - 2]
mov dword [ebp - 0x3c], edx
mov eax, dword [edi]
jmp 0x415734
mov dword [edi + 0x40], edx
mov dword [edi], 0xe
cmp dword [ebp + 0xc], 6
je 0x416f51
mov dword [ebp - 0x3c], 0
xor ebx, ebx
mov dword [edi], 0xf
mov eax, dword [edi + 0x40]
test eax, eax
je 0x416920
mov edx, dword [ebp - 0x70]
cmp edx, eax
jbe 0x415f51
mov edx, eax
mov esi, edx
cmp edx, dword [ebp - 0x30]
jbe 0x415f5b
mov esi, dword [ebp - 0x30]
test esi, esi
je 0x4159f7
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 0x415734
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 0x416026
cmp ebx, esi
jae 0x415ffc
mov eax, dword [ebp - 0x30]
test eax, eax
je 0x4159f7
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 0x415fcc
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 0x4159f7
mov eax, dword [ebp - 0x70]
mov edx, dword [ebp - 0x6c]
sub edx, eax
mov eax, dword [edi + 0x44]
cmp edx, eax
jae 0x41692d
sub eax, edx
mov edx, eax
cmp eax, dword [edi + 0x2c]
jbe 0x416981
mov eax, dword [edi + 0x1bc0]
test eax, eax
je 0x416981
mov esi, dword [ebp + 8]
mov dword [esi + 0x18], 0x4261a5
mov dword [edi], 0x1d
mov eax, dword [edi]
jmp 0x415734
mov dword [edi], 0x13
cmp dword [ebp + 0xc], 6
je 0x4159f7
mov dword [edi], 0x14
cmp dword [ebp - 0x30], 5
jbe 0x416806
cmp dword [ebp - 0x70], 0x101
jbe 0x416806
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 0x415793
mov eax, dword [edi]
mov dword [edi + 0x1bc4], 0xffffffff
jmp 0x415734
and eax, 0xf
mov dword [edi], 0x15
mov dword [edi + 0x48], eax
mov esi, dword [edi + 0x48]
test esi, esi
je 0x416192
cmp ebx, esi
jae 0x416168
mov eax, dword [ebp - 0x30]
test eax, eax
je 0x4159f7
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 0x416138
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 0x41622c
mov eax, dword [ebp - 0x30]
test eax, eax
je 0x4159f7
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 0x4161da
mov al, byte [ebp - 0xb8]
and eax, 0xff
mov dword [ebp - 0x2c], eax
test al, 0xf0
je 0x4169bb
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 0x415fa4
mov esi, dword [ebp + 8]
mov dword [esi + 0x18], 0x42618f
mov dword [edi], 0x1d
mov eax, dword [edi]
jmp 0x415734
mov eax, dword [edi + 8]
test eax, eax
jne 0x416561
mov dword [edi], 0x1b
mov eax, dword [edi + 8]
test eax, eax
je 0x4164a5
mov eax, dword [edi + 0x10]
test eax, eax
jne 0x4162dc
jmp 0x4164a5
mov esi, dword [ebp - 0x30]
test esi, esi
je 0x4159f7
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 0x4162b0
mov eax, dword [ebp - 0x3c]
cmp dword [edi + 0x1c], eax
je 0x41649c
mov edx, dword [ebp + 8]
mov dword [edx + 0x18], str.incorrect_length_check
mov dword [edi], 0x1d
mov eax, dword [edi]
jmp 0x415734
mov dword [edi], 0x1e
mov dword [ebp - 0x68], 0xfffffffc
jmp 0x4156ba
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 0x416fc8
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 0x4163cd
mov eax, dword [ebp - 0x30]
test eax, eax
je 0x4159f7
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 0x41637f
cmp dx, 0xf
jbe 0x416b11
cmp dx, 0x10
je 0x416dd9
cmp dx, 0x11
je 0x416eb0
and ecx, 0xff
mov edx, ecx
mov dword [ebp - 0xb8], ecx
add edx, 7
cmp ebx, edx
jae 0x416433
mov eax, dword [ebp - 0x30]
test eax, eax
je 0x4159f7
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 0x416400
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 0x416f8f
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 0x41647f
jmp 0x41633d
mov dword [ebp - 0x3c], 0
xor ebx, ebx
mov dword [edi], 0x1c
mov dword [ebp - 0x68], 1
jmp 0x4159f7
mov dword [ebp - 0x68], 0xfffffffd
jmp 0x4159f7
mov ecx, ebx
and ebx, 0xfffffff8
and ecx, 7
shr dword [ebp - 0x3c], cl
cmp ebx, 0x1f
ja 0x416504
mov eax, dword [ebp - 0x30]
test eax, eax
je 0x4159f7
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 0x4164d3
mov eax, dword [ebp - 0x3c]
shr eax, 0x10
movzx edx, word [ebp - 0x3c]
xor eax, 0xffff
cmp edx, eax
je 0x415f1b
mov esi, dword [ebp + 8]
mov dword [esi + 0x18], str.invalid_stored_block_lengths
mov dword [edi], 0x1d
mov eax, dword [edi]
jmp 0x415734
mov esi, dword [ebp - 0x30]
test esi, esi
je 0x4159f7
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 0x416532
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 0x4165ad
mov ecx, dword [edi + 0x10]
test ecx, ecx
je 0x416f24
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 0x4165dd
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 0x416f3d
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 0x415734
mov eax, dword [ebp - 0x70]
test eax, eax
je 0x4159f7
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 0x415734
mov edx, dword [edi + 8]
test edx, edx
jne 0x416671
mov dword [edi], 0xc
mov eax, dword [edi]
jmp 0x415734
mov eax, dword [ebp - 0x30]
test eax, eax
je 0x4159f7
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 0x416642
and edx, 2
je 0x416688
cmp dword [ebp - 0x3c], 0x8b1f
je 0x416e6b
mov eax, dword [edi + 0x20]
mov dword [edi + 0x10], 0
test eax, eax
je 0x41669d
mov dword [eax + 0x30], 0xffffffff
test byte [edi + 8], 1
je 0x416d45
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 0x416d45
mov eax, dword [ebp - 0x3c]
and eax, 0xf
cmp eax, 8
jne 0x415783
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 0x416fa6
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 0x415734
cmp esi, dword [ebp - 0x30]
jb 0x415d48
jmp 0x415d7c
cmp esi, dword [ebp - 0x30]
jb 0x415cc0
jmp 0x415cfd
mov ecx, 0x100
jmp 0x415acf
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 0x4156f1
sub eax, 0xffffff80
xor ecx, ecx
jmp 0x415acf
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 0x415a96
mov eax, dword [eax + 4]
test eax, eax
je 0x4156e6
jmp case.default.0x41573d
mov eax, dword [edi + 0x20]
test eax, eax
je 0x415da0
mov dword [eax + 0x24], 0
jmp 0x415da0
mov ecx, ebx
and ebx, 0xfffffff8
and ecx, 7
shr dword [ebp - 0x3c], cl
mov dword [edi], 0x1a
mov eax, dword [edi]
jmp 0x415734
mov eax, dword [edi + 0x20]
test eax, eax
je 0x415d24
mov dword [eax + 0x1c], 0
jmp 0x415d24
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 0x4168a4
mov eax, dword [ebp - 0x30]
test eax, eax
je 0x4159f7
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 0x41684f
cmp byte [ebp - 0xb8], 0
je 0x416aec
xor eax, eax
mov al, byte [ebp - 0xb8]
test al, 0xf0
je 0x416beb
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 0x416906
mov dword [edi], 0x19
mov eax, dword [edi]
jmp 0x415734
xor eax, eax
mov al, byte [ebp - 0xb8]
test al, 0x20
je 0x416daf
mov dword [edi + 0x1bc4], 0xffffffff
mov dword [edi], 0xb
mov eax, dword [edi]
jmp 0x415734
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 0x416944
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 0x41695a
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 0x416621
mov eax, dword [edi]
jmp 0x415734
mov eax, dword [edi + 0x30]
cmp edx, eax
jbe 0x416b38
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 0x416937
jmp 0x416935
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 0x415d86
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 0x416a98
mov eax, dword [ebp - 0x30]
test eax, eax
je 0x4159f7
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 0x416a23
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 0x41624c
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 0x415d07
mov al, dl
and eax, 0xff
mov esi, eax
jmp 0x4168cb
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 0x415734
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 0x41633d
xor ebx, ebx
mov dword [ebp - 0x3c], 0
jmp 0x415dae
mov esi, eax
mov eax, dword [edi + 0x34]
sub esi, edx
add esi, eax
jmp 0x416998
cmp eax, 2
je 0x416dce
cmp eax, 3
jne 0x415f0b
mov esi, dword [ebp + 8]
mov dword [esi + 0x18], str.invalid_block_type
mov dword [edi], 0x1d
jmp 0x415f0b
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 0x415bd6
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 0x415b72
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 0x416cc7
mov eax, dword [ebp - 0x30]
test eax, eax
je 0x4159f7
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 0x416c4f
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 0x4168cb
test dword [ebp - 0x3c], 0xe000
je 0x415afc
mov ecx, dword [ebp + 8]
mov dword [ecx + 0x18], str.unknown_header_flags_set
mov dword [edi], 0x1d
mov eax, dword [edi]
jmp 0x415734
mov dword [edi + 0x4c], 0x426340
mov dword [edi + 0x54], 9
mov dword [edi + 0x50], 0x4262c0
mov dword [edi + 0x58], 5
mov dword [edi], 0x13
cmp dword [ebp + 0xc], 6
jne 0x415f0b
mov eax, dword [ebp - 0x3c]
sub ebx, 3
shr eax, 3
mov dword [ebp - 0x3c], eax
jmp 0x4159f7
mov eax, dword [ebp + 8]
mov dword [eax + 0x18], str.incorrect_header_check
mov dword [edi], 0x1d
mov eax, dword [edi]
jmp 0x415734
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 0x415c7c
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 0x415bfd
test al, 0x40
je 0x416121
mov esi, dword [ebp + 8]
mov dword [esi + 0x18], 0x426173
mov dword [edi], 0x1d
mov eax, dword [edi]
jmp 0x415734
mov dword [edi], 0x10
jmp 0x415f0b
and ecx, 0xff
mov edx, ecx
mov dword [ebp - 0xb8], ecx
add edx, 2
mov dword [ebp - 0xc0], edx
cmp ebx, edx
jae 0x416e2b
mov eax, dword [ebp - 0x30]
test eax, eax
je 0x4159f7
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 0x416df4
mov cl, byte [ebp - 0xb8]
mov eax, dword [ebp - 0x38]
shr dword [ebp - 0x3c], cl
sub ebx, esi
test eax, eax
je 0x416ff2
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 0x416455
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 0x415734
and ecx, 0xff
mov dword [ebp - 0xb8], ecx
add ecx, 3
mov dword [ebp - 0xc0], ecx
cmp ebx, ecx
jae 0x416efd
mov eax, dword [ebp - 0x30]
test eax, eax
je 0x4159f7
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 0x416ec9
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 0x416455
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 0x4165a4
mov ecx, dword [ebp - 0x70]
xor ebx, ebx
mov dword [ebp - 0x6c], ecx
mov dword [ebp - 0x3c], 0
jmp 0x416291
xor ebx, ebx
mov dword [ebp - 0x3c], 0
jmp 0x4159f7
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 0x415b18
mov eax, dword [ebp + 8]
mov dword [eax + 0x18], str.invalid_bit_length_repeat
mov dword [edi], 0x1d
mov eax, dword [edi]
jmp 0x415734
cmp ecx, eax
jbe 0x4166f8
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 0x415734
cmp dword [edi], 0x1d
je 0x415793
cmp word [edi + 0x270], 0
jne 0x417009
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 0x415734
mov esi, dword [ebp + 8]
mov dword [esi + 0x18], str.invalid_bit_length_repeat
mov dword [edi], 0x1d
mov eax, dword [edi]
jmp 0x415734
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 0x41708c
mov esi, dword [ebp + 8]
mov dword [esi + 0x18], str.invalid_literal_lengths_set
mov dword [edi], 0x1d
mov eax, dword [edi]
jmp 0x415734
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 0x4156ba
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 0x41607c
mov eax, dword [ebp + 8]
mov dword [eax + 0x18], str.invalid_distances_set
mov dword [edi], 0x1d
mov eax, dword [edi]
jmp 0x415734