Function at 0x1004f3f0
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.0x1004f5a0
mov ebx, dword [esp + 0xc0]
mov ebp, dword [ebx + 0x1c]
test ebp, ebp
je case.default.0x1004f5a0
mov esi, dword [ebx + 0xc]
test esi, esi
mov dword [esp + 0x50], esi
je case.default.0x1004f5a0
mov esi, dword [ebx]
test esi, esi
je 0x10050835
mov ebx, dword [ebx + 4]
mov dword [esp + 0x5c], ebx
mov eax, dword [ebp]
cmp eax, 0xb
je 0x1004f6e0
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.0x1004f5a0
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 0x10050ad3
cmp ebx, 0x1f
ja 0x1004f4f4
test edi, edi
je 0x100507d3
mov ecx, ebx
jmp 0x1004f4dd
test edi, edi
je 0x100507e0
movzx eax, byte [esi]
sub edi, 1
add esi, 1
shl eax, cl
add ecx, 8
add ebp, eax
cmp ecx, 0x1f
jbe 0x1004f4d5
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 0x1004f546
mov ecx, dword [edx + 0x10]
mov dword [esp + 8], eax
test ecx, ecx
je 0x1005116b
mov ecx, dword [esp + 0x50]
sub ecx, eax
mov dword [esp + 4], ecx
mov eax, dword [edx + 0x18]
mov dword [esp], eax
call fcn.1004ea00
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 0x1004f572
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 0x10050ac0
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 + 0x1006fe30]
cmp ebx, 0x1f
ja 0x1004f5d5
test edi, edi
je 0x100507d3
mov ecx, ebx
jmp 0x1004f5c0
test edi, edi
je 0x100507e0
movzx eax, byte [esi]
sub edi, 1
add esi, 1
shl eax, cl
add ecx, 8
add ebp, eax
cmp ecx, 0x1f
jbe 0x1004f5b8
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 0x100511fe
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov dword [esp], 0
call fcn.10048890
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 0x100507d3
mov eax, dword [esp + 0x3c]
mov edx, dword [eax + 4]
test edx, edx
jne 0x1004f6f0
cmp ebx, 2
ja 0x1004f692
test edi, edi
je 0x1005112e
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 0x10050b92
cmp eax, 3
je 0x10050de7
cmp eax, 1
je 0x10050da9
mov ecx, dword [esp + 0x3c]
mov eax, 0xd
mov dword [ecx], 0xd
mov ebp, edx
sub ebx, 3
shr ebp, 2
jmp 0x1004f493
mov dword [ebp], 0xc
mov al, 0xc
jmp 0x1004f443
mov ecx, ebx
and ebx, 0xfffffff8
and ecx, 7
mov dword [eax], 0x1a
shr ebp, cl
mov eax, 0x1a
jmp switch.0x1004f5a0
mov ecx, dword [esp + 0x3c]
mov edx, dword [ecx + 0x48]
test edx, edx
je 0x1004f773
cmp ebx, edx
jae 0x1004f74e
test edi, edi
je 0x100507d3
mov ecx, ebx
jmp 0x1004f738
test edi, edi
je 0x100507e0
movzx eax, byte [esi]
sub edi, 1
add esi, 1
shl eax, cl
add ecx, 8
add ebp, eax
cmp ecx, edx
jb 0x1004f730
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 0x100507d3
mov ecx, dword [esp + 0x3c]
mov edx, dword [esp + 0x58]
sub edx, dword [esp + 0x4c]
mov eax, dword [ecx + 0x44]
cmp edx, eax
jae 0x100508b4
sub eax, edx
cmp eax, dword [ecx + 0x2c]
ja 0x10050af0
mov ecx, dword [esp + 0x3c]
mov edx, dword [ecx + 0x30]
cmp eax, edx
jbe 0x10050ce0
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 0x100508c3
mov eax, dword [esp + 0x3c]
cmp dword [esp + 0xc4], 6
mov dword [eax], 0x13
je 0x100507d3
mov edx, dword [esp + 0x3c]
mov dword [edx], 0x14
cmp edi, 5
ja 0x10050bf0
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 0x1004f8a6
test edi, edi
je 0x100507d3
mov ecx, ebx
jmp 0x1004f868
test edi, edi
je 0x100507e0
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 0x1004f860
mov word [esp + 0x70], bx
mov ebx, ecx
mov dword [esp + 0x60], eax
cmp byte [esp + 0x40], 0
jne 0x10050cf0
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.0x1004f5a0
mov eax, dword [esp + 0x3c]
mov edx, dword [eax + 0x48]
test edx, edx
jne 0x10050a57
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 0x10051039
test edi, edi
je 0x100507d3
mov ecx, ebx
jmp 0x1004f960
test edi, edi
je 0x100507e0
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 0x1004f958
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 0x10050b20
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 0x1004fa8b
test edi, edi
je 0x100507d3
mov dword [esp + 0x7c], edx
jmp 0x1004fa38
test edi, edi
je 0x100507d3
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 0x1004fa30
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 0x10050b2d
mov dword [ebp], 0x1e
mov dword [esp + 0x54], 0xfffffffc
jmp 0x1004f4a4
cmp ebx, 0x1f
ja 0x1004faff
test edi, edi
je 0x100507d3
mov ecx, ebx
nop
jmp 0x1004faea
test edi, edi
je 0x100507e0
movzx eax, byte [esi]
sub edi, 1
add esi, 1
shl eax, cl
add ecx, 8
add ebp, eax
cmp ecx, 0x1f
jbe 0x1004fae2
mov ebx, dword [esp + 0x3c]
mov eax, dword [ebx + 0x20]
test eax, eax
je 0x1004fb11
mov ebx, dword [esp + 0x3c]
mov dword [eax + 4], ebp
test byte [ebx + 0x11], 2
jne 0x10050e5f
mov dword [ebx], 3
xor ebp, ebp
xor ebx, ebx
jmp 0x1004fb2c
cmp ebx, 0xf
ja 0x1004fb55
test edi, edi
je 0x100507d3
mov ecx, ebx
jmp 0x1004fb40
test edi, edi
je 0x100507e0
movzx eax, byte [esi]
sub edi, 1
add esi, 1
shl eax, cl
add ecx, 8
add ebp, eax
cmp ecx, 0xf
jbe 0x1004fb38
mov ebx, dword [esp + 0x3c]
mov eax, dword [ebx + 0x20]
test eax, eax
je 0x1004fb77
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 0x10050d67
mov dword [ebx], 4
xor ebp, ebp
xor ebx, ebx
test dh, 4
mov dword [esp + 0x40], edx
je 0x10050ba6
cmp ebx, 0xf
ja 0x1004fbcd
test edi, edi
je 0x100507d3
mov ecx, ebx
jmp 0x1004fbb8
test edi, edi
je 0x100507e0
movzx eax, byte [esi]
sub edi, 1
add esi, 1
shl eax, cl
add ecx, 8
add ebp, eax
cmp ecx, 0xf
jbe 0x1004fbb0
mov ebx, dword [esp + 0x3c]
mov eax, dword [ebx + 0x20]
mov dword [ebx + 0x40], ebp
test eax, eax
je 0x1004fbde
mov dword [eax + 0x14], ebp
test dh, 2
jne 0x10050f2e
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 0x10050178
mov ecx, ebx
and ebx, 0xfffffff8
and ecx, 7
shr ebp, cl
cmp ebx, 0x1f
ja 0x1004fc40
test edi, edi
je 0x100507d3
mov ecx, ebx
jmp 0x1004fc29
test edi, edi
je 0x100507e0
movzx eax, byte [esi]
sub edi, 1
add esi, 1
shl eax, cl
add ecx, 8
add ebp, eax
cmp ecx, 0x1f
jbe 0x1004fc21
mov ebx, ecx
mov eax, ebp
mov edx, ebp
shr eax, 0x10
and edx, 0xffff
xor eax, 0xffff
cmp edx, eax
je 0x10050eb6
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.0x1004f5a0
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 0x100511c5
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 0x1004fd36
test edi, edi
je 0x100507d3
mov ecx, ebx
jmp 0x1004fcff
test edi, edi
je 0x100507e0
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 0x1004fcf7
mov byte [esp + 0x40], bl
mov ebx, ecx
movzx ecx, byte [esp + 0x40]
cmp ax, 0xf
jbe 0x10050b70
movzx ecx, cl
cmp ax, 0x10
mov dword [esp + 0x40], ecx
je 0x10050f70
cmp ax, 0x11
mov eax, ecx
je 0x10051045
add eax, 7
cmp ebx, eax
jae 0x1004fd94
test edi, edi
je 0x100507d3
mov ecx, ebx
mov ebx, edx
mov edx, eax
jmp 0x1004fd7c
test edi, edi
je 0x100507e0
movzx eax, byte [esi]
sub edi, 1
add esi, 1
shl eax, cl
add ecx, 8
add ebp, eax
cmp ecx, edx
jb 0x1004fd74
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 0x100513ad
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 0x1004fe60
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 0x1004fe30
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 0x1004fef8
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 0x1004fed0
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 0x1004ff30
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 0x1004ff20
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 0x1004fca5
mov ecx, dword [esp + 0x3c]
mov edx, dword [ecx + 0x10]
test dh, 2
je 0x1005030e
cmp ebx, 0xf
ja 0x1004ff86
test edi, edi
je 0x100507d3
mov ecx, ebx
jmp 0x1004ff6f
test edi, edi
je 0x100507e0
movzx eax, byte [esi]
sub edi, 1
add esi, 1
shl eax, cl
add ecx, 8
add ebp, eax
cmp ecx, 0xf
jbe 0x1004ff67
mov ebx, ecx
mov ecx, dword [esp + 0x3c]
movzx eax, word [ecx + 0x18]
cmp eax, ebp
je 0x10050cd2
mov eax, dword [esp + 0xc0]
mov dword [eax + 0x18], str.header_crc_mismatch
mov eax, 0x1d
mov dword [ecx], 0x1d
jmp switch.0x1004f5a0
mov edx, dword [esp + 0x3c]
mov eax, dword [edx + 8]
test eax, eax
je 0x10051189
mov ecx, dword [esp + 0x3c]
mov eax, dword [ecx + 0x10]
test eax, eax
je 0x10051189
cmp ebx, 0x1f
ja 0x10050002
test edi, edi
je 0x10051030
mov ecx, ebx
jmp 0x1004ffeb
test edi, edi
je 0x100507e0
movzx eax, byte [esi]
sub edi, 1
add esi, 1
shl eax, cl
add ecx, 8
add ebp, eax
cmp ecx, 0x1f
jbe 0x1004ffe3
mov ebx, ecx
mov eax, dword [esp + 0x3c]
cmp dword [eax + 0x1c], ebp
je 0x1005126e
mov edx, dword [esp + 0xc0]
mov dword [edx + 0x18], str.incorrect_length_check
mov dword [eax], 0x1d
mov eax, 0x1d
jmp switch.0x1004f5a0
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 0x10050084
cmp dword [esp + 0x58], eax
je 0x1005009c
mov eax, dword [ebp]
cmp eax, 0x1c
ja 0x1005009c
cmp dword [esp + 0xc4], 4
jne 0x10050084
cmp eax, 0x19
ja 0x1005009c
mov edx, dword [esp + 0x58]
mov eax, dword [esp + 0xc0]
call fcn.1004ed00
test eax, eax
jne 0x1004fab9
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 0x100500fc
mov ecx, dword [ebp + 8]
test ecx, ecx
je 0x100500fc
mov edx, dword [ebp + 0x10]
mov dword [esp + 8], esi
test edx, edx
je 0x10050800
mov eax, dword [eax + 0xc]
sub eax, esi
mov dword [esp + 4], eax
mov eax, dword [ebp + 0x18]
mov dword [esp], eax
call fcn.1004ea00
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 0x100507f0
cmp edx, 0xe
jne 0x10050820
mov edx, 0x100
mov ecx, dword [esp + 0xc0]
add eax, edx
or esi, ebx
mov dword [ecx + 0x2c], eax
je 0x10050142
cmp dword [esp + 0xc4], 4
jne 0x1004f4a4
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 0x100501a1
mov edx, dword [esp + 0x3c]
mov eax, dword [edx + 0x40]
cmp edi, eax
mov edx, eax
cmovbe edx, edi
test edx, edx
jne 0x100509c0
test eax, eax
jne 0x100507d3
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 0x10050880
test edi, edi
je 0x100507d3
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 0x10050208
mov edi, dword [edx + 0x1c]
test edi, edi
je 0x10050208
mov ebx, dword [esi + 0x40]
cmp ebx, dword [edx + 0x20]
jae 0x10050208
mov byte [edi + ebx], cl
add ebx, 1
mov dword [esi + 0x40], ebx
test ebp, ebp
je 0x10050212
cmp eax, dword [esp + 0x40]
jb 0x100501d7
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 0x10050c82
mov eax, dword [esp + 0x40]
sub edi, edx
add esi, edx
test eax, eax
jne 0x100507d3
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 0x10050860
test edi, edi
je 0x100507d3
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 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 0x100502b6
mov edi, dword [edx + 0x24]
test edi, edi
je 0x100502b6
mov esi, ebx
mov ebx, dword [ebx + 0x40]
cmp ebx, dword [edx + 0x28]
jae 0x100502b6
mov byte [edi + ebx], cl
add ebx, 1
mov dword [esi + 0x40], ebx
test ebp, ebp
je 0x100502c0
cmp eax, dword [esp + 0x40]
jb 0x10050283
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 0x10050bc3
mov eax, dword [esp + 0x40]
sub edi, edx
add esi, edx
test eax, eax
jne 0x100507d3
mov eax, dword [esp + 0x3c]
mov edx, dword [eax + 0x10]
mov eax, dword [esp + 0x3c]
test dh, 2
mov dword [eax], 8
jne 0x1004ff56
mov ecx, dword [esp + 0x3c]
mov eax, dword [ecx + 0x20]
test eax, eax
je 0x10050329
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.1004ea00
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.0x1004f5a0
mov eax, dword [esp + 0x4c]
test eax, eax
je 0x100507d3
mov edx, dword [esp + 0x3c]
mov ecx, dword [esp + 0x50]
sub dword [esp + 0x4c], 1
mov eax, dword [edx + 0x40]
mov byte [ecx], al
add ecx, 1
mov eax, 0x14
mov dword [esp + 0x50], ecx
mov dword [edx], 0x14
jmp switch.0x1004f5a0
mov eax, dword [esp + 0x3c]
mov edx, dword [eax + 0x40]
mov dword [eax], 0xf
test edx, edx
je 0x100508a0
cmp edi, edx
cmovbe edx, edi
cmp edx, dword [esp + 0x4c]
cmova edx, dword [esp + 0x4c]
test edx, edx
je 0x100507d3
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 0x1004f493
mov ecx, dword [esp + 0x3c]
mov edx, dword [ecx + 0x40]
jmp 0x100503ad
cmp ebx, 0xd
ja 0x10050441
test edi, edi
je 0x100507d3
mov ecx, ebx
nop
jmp 0x1005042a
test edi, edi
je 0x100507e0
movzx eax, byte [esi]
sub edi, 1
add esi, 1
shl eax, cl
add ecx, 8
add ebp, eax
cmp ecx, 0xd
jbe 0x10050422
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 0x10050cb0
cmp dword [esp + 0x44], 0x1e
ja 0x10050cb0
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 0x100504cd
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 0x10050522
mov ecx, ebx
mov dword [esp + 0x48], edx
cmp ecx, 2
ja 0x100504ea
test edi, edi
je 0x100507e0
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 + 0x10070740]
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 0x100504cd
mov edx, ebx
mov ebx, ecx
cmp edx, 0x12
ja 0x10050551
mov ecx, dword [esp + 0x3c]
lea eax, [edx + edx + 0x10070740]
movzx edx, word [eax]
add eax, 2
cmp eax, 0x10070766
mov word [ecx + edx*2 + 0x70], 0
jne 0x10050532
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.10051bd0
test eax, eax
mov dword [esp + 0x54], eax
je 0x100511a3
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.0x1004f5a0
mov ecx, dword [esp + 0x3c]
mov edx, dword [ecx + 0x10]
jmp 0x100501b2
mov eax, dword [esp + 0x3c]
mov edx, dword [eax + 0x10]
jmp 0x1005025e
mov edx, ebp
mov ebp, dword [esp + 0x3c]
mov dword [esp + 0x54], 0xfffffffd
jmp 0x10050040
mov ecx, dword [esp + 0x3c]
mov edx, dword [ecx + 8]
test edx, edx
je 0x10050ae0
cmp ebx, 0xf
ja 0x10050632
test edi, edi
je 0x10051030
mov ecx, ebx
jmp 0x1005061b
test edi, edi
je 0x100507e0
movzx eax, byte [esi]
sub edi, 1
add esi, 1
shl eax, cl
add ecx, 8
add ebp, eax
cmp ecx, 0xf
jbe 0x10050613
mov ebx, ecx
cmp ebp, 0x8b1f
je 0x100510bf
mov eax, dword [esp + 0x3c]
mov dword [eax + 0x10], 0
mov eax, dword [eax + 0x20]
test eax, eax
je 0x10050657
mov dword [eax + 0x30], 0xffffffff
and edx, 1
je 0x10050f0c
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 0x10050f0c
mov eax, ebp
and eax, 0xf
cmp eax, 8
je 0x10051279
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.0x1004f5a0
cmp ebx, 0xf
ja 0x100506f5
test edi, edi
je 0x100507d3
mov ecx, ebx
jmp 0x100506de
test edi, edi
je 0x100507e0
movzx eax, byte [esi]
sub edi, 1
add esi, 1
shl eax, cl
add ecx, 8
add ebp, eax
cmp ecx, 0xf
jbe 0x100506d6
mov ebx, ecx
mov eax, dword [esp + 0x3c]
mov edx, ebp
cmp dl, 8
mov dword [eax + 0x10], ebp
je 0x10050ede
mov ecx, dword [esp + 0xc0]
mov dword [ecx + 0x18], str.unknown_compression_method
mov dword [eax], 0x1d
mov eax, 0x1d
jmp switch.0x1004f5a0
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 0x100507cf
jmp 0x10050fed
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 0x10050fe9
test edi, edi
jne 0x10050780
mov edx, ebp
mov ebp, dword [esp + 0x3c]
jmp 0x10050040
mov edx, ebp
mov ebx, ecx
mov ebp, dword [esp + 0x3c]
jmp 0x10050040
sub eax, 0xffffff80
xor edx, edx
jmp 0x10050124
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.10048890
jmp 0x100500ef
cmp edx, 0x13
je 0x1005011f
xor edx, edx
nop
lea esi, [esi]
jmp 0x10050124
mov ebx, dword [esp + 0xc0]
mov dword [esp + 0x54], 0xfffffffe
mov eax, dword [ebx + 4]
test eax, eax
jne 0x1004f4a4
mov dword [esp + 0x5c], 0
jmp 0x1004f437
mov ecx, dword [esp + 0x3c]
mov eax, dword [ecx + 0x20]
test eax, eax
je 0x100502fb
mov dword [eax + 0x24], 0
jmp 0x100502fb
mov ecx, dword [esp + 0x3c]
mov eax, dword [ecx + 0x20]
test eax, eax
je 0x1005024d
mov dword [eax + 0x1c], 0
jmp 0x1005024d
mov ecx, dword [esp + 0x3c]
mov eax, 0xb
mov dword [ecx], 0xb
jmp switch.0x1004f5a0
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]
shr ecx, 2
mov dword [esp + 0x40], ecx
shl ecx, 2
test ecx, ecx
mov dword [esp + 0x48], ecx
je 0x10051449
mov eax, dword [esp + 0x50]
add eax, 4
cmp edx, eax
seta cl
lea eax, [edx + 4]
cmp dword [esp + 0x50], eax
seta al
or ecx, eax
mov eax, dword [esp + 0x50]
cmp dword [esp + 0x44], 9
seta byte [esp + 0x60]
or eax, edx
test al, 3
sete al
and byte [esp + 0x60], al
test byte [esp + 0x60], cl
je 0x10051449
mov dword [esp + 0x60], esi
mov esi, dword [esp + 0x50]
xor eax, eax
lea esi, [esi]
mov ecx, dword [edx + eax*4]
mov dword [esi + eax*4], ecx
add eax, 1
cmp eax, dword [esp + 0x40]
jb 0x10050940
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 0x10050994
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 0x10050980
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 0x100509b0
mov eax, dword [edx]
jmp 0x1004f493
mov dword [edx], 0x14
mov eax, 0x14
jmp switch.0x1004f5a0
mov ecx, dword [esp + 0x3c]
mov ecx, dword [ecx + 0x20]
test ecx, ecx
mov dword [esp + 0x48], ecx
je 0x10050a34
mov ecx, dword [ecx + 0x10]
test ecx, ecx
mov dword [esp + 0x44], ecx
je 0x10050a34
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 0x10050e09
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 0x10050192
cmp ebx, edx
jae 0x10050a85
test edi, edi
je 0x100507d3
mov ecx, ebx
jmp 0x10050a6f
test edi, edi
je 0x100507e0
movzx eax, byte [esi]
sub edi, 1
add esi, 1
shl eax, cl
add ecx, 8
add ebp, eax
cmp ecx, edx
jb 0x10050a67
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 0x1004f8f8
mov eax, dword [esp + 0x3c]
mov edx, dword [eax + 0x10]
jmp 0x1004fb8d
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 0x1004ffbb
mov dword [ecx], 0xc
mov eax, 0xc
jmp switch.0x1004f5a0
mov edx, dword [ecx + 0x1bc0]
test edx, edx
je 0x1004f7ab
mov eax, dword [esp + 0xc0]
mov dword [eax + 0x18], 0x1006fde5
mov eax, 0x1d
mov dword [ecx], 0x1d
jmp switch.0x1004f5a0
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 0x10050d47
mov ecx, dword [esp + 0xc0]
mov eax, 0x1d
mov dword [ecx + 0x18], 0x1006fdcf
mov dword [edx], 0x1d
jmp switch.0x1004f5a0
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 0x1004fca5
mov ecx, dword [esp + 0x3c]
mov eax, 0x10
mov dword [ecx], 0x10
jmp 0x1004f6d1
mov ecx, dword [esp + 0x3c]
mov eax, dword [ecx + 0x20]
xor ecx, ecx
test eax, eax
je 0x1004fbf7
mov dword [eax + 0x10], 0
jmp 0x1004fbf7
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.1004ea00
mov ecx, dword [esp + 0x3c]
mov edx, dword [esp + 0x38]
mov dword [ecx + 0x18], eax
jmp 0x100502e4
cmp dword [esp + 0x4c], 0x101
jbe 0x1004f804
mov ecx, dword [esp + 0xc0]
mov eax, dword [esp + 0x50]
mov edx, dword [esp + 0x4c]
mov dword [ecx], esi
mov esi, dword [esp + 0x3c]
mov dword [ecx + 0xc], eax
mov dword [ecx + 0x10], edx
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.100523b0
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 0x1004f493
mov dword [edx + 0x1bc4], 0xffffffff
jmp switch.0x1004f5a0
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.1004ea00
mov ecx, dword [esp + 0x3c]
mov edx, dword [esp + 0x38]
mov dword [ecx + 0x18], eax
jmp 0x10050236
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.0x1004f5a0
xor ebx, ebx
xor ebp, ebp
jmp 0x1005030e
sub edx, eax
add edx, dword [ecx + 0x34]
jmp 0x1004f7c8
movzx ecx, byte [esp + 0x40]
test cl, 0xf0
je 0x10050725
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 0x10050e34
mov eax, dword [esp + 0x3c]
mov dword [eax + 0x1bc4], 0xffffffff
mov dword [eax], 0xb
mov eax, 0xb
jmp switch.0x1004f5a0
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 0x1004f717
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.1004ea00
mov edx, dword [ebx + 0x10]
mov dword [ebx + 0x18], eax
mov ebx, dword [esp + 0x3c]
jmp 0x1004fb83
mov eax, dword [esp + 0x3c]
cmp dword [esp + 0xc4], 6
mov dword [eax + 0x4c], 0x1006fec0
mov dword [eax + 0x54], 9
mov dword [eax + 0x50], 0x100706c0
mov dword [eax + 0x58], 5
mov dword [eax], 0x13
je 0x1005139e
mov eax, 0x13
jmp 0x1004f6d1
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 0x1004f6d1
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.1004ea00
mov ecx, dword [esp + 0x3c]
mov edx, dword [esp + 0x38]
mov dword [ecx + 0x18], eax
jmp 0x10050a42
test dl, 0x40
je 0x100510aa
mov edx, dword [esp + 0xc0]
mov eax, 0x1d
mov ecx, dword [esp + 0x3c]
mov dword [edx + 0x18], 0x1006fdb3
mov dword [ecx], 0x1d
jmp switch.0x1004f5a0
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.1004ea00
mov dword [ebx + 0x18], eax
mov ebx, dword [esp + 0x3c]
jmp 0x1004fb1b
mov ebx, dword [esp + 0x3c]
cmp dword [esp + 0xc4], 6
mov dword [ebx + 0x40], edx
mov dword [ebx], 0xe
je 0x100513ca
xor ebx, ebx
xor ebp, ebp
mov eax, dword [esp + 0x3c]
jmp 0x100503a7
test ebp, 0xe000
je 0x10051137
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.0x1004f5a0
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.0x1004f5a0
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.1004ea00
mov edx, dword [ebx + 0x10]
mov dword [ebx + 0x18], eax
jmp 0x1004fbe7
mov eax, ecx
add eax, 2
cmp ebx, eax
jae 0x10050fb0
test edi, edi
je 0x100507d3
mov ecx, ebx
mov ebx, edx
mov edx, eax
jmp 0x10050f98
test edi, edi
je 0x100507e0
movzx eax, byte [esi]
sub edi, 1
add esi, 1
shl eax, cl
add ecx, 8
add ebp, eax
cmp ecx, edx
jb 0x10050f90
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 0x1005145a
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 0x1004fdb5
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 0x10050d1b
jmp 0x1004f8ce
mov edx, ebp
mov ebp, ecx
jmp 0x10050040
mov dword [esp + 0x48], edx
lea esi, [esi]
jmp 0x1004f99e
add eax, 3
cmp ebx, eax
jae 0x10051080
test edi, edi
je 0x100507d3
mov ecx, ebx
mov ebx, edx
mov edx, eax
jmp 0x10051068
test edi, edi
je 0x100507e0
movzx eax, byte [esi]
sub edi, 1
add esi, 1
shl eax, cl
add ecx, 8
add ebp, eax
cmp ecx, edx
jb 0x10051060
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 0x1004fdb5
mov eax, dword [esp + 0x3c]
and edx, 0xf
mov dword [eax + 0x48], edx
mov dword [eax], 0x15
jmp 0x1004f8e9
test dl, 2
je 0x1005063e
mov dword [esp + 8], 0
xor bp, bp
mov dword [esp + 4], 0
mov dword [esp], 0
call fcn.1004ea00
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.1004ea00
mov dword [ebx], 1
mov dword [ebx + 0x18], eax
mov eax, 1
xor ebx, ebx
jmp switch.0x1004f5a0
mov edx, ebp
mov ebp, eax
jmp 0x10050040
mov ebx, dword [esp + 0x3c]
mov eax, dword [ebx + 0x20]
test eax, eax
je 0x1005114c
mov edx, ebp
shr edx, 8
and edx, 1
mov dword [eax], edx
test ebp, 0x200
jne 0x1005122f
mov ebx, dword [esp + 0x3c]
xor ebp, ebp
mov dword [ebx], 2
xor ebx, ebx
jmp 0x1004fad5
mov edx, dword [esp + 0x50]
mov ecx, dword [esp + 0x3c]
sub edx, eax
mov dword [esp + 4], edx
mov eax, dword [ecx + 0x18]
mov dword [esp], eax
call fcn.10048890
jmp 0x1004f535
mov edx, ebp
mov ebp, dword [esp + 0x3c]
mov dword [ebp], 0x1c
mov dword [esp + 0x54], 1
jmp 0x10050040
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 0x1004fc93
mov ecx, dword [esp + 0x3c]
cmp dword [ecx], 0x1d
je 0x10050023
cmp word [ecx + 0x270], 0
jne 0x100512ed
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.0x1004f5a0
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 0x1004f4a4
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.1004ea00
mov dword [ebx + 0x18], eax
jmp 0x10051158
mov ebp, eax
xor ebx, ebx
xor edx, edx
jmp 0x1005118f
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 0x10051371
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.10048890
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 0x1004f493
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.10051bd0
mov edx, dword [esp + 0x38]
test eax, eax
mov dword [esp + 0x54], eax
je 0x100513d7
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.0x1004f5a0
cmp ecx, eax
jbe 0x10051296
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.0x1004f5a0
mov edx, ebp
sub ebx, 3
mov ebp, eax
shr edx, 3
jmp 0x10050040
mov ecx, dword [esp + 0xc0]
mov eax, dword [esp + 0x3c]
mov dword [ecx + 0x18], str.invalid_bit_length_repeat
mov dword [eax], 0x1d
jmp 0x10050023
mov ebp, dword [esp + 0x3c]
xor ebx, ebx
xor edx, edx
jmp 0x10050040
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.10051bd0
test eax, eax
mov dword [esp + 0x54], eax
je 0x1004f7d9
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.0x1004f5a0
mov ecx, dword [esp + 0x44]
mov dword [esp + 0x40], ecx
mov ecx, dword [esp + 0x50]
jmp 0x10050975
mov eax, dword [esp + 0xc0]
mov edx, dword [esp + 0x3c]
mov dword [eax + 0x18], str.invalid_bit_length_repeat
mov dword [edx], 0x1d
jmp 0x10050023