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

Disassembly:
push ebp
push edi
push esi
push ebx
sub esp, 0xac
mov eax, dword [esp + 0xc0]
test eax, eax
je case.default.0x40bb54
mov ebx, dword [esp + 0xc0]
mov ebp, dword [ebx + 0x1c]
test ebp, ebp
je case.default.0x40bb54
mov edx, dword [ebx + 0xc]
test edx, edx
mov dword [esp + 0x50], edx
je case.default.0x40bb54
mov esi, dword [ebx]
test esi, esi
je 0x40cdf5
mov ebx, dword [ebx + 4]
mov dword [esp + 0x5c], ebx
mov eax, dword [ebp]
cmp eax, 0xb
je 0x40bc94
mov ebx, dword [esp + 0xc0]
mov ecx, dword [esp + 0xc4]
mov edx, dword [ebp + 0x38]
mov edi, dword [esp + 0x5c]
mov ebx, dword [ebx + 0x10]
sub ecx, 5
mov dword [esp + 0x64], ecx
mov dword [esp + 0x3c], ebp
mov dword [esp + 0x4c], ebx
mov ecx, dword [esp + 0x4c]
mov ebx, dword [ebp + 0x3c]
mov dword [esp + 0x54], 0
mov dword [esp + 0x58], ecx
lea ecx, [ebp + 0x530]
mov dword [esp + 0x68], ecx
lea ecx, [ebp + 0x2f0]
mov ebp, edx
mov dword [esp + 0x6c], ecx
cmp eax, 0x1e
jbe switch.0x0040bb54
mov dword [esp + 0x54], 0xfffffffe
mov eax, dword [esp + 0x54]
add esp, 0xac
pop ebx
pop esi
pop edi
pop ebp
ret
mov edx, dword [esp + 0x3c]
xor eax, eax
mov ecx, dword [edx + 8]
test ecx, ecx
je 0x40d093
cmp ebx, 0x1f
ja 0x40baa4
test edi, edi
je 0x40cd93
mov ecx, ebx
jmp 0x40ba8d
test edi, edi
je 0x40cda0
movzx eax, byte [esi]
sub edi, 1
add esi, 1
shl eax, cl
add ecx, 8
add ebp, eax
cmp ecx, 0x1f
jbe 0x40ba85
mov ebx, ecx
mov eax, dword [esp + 0x58]
mov ecx, dword [esp + 0xc0]
mov edx, dword [esp + 0x3c]
sub eax, dword [esp + 0x4c]
add dword [ecx + 0x14], eax
add dword [edx + 0x1c], eax
test eax, eax
je 0x40bafa
mov ecx, dword [edx + 0x10]
mov dword [esp + 8], eax
mov edx, dword [esp + 0x50]
test ecx, ecx
je 0x40d72b
mov ecx, dword [esp + 0x3c]
sub edx, eax
mov dword [esp + 4], edx
mov eax, dword [ecx + 0x18]
mov dword [esp], eax
call fcn.0040e3e0
mov edx, dword [esp + 0x3c]
mov ecx, dword [esp + 0xc0]
mov dword [edx + 0x18], eax
mov dword [ecx + 0x30], eax
mov edx, dword [edx + 0x10]
mov eax, ebp
test edx, edx
jne 0x40bb26
mov edx, ebp
mov ecx, ebp
shl edx, 0x18
and eax, 0xff00
shr ecx, 0x18
add ecx, edx
mov edx, ebp
shr edx, 8
and edx, 0xff00
shl eax, 8
add edx, ecx
add eax, edx
mov ecx, dword [esp + 0x3c]
cmp eax, dword [ecx + 0x18]
je 0x40d080
mov eax, dword [esp + 0xc0]
mov dword [eax + 0x18], str.incorrect_data_check
mov eax, 0x1d
mov dword [ecx], 0x1d
mov ecx, dword [esp + 0x4c]
mov dword [esp + 0x58], ecx
jmp dword [eax*4 + 0x414170]
cmp ebx, 0x1f
ja 0x40bb8f
test edi, edi
je 0x40cd93
mov ecx, ebx
nop
jmp 0x40bb7a
test edi, edi
je 0x40cda0
movzx eax, byte [esi]
sub edi, 1
add esi, 1
shl eax, cl
add ecx, 8
add ebp, eax
cmp ecx, 0x1f
jbe 0x40bb72
mov edx, ebp
mov eax, ebp
mov ebx, dword [esp + 0x3c]
shr eax, 0x18
shl edx, 0x18
add edx, eax
mov eax, ebp
shr eax, 8
and ebp, 0xff00
and eax, 0xff00
shl ebp, 8
add eax, edx
add eax, ebp
xor ebp, ebp
mov dword [ebx + 0x18], eax
mov ebx, dword [esp + 0xc0]
mov dword [ebx + 0x30], eax
mov ebx, dword [esp + 0x3c]
mov dword [ebx], 0xa
xor ebx, ebx
mov eax, dword [esp + 0x3c]
mov ecx, dword [eax + 0xc]
test ecx, ecx
je 0x40d7ba
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov dword [esp], 0
call fcn.0040e6e0
mov edx, dword [esp + 0x3c]
mov ecx, dword [esp + 0xc0]
mov dword [edx + 0x18], eax
mov dword [ecx + 0x30], eax
mov dword [edx], 0xb
cmp dword [esp + 0x64], 1
jbe 0x40cd93
mov eax, dword [esp + 0x3c]
mov edx, dword [eax + 4]
test edx, edx
jne 0x40bca2
cmp ebx, 2
ja 0x40bc48
test edi, edi
je 0x40d6ee
movzx eax, byte [esi]
mov ecx, ebx
sub edi, 1
add esi, 1
add ebx, 8
shl eax, cl
add ebp, eax
mov edx, dword [esp + 0x3c]
mov eax, ebp
and eax, 1
mov dword [edx + 4], eax
mov edx, ebp
shr edx, 1
mov eax, edx
and eax, 3
cmp eax, 2
je 0x40d152
cmp eax, 3
je 0x40d3a7
cmp eax, 1
je 0x40d369
mov ecx, dword [esp + 0x3c]
mov eax, 0xd
mov dword [ecx], 0xd
mov ebp, edx
sub ebx, 3
shr ebp, 2
jmp 0x40ba43
mov dword [ebp], 0xc
mov al, 0xc
jmp 0x40b9f3
mov ecx, ebx
and ebx, 0xfffffff8
and ecx, 7
mov dword [eax], 0x1a
shr ebp, cl
mov eax, 0x1a
jmp switch.0x0040bb54
mov ecx, dword [esp + 0x3c]
mov edx, dword [ecx + 0x48]
test edx, edx
je 0x40bd23
cmp ebx, edx
jae 0x40bcfe
test edi, edi
je 0x40cd93
mov ecx, ebx
jmp 0x40bce8
test edi, edi
je 0x40cda0
movzx eax, byte [esi]
sub edi, 1
add esi, 1
shl eax, cl
add ecx, 8
add ebp, eax
cmp ecx, edx
jb 0x40bce0
mov ebx, ecx
mov ecx, edx
mov eax, 1
shl eax, cl
mov ecx, dword [esp + 0x3c]
sub ebx, edx
sub eax, 1
and eax, ebp
add dword [ecx + 0x44], eax
mov ecx, edx
mov eax, dword [esp + 0x3c]
shr ebp, cl
add dword [eax + 0x1bc4], edx
mov edx, dword [esp + 0x3c]
mov dword [edx], 0x18
mov ecx, dword [esp + 0x4c]
test ecx, ecx
je 0x40cd93
mov ecx, dword [esp + 0x3c]
mov edx, dword [esp + 0x58]
sub edx, dword [esp + 0x4c]
mov eax, dword [ecx + 0x44]
cmp edx, eax
jae 0x40ce74
sub eax, edx
cmp eax, dword [ecx + 0x2c]
ja 0x40d0b0
mov ecx, dword [esp + 0x3c]
mov edx, dword [ecx + 0x30]
cmp eax, edx
jbe 0x40d2a0
sub eax, edx
mov edx, dword [ecx + 0x28]
sub edx, eax
add edx, dword [ecx + 0x34]
mov ecx, dword [esp + 0x3c]
mov ecx, dword [ecx + 0x40]
cmp eax, ecx
mov dword [esp + 0x40], ecx
cmova eax, ecx
jmp 0x40ce83
mov eax, dword [esp + 0x3c]
cmp dword [esp + 0xc4], 6
mov dword [eax], 0x13
je 0x40cd93
mov edx, dword [esp + 0x3c]
mov dword [edx], 0x14
cmp edi, 5
ja 0x40d1b0
mov ecx, dword [esp + 0x3c]
mov eax, dword [ecx + 0x4c]
mov dword [ecx + 0x1bc4], 0
mov ecx, dword [ecx + 0x54]
mov dword [esp + 0x44], eax
mov eax, 1
mov edx, dword [esp + 0x44]
shl eax, cl
sub eax, 1
mov dword [esp + 0x48], eax
and eax, ebp
lea eax, [edx + eax*4]
movzx edx, byte [eax]
mov byte [esp + 0x40], dl
movzx edx, byte [eax + 1]
movzx eax, word [eax + 2]
mov word [esp + 0x70], ax
movzx eax, dl
cmp ebx, eax
mov dword [esp + 0x60], eax
jae 0x40be56
test edi, edi
je 0x40cd93
mov ecx, ebx
jmp 0x40be18
test edi, edi
je 0x40cda0
movzx eax, byte [esi]
sub edi, 1
add esi, 1
mov edx, dword [esp + 0x44]
shl eax, cl
add ecx, 8
add ebp, eax
mov eax, dword [esp + 0x48]
and eax, ebp
lea eax, [edx + eax*4]
movzx ebx, byte [eax]
movzx edx, byte [eax + 1]
mov byte [esp + 0x40], bl
movzx ebx, word [eax + 2]
movzx eax, dl
cmp eax, ecx
ja 0x40be10
mov word [esp + 0x70], bx
mov ebx, ecx
mov dword [esp + 0x60], eax
cmp byte [esp + 0x40], 0
jne 0x40d2b0
movzx eax, dl
mov ecx, edx
mov edx, dword [esp + 0x3c]
sub ebx, dword [esp + 0x60]
shr ebp, cl
mov dword [edx + 0x1bc4], eax
movzx eax, word [esp + 0x70]
mov dword [edx + 0x40], eax
mov ecx, dword [esp + 0x3c]
mov eax, 0x19
mov dword [ecx], 0x19
jmp switch.0x0040bb54
mov eax, dword [esp + 0x3c]
mov edx, dword [eax + 0x48]
test edx, edx
jne 0x40d017
mov edx, dword [esp + 0x3c]
mov eax, dword [edx + 0x40]
mov dword [edx + 0x1bc8], eax
mov dword [edx], 0x16
mov ecx, dword [esp + 0x3c]
mov eax, dword [esp + 0x3c]
mov ecx, dword [ecx + 0x50]
mov dword [esp + 0x40], ecx
mov ecx, dword [eax + 0x58]
mov eax, 1
shl eax, cl
mov ecx, dword [esp + 0x40]
sub eax, 1
mov dword [esp + 0x48], eax
and eax, ebp
lea edx, [ecx + eax*4]
movzx eax, byte [edx]
mov byte [esp + 0x44], al
movzx eax, byte [edx + 1]
movzx edx, word [edx + 2]
mov word [esp + 0x60], dx
movzx edx, al
cmp ebx, edx
jae 0x40d5f9
test edi, edi
je 0x40cd93
mov ecx, ebx
jmp 0x40bf10
test edi, edi
je 0x40cda0
movzx eax, byte [esi]
sub edi, 1
add esi, 1
mov ebx, dword [esp + 0x40]
shl eax, cl
add ecx, 8
add ebp, eax
mov eax, dword [esp + 0x48]
and eax, ebp
lea edx, [ebx + eax*4]
movzx eax, byte [edx]
movzx ebx, word [edx + 2]
mov byte [esp + 0x44], al
movzx eax, byte [edx + 1]
movzx edx, al
cmp edx, ecx
ja 0x40bf08
mov word [esp + 0x60], bx
mov ebx, ecx
mov dword [esp + 0x48], edx
movzx ecx, byte [esp + 0x44]
mov dword [esp + 0x74], ecx
and ecx, 0xf0
jne 0x40d0e0
movzx ecx, word [esp + 0x60]
mov dword [esp + 0x44], 1
mov dword [esp + 0x70], ecx
movzx ecx, al
mov dword [esp + 0x48], ecx
mov ecx, dword [esp + 0x74]
add ecx, dword [esp + 0x48]
shl dword [esp + 0x44], cl
mov ecx, dword [esp + 0x44]
sub ecx, 1
mov dword [esp + 0x74], ecx
and ecx, ebp
mov dword [esp + 0x44], ecx
mov ecx, eax
shr dword [esp + 0x44], cl
mov eax, dword [esp + 0x44]
mov ecx, dword [esp + 0x40]
add eax, dword [esp + 0x70]
lea eax, [ecx + eax*4]
movzx ecx, byte [eax]
mov byte [esp + 0x44], cl
movzx ecx, byte [eax + 1]
movzx eax, word [eax + 2]
mov byte [esp + 0x78], cl
mov word [esp + 0x60], ax
movzx eax, cl
mov ecx, dword [esp + 0x48]
add ecx, eax
cmp ebx, ecx
jae 0x40c03b
test edi, edi
je 0x40cd93
mov dword [esp + 0x7c], edx
jmp 0x40bfe8
test edi, edi
je 0x40cd93
movzx eax, byte [esi]
mov ecx, ebx
add ebx, 8
mov edx, dword [esp + 0x40]
sub edi, 1
add esi, 1
shl eax, cl
movzx ecx, byte [esp + 0x48]
add ebp, eax
mov eax, dword [esp + 0x74]
and eax, ebp
shr eax, cl
mov ecx, dword [esp + 0x48]
add eax, dword [esp + 0x70]
lea eax, [edx + eax*4]
movzx edx, byte [eax]
mov byte [esp + 0x44], dl
movzx edx, byte [eax + 1]
movzx eax, word [eax + 2]
mov word [esp + 0x60], ax
movzx eax, dl
add ecx, eax
cmp ecx, ebx
ja 0x40bfe0
mov byte [esp + 0x78], dl
mov edx, dword [esp + 0x7c]
movzx ecx, byte [esp + 0x48]
sub ebx, edx
mov edx, dword [esp + 0x48]
shr ebp, cl
mov ecx, dword [esp + 0x3c]
add edx, dword [ecx + 0x1bc4]
movzx ecx, byte [esp + 0x78]
mov dword [esp + 0x48], ecx
movzx ecx, byte [esp + 0x44]
mov dword [esp + 0x74], ecx
jmp 0x40d0ed
mov dword [ebp], 0x1e
mov dword [esp + 0x54], 0xfffffffc
jmp 0x40ba54
cmp ebx, 0x1f
ja 0x40c0af
test edi, edi
je 0x40cd93
mov ecx, ebx
nop
jmp 0x40c09a
test edi, edi
je 0x40cda0
movzx eax, byte [esi]
sub edi, 1
add esi, 1
shl eax, cl
add ecx, 8
add ebp, eax
cmp ecx, 0x1f
jbe 0x40c092
mov ebx, dword [esp + 0x3c]
mov eax, dword [ebx + 0x20]
test eax, eax
je 0x40c0c1
mov ebx, dword [esp + 0x3c]
mov dword [eax + 4], ebp
test byte [ebx + 0x11], 2
jne 0x40d41f
mov dword [ebx], 3
xor ebp, ebp
xor ebx, ebx
jmp 0x40c0dc
cmp ebx, 0xf
ja 0x40c105
test edi, edi
je 0x40cd93
mov ecx, ebx
jmp 0x40c0f0
test edi, edi
je 0x40cda0
movzx eax, byte [esi]
sub edi, 1
add esi, 1
shl eax, cl
add ecx, 8
add ebp, eax
cmp ecx, 0xf
jbe 0x40c0e8
mov ebx, dword [esp + 0x3c]
mov eax, dword [ebx + 0x20]
test eax, eax
je 0x40c127
mov edx, ebp
mov ebx, dword [esp + 0x3c]
and edx, 0xff
mov dword [eax + 8], edx
mov edx, ebp
shr edx, 8
mov dword [eax + 0xc], edx
mov edx, dword [ebx + 0x10]
test dh, 2
jne 0x40d327
mov dword [ebx], 4
xor ebp, ebp
xor ebx, ebx
test dh, 4
mov dword [esp + 0x40], edx
je 0x40d166
cmp ebx, 0xf
ja 0x40c17d
test edi, edi
je 0x40cd93
mov ecx, ebx
jmp 0x40c168
test edi, edi
je 0x40cda0
movzx eax, byte [esi]
sub edi, 1
add esi, 1
shl eax, cl
add ecx, 8
add ebp, eax
cmp ecx, 0xf
jbe 0x40c160
mov ebx, dword [esp + 0x3c]
mov eax, dword [ebx + 0x20]
mov dword [ebx + 0x40], ebp
test eax, eax
je 0x40c18e
mov dword [eax + 0x14], ebp
test dh, 2
jne 0x40d4ee
mov ecx, edx
xor ebx, ebx
mov dword [esp + 0x40], edx
and ecx, 0x400
xor ebp, ebp
mov eax, dword [esp + 0x3c]
mov dword [eax], 5
jmp 0x40c733
mov ecx, ebx
and ebx, 0xfffffff8
and ecx, 7
shr ebp, cl
cmp ebx, 0x1f
ja 0x40c1f0
test edi, edi
je 0x40cd93
mov ecx, ebx
jmp 0x40c1d9
test edi, edi
je 0x40cda0
movzx eax, byte [esi]
sub edi, 1
add esi, 1
shl eax, cl
add ecx, 8
add ebp, eax
cmp ecx, 0x1f
jbe 0x40c1d1
mov ebx, ecx
mov eax, ebp
mov edx, ebp
shr eax, 0x10
and edx, 0xffff
xor eax, 0xffff
cmp edx, eax
je 0x40d476
mov eax, dword [esp + 0xc0]
mov edx, dword [esp + 0x3c]
mov dword [eax + 0x18], str.invalid_stored_block_lengths
mov eax, 0x1d
mov dword [edx], 0x1d
jmp switch.0x0040bb54
mov edx, dword [esp + 0x3c]
mov ecx, dword [esp + 0x3c]
mov eax, dword [esp + 0x3c]
mov edx, dword [edx + 0x68]
mov dword [esp + 0x48], edx
mov ecx, dword [ecx + 0x60]
mov dword [esp + 0x70], ecx
add ecx, dword [eax + 0x64]
mov eax, dword [esp + 0x48]
mov dword [esp + 0x60], ecx
cmp dword [esp + 0x60], eax
jbe 0x40d781
mov edx, dword [esp + 0x3c]
mov eax, dword [esp + 0x3c]
mov edx, dword [edx + 0x4c]
mov ecx, dword [eax + 0x54]
mov dword [esp + 0x40], edx
mov edx, 1
shl edx, cl
mov ecx, edx
mov edx, dword [esp + 0x40]
sub ecx, 1
mov eax, ecx
and eax, ebp
lea eax, [edx + eax*4]
mov dword [esp + 0x44], ecx
movzx ecx, byte [eax + 1]
movzx eax, word [eax + 2]
movzx edx, cl
cmp ebx, edx
jae 0x40c2e6
test edi, edi
je 0x40cd93
mov ecx, ebx
jmp 0x40c2af
test edi, edi
je 0x40cda0
movzx eax, byte [esi]
sub edi, 1
add esi, 1
mov edx, dword [esp + 0x40]
shl eax, cl
add ecx, 8
add ebp, eax
mov eax, dword [esp + 0x44]
and eax, ebp
lea eax, [edx + eax*4]
movzx ebx, byte [eax + 1]
movzx eax, word [eax + 2]
movzx edx, bl
cmp edx, ecx
ja 0x40c2a7
mov byte [esp + 0x40], bl
mov ebx, ecx
movzx ecx, byte [esp + 0x40]
cmp ax, 0xf
jbe 0x40d130
movzx ecx, cl
cmp ax, 0x10
mov dword [esp + 0x40], ecx
je 0x40d530
cmp ax, 0x11
mov eax, ecx
je 0x40d605
add eax, 7
cmp ebx, eax
jae 0x40c344
test edi, edi
je 0x40cd93
mov ecx, ebx
mov ebx, edx
mov edx, eax
jmp 0x40c32c
test edi, edi
je 0x40cda0
movzx eax, byte [esi]
sub edi, 1
add esi, 1
shl eax, cl
add ecx, 8
add ebp, eax
cmp ecx, edx
jb 0x40c324
mov edx, ebx
mov ebx, ecx
movzx ecx, byte [esp + 0x40]
sub ebx, edx
sub ebx, 7
shr ebp, cl
mov eax, ebp
and eax, 0x7f
add eax, 0xb
mov dword [esp + 0x40], eax
mov edx, dword [esp + 0x40]
shr ebp, 7
xor eax, eax
add edx, dword [esp + 0x48]
cmp dword [esp + 0x60], edx
mov dword [esp + 0x78], edx
jb 0x40d969
mov edx, dword [esp + 0x40]
mov word [esp + 0x74], ax
mov eax, dword [esp + 0x48]
sub edx, 1
mov dword [esp + 0x44], edx
mov edx, dword [esp + 0x3c]
add eax, 0x38
mov dword [esp + 0x84], eax
lea ecx, [edx + eax*2]
mov eax, dword [esp + 0x48]
shl ecx, 0x1e
shr ecx, 0x1f
cmp dword [esp + 0x40], ecx
cmovbe ecx, dword [esp + 0x40]
test ecx, ecx
je 0x40c410
mov dword [esp + 0x7c], esi
mov esi, edx
mov edx, dword [esp + 0x44]
mov dword [esp + 0x88], ebp
movzx ebp, word [esp + 0x74]
mov dword [esp + 0x80], edi
mov edi, eax
mov dword [esp + 0x8c], ebx
lea esi, [esi]
mov word [esi + eax*2 + 0x70], bp
add eax, 1
sub edx, 1
mov ebx, eax
sub ebx, edi
cmp ecx, ebx
ja 0x40c3e0
mov esi, dword [esp + 0x7c]
mov edi, dword [esp + 0x80]
mov ebp, dword [esp + 0x88]
mov ebx, dword [esp + 0x8c]
mov dword [esp + 0x44], edx
mov edx, dword [esp + 0x40]
sub edx, ecx
mov dword [esp + 0x40], edx
shr edx, 1
mov dword [esp + 0x48], edx
add edx, edx
mov dword [esp + 0x7c], edx
je 0x40c4a8
movzx edx, word [esp + 0x74]
add ecx, dword [esp + 0x84]
mov dword [esp + 0x84], esi
mov esi, dword [esp + 0x48]
shl edx, 0x10
mov dword [esp + 0x88], edx
movzx edx, word [esp + 0x74]
mov dword [esp + 0x80], edx
mov edx, dword [esp + 0x88]
or dword [esp + 0x80], edx
mov edx, dword [esp + 0x3c]
mov dword [esp + 0x88], edi
mov edi, dword [esp + 0x80]
lea ecx, [edx + ecx*2]
xor edx, edx
nop
mov dword [ecx + edx*4], edi
add edx, 1
cmp esi, edx
ja 0x40c480
mov ecx, dword [esp + 0x7c]
sub dword [esp + 0x44], ecx
mov esi, dword [esp + 0x84]
mov edi, dword [esp + 0x88]
add eax, ecx
cmp dword [esp + 0x40], ecx
je 0x40c4e0
mov edx, dword [esp + 0x44]
mov ecx, dword [esp + 0x3c]
mov dword [esp + 0x40], esi
movzx esi, word [esp + 0x74]
lea edx, [edx + edx + 2]
mov dword [esp + 0x44], edx
lea eax, [ecx + eax*2]
mov ecx, dword [esp + 0x44]
xor edx, edx
lea esi, [esi]
mov word [eax + edx + 0x70], si
add edx, 2
cmp edx, ecx
jne 0x40c4d0
mov esi, dword [esp + 0x40]
mov edx, dword [esp + 0x78]
mov eax, dword [esp + 0x3c]
mov dword [esp + 0x48], edx
mov dword [eax + 0x68], edx
mov eax, edx
jmp 0x40c255
mov ecx, dword [esp + 0x3c]
mov edx, dword [ecx + 0x10]
test dh, 2
je 0x40c8cb
cmp ebx, 0xf
ja 0x40c536
test edi, edi
je 0x40cd93
mov ecx, ebx
jmp 0x40c51f
test edi, edi
je 0x40cda0
movzx eax, byte [esi]
sub edi, 1
add esi, 1
shl eax, cl
add ecx, 8
add ebp, eax
cmp ecx, 0xf
jbe 0x40c517
mov ebx, ecx
mov ecx, dword [esp + 0x3c]
movzx eax, word [ecx + 0x18]
cmp eax, ebp
je 0x40d292
mov eax, dword [esp + 0xc0]
mov dword [eax + 0x18], str.header_crc_mismatch
mov eax, 0x1d
mov dword [ecx], 0x1d
jmp switch.0x0040bb54
mov edx, dword [esp + 0x3c]
mov eax, dword [edx + 8]
test eax, eax
je 0x40d745
mov ecx, dword [esp + 0x3c]
mov eax, dword [ecx + 0x10]
test eax, eax
je 0x40d745
cmp ebx, 0x1f
ja 0x40c5b2
test edi, edi
je 0x40d5f0
mov ecx, ebx
jmp 0x40c59b
test edi, edi
je 0x40cda0
movzx eax, byte [esi]
sub edi, 1
add esi, 1
shl eax, cl
add ecx, 8
add ebp, eax
cmp ecx, 0x1f
jbe 0x40c593
mov ebx, ecx
mov eax, dword [esp + 0x3c]
cmp dword [eax + 0x1c], ebp
je 0x40d82a
mov edx, dword [esp + 0xc0]
mov dword [edx + 0x18], str.incorrect_length_check
mov dword [eax], 0x1d
mov eax, 0x1d
jmp switch.0x0040bb54
mov edx, ebp
mov ebp, dword [esp + 0x3c]
mov dword [esp + 0x54], 1
nop
mov ecx, dword [esp + 0xc0]
mov eax, dword [esp + 0x50]
mov dword [ecx], esi
mov dword [ecx + 0xc], eax
mov eax, dword [esp + 0x4c]
mov dword [ecx + 4], edi
mov dword [ecx + 0x10], eax
mov dword [ebp + 0x3c], ebx
mov ebx, dword [ebp + 0x28]
mov dword [ebp + 0x38], edx
test ebx, ebx
jne 0x40c634
cmp dword [esp + 0x58], eax
je 0x40c654
mov eax, dword [ebp]
cmp eax, 0x1c
ja 0x40c654
cmp dword [esp + 0xc4], 4
jne 0x40c634
cmp eax, 0x19
ja 0x40c654
mov ecx, dword [esp + 0x58]
mov edx, dword [esp + 0x50]
mov eax, dword [esp + 0xc0]
sub ecx, dword [esp + 0x4c]
call fcn.0040b2c0
test eax, eax
jne 0x40c069
mov esi, dword [esp + 0xc0]
mov eax, dword [esp + 0xc0]
mov ebx, dword [esp + 0x5c]
sub ebx, dword [esi + 4]
mov esi, dword [esp + 0x58]
sub esi, dword [eax + 0x10]
add dword [eax + 8], ebx
add dword [eax + 0x14], esi
add dword [ebp + 0x1c], esi
test esi, esi
je 0x40c6b4
mov ecx, dword [ebp + 8]
test ecx, ecx
je 0x40c6b4
mov edx, dword [ebp + 0x10]
mov dword [esp + 8], esi
test edx, edx
je 0x40cdc0
mov eax, dword [eax + 0xc]
sub eax, esi
mov dword [esp + 4], eax
mov eax, dword [ebp + 0x18]
mov dword [esp], eax
call fcn.0040e3e0
mov edx, dword [esp + 0xc0]
mov dword [ebp + 0x18], eax
mov dword [edx + 0x30], eax
cmp dword [ebp + 4], 1
mov edx, dword [ebp]
sbb eax, eax
not eax
and eax, 0x40
add eax, dword [ebp + 0x3c]
cmp edx, 0xb
je 0x40cdb0
cmp edx, 0xe
jne 0x40cde0
mov edx, 0x100
mov ecx, dword [esp + 0xc0]
add eax, edx
or esi, ebx
mov dword [ecx + 0x2c], eax
je 0x40c6fa
cmp dword [esp + 0xc4], 4
jne 0x40ba54
mov eax, dword [esp + 0x54]
test eax, eax
mov eax, 0xfffffffb
cmovne eax, dword [esp + 0x54]
mov dword [esp + 0x54], eax
mov eax, dword [esp + 0x54]
add esp, 0xac
pop ebx
pop esi
pop edi
pop ebp
ret
mov eax, dword [esp + 0x3c]
mov edx, dword [eax + 0x10]
mov ecx, edx
mov dword [esp + 0x40], edx
and ecx, 0x400
test ecx, ecx
je 0x40c75c
mov edx, dword [esp + 0x3c]
mov eax, dword [edx + 0x40]
cmp edi, eax
mov edx, eax
cmovbe edx, edi
test edx, edx
jne 0x40cf80
test eax, eax
jne 0x40cd93
mov eax, dword [esp + 0x3c]
mov edx, dword [eax + 0x10]
mov ecx, dword [esp + 0x3c]
mov dword [ecx + 0x40], 0
mov dword [ecx], 6
test dh, 8
je 0x40ce40
test edi, edi
je 0x40cd93
xor edx, edx
mov dword [esp + 0x60], esi
mov eax, edx
mov dword [esp + 0x40], edi
mov dword [esp + 0x44], ebp
mov dword [esp + 0x48], ebx
mov esi, dword [esp + 0x3c]
mov ebx, dword [esp + 0x60]
mov edx, dword [esi + 0x20]
movzx ecx, byte [ebx + eax]
add eax, 1
test edx, edx
movzx ebp, cl
je 0x40c7c3
mov edi, dword [edx + 0x1c]
test edi, edi
je 0x40c7c3
mov ebx, dword [esi + 0x40]
cmp ebx, dword [edx + 0x20]
jae 0x40c7c3
mov byte [edi + ebx], cl
add ebx, 1
mov dword [esi + 0x40], ebx
test ebp, ebp
je 0x40c7cd
cmp eax, dword [esp + 0x40]
jb 0x40c792
mov edx, eax
mov eax, dword [esp + 0x3c]
mov edi, dword [esp + 0x40]
mov esi, dword [esp + 0x60]
mov dword [esp + 0x40], ebp
mov ebx, dword [esp + 0x48]
test byte [eax + 0x11], 2
mov ebp, dword [esp + 0x44]
jne 0x40d242
mov eax, dword [esp + 0x40]
sub edi, edx
add esi, edx
test eax, eax
jne 0x40cd93
mov eax, dword [esp + 0x3c]
mov edx, dword [eax + 0x10]
mov eax, dword [esp + 0x3c]
mov dword [eax + 0x40], 0
mov dword [eax], 7
test dh, 0x10
je 0x40ce20
test edi, edi
je 0x40cd93
xor edx, edx
mov dword [esp + 0x60], esi
mov eax, edx
mov dword [esp + 0x40], edi
mov dword [esp + 0x44], ebp
mov dword [esp + 0x48], ebx
nop
mov edx, dword [esp + 0x60]
mov ebx, dword [esp + 0x3c]
movzx ecx, byte [edx + eax]
add eax, 1
mov edx, dword [ebx + 0x20]
movzx ebp, cl
test edx, edx
je 0x40c873
mov edi, dword [edx + 0x24]
test edi, edi
je 0x40c873
mov esi, ebx
mov ebx, dword [ebx + 0x40]
cmp ebx, dword [edx + 0x28]
jae 0x40c873
mov byte [edi + ebx], cl
add ebx, 1
mov dword [esi + 0x40], ebx
test ebp, ebp
je 0x40c87d
cmp eax, dword [esp + 0x40]
jb 0x40c840
mov edx, eax
mov eax, dword [esp + 0x3c]
mov edi, dword [esp + 0x40]
mov esi, dword [esp + 0x60]
mov dword [esp + 0x40], ebp
mov ebx, dword [esp + 0x48]
test byte [eax + 0x11], 2
mov ebp, dword [esp + 0x44]
jne 0x40d183
mov eax, dword [esp + 0x40]
sub edi, edx
add esi, edx
test eax, eax
jne 0x40cd93
mov eax, dword [esp + 0x3c]
mov edx, dword [eax + 0x10]
mov eax, dword [esp + 0x3c]
test dh, 2
mov dword [eax], 8
jne 0x40c506
mov ecx, dword [esp + 0x3c]
mov eax, dword [ecx + 0x20]
test eax, eax
je 0x40c8e6
sar edx, 9
and edx, 1
mov dword [eax + 0x2c], edx
mov dword [eax + 0x30], 1
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov dword [esp], 0
call fcn.0040e3e0
mov edx, dword [esp + 0x3c]
mov ecx, dword [esp + 0xc0]
mov dword [edx + 0x18], eax
mov dword [ecx + 0x30], eax
mov eax, 0xb
mov dword [edx], 0xb
jmp switch.0x0040bb54
mov eax, dword [esp + 0x4c]
test eax, eax
je 0x40cd93
mov edx, dword [esp + 0x3c]
mov ecx, dword [esp + 0x3c]
sub dword [esp + 0x4c], 1
mov eax, dword [edx + 0x40]
mov edx, dword [esp + 0x50]
mov byte [edx], al
add edx, 1
mov eax, 0x14
mov dword [esp + 0x50], edx
mov dword [ecx], 0x14
jmp switch.0x0040bb54
mov eax, dword [esp + 0x3c]
mov edx, dword [eax + 0x40]
mov dword [eax], 0xf
test edx, edx
je 0x40ce60
cmp edi, edx
cmovbe edx, edi
cmp edx, dword [esp + 0x4c]
cmova edx, dword [esp + 0x4c]
test edx, edx
je 0x40cd93
mov ecx, dword [esp + 0x50]
mov dword [esp + 8], edx
mov dword [esp + 4], esi
mov dword [esp + 0x38], edx
mov dword [esp], ecx
call sub.msvcrt.dll_memcpy
mov edx, dword [esp + 0x38]
mov eax, dword [esp + 0x3c]
sub dword [esp + 0x4c], edx
add dword [esp + 0x50], edx
sub edi, edx
add esi, edx
sub dword [eax + 0x40], edx
mov eax, dword [eax]
jmp 0x40ba43
mov ecx, dword [esp + 0x3c]
mov edx, dword [ecx + 0x40]
jmp 0x40c96d
cmp ebx, 0xd
ja 0x40ca01
test edi, edi
je 0x40cd93
mov ecx, ebx
nop
jmp 0x40c9ea
test edi, edi
je 0x40cda0
movzx eax, byte [esi]
sub edi, 1
add esi, 1
shl eax, cl
add ecx, 8
add ebp, eax
cmp ecx, 0xd
jbe 0x40c9e2
mov ebx, ecx
mov edx, dword [esp + 0x3c]
mov ecx, ebp
mov eax, ebp
shr ecx, 5
and eax, 0x1f
and ecx, 0x1f
add eax, 0x101
add ecx, 1
sub ebx, 0xe
mov dword [edx + 0x64], ecx
mov dword [edx + 0x60], eax
mov edx, ebp
mov dword [esp + 0x44], ecx
mov ecx, dword [esp + 0x3c]
shr edx, 0xa
and edx, 0xf
add edx, 4
shr ebp, 0xe
cmp eax, 0x11e
mov dword [esp + 0x40], edx
mov dword [ecx + 0x5c], edx
ja 0x40d270
cmp dword [esp + 0x44], 0x1e
ja 0x40d270
mov ecx, dword [esp + 0x3c]
xor edx, edx
mov dword [esp + 0x48], edx
mov dword [ecx + 0x68], 0
mov dword [ecx], 0x11
mov ecx, ebx
jmp 0x40ca8d
mov ecx, dword [esp + 0x3c]
mov eax, dword [esp + 0x3c]
mov ecx, dword [ecx + 0x5c]
mov edx, dword [eax + 0x68]
mov dword [esp + 0x40], ecx
cmp ecx, edx
jbe 0x40cae2
mov ecx, ebx
mov dword [esp + 0x48], edx
cmp ecx, 2
ja 0x40caaa
test edi, edi
je 0x40cda0
movzx eax, byte [esi]
sub edi, 1
add esi, 1
shl eax, cl
add ecx, 8
add ebp, eax
mov ebx, dword [esp + 0x48]
mov eax, ebp
sub ecx, 3
mov edx, dword [esp + 0x3c]
and eax, 7
add dword [esp + 0x48], 1
shr ebp, 3
movzx ebx, word [ebx + ebx + 0x414a80]
mov word [edx + ebx*2 + 0x70], ax
mov ebx, dword [esp + 0x48]
mov eax, dword [esp + 0x40]
mov dword [edx + 0x68], ebx
cmp ebx, eax
jb 0x40ca8d
mov edx, ebx
mov ebx, ecx
cmp edx, 0x12
ja 0x40cb11
mov ecx, dword [esp + 0x3c]
lea eax, [edx + edx + 0x414a80]
movzx edx, word [eax]
add eax, 2
cmp eax, 0x414aa6
mov word [ecx + edx*2 + 0x70], 0
jne 0x40caf2
mov edx, dword [esp + 0x3c]
mov dword [edx + 0x68], 0x13
mov ecx, dword [esp + 0x3c]
mov eax, dword [esp + 0x68]
mov edx, dword [esp + 0x6c]
mov dword [ecx + 0x54], 7
mov dword [ecx + 0x6c], eax
mov dword [ecx + 0x4c], eax
mov eax, ecx
add eax, 0x54
mov dword [esp + 0x10], eax
add eax, 0x18
mov dword [esp + 0xc], eax
add eax, 4
mov dword [esp + 0x14], edx
mov dword [esp + 8], 0x13
mov dword [esp + 4], eax
mov dword [esp], 0
call fcn.0040eb10
test eax, eax
mov dword [esp + 0x54], eax
je 0x40d75f
mov eax, dword [esp + 0x3c]
mov ecx, dword [esp + 0xc0]
mov dword [ecx + 0x18], str.invalid_code_lengths_set
mov dword [eax], 0x1d
mov eax, 0x1d
jmp switch.0x0040bb54
mov ecx, dword [esp + 0x3c]
mov edx, dword [ecx + 0x10]
jmp 0x40c76d
mov eax, dword [esp + 0x3c]
mov edx, dword [eax + 0x10]
jmp 0x40c819
mov edx, ebp
mov ebp, dword [esp + 0x3c]
mov dword [esp + 0x54], 0xfffffffd
jmp 0x40c5f0
mov ecx, dword [esp + 0x3c]
mov edx, dword [ecx + 8]
test edx, edx
je 0x40d0a0
cmp ebx, 0xf
ja 0x40cbf2
test edi, edi
je 0x40d5f0
mov ecx, ebx
jmp 0x40cbdb
test edi, edi
je 0x40cda0
movzx eax, byte [esi]
sub edi, 1
add esi, 1
shl eax, cl
add ecx, 8
add ebp, eax
cmp ecx, 0xf
jbe 0x40cbd3
mov ebx, ecx
cmp ebp, 0x8b1f
je 0x40d67f
mov eax, dword [esp + 0x3c]
mov dword [eax + 0x10], 0
mov eax, dword [eax + 0x20]
test eax, eax
je 0x40cc17
mov dword [eax + 0x30], 0xffffffff
and edx, 1
je 0x40d4cc
mov ecx, ebp
mov eax, ebp
shl ecx, 8
mov edx, 0x8421085
shr eax, 8
and ecx, 0xffff
add ecx, eax
mov eax, ecx
mul edx
mov eax, ecx
sub eax, edx
shr eax, 1
add edx, eax
shr edx, 4
mov eax, edx
shl eax, 5
sub eax, edx
cmp ecx, eax
jne 0x40d4cc
mov eax, ebp
and eax, 0xf
cmp eax, 8
je 0x40d835
mov eax, dword [esp + 0xc0]
mov edx, dword [esp + 0x3c]
mov dword [eax + 0x18], str.unknown_compression_method
mov eax, 0x1d
mov dword [edx], 0x1d
jmp switch.0x0040bb54
cmp ebx, 0xf
ja 0x40ccb5
test edi, edi
je 0x40cd93
mov ecx, ebx
jmp 0x40cc9e
test edi, edi
je 0x40cda0
movzx eax, byte [esi]
sub edi, 1
add esi, 1
shl eax, cl
add ecx, 8
add ebp, eax
cmp ecx, 0xf
jbe 0x40cc96
mov ebx, ecx
mov eax, dword [esp + 0x3c]
mov edx, ebp
cmp dl, 8
mov dword [eax + 0x10], ebp
je 0x40d49e
mov ecx, dword [esp + 0xc0]
mov dword [ecx + 0x18], str.unknown_compression_method
mov dword [eax], 0x1d
mov eax, 0x1d
jmp switch.0x0040bb54
movzx eax, word [esp + 0x70]
mov dword [esp + 0x74], eax
movzx eax, dl
add ecx, eax
mov dword [esp + 0x48], eax
mov eax, 1
shl eax, cl
mov ecx, edx
mov edx, dword [esp + 0x44]
sub eax, 1
mov dword [esp + 0x70], eax
and eax, ebp
shr eax, cl
add eax, dword [esp + 0x74]
lea eax, [edx + eax*4]
movzx edx, byte [eax]
mov byte [esp + 0x40], dl
movzx edx, byte [eax + 1]
movzx eax, word [eax + 2]
mov byte [esp + 0x7c], dl
mov word [esp + 0x78], ax
movzx eax, dl
mov edx, dword [esp + 0x48]
add edx, eax
cmp ebx, edx
jb 0x40cd8f
jmp 0x40d5ad
movzx eax, byte [esi]
mov ecx, ebx
add ebx, 8
mov edx, dword [esp + 0x44]
sub edi, 1
add esi, 1
shl eax, cl
movzx ecx, byte [esp + 0x48]
add ebp, eax
mov eax, dword [esp + 0x70]
and eax, ebp
shr eax, cl
add eax, dword [esp + 0x74]
lea eax, [edx + eax*4]
movzx edx, byte [eax]
movzx ecx, byte [eax + 1]
movzx eax, word [eax + 2]
mov byte [esp + 0x40], dl
mov edx, dword [esp + 0x48]
mov word [esp + 0x78], ax
movzx eax, cl
add edx, eax
cmp edx, ebx
jbe 0x40d5a9
test edi, edi
jne 0x40cd40
mov edx, ebp
mov ebp, dword [esp + 0x3c]
jmp 0x40c5f0
mov edx, ebp
mov ebx, ecx
mov ebp, dword [esp + 0x3c]
jmp 0x40c5f0
sub eax, 0xffffff80
xor edx, edx
jmp 0x40c6dc
mov ecx, dword [esp + 0xc0]
mov eax, dword [ecx + 0xc]
sub eax, esi
mov dword [esp + 4], eax
mov eax, dword [ebp + 0x18]
mov dword [esp], eax
call fcn.0040e6e0
jmp 0x40c6a7
cmp edx, 0x13
je 0x40c6d7
xor edx, edx
nop
lea esi, [esi]
jmp 0x40c6dc
mov ebx, dword [esp + 0xc0]
mov dword [esp + 0x54], 0xfffffffe
mov eax, dword [ebx + 4]
test eax, eax
jne 0x40ba54
mov dword [esp + 0x5c], 0
jmp 0x40b9e7
mov ecx, dword [esp + 0x3c]
mov eax, dword [ecx + 0x20]
test eax, eax
je 0x40c8b8
mov dword [eax + 0x24], 0
jmp 0x40c8b8
mov ecx, dword [esp + 0x3c]
mov eax, dword [ecx + 0x20]
test eax, eax
je 0x40c808
mov dword [eax + 0x1c], 0
jmp 0x40c808
mov ecx, dword [esp + 0x3c]
mov eax, 0xb
mov dword [ecx], 0xb
jmp switch.0x0040bb54
mov edx, dword [esp + 0x50]
sub edx, eax
mov eax, dword [ecx + 0x40]
mov dword [esp + 0x40], eax
mov ecx, eax
cmp eax, dword [esp + 0x4c]
cmova eax, dword [esp + 0x4c]
sub dword [esp + 0x4c], eax
sub ecx, eax
mov dword [esp + 0x44], eax
mov eax, dword [esp + 0x3c]
mov dword [eax + 0x40], ecx
mov ecx, dword [esp + 0x44]
mov eax, dword [esp + 0x50]
shr ecx, 2
add eax, 4
mov dword [esp + 0x40], ecx
shl ecx, 2
cmp edx, eax
mov dword [esp + 0x48], ecx
lea eax, [edx + 4]
seta cl
cmp dword [esp + 0x50], eax
seta al
or ecx, eax
mov eax, dword [esp + 0x50]
or eax, edx
test al, 3
sete al
cmp dword [esp + 0x44], 9
seta byte [esp + 0x60]
and al, byte [esp + 0x60]
test cl, al
je 0x40da05
mov eax, dword [esp + 0x48]
test eax, eax
je 0x40da05
mov dword [esp + 0x60], esi
mov esi, dword [esp + 0x50]
xor eax, eax
nop
mov ecx, dword [edx + eax*4]
mov dword [esi + eax*4], ecx
add eax, 1
cmp dword [esp + 0x40], eax
ja 0x40cf00
mov eax, dword [esp + 0x44]
sub eax, dword [esp + 0x48]
mov ecx, dword [esp + 0x50]
add ecx, dword [esp + 0x48]
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0x48]
add edx, dword [esp + 0x48]
cmp dword [esp + 0x44], eax
mov esi, dword [esp + 0x60]
je 0x40cf54
mov dword [esp + 0x48], esi
xor eax, eax
mov esi, edx
lea esi, [esi]
movzx edx, byte [esi + eax]
mov byte [ecx + eax], dl
add eax, 1
cmp eax, dword [esp + 0x40]
jne 0x40cf40
mov esi, dword [esp + 0x48]
mov edx, dword [esp + 0x3c]
mov eax, dword [esp + 0x44]
add dword [esp + 0x50], eax
mov eax, dword [edx + 0x40]
test eax, eax
je 0x40cf70
mov eax, dword [edx]
jmp 0x40ba43
mov dword [edx], 0x14
mov eax, 0x14
jmp switch.0x0040bb54
mov ecx, dword [esp + 0x3c]
mov ecx, dword [ecx + 0x20]
test ecx, ecx
mov dword [esp + 0x48], ecx
je 0x40cff4
mov ecx, dword [ecx + 0x10]
test ecx, ecx
mov dword [esp + 0x44], ecx
je 0x40cff4
mov ecx, dword [esp + 0x48]
mov ecx, dword [ecx + 0x14]
sub ecx, eax
mov dword [esp + 0x40], ecx
mov ecx, dword [esp + 0x48]
mov eax, dword [ecx + 0x18]
mov ecx, dword [esp + 0x40]
mov dword [esp + 0x38], edx
mov dword [esp + 4], esi
add ecx, edx
mov dword [esp + 0x60], ecx
mov ecx, eax
sub ecx, dword [esp + 0x40]
cmp dword [esp + 0x60], eax
mov eax, dword [esp + 0x44]
mov dword [esp + 0x48], ecx
cmovbe ecx, edx
add eax, dword [esp + 0x40]
mov dword [esp + 8], ecx
mov dword [esp], eax
call sub.msvcrt.dll_memcpy
mov eax, dword [esp + 0x3c]
mov edx, dword [esp + 0x38]
mov eax, dword [eax + 0x10]
mov dword [esp + 0x40], eax
test dword [esp + 0x40], 0x200
jne 0x40d3c9
mov ecx, dword [esp + 0x3c]
sub edi, edx
add esi, edx
mov eax, dword [ecx + 0x40]
sub eax, edx
mov dword [ecx + 0x40], eax
jmp 0x40c74d
cmp ebx, edx
jae 0x40d045
test edi, edi
je 0x40cd93
mov ecx, ebx
jmp 0x40d02f
test edi, edi
je 0x40cda0
movzx eax, byte [esi]
sub edi, 1
add esi, 1
shl eax, cl
add ecx, 8
add ebp, eax
cmp ecx, edx
jb 0x40d027
mov ebx, ecx
mov ecx, edx
mov eax, 1
shl eax, cl
mov ecx, dword [esp + 0x3c]
sub ebx, edx
sub eax, 1
and eax, ebp
add eax, dword [ecx + 0x40]
mov dword [ecx + 0x40], eax
mov ecx, edx
shr ebp, cl
mov ecx, dword [esp + 0x3c]
add dword [ecx + 0x1bc4], edx
mov edx, ecx
jmp 0x40bea8
mov eax, dword [esp + 0x3c]
mov edx, dword [eax + 0x10]
jmp 0x40c13d
mov ebx, dword [esp + 0x4c]
xor ebp, ebp
mov eax, dword [ecx + 8]
mov edx, dword [esp + 0x3c]
mov dword [esp + 0x58], ebx
xor ebx, ebx
mov dword [edx], 0x1b
jmp 0x40c56b
mov dword [ecx], 0xc
mov eax, 0xc
jmp switch.0x0040bb54
mov edx, dword [ecx + 0x1bc0]
test edx, edx
je 0x40bd5b
mov eax, dword [esp + 0xc0]
mov dword [eax + 0x18], 0x414125
mov eax, 0x1d
mov dword [ecx], 0x1d
jmp switch.0x0040bb54
mov ecx, dword [esp + 0x3c]
movzx eax, al
mov edx, dword [ecx + 0x1bc4]
mov ecx, eax
add eax, edx
mov edx, dword [esp + 0x3c]
shr ebp, cl
sub ebx, dword [esp + 0x48]
test byte [esp + 0x74], 0x40
mov dword [edx + 0x1bc4], eax
je 0x40d307
mov ecx, dword [esp + 0xc0]
mov eax, 0x1d
mov dword [ecx + 0x18], 0x41410f
mov dword [edx], 0x1d
jmp switch.0x0040bb54
shr ebp, cl
sub ebx, edx
mov ecx, dword [esp + 0x3c]
mov edx, dword [esp + 0x48]
mov word [ecx + edx*2 + 0x70], ax
add edx, 1
mov dword [esp + 0x48], edx
mov eax, edx
mov dword [ecx + 0x68], edx
jmp 0x40c255
mov ecx, dword [esp + 0x3c]
mov eax, 0x10
mov dword [ecx], 0x10
jmp 0x40bc87
mov ecx, dword [esp + 0x3c]
mov eax, dword [ecx + 0x20]
xor ecx, ecx
test eax, eax
je 0x40c1a7
mov dword [eax + 0x10], 0
jmp 0x40c1a7
mov dword [esp + 8], edx
mov dword [esp + 4], esi
mov ecx, dword [eax + 0x18]
mov dword [esp + 0x38], edx
mov dword [esp], ecx
call fcn.0040e3e0
mov ecx, dword [esp + 0x3c]
mov edx, dword [esp + 0x38]
mov dword [ecx + 0x18], eax
jmp 0x40c8a1
cmp dword [esp + 0x4c], 0x101
jbe 0x40bdb4
mov ecx, dword [esp + 0xc0]
mov edx, dword [esp + 0x50]
mov eax, dword [esp + 0x4c]
mov dword [ecx], esi
mov esi, dword [esp + 0x3c]
mov dword [ecx + 0xc], edx
mov dword [ecx + 0x10], eax
mov dword [ecx + 4], edi
mov dword [esi + 0x3c], ebx
mov ebx, dword [esp + 0x58]
mov dword [esi + 0x38], ebp
mov dword [esp], ecx
mov dword [esp + 4], ebx
call fcn.0040f2f0
mov ebx, dword [esp + 0xc0]
mov esi, dword [esp + 0xc0]
mov ebx, dword [ebx + 0x10]
mov esi, dword [esi + 0xc]
mov dword [esp + 0x4c], ebx
mov ebx, dword [esp + 0xc0]
mov dword [esp + 0x50], esi
mov edi, dword [ebx + 4]
mov esi, dword [ebx]
mov ebx, dword [esp + 0x3c]
mov eax, ebx
mov ebp, dword [ebx + 0x38]
mov edx, eax
mov eax, dword [eax]
mov ebx, dword [ebx + 0x3c]
cmp eax, 0xb
jne 0x40ba43
mov dword [edx + 0x1bc4], 0xffffffff
jmp switch.0x0040bb54
mov dword [esp + 8], edx
mov dword [esp + 4], esi
mov ecx, dword [eax + 0x18]
mov dword [esp + 0x38], edx
mov dword [esp], ecx
call fcn.0040e3e0
mov ecx, dword [esp + 0x3c]
mov edx, dword [esp + 0x38]
mov dword [ecx + 0x18], eax
jmp 0x40c7f1
mov eax, dword [esp + 0xc0]
mov edx, dword [esp + 0x3c]
mov dword [eax + 0x18], str.too_many_length_or_distance_symbols
mov eax, 0x1d
mov dword [edx], 0x1d
jmp switch.0x0040bb54
xor ebx, ebx
xor ebp, ebp
jmp 0x40c8cb
sub edx, eax
add edx, dword [ecx + 0x34]
jmp 0x40bd78
movzx ecx, byte [esp + 0x40]
test cl, 0xf0
je 0x40cce5
movzx eax, dl
mov ecx, edx
mov edx, dword [esp + 0x3c]
sub ebx, dword [esp + 0x60]
shr ebp, cl
mov dword [edx + 0x1bc4], eax
movzx eax, word [esp + 0x70]
mov dword [edx + 0x40], eax
movzx edx, byte [esp + 0x40]
test dl, 0x20
je 0x40d3f4
mov eax, dword [esp + 0x3c]
mov dword [eax + 0x1bc4], 0xffffffff
mov dword [eax], 0xb
mov eax, 0xb
jmp switch.0x0040bb54
movzx eax, word [esp + 0x60]
mov ecx, edx
mov dword [ecx], 0x17
mov dword [edx + 0x44], eax
movzx edx, byte [esp + 0x44]
and edx, 0xf
mov dword [ecx + 0x48], edx
jmp 0x40bcc7
mov eax, ebp
mov byte [esp + 0x9c], al
mov eax, ebp
shr eax, 8
mov byte [esp + 0x9d], al
lea eax, [esp + 0x9c]
mov dword [esp + 8], 2
mov dword [esp + 4], eax
mov eax, dword [ebx + 0x18]
mov dword [esp], eax
call fcn.0040e3e0
mov edx, dword [ebx + 0x10]
mov dword [ebx + 0x18], eax
mov ebx, dword [esp + 0x3c]
jmp 0x40c133
mov eax, dword [esp + 0x3c]
cmp dword [esp + 0xc4], 6
mov dword [eax + 0x4c], 0x414200
mov dword [eax + 0x54], 9
mov dword [eax + 0x50], 0x414a00
mov dword [eax + 0x58], 5
mov dword [eax], 0x13
je 0x40d95a
mov eax, 0x13
jmp 0x40bc87
mov eax, dword [esp + 0xc0]
mov ecx, dword [esp + 0x3c]
mov dword [eax + 0x18], str.invalid_block_type
mov eax, 0x1d
mov dword [ecx], 0x1d
jmp 0x40bc87
mov ecx, dword [esp + 0x3c]
mov dword [esp + 8], edx
mov dword [esp + 4], esi
mov eax, dword [ecx + 0x18]
mov dword [esp + 0x38], edx
mov dword [esp], eax
call fcn.0040e3e0
mov ecx, dword [esp + 0x3c]
mov edx, dword [esp + 0x38]
mov dword [ecx + 0x18], eax
jmp 0x40d002
test dl, 0x40
je 0x40d66a
mov edx, dword [esp + 0xc0]
mov eax, 0x1d
mov ecx, dword [esp + 0x3c]
mov dword [edx + 0x18], 0x4140f3
mov dword [ecx], 0x1d
jmp switch.0x0040bb54
mov eax, ebp
mov byte [esp + 0x9c], al
mov eax, ebp
shr eax, 8
mov byte [esp + 0x9d], al
mov eax, ebp
shr eax, 0x10
mov byte [esp + 0x9e], al
mov eax, ebp
shr eax, 0x18
mov byte [esp + 0x9f], al
lea eax, [esp + 0x9c]
mov dword [esp + 8], 4
mov dword [esp + 4], eax
mov eax, dword [ebx + 0x18]
mov dword [esp], eax
call fcn.0040e3e0
mov dword [ebx + 0x18], eax
mov ebx, dword [esp + 0x3c]
jmp 0x40c0cb
mov ebx, dword [esp + 0x3c]
cmp dword [esp + 0xc4], 6
mov dword [ebx + 0x40], edx
mov dword [ebx], 0xe
je 0x40d986
xor ebx, ebx
xor ebp, ebp
mov eax, dword [esp + 0x3c]
jmp 0x40c967
test ebp, 0xe000
je 0x40d6f7
mov eax, dword [esp + 0xc0]
mov edx, dword [esp + 0x3c]
mov dword [eax + 0x18], str.unknown_header_flags_set
mov eax, 0x1d
mov dword [edx], 0x1d
jmp switch.0x0040bb54
mov edx, dword [esp + 0xc0]
mov eax, 0x1d
mov ecx, dword [esp + 0x3c]
mov dword [edx + 0x18], str.incorrect_header_check
mov dword [ecx], 0x1d
jmp switch.0x0040bb54
mov ebx, dword [esp + 0x3c]
mov eax, ebp
mov byte [esp + 0x9c], al
mov eax, ebp
shr eax, 8
mov byte [esp + 0x9d], al
lea eax, [esp + 0x9c]
mov dword [esp + 8], 2
mov dword [esp + 4], eax
mov eax, dword [ebx + 0x18]
mov dword [esp], eax
call fcn.0040e3e0
mov edx, dword [ebx + 0x10]
mov dword [ebx + 0x18], eax
jmp 0x40c197
mov eax, ecx
add eax, 2
cmp ebx, eax
jae 0x40d570
test edi, edi
je 0x40cd93
mov ecx, ebx
mov ebx, edx
mov edx, eax
jmp 0x40d558
test edi, edi
je 0x40cda0
movzx eax, byte [esi]
sub edi, 1
add esi, 1
shl eax, cl
add ecx, 8
add ebp, eax
cmp ecx, edx
jb 0x40d550
mov edx, ebx
mov ebx, ecx
movzx ecx, byte [esp + 0x40]
sub ebx, edx
mov eax, dword [esp + 0x48]
shr ebp, cl
test eax, eax
je 0x40da16
mov edx, dword [esp + 0x48]
sub ebx, 2
mov ecx, dword [esp + 0x3c]
movzx eax, word [ecx + edx*2 + 0x6e]
mov edx, ebp
and edx, 3
add edx, 3
mov dword [esp + 0x40], edx
shr ebp, 2
jmp 0x40c365
mov byte [esp + 0x7c], cl
movzx ecx, byte [esp + 0x48]
sub ebx, dword [esp + 0x60]
shr ebp, cl
mov ecx, eax
movzx eax, byte [esp + 0x7c]
shr ebp, cl
sub ebx, eax
mov eax, dword [esp + 0x3c]
cmp byte [esp + 0x40], 0
mov dword [eax + 0x1bc4], edx
movzx eax, word [esp + 0x78]
mov edx, dword [esp + 0x3c]
mov dword [edx + 0x40], eax
jne 0x40d2db
jmp 0x40be7e
mov edx, ebp
mov ebp, ecx
jmp 0x40c5f0
mov dword [esp + 0x48], edx
lea esi, [esi]
jmp 0x40bf4e
add eax, 3
cmp ebx, eax
jae 0x40d640
test edi, edi
je 0x40cd93
mov ecx, ebx
mov ebx, edx
mov edx, eax
jmp 0x40d628
test edi, edi
je 0x40cda0
movzx eax, byte [esi]
sub edi, 1
add esi, 1
shl eax, cl
add ecx, 8
add ebp, eax
cmp ecx, edx
jb 0x40d620
mov edx, ebx
mov ebx, ecx
movzx ecx, byte [esp + 0x40]
shr ebp, cl
mov eax, ebp
and eax, 7
add eax, 3
mov dword [esp + 0x40], eax
mov eax, 0xfffffffd
sub eax, edx
mov edx, dword [esp + 0x40]
add ebx, eax
xor eax, eax
shr ebp, 3
jmp 0x40c365
mov eax, dword [esp + 0x3c]
and edx, 0xf
mov dword [eax + 0x48], edx
mov dword [eax], 0x15
jmp 0x40be99
test dl, 2
je 0x40cbfe
mov dword [esp + 8], 0
xor bp, bp
mov dword [esp + 4], 0
mov dword [esp], 0
call fcn.0040e3e0
mov ebx, dword [esp + 0x3c]
lea edx, [esp + 0x9c]
mov byte [esp + 0x9c], 0x1f
mov byte [esp + 0x9d], 0x8b
mov dword [ebx + 0x18], eax
mov dword [esp + 8], 2
mov dword [esp + 4], edx
mov dword [esp], eax
call fcn.0040e3e0
mov dword [ebx], 1
mov dword [ebx + 0x18], eax
mov eax, 1
xor ebx, ebx
jmp switch.0x0040bb54
mov edx, ebp
mov ebp, eax
jmp 0x40c5f0
mov ebx, dword [esp + 0x3c]
mov eax, dword [ebx + 0x20]
test eax, eax
je 0x40d70c
mov edx, ebp
shr edx, 8
and edx, 1
mov dword [eax], edx
test ebp, 0x200
jne 0x40d7eb
mov ebx, dword [esp + 0x3c]
xor ebp, ebp
mov dword [ebx], 2
xor ebx, ebx
jmp 0x40c085
mov ecx, dword [esp + 0x3c]
sub edx, eax
mov dword [esp + 4], edx
mov eax, dword [ecx + 0x18]
mov dword [esp], eax
call fcn.0040e6e0
jmp 0x40bae9
mov edx, ebp
mov ebp, dword [esp + 0x3c]
mov dword [ebp], 0x1c
mov dword [esp + 0x54], 1
jmp 0x40c5f0
mov edx, dword [esp + 0x3c]
mov dword [esp + 0x48], 0
mov dword [edx + 0x68], 0
mov ecx, edx
mov eax, edx
mov dword [edx], 0x12
jmp 0x40c243
mov ecx, dword [esp + 0x3c]
cmp dword [ecx], 0x1d
je 0x40c5d3
cmp word [ecx + 0x270], 0
jne 0x40d8a9
mov eax, dword [esp + 0xc0]
mov dword [eax + 0x18], str.invalid_code____missing_end_of_block
mov eax, 0x1d
mov dword [ecx], 0x1d
jmp switch.0x0040bb54
mov ecx, dword [esp + 0xc0]
mov edx, ebp
mov ebp, eax
mov eax, dword [esp + 0x50]
mov dword [esp + 0x54], 2
mov dword [ecx], esi
mov dword [ecx + 0xc], eax
mov eax, dword [esp + 0x4c]
mov dword [ecx + 4], edi
mov dword [ecx + 0x10], eax
mov dword [ebp + 0x38], edx
mov dword [ebp + 0x3c], ebx
jmp 0x40ba54
mov ebx, dword [esp + 0x3c]
mov eax, ebp
mov byte [esp + 0x9c], al
mov eax, ebp
shr eax, 8
mov byte [esp + 0x9d], al
lea eax, [esp + 0x9c]
mov dword [esp + 8], 2
mov dword [esp + 4], eax
mov eax, dword [ebx + 0x18]
mov dword [esp], eax
call fcn.0040e3e0
mov dword [ebx + 0x18], eax
jmp 0x40d718
mov ebp, eax
xor ebx, ebx
xor edx, edx
jmp 0x40d74b
mov edx, dword [esp + 0x3c]
shr ebp, 4
mov ecx, ebp
and ecx, 0xf
add ecx, 8
mov eax, dword [edx + 0x24]
test eax, eax
jne 0x40d92d
mov dword [edx + 0x24], ecx
mov ebx, dword [esp + 0x3c]
mov eax, 1
and ebp, 0x200
shl eax, cl
mov dword [ebx + 0x14], eax
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov dword [esp], 0
call fcn.0040e6e0
cmp ebp, 1
mov dword [ebx + 0x18], eax
mov ebx, dword [esp + 0xc0]
mov dword [ebx + 0x30], eax
mov ebx, dword [esp + 0x3c]
sbb eax, eax
and eax, 2
xor ebp, ebp
add eax, 9
mov dword [ebx], eax
xor ebx, ebx
jmp 0x40ba43
mov edx, dword [esp + 0x3c]
mov ecx, dword [esp + 0x68]
mov eax, dword [esp + 0x6c]
mov dword [edx + 0x54], 9
mov dword [edx + 0x6c], ecx
mov dword [edx + 0x4c], ecx
add edx, 0x6c
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x3c]
mov dword [esp + 0xc], edx
mov dword [esp + 0x38], edx
mov dword [esp], 1
add eax, 0x54
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x70]
mov dword [esp + 8], eax
mov eax, dword [esp + 0x3c]
add eax, 0x70
mov dword [esp + 4], eax
call fcn.0040eb10
mov edx, dword [esp + 0x38]
test eax, eax
mov dword [esp + 0x54], eax
je 0x40d993
mov edx, dword [esp + 0xc0]
mov eax, 0x1d
mov ecx, dword [esp + 0x3c]
mov dword [edx + 0x18], str.invalid_literal_lengths_set
mov dword [ecx], 0x1d
jmp switch.0x0040bb54
cmp ecx, eax
jbe 0x40d852
mov eax, dword [esp + 0x3c]
sub ebx, 4
mov ecx, dword [esp + 0xc0]
mov dword [ecx + 0x18], str.invalid_window_size
mov dword [eax], 0x1d
mov eax, 0x1d
jmp switch.0x0040bb54
mov edx, ebp
sub ebx, 3
mov ebp, eax
shr edx, 3
jmp 0x40c5f0
mov ecx, dword [esp + 0xc0]
mov eax, dword [esp + 0x3c]
mov dword [ecx + 0x18], str.invalid_bit_length_repeat
mov dword [eax], 0x1d
jmp 0x40c5d3
mov ebp, dword [esp + 0x3c]
xor ebx, ebx
xor edx, edx
jmp 0x40c5f0
mov ecx, dword [esp + 0x3c]
mov eax, dword [ecx + 0x6c]
mov dword [ecx + 0x58], 6
mov dword [ecx + 0x50], eax
mov eax, dword [esp + 0x6c]
mov dword [esp + 0xc], edx
mov dword [esp + 0x14], eax
mov eax, ecx
add eax, 0x58
mov dword [esp + 0x10], eax
mov eax, dword [ecx + 0x64]
mov dword [esp + 8], eax
mov eax, dword [ecx + 0x60]
mov dword [esp], 2
lea eax, [ecx + eax*2 + 0x70]
mov dword [esp + 4], eax
call fcn.0040eb10
test eax, eax
mov dword [esp + 0x54], eax
je 0x40bd89
mov edx, dword [esp + 0xc0]
mov eax, 0x1d
mov ecx, dword [esp + 0x3c]
mov dword [edx + 0x18], str.invalid_distances_set
mov dword [ecx], 0x1d
jmp switch.0x0040bb54
mov ecx, dword [esp + 0x44]
mov dword [esp + 0x40], ecx
mov ecx, dword [esp + 0x50]
jmp 0x40cf35
mov eax, dword [esp + 0xc0]
mov edx, dword [esp + 0x3c]
mov dword [eax + 0x18], str.invalid_bit_length_repeat
mov dword [edx], 0x1d
jmp 0x40c5d3